aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2023-10-20 09:43:56 +0200
committerBjørn Erik Pedersen <[email protected]>2023-10-20 09:43:56 +0200
commite2dd4cd05fa96a08d49b3b198edf0ccf9a94970e (patch)
tree712334f7e7a657155706f556040575bea9b7757f
parentfd381718101a35a5f5f92d5a05b3a0c36ef50db0 (diff)
parente509cac533600cf4fa8382c9cdab78ddd82db688 (diff)
downloadhugo-e2dd4cd05fa96a08d49b3b198edf0ccf9a94970e.tar.gz
hugo-e2dd4cd05fa96a08d49b3b198edf0ccf9a94970e.zip
Merge commit 'e509cac533600cf4fa8382c9cdab78ddd82db688'
-rw-r--r--docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_social-icons.css37
-rw-r--r--docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/css/app.css70
-rw-r--r--docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/js/app.js23
-rw-r--r--docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-nav.html4
-rw-r--r--docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/social-follow.html10
-rw-r--r--docs/_vendor/modules.txt2
-rw-r--r--docs/archetypes/functions.md11
-rw-r--r--docs/archetypes/news/index.md5
-rw-r--r--docs/archetypes/showcase/index.md5
-rw-r--r--docs/content/en/about/security-model.md (renamed from docs/content/en/about/security-model/index.md)0
-rw-r--r--docs/content/en/about/security-model/hugo-security-model-featured.pngbin85043 -> 0 bytes
-rw-r--r--docs/content/en/about/what-is-hugo.md6
-rw-r--r--docs/content/en/content-management/archetypes.md2
-rw-r--r--docs/content/en/content-management/formats.md50
-rw-r--r--docs/content/en/content-management/image-processing/index.md8
-rw-r--r--docs/content/en/content-management/multilingual.md141
-rw-r--r--docs/content/en/content-management/shortcodes.md4
-rw-r--r--docs/content/en/content-management/syntax-highlighting.md2
-rw-r--r--docs/content/en/content-management/taxonomies.md5
-rw-r--r--docs/content/en/functions/AddDate.md (renamed from docs/content/en/functions/adddate.md)9
-rw-r--r--docs/content/en/functions/Format.md90
-rw-r--r--docs/content/en/functions/Get.md (renamed from docs/content/en/functions/get.md)11
-rw-r--r--docs/content/en/functions/GetPage.md11
-rw-r--r--docs/content/en/functions/HasMenuCurrent.md35
-rw-r--r--docs/content/en/functions/IsMenuCurrent.md33
-rw-r--r--docs/content/en/functions/Param.md (renamed from docs/content/en/functions/param.md)8
-rw-r--r--docs/content/en/functions/Render.md (renamed from docs/content/en/functions/render.md)9
-rw-r--r--docs/content/en/functions/RenderString.md11
-rw-r--r--docs/content/en/functions/Scratch.md (renamed from docs/content/en/functions/scratch.md)14
-rw-r--r--docs/content/en/functions/Store.md (renamed from docs/content/en/functions/store.md)10
-rw-r--r--docs/content/en/functions/Unix.md36
-rw-r--r--docs/content/en/functions/_common/go-template-functions.md3
-rw-r--r--docs/content/en/functions/_common/index.md (renamed from docs/content/en/functions/common/index.md)0
-rw-r--r--docs/content/en/functions/_common/locales.md3
-rw-r--r--docs/content/en/functions/_common/regular-expressions.md (renamed from docs/content/en/functions/common/regular-expressions.md)0
-rw-r--r--docs/content/en/functions/_common/time-layout-string.md42
-rw-r--r--docs/content/en/functions/base64.md28
-rw-r--r--docs/content/en/functions/cast/ToFloat.md (renamed from docs/content/en/functions/float.md)16
-rw-r--r--docs/content/en/functions/cast/ToInt.md (renamed from docs/content/en/functions/int.md)16
-rw-r--r--docs/content/en/functions/cast/ToString.md (renamed from docs/content/en/functions/string.md)16
-rw-r--r--docs/content/en/functions/chomp.md20
-rw-r--r--docs/content/en/functions/collections/After.md (renamed from docs/content/en/functions/after.md)28
-rw-r--r--docs/content/en/functions/collections/Append.md (renamed from docs/content/en/functions/append.md)20
-rw-r--r--docs/content/en/functions/collections/Apply.md (renamed from docs/content/en/functions/apply.md)36
-rw-r--r--docs/content/en/functions/collections/Complement.md (renamed from docs/content/en/functions/complement.md)21
-rw-r--r--docs/content/en/functions/collections/Delimit.md (renamed from docs/content/en/functions/delimit.md)20
-rw-r--r--docs/content/en/functions/collections/Dictionary.md (renamed from docs/content/en/functions/dict.md)18
-rw-r--r--docs/content/en/functions/collections/EchoParam.md40
-rw-r--r--docs/content/en/functions/collections/First.md (renamed from docs/content/en/functions/first.md)28
-rw-r--r--docs/content/en/functions/collections/Group.md40
-rw-r--r--docs/content/en/functions/collections/In.md38
-rw-r--r--docs/content/en/functions/collections/IndexFunction.md (renamed from docs/content/en/functions/index-function.md)22
-rw-r--r--docs/content/en/functions/collections/Intersect.md (renamed from docs/content/en/functions/intersect.md)19
-rw-r--r--docs/content/en/functions/collections/IsSet.md52
-rw-r--r--docs/content/en/functions/collections/KeyVals.md45
-rw-r--r--docs/content/en/functions/collections/Last.md25
-rw-r--r--docs/content/en/functions/collections/Merge.md (renamed from docs/content/en/functions/merge.md)19
-rw-r--r--docs/content/en/functions/collections/NewScratch.md22
-rw-r--r--docs/content/en/functions/collections/Querify.md (renamed from docs/content/en/functions/querify.md)17
-rw-r--r--docs/content/en/functions/collections/Reverse.md26
-rw-r--r--docs/content/en/functions/collections/Seq.md (renamed from docs/content/en/functions/seq.md)22
-rw-r--r--docs/content/en/functions/collections/Shuffle.md (renamed from docs/content/en/functions/shuffle.md)17
-rw-r--r--docs/content/en/functions/collections/Slice.md30
-rw-r--r--docs/content/en/functions/collections/Sort.md (renamed from docs/content/en/functions/sort.md)17
-rw-r--r--docs/content/en/functions/collections/SymDiff.md28
-rw-r--r--docs/content/en/functions/collections/Union.md (renamed from docs/content/en/functions/union.md)19
-rw-r--r--docs/content/en/functions/collections/Uniq.md25
-rw-r--r--docs/content/en/functions/collections/Where.md (renamed from docs/content/en/functions/where.md)22
-rw-r--r--docs/content/en/functions/compare/Cond.md (renamed from docs/content/en/functions/cond.md)15
-rw-r--r--docs/content/en/functions/compare/Default.md (renamed from docs/content/en/functions/default.md)17
-rw-r--r--docs/content/en/functions/compare/Eq.md (renamed from docs/content/en/functions/eq.md)19
-rw-r--r--docs/content/en/functions/compare/Ge.md (renamed from docs/content/en/functions/ge.md)19
-rw-r--r--docs/content/en/functions/compare/Gt.md (renamed from docs/content/en/functions/gt.md)19
-rw-r--r--docs/content/en/functions/compare/Le.md (renamed from docs/content/en/functions/le.md)19
-rw-r--r--docs/content/en/functions/compare/Lt.md (renamed from docs/content/en/functions/lt.md)19
-rw-r--r--docs/content/en/functions/compare/Ne.md (renamed from docs/content/en/functions/ne.md)19
-rw-r--r--docs/content/en/functions/countrunes.md22
-rw-r--r--docs/content/en/functions/crypto/FNV32a.md (renamed from docs/content/en/functions/crypto.FNV32a.md)18
-rw-r--r--docs/content/en/functions/crypto/HMAC.md (renamed from docs/content/en/functions/hmac.md)18
-rw-r--r--docs/content/en/functions/crypto/MD5.md (renamed from docs/content/en/functions/md5.md)22
-rw-r--r--docs/content/en/functions/crypto/SHA1.md25
-rw-r--r--docs/content/en/functions/crypto/SHA256.md25
-rw-r--r--docs/content/en/functions/data/GetCSV.md117
-rw-r--r--docs/content/en/functions/data/GetJSON.md124
-rw-r--r--docs/content/en/functions/dateformat.md49
-rw-r--r--docs/content/en/functions/debug/Dump.md50
-rw-r--r--docs/content/en/functions/echoparam.md16
-rw-r--r--docs/content/en/functions/encoding/Base64Decode.md45
-rw-r--r--docs/content/en/functions/encoding/Base64Encode.md22
-rw-r--r--docs/content/en/functions/encoding/Jsonify.md (renamed from docs/content/en/functions/jsonify.md)20
-rw-r--r--docs/content/en/functions/errorf.md45
-rw-r--r--docs/content/en/functions/fmt/Errorf.md33
-rw-r--r--docs/content/en/functions/fmt/Erroridf.md48
-rw-r--r--docs/content/en/functions/fmt/Print.md (renamed from docs/content/en/functions/print.md)18
-rw-r--r--docs/content/en/functions/fmt/Printf.md46
-rw-r--r--docs/content/en/functions/fmt/Println.md (renamed from docs/content/en/functions/println.md)18
-rw-r--r--docs/content/en/functions/fmt/Warnf.md30
-rw-r--r--docs/content/en/functions/format.md119
-rw-r--r--docs/content/en/functions/go-template/len.md (renamed from docs/content/en/functions/len.md)17
-rw-r--r--docs/content/en/functions/go-template/range.md159
-rw-r--r--docs/content/en/functions/go-template/urlquery.md (renamed from docs/content/en/functions/urlquery.md)13
-rw-r--r--docs/content/en/functions/go-template/with.md (renamed from docs/content/en/functions/with.md)16
-rw-r--r--docs/content/en/functions/group.md29
-rw-r--r--docs/content/en/functions/hasmenucurrent.md19
-rw-r--r--docs/content/en/functions/hugo/index.md (renamed from docs/content/en/functions/hugo.md)16
-rw-r--r--docs/content/en/functions/i18n.md49
-rw-r--r--docs/content/en/functions/images/index.md3
-rw-r--r--docs/content/en/functions/in.md24
-rw-r--r--docs/content/en/functions/inflect/Humanize.md (renamed from docs/content/en/functions/humanize.md)16
-rw-r--r--docs/content/en/functions/inflect/Pluralize.md23
-rw-r--r--docs/content/en/functions/inflect/Singularize.md25
-rw-r--r--docs/content/en/functions/ismenucurrent.md17
-rw-r--r--docs/content/en/functions/isset.md22
-rw-r--r--docs/content/en/functions/lang.md13
-rw-r--r--docs/content/en/functions/lang/FormatAccounting.md27
-rw-r--r--docs/content/en/functions/lang/FormatCurrency.md27
-rw-r--r--docs/content/en/functions/lang/FormatNumber.md27
-rw-r--r--docs/content/en/functions/lang/FormatNumberCustom.md41
-rw-r--r--docs/content/en/functions/lang/FormatPercent.md27
-rw-r--r--docs/content/en/functions/lang/Merge.md (renamed from docs/content/en/functions/lang.Merge.md)13
-rw-r--r--docs/content/en/functions/lang/Translate.md126
-rw-r--r--docs/content/en/functions/last.md18
-rw-r--r--docs/content/en/functions/math/index.md (renamed from docs/content/en/functions/math.md)13
-rw-r--r--docs/content/en/functions/os/FileExists.md (renamed from docs/content/en/functions/fileExists.md)20
-rw-r--r--docs/content/en/functions/os/Getenv.md (renamed from docs/content/en/functions/getenv.md)19
-rw-r--r--docs/content/en/functions/os/ReadDir.md (renamed from docs/content/en/functions/readdir.md)25
-rw-r--r--docs/content/en/functions/os/ReadFile.md (renamed from docs/content/en/functions/readfile.md)19
-rw-r--r--docs/content/en/functions/os/Stat.md (renamed from docs/content/en/functions/os.Stat.md)16
-rw-r--r--docs/content/en/functions/page/index.md109
-rw-r--r--docs/content/en/functions/partials/Include.md67
-rw-r--r--docs/content/en/functions/partials/IncludeCached.md (renamed from docs/content/en/functions/partialCached.md)18
-rw-r--r--docs/content/en/functions/path.Split.md24
-rw-r--r--docs/content/en/functions/path/Base.md (renamed from docs/content/en/functions/path.Base.md)17
-rw-r--r--docs/content/en/functions/path/BaseName.md (renamed from docs/content/en/functions/path.BaseName.md)17
-rw-r--r--docs/content/en/functions/path/Clean.md (renamed from docs/content/en/functions/path.Clean.md)17
-rw-r--r--docs/content/en/functions/path/Dir.md (renamed from docs/content/en/functions/path.Dir.md)17
-rw-r--r--docs/content/en/functions/path/Ext.md (renamed from docs/content/en/functions/path.Ext.md)17
-rw-r--r--docs/content/en/functions/path/Join.md (renamed from docs/content/en/functions/path.Join.md)18
-rw-r--r--docs/content/en/functions/path/Split.md43
-rw-r--r--docs/content/en/functions/pluralize.md15
-rw-r--r--docs/content/en/functions/printf.md21
-rw-r--r--docs/content/en/functions/range.md15
-rw-r--r--docs/content/en/functions/reflect.IsMap.md18
-rw-r--r--docs/content/en/functions/reflect.IsSlice.md18
-rw-r--r--docs/content/en/functions/reflect/IsMap.md23
-rw-r--r--docs/content/en/functions/reflect/IsSlice.md23
-rw-r--r--docs/content/en/functions/safe/CSS.md (renamed from docs/content/en/functions/safeCSS.md)19
-rw-r--r--docs/content/en/functions/safe/HTML.md (renamed from docs/content/en/functions/safeHTML.md)19
-rw-r--r--docs/content/en/functions/safe/HTMLAttr.md (renamed from docs/content/en/functions/safeHTMLAttr.md)19
-rw-r--r--docs/content/en/functions/safe/JS.md (renamed from docs/content/en/functions/safeJS.md)19
-rw-r--r--docs/content/en/functions/safe/JSStr.md61
-rw-r--r--docs/content/en/functions/safe/URL.md (renamed from docs/content/en/functions/safeURL.md)19
-rw-r--r--docs/content/en/functions/sha.md26
-rw-r--r--docs/content/en/functions/singularize.md15
-rw-r--r--docs/content/en/functions/site.md14
-rw-r--r--docs/content/en/functions/site/index.md35
-rw-r--r--docs/content/en/functions/slice.md23
-rw-r--r--docs/content/en/functions/slicestr.md19
-rw-r--r--docs/content/en/functions/split.md23
-rw-r--r--docs/content/en/functions/strings.Contains.md17
-rw-r--r--docs/content/en/functions/strings.ContainsAny.md17
-rw-r--r--docs/content/en/functions/strings.Count.md20
-rw-r--r--docs/content/en/functions/strings.FirstUpper.md12
-rw-r--r--docs/content/en/functions/strings.HasPrefix.md16
-rw-r--r--docs/content/en/functions/strings.HasSuffix.md16
-rw-r--r--docs/content/en/functions/strings.Repeat.md16
-rw-r--r--docs/content/en/functions/strings.RuneCount.md20
-rw-r--r--docs/content/en/functions/strings.TrimLeft.md19
-rw-r--r--docs/content/en/functions/strings.TrimPrefix.md17
-rw-r--r--docs/content/en/functions/strings.TrimRight.md19
-rw-r--r--docs/content/en/functions/strings.TrimSuffix.md17
-rw-r--r--docs/content/en/functions/strings/Chomp.md31
-rw-r--r--docs/content/en/functions/strings/Contains.md29
-rw-r--r--docs/content/en/functions/strings/ContainsAny.md30
-rw-r--r--docs/content/en/functions/strings/ContainsNonSpace.md (renamed from docs/content/en/functions/strings.ContainsNonSpace.md)15
-rw-r--r--docs/content/en/functions/strings/Count.md29
-rw-r--r--docs/content/en/functions/strings/CountRunes.md29
-rw-r--r--docs/content/en/functions/strings/CountWords.md (renamed from docs/content/en/functions/countwords.md)18
-rw-r--r--docs/content/en/functions/strings/FindRESubmatch.md (renamed from docs/content/en/functions/findresubmatch.md)21
-rw-r--r--docs/content/en/functions/strings/FindRe.md (renamed from docs/content/en/functions/findRe.md)21
-rw-r--r--docs/content/en/functions/strings/FirstUpper.md23
-rw-r--r--docs/content/en/functions/strings/HasPrefix.md24
-rw-r--r--docs/content/en/functions/strings/HasSuffix.md24
-rw-r--r--docs/content/en/functions/strings/Repeat.md20
-rw-r--r--docs/content/en/functions/strings/Replace.md (renamed from docs/content/en/functions/replace.md)21
-rw-r--r--docs/content/en/functions/strings/ReplaceRE.md (renamed from docs/content/en/functions/replacere.md)21
-rw-r--r--docs/content/en/functions/strings/RuneCount.md28
-rw-r--r--docs/content/en/functions/strings/SliceString.md24
-rw-r--r--docs/content/en/functions/strings/Split.md30
-rw-r--r--docs/content/en/functions/strings/Substr.md (renamed from docs/content/en/functions/substr.md)15
-rw-r--r--docs/content/en/functions/strings/Title.md (renamed from docs/content/en/functions/title.md)19
-rw-r--r--docs/content/en/functions/strings/ToLower.md (renamed from docs/content/en/functions/lower.md)19
-rw-r--r--docs/content/en/functions/strings/ToUpper.md (renamed from docs/content/en/functions/upper.md)20
-rw-r--r--docs/content/en/functions/strings/Trim.md (renamed from docs/content/en/functions/trim.md)21
-rw-r--r--docs/content/en/functions/strings/TrimLeft.md33
-rw-r--r--docs/content/en/functions/strings/TrimPrefix.md29
-rw-r--r--docs/content/en/functions/strings/TrimRight.md33
-rw-r--r--docs/content/en/functions/strings/TrimSuffix.md29
-rw-r--r--docs/content/en/functions/strings/Truncate.md26
-rw-r--r--docs/content/en/functions/symdiff.md20
-rw-r--r--docs/content/en/functions/templates/Exists.md (renamed from docs/content/en/functions/templates.Exists.md)15
-rw-r--r--docs/content/en/functions/time/AsTime.md (renamed from docs/content/en/functions/time.md)22
-rw-r--r--docs/content/en/functions/time/Duration.md (renamed from docs/content/en/functions/duration.md)29
-rw-r--r--docs/content/en/functions/time/Format.md76
-rw-r--r--docs/content/en/functions/time/Now.md (renamed from docs/content/en/functions/now.md)18
-rw-r--r--docs/content/en/functions/time/ParseDuration.md (renamed from docs/content/en/functions/time.ParseDuration.md)20
-rw-r--r--docs/content/en/functions/transform/CanHighlight.md22
-rw-r--r--docs/content/en/functions/transform/Emojify.md (renamed from docs/content/en/functions/emojify.md)14
-rw-r--r--docs/content/en/functions/transform/HTMLEscape.md (renamed from docs/content/en/functions/htmlEscape.md)15
-rw-r--r--docs/content/en/functions/transform/HTMLUnescape.md (renamed from docs/content/en/functions/htmlUnescape.md)17
-rw-r--r--docs/content/en/functions/transform/Highlight.md (renamed from docs/content/en/functions/highlight.md)18
-rw-r--r--docs/content/en/functions/transform/HighlightCodeBlock.md43
-rw-r--r--docs/content/en/functions/transform/Markdownify.md (renamed from docs/content/en/functions/markdownify.md)13
-rw-r--r--docs/content/en/functions/transform/Plainify.md (renamed from docs/content/en/functions/plainify.md)13
-rw-r--r--docs/content/en/functions/transform/Remarshal.md (renamed from docs/content/en/functions/transform.Remarshal.md)12
-rw-r--r--docs/content/en/functions/transform/Unmarshal.md (renamed from docs/content/en/functions/transform.Unmarshal.md)16
-rw-r--r--docs/content/en/functions/truncate.md23
-rw-r--r--docs/content/en/functions/uniq.md15
-rw-r--r--docs/content/en/functions/unix.md30
-rw-r--r--docs/content/en/functions/urls/AbsLangURL.md (renamed from docs/content/en/functions/abslangurl.md)16
-rw-r--r--docs/content/en/functions/urls/AbsURL.md (renamed from docs/content/en/functions/absurl.md)20
-rw-r--r--docs/content/en/functions/urls/Anchorize.md (renamed from docs/content/en/functions/anchorize.md)15
-rw-r--r--docs/content/en/functions/urls/JoinPath.md (renamed from docs/content/en/functions/urls.JoinPath.md)13
-rw-r--r--docs/content/en/functions/urls/Parse.md (renamed from docs/content/en/functions/urls.Parse.md)9
-rw-r--r--docs/content/en/functions/urls/Ref.md (renamed from docs/content/en/functions/ref.md)15
-rw-r--r--docs/content/en/functions/urls/RelLangURL.md (renamed from docs/content/en/functions/relLangURL.md)18
-rw-r--r--docs/content/en/functions/urls/RelRef.md (renamed from docs/content/en/functions/relref.md)15
-rw-r--r--docs/content/en/functions/urls/RelURL.md (renamed from docs/content/en/functions/relurl.md)20
-rw-r--r--docs/content/en/functions/urls/URLize.md (renamed from docs/content/en/functions/urlize.md)15
-rw-r--r--docs/content/en/getting-started/configuration-markup.md126
-rw-r--r--docs/content/en/getting-started/configuration.md17
-rw-r--r--docs/content/en/getting-started/glossary.md6
-rw-r--r--docs/content/en/hosting-and-deployment/hosting-on-firebase.md10
-rw-r--r--docs/content/en/hugo-modules/use-modules.md2
-rwxr-xr-xdocs/content/en/hugo-pipes/babel.md2
-rwxr-xr-xdocs/content/en/hugo-pipes/bundling.md2
-rwxr-xr-xdocs/content/en/hugo-pipes/fingerprint.md2
-rw-r--r--docs/content/en/hugo-pipes/js.md2
-rwxr-xr-xdocs/content/en/hugo-pipes/minification.md2
-rwxr-xr-xdocs/content/en/hugo-pipes/postcss.md2
-rwxr-xr-xdocs/content/en/hugo-pipes/postprocess.md2
-rwxr-xr-xdocs/content/en/hugo-pipes/resource-from-string.md2
-rwxr-xr-xdocs/content/en/hugo-pipes/resource-from-template.md2
-rw-r--r--docs/content/en/hugo-pipes/transpile-sass-to-css.md2
-rw-r--r--docs/content/en/installation/_common/01-editions.md (renamed from docs/content/en/installation/common/01-editions.md)0
-rw-r--r--docs/content/en/installation/_common/02-prerequisites.md (renamed from docs/content/en/installation/common/02-prerequisites.md)0
-rw-r--r--docs/content/en/installation/_common/03-prebuilt-binaries.md (renamed from docs/content/en/installation/common/03-prebuilt-binaries.md)0
-rw-r--r--docs/content/en/installation/_common/04-build-from-source.md (renamed from docs/content/en/installation/common/05-build-from-source.md)0
-rw-r--r--docs/content/en/installation/_common/homebrew.md (renamed from docs/content/en/installation/common/homebrew.md)0
-rw-r--r--docs/content/en/installation/_common/index.md (renamed from docs/content/en/installation/common/index.md)0
-rw-r--r--docs/content/en/installation/bsd.md8
-rw-r--r--docs/content/en/installation/common/04-docker.md10
-rw-r--r--docs/content/en/installation/linux.md27
-rw-r--r--docs/content/en/installation/macos.md26
-rw-r--r--docs/content/en/installation/windows.md24
-rw-r--r--docs/content/en/readfiles/README.md16
-rw-r--r--docs/content/en/readfiles/dateformatting.md87
-rw-r--r--docs/content/en/readfiles/index.md3
-rw-r--r--docs/content/en/readfiles/sectionvars.md23
-rw-r--r--docs/content/en/readfiles/testing.txt3
-rw-r--r--docs/content/en/showcase/overmindstudios/bio.md7
-rw-r--r--docs/content/en/showcase/overmindstudios/featured.pngbin0 -> 1427591 bytes
-rw-r--r--docs/content/en/showcase/overmindstudios/index.md13
-rw-r--r--docs/content/en/templates/data-templates.md11
-rw-r--r--docs/content/en/templates/files.md13
-rw-r--r--docs/content/en/templates/introduction.md21
-rw-r--r--docs/content/en/templates/lists/index.md25
-rw-r--r--docs/content/en/templates/lookup-order.md60
-rw-r--r--docs/content/en/templates/menu-templates.md8
-rw-r--r--docs/content/en/templates/pagination.md10
-rw-r--r--docs/content/en/templates/partials.md2
-rw-r--r--docs/content/en/templates/section-templates.md4
-rw-r--r--docs/content/en/templates/shortcode-templates.md8
-rw-r--r--docs/content/en/templates/single-page-templates.md2
-rw-r--r--docs/content/en/templates/taxonomy-templates.md9
-rw-r--r--docs/content/en/troubleshooting/build-performance.md2
-rw-r--r--docs/content/en/troubleshooting/faq.md2
-rw-r--r--docs/content/en/variables/_index.md2
-rw-r--r--docs/content/en/variables/git.md5
-rw-r--r--docs/content/en/variables/page.md43
-rw-r--r--docs/content/en/variables/site.md6
-rw-r--r--docs/content/en/variables/taxonomy.md2
-rw-r--r--docs/go.mod2
-rw-r--r--docs/go.sum2
-rw-r--r--docs/hugo.toml12
-rw-r--r--docs/layouts/_default/page.html34
-rw-r--r--docs/layouts/partials/docs/functions-aliases.html12
-rw-r--r--docs/layouts/partials/docs/functions-signatures.html12
-rw-r--r--docs/layouts/partials/related.html17
-rw-r--r--docs/netlify.toml2
-rw-r--r--docs/resources/.gitattributes2
-rw-r--r--docs/resources/_gen/assets/css/output/css/app.css_d11fe7b62c27961c87ecd0f2490357b9.content1
-rw-r--r--docs/resources/_gen/assets/css/output/css/app.css_d11fe7b62c27961c87ecd0f2490357b9.json1
-rw-r--r--docs/resources/_gen/assets/js/output/js/app.js_8848f55d07695b7ff7188138f23d69e3.content18
-rw-r--r--docs/resources/_gen/assets/js/output/js/app.js_8848f55d07695b7ff7188138f23d69e3.json1
-rw-r--r--docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_1024x512_fill_catmullrom_top_2.pngbin68339 -> 0 bytes
-rw-r--r--docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_640x0_resize_catmullrom_2.pngbin23262 -> 0 bytes
-rw-r--r--docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_8298a1fa052279512823ecd663d6f9c8.pngbin25555 -> 0 bytes
298 files changed, 4568 insertions, 1991 deletions
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_social-icons.css b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_social-icons.css
index 04ea11ec5..6cfa7b1b4 100644
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_social-icons.css
+++ b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_social-icons.css
@@ -1,5 +1,8 @@
-.facebook, .twitter, .instagram, .youtube {
- fill: #BABABA;
+.facebook,
+.twitter,
+.instagram,
+.youtube {
+ fill: #bababa;
}
.facebook:hover {
fill: #3b5998;
@@ -10,10 +13,9 @@
}
.twitter:hover {
- fill: #BABABA;
+ fill: #bababa;
}
-
.instagram:hover {
fill: #e95950;
}
@@ -21,3 +23,30 @@
.youtube:hover {
fill: #bb0000;
}
+
+.mstdn {
+ display: inline-block;
+ background-color: #282c37;
+ color: #d9e1e8;
+ text-decoration: none;
+ padding: 4px 10px 4px 30px;
+ border-radius: 4px;
+ font-size: 16px;
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2261.076954mm%22%20height%3D%2265.47831mm%22%20viewBox%3D%220%200%20216.4144%20232.00976%22%3E%3Cpath%20d%3D%22M211.80734%20139.0875c-3.18125%2016.36625-28.4925%2034.2775-57.5625%2037.74875-15.15875%201.80875-30.08375%203.47125-45.99875%202.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125%200%202.53375.15625%204.94625.46875%207.2025%203.38375%2025.68625%2025.47%2027.225%2046.39125%2027.9425%2021.11625.7225%2039.91875-5.20625%2039.91875-5.20625l.8675%2019.09s-14.77%207.93125-41.08125%209.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23234%20213.82%201.40609%20165.31125.20859%20116.09125c-.365-14.61375-.14-28.39375-.14-39.91875%200-50.33%2032.97625-65.0825%2032.97625-65.0825C49.67234%203.45375%2078.20359.2425%20107.86484%200h.72875c29.66125.2425%2058.21125%203.45375%2074.8375%2011.09%200%200%2032.975%2014.7525%2032.975%2065.0825%200%200%20.41375%2037.13375-4.59875%2062.915%22%20fill%3D%22%233088d4%22%2F%3E%3Cpath%20d%3D%22M177.50984%2080.077v60.94125h-24.14375v-59.15c0-12.46875-5.24625-18.7975-15.74-18.7975-11.6025%200-17.4175%207.5075-17.4175%2022.3525v32.37625H96.20734V85.42325c0-14.845-5.81625-22.3525-17.41875-22.3525-10.49375%200-15.74%206.32875-15.74%2018.7975v59.15H38.90484V80.077c0-12.455%203.17125-22.3525%209.54125-29.675%206.56875-7.3225%2015.17125-11.07625%2025.85-11.07625%2012.355%200%2021.71125%204.74875%2027.8975%2014.2475l6.01375%2010.08125%206.015-10.08125c6.185-9.49875%2015.54125-14.2475%2027.8975-14.2475%2010.6775%200%2019.28%203.75375%2025.85%2011.07625%206.36875%207.3225%209.54%2017.22%209.54%2029.675%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E");
+ background-size: 16px;
+ background-repeat: no-repeat;
+ background-position: top 50% left 8px;
+ transition: all 0.5s;
+}
+.mstdn:hover {
+ background-color: #484c56;
+}
+
+.mstdn > span {
+ color: #9baec8;
+ font-size: 12px;
+ padding-left: 3px;
+}
+.mstdn > span:before {
+ content: "@";
+}
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/css/app.css b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/css/app.css
index af648c759..f5e09aeb1 100644
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/css/app.css
+++ b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/css/app.css
@@ -804,8 +804,6 @@ img { max-width: 100%; }
.b--washed-red { border-color: #ffdfdf; }
.b--transparent { border-color: transparent; }
.b--inherit { border-color: inherit; }
-.b--initial { border-color: currentColor; border-color: initial; }
-.b--unset { border-color: unset; }
/*
BORDER RADIUS
@@ -854,9 +852,6 @@ img { max-width: 100%; }
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
-.br-inherit { border-radius: inherit; }
-.br-initial { border-radius: 0; border-radius: initial; }
-.br-unset { border-radius: unset; }
@media screen and (min-width: 30em) {
.br0-ns { border-radius: 0; }
.br1-ns { border-radius: .125rem; }
@@ -881,9 +876,6 @@ img { max-width: 100%; }
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
- .br-inherit-ns { border-radius: inherit; }
- .br-initial-ns { border-radius: 0; border-radius: initial; }
- .br-unset-ns { border-radius: unset; }
}
@media screen and (min-width: 30em) and (max-width: 60em) {
.br0-m { border-radius: 0; }
@@ -909,9 +901,6 @@ img { max-width: 100%; }
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
- .br-inherit-m { border-radius: inherit; }
- .br-initial-m { border-radius: 0; border-radius: initial; }
- .br-unset-m { border-radius: unset; }
}
@media screen and (min-width: 60em) {
.br0-l { border-radius: 0; }
@@ -937,9 +926,6 @@ img { max-width: 100%; }
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
- .br-inherit-l { border-radius: inherit; }
- .br-initial-l { border-radius: 0; border-radius: initial; }
- .br-unset-l { border-radius: unset; }
}
/*
@@ -2381,7 +2367,6 @@ img { max-width: 100%; }
.washed-yellow { color: #fffceb; }
.washed-red { color: #ffdfdf; }
.color-inherit { color: inherit; }
-/* Background colors */
.bg-black-90 { background-color: rgba(0, 0, 0, .9); }
.bg-black-80 { background-color: rgba(0, 0, 0, .8); }
.bg-black-70 { background-color: rgba(0, 0, 0, .7); }
@@ -2401,6 +2386,7 @@ img { max-width: 100%; }
.bg-white-30 { background-color: rgba(255, 255, 255, .3); }
.bg-white-20 { background-color: rgba(255, 255, 255, .2); }
.bg-white-10 { background-color: rgba(255, 255, 255, .1); }
+/* Background colors */
.bg-black { background-color: #000; }
.bg-near-black { background-color: #111; }
.bg-dark-gray { background-color: #333; }
@@ -4685,7 +4671,6 @@ h6:hover .header-link {
.searchbox__input::-webkit-input-placeholder{color:#aaa}
.searchbox__input:-ms-input-placeholder{color:#aaa}
.searchbox__input::-ms-input-placeholder{color:#aaa}
-.searchbox__input::-moz-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:""}
@@ -4919,14 +4904,14 @@ pre {
text-decoration: none;
}
-.column-count-2 {-webkit-column-count: 1;-moz-column-count: 1;column-count: 1}
-.column-gap-1 {-webkit-column-gap: 0;-moz-column-gap: 0;column-gap: 0}
-.break-inside-avoid {-webkit-column-break-inside: auto;page-break-inside: auto;break-inside: auto}
+.column-count-2 {-webkit-column-count: 1;column-count: 1}
+.column-gap-1 {-webkit-column-gap: 0;column-gap: 0}
+.break-inside-avoid {-webkit-column-break-inside: auto;break-inside: auto}
@media screen and (min-width: 60em) {
- .column-count-3-l {-webkit-column-count: 3;-moz-column-count: 3;column-count: 3}
- .column-count-2-l {-webkit-column-count: 2;-moz-column-count: 2;column-count: 2}
- .column-gap-1-l {-webkit-column-gap: 1;-moz-column-gap: 1;column-gap: 1}
- .break-inside-avoid-l {-webkit-column-break-inside: avoid;page-break-inside: avoid;break-inside: avoid}
+ .column-count-3-l {-webkit-column-count: 3;column-count: 3}
+ .column-count-2-l {-webkit-column-count: 2;column-count: 2}
+ .column-gap-1-l {-webkit-column-gap: 1;column-gap: 1}
+ .break-inside-avoid-l {-webkit-column-break-inside: avoid;break-inside: avoid}
}
.prose ul, .prose ol {
margin-bottom: 2em;
@@ -4937,10 +4922,6 @@ pre {
.prose li:hover {
background-color: #eee
}
-.prose ::-moz-selection {
- background: #0594CB; /* WebKit/Blink Browsers */
- color: white;
-}
.prose ::selection {
background: #0594CB; /* WebKit/Blink Browsers */
color: white;
@@ -5132,8 +5113,11 @@ code, .code, pre code, .highlight pre {
-webkit-transition: opacity .15s ease-in;
transition: opacity .15s ease-in;
}
-.facebook, .twitter, .instagram, .youtube {
- fill: #BABABA;
+.facebook,
+.twitter,
+.instagram,
+.youtube {
+ fill: #bababa;
}
.facebook:hover {
fill: #3b5998;
@@ -5142,7 +5126,7 @@ code, .code, pre code, .highlight pre {
fill: #55acee;
}
.twitter:hover {
- fill: #BABABA;
+ fill: #bababa;
}
.instagram:hover {
fill: #e95950;
@@ -5150,6 +5134,32 @@ code, .code, pre code, .highlight pre {
.youtube:hover {
fill: #bb0000;
}
+.mstdn {
+ display: inline-block;
+ background-color: #282c37;
+ color: #d9e1e8;
+ text-decoration: none;
+ padding: 4px 10px 4px 30px;
+ border-radius: 4px;
+ font-size: 16px;
+ background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2261.076954mm%22%20height%3D%2265.47831mm%22%20viewBox%3D%220%200%20216.4144%20232.00976%22%3E%3Cpath%20d%3D%22M211.80734%20139.0875c-3.18125%2016.36625-28.4925%2034.2775-57.5625%2037.74875-15.15875%201.80875-30.08375%203.47125-45.99875%202.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125%200%202.53375.15625%204.94625.46875%207.2025%203.38375%2025.68625%2025.47%2027.225%2046.39125%2027.9425%2021.11625.7225%2039.91875-5.20625%2039.91875-5.20625l.8675%2019.09s-14.77%207.93125-41.08125%209.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23234%20213.82%201.40609%20165.31125.20859%20116.09125c-.365-14.61375-.14-28.39375-.14-39.91875%200-50.33%2032.97625-65.0825%2032.97625-65.0825C49.67234%203.45375%2078.20359.2425%20107.86484%200h.72875c29.66125.2425%2058.21125%203.45375%2074.8375%2011.09%200%200%2032.975%2014.7525%2032.975%2065.0825%200%200%20.41375%2037.13375-4.59875%2062.915%22%20fill%3D%22%233088d4%22%2F%3E%3Cpath%20d%3D%22M177.50984%2080.077v60.94125h-24.14375v-59.15c0-12.46875-5.24625-18.7975-15.74-18.7975-11.6025%200-17.4175%207.5075-17.4175%2022.3525v32.37625H96.20734V85.42325c0-14.845-5.81625-22.3525-17.41875-22.3525-10.49375%200-15.74%206.32875-15.74%2018.7975v59.15H38.90484V80.077c0-12.455%203.17125-22.3525%209.54125-29.675%206.56875-7.3225%2015.17125-11.07625%2025.85-11.07625%2012.355%200%2021.71125%204.74875%2027.8975%2014.2475l6.01375%2010.08125%206.015-10.08125c6.185-9.49875%2015.54125-14.2475%2027.8975-14.2475%2010.6775%200%2019.28%203.75375%2025.85%2011.07625%206.36875%207.3225%209.54%2017.22%209.54%2029.675%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E");
+ background-size: 16px;
+ background-repeat: no-repeat;
+ background-position: top 50% left 8px;
+ -webkit-transition: all 0.5s;
+ transition: all 0.5s;
+}
+.mstdn:hover {
+ background-color: #484c56;
+}
+.mstdn > span {
+ color: #9baec8;
+ font-size: 12px;
+ padding-left: 3px;
+}
+.mstdn > span:before {
+ content: "@";
+}
@media (min-width: 75em) {
[data-scrolldir="down"] .sticky {
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/js/app.js b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/js/app.js
index 346f209ba..a3e1801f8 100644
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/js/app.js
+++ b/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/js/app.js
@@ -1,24 +1,17 @@
-!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(t,e,n){!function(e,n){var r=function(t,e,n){"use strict";var r,i;if(function(){var e,n={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",fastLoadedClass:"ls-is-cached",iframeLoadMode:0,srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};for(e in i=t.lazySizesConfig||t.lazysizesConfig||{},n)e in i||(i[e]=n[e])}(),!e||!e.getElementsByClassName)return{init:function(){},cfg:i,noSupport:!0};var o=e.documentElement,s=t.HTMLPictureElement,a=t.addEventListener.bind(t),u=t.setTimeout,c=t.requestAnimationFrame||u,l=t.requestIdleCallback,h=/^picture$/i,f=["load","error","lazyincluded","_lazyloaded"],p={},d=Array.prototype.forEach,g=function(t,e){return p[e]||(p[e]=new RegExp("(\\s|^)"+e+"(\\s|$)")),p[e].test(t.getAttribute("class")||"")&&p[e]},m=function(t,e){g(t,e)||t.setAttribute("class",(t.getAttribute("class")||"").trim()+" "+e)},y=function(t,e){var n;(n=g(t,e))&&t.setAttribute("class",(t.getAttribute("class")||"").replace(n," "))},v=function(t,e,n){var r=n?"addEventListener":"removeEventListener";n&&v(t,e),f.forEach((function(n){t[r](n,e)}))},b=function(t,n,i,o,s){var a=e.createEvent("Event");return i||(i={}),i.instance=r,a.initEvent(n,!o,!s),a.detail=i,t.dispatchEvent(a),a},w=function(e,n){var r;!s&&(r=t.picturefill||i.pf)?(n&&n.src&&!e.getAttribute("srcset")&&e.setAttribute("srcset",n.src),r({reevaluate:!0,elements:[e]})):n&&n.src&&(e.src=n.src)},_=function(t,e){return(getComputedStyle(t,null)||{})[e]},x=function(t,e,n){for(n=n||t.offsetWidth;n<i.minSize&&e&&!t._lazysizesWidth;)n=e.offsetWidth,e=e.parentNode;return n},S=(pt=[],dt=[],gt=pt,mt=function(){var t=gt;for(gt=pt.length?dt:pt,ht=!0,ft=!1;t.length;)t.shift()();ht=!1},yt=function(t,n){ht&&!n?t.apply(this,arguments):(gt.push(t),ft||(ft=!0,(e.hidden?u:c)(mt)))},yt._lsFlush=mt,yt),C=function(t,e){return e?function(){S(t)}:function(){var e=this,n=arguments;S((function(){t.apply(e,n)}))}},A=function(t){var e,r,i=function(){e=null,t()},o=function(){var t=n.now()-r;t<99?u(o,99-t):(l||i)(i)};return function(){r=n.now(),e||(e=u(o,99))}},E=(V=/^img$/i,K=/^iframe$/i,J="onscroll"in t&&!/(gle|ing)bot/.test(navigator.userAgent),W=0,Q=0,X=-1,G=function(t){Q--,(!t||Q<0||!t.target)&&(Q=0)},Z=function(t){return null==U&&(U="hidden"==_(e.body,"visibility")),U||!("hidden"==_(t.parentNode,"visibility")&&"hidden"==_(t,"visibility"))},Y=function(t,n){var r,i=t,s=Z(t);for(H-=n,B+=n,F-=n,z+=n;s&&(i=i.offsetParent)&&i!=e.body&&i!=o;)(s=(_(i,"opacity")||1)>0)&&"visible"!=_(i,"overflow")&&(r=i.getBoundingClientRect(),s=z>r.left&&F<r.right&&B>r.top-1&&H<r.bottom+1);return s},tt=function(){var t,n,s,a,u,c,l,h,f,p,d,g,m=r.elements;if((D=i.loadMode)&&Q<8&&(t=m.length)){for(n=0,X++;n<t;n++)if(m[n]&&!m[n]._lazyRace)if(!J||r.prematureUnveil&&r.prematureUnveil(m[n]))at(m[n]);else if((h=m[n].getAttribute("data-expand"))&&(c=1*h)||(c=W),p||(p=!i.expand||i.expand<1?o.clientHeight>500&&o.clientWidth>500?500:370:i.expand,r._defEx=p,d=p*i.expFactor,g=i.hFac,U=null,W<d&&Q<1&&X>2&&D>2&&!e.hidden?(W=d,X=0):W=D>1&&X>1&&Q<6?p:0),f!==c&&($=innerWidth+c*g,M=innerHeight+c,l=-1*c,f=c),s=m[n].getBoundingClientRect(),(B=s.bottom)>=l&&(H=s.top)<=M&&(z=s.right)>=l*g&&(F=s.left)<=$&&(B||z||F||H)&&(i.loadHidden||Z(m[n]))&&(R&&Q<3&&!h&&(D<3||X<4)||Y(m[n],c))){if(at(m[n]),u=!0,Q>9)break}else!u&&R&&!a&&Q<4&&X<4&&D>2&&(L[0]||i.preloadAfterLoad)&&(L[0]||!h&&(B||z||F||H||"auto"!=m[n].getAttribute(i.sizesAttr)))&&(a=L[0]||m[n]);a&&!u&&at(a)}},et=function(t){var e,r=0,o=i.throttleDelay,s=i.ricTimeout,a=function(){e=!1,r=n.now(),t()},c=l&&s>49?function(){l(a,{timeout:s}),s!==i.ricTimeout&&(s=i.ricTimeout)}:C((function(){u(a)}),!0);return function(t){var i;(t=!0===t)&&(s=33),e||(e=!0,(i=o-(n.now()-r))<0&&(i=0),t||i<9?c():u(c,i))}}(tt),nt=function(t){var e=t.target;e._lazyCache?delete e._lazyCache:(G(t),m(e,i.loadedClass),y(e,i.loadingClass),v(e,it),b(e,"lazyloaded"))},rt=C(nt),it=function(t){rt({target:t.target})},ot=function(t){var e,n=t.getAttribute(i.srcsetAttr);(e=i.customMedia[t.getAttribute("data-media")||t.getAttribute("media")])&&t.setAttribute("media",e),n&&t.setAttribute("srcset",n)},st=C((function(t,e,n,r,o){var s,a,c,l,f,p;(f=b(t,"lazybeforeunveil",e)).defaultPrevented||(r&&(n?m(t,i.autosizesClass):t.setAttribute("sizes",r)),a=t.getAttribute(i.srcsetAttr),s=t.getAttribute(i.srcAttr),o&&(l=(c=t.parentNode)&&h.test(c.nodeName||"")),p=e.firesLoad||"src"in t&&(a||s||l),f={target:t},m(t,i.loadingClass),p&&(clearTimeout(P),P=u(G,2500),v(t,it,!0)),l&&d.call(c.getElementsByTagName("source"),ot),a?t.setAttribute("srcset",a):s&&!l&&(K.test(t.nodeName)?function(t,e){var n=t.getAttribute("data-load-mode")||i.iframeLoadMode;0==n?t.contentWindow.location.replace(e):1==n&&(t.src=e)}(t,s):t.src=s),o&&(a||l)&&w(t,{src:s})),t._lazyRace&&delete t._lazyRace,y(t,i.lazyClass),S((function(){var e=t.complete&&t.naturalWidth>1;p&&!e||(e&&m(t,i.fastLoadedClass),nt(f),t._lazyCache=!0,u((function(){"_lazyCache"in t&&delete t._lazyCache}),9)),"lazy"==t.loading&&Q--}),!0)})),at=function(t){if(!t._lazyRace){var e,n=V.test(t.nodeName),r=n&&(t.getAttribute(i.sizesAttr)||t.getAttribute("sizes")),o="auto"==r;(!o&&R||!n||!t.getAttribute("src")&&!t.srcset||t.complete||g(t,i.errorClass)||!g(t,i.lazyClass))&&(e=b(t,"lazyunveilread").detail,o&&T.updateElem(t,!0,t.offsetWidth),t._lazyRace=!0,Q++,st(t,e,o,r,n))}},ut=A((function(){i.loadMode=3,et()})),ct=function(){3==i.loadMode&&(i.loadMode=2),ut()},lt=function(){R||(n.now()-q<999?u(lt,999):(R=!0,i.loadMode=3,et(),a("scroll",ct,!0)))},{_:function(){q=n.now(),r.elements=e.getElementsByClassName(i.lazyClass),L=e.getElementsByClassName(i.lazyClass+" "+i.preloadClass),a("scroll",et,!0),a("resize",et,!0),a("pageshow",(function(t){if(t.persisted){var n=e.querySelectorAll("."+i.loadingClass);n.length&&n.forEach&&c((function(){n.forEach((function(t){t.complete&&at(t)}))}))}})),t.MutationObserver?new MutationObserver(et).observe(o,{childList:!0,subtree:!0,attributes:!0}):(o.addEventListener("DOMNodeInserted",et,!0),o.addEventListener("DOMAttrModified",et,!0),setInterval(et,999)),a("hashchange",et,!0),["focus","mouseover","click","load","transitionend","animationend"].forEach((function(t){e.addEventListener(t,et,!0)})),/d$|^c/.test(e.readyState)?lt():(a("load",lt),e.addEventListener("DOMContentLoaded",et),u(lt,2e4)),r.elements.length?(tt(),S._lsFlush()):et()},checkElems:et,unveil:at,_aLSL:ct}),T=(N=C((function(t,e,n,r){var i,o,s;if(t._lazysizesWidth=r,r+="px",t.setAttribute("sizes",r),h.test(e.nodeName||""))for(o=0,s=(i=e.getElementsByTagName("source")).length;o<s;o++)i[o].setAttribute("sizes",r);n.detail.dataAttr||w(t,n.detail)})),j=function(t,e,n){var r,i=t.parentNode;i&&(n=x(t,i,n),(r=b(t,"lazybeforesizes",{width:n,dataAttr:!!e})).defaultPrevented||(n=r.detail.width)&&n!==t._lazysizesWidth&&N(t,i,r,n))},I=A((function(){var t,e=k.length;if(e)for(t=0;t<e;t++)j(k[t])})),{_:function(){k=e.getElementsByClassName(i.autosizesClass),a("resize",I)},checkElems:I,updateElem:j}),O=function(){!O.i&&e.getElementsByClassName&&(O.i=!0,T._(),E._())};var k,N,j,I;var L,R,P,D,q,$,M,H,F,z,B,U,V,K,J,W,Q,X,G,Z,Y,tt,et,nt,rt,it,ot,st,at,ut,ct,lt;var ht,ft,pt,dt,gt,mt,yt;return u((function(){i.init&&O()})),r={cfg:i,autoSizer:T,loader:E,init:O,uP:w,aC:m,rC:y,hC:g,fire:b,gW:x,rAF:S}}(e,e.document,Date);e.lazySizes=r,t.exports&&(t.exports=r)}("undefined"!=typeof window?window:{})},function(t,e,n){"use strict";n.r(e);n(3),n(4),n(6),n(8),n(10),n(11),n(13),n(14),n(15);n(2)},function(t,e,n){},function(t,e,n){},function(t,e,n){function r(t,e){t.setAttribute("class","copied bg-primary-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2"),t.setAttribute("aria-label",e)}new(n(5))(".copy",{target:function(t){return t.classList.contains("copy-toggle")?t.previousElementSibling:t.nextElementSibling}}).on("success",(function(t){r(t.trigger,"Copied!"),t.clearSelection()})).on("error",(function(t){r(t.trigger,function(t,e){var n="",r="cut"===e?"X":"C";n=isMac?"Press ⌘-"+r:"Press Ctrl-"+r;return n}(t.action))}))},function(t,e,n){
+!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(t,e,n){!function(e,n){var r=function(t,e,n){"use strict";var r,i;if(function(){var e,n={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",fastLoadedClass:"ls-is-cached",iframeLoadMode:0,srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};for(e in i=t.lazySizesConfig||t.lazysizesConfig||{},n)e in i||(i[e]=n[e])}(),!e||!e.getElementsByClassName)return{init:function(){},cfg:i,noSupport:!0};var o=e.documentElement,s=t.HTMLPictureElement,a=t.addEventListener.bind(t),u=t.setTimeout,c=t.requestAnimationFrame||u,l=t.requestIdleCallback,h=/^picture$/i,f=["load","error","lazyincluded","_lazyloaded"],d={},p=Array.prototype.forEach,g=function(t,e){return d[e]||(d[e]=new RegExp("(\\s|^)"+e+"(\\s|$)")),d[e].test(t.getAttribute("class")||"")&&d[e]},m=function(t,e){g(t,e)||t.setAttribute("class",(t.getAttribute("class")||"").trim()+" "+e)},y=function(t,e){var n;(n=g(t,e))&&t.setAttribute("class",(t.getAttribute("class")||"").replace(n," "))},v=function(t,e,n){var r=n?"addEventListener":"removeEventListener";n&&v(t,e),f.forEach((function(n){t[r](n,e)}))},b=function(t,n,i,o,s){var a=e.createEvent("Event");return i||(i={}),i.instance=r,a.initEvent(n,!o,!s),a.detail=i,t.dispatchEvent(a),a},w=function(e,n){var r;!s&&(r=t.picturefill||i.pf)?(n&&n.src&&!e.getAttribute("srcset")&&e.setAttribute("srcset",n.src),r({reevaluate:!0,elements:[e]})):n&&n.src&&(e.src=n.src)},_=function(t,e){return(getComputedStyle(t,null)||{})[e]},x=function(t,e,n){for(n=n||t.offsetWidth;n<i.minSize&&e&&!t._lazysizesWidth;)n=e.offsetWidth,e=e.parentNode;return n},S=(dt=[],pt=[],gt=dt,mt=function(){var t=gt;for(gt=dt.length?pt:dt,ht=!0,ft=!1;t.length;)t.shift()();ht=!1},yt=function(t,n){ht&&!n?t.apply(this,arguments):(gt.push(t),ft||(ft=!0,(e.hidden?u:c)(mt)))},yt._lsFlush=mt,yt),C=function(t,e){return e?function(){S(t)}:function(){var e=this,n=arguments;S((function(){t.apply(e,n)}))}},A=function(t){var e,r,i=function(){e=null,t()},o=function(){var t=n.now()-r;t<99?u(o,99-t):(l||i)(i)};return function(){r=n.now(),e||(e=u(o,99))}},E=(V=/^img$/i,K=/^iframe$/i,J="onscroll"in t&&!/(gle|ing)bot/.test(navigator.userAgent),W=0,Q=0,X=-1,G=function(t){Q--,(!t||Q<0||!t.target)&&(Q=0)},Z=function(t){return null==U&&(U="hidden"==_(e.body,"visibility")),U||!("hidden"==_(t.parentNode,"visibility")&&"hidden"==_(t,"visibility"))},Y=function(t,n){var r,i=t,s=Z(t);for(H-=n,B+=n,F-=n,z+=n;s&&(i=i.offsetParent)&&i!=e.body&&i!=o;)(s=(_(i,"opacity")||1)>0)&&"visible"!=_(i,"overflow")&&(r=i.getBoundingClientRect(),s=z>r.left&&F<r.right&&B>r.top-1&&H<r.bottom+1);return s},tt=function(){var t,n,s,a,u,c,l,h,f,d,p,g,m=r.elements;if((D=i.loadMode)&&Q<8&&(t=m.length)){for(n=0,X++;n<t;n++)if(m[n]&&!m[n]._lazyRace)if(!J||r.prematureUnveil&&r.prematureUnveil(m[n]))at(m[n]);else if((h=m[n].getAttribute("data-expand"))&&(c=1*h)||(c=W),d||(d=!i.expand||i.expand<1?o.clientHeight>500&&o.clientWidth>500?500:370:i.expand,r._defEx=d,p=d*i.expFactor,g=i.hFac,U=null,W<p&&Q<1&&X>2&&D>2&&!e.hidden?(W=p,X=0):W=D>1&&X>1&&Q<6?d:0),f!==c&&($=innerWidth+c*g,M=innerHeight+c,l=-1*c,f=c),s=m[n].getBoundingClientRect(),(B=s.bottom)>=l&&(H=s.top)<=M&&(z=s.right)>=l*g&&(F=s.left)<=$&&(B||z||F||H)&&(i.loadHidden||Z(m[n]))&&(R&&Q<3&&!h&&(D<3||X<4)||Y(m[n],c))){if(at(m[n]),u=!0,Q>9)break}else!u&&R&&!a&&Q<4&&X<4&&D>2&&(L[0]||i.preloadAfterLoad)&&(L[0]||!h&&(B||z||F||H||"auto"!=m[n].getAttribute(i.sizesAttr)))&&(a=L[0]||m[n]);a&&!u&&at(a)}},et=function(t){var e,r=0,o=i.throttleDelay,s=i.ricTimeout,a=function(){e=!1,r=n.now(),t()},c=l&&s>49?function(){l(a,{timeout:s}),s!==i.ricTimeout&&(s=i.ricTimeout)}:C((function(){u(a)}),!0);return function(t){var i;(t=!0===t)&&(s=33),e||(e=!0,(i=o-(n.now()-r))<0&&(i=0),t||i<9?c():u(c,i))}}(tt),nt=function(t){var e=t.target;e._lazyCache?delete e._lazyCache:(G(t),m(e,i.loadedClass),y(e,i.loadingClass),v(e,it),b(e,"lazyloaded"))},rt=C(nt),it=function(t){rt({target:t.target})},ot=function(t){var e,n=t.getAttribute(i.srcsetAttr);(e=i.customMedia[t.getAttribute("data-media")||t.getAttribute("media")])&&t.setAttribute("media",e),n&&t.setAttribute("srcset",n)},st=C((function(t,e,n,r,o){var s,a,c,l,f,d;(f=b(t,"lazybeforeunveil",e)).defaultPrevented||(r&&(n?m(t,i.autosizesClass):t.setAttribute("sizes",r)),a=t.getAttribute(i.srcsetAttr),s=t.getAttribute(i.srcAttr),o&&(l=(c=t.parentNode)&&h.test(c.nodeName||"")),d=e.firesLoad||"src"in t&&(a||s||l),f={target:t},m(t,i.loadingClass),d&&(clearTimeout(P),P=u(G,2500),v(t,it,!0)),l&&p.call(c.getElementsByTagName("source"),ot),a?t.setAttribute("srcset",a):s&&!l&&(K.test(t.nodeName)?function(t,e){var n=t.getAttribute("data-load-mode")||i.iframeLoadMode;0==n?t.contentWindow.location.replace(e):1==n&&(t.src=e)}(t,s):t.src=s),o&&(a||l)&&w(t,{src:s})),t._lazyRace&&delete t._lazyRace,y(t,i.lazyClass),S((function(){var e=t.complete&&t.naturalWidth>1;d&&!e||(e&&m(t,i.fastLoadedClass),nt(f),t._lazyCache=!0,u((function(){"_lazyCache"in t&&delete t._lazyCache}),9)),"lazy"==t.loading&&Q--}),!0)})),at=function(t){if(!t._lazyRace){var e,n=V.test(t.nodeName),r=n&&(t.getAttribute(i.sizesAttr)||t.getAttribute("sizes")),o="auto"==r;(!o&&R||!n||!t.getAttribute("src")&&!t.srcset||t.complete||g(t,i.errorClass)||!g(t,i.lazyClass))&&(e=b(t,"lazyunveilread").detail,o&&T.updateElem(t,!0,t.offsetWidth),t._lazyRace=!0,Q++,st(t,e,o,r,n))}},ut=A((function(){i.loadMode=3,et()})),ct=function(){3==i.loadMode&&(i.loadMode=2),ut()},lt=function(){R||(n.now()-q<999?u(lt,999):(R=!0,i.loadMode=3,et(),a("scroll",ct,!0)))},{_:function(){q=n.now(),r.elements=e.getElementsByClassName(i.lazyClass),L=e.getElementsByClassName(i.lazyClass+" "+i.preloadClass),a("scroll",et,!0),a("resize",et,!0),a("pageshow",(function(t){if(t.persisted){var n=e.querySelectorAll("."+i.loadingClass);n.length&&n.forEach&&c((function(){n.forEach((function(t){t.complete&&at(t)}))}))}})),t.MutationObserver?new MutationObserver(et).observe(o,{childList:!0,subtree:!0,attributes:!0}):(o.addEventListener("DOMNodeInserted",et,!0),o.addEventListener("DOMAttrModified",et,!0),setInterval(et,999)),a("hashchange",et,!0),["focus","mouseover","click","load","transitionend","animationend"].forEach((function(t){e.addEventListener(t,et,!0)})),/d$|^c/.test(e.readyState)?lt():(a("load",lt),e.addEventListener("DOMContentLoaded",et),u(lt,2e4)),r.elements.length?(tt(),S._lsFlush()):et()},checkElems:et,unveil:at,_aLSL:ct}),T=(N=C((function(t,e,n,r){var i,o,s;if(t._lazysizesWidth=r,r+="px",t.setAttribute("sizes",r),h.test(e.nodeName||""))for(o=0,s=(i=e.getElementsByTagName("source")).length;o<s;o++)i[o].setAttribute("sizes",r);n.detail.dataAttr||w(t,n.detail)})),j=function(t,e,n){var r,i=t.parentNode;i&&(n=x(t,i,n),(r=b(t,"lazybeforesizes",{width:n,dataAttr:!!e})).defaultPrevented||(n=r.detail.width)&&n!==t._lazysizesWidth&&N(t,i,r,n))},I=A((function(){var t,e=O.length;if(e)for(t=0;t<e;t++)j(O[t])})),{_:function(){O=e.getElementsByClassName(i.autosizesClass),a("resize",I)},checkElems:I,updateElem:j}),k=function(){!k.i&&e.getElementsByClassName&&(k.i=!0,T._(),E._())};var O,N,j,I;var L,R,P,D,q,$,M,H,F,z,B,U,V,K,J,W,Q,X,G,Z,Y,tt,et,nt,rt,it,ot,st,at,ut,ct,lt;var ht,ft,dt,pt,gt,mt,yt;return u((function(){i.init&&k()})),r={cfg:i,autoSizer:T,loader:E,init:k,uP:w,aC:m,rC:y,hC:g,fire:b,gW:x,rAF:S}}(e,e.document,Date);e.lazySizes=r,t.exports&&(t.exports=r)}("undefined"!=typeof window?window:{})},function(t,e,n){"use strict";n.r(e);n(3),n(4),n(6),n(8),n(10),n(11),n(13),n(14),n(15);n(2)},function(t,e,n){},function(t,e,n){},function(t,e,n){function r(t,e){t.setAttribute("class","copied bg-primary-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2"),t.setAttribute("aria-label",e)}new(n(5))(".copy",{target:function(t){return t.classList.contains("copy-toggle")?t.previousElementSibling:t.nextElementSibling}}).on("success",(function(t){r(t.trigger,"Copied!"),t.clearSelection()})).on("error",(function(t){r(t.trigger,function(t,e){var n="",r="cut"===e?"X":"C";n=isMac?"Press ⌘-"+r:"Press Ctrl-"+r;return n}(t.action))}))},function(t,e,n){
/*!
- * clipboard.js v2.0.11
- * https://clipboardjs.com/
- *
+ * clipboard.js v2.0.4
+ * https://zenorocha.github.io/clipboard.js
+ *
* Licensed MIT © Zeno Rocha
*/
-var r;r=function(){return function(){var t={686:function(t,e,n){"use strict";n.d(e,{default:function(){return x}});var r=n(279),i=n.n(r),o=n(370),s=n.n(o),a=n(817),u=n.n(a);function c(t){try{return document.execCommand(t)}catch(t){return!1}}var l=function(t){var e=u()(t);return c("cut"),e},h=function(t,e){var n=function(t){var e="rtl"===document.documentElement.getAttribute("dir"),n=document.createElement("textarea");n.style.fontSize="12pt",n.style.border="0",n.style.padding="0",n.style.margin="0",n.style.position="absolute",n.style[e?"right":"left"]="-9999px";var r=window.pageYOffset||document.documentElement.scrollTop;return n.style.top="".concat(r,"px"),n.setAttribute("readonly",""),n.value=t,n}(t);e.container.appendChild(n);var r=u()(n);return c("copy"),n.remove(),r},f=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{container:document.body},n="";return"string"==typeof t?n=h(t,e):t instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(null==t?void 0:t.type)?n=h(t.value,e):(n=u()(t),c("copy")),n};function p(t){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var d=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.action,n=void 0===e?"copy":e,r=t.container,i=t.target,o=t.text;if("copy"!==n&&"cut"!==n)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==i){if(!i||"object"!==p(i)||1!==i.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===n&&i.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===n&&(i.hasAttribute("readonly")||i.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return o?f(o,{container:r}):i?"cut"===n?l(i):f(i,{container:r}):void 0};function g(t){return(g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function m(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function y(t,e){return(y=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function v(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=w(t);if(e){var i=w(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return b(this,n)}}function b(t,e){return!e||"object"!==g(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function w(t){return(w=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function _(t,e){var n="data-clipboard-".concat(t);if(e.hasAttribute(n))return e.getAttribute(n)}var x=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&y(t,e)}(o,t);var e,n,r,i=v(o);function o(t,e){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o),(n=i.call(this)).resolveOptions(e),n.listenClick(t),n}return e=o,r=[{key:"copy",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{container:document.body};return f(t,e)}},{key:"cut",value:function(t){return l(t)}},{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach((function(t){n=n&&!!document.queryCommandSupported(t)})),n}}],(n=[{key:"resolveOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===g(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=s()(t,"click",(function(t){return e.onClick(t)}))}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget,n=this.action(e)||"copy",r=d({action:n,container:this.container,target:this.target(e),text:this.text(e)});this.emit(r?"success":"error",{action:n,text:r,trigger:e,clearSelection:function(){e&&e.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return _("action",t)}},{key:"defaultTarget",value:function(t){var e=_("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return _("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}])&&m(e.prototype,n),r&&m(e,r),o}(i())},828:function(t){if("undefined"!=typeof Element&&!Element.prototype.matches){var e=Element.prototype;e.matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:function(t,e,n){var r=n(828);function i(t,e,n,r,i){var s=o.apply(this,arguments);return t.addEventListener(n,s,i),{destroy:function(){t.removeEventListener(n,s,i)}}}function o(t,e,n,i){return function(n){n.delegateTarget=r(n.target,e),n.delegateTarget&&i.call(t,n)}}t.exports=function(t,e,n,r,o){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,(function(t){return i(t,e,n,r,o)})))}},879:function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:function(t,e,n){var r=n(879),i=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!r.string(e))throw new TypeError("Second argument must be a String");if(!r.fn(n))throw new TypeError("Third argument must be a Function");if(r.node(t))return function(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}(t,e,n);if(r.nodeList(t))return function(t,e,n){return Array.prototype.forEach.call(t,(function(t){t.addEventListener(e,n)})),{destroy:function(){Array.prototype.forEach.call(t,(function(t){t.removeEventListener(e,n)}))}}}(t,e,n);if(r.string(t))return function(t,e,n){return i(document.body,t,e,n)}(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}},817:function(t){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var r=window.getSelection(),i=document.createRange();i.selectNodeContents(t),r.removeAllRanges(),r.addRange(i),e=r.toString()}return e}},279:function(t){function e(){}e.prototype={on:function(t,e,n){var r=this.e||(this.e={});return(r[t]||(r[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var r=this;function i(){r.off(t,i),e.apply(n,arguments)}return i._=e,this.on(t,i,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),r=0,i=n.length;r<i;r++)n[r].fn.apply(n[r].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),r=n[t],i=[];if(r&&e)for(var o=0,s=r.length;o<s;o++)r[o].fn!==e&&r[o].fn._!==e&&i.push(r[o]);return i.length?n[t]=i:delete n[t],this}},t.exports=e,t.exports.TinyEmitter=e}},e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={exports:{}};return t[r](i,i.exports,n),i.exports}return n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,{a:e}),e},n.d=function(t,e){for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n(686)}().default},t.exports=r()},function(t,e,n){n(7)({appId:"D1BPLZHGYQ",apiKey:"6df94e1e5d55d258c56f60d974d10314",indexName:"hugodocs",inputSelector:"#search-input",debug:!0})},function(t,e,n){
-/*! docsearch 2.6.3 | © Algolia | github.com/algolia/docsearch */
-var r;"undefined"!=typeof self&&self,r=function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=22)}([function(t,e,n){"use strict";var r,i=n(1);function o(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}t.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(t){if(void 0===t&&(t=navigator.userAgent),/(msie|trident)/i.test(t)){var e=t.match(/(msie |rv:)(\d+(.\d+)?)/i);if(e)return e[2]}return!1},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(t){return"number"==typeof t},toStr:function(t){return null==t?"":t+""},cloneDeep:function(t){var e=this.mixin({},t),n=this;return this.each(e,(function(t,r){t&&(n.isArray(t)?e[r]=[].concat(t):n.isObject(t)&&(e[r]=n.cloneDeep(t)))})),e},error:function(t){throw new Error(t)},every:function(t,e){var n=!0;return t?(this.each(t,(function(r,i){n&&(n=e.call(null,r,i,t)&&n)})),!!n):n},any:function(t,e){var n=!1;return t?(this.each(t,(function(r,i){if(e.call(null,r,i,t))return n=!0,!1})),n):n},getUniqueId:(r=0,function(){return r++}),templatify:function(t){if(this.isFunction(t))return t;var e=i.element(t);return"SCRIPT"===e.prop("tagName")?function(){return e.text()}:function(){return String(t)}},defer:function(t){setTimeout(t,0)},noop:function(){},formatPrefix:function(t,e){return e?"":t+"-"},className:function(t,e,n){return(n?"":".")+t+e},escapeHighlightedString:function(t,e,n){e=e||"<em>";var r=document.createElement("div");r.appendChild(document.createTextNode(e)),n=n||"</em>";var i=document.createElement("div");i.appendChild(document.createTextNode(n));var s=document.createElement("div");return s.appendChild(document.createTextNode(t)),s.innerHTML.replace(RegExp(o(r.innerHTML),"g"),e).replace(RegExp(o(i.innerHTML),"g"),n)}}},function(t,e,n){"use strict";t.exports={element:null}},function(t,e){var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString;t.exports=function(t,e,i){if("[object Function]"!==r.call(e))throw new TypeError("iterator must be a function");var o=t.length;if(o===+o)for(var s=0;s<o;s++)e.call(i,t[s],s,t);else for(var a in t)n.call(t,a)&&e.call(i,t[a],a,t)}},function(t,e){t.exports=function(t){return JSON.parse(JSON.stringify(t))}},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";var r=n(12);function i(t,e){var r=n(2),i=this;"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):i.stack=(new Error).stack||"Cannot get a stacktrace, browser is too old",this.name="AlgoliaSearchError",this.message=t||"Unknown error",e&&r(e,(function(t,e){i[e]=t}))}function o(t,e){function n(){var n=Array.prototype.slice.call(arguments,0);"string"!=typeof n[0]&&n.unshift(e),i.apply(this,n),this.name="AlgoliaSearch"+t+"Error"}return r(n,i),n}r(i,Error),t.exports={AlgoliaSearchError:i,UnparsableJSON:o("UnparsableJSON","Could not parse the incoming response as JSON, see err.more for details"),RequestTimeout:o("RequestTimeout","Request timedout before getting a response"),Network:o("Network","Network issue, see err.more for details"),JSONPScriptFail:o("JSONPScriptFail","<script> was loaded but did not call our provided callback"),JSONPScriptError:o("JSONPScriptError","<script> unable to load due to an `error` event on it"),Unknown:o("Unknown","Unknown error occured")}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){var r=n(2);t.exports=function(t,e){var n=[];return r(t,(function(r,i){n.push(e(r,i,t))})),n}},function(t,e,n){(function(r){function i(){var t;try{t=e.storage.debug}catch(t){}return!t&&void 0!==r&&"env"in r&&(t=Object({NODE_ENV:"production"}).DEBUG),t}(e=t.exports=n(39)).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},e.formatArgs=function(t){var n=this.useColors;if(t[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+t[0]+(n?"%c ":" ")+"+"+e.humanize(this.diff),n){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var i=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(function(t){"%%"!==t&&(i++,"%c"===t&&(o=i))})),t.splice(o,0,r)}},e.save=function(t){try{null==t?e.storage.removeItem("debug"):e.storage.debug=t}catch(t){}},e.load=i,e.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type)||("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},e.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),e.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],e.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},e.enable(i())}).call(e,n(9))},function(t,e){var n,r,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(t){r=s}}();var u,c=[],l=!1,h=-1;function f(){l&&u&&(l=!1,u.length?c=u.concat(c):h=-1,c.length&&p())}function p(){if(!l){var t=a(f);l=!0;for(var e=c.length;e;){for(u=c,c=[];++h<e;)u&&u[h].run();h=-1,e=c.length}u=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===s||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function g(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new d(t,e)),1!==c.length||l||a(p)},d.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(t,e,n){"use strict";var r=n(53),i=/\s+/;function o(t,e,n,r){var o;if(!n)return this;for(e=e.split(i),n=r?function(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}(n,r):n,this._callbacks=this._callbacks||{};o=e.shift();)this._callbacks[o]=this._callbacks[o]||{sync:[],async:[]},this._callbacks[o][t].push(n);return this}function s(t,e,n){return function(){for(var r,i=0,o=t.length;!r&&i<o;i+=1)r=!1===t[i].apply(e,n);return!r}}t.exports={onSync:function(t,e,n){return o.call(this,"sync",t,e,n)},onAsync:function(t,e,n){return o.call(this,"async",t,e,n)},off:function(t){var e;if(!this._callbacks)return this;for(t=t.split(i);e=t.shift();)delete this._callbacks[e];return this},trigger:function(t){var e,n,o,a,u;if(!this._callbacks)return this;for(t=t.split(i),o=[].slice.call(arguments,1);(e=t.shift())&&(n=this._callbacks[e]);)a=s(n.sync,this,[e].concat(o)),u=s(n.async,this,[e].concat(o)),a()&&r(u);return this}}},function(t,e,n){"use strict";var r=n(0),i={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};r.isMsie()&&r.mixin(i.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),r.isMsie()&&r.isMsie()<=7&&r.mixin(i.input,{marginTop:"-1px"}),t.exports=i},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){t.exports=function(t,e){return function(n,i,o){if("function"==typeof n&&"object"==typeof i||"object"==typeof o)throw new r.AlgoliaSearchError("index.search usage is index.search(query, params, cb)");0===arguments.length||"function"==typeof n?(o=n,n=""):1!==arguments.length&&"function"!=typeof i||(o=i,i=void 0),"object"==typeof n&&null!==n?(i=n,n=void 0):null==n&&(n="");var s,a="";return void 0!==n&&(a+=t+"="+encodeURIComponent(n)),void 0!==i&&(i.additionalUA&&(s=i.additionalUA,delete i.additionalUA),a=this.as._getSearchParams(i,a)),this._search(a,e,o,s)}};var r=n(5)},function(t,e,n){t.exports=function(t,e){var r=n(36),i=n(2),o={};return i(r(t),(function(n){!0!==e(n)&&(o[n]=t[n])})),o}},function(t,e){var n;n=window,t.exports=function(t){var e,n,r=function(){var e,n,r,i,o,s=[],a=s.concat,u=s.filter,c=s.slice,l=t.document,h={},f={},p={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},d=/^\s*<(\w+|!)[^>]*>/,g=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,m=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,y=/^(?:body|html)$/i,v=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],w=l.createElement("table"),_=l.createElement("tr"),x={tr:l.createElement("tbody"),tbody:w,thead:w,tfoot:w,td:_,th:_,"*":l.createElement("div")},S=/complete|loaded|interactive/,C=/^[\w-]*$/,A={},E=A.toString,T={},O=l.createElement("div"),k={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},N=Array.isArray||function(t){return t instanceof Array};function j(t){return null==t?String(t):A[E.call(t)]||"object"}function I(t){return"function"==j(t)}function L(t){return null!=t&&t==t.window}function R(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function P(t){return"object"==j(t)}function D(t){return P(t)&&!L(t)&&Object.getPrototypeOf(t)==Object.prototype}function q(t){var e=!!t&&"length"in t&&t.length,r=n.type(t);return"function"!=r&&!L(t)&&("array"==r||0===e||"number"==typeof e&&e>0&&e-1 in t)}function $(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function M(t){return t in f?f[t]:f[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function H(t,e){return"number"!=typeof e||p[$(t)]?e:e+"px"}function F(t){return"children"in t?c.call(t.children):n.map(t.childNodes,(function(t){if(1==t.nodeType)return t}))}function z(t,e){var n,r=t?t.length:0;for(n=0;n<r;n++)this[n]=t[n];this.length=r,this.selector=e||""}function B(t,n,r){for(e in n)r&&(D(n[e])||N(n[e]))?(D(n[e])&&!D(t[e])&&(t[e]={}),N(n[e])&&!N(t[e])&&(t[e]=[]),B(t[e],n[e],r)):void 0!==n[e]&&(t[e]=n[e])}function U(t,e){return null==e?n(t):n(t).filter(e)}function V(t,e,n,r){return I(e)?e.call(t,n,r):e}function K(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function J(t,e){var n=t.className||"",r=n&&void 0!==n.baseVal;if(void 0===e)return r?n.baseVal:n;r?n.baseVal=e:t.className=e}function W(t){try{return t?"true"==t||"false"!=t&&("null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?n.parseJSON(t):t):t}catch(e){return t}}function Q(t,e){e(t);for(var n=0,r=t.childNodes.length;n<r;n++)Q(t.childNodes[n],e)}return T.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=O).appendChild(t),r=~T.qsa(i,e).indexOf(t),o&&O.removeChild(t),r},i=function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},o=function(t){return u.call(t,(function(e,n){return t.indexOf(e)==n}))},T.fragment=function(t,e,r){var i,o,s;return g.test(t)&&(i=n(l.createElement(RegExp.$1))),i||(t.replace&&(t=t.replace(m,"<$1></$2>")),void 0===e&&(e=d.test(t)&&RegExp.$1),e in x||(e="*"),(s=x[e]).innerHTML=""+t,i=n.each(c.call(s.childNodes),(function(){s.removeChild(this)}))),D(r)&&(o=n(i),n.each(r,(function(t,e){b.indexOf(t)>-1?o[t](e):o.attr(t,e)}))),i},T.Z=function(t,e){return new z(t,e)},T.isZ=function(t){return t instanceof T.Z},T.init=function(t,e){var r,i;if(!t)return T.Z();if("string"==typeof t)if("<"==(t=t.trim())[0]&&d.test(t))r=T.fragment(t,RegExp.$1,e),t=null;else{if(void 0!==e)return n(e).find(t);r=T.qsa(l,t)}else{if(I(t))return n(l).ready(t);if(T.isZ(t))return t;if(N(t))i=t,r=u.call(i,(function(t){return null!=t}));else if(P(t))r=[t],t=null;else if(d.test(t))r=T.fragment(t.trim(),RegExp.$1,e),t=null;else{if(void 0!==e)return n(e).find(t);r=T.qsa(l,t)}}return T.Z(r,t)},(n=function(t,e){return T.init(t,e)}).extend=function(t){var e,n=c.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach((function(n){B(t,n,e)})),t},T.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,s=C.test(o);return t.getElementById&&s&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:c.call(s&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},n.contains=l.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},n.type=j,n.isFunction=I,n.isWindow=L,n.isArray=N,n.isPlainObject=D,n.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},n.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},n.inArray=function(t,e,n){return s.indexOf.call(e,t,n)},n.camelCase=i,n.trim=function(t){return null==t?"":String.prototype.trim.call(t)},n.uuid=0,n.support={},n.expr={},n.noop=function(){},n.map=function(t,e){var r,i,o,s,a=[];if(q(t))for(i=0;i<t.length;i++)null!=(r=e(t[i],i))&&a.push(r);else for(o in t)null!=(r=e(t[o],o))&&a.push(r);return(s=a).length>0?n.fn.concat.apply([],s):s},n.each=function(t,e){var n,r;if(q(t)){for(n=0;n<t.length;n++)if(!1===e.call(t[n],n,t[n]))return t}else for(r in t)if(!1===e.call(t[r],r,t[r]))return t;return t},n.grep=function(t,e){return u.call(t,e)},t.JSON&&(n.parseJSON=JSON.parse),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),(function(t,e){A["[object "+e+"]"]=e.toLowerCase()})),n.fn={constructor:T.Z,length:0,forEach:s.forEach,reduce:s.reduce,push:s.push,sort:s.sort,splice:s.splice,indexOf:s.indexOf,concat:function(){var t,e,n=[];for(t=0;t<arguments.length;t++)e=arguments[t],n[t]=T.isZ(e)?e.toArray():e;return a.apply(T.isZ(this)?this.toArray():this,n)},map:function(t){return n(n.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return n(c.apply(this,arguments))},ready:function(t){return S.test(l.readyState)&&l.body?t(n):l.addEventListener("DOMContentLoaded",(function(){t(n)}),!1),this},get:function(t){return void 0===t?c.call(this):this[t>=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(t){return s.every.call(this,(function(e,n){return!1!==t.call(e,n,e)})),this},filter:function(t){return I(t)?this.not(this.not(t)):n(u.call(this,(function(e){return T.matches(e,t)})))},add:function(t,e){return n(o(this.concat(n(t,e))))},is:function(t){return this.length>0&&T.matches(this[0],t)},not:function(t){var e=[];if(I(t)&&void 0!==t.call)this.each((function(n){t.call(this,n)||e.push(this)}));else{var r="string"==typeof t?this.filter(t):q(t)&&I(t.item)?c.call(t):n(t);this.forEach((function(t){r.indexOf(t)<0&&e.push(t)}))}return n(e)},has:function(t){return this.filter((function(){return P(t)?n.contains(this,t):n(this).find(t).size()}))},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!P(t)?t:n(t)},last:function(){var t=this[this.length-1];return t&&!P(t)?t:n(t)},find:function(t){var e=this;return t?"object"==typeof t?n(t).filter((function(){var t=this;return s.some.call(e,(function(e){return n.contains(e,t)}))})):1==this.length?n(T.qsa(this[0],t)):this.map((function(){return T.qsa(this,t)})):n()},closest:function(t,e){var r=[],i="object"==typeof t&&n(t);return this.each((function(n,o){for(;o&&!(i?i.indexOf(o)>=0:T.matches(o,t));)o=o!==e&&!R(o)&&o.parentNode;o&&r.indexOf(o)<0&&r.push(o)})),n(r)},parents:function(t){for(var e=[],r=this;r.length>0;)r=n.map(r,(function(t){if((t=t.parentNode)&&!R(t)&&e.indexOf(t)<0)return e.push(t),t}));return U(e,t)},parent:function(t){return U(o(this.pluck("parentNode")),t)},children:function(t){return U(this.map((function(){return F(this)})),t)},contents:function(){return this.map((function(){return this.contentDocument||c.call(this.childNodes)}))},siblings:function(t){return U(this.map((function(t,e){return u.call(F(e.parentNode),(function(t){return t!==e}))})),t)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(t){return n.map(this,(function(e){return e[t]}))},show:function(){return this.each((function(){var t,e,n;"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=(t=this.nodeName,h[t]||(e=l.createElement(t),l.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),h[t]=n),h[t]))}))},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=I(t);if(this[0]&&!e)var r=n(t).get(0),i=r.parentNode||this.length>1;return this.each((function(o){n(this).wrapAll(e?t.call(this,o):i?r.cloneNode(!0):r)}))},wrapAll:function(t){if(this[0]){var e;for(n(this[0]).before(t=n(t));(e=t.children()).length;)t=e.first();n(t).append(this)}return this},wrapInner:function(t){var e=I(t);return this.each((function(r){var i=n(this),o=i.contents(),s=e?t.call(this,r):t;o.length?o.wrapAll(s):i.append(s)}))},unwrap:function(){return this.parent().each((function(){n(this).replaceWith(n(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(t){return this.each((function(){var e=n(this);(void 0===t?"none"==e.css("display"):t)?e.show():e.hide()}))},prev:function(t){return n(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return n(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each((function(e){var r=this.innerHTML;n(this).empty().append(V(this,t,e,r))})):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each((function(e){var n=V(this,t,e,this.textContent);this.textContent=null==n?"":""+n})):0 in this?this.pluck("textContent").join(""):null},attr:function(t,n){var r;return"string"!=typeof t||1 in arguments?this.each((function(r){if(1===this.nodeType)if(P(t))for(e in t)K(this,e,t[e]);else K(this,t,V(this,n,r,this.getAttribute(t)))})):0 in this&&1==this[0].nodeType&&null!=(r=this[0].getAttribute(t))?r:void 0},removeAttr:function(t){return this.each((function(){1===this.nodeType&&t.split(" ").forEach((function(t){K(this,t)}),this)}))},prop:function(t,e){return t=k[t]||t,1 in arguments?this.each((function(n){this[t]=V(this,e,n,this[t])})):this[0]&&this[0][t]},removeProp:function(t){return t=k[t]||t,this.each((function(){delete this[t]}))},data:function(t,e){var n="data-"+t.replace(v,"-$1").toLowerCase(),r=1 in arguments?this.attr(n,e):this.attr(n);return null!==r?W(r):void 0},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each((function(e){this.value=V(this,t,e,this.value)}))):this[0]&&(this[0].multiple?n(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each((function(t){var r=n(this),i=V(this,e,t,r.offset()),o=r.offsetParent().offset(),s={top:i.top-o.top,left:i.left-o.left};"static"==r.css("position")&&(s.position="relative"),r.css(s)}));if(!this.length)return null;if(l.documentElement!==this[0]&&!n.contains(l.documentElement,this[0]))return{top:0,left:0};var r=this[0].getBoundingClientRect();return{left:r.left+t.pageXOffset,top:r.top+t.pageYOffset,width:Math.round(r.width),height:Math.round(r.height)}},css:function(t,r){if(arguments.length<2){var o=this[0];if("string"==typeof t){if(!o)return;return o.style[i(t)]||getComputedStyle(o,"").getPropertyValue(t)}if(N(t)){if(!o)return;var s={},a=getComputedStyle(o,"");return n.each(t,(function(t,e){s[e]=o.style[i(e)]||a.getPropertyValue(e)})),s}}var u="";if("string"==j(t))r||0===r?u=$(t)+":"+H(t,r):this.each((function(){this.style.removeProperty($(t))}));else for(e in t)t[e]||0===t[e]?u+=$(e)+":"+H(e,t[e])+";":this.each((function(){this.style.removeProperty($(e))}));return this.each((function(){this.style.cssText+=";"+u}))},index:function(t){return t?this.indexOf(n(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&s.some.call(this,(function(t){return this.test(J(t))}),M(t))},addClass:function(t){return t?this.each((function(e){if("className"in this){r=[];var i=J(this);V(this,t,e,i).split(/\s+/g).forEach((function(t){n(this).hasClass(t)||r.push(t)}),this),r.length&&J(this,i+(i?" ":"")+r.join(" "))}})):this},removeClass:function(t){return this.each((function(e){if("className"in this){if(void 0===t)return J(this,"");r=J(this),V(this,t,e,r).split(/\s+/g).forEach((function(t){r=r.replace(M(t)," ")})),J(this,r.trim())}}))},toggleClass:function(t,e){return t?this.each((function(r){var i=n(this);V(this,t,r,J(this)).split(/\s+/g).forEach((function(t){(void 0===e?!i.hasClass(t):e)?i.addClass(t):i.removeClass(t)}))})):this},scrollTop:function(t){if(this.length){var e="scrollTop"in this[0];return void 0===t?e?this[0].scrollTop:this[0].pageYOffset:this.each(e?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var e="scrollLeft"in this[0];return void 0===t?e?this[0].scrollLeft:this[0].pageXOffset:this.each(e?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),r=this.offset(),i=y.test(e[0].nodeName)?{top:0,left:0}:e.offset();return r.top-=parseFloat(n(t).css("margin-top"))||0,r.left-=parseFloat(n(t).css("margin-left"))||0,i.top+=parseFloat(n(e[0]).css("border-top-width"))||0,i.left+=parseFloat(n(e[0]).css("border-left-width"))||0,{top:r.top-i.top,left:r.left-i.left}}},offsetParent:function(){return this.map((function(){for(var t=this.offsetParent||l.body;t&&!y.test(t.nodeName)&&"static"==n(t).css("position");)t=t.offsetParent;return t}))}},n.fn.detach=n.fn.remove,["width","height"].forEach((function(t){var e=t.replace(/./,(function(t){return t[0].toUpperCase()}));n.fn[t]=function(r){var i,o=this[0];return void 0===r?L(o)?o["inner"+e]:R(o)?o.documentElement["scroll"+e]:(i=this.offset())&&i[t]:this.each((function(e){(o=n(this)).css(t,V(this,r,e,o[t]()))}))}})),["after","prepend","before","append"].forEach((function(e,r){var i=r%2;n.fn[e]=function(){var e,o,s=n.map(arguments,(function(t){var r=[];return"array"==(e=j(t))?(t.forEach((function(t){return void 0!==t.nodeType?r.push(t):n.zepto.isZ(t)?r=r.concat(t.get()):void(r=r.concat(T.fragment(t)))})),r):"object"==e||null==t?t:T.fragment(t)})),a=this.length>1;return s.length<1?this:this.each((function(e,u){o=i?u:u.parentNode,u=0==r?u.nextSibling:1==r?u.firstChild:2==r?u:null;var c=n.contains(l.documentElement,o);s.forEach((function(e){if(a)e=e.cloneNode(!0);else if(!o)return n(e).remove();o.insertBefore(e,u),c&&Q(e,(function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}}))}))}))},n.fn[i?e+"To":"insert"+(r?"Before":"After")]=function(t){return n(t)[e](this),this}})),T.Z.prototype=z.prototype=n.fn,T.uniq=o,T.deserializeValue=W,n.zepto=T,n}();return function(e){var n=1,r=Array.prototype.slice,i=e.isFunction,o=function(t){return"string"==typeof t},s={},a={},u="onfocusin"in t,c={focus:"focusin",blur:"focusout"},l={mouseenter:"mouseover",mouseleave:"mouseout"};function h(t){return t._zid||(t._zid=n++)}function f(t,e,n,r){if((e=p(e)).ns)var i=(o=e.ns,new RegExp("(?:^| )"+o.replace(" "," .* ?")+"(?: |$)"));var o;return(s[h(t)]||[]).filter((function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||i.test(t.ns))&&(!n||h(t.fn)===h(n))&&(!r||t.sel==r)}))}function p(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function d(t,e){return t.del&&!u&&t.e in c||!!e}function g(t){return l[t]||u&&c[t]||t}function m(t,n,r,i,o,a,u){var c=h(t),f=s[c]||(s[c]=[]);n.split(/\s/).forEach((function(n){if("ready"==n)return e(document).ready(r);var s=p(n);s.fn=r,s.sel=o,s.e in l&&(r=function(t){var n=t.relatedTarget;if(!n||n!==this&&!e.contains(this,n))return s.fn.apply(this,arguments)}),s.del=a;var c=a||r;s.proxy=function(e){if(!(e=x(e)).isImmediatePropagationStopped()){try{var n=Object.getOwnPropertyDescriptor(e,"data");n&&!n.writable||(e.data=i)}catch(e){}var r=c.apply(t,null==e._args?[e]:[e].concat(e._args));return!1===r&&(e.preventDefault(),e.stopPropagation()),r}},s.i=f.length,f.push(s),"addEventListener"in t&&t.addEventListener(g(s.e),s.proxy,d(s,u))}))}function y(t,e,n,r,i){var o=h(t);(e||"").split(/\s/).forEach((function(e){f(t,e,n,r).forEach((function(e){delete s[o][e.i],"removeEventListener"in t&&t.removeEventListener(g(e.e),e.proxy,d(e,i))}))}))}a.click=a.mousedown=a.mouseup=a.mousemove="MouseEvents",e.event={add:m,remove:y},e.proxy=function(t,n){var s=2 in arguments&&r.call(arguments,2);if(i(t)){var a=function(){return t.apply(n,s?s.concat(r.call(arguments)):arguments)};return a._zid=h(t),a}if(o(n))return s?(s.unshift(t[n],t),e.proxy.apply(null,s)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var v=function(){return!0},b=function(){return!1},w=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,_={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function x(t,n){return!n&&t.isDefaultPrevented||(n||(n=t),e.each(_,(function(e,r){var i=n[e];t[e]=function(){return this[r]=v,i&&i.apply(n,arguments)},t[r]=b})),t.timeStamp||(t.timeStamp=Date.now()),(void 0!==n.defaultPrevented?n.defaultPrevented:"returnValue"in n?!1===n.returnValue:n.getPreventDefault&&n.getPreventDefault())&&(t.isDefaultPrevented=v)),t}function S(t){var e,n={originalEvent:t};for(e in t)w.test(e)||void 0===t[e]||(n[e]=t[e]);return x(n,t)}e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,n,s,a,u){var c,l,h=this;return t&&!o(t)?(e.each(t,(function(t,e){h.on(t,n,s,e,u)})),h):(o(n)||i(a)||!1===a||(a=s,s=n,n=void 0),void 0!==a&&!1!==s||(a=s,s=void 0),!1===a&&(a=b),h.each((function(i,o){u&&(c=function(t){return y(o,t.type,a),a.apply(this,arguments)}),n&&(l=function(t){var i,s=e(t.target).closest(n,o).get(0);if(s&&s!==o)return i=e.extend(S(t),{currentTarget:s,liveFired:o}),(c||a).apply(s,[i].concat(r.call(arguments,1)))}),m(o,t,a,s,n,l||c)})))},e.fn.off=function(t,n,r){var s=this;return t&&!o(t)?(e.each(t,(function(t,e){s.off(t,n,e)})),s):(o(n)||i(r)||!1===r||(r=n,n=void 0),!1===r&&(r=b),s.each((function(){y(this,t,r,n)})))},e.fn.trigger=function(t,n){return(t=o(t)||e.isPlainObject(t)?e.Event(t):x(t))._args=n,this.each((function(){t.type in c&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)}))},e.fn.triggerHandler=function(t,n){var r,i;return this.each((function(s,a){(r=S(o(t)?e.Event(t):t))._args=n,r.target=a,e.each(f(a,t.type||t),(function(t,e){if(i=e.proxy(r),r.isImmediatePropagationStopped())return!1}))})),i},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach((function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}})),e.Event=function(t,e){o(t)||(t=(e=t).type);var n=document.createEvent(a[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),x(n)}}(r),n=[],r.fn.remove=function(){return this.each((function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",e&&clearTimeout(e),e=setTimeout((function(){n=[]}),6e4)),this.parentNode.removeChild(this))}))},function(t){var e={},n=t.fn.data,r=t.camelCase,i=t.expando="Zepto"+ +new Date,o=[];function s(n,s,a){var u=n[i]||(n[i]=++t.uuid),c=e[u]||(e[u]=function(e){var n={};return t.each(e.attributes||o,(function(e,i){0==i.name.indexOf("data-")&&(n[r(i.name.replace("data-",""))]=t.zepto.deserializeValue(i.value))})),n}(n));return void 0!==s&&(c[r(s)]=a),c}t.fn.data=function(o,a){return void 0===a?t.isPlainObject(o)?this.each((function(e,n){t.each(o,(function(t,e){s(n,t,e)}))})):0 in this?function(o,a){var u=o[i],c=u&&e[u];if(void 0===a)return c||s(o);if(c){if(a in c)return c[a];var l=r(a);if(l in c)return c[l]}return n.call(t(o),a)}(this[0],o):void 0:this.each((function(){s(this,o,a)}))},t.data=function(e,n,r){return t(e).data(n,r)},t.hasData=function(n){var r=n[i],o=r&&e[r];return!!o&&!t.isEmptyObject(o)},t.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each((function(){var o=this[i],s=o&&e[o];s&&t.each(n||s,(function(t){delete s[n?r(this):t]}))}))},["remove","empty"].forEach((function(e){var n=t.fn[e];t.fn[e]=function(){var t=this.find("*");return"remove"===e&&(t=t.add(this)),t.removeData(),n.call(this)}}))}(r),r}(n)},function(t,e,n){"use strict";var r=n(0),i=n(1);function o(t){t&&t.el||r.error("EventBus initialized without el"),this.$el=i.element(t.el)}r.mixin(o.prototype,{trigger:function(t,e,n,i){var o=r.Event("autocomplete:"+t);return this.$el.trigger(o,[e,n,i]),o}}),t.exports=o},function(t,e,n){"use strict";t.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(t,e){t.exports="0.36.0"},function(t,e,n){"use strict";t.exports=function(t){var e=t.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(e)return[e[1],e[2],e[3]]}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=n(15),o=(r=i)&&r.__esModule?r:{default:r};e.default=o.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default="2.6.3"},function(t,e,n){"use strict";var r,i=n(23),o=(r=i)&&r.__esModule?r:{default:r};t.exports=o.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=s(n(24)),i=s(n(25)),o=s(n(21));function s(t){return t&&t.__esModule?t:{default:t}}var a=(0,r.default)(i.default);a.version=o.default,e.default=a},function(t,e,n){"use strict";var r=Function.prototype.bind;t.exports=function(t){var e=function(){for(var e=arguments.length,n=Array(e),i=0;i<e;i++)n[i]=arguments[i];return new(r.apply(t,[null].concat(n)))};return e.__proto__=t,e.prototype=t.prototype,e}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=f(n(26)),s=f(n(29)),a=f(n(49)),u=f(n(64)),c=f(n(65)),l=f(n(21)),h=f(n(20));function f(t){return t&&t.__esModule?t:{default:t}}var p=function(){function t(e){var n=e.apiKey,i=e.indexName,o=e.inputSelector,c=e.appId,f=void 0===c?"BH4D9OD16A":c,p=e.debug,d=void 0!==p&&p,g=e.algoliaOptions,m=void 0===g?{}:g,y=e.queryDataCallback,v=void 0===y?null:y,b=e.autocompleteOptions,w=void 0===b?{debug:!1,hint:!1,autoselect:!0}:b,_=e.transformData,x=void 0!==_&&_,S=e.queryHook,C=void 0!==S&&S,A=e.handleSelected,E=void 0!==A&&A,T=e.enhancedSearchInput,O=void 0!==T&&T,k=e.layout,N=void 0===k?"collumns":k;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),t.checkArguments({apiKey:n,indexName:i,inputSelector:o,debug:d,algoliaOptions:m,queryDataCallback:v,autocompleteOptions:w,transformData:x,queryHook:C,handleSelected:E,enhancedSearchInput:O,layout:N}),this.apiKey=n,this.appId=f,this.indexName=i,this.input=t.getInputFromSelector(o),this.algoliaOptions=r({hitsPerPage:5},m),this.queryDataCallback=v||null;var j=!(!w||!w.debug)&&w.debug;w.debug=d||j,this.autocompleteOptions=w,this.autocompleteOptions.cssClasses=this.autocompleteOptions.cssClasses||{},this.autocompleteOptions.cssClasses.prefix=this.autocompleteOptions.cssClasses.prefix||"ds";var I=this.input&&"function"==typeof this.input.attr&&this.input.attr("aria-label");this.autocompleteOptions.ariaLabel=this.autocompleteOptions.ariaLabel||I||"search input",this.isSimpleLayout="simple"===N,this.client=(0,s.default)(this.appId,this.apiKey),this.client.addAlgoliaAgent("docsearch.js "+l.default),O&&(this.input=t.injectSearchBox(this.input)),this.autocomplete=(0,a.default)(this.input,w,[{source:this.getAutocompleteSource(x,C),templates:{suggestion:t.getSuggestionTemplate(this.isSimpleLayout),footer:u.default.footer,empty:t.getEmptyTemplate()}}]);var L=E;this.handleSelected=L||this.handleSelected,L&&(0,h.default)(".algolia-autocomplete").on("click",".ds-suggestions a",(function(t){t.preventDefault()})),this.autocomplete.on("autocomplete:selected",this.handleSelected.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input)),O&&t.bindSearchBoxEvent()}return i(t,[{key:"getAutocompleteSource",value:function(e,n){var r=this;return function(i,o){n&&(i=n(i)||i),r.client.search([{indexName:r.indexName,query:i,params:r.algoliaOptions}]).then((function(n){r.queryDataCallback&&"function"==typeof r.queryDataCallback&&r.queryDataCallback(n);var i=n.results[0].hits;e&&(i=e(i)||i),o(t.formatHits(i))}))}}},{key:"handleSelected",value:function(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};"click"!==i.selectionMethod&&(t.setVal(""),window.location.assign(n.url))}},{key:"handleShown",value:function(t){var e=t.offset().left+t.width()/2,n=(0,h.default)(document).width()/2;isNaN(n)&&(n=900);var r=e-n>=0?"algolia-autocomplete-right":"algolia-autocomplete-left",i=e-n<0?"algolia-autocomplete-right":"algolia-autocomplete-left",o=(0,h.default)(".algolia-autocomplete");o.hasClass(r)||o.addClass(r),o.hasClass(i)&&o.removeClass(i)}}],[{key:"checkArguments",value:function(e){if(!e.apiKey||!e.indexName)throw new Error("Usage:\n documentationSearch({\n apiKey,\n indexName,\n inputSelector,\n [ appId ],\n [ algoliaOptions.{hitsPerPage} ]\n [ autocompleteOptions.{hint,debug} ]\n})");if("string"!=typeof e.inputSelector)throw new Error("Error: inputSelector:"+e.inputSelector+" must be a string. Each selector must match only one element and separated by ','");if(!t.getInputFromSelector(e.inputSelector))throw new Error("Error: No input element in the page matches "+e.inputSelector)}},{key:"injectSearchBox",value:function(t){t.before(u.default.searchBox);var e=t.prev().prev().find("input");return t.remove(),e}},{key:"bindSearchBoxEvent",value:function(){(0,h.default)('.searchbox [type="reset"]').on("click",(function(){(0,h.default)("input#docsearch").focus(),(0,h.default)(this).addClass("hide"),a.default.autocomplete.setVal("")})),(0,h.default)("input#docsearch").on("keyup",(function(){var t=document.querySelector("input#docsearch"),e=document.querySelector('.searchbox [type="reset"]');e.className="searchbox__reset",0===t.value.length&&(e.className+=" hide")}))}},{key:"getInputFromSelector",value:function(t){var e=(0,h.default)(t).filter("input");return e.length?(0,h.default)(e[0]):null}},{key:"formatHits",value:function(e){var n=c.default.deepClone(e).map((function(t){return t._highlightResult&&(t._highlightResult=c.default.mergeKeyWithParent(t._highlightResult,"hierarchy")),c.default.mergeKeyWithParent(t,"hierarchy")})),r=c.default.groupBy(n,"lvl0");return h.default.each(r,(function(t,e){var n=c.default.groupBy(e,"lvl1"),i=c.default.flattenAndFlagFirst(n,"isSubCategoryHeader");r[t]=i})),(r=c.default.flattenAndFlagFirst(r,"isCategoryHeader")).map((function(e){var n=t.formatURL(e),r=c.default.getHighlightedValue(e,"lvl0"),i=c.default.getHighlightedValue(e,"lvl1")||r,o=c.default.compact([c.default.getHighlightedValue(e,"lvl2")||i,c.default.getHighlightedValue(e,"lvl3"),c.default.getHighlightedValue(e,"lvl4"),c.default.getHighlightedValue(e,"lvl5"),c.default.getHighlightedValue(e,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> › </span>'),s=c.default.getSnippetedValue(e,"content"),a=i&&""!==i||o&&""!==o,u=o&&""!==o&&o!==i,l=!u&&i&&""!==i&&i!==r;return{isLvl0:!l&&!u,isLvl1:l,isLvl2:u,isLvl1EmptyOrDuplicate:!i||""===i||i===r,isCategoryHeader:e.isCategoryHeader,isSubCategoryHeader:e.isSubCategoryHeader,isTextOrSubcategoryNonEmpty:a,category:r,subcategory:i,title:o,text:s,url:n}}))}},{key:"formatURL",value:function(t){var e=t.url,n=t.anchor;return e?-1!==e.indexOf("#")?e:n?t.url+"#"+t.anchor:e:n?"#"+t.anchor:(console.warn("no anchor nor url for : ",JSON.stringify(t)),null)}},{key:"getEmptyTemplate",value:function(){return function(t){return o.default.compile(u.default.empty).render(t)}}},{key:"getSuggestionTemplate",value:function(t){var e=t?u.default.suggestionSimple:u.default.suggestion,n=o.default.compile(e);return function(t){return n.render(t)}}}]),t}();e.default=p},function(t,e,n){var r=n(27);r.Template=n(28).Template,r.template=r.Template,t.exports=r},function(t,e,n){!function(t){var e=/\S/,n=/\"/g,r=/\n/g,i=/\r/g,o=/\\/g,s=/\u2028/,a=/\u2029/;function u(t){return t.trim?t.trim():t.replace(/^\s*|\s*$/g,"")}function c(t,e,n){if(e.charAt(n)!=t.charAt(0))return!1;for(var r=1,i=t.length;r<i;r++)if(e.charAt(n+r)!=t.charAt(r))return!1;return!0}t.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},t.scan=function(n,r){var i,o=n.length,s=0,a=null,l=null,h="",f=[],p=!1,d=0,g=0,m="{{",y="}}";function v(){h.length>0&&(f.push({tag:"_t",text:new String(h)}),h="")}function b(n,r){if(v(),n&&function(){for(var n=!0,r=g;r<f.length;r++)if(!(n=t.tags[f[r].tag]<t.tags._v||"_t"==f[r].tag&&null===f[r].text.match(e)))return!1;return n}())for(var i,o=g;o<f.length;o++)f[o].text&&((i=f[o+1])&&">"==i.tag&&(i.indent=f[o].text.toString()),f.splice(o,1));else r||f.push({tag:"\n"});p=!1,g=f.length}function w(t,e){var n="="+y,r=t.indexOf(n,e),i=u(t.substring(t.indexOf("=",e)+1,r)).split(" ");return m=i[0],y=i[i.length-1],r+n.length-1}for(r&&(r=r.split(" "),m=r[0],y=r[1]),d=0;d<o;d++)0==s?c(m,n,d)?(--d,v(),s=1):"\n"==n.charAt(d)?b(p):h+=n.charAt(d):1==s?(d+=m.length-1,"="==(a=(l=t.tags[n.charAt(d+1)])?n.charAt(d+1):"_v")?(d=w(n,d),s=0):(l&&d++,s=2),p=d):c(y,n,d)?(f.push({tag:a,n:u(h),otag:m,ctag:y,i:"/"==a?p-m.length:d+y.length}),h="",d+=y.length-1,s=0,"{"==a&&("}}"==y?d++:"}"===(i=f[f.length-1]).n.substr(i.n.length-1)&&(i.n=i.n.substring(0,i.n.length-1)))):h+=n.charAt(d);return b(p,!0),f};var l={_t:!0,"\n":!0,$:!0,"/":!0};function h(t,e){for(var n=0,r=e.length;n<r;n++)if(e[n].o==t.n)return t.tag="#",!0}function f(t,e,n){for(var r=0,i=n.length;r<i;r++)if(n[r].c==t&&n[r].o==e)return!0}function p(t){var e=[];for(var n in t.partials)e.push('"'+g(n)+'":{name:"'+g(t.partials[n].name)+'", '+p(t.partials[n])+"}");return"partials: {"+e.join(",")+"}, subs: "+function(t){var e=[];for(var n in t)e.push('"'+g(n)+'": function(c,p,t,i) {'+t[n]+"}");return"{ "+e.join(",")+" }"}(t.subs)}t.stringify=function(e,n,r){return"{code: function (c,p,i) { "+t.wrapMain(e.code)+" },"+p(e)+"}"};var d=0;function g(t){return t.replace(o,"\\\\").replace(n,'\\"').replace(r,"\\n").replace(i,"\\r").replace(s,"\\u2028").replace(a,"\\u2029")}function m(t){return~t.indexOf(".")?"d":"f"}function y(t,e){var n="<"+(e.prefix||"")+t.n+d++;return e.partials[n]={name:t.n,partials:{}},e.code+='t.b(t.rp("'+g(n)+'",c,p,"'+(t.indent||"")+'"));',n}function v(t,e){e.code+="t.b(t.t(t."+m(t.n)+'("'+g(t.n)+'",c,p,0)));'}function b(t){return"t.b("+t+");"}t.generate=function(e,n,r){d=0;var i={code:"",subs:{},partials:{}};return t.walk(e,i),r.asString?this.stringify(i,n,r):this.makeTemplate(i,n,r)},t.wrapMain=function(t){return'var t=this;t.b(i=i||"");'+t+"return t.fl();"},t.template=t.Template,t.makeTemplate=function(t,e,n){var r=this.makePartials(t);return r.code=new Function("c","p","i",this.wrapMain(t.code)),new this.template(r,e,this,n)},t.makePartials=function(t){var e,n={subs:{},partials:t.partials,name:t.name};for(e in n.partials)n.partials[e]=this.makePartials(n.partials[e]);for(e in t.subs)n.subs[e]=new Function("c","p","t","i",t.subs[e]);return n},t.codegen={"#":function(e,n){n.code+="if(t.s(t."+m(e.n)+'("'+g(e.n)+'",c,p,1),c,p,0,'+e.i+","+e.end+',"'+e.otag+" "+e.ctag+'")){t.rs(c,p,function(c,p,t){',t.walk(e.nodes,n),n.code+="});c.pop();}"},"^":function(e,n){n.code+="if(!t.s(t."+m(e.n)+'("'+g(e.n)+'",c,p,1),c,p,1,0,0,"")){',t.walk(e.nodes,n),n.code+="};"},">":y,"<":function(e,n){var r={partials:{},code:"",subs:{},inPartial:!0};t.walk(e.nodes,r);var i=n.partials[y(e,n)];i.subs=r.subs,i.partials=r.partials},$:function(e,n){var r={subs:{},code:"",partials:n.partials,prefix:e.n};t.walk(e.nodes,r),n.subs[e.n]=r.code,n.inPartial||(n.code+='t.sub("'+g(e.n)+'",c,p,i);')},"\n":function(t,e){e.code+=b('"\\n"'+(t.last?"":" + i"))},_v:function(t,e){e.code+="t.b(t.v(t."+m(t.n)+'("'+g(t.n)+'",c,p,0)));'},_t:function(t,e){e.code+=b('"'+g(t.text)+'"')},"{":v,"&":v},t.walk=function(e,n){for(var r,i=0,o=e.length;i<o;i++)(r=t.codegen[e[i].tag])&&r(e[i],n);return n},t.parse=function(e,n,r){return function e(n,r,i,o){var s,a=[],u=null,c=null;for(s=i[i.length-1];n.length>0;){if(c=n.shift(),s&&"<"==s.tag&&!(c.tag in l))throw new Error("Illegal content in < super tag.");if(t.tags[c.tag]<=t.tags.$||h(c,o))i.push(c),c.nodes=e(n,c.tag,i,o);else{if("/"==c.tag){if(0===i.length)throw new Error("Closing tag without opener: /"+c.n);if(u=i.pop(),c.n!=u.n&&!f(c.n,u.n,o))throw new Error("Nesting error: "+u.n+" vs. "+c.n);return u.end=c.i,a}"\n"==c.tag&&(c.last=0==n.length||"\n"==n[0].tag)}a.push(c)}if(i.length>0)throw new Error("missing closing tag: "+i.pop().n);return a}(e,0,[],(r=r||{}).sectionTags||[])},t.cache={},t.cacheKey=function(t,e){return[t,!!e.asString,!!e.disableLambda,e.delimiters,!!e.modelGet].join("||")},t.compile=function(e,n){n=n||{};var r=t.cacheKey(e,n),i=this.cache[r];if(i){var o=i.partials;for(var s in o)delete o[s].instance;return i}return i=this.generate(this.parse(this.scan(e,n.delimiters),e,n),e,n),this.cache[r]=i}}(e)},function(t,e,n){!function(t){function e(t,e,n){var r;return e&&"object"==typeof e&&(void 0!==e[t]?r=e[t]:n&&e.get&&"function"==typeof e.get&&(r=e.get(t))),r}t.Template=function(t,e,n,r){t=t||{},this.r=t.code||this.r,this.c=n,this.options=r||{},this.text=e||"",this.partials=t.partials||{},this.subs=t.subs||{},this.buf=""},t.Template.prototype={r:function(t,e,n){return""},v:function(t){return t=u(t),a.test(t)?t.replace(n,"&amp;").replace(r,"&lt;").replace(i,"&gt;").replace(o,"&#39;").replace(s,"&quot;"):t},t:u,render:function(t,e,n){return this.ri([t],e||{},n)},ri:function(t,e,n){return this.r(t,e,n)},ep:function(t,e){var n=this.partials[t],r=e[n.name];if(n.instance&&n.base==r)return n.instance;if("string"==typeof r){if(!this.c)throw new Error("No compiler available.");r=this.c.compile(r,this.options)}if(!r)return null;if(this.partials[t].base=r,n.subs){for(key in e.stackText||(e.stackText={}),n.subs)e.stackText[key]||(e.stackText[key]=void 0!==this.activeSub&&e.stackText[this.activeSub]?e.stackText[this.activeSub]:this.text);r=function(t,e,n,r,i,o){function s(){}function a(){}var u;s.prototype=t,a.prototype=t.subs;var c=new s;for(u in c.subs=new a,c.subsText={},c.buf="",r=r||{},c.stackSubs=r,c.subsText=o,e)r[u]||(r[u]=e[u]);for(u in r)c.subs[u]=r[u];for(u in i=i||{},c.stackPartials=i,n)i[u]||(i[u]=n[u]);for(u in i)c.partials[u]=i[u];return c}(r,n.subs,n.partials,this.stackSubs,this.stackPartials,e.stackText)}return this.partials[t].instance=r,r},rp:function(t,e,n,r){var i=this.ep(t,n);return i?i.ri(e,n,r):""},rs:function(t,e,n){var r=t[t.length-1];if(c(r))for(var i=0;i<r.length;i++)t.push(r[i]),n(t,e,this),t.pop();else n(t,e,this)},s:function(t,e,n,r,i,o,s){var a;return(!c(t)||0!==t.length)&&("function"==typeof t&&(t=this.ms(t,e,n,r,i,o,s)),a=!!t,!r&&a&&e&&e.push("object"==typeof t?t:e[e.length-1]),a)},d:function(t,n,r,i){var o,s=t.split("."),a=this.f(s[0],n,r,i),u=this.options.modelGet,l=null;if("."===t&&c(n[n.length-2]))a=n[n.length-1];else for(var h=1;h<s.length;h++)void 0!==(o=e(s[h],a,u))?(l=a,a=o):a="";return!(i&&!a)&&(i||"function"!=typeof a||(n.push(l),a=this.mv(a,n,r),n.pop()),a)},f:function(t,n,r,i){for(var o=!1,s=!1,a=this.options.modelGet,u=n.length-1;u>=0;u--)if(void 0!==(o=e(t,n[u],a))){s=!0;break}return s?(i||"function"!=typeof o||(o=this.mv(o,n,r)),o):!i&&""},ls:function(t,e,n,r,i){var o=this.options.delimiters;return this.options.delimiters=i,this.b(this.ct(u(t.call(e,r)),e,n)),this.options.delimiters=o,!1},ct:function(t,e,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(t,this.options).render(e,n)},b:function(t){this.buf+=t},fl:function(){var t=this.buf;return this.buf="",t},ms:function(t,e,n,r,i,o,s){var a,u=e[e.length-1],c=t.call(u);return"function"==typeof c?!!r||(a=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,u,n,a.substring(i,o),s)):c},mv:function(t,e,n){var r=e[e.length-1],i=t.call(r);return"function"==typeof i?this.ct(u(i.call(r)),r,n):i},sub:function(t,e,n,r){var i=this.subs[t];i&&(this.activeSub=t,i(e,n,this,r),this.activeSub=!1)}};var n=/&/g,r=/</g,i=/>/g,o=/\'/g,s=/\"/g,a=/[&<>\"\']/;function u(t){return String(null==t?"":t)}var c=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}}(e)},function(t,e,n){"use strict";var r=n(30),i=n(41);t.exports=i(r,"(lite) ")},function(t,e,n){t.exports=u;var r=n(5),i=n(31),o=n(32),s=n(38),a=Object({NODE_ENV:"production"}).RESET_APP_DATA_TIMER&&parseInt(Object({NODE_ENV:"production"}).RESET_APP_DATA_TIMER,10)||12e4;function u(t,e,i){var o=n(8)("algoliasearch"),s=n(3),a=n(6),u=n(7),l="Usage: algoliasearch(applicationID, apiKey, opts)";if(!0!==i._allowEmptyCredentials&&!t)throw new r.AlgoliaSearchError("Please provide an application ID. "+l);if(!0!==i._allowEmptyCredentials&&!e)throw new r.AlgoliaSearchError("Please provide an API key. "+l);this.applicationID=t,this.apiKey=e,this.hosts={read:[],write:[]},i=i||{},this._timeouts=i.timeouts||{connect:1e3,read:2e3,write:3e4},i.timeout&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=i.timeout);var h=i.protocol||"https:";if(/:$/.test(h)||(h+=":"),"http:"!==h&&"https:"!==h)throw new r.AlgoliaSearchError("protocol must be `http:` or `https:` (was `"+i.protocol+"`)");if(this._checkAppIdData(),i.hosts)a(i.hosts)?(this.hosts.read=s(i.hosts),this.hosts.write=s(i.hosts)):(this.hosts.read=s(i.hosts.read),this.hosts.write=s(i.hosts.write));else{var f=u(this._shuffleResult,(function(e){return t+"-"+e+".algolianet.com"})),p=(!1===i.dsn?"":"-dsn")+".algolia.net";this.hosts.read=[this.applicationID+p].concat(f),this.hosts.write=[this.applicationID+".algolia.net"].concat(f)}this.hosts.read=u(this.hosts.read,c(h)),this.hosts.write=u(this.hosts.write,c(h)),this.extraHeaders={},this.cache=i._cache||{},this._ua=i._ua,this._useCache=!(void 0!==i._useCache&&!i._cache)||i._useCache,this._useRequestCache=this._useCache&&i._useRequestCache,this._useFallback=void 0===i.useFallback||i.useFallback,this._setTimeout=i._setTimeout,o("init done, %j",this)}function c(t){return function(e){return t+"//"+e.toLowerCase()}}function l(t){if(void 0===Array.prototype.toJSON)return JSON.stringify(t);var e=Array.prototype.toJSON;delete Array.prototype.toJSON;var n=JSON.stringify(t);return Array.prototype.toJSON=e,n}function h(t){var e={};for(var n in t){var r;Object.prototype.hasOwnProperty.call(t,n)&&(r="x-algolia-api-key"===n||"x-algolia-application-id"===n?"**hidden for security purposes**":t[n],e[n]=r)}return e}u.prototype.initIndex=function(t){return new o(this,t)},u.prototype.setExtraHeader=function(t,e){this.extraHeaders[t.toLowerCase()]=e},u.prototype.getExtraHeader=function(t){return this.extraHeaders[t.toLowerCase()]},u.prototype.unsetExtraHeader=function(t){delete this.extraHeaders[t.toLowerCase()]},u.prototype.addAlgoliaAgent=function(t){-1===this._ua.indexOf(";"+t)&&(this._ua+=";"+t)},u.prototype._jsonRequest=function(t){this._checkAppIdData();var e,o,s,a=n(8)("algoliasearch:"+t.url),u=t.additionalUA||"",c=t.cache,f=this,p=0,d=!1,g=f._useFallback&&f._request.fallback&&t.fallback;this.apiKey.length>500&&void 0!==t.body&&(void 0!==t.body.params||void 0!==t.body.requests)?(t.body.apiKey=this.apiKey,s=this._computeRequestHeaders({additionalUA:u,withApiKey:!1,headers:t.headers})):s=this._computeRequestHeaders({additionalUA:u,headers:t.headers}),void 0!==t.body&&(e=l(t.body)),a("request start");var m=[];function y(t,e,n){return f._useCache&&t&&e&&void 0!==e[n]}function v(e,n){if(y(f._useRequestCache,c,o)&&e.catch((function(){delete c[o]})),"function"!=typeof t.callback)return e.then(n);e.then((function(e){i((function(){t.callback(null,n(e))}),f._setTimeout||setTimeout)}),(function(e){i((function(){t.callback(e)}),f._setTimeout||setTimeout)}))}if(f._useCache&&f._useRequestCache&&(o=t.url),f._useCache&&f._useRequestCache&&e&&(o+="_body_"+e),y(f._useRequestCache,c,o)){a("serving request from cache");var b=c[o];return v("function"!=typeof b.then?f._promise.resolve({responseText:b}):b,(function(t){return JSON.parse(t.responseText)}))}var w=function n(i,v){f._checkAppIdData();var b=new Date;if(f._useCache&&!f._useRequestCache&&(o=t.url),f._useCache&&!f._useRequestCache&&e&&(o+="_body_"+v.body),y(!f._useRequestCache,c,o)){a("serving response from cache");var w=c[o];return f._promise.resolve({body:JSON.parse(w),responseText:w})}if(p>=f.hosts[t.hostType].length)return!g||d?(a("could not get any response"),f._promise.reject(new r.AlgoliaSearchError("Cannot connect to the AlgoliaSearch API. Send an email to [email protected] to report and resolve the issue. Application id was: "+f.applicationID,{debugData:m}))):(a("switching to fallback"),p=0,v.method=t.fallback.method,v.url=t.fallback.url,v.jsonBody=t.fallback.body,v.jsonBody&&(v.body=l(v.jsonBody)),s=f._computeRequestHeaders({additionalUA:u,headers:t.headers}),v.timeouts=f._getTimeoutsForRequest(t.hostType),f._setHostIndexByType(0,t.hostType),d=!0,n(f._request.fallback,v));var _=f._getHostByType(t.hostType),x=_+v.url,S={body:v.body,jsonBody:v.jsonBody,method:v.method,headers:s,timeouts:v.timeouts,debug:a,forceAuthHeaders:v.forceAuthHeaders};return a("method: %s, url: %s, headers: %j, timeouts: %d",S.method,x,S.headers,S.timeouts),i===f._request.fallback&&a("using fallback"),i.call(f,x,S).then((function(t){var n=t&&t.body&&t.body.message&&t.body.status||t.statusCode||t&&t.body&&200;a("received response: statusCode: %s, computed statusCode: %d, headers: %j",t.statusCode,n,t.headers);var i=2===Math.floor(n/100),u=new Date;if(m.push({currentHost:_,headers:h(s),content:e||null,contentLength:void 0!==e?e.length:null,method:v.method,timeouts:v.timeouts,url:v.url,startTime:b,endTime:u,duration:u-b,statusCode:n}),i)return f._useCache&&!f._useRequestCache&&c&&(c[o]=t.responseText),{responseText:t.responseText,body:t.body};if(4!==Math.floor(n/100))return p+=1,C();a("unrecoverable error");var l=new r.AlgoliaSearchError(t.body&&t.body.message,{debugData:m,statusCode:n});return f._promise.reject(l)}),(function(o){a("error: %s, stack: %s",o.message,o.stack);var u=new Date;return m.push({currentHost:_,headers:h(s),content:e||null,contentLength:void 0!==e?e.length:null,method:v.method,timeouts:v.timeouts,url:v.url,startTime:b,endTime:u,duration:u-b}),o instanceof r.AlgoliaSearchError||(o=new r.Unknown(o&&o.message,o)),p+=1,o instanceof r.Unknown||o instanceof r.UnparsableJSON||p>=f.hosts[t.hostType].length&&(d||!g)?(o.debugData=m,f._promise.reject(o)):o instanceof r.RequestTimeout?(a("retrying request with higher timeout"),f._incrementHostIndex(t.hostType),f._incrementTimeoutMultipler(),v.timeouts=f._getTimeoutsForRequest(t.hostType),n(i,v)):C()}));function C(){return a("retrying request"),f._incrementHostIndex(t.hostType),n(i,v)}}(f._request,{url:t.url,method:t.method,body:e,jsonBody:t.body,timeouts:f._getTimeoutsForRequest(t.hostType),forceAuthHeaders:t.forceAuthHeaders});return f._useCache&&f._useRequestCache&&c&&(c[o]=w),v(w,(function(t){return t.body}))},u.prototype._getSearchParams=function(t,e){if(null==t)return e;for(var n in t)null!==n&&void 0!==t[n]&&t.hasOwnProperty(n)&&(e+=""===e?"":"&",e+=n+"="+encodeURIComponent("[object Array]"===Object.prototype.toString.call(t[n])?l(t[n]):t[n]));return e},u.prototype._computeRequestHeaders=function(t){var e=n(2),r={"x-algolia-agent":t.additionalUA?this._ua+";"+t.additionalUA:this._ua,"x-algolia-application-id":this.applicationID};return!1!==t.withApiKey&&(r["x-algolia-api-key"]=this.apiKey),this.userToken&&(r["x-algolia-usertoken"]=this.userToken),this.securityTags&&(r["x-algolia-tagfilters"]=this.securityTags),e(this.extraHeaders,(function(t,e){r[e]=t})),t.headers&&e(t.headers,(function(t,e){r[e]=t})),r},u.prototype.search=function(t,e,r){var i=n(6),o=n(7);if(!i(t))throw new Error("Usage: client.search(arrayOfQueries[, callback])");"function"==typeof e?(r=e,e={}):void 0===e&&(e={});var s=this,a={requests:o(t,(function(t){var e="";return void 0!==t.query&&(e+="query="+encodeURIComponent(t.query)),{indexName:t.indexName,params:s._getSearchParams(t.params,e)}}))},u=o(a.requests,(function(t,e){return e+"="+encodeURIComponent("/1/indexes/"+encodeURIComponent(t.indexName)+"?"+t.params)})).join("&");return void 0!==e.strategy&&(a.strategy=e.strategy),this._jsonRequest({cache:this.cache,method:"POST",url:"/1/indexes/*/queries",body:a,hostType:"read",fallback:{method:"GET",url:"/1/indexes/*",body:{params:u}},callback:r})},u.prototype.searchForFacetValues=function(t){var e=n(6),r=n(7),i="Usage: client.searchForFacetValues([{indexName, params: {facetName, facetQuery, ...params}}, ...queries])";if(!e(t))throw new Error(i);var o=this;return o._promise.all(r(t,(function(t){if(!t||void 0===t.indexName||void 0===t.params.facetName||void 0===t.params.facetQuery)throw new Error(i);var e=n(3),r=n(14),s=t.indexName,a=t.params,u=a.facetName,c=r(e(a),(function(t){return"facetName"===t})),l=o._getSearchParams(c,"");return o._jsonRequest({cache:o.cache,method:"POST",url:"/1/indexes/"+encodeURIComponent(s)+"/facets/"+encodeURIComponent(u)+"/query",hostType:"read",body:{params:l}})})))},u.prototype.setSecurityTags=function(t){if("[object Array]"===Object.prototype.toString.call(t)){for(var e=[],n=0;n<t.length;++n)if("[object Array]"===Object.prototype.toString.call(t[n])){for(var r=[],i=0;i<t[n].length;++i)r.push(t[n][i]);e.push("("+r.join(",")+")")}else e.push(t[n]);t=e.join(",")}this.securityTags=t},u.prototype.setUserToken=function(t){this.userToken=t},u.prototype.clearCache=function(){this.cache={}},u.prototype.setRequestTimeout=function(t){t&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=t)},u.prototype.setTimeouts=function(t){this._timeouts=t},u.prototype.getTimeouts=function(){return this._timeouts},u.prototype._getAppIdData=function(){var t=s.get(this.applicationID);return null!==t&&this._cacheAppIdData(t),t},u.prototype._setAppIdData=function(t){return t.lastChange=(new Date).getTime(),this._cacheAppIdData(t),s.set(this.applicationID,t)},u.prototype._checkAppIdData=function(){var t=this._getAppIdData(),e=(new Date).getTime();return null===t||e-t.lastChange>a?this._resetInitialAppIdData(t):t},u.prototype._resetInitialAppIdData=function(t){var e=t||{};return e.hostIndexes={read:0,write:0},e.timeoutMultiplier=1,e.shuffleResult=e.shuffleResult||function(t){for(var e,n,r=t.length;0!==r;)n=Math.floor(Math.random()*r),e=t[r-=1],t[r]=t[n],t[n]=e;return t}([1,2,3]),this._setAppIdData(e)},u.prototype._cacheAppIdData=function(t){this._hostIndexes=t.hostIndexes,this._timeoutMultiplier=t.timeoutMultiplier,this._shuffleResult=t.shuffleResult},u.prototype._partialAppIdDataUpdate=function(t){var e=n(2),r=this._getAppIdData();return e(t,(function(t,e){r[e]=t})),this._setAppIdData(r)},u.prototype._getHostByType=function(t){return this.hosts[t][this._getHostIndexByType(t)]},u.prototype._getTimeoutMultiplier=function(){return this._timeoutMultiplier},u.prototype._getHostIndexByType=function(t){return this._hostIndexes[t]},u.prototype._setHostIndexByType=function(t,e){var r=n(3)(this._hostIndexes);return r[e]=t,this._partialAppIdDataUpdate({hostIndexes:r}),t},u.prototype._incrementHostIndex=function(t){return this._setHostIndexByType((this._getHostIndexByType(t)+1)%this.hosts[t].length,t)},u.prototype._incrementTimeoutMultipler=function(){var t=Math.max(this._timeoutMultiplier+1,4);return this._partialAppIdDataUpdate({timeoutMultiplier:t})},u.prototype._getTimeoutsForRequest=function(t){return{connect:this._timeouts.connect*this._timeoutMultiplier,complete:this._timeouts[t]*this._timeoutMultiplier}}},function(t,e){t.exports=function(t,e){e(t,0)}},function(t,e,n){var r=n(13),i=n(33),o=n(34);function s(t,e){this.indexName=e,this.as=t,this.typeAheadArgs=null,this.typeAheadValueOption=null,this.cache={}}t.exports=s,s.prototype.clearCache=function(){this.cache={}},s.prototype.search=r("query"),s.prototype.similarSearch=r("similarQuery"),s.prototype.browse=function(t,e,r){var i,o,s=n(35),a=this;0===arguments.length||1===arguments.length&&"function"==typeof arguments[0]?(i=0,r=arguments[0],t=void 0):"number"==typeof arguments[0]?(i=arguments[0],"number"==typeof arguments[1]?o=arguments[1]:"function"==typeof arguments[1]&&(r=arguments[1],o=void 0),t=void 0,e=void 0):"object"==typeof arguments[0]?("function"==typeof arguments[1]&&(r=arguments[1]),e=arguments[0],t=void 0):"string"==typeof arguments[0]&&"function"==typeof arguments[1]&&(r=arguments[1],e=void 0),e=s({},e||{},{page:i,hitsPerPage:o,query:t});var u=this.as._getSearchParams(e,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(a.indexName)+"/browse",body:{params:u},hostType:"read",callback:r})},s.prototype.browseFrom=function(t,e){return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/browse",body:{cursor:t},hostType:"read",callback:e})},s.prototype.searchForFacetValues=function(t,e){var r=n(3),i=n(14);if(void 0===t.facetName||void 0===t.facetQuery)throw new Error("Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])");var o=t.facetName,s=i(r(t),(function(t){return"facetName"===t})),a=this.as._getSearchParams(s,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/facets/"+encodeURIComponent(o)+"/query",hostType:"read",body:{params:a},callback:e})},s.prototype.searchFacet=i((function(t,e){return this.searchForFacetValues(t,e)}),o("index.searchFacet(params[, callback])","index.searchForFacetValues(params[, callback])")),s.prototype._search=function(t,e,n,r){return this.as._jsonRequest({cache:this.cache,method:"POST",url:e||"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:t},hostType:"read",fallback:{method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName),body:{params:t}},callback:n,additionalUA:r})},s.prototype.getObject=function(t,e,n){var r=this;1!==arguments.length&&"function"!=typeof e||(n=e,e=void 0);var i="";if(void 0!==e){i="?attributes=";for(var o=0;o<e.length;++o)0!==o&&(i+=","),i+=e[o]}return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(r.indexName)+"/"+encodeURIComponent(t)+i,hostType:"read",callback:n})},s.prototype.getObjects=function(t,e,r){var i=n(6),o=n(7),s="Usage: index.getObjects(arrayOfObjectIDs[, callback])";if(!i(t))throw new Error(s);var a=this;1!==arguments.length&&"function"!=typeof e||(r=e,e=void 0);var u={requests:o(t,(function(t){var n={indexName:a.indexName,objectID:t};return e&&(n.attributesToRetrieve=e.join(",")),n}))};return this.as._jsonRequest({method:"POST",url:"/1/indexes/*/objects",hostType:"read",body:u,callback:r})},s.prototype.as=null,s.prototype.indexName=null,s.prototype.typeAheadArgs=null,s.prototype.typeAheadValueOption=null},function(t,e){t.exports=function(t,e){var n=!1;return function(){return n||(console.warn(e),n=!0),t.apply(this,arguments)}}},function(t,e){t.exports=function(t,e){var n=t.toLowerCase().replace(/[\.\(\)]/g,"");return"algoliasearch: `"+t+"` was replaced by `"+e+"`. Please see https://github.com/algolia/algoliasearch-client-javascript/wiki/Deprecated#"+n}},function(t,e,n){var r=n(2);t.exports=function t(e){var n=Array.prototype.slice.call(arguments);return r(n,(function(n){for(var r in n)n.hasOwnProperty(r)&&("object"==typeof e[r]&&"object"==typeof n[r]?e[r]=t({},e[r],n[r]):void 0!==n[r]&&(e[r]=n[r]))})),e}},function(t,e,n){"use strict";var r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=Array.prototype.slice,s=n(37),a=Object.prototype.propertyIsEnumerable,u=!a.call({toString:null},"toString"),c=a.call((function(){}),"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],h=function(t){var e=t.constructor;return e&&e.prototype===t},f={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},p=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!f["$"+t]&&r.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{h(window[t])}catch(t){return!0}}catch(t){return!0}return!1}(),d=function(t){var e=null!==t&&"object"==typeof t,n="[object Function]"===i.call(t),o=s(t),a=e&&"[object String]"===i.call(t),f=[];if(!e&&!n&&!o)throw new TypeError("Object.keys called on a non-object");var d=c&&n;if(a&&t.length>0&&!r.call(t,0))for(var g=0;g<t.length;++g)f.push(String(g));if(o&&t.length>0)for(var m=0;m<t.length;++m)f.push(String(m));else for(var y in t)d&&"prototype"===y||!r.call(t,y)||f.push(String(y));if(u)for(var v=function(t){if("undefined"==typeof window||!p)return h(t);try{return h(t)}catch(t){return!1}}(t),b=0;b<l.length;++b)v&&"constructor"===l[b]||!r.call(t,l[b])||f.push(l[b]);return f};d.shim=function(){if(Object.keys){if(!function(){return 2===(Object.keys(arguments)||"").length}(1,2)){var t=Object.keys;Object.keys=function(e){return s(e)?t(o.call(e)):t(e)}}}else Object.keys=d;return Object.keys||d},t.exports=d},function(t,e,n){"use strict";var r=Object.prototype.toString;t.exports=function(t){var e=r.call(t),n="[object Arguments]"===e;return n||(n="[object Array]"!==e&&null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===r.call(t.callee)),n}},function(t,e,n){(function(e){var r,i=n(8)("algoliasearch:src/hostIndexState.js"),o={state:{},set:function(t,e){return this.state[t]=e,this.state[t]},get:function(t){return this.state[t]||null}},s={set:function(t,n){o.set(t,n);try{var r=JSON.parse(e.localStorage["algoliasearch-client-js"]);return r[t]=n,e.localStorage["algoliasearch-client-js"]=JSON.stringify(r),r[t]}catch(e){return a(t,e)}},get:function(t){try{return JSON.parse(e.localStorage["algoliasearch-client-js"])[t]||null}catch(e){return a(t,e)}}};function a(t,n){return i("localStorage failed with",n),function(){try{e.localStorage.removeItem("algoliasearch-client-js")}catch(t){}}(),(r=o).get(t)}function u(t,e){return 1===arguments.length?r.get(t):r.set(t,e)}function c(){try{return"localStorage"in e&&null!==e.localStorage&&(e.localStorage["algoliasearch-client-js"]||e.localStorage.setItem("algoliasearch-client-js",JSON.stringify({})),!0)}catch(t){return!1}}r=c()?s:o,t.exports={get:u,set:u,supportsLocalStorage:c}}).call(e,n(4))},function(t,e,n){var r;function i(t){function n(){if(n.enabled){var t=n,i=+new Date,o=i-(r||i);t.diff=o,t.prev=r,t.curr=i,r=i;for(var s=new Array(arguments.length),a=0;a<s.length;a++)s[a]=arguments[a];s[0]=e.coerce(s[0]),"string"!=typeof s[0]&&s.unshift("%O");var u=0;s[0]=s[0].replace(/%([a-zA-Z%])/g,(function(n,r){if("%%"===n)return n;u++;var i=e.formatters[r];if("function"==typeof i){var o=s[u];n=i.call(t,o),s.splice(u,1),u--}return n})),e.formatArgs.call(t,s);var c=n.log||e.log||console.log.bind(console);c.apply(t,s)}}return n.namespace=t,n.enabled=e.enabled(t),n.useColors=e.useColors(),n.color=function(t){var n,r=0;for(n in t)r=(r<<5)-r+t.charCodeAt(n),r|=0;return e.colors[Math.abs(r)%e.colors.length]}(t),"function"==typeof e.init&&e.init(n),n}(e=t.exports=i.debug=i.default=i).coerce=function(t){return t instanceof Error?t.stack||t.message:t},e.disable=function(){e.enable("")},e.enable=function(t){e.save(t),e.names=[],e.skips=[];for(var n=("string"==typeof t?t:"").split(/[\s,]+/),r=n.length,i=0;i<r;i++)n[i]&&("-"===(t=n[i].replace(/\*/g,".*?"))[0]?e.skips.push(new RegExp("^"+t.substr(1)+"$")):e.names.push(new RegExp("^"+t+"$")))},e.enabled=function(t){var n,r;for(n=0,r=e.skips.length;n<r;n++)if(e.skips[n].test(t))return!1;for(n=0,r=e.names.length;n<r;n++)if(e.names[n].test(t))return!0;return!1},e.humanize=n(40),e.names=[],e.skips=[],e.formatters={}},function(t,e){var n=1e3,r=6e4,i=60*r,o=24*i;function s(t,e,n){if(!(t<e))return t<1.5*e?Math.floor(t/e)+" "+n:Math.ceil(t/e)+" "+n+"s"}t.exports=function(t,e){e=e||{};var a,u=typeof t;if("string"===u&&t.length>0)return function(t){if(!((t=String(t)).length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(e){var s=parseFloat(e[1]);switch((e[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*s;case"days":case"day":case"d":return s*o;case"hours":case"hour":case"hrs":case"hr":case"h":return s*i;case"minutes":case"minute":case"mins":case"min":case"m":return s*r;case"seconds":case"second":case"secs":case"sec":case"s":return s*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return s;default:return}}}}(t);if("number"===u&&!1===isNaN(t))return e.long?s(a=t,o,"day")||s(a,i,"hour")||s(a,r,"minute")||s(a,n,"second")||a+" ms":function(t){return t>=o?Math.round(t/o)+"d":t>=i?Math.round(t/i)+"h":t>=r?Math.round(t/r)+"m":t>=n?Math.round(t/n)+"s":t+"ms"}(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,e,n){"use strict";var r=n(42),i=r.Promise||n(43).Promise;t.exports=function(t,e){var o=n(12),s=n(5),a=n(44),u=n(46),c=n(47);function l(t,e,r){return(r=n(3)(r||{}))._ua=r._ua||l.ua,new f(t,e,r)}e=e||"",l.version=n(48),l.ua="Algolia for vanilla JavaScript "+e+l.version,l.initPlaces=c(l),r.__algolia={debug:n(8),algoliasearch:l};var h={hasXMLHttpRequest:"XMLHttpRequest"in r,hasXDomainRequest:"XDomainRequest"in r};function f(){t.apply(this,arguments)}return h.hasXMLHttpRequest&&(h.cors="withCredentials"in new XMLHttpRequest),o(f,t),f.prototype._request=function(t,e){return new i((function(n,r){if(h.cors||h.hasXDomainRequest){t=a(t,e.headers);var i,o,u=e.body,c=h.cors?new XMLHttpRequest:new XDomainRequest,l=!1;i=setTimeout(f,e.timeouts.connect),c.onprogress=function(){l||p()},"onreadystatechange"in c&&(c.onreadystatechange=function(){!l&&c.readyState>1&&p()}),c.onload=function(){if(!o){var t;clearTimeout(i);try{t={body:JSON.parse(c.responseText),responseText:c.responseText,statusCode:c.status,headers:c.getAllResponseHeaders&&c.getAllResponseHeaders()||{}}}catch(e){t=new s.UnparsableJSON({more:c.responseText})}t instanceof s.UnparsableJSON?r(t):n(t)}},c.onerror=function(t){o||(clearTimeout(i),r(new s.Network({more:t})))},c instanceof XMLHttpRequest?(c.open(e.method,t,!0),e.forceAuthHeaders&&(c.setRequestHeader("x-algolia-application-id",e.headers["x-algolia-application-id"]),c.setRequestHeader("x-algolia-api-key",e.headers["x-algolia-api-key"]))):c.open(e.method,t),h.cors&&(u&&("POST"===e.method?c.setRequestHeader("content-type","application/x-www-form-urlencoded"):c.setRequestHeader("content-type","application/json")),c.setRequestHeader("accept","application/json")),u?c.send(u):c.send()}else r(new s.Network("CORS not supported"));function f(){o=!0,c.abort(),r(new s.RequestTimeout)}function p(){l=!0,clearTimeout(i),i=setTimeout(f,e.timeouts.complete)}}))},f.prototype._request.fallback=function(t,e){return t=a(t,e.headers),new i((function(n,r){u(t,e,(function(t,e){t?r(t):n(e)}))}))},f.prototype._promise={reject:function(t){return i.reject(t)},resolve:function(t){return i.resolve(t)},delay:function(t){return new i((function(e){setTimeout(e,t)}))},all:function(t){return i.all(t)}},l}},function(t,e,n){(function(e){var n;n="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},t.exports=n}).call(e,n(4))},function(t,e,n){(function(e,n){
+var r;r=function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=u(n(1)),s=u(n(3)),a=u(n(4));function u(t){return t&&t.__esModule?t:{default:t}}var c=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return r.resolveOptions(n),r.listenClick(t),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),i(e,[{key:"resolveOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===r(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,a.default)(t,"click",(function(t){return e.onClick(t)}))}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new o.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return l("action",t)}},{key:"defaultTarget",value:function(t){var e=l("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return l("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach((function(t){n=n&&!!document.queryCommandSupported(t)})),n}}]),e}(s.default);function l(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=c},function(t,e,n){"use strict";var r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),s=n(2),a=(r=s)&&r.__esModule?r:{default:r},u=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.resolveOptions(e),this.initSelection()}return o(t,[{key:"resolveOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,a.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,a.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":i(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=u},function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var r=window.getSelection(),i=document.createRange();i.selectNodeContents(t),r.removeAllRanges(),r.addRange(i),e=r.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var r=this.e||(this.e={});return(r[t]||(r[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var r=this;function i(){r.off(t,i),e.apply(n,arguments)}return i._=e,this.on(t,i,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),r=0,i=n.length;r<i;r++)n[r].fn.apply(n[r].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),r=n[t],i=[];if(r&&e)for(var o=0,s=r.length;o<s;o++)r[o].fn!==e&&r[o].fn._!==e&&i.push(r[o]);return i.length?n[t]=i:delete n[t],this}},t.exports=n},function(t,e,n){var r=n(5),i=n(6);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!r.string(e))throw new TypeError("Second argument must be a String");if(!r.fn(n))throw new TypeError("Third argument must be a Function");if(r.node(t))return function(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}(t,e,n);if(r.nodeList(t))return function(t,e,n){return Array.prototype.forEach.call(t,(function(t){t.addEventListener(e,n)})),{destroy:function(){Array.prototype.forEach.call(t,(function(t){t.removeEventListener(e,n)}))}}}(t,e,n);if(r.string(t))return function(t,e,n){return i(document.body,t,e,n)}(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}},function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e,n){var r=n(7);function i(t,e,n,r,i){var s=o.apply(this,arguments);return t.addEventListener(n,s,i),{destroy:function(){t.removeEventListener(n,s,i)}}}function o(t,e,n,i){return function(n){n.delegateTarget=r(n.target,e),n.delegateTarget&&i.call(t,n)}}t.exports=function(t,e,n,r,o){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,(function(t){return i(t,e,n,r,o)})))}},function(t,e){if("undefined"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}}])},t.exports=r()},function(t,e,n){n(7)({appId:"D1BPLZHGYQ",apiKey:"6df94e1e5d55d258c56f60d974d10314",indexName:"hugodocs",inputSelector:"#search-input",debug:!0})},function(t,e,n){
+/*! docsearch 2.6.1 | © Algolia | github.com/algolia/docsearch */
+var r;"undefined"!=typeof self&&self,r=function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=22)}([function(t,e,n){"use strict";var r,i=n(1);function o(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}t.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(t){if(void 0===t&&(t=navigator.userAgent),/(msie|trident)/i.test(t)){var e=t.match(/(msie |rv:)(\d+(.\d+)?)/i);if(e)return e[2]}return!1},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(t){return"number"==typeof t},toStr:function(t){return null==t?"":t+""},cloneDeep:function(t){var e=this.mixin({},t),n=this;return this.each(e,(function(t,r){t&&(n.isArray(t)?e[r]=[].concat(t):n.isObject(t)&&(e[r]=n.cloneDeep(t)))})),e},error:function(t){throw new Error(t)},every:function(t,e){var n=!0;return t?(this.each(t,(function(r,i){if(!(n=e.call(null,r,i,t)))return!1})),!!n):n},any:function(t,e){var n=!1;return t?(this.each(t,(function(r,i){if(e.call(null,r,i,t))return n=!0,!1})),n):n},getUniqueId:(r=0,function(){return r++}),templatify:function(t){if(this.isFunction(t))return t;var e=i.element(t);return"SCRIPT"===e.prop("tagName")?function(){return e.text()}:function(){return String(t)}},defer:function(t){setTimeout(t,0)},noop:function(){},formatPrefix:function(t,e){return e?"":t+"-"},className:function(t,e,n){return(n?"":".")+t+e},escapeHighlightedString:function(t,e,n){e=e||"<em>";var r=document.createElement("div");r.appendChild(document.createTextNode(e)),n=n||"</em>";var i=document.createElement("div");i.appendChild(document.createTextNode(n));var s=document.createElement("div");return s.appendChild(document.createTextNode(t)),s.innerHTML.replace(RegExp(o(r.innerHTML),"g"),e).replace(RegExp(o(i.innerHTML),"g"),n)}}},function(t,e,n){"use strict";t.exports={element:null}},function(t,e){var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString;t.exports=function(t,e,i){if("[object Function]"!==r.call(e))throw new TypeError("iterator must be a function");var o=t.length;if(o===+o)for(var s=0;s<o;s++)e.call(i,t[s],s,t);else for(var a in t)n.call(t,a)&&e.call(i,t[a],a,t)}},function(t,e){t.exports=function(t){return JSON.parse(JSON.stringify(t))}},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";var r=n(12);function i(t,e){var r=n(2),i=this;"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):i.stack=(new Error).stack||"Cannot get a stacktrace, browser is too old",this.name="AlgoliaSearchError",this.message=t||"Unknown error",e&&r(e,(function(t,e){i[e]=t}))}function o(t,e){function n(){var n=Array.prototype.slice.call(arguments,0);"string"!=typeof n[0]&&n.unshift(e),i.apply(this,n),this.name="AlgoliaSearch"+t+"Error"}return r(n,i),n}r(i,Error),t.exports={AlgoliaSearchError:i,UnparsableJSON:o("UnparsableJSON","Could not parse the incoming response as JSON, see err.more for details"),RequestTimeout:o("RequestTimeout","Request timedout before getting a response"),Network:o("Network","Network issue, see err.more for details"),JSONPScriptFail:o("JSONPScriptFail","<script> was loaded but did not call our provided callback"),JSONPScriptError:o("JSONPScriptError","<script> unable to load due to an `error` event on it"),Unknown:o("Unknown","Unknown error occured")}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){var r=n(2);t.exports=function(t,e){var n=[];return r(t,(function(r,i){n.push(e(r,i,t))})),n}},function(t,e,n){(function(r){function i(){var t;try{t=e.storage.debug}catch(t){}return!t&&void 0!==r&&"env"in r&&(t=Object({NODE_ENV:"production"}).DEBUG),t}(e=t.exports=n(39)).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},e.formatArgs=function(t){var n=this.useColors;if(t[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+t[0]+(n?"%c ":" ")+"+"+e.humanize(this.diff),n){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var i=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(function(t){"%%"!==t&&(i++,"%c"===t&&(o=i))})),t.splice(o,0,r)}},e.save=function(t){try{null==t?e.storage.removeItem("debug"):e.storage.debug=t}catch(t){}},e.load=i,e.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type)||("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},e.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),e.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],e.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},e.enable(i())}).call(e,n(9))},function(t,e){var n,r,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(t){r=s}}();var u,c=[],l=!1,h=-1;function f(){l&&u&&(l=!1,u.length?c=u.concat(c):h=-1,c.length&&d())}function d(){if(!l){var t=a(f);l=!0;for(var e=c.length;e;){for(u=c,c=[];++h<e;)u&&u[h].run();h=-1,e=c.length}u=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===s||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function g(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new p(t,e)),1!==c.length||l||a(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(t,e,n){"use strict";var r=n(53),i=/\s+/;function o(t,e,n,r){var o;if(!n)return this;for(e=e.split(i),n=r?function(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}(n,r):n,this._callbacks=this._callbacks||{};o=e.shift();)this._callbacks[o]=this._callbacks[o]||{sync:[],async:[]},this._callbacks[o][t].push(n);return this}function s(t,e,n){return function(){for(var r,i=0,o=t.length;!r&&i<o;i+=1)r=!1===t[i].apply(e,n);return!r}}t.exports={onSync:function(t,e,n){return o.call(this,"sync",t,e,n)},onAsync:function(t,e,n){return o.call(this,"async",t,e,n)},off:function(t){var e;if(!this._callbacks)return this;for(t=t.split(i);e=t.shift();)delete this._callbacks[e];return this},trigger:function(t){var e,n,o,a,u;if(!this._callbacks)return this;for(t=t.split(i),o=[].slice.call(arguments,1);(e=t.shift())&&(n=this._callbacks[e]);)a=s(n.sync,this,[e].concat(o)),u=s(n.async,this,[e].concat(o)),a()&&r(u);return this}}},function(t,e,n){"use strict";var r=n(0),i={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};r.isMsie()&&r.mixin(i.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),r.isMsie()&&r.isMsie()<=7&&r.mixin(i.input,{marginTop:"-1px"}),t.exports=i},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){t.exports=function(t,e){return function(n,i,o){if("function"==typeof n&&"object"==typeof i||"object"==typeof o)throw new r.AlgoliaSearchError("index.search usage is index.search(query, params, cb)");0===arguments.length||"function"==typeof n?(o=n,n=""):1!==arguments.length&&"function"!=typeof i||(o=i,i=void 0),"object"==typeof n&&null!==n?(i=n,n=void 0):null==n&&(n="");var s,a="";return void 0!==n&&(a+=t+"="+encodeURIComponent(n)),void 0!==i&&(i.additionalUA&&(s=i.additionalUA,delete i.additionalUA),a=this.as._getSearchParams(i,a)),this._search(a,e,o,s)}};var r=n(5)},function(t,e,n){t.exports=function(t,e){var r=n(36),i=n(2),o={};return i(r(t),(function(n){!0!==e(n)&&(o[n]=t[n])})),o}},function(t,e){var n;n=window,t.exports=function(t){var e,n,r=function(){var e,n,r,i,o,s=[],a=s.concat,u=s.filter,c=s.slice,l=t.document,h={},f={},d={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},p=/^\s*<(\w+|!)[^>]*>/,g=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,m=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,y=/^(?:body|html)$/i,v=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],w=l.createElement("table"),_=l.createElement("tr"),x={tr:l.createElement("tbody"),tbody:w,thead:w,tfoot:w,td:_,th:_,"*":l.createElement("div")},S=/complete|loaded|interactive/,C=/^[\w-]*$/,A={},E=A.toString,T={},k=l.createElement("div"),O={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},N=Array.isArray||function(t){return t instanceof Array};function j(t){return null==t?String(t):A[E.call(t)]||"object"}function I(t){return"function"==j(t)}function L(t){return null!=t&&t==t.window}function R(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function P(t){return"object"==j(t)}function D(t){return P(t)&&!L(t)&&Object.getPrototypeOf(t)==Object.prototype}function q(t){var e=!!t&&"length"in t&&t.length,r=n.type(t);return"function"!=r&&!L(t)&&("array"==r||0===e||"number"==typeof e&&e>0&&e-1 in t)}function $(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function M(t){return t in f?f[t]:f[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function H(t,e){return"number"!=typeof e||d[$(t)]?e:e+"px"}function F(t){return"children"in t?c.call(t.children):n.map(t.childNodes,(function(t){if(1==t.nodeType)return t}))}function z(t,e){var n,r=t?t.length:0;for(n=0;n<r;n++)this[n]=t[n];this.length=r,this.selector=e||""}function B(t,n,r){for(e in n)r&&(D(n[e])||N(n[e]))?(D(n[e])&&!D(t[e])&&(t[e]={}),N(n[e])&&!N(t[e])&&(t[e]=[]),B(t[e],n[e],r)):void 0!==n[e]&&(t[e]=n[e])}function U(t,e){return null==e?n(t):n(t).filter(e)}function V(t,e,n,r){return I(e)?e.call(t,n,r):e}function K(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function J(t,e){var n=t.className||"",r=n&&void 0!==n.baseVal;if(void 0===e)return r?n.baseVal:n;r?n.baseVal=e:t.className=e}function W(t){try{return t?"true"==t||"false"!=t&&("null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?n.parseJSON(t):t):t}catch(e){return t}}function Q(t,e){e(t);for(var n=0,r=t.childNodes.length;n<r;n++)Q(t.childNodes[n],e)}return T.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=k).appendChild(t),r=~T.qsa(i,e).indexOf(t),o&&k.removeChild(t),r},i=function(t){return t.replace(/-+(.)?/g,(function(t,e){return e?e.toUpperCase():""}))},o=function(t){return u.call(t,(function(e,n){return t.indexOf(e)==n}))},T.fragment=function(t,e,r){var i,o,s;return g.test(t)&&(i=n(l.createElement(RegExp.$1))),i||(t.replace&&(t=t.replace(m,"<$1></$2>")),void 0===e&&(e=p.test(t)&&RegExp.$1),e in x||(e="*"),(s=x[e]).innerHTML=""+t,i=n.each(c.call(s.childNodes),(function(){s.removeChild(this)}))),D(r)&&(o=n(i),n.each(r,(function(t,e){b.indexOf(t)>-1?o[t](e):o.attr(t,e)}))),i},T.Z=function(t,e){return new z(t,e)},T.isZ=function(t){return t instanceof T.Z},T.init=function(t,e){var r,i;if(!t)return T.Z();if("string"==typeof t)if("<"==(t=t.trim())[0]&&p.test(t))r=T.fragment(t,RegExp.$1,e),t=null;else{if(void 0!==e)return n(e).find(t);r=T.qsa(l,t)}else{if(I(t))return n(l).ready(t);if(T.isZ(t))return t;if(N(t))i=t,r=u.call(i,(function(t){return null!=t}));else if(P(t))r=[t],t=null;else if(p.test(t))r=T.fragment(t.trim(),RegExp.$1,e),t=null;else{if(void 0!==e)return n(e).find(t);r=T.qsa(l,t)}}return T.Z(r,t)},(n=function(t,e){return T.init(t,e)}).extend=function(t){var e,n=c.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach((function(n){B(t,n,e)})),t},T.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,s=C.test(o);return t.getElementById&&s&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:c.call(s&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},n.contains=l.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},n.type=j,n.isFunction=I,n.isWindow=L,n.isArray=N,n.isPlainObject=D,n.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},n.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},n.inArray=function(t,e,n){return s.indexOf.call(e,t,n)},n.camelCase=i,n.trim=function(t){return null==t?"":String.prototype.trim.call(t)},n.uuid=0,n.support={},n.expr={},n.noop=function(){},n.map=function(t,e){var r,i,o,s,a=[];if(q(t))for(i=0;i<t.length;i++)null!=(r=e(t[i],i))&&a.push(r);else for(o in t)null!=(r=e(t[o],o))&&a.push(r);return(s=a).length>0?n.fn.concat.apply([],s):s},n.each=function(t,e){var n,r;if(q(t)){for(n=0;n<t.length;n++)if(!1===e.call(t[n],n,t[n]))return t}else for(r in t)if(!1===e.call(t[r],r,t[r]))return t;return t},n.grep=function(t,e){return u.call(t,e)},t.JSON&&(n.parseJSON=JSON.parse),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),(function(t,e){A["[object "+e+"]"]=e.toLowerCase()})),n.fn={constructor:T.Z,length:0,forEach:s.forEach,reduce:s.reduce,push:s.push,sort:s.sort,splice:s.splice,indexOf:s.indexOf,concat:function(){var t,e,n=[];for(t=0;t<arguments.length;t++)e=arguments[t],n[t]=T.isZ(e)?e.toArray():e;return a.apply(T.isZ(this)?this.toArray():this,n)},map:function(t){return n(n.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return n(c.apply(this,arguments))},ready:function(t){return S.test(l.readyState)&&l.body?t(n):l.addEventListener("DOMContentLoaded",(function(){t(n)}),!1),this},get:function(t){return void 0===t?c.call(this):this[t>=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each((function(){null!=this.parentNode&&this.parentNode.removeChild(this)}))},each:function(t){return s.every.call(this,(function(e,n){return!1!==t.call(e,n,e)})),this},filter:function(t){return I(t)?this.not(this.not(t)):n(u.call(this,(function(e){return T.matches(e,t)})))},add:function(t,e){return n(o(this.concat(n(t,e))))},is:function(t){return this.length>0&&T.matches(this[0],t)},not:function(t){var e=[];if(I(t)&&void 0!==t.call)this.each((function(n){t.call(this,n)||e.push(this)}));else{var r="string"==typeof t?this.filter(t):q(t)&&I(t.item)?c.call(t):n(t);this.forEach((function(t){r.indexOf(t)<0&&e.push(t)}))}return n(e)},has:function(t){return this.filter((function(){return P(t)?n.contains(this,t):n(this).find(t).size()}))},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!P(t)?t:n(t)},last:function(){var t=this[this.length-1];return t&&!P(t)?t:n(t)},find:function(t){var e=this;return t?"object"==typeof t?n(t).filter((function(){var t=this;return s.some.call(e,(function(e){return n.contains(e,t)}))})):1==this.length?n(T.qsa(this[0],t)):this.map((function(){return T.qsa(this,t)})):n()},closest:function(t,e){var r=[],i="object"==typeof t&&n(t);return this.each((function(n,o){for(;o&&!(i?i.indexOf(o)>=0:T.matches(o,t));)o=o!==e&&!R(o)&&o.parentNode;o&&r.indexOf(o)<0&&r.push(o)})),n(r)},parents:function(t){for(var e=[],r=this;r.length>0;)r=n.map(r,(function(t){if((t=t.parentNode)&&!R(t)&&e.indexOf(t)<0)return e.push(t),t}));return U(e,t)},parent:function(t){return U(o(this.pluck("parentNode")),t)},children:function(t){return U(this.map((function(){return F(this)})),t)},contents:function(){return this.map((function(){return this.contentDocument||c.call(this.childNodes)}))},siblings:function(t){return U(this.map((function(t,e){return u.call(F(e.parentNode),(function(t){return t!==e}))})),t)},empty:function(){return this.each((function(){this.innerHTML=""}))},pluck:function(t){return n.map(this,(function(e){return e[t]}))},show:function(){return this.each((function(){var t,e,n;"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=(t=this.nodeName,h[t]||(e=l.createElement(t),l.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),h[t]=n),h[t]))}))},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=I(t);if(this[0]&&!e)var r=n(t).get(0),i=r.parentNode||this.length>1;return this.each((function(o){n(this).wrapAll(e?t.call(this,o):i?r.cloneNode(!0):r)}))},wrapAll:function(t){if(this[0]){var e;for(n(this[0]).before(t=n(t));(e=t.children()).length;)t=e.first();n(t).append(this)}return this},wrapInner:function(t){var e=I(t);return this.each((function(r){var i=n(this),o=i.contents(),s=e?t.call(this,r):t;o.length?o.wrapAll(s):i.append(s)}))},unwrap:function(){return this.parent().each((function(){n(this).replaceWith(n(this).children())})),this},clone:function(){return this.map((function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(t){return this.each((function(){var e=n(this);(void 0===t?"none"==e.css("display"):t)?e.show():e.hide()}))},prev:function(t){return n(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return n(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each((function(e){var r=this.innerHTML;n(this).empty().append(V(this,t,e,r))})):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each((function(e){var n=V(this,t,e,this.textContent);this.textContent=null==n?"":""+n})):0 in this?this.pluck("textContent").join(""):null},attr:function(t,n){var r;return"string"!=typeof t||1 in arguments?this.each((function(r){if(1===this.nodeType)if(P(t))for(e in t)K(this,e,t[e]);else K(this,t,V(this,n,r,this.getAttribute(t)))})):0 in this&&1==this[0].nodeType&&null!=(r=this[0].getAttribute(t))?r:void 0},removeAttr:function(t){return this.each((function(){1===this.nodeType&&t.split(" ").forEach((function(t){K(this,t)}),this)}))},prop:function(t,e){return t=O[t]||t,1 in arguments?this.each((function(n){this[t]=V(this,e,n,this[t])})):this[0]&&this[0][t]},removeProp:function(t){return t=O[t]||t,this.each((function(){delete this[t]}))},data:function(t,e){var n="data-"+t.replace(v,"-$1").toLowerCase(),r=1 in arguments?this.attr(n,e):this.attr(n);return null!==r?W(r):void 0},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each((function(e){this.value=V(this,t,e,this.value)}))):this[0]&&(this[0].multiple?n(this[0]).find("option").filter((function(){return this.selected})).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each((function(t){var r=n(this),i=V(this,e,t,r.offset()),o=r.offsetParent().offset(),s={top:i.top-o.top,left:i.left-o.left};"static"==r.css("position")&&(s.position="relative"),r.css(s)}));if(!this.length)return null;if(l.documentElement!==this[0]&&!n.contains(l.documentElement,this[0]))return{top:0,left:0};var r=this[0].getBoundingClientRect();return{left:r.left+t.pageXOffset,top:r.top+t.pageYOffset,width:Math.round(r.width),height:Math.round(r.height)}},css:function(t,r){if(arguments.length<2){var o=this[0];if("string"==typeof t){if(!o)return;return o.style[i(t)]||getComputedStyle(o,"").getPropertyValue(t)}if(N(t)){if(!o)return;var s={},a=getComputedStyle(o,"");return n.each(t,(function(t,e){s[e]=o.style[i(e)]||a.getPropertyValue(e)})),s}}var u="";if("string"==j(t))r||0===r?u=$(t)+":"+H(t,r):this.each((function(){this.style.removeProperty($(t))}));else for(e in t)t[e]||0===t[e]?u+=$(e)+":"+H(e,t[e])+";":this.each((function(){this.style.removeProperty($(e))}));return this.each((function(){this.style.cssText+=";"+u}))},index:function(t){return t?this.indexOf(n(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&s.some.call(this,(function(t){return this.test(J(t))}),M(t))},addClass:function(t){return t?this.each((function(e){if("className"in this){r=[];var i=J(this);V(this,t,e,i).split(/\s+/g).forEach((function(t){n(this).hasClass(t)||r.push(t)}),this),r.length&&J(this,i+(i?" ":"")+r.join(" "))}})):this},removeClass:function(t){return this.each((function(e){if("className"in this){if(void 0===t)return J(this,"");r=J(this),V(this,t,e,r).split(/\s+/g).forEach((function(t){r=r.replace(M(t)," ")})),J(this,r.trim())}}))},toggleClass:function(t,e){return t?this.each((function(r){var i=n(this);V(this,t,r,J(this)).split(/\s+/g).forEach((function(t){(void 0===e?!i.hasClass(t):e)?i.addClass(t):i.removeClass(t)}))})):this},scrollTop:function(t){if(this.length){var e="scrollTop"in this[0];return void 0===t?e?this[0].scrollTop:this[0].pageYOffset:this.each(e?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var e="scrollLeft"in this[0];return void 0===t?e?this[0].scrollLeft:this[0].pageXOffset:this.each(e?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),r=this.offset(),i=y.test(e[0].nodeName)?{top:0,left:0}:e.offset();return r.top-=parseFloat(n(t).css("margin-top"))||0,r.left-=parseFloat(n(t).css("margin-left"))||0,i.top+=parseFloat(n(e[0]).css("border-top-width"))||0,i.left+=parseFloat(n(e[0]).css("border-left-width"))||0,{top:r.top-i.top,left:r.left-i.left}}},offsetParent:function(){return this.map((function(){for(var t=this.offsetParent||l.body;t&&!y.test(t.nodeName)&&"static"==n(t).css("position");)t=t.offsetParent;return t}))}},n.fn.detach=n.fn.remove,["width","height"].forEach((function(t){var e=t.replace(/./,(function(t){return t[0].toUpperCase()}));n.fn[t]=function(r){var i,o=this[0];return void 0===r?L(o)?o["inner"+e]:R(o)?o.documentElement["scroll"+e]:(i=this.offset())&&i[t]:this.each((function(e){(o=n(this)).css(t,V(this,r,e,o[t]()))}))}})),["after","prepend","before","append"].forEach((function(e,r){var i=r%2;n.fn[e]=function(){var e,o,s=n.map(arguments,(function(t){var r=[];return"array"==(e=j(t))?(t.forEach((function(t){return void 0!==t.nodeType?r.push(t):n.zepto.isZ(t)?r=r.concat(t.get()):void(r=r.concat(T.fragment(t)))})),r):"object"==e||null==t?t:T.fragment(t)})),a=this.length>1;return s.length<1?this:this.each((function(e,u){o=i?u:u.parentNode,u=0==r?u.nextSibling:1==r?u.firstChild:2==r?u:null;var c=n.contains(l.documentElement,o);s.forEach((function(e){if(a)e=e.cloneNode(!0);else if(!o)return n(e).remove();o.insertBefore(e,u),c&&Q(e,(function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}}))}))}))},n.fn[i?e+"To":"insert"+(r?"Before":"After")]=function(t){return n(t)[e](this),this}})),T.Z.prototype=z.prototype=n.fn,T.uniq=o,T.deserializeValue=W,n.zepto=T,n}();return function(e){var n=1,r=Array.prototype.slice,i=e.isFunction,o=function(t){return"string"==typeof t},s={},a={},u="onfocusin"in t,c={focus:"focusin",blur:"focusout"},l={mouseenter:"mouseover",mouseleave:"mouseout"};function h(t){return t._zid||(t._zid=n++)}function f(t,e,n,r){if((e=d(e)).ns)var i=(o=e.ns,new RegExp("(?:^| )"+o.replace(" "," .* ?")+"(?: |$)"));var o;return(s[h(t)]||[]).filter((function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||i.test(t.ns))&&(!n||h(t.fn)===h(n))&&(!r||t.sel==r)}))}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function p(t,e){return t.del&&!u&&t.e in c||!!e}function g(t){return l[t]||u&&c[t]||t}function m(t,n,r,i,o,a,u){var c=h(t),f=s[c]||(s[c]=[]);n.split(/\s/).forEach((function(n){if("ready"==n)return e(document).ready(r);var s=d(n);s.fn=r,s.sel=o,s.e in l&&(r=function(t){var n=t.relatedTarget;if(!n||n!==this&&!e.contains(this,n))return s.fn.apply(this,arguments)}),s.del=a;var c=a||r;s.proxy=function(e){if(!(e=x(e)).isImmediatePropagationStopped()){try{var n=Object.getOwnPropertyDescriptor(e,"data");n&&!n.writable||(e.data=i)}catch(e){}var r=c.apply(t,null==e._args?[e]:[e].concat(e._args));return!1===r&&(e.preventDefault(),e.stopPropagation()),r}},s.i=f.length,f.push(s),"addEventListener"in t&&t.addEventListener(g(s.e),s.proxy,p(s,u))}))}function y(t,e,n,r,i){var o=h(t);(e||"").split(/\s/).forEach((function(e){f(t,e,n,r).forEach((function(e){delete s[o][e.i],"removeEventListener"in t&&t.removeEventListener(g(e.e),e.proxy,p(e,i))}))}))}a.click=a.mousedown=a.mouseup=a.mousemove="MouseEvents",e.event={add:m,remove:y},e.proxy=function(t,n){var s=2 in arguments&&r.call(arguments,2);if(i(t)){var a=function(){return t.apply(n,s?s.concat(r.call(arguments)):arguments)};return a._zid=h(t),a}if(o(n))return s?(s.unshift(t[n],t),e.proxy.apply(null,s)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var v=function(){return!0},b=function(){return!1},w=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,_={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function x(t,n){return!n&&t.isDefaultPrevented||(n||(n=t),e.each(_,(function(e,r){var i=n[e];t[e]=function(){return this[r]=v,i&&i.apply(n,arguments)},t[r]=b})),t.timeStamp||(t.timeStamp=Date.now()),(void 0!==n.defaultPrevented?n.defaultPrevented:"returnValue"in n?!1===n.returnValue:n.getPreventDefault&&n.getPreventDefault())&&(t.isDefaultPrevented=v)),t}function S(t){var e,n={originalEvent:t};for(e in t)w.test(e)||void 0===t[e]||(n[e]=t[e]);return x(n,t)}e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,n,s,a,u){var c,l,h=this;return t&&!o(t)?(e.each(t,(function(t,e){h.on(t,n,s,e,u)})),h):(o(n)||i(a)||!1===a||(a=s,s=n,n=void 0),void 0!==a&&!1!==s||(a=s,s=void 0),!1===a&&(a=b),h.each((function(i,o){u&&(c=function(t){return y(o,t.type,a),a.apply(this,arguments)}),n&&(l=function(t){var i,s=e(t.target).closest(n,o).get(0);if(s&&s!==o)return i=e.extend(S(t),{currentTarget:s,liveFired:o}),(c||a).apply(s,[i].concat(r.call(arguments,1)))}),m(o,t,a,s,n,l||c)})))},e.fn.off=function(t,n,r){var s=this;return t&&!o(t)?(e.each(t,(function(t,e){s.off(t,n,e)})),s):(o(n)||i(r)||!1===r||(r=n,n=void 0),!1===r&&(r=b),s.each((function(){y(this,t,r,n)})))},e.fn.trigger=function(t,n){return(t=o(t)||e.isPlainObject(t)?e.Event(t):x(t))._args=n,this.each((function(){t.type in c&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)}))},e.fn.triggerHandler=function(t,n){var r,i;return this.each((function(s,a){(r=S(o(t)?e.Event(t):t))._args=n,r.target=a,e.each(f(a,t.type||t),(function(t,e){if(i=e.proxy(r),r.isImmediatePropagationStopped())return!1}))})),i},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach((function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}})),e.Event=function(t,e){o(t)||(t=(e=t).type);var n=document.createEvent(a[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),x(n)}}(r),n=[],r.fn.remove=function(){return this.each((function(){this.parentNode&&("IMG"===this.tagName&&(n.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",e&&clearTimeout(e),e=setTimeout((function(){n=[]}),6e4)),this.parentNode.removeChild(this))}))},function(t){var e={},n=t.fn.data,r=t.camelCase,i=t.expando="Zepto"+ +new Date,o=[];function s(n,s,a){var u=n[i]||(n[i]=++t.uuid),c=e[u]||(e[u]=function(e){var n={};return t.each(e.attributes||o,(function(e,i){0==i.name.indexOf("data-")&&(n[r(i.name.replace("data-",""))]=t.zepto.deserializeValue(i.value))})),n}(n));return void 0!==s&&(c[r(s)]=a),c}t.fn.data=function(o,a){return void 0===a?t.isPlainObject(o)?this.each((function(e,n){t.each(o,(function(t,e){s(n,t,e)}))})):0 in this?function(o,a){var u=o[i],c=u&&e[u];if(void 0===a)return c||s(o);if(c){if(a in c)return c[a];var l=r(a);if(l in c)return c[l]}return n.call(t(o),a)}(this[0],o):void 0:this.each((function(){s(this,o,a)}))},t.data=function(e,n,r){return t(e).data(n,r)},t.hasData=function(n){var r=n[i],o=r&&e[r];return!!o&&!t.isEmptyObject(o)},t.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each((function(){var o=this[i],s=o&&e[o];s&&t.each(n||s,(function(t){delete s[n?r(this):t]}))}))},["remove","empty"].forEach((function(e){var n=t.fn[e];t.fn[e]=function(){var t=this.find("*");return"remove"===e&&(t=t.add(this)),t.removeData(),n.call(this)}}))}(r),r}(n)},function(t,e,n){"use strict";var r=n(0),i=n(1);function o(t){t&&t.el||r.error("EventBus initialized without el"),this.$el=i.element(t.el)}r.mixin(o.prototype,{trigger:function(t){var e=[].slice.call(arguments,1),n=r.Event("autocomplete:"+t);return this.$el.trigger(n,e),n}}),t.exports=o},function(t,e,n){"use strict";t.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(t,e){t.exports="0.32.0"},function(t,e,n){"use strict";t.exports=function(t){var e=t.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(e)return[e[1],e[2],e[3]]}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=n(15),o=(r=i)&&r.__esModule?r:{default:r};e.default=o.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default="2.6.1"},function(t,e,n){"use strict";var r,i=n(23),o=(r=i)&&r.__esModule?r:{default:r};t.exports=o.default},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=s(n(24)),i=s(n(25)),o=s(n(21));function s(t){return t&&t.__esModule?t:{default:t}}var a=(0,r.default)(i.default);a.version=o.default,e.default=a},function(t,e,n){"use strict";var r=Function.prototype.bind;t.exports=function(t){var e=function(){for(var e=arguments.length,n=Array(e),i=0;i<e;i++)n[i]=arguments[i];return new(r.apply(t,[null].concat(n)))};return e.__proto__=t,e.prototype=t.prototype,e}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=f(n(26)),s=f(n(29)),a=f(n(49)),u=f(n(64)),c=f(n(65)),l=f(n(21)),h=f(n(20));function f(t){return t&&t.__esModule?t:{default:t}}var d=function(){function t(e){var n=e.apiKey,i=e.indexName,o=e.inputSelector,c=e.appId,f=void 0===c?"BH4D9OD16A":c,d=e.debug,p=void 0!==d&&d,g=e.algoliaOptions,m=void 0===g?{}:g,y=e.autocompleteOptions,v=void 0===y?{debug:!1,hint:!1,autoselect:!0}:y,b=e.transformData,w=void 0!==b&&b,_=e.queryHook,x=void 0!==_&&_,S=e.handleSelected,C=void 0!==S&&S,A=e.enhancedSearchInput,E=void 0!==A&&A,T=e.layout,k=void 0===T?"collumns":T;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),t.checkArguments({apiKey:n,indexName:i,inputSelector:o,debug:p,algoliaOptions:m,autocompleteOptions:v,transformData:w,queryHook:x,handleSelected:C,enhancedSearchInput:E,layout:k}),this.apiKey=n,this.appId=f,this.indexName=i,this.input=t.getInputFromSelector(o),this.algoliaOptions=r({hitsPerPage:5},m);var O=!(!v||!v.debug)&&v.debug;v.debug=p||O,this.autocompleteOptions=v,this.autocompleteOptions.cssClasses=this.autocompleteOptions.cssClasses||{},this.autocompleteOptions.cssClasses.prefix=this.autocompleteOptions.cssClasses.prefix||"ds",C=C||this.handleSelected,this.isSimpleLayout="simple"===k,this.client=(0,s.default)(this.appId,this.apiKey),this.client.addAlgoliaAgent("docsearch.js "+l.default),E&&(this.input=t.injectSearchBox(this.input)),this.autocomplete=(0,a.default)(this.input,v,[{source:this.getAutocompleteSource(w,x),templates:{suggestion:t.getSuggestionTemplate(this.isSimpleLayout),footer:u.default.footer,empty:t.getEmptyTemplate()}}]),C&&(0,h.default)(".algolia-autocomplete").on("click",".ds-suggestions a",(function(t){t.preventDefault()})),this.autocomplete.on("autocomplete:selected",C.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input)),E&&t.bindSearchBoxEvent()}return i(t,[{key:"getAutocompleteSource",value:function(e,n){var r=this;return function(i,o){n&&(i=n(i)||i),r.client.search([{indexName:r.indexName,query:i,params:r.algoliaOptions}]).then((function(n){var r=n.results[0].hits;e&&(r=e(r)||r),o(t.formatHits(r))}))}}},{key:"handleSelected",value:function(t,e,n){t.setVal(""),window.location.assign(n.url)}},{key:"handleShown",value:function(t){var e=t.offset().left+t.width()/2,n=(0,h.default)(document).width()/2;isNaN(n)&&(n=900);var r=e-n>=0?"algolia-autocomplete-right":"algolia-autocomplete-left",i=e-n<0?"algolia-autocomplete-right":"algolia-autocomplete-left",o=(0,h.default)(".algolia-autocomplete");o.hasClass(r)||o.addClass(r),o.hasClass(i)&&o.removeClass(i)}}],[{key:"checkArguments",value:function(e){if(!e.apiKey||!e.indexName)throw new Error("Usage:\n documentationSearch({\n apiKey,\n indexName,\n inputSelector,\n [ appId ],\n [ algoliaOptions.{hitsPerPage} ]\n [ autocompleteOptions.{hint,debug} ]\n})");if("string"!=typeof e.inputSelector)throw new Error("Error: inputSelector:"+e.inputSelector+" must be a string. Each selector must match only one element and separated by ','");if(!t.getInputFromSelector(e.inputSelector))throw new Error("Error: No input element in the page matches "+e.inputSelector)}},{key:"injectSearchBox",value:function(t){t.before(u.default.searchBox);var e=t.prev().prev().find("input");return t.remove(),e}},{key:"bindSearchBoxEvent",value:function(){(0,h.default)('.searchbox [type="reset"]').on("click",(function(){(0,h.default)("input#docsearch").focus(),(0,h.default)(this).addClass("hide"),a.default.autocomplete.setVal("")})),(0,h.default)("input#docsearch").on("keyup",(function(){var t=document.querySelector("input#docsearch"),e=document.querySelector('.searchbox [type="reset"]');e.className="searchbox__reset",0===t.value.length&&(e.className+=" hide")}))}},{key:"getInputFromSelector",value:function(t){var e=(0,h.default)(t).filter("input");return e.length?(0,h.default)(e[0]):null}},{key:"formatHits",value:function(e){var n=c.default.deepClone(e).map((function(t){return t._highlightResult&&(t._highlightResult=c.default.mergeKeyWithParent(t._highlightResult,"hierarchy")),c.default.mergeKeyWithParent(t,"hierarchy")})),r=c.default.groupBy(n,"lvl0");return h.default.each(r,(function(t,e){var n=c.default.groupBy(e,"lvl1"),i=c.default.flattenAndFlagFirst(n,"isSubCategoryHeader");r[t]=i})),(r=c.default.flattenAndFlagFirst(r,"isCategoryHeader")).map((function(e){var n=t.formatURL(e),r=c.default.getHighlightedValue(e,"lvl0"),i=c.default.getHighlightedValue(e,"lvl1")||r,o=c.default.compact([c.default.getHighlightedValue(e,"lvl2")||i,c.default.getHighlightedValue(e,"lvl3"),c.default.getHighlightedValue(e,"lvl4"),c.default.getHighlightedValue(e,"lvl5"),c.default.getHighlightedValue(e,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> › </span>'),s=c.default.getSnippetedValue(e,"content"),a=i&&""!==i||o&&""!==o,u=o&&""!==o&&o!==i,l=!u&&i&&""!==i&&i!==r;return{isLvl0:!l&&!u,isLvl1:l,isLvl2:u,isLvl1EmptyOrDuplicate:!i||""===i||i===r,isCategoryHeader:e.isCategoryHeader,isSubCategoryHeader:e.isSubCategoryHeader,isTextOrSubcategoryNonEmpty:a,category:r,subcategory:i,title:o,text:s,url:n}}))}},{key:"formatURL",value:function(t){var e=t.url,n=t.anchor;return e?-1!==e.indexOf("#")?e:n?t.url+"#"+t.anchor:e:n?"#"+t.anchor:(console.warn("no anchor nor url for : ",JSON.stringify(t)),null)}},{key:"getEmptyTemplate",value:function(){return function(t){return o.default.compile(u.default.empty).render(t)}}},{key:"getSuggestionTemplate",value:function(t){var e=t?u.default.suggestionSimple:u.default.suggestion,n=o.default.compile(e);return function(t){return n.render(t)}}}]),t}();e.default=d},function(t,e,n){var r=n(27);r.Template=n(28).Template,r.template=r.Template,t.exports=r},function(t,e,n){!function(t){var e=/\S/,n=/\"/g,r=/\n/g,i=/\r/g,o=/\\/g,s=/\u2028/,a=/\u2029/;function u(t){return t.trim?t.trim():t.replace(/^\s*|\s*$/g,"")}function c(t,e,n){if(e.charAt(n)!=t.charAt(0))return!1;for(var r=1,i=t.length;r<i;r++)if(e.charAt(n+r)!=t.charAt(r))return!1;return!0}t.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},t.scan=function(n,r){var i,o=n.length,s=0,a=null,l=null,h="",f=[],d=!1,p=0,g=0,m="{{",y="}}";function v(){h.length>0&&(f.push({tag:"_t",text:new String(h)}),h="")}function b(n,r){if(v(),n&&function(){for(var n=!0,r=g;r<f.length;r++)if(!(n=t.tags[f[r].tag]<t.tags._v||"_t"==f[r].tag&&null===f[r].text.match(e)))return!1;return n}())for(var i,o=g;o<f.length;o++)f[o].text&&((i=f[o+1])&&">"==i.tag&&(i.indent=f[o].text.toString()),f.splice(o,1));else r||f.push({tag:"\n"});d=!1,g=f.length}function w(t,e){var n="="+y,r=t.indexOf(n,e),i=u(t.substring(t.indexOf("=",e)+1,r)).split(" ");return m=i[0],y=i[i.length-1],r+n.length-1}for(r&&(r=r.split(" "),m=r[0],y=r[1]),p=0;p<o;p++)0==s?c(m,n,p)?(--p,v(),s=1):"\n"==n.charAt(p)?b(d):h+=n.charAt(p):1==s?(p+=m.length-1,"="==(a=(l=t.tags[n.charAt(p+1)])?n.charAt(p+1):"_v")?(p=w(n,p),s=0):(l&&p++,s=2),d=p):c(y,n,p)?(f.push({tag:a,n:u(h),otag:m,ctag:y,i:"/"==a?d-m.length:p+y.length}),h="",p+=y.length-1,s=0,"{"==a&&("}}"==y?p++:"}"===(i=f[f.length-1]).n.substr(i.n.length-1)&&(i.n=i.n.substring(0,i.n.length-1)))):h+=n.charAt(p);return b(d,!0),f};var l={_t:!0,"\n":!0,$:!0,"/":!0};function h(t,e){for(var n=0,r=e.length;n<r;n++)if(e[n].o==t.n)return t.tag="#",!0}function f(t,e,n){for(var r=0,i=n.length;r<i;r++)if(n[r].c==t&&n[r].o==e)return!0}function d(t){var e=[];for(var n in t.partials)e.push('"'+g(n)+'":{name:"'+g(t.partials[n].name)+'", '+d(t.partials[n])+"}");return"partials: {"+e.join(",")+"}, subs: "+function(t){var e=[];for(var n in t)e.push('"'+g(n)+'": function(c,p,t,i) {'+t[n]+"}");return"{ "+e.join(",")+" }"}(t.subs)}t.stringify=function(e,n,r){return"{code: function (c,p,i) { "+t.wrapMain(e.code)+" },"+d(e)+"}"};var p=0;function g(t){return t.replace(o,"\\\\").replace(n,'\\"').replace(r,"\\n").replace(i,"\\r").replace(s,"\\u2028").replace(a,"\\u2029")}function m(t){return~t.indexOf(".")?"d":"f"}function y(t,e){var n="<"+(e.prefix||"")+t.n+p++;return e.partials[n]={name:t.n,partials:{}},e.code+='t.b(t.rp("'+g(n)+'",c,p,"'+(t.indent||"")+'"));',n}function v(t,e){e.code+="t.b(t.t(t."+m(t.n)+'("'+g(t.n)+'",c,p,0)));'}function b(t){return"t.b("+t+");"}t.generate=function(e,n,r){p=0;var i={code:"",subs:{},partials:{}};return t.walk(e,i),r.asString?this.stringify(i,n,r):this.makeTemplate(i,n,r)},t.wrapMain=function(t){return'var t=this;t.b(i=i||"");'+t+"return t.fl();"},t.template=t.Template,t.makeTemplate=function(t,e,n){var r=this.makePartials(t);return r.code=new Function("c","p","i",this.wrapMain(t.code)),new this.template(r,e,this,n)},t.makePartials=function(t){var e,n={subs:{},partials:t.partials,name:t.name};for(e in n.partials)n.partials[e]=this.makePartials(n.partials[e]);for(e in t.subs)n.subs[e]=new Function("c","p","t","i",t.subs[e]);return n},t.codegen={"#":function(e,n){n.code+="if(t.s(t."+m(e.n)+'("'+g(e.n)+'",c,p,1),c,p,0,'+e.i+","+e.end+',"'+e.otag+" "+e.ctag+'")){t.rs(c,p,function(c,p,t){',t.walk(e.nodes,n),n.code+="});c.pop();}"},"^":function(e,n){n.code+="if(!t.s(t."+m(e.n)+'("'+g(e.n)+'",c,p,1),c,p,1,0,0,"")){',t.walk(e.nodes,n),n.code+="};"},">":y,"<":function(e,n){var r={partials:{},code:"",subs:{},inPartial:!0};t.walk(e.nodes,r);var i=n.partials[y(e,n)];i.subs=r.subs,i.partials=r.partials},$:function(e,n){var r={subs:{},code:"",partials:n.partials,prefix:e.n};t.walk(e.nodes,r),n.subs[e.n]=r.code,n.inPartial||(n.code+='t.sub("'+g(e.n)+'",c,p,i);')},"\n":function(t,e){e.code+=b('"\\n"'+(t.last?"":" + i"))},_v:function(t,e){e.code+="t.b(t.v(t."+m(t.n)+'("'+g(t.n)+'",c,p,0)));'},_t:function(t,e){e.code+=b('"'+g(t.text)+'"')},"{":v,"&":v},t.walk=function(e,n){for(var r,i=0,o=e.length;i<o;i++)(r=t.codegen[e[i].tag])&&r(e[i],n);return n},t.parse=function(e,n,r){return function e(n,r,i,o){var s,a=[],u=null,c=null;for(s=i[i.length-1];n.length>0;){if(c=n.shift(),s&&"<"==s.tag&&!(c.tag in l))throw new Error("Illegal content in < super tag.");if(t.tags[c.tag]<=t.tags.$||h(c,o))i.push(c),c.nodes=e(n,c.tag,i,o);else{if("/"==c.tag){if(0===i.length)throw new Error("Closing tag without opener: /"+c.n);if(u=i.pop(),c.n!=u.n&&!f(c.n,u.n,o))throw new Error("Nesting error: "+u.n+" vs. "+c.n);return u.end=c.i,a}"\n"==c.tag&&(c.last=0==n.length||"\n"==n[0].tag)}a.push(c)}if(i.length>0)throw new Error("missing closing tag: "+i.pop().n);return a}(e,0,[],(r=r||{}).sectionTags||[])},t.cache={},t.cacheKey=function(t,e){return[t,!!e.asString,!!e.disableLambda,e.delimiters,!!e.modelGet].join("||")},t.compile=function(e,n){n=n||{};var r=t.cacheKey(e,n),i=this.cache[r];if(i){var o=i.partials;for(var s in o)delete o[s].instance;return i}return i=this.generate(this.parse(this.scan(e,n.delimiters),e,n),e,n),this.cache[r]=i}}(e)},function(t,e,n){!function(t){function e(t,e,n){var r;return e&&"object"==typeof e&&(void 0!==e[t]?r=e[t]:n&&e.get&&"function"==typeof e.get&&(r=e.get(t))),r}t.Template=function(t,e,n,r){t=t||{},this.r=t.code||this.r,this.c=n,this.options=r||{},this.text=e||"",this.partials=t.partials||{},this.subs=t.subs||{},this.buf=""},t.Template.prototype={r:function(t,e,n){return""},v:function(t){return t=u(t),a.test(t)?t.replace(n,"&amp;").replace(r,"&lt;").replace(i,"&gt;").replace(o,"&#39;").replace(s,"&quot;"):t},t:u,render:function(t,e,n){return this.ri([t],e||{},n)},ri:function(t,e,n){return this.r(t,e,n)},ep:function(t,e){var n=this.partials[t],r=e[n.name];if(n.instance&&n.base==r)return n.instance;if("string"==typeof r){if(!this.c)throw new Error("No compiler available.");r=this.c.compile(r,this.options)}if(!r)return null;if(this.partials[t].base=r,n.subs){for(key in e.stackText||(e.stackText={}),n.subs)e.stackText[key]||(e.stackText[key]=void 0!==this.activeSub&&e.stackText[this.activeSub]?e.stackText[this.activeSub]:this.text);r=function(t,e,n,r,i,o){function s(){}function a(){}var u;s.prototype=t,a.prototype=t.subs;var c=new s;for(u in c.subs=new a,c.subsText={},c.buf="",r=r||{},c.stackSubs=r,c.subsText=o,e)r[u]||(r[u]=e[u]);for(u in r)c.subs[u]=r[u];for(u in i=i||{},c.stackPartials=i,n)i[u]||(i[u]=n[u]);for(u in i)c.partials[u]=i[u];return c}(r,n.subs,n.partials,this.stackSubs,this.stackPartials,e.stackText)}return this.partials[t].instance=r,r},rp:function(t,e,n,r){var i=this.ep(t,n);return i?i.ri(e,n,r):""},rs:function(t,e,n){var r=t[t.length-1];if(c(r))for(var i=0;i<r.length;i++)t.push(r[i]),n(t,e,this),t.pop();else n(t,e,this)},s:function(t,e,n,r,i,o,s){var a;return(!c(t)||0!==t.length)&&("function"==typeof t&&(t=this.ms(t,e,n,r,i,o,s)),a=!!t,!r&&a&&e&&e.push("object"==typeof t?t:e[e.length-1]),a)},d:function(t,n,r,i){var o,s=t.split("."),a=this.f(s[0],n,r,i),u=this.options.modelGet,l=null;if("."===t&&c(n[n.length-2]))a=n[n.length-1];else for(var h=1;h<s.length;h++)void 0!==(o=e(s[h],a,u))?(l=a,a=o):a="";return!(i&&!a)&&(i||"function"!=typeof a||(n.push(l),a=this.mv(a,n,r),n.pop()),a)},f:function(t,n,r,i){for(var o=!1,s=!1,a=this.options.modelGet,u=n.length-1;u>=0;u--)if(void 0!==(o=e(t,n[u],a))){s=!0;break}return s?(i||"function"!=typeof o||(o=this.mv(o,n,r)),o):!i&&""},ls:function(t,e,n,r,i){var o=this.options.delimiters;return this.options.delimiters=i,this.b(this.ct(u(t.call(e,r)),e,n)),this.options.delimiters=o,!1},ct:function(t,e,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(t,this.options).render(e,n)},b:function(t){this.buf+=t},fl:function(){var t=this.buf;return this.buf="",t},ms:function(t,e,n,r,i,o,s){var a,u=e[e.length-1],c=t.call(u);return"function"==typeof c?!!r||(a=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,u,n,a.substring(i,o),s)):c},mv:function(t,e,n){var r=e[e.length-1],i=t.call(r);return"function"==typeof i?this.ct(u(i.call(r)),r,n):i},sub:function(t,e,n,r){var i=this.subs[t];i&&(this.activeSub=t,i(e,n,this,r),this.activeSub=!1)}};var n=/&/g,r=/</g,i=/>/g,o=/\'/g,s=/\"/g,a=/[&<>\"\']/;function u(t){return String(null==t?"":t)}var c=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}}(e)},function(t,e,n){"use strict";var r=n(30),i=n(41);t.exports=i(r,"(lite) ")},function(t,e,n){t.exports=u;var r=n(5),i=n(31),o=n(32),s=n(38),a=Object({NODE_ENV:"production"}).RESET_APP_DATA_TIMER&&parseInt(Object({NODE_ENV:"production"}).RESET_APP_DATA_TIMER,10)||12e4;function u(t,e,i){var o=n(8)("algoliasearch"),s=n(3),a=n(6),u=n(7),l="Usage: algoliasearch(applicationID, apiKey, opts)";if(!0!==i._allowEmptyCredentials&&!t)throw new r.AlgoliaSearchError("Please provide an application ID. "+l);if(!0!==i._allowEmptyCredentials&&!e)throw new r.AlgoliaSearchError("Please provide an API key. "+l);this.applicationID=t,this.apiKey=e,this.hosts={read:[],write:[]},i=i||{},this._timeouts=i.timeouts||{connect:1e3,read:2e3,write:3e4},i.timeout&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=i.timeout);var h=i.protocol||"https:";if(/:$/.test(h)||(h+=":"),"http:"!==h&&"https:"!==h)throw new r.AlgoliaSearchError("protocol must be `http:` or `https:` (was `"+i.protocol+"`)");if(this._checkAppIdData(),i.hosts)a(i.hosts)?(this.hosts.read=s(i.hosts),this.hosts.write=s(i.hosts)):(this.hosts.read=s(i.hosts.read),this.hosts.write=s(i.hosts.write));else{var f=u(this._shuffleResult,(function(e){return t+"-"+e+".algolianet.com"})),d=(!1===i.dsn?"":"-dsn")+".algolia.net";this.hosts.read=[this.applicationID+d].concat(f),this.hosts.write=[this.applicationID+".algolia.net"].concat(f)}this.hosts.read=u(this.hosts.read,c(h)),this.hosts.write=u(this.hosts.write,c(h)),this.extraHeaders={},this.cache=i._cache||{},this._ua=i._ua,this._useCache=!(void 0!==i._useCache&&!i._cache)||i._useCache,this._useRequestCache=this._useCache&&i._useRequestCache,this._useFallback=void 0===i.useFallback||i.useFallback,this._setTimeout=i._setTimeout,o("init done, %j",this)}function c(t){return function(e){return t+"//"+e.toLowerCase()}}function l(t){if(void 0===Array.prototype.toJSON)return JSON.stringify(t);var e=Array.prototype.toJSON;delete Array.prototype.toJSON;var n=JSON.stringify(t);return Array.prototype.toJSON=e,n}function h(t){var e={};for(var n in t){var r;Object.prototype.hasOwnProperty.call(t,n)&&(r="x-algolia-api-key"===n||"x-algolia-application-id"===n?"**hidden for security purposes**":t[n],e[n]=r)}return e}u.prototype.initIndex=function(t){return new o(this,t)},u.prototype.setExtraHeader=function(t,e){this.extraHeaders[t.toLowerCase()]=e},u.prototype.getExtraHeader=function(t){return this.extraHeaders[t.toLowerCase()]},u.prototype.unsetExtraHeader=function(t){delete this.extraHeaders[t.toLowerCase()]},u.prototype.addAlgoliaAgent=function(t){-1===this._ua.indexOf(";"+t)&&(this._ua+=";"+t)},u.prototype._jsonRequest=function(t){this._checkAppIdData();var e,o,s,a=n(8)("algoliasearch:"+t.url),u=t.additionalUA||"",c=t.cache,f=this,d=0,p=!1,g=f._useFallback&&f._request.fallback&&t.fallback;this.apiKey.length>500&&void 0!==t.body&&(void 0!==t.body.params||void 0!==t.body.requests)?(t.body.apiKey=this.apiKey,s=this._computeRequestHeaders({additionalUA:u,withApiKey:!1,headers:t.headers})):s=this._computeRequestHeaders({additionalUA:u,headers:t.headers}),void 0!==t.body&&(e=l(t.body)),a("request start");var m=[];function y(t,e,n){return f._useCache&&t&&e&&void 0!==e[n]}function v(e,n){if(y(f._useRequestCache,c,o)&&e.catch((function(){delete c[o]})),"function"!=typeof t.callback)return e.then(n);e.then((function(e){i((function(){t.callback(null,n(e))}),f._setTimeout||setTimeout)}),(function(e){i((function(){t.callback(e)}),f._setTimeout||setTimeout)}))}if(f._useCache&&f._useRequestCache&&(o=t.url),f._useCache&&f._useRequestCache&&e&&(o+="_body_"+e),y(f._useRequestCache,c,o)){a("serving request from cache");var b=c[o];return v("function"!=typeof b.then?f._promise.resolve({responseText:b}):b,(function(t){return JSON.parse(t.responseText)}))}var w=function n(i,v){f._checkAppIdData();var b=new Date;if(f._useCache&&!f._useRequestCache&&(o=t.url),f._useCache&&!f._useRequestCache&&e&&(o+="_body_"+v.body),y(!f._useRequestCache,c,o)){a("serving response from cache");var w=c[o];return f._promise.resolve({body:JSON.parse(w),responseText:w})}if(d>=f.hosts[t.hostType].length)return!g||p?(a("could not get any response"),f._promise.reject(new r.AlgoliaSearchError("Cannot connect to the AlgoliaSearch API. Send an email to [email protected] to report and resolve the issue. Application id was: "+f.applicationID,{debugData:m}))):(a("switching to fallback"),d=0,v.method=t.fallback.method,v.url=t.fallback.url,v.jsonBody=t.fallback.body,v.jsonBody&&(v.body=l(v.jsonBody)),s=f._computeRequestHeaders({additionalUA:u,headers:t.headers}),v.timeouts=f._getTimeoutsForRequest(t.hostType),f._setHostIndexByType(0,t.hostType),p=!0,n(f._request.fallback,v));var _=f._getHostByType(t.hostType),x=_+v.url,S={body:v.body,jsonBody:v.jsonBody,method:v.method,headers:s,timeouts:v.timeouts,debug:a,forceAuthHeaders:v.forceAuthHeaders};return a("method: %s, url: %s, headers: %j, timeouts: %d",S.method,x,S.headers,S.timeouts),i===f._request.fallback&&a("using fallback"),i.call(f,x,S).then((function(t){var n=t&&t.body&&t.body.message&&t.body.status||t.statusCode||t&&t.body&&200;a("received response: statusCode: %s, computed statusCode: %d, headers: %j",t.statusCode,n,t.headers);var i=2===Math.floor(n/100),u=new Date;if(m.push({currentHost:_,headers:h(s),content:e||null,contentLength:void 0!==e?e.length:null,method:v.method,timeouts:v.timeouts,url:v.url,startTime:b,endTime:u,duration:u-b,statusCode:n}),i)return f._useCache&&!f._useRequestCache&&c&&(c[o]=t.responseText),{responseText:t.responseText,body:t.body};if(4!==Math.floor(n/100))return d+=1,C();a("unrecoverable error");var l=new r.AlgoliaSearchError(t.body&&t.body.message,{debugData:m,statusCode:n});return f._promise.reject(l)}),(function(o){a("error: %s, stack: %s",o.message,o.stack);var u=new Date;return m.push({currentHost:_,headers:h(s),content:e||null,contentLength:void 0!==e?e.length:null,method:v.method,timeouts:v.timeouts,url:v.url,startTime:b,endTime:u,duration:u-b}),o instanceof r.AlgoliaSearchError||(o=new r.Unknown(o&&o.message,o)),d+=1,o instanceof r.Unknown||o instanceof r.UnparsableJSON||d>=f.hosts[t.hostType].length&&(p||!g)?(o.debugData=m,f._promise.reject(o)):o instanceof r.RequestTimeout?(a("retrying request with higher timeout"),f._incrementHostIndex(t.hostType),f._incrementTimeoutMultipler(),v.timeouts=f._getTimeoutsForRequest(t.hostType),n(i,v)):C()}));function C(){return a("retrying request"),f._incrementHostIndex(t.hostType),n(i,v)}}(f._request,{url:t.url,method:t.method,body:e,jsonBody:t.body,timeouts:f._getTimeoutsForRequest(t.hostType),forceAuthHeaders:t.forceAuthHeaders});return f._useCache&&f._useRequestCache&&c&&(c[o]=w),v(w,(function(t){return t.body}))},u.prototype._getSearchParams=function(t,e){if(null==t)return e;for(var n in t)null!==n&&void 0!==t[n]&&t.hasOwnProperty(n)&&(e+=""===e?"":"&",e+=n+"="+encodeURIComponent("[object Array]"===Object.prototype.toString.call(t[n])?l(t[n]):t[n]));return e},u.prototype._computeRequestHeaders=function(t){var e=n(2),r={"x-algolia-agent":t.additionalUA?this._ua+";"+t.additionalUA:this._ua,"x-algolia-application-id":this.applicationID};return!1!==t.withApiKey&&(r["x-algolia-api-key"]=this.apiKey),this.userToken&&(r["x-algolia-usertoken"]=this.userToken),this.securityTags&&(r["x-algolia-tagfilters"]=this.securityTags),e(this.extraHeaders,(function(t,e){r[e]=t})),t.headers&&e(t.headers,(function(t,e){r[e]=t})),r},u.prototype.search=function(t,e,r){var i=n(6),o=n(7);if(!i(t))throw new Error("Usage: client.search(arrayOfQueries[, callback])");"function"==typeof e?(r=e,e={}):void 0===e&&(e={});var s=this,a={requests:o(t,(function(t){var e="";return void 0!==t.query&&(e+="query="+encodeURIComponent(t.query)),{indexName:t.indexName,params:s._getSearchParams(t.params,e)}}))},u=o(a.requests,(function(t,e){return e+"="+encodeURIComponent("/1/indexes/"+encodeURIComponent(t.indexName)+"?"+t.params)})).join("&");return void 0!==e.strategy&&(a.strategy=e.strategy),this._jsonRequest({cache:this.cache,method:"POST",url:"/1/indexes/*/queries",body:a,hostType:"read",fallback:{method:"GET",url:"/1/indexes/*",body:{params:u}},callback:r})},u.prototype.searchForFacetValues=function(t){var e=n(6),r=n(7),i="Usage: client.searchForFacetValues([{indexName, params: {facetName, facetQuery, ...params}}, ...queries])";if(!e(t))throw new Error(i);var o=this;return o._promise.all(r(t,(function(t){if(!t||void 0===t.indexName||void 0===t.params.facetName||void 0===t.params.facetQuery)throw new Error(i);var e=n(3),r=n(14),s=t.indexName,a=t.params,u=a.facetName,c=r(e(a),(function(t){return"facetName"===t})),l=o._getSearchParams(c,"");return o._jsonRequest({cache:o.cache,method:"POST",url:"/1/indexes/"+encodeURIComponent(s)+"/facets/"+encodeURIComponent(u)+"/query",hostType:"read",body:{params:l}})})))},u.prototype.setSecurityTags=function(t){if("[object Array]"===Object.prototype.toString.call(t)){for(var e=[],n=0;n<t.length;++n)if("[object Array]"===Object.prototype.toString.call(t[n])){for(var r=[],i=0;i<t[n].length;++i)r.push(t[n][i]);e.push("("+r.join(",")+")")}else e.push(t[n]);t=e.join(",")}this.securityTags=t},u.prototype.setUserToken=function(t){this.userToken=t},u.prototype.clearCache=function(){this.cache={}},u.prototype.setRequestTimeout=function(t){t&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=t)},u.prototype.setTimeouts=function(t){this._timeouts=t},u.prototype.getTimeouts=function(){return this._timeouts},u.prototype._getAppIdData=function(){var t=s.get(this.applicationID);return null!==t&&this._cacheAppIdData(t),t},u.prototype._setAppIdData=function(t){return t.lastChange=(new Date).getTime(),this._cacheAppIdData(t),s.set(this.applicationID,t)},u.prototype._checkAppIdData=function(){var t=this._getAppIdData(),e=(new Date).getTime();return null===t||e-t.lastChange>a?this._resetInitialAppIdData(t):t},u.prototype._resetInitialAppIdData=function(t){var e=t||{};return e.hostIndexes={read:0,write:0},e.timeoutMultiplier=1,e.shuffleResult=e.shuffleResult||function(t){for(var e,n,r=t.length;0!==r;)n=Math.floor(Math.random()*r),e=t[r-=1],t[r]=t[n],t[n]=e;return t}([1,2,3]),this._setAppIdData(e)},u.prototype._cacheAppIdData=function(t){this._hostIndexes=t.hostIndexes,this._timeoutMultiplier=t.timeoutMultiplier,this._shuffleResult=t.shuffleResult},u.prototype._partialAppIdDataUpdate=function(t){var e=n(2),r=this._getAppIdData();return e(t,(function(t,e){r[e]=t})),this._setAppIdData(r)},u.prototype._getHostByType=function(t){return this.hosts[t][this._getHostIndexByType(t)]},u.prototype._getTimeoutMultiplier=function(){return this._timeoutMultiplier},u.prototype._getHostIndexByType=function(t){return this._hostIndexes[t]},u.prototype._setHostIndexByType=function(t,e){var r=n(3)(this._hostIndexes);return r[e]=t,this._partialAppIdDataUpdate({hostIndexes:r}),t},u.prototype._incrementHostIndex=function(t){return this._setHostIndexByType((this._getHostIndexByType(t)+1)%this.hosts[t].length,t)},u.prototype._incrementTimeoutMultipler=function(){var t=Math.max(this._timeoutMultiplier+1,4);return this._partialAppIdDataUpdate({timeoutMultiplier:t})},u.prototype._getTimeoutsForRequest=function(t){return{connect:this._timeouts.connect*this._timeoutMultiplier,complete:this._timeouts[t]*this._timeoutMultiplier}}},function(t,e){t.exports=function(t,e){e(t,0)}},function(t,e,n){var r=n(13),i=n(33),o=n(34);function s(t,e){this.indexName=e,this.as=t,this.typeAheadArgs=null,this.typeAheadValueOption=null,this.cache={}}t.exports=s,s.prototype.clearCache=function(){this.cache={}},s.prototype.search=r("query"),s.prototype.similarSearch=r("similarQuery"),s.prototype.browse=function(t,e,r){var i,o,s=n(35),a=this;0===arguments.length||1===arguments.length&&"function"==typeof arguments[0]?(i=0,r=arguments[0],t=void 0):"number"==typeof arguments[0]?(i=arguments[0],"number"==typeof arguments[1]?o=arguments[1]:"function"==typeof arguments[1]&&(r=arguments[1],o=void 0),t=void 0,e=void 0):"object"==typeof arguments[0]?("function"==typeof arguments[1]&&(r=arguments[1]),e=arguments[0],t=void 0):"string"==typeof arguments[0]&&"function"==typeof arguments[1]&&(r=arguments[1],e=void 0),e=s({},e||{},{page:i,hitsPerPage:o,query:t});var u=this.as._getSearchParams(e,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(a.indexName)+"/browse",body:{params:u},hostType:"read",callback:r})},s.prototype.browseFrom=function(t,e){return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/browse",body:{cursor:t},hostType:"read",callback:e})},s.prototype.searchForFacetValues=function(t,e){var r=n(3),i=n(14);if(void 0===t.facetName||void 0===t.facetQuery)throw new Error("Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])");var o=t.facetName,s=i(r(t),(function(t){return"facetName"===t})),a=this.as._getSearchParams(s,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/facets/"+encodeURIComponent(o)+"/query",hostType:"read",body:{params:a},callback:e})},s.prototype.searchFacet=i((function(t,e){return this.searchForFacetValues(t,e)}),o("index.searchFacet(params[, callback])","index.searchForFacetValues(params[, callback])")),s.prototype._search=function(t,e,n,r){return this.as._jsonRequest({cache:this.cache,method:"POST",url:e||"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:t},hostType:"read",fallback:{method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName),body:{params:t}},callback:n,additionalUA:r})},s.prototype.getObject=function(t,e,n){var r=this;1!==arguments.length&&"function"!=typeof e||(n=e,e=void 0);var i="";if(void 0!==e){i="?attributes=";for(var o=0;o<e.length;++o)0!==o&&(i+=","),i+=e[o]}return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(r.indexName)+"/"+encodeURIComponent(t)+i,hostType:"read",callback:n})},s.prototype.getObjects=function(t,e,r){var i=n(6),o=n(7),s="Usage: index.getObjects(arrayOfObjectIDs[, callback])";if(!i(t))throw new Error(s);var a=this;1!==arguments.length&&"function"!=typeof e||(r=e,e=void 0);var u={requests:o(t,(function(t){var n={indexName:a.indexName,objectID:t};return e&&(n.attributesToRetrieve=e.join(",")),n}))};return this.as._jsonRequest({method:"POST",url:"/1/indexes/*/objects",hostType:"read",body:u,callback:r})},s.prototype.as=null,s.prototype.indexName=null,s.prototype.typeAheadArgs=null,s.prototype.typeAheadValueOption=null},function(t,e){t.exports=function(t,e){var n=!1;return function(){return n||(console.warn(e),n=!0),t.apply(this,arguments)}}},function(t,e){t.exports=function(t,e){var n=t.toLowerCase().replace(/[\.\(\)]/g,"");return"algoliasearch: `"+t+"` was replaced by `"+e+"`. Please see https://github.com/algolia/algoliasearch-client-javascript/wiki/Deprecated#"+n}},function(t,e,n){var r=n(2);t.exports=function t(e){var n=Array.prototype.slice.call(arguments);return r(n,(function(n){for(var r in n)n.hasOwnProperty(r)&&("object"==typeof e[r]&&"object"==typeof n[r]?e[r]=t({},e[r],n[r]):void 0!==n[r]&&(e[r]=n[r]))})),e}},function(t,e,n){"use strict";var r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=Array.prototype.slice,s=n(37),a=Object.prototype.propertyIsEnumerable,u=!a.call({toString:null},"toString"),c=a.call((function(){}),"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],h=function(t){var e=t.constructor;return e&&e.prototype===t},f={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!f["$"+t]&&r.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{h(window[t])}catch(t){return!0}}catch(t){return!0}return!1}(),p=function(t){var e=null!==t&&"object"==typeof t,n="[object Function]"===i.call(t),o=s(t),a=e&&"[object String]"===i.call(t),f=[];if(!e&&!n&&!o)throw new TypeError("Object.keys called on a non-object");var p=c&&n;if(a&&t.length>0&&!r.call(t,0))for(var g=0;g<t.length;++g)f.push(String(g));if(o&&t.length>0)for(var m=0;m<t.length;++m)f.push(String(m));else for(var y in t)p&&"prototype"===y||!r.call(t,y)||f.push(String(y));if(u)for(var v=function(t){if("undefined"==typeof window||!d)return h(t);try{return h(t)}catch(t){return!1}}(t),b=0;b<l.length;++b)v&&"constructor"===l[b]||!r.call(t,l[b])||f.push(l[b]);return f};p.shim=function(){if(Object.keys){if(!function(){return 2===(Object.keys(arguments)||"").length}(1,2)){var t=Object.keys;Object.keys=function(e){return s(e)?t(o.call(e)):t(e)}}}else Object.keys=p;return Object.keys||p},t.exports=p},function(t,e,n){"use strict";var r=Object.prototype.toString;t.exports=function(t){var e=r.call(t),n="[object Arguments]"===e;return n||(n="[object Array]"!==e&&null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===r.call(t.callee)),n}},function(t,e,n){(function(e){var r,i=n(8)("algoliasearch:src/hostIndexState.js"),o={state:{},set:function(t,e){return this.state[t]=e,this.state[t]},get:function(t){return this.state[t]||null}},s={set:function(t,n){o.set(t,n);try{var r=JSON.parse(e.localStorage["algoliasearch-client-js"]);return r[t]=n,e.localStorage["algoliasearch-client-js"]=JSON.stringify(r),r[t]}catch(e){return a(t,e)}},get:function(t){try{return JSON.parse(e.localStorage["algoliasearch-client-js"])[t]||null}catch(e){return a(t,e)}}};function a(t,n){return i("localStorage failed with",n),function(){try{e.localStorage.removeItem("algoliasearch-client-js")}catch(t){}}(),(r=o).get(t)}function u(t,e){return 1===arguments.length?r.get(t):r.set(t,e)}function c(){try{return"localStorage"in e&&null!==e.localStorage&&(e.localStorage["algoliasearch-client-js"]||e.localStorage.setItem("algoliasearch-client-js",JSON.stringify({})),!0)}catch(t){return!1}}r=c()?s:o,t.exports={get:u,set:u,supportsLocalStorage:c}}).call(e,n(4))},function(t,e,n){var r;function i(t){function n(){if(n.enabled){var t=n,i=+new Date,o=i-(r||i);t.diff=o,t.prev=r,t.curr=i,r=i;for(var s=new Array(arguments.length),a=0;a<s.length;a++)s[a]=arguments[a];s[0]=e.coerce(s[0]),"string"!=typeof s[0]&&s.unshift("%O");var u=0;s[0]=s[0].replace(/%([a-zA-Z%])/g,(function(n,r){if("%%"===n)return n;u++;var i=e.formatters[r];if("function"==typeof i){var o=s[u];n=i.call(t,o),s.splice(u,1),u--}return n})),e.formatArgs.call(t,s);var c=n.log||e.log||console.log.bind(console);c.apply(t,s)}}return n.namespace=t,n.enabled=e.enabled(t),n.useColors=e.useColors(),n.color=function(t){var n,r=0;for(n in t)r=(r<<5)-r+t.charCodeAt(n),r|=0;return e.colors[Math.abs(r)%e.colors.length]}(t),"function"==typeof e.init&&e.init(n),n}(e=t.exports=i.debug=i.default=i).coerce=function(t){return t instanceof Error?t.stack||t.message:t},e.disable=function(){e.enable("")},e.enable=function(t){e.save(t),e.names=[],e.skips=[];for(var n=("string"==typeof t?t:"").split(/[\s,]+/),r=n.length,i=0;i<r;i++)n[i]&&("-"===(t=n[i].replace(/\*/g,".*?"))[0]?e.skips.push(new RegExp("^"+t.substr(1)+"$")):e.names.push(new RegExp("^"+t+"$")))},e.enabled=function(t){var n,r;for(n=0,r=e.skips.length;n<r;n++)if(e.skips[n].test(t))return!1;for(n=0,r=e.names.length;n<r;n++)if(e.names[n].test(t))return!0;return!1},e.humanize=n(40),e.names=[],e.skips=[],e.formatters={}},function(t,e){var n=1e3,r=6e4,i=60*r,o=24*i;function s(t,e,n){if(!(t<e))return t<1.5*e?Math.floor(t/e)+" "+n:Math.ceil(t/e)+" "+n+"s"}t.exports=function(t,e){e=e||{};var a,u=typeof t;if("string"===u&&t.length>0)return function(t){if(!((t=String(t)).length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(e){var s=parseFloat(e[1]);switch((e[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*s;case"days":case"day":case"d":return s*o;case"hours":case"hour":case"hrs":case"hr":case"h":return s*i;case"minutes":case"minute":case"mins":case"min":case"m":return s*r;case"seconds":case"second":case"secs":case"sec":case"s":return s*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return s;default:return}}}}(t);if("number"===u&&!1===isNaN(t))return e.long?s(a=t,o,"day")||s(a,i,"hour")||s(a,r,"minute")||s(a,n,"second")||a+" ms":function(t){return t>=o?Math.round(t/o)+"d":t>=i?Math.round(t/i)+"h":t>=r?Math.round(t/r)+"m":t>=n?Math.round(t/n)+"s":t+"ms"}(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,e,n){"use strict";var r=n(42),i=r.Promise||n(43).Promise;t.exports=function(t,e){var o=n(12),s=n(5),a=n(44),u=n(46),c=n(47);function l(t,e,r){return(r=n(3)(r||{}))._ua=r._ua||l.ua,new f(t,e,r)}e=e||"",l.version=n(48),l.ua="Algolia for vanilla JavaScript "+e+l.version,l.initPlaces=c(l),r.__algolia={debug:n(8),algoliasearch:l};var h={hasXMLHttpRequest:"XMLHttpRequest"in r,hasXDomainRequest:"XDomainRequest"in r};function f(){t.apply(this,arguments)}return h.hasXMLHttpRequest&&(h.cors="withCredentials"in new XMLHttpRequest),o(f,t),f.prototype._request=function(t,e){return new i((function(n,r){if(h.cors||h.hasXDomainRequest){t=a(t,e.headers);var i,o,u=e.body,c=h.cors?new XMLHttpRequest:new XDomainRequest,l=!1;i=setTimeout(f,e.timeouts.connect),c.onprogress=function(){l||d()},"onreadystatechange"in c&&(c.onreadystatechange=function(){!l&&c.readyState>1&&d()}),c.onload=function(){if(!o){var t;clearTimeout(i);try{t={body:JSON.parse(c.responseText),responseText:c.responseText,statusCode:c.status,headers:c.getAllResponseHeaders&&c.getAllResponseHeaders()||{}}}catch(e){t=new s.UnparsableJSON({more:c.responseText})}t instanceof s.UnparsableJSON?r(t):n(t)}},c.onerror=function(t){o||(clearTimeout(i),r(new s.Network({more:t})))},c instanceof XMLHttpRequest?(c.open(e.method,t,!0),e.forceAuthHeaders&&(c.setRequestHeader("x-algolia-application-id",e.headers["x-algolia-application-id"]),c.setRequestHeader("x-algolia-api-key",e.headers["x-algolia-api-key"]))):c.open(e.method,t),h.cors&&(u&&("POST"===e.method?c.setRequestHeader("content-type","application/x-www-form-urlencoded"):c.setRequestHeader("content-type","application/json")),c.setRequestHeader("accept","application/json")),u?c.send(u):c.send()}else r(new s.Network("CORS not supported"));function f(){o=!0,c.abort(),r(new s.RequestTimeout)}function d(){l=!0,clearTimeout(i),i=setTimeout(f,e.timeouts.complete)}}))},f.prototype._request.fallback=function(t,e){return t=a(t,e.headers),new i((function(n,r){u(t,e,(function(t,e){t?r(t):n(e)}))}))},f.prototype._promise={reject:function(t){return i.reject(t)},resolve:function(t){return i.resolve(t)},delay:function(t){return new i((function(e){setTimeout(e,t)}))},all:function(t){return i.all(t)}},l}},function(t,e,n){(function(e){var n;n="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},t.exports=n}).call(e,n(4))},function(t,e,n){(function(e,n){
/*!
* @overview es6-promise - a tiny implementation of Promises/A+.
* @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
* @license Licensed under MIT license
* See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
* @version v4.2.4+314e4831
- */var r;r=function(){"use strict";function t(t){return"function"==typeof t}var r=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},i=0,o=void 0,s=void 0,a=function(t,e){d[i]=t,d[i+1]=e,2===(i+=2)&&(s?s(g):w())},u="undefined"!=typeof window?window:void 0,c=u||{},l=c.MutationObserver||c.WebKitMutationObserver,h="undefined"==typeof self&&void 0!==e&&"[object process]"==={}.toString.call(e),f="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function p(){var t=setTimeout;return function(){return t(g,1)}}var d=new Array(1e3);function g(){for(var t=0;t<i;t+=2)(0,d[t])(d[t+1]),d[t]=void 0,d[t+1]=void 0;i=0}var m,y,v,b,w=void 0;function _(t,e){var n=this,r=new this.constructor(C);void 0===r[S]&&D(r);var i=n._state;if(i){var o=arguments[i-1];a((function(){return R(i,r,o,n._result)}))}else I(n,r,t,e);return r}function x(t){if(t&&"object"==typeof t&&t.constructor===this)return t;var e=new this(C);return O(e,t),e}h?w=function(){return e.nextTick(g)}:l?(y=0,v=new l(g),b=document.createTextNode(""),v.observe(b,{characterData:!0}),w=function(){b.data=y=++y%2}):f?((m=new MessageChannel).port1.onmessage=g,w=function(){return m.port2.postMessage(0)}):w=void 0===u?function(){try{var t=Function("return this")().require("vertx");return void 0!==(o=t.runOnLoop||t.runOnContext)?function(){o(g)}:p()}catch(t){return p()}}():p();var S=Math.random().toString(36).substring(2);function C(){}var A={error:null};function E(t){try{return t.then}catch(t){return A.error=t,A}}function T(e,n,r){n.constructor===e.constructor&&r===_&&n.constructor.resolve===x?function(t,e){1===e._state?N(t,e._result):2===e._state?j(t,e._result):I(e,void 0,(function(e){return O(t,e)}),(function(e){return j(t,e)}))}(e,n):r===A?(j(e,A.error),A.error=null):void 0===r?N(e,n):t(r)?function(t,e,n){a((function(t){var r=!1,i=function(t,e,n,r){try{t.call(e,n,r)}catch(t){return t}}(n,e,(function(n){r||(r=!0,e!==n?O(t,n):N(t,n))}),(function(e){r||(r=!0,j(t,e))}),t._label);!r&&i&&(r=!0,j(t,i))}),t)}(e,n,r):N(e,n)}function O(t,e){var n,r;t===e?j(t,new TypeError("You cannot resolve a promise with itself")):(r=typeof(n=e),null===n||"object"!==r&&"function"!==r?N(t,e):T(t,e,E(e)))}function k(t){t._onerror&&t._onerror(t._result),L(t)}function N(t,e){void 0===t._state&&(t._result=e,t._state=1,0!==t._subscribers.length&&a(L,t))}function j(t,e){void 0===t._state&&(t._state=2,t._result=e,a(k,t))}function I(t,e,n,r){var i=t._subscribers,o=i.length;t._onerror=null,i[o]=e,i[o+1]=n,i[o+2]=r,0===o&&t._state&&a(L,t)}function L(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,i=void 0,o=t._result,s=0;s<e.length;s+=3)r=e[s],i=e[s+n],r?R(n,r,i,o):i(o);t._subscribers.length=0}}function R(e,n,r,i){var o=t(r),s=void 0,a=void 0,u=void 0,c=void 0;if(o){if((s=function(t,e){try{return t(e)}catch(t){return A.error=t,A}}(r,i))===A?(c=!0,a=s.error,s.error=null):u=!0,n===s)return void j(n,new TypeError("A promises callback cannot return that same promise."))}else s=i,u=!0;void 0!==n._state||(o&&u?O(n,s):c?j(n,a):1===e?N(n,s):2===e&&j(n,s))}var P=0;function D(t){t[S]=P++,t._state=void 0,t._result=void 0,t._subscribers=[]}var q=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(C),this.promise[S]||D(this.promise),r(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?N(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&N(this.promise,this._result))):j(this.promise,new Error("Array Methods must be provided an Array"))}return t.prototype._enumerate=function(t){for(var e=0;void 0===this._state&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===x){var i=E(t);if(i===_&&void 0!==t._state)this._settledAt(t._state,e,t._result);else if("function"!=typeof i)this._remaining--,this._result[e]=t;else if(n===$){var o=new n(C);T(o,t,i),this._willSettleAt(o,e)}else this._willSettleAt(new n((function(e){return e(t)})),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,n){var r=this.promise;void 0===r._state&&(this._remaining--,2===t?j(r,n):this._result[e]=n),0===this._remaining&&N(r,this._result)},t.prototype._willSettleAt=function(t,e){var n=this;I(t,void 0,(function(t){return n._settledAt(1,e,t)}),(function(t){return n._settledAt(2,e,t)}))},t}(),$=function(){function t(e){this[S]=P++,this._result=this._state=void 0,this._subscribers=[],C!==e&&("function"!=typeof e&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof t?function(t,e){try{e((function(e){O(t,e)}),(function(e){j(t,e)}))}catch(e){j(t,e)}}(this,e):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}())}return t.prototype.catch=function(t){return this.then(null,t)},t.prototype.finally=function(t){var e=this.constructor;return this.then((function(n){return e.resolve(t()).then((function(){return n}))}),(function(n){return e.resolve(t()).then((function(){throw n}))}))},t}();return $.prototype.then=_,$.all=function(t){return new q(this,t).promise},$.race=function(t){var e=this;return r(t)?new e((function(n,r){for(var i=t.length,o=0;o<i;o++)e.resolve(t[o]).then(n,r)})):new e((function(t,e){return e(new TypeError("You must pass an array to race."))}))},$.resolve=x,$.reject=function(t){var e=new this(C);return j(e,t),e},$._setScheduler=function(t){s=t},$._setAsap=function(t){a=t},$._asap=a,$.polyfill=function(){var t=void 0;if(void 0!==n)t=n;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var e=t.Promise;if(e){var r=null;try{r=Object.prototype.toString.call(e.resolve())}catch(t){}if("[object Promise]"===r&&!e.cast)return}t.Promise=$},$.Promise=$,$},t.exports=r()}).call(e,n(9),n(4))},function(t,e,n){"use strict";t.exports=function(t,e){return/\?/.test(t)?t+="&":t+="?",t+r(e)};var r=n(45)},function(t,e,n){"use strict";var r=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,a){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"==typeof t?o(s(t),(function(s){var a=encodeURIComponent(r(s))+n;return i(t[s])?o(t[s],(function(t){return a+encodeURIComponent(r(t))})).join(e):a+encodeURIComponent(r(t[s]))})).join(e):a?encodeURIComponent(r(a))+n+encodeURIComponent(r(t)):""};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function o(t,e){if(t.map)return t.map(e);for(var n=[],r=0;r<t.length;r++)n.push(e(t[r],r));return n}var s=Object.keys||function(t){var e=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.push(n);return e}},function(t,e,n){"use strict";t.exports=function(t,e,n){if("GET"===e.method){e.debug("JSONP: start");var o=!1,s=!1;i+=1;var a=document.getElementsByTagName("head")[0],u=document.createElement("script"),c="algoliaJSONP_"+i,l=!1;window[c]=function(t){!function(){try{delete window[c],delete window[c+"_loaded"]}catch(t){window[c]=window[c+"_loaded"]=void 0}}(),s?e.debug("JSONP: Late answer, ignoring"):(o=!0,p(),n(null,{body:t,responseText:JSON.stringify(t)}))},t+="&callback="+c,e.jsonBody&&e.jsonBody.params&&(t+="&"+e.jsonBody.params);var h=setTimeout((function(){e.debug("JSONP: Script timeout"),s=!0,p(),n(new r.RequestTimeout)}),e.timeouts.complete);u.onreadystatechange=function(){"loaded"!==this.readyState&&"complete"!==this.readyState||f()},u.onload=f,u.onerror=function(){e.debug("JSONP: Script error"),l||s||(p(),n(new r.JSONPScriptError))},u.async=!0,u.defer=!0,u.src=t,a.appendChild(u)}else n(new Error("Method "+e.method+" "+t+" is not supported by JSONP."));function f(){e.debug("JSONP: success"),l||s||(l=!0,o||(e.debug("JSONP: Fail. Script loaded but did not call the callback"),p(),n(new r.JSONPScriptFail)))}function p(){clearTimeout(h),u.onload=null,u.onreadystatechange=null,u.onerror=null,a.removeChild(u)}};var r=n(5),i=0},function(t,e,n){t.exports=function(t){return function(e,i,o){var s=n(3);(o=o&&s(o)||{}).hosts=o.hosts||["places-dsn.algolia.net","places-1.algolianet.com","places-2.algolianet.com","places-3.algolianet.com"],0!==arguments.length&&"object"!=typeof e&&void 0!==e||(e="",i="",o._allowEmptyCredentials=!0);var a=t(e,i,o),u=a.initIndex("places");return u.search=r("query","/1/places/query"),u.getObject=function(t,e){return this.as._jsonRequest({method:"GET",url:"/1/places/"+encodeURIComponent(t),hostType:"read",callback:e})},u}};var r=n(13)},function(t,e,n){"use strict";t.exports="3.30.0"},function(t,e,n){"use strict";t.exports=n(50)},function(t,e,n){"use strict";var r=n(15);n(1).element=r;var i=n(0);i.isArray=r.isArray,i.isFunction=r.isFunction,i.isObject=r.isPlainObject,i.bind=r.proxy,i.each=function(t,e){r.each(t,(function(t,n){return e(n,t)}))},i.map=r.map,i.mixin=r.extend,i.Event=r.Event;var o=n(51),s=n(16);function a(t,e,n,a){n=i.isArray(n)?n:[].slice.call(arguments,2);var u=r(t).each((function(t,i){var u=r(i),c=new s({el:u}),l=a||new o({input:u,eventBus:c,dropdownMenuContainer:e.dropdownMenuContainer,hint:void 0===e.hint||!!e.hint,minLength:e.minLength,autoselect:e.autoselect,autoselectOnBlur:e.autoselectOnBlur,tabAutocomplete:e.tabAutocomplete,openOnFocus:e.openOnFocus,templates:e.templates,debug:e.debug,clearOnSelected:e.clearOnSelected,cssClasses:e.cssClasses,datasets:n,keyboardShortcuts:e.keyboardShortcuts,appendTo:e.appendTo,autoWidth:e.autoWidth,ariaLabel:e.ariaLabel||i.getAttribute("aria-label")});u.data("aaAutocomplete",l)}));return u.autocomplete={},i.each(["open","close","getVal","setVal","destroy","getWrapper"],(function(t){u.autocomplete[t]=function(){var e,n=arguments;return u.each((function(i,o){var s=r(o).data("aaAutocomplete");e=s[t].apply(s,n)})),e}})),u}a.sources=o.sources,a.escapeHighlightedString=i.escapeHighlightedString;var u="autocomplete"in window,c=window.autocomplete;a.noConflict=function(){return u?window.autocomplete=c:delete window.autocomplete,a},t.exports=a},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n(16),s=n(52),a=n(59),u=n(17),c=n(11);function l(t){var e,n;if((t=t||{}).input||r.error("missing input"),this.isActivated=!1,this.debug=!!t.debug,this.autoselect=!!t.autoselect,this.autoselectOnBlur=!!t.autoselectOnBlur,this.openOnFocus=!!t.openOnFocus,this.minLength=r.isNumber(t.minLength)?t.minLength:1,this.autoWidth=void 0===t.autoWidth||!!t.autoWidth,this.clearOnSelected=!!t.clearOnSelected,this.tabAutocomplete=void 0===t.tabAutocomplete||!!t.tabAutocomplete,t.hint=!!t.hint,t.hint&&t.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=t.css=r.mixin({},c,t.appendTo?c.appendTo:{}),this.cssClasses=t.cssClasses=r.mixin({},c.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix=r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=t.listboxId=[this.cssClasses.root,"listbox",r.getUniqueId()].join("-");var s=function(t){var e,n,o,s;e=i.element(t.input),n=i.element(u.wrapper.replace("%ROOT%",t.cssClasses.root)).css(t.css.wrapper),t.appendTo||"block"!==e.css("display")||"table"!==e.parent().css("display")||n.css("display","table-cell");var a,c=u.dropdown.replace("%PREFIX%",t.cssClasses.prefix).replace("%DROPDOWN_MENU%",t.cssClasses.dropdownMenu);o=i.element(c).css(t.css.dropdown).attr({role:"listbox",id:t.listboxId}),t.templates&&t.templates.dropdownMenu&&o.html(r.templatify(t.templates.dropdownMenu)()),(s=e.clone().css(t.css.hint).css((a=e,{backgroundAttachment:a.css("background-attachment"),backgroundClip:a.css("background-clip"),backgroundColor:a.css("background-color"),backgroundImage:a.css("background-image"),backgroundOrigin:a.css("background-origin"),backgroundPosition:a.css("background-position"),backgroundRepeat:a.css("background-repeat"),backgroundSize:a.css("background-size")}))).val("").addClass(r.className(t.cssClasses.prefix,t.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),s.removeData&&s.removeData(),e.data("aaAttrs",{"aria-autocomplete":e.attr("aria-autocomplete"),"aria-expanded":e.attr("aria-expanded"),"aria-owns":e.attr("aria-owns"),autocomplete:e.attr("autocomplete"),dir:e.attr("dir"),role:e.attr("role"),spellcheck:e.attr("spellcheck"),style:e.attr("style"),type:e.attr("type")}),e.addClass(r.className(t.cssClasses.prefix,t.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":t.datasets&&t.datasets[0]&&t.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":t.ariaLabel,"aria-owns":t.listboxId}).css(t.hint?t.css.input:t.css.inputWithNoHint);try{e.attr("dir")||e.attr("dir","auto")}catch(t){}return(n=t.appendTo?n.appendTo(i.element(t.appendTo).eq(0)).eq(0):e.wrap(n).parent()).prepend(t.hint?s:null).append(o),{wrapper:n,input:e,hint:s,menu:o}}(t);this.$node=s.wrapper;var a=this.$input=s.input;e=s.menu,n=s.hint,t.dropdownMenuContainer&&i.element(t.dropdownMenuContainer).css("position","relative").append(e.css("top","0")),a.on("blur.aa",(function(t){var n=document.activeElement;r.isMsie()&&(e[0]===n||e[0].contains(n))&&(t.preventDefault(),t.stopImmediatePropagation(),r.defer((function(){a.focus()})))})),e.on("mousedown.aa",(function(t){t.preventDefault()})),this.eventBus=t.eventBus||new o({el:a}),this.dropdown=new l.Dropdown({appendTo:t.appendTo,wrapper:this.$node,menu:e,datasets:t.datasets,templates:t.templates,cssClasses:t.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new l.Input({input:a,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(t),this._setLanguageDirection()}r.mixin(l.prototype,{_bindKeyboardShortcuts:function(t){if(t.keyboardShortcuts){var e=this.$input,n=[];r.each(t.keyboardShortcuts,(function(t){"string"==typeof t&&(t=t.toUpperCase().charCodeAt(0)),n.push(t)})),i.element(document).keydown((function(t){var r=t.target||t.srcElement,i=r.tagName;if(!r.isContentEditable&&"INPUT"!==i&&"SELECT"!==i&&"TEXTAREA"!==i){var o=t.which||t.keyCode;-1!==n.indexOf(o)&&(e.focus(),t.stopPropagation(),t.preventDefault())}}))}},_onSuggestionClicked:function(t,e){var n;(n=this.dropdown.getDatumForSuggestion(e))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(t,e){var n=this.dropdown.getDatumForCursor(),r=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(r),n&&(e&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var t=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",t.width+"px");var e=this.$node[0].getBoundingClientRect(),n=t.bottom-e.top;this.$node.css("top",n+"px");var r=t.left-e.left;this.$node.css("left",r+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var t=this.input.getQuery();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var t,e;t=this.dropdown.getDatumForCursor(),e=this.dropdown.getDatumForTopSuggestion();var n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&t?this._select(t,n):this.autoselectOnBlur&&e?this._select(e,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(t,e){var n,r;n=this.dropdown.getDatumForCursor(),r=this.dropdown.getDatumForTopSuggestion();var i={selectionMethod:"enterKey"};n?(this._select(n,i),e.preventDefault()):this.autoselect&&r&&(this._select(r,i),e.preventDefault())},_onTabKeyed:function(t,e){var n;this.tabAutocomplete?(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),e.preventDefault()):this._autocomplete(!0):this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(t,e){this.input.clearHintIfInvalid(),e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var t=this.input.getLanguageDirection();this.dir!==t&&(this.dir=t,this.$node.css("direction",t),this.dropdown.setLanguageDirection(t))},_updateHint:function(){var t,e,n,i,o;(t=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(e=this.input.getInputValue(),n=s.normalizeQuery(e),i=r.escapeRegExChars(n),(o=new RegExp("^(?:"+i+")(.+$)","i").exec(t.value))?this.input.setHint(e+o[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(t){var e,n,r,i;e=this.input.getHint(),n=this.input.getQuery(),r=t||this.input.isCursorAtEnd(),e&&n!==e&&r&&((i=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(i.value),this.eventBus.trigger("autocompleted",i.raw,i.datasetName))},_select:function(t,e){void 0!==t.value&&this.input.setQuery(t.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(t.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",t.raw,t.datasetName,e).isDefaultPrevented()&&(this.dropdown.close(),r.defer(r.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var t=this.input.getInputValue();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(t){t=r.toStr(t),this.isActivated?this.input.setInputValue(t):(this.input.setQuery(t),this.input.setInputValue(t,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){var t,e,n;this.input.destroy(),this.dropdown.destroy(),t=this.$node,e=this.cssClasses,n=t.find(r.className(e.prefix,e.input)),r.each(n.data("aaAttrs"),(function(t,e){void 0===t?n.removeAttr(e):n.attr(e,t)})),n.detach().removeClass(r.className(e.prefix,e.input,!0)).insertAfter(t),n.removeData&&n.removeData("aaAttrs"),t.remove(),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),l.Dropdown=a,l.Input=s,l.sources=n(61),t.exports=l},function(t,e,n){"use strict";var r;r={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var i=n(0),o=n(1),s=n(10);function a(t){var e,n,s,a,u,c=this;(t=t||{}).input||i.error("input is missing"),e=i.bind(this._onBlur,this),n=i.bind(this._onFocus,this),s=i.bind(this._onKeydown,this),a=i.bind(this._onInput,this),this.$hint=o.element(t.hint),this.$input=o.element(t.input).on("blur.aa",e).on("focus.aa",n).on("keydown.aa",s),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=i.noop),i.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",(function(t){r[t.which||t.keyCode]||i.defer(i.bind(c._onInput,c,t))})):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,o.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}a.normalizeQuery=function(t){return(t||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},i.mixin(a.prototype,s,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(t){var e=r[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+"Keyed",t)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(t,e){var n,r,i;switch(t){case"tab":r=this.getHint(),i=this.getInputValue(),n=r&&r!==i&&!u(e);break;case"up":case"down":n=!u(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;switch(t){case"tab":n=!u(e);break;default:n=!0}return n},_checkInputValue:function(){var t,e,n,r,i;t=this.getInputValue(),r=t,i=this.query,n=!(!(e=a.normalizeQuery(r)===a.normalizeQuery(i))||!this.query)&&this.query.length!==t.length,this.query=t,e?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(t){this.query=t},getInputValue:function(){return this.$input.val()},setInputValue:function(t,e){void 0===t&&(t=this.query),this.$input.val(t),e?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(t){this.$input.attr("aria-activedescendant",t)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var t,e,n;n=(t=this.getInputValue())!==(e=this.getHint())&&0===e.indexOf(t),""!==t&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,e,n;return t=this.$input.val().length,e=this.$input[0].selectionStart,i.isNumber(e)?e===t:!document.selection||((n=document.selection.createRange()).moveStart("character",-t),t===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),t.exports=a},function(t,e,n){"use strict";var r,i,o,s=[n(54),n(55),n(56),n(57),n(58)],a=-1,u=[],c=!1;function l(){r&&i&&(r=!1,i.length?u=i.concat(u):a=-1,u.length&&h())}function h(){if(!r){c=!1,r=!0;for(var t=u.length,e=setTimeout(l);t;){for(i=u,u=[];i&&++a<t;)i[a].run();a=-1,t=u.length}i=null,a=-1,r=!1,clearTimeout(e)}}for(var f=-1,p=s.length;++f<p;)if(s[f]&&s[f].test&&s[f].test()){o=s[f].install(h);break}function d(t,e){this.fun=t,this.array=e}d.prototype.run=function(){var t=this.fun,e=this.array;switch(e.length){case 0:return t();case 1:return t(e[0]);case 2:return t(e[0],e[1]);case 3:return t(e[0],e[1],e[2]);default:return t.apply(null,e)}},t.exports=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new d(t,e)),c||r||(c=!0,o())}},function(t,e,n){"use strict";(function(t){e.test=function(){return void 0!==t&&!t.browser},e.install=function(e){return function(){t.nextTick(e)}}}).call(e,n(9))},function(t,e,n){"use strict";(function(t){var n=t.MutationObserver||t.WebKitMutationObserver;e.test=function(){return n},e.install=function(e){var r=0,i=new n(e),o=t.document.createTextNode("");return i.observe(o,{characterData:!0}),function(){o.data=r=++r%2}}}).call(e,n(4))},function(t,e,n){"use strict";(function(t){e.test=function(){return!t.setImmediate&&void 0!==t.MessageChannel},e.install=function(e){var n=new t.MessageChannel;return n.port1.onmessage=e,function(){n.port2.postMessage(0)}}}).call(e,n(4))},function(t,e,n){"use strict";(function(t){e.test=function(){return"document"in t&&"onreadystatechange"in t.document.createElement("script")},e.install=function(e){return function(){var n=t.document.createElement("script");return n.onreadystatechange=function(){e(),n.onreadystatechange=null,n.parentNode.removeChild(n),n=null},t.document.documentElement.appendChild(n),e}}}).call(e,n(4))},function(t,e,n){"use strict";e.test=function(){return!0},e.install=function(t){return function(){setTimeout(t,0)}}},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n(10),s=n(60),a=n(11);function u(t){var e,n,o,s=this;(t=t||{}).menu||r.error("menu is required"),r.isArray(t.datasets)||r.isObject(t.datasets)||r.error("1 or more datasets required"),t.datasets||r.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=t.minLength||0,this.templates={},this.appendTo=t.appendTo||!1,this.css=r.mixin({},a,t.appendTo?a.appendTo:{}),this.cssClasses=t.cssClasses=r.mixin({},a.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),e=r.bind(this._onSuggestionClick,this),n=r.bind(this._onSuggestionMouseEnter,this),o=r.bind(this._onSuggestionMouseLeave,this);var c=r.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=i.element(t.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,o).on("click.aa",c,e),this.$container=t.appendTo?t.wrapper:this.$menu,t.templates&&t.templates.header&&(this.templates.header=r.templatify(t.templates.header),this.$menu.prepend(this.templates.header())),t.templates&&t.templates.empty&&(this.templates.empty=r.templatify(t.templates.empty),this.$empty=i.element('<div class="'+r.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=r.map(t.datasets,(function(e){return function(t,e,n){return new u.Dataset(r.mixin({$menu:t,cssClasses:n},e))}(s.$menu,e,t.cssClasses)})),r.each(this.datasets,(function(t){var e=t.getRoot();e&&0===e.parent().length&&s.$menu.append(e),t.onSync("rendered",s._onRendered,s)})),t.templates&&t.templates.footer&&(this.templates.footer=r.templatify(t.templates.footer),this.$menu.append(this.templates.footer()));var l=this;i.element(window).resize((function(){l._redraw()}))}r.mixin(u.prototype,o,{_onSuggestionClick:function(t){this.trigger("suggestionClicked",i.element(t.currentTarget))},_onSuggestionMouseEnter:function(t){var e=i.element(t.currentTarget);if(!e.hasClass(r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout((function(){n._setCursor(e,!1)}),0)}},_onSuggestionMouseLeave:function(t){t.relatedTarget&&i.element(t.relatedTarget).closest("."+r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0||(this._removeCursor(),this.trigger("cursorRemoved"))},_onRendered:function(t,e){if(this.isEmpty=r.every(this.datasets,(function(t){return t.isEmpty()})),this.isEmpty)if(e.length>=this.minLength&&this.trigger("empty"),this.$empty)if(e.length<this.minLength)this._hide();else{var n=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(n),this.$empty.show(),this._show()}else r.any(this.datasets,(function(t){return t.templates&&t.templates.empty}))?e.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),e.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(r.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(r.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(t,e){t.first().addClass(r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",e)},_removeCursor:function(){this._getCursor().removeClass(r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(t){var e,n,r,i;this.isOpen&&(n=this._getCursor(),e=this._getSuggestions(),this._removeCursor(),-1!=(r=((r=e.index(n)+t)+1)%(e.length+1)-1)?(r<-1&&(r=e.length-1),this._setCursor(i=e.eq(r),!0),this._ensureVisible(i)):this.trigger("cursorRemoved"))},_ensureVisible:function(t){var e,n,r,i;n=(e=t.position().top)+t.height()+parseInt(t.css("margin-top"),10)+parseInt(t.css("margin-bottom"),10),r=this.$menu.scrollTop(),i=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),e<0?this.$menu.scrollTop(r+e):i<n&&this.$menu.scrollTop(r+(n-i))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(t){this.$menu.css("ltr"===t?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(t){var e=null;return t.length&&(e={raw:s.extractDatum(t),value:s.extractValue(t),datasetName:s.extractDatasetName(t)}),e},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(t){r.each(this.datasets,(function(e){e.update(t)}))},empty:function(){r.each(this.datasets,(function(t){t.clear()})),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){this.$menu.off(".aa"),this.$menu=null,r.each(this.datasets,(function(t){t.destroy()}))}}),u.Dataset=s,t.exports=u},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n(17),s=n(11),a=n(10);function u(t){var e,n,a,u;(t=t||{}).templates=t.templates||{},t.source||r.error("missing source"),t.name&&(e=t.name,!/^[_a-zA-Z0-9-]+$/.test(e))&&r.error("invalid dataset name: "+t.name),this.query=null,this._isEmpty=!0,this.highlight=!!t.highlight,this.name=void 0===t.name||null===t.name?r.getUniqueId():t.name,this.source=t.source,this.displayFn=(n=(n=t.display||t.displayKey)||"value",r.isFunction(n)?n:function(t){return t[n]}),this.debounce=t.debounce,this.cache=!1!==t.cache,this.templates=(a=t.templates,u=this.displayFn,{empty:a.empty&&r.templatify(a.empty),header:a.header&&r.templatify(a.header),footer:a.footer&&r.templatify(a.footer),suggestion:a.suggestion||function(t){return"<p>"+u(t)+"</p>"}}),this.css=r.mixin({},s,t.appendTo?s.appendTo:{}),this.cssClasses=t.cssClasses=r.mixin({},s.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var c=r.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=t.$menu&&t.$menu.find(c+"-"+this.name).length>0?i.element(t.$menu.find(c+"-"+this.name)[0]):i.element(o.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=t.$menu,this.clearCachedSuggestions()}u.extractDatasetName=function(t){return i.element(t).data("aaDataset")},u.extractValue=function(t){return i.element(t).data("aaValue")},u.extractDatum=function(t){var e=i.element(t).data("aaDatum");return"string"==typeof e&&(e=JSON.parse(e)),e},r.mixin(u.prototype,a,{_render:function(t,e){if(this.$el){var n,s=this,a=[].slice.call(arguments,2);if(this.$el.empty(),n=e&&e.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(u.apply(this,a)).prepend(s.templates.header?l.apply(this,a):null).append(s.templates.footer?h.apply(this,a):null);else if(n)this.$el.html(c.apply(this,a)).prepend(s.templates.header?l.apply(this,a):null).append(s.templates.footer?h.apply(this,a):null);else if(e&&!Array.isArray(e))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",t)}function u(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!0}].concat(e),s.templates.empty.apply(this,e)}function c(){var t,n,a=[].slice.call(arguments,0),u=this,c=o.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return t=i.element(c).css(this.css.suggestions),n=r.map(e,l),t.append.apply(t,n),t;function l(t){var e,n=o.suggestion.replace("%PREFIX%",u.cssClasses.prefix).replace("%SUGGESTION%",u.cssClasses.suggestion);return(e=i.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(s.templates.suggestion.apply(this,[t].concat(a)))).data("aaDataset",s.name),e.data("aaValue",s.displayFn(t)||void 0),e.data("aaDatum",JSON.stringify(t)),e.children().each((function(){i.element(this).css(u.css.suggestionChild)})),e}}function l(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),s.templates.header.apply(this,e)}function h(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),s.templates.footer.apply(this,e)}},getRoot:function(){return this.$el},update:function(t){function e(e){if(!this.canceled&&t===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(t,e,n),this._render.apply(this,[t,e].concat(n))}}if(this.query=t,this.canceled=!1,this.shouldFetchFromCache(t))e.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,r=function(){n.canceled||n.source(t,e.bind(n))};this.debounce?(clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((function(){n.debounceTimeout=null,r()}),this.debounce)):r()}},cacheSuggestions:function(t,e,n){this.cachedQuery=t,this.cachedSuggestions=e,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(t){return this.cache&&this.cachedQuery===t&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.cancel(),this.$el.empty(),this.trigger("rendered","")},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),t.exports=u},function(t,e,n){"use strict";t.exports={hits:n(62),popularIn:n(63)}},function(t,e,n){"use strict";var r=n(0),i=n(18),o=n(19);t.exports=function(t,e){var n=o(t.as._ua);return n&&n[0]>=3&&n[1]>20&&((e=e||{}).additionalUA="autocomplete.js "+i),function(n,i){t.search(n,e,(function(t,e){t?r.error(t.message):i(e.hits,e)}))}}},function(t,e,n){"use strict";var r=n(0),i=n(18),o=n(19);t.exports=function(t,e,n,s){var a=o(t.as._ua);if(a&&a[0]>=3&&a[1]>20&&((e=e||{}).additionalUA="autocomplete.js "+i),!n.source)return r.error("Missing 'source' key");var u=r.isFunction(n.source)?n.source:function(t){return t[n.source]};if(!n.index)return r.error("Missing 'index' key");var c=n.index;return s=s||{},function(a,l){t.search(a,e,(function(t,a){if(t)r.error(t.message);else{if(a.hits.length>0){var h=a.hits[0],f=r.mixin({hitsPerPage:0},n);delete f.source,delete f.index;var p=o(c.as._ua);return p&&p[0]>=3&&p[1]>20&&(e.additionalUA="autocomplete.js "+i),void c.search(u(h),f,(function(t,e){if(t)r.error(t.message);else{var n=[];if(s.includeAll){var i=s.allTitle||"All departments";n.push(r.mixin({facet:{value:i,count:e.nbHits}},r.cloneDeep(h)))}r.each(e.facets,(function(t,e){r.each(t,(function(t,i){n.push(r.mixin({facet:{facet:e,value:i,count:t}},r.cloneDeep(h)))}))}));for(var o=1;o<a.hits.length;++o)n.push(a.hits[o]);l(n,a)}}))}l([])}}))}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="algolia-docsearch-suggestion",i={suggestion:'\n <a class="'+r+"\n {{#isCategoryHeader}}"+r+"__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}"+r+'__secondary{{/isSubCategoryHeader}}\n "\n aria-label="Link to the result"\n href="{{{url}}}"\n >\n <div class="'+r+'--category-header">\n <span class="'+r+'--category-header-lvl0">{{{category}}}</span>\n </div>\n <div class="'+r+'--wrapper">\n <div class="'+r+'--subcategory-column">\n <span class="'+r+'--subcategory-column-text">{{{subcategory}}}</span>\n </div>\n {{#isTextOrSubcategoryNonEmpty}}\n <div class="'+r+'--content">\n <div class="'+r+'--subcategory-inline">{{{subcategory}}}</div>\n <div class="'+r+'--title">{{{title}}}</div>\n {{#text}}<div class="'+r+'--text">{{{text}}}</div>{{/text}}\n </div>\n {{/isTextOrSubcategoryNonEmpty}}\n </div>\n </a>\n ',suggestionSimple:'\n <div class="'+r+"\n {{#isCategoryHeader}}"+r+"__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}"+r+'__secondary{{/isSubCategoryHeader}}\n suggestion-layout-simple\n ">\n <div class="'+r+'--category-header">\n {{^isLvl0}}\n <span class="'+r+"--category-header-lvl0 "+r+'--category-header-item">{{{category}}}</span>\n {{^isLvl1}}\n {{^isLvl1EmptyOrDuplicate}}\n <span class="'+r+"--category-header-lvl1 "+r+'--category-header-item">\n {{{subcategory}}}\n </span>\n {{/isLvl1EmptyOrDuplicate}}\n {{/isLvl1}}\n {{/isLvl0}}\n <div class="'+r+"--title "+r+'--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="'+r+'--wrapper">\n {{#text}}\n <div class="'+r+'--content">\n <div class="'+r+'--text">{{{text}}}</div>\n </div>\n {{/text}}\n </div>\n </div>\n ',footer:'\n <div class="algolia-docsearch-footer">\n Search by <a class="algolia-docsearch-footer--logo" href="https://www.algolia.com/docsearch">Algolia</a>\n </div>\n ',empty:'\n <div class="'+r+'">\n <div class="'+r+'--wrapper">\n <div class="'+r+"--content "+r+'--no-results">\n <div class="'+r+'--title">\n <div class="'+r+'--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 '};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=n(20),s=(r=o)&&r.__esModule?r:{default:r},a={mergeKeyWithParent:function(t,e){if(void 0===t[e])return t;if("object"!==i(t[e]))return t;var n=s.default.extend({},t,t[e]);return delete n[e],n},groupBy:function(t,e){var n={};return s.default.each(t,(function(t,r){if(void 0===r[e])throw new Error("[groupBy]: Object has no key "+e);var i=r[e];"string"==typeof i&&(i=i.toLowerCase()),Object.prototype.hasOwnProperty.call(n,i)||(n[i]=[]),n[i].push(r)})),n},values:function(t){return Object.keys(t).map((function(e){return t[e]}))},flatten:function(t){var e=[];return t.forEach((function(t){Array.isArray(t)?t.forEach((function(t){e.push(t)})):e.push(t)})),e},flattenAndFlagFirst:function(t,e){var n=this.values(t).map((function(t){return t.map((function(t,n){return t[e]=0===n,t}))}));return this.flatten(n)},compact:function(t){var e=[];return t.forEach((function(t){t&&e.push(t)})),e},getHighlightedValue:function(t,e){return t._highlightResult&&t._highlightResult.hierarchy_camel&&t._highlightResult.hierarchy_camel[e]&&t._highlightResult.hierarchy_camel[e].matchLevel&&"none"!==t._highlightResult.hierarchy_camel[e].matchLevel&&t._highlightResult.hierarchy_camel[e].value?t._highlightResult.hierarchy_camel[e].value:t._highlightResult&&t._highlightResult&&t._highlightResult[e]&&t._highlightResult[e].value?t._highlightResult[e].value:t[e]},getSnippetedValue:function(t,e){if(!t._snippetResult||!t._snippetResult[e]||!t._snippetResult[e].value)return t[e];var n=t._snippetResult[e].value;return n[0]!==n[0].toUpperCase()&&(n="…"+n),-1===[".","!","?"].indexOf(n[n.length-1])&&(n+="…"),n},deepClone:function(t){return JSON.parse(JSON.stringify(t))}};e.default=a}])},t.exports=r()},function(t,e,n){n(0),n(9)},function(t,e,n){var r,i,o;!function(s,a){a=a.bind(null,s,s.document),t.exports?a(n(0)):(i=[n(0)],void 0===(o="function"==typeof(r=a)?r.apply(e,i):r)||(t.exports=o))}(window,(function(t,e,n){"use strict";var r,i,o={};function s(t,n,r){if(!o[t]){var i=e.createElement(n?"link":"script"),s=e.getElementsByTagName("script")[0];n?(i.rel="stylesheet",i.href=t):(i.onload=function(){i.onerror=null,i.onload=null,r()},i.onerror=i.onload,i.src=t),o[t]=!0,o[i.src||i.href]=!0,s.parentNode.insertBefore(i,s)}}e.addEventListener&&(i=/\(|\)|\s|'/,r=function(t,n){var r=e.createElement("img");r.onload=function(){r.onload=null,r.onerror=null,r=null,n()},r.onerror=r.onload,r.src=t,r&&r.complete&&r.onload&&r.onload()},addEventListener("lazybeforeunveil",(function(t){var e,o,a;if(t.detail.instance==n&&!t.defaultPrevented){var u=t.target;if("none"==u.preload&&(u.preload=u.getAttribute("data-preload")||"auto"),null!=u.getAttribute("data-autoplay"))if(u.getAttribute("data-expand")&&!u.autoplay)try{u.play()}catch(t){}else requestAnimationFrame((function(){u.setAttribute("data-expand","-10"),n.aC(u,n.cfg.lazyClass)}));(e=u.getAttribute("data-link"))&&s(e,!0),(e=u.getAttribute("data-script"))&&(t.detail.firesLoad=!0,s(e,null,(function(){t.detail.firesLoad=!1,n.fire(u,"_lazyloaded",{},!0,!0)}))),(e=u.getAttribute("data-require"))&&(n.cfg.requireJs?n.cfg.requireJs([e]):s(e)),(o=u.getAttribute("data-bg"))&&(t.detail.firesLoad=!0,r(o,(function(){u.style.backgroundImage="url("+(i.test(o)?JSON.stringify(o):o)+")",t.detail.firesLoad=!1,n.fire(u,"_lazyloaded",{},!0,!0)}))),(a=u.getAttribute("data-poster"))&&(t.detail.firesLoad=!0,r(a,(function(){u.poster=a,t.detail.firesLoad=!1,n.fire(u,"_lazyloaded",{},!0,!0)})))}}),!1))}))},function(t,e){for(var n=document.getElementsByClassName("js-toggle"),r=0;r<n.length;r++)n[r].addEventListener("click",i,!1);function i(){for(var t=this.dataset.target.split(" "),e=document.querySelector(".mobilemenu:not(.dn)"),n=document.querySelector(".desktopmenu:not(.dn)"),r=document.querySelector(".desktopmenu:not(.dn)"),i=0;i<t.length;i++){var o=document.querySelectorAll(t[i]);[].forEach.call(o,(function(t){return t.classList.contains("dn")?t.classList.remove("dn"):t.classList.add("dn"),!1})),e&&e.classList.add("dn"),n&&n.classList.add("dn"),r&&r.classList.remove("db")}}},function(t,e,n){n(12)},function(t,e,n){var r,i;
-/**
- scrolldir - Vertical scroll direction in CSS
- @version v1.5.3
- @link https://github.com/yowainwright/scrolldir.git
- @author Patrick Fisher <[email protected]>, Jeffry Wainwright <[email protected]>
- @license MIT
-**/void 0===(i="function"==typeof(r=function(){"use strict";var t,e,n="data-scrolldir",r="down",i=64,o=document.documentElement,s=window,a=document.body,u=Array(32),c=0;function l(){var l=s.scrollY||s.pageYOffset,h=t.timeStamp,f="down"===r?Math.max:Math.min,p=a.scrollHeight-s.innerHeight;if(l=Math.max(0,l),l=Math.min(p,l),u.unshift({y:l,t:h}),u.pop(),l===f(e,l))return c=h,void(e=l);var d=h-512;if(c<d){e=l;for(var g=0;g<32&&u[g]&&!(u[g].t<d);g+=1)e=f(e,u[g].y)}Math.abs(l-e)>i&&(e=l,c=h,r="down"===r?"up":"down",o.setAttribute(n,r))}function h(e){return t=e,s.requestAnimationFrame(l)}e=s.scrollY||s.pageYOffset,o.setAttribute(n,r),s.addEventListener("scroll",h)})?r.call(e,n,e,t):r)||(t.exports=i)},function(t,e){!function(){"use strict";if("querySelector"in document&&"addEventListener"in window&&Array.prototype.forEach){var t=document.querySelectorAll("#TableOfContents ul li a");[].forEach.call(t,(function(t){t.addEventListener("click",(function(e){e.preventDefault();var n=t.getAttribute("href"),r=document.querySelector(n),i=t.getAttribute("data-speed");r&&function(t,e){var n,r=window.pageYOffset,i=t.offsetTop,o=(i-r)/(e/16);n=o>=0?function(){var t=window.pageYOffset;(t>=i-o||window.innerHeight+t>=document.body.offsetHeight)&&clearInterval(s)}:function(){window.pageYOffset<=(i||0)&&clearInterval(s)};var s=setInterval((function(){window.scrollBy(0,o),n()}),16)}(r,i||500)}),!1)}))}}()},function(t,e){var n,r=document.querySelectorAll("[data-toggle-tab]"),i=document.querySelectorAll("[data-pane]");function o(t){if(t.target){t.preventDefault();var e=t.currentTarget.getAttribute("data-toggle-tab")}else e=t;window.localStorage&&window.localStorage.setItem("configLangPref",e);for(var n=document.querySelectorAll("[data-toggle-tab='"+e+"']"),o=document.querySelectorAll("[data-pane='"+e+"']"),s=0;s<r.length;s++)r[s].classList.remove("active"),i[s].classList.remove("active");for(s=0;s<n.length;s++)n[s].classList.add("active"),o[s].classList.add("active")}for(n=0;n<r.length;n++)r[n].addEventListener("click",o);window.localStorage.getItem("configLangPref")&&o(window.localStorage.getItem("configLangPref"))},function(t,e){document.documentElement.className=document.documentElement.className.replace(/\bno-js\b/,"js")}]); \ No newline at end of file
+ */var r;r=function(){"use strict";function t(t){return"function"==typeof t}var r=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},i=0,o=void 0,s=void 0,a=function(t,e){p[i]=t,p[i+1]=e,2===(i+=2)&&(s?s(g):w())},u="undefined"!=typeof window?window:void 0,c=u||{},l=c.MutationObserver||c.WebKitMutationObserver,h="undefined"==typeof self&&void 0!==e&&"[object process]"==={}.toString.call(e),f="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function d(){var t=setTimeout;return function(){return t(g,1)}}var p=new Array(1e3);function g(){for(var t=0;t<i;t+=2)(0,p[t])(p[t+1]),p[t]=void 0,p[t+1]=void 0;i=0}var m,y,v,b,w=void 0;function _(t,e){var n=this,r=new this.constructor(C);void 0===r[S]&&D(r);var i=n._state;if(i){var o=arguments[i-1];a((function(){return R(i,r,o,n._result)}))}else I(n,r,t,e);return r}function x(t){if(t&&"object"==typeof t&&t.constructor===this)return t;var e=new this(C);return k(e,t),e}h?w=function(){return e.nextTick(g)}:l?(y=0,v=new l(g),b=document.createTextNode(""),v.observe(b,{characterData:!0}),w=function(){b.data=y=++y%2}):f?((m=new MessageChannel).port1.onmessage=g,w=function(){return m.port2.postMessage(0)}):w=void 0===u?function(){try{var t=Function("return this")().require("vertx");return void 0!==(o=t.runOnLoop||t.runOnContext)?function(){o(g)}:d()}catch(t){return d()}}():d();var S=Math.random().toString(36).substring(2);function C(){}var A={error:null};function E(t){try{return t.then}catch(t){return A.error=t,A}}function T(e,n,r){n.constructor===e.constructor&&r===_&&n.constructor.resolve===x?function(t,e){1===e._state?N(t,e._result):2===e._state?j(t,e._result):I(e,void 0,(function(e){return k(t,e)}),(function(e){return j(t,e)}))}(e,n):r===A?(j(e,A.error),A.error=null):void 0===r?N(e,n):t(r)?function(t,e,n){a((function(t){var r=!1,i=function(t,e,n,r){try{t.call(e,n,r)}catch(t){return t}}(n,e,(function(n){r||(r=!0,e!==n?k(t,n):N(t,n))}),(function(e){r||(r=!0,j(t,e))}),t._label);!r&&i&&(r=!0,j(t,i))}),t)}(e,n,r):N(e,n)}function k(t,e){var n,r;t===e?j(t,new TypeError("You cannot resolve a promise with itself")):(r=typeof(n=e),null===n||"object"!==r&&"function"!==r?N(t,e):T(t,e,E(e)))}function O(t){t._onerror&&t._onerror(t._result),L(t)}function N(t,e){void 0===t._state&&(t._result=e,t._state=1,0!==t._subscribers.length&&a(L,t))}function j(t,e){void 0===t._state&&(t._state=2,t._result=e,a(O,t))}function I(t,e,n,r){var i=t._subscribers,o=i.length;t._onerror=null,i[o]=e,i[o+1]=n,i[o+2]=r,0===o&&t._state&&a(L,t)}function L(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,i=void 0,o=t._result,s=0;s<e.length;s+=3)r=e[s],i=e[s+n],r?R(n,r,i,o):i(o);t._subscribers.length=0}}function R(e,n,r,i){var o=t(r),s=void 0,a=void 0,u=void 0,c=void 0;if(o){if((s=function(t,e){try{return t(e)}catch(t){return A.error=t,A}}(r,i))===A?(c=!0,a=s.error,s.error=null):u=!0,n===s)return void j(n,new TypeError("A promises callback cannot return that same promise."))}else s=i,u=!0;void 0!==n._state||(o&&u?k(n,s):c?j(n,a):1===e?N(n,s):2===e&&j(n,s))}var P=0;function D(t){t[S]=P++,t._state=void 0,t._result=void 0,t._subscribers=[]}var q=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(C),this.promise[S]||D(this.promise),r(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?N(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&N(this.promise,this._result))):j(this.promise,new Error("Array Methods must be provided an Array"))}return t.prototype._enumerate=function(t){for(var e=0;void 0===this._state&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===x){var i=E(t);if(i===_&&void 0!==t._state)this._settledAt(t._state,e,t._result);else if("function"!=typeof i)this._remaining--,this._result[e]=t;else if(n===$){var o=new n(C);T(o,t,i),this._willSettleAt(o,e)}else this._willSettleAt(new n((function(e){return e(t)})),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,n){var r=this.promise;void 0===r._state&&(this._remaining--,2===t?j(r,n):this._result[e]=n),0===this._remaining&&N(r,this._result)},t.prototype._willSettleAt=function(t,e){var n=this;I(t,void 0,(function(t){return n._settledAt(1,e,t)}),(function(t){return n._settledAt(2,e,t)}))},t}(),$=function(){function t(e){this[S]=P++,this._result=this._state=void 0,this._subscribers=[],C!==e&&("function"!=typeof e&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof t?function(t,e){try{e((function(e){k(t,e)}),(function(e){j(t,e)}))}catch(e){j(t,e)}}(this,e):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}())}return t.prototype.catch=function(t){return this.then(null,t)},t.prototype.finally=function(t){var e=this.constructor;return this.then((function(n){return e.resolve(t()).then((function(){return n}))}),(function(n){return e.resolve(t()).then((function(){throw n}))}))},t}();return $.prototype.then=_,$.all=function(t){return new q(this,t).promise},$.race=function(t){var e=this;return r(t)?new e((function(n,r){for(var i=t.length,o=0;o<i;o++)e.resolve(t[o]).then(n,r)})):new e((function(t,e){return e(new TypeError("You must pass an array to race."))}))},$.resolve=x,$.reject=function(t){var e=new this(C);return j(e,t),e},$._setScheduler=function(t){s=t},$._setAsap=function(t){a=t},$._asap=a,$.polyfill=function(){var t=void 0;if(void 0!==n)t=n;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var e=t.Promise;if(e){var r=null;try{r=Object.prototype.toString.call(e.resolve())}catch(t){}if("[object Promise]"===r&&!e.cast)return}t.Promise=$},$.Promise=$,$},t.exports=r()}).call(e,n(9),n(4))},function(t,e,n){"use strict";t.exports=function(t,e){return/\?/.test(t)?t+="&":t+="?",t+r(e)};var r=n(45)},function(t,e,n){"use strict";var r=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,a){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"==typeof t?o(s(t),(function(s){var a=encodeURIComponent(r(s))+n;return i(t[s])?o(t[s],(function(t){return a+encodeURIComponent(r(t))})).join(e):a+encodeURIComponent(r(t[s]))})).join(e):a?encodeURIComponent(r(a))+n+encodeURIComponent(r(t)):""};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function o(t,e){if(t.map)return t.map(e);for(var n=[],r=0;r<t.length;r++)n.push(e(t[r],r));return n}var s=Object.keys||function(t){var e=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.push(n);return e}},function(t,e,n){"use strict";t.exports=function(t,e,n){if("GET"===e.method){e.debug("JSONP: start");var o=!1,s=!1;i+=1;var a=document.getElementsByTagName("head")[0],u=document.createElement("script"),c="algoliaJSONP_"+i,l=!1;window[c]=function(t){!function(){try{delete window[c],delete window[c+"_loaded"]}catch(t){window[c]=window[c+"_loaded"]=void 0}}(),s?e.debug("JSONP: Late answer, ignoring"):(o=!0,d(),n(null,{body:t,responseText:JSON.stringify(t)}))},t+="&callback="+c,e.jsonBody&&e.jsonBody.params&&(t+="&"+e.jsonBody.params);var h=setTimeout((function(){e.debug("JSONP: Script timeout"),s=!0,d(),n(new r.RequestTimeout)}),e.timeouts.complete);u.onreadystatechange=function(){"loaded"!==this.readyState&&"complete"!==this.readyState||f()},u.onload=f,u.onerror=function(){e.debug("JSONP: Script error"),l||s||(d(),n(new r.JSONPScriptError))},u.async=!0,u.defer=!0,u.src=t,a.appendChild(u)}else n(new Error("Method "+e.method+" "+t+" is not supported by JSONP."));function f(){e.debug("JSONP: success"),l||s||(l=!0,o||(e.debug("JSONP: Fail. Script loaded but did not call the callback"),d(),n(new r.JSONPScriptFail)))}function d(){clearTimeout(h),u.onload=null,u.onreadystatechange=null,u.onerror=null,a.removeChild(u)}};var r=n(5),i=0},function(t,e,n){t.exports=function(t){return function(e,i,o){var s=n(3);(o=o&&s(o)||{}).hosts=o.hosts||["places-dsn.algolia.net","places-1.algolianet.com","places-2.algolianet.com","places-3.algolianet.com"],0!==arguments.length&&"object"!=typeof e&&void 0!==e||(e="",i="",o._allowEmptyCredentials=!0);var a=t(e,i,o),u=a.initIndex("places");return u.search=r("query","/1/places/query"),u.getObject=function(t,e){return this.as._jsonRequest({method:"GET",url:"/1/places/"+encodeURIComponent(t),hostType:"read",callback:e})},u}};var r=n(13)},function(t,e,n){"use strict";t.exports="3.30.0"},function(t,e,n){"use strict";t.exports=n(50)},function(t,e,n){"use strict";var r=n(15);n(1).element=r;var i=n(0);i.isArray=r.isArray,i.isFunction=r.isFunction,i.isObject=r.isPlainObject,i.bind=r.proxy,i.each=function(t,e){r.each(t,(function(t,n){return e(n,t)}))},i.map=r.map,i.mixin=r.extend,i.Event=r.Event;var o=n(51),s=n(16);function a(t,e,n,a){n=i.isArray(n)?n:[].slice.call(arguments,2);var u=r(t).each((function(t,i){var u=r(i),c=new s({el:u}),l=a||new o({input:u,eventBus:c,dropdownMenuContainer:e.dropdownMenuContainer,hint:void 0===e.hint||!!e.hint,minLength:e.minLength,autoselect:e.autoselect,autoselectOnBlur:e.autoselectOnBlur,tabAutocomplete:e.tabAutocomplete,openOnFocus:e.openOnFocus,templates:e.templates,debug:e.debug,clearOnSelected:e.clearOnSelected,cssClasses:e.cssClasses,datasets:n,keyboardShortcuts:e.keyboardShortcuts,appendTo:e.appendTo,autoWidth:e.autoWidth});u.data("aaAutocomplete",l)}));return u.autocomplete={},i.each(["open","close","getVal","setVal","destroy","getWrapper"],(function(t){u.autocomplete[t]=function(){var e,n=arguments;return u.each((function(i,o){var s=r(o).data("aaAutocomplete");e=s[t].apply(s,n)})),e}})),u}a.sources=o.sources,a.escapeHighlightedString=i.escapeHighlightedString;var u="autocomplete"in window,c=window.autocomplete;a.noConflict=function(){return u?window.autocomplete=c:delete window.autocomplete,a},t.exports=a},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n(16),s=n(52),a=n(59),u=n(17),c=n(11);function l(t){var e,n;if((t=t||{}).input||r.error("missing input"),this.isActivated=!1,this.debug=!!t.debug,this.autoselect=!!t.autoselect,this.autoselectOnBlur=!!t.autoselectOnBlur,this.openOnFocus=!!t.openOnFocus,this.minLength=r.isNumber(t.minLength)?t.minLength:1,this.autoWidth=void 0===t.autoWidth||!!t.autoWidth,this.clearOnSelected=!!t.clearOnSelected,this.tabAutocomplete=void 0===t.tabAutocomplete||!!t.tabAutocomplete,t.hint=!!t.hint,t.hint&&t.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=t.css=r.mixin({},c,t.appendTo?c.appendTo:{}),this.cssClasses=t.cssClasses=r.mixin({},c.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix=r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=t.listboxId=[this.cssClasses.root,"listbox",r.getUniqueId()].join("-");var s=function(t){var e,n,o,s;e=i.element(t.input),n=i.element(u.wrapper.replace("%ROOT%",t.cssClasses.root)).css(t.css.wrapper),t.appendTo||"block"!==e.css("display")||"table"!==e.parent().css("display")||n.css("display","table-cell");var a,c=u.dropdown.replace("%PREFIX%",t.cssClasses.prefix).replace("%DROPDOWN_MENU%",t.cssClasses.dropdownMenu);o=i.element(c).css(t.css.dropdown).attr({role:"listbox",id:t.listboxId}),t.templates&&t.templates.dropdownMenu&&o.html(r.templatify(t.templates.dropdownMenu)()),(s=e.clone().css(t.css.hint).css((a=e,{backgroundAttachment:a.css("background-attachment"),backgroundClip:a.css("background-clip"),backgroundColor:a.css("background-color"),backgroundImage:a.css("background-image"),backgroundOrigin:a.css("background-origin"),backgroundPosition:a.css("background-position"),backgroundRepeat:a.css("background-repeat"),backgroundSize:a.css("background-size")}))).val("").addClass(r.className(t.cssClasses.prefix,t.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),s.removeData&&s.removeData(),e.data("aaAttrs",{"aria-autocomplete":e.attr("aria-autocomplete"),"aria-expanded":e.attr("aria-expanded"),"aria-owns":e.attr("aria-owns"),autocomplete:e.attr("autocomplete"),dir:e.attr("dir"),role:e.attr("role"),spellcheck:e.attr("spellcheck"),style:e.attr("style"),type:e.attr("type")}),e.addClass(r.className(t.cssClasses.prefix,t.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":t.datasets&&t.datasets[0]&&t.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":t.ariaLabel,"aria-owns":t.listboxId}).css(t.hint?t.css.input:t.css.inputWithNoHint);try{e.attr("dir")||e.attr("dir","auto")}catch(t){}return(n=t.appendTo?n.appendTo(i.element(t.appendTo).eq(0)).eq(0):e.wrap(n).parent()).prepend(t.hint?s:null).append(o),{wrapper:n,input:e,hint:s,menu:o}}(t);this.$node=s.wrapper;var a=this.$input=s.input;e=s.menu,n=s.hint,t.dropdownMenuContainer&&i.element(t.dropdownMenuContainer).css("position","relative").append(e.css("top","0")),a.on("blur.aa",(function(t){var n=document.activeElement;r.isMsie()&&(e[0]===n||e[0].contains(n))&&(t.preventDefault(),t.stopImmediatePropagation(),r.defer((function(){a.focus()})))})),e.on("mousedown.aa",(function(t){t.preventDefault()})),this.eventBus=t.eventBus||new o({el:a}),this.dropdown=new l.Dropdown({appendTo:t.appendTo,wrapper:this.$node,menu:e,datasets:t.datasets,templates:t.templates,cssClasses:t.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new l.Input({input:a,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(t),this._setLanguageDirection()}r.mixin(l.prototype,{_bindKeyboardShortcuts:function(t){if(t.keyboardShortcuts){var e=this.$input,n=[];r.each(t.keyboardShortcuts,(function(t){"string"==typeof t&&(t=t.toUpperCase().charCodeAt(0)),n.push(t)})),i.element(document).keydown((function(t){var r=t.target||t.srcElement,i=r.tagName;if(!r.isContentEditable&&"INPUT"!==i&&"SELECT"!==i&&"TEXTAREA"!==i){var o=t.which||t.keyCode;-1!==n.indexOf(o)&&(e.focus(),t.stopPropagation(),t.preventDefault())}}))}},_onSuggestionClicked:function(t,e){var n;(n=this.dropdown.getDatumForSuggestion(e))&&this._select(n)},_onCursorMoved:function(t,e){var n=this.dropdown.getDatumForCursor(),r=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(r),n&&(e&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var t=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",t.width+"px");var e=this.$node[0].getBoundingClientRect(),n=t.bottom-e.top;this.$node.css("top",n+"px");var r=t.left-e.left;this.$node.css("left",r+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var t=this.input.getQuery();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var t,e;t=this.dropdown.getDatumForCursor(),e=this.dropdown.getDatumForTopSuggestion(),this.debug||(this.autoselectOnBlur&&t?this._select(t):this.autoselectOnBlur&&e?this._select(e):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(t,e){var n,r;n=this.dropdown.getDatumForCursor(),r=this.dropdown.getDatumForTopSuggestion(),n?(this._select(n),e.preventDefault()):this.autoselect&&r&&(this._select(r),e.preventDefault())},_onTabKeyed:function(t,e){var n;this.tabAutocomplete?(n=this.dropdown.getDatumForCursor())?(this._select(n),e.preventDefault()):this._autocomplete(!0):this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var t=this.input.getQuery();this.dropdown.isEmpty&&t.length>=this.minLength?this.dropdown.update(t):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(t,e){this.input.clearHintIfInvalid(),e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var t=this.input.getLanguageDirection();this.dir!==t&&(this.dir=t,this.$node.css("direction",t),this.dropdown.setLanguageDirection(t))},_updateHint:function(){var t,e,n,i,o;(t=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(e=this.input.getInputValue(),n=s.normalizeQuery(e),i=r.escapeRegExChars(n),(o=new RegExp("^(?:"+i+")(.+$)","i").exec(t.value))?this.input.setHint(e+o[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(t){var e,n,r,i;e=this.input.getHint(),n=this.input.getQuery(),r=t||this.input.isCursorAtEnd(),e&&n!==e&&r&&((i=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(i.value),this.eventBus.trigger("autocompleted",i.raw,i.datasetName))},_select:function(t){void 0!==t.value&&this.input.setQuery(t.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(t.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",t.raw,t.datasetName).isDefaultPrevented()&&(this.dropdown.close(),r.defer(r.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var t=this.input.getInputValue();t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(t){t=r.toStr(t),this.isActivated?this.input.setInputValue(t):(this.input.setQuery(t),this.input.setInputValue(t,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){var t,e,n;this.input.destroy(),this.dropdown.destroy(),t=this.$node,e=this.cssClasses,n=t.find(r.className(e.prefix,e.input)),r.each(n.data("aaAttrs"),(function(t,e){void 0===t?n.removeAttr(e):n.attr(e,t)})),n.detach().removeClass(r.className(e.prefix,e.input,!0)).insertAfter(t),n.removeData&&n.removeData("aaAttrs"),t.remove(),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),l.Dropdown=a,l.Input=s,l.sources=n(61),t.exports=l},function(t,e,n){"use strict";var r;r={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var i=n(0),o=n(1),s=n(10);function a(t){var e,n,s,a,u,c=this;(t=t||{}).input||i.error("input is missing"),e=i.bind(this._onBlur,this),n=i.bind(this._onFocus,this),s=i.bind(this._onKeydown,this),a=i.bind(this._onInput,this),this.$hint=o.element(t.hint),this.$input=o.element(t.input).on("blur.aa",e).on("focus.aa",n).on("keydown.aa",s),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=i.noop),i.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",(function(t){r[t.which||t.keyCode]||i.defer(i.bind(c._onInput,c,t))})):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=(u=this.$input,o.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:u.css("font-family"),fontSize:u.css("font-size"),fontStyle:u.css("font-style"),fontVariant:u.css("font-variant"),fontWeight:u.css("font-weight"),wordSpacing:u.css("word-spacing"),letterSpacing:u.css("letter-spacing"),textIndent:u.css("text-indent"),textRendering:u.css("text-rendering"),textTransform:u.css("text-transform")}).insertAfter(u))}function u(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}a.normalizeQuery=function(t){return(t||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},i.mixin(a.prototype,s,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(t){var e=r[t.which||t.keyCode];this._managePreventDefault(e,t),e&&this._shouldTrigger(e,t)&&this.trigger(e+"Keyed",t)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(t,e){var n,r,i;switch(t){case"tab":r=this.getHint(),i=this.getInputValue(),n=r&&r!==i&&!u(e);break;case"up":case"down":n=!u(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;switch(t){case"tab":n=!u(e);break;default:n=!0}return n},_checkInputValue:function(){var t,e,n,r,i;t=this.getInputValue(),r=t,i=this.query,n=!(!(e=a.normalizeQuery(r)===a.normalizeQuery(i))||!this.query)&&this.query.length!==t.length,this.query=t,e?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(t){this.query=t},getInputValue:function(){return this.$input.val()},setInputValue:function(t,e){void 0===t&&(t=this.query),this.$input.val(t),e?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(t){this.$input.attr("aria-activedescendant",t)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(t){this.$hint.val(t)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var t,e,n;n=(t=this.getInputValue())!==(e=this.getHint())&&0===e.indexOf(t),""!==t&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var t=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=t},isCursorAtEnd:function(){var t,e,n;return t=this.$input.val().length,e=this.$input[0].selectionStart,i.isNumber(e)?e===t:!document.selection||((n=document.selection.createRange()).moveStart("character",-t),t===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),t.exports=a},function(t,e,n){"use strict";var r,i,o,s=[n(54),n(55),n(56),n(57),n(58)],a=-1,u=[],c=!1;function l(){r&&i&&(r=!1,i.length?u=i.concat(u):a=-1,u.length&&h())}function h(){if(!r){c=!1,r=!0;for(var t=u.length,e=setTimeout(l);t;){for(i=u,u=[];i&&++a<t;)i[a].run();a=-1,t=u.length}i=null,a=-1,r=!1,clearTimeout(e)}}for(var f=-1,d=s.length;++f<d;)if(s[f]&&s[f].test&&s[f].test()){o=s[f].install(h);break}function p(t,e){this.fun=t,this.array=e}p.prototype.run=function(){var t=this.fun,e=this.array;switch(e.length){case 0:return t();case 1:return t(e[0]);case 2:return t(e[0],e[1]);case 3:return t(e[0],e[1],e[2]);default:return t.apply(null,e)}},t.exports=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new p(t,e)),c||r||(c=!0,o())}},function(t,e,n){"use strict";(function(t){e.test=function(){return void 0!==t&&!t.browser},e.install=function(e){return function(){t.nextTick(e)}}}).call(e,n(9))},function(t,e,n){"use strict";(function(t){var n=t.MutationObserver||t.WebKitMutationObserver;e.test=function(){return n},e.install=function(e){var r=0,i=new n(e),o=t.document.createTextNode("");return i.observe(o,{characterData:!0}),function(){o.data=r=++r%2}}}).call(e,n(4))},function(t,e,n){"use strict";(function(t){e.test=function(){return!t.setImmediate&&void 0!==t.MessageChannel},e.install=function(e){var n=new t.MessageChannel;return n.port1.onmessage=e,function(){n.port2.postMessage(0)}}}).call(e,n(4))},function(t,e,n){"use strict";(function(t){e.test=function(){return"document"in t&&"onreadystatechange"in t.document.createElement("script")},e.install=function(e){return function(){var n=t.document.createElement("script");return n.onreadystatechange=function(){e(),n.onreadystatechange=null,n.parentNode.removeChild(n),n=null},t.document.documentElement.appendChild(n),e}}}).call(e,n(4))},function(t,e,n){"use strict";e.test=function(){return!0},e.install=function(t){return function(){setTimeout(t,0)}}},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n(10),s=n(60),a=n(11);function u(t){var e,n,o,s=this;(t=t||{}).menu||r.error("menu is required"),r.isArray(t.datasets)||r.isObject(t.datasets)||r.error("1 or more datasets required"),t.datasets||r.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=t.minLength||0,this.templates={},this.appendTo=t.appendTo||!1,this.css=r.mixin({},a,t.appendTo?a.appendTo:{}),this.cssClasses=t.cssClasses=r.mixin({},a.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),e=r.bind(this._onSuggestionClick,this),n=r.bind(this._onSuggestionMouseEnter,this),o=r.bind(this._onSuggestionMouseLeave,this);var c=r.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=i.element(t.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,o).on("click.aa",c,e),this.$container=t.appendTo?t.wrapper:this.$menu,t.templates&&t.templates.header&&(this.templates.header=r.templatify(t.templates.header),this.$menu.prepend(this.templates.header())),t.templates&&t.templates.empty&&(this.templates.empty=r.templatify(t.templates.empty),this.$empty=i.element('<div class="'+r.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=r.map(t.datasets,(function(e){return function(t,e,n){return new u.Dataset(r.mixin({$menu:t,cssClasses:n},e))}(s.$menu,e,t.cssClasses)})),r.each(this.datasets,(function(t){var e=t.getRoot();e&&0===e.parent().length&&s.$menu.append(e),t.onSync("rendered",s._onRendered,s)})),t.templates&&t.templates.footer&&(this.templates.footer=r.templatify(t.templates.footer),this.$menu.append(this.templates.footer()));var l=this;i.element(window).resize((function(){l._redraw()}))}r.mixin(u.prototype,o,{_onSuggestionClick:function(t){this.trigger("suggestionClicked",i.element(t.currentTarget))},_onSuggestionMouseEnter:function(t){var e=i.element(t.currentTarget);if(!e.hasClass(r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout((function(){n._setCursor(e,!1)}),0)}},_onSuggestionMouseLeave:function(t){t.relatedTarget&&i.element(t.relatedTarget).closest("."+r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0||(this._removeCursor(),this.trigger("cursorRemoved"))},_onRendered:function(t,e){if(this.isEmpty=r.every(this.datasets,(function(t){return t.isEmpty()})),this.isEmpty)if(e.length>=this.minLength&&this.trigger("empty"),this.$empty)if(e.length<this.minLength)this._hide();else{var n=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(n),this.$empty.show(),this._show()}else r.any(this.datasets,(function(t){return t.templates&&t.templates.empty}))?e.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),e.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(r.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(r.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(t,e){t.first().addClass(r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",e)},_removeCursor:function(){this._getCursor().removeClass(r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(t){var e,n,r,i;this.isOpen&&(n=this._getCursor(),e=this._getSuggestions(),this._removeCursor(),-1!=(r=((r=e.index(n)+t)+1)%(e.length+1)-1)?(r<-1&&(r=e.length-1),this._setCursor(i=e.eq(r),!0),this._ensureVisible(i)):this.trigger("cursorRemoved"))},_ensureVisible:function(t){var e,n,r,i;n=(e=t.position().top)+t.height()+parseInt(t.css("margin-top"),10)+parseInt(t.css("margin-bottom"),10),r=this.$menu.scrollTop(),i=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),e<0?this.$menu.scrollTop(r+e):i<n&&this.$menu.scrollTop(r+(n-i))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(t){this.$menu.css("ltr"===t?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(t){var e=null;return t.length&&(e={raw:s.extractDatum(t),value:s.extractValue(t),datasetName:s.extractDatasetName(t)}),e},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(t){r.each(this.datasets,(function(e){e.update(t)}))},empty:function(){r.each(this.datasets,(function(t){t.clear()})),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){this.$menu.off(".aa"),this.$menu=null,r.each(this.datasets,(function(t){t.destroy()}))}}),u.Dataset=s,t.exports=u},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n(17),s=n(11),a=n(10);function u(t){var e,n,a,u;(t=t||{}).templates=t.templates||{},t.source||r.error("missing source"),t.name&&(e=t.name,!/^[_a-zA-Z0-9-]+$/.test(e))&&r.error("invalid dataset name: "+t.name),this.query=null,this._isEmpty=!0,this.highlight=!!t.highlight,this.name=void 0===t.name||null===t.name?r.getUniqueId():t.name,this.source=t.source,this.displayFn=(n=(n=t.display||t.displayKey)||"value",r.isFunction(n)?n:function(t){return t[n]}),this.debounce=t.debounce,this.cache=!1!==t.cache,this.templates=(a=t.templates,u=this.displayFn,{empty:a.empty&&r.templatify(a.empty),header:a.header&&r.templatify(a.header),footer:a.footer&&r.templatify(a.footer),suggestion:a.suggestion||function(t){return"<p>"+u(t)+"</p>"}}),this.css=r.mixin({},s,t.appendTo?s.appendTo:{}),this.cssClasses=t.cssClasses=r.mixin({},s.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var c=r.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=t.$menu&&t.$menu.find(c+"-"+this.name).length>0?i.element(t.$menu.find(c+"-"+this.name)[0]):i.element(o.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=t.$menu,this.clearCachedSuggestions()}u.extractDatasetName=function(t){return i.element(t).data("aaDataset")},u.extractValue=function(t){return i.element(t).data("aaValue")},u.extractDatum=function(t){var e=i.element(t).data("aaDatum");return"string"==typeof e&&(e=JSON.parse(e)),e},r.mixin(u.prototype,a,{_render:function(t,e){if(this.$el){var n,s=this,a=[].slice.call(arguments,2);if(this.$el.empty(),n=e&&e.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(u.apply(this,a)).prepend(s.templates.header?l.apply(this,a):null).append(s.templates.footer?h.apply(this,a):null);else if(n)this.$el.html(c.apply(this,a)).prepend(s.templates.header?l.apply(this,a):null).append(s.templates.footer?h.apply(this,a):null);else if(e&&!Array.isArray(e))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",t)}function u(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!0}].concat(e),s.templates.empty.apply(this,e)}function c(){var t,n,a=[].slice.call(arguments,0),u=this,c=o.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return t=i.element(c).css(this.css.suggestions),n=r.map(e,l),t.append.apply(t,n),t;function l(t){var e,n=o.suggestion.replace("%PREFIX%",u.cssClasses.prefix).replace("%SUGGESTION%",u.cssClasses.suggestion);return(e=i.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(s.templates.suggestion.apply(this,[t].concat(a)))).data("aaDataset",s.name),e.data("aaValue",s.displayFn(t)||void 0),e.data("aaDatum",JSON.stringify(t)),e.children().each((function(){i.element(this).css(u.css.suggestionChild)})),e}}function l(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),s.templates.header.apply(this,e)}function h(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!n}].concat(e),s.templates.footer.apply(this,e)}},getRoot:function(){return this.$el},update:function(t){function e(e){if(!this.canceled&&t===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(t,e,n),this._render.apply(this,[t,e].concat(n))}}if(this.query=t,this.canceled=!1,this.shouldFetchFromCache(t))e.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,r=function(){n.canceled||n.source(t,e.bind(n))};this.debounce?(clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout((function(){n.debounceTimeout=null,r()}),this.debounce)):r()}},cacheSuggestions:function(t,e,n){this.cachedQuery=t,this.cachedSuggestions=e,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(t){return this.cache&&this.cachedQuery===t&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.cancel(),this.$el.empty(),this.trigger("rendered","")},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),t.exports=u},function(t,e,n){"use strict";t.exports={hits:n(62),popularIn:n(63)}},function(t,e,n){"use strict";var r=n(0),i=n(18),o=n(19);t.exports=function(t,e){var n=o(t.as._ua);return n&&n[0]>=3&&n[1]>20&&((e=e||{}).additionalUA="autocomplete.js "+i),function(n,i){t.search(n,e,(function(t,e){t?r.error(t.message):i(e.hits,e)}))}}},function(t,e,n){"use strict";var r=n(0),i=n(18),o=n(19);t.exports=function(t,e,n,s){var a=o(t.as._ua);if(a&&a[0]>=3&&a[1]>20&&((e=e||{}).additionalUA="autocomplete.js "+i),!n.source)return r.error("Missing 'source' key");var u=r.isFunction(n.source)?n.source:function(t){return t[n.source]};if(!n.index)return r.error("Missing 'index' key");var c=n.index;return s=s||{},function(a,l){t.search(a,e,(function(t,a){if(t)r.error(t.message);else{if(a.hits.length>0){var h=a.hits[0],f=r.mixin({hitsPerPage:0},n);delete f.source,delete f.index;var d=o(c.as._ua);return d&&d[0]>=3&&d[1]>20&&(e.additionalUA="autocomplete.js "+i),void c.search(u(h),f,(function(t,e){if(t)r.error(t.message);else{var n=[];if(s.includeAll){var i=s.allTitle||"All departments";n.push(r.mixin({facet:{value:i,count:e.nbHits}},r.cloneDeep(h)))}r.each(e.facets,(function(t,e){r.each(t,(function(t,i){n.push(r.mixin({facet:{facet:e,value:i,count:t}},r.cloneDeep(h)))}))}));for(var o=1;o<a.hits.length;++o)n.push(a.hits[o]);l(n,a)}}))}l([])}}))}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="algolia-docsearch-suggestion",i={suggestion:'\n <a class="'+r+"\n {{#isCategoryHeader}}"+r+"__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}"+r+'__secondary{{/isSubCategoryHeader}}\n "\n aria-label="Link to the result"\n href="{{{url}}}"\n >\n <div class="'+r+'--category-header">\n <span class="'+r+'--category-header-lvl0">{{{category}}}</span>\n </div>\n <div class="'+r+'--wrapper">\n <div class="'+r+'--subcategory-column">\n <span class="'+r+'--subcategory-column-text">{{{subcategory}}}</span>\n </div>\n {{#isTextOrSubcategoryNonEmpty}}\n <div class="'+r+'--content">\n <div class="'+r+'--subcategory-inline">{{{subcategory}}}</div>\n <div class="'+r+'--title">{{{title}}}</div>\n {{#text}}<div class="'+r+'--text">{{{text}}}</div>{{/text}}\n </div>\n {{/isTextOrSubcategoryNonEmpty}}\n </div>\n </a>\n ',suggestionSimple:'\n <div class="'+r+"\n {{#isCategoryHeader}}"+r+"__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}"+r+'__secondary{{/isSubCategoryHeader}}\n suggestion-layout-simple\n ">\n <div class="'+r+'--category-header">\n {{^isLvl0}}\n <span class="'+r+"--category-header-lvl0 "+r+'--category-header-item">{{{category}}}</span>\n {{^isLvl1}}\n {{^isLvl1EmptyOrDuplicate}}\n <span class="'+r+"--category-header-lvl1 "+r+'--category-header-item">\n {{{subcategory}}}\n </span>\n {{/isLvl1EmptyOrDuplicate}}\n {{/isLvl1}}\n {{/isLvl0}}\n <div class="'+r+"--title "+r+'--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="'+r+'--wrapper">\n {{#text}}\n <div class="'+r+'--content">\n <div class="'+r+'--text">{{{text}}}</div>\n </div>\n {{/text}}\n </div>\n </div>\n ',footer:'\n <div class="algolia-docsearch-footer">\n Search by <a class="algolia-docsearch-footer--logo" href="https://www.algolia.com/docsearch">Algolia</a>\n </div>\n ',empty:'\n <div class="'+r+'">\n <div class="'+r+'--wrapper">\n <div class="'+r+"--content "+r+'--no-results">\n <div class="'+r+'--title">\n <div class="'+r+'--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 '};e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=n(20),s=(r=o)&&r.__esModule?r:{default:r},a={mergeKeyWithParent:function(t,e){if(void 0===t[e])return t;if("object"!==i(t[e]))return t;var n=s.default.extend({},t,t[e]);return delete n[e],n},groupBy:function(t,e){var n={};return s.default.each(t,(function(t,r){if(void 0===r[e])throw new Error("[groupBy]: Object has no key "+e);var i=r[e];"string"==typeof i&&(i=i.toLowerCase()),Object.prototype.hasOwnProperty.call(n,i)||(n[i]=[]),n[i].push(r)})),n},values:function(t){return Object.keys(t).map((function(e){return t[e]}))},flatten:function(t){var e=[];return t.forEach((function(t){Array.isArray(t)?t.forEach((function(t){e.push(t)})):e.push(t)})),e},flattenAndFlagFirst:function(t,e){var n=this.values(t).map((function(t){return t.map((function(t,n){return t[e]=0===n,t}))}));return this.flatten(n)},compact:function(t){var e=[];return t.forEach((function(t){t&&e.push(t)})),e},getHighlightedValue:function(t,e){return t._highlightResult&&t._highlightResult.hierarchy_camel&&t._highlightResult.hierarchy_camel[e]&&t._highlightResult.hierarchy_camel[e].matchLevel&&"none"!==t._highlightResult.hierarchy_camel[e].matchLevel&&t._highlightResult.hierarchy_camel[e].value?t._highlightResult.hierarchy_camel[e].value:t._highlightResult&&t._highlightResult&&t._highlightResult[e]&&t._highlightResult[e].value?t._highlightResult[e].value:t[e]},getSnippetedValue:function(t,e){if(!t._snippetResult||!t._snippetResult[e]||!t._snippetResult[e].value)return t[e];var n=t._snippetResult[e].value;return n[0]!==n[0].toUpperCase()&&(n="…"+n),-1===[".","!","?"].indexOf(n[n.length-1])&&(n+="…"),n},deepClone:function(t){return JSON.parse(JSON.stringify(t))}};e.default=a}])},t.exports=r()},function(t,e,n){n(0),n(9)},function(t,e,n){var r,i,o;!function(s,a){a=a.bind(null,s,s.document),t.exports?a(n(0)):(i=[n(0)],void 0===(o="function"==typeof(r=a)?r.apply(e,i):r)||(t.exports=o))}(window,(function(t,e,n){"use strict";var r,i,o={};function s(t,n,r){if(!o[t]){var i=e.createElement(n?"link":"script"),s=e.getElementsByTagName("script")[0];n?(i.rel="stylesheet",i.href=t):(i.onload=function(){i.onerror=null,i.onload=null,r()},i.onerror=i.onload,i.src=t),o[t]=!0,o[i.src||i.href]=!0,s.parentNode.insertBefore(i,s)}}e.addEventListener&&(i=/\(|\)|\s|'/,r=function(t,n){var r=e.createElement("img");r.onload=function(){r.onload=null,r.onerror=null,r=null,n()},r.onerror=r.onload,r.src=t,r&&r.complete&&r.onload&&r.onload()},addEventListener("lazybeforeunveil",(function(t){var e,o,a;if(t.detail.instance==n&&!t.defaultPrevented){var u=t.target;if("none"==u.preload&&(u.preload=u.getAttribute("data-preload")||"auto"),null!=u.getAttribute("data-autoplay"))if(u.getAttribute("data-expand")&&!u.autoplay)try{u.play()}catch(t){}else requestAnimationFrame((function(){u.setAttribute("data-expand","-10"),n.aC(u,n.cfg.lazyClass)}));(e=u.getAttribute("data-link"))&&s(e,!0),(e=u.getAttribute("data-script"))&&(t.detail.firesLoad=!0,s(e,null,(function(){t.detail.firesLoad=!1,n.fire(u,"_lazyloaded",{},!0,!0)}))),(e=u.getAttribute("data-require"))&&(n.cfg.requireJs?n.cfg.requireJs([e]):s(e)),(o=u.getAttribute("data-bg"))&&(t.detail.firesLoad=!0,r(o,(function(){u.style.backgroundImage="url("+(i.test(o)?JSON.stringify(o):o)+")",t.detail.firesLoad=!1,n.fire(u,"_lazyloaded",{},!0,!0)}))),(a=u.getAttribute("data-poster"))&&(t.detail.firesLoad=!0,r(a,(function(){u.poster=a,t.detail.firesLoad=!1,n.fire(u,"_lazyloaded",{},!0,!0)})))}}),!1))}))},function(t,e){for(var n=document.getElementsByClassName("js-toggle"),r=0;r<n.length;r++)n[r].addEventListener("click",i,!1);function i(){for(var t=this.dataset.target.split(" "),e=document.querySelector(".mobilemenu:not(.dn)"),n=document.querySelector(".desktopmenu:not(.dn)"),r=document.querySelector(".desktopmenu:not(.dn)"),i=0;i<t.length;i++){var o=document.querySelectorAll(t[i]);[].forEach.call(o,(function(t){return t.classList.contains("dn")?t.classList.remove("dn"):t.classList.add("dn"),!1})),e&&e.classList.add("dn"),n&&n.classList.add("dn"),r&&r.classList.remove("db")}}},function(t,e,n){n(12)},function(t,e,n){!function(){"use strict";var t,e,n="data-scrolldir",r="down",i=document.documentElement,o=window,s=document.body,a=Array(32),u=0;function c(){var c=o.scrollY||o.pageYOffset,l=t.timeStamp,h="down"===r?Math.max:Math.min,f=s.scrollHeight-o.innerHeight;if(c=Math.max(0,c),c=Math.min(f,c),a.unshift({y:c,t:l}),a.pop(),c===h(e,c))return u=l,void(e=c);var d=l-512;if(u<d){e=c;for(var p=0;p<32&&a[p]&&!(a[p].t<d);p+=1)e=h(e,a[p].y)}Math.abs(c-e)>64&&(e=c,u=l,r="down"===r?"up":"down",i.setAttribute(n,r))}function l(e){return t=e,o.requestAnimationFrame(c)}e=o.scrollY||o.pageYOffset,i.setAttribute(n,r),o.addEventListener("scroll",l)}()},function(t,e){!function(){"use strict";if("querySelector"in document&&"addEventListener"in window&&Array.prototype.forEach){var t=document.querySelectorAll("#TableOfContents ul li a");[].forEach.call(t,(function(t){t.addEventListener("click",(function(e){e.preventDefault();var n=t.getAttribute("href"),r=document.querySelector(n),i=t.getAttribute("data-speed");r&&function(t,e){var n,r=window.pageYOffset,i=t.offsetTop,o=(i-r)/(e/16);n=o>=0?function(){var t=window.pageYOffset;(t>=i-o||window.innerHeight+t>=document.body.offsetHeight)&&clearInterval(s)}:function(){window.pageYOffset<=(i||0)&&clearInterval(s)};var s=setInterval((function(){window.scrollBy(0,o),n()}),16)}(r,i||500)}),!1)}))}}()},function(t,e){var n,r=document.querySelectorAll("[data-toggle-tab]"),i=document.querySelectorAll("[data-pane]");function o(t){if(t.target){t.preventDefault();var e=t.currentTarget.getAttribute("data-toggle-tab")}else e=t;window.localStorage&&window.localStorage.setItem("configLangPref",e);for(var n=document.querySelectorAll("[data-toggle-tab='"+e+"']"),o=document.querySelectorAll("[data-pane='"+e+"']"),s=0;s<r.length;s++)r[s].classList.remove("active"),i[s].classList.remove("active");for(s=0;s<n.length;s++)n[s].classList.add("active"),o[s].classList.add("active")}for(n=0;n<r.length;n++)r[n].addEventListener("click",o);window.localStorage.getItem("configLangPref")&&o(window.localStorage.getItem("configLangPref"))},function(t,e){document.documentElement.className=document.documentElement.className.replace(/\bno-js\b/,"js")}]); \ No newline at end of file
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-nav.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-nav.html
index 749c699e6..f387d66f3 100644
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-nav.html
+++ b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-nav.html
@@ -30,9 +30,9 @@
{{- partial "site-search.html" . -}}
</div>
- <span class="absolute mt1 mt2-l pr3 right-0 top-0">
+ <div class="absolute mt1 mt2-l pr3 right-0 top-0 flex items-start">
{{- partialCached "social-follow.html" . -}}
- </span>
+ </div>
</div>
</nav>
diff --git a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/social-follow.html b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/social-follow.html
index 7b517dbb4..5c7430759 100644
--- a/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/social-follow.html
+++ b/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/social-follow.html
@@ -1,7 +1,9 @@
-<!-- TODO: Add follow intents where available TODO: Revisit color and hover color -->
-{{ with .Site.Social.twitter }}
+{{/*
+ Disable Twitter for now as we lost access to the account.
+ with .Site.Social.twitter }}
<a href="https://twitter.com/intent/follow?screen_name={{ . }}" title="Follow on Twitter" class="link-transition twitter link dib z-999 pt3 pt0-l mr2">
{{ partial "svg/twitter.svg" (dict "size" "32px") }}
</a>
-{{ end }}
-<a class="github-button needs-js link primary-color-dark" href="https://github.com/gohugoio/hugo" data-size="large" data-show-count="false" aria-label="Star gohugoio/hugo on GitHub">Star</a>
+{{ end */}}
+ <a rel="me" class="mstdn mr3" href="https://fosstodon.org/@gohugoio" target="_blank">gohugoio</a>
+ <a class="github-button needs-js link primary-color-dark" href="https://github.com/gohugoio/hugo" data-size="large" data-show-count="false" aria-label="Star gohugoio/hugo on GitHub">Star</a>
diff --git a/docs/_vendor/modules.txt b/docs/_vendor/modules.txt
index d434e89f8..4d5e68903 100644
--- a/docs/_vendor/modules.txt
+++ b/docs/_vendor/modules.txt
@@ -1 +1 @@
-# github.com/gohugoio/gohugoioTheme v0.0.0-20230812102551-06f8256e7ee5
+# github.com/gohugoio/gohugoioTheme v0.0.0-20230927165800-342e2c850f18
diff --git a/docs/archetypes/functions.md b/docs/archetypes/functions.md
index 891458daa..cb0e7c930 100644
--- a/docs/archetypes/functions.md
+++ b/docs/archetypes/functions.md
@@ -1,11 +1,14 @@
---
-title: {{ replace .Name "-" " " | title }}
-description: ""
-signature: []
+title: {{ replace .File.ContentBaseName "-" " " | title }}
+description:
categories: [functions]
keywords: []
menu:
docs:
parent: functions
-relatedfuncs: []
+function:
+ aliases: []
+ returnType:
+ signatures: []
+relatedFunctions: []
---
diff --git a/docs/archetypes/news/index.md b/docs/archetypes/news/index.md
index 42e207e6a..fcc5b5835 100644
--- a/docs/archetypes/news/index.md
+++ b/docs/archetypes/news/index.md
@@ -1,6 +1,5 @@
---
-title: "{{ replace .Name "-" " " | title }}"
-description: ""
+title: {{ replace .File.ContentBaseName "-" " " | title }}
+description:
date: {{ .Date }}
---
-
diff --git a/docs/archetypes/showcase/index.md b/docs/archetypes/showcase/index.md
index a21bb9726..04d454575 100644
--- a/docs/archetypes/showcase/index.md
+++ b/docs/archetypes/showcase/index.md
@@ -1,9 +1,9 @@
---
-title: {{ replace .Name "-" " " | title }}
+title: {{ replace .File.ContentBaseName "-" " " | title }}
date: {{ now.Format "2006-01-02" }}
-description: "A short description of this page."
+description: A short description of this page.
# The URL to the site on the internet.
siteURL: https://gohugo.io/
@@ -34,4 +34,3 @@ bio.md
featured.png
: A reasonably sized screenshot of your website. It can be named anything, but the name must start with "featured". The sample image is `1500x750` (2:1 aspect ratio).
-
diff --git a/docs/content/en/about/security-model/index.md b/docs/content/en/about/security-model.md
index 3b93167ab..3b93167ab 100644
--- a/docs/content/en/about/security-model/index.md
+++ b/docs/content/en/about/security-model.md
diff --git a/docs/content/en/about/security-model/hugo-security-model-featured.png b/docs/content/en/about/security-model/hugo-security-model-featured.png
deleted file mode 100644
index 5592d104b..000000000
--- a/docs/content/en/about/security-model/hugo-security-model-featured.png
+++ /dev/null
Binary files differ
diff --git a/docs/content/en/about/what-is-hugo.md b/docs/content/en/about/what-is-hugo.md
index 9e28346dd..be564233f 100644
--- a/docs/content/en/about/what-is-hugo.md
+++ b/docs/content/en/about/what-is-hugo.md
@@ -36,13 +36,13 @@ Hugo is for people building a blog, a company site, a portfolio site, documentat
[@spf13]: https://twitter.com/spf13
[Amazon S3]: https://aws.amazon.com/s3/
[Azure]: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website
-[CloudFront]: https://aws.amazon.com/cloudfront/ "Amazon CloudFront"
+[CloudFront]: https://aws.amazon.com/cloudfront/
[DreamHost]: https://www.dreamhost.com/
-[Firebase]: https://firebase.google.com/docs/hosting/ "Firebase static hosting"
+[Firebase]: https://firebase.google.com/docs/hosting/
[GitHub Pages]: https://pages.github.com/
[GitLab Pages]: https://about.gitlab.com/features/pages/
[Go language]: https://go.dev/
-[GoDaddy]: https://www.godaddy.com/ "GoDaddy.com Hosting"
+[GoDaddy]: https://www.godaddy.com/
[Google Cloud Storage]: https://cloud.google.com/storage/
[Heroku]: https://www.heroku.com/
[Jekyll]: https://jekyllrb.com/
diff --git a/docs/content/en/content-management/archetypes.md b/docs/content/en/content-management/archetypes.md
index d811bbac2..fe460f91f 100644
--- a/docs/content/en/content-management/archetypes.md
+++ b/docs/content/en/content-management/archetypes.md
@@ -68,7 +68,7 @@ If none of these exists, Hugo uses a built-in default archetype.
## Functions and context
-You can use any [template function] within an archetype. As shown above, the default archetype uses the [`replace`](/functions/replace/) function to replace hyphens with spaces when populating the title in front matter.
+You can use any [template function] within an archetype. As shown above, the default archetype uses the [`replace`](/functions/strings/replace) function to replace hyphens with spaces when populating the title in front matter.
Archetypes receive the following objects and values in [context]:
diff --git a/docs/content/en/content-management/formats.md b/docs/content/en/content-management/formats.md
index f85c304cf..ccc45b943 100644
--- a/docs/content/en/content-management/formats.md
+++ b/docs/content/en/content-management/formats.md
@@ -49,7 +49,7 @@ Hugo passes reasonable default arguments to these external helpers by default:
Because additional formats are external commands, generation performance will rely heavily on the performance of the external tool you are using. As this feature is still in its infancy, feedback is welcome.
{{% /note %}}
-### External helper Asciidoctor
+### Asciidoctor
The Asciidoctor community offers a wide set of tools for the AsciiDoc format that can be installed additionally to Hugo.
[See the Asciidoctor docs for installation instructions](https://asciidoctor.org/docs/install-toolchain/). Make sure that also all
@@ -59,52 +59,9 @@ optional extensions like `asciidoctor-diagram` or `asciidoctor-html5s` are insta
External `asciidoctor` command requires Hugo rendering to _disk_ to a specific destination directory. It is required to run Hugo with the command option `--destination`.
{{% /note %}}
-Some [Asciidoctor](https://asciidoctor.org/man/asciidoctor/) parameters can be customized in Hugo:
+Some Asciidoctor parameters can be customized in Hugo. See [details].
-Parameter | Comment
---- | ---
-backend | Don't change this unless you know what you are doing.
-doctype | Currently, the only document type supported in Hugo is `article`.
-extensions | Possible extensions are `asciidoctor-html5s`, `asciidoctor-bibtex`, `asciidoctor-diagram`, `asciidoctor-interdoc-reftext`, `asciidoctor-katex`, `asciidoctor-latex`, `asciidoctor-mathematical`, `asciidoctor-question`.
-attributes | Variables to be referenced in your AsciiDoc file. This is a list of variable name/value maps. See [Asciidoctor's attributes](https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#attributes-and-substitutions).
-noHeaderOrFooter | Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document. Don't change this unless you know what you are doing.
-safeMode | Safe mode level `unsafe`, `safe`, `server` or `secure`. Don't change this unless you know what you are doing.
-sectionNumbers | Auto-number section titles.
-verbose | Verbosely print processing information and configuration file checks to stderr.
-trace | Include backtrace information on errors.
-failureLevel | The minimum logging level that triggers a non-zero exit code (failure).
-
-Hugo provides additional settings that don't map directly to Asciidoctor's CLI options:
-
-workingFolderCurrent
-: Sets the working directory to be the same as that of the AsciiDoc file being processed, so that [include](https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#include-files) will work with relative paths. This setting uses the `asciidoctor` cli parameter `--base-dir` and attribute `outdir=`. For rendering diagrams with [asciidoctor-diagram](https://asciidoctor.org/docs/asciidoctor-diagram/), `workingFolderCurrent` must be set to `true`.
-
-preserveTOC
-: By default, Hugo removes the table of contents generated by Asciidoctor and provides it through the built-in variable [`.TableOfContents`](/content-management/toc/) to enable further customization and better integration with the various Hugo themes. This option can be set to `true` to preserve Asciidoctor's TOC in the generated page.
-
-Below are all the AsciiDoc related settings in Hugo with their default values:
-
-{{< code-toggle config="markup.asciidocExt" />}}
-
-Notice that for security concerns only extensions that do not have path separators (either `\`, `/` or `.`) are allowed. That means that extensions can only be invoked if they are in one's ruby's `$LOAD_PATH` (ie. most likely, the extension has been installed by the user). Any extension declared relative to the website's path will not be accepted.
-
-Example of how to set extensions and attributes:
-
-```yml
-[markup.asciidocExt]
- extensions = ["asciidoctor-html5s", "asciidoctor-diagram"]
- workingFolderCurrent = true
- [markup.asciidocExt.attributes]
- my-base-url = "https://example.com/"
- my-attribute-name = "my value"
-```
-
-In a complex Asciidoctor environment it is sometimes helpful to debug the exact call to your external helper with all
-parameters. Run Hugo with `-v`. You will get an output like
-
-```txt
-INFO 2019/12/22 09:08:48 Rendering book-as-pdf.adoc with C:\Ruby26-x64\bin\asciidoctor.bat using asciidoc args [--no-header-footer -r asciidoctor-html5s -b html5s -r asciidoctor-diagram --base-dir D:\prototypes\hugo_asciidoc_ddd\docs -a outdir=D:\prototypes\hugo_asciidoc_ddd\build -] ...
-```
+[details]: /getting-started/configuration-markup/#asciidoc
## Learn markdown
@@ -115,7 +72,6 @@ Markdown syntax is simple enough to learn in a single sitting. The following are
* [Markdown Tutorial (Interactive), Garen Torikian][mdtutorial]
* [The Markdown Guide, Matt Cone][mdguide]
-[`emojify` function]: /functions/emojify/
[ascii]: https://asciidoctor.org/
[config]: /getting-started/configuration/
[developer tools]: /tools/
diff --git a/docs/content/en/content-management/image-processing/index.md b/docs/content/en/content-management/image-processing/index.md
index 4af4c104d..9cce9070a 100644
--- a/docs/content/en/content-management/image-processing/index.md
+++ b/docs/content/en/content-management/image-processing/index.md
@@ -115,7 +115,7 @@ Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. U
The `Process` method is also available as a filter, which is more effective if need to apply multiple filters to an image. See [Process filter](/functions/images/#process).
{{% /note %}}
-Process processes the image with the given specification. The specification can contain an optional action, one of `resize`, `crop`, `fit` or `fill`. This means that you can use this method instead of [`Resize`], [`Fit`], [`Fill`], or [`Crop`].
+Process processes the image with the given specification. The specification can contain an optional action, one of `resize`, `crop`, `fit` or `fill`. This means that you can use this method instead of [`Resize`], [`Fit`], [`Fill`], or [`Crop`].
See [Options](#image-processing-options) for available options.
@@ -501,11 +501,11 @@ If you change image processing methods or options, or if you rename or remove im
hugo --gc
```
-[time.Format]: /functions/dateformat
+[time.Format]: /functions/time/format
[`anchor`]: /content-management/image-processing#anchor
[mounted]: /hugo-modules/configuration#module-configuration-mounts
[page bundle]: /content-management/page-bundles
-[`lang.FormatNumber`]: /functions/lang
+[`lang.FormatNumber`]: /functions/lang/formatnumber
[filters]: /functions/images
[github.com/disintegration/imaging]: <https://github.com/disintegration/imaging#image-resizing>
[Smartcrop]: <https://github.com/muesli/smartcrop#smartcrop>
@@ -519,4 +519,4 @@ hugo --gc
[`Fit`]: #fit
[`Resize`]: #resize
[site configuration]: #processing-options
-[`with`]: /functions/with/
+[`with`]: /functions/go-template/with/
diff --git a/docs/content/en/content-management/multilingual.md b/docs/content/en/content-management/multilingual.md
index ec187d663..6e787c526 100644
--- a/docs/content/en/content-management/multilingual.md
+++ b/docs/content/en/content-management/multilingual.md
@@ -468,7 +468,7 @@ English|Wednesday, November 3, 2021
Français|mercredi 3 novembre 2021
Deutsch|Mittwoch, 3. November 2021
-See [time.Format] for details.
+See [`time.Format`] for details.
### Currency
@@ -526,11 +526,86 @@ See [lang.FormatPercent] for details.
## Menus
-Localization of menu entries depends on the how you define them:
+Localization of menu entries depends on how you define them:
- When you define menu entries [automatically] using the section pages menu, you must use translation tables to localize each entry.
- When you define menu entries [in front matter], they are already localized based on the front matter itself. If the front matter values are insufficient, use translation tables to localize each entry.
-- When you define menu entries [in site configuration], you can (a) use translation tables, or (b) create language-specific menu entries under each language key.
+- When you define menu entries [in site configuration], you must create language-specific menu entries under each language key. If the names of the menu entries are insufficent, use translation tables to localize each entry.
+
+### Create language-specific menu entries
+
+#### Method 1 -- Use a single configuration file
+
+For a simple menu with a small number of entries, use a single configuration file. For example:
+
+{{< code-toggle file="hugo" copy=false >}}
+[languages.de]
+languageCode = 'de-DE'
+languageName = 'Deutsch'
+weight = 1
+
+[[languages.de.menu.main]]
+name = 'Produkte'
+pageRef = '/products'
+weight = 10
+
+[[languages.de.menu.main]]
+name = 'Leistungen'
+pageRef = '/services'
+weight = 20
+
+[languages.en]
+languageCode = 'en-US'
+languageName = 'English'
+weight = 2
+
+[[languages.en.menu.main]]
+name = 'Products'
+pageRef = '/products'
+weight = 10
+
+[[languages.en.menu.main]]
+name = 'Services'
+pageRef = '/services'
+weight = 20
+{{< /code-toggle >}}
+
+#### Method 2 -- Use a configuration directory
+
+With a more complex menu structure, create a [configuration directory] and split the menu entries into multiple files, one file per language. For example:
+
+```text
+config/
+└── _default/
+ ├── menus/
+ │ ├── menu.de.toml
+ │ └── menu.en.toml
+ └── hugo.toml
+```
+
+{{< code-toggle file="config/_default/menus/menu.de" copy=false >}}
+[[main]]
+name = 'Produkte'
+pageRef = '/products'
+weight = 10
+[[main]]
+name = 'Leistungen'
+pageRef = '/services'
+weight = 20
+{{< /code-toggle >}}
+
+{{< code-toggle file="config/_default/menus/menu.en" copy=false >}}
+[[main]]
+name = 'Products'
+pageRef = '/products'
+weight = 10
+[[main]]
+name = 'Services'
+pageRef = '/services'
+weight = 20
+{{< /code-toggle >}}
+
+[configuration directory]: /getting-started/configuration/#configuration-directory
### Use translation tables
@@ -574,44 +649,6 @@ services = 'Leistungen'
[in front matter]: /content-management/menus/#define-in-front-matter
[in site configuration]: /content-management/menus/#define-in-site-configuration
-### Create language-specific menu entries
-
-For example:
-
-{{< code-toggle file="hugo" copy=false >}}
-[languages.de]
-languageCode = 'de-DE'
-languageName = 'Deutsch'
-weight = 1
-
-[[languages.de.menu.main]]
-name = 'Produkte'
-pageRef = '/products'
-weight = 10
-
-[[languages.de.menu.main]]
-name = 'Leistungen'
-pageRef = '/services'
-weight = 20
-
-[languages.en]
-languageCode = 'en-US'
-languageName = 'English'
-weight = 2
-
-[[languages.en.menu.main]]
-name = 'Products'
-pageRef = '/products'
-weight = 10
-
-[[languages.en.menu.main]]
-name = 'Services'
-pageRef = '/services'
-weight = 20
-{{< /code-toggle >}}
-
-For a simple menu with two languages, these menu entries are easy to create and maintain. For a larger menu, or with more than two languages, using translation tables as described above is preferable.
-
## Missing translations
If a string does not have a translation for the current language, Hugo will use the value from the default language. If no default value is set, an empty string will be shown.
@@ -636,7 +673,7 @@ i18n|MISSING_TRANSLATION|en|wordCount
To support Multilingual mode in your themes, some considerations must be taken for the URLs in the templates. If there is more than one language, URLs must meet the following criteria:
* Come from the built-in `.Permalink` or `.RelPermalink`
-* Be constructed with the [`relLangURL` template function][rellangurl] or the [`absLangURL` template function][abslangurl] **OR** be prefixed with `{{ .LanguagePrefix }}`
+* Be constructed with the [`relLangURL`] or [`absLangURL`] template function, or be prefixed with `{{ .LanguagePrefix }}`
If there is more than one language defined, the `LanguagePrefix` variable will equal `/en` (or whatever your `CurrentLanguage` is). If not enabled, it will be an empty string (and is therefore harmless for single-language Hugo websites).
@@ -657,23 +694,23 @@ hugo new content content/en/post/test.md
hugo new content content/de/post/test.md
```
-[abslangurl]: /functions/abslangurl
+[`abslangurl`]: /functions/urls/abslangurl
[config]: /getting-started/configuration/
[contenttemplate]: /templates/single-page-templates/
[go-i18n-source]: https://github.com/nicksnyder/go-i18n
[go-i18n]: https://github.com/nicksnyder/go-i18n
[homepage]: /templates/homepage/
[Hugo Multilingual Part 1: Content translation]: https://regisphilibert.com/blog/2018/08/hugo-multilingual-part-1-managing-content-translation/
-[i18func]: /functions/i18n/
-[lang.FormatAccounting]: /functions/lang
-[lang.FormatCurrency]: /functions/lang
-[lang.FormatNumber]: /functions/lang
-[lang.FormatNumberCustom]: /functions/lang
-[lang.FormatPercent]: /functions/lang
-[lang.Merge]: /functions/lang.merge/
+[i18func]: /functions/lang/translate
+[lang.FormatAccounting]: /functions/lang/formataccounting
+[lang.FormatCurrency]: /functions/lang/formatcurrency
+[lang.FormatNumber]: /functions/lang/formatnumber
+[lang.FormatNumberCustom]: /functions/lang/formatnumbercustom
+[lang.FormatPercent]: /functions/lang/formatpercent
+[lang.Merge]: /functions/lang/merge/
[menus]: /content-management/menus/
[OS environment]: /getting-started/configuration/#configure-with-environment-variables
-[rellangurl]: /functions/rellangurl
+[`rellangurl`]: /functions/urls/rellangurl
[RFC 5646]: https://tools.ietf.org/html/rfc5646
[single page templates]: /templates/single-page-templates/
-[time.Format]: /functions/dateformat
+[`time.Format`]: /functions/time/format
diff --git a/docs/content/en/content-management/shortcodes.md b/docs/content/en/content-management/shortcodes.md
index 670c5acc8..b1e32d902 100644
--- a/docs/content/en/content-management/shortcodes.md
+++ b/docs/content/en/content-management/shortcodes.md
@@ -187,7 +187,7 @@ Rendered:
To specify one or more [highlighting options], include a quotation-encapsulated, comma-separated list:
-[highlighting options]: /functions/highlight/
+[highlighting options]: /functions/transform/highlight/
```text
{{</* highlight go-html-template "lineNos=inline, lineNoStart=42" */>}}
@@ -391,7 +391,7 @@ To learn more about creating custom shortcodes, see the [shortcode template docu
[`figure` shortcode]: #figure
[contentmanagementsection]: /content-management/formats/
[examplegist]: https://gist.github.com/spf13/7896402
-[figureelement]: https://html5doctor.com/the-figure-figcaption-elements/ "An article from HTML5 doctor discussing the fig and figcaption elements."
+[figureelement]: https://html5doctor.com/the-figure-figcaption-elements/
[Hugo and the GDPR]: /about/hugo-and-gdpr/
[Instagram]: https://www.instagram.com/
[pagevariables]: /variables/page/
diff --git a/docs/content/en/content-management/syntax-highlighting.md b/docs/content/en/content-management/syntax-highlighting.md
index 44dece2df..39fef0f9b 100644
--- a/docs/content/en/content-management/syntax-highlighting.md
+++ b/docs/content/en/content-management/syntax-highlighting.md
@@ -92,7 +92,7 @@ Gives this:
## Highlight template function
-See [Highlight](/functions/highlight/).
+See [Highlight](/functions/transform/highlight/).
## Highlighting in code fences
diff --git a/docs/content/en/content-management/taxonomies.md b/docs/content/en/content-management/taxonomies.md
index 14a467390..af8297876 100644
--- a/docs/content/en/content-management/taxonomies.md
+++ b/docs/content/en/content-management/taxonomies.md
@@ -191,12 +191,11 @@ title: "Bruce Willis"
wikipedia: "https://en.wikipedia.org/wiki/Bruce_Willis"
{{< /code-toggle >}}
-[`urlize` template function]: /functions/urlize/
[content section]: /content-management/sections/
[content type]: /content-management/types/
[documentation on archetypes]: /content-management/archetypes/
[front matter]: /content-management/front-matter/
[taxonomy list templates]: /templates/taxonomy-templates/#taxonomy-list-templates
[taxonomy templates]: /templates/taxonomy-templates/
-[terms within the taxonomy]: /templates/taxonomy-templates/#taxonomy-terms-templates "See how to order terms associated with a taxonomy"
-[configuration]: /getting-started/configuration/
+[terms within the taxonomy]: /templates/taxonomy-templates/#taxonomy-terms-templates
+[site configuration]: /getting-started/configuration/
diff --git a/docs/content/en/functions/adddate.md b/docs/content/en/functions/AddDate.md
index cae270fb8..7f5b39b16 100644
--- a/docs/content/en/functions/adddate.md
+++ b/docs/content/en/functions/AddDate.md
@@ -2,12 +2,15 @@
title: .AddDate
description: Returns the time corresponding to adding the given number of years, months, and days to the given time.Time value.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [dates,time]
-signature: [".AddDate YEARS MONTHS DAYS"]
-relatedfuncs: [now]
+function:
+ aliases: []
+ returnType: time.Time
+ signatures: [.AddDate YEARS MONTHS DAYS]
+relatedFunctions: []
---
```go-html-template
diff --git a/docs/content/en/functions/Format.md b/docs/content/en/functions/Format.md
new file mode 100644
index 000000000..e679cb2c4
--- /dev/null
+++ b/docs/content/en/functions/Format.md
@@ -0,0 +1,90 @@
+---
+title: .Format
+description: Returns a formatted time.Time value.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [.Format LAYOUT]
+relatedFunctions: []
+toc: true
+---
+
+```go-template
+{{ $t := "2023-01-27T23:44:58-08:00" }}
+{{ $t = time.AsTime $t }}
+{{ $format := "2 Jan 2006" }}
+
+{{ $t.Format $format }} → 27 Jan 2023
+```
+
+{{% note %}}
+To return a formatted and localized `time.Time` value, use the [`time.Format`] function instead.
+
+[`time.Format`]: /functions/time/format
+{{% /note %}}
+
+Use the `.Format` method with any `time.Time` value, including the four predefined front matter dates:
+
+```go-html-template
+{{ $format := "2 Jan 2006" }}
+
+{{ .Date.Format $format }}
+{{ .PublishDate.Format $format }}
+{{ .ExpiryDate.Format $format }}
+{{ .Lastmod.Format $format }}
+```
+
+## Layout string
+
+{{% readfile file="/functions/_common/time-layout-string.md" %}}
+
+## Examples
+
+Given this front matter:
+
+{{< code-toggle fm=true copy=false >}}
+title = "About time"
+date = 2023-01-27T23:44:58-08:00
+{{< /code-toggle >}}
+
+The examples below were rendered in the `America/Los_Angeles` time zone:
+
+Format string|Result
+:--|:--
+`Monday, January 2, 2006`|`Friday, January 27, 2023`
+`Mon Jan 2 2006`|`Fri Jan 27 2023`
+`January 2006`|`January 2023`
+`2006-01-02`|`2023-01-27`
+`Monday`|`Friday`
+`02 Jan 06 15:04 MST`|`27 Jan 23 23:44 PST`
+`Mon, 02 Jan 2006 15:04:05 MST`|`Fri, 27 Jan 2023 23:44:58 PST`
+`Mon, 02 Jan 2006 15:04:05 -0700`|`Fri, 27 Jan 2023 23:44:58 -0800`
+
+## UTC and local time
+
+Convert and format any `time.Time` value to either Coordinated Universal Time (UTC) or local time.
+
+```go-html-template
+{{ $t := "2023-01-27T23:44:58-08:00" }}
+{{ $t = time.AsTime $t }}
+{{ $format := "2 Jan 2006 3:04:05 PM MST" }}
+
+{{ $t.UTC.Format $format }} → 28 Jan 2023 7:44:58 AM UTC
+{{ $t.Local.Format $format }} → 27 Jan 2023 11:44:58 PM PST
+```
+
+## Ordinal representation
+
+Use the [`humanize`](/functions/inflect/humanize) function to render the day of the month as an ordinal number:
+
+```go-html-template
+{{ $t := "2023-01-27T23:44:58-08:00" }}
+{{ $t = time.AsTime $t }}
+
+{{ humanize $t.Day }} of {{ $t.Format "January 2006" }} → 27th of January 2023
+```
diff --git a/docs/content/en/functions/get.md b/docs/content/en/functions/Get.md
index 561a794c7..142e9811b 100644
--- a/docs/content/en/functions/get.md
+++ b/docs/content/en/functions/Get.md
@@ -2,12 +2,17 @@
title: .Get
description: Accesses positional and ordered parameters in shortcode declaration.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [shortcodes]
-signature: [".Get INDEX", ".Get KEY"]
-relatedfuncs: []
+function:
+ aliases: []
+ returnType: any
+ signatures:
+ - .Get INDEX
+ - .Get KEY
+relatedFunctions: []
---
`.Get` is specifically used when creating your own [shortcode template][sc], to access the [positional and named](/templates/shortcode-templates/#positional-vs-named-parameters) parameters passed to it. When used with a numeric INDEX, it queries positional parameters (starting with 0). With a string KEY, it queries named parameters.
diff --git a/docs/content/en/functions/GetPage.md b/docs/content/en/functions/GetPage.md
index 17d2bd972..4afebaca7 100644
--- a/docs/content/en/functions/GetPage.md
+++ b/docs/content/en/functions/GetPage.md
@@ -1,13 +1,16 @@
---
title: .GetPage
-description: "Gets a `Page` of a given `path`."
+description: Gets a `Page` of a given `path`.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [sections,lists,indexes]
-signature: [".GetPage PATH"]
-relatedfuncs: []
+function:
+ aliases: []
+ returnType:
+ signatures: [.GetPage PATH]
+relatedFunctions: []
---
`.GetPage` returns a page of a given `path`. Both `Site` and `Page` implements this method. The `Page` variant will, if given a relative path -- i.e. a path without a leading `/` -- try look for the page relative to the current page.
diff --git a/docs/content/en/functions/HasMenuCurrent.md b/docs/content/en/functions/HasMenuCurrent.md
new file mode 100644
index 000000000..5b4200c56
--- /dev/null
+++ b/docs/content/en/functions/HasMenuCurrent.md
@@ -0,0 +1,35 @@
+---
+title: .HasMenuCurrent
+description: Reports whether the given page object matches the page object associated with one of the child menu entries under the given menu entry in the given menu.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: bool
+ signatures: [PAGE.HasMenuCurrent MENU MENUENTRY]
+relatedFunctions:
+ - .HasMenuCurrent
+ - .IsMenuCurrent
+---
+
+If the page object associated with the menu entry is a section, this method also returns `true` for any descendant of that section.
+
+```go-html-template
+{{ $currentPage := . }}
+{{ range site.Menus.main }}
+ {{ if $currentPage.IsMenuCurrent .Menu . }}
+ <a class="active" aria-current="page" href="{{ .URL }}">{{ .Name }}</a>
+ {{ else if $currentPage.HasMenuCurrent .Menu . }}
+ <a class="ancestor" aria-current="true" href="{{ .URL }}">{{ .Name }}</a>
+ {{ else }}
+ <a href="{{ .URL }}">{{ .Name }}</a>
+ {{ end }}
+{{ end }}
+```
+
+See [menu templates] for a complete example.
+
+[menu templates]: /templates/menu-templates/#example
diff --git a/docs/content/en/functions/IsMenuCurrent.md b/docs/content/en/functions/IsMenuCurrent.md
new file mode 100644
index 000000000..c9980b3e8
--- /dev/null
+++ b/docs/content/en/functions/IsMenuCurrent.md
@@ -0,0 +1,33 @@
+---
+title: .IsMenuCurrent
+description: Reports whether the given page object matches the page object associated with the given menu entry in the given menu.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: bool
+ signatures: [PAGE.IsMenuCurrent MENU MENUENTRY]
+relatedFunctions:
+ - .HasMenuCurrent
+ - .IsMenuCurrent
+---
+
+```go-html-template
+{{ $currentPage := . }}
+{{ range site.Menus.main }}
+ {{ if $currentPage.IsMenuCurrent .Menu . }}
+ <a class="active" aria-current="page" href="{{ .URL }}">{{ .Name }}</a>
+ {{ else if $currentPage.HasMenuCurrent .Menu . }}
+ <a class="ancestor" aria-current="true" href="{{ .URL }}">{{ .Name }}</a>
+ {{ else }}
+ <a href="{{ .URL }}">{{ .Name }}</a>
+ {{ end }}
+{{ end }}
+```
+
+See [menu templates] for a complete example.
+
+[menu templates]: /templates/menu-templates/#example
diff --git a/docs/content/en/functions/param.md b/docs/content/en/functions/Param.md
index 45ef4434c..a2826a3c8 100644
--- a/docs/content/en/functions/param.md
+++ b/docs/content/en/functions/Param.md
@@ -1,12 +1,16 @@
---
title: .Param
description: Returns a page parameter, falling back to a site parameter if present.
-signature: ['.Param KEY']
categories: [functions]
-keywords: ['front matter', 'params']
+keywords: []
menu:
docs:
parent: functions
+function:
+ aliases: []
+ returnType: any
+ signatures: [.Param KEY]
+relatedFunctions: []
---
The `.Param` method on `.Page` looks for the given `KEY` in page parameters, and returns the corresponding value. If it cannot find the `KEY` in page parameters, it looks for the `KEY` in site parameters. If it cannot find the `KEY` in either location, the `.Param` method returns `nil`.
diff --git a/docs/content/en/functions/render.md b/docs/content/en/functions/Render.md
index 4e4648652..02567845f 100644
--- a/docs/content/en/functions/render.md
+++ b/docs/content/en/functions/Render.md
@@ -2,12 +2,15 @@
title: .Render
description: Takes a view to apply when rendering content.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [views]
-signature: [".Render LAYOUT"]
-relatedfuncs: []
+function:
+ aliases: []
+ returnType: template.HTML
+ signatures: [.Render LAYOUT]
+relatedFunctions: []
---
The view is an alternative layout and should be a file name that points to a template in one of the locations specified in the documentation for [Content Views](/templates/views).
diff --git a/docs/content/en/functions/RenderString.md b/docs/content/en/functions/RenderString.md
index 47c914ca4..91414d6a0 100644
--- a/docs/content/en/functions/RenderString.md
+++ b/docs/content/en/functions/RenderString.md
@@ -1,12 +1,15 @@
---
title: .RenderString
-description: "Renders markup to HTML."
+description: Renders markup to HTML.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [markdown,goldmark,render]
-signature: [".RenderString MARKUP"]
+function:
+ aliases: []
+ returnType: template.HTML
+ signatures: ['.RenderString MARKUP [OPTIONS]']
---
`.RenderString` is a method on `Page` that renders some markup to HTML using the content renderer defined for that page (if not set in the options).
@@ -29,4 +32,4 @@ Some examples:
{{ "/italic org mode/" | $p.RenderString $optOrg }}
```
-{{< new-in "0.93.0" >}} **Note**: [markdownify](/functions/markdownify/) uses this function in order to support [Render Hooks](/getting-started/configuration-markup/#markdown-render-hooks).
+{{< new-in "0.93.0" >}} **Note**: [markdownify](/functions/transform/markdownify) uses this function in order to support [Render Hooks](/getting-started/configuration-markup/#markdown-render-hooks).
diff --git a/docs/content/en/functions/scratch.md b/docs/content/en/functions/Scratch.md
index 16e502b84..0640d6bcc 100644
--- a/docs/content/en/functions/scratch.md
+++ b/docs/content/en/functions/Scratch.md
@@ -1,14 +1,18 @@
---
title: .Scratch
description: Acts as a "scratchpad" to store and manipulate data.
-keywords: [iteration]
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-toc:
-signature: []
-relatedfuncs: []
+function:
+ aliases: []
+ returnType:
+ signatures: []
+relatedFunctions:
+ - .Store
+ - .Scratch
aliases: [/extras/scratch/,/doc/scratch/]
---
@@ -72,7 +76,7 @@ Get the value of a given key.
Add a given value to existing value(s) of the given key.
-For single values, `Add` accepts values that support Go's `+` operator. If the first `Add` for a key is an array or slice, the following adds will be [appended](/functions/append/) to that list.
+For single values, `Add` accepts values that support Go's `+` operator. If the first `Add` for a key is an array or slice, the following adds will be [appended](/functions/collections/append/) to that list.
```go-html-template
{{ $scratch.Add "greetings" "Hello" }}
diff --git a/docs/content/en/functions/store.md b/docs/content/en/functions/Store.md
index d57194d80..49b38188b 100644
--- a/docs/content/en/functions/store.md
+++ b/docs/content/en/functions/Store.md
@@ -2,11 +2,17 @@
title: .Store
description: Returns a Scratch that is not reset on server rebuilds.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [scratch]
-signature: []
+function:
+ aliases: []
+ returnType:
+ signatures: []
+relatedFunctions:
+ - .Store
+ - .Scratch
---
The `.Store` method on `.Page` returns a [Scratch] to store and manipulate data. In contrast to the `.Scratch` method, this Scratch is not reset on server rebuilds.
diff --git a/docs/content/en/functions/Unix.md b/docs/content/en/functions/Unix.md
new file mode 100644
index 000000000..ed49b72b5
--- /dev/null
+++ b/docs/content/en/functions/Unix.md
@@ -0,0 +1,36 @@
+---
+title: .Unix
+description: Converts a time.Time value to the number of seconds elapsed since the Unix epoch, excluding leap seconds. The Unix epoch is 00:00:00&nbsp;UTC on 1 January 1970.
+categories: [functions]
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: int64
+ signatures:
+ - .Unix
+ - .UnixMilli
+ - .UnixMicro
+ - .UnixNano
+relatedFunctions: []
+---
+
+The `Milli`, `Micro`, and `Nano` variants return the number of milliseconds, microseconds, and nanoseconds (respectively) elapsed since the Unix epoch.
+
+```go-html-template
+.Date.Unix → 1637259694
+.ExpiryDate.Unix → 1672559999
+.Lastmod.Unix → 1637361786
+.PublishDate.Unix → 1637421261
+
+("1970-01-01T00:00:00-00:00" | time.AsTime).Unix → 0
+("1970-01-01T00:00:42-00:00" | time.AsTime).Unix → 42
+("1970-04-11T01:48:29-08:00" | time.AsTime).Unix → 8675309
+("2026-05-02T20:09:31-07:00" | time.AsTime).Unix → 1777777771
+
+now.Unix → 1637447841
+now.UnixMilli → 1637447841347
+now.UnixMicro → 1637447841347378
+now.UnixNano → 1637447841347378799
+```
diff --git a/docs/content/en/functions/_common/go-template-functions.md b/docs/content/en/functions/_common/go-template-functions.md
new file mode 100644
index 000000000..b8722743e
--- /dev/null
+++ b/docs/content/en/functions/_common/go-template-functions.md
@@ -0,0 +1,3 @@
+See Go's [text/template] documentation for more details.
+
+[text/template]: https://pkg.go.dev/text/template
diff --git a/docs/content/en/functions/common/index.md b/docs/content/en/functions/_common/index.md
index cbb7365a6..cbb7365a6 100644
--- a/docs/content/en/functions/common/index.md
+++ b/docs/content/en/functions/_common/index.md
diff --git a/docs/content/en/functions/_common/locales.md b/docs/content/en/functions/_common/locales.md
new file mode 100644
index 000000000..259231cbf
--- /dev/null
+++ b/docs/content/en/functions/_common/locales.md
@@ -0,0 +1,3 @@
+Localization of dates, currencies, numbers, and percentages is performed by the [gohugoio/locales] package. The language tag of the current site must match one of the listed locales.
+
+[gohugoio/locales]: https://github.com/gohugoio/locales
diff --git a/docs/content/en/functions/common/regular-expressions.md b/docs/content/en/functions/_common/regular-expressions.md
index 9da340849..9da340849 100644
--- a/docs/content/en/functions/common/regular-expressions.md
+++ b/docs/content/en/functions/_common/regular-expressions.md
diff --git a/docs/content/en/functions/_common/time-layout-string.md b/docs/content/en/functions/_common/time-layout-string.md
new file mode 100644
index 000000000..40932f8cf
--- /dev/null
+++ b/docs/content/en/functions/_common/time-layout-string.md
@@ -0,0 +1,42 @@
+Format a `time.Time` value based on [Go's reference time]:
+
+[Go's reference time]: https://pkg.go.dev/time#pkg-constants
+
+```text {copy=false}
+Mon Jan 2 15:04:05 MST 2006
+```
+
+Create a format string using these components:
+
+Description|Valid components
+:--|:--
+Year|`"2006" "06"`
+Month|`"Jan" "January" "01" "1"`
+Day of the week|`"Mon" "Monday"`
+Day of the month|`"2" "_2" "02"`
+Day of the year|`"__2" "002"`
+Hour|`"15" "3" "03"`
+Minute|`"4" "04"`
+Second|`"5" "05"`
+AM/PM mark|`"PM"`
+Time zone offsets|`"-0700" "-07:00" "-07" "-070000" "-07:00:00"`
+
+Replace the sign in the format string with a Z to print Z instead of an offset for the UTC zone.
+
+Description|Valid components
+:--|:--
+Time zone offsets|`"Z0700" "Z07:00" "Z07" "Z070000" "Z07:00:00"`
+
+```go-html-template
+{{ $t := "2023-01-27T23:44:58-08:00" }}
+{{ $t = time.AsTime $t }}
+{{ $t = $t.Format "Jan 02, 2006 3:04 PM Z07:00" }}
+
+{{ $t }} → Jan 27, 2023 11:44 PM -08:00
+```
+
+Strings such as `PST` and `CET` are not time zones. They are time zone _abbreviations_.
+
+Strings such as `-07:00` and `+01:00` are not time zones. They are time zone _offsets_.
+
+A time zone is a geographic area with the same local time. For example, the time zone abbreviated by `PST` and `PDT` (depending on Daylight Savings Time) is `America/Los_Angeles`.
diff --git a/docs/content/en/functions/base64.md b/docs/content/en/functions/base64.md
deleted file mode 100644
index a6de64bd9..000000000
--- a/docs/content/en/functions/base64.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: base64
-description: "`base64Encode` and `base64Decode` let you easily decode content with a base64 encoding and vice versa through pipes."
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: []
-relatedfuncs: []
-signature: ["base64Decode INPUT", "base64Encode INPUT"]
----
-
-```go-html-template
-{{ "Hugo" | base64Encode }} → "SHVnbw=="
-{{ "SHVnbw==" | base64Decode }} → "Hugo"
-```
-
-## `base64` with APIs
-
-Using base64 to decode and encode becomes really powerful if we have to handle
-responses from APIs.
-
-```go-html-template
-{{ $resp := getJSON "https://api.github.com/repos/gohugoio/hugo/readme" }}
-{{ $resp.content | base64Decode | markdownify }}
-```
-
-The response of the GitHub API contains the base64-encoded version of the [README.md](https://github.com/gohugoio/hugo/blob/master/README.md) in the Hugo repository. Now we can decode it and parse the Markdown. The final output will look similar to the rendered version on GitHub.
diff --git a/docs/content/en/functions/float.md b/docs/content/en/functions/cast/ToFloat.md
index e95b3ae5f..acf70bc43 100644
--- a/docs/content/en/functions/float.md
+++ b/docs/content/en/functions/cast/ToFloat.md
@@ -1,13 +1,21 @@
---
-title: float
+title: cast.ToFloat
+linkTitle: float
description: Casts a value to a decimal (base 10) floating point value.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [cast,strings,floats]
-signature: ["float INPUT"]
-relatedfuncs: []
+function:
+ aliases: [float]
+ returnType: float64
+ signatures: [cast.ToFloat INPUT]
+relatedFunctions:
+ - cast.ToFloat
+ - cast.ToInt
+ - cast.ToString
+aliases: [/functions/float]
---
With a decimal (base 10) input:
diff --git a/docs/content/en/functions/int.md b/docs/content/en/functions/cast/ToInt.md
index 1d91c9fdd..b4a37cb6c 100644
--- a/docs/content/en/functions/int.md
+++ b/docs/content/en/functions/cast/ToInt.md
@@ -1,13 +1,21 @@
---
-title: int
+title: cast.ToInt
+linkTitle: int
description: Casts a value to a decimal (base 10) integer.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [cast,strings,integers]
-signature: ["int INPUT"]
-relatedfuncs: []
+function:
+ aliases: [int]
+ returnType: int
+ signatures: [cast.ToInt INPUT]
+relatedFunctions:
+ - cast.ToFloat
+ - cast.ToInt
+ - cast.ToString
+aliases: [/functions/int]
---
With a decimal (base 10) input:
diff --git a/docs/content/en/functions/string.md b/docs/content/en/functions/cast/ToString.md
index df9d07116..d677ecdbf 100644
--- a/docs/content/en/functions/string.md
+++ b/docs/content/en/functions/cast/ToString.md
@@ -1,13 +1,21 @@
---
-title: string
+title: cast.ToString
+linkTitle: string
description: Cast a value to a string.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [cast,strings]
-signature: ["string INPUT"]
-relatedfuncs: []
+function:
+ aliases: [string]
+ returnType: string
+ signatures: [cast.ToString INPUT]
+relatedFunctions:
+ - cast.ToFloat
+ - cast.ToInt
+ - cast.ToString
+aliases: [/functions/string]
---
With a decimal (base 10) input:
diff --git a/docs/content/en/functions/chomp.md b/docs/content/en/functions/chomp.md
deleted file mode 100644
index 861e7ecc4..000000000
--- a/docs/content/en/functions/chomp.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: chomp
-toc: true
-description: Removes any trailing newline characters.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [trim]
-signature:
- - "chomp INPUT"
- - "strings.Chomp INPUT"
-relatedfuncs: [truncate]
----
-
-Useful in a pipeline to remove newlines added by other processing (e.g., [`markdownify`](/functions/markdownify/)).
-
-```go-html-template
-{{ chomp "<p>Blockhead</p>\n" }} → "<p>Blockhead</p>"
-```
diff --git a/docs/content/en/functions/after.md b/docs/content/en/functions/collections/After.md
index 85aa6104d..e27c1507f 100644
--- a/docs/content/en/functions/after.md
+++ b/docs/content/en/functions/collections/After.md
@@ -1,16 +1,24 @@
---
-title: after
-description: "`after` slices an array to only the items after the <em>N</em>th item."
+title: collections.After
+linkTitle: after
+description: Slices an array to the items after the Nth item.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [iteration]
-signature: ["after INDEX COLLECTION"]
-relatedfuncs: [last,first,seq]
+function:
+ aliases: [after]
+ returnType: any
+ signatures: [collections.After INDEX COLLECTION]
+relatedFunctions:
+ - collections.After
+ - collections.First
+ - collections.Last
+aliases: [/functions/after]
---
-The following shows `after` being used in conjunction with the [`slice` function][slice]:
+The following shows `after` being used in conjunction with the [`slice`]function:
```go-html-template
{{ $data := slice "one" "two" "three" "four" }}
@@ -22,7 +30,7 @@ The following shows `after` being used in conjunction with the [`slice` function
## Example of `after` with `first`: 2nd&ndash;4th most recent articles
-You can use `after` in combination with the [`first` function] and Hugo's [powerful sorting methods][lists]. Let's assume you have a list page at `example.com/articles`. You have 10 articles, but you want your templating for the [list/section page] to show only two rows:
+You can use `after` in combination with the [`first`] function and Hugo's [powerful sorting methods][lists]. Let's assume you have a list page at `example.com/articles`. You have 10 articles, but you want your templating for the [list/section page] to show only two rows:
1. The top row is titled "Featured" and shows only the most recently published article (i.e. by `publishdate` in the content files' front matter).
2. The second row is titled "Recent Articles" and shows only the 2nd- to 4th-most recently published articles.
@@ -52,7 +60,7 @@ You can use `after` in combination with the [`first` function] and Hugo's [power
{{ end }}
{{< /code >}}
-[`first` function]: /functions/first/
-[list/section page]: /templates/section-templates/
+[`first`]: /functions/collections/first
+[list/section page]: /templates/section-templates
[lists]: /templates/lists/#order-content
-[slice]: /functions/slice/
+[`slice`]: /functions/collections/slice/
diff --git a/docs/content/en/functions/append.md b/docs/content/en/functions/collections/Append.md
index e734eac2b..31657288f 100644
--- a/docs/content/en/functions/append.md
+++ b/docs/content/en/functions/collections/Append.md
@@ -1,13 +1,23 @@
---
-title: append
+title: collections.Append
+linkTitle: append
description: Appends one or more elements to a slice and returns the resulting slice.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [collections]
-signature: ["COLLECTION | append ELEMENT [ELEMENT]...", "COLLECTION | append COLLECTION"]
-relatedfuncs: [last,first,where,slice]
+function:
+ aliases: [append]
+ returnType: any
+ signatures:
+ - COLLECTION | collections.Append ELEMENT [ELEMENT]...
+ - COLLECTION | collections.Append COLLECTION
+relatedFunctions:
+ - collections.Append
+ - collections.Merge
+ - collections.Slice
+aliases: [/functions/append]
---
This function appends all elements, excluding the last, to the last element. This allows [pipe](/getting-started/glossary/#pipeline) constructs as shown below.
@@ -81,8 +91,6 @@ To create a slice of slices, starting with an empty slice:
{{ $s }} → [[a b] [c d]]
```
-
-
Although the elements in the examples above are strings, you can use the `append` function with any data type, including Pages. For example, on the home page of a corporate site, to display links to the two most recent press releases followed by links to the four most recent articles:
```go-html-template
diff --git a/docs/content/en/functions/apply.md b/docs/content/en/functions/collections/Apply.md
index c507a35bf..d7401908a 100644
--- a/docs/content/en/functions/apply.md
+++ b/docs/content/en/functions/collections/Apply.md
@@ -1,19 +1,30 @@
---
-title: apply
+title: collections.Apply
+linkTitle: apply
description: Given an array or slice, `apply` returns a new slice with a function applied over it.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [advanced]
-signature: ["apply COLLECTION FUNCTION [PARAM...]"]
-relatedfuncs: []
+function:
+ aliases: [apply]
+ returnType: any
+ signatures: ['collections.Apply COLLECTION FUNCTION [PARAM...]']
+relatedFunctions:
+ - collections.Apply
+ - collections.Delimit
+ - collections.In
+ - collections.Reverse
+ - collections.Seq
+ - collections.Slice
+aliases: [/functions/apply]
---
`apply` expects at least three arguments, depending on the function being applied.
1. The first argument is the sequence to operate on.
-2. The second argument is the name of the function as a string, which must be the name of a valid [Hugo function][functions].
+2. The second argument is the name of the function as a string, which must be the name of a valid [template function].
3. After that, the arguments to the applied function are provided, with the string `"."` standing in for each element of the sequence the function is to be applied against.
Here is an example of a content file with `names:` as a front matter field:
@@ -35,13 +46,13 @@ Which will result in the following:
"derek-perkins", "joe-bergevin", "tanner-linsley"
```
-This is *roughly* equivalent to using the following with [range]:
+This is *roughly* equivalent to using the following with [`range`]:
```go-html-template
{{ range .Params.names }}{{ . | urlize }}{{ end }}
```
-However, it is not possible to provide the output of a range to the [`delimit` function][delimit], so you need to `apply` it.
+However, it is not possible to provide the output of a range to the [`delimit`]function, so you need to `apply` it.
If you have `post-tag-list.html` and `post-tag-link.html` as [partials], you *could* use the following snippets, respectively:
@@ -83,7 +94,7 @@ This first version of `layouts/partials/post-tag-list.html` separates all of the
{{ end }}
```
-Now in the completed version, you can sort the tags, convert the tags to links with `layouts/partials/post-tag-link.html`, [chomp] off stray newlines, and join the tags together in a delimited list for presentation. Here is an even DRYer version of the preceding example:
+Now in the completed version, you can sort the tags, convert the tags to links with `layouts/partials/post-tag-link.html`, [`chomp`] stray newlines, and join the tags together in a delimited list for presentation. Here is an even DRYer version of the preceding example:
{{< code file="layouts/partials/post-tag-list.html" >}}
{{ with .Params.tags }}
@@ -98,8 +109,7 @@ Now in the completed version, you can sort the tags, convert the tags to links w
`apply` does not work when receiving the sequence as an argument through a pipeline.
{{% /note %}}
-[chomp]: /functions/chomp/ "See documentation for the chomp function"
-[delimit]: /functions/delimit/ "See documentation for the delimit function"
-[functions]: /functions/ "See the full list of Hugo functions to see what can be passed as an argument to the apply function."
-[partials]: /templates/partials/
-[range]: /functions/range/ "Learn the importance of the range function, a fundamental keyword in both Hugo templates and the Go programming language."
+[`chomp`]: /functions/strings/chomp/
+[`delimit`]: /functions/collections/delimit/
+[template function]: /functions/
+[`range`]: /functions/go-template/range/
diff --git a/docs/content/en/functions/complement.md b/docs/content/en/functions/collections/Complement.md
index e4cf01e77..28b7ded3d 100644
--- a/docs/content/en/functions/complement.md
+++ b/docs/content/en/functions/collections/Complement.md
@@ -1,15 +1,22 @@
---
-title: complement
+title: collections.Complement
+linkTitle: complement
description: Returns the elements of the last collection that are not in any of the others.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [collections]
-signature:
-- "complement COLLECTION [COLLECTION]..."
-- "collections.Complement COLLECTION [COLLECTION]..."
-relatedfuncs: [intersect,symdiff,union]
+function:
+ aliases: [complement]
+ returnType: any
+ signatures: ['collections.Complement COLLECTION [COLLECTION]...']
+relatedFunctions:
+ - collections.Complement
+ - collections.Intersect
+ - collections.SymDiff
+ - collections.Union
+aliases: [/functions/complement]
---
To find the elements within `$c3` that do not exist in `$c1` or `$c2`:
@@ -57,7 +64,7 @@ To list everything except blog articles (`blog`) and frequently asked questions
{{% note %}}
Although the example above demonstrates the `complement` function, you could use the [`where`] function as well:
-[`where`]: /functions/where/
+[`where`]: /functions/collections/where
{{% /note %}}
```go-html-template
diff --git a/docs/content/en/functions/delimit.md b/docs/content/en/functions/collections/Delimit.md
index cc0293526..0fc3ef537 100644
--- a/docs/content/en/functions/delimit.md
+++ b/docs/content/en/functions/collections/Delimit.md
@@ -1,13 +1,25 @@
---
-title: delimit
+title: collections.Delimit
+linkTitle: delimit
description: Loops through any array, slice, or map and returns a string of all the values separated by a delimiter.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [iteration]
-signature: ["delimit COLLECTION DELIMITER [LAST]"]
-relatedfuncs: []
+function:
+ aliases: [delimit]
+ returnType: template.HTML
+ signatures: ['collections.Delimit COLLECTION DELIMITER [LAST]']
+relatedFunctions:
+ - collections.Apply
+ - collections.Delimit
+ - collections.In
+ - collections.Reverse
+ - collections.Seq
+ - collections.Slice
+ - strings.Split
+aliases: [/functions/delimit]
---
Delimit a slice:
diff --git a/docs/content/en/functions/dict.md b/docs/content/en/functions/collections/Dictionary.md
index 0fc2c530b..28c387726 100644
--- a/docs/content/en/functions/dict.md
+++ b/docs/content/en/functions/collections/Dictionary.md
@@ -1,13 +1,23 @@
---
-title: dict
+title: collections.Dictionary
+linkTitle: dict
description: Creates a map from a list of key and value pairs.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [collections]
-signature: ["dict KEY VALUE [KEY VALUE]..."]
-relatedfuncs: []
+function:
+ aliases: [dict]
+ returnType: mapany
+ signatures: ['collections.Dictionary KEY VALUE [KEY VALUE]...']
+relatedFunctions:
+ - collections.Dictionary
+ - collections.Group
+ - collections.Index
+ - collections.IsSet
+ - collections.Where
+aliases: [/functions/dict]
---
`dict` is especially useful for passing more than one value to a partial template.
diff --git a/docs/content/en/functions/collections/EchoParam.md b/docs/content/en/functions/collections/EchoParam.md
new file mode 100644
index 000000000..7617eedd9
--- /dev/null
+++ b/docs/content/en/functions/collections/EchoParam.md
@@ -0,0 +1,40 @@
+---
+title: collections.EchoParam
+linkTitle: echoParam
+description: Prints a parameter if it is set.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [echoParam]
+ returnType: any
+ signatures: [collections.EchoParam COLLECTION KEY]
+relatedFunctions: []
+aliases: [/functions/echoparam]
+---
+
+For example, consider this site configuration:
+
+{{< code-toggle file=hugo copy=false >}}
+[params.footer]
+poweredBy = 'Hugo'
+{{< /code-toggle >}}
+
+To print the value of `poweredBy`:
+
+```go-html-template
+{{ echoParam site.Params.footer "poweredby" }} → Hugo
+```
+
+{{% note %}}
+When using the `echoParam` function you must reference the key using lower case. See the previous example.
+
+The `echoParam` function will be deprecated in a future release. Instead, use either of the constructs below.
+{{% /note %}}
+
+```go-html-template
+{{ site.Params.footer.poweredBy }} → Hugo
+{{ index site.Params.footer "poweredBy" }} → Hugo
+```
diff --git a/docs/content/en/functions/first.md b/docs/content/en/functions/collections/First.md
index 118c9c504..ddb045382 100644
--- a/docs/content/en/functions/first.md
+++ b/docs/content/en/functions/collections/First.md
@@ -1,13 +1,21 @@
---
-title: first
-description: "Slices an array to only the first _N_ elements."
+title: collections.First
+linkTitle: first
+description: Slices an array to the first N elements.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [iteration]
-signature: ["first LIMIT COLLECTION"]
-relatedfuncs: [after,last]
+function:
+ aliases: [first]
+ returnType: any
+ signatures: [collections.First LIMIT COLLECTION]
+relatedFunctions:
+ - collections.After
+ - collections.First
+ - collections.Last
+aliases: [/functions/first]
---
`first` works in a similar manner to the [`limit` keyword in
@@ -28,9 +36,9 @@ elements. It takes the array and number of elements as input.
## `first` and `where` Together
-Using `first` and [`where`][wherefunction] together can be very
-powerful. Below snippet gets a list of posts only from [**main
-sections**][mainsections], sorts it by the `title` parameter, and then
+Using `first` and [`where`] together can be very
+powerful. Below snippet gets a list of posts only from [main
+sections], sorts it by the `title` parameter, and then
ranges through only the first 5 posts in that list:
{{< code file="first-and-where-together.html" >}}
@@ -41,5 +49,5 @@ ranges through only the first 5 posts in that list:
[limitkeyword]: https://www.techonthenet.com/sql/select_limit.php
-[wherefunction]: /functions/where/
-[mainsections]: /functions/where/#mainsections
+[`where`]: /functions/collections/where
+[main sections]: /functions/collections/where#mainsections
diff --git a/docs/content/en/functions/collections/Group.md b/docs/content/en/functions/collections/Group.md
new file mode 100644
index 000000000..29220f1f7
--- /dev/null
+++ b/docs/content/en/functions/collections/Group.md
@@ -0,0 +1,40 @@
+---
+title: collections.Group
+linkTitle: group
+description: Groups a list of pages.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [group]
+ returnType: any
+ signatures: [PAGES | collections.Group KEY]
+relatedFunctions:
+ - collections.Dictionary
+ - collections.Group
+ - collections.Index
+ - collections.IsSet
+ - collections.Where
+aliases: [/functions/group]
+---
+
+{{< code file="layouts/partials/groups.html" >}}
+{{ $new := .Site.RegularPages | first 10 | group "New" }}
+{{ $old := .Site.RegularPages | last 10 | group "Old" }}
+{{ $groups := slice $new $old }}
+{{ range $groups }}
+ <h3>{{ .Key }}{{/* Prints "New", "Old" */}}</h3>
+ <ul>
+ {{ range .Pages }}
+ <li>
+ <a href="{{ .Permalink }}">{{ .Title }}</a>
+ <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
+ </li>
+ {{ end }}
+ </ul>
+{{ end }}
+{{< /code >}}
+
+The page group you get from `group` is of the same type you get from the built-in [group methods](/templates/lists#group-content) in Hugo. The above example can be [paginated](/templates/pagination/#list-paginator-pages).
diff --git a/docs/content/en/functions/collections/In.md b/docs/content/en/functions/collections/In.md
new file mode 100644
index 000000000..57ffbd653
--- /dev/null
+++ b/docs/content/en/functions/collections/In.md
@@ -0,0 +1,38 @@
+---
+title: collections.In
+linkTitle: in
+description: Reports whether an element is in an array or slice, or if a substring is in a string.
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [in]
+ returnType: bool
+ signatures: [collections.In SET ITEM]
+relatedFunctions:
+ - collections.Slice
+aliases: [/functions/in]
+---
+
+
+
+```go-html-template
+{{ $s := slice "a" "b" "c" }}
+{{ in $s "b" }} → true
+```
+
+```go-html-template
+{{ $s := slice 1 2 3 }}
+{{ in $s 2 }} → true
+```
+
+```go-html-template
+{{ $s := slice 1.11 2.22 3.33 }}
+{{ in $s 2.22 }} → true
+```
+
+```go-html-template
+{{ $s := "abc" }}
+{{ in $s "b" }} → true
+```
diff --git a/docs/content/en/functions/index-function.md b/docs/content/en/functions/collections/IndexFunction.md
index b2193c9c5..cd063f36e 100644
--- a/docs/content/en/functions/index-function.md
+++ b/docs/content/en/functions/collections/IndexFunction.md
@@ -1,14 +1,26 @@
---
-title: index
+title: collections.Index
+linkTitle: index
description: Looks up the index(es) or key(s) of the data structure passed into it.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: []
-signature: ["index COLLECTION INDEXES", "index COLLECTION KEYS"]
-relatedfuncs: []
-aliases: [/functions/index/]
+function:
+ aliases: [index]
+ returnType: any
+ signatures:
+ - collections.Index COLLECTION INDEXES
+ - collections.Index COLLECTION KEYS
+relatedFunctions:
+ - collections.Dictionary
+ - collections.EchoParam
+ - collections.Group
+ - collections.Index
+ - collections.IsSet
+ - collections.Where
+aliases: [/functions/index,/functions/index-function]
---
The `index` functions returns the result of indexing its first argument by the following arguments. Each indexed item must be a map or a slice, e.g.:
diff --git a/docs/content/en/functions/intersect.md b/docs/content/en/functions/collections/Intersect.md
index 9c3ed6292..6a2c131b4 100644
--- a/docs/content/en/functions/intersect.md
+++ b/docs/content/en/functions/collections/Intersect.md
@@ -1,13 +1,22 @@
---
-title: intersect
+title: collections.Intersect
+linkTitle: intersect
description: Returns the common elements of two arrays or slices, in the same order as the first array.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [collections,intersect,union,complement,symdiff]
-signature: ["intersect SET1 SET2"]
-relatedfuncs: []
+function:
+ aliases: [intersect]
+ returnType: any
+ signatures: [collections.Intersect SET1 SET2]
+relatedFunctions:
+ - collections.Complement
+ - collections.Intersect
+ - collections.SymDiff
+ - collections.Union
+aliases: [/functions/intersect]
---
A useful example is to use it as `AND` filters when combined with where:
@@ -21,7 +30,7 @@ A useful example is to use it as `AND` filters when combined with where:
The above fetches regular pages not of `page` or `about` type unless they are pinned. And finally, we exclude all pages with no `images` set in Page parameters.
-See [union](/functions/union) for `OR`.
+See [union](/functions/collections/union) for `OR`.
[partials]: /templates/partials/
diff --git a/docs/content/en/functions/collections/IsSet.md b/docs/content/en/functions/collections/IsSet.md
new file mode 100644
index 000000000..93fb9f8f6
--- /dev/null
+++ b/docs/content/en/functions/collections/IsSet.md
@@ -0,0 +1,52 @@
+---
+title: collections.IsSet
+linkTitle: isset
+description: Reports whether the key exists within the collection.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [isset]
+ returnType: bool
+ signatures: [collections.IsSet COLLECTION KEY]
+relatedFunctions:
+ - collections.Dictionary
+ - collections.Group
+ - collections.Index
+ - collections.IsSet
+ - collections.Where
+aliases: [/functions/isset]
+---
+
+For example, consider this site configuration:
+
+{{< code-toggle file=hugo copy=false >}}
+[params]
+showHeroImage = false
+{{< /code-toggle >}}
+
+It the value of `showHeroImage` is `true`, we can detect that it exists using either `if` or `with`:
+
+```go-html-template
+{{ if site.Params.showHeroImage }}
+ {{ site.Params.showHeroImage }} → true
+{{ end }}
+
+{{ with site.Params.showHeroImage }}
+ {{ . }} → true
+{{ end }}
+```
+
+But if the value of `showHeroImage` is `false`, we can't use either `if` or `with` to detect its existence. In this case, you must use the `isset` function:
+
+```go-html-template
+{{ if isset site.Params "showheroimage" }}
+ <p>The showHeroImage parameter is set to {{ site.Params.showHeroImage }}.<p>
+{{ end }}
+```
+
+{{% note %}}
+When using the `isset` function you must reference the key using lower case. See the previous example.
+{{% /note %}}
diff --git a/docs/content/en/functions/collections/KeyVals.md b/docs/content/en/functions/collections/KeyVals.md
new file mode 100644
index 000000000..f3e0c559d
--- /dev/null
+++ b/docs/content/en/functions/collections/KeyVals.md
@@ -0,0 +1,45 @@
+---
+title: collections.KeyVals
+linkTitle: keyVals
+description: Returns a KeyVals struct.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [keyVals]
+ returnType: KeyValues
+ signatures: [collections.KeyVals KEY VALUES...]
+relatedFunctions: []
+aliases: [/functions/keyvals]
+---
+
+The primary application for this function is the definition of the `namedSlices` parameter in the options map passed to the `.Related` method on the `Page` object.
+
+See [related content](/content-management/related).
+
+```go-html-template
+{{ $kv := keyVals "foo" "a" "b" "c" }}
+```
+
+The resulting data structure is:
+
+```json
+{
+ "Key": "foo",
+ "Values": [
+ "a",
+ "b",
+ "c"
+ ]
+}
+```
+
+To extract the key and values:
+
+```go-html-template
+
+{{ $kv.Key }} → foo
+{{ $kv.Values }} → [a b c]
+```
diff --git a/docs/content/en/functions/collections/Last.md b/docs/content/en/functions/collections/Last.md
new file mode 100644
index 000000000..3f8496354
--- /dev/null
+++ b/docs/content/en/functions/collections/Last.md
@@ -0,0 +1,25 @@
+---
+title: collections.Last
+linkTitle: last
+description: Slices an array to the last N elements.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [last]
+ returnType: any
+ signatures: [collections.Last INDEX COLLECTION]
+relatedFunctions:
+ - collections.After
+ - collections.First
+ - collections.Last
+aliases: [/functions/last]
+---
+
+```go-html-template
+{{ range last 10 .Pages }}
+ {{ .Render "summary" }}
+{{ end }}
+```
diff --git a/docs/content/en/functions/merge.md b/docs/content/en/functions/collections/Merge.md
index 5fef26153..908f1738a 100644
--- a/docs/content/en/functions/merge.md
+++ b/docs/content/en/functions/collections/Merge.md
@@ -1,13 +1,20 @@
---
-title: merge
-description: "Returns the result of merging two or more maps."
+title: collections.Merge
+linkTitle: merge
+description: Returns the result of merging two or more maps.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [collections]
-signature: ["collections.Merge MAP MAP...", "merge MAP MAP..."]
-relatedfuncs: [dict, append, reflect.IsMap, reflect.IsSlice]
+function:
+ aliases: [merge]
+ returnType: any
+ signatures: [collections.Merge MAP MAP...]
+relatedFunctions:
+ - collections.Append
+ - collections.Merge
+aliases: [/functions/merge]
---
Returns the result of merging two or more maps from left to right. If a key already exists, `merge` updates its value. If a key is absent, `merge` inserts the value under the new key.
@@ -63,5 +70,5 @@ Example 4
```
{{% note %}}
-Regardless of depth, merging only applies to maps. For slices, use [append](/functions/append).
+Regardless of depth, merging only applies to maps. For slices, use [append](/functions/collections/append).
{{% /note %}}
diff --git a/docs/content/en/functions/collections/NewScratch.md b/docs/content/en/functions/collections/NewScratch.md
new file mode 100644
index 000000000..0df90bb96
--- /dev/null
+++ b/docs/content/en/functions/collections/NewScratch.md
@@ -0,0 +1,22 @@
+---
+title: collections.NewScratch
+linkTitle: newScratch
+description: Creates a new Scratch which can be used to store values in a thread safe way.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [newScratch]
+ returnType: Scratch
+ signatures: [collections.NewScratch ]
+relatedFunctions: []
+---
+
+```go-html-template
+{{ $scratch := newScratch }}
+{{ $scratch.Add "b" 2 }}
+{{ $scratch.Add "b" 2 }}
+{{ $scratch.Get "b" }} → 4
+```
diff --git a/docs/content/en/functions/querify.md b/docs/content/en/functions/collections/Querify.md
index b21b3a0b2..c94d51133 100644
--- a/docs/content/en/functions/querify.md
+++ b/docs/content/en/functions/collections/Querify.md
@@ -1,13 +1,22 @@
---
-title: querify
+title: collections.Querify
+linkTitle: querify
description: Takes a set or slice of key-value pairs and returns a query string to be appended to URLs.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [urls]
-signature: ["querify KEY VALUE [KEY VALUE]...", "querify COLLECTION"]
-relatedfuncs: []
+function:
+ aliases: [querify]
+ returnType: string
+ signatures:
+ - collections.Querify KEY VALUE [KEY VALUE]...
+ - collections.Querify COLLECTION
+relatedFunctions:
+ - collections.Querify
+ - urlquery
+aliases: [/functions/querify]
---
`querify` takes a set or slice of key-value pairs and returns a [query string](https://en.wikipedia.org/wiki/Query_string) that can be appended to a URL.
diff --git a/docs/content/en/functions/collections/Reverse.md b/docs/content/en/functions/collections/Reverse.md
new file mode 100644
index 000000000..521adc6f2
--- /dev/null
+++ b/docs/content/en/functions/collections/Reverse.md
@@ -0,0 +1,26 @@
+---
+title: collections.Reverse
+description: Reverses the order of a collection.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: any
+ signatures: [collections.Reverse COLLECTION]
+relatedFunctions:
+ - collections.Apply
+ - collections.Delimit
+ - collections.In
+ - collections.Reverse
+ - collections.Seq
+ - collections.Slice
+aliases: [/functions/collections.reverse]
+---
+
+
+```go-html-template
+{{ slice 2 1 3 | collections.Reverse }} → [3 1 2]
+```
diff --git a/docs/content/en/functions/seq.md b/docs/content/en/functions/collections/Seq.md
index 75edf5d2d..65ff1432f 100644
--- a/docs/content/en/functions/seq.md
+++ b/docs/content/en/functions/collections/Seq.md
@@ -1,13 +1,27 @@
---
-title: seq
+title: collections.Seq
+linkTitle: seq
description: Returns a slice of integers.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: []
-signature: ["seq LAST", "seq FIRST LAST", "seq FIRST INCREMENT LAST"]
-relatedfuncs: []
+function:
+ aliases: [seq]
+ returnType: '[]int'
+ signatures:
+ - collections.Seq LAST
+ - collections.Seq FIRST LAST
+ - collections.Seq FIRST INCREMENT LAST
+relatedFunctions:
+ - collections.Apply
+ - collections.Delimit
+ - collections.In
+ - collections.Reverse
+ - collections.Seq
+ - collections.Slice
+aliases: [/functions/seq]
---
```go-html-template
diff --git a/docs/content/en/functions/shuffle.md b/docs/content/en/functions/collections/Shuffle.md
index 4de66da28..8388d5332 100644
--- a/docs/content/en/functions/shuffle.md
+++ b/docs/content/en/functions/collections/Shuffle.md
@@ -1,16 +1,25 @@
---
-title: shuffle
+title: collections.Shuffle
+linkTitle: shuffle
description: Returns a random permutation of a given array or slice.
keywords: [ordering]
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-signature: ["shuffle COLLECTION"]
-relatedfuncs: [seq]
+function:
+ aliases: [shuffle]
+ returnType: any
+ signatures: [collections.Shuffle COLLECTION]
+relatedFunctions:
+ - collections.Reverse
+ - collections.Shuffle
+ - collections.Sort
+ - collections.Uniq
+aliases: [/functions/shuffle]
---
-
```go-html-template
{{ shuffle (seq 1 2 3) }} → [3 1 2]
{{ shuffle (slice "a" "b" "c") }} → [b a c]
diff --git a/docs/content/en/functions/collections/Slice.md b/docs/content/en/functions/collections/Slice.md
new file mode 100644
index 000000000..a30800ed3
--- /dev/null
+++ b/docs/content/en/functions/collections/Slice.md
@@ -0,0 +1,30 @@
+---
+title: collections.Slice
+linkTitle: slice
+description: Creates a slice (array) of all passed arguments.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [slice]
+ returnType: any
+ signatures: [collections.Slice ITEM...]
+relatedFunctions:
+ - collections.Append
+ - collections.Apply
+ - collections.Delimit
+ - collections.In
+ - collections.Reverse
+ - collections.Seq
+ - collections.Slice
+aliases: [/functions/slice]
+---
+
+One use case is the concatenation of elements in combination with the [`delimit` function]:
+
+```go-html-template
+{{ $s := slice "a" "b" "c" }}
+{{ $s }} → [a b c]
+```
diff --git a/docs/content/en/functions/sort.md b/docs/content/en/functions/collections/Sort.md
index aa15f5cd6..bb0f82cde 100644
--- a/docs/content/en/functions/sort.md
+++ b/docs/content/en/functions/collections/Sort.md
@@ -1,13 +1,22 @@
---
-title: sort
+title: collections.Sort
+linkTitle: sort
description: Sorts slices, maps, and page collections.
categories: [functions]
-signature: ["sort COLLECTION [KEY] [ORDER]"]
+keywords: []
menu:
docs:
parent: functions
-keywords: [ordering,sorting,lists]
-toc: true
+function:
+ aliases: [sort]
+ returnType: any
+ signatures: ['collections.Sort COLLECTION [KEY] [ORDER]']
+relatedFunctions:
+ - collections.Reverse
+ - collections.Shuffle
+ - collections.Sort
+ - collections.Uniq
+aliases: [/functions/sort]
---
The `KEY` is optional when sorting slices in ascending order, otherwise it is required. When sorting slices, use the literal `value` in place of the `KEY`. See examples below.
diff --git a/docs/content/en/functions/collections/SymDiff.md b/docs/content/en/functions/collections/SymDiff.md
new file mode 100644
index 000000000..ea9f20123
--- /dev/null
+++ b/docs/content/en/functions/collections/SymDiff.md
@@ -0,0 +1,28 @@
+---
+title: collections.SymDiff
+linkTitle: symdiff
+description: Returns the symmetric difference of two collections.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [symdiff]
+ returnType: any
+ signatures: [COLLECTION | collections.SymDiff COLLECTION]
+relatedFunctions:
+ - collections.Complement
+ - collections.Intersect
+ - collections.SymDiff
+ - collections.Union
+aliases: [/functions/symdiff]
+---
+
+Example:
+
+```go-html-template
+{{ slice 1 2 3 | symdiff (slice 3 4) }} → [1 2 4]
+```
+
+Also see https://en.wikipedia.org/wiki/Symmetric_difference
diff --git a/docs/content/en/functions/union.md b/docs/content/en/functions/collections/Union.md
index 86a874c91..119da6fb4 100644
--- a/docs/content/en/functions/union.md
+++ b/docs/content/en/functions/collections/Union.md
@@ -1,13 +1,22 @@
---
-title: union
+title: collections.Union
+linkTitle: union
description: Given two arrays or slices, returns a new array that contains the elements or objects that belong to either or both arrays/slices.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [collections,intersect,union,complement]
-signature: ["union SET1 SET2"]
-relatedfuncs: [intersect,where]
+function:
+ aliases: [union]
+ returnType: any
+ signatures: [collections.Union SET1 SET2]
+relatedFunctions:
+ - collections.Complement
+ - collections.Intersect
+ - collections.SymDiff
+ - collections.Union
+aliases: [/functions/union]
---
Given two arrays (or slices) A and B, this function will return a new array that contains the elements or objects that belong to either A or to B or to both. The elements supported are strings, integers, and floats (only float64).
@@ -38,4 +47,4 @@ This is also very useful to use as `OR` filters when combined with where:
The above fetches regular pages not of `page` or `about` type unless they are pinned. And finally, we exclude all pages with no `images` set in Page parameters.
-See [intersect](/functions/intersect) for `AND`.
+See [intersect](/functions/collections/intersect) for `AND`.
diff --git a/docs/content/en/functions/collections/Uniq.md b/docs/content/en/functions/collections/Uniq.md
new file mode 100644
index 000000000..1b0a8f8f4
--- /dev/null
+++ b/docs/content/en/functions/collections/Uniq.md
@@ -0,0 +1,25 @@
+---
+title: collections.Uniq
+linkTitle: uniq
+description: Takes in a slice or array and returns a slice with duplicate elements removed.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [uniq]
+ returnType: any
+ signatures: [collections.Uniq COLLECTION]
+relatedFunctions:
+ - collections.Reverse
+ - collections.Shuffle
+ - collections.Sort
+ - collections.Uniq
+aliases: [/functions/uniq]
+---
+
+
+```go-html-template
+{{ slice 1 3 2 1 | uniq }} → [1 3 2]
+```
diff --git a/docs/content/en/functions/where.md b/docs/content/en/functions/collections/Where.md
index 9618ea4c6..df6cec89f 100644
--- a/docs/content/en/functions/where.md
+++ b/docs/content/en/functions/collections/Where.md
@@ -1,13 +1,23 @@
---
-title: where
+title: collections.Where
+linkTitle: where
description: Filters an array to only the elements containing a matching value for a given field.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [filtering]
-signature: ["where COLLECTION KEY [OPERATOR] MATCH"]
-relatedfuncs: [intersect,first,after,last]
+function:
+ aliases: [where]
+ returnType: any
+ signatures: ['collections.Where COLLECTION KEY [OPERATOR] MATCH']
+relatedFunctions:
+ - collections.Dictionary
+ - collections.Group
+ - collections.Index
+ - collections.IsSet
+ - collections.Where
+aliases: [/functions/where]
toc: true
---
@@ -114,7 +124,7 @@ This example matches pages where the "foo" parameter begins with "ab":
{{ end }}
```
-{{% readfile file="/functions/common/regular-expressions.md" %}}
+{{% readfile file="/functions/_common/regular-expressions.md" %}}
## Use `where` with `first`
@@ -176,5 +186,5 @@ The user can override the default:
mainSections = ["blog", "docs"]
{{< /code-toggle >}}
-[intersect]: /functions/intersect/
+[intersect]: /functions/collections/intersect
[wherekeyword]: https://www.techonthenet.com/sql/where.php
diff --git a/docs/content/en/functions/cond.md b/docs/content/en/functions/compare/Cond.md
index 9bd0a0e2b..4b92a893c 100644
--- a/docs/content/en/functions/cond.md
+++ b/docs/content/en/functions/compare/Cond.md
@@ -1,13 +1,20 @@
---
-title: cond
+title: compare.Conditional
+linkTitle: cond
description: Returns one of two arguments depending on the value of the control argument.
categories: [functions]
-keywords: [conditional, ternary]
+keywords: []
menu:
docs:
parent: functions
-signature: [cond CONTROL ARG1 ARG2]
-relatedfuncs: [default]
+function:
+ aliases: [cond]
+ returnType: any
+ signatures: [compare.Conditional CONTROL ARG1 ARG2]
+relatedFunctions:
+ - compare.Conditional
+ - compare.Default
+aliases: [/functions/cond]
---
The CONTROL argument is a boolean value that indicates whether the function should return ARG1 or ARG2. If CONTROL is `true`, the function returns ARG1. Otherwise, the function returns ARG2.
diff --git a/docs/content/en/functions/default.md b/docs/content/en/functions/compare/Default.md
index b0e517366..24ad37ef2 100644
--- a/docs/content/en/functions/default.md
+++ b/docs/content/en/functions/compare/Default.md
@@ -1,15 +1,20 @@
---
-title: default
+title: compare.Default
+linkTitle: default
description: Allows setting a default value that can be returned if a first value is not set.
-qref: "Returns a default value if a value is not set when checked."
-keywords: [defaults]
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-toc:
-signature: ["default DEFAULT INPUT"]
-relatedfuncs: []
+function:
+ aliases: [default]
+ returnType: any
+ signatures: [compare.Default DEFAULT INPUT]
+relatedFunctions:
+ - compare.Conditional
+ - compare.Default
+aliases: [/functions/default]
---
`default` checks whether a given value is set and returns a default value if it is not. *Set* in this context means different things depending on the data type:
diff --git a/docs/content/en/functions/eq.md b/docs/content/en/functions/compare/Eq.md
index d10539e49..010fc51b3 100644
--- a/docs/content/en/functions/eq.md
+++ b/docs/content/en/functions/compare/Eq.md
@@ -1,13 +1,24 @@
---
-title: eq
+title: compare.Eq
+linkTitle: eq
description: Returns the boolean truth of arg1 == arg2 || arg1 == arg3.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [comparison,operators,logic]
-signature: ["eq ARG1 ARG2 [ARG...]"]
-relatedfuncs: []
+function:
+ aliases: [eq]
+ returnType: bool
+ signatures: ['compare.Eq ARG1 ARG2 [ARG...]']
+relatedFunctions:
+ - compare.Eq
+ - compare.Ge
+ - compare.Gt
+ - compare.Le
+ - compare.Lt
+ - compare.Ne
+aliases: [/functions/eq]
---
```go-html-template
diff --git a/docs/content/en/functions/ge.md b/docs/content/en/functions/compare/Ge.md
index e59b0f9c9..6bb48dd00 100644
--- a/docs/content/en/functions/ge.md
+++ b/docs/content/en/functions/compare/Ge.md
@@ -1,13 +1,24 @@
---
-title: ge
+title: compare.Ge
+linkTitle: ge
description: Returns the boolean truth of arg1 >= arg2 && arg1 >= arg3.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [comparison,operators,logic]
-signature: ["ge ARG1 ARG2 [ARG...]"]
-relatedfuncs: []
+function:
+ aliases: [ge]
+ returnType: bool
+ signatures: ['compare.Ge ARG1 ARG2 [ARG...]']
+relatedFunctions:
+ - compare.Eq
+ - compare.Ge
+ - compare.Gt
+ - compare.Le
+ - compare.Lt
+ - compare.Ne
+aliases: [/functions/ge]
---
```go-html-template
diff --git a/docs/content/en/functions/gt.md b/docs/content/en/functions/compare/Gt.md
index dac1986fe..4691718ef 100644
--- a/docs/content/en/functions/gt.md
+++ b/docs/content/en/functions/compare/Gt.md
@@ -1,13 +1,24 @@
---
-title: gt
+title: compare.Gt
+linkTitle: gt
description: Returns the boolean truth of arg1 > arg2 && arg1 > arg3.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [comparison,operators,logic]
-signature: ["gt ARG1 ARG2 [ARG...]"]
-relatedfuncs: []
+function:
+ aliases: [gt]
+ returnType: bool
+ signatures: ['compare.Gt ARG1 ARG2 [ARG...]']
+relatedFunctions:
+ - compare.Eq
+ - compare.Ge
+ - compare.Gt
+ - compare.Le
+ - compare.Lt
+ - compare.Ne
+aliases: [/functions/gt]
---
```go-html-template
diff --git a/docs/content/en/functions/le.md b/docs/content/en/functions/compare/Le.md
index 1953bfae0..792ea6ce6 100644
--- a/docs/content/en/functions/le.md
+++ b/docs/content/en/functions/compare/Le.md
@@ -1,13 +1,24 @@
---
-title: le
+title: compare.Le
+linkTitle: le
description: Returns the boolean truth of arg1 <= arg2 && arg1 <= arg3.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [comparison,operators,logic]
-signature: ["le ARG1 ARG2 [ARG...]"]
-relatedfuncs: []
+function:
+ aliases: [le]
+ returnType: bool
+ signatures: ['compare.Le ARG1 ARG2 [ARG...]']
+relatedFunctions:
+ - compare.Eq
+ - compare.Ge
+ - compare.Gt
+ - compare.Le
+ - compare.Lt
+ - compare.Ne
+aliases: [/functions/le]
---
```go-html-template
diff --git a/docs/content/en/functions/lt.md b/docs/content/en/functions/compare/Lt.md
index 9a8651574..537c23b6f 100644
--- a/docs/content/en/functions/lt.md
+++ b/docs/content/en/functions/compare/Lt.md
@@ -1,13 +1,24 @@
---
-title: lt
+title: compare.Lt
+linkTitle: lt
description: Returns the boolean truth of arg1 < arg2 && arg1 < arg3.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [comparison,operators,logic]
-signature: ["lt ARG1 ARG2 [ARG...]"]
-relatedfuncs: []
+function:
+ aliases: [lt]
+ returnType: bool
+ signatures: ['compare.Lt ARG1 ARG2 [ARG...]']
+relatedFunctions:
+ - compare.Eq
+ - compare.Ge
+ - compare.Gt
+ - compare.Le
+ - compare.Lt
+ - compare.Ne
+aliases: [/functions/lt]
---
```go-html-template
diff --git a/docs/content/en/functions/ne.md b/docs/content/en/functions/compare/Ne.md
index 49c69fbaa..412f43d49 100644
--- a/docs/content/en/functions/ne.md
+++ b/docs/content/en/functions/compare/Ne.md
@@ -1,13 +1,24 @@
---
-title: ne
+title: compare.Ne
+linkTitle: ne
description: Returns the boolean truth of arg1 != arg2 && arg1 != arg3.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [comparison,operators,logic]
-signature: ["ne ARG1 ARG2 [ARG...]"]
-relatedfuncs: []
+function:
+ aliases: [ne]
+ returnType: bool
+ signatures: ['compare.Ne ARG1 ARG2 [ARG...]']
+relatedFunctions:
+ - compare.Eq
+ - compare.Ge
+ - compare.Gt
+ - compare.Le
+ - compare.Lt
+ - compare.Ne
+aliases: [/functions/ne]
---
```go-html-template
diff --git a/docs/content/en/functions/countrunes.md b/docs/content/en/functions/countrunes.md
deleted file mode 100644
index 0d89af857..000000000
--- a/docs/content/en/functions/countrunes.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: countrunes
-description: Determines the number of runes in a string excluding any whitespace.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [counting, word count]
-signature:
- - "countrunes INPUT"
- - "strings.CountRunes INPUT"
-relatedfuncs: []
----
-
-In contrast with `countwords` function, which counts every word in a string, the `countrunes` function determines the number of runes in the content and excludes any whitespace. This has specific utility if you are dealing with CJK-like languages.
-
-```go-html-template
-{{ "Hello, 世界" | countrunes }}
-<!-- outputs a content length of 8 runes. -->
-```
-
-[pagevars]: /variables/page/
diff --git a/docs/content/en/functions/crypto.FNV32a.md b/docs/content/en/functions/crypto/FNV32a.md
index 9bcfff26f..7a7fe303e 100644
--- a/docs/content/en/functions/crypto.FNV32a.md
+++ b/docs/content/en/functions/crypto/FNV32a.md
@@ -2,13 +2,25 @@
title: crypto.FNV32a
description: Returns the FNV (Fowler–Noll–Vo) 32 bit hash of a given string.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [crypto hash FNV32 Fowler-Noll-Vo]
-signature: ["crypto.FNV32a STRING"]
+function:
+ aliases: []
+ returnType: int
+ signatures: [crypto.FNV32a STRING]
+relatedFunctions:
+ - crypto.FNV32a
+ - crypto.HMAC
+ - crypto.MD5
+ - crypto.SHA1
+ - crypto.SHA256
+aliases: [/functions/crypto.fnv32a]
---
This function calculates the 32 bit [FNV1a hash](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function#FNV-1a_hash) of a given string according to the [specification](https://datatracker.ietf.org/doc/html/draft-eastlake-fnv-12):
- {{ crypto.FNV32a "Hello world" }} → 1498229191
+```go-html-template
+{{ crypto.FNV32a "Hello world" }} → 1498229191
+```
diff --git a/docs/content/en/functions/hmac.md b/docs/content/en/functions/crypto/HMAC.md
index 3b9675a0b..e58619b38 100644
--- a/docs/content/en/functions/hmac.md
+++ b/docs/content/en/functions/crypto/HMAC.md
@@ -1,13 +1,23 @@
---
-title: hmac
+title: crypto.HMAC
+linkTitle: hmac
description: Returns a cryptographic hash that uses a key to sign a message.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [hmac,checksum]
-signature: ["crypto.HMAC HASH_TYPE KEY MESSAGE [ENCODING]","hmac HASH_TYPE KEY MESSAGE [ENCODING]" ]
-relatedfuncs: [hmac]
+function:
+ aliases: [hmac]
+ returnType: string
+ signatures: ['crypto.HMAC HASH_TYPE KEY MESSAGE [ENCODING]']
+relatedFunctions:
+ - crypto.FNV32a
+ - crypto.HMAC
+ - crypto.MD5
+ - crypto.SHA1
+ - crypto.SHA256
+aliases: [/functions/hmac]
---
Set the `HASH_TYPE` argument to `md5`, `sha1`, `sha256`, or `sha512`.
diff --git a/docs/content/en/functions/md5.md b/docs/content/en/functions/crypto/MD5.md
index cc5fd31ea..9415e015c 100644
--- a/docs/content/en/functions/md5.md
+++ b/docs/content/en/functions/crypto/MD5.md
@@ -1,18 +1,28 @@
---
-title: md5
+title: crypto.MD5
+linkTitle: md5
description: hashes the given input and returns its MD5 checksum.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: []
-signature: ["md5 INPUT"]
-relatedfuncs: [sha]
+function:
+ aliases: [md5]
+ returnType: string
+ signatures: [crypto.MD5 INPUT]
+relatedFunctions:
+ - crypto.FNV32a
+ - crypto.HMAC
+ - crypto.MD5
+ - crypto.SHA1
+ - crypto.SHA256
+aliases: [/functions/md5]
---
```go-html-template
-{{ md5 "Hello world, gophers!" }}
-<!-- returns the string "b3029f756f98f79e7f1b7f1d1f0dd53b" -->
+{{ md5 "Hello world" }} → 3e25960a79dbc69b674cd4ec67a72c62
+
```
This can be useful if you want to use [Gravatar](https://en.gravatar.com/) for generating a unique avatar:
diff --git a/docs/content/en/functions/crypto/SHA1.md b/docs/content/en/functions/crypto/SHA1.md
new file mode 100644
index 000000000..6269efe38
--- /dev/null
+++ b/docs/content/en/functions/crypto/SHA1.md
@@ -0,0 +1,25 @@
+---
+title: crypto.SHA1
+linkTitle: sha1
+description: Hashes the given input and returns its SHA1 checksum.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [sha1]
+ returnType: string
+ signatures: [crypto.SHA1 INPUT]
+relatedFunctions:
+ - crypto.FNV32a
+ - crypto.HMAC
+ - crypto.MD5
+ - crypto.SHA1
+ - crypto.SHA256
+aliases: [/functions/sha,/functions/sha1]
+---
+
+```go-html-template
+{{ sha1 "Hello world" }} → 7b502c3a1f48c8609ae212cdfb639dee39673f5e
+```
diff --git a/docs/content/en/functions/crypto/SHA256.md b/docs/content/en/functions/crypto/SHA256.md
new file mode 100644
index 000000000..3019432d2
--- /dev/null
+++ b/docs/content/en/functions/crypto/SHA256.md
@@ -0,0 +1,25 @@
+---
+title: crypto.SHA256
+linkTitle: sha256
+description: Hashes the given input and returns its SHA256 checksum.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [sha256]
+ returnType: string
+ signatures: [crypto.SHA256 INPUT]
+relatedFunctions:
+ - crypto.FNV32a
+ - crypto.HMAC
+ - crypto.MD5
+ - crypto.SHA1
+ - crypto.SHA256
+aliases: [/functions/sha256]
+---
+
+```go-html-template
+{{ sha256 "Hello world" }} → 64ec88ca00b268e5ba1a35678a1b5316d212f4f366b2477232534a8aeca37f3c
+```
diff --git a/docs/content/en/functions/data/GetCSV.md b/docs/content/en/functions/data/GetCSV.md
new file mode 100644
index 000000000..e02c1588c
--- /dev/null
+++ b/docs/content/en/functions/data/GetCSV.md
@@ -0,0 +1,117 @@
+---
+title: data.GetCSV
+linkTitle: getCSV
+description: Returns an array of arrays from a local or remote CSV file, or an error if the file does not exist.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [getCSV]
+ returnType: '[]string'
+ signatures: [data.GetCSV SEPARATOR PATHPART...]
+relatedFunctions:
+ - data.GetCSV
+ - data.GetJSON
+toc: true
+---
+
+Given the following directory structure:
+
+```text
+my-project/
+└── other-files/
+ └── pets.csv
+```
+
+Access the data with either of the following:
+
+```go-html-template
+{{ $data := getCSV "," "other-files/pets.csv" }}
+{{ $data := getCSV "," "other-files/" "pets.csv" }}
+```
+
+Access remote data with either of the following:
+
+```go-html-template
+{{ $data := getCSV "," "https://example.org/pets.csv" }}
+{{ $data := getCSV "," "https://example.org/" "pets.csv" }}
+```
+
+The resulting data structure is an array of arrays:
+
+```json
+[
+ ["name","type","breed","age"],
+ ["Spot","dog","Collie","3"],
+ ["Felix","cat","Malicious","7"]
+]
+```
+
+## Global resource alternative
+
+Consider using `resources.Get` with [`transform.Unmarshal`] when accessing a global resource.
+
+```text
+my-project/
+└── assets/
+ └── data/
+ └── pets.csv
+```
+
+```go-html-template
+{{ $data := "" }}
+{{ $p := "data/pets.csv" }}
+{{ with resources.Get $p }}
+ {{ $opts := dict "delimiter" "," }}
+ {{ $data = . | transform.Unmarshal $opts }}
+{{ else }}
+ {{ errorf "Unable to get resource %q" $p }}
+{{ end }}
+```
+
+## Page resource alternative
+
+Consider using `.Resources.Get` with [`transform.Unmarshal`] when accessing a page resource.
+
+```text
+my-project/
+└── content/
+ └── posts/
+ └── my-pets/
+ ├── index.md
+ └── pets.csv
+```
+
+```go-html-template
+{{ $data := "" }}
+{{ $p := "pets.csv" }}
+{{ with .Resources.Get $p }}
+ {{ $opts := dict "delimiter" "," }}
+ {{ $data = . | transform.Unmarshal $opts }}
+{{ else }}
+ {{ errorf "Unable to get resource %q" $p }}
+{{ end }}
+```
+
+## Remote resource alternative
+
+Consider using `resources.GetRemote` with [`transform.Unmarshal`] for improved error handling when accessing a remote resource.
+
+```go-html-template
+{{ $data := "" }}
+{{ $u := "https://example.org/pets.csv" }}
+{{ with resources.GetRemote $u }}
+ {{ with .Err }}
+ {{ errorf "%s" . }}
+ {{ else }}
+ {{ $opts := dict "delimiter" "," }}
+ {{ $data = . | transform.Unmarshal $opts }}
+ {{ end }}
+{{ else }}
+ {{ errorf "Unable to get remote resource %q" $u }}
+{{ end }}
+```
+
+[`transform.Unmarshal`]: /functions/transform/unmarshal
diff --git a/docs/content/en/functions/data/GetJSON.md b/docs/content/en/functions/data/GetJSON.md
new file mode 100644
index 000000000..37ee8e9a1
--- /dev/null
+++ b/docs/content/en/functions/data/GetJSON.md
@@ -0,0 +1,124 @@
+---
+title: data.GetJSON
+linkTitle: getJSON
+description: Returns a JSON object from a local or remote JSON file, or an error if the file does not exist.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [getJSON]
+ returnType: any
+ signatures: [data.GetJSON PATHPART...]
+relatedFunctions:
+ - data.GetCSV
+ - data.GetJSON
+toc: true
+---
+
+Given the following directory structure:
+
+```text
+my-project/
+└── other-files/
+ └── books.json
+```
+
+Access the data with either of the following:
+
+```go-html-template
+{{ $data := getCSV "," "other-files/books.json" }}
+{{ $data := getCSV "," "other-files/" "books.json" }}
+```
+
+Access remote data with either of the following:
+
+```go-html-template
+{{ $data := getCSV "," "https://example.org/books.json" }}
+{{ $data := getCSV "," "https://example.org/" "books.json" }}
+```
+
+The resulting data structure is a JSON object:
+
+```json
+[
+ {
+ "author": "Victor Hugo",
+ "rating": 5,
+ "title": "Les Misérables"
+ },
+ {
+ "author": "Victor Hugo",
+ "rating": 4,
+ "title": "The Hunchback of Notre Dame"
+ }
+]
+```
+
+## Global resource alternative
+
+Consider using `resources.Get` with [`transform.Unmarshal`] when accessing a global resource.
+
+```text
+my-project/
+└── assets/
+ └── data/
+ └── books.json
+```
+
+```go-html-template
+{{ $data := "" }}
+{{ $p := "data/books.json" }}
+{{ with resources.Get $p }}
+ {{ $opts := dict "delimiter" "," }}
+ {{ $data = . | transform.Unmarshal $opts }}
+{{ else }}
+ {{ errorf "Unable to get resource %q" $p }}
+{{ end }}
+```
+
+## Page resource alternative
+
+Consider using `.Resources.Get` with [`transform.Unmarshal`] when accessing a page resource.
+
+```text
+my-project/
+└── content/
+ └── posts/
+ └── reading-list/
+ ├── books.json
+ └── index.md
+```
+
+```go-html-template
+{{ $data := "" }}
+{{ $p := "books.json" }}
+{{ with .Resources.Get $p }}
+ {{ $opts := dict "delimiter" "," }}
+ {{ $data = . | transform.Unmarshal $opts }}
+{{ else }}
+ {{ errorf "Unable to get resource %q" $p }}
+{{ end }}
+```
+
+## Remote resource alternative
+
+Consider using `resources.GetRemote` with [`transform.Unmarshal`] for improved error handling when accessing a remote resource.
+
+```go-html-template
+{{ $data := "" }}
+{{ $u := "https://example.org/books.json" }}
+{{ with resources.GetRemote $u }}
+ {{ with .Err }}
+ {{ errorf "%s" . }}
+ {{ else }}
+ {{ $opts := dict "delimiter" "," }}
+ {{ $data = . | transform.Unmarshal $opts }}
+ {{ end }}
+{{ else }}
+ {{ errorf "Unable to get remote resource %q" $u }}
+{{ end }}
+```
+
+[`transform.Unmarshal`]: /functions/transform/unmarshal
diff --git a/docs/content/en/functions/dateformat.md b/docs/content/en/functions/dateformat.md
deleted file mode 100644
index ddfb61296..000000000
--- a/docs/content/en/functions/dateformat.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: time.Format
-description: Converts a date/time to a localized string.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [dates,time,strings]
-signature:
- - "time.Format LAYOUT INPUT"
- - "dateFormat LAYOUT INPUT"
-relatedfuncs: [Format,now,Unix,time]
----
-
-`time.Format` (alias `dateFormat`) converts either a `time.Time` object (e.g. `.Date`) or a timestamp string `INPUT` into the format specified by the `LAYOUT` string.
-
-```go-html-template
-{{ time.Format "Monday, Jan 2, 2006" "2015-01-21" }} → "Wednesday, Jan 21, 2015"
-```
-
-`time.Format` returns a localized string for the current language.
-
-The `LAYOUT` string can be either:
-
-* [Go’s Layout String](/functions/format/#gos-layout-string) to learn about how the `LAYOUT` string has to be formatted. There are also some useful examples.
-* A custom Hugo layout identifier (see full list below)
-
-See the [`time` function](/functions/time/) to convert a timestamp string to a Go `time.Time` type value.
-
-
-## Date/time formatting layouts
-
-Go's date layout strings can be hard to reason about, especially with multiple languages. You can alternatively use some predefined layout identifiers that will output localized dates or times:
-
-```go-html-template
-{{ .Date | time.Format ":date_long" }}
-```
-
-The full list of custom layouts with examples for English:
-
-* `:date_full` => `Wednesday, June 6, 2018`
-* `:date_long` => `June 6, 2018`
-* `:date_medium` => `Jun 6, 2018`
-* `:date_short` => `6/6/18`
-
-* `:time_full` => `2:09:37 am UTC`
-* `:time_long` => `2:09:37 am UTC`
-* `:time_medium` => `2:09:37 am`
-* `:time_short` => `2:09 am`
diff --git a/docs/content/en/functions/debug/Dump.md b/docs/content/en/functions/debug/Dump.md
new file mode 100644
index 000000000..ff505a76b
--- /dev/null
+++ b/docs/content/en/functions/debug/Dump.md
@@ -0,0 +1,50 @@
+---
+title: debug.Dump
+description: Returns an object dump as a string.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [debug.Dump VALUE]
+relatedFunctions: []
+---
+
+```go-html-template
+{{ $data := "" }}
+{{ $p := "data/books.json" }}
+{{ with resources.Get $p }}
+ {{ $opts := dict "delimiter" "," }}
+ {{ $data = . | transform.Unmarshal $opts }}
+{{ else }}
+ {{ errorf "Unable to get resource %q" $p }}
+{{ end }}
+```
+
+```go-html-template
+<pre>{{ debug.Dump $data }}</pre>
+```
+
+```text
+[]interface {}{
+ map[string]interface {}{
+ "author": "Victor Hugo",
+ "rating": 5.0,
+ "title": "Les Misérables",
+ },
+ map[string]interface {}{
+ "author": "Victor Hugo",
+ "rating": 4.0,
+ "title": "The Hunchback of Notre Dame",
+ },
+}
+```
+
+
+
+{{% note %}}
+Output from this function may change from one release to the next. Use for debugging only.
+{{% /note %}}
diff --git a/docs/content/en/functions/echoparam.md b/docs/content/en/functions/echoparam.md
deleted file mode 100644
index 7b80e1439..000000000
--- a/docs/content/en/functions/echoparam.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: echoParam
-description: Prints a parameter if it is set.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: []
-signature: ["echoParam MAP KEY"]
-relatedfuncs: []
----
-
-
-```go-html-template
-{{ echoParam .Params "project_url" }}
-```
diff --git a/docs/content/en/functions/encoding/Base64Decode.md b/docs/content/en/functions/encoding/Base64Decode.md
new file mode 100644
index 000000000..8bd554c83
--- /dev/null
+++ b/docs/content/en/functions/encoding/Base64Decode.md
@@ -0,0 +1,45 @@
+---
+title: encoding.Base64Decode
+linkTitle: base64Decode
+description: Returns the base64 decoding of the given content.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [base64Decode]
+ returnType: string
+ signatures: [encoding.Base64Decode INPUT]
+signatures:
+ -
+ - base64Decode INPUT
+aliases: [/functions/base64Decode]
+---
+
+```go-html-template
+{{ "SHVnbw==" | base64Decode }} → "Hugo"
+```
+
+Use the `base64Decode` function to decode responses from APIs. For example, the result of this call to GitHub's API contains the base64-encoded representation of the repository's README file:
+
+```text
+https://api.github.com/repos/gohugoio/hugo/readme
+```
+
+To retrieve and render the content:
+
+```go-html-template
+{{ $u := "https://api.github.com/repos/gohugoio/hugo/readme" }}
+{{ with resources.GetRemote $u }}
+ {{ with .Err }}
+ {{ errorf "%s" . }}
+ {{ else }}
+ {{ with . | transform.Unmarshal }}
+ {{ .content | base64Decode | markdownify }}
+ {{ end }}
+ {{ end }}
+{{ else }}
+ {{ errorf "Unable to get remote resource %q" $u }}
+{{ end }}
+```
diff --git a/docs/content/en/functions/encoding/Base64Encode.md b/docs/content/en/functions/encoding/Base64Encode.md
new file mode 100644
index 000000000..d548aca8e
--- /dev/null
+++ b/docs/content/en/functions/encoding/Base64Encode.md
@@ -0,0 +1,22 @@
+---
+title: encoding.Base64Encode
+linkTitle: base64Encode
+description: Returns the base64 decoding of the given content.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [base64Encode]
+ returnType: string
+ signatures: [encoding.Base64Encode INPUT]
+relatedFunctions:
+ - encoding.Base64Decode
+ - encoding.Base64Encode
+aliases: [/functions/base64, /functions/base64Encode]
+---
+
+```go-html-template
+{{ "Hugo" | base64Encode }} → "SHVnbw=="
+```
diff --git a/docs/content/en/functions/jsonify.md b/docs/content/en/functions/encoding/Jsonify.md
index e94fb7cd4..0b9cb2e74 100644
--- a/docs/content/en/functions/jsonify.md
+++ b/docs/content/en/functions/encoding/Jsonify.md
@@ -1,13 +1,23 @@
---
-title: jsonify
+title: encoding.Jsonify
+linkTitle: jsonify
description: Encodes a given object to JSON.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings,json]
-signature: ["jsonify INPUT", "jsonify OPTIONS INPUT"]
-relatedfuncs: [plainify]
+function:
+ aliases: [jsonify]
+ returnType: template.HTML
+ signatures:
+ - encoding.Jsonify INPUT
+ - encoding.Jsonify OPTIONS INPUT
+relatedFunctions:
+ - encoding.Jsonify
+ - transform.Remarshal
+ - transform.Unmarshal
+aliases: [/functions/jsonify]
---
To customize the printing of the JSON, pass a map of options as the first
@@ -22,7 +32,7 @@ more copies of *indent* according to the indentation nesting.
{{ dict "title" .Title "content" .Plain | jsonify (dict "prefix" " " "indent" " ") }}
```
-## Jsonify options
+## Options
indent ("")
: Indentation to use.
diff --git a/docs/content/en/functions/errorf.md b/docs/content/en/functions/errorf.md
deleted file mode 100644
index 8caaf0554..000000000
--- a/docs/content/en/functions/errorf.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: errorf and warnf
-description: Log ERROR or WARNING from the templates.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings, log, error]
-signature: ["errorf FORMAT INPUT"]
-relatedfuncs: [printf]
----
-
-`errorf` or `warnf` will evaluate a format string, then output the result to the ERROR or WARNING log (and only once per error message to avoid flooding the log).
-
-Any ERROR will also cause the build to fail (the `hugo` command will `exit -1`).
-
-Both functions return an empty string, so the messages are only printed to the console.
-
-```go-html-template
-{{ errorf "Failed to handle page %q" .Path }}
-```
-
-```go-html-template
-{{ warnf "You should update the shortcodes in %q" .Path }}
-```
-
-Note that `errorf`, `erroridf`, and `warnf` support all the formatting verbs of the [fmt](https://pkg.go.dev/fmt) package.
-
-## Suppress errors
-
-Sometimes it may make sense to let the user suppress an ERROR and make the build succeed.
-
-You can do this by using the `erroridf` function. This functions takes an error ID as the first argument.
-
-```go-html-template
-{{ erroridf "my-custom-error" "You should consider fixing this." }}
-```
-
-This will produce:
-
-```
-ERROR 2021/06/07 17:47:38 You should consider fixing this.
-If you feel that this should not be logged as an ERROR, you can ignore it by adding this to your site configuration:
-ignoreErrors = ["my-custom-error"]
-```
diff --git a/docs/content/en/functions/fmt/Errorf.md b/docs/content/en/functions/fmt/Errorf.md
new file mode 100644
index 000000000..da9845073
--- /dev/null
+++ b/docs/content/en/functions/fmt/Errorf.md
@@ -0,0 +1,33 @@
+---
+title: fmt.Errorf
+linkTitle: errorf
+description: Log an ERROR from a template.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [errorf]
+ returnType: string
+ signatures: ['fmt.Errorf FORMAT [INPUT]']
+relatedFunctions:
+ - fmt.Errorf
+ - fmt.Erroridf
+ - fmt.Warnf
+aliases: [/functions/errorf]
+---
+
+The documentation for [Go's fmt package] describes the structure and content of the format string.
+
+Like the [`printf`] function, the `errorf` function evaluates the format string. It then prints the result to the ERROR log and fails the build. Hugo prints each unique message once to avoid flooding the log with duplicate errors.
+
+```go-html-template
+{{ errorf "The %q shortcode requires a src parameter. See %s" .Name .Position }}
+```
+
+Use the [`erroridf`] function to allow optional suppression of specific errors.
+
+[`erroridf`]: /functions/fmt/erroridf
+[`printf`]: /functions/fmt/printf
+[Go's fmt package]: https://pkg.go.dev/fmt
diff --git a/docs/content/en/functions/fmt/Erroridf.md b/docs/content/en/functions/fmt/Erroridf.md
new file mode 100644
index 000000000..986810436
--- /dev/null
+++ b/docs/content/en/functions/fmt/Erroridf.md
@@ -0,0 +1,48 @@
+---
+title: fmt.Erroridf
+linkTitle: erroridf
+description: Log a suppressable ERROR from a template.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [erroridf]
+ returnType: string
+ signatures: ['fmt.Erroridf ID FORMAT [INPUT]']
+relatedFunctions:
+ - fmt.Errorf
+ - fmt.Erroridf
+ - fmt.Warnf
+aliases: [/functions/erroridf]
+---
+
+The documentation for [Go's fmt package] describes the structure and content of the format string.
+
+Like the [`errorf`] function, the `erroridf` function evaluates the format string, prints the result to the ERROR log, then fails the build. Hugo prints each unique message once to avoid flooding the log with duplicate errors.
+
+Unlike the `errorf` function, you may suppress errors logged by the `erroridf` function by adding the message ID to the `ignoreErrors` array in your site configuration.
+
+This template code:
+
+```go-html-template
+{{ erroridf "error-42" "You should consider fixing this." }}
+```
+
+Produces this console log:
+
+```text
+ERROR You should consider fixing this.
+If you feel that this should not be logged as an ERROR, you can ignore it by adding this to your site config:
+ignoreErrors = ["error-42"]
+```
+
+To suppress this message:
+
+{{< code-toggle file=hugo copy=false >}}
+ignoreErrors = ["error-42"]
+{{< /code-toggle >}}
+
+[`errorf`]: /functions/fmt/errorf
+[Go's fmt package]: https://pkg.go.dev/fmt
diff --git a/docs/content/en/functions/print.md b/docs/content/en/functions/fmt/Print.md
index 4af0b6b96..f9ff885f8 100644
--- a/docs/content/en/functions/print.md
+++ b/docs/content/en/functions/fmt/Print.md
@@ -1,17 +1,23 @@
---
-title: print
+title: fmt.Print
+linkTitle: print
description: Prints the default representation of the given arguments using the standard `fmt.Print` function.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings]
-signature: ["print INPUT"]
-relatedfuncs: []
+function:
+ aliases: [print]
+ returnType: string
+ signatures: [fmt.Print INPUT]
+relatedFunctions:
+ - fmt.Print
+ - fmt.Printf
+ - fmt.Println
+aliases: [/functions/print]
---
-See [the go doc](https://golang.org/pkg/fmt/) for additional information.
-
```go-html-template
{{ print "foo" }} → "foo"
{{ print "foo" "bar" }} → "foobar"
diff --git a/docs/content/en/functions/fmt/Printf.md b/docs/content/en/functions/fmt/Printf.md
new file mode 100644
index 000000000..06b7222e9
--- /dev/null
+++ b/docs/content/en/functions/fmt/Printf.md
@@ -0,0 +1,46 @@
+---
+title: fmt.Printf
+linkTitle: printf
+description: Formats a string using the standard `fmt.Sprintf` function.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [printf]
+ returnType: string
+ signatures: ['fmt.Printf FORMAT [INPUT]']
+relatedFunctions:
+ - fmt.Print
+ - fmt.Printf
+ - fmt.Println
+aliases: [/functions/printf]
+---
+
+The documentation for [Go's fmt package] describes the structure and content of the format string.
+
+[Go's fmt package]: https://pkg.go.dev/fmt
+
+```go-html-template
+{{ $var := "world" }}
+{{ printf "Hello %s." $var }} → Hello world.
+```
+
+```go-html-template
+{{ $pi := 3.14159265 }}
+{{ printf "Pi is approximately %.2f." $pi }} → 3.14
+```
+
+Use the `printf` function with the `safeHTMLAttr` function:
+
+```go-html-template
+{{ $desc := "Eat at Joe's" }}
+<meta name="description" {{ printf "content=%q" $desc | safeHTMLAttr }}>
+```
+
+Hugo renders this to:
+
+```html
+<meta name="description" content="Eat at Joe's">
+```
diff --git a/docs/content/en/functions/println.md b/docs/content/en/functions/fmt/Println.md
index 6ad57f402..358b5f8ac 100644
--- a/docs/content/en/functions/println.md
+++ b/docs/content/en/functions/fmt/Println.md
@@ -1,17 +1,23 @@
---
-title: println
+title: fmt.Println
+linkTitle: println
description: Prints the default representation of the given argument using the standard `fmt.Print` function and enforces a linebreak.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings]
-signature: ["println INPUT"]
-relatedfuncs: []
+function:
+ aliases: [println]
+ returnType: string
+ signatures: [fmt.Println INPUT]
+relatedFunctions:
+ - fmt.Print
+ - fmt.Printf
+ - fmt.Println
+aliases: [/functions/println]
---
-See [the go doc](https://golang.org/pkg/fmt/) for additional information. `\n` denotes the linebreak but isn't printed in the templates as seen below:
-
```go-html-template
{{ println "foo" }} → "foo\n"
```
diff --git a/docs/content/en/functions/fmt/Warnf.md b/docs/content/en/functions/fmt/Warnf.md
new file mode 100644
index 000000000..be579a216
--- /dev/null
+++ b/docs/content/en/functions/fmt/Warnf.md
@@ -0,0 +1,30 @@
+---
+title: fmt.Warnf
+linkTitle: warnf
+description: Log a WARNING from a template.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [warnf]
+ returnType: string
+ signatures: ['fmt.Warnf FORMAT [INPUT]']
+relatedFunctions:
+ - fmt.Errorf
+ - fmt.Erroridf
+ - fmt.Warnf
+aliases: [/functions/warnf]
+---
+
+The documentation for [Go's fmt package] describes the structure and content of the format string.
+
+Like the [`printf`] function, the `warnf` function evaluates the format string. It then prints the result to the WARNING log. Hugo prints each unique message once to avoid flooding the log with duplicate warnings.
+
+```go-html-template
+{{ warnf "Copyright notice missing from site configuration" }}
+```
+
+[`printf`]: /functions/fmt/printf
+[Go's fmt package]: https://pkg.go.dev/fmt
diff --git a/docs/content/en/functions/format.md b/docs/content/en/functions/format.md
deleted file mode 100644
index d30f0bdf2..000000000
--- a/docs/content/en/functions/format.md
+++ /dev/null
@@ -1,119 +0,0 @@
----
-title: .Format
-description: Formats built-in Hugo dates---`.Date`, `.PublishDate`, and `.Lastmod`---according to Go's layout string.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [dates,time]
-signature: [".Format FORMAT"]
-relatedfuncs: [dateFormat,now,Unix,time]
-toc: true
----
-
-`.Format` will format date values defined in your front matter and can be used as a property on the following [page variables][pagevars]:
-
-* `.PublishDate`
-* `.Date`
-* `.Lastmod`
-
-Assuming a key-value of `date: 2017-03-03` in a content file's front matter, your can run the date through `.Format` followed by a layout string for your desired output at build time:
-
-```go-html-template
-{{ .PublishDate.Format "January 2, 2006" }} => March 3, 2017
-```
-
-For formatting *any* string representations of dates defined in your front matter, see the [`dateFormat` function][dateFormat], which will still leverage the Go layout string explained below but uses a slightly different syntax.
-
-## Go's layout string
-
-Hugo templates [format your dates][time] via layout strings that point to a specific reference time:
-
-```
-Mon Jan 2 15:04:05 MST 2006
-```
-
-While this may seem arbitrary, the numerical value of `MST` is `07`, thus making the layout string a sequence of numbers.
-
-Here is a visual explanation [taken directly from the Go docs][gdex]:
-
-```
- Jan 2 15:04:05 2006 MST
-=> 1 2 3 4 5 6 -7
-```
-
-### Hugo date and time templating reference
-
-The following examples show the layout string followed by the rendered output.
-
-The examples were rendered and tested in [CST] and all point to the same field in a content file's front matter:
-
-```
-date: 2017-03-03T14:15:59-06:00
-```
-
-`.Date` (i.e. called via [page variable][pagevars])
-: **Returns**: `2017-03-03 14:15:59 -0600 CST`
-
-`"Monday, January 2, 2006"`
-: **Returns**: `Friday, March 3, 2017`
-
-`"Mon Jan 2 2006"`
-: **Returns**: `Fri Mar 3 2017`
-
-`"January 2006"`
-: **Returns**: `March 2017`
-
-`"2006-01-02"`
-: **Returns**: `2017-03-03`
-
-`"Monday"`
-: **Returns**: `Friday`
-
-`"02 Jan 06 15:04 MST"` (RFC822)
-: **Returns**: `03 Mar 17 14:15 CST`
-
-`"02 Jan 06 15:04 -0700"` (RFC822Z)
-: **Returns**: `03 Mar 17 14:15 -0600`
-
-`"Mon, 02 Jan 2006 15:04:05 MST"` (RFC1123)
-: **Returns**: `Fri, 03 Mar 2017 14:15:59 CST`
-
-`"Mon, 02 Jan 2006 15:04:05 -0700"` (RFC1123Z)
-: **Returns**: `Fri, 03 Mar 2017 14:15:59 -0600`
-
-More examples can be found in Go's [documentation for the time package][timeconst].
-
-### Cardinal s
-
-Spelled-out cardinal numbers (e.g. "one", "two", and "three") are not currently supported.
-
-Use the [`humanize`](/functions/humanize) function to render the day of the month as an ordinal number:
-
-```go-html-template
-{{ humanize .Date.Day }} of {{ .Date.Format "January 2006" }}
-```
-
-This will output:
-
-```
-5th of March 2017
-```
-
-
-### Use `.Local` and `.UTC`
-
-In conjunction with the [`dateFormat` function][dateFormat], you can also convert your dates to `UTC` or to local timezones:
-
-`{{ dateFormat "02 Jan 06 15:04 MST" .Date.UTC }}`
-: **Returns**: `03 Mar 17 20:15 UTC`
-
-`{{ dateFormat "02 Jan 06 15:04 MST" .Date.Local }}`
-: **Returns**: `03 Mar 17 14:15 CST`
-
-[CST]: https://en.wikipedia.org/wiki/Central_Time_Zone
-[dateFormat]: /functions/dateformat/
-[gdex]: https://golang.org/pkg/time/#example_Time_Format
-[pagevars]: /variables/page/
-[time]: https://golang.org/pkg/time/
-[timeconst]: https://golang.org/pkg/time/#ANSIC
diff --git a/docs/content/en/functions/len.md b/docs/content/en/functions/go-template/len.md
index cdf3cf405..b8be621e8 100644
--- a/docs/content/en/functions/len.md
+++ b/docs/content/en/functions/go-template/len.md
@@ -2,14 +2,25 @@
title: len
description: Returns the length of a string, slice, map, or collection.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [length]
-signature: ["len INPUT"]
-relatedfuncs: []
+function:
+ aliases: []
+ returnType: int
+ signatures: [len INPUT]
+relatedFunctions:
+ - len
+ - strings.Count
+ - strings.CountRunes
+ - strings.CountWords
+ - strings.RuneCount
+aliases: [/functions/len]
---
+{{% readfile file="/functions/_common/go-template-functions.md" %}}
+
With a string:
```go-html-template
diff --git a/docs/content/en/functions/go-template/range.md b/docs/content/en/functions/go-template/range.md
new file mode 100644
index 000000000..cf01633b4
--- /dev/null
+++ b/docs/content/en/functions/go-template/range.md
@@ -0,0 +1,159 @@
+---
+title: range
+description: Iterates over slices, maps, and page collections.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType:
+ signatures: [range COLLECTION]
+relatedFunctions:
+ - with
+ - range
+aliases: [/functions/range]
+toc: true
+---
+
+{{% readfile file="/functions/_common/go-template-functions.md" %}}
+
+## Slices
+
+Template:
+
+```go-html-template
+{{ $s := slice "foo" "bar" "baz" }}
+{{ range $s }}
+ <p>{{ . }}</p>
+{{ end }}
+```
+
+Result:
+
+```html
+<p>foo</p>
+<p>bar</p>
+<p>baz</p>
+```
+
+Template:
+
+```go-html-template
+{{ $s := slice "foo" "bar" "baz" }}
+{{ range $v := $s }}
+ <p>{{ $v }}</p>
+{{ end }}
+```
+
+Result:
+
+```html
+<p>foo</p>
+<p>bar</p>
+<p>baz</p>
+```
+
+Template:
+
+```go-html-template
+{{ $s := slice "foo" "bar" "baz" }}
+{{ range $k, $v := $s }}
+ <p>{{ $k }}: {{ $v }}</p>
+{{ end }}
+```
+
+Result:
+
+```html
+<p>0: foo</p>
+<p>1: bar</p>
+<p>2: baz</p>
+```
+
+## Maps
+
+Template:
+
+```go-html-template
+{{ $m := slice
+ (dict "name" "John" "age" 30)
+ (dict "name" "Will" "age" 28)
+ (dict "name" "Joey" "age" 24)
+}}
+{{ range $m }}
+ <p>{{ .name }} is {{ .age }}</p>
+{{ end }}
+```
+
+Result:
+
+```html
+<p>John is 30</p>
+<p>Will is 28</p>
+<p>Joey is 24</p>
+```
+
+## Page collections
+
+Template:
+
+```go-html-template
+{{ range where site.RegularPages "Type" "articles" }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+```
+
+Result:
+
+```html
+<h2><a href="/articles/article-3/">Article 3</a></h2>
+<h2><a href="/articles/article-2/">Article 2</a></h2>
+<h2><a href="/articles/article-1/">Article 1</a></h2>
+```
+
+## Break
+
+Use the `break` statement to stop the innermost iteration and bypass all remaining iterations.
+
+Template:
+
+```go-html-template
+{{ $s := slice "foo" "bar" "baz" }}
+{{ range $s }}
+ {{ if eq . "bar" }}
+ {{ break }}
+ {{ end }}
+ <p>{{ . }}</p>
+{{ end }}
+```
+
+Result:
+
+```html
+<p>foo</p>
+```
+
+## Continue
+
+Use the `continue` statement to stop the innermost iteration and continue to the next iteration.
+
+Template:
+
+```go-html-template
+{{ $s := slice "foo" "bar" "baz" }}
+{{ range $s }}
+ {{ if eq . "bar" }}
+ {{ continue }}
+ {{ end }}
+ <p>{{ . }}</p>
+{{ end }}
+```
+
+Result:
+
+```html
+<p>foo</p>
+<p>baz</p>
+```
diff --git a/docs/content/en/functions/urlquery.md b/docs/content/en/functions/go-template/urlquery.md
index 11ada38c4..cbbfdfa7d 100644
--- a/docs/content/en/functions/urlquery.md
+++ b/docs/content/en/functions/go-template/urlquery.md
@@ -2,14 +2,21 @@
title: urlquery
description: Returns the escaped value of the textual representation of its arguments in a form suitable for embedding in a URL query.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [urls]
-signature: ["urlquery INPUT [INPUT]..."]
-relatedfuncs: []
+function:
+ aliases: []
+ returnType: string
+ signatures: ['urlquery INPUT [INPUT]...']
+relatedFunctions:
+ - collections.Querify
+ - urlquery
+aliases: [/functions/urlquery]
---
+{{% readfile file="/functions/_common/go-template-functions.md" %}}
This template code:
diff --git a/docs/content/en/functions/with.md b/docs/content/en/functions/go-template/with.md
index 591aea01e..06ca38150 100644
--- a/docs/content/en/functions/with.md
+++ b/docs/content/en/functions/go-template/with.md
@@ -2,19 +2,27 @@
title: with
description: Rebinds the context (`.`) within its scope and skips the block if the variable is absent or empty.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [conditionals]
-signature: ["with INPUT"]
-relatedfuncs: []
+function:
+ aliases: []
+ returnType: any
+ signatures: [with PIPELINE]
+relatedFunctions:
+ - with
+ - range
+aliases: [/functions/with]
---
+{{% readfile file="/functions/_common/go-template-functions.md" %}}
+
An alternative way of writing an `if` statement and then referencing the same value is to use `with` instead. `with` rebinds the context (`.`) within its scope and skips the block if the variable is absent, unset or empty.
The set of *empty* values is defined by [the Go templates package](https://golang.org/pkg/text/template/). Empty values include `false`, the number zero, and the empty string.
-If you want to render a block if an index or key is present in a slice, array, channel or map, regardless of whether the value is empty, you should use [`isset`](/functions/isset) instead.
+If you want to render a block if an index or key is present in a slice, array, channel or map, regardless of whether the value is empty, you should use [`isset`](/functions/collections/isset) instead.
The following example checks for a [user-defined site variable](/variables/site/) called `twitteruser`. If the key-value is not set, the following will render nothing:
diff --git a/docs/content/en/functions/group.md b/docs/content/en/functions/group.md
deleted file mode 100644
index 617dcbb34..000000000
--- a/docs/content/en/functions/group.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: group
-description: "`group` groups a list of pages."
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [collections]
-signature: ["PAGES | group KEY"]
----
-
-{{< code file="layouts/partials/groups.html" >}}
-{{ $new := .Site.RegularPages | first 10 | group "New" }}
-{{ $old := .Site.RegularPages | last 10 | group "Old" }}
-{{ $groups := slice $new $old }}
-{{ range $groups }}
-<h3>{{ .Key }}{{/* Prints "New", "Old" */}}</h3>
-<ul>
- {{ range .Pages }}
- <li>
- <a href="{{ .Permalink }}">{{ .Title }}</a>
- <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
- </li>
- {{ end }}
-</ul>
-{{ end }}
-{{< /code >}}
-
-The page group you get from `group` is of the same type you get from the built-in [group methods](/templates/lists#group-content) in Hugo. The above example can even be [paginated](/templates/pagination/#list-paginator-pages).
diff --git a/docs/content/en/functions/hasmenucurrent.md b/docs/content/en/functions/hasmenucurrent.md
deleted file mode 100644
index 8605cf34e..000000000
--- a/docs/content/en/functions/hasmenucurrent.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: .HasMenuCurrent
-description:
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [menus]
-signature: ["PAGE.HasMenuCurrent MENU MENUENTRY"]
-relatedfuncs: ["IsMenuCurrent"]
----
-
-`.HasMenuCurrent` is a method in `Page` object returning a _boolean_ value. It
-returns `true` if the PAGE is the same object as the `.Page` in one of the
-**children menu entries** under MENUENTRY in a given MENU.
-
-If MENUENTRY's `.Page` is a [section](/content-management/sections/) then, from Hugo `0.86.0`, this method also returns true for any descendant of that section..
-
-You can find its example use in [menu templates](/templates/menu-templates/).
diff --git a/docs/content/en/functions/hugo.md b/docs/content/en/functions/hugo/index.md
index 5ed1ae85c..761c8d604 100644
--- a/docs/content/en/functions/hugo.md
+++ b/docs/content/en/functions/hugo/index.md
@@ -1,14 +1,20 @@
---
title: hugo
-description: The `hugo` function provides easy access to Hugo-related data.
-keywords: []
+description: Provides global access to Hugo-related data.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-toc:
-signature: ["hugo"]
-relatedfuncs: []
+function:
+ aliases: []
+ returnType:
+ signatures: [hugo]
+relatedFunctions:
+ - hugo
+ - page
+ - site
+aliases: [/functions/hugo]
---
`hugo` returns an instance that contains the following functions:
diff --git a/docs/content/en/functions/i18n.md b/docs/content/en/functions/i18n.md
deleted file mode 100644
index 13f3a6f8f..000000000
--- a/docs/content/en/functions/i18n.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: i18n
-description: Translates a piece of content based on your i18n configuration files.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [internationalization,i18n,multilingual]
-signature:
- - "i18n KEY"
- - "T KEY"
- - "lang.Translate KEY"
-relatedfuncs: []
----
-
-This translates a piece of content based on your `i18n/en-US.toml` files. You can use the [go-i18n](https://github.com/nicksnyder/go-i18n) tools to manage your translations. The translations can exist in both the theme and at the root of your repository.
-
-```go-html-template
-{{ i18n "translation_id" }}
-```
-
-{{% note %}}
-`T` is an alias to `i18n`. E.g. `{{ T "translation_id" }}`.
-{{% /note %}}
-
-### Query a flexible translation with variables
-
-Often you will want to use the page variables in the translation strings. To do so, pass the `.` context when calling `i18n`:
-
-```go-html-template
-{{ i18n "wordCount" . }}
-```
-
-The function will pass the `.` context to the `"wordCount"` id:
-
-{{< code-toggle file="i18n/en-US" >}}
-[wordCount]
-other = "This article has {{ .WordCount }} words."
-{{< /code-toggle >}}
-
-Assume `.WordCount` in the context has value is 101. The result will be:
-
-```
-This article has 101 words.
-```
-
-For more information about string translations, see [Translation of Strings in Multilingual Mode][multistrings].
-
-[multistrings]: /content-management/multilingual/#translation-of-strings
diff --git a/docs/content/en/functions/images/index.md b/docs/content/en/functions/images/index.md
index 779e2cc96..a71c2b61c 100644
--- a/docs/content/en/functions/images/index.md
+++ b/docs/content/en/functions/images/index.md
@@ -2,6 +2,7 @@
title: Image filters
description: The images namespace provides a list of filters and other image related functions.
categories: [functions]
+keywords: []
aliases: [/functions/imageconfig/]
menu:
docs:
@@ -270,4 +271,4 @@ favicon.ico: {{ .Width }} x {{ .Height }}
{{ end }}
```
-[`Process`]: #process \ No newline at end of file
+[`Process`]: #process
diff --git a/docs/content/en/functions/in.md b/docs/content/en/functions/in.md
deleted file mode 100644
index 1baf7ce90..000000000
--- a/docs/content/en/functions/in.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: in
-description: Checks if an element is in an array or slice--or a substring in a string---and returns a boolean.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature: ["in SET ITEM"]
-relatedfuncs: []
----
-
-The elements supported are strings, integers and floats, although only float64 will match as expected.
-
-In addition, `in` can also check if a substring exists in a string.
-
-```go-html-template
-{{ if in .Params.tags "Git" }}Follow me on GitHub!{{ end }}
-```
-
-
-```go-html-template
-{{ if in "this string contains a substring" "substring" }}Substring found!{{ end }}
-```
diff --git a/docs/content/en/functions/humanize.md b/docs/content/en/functions/inflect/Humanize.md
index 6cbd85837..74d24f310 100644
--- a/docs/content/en/functions/humanize.md
+++ b/docs/content/en/functions/inflect/Humanize.md
@@ -1,13 +1,21 @@
---
-title: humanize
+title: inflect.Humanize
+linkTitle: humanize
description: Returns the humanized version of an argument with the first letter capitalized.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings,casing]
-signature: ["humanize INPUT"]
-relatedfuncs: [anchorize]
+function:
+ aliases: [humanize]
+ returnType: string
+ signatures: [inflect.Humanize INPUT]
+relatedFunctions:
+ - inflect.Humanize
+ - inflect.Pluralize
+ - inflect.Singularize
+aliases: [/functions/humanize]
---
If the input is either an int64 value or the string representation of an integer, humanize returns the number with the proper ordinal appended.
diff --git a/docs/content/en/functions/inflect/Pluralize.md b/docs/content/en/functions/inflect/Pluralize.md
new file mode 100644
index 000000000..5bb444114
--- /dev/null
+++ b/docs/content/en/functions/inflect/Pluralize.md
@@ -0,0 +1,23 @@
+---
+title: inflect.Pluralize
+linkTitle: pluralize
+description: Pluralizes the given word according to a set of common English pluralization rules
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [pluralize]
+ returnType: string
+ signatures: [inflect.Pluralize INPUT]
+relatedFunctions:
+ - inflect.Humanize
+ - inflect.Pluralize
+ - inflect.Singularize
+aliases: [/functions/pluralize]
+---
+
+```go-html-template
+{{ "cat" | pluralize }} → "cats"
+```
diff --git a/docs/content/en/functions/inflect/Singularize.md b/docs/content/en/functions/inflect/Singularize.md
new file mode 100644
index 000000000..5aba4e4ee
--- /dev/null
+++ b/docs/content/en/functions/inflect/Singularize.md
@@ -0,0 +1,25 @@
+---
+title: inflect.Singularize
+linkTitle: singularize
+description: Converts a word according to a set of common English singularization rules.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [singularize]
+ returnType: string
+ signatures: [inflect.Singularize INPUT]
+relatedFunctions:
+ - inflect.Humanize
+ - inflect.Pluralize
+ - inflect.Singularize
+aliases: [/functions/singularize]
+---
+
+```go-html-template
+{{ "cats" | singularize }} → "cat"
+```
+
+See also the `.Data.Singular` [taxonomy variable](/variables/taxonomy/) for singularizing taxonomy names.
diff --git a/docs/content/en/functions/ismenucurrent.md b/docs/content/en/functions/ismenucurrent.md
deleted file mode 100644
index a27a174b6..000000000
--- a/docs/content/en/functions/ismenucurrent.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: .IsMenuCurrent
-description:
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [menus]
-signature: ["PAGE.IsMenuCurrent MENU MENUENTRY"]
-relatedfuncs: ["HasMenuCurrent"]
----
-
-`.IsMenuCurrent` is a method in `Page` object returning a _boolean_ value. It
-returns `true` if the PAGE is the same object as the `.Page` in MENUENTRY in a
-given MENU.
-
-You can find its example use in [menu templates](/templates/menu-templates/).
diff --git a/docs/content/en/functions/isset.md b/docs/content/en/functions/isset.md
deleted file mode 100644
index 0a8de7367..000000000
--- a/docs/content/en/functions/isset.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: isset
-description: Returns true if the parameter is set.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: []
-signature: ["isset COLLECTION INDEX", "isset COLLECTION KEY"]
-relatedfuncs: []
----
-
-Takes either a slice, array, or channel and an index or a map and a key as input.
-
-```go-html-template
-{{ if isset .Params "project_url" }} {{ index .Params "project_url" }}{{ end }}
-```
-
-{{% note %}}
-All site-level configuration keys are stored as lower case. Therefore, a `myParam` key-value set in your [site configuration file](/getting-started/configuration/) needs to be accessed with `{{ if isset .Site.Params "myparam" }}` and *not* with `{{ if isset .Site.Params "myParam" }}`. Note that you can still access the same configuration key with `.Site.Params.myParam` *or* `.Site.Params.myparam`, for example, when using [`with`](/functions/with).
-This restriction also applies when accessing page-level front matter keys from within [shortcodes](/content-management/shortcodes/).
-{{% /note %}}
diff --git a/docs/content/en/functions/lang.md b/docs/content/en/functions/lang.md
deleted file mode 100644
index af55c92bf..000000000
--- a/docs/content/en/functions/lang.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: lang
-package: lang
-description: "TODO.."
-categories: [functions]
-keywords: [numbers]
-menu:
- docs:
- parent: functions
-signature: ["lang.NumFmt PRECISION NUMBER [OPTIONS [DELIMITER]]"]
-aliases: ['/functions/numfmt/']
-type: 'template-func'
----
diff --git a/docs/content/en/functions/lang/FormatAccounting.md b/docs/content/en/functions/lang/FormatAccounting.md
new file mode 100644
index 000000000..974dc4a1a
--- /dev/null
+++ b/docs/content/en/functions/lang/FormatAccounting.md
@@ -0,0 +1,27 @@
+---
+title: lang.FormatAccounting
+description: Returns a currency representation of a number for the given currency and precision for the current language in accounting notation.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [lang.FormatAccounting PRECISION CURRENCY NUMBER]
+relatedFunctions:
+ - lang.FormatAccounting
+ - lang.FormatCurrency
+ - lang.FormatNumber
+ - lang.FormatNumberCustom
+ - lang.FormatPercent
+---
+
+```go-html-template
+{{ 512.5032 | lang.FormatAccounting 2 "NOK" }} → NOK512.50
+```
+
+{{% note %}}
+{{% readfile file="/functions/_common/locales.md" %}}
+{{% /note %}}
diff --git a/docs/content/en/functions/lang/FormatCurrency.md b/docs/content/en/functions/lang/FormatCurrency.md
new file mode 100644
index 000000000..b29a807fe
--- /dev/null
+++ b/docs/content/en/functions/lang/FormatCurrency.md
@@ -0,0 +1,27 @@
+---
+title: lang.FormatCurrency
+description: Returns a currency representation of a number for the given currency and precision for the current language.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [lang.FormatAccounting PRECISION CURRENCY NUMBER]
+relatedFunctions:
+ - lang.FormatAccounting
+ - lang.FormatCurrency
+ - lang.FormatNumber
+ - lang.FormatNumberCustom
+ - lang.FormatPercent
+---
+
+```go-html-template
+{{ 512.5032 | lang.FormatCurrency 2 "USD" }} → $512.50
+```
+
+{{% note %}}
+{{% readfile file="/functions/_common/locales.md" %}}
+{{% /note %}}
diff --git a/docs/content/en/functions/lang/FormatNumber.md b/docs/content/en/functions/lang/FormatNumber.md
new file mode 100644
index 000000000..dd878fdef
--- /dev/null
+++ b/docs/content/en/functions/lang/FormatNumber.md
@@ -0,0 +1,27 @@
+---
+title: lang.FormatNumber
+description: Returns a numeric representation of a number with the given precision for the current language.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [lang.FormatNumber PRECISION NUMBER]
+relatedFunctions:
+ - lang.FormatAccounting
+ - lang.FormatCurrency
+ - lang.FormatNumber
+ - lang.FormatNumberCustom
+ - lang.FormatPercent
+---
+
+```go-html-template
+{{ 512.5032 | lang.FormatNumber 2 }} → 512.50
+```
+
+{{% note %}}
+{{% readfile file="/functions/_common/locales.md" %}}
+{{% /note %}}
diff --git a/docs/content/en/functions/lang/FormatNumberCustom.md b/docs/content/en/functions/lang/FormatNumberCustom.md
new file mode 100644
index 000000000..97b022567
--- /dev/null
+++ b/docs/content/en/functions/lang/FormatNumberCustom.md
@@ -0,0 +1,41 @@
+---
+title: lang.FormatNumberCustom
+description: Returns a numeric representation of a number with the given precision using negative, decimal, and grouping options.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: ['lang.FormatNumberCustom PRECISION NUMBER [OPTIONS...]']
+relatedFunctions:
+ - lang.FormatAccounting
+ - lang.FormatCurrency
+ - lang.FormatNumber
+ - lang.FormatNumberCustom
+ - lang.FormatPercent
+aliases: ['/functions/numfmt/']
+---
+
+This function formats a number with the given precision. The first options parameter is a space-delimited string of characters to represent negativity, the decimal point, and grouping. The default value is `- . ,`. The second options parameter defines an alternate delimiting character.
+
+Note that numbers are rounded up at 5 or greater. So, with precision set to 0, 1.5 becomes 2, and 1.4 becomes 1.
+
+For a simpler function that adapts to the current language, see [`lang.FormatNumber`].
+
+
+```go-html-template
+{{ lang.FormatNumberCustom 2 12345.6789 }} → 12,345.68
+{{ lang.FormatNumberCustom 2 12345.6789 "- , ." }} → 12.345,68
+{{ lang.FormatNumberCustom 6 -12345.6789 "- ." }} → -12345.678900
+{{ lang.FormatNumberCustom 0 -12345.6789 "- . ," }} → -12,346
+{{ lang.FormatNumberCustom 0 -12345.6789 "-|.| " "|" }} → -12 346
+```
+
+{{% note %}}
+{{% readfile file="/functions/_common/locales.md" %}}
+{{% /note %}}
+
+[`lang.FormatNumber`]: /functions/lang/formatnumber
diff --git a/docs/content/en/functions/lang/FormatPercent.md b/docs/content/en/functions/lang/FormatPercent.md
new file mode 100644
index 000000000..dd2042490
--- /dev/null
+++ b/docs/content/en/functions/lang/FormatPercent.md
@@ -0,0 +1,27 @@
+---
+title: lang.FormatPercent
+description: Returns a percentage representation of a number with the given precision for the current language.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [lang.FormatPercent PRECISION NUMBER]
+relatedFunctions:
+ - lang.FormatAccounting
+ - lang.FormatCurrency
+ - lang.FormatNumber
+ - lang.FormatNumberCustom
+ - lang.FormatPercent
+---
+
+```go-html-template
+{{ 512.5032 | lang.FormatPercent 2 }} → 512.50%
+```
+
+{{% note %}}
+{{% readfile file="/functions/_common/locales.md" %}}
+{{% /note %}}
diff --git a/docs/content/en/functions/lang.Merge.md b/docs/content/en/functions/lang/Merge.md
index ab3e61940..b3d21cd7a 100644
--- a/docs/content/en/functions/lang.Merge.md
+++ b/docs/content/en/functions/lang/Merge.md
@@ -1,14 +1,17 @@
---
title: lang.Merge
-description: "Merge missing translations from other languages."
+description: Merge missing translations from other languages.
categories: [functions]
-keywords: [multilingual]
+keywords: []
menu:
docs:
parent: functions
-signature: ["lang.Merge FROM TO"]
-relatedfuncs: []
-comments:
+function:
+ aliases: []
+ returnType: any
+ signatures: [lang.Merge FROM TO]
+relatedFunctions: []
+aliases: [/functions/lang.merge]
---
As an example:
diff --git a/docs/content/en/functions/lang/Translate.md b/docs/content/en/functions/lang/Translate.md
new file mode 100644
index 000000000..718d8cfb2
--- /dev/null
+++ b/docs/content/en/functions/lang/Translate.md
@@ -0,0 +1,126 @@
+---
+title: lang.Translate
+linkTitle: i18n
+description: Translates a string using the translation tables in the i18n directory.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [i18n,T]
+ returnType: string
+ signatures: ['lang.Translate KEY [CONTEXT]']
+relatedFunctions: []
+aliases: [/functions/i18n]
+---
+
+Let's say your multilingual site supports two languages, English and Polish. Create a translation table for each language in the `i18n` directory.
+
+```
+i18n/
+├── en.toml
+└── pl.toml
+```
+
+The translation tables can contain both:
+
+- Simple translations
+- Translations with pluralization
+
+The Unicode [CLDR Plural Rules chart] describes the pluralization categories for each language.
+
+[CLDR Plural Rules chart]: https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html
+
+The English translation table:
+
+{{< code-toggle file=i18n/en copy=false >}}
+# simple translations
+privacy = 'privacy'
+security = 'security'
+
+# translations with pluralization
+[day]
+one = 'day'
+other = 'days'
+
+[day_with_count]
+one = '{{ . }} day'
+other = '{{ . }} days'
+{{< /code-toggle >}}
+
+The Polish translation table:
+
+{{< code-toggle file=i18n/pl copy=false >}}
+# simple translations
+privacy = 'prywatność'
+security = 'bezpieczeństwo'
+
+# translations with pluralization
+[day]
+one = 'miesiąc'
+few = 'miesiące'
+many = 'miesięcy'
+other = 'miesiąca'
+
+[day_with_count]
+one = '{{ . }} miesiąc'
+few = '{{ . }} miesiące'
+many = '{{ . }} miesięcy'
+other = '{{ . }} miesiąca'
+{{< /code-toggle >}}
+
+{{% note %}}
+The examples below use the `T` alias for brevity.
+{{% /note %}}
+
+When viewing the English language site:
+
+```go-html-template
+{{ T "privacy" }} → privacy
+{{ T "security" }} → security
+
+{{ T "day" 0 }} → days
+{{ T "day" 1 }} → day
+{{ T "day" 2 }} → days
+{{ T "day" 5 }} → days
+
+{{ T "day_with_count" 0 }} → 0 days
+{{ T "day_with_count" 1 }} → 1 day
+{{ T "day_with_count" 2 }} → 2 days
+{{ T "day_with_count" 5 }} → 5 days
+````
+
+When viewing the Polish language site:
+
+```go-html-template
+{{ T "privacy" }} → prywatność
+{{ T "security" }} → bezpieczeństwo
+
+{{ T "day" 0 }} → miesięcy
+{{ T "day" 1 }} → miesiąc
+{{ T "day" 2 }} → miesiące
+{{ T "day" 5 }} → miesięcy
+
+{{ T "day_with_count" 0 }} → 0 miesięcy
+{{ T "day_with_count" 1 }} → 1 miesiąc
+{{ T "day_with_count" 2 }} → 2 miesiące
+{{ T "day_with_count" 5 }} → 5 miesięcy
+```
+
+In the pluralization examples above, we passed an integer in context (the second argument). You can also pass a map in context, creating a `count` key to control pluralization.
+
+Translation table:
+
+{{< code-toggle file=i18n/en copy=false >}}
+[age]
+one = '{{ .name }} is {{ .count }} year old.'
+other = '{{ .name }} is {{ .count }} years old.'
+{{< /code-toggle >}}
+
+Template:
+
+```go-html-template
+{{ T "age" (dict "name" "Will" "count" 1) }} → Will is 1 year old.
+{{ T "age" (dict "name" "John" "count" 3) }} → John is 3 years old.
+```
diff --git a/docs/content/en/functions/last.md b/docs/content/en/functions/last.md
deleted file mode 100644
index 72e6a4c0d..000000000
--- a/docs/content/en/functions/last.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: last
-description: "slices an array to only the last <em>N</em>th elements."
-keywords: []
-categories: [functions]
-menu:
- docs:
- parent: functions
-toc:
-signature: ["last INDEX COLLECTION"]
-relatedfuncs: []
----
-
-```go-html-template
-{{ range last 10 .Pages }}
- {{ .Render "summary" }}
-{{ end }}
-```
diff --git a/docs/content/en/functions/math.md b/docs/content/en/functions/math/index.md
index 708921f68..fd4d10a31 100644
--- a/docs/content/en/functions/math.md
+++ b/docs/content/en/functions/math/index.md
@@ -1,14 +1,17 @@
---
-title: Math
+title: math
description: Hugo provides mathematical operators in templates.
-keywords: [math, operators]
categories: [functions]
+keywords: []
+
menu:
docs:
parent: functions
-toc:
-signature: []
-relatedfuncs: []
+function:
+ aliases: []
+ returnType:
+ signatures: []
+relatedFunctions: []
---
| Function | Description | Example |
diff --git a/docs/content/en/functions/fileExists.md b/docs/content/en/functions/os/FileExists.md
index f7b5c37e0..52cfe32c8 100644
--- a/docs/content/en/functions/fileExists.md
+++ b/docs/content/en/functions/os/FileExists.md
@@ -1,13 +1,25 @@
---
-title: fileExists
-description: Checks for file or directory existence.
+title: os.FileExists
+linkTitle: fileExists
+description: Reports whether the file or directory exists.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-signature: ["os.FileExists PATH","fileExists PATH"]
-relatedfuncs: ['os.ReadDir','os.ReadFile','os.Stat']
+function:
+ aliases: [fileExists]
+ returnType: bool
+ signatures: [os.FileExists PATH]
+relatedFunctions:
+ - os.FileExists
+ - os.Getenv
+ - os.ReadDir
+ - os.ReadFile
+ - os.Stat
+aliases: [/functions/fileexists]
---
+
The `os.FileExists` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`](/getting-started/configuration#contentdir). A leading path separator (`/`) is optional.
With this directory structure:
diff --git a/docs/content/en/functions/getenv.md b/docs/content/en/functions/os/Getenv.md
index daeeb6532..16f73f5aa 100644
--- a/docs/content/en/functions/getenv.md
+++ b/docs/content/en/functions/os/Getenv.md
@@ -1,14 +1,25 @@
---
-title: getenv
+title: os.Getenv
+linkTitle: getenv
description: Returns the value of an environment variable, or an empty string if the environment variable is not set.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: []
-signature: ["os.Getenv VARIABLE", "getenv VARIABLE"]
-relatedfuncs: []
+function:
+ aliases: [getenv]
+ returnType: string
+ signatures: [os.Getenv VARIABLE]
+relatedFunctions:
+ - os.FileExists
+ - os.Getenv
+ - os.ReadDir
+ - os.ReadFile
+ - os.Stat
+aliases: [/functions/getenv]
---
+
Examples:
```go-html-template
diff --git a/docs/content/en/functions/readdir.md b/docs/content/en/functions/os/ReadDir.md
index a76e3c5f6..d0ed87bdf 100644
--- a/docs/content/en/functions/readdir.md
+++ b/docs/content/en/functions/os/ReadDir.md
@@ -1,14 +1,25 @@
---
-title: readDir
+title: os.ReadDir
+linkTitle: readDir
description: Returns an array of FileInfo structures sorted by file name, one element for each directory entry.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [files]
-signature: ["os.ReadDir PATH", "readDir PATH"]
-relatedfuncs: ['os.FileExists','os.ReadFile','os.Stat']
+function:
+ aliases: [readDir]
+ returnType: FileInfo
+ signatures: [os.ReadDir PATH]
+relatedFunctions:
+ - os.FileExists
+ - os.Getenv
+ - os.ReadDir
+ - os.ReadFile
+ - os.Stat
+aliases: [/functions/readdir]
---
+
The `os.ReadDir` function resolves the path relative to the root of your project directory. A leading path separator (`/`) is optional.
With this directory structure:
@@ -33,9 +44,9 @@ This template code:
Produces:
```html
-about.md --> false
-contact.md --> false
-news --> true
+about.md → false
+contact.md → false
+news → true
```
Note that `os.ReadDir` is not recursive.
diff --git a/docs/content/en/functions/readfile.md b/docs/content/en/functions/os/ReadFile.md
index c700d7aa0..30f2b3056 100644
--- a/docs/content/en/functions/readfile.md
+++ b/docs/content/en/functions/os/ReadFile.md
@@ -1,14 +1,25 @@
---
-title: readFile
+title: os.ReadFile
+linkTitle: readFile
description: Returns the contents of a file.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [files]
-signature: ["os.ReadFile PATH", "readFile PATH"]
-relatedfuncs: ['os.FileExists','os.ReadDir','os.Stat']
+function:
+ aliases: [readFile]
+ returnType: string
+ signatures: [os.ReadFile PATH]
+relatedFunctions:
+ - os.FileExists
+ - os.Getenv
+ - os.ReadDir
+ - os.ReadFile
+ - os.Stat
+aliases: [/functions/readfile]
---
+
The `os.ReadFile` function attempts to resolve the path relative to the root of your project directory. If a matching file is not found, it will attempt to resolve the path relative to the [`contentDir`](/getting-started/configuration#contentdir). A leading path separator (`/`) is optional.
With a file named README.md in the root of your project directory:
diff --git a/docs/content/en/functions/os.Stat.md b/docs/content/en/functions/os/Stat.md
index 51d35ae2f..dfef3c815 100644
--- a/docs/content/en/functions/os.Stat.md
+++ b/docs/content/en/functions/os/Stat.md
@@ -2,13 +2,23 @@
title: os.Stat
description: Returns a FileInfo structure describing a file or directory.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [files]
-signature: ["os.Stat PATH"]
-relatedfuncs: ['os.FileExists','os.ReadDir','os.ReadFile']
+function:
+ aliases: []
+ returnType: FileInfo
+ signatures: [os.Stat PATH]
+relatedFunctions:
+ - os.FileExists
+ - os.Getenv
+ - os.ReadDir
+ - os.ReadFile
+ - os.Stat
+aliases: [/functions/os.stat]
---
+
The `os.Stat` function attempts to resolve the path relative to the root of your project directory. If a matching file or directory is not found, it will attempt to resolve the path relative to the [`contentDir`](/getting-started/configuration#contentdir). A leading path separator (`/`) is optional.
```go-html-template
diff --git a/docs/content/en/functions/page/index.md b/docs/content/en/functions/page/index.md
new file mode 100644
index 000000000..01f014078
--- /dev/null
+++ b/docs/content/en/functions/page/index.md
@@ -0,0 +1,109 @@
+---
+title: page
+description: Provides global access to the .Page object.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType:
+ signatures: [page]
+relatedFunctions:
+ - hugo
+ - page
+ - site
+aliases: [/functions/page]
+---
+
+At the top level of a template that receives the `Page` object in context, these are equivalent:
+
+```go-html-template
+{{ .Params.foo }}
+{{ .Page.Params.foo }}
+{{ page.Params.foo }}
+```
+
+When the `Page` object is not in context, you can use the global `page` function:
+
+```go-html-template
+{{ page.Params.foo }}
+```
+
+{{% note %}}
+Do not use the global `page` function in shortcodes, partials called by shortcodes, or cached partials. See [warnings](#warnings) below.
+{{% /note %}}
+
+## Explanation
+
+Hugo almost always passes a `Page` as the data context into the top level template (e.g., `single.html`). The one exception is the multihost sitemap template. This means that you can access the current page with the `.` variable in the template.
+
+But when you are deeply nested inside of a [content view], [partial], or [render hook], it isn't always practical or possible to access the `Page` object.
+
+Use the global `page` function to access the `Page` object from anywhere in any template.
+
+## Warnings
+
+### Be aware of top-level context
+
+The global `page` function accesses the `Page` object passed into the top-level template.
+
+With this content structure:
+
+```text
+content/
+├── posts/
+│ ├── post-1.md
+│ ├── post-2.md
+│ └── post-3.md
+└── _index.md <-- title is "My Home Page"
+```
+
+And this code in the home page template:
+
+```go-html-template
+{{ range site.Sections }}
+ {{ range .Pages }}
+ {{ page.Title }}
+ {{ end }}
+{{ end }}
+```
+
+The rendered output will be:
+
+```text
+My Home Page
+My Home Page
+My Home Page
+```
+
+In the example above, the global `page` function accesses the `Page` object passed into the home page template; it does not access the `Page` object of the iterated pages.
+
+### Be aware of caching
+
+Do not use the global `page` function in:
+
+- Shortcodes
+- Partials called by shortcodes
+- Partials cached by the `partialCached` function
+
+Hugo caches rendered shortcodes. If you use the `global` page function within a shortcode, and the page content is rendered in two or more templates, the cached shortcodes may be incorrect.
+
+Consider this section template:
+
+```go-html-template
+{{ range .Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+ {{ .Summary }}
+{{ end }}
+```
+
+When you call the `.Summary` method, Hugo renders the page `.Content` including shortcodes. In this case, within a shortcode, the global `page` function accesses the `Page` object of the section page, not the content page.
+
+If Hugo renders the section page before a content page, the cached rendered shortcode will be incorrect. You cannot control the rendering sequence due to concurrency.
+
+[content view]: /getting-started/glossary/#content-view
+[partial]: /getting-started/glossary/#partial
+[render hook]: /getting-started/glossary/#render-hook
+[shortcode]: getting-started/glossary/#shortcode
diff --git a/docs/content/en/functions/partials/Include.md b/docs/content/en/functions/partials/Include.md
new file mode 100644
index 000000000..ea9dfb31a
--- /dev/null
+++ b/docs/content/en/functions/partials/Include.md
@@ -0,0 +1,67 @@
+---
+title: partials.Include
+linkTitle: partial
+description: Executes the named partial template. If the partial contains a return statement, returns that value, else returns the rendered output.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [partial]
+ returnType: any
+ signatures: ['partials.Include LAYOUT [CONTEXT]']
+relatedFunctions:
+ - partials.Include
+ - partials.IncludeCached
+aliases: [/functions/partial]
+---
+
+In this example we have three partial templates:
+
+```text
+layouts/
+└── partials/
+ ├── average.html
+ ├── breadcrumbs.html
+ └── footer.html
+```
+
+The "average" partial returns the average of one or more numbers. We pass the numbers in context:
+
+```go-html-template
+{{ $numbers := slice 1 6 7 42 }}
+{{ $average := partial "average.html" $numbers }}
+```
+
+The "breadcrumbs" partial renders [breadcrumb navigation], and needs to receive the current page in context:
+
+```go-html-template
+{{ partial "breadcrumbs.html" . }}
+```
+
+The "footer" partial renders the site footer. In this contrived example, the footer does not need access to the current page, so we can omit context:
+
+```go-html-template
+{{ partial "breadcrumbs.html" }}
+```
+
+You can pass anything in context: a page, a page collection, a scalar value, a slice, or a map. For example:
+
+```go-html-template
+{{ $student := dict
+ "name" "John Doe"
+ "major" "Finance"
+ "gpa" 4.0
+}}
+{{ partial "render-student-info.html" $student }}
+```
+
+Then, within the partial template:
+
+```go-html-template
+<p>{{ .name }} is majoring in {{ .major }}. Their grade point average is {{ .gpa }}.</p>
+```
+
+
+[breadcrumb navigation]: /content-management/sections/#ancestors-and-descendants
diff --git a/docs/content/en/functions/partialCached.md b/docs/content/en/functions/partials/IncludeCached.md
index 7eed566f6..ab9a77835 100644
--- a/docs/content/en/functions/partialCached.md
+++ b/docs/content/en/functions/partials/IncludeCached.md
@@ -1,13 +1,23 @@
---
-title: partialCached
+title: partials.IncludeCached
+linkTitle: partialCached
description: Allows for caching of partials that do not need to be re-rendered on every invocation.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [performance]
-signature: ["partialCached LAYOUT INPUT [VARIANT...]"]
-relatedfuncs: []
+function:
+ aliases: [partialCached]
+ returnType: any
+ signatures: ['partials.IncludeCached LAYOUT CONTEXT [VARIANT...]']
+relatedFunctions:
+ - partials.Include
+ - partials.IncludeCached
+signatures:
+ - partials.IncludeCached LAYOUT CONTEXT [VARIANT...]
+ - partialCached LAYOUT CONTEXT [VARIANT...]
+aliases: [/functions/partialcached]
---
The `partialCached` template function can offer significant performance gains for complex templates that don't need to be re-rendered on every invocation.
diff --git a/docs/content/en/functions/path.Split.md b/docs/content/en/functions/path.Split.md
deleted file mode 100644
index aa915788e..000000000
--- a/docs/content/en/functions/path.Split.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: path.Split
-description: Split path immediately following the final slash.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [path, split]
-signature: ["path.Split PATH"]
-relatedfuncs: [path.Base, path.BaseName, path.Clean, path.Dir, path.Ext, path.Join]
----
-
-`path.Split` splits `PATH` immediately following the final slash, separating it into a directory and a base component.
-
-The returned values have the property that `PATH` = `DIR`+`BASE`.
-If there is no slash in `PATH`, it returns an empty directory and the base is set to `PATH`.
-
-**Note:** On Windows, `PATH` is converted to slash (`/`) separators.
-
-```go-html-template
-{{ $dirFile := path.Split "a/news.html" }} → $dirFile.Dir → "a/", $dirFile.File → "news.html"
-{{ $dirFile := path.Split "news.html" }} → $dirFile.Dir → "", $dirFile.File → "news.html"
-{{ $dirFile := path.Split "a/b/c" }} → $dirFile.Dir → "a/b/", $dirFile.File → "c"
-```
diff --git a/docs/content/en/functions/path.Base.md b/docs/content/en/functions/path/Base.md
index 5ea0564fa..c00873524 100644
--- a/docs/content/en/functions/path.Base.md
+++ b/docs/content/en/functions/path/Base.md
@@ -2,12 +2,23 @@
title: path.Base
description: Base returns the last element of a path.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [path, base]
-signature: ["path.Base PATH"]
-relatedfuncs: [path.BaseName, path.Clean, path.Dir, path.Ext, path.Join, path.Split]
+function:
+ aliases: []
+ returnType: string
+ signatures: [path.Base PATH]
+relatedFunctions:
+ - path.Base
+ - path.BaseName
+ - path.Clean
+ - path.Dir
+ - path.Ext
+ - path.Join
+ - path.Split
+aliases: [/functions/path.base]
---
`path.Base` returns the last element of `PATH`.
diff --git a/docs/content/en/functions/path.BaseName.md b/docs/content/en/functions/path/BaseName.md
index 95a521a1a..a357ed403 100644
--- a/docs/content/en/functions/path.BaseName.md
+++ b/docs/content/en/functions/path/BaseName.md
@@ -2,12 +2,23 @@
title: path.BaseName
description: BaseName returns the last element of a path, removing the extension if present.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [path, base]
-signature: ["path.BaseName PATH"]
-relatedfuncs: [path.Base, path.Clean, path.Dir, path.Ext, path.Join, path.Split]
+function:
+ aliases: []
+ returnType: string
+ signatures: [path.BaseName PATH]
+relatedFunctions:
+ - path.Base
+ - path.BaseName
+ - path.Clean
+ - path.Dir
+ - path.Ext
+ - path.Join
+ - path.Split
+aliases: [/functions/path.basename]
---
If `PATH` is empty, `.` is returned.
diff --git a/docs/content/en/functions/path.Clean.md b/docs/content/en/functions/path/Clean.md
index ce53cc9ff..98160c568 100644
--- a/docs/content/en/functions/path.Clean.md
+++ b/docs/content/en/functions/path/Clean.md
@@ -2,12 +2,23 @@
title: path.Clean
description: Replaces path separators with slashes (`/`) and removes extraneous separators.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [path, clean]
-signature: ["path.Clean PATH"]
-relatedfuncs: [path.Base, path.BaseName, path.Dir, path.Ext, path.Join, path.Split]
+function:
+ aliases: []
+ returnType: string
+ signatures: [path.Clean PATH]
+relatedFunctions:
+ - path.Base
+ - path.BaseName
+ - path.Clean
+ - path.Dir
+ - path.Ext
+ - path.Join
+ - path.Split
+aliases: [/functions/path.clean]
---
`path.Clean` replaces path separators with slashes (`/`) and removes extraneous separators, including trailing separators.
diff --git a/docs/content/en/functions/path.Dir.md b/docs/content/en/functions/path/Dir.md
index 0083a1efa..0a2928696 100644
--- a/docs/content/en/functions/path.Dir.md
+++ b/docs/content/en/functions/path/Dir.md
@@ -2,12 +2,23 @@
title: path.Dir
description: Dir returns all but the last element of a path.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [path, dir]
-signature: ["path.Dir PATH"]
-relatedfuncs: [path.Base, path.BaseName, path.Clean, path.Ext, path.Join, path.Split]
+function:
+ aliases: []
+ returnType: string
+ signatures: [path.Dir PATH]
+relatedFunctions:
+ - path.Base
+ - path.BaseName
+ - path.Clean
+ - path.Dir
+ - path.Ext
+ - path.Join
+ - path.Split
+aliases: [/functions/path.dir]
---
`path.Dir` returns all but the last element of `PATH`, typically `PATH`'s directory.
diff --git a/docs/content/en/functions/path.Ext.md b/docs/content/en/functions/path/Ext.md
index 2e1946608..6b5685948 100644
--- a/docs/content/en/functions/path.Ext.md
+++ b/docs/content/en/functions/path/Ext.md
@@ -2,12 +2,23 @@
title: path.Ext
description: Ext returns the file name extension of a path.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [path, ext, extension]
-signature: ["path.Ext PATH"]
-relatedfuncs: [path.Base, path.BaseName, path.Clean, path.Dir, path.Join, path.Split]
+function:
+ aliases: []
+ returnType: string
+ signatures: [path.Ext PATH]
+relatedFunctions:
+ - path.Base
+ - path.BaseName
+ - path.Clean
+ - path.Dir
+ - path.Ext
+ - path.Join
+ - path.Split
+aliases: [/functions/path.ext]
---
`path.Ext` returns the file name extension `PATH`.
diff --git a/docs/content/en/functions/path.Join.md b/docs/content/en/functions/path/Join.md
index 5ac5ac469..4f5c51c0f 100644
--- a/docs/content/en/functions/path.Join.md
+++ b/docs/content/en/functions/path/Join.md
@@ -2,12 +2,24 @@
title: path.Join
description: Join path elements into a single path.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [path, join]
-signature: ["path.Join ELEMENT..."]
-relatedfuncs: [path.Base, path.BaseName, path.Clean, path.Dir, path.Ext, path.Split]
+function:
+ aliases: []
+ returnType: string
+ signatures: [path.Join ELEMENT...]
+relatedFunctions:
+ - path.Base
+ - path.BaseName
+ - path.Clean
+ - path.Dir
+ - path.Ext
+ - path.Join
+ - path.Split
+ - urls.JoinPath
+aliases: [/functions/path.join]
---
`path.Join` joins path elements into a single path, adding a separating slash if necessary.
diff --git a/docs/content/en/functions/path/Split.md b/docs/content/en/functions/path/Split.md
new file mode 100644
index 000000000..bde412743
--- /dev/null
+++ b/docs/content/en/functions/path/Split.md
@@ -0,0 +1,43 @@
+---
+title: path.Split
+description: Split path immediately following the final slash.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: DirFile
+ signatures: [path.Split PATH]
+relatedFunctions:
+ - path.Base
+ - path.BaseName
+ - path.Clean
+ - path.Dir
+ - path.Ext
+ - path.Join
+ - path.Split
+aliases: [/functions/path.split]
+---
+
+`path.Split` splits `PATH` immediately following the final slash, separating it into a directory and a base component.
+
+The returned values have the property that `PATH` = `DIR`+`BASE`.
+If there is no slash in `PATH`, it returns an empty directory and the base is set to `PATH`.
+
+**Note:** On Windows, `PATH` is converted to slash (`/`) separators.
+
+```go-html-template
+{{ $dirFile := path.Split "a/news.html" }}
+{{ $dirFile.Dir }} → "a/"
+{{ $dirFile.File }} → "news.html"
+
+{{ $dirFile := path.Split "news.html" }}
+{{ $dirFile.Dir }} → ""
+{{ $dirFile.File }} → "news.html"
+
+{{ $dirFile := path.Split "a/b/c" }}
+{{ $dirFile.Dir }} → "a/b/"
+{{ $dirFile.File }} → "c"
+```
diff --git a/docs/content/en/functions/pluralize.md b/docs/content/en/functions/pluralize.md
deleted file mode 100644
index bd0860802..000000000
--- a/docs/content/en/functions/pluralize.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: pluralize
-description: Pluralizes the given word according to a set of common English pluralization rules
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature: ["pluralize INPUT"]
-relatedfuncs: []
----
-
-```go-html-template
-{{ "cat" | pluralize }} → "cats"
-```
diff --git a/docs/content/en/functions/printf.md b/docs/content/en/functions/printf.md
deleted file mode 100644
index 66f85e159..000000000
--- a/docs/content/en/functions/printf.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: printf
-description: Formats a string using the standard `fmt.Sprintf` function.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature: ["printf FORMAT INPUT"]
-relatedfuncs: []
----
-
-See [the go doc](https://golang.org/pkg/fmt/) for additional information.
-
-```go-html-template
-{{ i18n ( printf "combined_%s" $var ) }}
-```
-
-```go-html-template
-{{ printf "formatted %.2f" 3.1416 }}
-```
diff --git a/docs/content/en/functions/range.md b/docs/content/en/functions/range.md
deleted file mode 100644
index da0a4d7ef..000000000
--- a/docs/content/en/functions/range.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: range
-description: Iterates over a map, array, or slice.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [iteration]
-signature: ["range COLLECTION"]
-relatedfuncs: []
----
-
-Just like in the Go programming language, Go and Hugo templates make heavy use of `range` to iterate over a map, array or slice. Other templating languages use a foreach for the equivalent functionality.
-
-`range` is fundamental to templating in Hugo. (See the [Introduction to Hugo Templates](/templates/introduction/) for more examples.)
diff --git a/docs/content/en/functions/reflect.IsMap.md b/docs/content/en/functions/reflect.IsMap.md
deleted file mode 100644
index aa8da7d53..000000000
--- a/docs/content/en/functions/reflect.IsMap.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: reflect.IsMap
-description: Reports if a value is a map.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [reflect, reflection, kind]
-signature: ["reflect.IsMap INPUT"]
-relatedfuncs: [reflect.IsSlice]
----
-
-`reflect.IsMap` reports if `VALUE` is a map. Returns a boolean.
-
-```go-html-template
-{{ reflect.IsMap (dict "key" "value") }} → true
-{{ reflect.IsMap "yo" }} → false
-```
diff --git a/docs/content/en/functions/reflect.IsSlice.md b/docs/content/en/functions/reflect.IsSlice.md
deleted file mode 100644
index 0a29d8f3e..000000000
--- a/docs/content/en/functions/reflect.IsSlice.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: reflect.IsSlice
-description: Reports if a value is a slice.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [reflect, reflection, kind]
-signature: ["reflect.IsSlice INPUT"]
-relatedfuncs: [reflect.IsMap]
----
-
-`reflect.IsSlice` reports if `VALUE` is a slice. Returns a boolean.
-
-```go-html-template
-{{ reflect.IsSlice (slice 1 2 3) }} → true
-{{ reflect.IsSlice "yo" }} → false
-```
diff --git a/docs/content/en/functions/reflect/IsMap.md b/docs/content/en/functions/reflect/IsMap.md
new file mode 100644
index 000000000..7d89bb38a
--- /dev/null
+++ b/docs/content/en/functions/reflect/IsMap.md
@@ -0,0 +1,23 @@
+---
+title: reflect.IsMap
+description: Reports whether the value is a map.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: bool
+ signatures: [reflect.IsMap INPUT]
+namespace: reflect
+relatedFunctions:
+ - reflect.IsMap
+ - reflect.IsSlice
+aliases: [/functions/reflect.ismap]
+---
+
+```go-html-template
+{{ reflect.IsMap (dict "key" "value") }} → true
+{{ reflect.IsMap "yo" }} → false
+```
diff --git a/docs/content/en/functions/reflect/IsSlice.md b/docs/content/en/functions/reflect/IsSlice.md
new file mode 100644
index 000000000..09bab7127
--- /dev/null
+++ b/docs/content/en/functions/reflect/IsSlice.md
@@ -0,0 +1,23 @@
+---
+title: reflect.IsSlice
+description: Reports whether the value is a slice.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: bool
+ signatures: [reflect.IsSlice INPUT]
+namespace: reflect
+relatedFunctions:
+ - reflect.IsMap
+ - reflect.IsSlice
+aliases: [/functions/reflect.isslice]
+---
+
+```go-html-template
+{{ reflect.IsSlice (slice 1 2 3) }} → true
+{{ reflect.IsSlice "yo" }} → false
+```
diff --git a/docs/content/en/functions/safeCSS.md b/docs/content/en/functions/safe/CSS.md
index 93595286c..d5dcdfb66 100644
--- a/docs/content/en/functions/safeCSS.md
+++ b/docs/content/en/functions/safe/CSS.md
@@ -1,13 +1,24 @@
---
-title: safeCSS
+title: safe.CSS
+linkTitle: safeCSS
description: Declares the provided string as a known "safe" CSS string.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [style,css,strings]
-signature: ["safeCSS INPUT"]
-relatedfuncs: [safeHTML,safeHTMLAttr,]
+function:
+ aliases: [safeCSS]
+ returnType: template.CSS
+ signatures: [safe.CSS INPUT]
+relatedFunctions:
+ - safe.CSS
+ - safe.HTML
+ - safe.HTMLAttr
+ - safe.JS
+ - safe.JSStr
+ - safe.URL
+aliases: [/functions/safecss]
---
In this context, *safe* means CSS content that matches any of the following:
diff --git a/docs/content/en/functions/safeHTML.md b/docs/content/en/functions/safe/HTML.md
index 4e74b44d4..ea3afe8f3 100644
--- a/docs/content/en/functions/safeHTML.md
+++ b/docs/content/en/functions/safe/HTML.md
@@ -1,13 +1,24 @@
---
-title: safeHTML
+title: safe.HTML
+linkTitle: safeHTML
description: Declares a provided string as a "safe" HTML document to avoid escaping by Go templates.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings]
-signature: ["safeHTML INPUT"]
-relatedfuncs: []
+function:
+ aliases: [safeHTML]
+ returnType: template.HTML
+ signatures: [safe.HTML INPUT]
+relatedFunctions:
+ - safe.CSS
+ - safe.HTML
+ - safe.HTMLAttr
+ - safe.JS
+ - safe.JSStr
+ - safe.URL
+aliases: [/functions/safehtml]
---
It should not be used for HTML from a third-party, or HTML with unclosed tags or comments.
diff --git a/docs/content/en/functions/safeHTMLAttr.md b/docs/content/en/functions/safe/HTMLAttr.md
index bced1ba10..7d1b06c47 100644
--- a/docs/content/en/functions/safeHTMLAttr.md
+++ b/docs/content/en/functions/safe/HTMLAttr.md
@@ -1,13 +1,24 @@
---
-title: safeHTMLAttr
+title: safe.HTMLAttr
+linkTitle: safeHTMLAttr
description: Declares the provided string as a safe HTML attribute.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings]
-signature: ["safeHTMLAttr INPUT"]
-relatedfuncs: []
+function:
+ aliases: [safeHTMLAttr]
+ returnType: template.HTMLAttr
+ signatures: [safe.HTMLAttr INPUT]
+relatedFunctions:
+ - safe.CSS
+ - safe.HTML
+ - safe.HTMLAttr
+ - safe.JS
+ - safe.JSStr
+ - safe.URL
+aliases: [/functions/safehtmlattr]
---
Given a site configuration that contains this menu entry:
diff --git a/docs/content/en/functions/safeJS.md b/docs/content/en/functions/safe/JS.md
index 48c2c363b..e679b5f85 100644
--- a/docs/content/en/functions/safeJS.md
+++ b/docs/content/en/functions/safe/JS.md
@@ -1,13 +1,24 @@
---
-title: safeJS
+title: safe.JS
+linkTitle: safeJS
description: Declares the provided string as a known safe JavaScript string.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings]
-signature: ["safeJS INPUT"]
-relatedfuncs: []
+function:
+ aliases: [safeJS]
+ returnType: template.JS
+ signatures: [safe.JS INPUT]
+relatedFunctions:
+ - safe.CSS
+ - safe.HTML
+ - safe.HTMLAttr
+ - safe.JS
+ - safe.JSStr
+ - safe.URL
+aliases: [/functions/safejs]
---
In this context, *safe* means the string encapsulates a known safe EcmaScript5 Expression (e.g., `(x + y * z())`).
diff --git a/docs/content/en/functions/safe/JSStr.md b/docs/content/en/functions/safe/JSStr.md
new file mode 100644
index 000000000..790de3a73
--- /dev/null
+++ b/docs/content/en/functions/safe/JSStr.md
@@ -0,0 +1,61 @@
+---
+title: safe.JSStr
+linkTitle: safeJSStr
+description: Declares the provided string as a known safe JavaScript string.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [safeJSStr]
+ returnType: template.JSStr
+ signatures: [safe.JSStr INPUT]
+relatedFunctions:
+ - safe.CSS
+ - safe.HTML
+ - safe.HTMLAttr
+ - safe.JS
+ - safe.JSStr
+ - safe.URL
+aliases: [/functions/safejsstr]
+---
+
+Encapsulates a sequence of characters meant to be embedded between quotes in a JavaScript expression. Use of this type presents a security risk: the encapsulated content should come from a trusted source, as it will be included verbatim in the template output.
+
+Without declaring a variable to be a safe JavaScript string:
+
+```go-html-template
+{{ $title := "Lilo & Stitch" }}
+<script>
+ const a = "Title: " + {{ $title }};
+</script>
+```
+
+Rendered:
+
+
+```html
+<script>
+ const a = "Title: " + "Lilo \u0026 Stitch";
+</script>
+```
+
+To avoid escaping by Go's [html/template] package:
+
+```go-html-template
+{{ $title := "Lilo & Stitch" }}
+<script>
+ const a = "Title: " + {{ $title | safeJSStr }};
+</script>
+```
+
+Rendered:
+
+```html
+<script>
+ const a = "Title: " + "Lilo & Stitch";
+</script>
+```
+
+[html/template]: https://pkg.go.dev/html/template
diff --git a/docs/content/en/functions/safeURL.md b/docs/content/en/functions/safe/URL.md
index b21de4953..edc62ff9d 100644
--- a/docs/content/en/functions/safeURL.md
+++ b/docs/content/en/functions/safe/URL.md
@@ -1,13 +1,24 @@
---
-title: safeURL
+title: safe.URL
+linkTitle: safeURL
description: Declares the provided string as a safe URL or URL substring.
-keywords: [strings,urls]
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-signature: ["safeURL INPUT"]
-relatedfuncs: []
+function:
+ aliases: [safeURL]
+ returnType: template.URL
+ signatures: [safe.URL INPUT]
+relatedFunctions:
+ - safe.CSS
+ - safe.HTML
+ - safe.HTMLAttr
+ - safe.JS
+ - safe.JSStr
+ - safe.URL
+aliases: [/functions/safeurl]
---
`safeURL` declares the provided string as a "safe" URL or URL substring (see [RFC 3986]). A URL like `javascript:checkThatFormNotEditedBeforeLeavingPage()` from a trusted source should go in the page, but by default dynamic `javascript:` URLs are filtered out since they are a frequently exploited injection vector.
diff --git a/docs/content/en/functions/sha.md b/docs/content/en/functions/sha.md
deleted file mode 100644
index 1f6cf8da0..000000000
--- a/docs/content/en/functions/sha.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-title: sha
-description: Hashes the given input and returns either an SHA1 or SHA256 checksum.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [sha,checksum]
-signature: ["sha1 INPUT", "sha256 INPUT"]
-relatedfuncs: [md5]
-aliases: [sha1, sha256]
----
-
-`sha1` hashes the given input and returns its SHA1 checksum.
-
-```go-html-template
-{{ sha1 "Hello world, gophers!" }}
-<!-- returns the string "c8b5b0e33d408246e30f53e32b8f7627a7a649d4" -->
-```
-
-`sha256` hashes the given input and returns its SHA256 checksum.
-
-```go-html-template
-{{ sha256 "Hello world, gophers!" }}
-<!-- returns the string "6ec43b78da9669f50e4e422575c54bf87536954ccd58280219c393f2ce352b46" -->
-```
diff --git a/docs/content/en/functions/singularize.md b/docs/content/en/functions/singularize.md
deleted file mode 100644
index 4e56684b9..000000000
--- a/docs/content/en/functions/singularize.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: singularize
-description: Converts a word according to a set of common English singularization rules.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings,singular]
-signature: ["singularize INPUT"]
-relatedfuncs: []
----
-
-`{{ "cats" | singularize }}` → "cat"
-
-See also the `.Data.Singular` [taxonomy variable](/variables/taxonomy/) for singularizing taxonomy names.
diff --git a/docs/content/en/functions/site.md b/docs/content/en/functions/site.md
deleted file mode 100644
index b408f7141..000000000
--- a/docs/content/en/functions/site.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: site
-description: The `site` function provides global access to the same data as the `.Site` page method.
-keywords: []
-categories: [functions]
-menu:
- docs:
- parent: functions
-toc:
-signature: ["site"]
-relatedfuncs: ["hugo"]
----
-
-`site` is a global function which returns the same data as the `.Site` page method. See: [Site Variables](/variables/site).
diff --git a/docs/content/en/functions/site/index.md b/docs/content/en/functions/site/index.md
new file mode 100644
index 000000000..3341bff98
--- /dev/null
+++ b/docs/content/en/functions/site/index.md
@@ -0,0 +1,35 @@
+---
+title: site
+description: Provides global access to the .Site object.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType:
+ signatures: [site]
+relatedFunctions:
+ - hugo
+ - page
+ - site
+aliases: [/functions/site]
+---
+
+At the top level of a template that receives the `Site` object in context, these are equivalent:
+
+```go-html-template
+{{ .Site.Params.foo }}
+{{ site.Params.foo }}
+```
+
+When the `Site` object is not in context, use the global `site` function:
+
+```go-html-template
+{{ site.Params.foo }}
+```
+
+{{% note %}}
+To simplify your templates, use the global `site` function regardless of whether the `Site` object is in context.
+{{% /note %}}
diff --git a/docs/content/en/functions/slice.md b/docs/content/en/functions/slice.md
deleted file mode 100644
index d2ef62861..000000000
--- a/docs/content/en/functions/slice.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: slice
-description: Creates a slice (array) of all passed arguments.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [slice, array, interface]
-signature: ["slice ITEM..."]
-relatedfuncs: []
----
-
-One use case is the concatenation of elements in combination with the [`delimit` function]:
-
-{{< code file="slice.html" >}}
-{{ $sliceOfStrings := slice "foo" "bar" "buzz" }}
-<!-- returns the slice [ "foo", "bar", "buzz"] -->
-{{ delimit ($sliceOfStrings) ", " }}
-<!-- returns the string "foo, bar, buzz" -->
-{{< /code >}}
-
-
-[`delimit` function]: /functions/delimit/
diff --git a/docs/content/en/functions/slicestr.md b/docs/content/en/functions/slicestr.md
deleted file mode 100644
index bbdf95696..000000000
--- a/docs/content/en/functions/slicestr.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: slicestr
-description: Creates a slice of a half-open range, including start and end indices.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature:
- - "slicestr STRING START [END]"
- - "strings.SliceString STRING START [END]"
-relatedfuncs: []
----
-
-For example, 1 and 4 creates a slice including elements 1 through 3.
-The `end` index can be omitted; it defaults to the string's length.
-
-* `{{ slicestr "BatMan" 3 }}` → "Man"
-* `{{ slicestr "BatMan" 0 3 }}` → "Bat"
diff --git a/docs/content/en/functions/split.md b/docs/content/en/functions/split.md
deleted file mode 100644
index d2f3cc8b3..000000000
--- a/docs/content/en/functions/split.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: split
-description: Returns a slice of strings by splitting STRING by DELIM.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature: ["split STRING DELIM"]
-relatedfuncs: []
----
-
-Examples:
-
-```go-html-template
-{{ split "tag1,tag2,tag3" "," }} → ["tag1", "tag2", "tag3"]
-{{ split "abc" "" }} → ["a", "b", "c"]
-```
-
-
-{{% note %}}
-`split` essentially does the opposite of [delimit](/functions/delimit). While `split` creates a slice from a string, `delimit` creates a string from a slice.
-{{% /note %}}
diff --git a/docs/content/en/functions/strings.Contains.md b/docs/content/en/functions/strings.Contains.md
deleted file mode 100644
index 44cb73b81..000000000
--- a/docs/content/en/functions/strings.Contains.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: strings.Contains
-description: Reports whether a string contains a substring.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [string strings substring contains]
-signature: ["strings.Contains STRING SUBSTRING"]
-relatedfuncs: [strings.ContainsAny]
----
-
- {{ strings.Contains "Hugo" "go" }} → true
-
-The check is case sensitive:
-
- {{ strings.Contains "Hugo" "Go" }} → false
diff --git a/docs/content/en/functions/strings.ContainsAny.md b/docs/content/en/functions/strings.ContainsAny.md
deleted file mode 100644
index 36fa8701b..000000000
--- a/docs/content/en/functions/strings.ContainsAny.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: strings.ContainsAny
-description: Reports whether a string contains any character from a given string.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [string strings substring contains any]
-signature: ["strings.ContainsAny STRING CHARACTERS"]
-relatedfuncs: [strings.Contains]
----
-
- {{ strings.ContainsAny "Hugo" "gm" }} → true
-
-The check is case sensitive:
-
- {{ strings.ContainsAny "Hugo" "Gm" }} → false
diff --git a/docs/content/en/functions/strings.Count.md b/docs/content/en/functions/strings.Count.md
deleted file mode 100644
index 7c3945693..000000000
--- a/docs/content/en/functions/strings.Count.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: strings.Count
-description: Returns the number of non-overlapping instances of a substring within a string.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [count, counting, character count]
-signature: ["strings.Count SUBSTR STRING"]
-relatedfuncs: []
----
-
-If `SUBSTR` is an empty string, this function returns 1 plus the number of Unicode code points in `STRING`.
-
-Example|Result
-:--|:--
-`{{ "aaabaab" \| strings.Count "a" }}`|5
-`{{ "aaabaab" \| strings.Count "aa" }}`|2
-`{{ "aaabaab" \| strings.Count "aaa" }}`|1
-`{{ "aaabaab" \| strings.Count "" }}`|8
diff --git a/docs/content/en/functions/strings.FirstUpper.md b/docs/content/en/functions/strings.FirstUpper.md
deleted file mode 100644
index fab82a2dc..000000000
--- a/docs/content/en/functions/strings.FirstUpper.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-title: strings.FirstUpper
-description: Capitalizes the first character of a given string.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings capitalize uppercase first]
-signature: ["strings.FirstUpper STRING"]
----
-
- {{ strings.FirstUpper "foo" }} → "Foo"
diff --git a/docs/content/en/functions/strings.HasPrefix.md b/docs/content/en/functions/strings.HasPrefix.md
deleted file mode 100644
index 70317a4c1..000000000
--- a/docs/content/en/functions/strings.HasPrefix.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: strings.HasPrefix
-description: Tests whether a string begins with prefix.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature: ["hasPrefix STRING PREFIX","strings.HasPrefix STRING PREFIX"]
-relatedfuncs: [hasSuffix]
-aliases: [/functions/hasprefix/]
----
-
-```go-html-template
-{{ hasPrefix "Hugo" "Hu" }} → true
-```
diff --git a/docs/content/en/functions/strings.HasSuffix.md b/docs/content/en/functions/strings.HasSuffix.md
deleted file mode 100644
index 3ead121a3..000000000
--- a/docs/content/en/functions/strings.HasSuffix.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: strings.HasSuffix
-description: Tests whether a string ends with suffix.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature: ["hasSuffix STRING SUFFIX","strings.HasSuffix STRING SUFFIX"]
-relatedfuncs: [hasPrefix]
-aliases: [/functions/hassuffix/]
----
-
-```go-html-template
-{{ hasSuffix "Hugo" "go" }} → true
-```
diff --git a/docs/content/en/functions/strings.Repeat.md b/docs/content/en/functions/strings.Repeat.md
deleted file mode 100644
index 99b2fe5a5..000000000
--- a/docs/content/en/functions/strings.Repeat.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: strings.Repeat
-description: Returns INPUT repeated COUNT times.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature: ["strings.Repeat COUNT INPUT"]
-relatedfuncs: []
----
-
-```go-html-template
-{{ strings.Repeat 3 "yo" }} → "yoyoyo"
-{{ "yo" | strings.Repeat 3 }} → "yoyoyo"
-```
diff --git a/docs/content/en/functions/strings.RuneCount.md b/docs/content/en/functions/strings.RuneCount.md
deleted file mode 100644
index 3a72e339a..000000000
--- a/docs/content/en/functions/strings.RuneCount.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: strings.RuneCount
-description: Determines the number of runes in a string.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [counting, character count, length, rune length, rune count]
-signature: ["strings.RuneCount INPUT"]
-relatedfuncs: ["len", "countrunes"]
----
-
-In contrast with `strings.CountRunes` function, which strips HTML and whitespace before counting runes, `strings.RuneCount` simply counts all the runes in a string. It relies on the Go [`utf8.RuneCountInString`] function.
-
-```go-html-template
-{{ "Hello, 世界" | strings.RuneCount }}
-<!-- outputs a content length of 9 runes. -->
-```
-
-[`utf8.RuneCount`]: https://golang.org/pkg/unicode/utf8/#RuneCount
diff --git a/docs/content/en/functions/strings.TrimLeft.md b/docs/content/en/functions/strings.TrimLeft.md
deleted file mode 100644
index b0271c8a8..000000000
--- a/docs/content/en/functions/strings.TrimLeft.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: strings.TrimLeft
-description: Returns a slice of a given string with all leading characters contained in the cutset removed.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature: ["strings.TrimLeft CUTSET STRING"]
-relatedfuncs: [strings.TrimRight]
----
-
-Given the string `"abba"`, leading `"a"`'s can be removed a follows:
-
- {{ strings.TrimLeft "a" "abba" }} → "bba"
-
-Numbers can be handled as well:
-
- {{ strings.TrimLeft 12 1221341221 }} → "341221"
diff --git a/docs/content/en/functions/strings.TrimPrefix.md b/docs/content/en/functions/strings.TrimPrefix.md
deleted file mode 100644
index c3f702961..000000000
--- a/docs/content/en/functions/strings.TrimPrefix.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: strings.TrimPrefix
-description: Returns a given string s without the provided leading prefix string. If s doesn't start with prefix, s is returned unchanged.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature: ["strings.TrimPrefix PREFIX STRING"]
-relatedfuncs: [strings.TrimSuffix]
----
-
-Given the string `"aabbaa"`, the specified prefix is only removed if `"aabbaa"` starts with it:
-
- {{ strings.TrimPrefix "a" "aabbaa" }} → "abbaa"
- {{ strings.TrimPrefix "aa" "aabbaa" }} → "bbaa"
- {{ strings.TrimPrefix "aaa" "aabbaa" }} → "aabbaa"
diff --git a/docs/content/en/functions/strings.TrimRight.md b/docs/content/en/functions/strings.TrimRight.md
deleted file mode 100644
index e61b884cd..000000000
--- a/docs/content/en/functions/strings.TrimRight.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: strings.TrimRight
-description: Returns a slice of a given string with all trailing characters contained in the cutset removed.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature: ["strings.TrimRight CUTSET STRING"]
-relatedfuncs: [strings.TrimRight]
----
-
-Given the string `"abba"`, trailing `"a"`'s can be removed a follows:
-
- {{ strings.TrimRight "a" "abba" }} → "abb"
-
-Numbers can be handled as well:
-
- {{ strings.TrimRight 12 1221341221 }} → "122134"
diff --git a/docs/content/en/functions/strings.TrimSuffix.md b/docs/content/en/functions/strings.TrimSuffix.md
deleted file mode 100644
index 05bb92400..000000000
--- a/docs/content/en/functions/strings.TrimSuffix.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: strings.TrimSuffix
-description: Returns a given string s without the provided trailing suffix string. If s doesn't end with suffix, s is returned unchanged.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature: ["strings.TrimSuffix SUFFIX STRING"]
-relatedfuncs: [strings.TrimPrefix]
----
-
-Given the string `"aabbaa"`, the specified suffix is only removed if `"aabbaa"` ends with it:
-
- {{ strings.TrimSuffix "a" "aabbaa" }} → "aabba"
- {{ strings.TrimSuffix "aa" "aabbaa" }} → "aabb"
- {{ strings.TrimSuffix "aaa" "aabbaa" }} → "aabbaa"
diff --git a/docs/content/en/functions/strings/Chomp.md b/docs/content/en/functions/strings/Chomp.md
new file mode 100644
index 000000000..22e2b546b
--- /dev/null
+++ b/docs/content/en/functions/strings/Chomp.md
@@ -0,0 +1,31 @@
+---
+title: chomp
+linkTitle: chomp
+description: Removes any trailing newline characters.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [chomp]
+ returnType: any
+ signatures: [strings.Chomp STRING]
+relatedFunctions:
+ - strings.Chomp
+ - strings.Trim
+ - strings.TrimLeft
+ - strings.TrimPrefix
+ - strings.TrimRight
+ - strings.TrimSuffix
+aliases: [/functions/chomp]
+---
+
+If the argument is of type template.HTML, returns template.HTML, else returns a string.
+
+
+Useful in a pipeline to remove newlines added by other processing (e.g., [`markdownify`](/functions/transform/markdownify)).
+
+```go-html-template
+{{ chomp "<p>Blockhead</p>\n" }} → "<p>Blockhead</p>"
+```
diff --git a/docs/content/en/functions/strings/Contains.md b/docs/content/en/functions/strings/Contains.md
new file mode 100644
index 000000000..66a90aeea
--- /dev/null
+++ b/docs/content/en/functions/strings/Contains.md
@@ -0,0 +1,29 @@
+---
+title: strings.Contains
+description: Reports whether the string contains a substring.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: bool
+ signatures: [strings.Contains STRING SUBSTRING]
+relatedFunctions:
+ - strings.Contains
+ - strings.ContainsAny
+ - strings.ContainsNonSpace
+ - strings.HasPrefix
+ - strings.HasSuffix
+aliases: [/functions/strings.contains]
+---
+
+```go-html-template
+{{ strings.Contains "Hugo" "go" }} → true
+```
+The check is case sensitive:
+
+```go-html-template
+{{ strings.Contains "Hugo" "Go" }} → false
+```
diff --git a/docs/content/en/functions/strings/ContainsAny.md b/docs/content/en/functions/strings/ContainsAny.md
new file mode 100644
index 000000000..4f324358a
--- /dev/null
+++ b/docs/content/en/functions/strings/ContainsAny.md
@@ -0,0 +1,30 @@
+---
+title: strings.ContainsAny
+description: Reports whether a string contains any character from a given string.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: bool
+ signatures: [strings.ContainsAny STRING CHARACTERS]
+relatedFunctions:
+ - strings.Contains
+ - strings.ContainsAny
+ - strings.ContainsNonSpace
+ - strings.HasPrefix
+ - strings.HasSuffix
+aliases: [/functions/strings.containsany]
+---
+
+```go-html-template
+{{ strings.ContainsAny "Hugo" "gm" }} → true
+```
+
+The check is case sensitive:
+
+```go-html-template
+{{ strings.ContainsAny "Hugo" "Gm" }} → false
+```
diff --git a/docs/content/en/functions/strings.ContainsNonSpace.md b/docs/content/en/functions/strings/ContainsNonSpace.md
index eafe292f5..d2e6114b3 100644
--- a/docs/content/en/functions/strings.ContainsNonSpace.md
+++ b/docs/content/en/functions/strings/ContainsNonSpace.md
@@ -2,12 +2,21 @@
title: strings.ContainsNonSpace
description: Reports whether a string contains any non-space characters as defined by Unicode’s White Space property.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [whitespace space]
-signature: ["strings.ContainsNonSpace STRING"]
-relatedfuncs: ["strings.Contains","strings.ContainsAny"]
+function:
+ aliases: []
+ returnType: bool
+ signatures: [strings.ContainsNonSpace STRING]
+relatedFunctions:
+ - strings.Contains
+ - strings.ContainsAny
+ - strings.ContainsNonSpace
+ - strings.HasPrefix
+ - strings.HasSuffix
+aliases: [/functions/strings.containsnonspace]
---
```go-html-template
diff --git a/docs/content/en/functions/strings/Count.md b/docs/content/en/functions/strings/Count.md
new file mode 100644
index 000000000..25ea58967
--- /dev/null
+++ b/docs/content/en/functions/strings/Count.md
@@ -0,0 +1,29 @@
+---
+title: strings.Count
+description: Returns the number of non-overlapping instances of a substring within a string.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: int
+ signatures: [strings.Count SUBSTR STRING]
+relatedFunctions:
+ - len
+ - strings.Count
+ - strings.CountRunes
+ - strings.CountWords
+ - strings.RuneCount
+aliases: [/functions/strings.count]
+---
+
+If `SUBSTR` is an empty string, this function returns 1 plus the number of Unicode code points in `STRING`.
+
+```go-html-template
+{{ "aaabaab" | strings.Count "a" }} → 5
+{{ "aaabaab" | strings.Count "aa" }} → 2
+{{ "aaabaab" | strings.Count "aaa" }} → 1
+{{ "aaabaab" | strings.Count "" }} → 8
+```
diff --git a/docs/content/en/functions/strings/CountRunes.md b/docs/content/en/functions/strings/CountRunes.md
new file mode 100644
index 000000000..4a17d04ab
--- /dev/null
+++ b/docs/content/en/functions/strings/CountRunes.md
@@ -0,0 +1,29 @@
+---
+title: strings.CountRunes
+linkTitle: countrunes
+description: Returns the number of runes in a string excluding whitespace.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [countrunes]
+ returnType: int
+ signatures: [strings.CountRunes INPUT]
+relatedFunctions:
+ - len
+ - strings.Count
+ - strings.CountRunes
+ - strings.CountWords
+ - strings.RuneCount
+aliases: [/functions/countrunes]
+---
+
+In contrast with the [`strings.RuneCount`] function, which counts every rune in a string, `strings.CountRunes` excludes whitespace.
+
+```go-html-template
+{{ "Hello, 世界" | strings.CountRunes }} → 8
+```
+
+[`strings.RuneCount`]: /functions/strings/runecount
diff --git a/docs/content/en/functions/countwords.md b/docs/content/en/functions/strings/CountWords.md
index 33dcbcaef..e6915e6cd 100644
--- a/docs/content/en/functions/countwords.md
+++ b/docs/content/en/functions/strings/CountWords.md
@@ -1,13 +1,23 @@
---
-title: countwords
+title: strings.CountWords
+linkTitle: countwords
description: Counts the number of words in a string.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [counting, word count]
-signature: ["countwords INPUT"]
-relatedfuncs: [countrunes]
+function:
+ aliases: [countwords]
+ returnType: int
+ signatures: [strings.CountWords INPUT]
+relatedFunctions:
+ - len
+ - strings.Count
+ - strings.CountRunes
+ - strings.CountWords
+ - strings.RuneCount
+aliases: [/functions/countwords]
---
The template function works similar to the [.WordCount page variable][pagevars].
diff --git a/docs/content/en/functions/findresubmatch.md b/docs/content/en/functions/strings/FindRESubmatch.md
index f51ccdb97..5a0410fdb 100644
--- a/docs/content/en/functions/findresubmatch.md
+++ b/docs/content/en/functions/strings/FindRESubmatch.md
@@ -1,20 +1,27 @@
---
-title: findRESubmatch
+title: strings.FindRESubmatch
+linkTitle: findRESubmatch
description: Returns a slice of all successive matches of the regular expression. Each element is a slice of strings holding the text of the leftmost match of the regular expression and the matches, if any, of its subexpressions.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [regex]
-signature:
- - "findRESubmatch PATTERN INPUT [LIMIT]"
- - "strings.FindRESubmatch PATTERN INPUT [LIMIT]"
-relatedfuncs: [findRE, replaceRE]
+function:
+ aliases: [findRESubmatch]
+ returnType: '[]string'
+ signatures: ['strings.FindRESubmatch PATTERN INPUT [LIMIT]']
+relatedFunctions:
+ - strings.FindRE
+ - strings.FindRESubmatch
+ - strings.Replace
+ - strings.ReplaceRE
+aliases: [/functions/findresubmatch]
---
By default, `findRESubmatch` finds all matches. You can limit the number of matches with an optional LIMIT argument. A return value of nil indicates no match.
-{{% readfile file="/functions/common/regular-expressions.md" %}}
+{{% readfile file="/functions/_common/regular-expressions.md" %}}
## Demonstrative examples
diff --git a/docs/content/en/functions/findRe.md b/docs/content/en/functions/strings/FindRe.md
index 104db0f27..4a7811f3d 100644
--- a/docs/content/en/functions/findRe.md
+++ b/docs/content/en/functions/strings/FindRe.md
@@ -1,19 +1,26 @@
---
-title: findRE
+title: strings.FindRE
+linkTitle: findRE
description: Returns a slice of strings that match the regular expression.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [regex]
-signature:
- - "findRE PATTERN INPUT [LIMIT]"
- - "strings.FindRE PATTERN INPUT [LIMIT]"
-relatedfuncs: [findRESubmatch, replaceRE]
+function:
+ aliases: [findRE]
+ returnType: string
+ signatures: ['strings.FindRE PATTERN INPUT [LIMIT]']
+relatedFunctions:
+ - strings.FindRE
+ - strings.FindRESubmatch
+ - strings.Replace
+ - strings.ReplaceRE
+aliases: [/functions/findre]
---
By default, `findRE` finds all matches. You can limit the number of matches with an optional LIMIT argument.
-{{% readfile file="/functions/common/regular-expressions.md" %}}
+{{% readfile file="/functions/_common/regular-expressions.md" %}}
This example returns a slice of all second level headings (`h2` elements) within the rendered `.Content`:
diff --git a/docs/content/en/functions/strings/FirstUpper.md b/docs/content/en/functions/strings/FirstUpper.md
new file mode 100644
index 000000000..320f01eda
--- /dev/null
+++ b/docs/content/en/functions/strings/FirstUpper.md
@@ -0,0 +1,23 @@
+---
+title: strings.FirstUpper
+description: Capitalizes the first character of a given string.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [strings.FirstUpper STRING]
+relatedFunctions:
+ - strings.FirstUpper
+ - strings.Title
+ - strings.ToLower
+ - strings.ToUpper
+aliases: [/functions/strings.firstupper]
+---
+
+```go-html-template
+{{ strings.FirstUpper "foo" }} → "Foo"
+```
diff --git a/docs/content/en/functions/strings/HasPrefix.md b/docs/content/en/functions/strings/HasPrefix.md
new file mode 100644
index 000000000..88a79a935
--- /dev/null
+++ b/docs/content/en/functions/strings/HasPrefix.md
@@ -0,0 +1,24 @@
+---
+title: strings.HasPrefix
+description: Reports whether a string begins with prefix.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [hasPrefix]
+ returnType: bool
+ signatures: [strings.HasPrefix STRING PREFIX]
+relatedFunctions:
+ - strings.Contains
+ - strings.ContainsAny
+ - strings.ContainsNonSpace
+ - strings.HasPrefix
+ - strings.HasSuffix
+aliases: [/functions/hasprefix,/functions/strings.hasprefix]
+---
+
+```go-html-template
+{{ hasPrefix "Hugo" "Hu" }} → true
+```
diff --git a/docs/content/en/functions/strings/HasSuffix.md b/docs/content/en/functions/strings/HasSuffix.md
new file mode 100644
index 000000000..d11f3e8cf
--- /dev/null
+++ b/docs/content/en/functions/strings/HasSuffix.md
@@ -0,0 +1,24 @@
+---
+title: strings.HasSuffix
+description: Reports whether a string ends with suffix.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [hasSuffix]
+ returnType: bool
+ signatures: [strings.HasSuffix STRING SUFFIX]
+relatedFunctions:
+ - strings.Contains
+ - strings.ContainsAny
+ - strings.ContainsNonSpace
+ - strings.HasPrefix
+ - strings.HasSuffix
+aliases: [/functions/hassuffix,/functions/strings/hassuffix]
+---
+
+```go-html-template
+{{ hasSuffix "Hugo" "go" }} → true
+```
diff --git a/docs/content/en/functions/strings/Repeat.md b/docs/content/en/functions/strings/Repeat.md
new file mode 100644
index 000000000..718f24984
--- /dev/null
+++ b/docs/content/en/functions/strings/Repeat.md
@@ -0,0 +1,20 @@
+---
+title: strings.Repeat
+description: Returns a new string consisting of zero or more copies of another string.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [strings.Repeat COUNT INPUT]
+relatedFunctions: []
+aliases: [/functions/strings.repeat]
+---
+
+```go-html-template
+{{ strings.Repeat 3 "yo" }} → "yoyoyo"
+{{ "yo" | strings.Repeat 3 }} → "yoyoyo"
+```
diff --git a/docs/content/en/functions/replace.md b/docs/content/en/functions/strings/Replace.md
index 4c150bfef..8d5e54859 100644
--- a/docs/content/en/functions/replace.md
+++ b/docs/content/en/functions/strings/Replace.md
@@ -1,22 +1,29 @@
---
-title: replace
+title: strings.Replace
+linkTitle: replace
description: Replaces all occurrences of the search string with the replacement string.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [replace]
-signature:
- - "replace INPUT OLD NEW [LIMIT]"
- - "strings.Replace INPUT OLD NEW [LIMIT]"
-relatedfuncs: [replaceRE]
+function:
+ aliases: [replace]
+ returnType: string
+ signatures: ['strings.Replace INPUT OLD NEW [LIMIT]']
+relatedFunctions:
+ - strings.FindRE
+ - strings.FindRESubmatch
+ - strings.Replace
+ - strings.ReplaceRE
+aliases: [/functions/replace]
---
Replace returns a copy of `INPUT` with all occurrences of `OLD` replaced with `NEW`.
The number of replacements can be limited with an optional `LIMIT` argument.
```
-`{{ replace "Batman and Robin" "Robin" "Catwoman" }}`
+{{ replace "Batman and Robin" "Robin" "Catwoman" }}
→ "Batman and Catwoman"
{{ replace "aabbaabb" "a" "z" 2 }} → "zzbbaabb"
diff --git a/docs/content/en/functions/replacere.md b/docs/content/en/functions/strings/ReplaceRE.md
index 4dba19bfe..247595877 100644
--- a/docs/content/en/functions/replacere.md
+++ b/docs/content/en/functions/strings/ReplaceRE.md
@@ -1,19 +1,26 @@
---
-title: replaceRE
+title: strings.ReplaceRE
+linkTitle: replaceRE
description: Returns a string, replacing all occurrences of a regular expression with a replacement pattern.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [regex]
-signature:
- - "replaceRE PATTERN REPLACEMENT INPUT [LIMIT]"
- - "strings.ReplaceRE PATTERN REPLACEMENT INPUT [LIMIT]"
-relatedfuncs: [findRE, FindRESubmatch, replace]
+function:
+ aliases: [replaceRE]
+ returnType: string
+ signatures: ['strings.ReplaceRE PATTERN REPLACEMENT INPUT [LIMIT]']
+relatedFunctions:
+ - strings.FindRE
+ - strings.FindRESubmatch
+ - strings.Replace
+ - strings.ReplaceRE
+aliases: [/functions/replacere]
---
By default, `replaceRE` replaces all matches. You can limit the number of matches with an optional LIMIT argument.
-{{% readfile file="/functions/common/regular-expressions.md" %}}
+{{% readfile file="/functions/_common/regular-expressions.md" %}}
This example replaces two or more consecutive hyphens with a single hyphen:
diff --git a/docs/content/en/functions/strings/RuneCount.md b/docs/content/en/functions/strings/RuneCount.md
new file mode 100644
index 000000000..a4d5a8dbe
--- /dev/null
+++ b/docs/content/en/functions/strings/RuneCount.md
@@ -0,0 +1,28 @@
+---
+title: strings.RuneCount
+description: Returns the number of runes in a string.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: int
+ signatures: [strings.RuneCount INPUT]
+relatedFunctions:
+ - len
+ - strings.Count
+ - strings.CountRunes
+ - strings.CountWords
+ - strings.RuneCount
+aliases: [/functions/strings.runecount]
+---
+
+In contrast with the [`strings.CountRunes`] function, which excludes whitespace, `strings.RuneCount` counts every rune in a string.
+
+```go-html-template
+{{ "Hello, 世界" | strings.RuneCount }} → 9
+```
+
+[`strings.CountRunes`]: /functions/strings/countrunes
diff --git a/docs/content/en/functions/strings/SliceString.md b/docs/content/en/functions/strings/SliceString.md
new file mode 100644
index 000000000..8d26d76e4
--- /dev/null
+++ b/docs/content/en/functions/strings/SliceString.md
@@ -0,0 +1,24 @@
+---
+title: strings.SliceString
+linkTitle: slicestr
+description: Creates a slice of a half-open range, including start and end indices.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [slicestr]
+ returnType: string
+ signatures: ['strings.SliceString STRING START [END]']
+relatedFunctions: []
+aliases: [/functions/slicestr]
+---
+
+For example, 1 and 4 creates a slice including elements 1 through 3.
+The `end` index can be omitted; it defaults to the string's length.
+
+```go-html-template
+{{ slicestr "BatMan" 3 }}` → "Man"
+{{ slicestr "BatMan" 0 3 }}` → "Bat"
+```
diff --git a/docs/content/en/functions/strings/Split.md b/docs/content/en/functions/strings/Split.md
new file mode 100644
index 000000000..7d15704b2
--- /dev/null
+++ b/docs/content/en/functions/strings/Split.md
@@ -0,0 +1,30 @@
+---
+title: strings.Split
+linkTitle: split
+description: Returns a slice of strings by splitting STRING by DELIM.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [split]
+ returnType: string
+ signatures: [strings.Split STRING DELIM]
+relatedFunctions:
+ - collections.Delimit
+ - strings.Split
+aliases: [/functions/split]
+---
+
+Examples:
+
+```go-html-template
+{{ split "tag1,tag2,tag3" "," }} → ["tag1", "tag2", "tag3"]
+{{ split "abc" "" }} → ["a", "b", "c"]
+```
+
+
+{{% note %}}
+`split` essentially does the opposite of [delimit](/functions/collections/delimit). While `split` creates a slice from a string, `delimit` creates a string from a slice.
+{{% /note %}}
diff --git a/docs/content/en/functions/substr.md b/docs/content/en/functions/strings/Substr.md
index 90ee47b55..9dafa0737 100644
--- a/docs/content/en/functions/substr.md
+++ b/docs/content/en/functions/strings/Substr.md
@@ -1,15 +1,18 @@
---
-title: substr
+title: strings.Substr
+linkTitle: substr
description: Extracts parts of a string from a specified character's position and returns the specified number of characters.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings]
-signature:
- - "substr STRING START [LENGTH]"
- - "strings.Substr STRING START [LENGTH]"
-relatedfuncs: []
+function:
+ aliases: [substr]
+ returnType: string
+ signatures: ['strings.Substr STRING START [LENGTH]']
+relatedFunctions: []
+aliases: [/functions/substr]
---
It normally takes two argument: `start` and `length`. It can also take one argument: `start`, i.e. `length` is omitted, in which case the substring starting from start until the end of the string will be returned.
diff --git a/docs/content/en/functions/title.md b/docs/content/en/functions/strings/Title.md
index d8e0f73a4..1e20d1f59 100644
--- a/docs/content/en/functions/title.md
+++ b/docs/content/en/functions/strings/Title.md
@@ -1,15 +1,22 @@
---
-title: title
+title: strings.Title
+linkTitle: title
description: Converts the provided string to title case.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings]
-signature:
- - "title STRING"
- - "strings.Title STRING"
-relatedfuncs: []
+function:
+ aliases: [title]
+ returnType: string
+ signatures: [strings.Title STRING]
+relatedFunctions:
+ - strings.FirstUpper
+ - strings.Title
+ - strings.ToLower
+ - strings.ToUpper
+aliases: [/functions/title]
---
```go-html-template
diff --git a/docs/content/en/functions/lower.md b/docs/content/en/functions/strings/ToLower.md
index 9accf999e..cb76462ea 100644
--- a/docs/content/en/functions/lower.md
+++ b/docs/content/en/functions/strings/ToLower.md
@@ -1,15 +1,22 @@
---
-title: lower
+title: strings.ToLower
+linkTitle: lower
description: Converts all characters in the provided string to lowercase.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings,casing]
-signature:
- - "lower INPUT"
- - "strings.ToLower INPUT"
-relatedfuncs: []
+function:
+ aliases: [lower]
+ returnType: string
+ signatures: [strings.ToLower INPUT]
+relatedFunctions:
+ - strings.FirstUpper
+ - strings.Title
+ - strings.ToLower
+ - strings.ToUpper
+aliases: [/functions/lower]
---
diff --git a/docs/content/en/functions/upper.md b/docs/content/en/functions/strings/ToUpper.md
index e11065f79..d46491637 100644
--- a/docs/content/en/functions/upper.md
+++ b/docs/content/en/functions/strings/ToUpper.md
@@ -1,16 +1,22 @@
---
-title: upper
+title: strings.ToUpper
+linkTitle: upper
description: Converts all characters in a string to uppercase
-keywords: []
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-toc:
-signature:
- - "upper INPUT"
- - "strings.ToUpper INPUT"
-relatedfuncs: []
+function:
+ aliases: [upper]
+ returnType: string
+ signatures: [strings.ToUpper INPUT]
+relatedFunctions:
+ - strings.FirstUpper
+ - strings.Title
+ - strings.ToLower
+ - strings.ToUpper
+aliases: [/functions/upper]
---
Note that `upper` can be applied in your templates in more than one way:
diff --git a/docs/content/en/functions/trim.md b/docs/content/en/functions/strings/Trim.md
index 3d664abea..9eae9ee45 100644
--- a/docs/content/en/functions/trim.md
+++ b/docs/content/en/functions/strings/Trim.md
@@ -1,15 +1,24 @@
---
-title: trim
+title: strings.Trim
+linkTitle: trim
description: Returns a slice of a passed string with all leading and trailing characters from cutset removed.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings]
-signature:
- - "trim INPUT CUTSET"
- - "strings.Trim INPUT CUTSET"
-relatedfuncs: []
+function:
+ aliases: [title]
+ returnType: string
+ signatures: [strings.Trim INPUT CUTSET]
+relatedFunctions:
+ - strings.Chomp
+ - strings.Trim
+ - strings.TrimLeft
+ - strings.TrimPrefix
+ - strings.TrimRight
+ - strings.TrimSuffix
+aliases: [/functions/trim]
---
```go-html-template
diff --git a/docs/content/en/functions/strings/TrimLeft.md b/docs/content/en/functions/strings/TrimLeft.md
new file mode 100644
index 000000000..3924e492f
--- /dev/null
+++ b/docs/content/en/functions/strings/TrimLeft.md
@@ -0,0 +1,33 @@
+---
+title: strings.TrimLeft
+description: Returns a slice of a given string with all leading characters contained in the cutset removed.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [strings.TrimLeft CUTSET STRING]
+relatedFunctions:
+ - strings.Chomp
+ - strings.Trim
+ - strings.TrimLeft
+ - strings.TrimPrefix
+ - strings.TrimRight
+ - strings.TrimSuffix
+aliases: [/functions/strings.trimleft]
+---
+
+Given the string `"abba"`, leading `"a"`'s can be removed a follows:
+
+```go-html-template
+{{ strings.TrimLeft "a" "abba" }} → "bba"
+```
+
+Numbers can be handled as well:
+
+```go-html-template
+{{ strings.TrimLeft 12 1221341221 }} → "341221"
+```
diff --git a/docs/content/en/functions/strings/TrimPrefix.md b/docs/content/en/functions/strings/TrimPrefix.md
new file mode 100644
index 000000000..37657732d
--- /dev/null
+++ b/docs/content/en/functions/strings/TrimPrefix.md
@@ -0,0 +1,29 @@
+---
+title: strings.TrimPrefix
+description: Returns a given string s without the provided leading prefix string. If s doesn't start with prefix, s is returned unchanged.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [strings.TrimPrefix PREFIX STRING]
+relatedFunctions:
+ - strings.Chomp
+ - strings.Trim
+ - strings.TrimLeft
+ - strings.TrimPrefix
+ - strings.TrimRight
+ - strings.TrimSuffix
+aliases: [/functions/strings.trimprefix]
+---
+
+Given the string `"aabbaa"`, the specified prefix is only removed if `"aabbaa"` starts with it:
+
+```go-html-template
+{{ strings.TrimPrefix "a" "aabbaa" }} → "abbaa"
+{{ strings.TrimPrefix "aa" "aabbaa" }} → "bbaa"
+{{ strings.TrimPrefix "aaa" "aabbaa" }} → "aabbaa"
+```
diff --git a/docs/content/en/functions/strings/TrimRight.md b/docs/content/en/functions/strings/TrimRight.md
new file mode 100644
index 000000000..fa538b605
--- /dev/null
+++ b/docs/content/en/functions/strings/TrimRight.md
@@ -0,0 +1,33 @@
+---
+title: strings.TrimRight
+description: Returns a slice of a given string with all trailing characters contained in the cutset removed.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [strings.TrimRight CUTSET STRING]
+relatedFunctions:
+ - strings.Chomp
+ - strings.Trim
+ - strings.TrimLeft
+ - strings.TrimPrefix
+ - strings.TrimRight
+ - strings.TrimSuffix
+aliases: [/functions/strings.trimright]
+---
+
+Given the string `"abba"`, trailing `"a"`'s can be removed a follows:
+
+```go-html-template
+{{ strings.TrimRight "a" "abba" }} → "abb"
+```
+
+Numbers can be handled as well:
+
+```go-html-template
+{{ strings.TrimRight 12 1221341221 }} → "122134"
+```
diff --git a/docs/content/en/functions/strings/TrimSuffix.md b/docs/content/en/functions/strings/TrimSuffix.md
new file mode 100644
index 000000000..6dc9becfc
--- /dev/null
+++ b/docs/content/en/functions/strings/TrimSuffix.md
@@ -0,0 +1,29 @@
+---
+title: strings.TrimSuffix
+description: Returns a given string s without the provided trailing suffix string. If s doesn't end with suffix, s is returned unchanged.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: string
+ signatures: [strings.TrimSuffix SUFFIX STRING]
+relatedFunctions:
+ - strings.Chomp
+ - strings.Trim
+ - strings.TrimLeft
+ - strings.TrimPrefix
+ - strings.TrimRight
+ - strings.TrimSuffix
+aliases: [/functions/strings.trimsuffix]
+---
+
+Given the string `"aabbaa"`, the specified suffix is only removed if `"aabbaa"` ends with it:
+
+```go-html-template
+{{ strings.TrimSuffix "a" "aabbaa" }} → "aabba"
+{{ strings.TrimSuffix "aa" "aabbaa" }} → "aabb"
+{{ strings.TrimSuffix "aaa" "aabbaa" }} → "aabbaa"
+```
diff --git a/docs/content/en/functions/strings/Truncate.md b/docs/content/en/functions/strings/Truncate.md
new file mode 100644
index 000000000..0bd78d840
--- /dev/null
+++ b/docs/content/en/functions/strings/Truncate.md
@@ -0,0 +1,26 @@
+---
+title: strings.Truncate
+linkTitle: truncate
+description: Truncates a text to a max length without cutting words or leaving unclosed HTML tags.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [truncate]
+ returnType: template.HTML
+ signatures: ['strings.Truncate SIZE [ELLIPSIS] INPUT']
+relatedFunctions: []
+aliases: [/functions/truncate]
+---
+
+Since Go templates are HTML-aware, `truncate` will intelligently handle normal strings vs HTML strings:
+
+```go-html-template
+{{ "<em>Keep my HTML</em>" | safeHTML | truncate 10 }} → <em>Keep my …</em>
+```
+
+{{% note %}}
+If you have a raw string that contains HTML tags you want to remain treated as HTML, you will need to convert the string to HTML using the [`safeHTML` template function](/functions/safe/html) before sending the value to truncate. Otherwise, the HTML tags will be escaped when passed through the `truncate` function.
+{{% /note %}}
diff --git a/docs/content/en/functions/symdiff.md b/docs/content/en/functions/symdiff.md
deleted file mode 100644
index ffc309418..000000000
--- a/docs/content/en/functions/symdiff.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: symdiff
-description: "`collections.SymDiff` (alias `symdiff`) returns the symmetric difference of two collections."
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [collections,intersect,union,complement]
-signature: ["COLLECTION | symdiff COLLECTION" ]
----
-
-Example:
-
-```go-html-template
-{{ slice 1 2 3 | symdiff (slice 3 4) }}
-```
-
-The above will print `[1 2 4]`.
-
-Also see https://en.wikipedia.org/wiki/Symmetric_difference
diff --git a/docs/content/en/functions/templates.Exists.md b/docs/content/en/functions/templates/Exists.md
index b9f340c21..d4a8fab76 100644
--- a/docs/content/en/functions/templates.Exists.md
+++ b/docs/content/en/functions/templates/Exists.md
@@ -1,15 +1,18 @@
---
title: templates.Exists
-description: "Checks whether a template file exists under the given path relative to the `layouts` directory."
+description: Reports whether a template file exists under the given path relative to the `layouts` directory.
categories: [functions]
-tags: []
+keywords: []
menu:
docs:
parent: functions
-ns: ""
-keywords: ["templates", "template", "layouts"]
-signature: ["templates.Exists PATH"]
-relatedfuncs: []
+function:
+ aliases: []
+ returnType: bool
+ signatures: [templates.Exists PATH]
+namespace: templates
+relatedFunctions: []
+aliases: [/functions/templates.exists]
---
A template file is any file living below the `layouts` directories of either the project or any of its theme components including partials and shortcodes.
diff --git a/docs/content/en/functions/time.md b/docs/content/en/functions/time/AsTime.md
index 99182f317..1244eeb5c 100644
--- a/docs/content/en/functions/time.md
+++ b/docs/content/en/functions/time/AsTime.md
@@ -1,13 +1,23 @@
---
-title: time
+title: time.AsTime
+linkTitle: time
description: Converts a timestamp string into a `time.Time` structure.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [dates,time,location]
-signature: ["time INPUT [TIMEZONE]"]
-relatedfuncs: []
+function:
+ aliases: [time]
+ returnType: time.Time
+ signatures: ['time.AsTime INPUT [TIMEZONE]']
+relatedFunctions:
+ - time.AsTime
+ - time.Duration
+ - time.Format
+ - time.Now
+ - time.ParseDuration
+aliases: [/functions/time]
---
@@ -49,6 +59,6 @@ The following example may be useful when setting up [multilingual sites][multili
{{< /code >}}
-[int]: /functions/int/
+[int]: /functions/cast/toint
[multilingual]: /content-management/multilingual/
-[`printf`]: /functions/printf/
+[`printf`]: /functions/fmt/printf
diff --git a/docs/content/en/functions/duration.md b/docs/content/en/functions/time/Duration.md
index 4dc365ae5..921f25a96 100644
--- a/docs/content/en/functions/duration.md
+++ b/docs/content/en/functions/time/Duration.md
@@ -1,23 +1,38 @@
---
-title: duration
+title: time.Duration
+linkTitle: duration
description: Returns a `time.Duration` structure, using the given time unit and duration number.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [time duration]
-signature: ["duration TIME_UNIT DURATION_NUMBER"]
+function:
+ aliases: [duration]
+ returnType: time.Duration
+ signatures: [time.Duration TIME_UNIT DURATION_NUMBER]
+relatedFunctions:
+ - time.AsTime
+ - time.Duration
+ - time.Format
+ - time.Now
+ - time.ParseDuration
+aliases: [/functions/duration]
---
`time.Duration` converts a given number into a [`time.Duration`](https://pkg.go.dev/time#Duration) structure so you can access its fields. E.g. you can perform [time operations](https://pkg.go.dev/time#Duration) on the returned `time.Duration` value:
- {{ printf "There are %.0f seconds in one day." (duration "hour" 24).Seconds }}
- <!-- Output: There are 86400 seconds in one day. -->
+```go-html-template
+{{ printf "There are %.0f seconds in one day." (duration "hour" 24).Seconds }}
+<!-- Output: There are 86400 seconds in one day. -->
+```
Make your code simpler to understand by using a [chained pipeline](https://pkg.go.dev/text/template#hdr-Pipelines):
- {{ mul 7.75 60 | duration "minute" }} → 7h45m0s
- {{ mul 120 60 | mul 1000 | duration "millisecond" }} → 2h0m0s
+```go-html-template
+{{ mul 7.75 60 | duration "minute" }} → 7h45m0s
+{{ mul 120 60 | mul 1000 | duration "millisecond" }} → 2h0m0s
+```
You have to specify a time unit for the number given to the function. Valid time units are:
diff --git a/docs/content/en/functions/time/Format.md b/docs/content/en/functions/time/Format.md
new file mode 100644
index 000000000..3a0b1eb2a
--- /dev/null
+++ b/docs/content/en/functions/time/Format.md
@@ -0,0 +1,76 @@
+---
+title: time.Format
+description: Returns a formatted and localized time.Time value.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: [dateFormat]
+ returnType: string
+ signatures: [time.Format LAYOUT INPUT]
+relatedFunctions:
+ - time.AsTime
+ - time.Duration
+ - time.Format
+ - time.Now
+ - time.ParseDuration
+aliases: [/functions/dateformat]
+toc: true
+---
+
+```go-template
+{{ $t := "2023-01-27T23:44:58-08:00" }}
+{{ $format := "2 Jan 2006" }}
+
+{{ $t | time.Format $format }} → 27 Jan 2023
+
+{{ $t = time.AsTime $t }}
+{{ $t | time.Format $format }} → 27 Jan 2023
+```
+
+## Layout string
+
+{{% readfile file="/functions/_common/time-layout-string.md" %}}
+
+## Localization
+
+Use the `time.Format` function to localize `time.Time` values for the current language and region.
+
+{{% note %}}
+{{% readfile file="/functions/_common/locales.md" %}}
+{{% /note %}}
+
+
+Use the layout string as described above, or one of the tokens below. For example:
+
+```go-template
+{{ .Date | time.Format ":date_medium" }} → Jan 27, 2023
+```
+
+Localized to en-US:
+
+Token|Result
+:--|:--
+`:date_full`|`Friday, January 27, 2023`
+`:date_long`|`January 27, 2023`
+`:date_medium`|`Jan 27, 2023`
+`:date_short`|`1/27/23`
+`:time_full`|`11:44:58 pm Pacific Standard Time`
+`:time_long`|`11:44:58 pm PST`
+`:time_medium`|`11:44:58 pm`
+`:time_short`|`11:44 pm`
+
+Localized to de-DE:
+
+Token|Result
+:--|:--
+`:date_full`|`Freitag, 27. Januar 2023`
+`:date_long`|`27. Januar 2023`
+`:date_medium`|`27.01.2023`
+`:date_short`|`27.01.23`
+`:time_full`|`23:44:58 Nordamerikanische Westküsten-Normalzeit`
+`:time_long`|`23:44:58 PST`
+`:time_medium`|`23:44:58`
+`:time_short`|`23:44`
diff --git a/docs/content/en/functions/now.md b/docs/content/en/functions/time/Now.md
index 68d628f11..74b01ecc5 100644
--- a/docs/content/en/functions/now.md
+++ b/docs/content/en/functions/time/Now.md
@@ -1,13 +1,23 @@
---
-title: now
+title: time.Now
+linkTitle: now
description: Returns the current local time
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [dates,time]
-signature: ["now"]
-relatedfuncs: [Unix,dateFormat]
+function:
+ aliases: [now]
+ returnType: time.Time
+ signatures: [time.Now]
+relatedFunctions:
+ - time.AsTime
+ - time.Duration
+ - time.Format
+ - time.Now
+ - time.ParseDuration
+aliases: [/functions/now]
---
See [`time.Time`](https://godoc.org/time#Time).
diff --git a/docs/content/en/functions/time.ParseDuration.md b/docs/content/en/functions/time/ParseDuration.md
index 0332c1706..e3abc7c15 100644
--- a/docs/content/en/functions/time.ParseDuration.md
+++ b/docs/content/en/functions/time/ParseDuration.md
@@ -2,11 +2,21 @@
title: time.ParseDuration
description: Parses a given duration string into a `time.Duration` structure.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [time parse duration]
-signature: ["time.ParseDuration DURATION"]
+function:
+ aliases: []
+ returnType: time.Duration
+ signatures: [time.ParseDuration DURATION]
+relatedFunctions:
+ - time.AsTime
+ - time.Duration
+ - time.Format
+ - time.Now
+ - time.ParseDuration
+aliases: [/functions/time.parseduration]
---
`time.ParseDuration` parses a duration string into a [`time.Duration`](https://pkg.go.dev/time#Duration) structure so you can access its fields.
@@ -14,5 +24,7 @@ A duration string is a possibly signed sequence of decimal numbers, each with op
You can perform [time operations](https://pkg.go.dev/time#Duration) on the returned `time.Duration` value:
- {{ printf "There are %.0f seconds in one day." (time.ParseDuration "24h").Seconds }}
- <!-- Output: There are 86400 seconds in one day. -->
+```go-html-template
+{{ printf "There are %.0f seconds in one day." (time.ParseDuration "24h").Seconds }}
+<!-- Output: There are 86400 seconds in one day. -->
+```
diff --git a/docs/content/en/functions/transform/CanHighlight.md b/docs/content/en/functions/transform/CanHighlight.md
new file mode 100644
index 000000000..eabef933b
--- /dev/null
+++ b/docs/content/en/functions/transform/CanHighlight.md
@@ -0,0 +1,22 @@
+---
+title: transform.CanHighlight
+description: Reports whether the given code language is supported by the Chroma highlighter.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: bool
+ signatures: [transform.CanHighlight LANGUAGE]
+relatedFunctions:
+ - transform.CanHighlight
+ - transform.Highlight
+ - transform.HighlightCodeBlock
+---
+
+```go-html-template
+{{ transform.CanHighlight "go" }} → true
+{{ transform.CanHighlight "klingon" }} → false
+```
diff --git a/docs/content/en/functions/emojify.md b/docs/content/en/functions/transform/Emojify.md
index beded710a..324c41851 100644
--- a/docs/content/en/functions/emojify.md
+++ b/docs/content/en/functions/transform/Emojify.md
@@ -1,13 +1,19 @@
---
-title: emojify
+title: transform.Emojify
+linkTitle: emojify
description: Runs a string through the Emoji emoticons processor.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings,emojis]
-signature: ["emojify INPUT"]
-relatedfuncs: []
+function:
+ aliases: [emojify]
+ returnType: template.HTML
+ signatures: [transform.Emojify INPUT]
+namespace: transform
+relatedFunctions: []
+aliases: [/functions/emojify]
---
`emojify` runs a passed string through the Emoji emoticons processor.
diff --git a/docs/content/en/functions/htmlEscape.md b/docs/content/en/functions/transform/HTMLEscape.md
index 0ee8fa4d2..62249367b 100644
--- a/docs/content/en/functions/htmlEscape.md
+++ b/docs/content/en/functions/transform/HTMLEscape.md
@@ -1,13 +1,20 @@
---
-title: htmlEscape
+title: transform.HTMLEscape
+linkTitle: htmlEscape
description: Returns the given string with the reserved HTML codes escaped.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings, html]
-signature: ["htmlEscape INPUT"]
-relatedfuncs: [htmlUnescape]
+function:
+ aliases: [htmlEscape]
+ returnType: string
+ signatures: [transform.HTMLEscape INPUT]
+relatedFunctions:
+ - transform.HTMLEscape
+ - transform.HTMLUnescape
+aliases: [/functions/htmlescape]
---
In the result `&` becomes `&amp;` and so on. It escapes only: `<`, `>`, `&`, `'` and `"`.
diff --git a/docs/content/en/functions/htmlUnescape.md b/docs/content/en/functions/transform/HTMLUnescape.md
index e4646b680..c0774232f 100644
--- a/docs/content/en/functions/htmlUnescape.md
+++ b/docs/content/en/functions/transform/HTMLUnescape.md
@@ -1,17 +1,22 @@
---
-title: htmlUnescape
+title: transform.HTMLUnescape
+linkTitle: htmlUnescape
description: Returns the given string with HTML escape codes un-escaped.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: []
-signature: ["htmlUnescape INPUT"]
-relatedfuncs: [htmlEscape]
+function:
+ aliases: [htmlUnescape]
+ returnType: string
+ signatures: [transform.HTMLUnescape INPUT]
+relatedFunctions:
+ - transform.HTMLEscape
+ - transform.HTMLUnescape
+aliases: [/functions/htmlunescape]
---
-`htmlUnescape` returns the given string with HTML escape codes un-escaped.
-
Remember to pass the output of this to `safeHTML` if fully un-escaped characters are desired. Otherwise, the output will be escaped again as normal.
```go-html-template
diff --git a/docs/content/en/functions/highlight.md b/docs/content/en/functions/transform/Highlight.md
index f91c1f562..93043b4a1 100644
--- a/docs/content/en/functions/highlight.md
+++ b/docs/content/en/functions/transform/Highlight.md
@@ -1,15 +1,25 @@
---
-title: highlight
+title: transform.Highlight
+linkTitle: highlight
description: Renders code with a syntax highlighter.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [highlighting,code blocks,syntax]
-signature: ["transform.Highlight INPUT LANG [OPTIONS]","highlight INPUT LANG [OPTIONS]"]
-relatedfuncs: []
+function:
+ aliases: [highlight]
+ returnType: template.HTML
+ signatures: ['transform.Highlight INPUT LANG [OPTIONS]']
+namespace: transform
+relatedFunctions:
+ - transform.CanHighlight
+ - transform.Highlight
+ - transform.HighlightCodeBlock
+aliases: [/functions/highlight]
toc: true
---
+
The `highlight` function uses the [Chroma] syntax highlighter, supporting over 200 languages with more than 40 available styles.
## Arguments
diff --git a/docs/content/en/functions/transform/HighlightCodeBlock.md b/docs/content/en/functions/transform/HighlightCodeBlock.md
new file mode 100644
index 000000000..fa7045641
--- /dev/null
+++ b/docs/content/en/functions/transform/HighlightCodeBlock.md
@@ -0,0 +1,43 @@
+---
+title: transform.HighlightCodeBlock
+description: Highlights code received in context within a code block render hook.
+categories: [functions]
+keywords: []
+menu:
+ docs:
+ parent: functions
+function:
+ aliases: []
+ returnType: highlight.HighlightResult
+ signatures: ['transform.HighlightCodeBlock CONTEXT [OPTIONS]']
+relatedFunctions:
+ - transform.CanHighlight
+ - transform.Highlight
+ - transform.HighlightCodeBlock
+---
+
+This function is only useful within a code block render hook.
+
+Given the context passed into a code block render hook, `transform.HighlightCodeBlock` returns a `HighlightResult` object with two methods.
+
+.Wrapped
+: (`template.HTML`) Returns highlighted code wrapped in `<div>`, `<pre>`, and `<code>` elements. This is identical to the value returned by the transform.Highlight function.
+
+.Inner
+: (`template.HTML`) Returns highlighted code without any wrapping elements, allowing you to create your own wrapper.
+
+
+```go-html-template
+{{ $result := transform.HighlightCodeBlock . }}
+{{ $result.Wrapped }}
+```
+
+To override the default [highlighting options]:
+
+```go-html-template
+{{ $options := merge .Options (dict "linenos" true) }}
+{{ $result := transform.HighlightCodeBlock . $options }}
+{{ $result.Wrapped }}
+```
+
+[highlighting options]: /functions/transform/highlight/#options
diff --git a/docs/content/en/functions/markdownify.md b/docs/content/en/functions/transform/Markdownify.md
index 9f1f3329e..b0be902ce 100644
--- a/docs/content/en/functions/markdownify.md
+++ b/docs/content/en/functions/transform/Markdownify.md
@@ -1,13 +1,18 @@
---
-title: markdownify
+title: transform.Markdownify
+linkTitle: markdownify
description: Renders markdown to HTML.
-keywords: [markdown,content]
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-signature: ["markdownify INPUT"]
-relatedfuncs: []
+function:
+ aliases: [markdownify]
+ returnType: template.HTML
+ signatures: [transform.Markdownify INPUT]
+relatedFunctions: []
+aliases: [/functions/markdownify]
---
```go-html-template
diff --git a/docs/content/en/functions/plainify.md b/docs/content/en/functions/transform/Plainify.md
index 8767a460e..163233d4a 100644
--- a/docs/content/en/functions/plainify.md
+++ b/docs/content/en/functions/transform/Plainify.md
@@ -1,13 +1,18 @@
---
-title: plainify
+title: transform.Plainify
+linkTitle: plainify
description: Returns a string with all HTML tags removed.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [strings]
-signature: ["plainify INPUT"]
-relatedfuncs: [jsonify]
+function:
+ aliases: [plainify]
+ returnType: string
+ signatures: [transform.Plainify INPUT]
+relatedFunctions: []
+aliases: [/functions/plainify]
---
```go-html-template
diff --git a/docs/content/en/functions/transform.Remarshal.md b/docs/content/en/functions/transform/Remarshal.md
index e1605197f..8f6e58247 100644
--- a/docs/content/en/functions/transform.Remarshal.md
+++ b/docs/content/en/functions/transform/Remarshal.md
@@ -2,11 +2,19 @@
title: transform.Remarshal
description: Marshals a string of serialized data, or a map, into a string of serialized data in the specified format.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: []
-signature: [ transform.Remarshal FORMAT INPUT ]
+function:
+ aliases: []
+ returnType: string
+ signatures: [transform.Remarshal FORMAT INPUT]
+relatedFunctions:
+ - encoding.Jsonify
+ - transform.Remarshal
+ - transform.Unmarshal
+aliases: [/functions/transform.remarshal]
---
The FORMAT must be one of `json`, `toml`, `yaml`, or `xml`. If the INPUT is a string of serialized data, it must be valid JSON, TOML, YAML, or XML.
diff --git a/docs/content/en/functions/transform.Unmarshal.md b/docs/content/en/functions/transform/Unmarshal.md
index 7d0920da8..ab32d13de 100644
--- a/docs/content/en/functions/transform.Unmarshal.md
+++ b/docs/content/en/functions/transform/Unmarshal.md
@@ -1,12 +1,22 @@
---
title: transform.Unmarshal
-description: "`transform.Unmarshal` (alias `unmarshal`) parses the input and converts it into a map or an array. Supported formats are JSON, TOML, YAML, XML and CSV."
+description: Parses the input and converts it into a map or an array. Supported formats are JSON, TOML, YAML, XML and CSV.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: []
-signature: ["RESOURCE or STRING | transform.Unmarshal [OPTIONS]"]
+function:
+ aliases: [unmarshal]
+ returnType: any
+ signatures:
+ - RESOURCE or STRING | transform.Unmarshal [OPTIONS]
+ - RESOURCE or STRING | unmarshal [OPTIONS]
+relatedFunctions:
+ - encoding.Jsonify
+ - transform.Remarshal
+ - transform.Unmarshal
+aliases: [/functions/transform.unmarshal]
---
The function accepts either a `Resource` created in [Hugo Pipes](/hugo-pipes/) or via [Page Bundles](/content-management/page-bundles/), or simply a string. The two examples below will produce the same map:
diff --git a/docs/content/en/functions/truncate.md b/docs/content/en/functions/truncate.md
deleted file mode 100644
index cf38a2dfd..000000000
--- a/docs/content/en/functions/truncate.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: truncate
-description: Truncates a text to a max length without cutting words or leaving unclosed HTML tags.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [strings]
-signature:
- - "truncate SIZE [ELLIPSIS] INPUT"
- - "strings.Truncate SIZE [ELLIPSIS] INPUT"
-relatedfuncs: []
----
-
-Since Go templates are HTML-aware, `truncate` will intelligently handle normal strings vs HTML strings:
-
-```go-html-template
-{{ "<em>Keep my HTML</em>" | safeHTML | truncate 10 }}` → <em>Keep my …</em>`
-```
-
-{{% note %}}
-If you have a raw string that contains HTML tags you want to remain treated as HTML, you will need to convert the string to HTML using the [`safeHTML` template function](/functions/safehtml) before sending the value to truncate. Otherwise, the HTML tags will be escaped when passed through the `truncate` function.
-{{% /note %}}
diff --git a/docs/content/en/functions/uniq.md b/docs/content/en/functions/uniq.md
deleted file mode 100644
index aecdccf95..000000000
--- a/docs/content/en/functions/uniq.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: uniq
-description: Takes in a slice or array and returns a slice with duplicate elements removed.
-categories: [functions]
-menu:
- docs:
- parent: functions
-keywords: [multilingual,i18n,urls]
-signature: [uniq SET]
----
-
-
-```go-html-template
-{{ slice 1 3 2 1 | uniq }} → [1 3 2]
-```
diff --git a/docs/content/en/functions/unix.md b/docs/content/en/functions/unix.md
deleted file mode 100644
index 60fae9248..000000000
--- a/docs/content/en/functions/unix.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: .Unix
-description: Converts a time.Time value to the number of seconds elapsed since the Unix epoch, excluding leap seconds. The Unix epoch is 00:00:00&nbsp;UTC on 1 January 1970.
-keywords: [dates,time]
-categories: [functions]
-menu:
- docs:
- parent: functions
-signature: [".Unix",".UnixMilli",".UnixMicro",".UnixNano"]
-relatedfuncs: [Format,dateFormat,now,time]
----
-
-The `Milli`, `Micro`, and `Nano` variants return the number of milliseconds, microseconds, and nanoseconds (respectively) elapsed since the Unix epoch.
-
-```go-html-template
-.Date.Unix --> 1637259694
-.ExpiryDate.Unix --> 1672559999
-.Lastmod.Unix --> 1637361786
-.PublishDate.Unix --> 1637421261
-
-("1970-01-01T00:00:00-00:00" | time.AsTime).Unix --> 0
-("1970-01-01T00:00:42-00:00" | time.AsTime).Unix --> 42
-("1970-04-11T01:48:29-08:00" | time.AsTime).Unix --> 8675309
-("2026-05-02T20:09:31-07:00" | time.AsTime).Unix --> 1777777771
-
-now.Unix --> 1637447841
-now.UnixMilli --> 1637447841347
-now.UnixMicro --> 1637447841347378
-now.UnixNano --> 1637447841347378799
-```
diff --git a/docs/content/en/functions/abslangurl.md b/docs/content/en/functions/urls/AbsLangURL.md
index 2e1996f7e..ad73bbff0 100644
--- a/docs/content/en/functions/abslangurl.md
+++ b/docs/content/en/functions/urls/AbsLangURL.md
@@ -1,12 +1,22 @@
---
-title: absLangURL
+title: urls.AbsLangURL
+linkTitle: absLangURL
description: Returns an absolute URL with a language prefix, if any.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [urls, multilingual,i18n]
-signature: ["absLangURL INPUT"]
+function:
+ aliases: [absLangURL]
+ returnType: template.HTML
+ signatures: [urls.AbsLangURL INPUT]
+relatedFunctions:
+ - urls.AbsLangURL
+ - urls.AbsURL
+ - urls.RelLangURL
+ - urls.RelURL
+aliases: [/functions/abslangurl]
---
Use this function with both monolingual and multilingual configurations. The URL returned by this function depends on:
diff --git a/docs/content/en/functions/absurl.md b/docs/content/en/functions/urls/AbsURL.md
index efea2df75..bb6816f57 100644
--- a/docs/content/en/functions/absurl.md
+++ b/docs/content/en/functions/urls/AbsURL.md
@@ -1,12 +1,22 @@
---
-title: absURL
+title: urls.AbsURL
+linkTitle: absURL
description: Returns an absolute URL.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [urls]
-signature: ["absURL INPUT"]
+function:
+ aliases: [absURL]
+ returnType: template.html
+ signatures: [urls.AbsURL INPUT]
+relatedFunctions:
+ - urls.AbsLangURL
+ - urls.AbsURL
+ - urls.RelLangURL
+ - urls.RelURL
+aliases: [/functions/absurl]
---
With multilingual configurations, use the [`absLangURL`] function instead. The URL returned by this function depends on:
@@ -34,7 +44,7 @@ With `baseURL = https://example.org/docs/`
{{ absURL "style.css" }} → https://example.org/docs/style.css
```
-### Input begins with a slash
+#### Input begins with a slash
If the input begins with a slash, the resulting URL will be incorrect when the `baseURL` includes a subdirectory. With a leading slash, the function returns a URL relative to the protocol+host section of the `baseURL`.
@@ -58,4 +68,4 @@ With `baseURL = https://example.org/docs/`
The last three examples are not desirable in most situations. As a best practice, never include a leading slash when using this function.
{{% /note %}}
-[`absLangURL`]: /functions/abslangurl/
+[`absLangURL`]: /functions/urls/abslangurl/
diff --git a/docs/content/en/functions/anchorize.md b/docs/content/en/functions/urls/Anchorize.md
index 91d6b4fe7..15efe9a5e 100644
--- a/docs/content/en/functions/anchorize.md
+++ b/docs/content/en/functions/urls/Anchorize.md
@@ -1,13 +1,20 @@
---
-title: anchorize
+title: urls.Anchorize
+linkTitle: anchorize
description: Takes a string and sanitizes it the same way as the [`defaultMarkdownHandler`](/getting-started/configuration-markup#default-configuration) does for markdown headers.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [markdown,strings]
-signature: ["anchorize INPUT"]
-relatedfuncs: [humanize]
+function:
+ aliases: [anchorize]
+ returnType: string
+ signatures: [urls.Anchorize INPUT]
+relatedFunctions:
+ - urls.Anchorize
+ - urls.URLize
+aliases: [/functions/anchorize]
---
If [Goldmark](/getting-started/configuration-markup#goldmark) is set as `defaultMarkdownHandler`, the sanitizing logic adheres to the setting [`markup.goldmark.parser.autoHeadingIDType`](/getting-started/configuration-markup#goldmark).
diff --git a/docs/content/en/functions/urls.JoinPath.md b/docs/content/en/functions/urls/JoinPath.md
index f11632367..41adf7ee7 100644
--- a/docs/content/en/functions/urls.JoinPath.md
+++ b/docs/content/en/functions/urls/JoinPath.md
@@ -2,11 +2,18 @@
title: urls.JoinPath
description: Joins the provided elements into a URL string and cleans the result of any ./ or ../ elements. If the argument list is empty, JoinPath returns an empty string.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [urls,path,join]
-signature: ["urls.JoinPath ELEMENT..."]
+function:
+ aliases: []
+ returnType: string
+ signatures: [urls.JoinPath ELEMENT...]
+relatedFunctions:
+ - path.Join
+ - urls.JoinPath
+aliases: [/functions/urls.joinpath]
---
```go-html-template
@@ -22,4 +29,4 @@ signature: ["urls.JoinPath ELEMENT..."]
Unlike the [`path.Join`] function, `urls.JoinPath` retains consecutive leading slashes.
-[`path.Join`]: /functions/path.join/
+[`path.Join`]: /functions/path/join
diff --git a/docs/content/en/functions/urls.Parse.md b/docs/content/en/functions/urls/Parse.md
index b2d781e7f..17c924d51 100644
--- a/docs/content/en/functions/urls.Parse.md
+++ b/docs/content/en/functions/urls/Parse.md
@@ -2,11 +2,16 @@
title: urls.Parse
description: Parses a URL into a URL structure.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [urls]
-signature: ["urls.Parse URL"]
+function:
+ aliases: []
+ returnType: URL
+ signatures: [urls.Parse URL]
+relatedFunctions: []
+aliases: [/functions/urls.parse]
---
The `urls.Parse` function parses a URL into a [URL structure](https://godoc.org/net/url#URL). The URL may be relative (a path, without a host) or absolute (starting with a [scheme]). Hugo throws an error when parsing an invalid URL.
diff --git a/docs/content/en/functions/ref.md b/docs/content/en/functions/urls/Ref.md
index 2d05ca427..908fd6ca8 100644
--- a/docs/content/en/functions/ref.md
+++ b/docs/content/en/functions/urls/Ref.md
@@ -1,13 +1,20 @@
---
-title: ref
+title: urls.Ref
+linkTitle: ref
description: Returns the absolute permalink to a page.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [cross references, anchors]
-signature: ["ref . PAGE"]
-relatedfuncs: [relref]
+function:
+ aliases: [ref]
+ returnType: template.HTML
+ signatures: [urls.Ref . PAGE]
+relatedFunctions:
+ - urls.Ref
+ - urls.RelRef
+aliases: [/functions/ref]
---
This function takes two arguments:
diff --git a/docs/content/en/functions/relLangURL.md b/docs/content/en/functions/urls/RelLangURL.md
index 78b823c23..b8850c71d 100644
--- a/docs/content/en/functions/relLangURL.md
+++ b/docs/content/en/functions/urls/RelLangURL.md
@@ -1,12 +1,22 @@
---
-title: relLangURL
+title: urls.RelLangURL
+linkTitle: relLangURL
description: Returns a relative URL with a language prefix, if any.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [urls, multilingual,i18n]
-signature: ["relLangURL INPUT"]
+function:
+ aliases: [relLangURL]
+ returnType: template.HTML
+ signatures: [urls.RelLangURL INPUT]
+relatedFunctions:
+ - urls.AbsLangURL
+ - urls.AbsURL
+ - urls.RelLangURL
+ - urls.RelURL
+aliases: [/functions/rellangurl]
---
Use this function with both monolingual and multilingual configurations. The URL returned by this function depends on:
@@ -37,7 +47,7 @@ With `baseURL = https://example.org/docs/`
{{ relLangURL "style.css" }} → /docs/en/style.css
```
-### Input begins with a slash
+#### Input begins with a slash
If the input begins with a slash, the resulting URL will be incorrect when the `baseURL` includes a subdirectory. With a leading slash, the function returns a URL relative to the protocol+host section of the `baseURL`.
diff --git a/docs/content/en/functions/relref.md b/docs/content/en/functions/urls/RelRef.md
index 98ad724f7..1ff213b70 100644
--- a/docs/content/en/functions/relref.md
+++ b/docs/content/en/functions/urls/RelRef.md
@@ -1,13 +1,20 @@
---
-title: relref
+title: urls.RelRef
+linkTitle: relref
description: Returns the relative permalink to a page.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [cross references, anchors]
-signature: ["relref . PAGE"]
-relatedfuncs: [ref]
+function:
+ aliases: [relref]
+ returnType: template.HTML
+ signatures: [urls.RelRef . PAGE]
+relatedFunctions:
+ - urls.Ref
+ - urls.RelRef
+aliases: [/functions/relref]
---
This function takes two arguments:
diff --git a/docs/content/en/functions/relurl.md b/docs/content/en/functions/urls/RelURL.md
index c8278c9df..fa1f9af73 100644
--- a/docs/content/en/functions/relurl.md
+++ b/docs/content/en/functions/urls/RelURL.md
@@ -1,12 +1,22 @@
---
-title: relURL
+title: urls.RelURL
+linkTitle: relURL
description: Returns a relative URL.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [urls]
-signature: ["relURL INPUT"]
+function:
+ aliases: [relURL]
+ returnType: template.HTML
+ signatures: [urls.RelURL INPUT]
+relatedFunctions:
+ - urls.AbsLangURL
+ - urls.AbsURL
+ - urls.RelLangURL
+ - urls.RelURL
+aliases: [/functions/relurl]
---
With multilingual configurations, use the [`relLangURL`] function instead. The URL returned by this function depends on:
@@ -34,7 +44,7 @@ With `baseURL = https://example.org/docs/`
{{ relURL "style.css" }} → /docs/style.css
```
-### Input begins with a slash
+#### Input begins with a slash
If the input begins with a slash, the resulting URL will be incorrect when the `baseURL` includes a subdirectory. With a leading slash, the function returns a URL relative to the protocol+host section of the `baseURL`.
@@ -58,4 +68,4 @@ With `baseURL = https://example.org/docs/`
The last three examples are not desirable in most situations. As a best practice, never include a leading slash when using this function.
{{% /note %}}
-[`relLangURL`]: /functions/rellangurl/
+[`relLangURL`]: /functions/urls/rellangurl/
diff --git a/docs/content/en/functions/urlize.md b/docs/content/en/functions/urls/URLize.md
index 7a9cf25e8..3c80a92f8 100644
--- a/docs/content/en/functions/urlize.md
+++ b/docs/content/en/functions/urls/URLize.md
@@ -1,13 +1,20 @@
---
-title: urlize
+title: urls.URLize
+linkTitle: urlize
description: Takes a string, sanitizes it for usage in URLs, and converts spaces to hyphens.
categories: [functions]
+keywords: []
menu:
docs:
parent: functions
-keywords: [urls,strings]
-signature: ["urlize INPUT"]
-relatedfuncs: []
+function:
+ aliases: [urlize]
+ returnType: string
+ signatures: [urls.URLize INPUT]
+relatedFunctions:
+ - urls.Anchorize
+ - urls.URLize
+aliases: [/functions/urlize]
---
The following examples pull from a content file with the following front matter:
diff --git a/docs/content/en/getting-started/configuration-markup.md b/docs/content/en/getting-started/configuration-markup.md
index dca2b3c52..02c4ea998 100644
--- a/docs/content/en/getting-started/configuration-markup.md
+++ b/docs/content/en/getting-started/configuration-markup.md
@@ -12,21 +12,47 @@ slug: configuration-markup
toc: true
---
-## Default configuration
+## Default handler
-See [Goldmark](#goldmark) for settings related to the default markdown handler in Hugo.
+By default, Hugo uses [Goldmark] to render markdown to HTML.
-Below are all markup related configuration in Hugo with their default settings:
+{{< code-toggle file=hugo copy=false >}}
+[markup]
+defaultMarkdownHandler = 'goldmark'
+{{< /code-toggle >}}
-{{< code-toggle config="markup" />}}
+Files with the `.md` or `.markdown` extension are processed as markdown, provided that you have not specified a different [content format] using the `markup` field in front matter.
-**See each section below for details.**
+To use a different renderer for markdown files, specify one of `asciidocext`, `org`, `pandoc`, or `rst` in your site configuration.
-## Goldmark
+defaultMarkdownHandler|Description
+:--|:--
+`asciidocext`|[AsciiDoc]
+`goldmark`|[Goldmark]
+`org`|[Emacs Org Mode]
+`pandoc`|[Pandoc]
+`rst`|[reStructuredText]
+
+To use Asciidoc, Pandoc, or reStructuredText you must install the relevant renderer and update your [security policy].
+
+{{% note %}}
+Unless you need a unique capability provided by one of the alternate markdown handlers, we strongly recommend that you use the default setting. Goldmark is fast, well maintained, conforms to the [CommonMark] specification, and is compatible with [GitHub Flavored Markdown] (GFM).
+
+[commonmark]: https://spec.commonmark.org/0.30/
+[github flavored markdown]: https://github.github.com/gfm/
+{{% /note %}}
-[Goldmark](https://github.com/yuin/goldmark/) is from Hugo 0.60 the default library used for Markdown. It's fast, it's [CommonMark](https://spec.commonmark.org/current/) compliant and it's very flexible.
+[asciidoc]: https://asciidoc.org/
+[content format]: /content-management/formats/#list-of-content-formats
+[emacs org mode]: https://orgmode.org/
+[goldmark]: https://github.com/yuin/goldmark/
+[pandoc]: https://pandoc.org/
+[restructuredtext]: https://docutils.sourceforge.io/rst.html
+[security policy]: /about/security-model/#security-policy
-This is the default configuration:
+## Goldmark
+
+This is the default configuration for the Goldmark markdown renderer:
{{< code-toggle config="markup.goldmark" />}}
@@ -41,7 +67,21 @@ unsafe
: By default, Goldmark does not render raw HTML and potentially dangerous links. If you have lots of inline HTML and/or JavaScript, you may need to turn this on.
typographer
-: This extension substitutes punctuations with typographic entities like [smartypants](https://daringfireball.net/projects/smartypants/).
+: The typographer extension replaces certain character combinations with HTML entities as specified below:
+
+Markdown|Replaced by|Description
+:--|:--|:--
+`...`|`&hellip;`|horizontal ellipsis
+`'`|`&rsquo;`|apostrophe
+`--`|`&ndash;`|en dash
+`---`|`&mdash;`|em dash
+`«`|`&laquo;`|left angle quote
+`“`|`&ldquo;`|left double quote
+`‘`|`&lsquo;`|left single quote
+`»`|`&raquo;`|right angle quote
+`”`|`&rdquo;`|right double quote
+`’`|`&rsquo;`|right single quote
+
attribute
: Enable custom attribute support for titles and blocks by adding attribute lists inside single curly brackets (`{.myclass class="class1 class2" }`) and placing it _after the Markdown element it decorates_, on the same line for titles and on a new line directly below for blocks.
@@ -80,7 +120,71 @@ Note that attributes in [code fences](/content-management/syntax-highlighting/#h
````
autoHeadingIDType ("github")
-: The strategy used for creating auto IDs (anchor names). Available types are `github`, `github-ascii` and `blackfriday`. `github` produces GitHub-compatible IDs, `github-ascii` will drop any non-Ascii characters after accent normalization, and `blackfriday` will make the IDs compatible with Blackfriday, the default Markdown engine before Hugo 0.60. Note that if Goldmark is your default Markdown engine, this is also the strategy used in the [anchorize](/functions/anchorize/) template func.
+: The strategy used for creating auto IDs (anchor names). Available types are `github`, `github-ascii` and `blackfriday`. `github` produces GitHub-compatible IDs, `github-ascii` will drop any non-Ascii characters after accent normalization, and `blackfriday` will make the IDs compatible with Blackfriday, the default Markdown engine before Hugo 0.60. Note that if Goldmark is your default Markdown engine, this is also the strategy used in the [anchorize](/functions/urls/anchorize) template func.
+
+## Asciidoc
+
+This is the default configuration for the AsciiDoc markdown renderer:
+
+{{< code-toggle config="markup.asciidocExt" />}}
+
+attributes
+: (`map`) Variables to be referenced in your AsciiDoc file. This is a list of variable name/value maps. See Asciidoctor’s [attributes].
+
+[attributes]: https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#attributes-and-substitutions
+
+backend:
+: (`string`) Don’t change this unless you know what you are doing.
+
+extensions
+: (`[]string`) Possible extensions are `asciidoctor-html5s`, `asciidoctor-bibtex`, `asciidoctor-diagram`, `asciidoctor-interdoc-reftext`, `asciidoctor-katex`, `asciidoctor-latex`, `asciidoctor-mathematical`, and `asciidoctor-question`.
+
+failureLevel
+: (`string`) The minimum logging level that triggers a non-zero exit code (failure).
+
+noHeaderOrFooter
+: (`bool`) Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document. Don’t change this unless you know what you are doing.
+
+preserveTOC
+: (`bool`) By default, Hugo removes the table of contents generated by Asciidoctor and provides it through the built-in variable `.TableOfContents` to enable further customization and better integration with the various Hugo themes. This option can be set to true to preserve Asciidoctor’s TOC in the generated page.
+
+safeMode
+: (`string`) Safe mode level `unsafe`, `safe`, `server`, or `secure`. Don’t change this unless you know what you are doing.
+
+sectionNumbers
+: (`bool`) Auto-number section titles.
+
+trace
+: (`bool`) Include backtrace information on errors.
+
+verbose
+: (`bool`) Verbosely print processing information and configuration file checks to stderr.
+
+workingFolderCurrent
+: (`bool`) Sets the working directory to be the same as that of the AsciiDoc file being processed, so that [include] will work with relative paths. This setting uses the asciidoctor cli parameter --base-dir and attribute outdir=. For rendering diagrams with [asciidoctor-diagram], `workingFolderCurrent` must be set to `true`.
+
+[asciidoctor-diagram]: https://asciidoctor.org/docs/asciidoctor-diagram/
+[include]: https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#include-files
+
+Notice that for security concerns only extensions that do not have path separators (either `\`, `/` or `.`) are allowed. That means that extensions can only be invoked if they are in the Ruby's `$LOAD_PATH` (ie. most likely, the extension has been installed by the user). Any extension declared relative to the website's path will not be accepted.
+
+Example of how to set extensions and attributes:
+
+```yml
+[markup.asciidocExt]
+ extensions = ["asciidoctor-html5s", "asciidoctor-diagram"]
+ workingFolderCurrent = true
+ [markup.asciidocExt.attributes]
+ my-base-url = "https://example.com/"
+ my-attribute-name = "my value"
+```
+
+In a complex Asciidoctor environment it is sometimes helpful to debug the exact call to your external helper with all
+parameters. Run Hugo with `-v`. You will get an output like
+
+```txt
+INFO 2019/12/22 09:08:48 Rendering book-as-pdf.adoc with C:\Ruby26-x64\bin\asciidoctor.bat using asciidoc args [--no-header-footer -r asciidoctor-html5s -b html5s -r asciidoctor-diagram --base-dir D:\prototypes\hugo_asciidoc_ddd\docs -a outdir=D:\prototypes\hugo_asciidoc_ddd\build -] ...
+```
## Highlight
@@ -110,6 +214,6 @@ endLevel
ordered
: If `true`, generates an ordered list instead of an unordered list.
-## Markdown render hooks
+## Render hooks
See [Markdown Render Hooks](/templates/render-hooks/).
diff --git a/docs/content/en/getting-started/configuration.md b/docs/content/en/getting-started/configuration.md
index 978412bb9..2187540ae 100644
--- a/docs/content/en/getting-started/configuration.md
+++ b/docs/content/en/getting-started/configuration.md
@@ -428,7 +428,7 @@ URL to be used as a placeholder when a page reference cannot be found in `ref` o
Removes [non-spacing marks](https://www.compart.com/en/unicode/category/Mn) from [composite characters](https://en.wikipedia.org/wiki/Precomposed_character) in content paths.
```text
-content/post/hügó.md --> https://example.org/post/hugo/
+content/post/hügó.md → https://example.org/post/hugo/
```
### rssLimit
@@ -477,7 +477,7 @@ Timeout for generating page contents, specified as a [duration](https://pkg.go.d
### timeZone
-The time zone (or location), e.g. `Europe/Oslo`, used to parse front matter dates without such information and in the [`time` function](/functions/time/). The list of valid values may be system dependent, but should include `UTC`, `Local`, and any location in the [IANA Time Zone database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
+The time zone (or location), e.g. `Europe/Oslo`, used to parse front matter dates without such information and in the [`time`] function. The list of valid values may be system dependent, but should include `UTC`, `Local`, and any location in the [IANA Time Zone database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
### title
@@ -555,8 +555,6 @@ useResourceCacheWhen
The `build.cachebusters` configuration option was added to support development using Tailwind 3.x's JIT compiler where a `build` configuration may look like this:
-<!-- TODO (jmm) writeStats => build.buildStats -->
-
{{< code-toggle file="hugo" >}}
[build]
[build.buildStats]
@@ -644,7 +642,7 @@ status = 404
## Configure title case
-Set `titleCaseStyle` to specify the title style used by the [title](/functions/title/) template function and the automatic section titles in Hugo.
+Set `titleCaseStyle` to specify the title style used by the [title](/functions/strings/title) template function and the automatic section titles in Hugo.
Can be one of:
@@ -712,10 +710,6 @@ To set configuration parameters, prefix the name with `HUGO_PARAMS_`
If you are using snake_cased variable names, the above will not work. Hugo determines the delimiter to use by the first character after `HUGO`. This allows you to define environment variables on the form `HUGOxPARAMSxAPI_KEY=abcdefgh`, using any [allowed](https://stackoverflow.com/questions/2821043/allowed-characters-in-linux-environment-variable-names#:~:text=So%20names%20may%20contain%20any,not%20begin%20with%20a%20digit.) delimiter.
-{{< todo >}}
-Test and document setting parameters via JSON env var.
-{{< /todo >}}
-
## Ignore content and data files when rendering
**Note:** This works, but we recommend you use the newer and more powerful [includeFiles and excludeFiles](/hugo-modules/configuration/#module-configuration-mounts) mount options.
@@ -827,7 +821,7 @@ dir
[`.Site.Params`]: /variables/site/
[directory structure]: /getting-started/directory-structure
-[json]: https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf "Specification for JSON, JavaScript Object Notation"
+[json]: https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
[lookup order]: /templates/lookup-order/
[Output Formats]: /templates/output-formats/
[templates]: /templates/
@@ -849,3 +843,6 @@ If this is not set, Hugo will use, in order of preference:
1. In a `hugo_cache_$USER` directory below the OS temp dir.
If you want to know the current value of `cacheDir`, you can run `hugo config`, e.g: `hugo config | grep cachedir`.
+
+
+[`time`]: /functions/time/astime
diff --git a/docs/content/en/getting-started/glossary.md b/docs/content/en/getting-started/glossary.md
index 834f72ec5..c15af5170 100644
--- a/docs/content/en/getting-started/glossary.md
+++ b/docs/content/en/getting-started/glossary.md
@@ -64,6 +64,10 @@ A markup language for creating content. Typically markdown, but may also be HTML
A classification of content inferred from the top-level directory name or the `type` set in [front matter](#front-matter). Pages in the root of the content directory, including the home page, are of type "page". Accessed via `.Page.Type` in [templates](#template). See&nbsp;[details](/content-management/types/).
+### content view
+
+A template called with the `.Page.Render` method. See&nbsp;[details](/templates/views/).
+
### context
Represented by a period "." within a [template action](#template-action), context is the current location in a data structure. For example, while iterating over a [collection](#collection) of pages, the context within each iteration is the page's data structure. The context received by each template depends on template type and/or how it was called. See [details](/templates/introduction/#the-dot).
@@ -250,7 +254,7 @@ A packaged combination of [archetypes](#archetype), assets, content, data, [temp
### token
-An identifier within a format string, beginning with a colon and replaced with a value when rendered. For example, use tokens in format strings for both [permalinks](/content-management/urls/#permalinks) and [dates](/functions/dateformat/#datetime-formatting-layouts).
+An identifier within a format string, beginning with a colon and replaced with a value when rendered. For example, use tokens in format strings for both [permalinks](/content-management/urls/#permalinks) and [dates](/functions/time/format/#localization).
### type
diff --git a/docs/content/en/hosting-and-deployment/hosting-on-firebase.md b/docs/content/en/hosting-and-deployment/hosting-on-firebase.md
index 3b1ba9dcd..c58f4b752 100644
--- a/docs/content/en/hosting-and-deployment/hosting-on-firebase.md
+++ b/docs/content/en/hosting-and-deployment/hosting-on-firebase.md
@@ -47,26 +47,26 @@ From here:
In new versions of Firebase, some other questions apply:
-6. Set up automatic builds and deploys with GitHub?
+6. Set up automatic builds and deploys with GitHub?
Here you will be redirected to login in your GitHub account to get permissions. Confirm.
-7. For which GitHub repository would you like to set up a GitHub workflow? (format: user/repository)
+7. For which GitHub repository would you like to set up a GitHub workflow? (format: user/repository)
Include the repository you will use in the format above (Account/Repo)
Firebase script with retrieve credentials, create a service account you can later manage in your GitHub settings.
-8. Set up the workflow to run a build script before every deploy?
+8. Set up the workflow to run a build script before every deploy?
Here is your opportunity to include some commands before you run the deploy.
-9. Set up automatic deployment to your site's live channel when a PR is merged?
+9. Set up automatic deployment to your site's live channel when a PR is merged?
You can let in the default option (main)
After that Firebase has been set in your project with CI/CD. After that run:
-```
+```sh
hugo && firebase deploy
```
diff --git a/docs/content/en/hugo-modules/use-modules.md b/docs/content/en/hugo-modules/use-modules.md
index 27a1f6051..db269a5db 100644
--- a/docs/content/en/hugo-modules/use-modules.md
+++ b/docs/content/en/hugo-modules/use-modules.md
@@ -142,7 +142,7 @@ A common use case for a workspace is to simplify local development of a site wit
A workspace can be configured in a `*.work` file and activated with the [module.workspace](/hugo-modules/configuration/) setting, which for this use is commonly controlled via the `HUGO_MODULE_WORKSPACE` OS environment variable.
-See the [hugo.work](https://github.com/gohugoio/hugo/blob/master/hugo.work) file in the Hugo Docs repo for an example:
+See the [hugo.work](https://github.com/gohugoio/hugo/blob/master/docs/hugo.work) file in the Hugo Docs repo for an example:
```text
go 1.19
diff --git a/docs/content/en/hugo-pipes/babel.md b/docs/content/en/hugo-pipes/babel.md
index 222b5116b..44b4e670e 100755
--- a/docs/content/en/hugo-pipes/babel.md
+++ b/docs/content/en/hugo-pipes/babel.md
@@ -8,7 +8,7 @@ menu:
parent: hugo-pipes
weight: 70
weight: 70
-signature: ["resources.Babel RESOURCE [OPTIONS]", "babel RESOURCE [OPTIONS]"]
+signatures: ["resources.Babel RESOURCE [OPTIONS]", "babel RESOURCE [OPTIONS]"]
---
## Usage
diff --git a/docs/content/en/hugo-pipes/bundling.md b/docs/content/en/hugo-pipes/bundling.md
index 8b9899432..f3ff42f9c 100755
--- a/docs/content/en/hugo-pipes/bundling.md
+++ b/docs/content/en/hugo-pipes/bundling.md
@@ -9,7 +9,7 @@ menu:
parent: hugo-pipes
weight: 90
weight: 90
-signature: ["resources.Concat TARGET_PATH SLICE_RESOURCES"]
+signatures: ["resources.Concat TARGET_PATH SLICE_RESOURCES"]
---
## Usage
diff --git a/docs/content/en/hugo-pipes/fingerprint.md b/docs/content/en/hugo-pipes/fingerprint.md
index bdabbe029..c492d4c70 100755
--- a/docs/content/en/hugo-pipes/fingerprint.md
+++ b/docs/content/en/hugo-pipes/fingerprint.md
@@ -9,7 +9,7 @@ menu:
parent: hugo-pipes
weight: 100
weight: 100
-signature: ["resources.Fingerprint RESOURCE [ALGORITHM]", "fingerprint RESOURCE [ALGORITHM]"]
+signatures: ["resources.Fingerprint RESOURCE [ALGORITHM]", "fingerprint RESOURCE [ALGORITHM]"]
---
## Usage
diff --git a/docs/content/en/hugo-pipes/js.md b/docs/content/en/hugo-pipes/js.md
index 86c1564cf..ecf6dc33f 100644
--- a/docs/content/en/hugo-pipes/js.md
+++ b/docs/content/en/hugo-pipes/js.md
@@ -9,7 +9,7 @@ menu:
parent: hugo-pipes
weight: 60
weight: 60
-signature: ["js.Build RESOURCE [OPTIONS]"]
+signatures: ["js.Build RESOURCE [OPTIONS]"]
---
## Usage
diff --git a/docs/content/en/hugo-pipes/minification.md b/docs/content/en/hugo-pipes/minification.md
index a32ef6e6f..74ddfaa89 100755
--- a/docs/content/en/hugo-pipes/minification.md
+++ b/docs/content/en/hugo-pipes/minification.md
@@ -9,7 +9,7 @@ menu:
parent: hugo-pipes
weight: 80
weight: 80
-signature: ["resources.Minify RESOURCE", "minify RESOURCE"]
+signatures: ["resources.Minify RESOURCE", "minify RESOURCE"]
---
## Usage
diff --git a/docs/content/en/hugo-pipes/postcss.md b/docs/content/en/hugo-pipes/postcss.md
index 4e969caf2..2a08c7ad4 100755
--- a/docs/content/en/hugo-pipes/postcss.md
+++ b/docs/content/en/hugo-pipes/postcss.md
@@ -9,7 +9,7 @@ menu:
weight: 40
toc: true
weight: 40
-signature: ["resources.PostCSS RESOURCE [OPTIONS]", "postCSS RESOURCE [OPTIONS]"]
+signatures: ["resources.PostCSS RESOURCE [OPTIONS]", "postCSS RESOURCE [OPTIONS]"]
---
## Setup
diff --git a/docs/content/en/hugo-pipes/postprocess.md b/docs/content/en/hugo-pipes/postprocess.md
index 3b7d5c610..4b3cb8ad4 100755
--- a/docs/content/en/hugo-pipes/postprocess.md
+++ b/docs/content/en/hugo-pipes/postprocess.md
@@ -8,7 +8,7 @@ menu:
parent: hugo-pipes
weight: 50
weight: 50
-signature: ["resources.PostProcess RESOURCE"]
+signatures: ["resources.PostProcess RESOURCE"]
---
## Usage
diff --git a/docs/content/en/hugo-pipes/resource-from-string.md b/docs/content/en/hugo-pipes/resource-from-string.md
index f3f0cda4f..fa472715c 100755
--- a/docs/content/en/hugo-pipes/resource-from-string.md
+++ b/docs/content/en/hugo-pipes/resource-from-string.md
@@ -9,7 +9,7 @@ menu:
parent: hugo-pipes
weight: 110
weight: 110
-signature: ["resources.FromString TARGET_PATH CONTENT"]
+signatures: ["resources.FromString TARGET_PATH CONTENT"]
---
## Usage
diff --git a/docs/content/en/hugo-pipes/resource-from-template.md b/docs/content/en/hugo-pipes/resource-from-template.md
index 4f34817c0..c1c4cb316 100755
--- a/docs/content/en/hugo-pipes/resource-from-template.md
+++ b/docs/content/en/hugo-pipes/resource-from-template.md
@@ -9,7 +9,7 @@ menu:
parent: hugo-pipes
weight: 120
weight: 120
-signature: ["resources.ExecuteAsTemplate TARGET_PATH CONTEXT RESOURCE"]
+signatures: ["resources.ExecuteAsTemplate TARGET_PATH CONTEXT RESOURCE"]
---
## Usage
diff --git a/docs/content/en/hugo-pipes/transpile-sass-to-css.md b/docs/content/en/hugo-pipes/transpile-sass-to-css.md
index bf3d136f1..b09cc165b 100644
--- a/docs/content/en/hugo-pipes/transpile-sass-to-css.md
+++ b/docs/content/en/hugo-pipes/transpile-sass-to-css.md
@@ -9,7 +9,7 @@ menu:
parent: hugo-pipes
weight: 30
weight: 30
-signature: ["resources.ToCSS RESOURCE [OPTIONS]", "toCSS RESOURCE [OPTIONS]"]
+signatures: ["resources.ToCSS RESOURCE [OPTIONS]", "toCSS RESOURCE [OPTIONS]"]
toc: true
aliases: [/hugo-pipes/transform-to-css/]
---
diff --git a/docs/content/en/installation/common/01-editions.md b/docs/content/en/installation/_common/01-editions.md
index cbc338665..cbc338665 100644
--- a/docs/content/en/installation/common/01-editions.md
+++ b/docs/content/en/installation/_common/01-editions.md
diff --git a/docs/content/en/installation/common/02-prerequisites.md b/docs/content/en/installation/_common/02-prerequisites.md
index 423950113..423950113 100644
--- a/docs/content/en/installation/common/02-prerequisites.md
+++ b/docs/content/en/installation/_common/02-prerequisites.md
diff --git a/docs/content/en/installation/common/03-prebuilt-binaries.md b/docs/content/en/installation/_common/03-prebuilt-binaries.md
index 884869e1e..884869e1e 100644
--- a/docs/content/en/installation/common/03-prebuilt-binaries.md
+++ b/docs/content/en/installation/_common/03-prebuilt-binaries.md
diff --git a/docs/content/en/installation/common/05-build-from-source.md b/docs/content/en/installation/_common/04-build-from-source.md
index 7537882fd..7537882fd 100644
--- a/docs/content/en/installation/common/05-build-from-source.md
+++ b/docs/content/en/installation/_common/04-build-from-source.md
diff --git a/docs/content/en/installation/common/homebrew.md b/docs/content/en/installation/_common/homebrew.md
index 7178a9f4f..7178a9f4f 100644
--- a/docs/content/en/installation/common/homebrew.md
+++ b/docs/content/en/installation/_common/homebrew.md
diff --git a/docs/content/en/installation/common/index.md b/docs/content/en/installation/_common/index.md
index cbb7365a6..cbb7365a6 100644
--- a/docs/content/en/installation/common/index.md
+++ b/docs/content/en/installation/_common/index.md
diff --git a/docs/content/en/installation/bsd.md b/docs/content/en/installation/bsd.md
index 5fbc4bfad..999e52ad6 100644
--- a/docs/content/en/installation/bsd.md
+++ b/docs/content/en/installation/bsd.md
@@ -9,11 +9,11 @@ menu:
toc: true
weight: 50
---
-{{% readfile file="/installation/common/01-editions.md" %}}
+{{% readfile file="/installation/_common/01-editions.md" %}}
-{{% readfile file="/installation/common/02-prerequisites.md" %}}
+{{% readfile file="/installation/_common/02-prerequisites.md" %}}
-{{% readfile file="/installation/common/03-prebuilt-binaries.md" %}}
+{{% readfile file="/installation/_common/03-prebuilt-binaries.md" %}}
## Repository packages
@@ -61,7 +61,7 @@ doas pkg_add hugo
[OpenBSD]: https://www.openbsd.org/
-{{% readfile file="/installation/common/05-build-from-source.md" %}}
+{{% readfile file="/installation/_common/04-build-from-source.md" %}}
## Comparison
diff --git a/docs/content/en/installation/common/04-docker.md b/docs/content/en/installation/common/04-docker.md
deleted file mode 100644
index 24f5cd942..000000000
--- a/docs/content/en/installation/common/04-docker.md
+++ /dev/null
@@ -1,10 +0,0 @@
-## Docker
-
-[Erlend Klakegg Bergheim] graciously maintains [Docker images] based on images for Alpine Linux, Busybox, Debian, and Ubuntu.
-
-```sh
-docker pull klakegg/hugo
-```
-
-[Docker images]: https://hub.docker.com/r/klakegg/hugo
-[Erlend Klakegg Bergheim]: https://github.com/klakegg
diff --git a/docs/content/en/installation/linux.md b/docs/content/en/installation/linux.md
index 4056b987a..2dbbd3720 100644
--- a/docs/content/en/installation/linux.md
+++ b/docs/content/en/installation/linux.md
@@ -9,11 +9,11 @@ menu:
toc: true
weight: 30
---
-{{% readfile file="/installation/common/01-editions.md" %}}
+{{% readfile file="/installation/_common/01-editions.md" %}}
-{{% readfile file="/installation/common/02-prerequisites.md" %}}
+{{% readfile file="/installation/_common/02-prerequisites.md" %}}
-{{% readfile file="/installation/common/03-prebuilt-binaries.md" %}}
+{{% readfile file="/installation/_common/03-prebuilt-binaries.md" %}}
## Package managers
@@ -47,7 +47,7 @@ sudo snap disconnect hugo:ssh-keys
[strictly confined]: https://snapcraft.io/docs/snap-confinement
[Snap]: https://snapcraft.io/
-{{% readfile file="/installation/common/homebrew.md" %}}
+{{% readfile file="/installation/_common/homebrew.md" %}}
## Repository packages
@@ -124,20 +124,17 @@ sudo eopkg install hugo
[Solus]: https://getsol.us/
-{{% readfile file="/installation/common/04-docker.md" %}}
-
-{{% readfile file="/installation/common/05-build-from-source.md" %}}
+{{% readfile file="/installation/_common/04-build-from-source.md" %}}
## Comparison
-||Prebuilt binaries|Package managers|Repository packages|Docker|Build from source
-:--|:--:|:--:|:--:|:--:|:--:
-Easy to install?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:
-Easy to upgrade?|:heavy_check_mark:|:heavy_check_mark:|varies|:heavy_check_mark:|:heavy_check_mark:
-Easy to downgrade?|:heavy_check_mark:|:heavy_check_mark: [^1]|varies|:heavy_check_mark:|:heavy_check_mark:
-Automatic updates?|:x:|varies [^2]|:x:|:x: [^3]|:x:
-Latest version available?|:heavy_check_mark:|:heavy_check_mark:|varies|:heavy_check_mark:|:heavy_check_mark:
+||Prebuilt binaries|Package managers|Repository packages|Build from source
+:--|:--:|:--:|:--:|:--:
+Easy to install?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:
+Easy to upgrade?|:heavy_check_mark:|:heavy_check_mark:|varies|:heavy_check_mark:
+Easy to downgrade?|:heavy_check_mark:|:heavy_check_mark: [^1]|varies|:heavy_check_mark:
+Automatic updates?|:x:|varies [^2]|:x:|:x:
+Latest version available?|:heavy_check_mark:|:heavy_check_mark:|varies|:heavy_check_mark:
[^1]: Easy if a previous version is still installed.
[^2]: Snap packages are automatically updated. Homebrew requires advanced configuration.
-[^3]: Possible but requires advanced configuration.
diff --git a/docs/content/en/installation/macos.md b/docs/content/en/installation/macos.md
index 9d10642de..ccae90b36 100644
--- a/docs/content/en/installation/macos.md
+++ b/docs/content/en/installation/macos.md
@@ -9,15 +9,15 @@ menu:
toc: true
weight: 20
---
-{{% readfile file="/installation/common/01-editions.md" %}}
+{{% readfile file="/installation/_common/01-editions.md" %}}
-{{% readfile file="/installation/common/02-prerequisites.md" %}}
+{{% readfile file="/installation/_common/02-prerequisites.md" %}}
-{{% readfile file="/installation/common/03-prebuilt-binaries.md" %}}
+{{% readfile file="/installation/_common/03-prebuilt-binaries.md" %}}
## Package managers
-{{% readfile file="/installation/common/homebrew.md" %}}
+{{% readfile file="/installation/_common/homebrew.md" %}}
### MacPorts
@@ -29,19 +29,17 @@ sudo port install hugo
[MacPorts]: https://www.macports.org/
-{{% readfile file="/installation/common/04-docker.md" %}}
-
-{{% readfile file="/installation/common/05-build-from-source.md" %}}
+{{% readfile file="/installation/_common/04-build-from-source.md" %}}
## Comparison
-||Prebuilt binaries|Package managers|Docker|Build from source
-:--|:--:|:--:|:--:|:--:|:--:
-Easy to install?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|
-Easy to upgrade?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:
-Easy to downgrade?|:heavy_check_mark:|:heavy_check_mark: [^1]|:heavy_check_mark:|:heavy_check_mark:
-Automatic updates?|:x:|:x: [^2]|:x: [^2]|:x:
-Latest version available?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:
+||Prebuilt binaries|Package managers|Build from source
+:--|:--:|:--:|:--:
+Easy to install?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|
+Easy to upgrade?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:
+Easy to downgrade?|:heavy_check_mark:|:heavy_check_mark: [^1]|:heavy_check_mark:
+Automatic updates?|:x:|:x: [^2]|:x:
+Latest version available?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:
[^1]: Easy if a previous version is still installed.
[^2]: Possible but requires advanced configuration.
diff --git a/docs/content/en/installation/windows.md b/docs/content/en/installation/windows.md
index 92979d9f2..48c5f7006 100644
--- a/docs/content/en/installation/windows.md
+++ b/docs/content/en/installation/windows.md
@@ -9,11 +9,11 @@ menu:
toc: true
weight: 40
---
-{{% readfile file="/installation/common/01-editions.md" %}}
+{{% readfile file="/installation/_common/01-editions.md" %}}
-{{% readfile file="/installation/common/02-prerequisites.md" %}}
+{{% readfile file="/installation/_common/02-prerequisites.md" %}}
-{{% readfile file="/installation/common/03-prebuilt-binaries.md" %}}
+{{% readfile file="/installation/_common/03-prebuilt-binaries.md" %}}
## Package managers
@@ -47,9 +47,7 @@ winget install Hugo.Hugo.Extended
[Winget]: https://learn.microsoft.com/en-us/windows/package-manager/
-{{% readfile file="/installation/common/04-docker.md" %}}
-
-{{% readfile file="/installation/common/05-build-from-source.md" %}}
+{{% readfile file="/installation/_common/04-build-from-source.md" %}}
{{% note %}}
See these [detailed instructions](https://discourse.gohugo.io/t/41370) to install GCC on Windows.
@@ -57,13 +55,13 @@ See these [detailed instructions](https://discourse.gohugo.io/t/41370) to instal
## Comparison
-||Prebuilt binaries|Package managers|Docker|Build from source
-:--|:--:|:--:|:--:|:--:|:--:
-Easy to install?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|
-Easy to upgrade?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:
-Easy to downgrade?|:heavy_check_mark:|:heavy_check_mark: [^2]|:heavy_check_mark:|:heavy_check_mark:
-Automatic updates?|:x:|:x: [^1]|:x: [^1]|:x:
-Latest version available?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:
+||Prebuilt binaries|Package managers|Build from source
+:--|:--:|:--:|:--:
+Easy to install?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|
+Easy to upgrade?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:
+Easy to downgrade?|:heavy_check_mark:|:heavy_check_mark: [^2]|:heavy_check_mark:
+Automatic updates?|:x:|:x: [^1]|:x:
+Latest version available?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:
[^1]: Possible but requires advanced configuration.
[^2]: Easy if a previous version is still installed.
diff --git a/docs/content/en/readfiles/README.md b/docs/content/en/readfiles/README.md
deleted file mode 100644
index 4b10f0e47..000000000
--- a/docs/content/en/readfiles/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# readdirs Directory for Reusable Content
-
-Files in this directory are:
-
-1. Used in *more than one place* within the Hugo docs
-2. Used in Examples of readdir (i.e. in local file templates)
-
-These files are called using the [`readfile` shortcode (source)](../layouts/readfile.html).
-
-You can call this shortcode in the docs as follows:
-
-
-<code>{</code><code>{</code>% readfile file="/path/to/file.txt" markdown="true" %<code>}</code><code>}</code>
-
-
-`markdown="true"` is optional (default = `"false"`) and parses the string through the Blackfriday renderer.
diff --git a/docs/content/en/readfiles/dateformatting.md b/docs/content/en/readfiles/dateformatting.md
deleted file mode 100644
index e6c395151..000000000
--- a/docs/content/en/readfiles/dateformatting.md
+++ /dev/null
@@ -1,87 +0,0 @@
-Go templates [format your dates][time] according to a single reference time:
-
-```txt
-Mon Jan 2 15:04:05 MST 2006
-```
-
-You can think of `MST` as `07`, thus making the reference format string a sequence of numbers. The following is [taken directly from the Go docs][gdex]:
-
-```txt
-Jan 2 15:04:05 2006 MST
- 1 2 3 4 5 6 -7
-```
-
-### Hugo date templating reference
-
-Each of the following examples show the reference formatting string followed by the string Hugo will output in your HTML.
-
-Note that the examples were rendered and tested in [CST] and pull from a single example date you might have in your content's front matter:
-
-```yml
-date: 2017-03-03T14:15:59-06:00
-```
-
-`.Date` (i.e. called via [page variable][pagevars])
-: **Returns**: `2017-03-03 14:15:59 -0600 CST`
-
-`"Monday, January 2, 2006"`
-: **Returns**: `Friday, March 3, 2017`
-
-`"Mon Jan 2 2006"`
-: **Returns**: `Fri Mar 3 2017`
-
-`"January 2nd"`
-: **Returns**: `March 3rd`
-
-`"January 2006"`
-: **Returns**: `March 2017`
-
-`"2006-01-02"`
-: **Returns**: `2017-03-03`
-
-`"Monday"`
-: **Returns**: `Friday`
-
-`"02 Jan 06 15:04 MST"` (RFC822)
-: **Returns**: `03 Mar 17 14:15 CST`
-
-`"02 Jan 06 15:04 -0700"` (RFC822Z)
-: **Returns**: `03 Mar 17 14:15 -0600`
-
-`"Mon, 02 Jan 2006 15:04:05 MST"` (RFC1123)
-: **Returns**: `Fri, 03 Mar 2017 14:15:59 CST`
-
-`"Mon, 02 Jan 2006 15:04:05 -0700"` (RFC339)
-: **Returns**: `Fri, 03 Mar 2017 14:15:59 -0600`
-
-### Cardinal numbers and ordinal abbreviations
-
-Spelled-out cardinal numbers (e.g. "one", "two", and "three") and ordinal abbreviations (e.g. "1st", "2nd", and "3rd") are not currently supported.
-
-To continue with the example above:
-
-```go-html-template
-{{ .Date.Format "Jan 2nd 2006" }}
-```
-
-Hugo assumes you want to append `nd` as a string to the day of the month and outputs the following:
-
-```txt
-Mar 2nd 2017
-```
-
-### Use `.Local` and `.UTC`
-
-In conjunction with the [`dateFormat` function][dateFormat], you can also convert your dates to `UTC` or to local timezones:
-
-`{{ dateFormat "02 Jan 06 15:04 MST" .Date.UTC }}`
-: **Returns**: `03 Mar 17 20:15 UTC`
-
-`{{ dateFormat "02 Jan 06 15:04 MST" .Date.Local }}`
-: **Returns**: `03 Mar 17 14:15 CST`
-
-[CST]: https://en.wikipedia.org/wiki/Central_Time_Zone
-[dateFormat]: /functions/dateformat/
-[gdex]: https://golang.org/pkg/time/#example_Time_Format
-[pagevars]: /variables/page/
-[time]: https://golang.org/pkg/time/
diff --git a/docs/content/en/readfiles/index.md b/docs/content/en/readfiles/index.md
deleted file mode 100644
index 3d65eaa0f..000000000
--- a/docs/content/en/readfiles/index.md
+++ /dev/null
@@ -1,3 +0,0 @@
----
-headless: true
---- \ No newline at end of file
diff --git a/docs/content/en/readfiles/sectionvars.md b/docs/content/en/readfiles/sectionvars.md
deleted file mode 100644
index 45aaff1f3..000000000
--- a/docs/content/en/readfiles/sectionvars.md
+++ /dev/null
@@ -1,23 +0,0 @@
-.CurrentSection
-: The page's current section. The value can be the page itself if it is a section or the homepage.
-
-.FirstSection
-: The page's first section below root, e.g. `/docs`, `/blog` etc.
-
-.InSection $anotherPage
-: Whether the given page is in the current section.
-
-.IsAncestor $anotherPage
-: Whether the current page is an ancestor of the given page.
-
-.IsDescendant $anotherPage
-: Whether the current page is a descendant of the given page.
-
-.Parent
-: A section's parent section or a page's section.
-
-.Section
-: The [section](/content-management/sections/) this content belongs to. **Note:** For nested sections, this is the first path element in the directory, for example, `/blog/funny/mypost/ => blog`.
-
-.Sections
-: The [sections](/content-management/sections/) below this content.
diff --git a/docs/content/en/readfiles/testing.txt b/docs/content/en/readfiles/testing.txt
deleted file mode 100644
index 6428710e3..000000000
--- a/docs/content/en/readfiles/testing.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-##### Hello World!
-
-Testing one, **two**, *three*. Don't delete this sample file used in the [templates](/templates/) section of the Hugo docs. \ No newline at end of file
diff --git a/docs/content/en/showcase/overmindstudios/bio.md b/docs/content/en/showcase/overmindstudios/bio.md
new file mode 100644
index 000000000..1bd870984
--- /dev/null
+++ b/docs/content/en/showcase/overmindstudios/bio.md
@@ -0,0 +1,7 @@
+
+**Overmind Studios** is a visual effects studio headquartered in Southern Germany.
+
+The site is built by:
+
+* [Tobias Kummer](https://www.overmind-studios.de/about/)
+
diff --git a/docs/content/en/showcase/overmindstudios/featured.png b/docs/content/en/showcase/overmindstudios/featured.png
new file mode 100644
index 000000000..c3eaaaf4c
--- /dev/null
+++ b/docs/content/en/showcase/overmindstudios/featured.png
Binary files differ
diff --git a/docs/content/en/showcase/overmindstudios/index.md b/docs/content/en/showcase/overmindstudios/index.md
new file mode 100644
index 000000000..3208b2b72
--- /dev/null
+++ b/docs/content/en/showcase/overmindstudios/index.md
@@ -0,0 +1,13 @@
+---
+title: Overmind Studios
+description: "A fresh start to make things easier in the future."
+siteURL: https://www.overmind-studios.de/
+byline: "[tobkum](https://github.com/tobkum), Co-Founder Overmind Studios"
+---
+After many years of running our site on WordPress, we decided to switch to Hugo.
+
+WordPress is a great CMS for many people, but it has some downsides, especially for those who need a fast, secure, and customizable site. Plugins can become outdated, customization can be difficult, and bloat can slow down page loading times.
+
+Hugo is a static site generator that addresses many of these problems. It is fast to build and iterate, does not require PHP, is highly customizable, and is easy to learn and use. It is also secure, as it does not have a backend or MySQL database that can be hacked.
+
+We are very happy with our switch to Hugo. It is easy to update our site with new projects, and our Lighthouse score and loading times are both excellent. We now have more time to be creative instead of troubleshooting WordPress quirks and updates.
diff --git a/docs/content/en/templates/data-templates.md b/docs/content/en/templates/data-templates.md
index 0aadbb9ae..cf835af44 100644
--- a/docs/content/en/templates/data-templates.md
+++ b/docs/content/en/templates/data-templates.md
@@ -20,7 +20,7 @@ Hugo supports loading data from YAML, JSON, XML, and TOML files located in the `
## The data folder
-The `data` folder should store additional data for Hugo to use when generating your site.
+The `data` folder should store additional data for Hugo to use when generating your site.
Data files are not for generating standalone pages. They should supplement content files by:
@@ -37,7 +37,7 @@ To access the data using the `site.Data.filename` notation, the file name must b
- `x123.json` - Valid
- `_123.json` - Valid
-To access the data using the [`index`](/functions/index-function/) function, the file name is irrelevant. For example:
+To access the data using the [`index`](/functions/collections/indexfunction) function, the file name is irrelevant. For example:
Data file|Template code
:--|:--
@@ -130,8 +130,7 @@ You can use the following code to render the `Short Description` in your layout:
<div>Short Description of {{ .Site.Data.User0123.Name }}: <p>{{ index .Site.Data.User0123 "Short Description" | markdownify }}</p></div>
```
-Note the use of the [`markdownify` template function][markdownify]. This will send the description through the Markdown rendering engine.
-
+Note the use of the [`markdownify`] function. This will send the description through the Markdown rendering engine.
## Get remote data
@@ -255,10 +254,10 @@ If you change any local file and the LiveReload is triggered, Hugo will read the
[config]: /getting-started/configuration/
[csv]: https://tools.ietf.org/html/rfc4180
[customize]: /hugo-modules/theme-components/
-[json]: https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf "Specification for JSON, JavaScript Object Notation"
+[json]: https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
[LiveReload]: /getting-started/usage/#livereload
[lookup]: /templates/lookup-order/
-[markdownify]: /functions/markdownify/
+[`markdownify`]: /functions/transform/markdownify
[OAuth]: https://en.wikipedia.org/wiki/OAuth
[partials]: /templates/partials/
[toml]: https://toml.io/en/latest
diff --git a/docs/content/en/templates/files.md b/docs/content/en/templates/files.md
index 7b058d531..2e82688c0 100644
--- a/docs/content/en/templates/files.md
+++ b/docs/content/en/templates/files.md
@@ -14,11 +14,11 @@ toc: true
## Traverse local files
-With Hugo's [`readDir`][readDir] and [`readFile`][readFile] template functions, you can traverse your website's files on your server.
+With Hugo's [`readDir`] and [`readFile`] template functions, you can traverse your website's files on your server.
## Use `readDir`
-The [`readDir` function][readDir] returns an array of [`os.FileInfo`][osfileinfo]. It takes the file's `path` as a single string argument. This path can be to any directory of your website (i.e., as found on your server's file system).
+The [`readDir`] function returns an array of [`os.FileInfo`] structures. It takes the file's `path` as a single string argument. This path can be to any directory of your website (i.e., as found on your server's file system).
Whether the path is absolute or relative does not matter because---at least for `readDir`---the root of your website (typically `./public/`) in effect becomes both:
@@ -27,7 +27,7 @@ Whether the path is absolute or relative does not matter because---at least for
## Use `readFile`
-The [`readfile` function][readFile] reads a file from disk and converts it into a string to be manipulated by other Hugo functions or added as-is. `readFile` takes the file, including path, as an argument passed to the function.
+The [`readfile`] function reads a file from disk and converts it into a string to be manipulated by other Hugo functions or added as-is. `readFile` takes the file, including path, as an argument passed to the function.
To use the `readFile` function in your templates, make sure the path is relative to your *Hugo project's root directory*:
@@ -48,10 +48,9 @@ If you are going to create [custom shortcodes](/templates/shortcode-templates/)
{{% /note %}}
[called directly in the Hugo docs]: https://github.com/gohugoio/hugoDocs/blob/master/content/en/templates/files.md
-[osfileinfo]: https://golang.org/pkg/os/#FileInfo
-[readDir]: /functions/readdir/
-[readFile]: /functions/readfile/
+[`os.FileInfo`]: https://pkg.go.dev/io/fs#FileInfo
+[`readDir`]: /functions/os/readdir
+[`readFile`]: /functions/os/readfile
[sc]: /content-management/shortcodes/
[sct]: /templates/shortcode-templates/
[readfilesource]: https://github.com/gohugoio/hugoDocs/blob/master/layouts/shortcodes/readfile.html
-[testfile]: https://github.com/gohugoio/hugoDocs/blob/master/content/en/readfiles/testing.txt
diff --git a/docs/content/en/templates/introduction.md b/docs/content/en/templates/introduction.md
index 5d60e9ed1..93666de28 100644
--- a/docs/content/en/templates/introduction.md
+++ b/docs/content/en/templates/introduction.md
@@ -301,7 +301,7 @@ Below example is "Example 1" rewritten using `if`:
#### Example 4: `if` .. `else`
Below example is "Example 2" rewritten using `if` .. `else`, and using
-[`isset` function][isset] + `.Params` variable (different from the
+[`isset`] + `.Params` variable (different from the
[`.Param` **function**][param]) instead:
```go-html-template
@@ -355,7 +355,7 @@ The following two examples are functionally the same:
### Example 2: `index`
-The following accesses the page parameter called "disqus_url" and escapes the HTML. This example also uses the [`index` function](/functions/index-function/), which is built into Go Templates:
+The following accesses the page parameter called "disqus_url" and escapes the HTML. This example also uses the [`index`] function, which is built into Go Templates:
```go-html-template
{{ index .Params "disqus_url" | html }}
@@ -569,7 +569,7 @@ params:
sidebarrecentlimit: 5
{{< /code >}}
-Within a footer layout, you might then declare a `<footer>` that is only rendered if the `copyrighthtml` parameter is provided. If it *is* provided, you will then need to declare the string is safe to use via the [`safeHTML` function][safehtml] so that the HTML entity is not escaped again. This would let you easily update just your top-level configuration file each January 1st, instead of hunting through your templates.
+Within a footer layout, you might then declare a `<footer>` that is only rendered if the `copyrighthtml` parameter is provided. If it *is* provided, you will then need to declare the string is safe to use via the [`safeHTML`] function so that the HTML entity is not escaped again. This would let you easily update just your top-level configuration file each January 1st, instead of hunting through your templates.
```go-html-template
{{ if .Site.Params.copyrighthtml }}
@@ -579,7 +579,7 @@ Within a footer layout, you might then declare a `<footer>` that is only rendere
{{ end }}
```
-An alternative way of writing the "`if`" and then referencing the same value is to use [`with`][with] instead. `with` rebinds the context (`.`) within its scope and skips the block if the variable is absent:
+An alternative way of writing the "`if`" and then referencing the same value is to use [`with`] instead. `with` rebinds the context (`.`) within its scope and skips the block if the variable is absent:
{{< code file="layouts/partials/twitter.html" >}}
{{ with .Site.Params.twitteruser }}
@@ -590,7 +590,7 @@ An alternative way of writing the "`if`" and then referencing the same value is
{{ end }}
{{< /code >}}
-Finally, you can pull "magic constants" out of your layouts as well. The following uses the [`first`][first] function, as well as the [`.RelPermalink`][relpermalink] page variable and the [`.Site.Pages`][sitevars] site variable.
+Finally, you can pull "magic constants" out of your layouts as well. The following uses the [`first`] function, as well as the [`.RelPermalink`][relpermalink] page variable and the [`.Site.Pages`][sitevars] site variable.
```go-html-template
<nav>
@@ -653,19 +653,20 @@ If you restrict front matter to the TOML format, and omit quotation marks surrou
</ul>
{{< /code >}}
-[dotdoc]: https://golang.org/pkg/text/template/#hdr-Variables
+[`first`]: /functions/collections/first
+[`index`]: /functions/collections/indexfunction
+[`isset`]: /functions/collections/isset
[config]: /getting-started/configuration
-[first]: /functions/first
+[dotdoc]: https://golang.org/pkg/text/template/#hdr-Variables
[front matter]: /content-management/front-matter
[functions]: /functions
[internal templates]: /templates/internal
-[isset]: /functions/isset
[math]: /functions/math
[pagevars]: /variables/page
[param]: /functions/param
[partials]: /templates/partials
[relpermalink]: /variables/page#page-variables
-[safehtml]: /functions/safehtml
+[`safehtml`]: /functions/safe/html
[sitevars]: /variables/site
[variables]: /variables
-[with]: /functions/with
+[`with`]: /functions/go-template/with
diff --git a/docs/content/en/templates/lists/index.md b/docs/content/en/templates/lists/index.md
index f488f6fe9..e586460db 100644
--- a/docs/content/en/templates/lists/index.md
+++ b/docs/content/en/templates/lists/index.md
@@ -418,7 +418,7 @@ In the above example, you may want `{{ .Title }}` to point the `title` field you
{{ end }}
{{< /code >}}
-{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
+{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [`time.Format`] and the `.Key` in the result will be localized for the current language.
### By publish date
@@ -437,8 +437,7 @@ In the above example, you may want `{{ .Title }}` to point the `title` field you
{{ end }}
{{< /code >}}
-{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
-
+{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [`time.Format`] and the `.Key` in the result will be localized for the current language.
### By expiration date
@@ -457,7 +456,7 @@ In the above example, you may want `{{ .Title }}` to point the `title` field you
{{ end }}
{{< /code >}}
-{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
+{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [`time.Format`] and the `.Key` in the result will be localized for the current language.
### By last modified date
@@ -476,7 +475,7 @@ In the above example, you may want `{{ .Title }}` to point the `title` field you
{{ end }}
{{< /code >}}
-{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [time.Format](/functions/dateformat/) and The `.Key` in the result will be localized for the current language.
+{{< new-in "0.97.0" >}} `GroupByDate` accepts the same time layouts as in [`time.Format`] and the `.Key` in the result will be localized for the current language.
### By page parameter
@@ -567,11 +566,11 @@ Here is the ordering for the example that follows:
## Filtering and limiting lists
Sometimes you only want to list a subset of the available content. A
-common is to only display posts from [**main sections**][mainsections]
+common is to only display posts from [main sections]
on the blog's homepage.
-See the documentation on [`where` function][wherefunction] and
-[`first` function][firstfunction] for further details.
+See the documentation on [`where`] and
+[`first`] for further details.
[base]: /templates/base/
[bepsays]: https://bepsays.com/en/2016/12/19/hugo-018/
@@ -580,11 +579,10 @@ See the documentation on [`where` function][wherefunction] and
[front matter]: /content-management/front-matter/
[getpage]: /functions/getpage/
[homepage]: /templates/homepage/
-[homepage]: /templates/homepage/
[mentalmodel]: https://webstyleguide.com/wsg3/3-information-architecture/3-site-structure.html
[pagevars]: /variables/page/
[partials]: /templates/partials/
-[RSS 2.0]: https://cyber.harvard.edu/rss/rss.html "RSS 2.0 Specification"
+[RSS 2.0]: https://cyber.harvard.edu/rss/rss.html
[rss]: /templates/rss/
[sections]: /content-management/sections/
[sectiontemps]: /templates/section-templates/
@@ -593,6 +591,7 @@ See the documentation on [`where` function][wherefunction] and
[taxterms]: /templates/taxonomy-templates/#taxonomy-terms-templates
[taxvars]: /variables/taxonomy/
[views]: /templates/views/
-[wherefunction]: /functions/where/
-[firstfunction]: /functions/first/
-[mainsections]: /functions/where/#mainsections
+[`where`]: /functions/collections/where
+[`first]: /functions/first/
+[main sections]: /functions/collections/where#mainsections
+[`time.Format`]: /functions/time/format
diff --git a/docs/content/en/templates/lookup-order.md b/docs/content/en/templates/lookup-order.md
index 279c6aee2..c36956cb9 100644
--- a/docs/content/en/templates/lookup-order.md
+++ b/docs/content/en/templates/lookup-order.md
@@ -39,6 +39,66 @@ Section
Templates can live in either the project's or the themes' layout folders, and the most specific templates will be chosen. Hugo will interleave the lookups listed below, finding the most specific one either in the project or themes.
{{% /note %}}
+## Target a template
+
+You cannot change the lookup order to target a content page, but you can change a content page to target a template. Specify `type`, `layout`, or both in front matter.
+
+Consider this content structure:
+
+```text
+content/
+├── about.md
+└── contact.md
+```
+
+Files in the root of the content directory have a [content type] of `page`. To render these pages with a unique template, create a matching subdirectory:
+
+[content type]: /getting-started/glossary/#content-type
+
+```text
+layouts/
+└── page/
+ └── single.html
+```
+
+But the contact page probably has a form and requires a different template. In the front matter specify `layout`:
+
+{{< code-toggle file=content/contact.md copy=false >}}
+title = 'Contact'
+layout = 'contact'
+{{< /code-toggle >}}
+
+Then create the template for the contact page:
+
+```text
+layouts/
+└── page/
+ └── contact.html <-- renders contact.md
+ └── single.html <-- renders about.md
+```
+
+As a content type, the word `page` is vague. Perhaps `miscellaneous` would be better. Add `type` to the front matter of each page:
+
+{{< code-toggle file=content/about.md copy=false >}}
+title = 'About'
+type = 'miscellaneous'
+{{< /code-toggle >}}
+
+{{< code-toggle file=content/contact.md copy=false >}}
+title = 'Contact'
+type = 'miscellaneous'
+layout = 'contact'
+{{< /code-toggle >}}
+
+Now place the layouts in the corresponding directory:
+
+```text
+layouts/
+└── miscellaneous/
+ └── contact.html <-- renders contact.md
+ └── single.html <-- renders about.md
+```
+
## Home page
{{< datatable-filtered "output" "layouts" "Kind == home" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
diff --git a/docs/content/en/templates/menu-templates.md b/docs/content/en/templates/menu-templates.md
index 6c009cbdb..e2d141f06 100644
--- a/docs/content/en/templates/menu-templates.md
+++ b/docs/content/en/templates/menu-templates.md
@@ -49,6 +49,12 @@ This partial template recursively "walks" a menu structure, rendering a localize
{{- else if $page.HasMenuCurrent .Menu .}}
{{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }}
{{- end }}
+ {{- $name := .Name }}
+ {{- with .Identifier }}
+ {{- with T . }}
+ {{- $name = . }}
+ {{- end }}
+ {{- end }}
<li>
<a
{{- range $k, $v := $attrs }}
@@ -56,7 +62,7 @@ This partial template recursively "walks" a menu structure, rendering a localize
{{- printf " %s=%q" $k $v | safeHTMLAttr }}
{{- end }}
{{- end -}}
- >{{ or (T .Identifier) .Name | safeHTML }}</a>
+ >{{ $name }}</a>
{{- with .Children }}
<ul>
{{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
diff --git a/docs/content/en/templates/pagination.md b/docs/content/en/templates/pagination.md
index e1d09918a..6cd7f7435 100644
--- a/docs/content/en/templates/pagination.md
+++ b/docs/content/en/templates/pagination.md
@@ -12,7 +12,7 @@ aliases: [/extras/pagination,/doc/pagination/]
toc: true
---
-The real power of Hugo pagination shines when combined with the [`where` function][where] and its SQL-like operators: [`first`], [`last`], and [`after`]. You can even [order the content][lists] the way you've become used to with Hugo.
+The real power of Hugo pagination shines when combined with the [`where`] function and its SQL-like operators: [`first`], [`last`], and [`after`]. You can even [order the content][lists] the way you've become used to with Hugo.
## Configure pagination
@@ -146,9 +146,9 @@ The pages are built on the following form (`BLANK` means no value):
....
```
-[`first`]: /functions/first/
-[`last`]: /functions/last/
-[`after`]: /functions/after/
+[`first`]: /functions/collections/first/
+[`last`]: /functions/collections/last/
+[`after`]: /functions/collections/after/
[configuration]: /getting-started/configuration/
[lists]: /templates/lists/
-[where]: /functions/where/
+[`where`]: /functions/collections/where
diff --git a/docs/content/en/templates/partials.md b/docs/content/en/templates/partials.md
index a082be9a6..97cf93f71 100644
--- a/docs/content/en/templates/partials.md
+++ b/docs/content/en/templates/partials.md
@@ -177,6 +177,6 @@ The following `footer.html` partial template is used for [spf13.com](https://spf
[customize]: /hugo-modules/theme-components/
[listtemps]: /templates/lists/
[lookup order]: /templates/lookup-order/
-[partialcached]: /functions/partialcached/
+[partialcached]: /functions/partials/includecached
[singletemps]: /templates/single-page-templates/
[themes]: /themes/
diff --git a/docs/content/en/templates/section-templates.md b/docs/content/en/templates/section-templates.md
index 55a6c3004..b35009a2f 100644
--- a/docs/content/en/templates/section-templates.md
+++ b/docs/content/en/templates/section-templates.md
@@ -29,7 +29,7 @@ Every `Page` in Hugo has a `.Kind` attribute.
## `.Site.GetPage` with sections
-`Kind` can easily be combined with the [`where` function][where] in your templates to create kind-specific lists of content. This method is ideal for creating lists, but there are times where you may want to fetch just the index page of a single section via the section's path.
+`Kind` can easily be combined with the [`where`] function in your templates to create kind-specific lists of content. This method is ideal for creating lists, but there are times where you may want to fetch just the index page of a single section via the section's path.
The [`.GetPage` function][getpage] looks up an index page of a given `Kind` and `path`.
@@ -106,5 +106,5 @@ Which then returns the following:
[getpage]: /functions/getpage/
[lists]: /templates/lists/
[lookup]: /templates/lookup-order/
-[where]: /functions/where/
+[`where`]: /functions/collections/where
[sections]: /content-management/sections/
diff --git a/docs/content/en/templates/shortcode-templates.md b/docs/content/en/templates/shortcode-templates.md
index 6a6700380..41b52641c 100644
--- a/docs/content/en/templates/shortcode-templates.md
+++ b/docs/content/en/templates/shortcode-templates.md
@@ -12,7 +12,7 @@ weight: 130
toc: true
---
-Shortcodes are a means to consolidate templating into small, reusable snippets that you can embed directly inside your content. In this sense, you can think of shortcodes as the intermediary between [page and list templates][templates] and [basic content files].
+Shortcodes are a means to consolidate templating into small, reusable snippets that you can embed directly inside your content.
{{% note %}}
Hugo also ships with built-in shortcodes for common use cases. (See [Content Management: Shortcodes](/content-management/shortcodes/).)
@@ -349,7 +349,7 @@ This will output the following HTML. Note how the first two `img` shortcodes inh
## Error handling in shortcodes
-Use the [errorf](/functions/errorf) template func and [.Position](/variables/shortcodes/) variable to get useful error messages in shortcodes:
+Use the [errorf](/functions/fmt/errorf) template func and [.Position](/variables/shortcodes/) variable to get useful error messages in shortcodes:
```bash
{{ with .Get "name" }}
@@ -402,7 +402,7 @@ The same inline shortcode can be reused later in the same content file, with dif
[built-in shortcode]: /content-management/shortcodes/
[config]: /getting-started/configuration/
[Content Management: Shortcodes]: /content-management/shortcodes/#using-hugo-s-built-in-shortcodes
-[source organization]: /getting-started/directory-structure/#directory-structure-explained
+[source organization]: /getting-started/directory-structure/
[docsshortcodes]: https://github.com/gohugoio/hugo/tree/master/docs/layouts/shortcodes
[figure]: /content-management/shortcodes/#figure
[hugosc]: /content-management/shortcodes/#using-hugo-s-built-in-shortcodes
@@ -410,6 +410,6 @@ The same inline shortcode can be reused later in the same content file, with dif
[pagevars]: /variables/page/
[parent]: /variables/shortcodes/
[shortcodesvars]: /variables/shortcodes/
-[spfscs]: https://github.com/spf13/spf13.com/tree/master/layouts/shortcodes
+[spfscs]: https://github.com/spf13/spf13.com/tree/master/layouts/shortcodes
[vimeoexample]: #single-flexible-example-vimeo
[youtubeshortcode]: /content-management/shortcodes/#youtube
diff --git a/docs/content/en/templates/single-page-templates.md b/docs/content/en/templates/single-page-templates.md
index 12e04db96..a32e8231c 100644
--- a/docs/content/en/templates/single-page-templates.md
+++ b/docs/content/en/templates/single-page-templates.md
@@ -82,4 +82,4 @@ To easily generate new instances of a content type (e.g., new `.md` files in a s
[section]: /content-management/sections/
[site variables]: /variables/site/
[spf13]: https://spf13.com/
-[`with`]: /functions/with/
+[`with`]: /functions/go-template/with/
diff --git a/docs/content/en/templates/taxonomy-templates.md b/docs/content/en/templates/taxonomy-templates.md
index 88aafe73f..1b15bd4ef 100644
--- a/docs/content/en/templates/taxonomy-templates.md
+++ b/docs/content/en/templates/taxonomy-templates.md
@@ -269,7 +269,7 @@ This may take the form of a tag cloud, a menu, or simply a list.
The following example displays all terms in a site's tags taxonomy:
-### Example: list all site tags
+### Example: list all site tags
```go-html-template
<ul>
@@ -322,12 +322,7 @@ Because taxonomies are lists, the [`.GetPage` function][getpage] can be used to
</ul>
{{< /code >}}
-<!-- TODO: ### `.Site.GetPage` Taxonomy List Example -->
-
-<!-- TODO: ### `.Site.GetPage` Taxonomy Terms Example -->
-
-
-[delimit]: /functions/delimit/
+[delimit]: /functions/collections/delimit/
[getpage]: /functions/getpage/
[lists]: /templates/lists/
[renderlists]: /templates/lists/
diff --git a/docs/content/en/troubleshooting/build-performance.md b/docs/content/en/troubleshooting/build-performance.md
index b4bbe28da..a0fd98e49 100644
--- a/docs/content/en/troubleshooting/build-performance.md
+++ b/docs/content/en/troubleshooting/build-performance.md
@@ -85,4 +85,4 @@ parameters to `partialCached` beyond the initial context. See the
`partialCached` documentation for more details.
{{% /note %}}
-[partialCached]: /functions/partialcached
+[partialCached]: /functions/partials/includecached
diff --git a/docs/content/en/troubleshooting/faq.md b/docs/content/en/troubleshooting/faq.md
index 1ec788ab8..bc29bfba1 100644
--- a/docs/content/en/troubleshooting/faq.md
+++ b/docs/content/en/troubleshooting/faq.md
@@ -17,7 +17,7 @@ aliases: [/faq/]
**Note:** The answers/solutions presented below are short, and may not be enough to solve your problem. Visit [Hugo Discourse](https://discourse.gohugo.io/) and use the search. It that does not help, start a new topic and ask your questions.
{{% /note %}}
-## I can't see my content!
+## I can't see my content
Is your Markdown file [in draft mode](/content-management/front-matter/#front-matter-variables)? When testing, run `hugo server` with the `-D` or `--buildDrafts` [switch](/getting-started/usage/#draft-future-and-expired-content).
diff --git a/docs/content/en/variables/_index.md b/docs/content/en/variables/_index.md
index 1ad42a9b3..c1f80a62c 100644
--- a/docs/content/en/variables/_index.md
+++ b/docs/content/en/variables/_index.md
@@ -15,4 +15,4 @@ aliases: [/templates/variables/]
Hugo's templates are context aware and make a large number of values available to you as you're creating views for your website.
-[Go templates]: /templates/introduction/ "Understand context in Go templates by learning the language's fundamental templating functions."
+[Go templates]: /templates/introduction/
diff --git a/docs/content/en/variables/git.md b/docs/content/en/variables/git.md
index 4c412efdd..8928ca6f0 100644
--- a/docs/content/en/variables/git.md
+++ b/docs/content/en/variables/git.md
@@ -20,7 +20,7 @@ Hugo's Git integrations should be fairly performant but *can* increase your buil
1. The Hugo site must be in a Git-enabled directory.
2. The Git executable must be installed and in your system `PATH`.
-3. The `.GitInfo` feature must be enabled in your Hugo project by passing `--enableGitInfo` flag on the command line or by setting `enableGitInfo` to `true` in your [site's configuration file][configuration].
+3. The `.GitInfo` feature must be enabled in your Hugo project by passing `--enableGitInfo` flag on the command line or by setting `enableGitInfo` to `true` in your [site's configuration file][configuration].
## The `.GitInfo` object
@@ -52,8 +52,7 @@ If the `.GitInfo` feature is enabled, `.Lastmod` (on `Page`) is fetched from Git
## Hosting considerations
-On the site host, your repository must be "deep-cloned," so the returned `.GitInfo` data will be accurate. Otherwise, your site may display only data from your latest commit. Where it's not possible to configure a host's cloning depth, you must handle this through CI/CD (*e.g.*, a
-GitHub Action or GitLab CI/CD). See the following table:
+On the site host, your repository must be "deep-cloned," so the returned `.GitInfo` data will be accurate. Otherwise, your site may display only data from your latest commit. Where it's not possible to configure a host's cloning depth, you must handle this through CI/CD (*e.g.*, a GitHub Action or GitLab CI/CD). See the following table:
| Hosting service | Clone depth | Configurable? |
| :-------------- | :---------- | :-----------: |
diff --git a/docs/content/en/variables/page.md b/docs/content/en/variables/page.md
index 64cd80184..16e5f31ff 100644
--- a/docs/content/en/variables/page.md
+++ b/docs/content/en/variables/page.md
@@ -97,7 +97,7 @@ The following is a list of page-level variables. Many of these will be defined i
: The Permanent link for this page; see [Permalinks](/content-management/urls/)
.Plain
-: The Page content stripped of HTML tags and presented as a string. You may need to pipe the result through the [`htmlUnescape`](/functions/htmlunescape/) function when rendering this value with the HTML [output format](/templates/output-formats#output-format-definitions).
+: The Page content stripped of HTML tags and presented as a string. You may need to pipe the result through the [`htmlUnescape`](/functions/transform/htmlunescape) function when rendering this value with the HTML [output format](/templates/output-formats#output-format-definitions).
.PlainWords
: The slice of strings that results from splitting .Plain into words, as defined in Go's [strings.Fields](https://pkg.go.dev/strings#Fields).
@@ -195,7 +195,29 @@ List pages receive the following page collections in [context](/getting-started/
Also see [Sections](/content-management/sections/).
-{{< readfile file="/content/en/readfiles/sectionvars.md" markdown="true" >}}
+.CurrentSection
+: The page's current section. The value can be the page itself if it is a section or the homepage.
+
+.FirstSection
+: The page's first section below root, e.g. `/docs`, `/blog` etc.
+
+.InSection $anotherPage
+: Whether the given page is in the current section.
+
+.IsAncestor $anotherPage
+: Whether the current page is an ancestor of the given page.
+
+.IsDescendant $anotherPage
+: Whether the current page is a descendant of the given page.
+
+.Parent
+: A section's parent section or a page's section.
+
+.Section
+: The [section](/content-management/sections/) this content belongs to. **Note:** For nested sections, this is the first path element in the directory, for example, `/blog/funny/mypost/ => blog`.
+
+.Sections
+: The [sections](/content-management/sections/) below this content.
## Page fragments
@@ -230,23 +252,6 @@ Also see the [Go Doc](https://pkg.go.dev/github.com/gohugoio/[email protected]/marku
`.Fragments` are safe to call from render hooks, even on the page you're on (`.Page.Fragments`). For shortcodes we recommend that all `.Fragments` usage is nested inside the `{{</**/>}}` shortcode delimiter (`{{%/**/%}}` takes part in the ToC creation so it's easy to end up in a situation where you bite yourself in the tail).
-
-## The global page function
-
-{{< new-in "0.111.1" >}}
-
-Hugo almost always passes a `Page` as the data context into the top level template (e.g. `single.html`) (the one exception is the multihost sitemap template). This means that you can access the current page with the `.` variable in the template.
-
-But when you're deeply nested inside `.Render`, partial etc., accessing that `Page` object isn't always practical or possible.
-
-For this reason, Hugo provides a global `page` function that you can use to access the current page from anywhere in any template.
-
-```go-html-template
-{{ page.Title }}
-```
-
-There are one caveat with this, and this isn't new, but it's worth mentioning here: There are situations in Hugo where you may see a cached value, e.g. when using `partialCached` or in a shortcode.
-
## The `.RenderShortcodes` method {#rendershortcodes}
{{< new-in "0.117.0" >}} This renders all the shortcodes in the content, preserving the surrounding markup (e.g. Markdown) as is.
diff --git a/docs/content/en/variables/site.md b/docs/content/en/variables/site.md
index 55e9a7512..2b9402c5f 100644
--- a/docs/content/en/variables/site.md
+++ b/docs/content/en/variables/site.md
@@ -57,19 +57,19 @@ All the methods below, e.g. `.Site.RegularPages` can also be reached via the glo
: a string representing the language tag as defined in the site configuration.
.Site.LanguagePrefix
-: this can be used to prefix URLs to point to the correct language. It will even work when there is only one defined language. See also the functions [absLangURL](/functions/abslangurl/) and [relLangURL](/functions/rellangurl).
+: this can be used to prefix URLs to point to the correct language. It will even work when there is only one defined language. See also the functions [absLangURL](/functions/urls/abslangurl) and [relLangURL](/functions/urls/rellangurl).
.Site.Languages
: an ordered list (ordered by defined weight) of languages.
.Site.LastChange
-: a string representing the date/time of the most recent change to your site. This string is based on the [`date` variable in the front matter](/content-management/front-matter) of your content pages.
+: a [time.Time](https://godoc.org/time#Time) value representing the date/time of the most recent change to your site.
.Site.Menus
: all the menus in the site.
.Site.Pages
-: array of all content ordered by Date with the newest first. This array contains only the pages in the current language.
+: array of all content ordered by Date with the newest first. This array contains only the pages in the current language.
.Site.RegularPages
: a shortcut to the *regular* page collection. `.Site.RegularPages` is equivalent to `where .Site.Pages "Kind" "page"`.
diff --git a/docs/content/en/variables/taxonomy.md b/docs/content/en/variables/taxonomy.md
index 3f0b799c8..2c1e051a9 100644
--- a/docs/content/en/variables/taxonomy.md
+++ b/docs/content/en/variables/taxonomy.md
@@ -96,7 +96,7 @@ Access the entire taxonomy data structure from any template with `site.Taxonomie
Access a subset of the taxonomy data structure by chaining one or more identifiers, or by using the [`index`] function with one or more keys. For example, to access the collection of weighted content pages related to the news category, use either of the following:
-[`index`]: /functions/index-function/
+[`index`]: /functions/collections/indexfunction/
```go-html-template
{{ $pages := site.Taxonomies.categories.news }}
diff --git a/docs/go.mod b/docs/go.mod
index 2338186ca..8b99de36b 100644
--- a/docs/go.mod
+++ b/docs/go.mod
@@ -2,4 +2,4 @@ module github.com/gohugoio/hugoDocs
go 1.16
-require github.com/gohugoio/gohugoioTheme v0.0.0-20230812102551-06f8256e7ee5 // indirect
+require github.com/gohugoio/gohugoioTheme v0.0.0-20230927165800-342e2c850f18 // indirect
diff --git a/docs/go.sum b/docs/go.sum
index c5b5397ab..9ff866436 100644
--- a/docs/go.sum
+++ b/docs/go.sum
@@ -75,3 +75,5 @@ github.com/gohugoio/gohugoioTheme v0.0.0-20230630055807-9874cd863bc5 h1:5QDXCq7G
github.com/gohugoio/gohugoioTheme v0.0.0-20230630055807-9874cd863bc5/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
github.com/gohugoio/gohugoioTheme v0.0.0-20230812102551-06f8256e7ee5 h1:QoImGtz9EWmovn3d0vfREKf1ybroA+oO/yFCW/BmWSE=
github.com/gohugoio/gohugoioTheme v0.0.0-20230812102551-06f8256e7ee5/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
+github.com/gohugoio/gohugoioTheme v0.0.0-20230927165800-342e2c850f18 h1:fwC86MGMw2yX2tIR+hc+58jlU4pjvc3HUDJ/mTB07Ig=
+github.com/gohugoio/gohugoioTheme v0.0.0-20230927165800-342e2c850f18/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
diff --git a/docs/hugo.toml b/docs/hugo.toml
index 987026d0c..46486aec9 100644
--- a/docs/hugo.toml
+++ b/docs/hugo.toml
@@ -3,7 +3,6 @@
baseURL = "https://gohugo.io/"
defaultContentLanguage = "en"
enableEmoji = true
-googleAnalytics = "G-MBZGKNMDWC"
ignoreErrors = ["error-remote-getjson", "error-missing-instagram-accesstoken"]
languageCode = "en-us"
paginate = 100
@@ -14,6 +13,9 @@ title = "Hugo"
# We do redirects via Netlify's _redirects file, generated by Hugo (see "outputs" below).
disableAliases = true
+[services.googleAnalytics]
+ID = 'G-MBZGKNMDWC'
+
[minify]
[minify.tdewolff]
[minify.tdewolff.html]
@@ -67,6 +69,10 @@ disableAliases = true
includeNewer = true
toLower = false
[[related.indices]]
+ toLower = true
+ name = "relatedFunctions"
+ weight = 60
+ [[related.indices]]
name = "keywords"
weight = 60
[[related.indices]]
@@ -79,10 +85,6 @@ disableAliases = true
applyFilter = false
weight = 60
cardinalityThreshold = 50
- [[related.indices]]
- name = "date"
- weight = 10
- pattern = "2006"
[social]
twitter = "GoHugoIO"
diff --git a/docs/layouts/_default/page.html b/docs/layouts/_default/page.html
new file mode 100644
index 000000000..2435e3ed7
--- /dev/null
+++ b/docs/layouts/_default/page.html
@@ -0,0 +1,34 @@
+<header class="flex-none w-100">
+ {{ if .Params.categories }}
+ {{ range .Params.categories }}
+ <a href="{{ "/categories/" | relLangURL }}{{ . | urlize }}" class="f6 fw8 mb0 link mid-gray dim mr3">
+ {{ humanize . | upper }}
+ </a>
+ {{ end }}
+ {{end}}
+ <h1 class="lh-title mb3 mv0 pt3 primary-color-dark">
+ {{ .Title }}
+ </h1>
+</header>
+
+<aside class="bt bw1 pt3 mt2 mid-gray b--mid-gray fn w-100">
+ {{ with .Params.description }}
+ <div class="f4 fw4 lh-copy">
+ {{ . | markdownify }}
+ </div>
+ {{ end }}
+
+ <!--
+ NOTE: Removed to test builds without it.
+ partial "components/author-github-data" (dict "context" . "size" "110") -->
+</aside>
+
+{{ with .Params.featured_image_path }}
+ <img src="{{ . }}" alt="Featured Image for {{ $.Title }}" class="mw-100">
+{{ end }}
+
+<div class="prose prose-{{ .Type }}" id="prose">
+ {{- partial "docs/functions-signatures.html" . -}}
+ {{- partial "docs/functions-aliases.html" . -}}
+ {{ .Content }}
+</div>
diff --git a/docs/layouts/partials/docs/functions-aliases.html b/docs/layouts/partials/docs/functions-aliases.html
new file mode 100644
index 000000000..b0ba9be02
--- /dev/null
+++ b/docs/layouts/partials/docs/functions-aliases.html
@@ -0,0 +1,12 @@
+{{- with .Params.function.aliases }}
+ {{- $label := "Alias" }}
+ {{- if gt (len .) 1 }}
+ {{- $label = "Aliases" }}
+ {{- end }}
+ <h2 class="minor mb1 primary-color-dark">{{ $label }}</h2>
+ {{- range . }}
+ <pre class="f5 mb4 ph3 pv2 bg-light-gray" style="border-left:4px solid #0594CB;">
+ {{- . -}}
+ </pre>
+ {{- end }}
+{{- end -}}
diff --git a/docs/layouts/partials/docs/functions-signatures.html b/docs/layouts/partials/docs/functions-signatures.html
new file mode 100644
index 000000000..07c9cb768
--- /dev/null
+++ b/docs/layouts/partials/docs/functions-signatures.html
@@ -0,0 +1,12 @@
+{{- with .Params.function.signatures }}
+ <h2 class="minor mb1 pt4 primary-color-dark">Syntax</h2>
+ {{- range . }}
+ {{- $signature := . }}
+ {{- if $.Params.function.returnType }}
+ {{- $signature = printf "%s ⟼ %s" . $.Params.function.returnType }}
+ {{- end }}
+ <pre class="f5 mb4 ph3 pv2 bg-light-gray" style="border-left:4px solid #0594CB;">
+ {{- $signature -}}
+ </pre>
+ {{- end }}
+{{- end -}}
diff --git a/docs/layouts/partials/related.html b/docs/layouts/partials/related.html
new file mode 100644
index 000000000..05a2e9160
--- /dev/null
+++ b/docs/layouts/partials/related.html
@@ -0,0 +1,17 @@
+{{- $heading := "See also" }}
+{{- $related := site.RegularPages.Related . | first 5 }}
+
+{{- if eq .Type "functions" }}
+ {{- $heading = "Related functions" }}
+ {{- $opts := dict "document" . "indices" (slice "relatedFunctions") }}
+ {{- $related = site.RegularPages.Related $opts | first 7 }}
+{{- end }}
+
+{{- with $related }}
+ <h2>{{ $heading }}</h2>
+ <ul>
+ {{- range . }}
+ <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
+ {{- end }}
+ </ul>
+{{- end }}
diff --git a/docs/netlify.toml b/docs/netlify.toml
index a29a2ce96..d65e08c25 100644
--- a/docs/netlify.toml
+++ b/docs/netlify.toml
@@ -3,7 +3,7 @@
command = "hugo --gc --minify"
[build.environment]
- HUGO_VERSION = "0.118.2"
+ HUGO_VERSION = "0.119.0"
[context.production.environment]
HUGO_ENV = "production"
diff --git a/docs/resources/.gitattributes b/docs/resources/.gitattributes
deleted file mode 100644
index a205a8e9d..000000000
--- a/docs/resources/.gitattributes
+++ /dev/null
@@ -1,2 +0,0 @@
-*.* linguist-generated=true
-*.* -diff -merge \ No newline at end of file
diff --git a/docs/resources/_gen/assets/css/output/css/app.css_d11fe7b62c27961c87ecd0f2490357b9.content b/docs/resources/_gen/assets/css/output/css/app.css_d11fe7b62c27961c87ecd0f2490357b9.content
deleted file mode 100644
index 42d7140c5..000000000
--- a/docs/resources/_gen/assets/css/output/css/app.css_d11fe7b62c27961c87ecd0f2490357b9.content
+++ /dev/null
@@ -1 +0,0 @@
-@font-face{font-family:muli;font-style:normal;font-display:swap;font-weight:200;src:local('Muli Extra Light '),local('Muli-Extra Light'),url(/fonts/muli-latin-200.woff2) format('woff2'),url(/fonts/muli-latin-200.woff) format('woff')}@font-face{font-family:muli;font-style:italic;font-display:swap;font-weight:200;src:local('Muli Extra Light italic'),local('Muli-Extra Lightitalic'),url(/fonts/muli-latin-200italic.woff2) format('woff2'),url(/fonts/muli-latin-200italic.woff) format('woff')}@font-face{font-family:muli;font-style:normal;font-display:swap;font-weight:300;src:local('Muli Light '),local(Muli-Light),url(/fonts/muli-latin-300.woff2) format('woff2'),url(/fonts/muli-latin-300.woff) format('woff')}@font-face{font-family:muli;font-style:italic;font-display:swap;font-weight:300;src:local('Muli Light italic'),local(Muli-Lightitalic),url(/fonts/muli-latin-300italic.woff2) format('woff2'),url(/fonts/muli-latin-300italic.woff) format('woff')}@font-face{font-family:muli;font-style:normal;font-display:swap;font-weight:400;src:local('Muli Regular '),local(Muli-Regular),url(/fonts/muli-latin-400.woff2) format('woff2'),url(/fonts/muli-latin-400.woff) format('woff')}@font-face{font-family:muli;font-style:italic;font-display:swap;font-weight:400;src:local('Muli Regular italic'),local(Muli-Regularitalic),url(/fonts/muli-latin-400italic.woff2) format('woff2'),url(/fonts/muli-latin-400italic.woff) format('woff')}@font-face{font-family:muli;font-style:normal;font-display:swap;font-weight:600;src:local('Muli SemiBold '),local(Muli-SemiBold),url(/fonts/muli-latin-600.woff2) format('woff2'),url(/fonts/muli-latin-600.woff) format('woff')}@font-face{font-family:muli;font-style:italic;font-display:swap;font-weight:600;src:local('Muli SemiBold italic'),local(Muli-SemiBolditalic),url(/fonts/muli-latin-600italic.woff2) format('woff2'),url(/fonts/muli-latin-600italic.woff) format('woff')}@font-face{font-family:muli;font-style:normal;font-display:swap;font-weight:700;src:local('Muli Bold '),local(Muli-Bold),url(/fonts/muli-latin-700.woff2) format('woff2'),url(/fonts/muli-latin-700.woff) format('woff')}@font-face{font-family:muli;font-style:italic;font-display:swap;font-weight:700;src:local('Muli Bold italic'),local(Muli-Bolditalic),url(/fonts/muli-latin-700italic.woff2) format('woff2'),url(/fonts/muli-latin-700italic.woff) format('woff')}@font-face{font-family:muli;font-style:normal;font-display:swap;font-weight:800;src:local('Muli ExtraBold '),local(Muli-ExtraBold),url(/fonts/muli-latin-800.woff2) format('woff2'),url(/fonts/muli-latin-800.woff) format('woff')}@font-face{font-family:muli;font-style:italic;font-display:swap;font-weight:800;src:local('Muli ExtraBold italic'),local(Muli-ExtraBolditalic),url(/fonts/muli-latin-800italic.woff2) format('woff2'),url(/fonts/muli-latin-800italic.woff) format('woff')}@font-face{font-family:muli;font-style:normal;font-display:swap;font-weight:900;src:local('Muli Black '),local(Muli-Black),url(/fonts/muli-latin-900.woff2) format('woff2'),url(/fonts/muli-latin-900.woff) format('woff')}@font-face{font-family:muli;font-style:italic;font-display:swap;font-weight:900;src:local('Muli Black italic'),local(Muli-Blackitalic),url(/fonts/muli-latin-900italic.woff2) format('woff2'),url(/fonts/muli-latin-900italic.woff) format('woff')}/*!TACHYONS v4.7.0 | http://tachyons.io*//*!normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,article,aside,section,main,nav,footer,header,form,fieldset,legend,pre,code,a,h1,h2,h3,h4,h5,h6,p,ul,ol,li,dl,dt,dd,blockquote,figcaption,figure,textarea,table,td,th,tr,input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],.border-box{-webkit-box-sizing:border-box;box-sizing:border-box}img{max-width:100%}.cover{background-size:cover!important}.contain{background-size:contain!important}@media screen and (min-width:30em){.cover-ns{background-size:cover!important}.contain-ns{background-size:contain!important}}@media screen and (min-width:30em) and (max-width:60em){.cover-m{background-size:cover!important}.contain-m{background-size:contain!important}}@media screen and (min-width:60em){.cover-l{background-size:cover!important}.contain-l{background-size:contain!important}}.bg-center{background-repeat:no-repeat;background-position:50%}.bg-top{background-repeat:no-repeat;background-position:50% 0}.bg-right{background-repeat:no-repeat;background-position:50% 100%}.bg-bottom{background-repeat:no-repeat;background-position:50% 100%}.bg-left{background-repeat:no-repeat;background-position:50% 0}@media screen and (min-width:30em){.bg-center-ns{background-repeat:no-repeat;background-position:50%}.bg-top-ns{background-repeat:no-repeat;background-position:50% 0}.bg-right-ns{background-repeat:no-repeat;background-position:50% 100%}.bg-bottom-ns{background-repeat:no-repeat;background-position:50% 100%}.bg-left-ns{background-repeat:no-repeat;background-position:50% 0}}@media screen and (min-width:30em) and (max-width:60em){.bg-center-m{background-repeat:no-repeat;background-position:50%}.bg-top-m{background-repeat:no-repeat;background-position:50% 0}.bg-right-m{background-repeat:no-repeat;background-position:50% 100%}.bg-bottom-m{background-repeat:no-repeat;background-position:50% 100%}.bg-left-m{background-repeat:no-repeat;background-position:50% 0}}@media screen and (min-width:60em){.bg-center-l{background-repeat:no-repeat;background-position:50%}.bg-top-l{background-repeat:no-repeat;background-position:50% 0}.bg-right-l{background-repeat:no-repeat;background-position:50% 100%}.bg-bottom-l{background-repeat:no-repeat;background-position:50% 100%}.bg-left-l{background-repeat:no-repeat;background-position:50% 0}}.ba{border-style:solid;border-width:1px}.bt{border-top-style:solid;border-top-width:1px}.br{border-right-style:solid;border-right-width:1px}.bb{border-bottom-style:solid;border-bottom-width:1px}.bl{border-left-style:solid;border-left-width:1px}.bn{border-style:none;border-width:0}@media screen and (min-width:30em){.ba-ns{border-style:solid;border-width:1px}.bt-ns{border-top-style:solid;border-top-width:1px}.br-ns{border-right-style:solid;border-right-width:1px}.bb-ns{border-bottom-style:solid;border-bottom-width:1px}.bl-ns{border-left-style:solid;border-left-width:1px}.bn-ns{border-style:none;border-width:0}}@media screen and (min-width:30em) and (max-width:60em){.ba-m{border-style:solid;border-width:1px}.bt-m{border-top-style:solid;border-top-width:1px}.br-m{border-right-style:solid;border-right-width:1px}.bb-m{border-bottom-style:solid;border-bottom-width:1px}.bl-m{border-left-style:solid;border-left-width:1px}.bn-m{border-style:none;border-width:0}}@media screen and (min-width:60em){.ba-l{border-style:solid;border-width:1px}.bt-l{border-top-style:solid;border-top-width:1px}.br-l{border-right-style:solid;border-right-width:1px}.bb-l{border-bottom-style:solid;border-bottom-width:1px}.bl-l{border-left-style:solid;border-left-width:1px}.bn-l{border-style:none;border-width:0}}.b--black{border-color:#000}.b--near-black{border-color:#111}.b--dark-gray{border-color:#333}.b--mid-gray{border-color:#555}.b--gray{border-color:#777}.b--silver{border-color:#999}.b--light-silver{border-color:#aaa}.b--moon-gray{border-color:#ccc}.b--light-gray{border-color:#eee}.b--near-white{border-color:#f4f4f4}.b--white{border-color:#fff}.b--white-90{border-color:rgba(255,255,255,.9)}.b--white-80{border-color:rgba(255,255,255,.8)}.b--white-70{border-color:rgba(255,255,255,.7)}.b--white-60{border-color:rgba(255,255,255,.6)}.b--white-50{border-color:rgba(255,255,255,.5)}.b--white-40{border-color:rgba(255,255,255,.4)}.b--white-30{border-color:rgba(255,255,255,.3)}.b--white-20{border-color:rgba(255,255,255,.2)}.b--white-10{border-color:rgba(255,255,255,.1)}.b--white-05{border-color:rgba(255,255,255,.05)}.b--white-025{border-color:rgba(255,255,255,.025)}.b--white-0125{border-color:rgba(255,255,255,.0125)}.b--black-90{border-color:rgba(0,0,0,.9)}.b--black-80{border-color:rgba(0,0,0,.8)}.b--black-70{border-color:rgba(0,0,0,.7)}.b--black-60{border-color:rgba(0,0,0,.6)}.b--black-50{border-color:rgba(0,0,0,.5)}.b--black-40{border-color:rgba(0,0,0,.4)}.b--black-30{border-color:rgba(0,0,0,.3)}.b--black-20{border-color:rgba(0,0,0,.2)}.b--black-10{border-color:rgba(0,0,0,.1)}.b--black-05{border-color:rgba(0,0,0,.05)}.b--black-025{border-color:rgba(0,0,0,.025)}.b--black-0125{border-color:rgba(0,0,0,.0125)}.b--dark-red{border-color:#e7040f}.b--red{border-color:#ff4136}.b--light-red{border-color:#ff725c}.b--orange{border-color:#ff6300}.b--gold{border-color:#ffb700}.b--yellow{border-color:gold}.b--light-yellow{border-color:#fbf1a9}.b--purple{border-color:#5e2ca5}.b--light-purple{border-color:#a463f2}.b--dark-pink{border-color:#d5008f}.b--hot-pink{border-color:#ff41b4}.b--pink{border-color:#ff80cc}.b--light-pink{border-color:#ffa3d7}.b--dark-green{border-color:#137752}.b--green{border-color:#19a974}.b--light-green{border-color:#9eebcf}.b--navy{border-color:#001b44}.b--dark-blue{border-color:#00449e}.b--blue{border-color:#0594cb}.b--light-blue{border-color:#96ccff}.b--lightest-blue{border-color:#cdecff}.b--washed-blue{border-color:#f6fffe}.b--washed-green{border-color:#e8fdf5}.b--washed-yellow{border-color:#fffceb}.b--washed-red{border-color:#ffdfdf}.b--transparent{border-color:transparent}.b--inherit{border-color:inherit}.br0{border-radius:0}.br1{border-radius:.125rem}.br2{border-radius:.25rem}.br3{border-radius:.5rem}.br4{border-radius:1rem}.br-100{border-radius:100%}.br-pill{border-radius:9999px}.br--bottom{border-top-left-radius:0;border-top-right-radius:0}.br--top{border-bottom-left-radius:0;border-bottom-right-radius:0}.br--right{border-top-left-radius:0;border-bottom-left-radius:0}.br--left{border-top-right-radius:0;border-bottom-right-radius:0}@media screen and (min-width:30em){.br0-ns{border-radius:0}.br1-ns{border-radius:.125rem}.br2-ns{border-radius:.25rem}.br3-ns{border-radius:.5rem}.br4-ns{border-radius:1rem}.br-100-ns{border-radius:100%}.br-pill-ns{border-radius:9999px}.br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.br--top-ns{border-bottom-left-radius:0;border-bottom-right-radius:0}.br--right-ns{border-top-left-radius:0;border-bottom-left-radius:0}.br--left-ns{border-top-right-radius:0;border-bottom-right-radius:0}}@media screen and (min-width:30em) and (max-width:60em){.br0-m{border-radius:0}.br1-m{border-radius:.125rem}.br2-m{border-radius:.25rem}.br3-m{border-radius:.5rem}.br4-m{border-radius:1rem}.br-100-m{border-radius:100%}.br-pill-m{border-radius:9999px}.br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.br--top-m{border-bottom-left-radius:0;border-bottom-right-radius:0}.br--right-m{border-top-left-radius:0;border-bottom-left-radius:0}.br--left-m{border-top-right-radius:0;border-bottom-right-radius:0}}@media screen and (min-width:60em){.br0-l{border-radius:0}.br1-l{border-radius:.125rem}.br2-l{border-radius:.25rem}.br3-l{border-radius:.5rem}.br4-l{border-radius:1rem}.br-100-l{border-radius:100%}.br-pill-l{border-radius:9999px}.br--bottom-l{border-top-left-radius:0;border-top-right-radius:0}.br--top-l{border-bottom-left-radius:0;border-bottom-right-radius:0}.br--right-l{border-top-left-radius:0;border-bottom-left-radius:0}.br--left-l{border-top-right-radius:0;border-bottom-right-radius:0}}.b--dotted{border-style:dotted}.b--dashed{border-style:dashed}.b--solid{border-style:solid}.b--none{border-style:none}@media screen and (min-width:30em){.b--dotted-ns{border-style:dotted}.b--dashed-ns{border-style:dashed}.b--solid-ns{border-style:solid}.b--none-ns{border-style:none}}@media screen and (min-width:30em) and (max-width:60em){.b--dotted-m{border-style:dotted}.b--dashed-m{border-style:dashed}.b--solid-m{border-style:solid}.b--none-m{border-style:none}}@media screen and (min-width:60em){.b--dotted-l{border-style:dotted}.b--dashed-l{border-style:dashed}.b--solid-l{border-style:solid}.b--none-l{border-style:none}}.bw0{border-width:0}.bw1{border-width:.125rem}.bw2{border-width:.25rem}.bw3{border-width:.5rem}.bw4{border-width:1rem}.bw5{border-width:2rem}.bt-0{border-top-width:0}.br-0{border-right-width:0}.bb-0{border-bottom-width:0}.bl-0{border-left-width:0}@media screen and (min-width:30em){.bw0-ns{border-width:0}.bw1-ns{border-width:.125rem}.bw2-ns{border-width:.25rem}.bw3-ns{border-width:.5rem}.bw4-ns{border-width:1rem}.bw5-ns{border-width:2rem}.bt-0-ns{border-top-width:0}.br-0-ns{border-right-width:0}.bb-0-ns{border-bottom-width:0}.bl-0-ns{border-left-width:0}}@media screen and (min-width:30em) and (max-width:60em){.bw0-m{border-width:0}.bw1-m{border-width:.125rem}.bw2-m{border-width:.25rem}.bw3-m{border-width:.5rem}.bw4-m{border-width:1rem}.bw5-m{border-width:2rem}.bt-0-m{border-top-width:0}.br-0-m{border-right-width:0}.bb-0-m{border-bottom-width:0}.bl-0-m{border-left-width:0}}@media screen and (min-width:60em){.bw0-l{border-width:0}.bw1-l{border-width:.125rem}.bw2-l{border-width:.25rem}.bw3-l{border-width:.5rem}.bw4-l{border-width:1rem}.bw5-l{border-width:2rem}.bt-0-l{border-top-width:0}.br-0-l{border-right-width:0}.bb-0-l{border-bottom-width:0}.bl-0-l{border-left-width:0}}.shadow-1{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}@media screen and (min-width:30em){.shadow-1-ns{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-ns{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-ns{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-ns{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-ns{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:30em) and (max-width:60em){.shadow-1-m{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-m{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-m{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-m{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-m{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:60em){.shadow-1-l{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-l{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-l{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-l{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-l{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.top-1{top:1rem}.right-1{right:1rem}.bottom-1{bottom:1rem}.left-1{left:1rem}.top-2{top:2rem}.right-2{right:2rem}.bottom-2{bottom:2rem}.left-2{left:2rem}.top--1{top:-1rem}.right--1{right:-1rem}.bottom--1{bottom:-1rem}.left--1{left:-1rem}.top--2{top:-2rem}.right--2{right:-2rem}.bottom--2{bottom:-2rem}.left--2{left:-2rem}.absolute--fill{top:0;right:0;bottom:0;left:0}@media screen and (min-width:30em){.top-0-ns{top:0}.left-0-ns{left:0}.right-0-ns{right:0}.bottom-0-ns{bottom:0}.top-1-ns{top:1rem}.left-1-ns{left:1rem}.right-1-ns{right:1rem}.bottom-1-ns{bottom:1rem}.top-2-ns{top:2rem}.left-2-ns{left:2rem}.right-2-ns{right:2rem}.bottom-2-ns{bottom:2rem}.top--1-ns{top:-1rem}.right--1-ns{right:-1rem}.bottom--1-ns{bottom:-1rem}.left--1-ns{left:-1rem}.top--2-ns{top:-2rem}.right--2-ns{right:-2rem}.bottom--2-ns{bottom:-2rem}.left--2-ns{left:-2rem}.absolute--fill-ns{top:0;right:0;bottom:0;left:0}}@media screen and (min-width:30em) and (max-width:60em){.top-0-m{top:0}.left-0-m{left:0}.right-0-m{right:0}.bottom-0-m{bottom:0}.top-1-m{top:1rem}.left-1-m{left:1rem}.right-1-m{right:1rem}.bottom-1-m{bottom:1rem}.top-2-m{top:2rem}.left-2-m{left:2rem}.right-2-m{right:2rem}.bottom-2-m{bottom:2rem}.top--1-m{top:-1rem}.right--1-m{right:-1rem}.bottom--1-m{bottom:-1rem}.left--1-m{left:-1rem}.top--2-m{top:-2rem}.right--2-m{right:-2rem}.bottom--2-m{bottom:-2rem}.left--2-m{left:-2rem}.absolute--fill-m{top:0;right:0;bottom:0;left:0}}@media screen and (min-width:60em){.top-0-l{top:0}.left-0-l{left:0}.right-0-l{right:0}.bottom-0-l{bottom:0}.top-1-l{top:1rem}.left-1-l{left:1rem}.right-1-l{right:1rem}.bottom-1-l{bottom:1rem}.top-2-l{top:2rem}.left-2-l{left:2rem}.right-2-l{right:2rem}.bottom-2-l{bottom:2rem}.top--1-l{top:-1rem}.right--1-l{right:-1rem}.bottom--1-l{bottom:-1rem}.left--1-l{left:-1rem}.top--2-l{top:-2rem}.right--2-l{right:-2rem}.bottom--2-l{bottom:-2rem}.left--2-l{left:-2rem}.absolute--fill-l{top:0;right:0;bottom:0;left:0}}.cf:before,.cf:after{content:" ";display:table}.cf:after{clear:both}.cf{*zoom:1}.cl{clear:left}.cr{clear:right}.cb{clear:both}.cn{clear:none}@media screen and (min-width:30em){.cl-ns{clear:left}.cr-ns{clear:right}.cb-ns{clear:both}.cn-ns{clear:none}}@media screen and (min-width:30em) and (max-width:60em){.cl-m{clear:left}.cr-m{clear:right}.cb-m{clear:both}.cn-m{clear:none}}@media screen and (min-width:60em){.cl-l{clear:left}.cr-l{clear:right}.cb-l{clear:both}.cn-l{clear:none}}.dn{display:none}.di{display:inline}.db{display:block}.dib{display:inline-block}.dit{display:inline-table}.dt{display:table}.dtc{display:table-cell}.dt-row{display:table-row}.dt-row-group{display:table-row-group}.dt-column{display:table-column}.dt-column-group{display:table-column-group}.dt--fixed{table-layout:fixed;width:100%}@media screen and (min-width:30em){.dn-ns{display:none}.di-ns{display:inline}.db-ns{display:block}.dib-ns{display:inline-block}.dit-ns{display:inline-table}.dt-ns{display:table}.dtc-ns{display:table-cell}.dt-row-ns{display:table-row}.dt-row-group-ns{display:table-row-group}.dt-column-ns{display:table-column}.dt-column-group-ns{display:table-column-group}.dt--fixed-ns{table-layout:fixed;width:100%}}@media screen and (min-width:30em) and (max-width:60em){.dn-m{display:none}.di-m{display:inline}.db-m{display:block}.dib-m{display:inline-block}.dit-m{display:inline-table}.dt-m{display:table}.dtc-m{display:table-cell}.dt-row-m{display:table-row}.dt-row-group-m{display:table-row-group}.dt-column-m{display:table-column}.dt-column-group-m{display:table-column-group}.dt--fixed-m{table-layout:fixed;width:100%}}@media screen and (min-width:60em){.dn-l{display:none}.di-l{display:inline}.db-l{display:block}.dib-l{display:inline-block}.dit-l{display:inline-table}.dt-l{display:table}.dtc-l{display:table-cell}.dt-row-l{display:table-row}.dt-row-group-l{display:table-row-group}.dt-column-l{display:table-column}.dt-column-group-l{display:table-column-group}.dt--fixed-l{table-layout:fixed;width:100%}}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;min-height:0}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.flex-nowrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.flex-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.self-start{-ms-flex-item-align:start;align-self:flex-start}.self-end{-ms-flex-item-align:end;align-self:flex-end}.self-center{-ms-flex-item-align:center;align-self:center}.self-baseline{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.justify-around{-ms-flex-pack:distribute;justify-content:space-around}.content-start{-ms-flex-line-pack:start;align-content:flex-start}.content-end{-ms-flex-line-pack:end;align-content:flex-end}.content-center{-ms-flex-line-pack:center;align-content:center}.content-between{-ms-flex-line-pack:justify;align-content:space-between}.content-around{-ms-flex-line-pack:distribute;align-content:space-around}.content-stretch{-ms-flex-line-pack:stretch;align-content:stretch}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-last{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.flex-grow-0{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.flex-grow-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.flex-shrink-1{-ms-flex-negative:1;flex-shrink:1}@media screen and (min-width:30em){.flex-ns{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex-ns{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.flex-auto-ns{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;min-height:0}.flex-none-ns{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-column-ns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.flex-row-ns{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.flex-wrap-ns{-ms-flex-wrap:wrap;flex-wrap:wrap}.flex-nowrap-ns{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.flex-wrap-reverse-ns{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.flex-column-reverse-ns{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.flex-row-reverse-ns{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.items-start-ns{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-end-ns{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.items-center-ns{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.items-baseline-ns{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.items-stretch-ns{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.self-start-ns{-ms-flex-item-align:start;align-self:flex-start}.self-end-ns{-ms-flex-item-align:end;align-self:flex-end}.self-center-ns{-ms-flex-item-align:center;align-self:center}.self-baseline-ns{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch-ns{-ms-flex-item-align:stretch;align-self:stretch}.justify-start-ns{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-end-ns{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.justify-center-ns{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between-ns{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.justify-around-ns{-ms-flex-pack:distribute;justify-content:space-around}.content-start-ns{-ms-flex-line-pack:start;align-content:flex-start}.content-end-ns{-ms-flex-line-pack:end;align-content:flex-end}.content-center-ns{-ms-flex-line-pack:center;align-content:center}.content-between-ns{-ms-flex-line-pack:justify;align-content:space-between}.content-around-ns{-ms-flex-line-pack:distribute;align-content:space-around}.content-stretch-ns{-ms-flex-line-pack:stretch;align-content:stretch}.order-0-ns{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1-ns{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2-ns{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3-ns{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4-ns{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5-ns{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6-ns{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7-ns{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8-ns{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-last-ns{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.flex-grow-0-ns{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.flex-grow-1-ns{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.flex-shrink-0-ns{-ms-flex-negative:0;flex-shrink:0}.flex-shrink-1-ns{-ms-flex-negative:1;flex-shrink:1}}@media screen and (min-width:30em) and (max-width:60em){.flex-m{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex-m{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.flex-auto-m{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;min-height:0}.flex-none-m{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-column-m{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.flex-row-m{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.flex-wrap-m{-ms-flex-wrap:wrap;flex-wrap:wrap}.flex-nowrap-m{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.flex-wrap-reverse-m{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.flex-column-reverse-m{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.flex-row-reverse-m{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.items-start-m{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-end-m{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.items-center-m{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.items-baseline-m{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.items-stretch-m{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.self-start-m{-ms-flex-item-align:start;align-self:flex-start}.self-end-m{-ms-flex-item-align:end;align-self:flex-end}.self-center-m{-ms-flex-item-align:center;align-self:center}.self-baseline-m{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch-m{-ms-flex-item-align:stretch;align-self:stretch}.justify-start-m{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-end-m{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.justify-center-m{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between-m{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.justify-around-m{-ms-flex-pack:distribute;justify-content:space-around}.content-start-m{-ms-flex-line-pack:start;align-content:flex-start}.content-end-m{-ms-flex-line-pack:end;align-content:flex-end}.content-center-m{-ms-flex-line-pack:center;align-content:center}.content-between-m{-ms-flex-line-pack:justify;align-content:space-between}.content-around-m{-ms-flex-line-pack:distribute;align-content:space-around}.content-stretch-m{-ms-flex-line-pack:stretch;align-content:stretch}.order-0-m{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1-m{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2-m{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3-m{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4-m{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5-m{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6-m{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7-m{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8-m{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-last-m{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.flex-grow-0-m{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.flex-grow-1-m{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.flex-shrink-0-m{-ms-flex-negative:0;flex-shrink:0}.flex-shrink-1-m{-ms-flex-negative:1;flex-shrink:1}}@media screen and (min-width:60em){.flex-l{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex-l{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.flex-auto-l{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;min-height:0}.flex-none-l{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-column-l{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.flex-row-l{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.flex-wrap-l{-ms-flex-wrap:wrap;flex-wrap:wrap}.flex-nowrap-l{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.flex-wrap-reverse-l{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.flex-column-reverse-l{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.flex-row-reverse-l{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.items-start-l{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-end-l{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.items-center-l{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.items-baseline-l{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.items-stretch-l{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.self-start-l{-ms-flex-item-align:start;align-self:flex-start}.self-end-l{-ms-flex-item-align:end;align-self:flex-end}.self-center-l{-ms-flex-item-align:center;align-self:center}.self-baseline-l{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch-l{-ms-flex-item-align:stretch;align-self:stretch}.justify-start-l{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-end-l{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.justify-center-l{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between-l{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.justify-around-l{-ms-flex-pack:distribute;justify-content:space-around}.content-start-l{-ms-flex-line-pack:start;align-content:flex-start}.content-end-l{-ms-flex-line-pack:end;align-content:flex-end}.content-center-l{-ms-flex-line-pack:center;align-content:center}.content-between-l{-ms-flex-line-pack:justify;align-content:space-between}.content-around-l{-ms-flex-line-pack:distribute;align-content:space-around}.content-stretch-l{-ms-flex-line-pack:stretch;align-content:stretch}.order-0-l{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1-l{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2-l{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3-l{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4-l{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5-l{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6-l{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7-l{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8-l{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-last-l{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.flex-grow-0-l{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.flex-grow-1-l{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.flex-shrink-0-l{-ms-flex-negative:0;flex-shrink:0}.flex-shrink-1-l{-ms-flex-negative:1;flex-shrink:1}}.fl{float:left;_display:inline}.fr{float:right;_display:inline}.fn{float:none}@media screen and (min-width:30em){.fl-ns{float:left;_display:inline}.fr-ns{float:right;_display:inline}.fn-ns{float:none}}@media screen and (min-width:30em) and (max-width:60em){.fl-m{float:left;_display:inline}.fr-m{float:right;_display:inline}.fn-m{float:none}}@media screen and (min-width:60em){.fl-l{float:left;_display:inline}.fr-l{float:right;_display:inline}.fn-l{float:none}}.i{font-style:italic}.fs-normal{font-style:normal}@media screen and (min-width:30em){.i-ns{font-style:italic}.fs-normal-ns{font-style:normal}}@media screen and (min-width:30em) and (max-width:60em){.i-m{font-style:italic}.fs-normal-m{font-style:normal}}@media screen and (min-width:60em){.i-l{font-style:italic}.fs-normal-l{font-style:normal}}.normal{font-weight:400}.b{font-weight:700}.fw1{font-weight:100}.fw2{font-weight:200}.fw3{font-weight:300}.fw4{font-weight:400}.fw5{font-weight:500}.fw6{font-weight:600}.fw7{font-weight:700}.fw8{font-weight:800}.fw9{font-weight:900}@media screen and (min-width:30em){.normal-ns{font-weight:400}.b-ns{font-weight:700}.fw1-ns{font-weight:100}.fw2-ns{font-weight:200}.fw3-ns{font-weight:300}.fw4-ns{font-weight:400}.fw5-ns{font-weight:500}.fw6-ns{font-weight:600}.fw7-ns{font-weight:700}.fw8-ns{font-weight:800}.fw9-ns{font-weight:900}}@media screen and (min-width:30em) and (max-width:60em){.normal-m{font-weight:400}.b-m{font-weight:700}.fw1-m{font-weight:100}.fw2-m{font-weight:200}.fw3-m{font-weight:300}.fw4-m{font-weight:400}.fw5-m{font-weight:500}.fw6-m{font-weight:600}.fw7-m{font-weight:700}.fw8-m{font-weight:800}.fw9-m{font-weight:900}}@media screen and (min-width:60em){.normal-l{font-weight:400}.b-l{font-weight:700}.fw1-l{font-weight:100}.fw2-l{font-weight:200}.fw3-l{font-weight:300}.fw4-l{font-weight:400}.fw5-l{font-weight:500}.fw6-l{font-weight:600}.fw7-l{font-weight:700}.fw8-l{font-weight:800}.fw9-l{font-weight:900}}.input-reset{-webkit-appearance:none;-moz-appearance:none}.button-reset::-moz-focus-inner,.input-reset::-moz-focus-inner{border:0;padding:0}.h1{height:1rem}.h2{height:2rem}.h3{height:4rem}.h4{height:8rem}.h5{height:16rem}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.min-h-100{min-height:100%}.vh-25{height:25vh}.vh-50{height:50vh}.vh-75{height:75vh}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.h-auto{height:auto}.h-inherit{height:inherit}@media screen and (min-width:30em){.h1-ns{height:1rem}.h2-ns{height:2rem}.h3-ns{height:4rem}.h4-ns{height:8rem}.h5-ns{height:16rem}.h-25-ns{height:25%}.h-50-ns{height:50%}.h-75-ns{height:75%}.h-100-ns{height:100%}.min-h-100-ns{min-height:100%}.vh-25-ns{height:25vh}.vh-50-ns{height:50vh}.vh-75-ns{height:75vh}.vh-100-ns{height:100vh}.min-vh-100-ns{min-height:100vh}.h-auto-ns{height:auto}.h-inherit-ns{height:inherit}}@media screen and (min-width:30em) and (max-width:60em){.h1-m{height:1rem}.h2-m{height:2rem}.h3-m{height:4rem}.h4-m{height:8rem}.h5-m{height:16rem}.h-25-m{height:25%}.h-50-m{height:50%}.h-75-m{height:75%}.h-100-m{height:100%}.min-h-100-m{min-height:100%}.vh-25-m{height:25vh}.vh-50-m{height:50vh}.vh-75-m{height:75vh}.vh-100-m{height:100vh}.min-vh-100-m{min-height:100vh}.h-auto-m{height:auto}.h-inherit-m{height:inherit}}@media screen and (min-width:60em){.h1-l{height:1rem}.h2-l{height:2rem}.h3-l{height:4rem}.h4-l{height:8rem}.h5-l{height:16rem}.h-25-l{height:25%}.h-50-l{height:50%}.h-75-l{height:75%}.h-100-l{height:100%}.min-h-100-l{min-height:100%}.vh-25-l{height:25vh}.vh-50-l{height:50vh}.vh-75-l{height:75vh}.vh-100-l{height:100vh}.min-vh-100-l{min-height:100vh}.h-auto-l{height:auto}.h-inherit-l{height:inherit}}.tracked{letter-spacing:.1em}.tracked-tight{letter-spacing:-.05em}.tracked-mega{letter-spacing:.25em}@media screen and (min-width:30em){.tracked-ns{letter-spacing:.1em}.tracked-tight-ns{letter-spacing:-.05em}.tracked-mega-ns{letter-spacing:.25em}}@media screen and (min-width:30em) and (max-width:60em){.tracked-m{letter-spacing:.1em}.tracked-tight-m{letter-spacing:-.05em}.tracked-mega-m{letter-spacing:.25em}}@media screen and (min-width:60em){.tracked-l{letter-spacing:.1em}.tracked-tight-l{letter-spacing:-.05em}.tracked-mega-l{letter-spacing:.25em}}.lh-solid{line-height:1}.lh-title{line-height:1.25}.lh-copy{line-height:1.5}@media screen and (min-width:30em){.lh-solid-ns{line-height:1}.lh-title-ns{line-height:1.25}.lh-copy-ns{line-height:1.5}}@media screen and (min-width:30em) and (max-width:60em){.lh-solid-m{line-height:1}.lh-title-m{line-height:1.25}.lh-copy-m{line-height:1.5}}@media screen and (min-width:60em){.lh-solid-l{line-height:1}.lh-title-l{line-height:1.25}.lh-copy-l{line-height:1.5}}.link{text-decoration:none;-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.link:link,.link:visited{-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.link:hover{-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.link:active{-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.link:focus{-webkit-transition:color .15s ease-in;transition:color .15s ease-in;outline:1px dotted currentColor}.list{list-style-type:none}.mw-100{max-width:100%}.mw1{max-width:1rem}.mw2{max-width:2rem}.mw3{max-width:4rem}.mw4{max-width:8rem}.mw5{max-width:16rem}.mw6{max-width:32rem}.mw7{max-width:48rem}.mw8{max-width:64rem}.mw9{max-width:96rem}.mw-none{max-width:none}@media screen and (min-width:30em){.mw-100-ns{max-width:100%}.mw1-ns{max-width:1rem}.mw2-ns{max-width:2rem}.mw3-ns{max-width:4rem}.mw4-ns{max-width:8rem}.mw5-ns{max-width:16rem}.mw6-ns{max-width:32rem}.mw7-ns{max-width:48rem}.mw8-ns{max-width:64rem}.mw9-ns{max-width:96rem}.mw-none-ns{max-width:none}}@media screen and (min-width:30em) and (max-width:60em){.mw-100-m{max-width:100%}.mw1-m{max-width:1rem}.mw2-m{max-width:2rem}.mw3-m{max-width:4rem}.mw4-m{max-width:8rem}.mw5-m{max-width:16rem}.mw6-m{max-width:32rem}.mw7-m{max-width:48rem}.mw8-m{max-width:64rem}.mw9-m{max-width:96rem}.mw-none-m{max-width:none}}@media screen and (min-width:60em){.mw-100-l{max-width:100%}.mw1-l{max-width:1rem}.mw2-l{max-width:2rem}.mw3-l{max-width:4rem}.mw4-l{max-width:8rem}.mw5-l{max-width:16rem}.mw6-l{max-width:32rem}.mw7-l{max-width:48rem}.mw8-l{max-width:64rem}.mw9-l{max-width:96rem}.mw-none-l{max-width:none}}.w1{width:1rem}.w2{width:2rem}.w3{width:4rem}.w4{width:8rem}.w5{width:16rem}.w-10{width:10%}.w-20{width:20%}.w-25{width:25%}.w-30{width:30%}.w-33{width:33%}.w-34{width:34%}.w-40{width:40%}.w-50{width:50%}.w-60{width:60%}.w-70{width:70%}.w-75{width:75%}.w-80{width:80%}.w-90{width:90%}.w-100{width:100%}.w-third{width:33.33333%}.w-two-thirds{width:66.66667%}.w-auto{width:auto}@media screen and (min-width:30em){.w1-ns{width:1rem}.w2-ns{width:2rem}.w3-ns{width:4rem}.w4-ns{width:8rem}.w5-ns{width:16rem}.w-10-ns{width:10%}.w-20-ns{width:20%}.w-25-ns{width:25%}.w-30-ns{width:30%}.w-33-ns{width:33%}.w-34-ns{width:34%}.w-40-ns{width:40%}.w-50-ns{width:50%}.w-60-ns{width:60%}.w-70-ns{width:70%}.w-75-ns{width:75%}.w-80-ns{width:80%}.w-90-ns{width:90%}.w-100-ns{width:100%}.w-third-ns{width:33.33333%}.w-two-thirds-ns{width:66.66667%}.w-auto-ns{width:auto}}@media screen and (min-width:30em) and (max-width:60em){.w1-m{width:1rem}.w2-m{width:2rem}.w3-m{width:4rem}.w4-m{width:8rem}.w5-m{width:16rem}.w-10-m{width:10%}.w-20-m{width:20%}.w-25-m{width:25%}.w-30-m{width:30%}.w-33-m{width:33%}.w-34-m{width:34%}.w-40-m{width:40%}.w-50-m{width:50%}.w-60-m{width:60%}.w-70-m{width:70%}.w-75-m{width:75%}.w-80-m{width:80%}.w-90-m{width:90%}.w-100-m{width:100%}.w-third-m{width:33.33333%}.w-two-thirds-m{width:66.66667%}.w-auto-m{width:auto}}@media screen and (min-width:60em){.w1-l{width:1rem}.w2-l{width:2rem}.w3-l{width:4rem}.w4-l{width:8rem}.w5-l{width:16rem}.w-10-l{width:10%}.w-20-l{width:20%}.w-25-l{width:25%}.w-30-l{width:30%}.w-33-l{width:33%}.w-34-l{width:34%}.w-40-l{width:40%}.w-50-l{width:50%}.w-60-l{width:60%}.w-70-l{width:70%}.w-75-l{width:75%}.w-80-l{width:80%}.w-90-l{width:90%}.w-100-l{width:100%}.w-third-l{width:33.33333%}.w-two-thirds-l{width:66.66667%}.w-auto-l{width:auto}}.overflow-visible{overflow:visible}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-auto{overflow:auto}.overflow-x-visible{overflow-x:visible}.overflow-x-hidden{overflow-x:hidden}.overflow-x-scroll{overflow-x:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-visible{overflow-y:visible}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.overflow-y-auto{overflow-y:auto}@media screen and (min-width:30em){.overflow-visible-ns{overflow:visible}.overflow-hidden-ns{overflow:hidden}.overflow-scroll-ns{overflow:scroll}.overflow-auto-ns{overflow:auto}.overflow-x-visible-ns{overflow-x:visible}.overflow-x-hidden-ns{overflow-x:hidden}.overflow-x-scroll-ns{overflow-x:scroll}.overflow-x-auto-ns{overflow-x:auto}.overflow-y-visible-ns{overflow-y:visible}.overflow-y-hidden-ns{overflow-y:hidden}.overflow-y-scroll-ns{overflow-y:scroll}.overflow-y-auto-ns{overflow-y:auto}}@media screen and (min-width:30em) and (max-width:60em){.overflow-visible-m{overflow:visible}.overflow-hidden-m{overflow:hidden}.overflow-scroll-m{overflow:scroll}.overflow-auto-m{overflow:auto}.overflow-x-visible-m{overflow-x:visible}.overflow-x-hidden-m{overflow-x:hidden}.overflow-x-scroll-m{overflow-x:scroll}.overflow-x-auto-m{overflow-x:auto}.overflow-y-visible-m{overflow-y:visible}.overflow-y-hidden-m{overflow-y:hidden}.overflow-y-scroll-m{overflow-y:scroll}.overflow-y-auto-m{overflow-y:auto}}@media screen and (min-width:60em){.overflow-visible-l{overflow:visible}.overflow-hidden-l{overflow:hidden}.overflow-scroll-l{overflow:scroll}.overflow-auto-l{overflow:auto}.overflow-x-visible-l{overflow-x:visible}.overflow-x-hidden-l{overflow-x:hidden}.overflow-x-scroll-l{overflow-x:scroll}.overflow-x-auto-l{overflow-x:auto}.overflow-y-visible-l{overflow-y:visible}.overflow-y-hidden-l{overflow-y:hidden}.overflow-y-scroll-l{overflow-y:scroll}.overflow-y-auto-l{overflow-y:auto}}.static{position:static}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}@media screen and (min-width:30em){.static-ns{position:static}.relative-ns{position:relative}.absolute-ns{position:absolute}.fixed-ns{position:fixed}}@media screen and (min-width:30em) and (max-width:60em){.static-m{position:static}.relative-m{position:relative}.absolute-m{position:absolute}.fixed-m{position:fixed}}@media screen and (min-width:60em){.static-l{position:static}.relative-l{position:relative}.absolute-l{position:absolute}.fixed-l{position:fixed}}.o-100{opacity:1}.o-90{opacity:.9}.o-80{opacity:.8}.o-70{opacity:.7}.o-60{opacity:.6}.o-50{opacity:.5}.o-40{opacity:.4}.o-30{opacity:.3}.o-20{opacity:.2}.o-10{opacity:.1}.o-05{opacity:.05}.o-025{opacity:.025}.o-0{opacity:0}.black-90{color:rgba(0,0,0,.9)}.black-80{color:rgba(0,0,0,.8)}.black-70{color:rgba(0,0,0,.7)}.black-60{color:rgba(0,0,0,.6)}.black-50{color:rgba(0,0,0,.5)}.black-40{color:rgba(0,0,0,.4)}.black-30{color:rgba(0,0,0,.3)}.black-20{color:rgba(0,0,0,.2)}.black-10{color:rgba(0,0,0,.1)}.black-05{color:rgba(0,0,0,.05)}.white-90{color:rgba(255,255,255,.9)}.white-80{color:rgba(255,255,255,.8)}.white-70{color:rgba(255,255,255,.7)}.white-60{color:rgba(255,255,255,.6)}.white-50{color:rgba(255,255,255,.5)}.white-40{color:rgba(255,255,255,.4)}.white-30{color:rgba(255,255,255,.3)}.white-20{color:rgba(255,255,255,.2)}.white-10{color:rgba(255,255,255,.1)}.black{color:#000}.near-black{color:#111}.dark-gray{color:#333}.mid-gray{color:#555}.gray{color:#777}.silver{color:#999}.light-silver{color:#aaa}.moon-gray{color:#ccc}.light-gray{color:#eee}.near-white{color:#f4f4f4}.white{color:#fff}.dark-red{color:#e7040f}.red{color:#ff4136}.light-red{color:#ff725c}.orange{color:#ff6300}.gold{color:#ffb700}.yellow{color:gold}.light-yellow{color:#fbf1a9}.purple{color:#5e2ca5}.light-purple{color:#a463f2}.dark-pink{color:#d5008f}.hot-pink{color:#ff41b4}.pink{color:#ff80cc}.light-pink{color:#ffa3d7}.dark-green{color:#137752}.green{color:#19a974}.light-green{color:#9eebcf}.navy{color:#001b44}.dark-blue{color:#00449e}.blue{color:#0594cb}.light-blue{color:#96ccff}.lightest-blue{color:#cdecff}.washed-blue{color:#f6fffe}.washed-green{color:#e8fdf5}.washed-yellow{color:#fffceb}.washed-red{color:#ffdfdf}.color-inherit{color:inherit}.bg-black-90{background-color:rgba(0,0,0,.9)}.bg-black-80{background-color:rgba(0,0,0,.8)}.bg-black-70{background-color:rgba(0,0,0,.7)}.bg-black-60{background-color:rgba(0,0,0,.6)}.bg-black-50{background-color:rgba(0,0,0,.5)}.bg-black-40{background-color:rgba(0,0,0,.4)}.bg-black-30{background-color:rgba(0,0,0,.3)}.bg-black-20{background-color:rgba(0,0,0,.2)}.bg-black-10{background-color:rgba(0,0,0,.1)}.bg-black-05{background-color:rgba(0,0,0,.05)}.bg-white-90{background-color:rgba(255,255,255,.9)}.bg-white-80{background-color:rgba(255,255,255,.8)}.bg-white-70{background-color:rgba(255,255,255,.7)}.bg-white-60{background-color:rgba(255,255,255,.6)}.bg-white-50{background-color:rgba(255,255,255,.5)}.bg-white-40{background-color:rgba(255,255,255,.4)}.bg-white-30{background-color:rgba(255,255,255,.3)}.bg-white-20{background-color:rgba(255,255,255,.2)}.bg-white-10{background-color:rgba(255,255,255,.1)}.bg-black{background-color:#000}.bg-near-black{background-color:#111}.bg-dark-gray{background-color:#333}.bg-mid-gray{background-color:#555}.bg-gray{background-color:#777}.bg-silver{background-color:#999}.bg-light-silver{background-color:#aaa}.bg-moon-gray{background-color:#ccc}.bg-light-gray{background-color:#eee}.bg-near-white{background-color:#f4f4f4}.bg-white{background-color:#fff}.bg-transparent{background-color:transparent}.bg-dark-red{background-color:#e7040f}.bg-red{background-color:#ff4136}.bg-light-red{background-color:#ff725c}.bg-orange{background-color:#ff6300}.bg-gold{background-color:#ffb700}.bg-yellow{background-color:gold}.bg-light-yellow{background-color:#fbf1a9}.bg-purple{background-color:#5e2ca5}.bg-light-purple{background-color:#a463f2}.bg-dark-pink{background-color:#d5008f}.bg-hot-pink{background-color:#ff41b4}.bg-pink{background-color:#ff80cc}.bg-light-pink{background-color:#ffa3d7}.bg-dark-green{background-color:#137752}.bg-green{background-color:#19a974}.bg-light-green{background-color:#9eebcf}.bg-navy{background-color:#001b44}.bg-dark-blue{background-color:#00449e}.bg-blue{background-color:#0594cb}.bg-light-blue{background-color:#96ccff}.bg-lightest-blue{background-color:#cdecff}.bg-washed-blue{background-color:#f6fffe}.bg-washed-green{background-color:#e8fdf5}.bg-washed-yellow{background-color:#fffceb}.bg-washed-red{background-color:#ffdfdf}.bg-inherit{background-color:inherit}.hover-black:hover,.hover-black:focus{color:#000}.hover-near-black:hover,.hover-near-black:focus{color:#111}.hover-dark-gray:hover,.hover-dark-gray:focus{color:#333}.hover-mid-gray:hover,.hover-mid-gray:focus{color:#555}.hover-gray:hover,.hover-gray:focus{color:#777}.hover-silver:hover,.hover-silver:focus{color:#999}.hover-light-silver:hover,.hover-light-silver:focus{color:#aaa}.hover-moon-gray:hover,.hover-moon-gray:focus{color:#ccc}.hover-light-gray:hover,.hover-light-gray:focus{color:#eee}.hover-near-white:hover,.hover-near-white:focus{color:#f4f4f4}.hover-white:hover,.hover-white:focus{color:#fff}.hover-black-90:hover,.hover-black-90:focus{color:rgba(0,0,0,.9)}.hover-black-80:hover,.hover-black-80:focus{color:rgba(0,0,0,.8)}.hover-black-70:hover,.hover-black-70:focus{color:rgba(0,0,0,.7)}.hover-black-60:hover,.hover-black-60:focus{color:rgba(0,0,0,.6)}.hover-black-50:hover,.hover-black-50:focus{color:rgba(0,0,0,.5)}.hover-black-40:hover,.hover-black-40:focus{color:rgba(0,0,0,.4)}.hover-black-30:hover,.hover-black-30:focus{color:rgba(0,0,0,.3)}.hover-black-20:hover,.hover-black-20:focus{color:rgba(0,0,0,.2)}.hover-black-10:hover,.hover-black-10:focus{color:rgba(0,0,0,.1)}.hover-white-90:hover,.hover-white-90:focus{color:rgba(255,255,255,.9)}.hover-white-80:hover,.hover-white-80:focus{color:rgba(255,255,255,.8)}.hover-white-70:hover,.hover-white-70:focus{color:rgba(255,255,255,.7)}.hover-white-60:hover,.hover-white-60:focus{color:rgba(255,255,255,.6)}.hover-white-50:hover,.hover-white-50:focus{color:rgba(255,255,255,.5)}.hover-white-40:hover,.hover-white-40:focus{color:rgba(255,255,255,.4)}.hover-white-30:hover,.hover-white-30:focus{color:rgba(255,255,255,.3)}.hover-white-20:hover,.hover-white-20:focus{color:rgba(255,255,255,.2)}.hover-white-10:hover,.hover-white-10:focus{color:rgba(255,255,255,.1)}.hover-inherit:hover,.hover-inherit:focus{color:inherit}.hover-bg-black:hover,.hover-bg-black:focus{background-color:#000}.hover-bg-near-black:hover,.hover-bg-near-black:focus{background-color:#111}.hover-bg-dark-gray:hover,.hover-bg-dark-gray:focus{background-color:#333}.hover-bg-mid-gray:hover,.hover-bg-mid-gray:focus{background-color:#555}.hover-bg-gray:hover,.hover-bg-gray:focus{background-color:#777}.hover-bg-silver:hover,.hover-bg-silver:focus{background-color:#999}.hover-bg-light-silver:hover,.hover-bg-light-silver:focus{background-color:#aaa}.hover-bg-moon-gray:hover,.hover-bg-moon-gray:focus{background-color:#ccc}.hover-bg-light-gray:hover,.hover-bg-light-gray:focus{background-color:#eee}.hover-bg-near-white:hover,.hover-bg-near-white:focus{background-color:#f4f4f4}.hover-bg-white:hover,.hover-bg-white:focus{background-color:#fff}.hover-bg-transparent:hover,.hover-bg-transparent:focus{background-color:transparent}.hover-bg-black-90:hover,.hover-bg-black-90:focus{background-color:rgba(0,0,0,.9)}.hover-bg-black-80:hover,.hover-bg-black-80:focus{background-color:rgba(0,0,0,.8)}.hover-bg-black-70:hover,.hover-bg-black-70:focus{background-color:rgba(0,0,0,.7)}.hover-bg-black-60:hover,.hover-bg-black-60:focus{background-color:rgba(0,0,0,.6)}.hover-bg-black-50:hover,.hover-bg-black-50:focus{background-color:rgba(0,0,0,.5)}.hover-bg-black-40:hover,.hover-bg-black-40:focus{background-color:rgba(0,0,0,.4)}.hover-bg-black-30:hover,.hover-bg-black-30:focus{background-color:rgba(0,0,0,.3)}.hover-bg-black-20:hover,.hover-bg-black-20:focus{background-color:rgba(0,0,0,.2)}.hover-bg-black-10:hover,.hover-bg-black-10:focus{background-color:rgba(0,0,0,.1)}.hover-bg-white-90:hover,.hover-bg-white-90:focus{background-color:rgba(255,255,255,.9)}.hover-bg-white-80:hover,.hover-bg-white-80:focus{background-color:rgba(255,255,255,.8)}.hover-bg-white-70:hover,.hover-bg-white-70:focus{background-color:rgba(255,255,255,.7)}.hover-bg-white-60:hover,.hover-bg-white-60:focus{background-color:rgba(255,255,255,.6)}.hover-bg-white-50:hover,.hover-bg-white-50:focus{background-color:rgba(255,255,255,.5)}.hover-bg-white-40:hover,.hover-bg-white-40:focus{background-color:rgba(255,255,255,.4)}.hover-bg-white-30:hover,.hover-bg-white-30:focus{background-color:rgba(255,255,255,.3)}.hover-bg-white-20:hover,.hover-bg-white-20:focus{background-color:rgba(255,255,255,.2)}.hover-bg-white-10:hover,.hover-bg-white-10:focus{background-color:rgba(255,255,255,.1)}.hover-dark-red:hover,.hover-dark-red:focus{color:#e7040f}.hover-red:hover,.hover-red:focus{color:#ff4136}.hover-light-red:hover,.hover-light-red:focus{color:#ff725c}.hover-orange:hover,.hover-orange:focus{color:#ff6300}.hover-gold:hover,.hover-gold:focus{color:#ffb700}.hover-yellow:hover,.hover-yellow:focus{color:gold}.hover-light-yellow:hover,.hover-light-yellow:focus{color:#fbf1a9}.hover-purple:hover,.hover-purple:focus{color:#5e2ca5}.hover-light-purple:hover,.hover-light-purple:focus{color:#a463f2}.hover-dark-pink:hover,.hover-dark-pink:focus{color:#d5008f}.hover-hot-pink:hover,.hover-hot-pink:focus{color:#ff41b4}.hover-pink:hover,.hover-pink:focus{color:#ff80cc}.hover-light-pink:hover,.hover-light-pink:focus{color:#ffa3d7}.hover-dark-green:hover,.hover-dark-green:focus{color:#137752}.hover-green:hover,.hover-green:focus{color:#19a974}.hover-light-green:hover,.hover-light-green:focus{color:#9eebcf}.hover-navy:hover,.hover-navy:focus{color:#001b44}.hover-dark-blue:hover,.hover-dark-blue:focus{color:#00449e}.hover-blue:hover,.hover-blue:focus{color:#0594cb}.hover-light-blue:hover,.hover-light-blue:focus{color:#96ccff}.hover-lightest-blue:hover,.hover-lightest-blue:focus{color:#cdecff}.hover-washed-blue:hover,.hover-washed-blue:focus{color:#f6fffe}.hover-washed-green:hover,.hover-washed-green:focus{color:#e8fdf5}.hover-washed-yellow:hover,.hover-washed-yellow:focus{color:#fffceb}.hover-washed-red:hover,.hover-washed-red:focus{color:#ffdfdf}.hover-bg-dark-red:hover,.hover-bg-dark-red:focus{background-color:#e7040f}.hover-bg-red:hover,.hover-bg-red:focus{background-color:#ff4136}.hover-bg-light-red:hover,.hover-bg-light-red:focus{background-color:#ff725c}.hover-bg-orange:hover,.hover-bg-orange:focus{background-color:#ff6300}.hover-bg-gold:hover,.hover-bg-gold:focus{background-color:#ffb700}.hover-bg-yellow:hover,.hover-bg-yellow:focus{background-color:gold}.hover-bg-light-yellow:hover,.hover-bg-light-yellow:focus{background-color:#fbf1a9}.hover-bg-purple:hover,.hover-bg-purple:focus{background-color:#5e2ca5}.hover-bg-light-purple:hover,.hover-bg-light-purple:focus{background-color:#a463f2}.hover-bg-dark-pink:hover,.hover-bg-dark-pink:focus{background-color:#d5008f}.hover-bg-hot-pink:hover,.hover-bg-hot-pink:focus{background-color:#ff41b4}.hover-bg-pink:hover,.hover-bg-pink:focus{background-color:#ff80cc}.hover-bg-light-pink:hover,.hover-bg-light-pink:focus{background-color:#ffa3d7}.hover-bg-dark-green:hover,.hover-bg-dark-green:focus{background-color:#137752}.hover-bg-green:hover,.hover-bg-green:focus{background-color:#19a974}.hover-bg-light-green:hover,.hover-bg-light-green:focus{background-color:#9eebcf}.hover-bg-navy:hover,.hover-bg-navy:focus{background-color:#001b44}.hover-bg-dark-blue:hover,.hover-bg-dark-blue:focus{background-color:#00449e}.hover-bg-blue:hover,.hover-bg-blue:focus{background-color:#0594cb}.hover-bg-light-blue:hover,.hover-bg-light-blue:focus{background-color:#96ccff}.hover-bg-lightest-blue:hover,.hover-bg-lightest-blue:focus{background-color:#cdecff}.hover-bg-washed-blue:hover,.hover-bg-washed-blue:focus{background-color:#f6fffe}.hover-bg-washed-green:hover,.hover-bg-washed-green:focus{background-color:#e8fdf5}.hover-bg-washed-yellow:hover,.hover-bg-washed-yellow:focus{background-color:#fffceb}.hover-bg-washed-red:hover,.hover-bg-washed-red:focus{background-color:#ffdfdf}.hover-bg-inherit:hover,.hover-bg-inherit:focus{background-color:inherit}.pa0{padding:0}.pa1{padding:.25rem}.pa2{padding:.5rem}.pa3{padding:1rem}.pa4{padding:2rem}.pa5{padding:4rem}.pa6{padding:8rem}.pa7{padding:16rem}.pl0{padding-left:0}.pl1{padding-left:.25rem}.pl2{padding-left:.5rem}.pl3{padding-left:1rem}.pl4{padding-left:2rem}.pl5{padding-left:4rem}.pl6{padding-left:8rem}.pl7{padding-left:16rem}.pr0{padding-right:0}.pr1{padding-right:.25rem}.pr2{padding-right:.5rem}.pr3{padding-right:1rem}.pr4{padding-right:2rem}.pr5{padding-right:4rem}.pr6{padding-right:8rem}.pr7{padding-right:16rem}.pb0{padding-bottom:0}.pb1{padding-bottom:.25rem}.pb2{padding-bottom:.5rem}.pb3{padding-bottom:1rem}.pb4{padding-bottom:2rem}.pb5{padding-bottom:4rem}.pb6{padding-bottom:8rem}.pb7{padding-bottom:16rem}.pt0{padding-top:0}.pt1{padding-top:.25rem}.pt2{padding-top:.5rem}.pt3{padding-top:1rem}.pt4{padding-top:2rem}.pt5{padding-top:4rem}.pt6{padding-top:8rem}.pt7{padding-top:16rem}.pv0{padding-top:0;padding-bottom:0}.pv1{padding-top:.25rem;padding-bottom:.25rem}.pv2{padding-top:.5rem;padding-bottom:.5rem}.pv3{padding-top:1rem;padding-bottom:1rem}.pv4{padding-top:2rem;padding-bottom:2rem}.pv5{padding-top:4rem;padding-bottom:4rem}.pv6{padding-top:8rem;padding-bottom:8rem}.pv7{padding-top:16rem;padding-bottom:16rem}.ph0{padding-left:0;padding-right:0}.ph1{padding-left:.25rem;padding-right:.25rem}.ph2{padding-left:.5rem;padding-right:.5rem}.ph3{padding-left:1rem;padding-right:1rem}.ph4{padding-left:2rem;padding-right:2rem}.ph5{padding-left:4rem;padding-right:4rem}.ph6{padding-left:8rem;padding-right:8rem}.ph7{padding-left:16rem;padding-right:16rem}.ma0{margin:0}.ma1{margin:.25rem}.ma2{margin:.5rem}.ma3{margin:1rem}.ma4{margin:2rem}.ma5{margin:4rem}.ma6{margin:8rem}.ma7{margin:16rem}.ml0{margin-left:0}.ml1{margin-left:.25rem}.ml2{margin-left:.5rem}.ml3{margin-left:1rem}.ml4{margin-left:2rem}.ml5{margin-left:4rem}.ml6{margin-left:8rem}.ml7{margin-left:16rem}.mr0{margin-right:0}.mr1{margin-right:.25rem}.mr2{margin-right:.5rem}.mr3{margin-right:1rem}.mr4{margin-right:2rem}.mr5{margin-right:4rem}.mr6{margin-right:8rem}.mr7{margin-right:16rem}.mb0{margin-bottom:0}.mb1{margin-bottom:.25rem}.mb2{margin-bottom:.5rem}.mb3{margin-bottom:1rem}.mb4{margin-bottom:2rem}.mb5{margin-bottom:4rem}.mb6{margin-bottom:8rem}.mb7{margin-bottom:16rem}.mt0{margin-top:0}.mt1{margin-top:.25rem}.mt2{margin-top:.5rem}.mt3{margin-top:1rem}.mt4{margin-top:2rem}.mt5{margin-top:4rem}.mt6{margin-top:8rem}.mt7{margin-top:16rem}.mv0{margin-top:0;margin-bottom:0}.mv1{margin-top:.25rem;margin-bottom:.25rem}.mv2{margin-top:.5rem;margin-bottom:.5rem}.mv3{margin-top:1rem;margin-bottom:1rem}.mv4{margin-top:2rem;margin-bottom:2rem}.mv5{margin-top:4rem;margin-bottom:4rem}.mv6{margin-top:8rem;margin-bottom:8rem}.mv7{margin-top:16rem;margin-bottom:16rem}.mh0{margin-left:0;margin-right:0}.mh1{margin-left:.25rem;margin-right:.25rem}.mh2{margin-left:.5rem;margin-right:.5rem}.mh3{margin-left:1rem;margin-right:1rem}.mh4{margin-left:2rem;margin-right:2rem}.mh5{margin-left:4rem;margin-right:4rem}.mh6{margin-left:8rem;margin-right:8rem}.mh7{margin-left:16rem;margin-right:16rem}@media screen and (min-width:30em){.pa0-ns{padding:0}.pa1-ns{padding:.25rem}.pa2-ns{padding:.5rem}.pa3-ns{padding:1rem}.pa4-ns{padding:2rem}.pa5-ns{padding:4rem}.pa6-ns{padding:8rem}.pa7-ns{padding:16rem}.pl0-ns{padding-left:0}.pl1-ns{padding-left:.25rem}.pl2-ns{padding-left:.5rem}.pl3-ns{padding-left:1rem}.pl4-ns{padding-left:2rem}.pl5-ns{padding-left:4rem}.pl6-ns{padding-left:8rem}.pl7-ns{padding-left:16rem}.pr0-ns{padding-right:0}.pr1-ns{padding-right:.25rem}.pr2-ns{padding-right:.5rem}.pr3-ns{padding-right:1rem}.pr4-ns{padding-right:2rem}.pr5-ns{padding-right:4rem}.pr6-ns{padding-right:8rem}.pr7-ns{padding-right:16rem}.pb0-ns{padding-bottom:0}.pb1-ns{padding-bottom:.25rem}.pb2-ns{padding-bottom:.5rem}.pb3-ns{padding-bottom:1rem}.pb4-ns{padding-bottom:2rem}.pb5-ns{padding-bottom:4rem}.pb6-ns{padding-bottom:8rem}.pb7-ns{padding-bottom:16rem}.pt0-ns{padding-top:0}.pt1-ns{padding-top:.25rem}.pt2-ns{padding-top:.5rem}.pt3-ns{padding-top:1rem}.pt4-ns{padding-top:2rem}.pt5-ns{padding-top:4rem}.pt6-ns{padding-top:8rem}.pt7-ns{padding-top:16rem}.pv0-ns{padding-top:0;padding-bottom:0}.pv1-ns{padding-top:.25rem;padding-bottom:.25rem}.pv2-ns{padding-top:.5rem;padding-bottom:.5rem}.pv3-ns{padding-top:1rem;padding-bottom:1rem}.pv4-ns{padding-top:2rem;padding-bottom:2rem}.pv5-ns{padding-top:4rem;padding-bottom:4rem}.pv6-ns{padding-top:8rem;padding-bottom:8rem}.pv7-ns{padding-top:16rem;padding-bottom:16rem}.ph0-ns{padding-left:0;padding-right:0}.ph1-ns{padding-left:.25rem;padding-right:.25rem}.ph2-ns{padding-left:.5rem;padding-right:.5rem}.ph3-ns{padding-left:1rem;padding-right:1rem}.ph4-ns{padding-left:2rem;padding-right:2rem}.ph5-ns{padding-left:4rem;padding-right:4rem}.ph6-ns{padding-left:8rem;padding-right:8rem}.ph7-ns{padding-left:16rem;padding-right:16rem}.ma0-ns{margin:0}.ma1-ns{margin:.25rem}.ma2-ns{margin:.5rem}.ma3-ns{margin:1rem}.ma4-ns{margin:2rem}.ma5-ns{margin:4rem}.ma6-ns{margin:8rem}.ma7-ns{margin:16rem}.ml0-ns{margin-left:0}.ml1-ns{margin-left:.25rem}.ml2-ns{margin-left:.5rem}.ml3-ns{margin-left:1rem}.ml4-ns{margin-left:2rem}.ml5-ns{margin-left:4rem}.ml6-ns{margin-left:8rem}.ml7-ns{margin-left:16rem}.mr0-ns{margin-right:0}.mr1-ns{margin-right:.25rem}.mr2-ns{margin-right:.5rem}.mr3-ns{margin-right:1rem}.mr4-ns{margin-right:2rem}.mr5-ns{margin-right:4rem}.mr6-ns{margin-right:8rem}.mr7-ns{margin-right:16rem}.mb0-ns{margin-bottom:0}.mb1-ns{margin-bottom:.25rem}.mb2-ns{margin-bottom:.5rem}.mb3-ns{margin-bottom:1rem}.mb4-ns{margin-bottom:2rem}.mb5-ns{margin-bottom:4rem}.mb6-ns{margin-bottom:8rem}.mb7-ns{margin-bottom:16rem}.mt0-ns{margin-top:0}.mt1-ns{margin-top:.25rem}.mt2-ns{margin-top:.5rem}.mt3-ns{margin-top:1rem}.mt4-ns{margin-top:2rem}.mt5-ns{margin-top:4rem}.mt6-ns{margin-top:8rem}.mt7-ns{margin-top:16rem}.mv0-ns{margin-top:0;margin-bottom:0}.mv1-ns{margin-top:.25rem;margin-bottom:.25rem}.mv2-ns{margin-top:.5rem;margin-bottom:.5rem}.mv3-ns{margin-top:1rem;margin-bottom:1rem}.mv4-ns{margin-top:2rem;margin-bottom:2rem}.mv5-ns{margin-top:4rem;margin-bottom:4rem}.mv6-ns{margin-top:8rem;margin-bottom:8rem}.mv7-ns{margin-top:16rem;margin-bottom:16rem}.mh0-ns{margin-left:0;margin-right:0}.mh1-ns{margin-left:.25rem;margin-right:.25rem}.mh2-ns{margin-left:.5rem;margin-right:.5rem}.mh3-ns{margin-left:1rem;margin-right:1rem}.mh4-ns{margin-left:2rem;margin-right:2rem}.mh5-ns{margin-left:4rem;margin-right:4rem}.mh6-ns{margin-left:8rem;margin-right:8rem}.mh7-ns{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:30em) and (max-width:60em){.pa0-m{padding:0}.pa1-m{padding:.25rem}.pa2-m{padding:.5rem}.pa3-m{padding:1rem}.pa4-m{padding:2rem}.pa5-m{padding:4rem}.pa6-m{padding:8rem}.pa7-m{padding:16rem}.pl0-m{padding-left:0}.pl1-m{padding-left:.25rem}.pl2-m{padding-left:.5rem}.pl3-m{padding-left:1rem}.pl4-m{padding-left:2rem}.pl5-m{padding-left:4rem}.pl6-m{padding-left:8rem}.pl7-m{padding-left:16rem}.pr0-m{padding-right:0}.pr1-m{padding-right:.25rem}.pr2-m{padding-right:.5rem}.pr3-m{padding-right:1rem}.pr4-m{padding-right:2rem}.pr5-m{padding-right:4rem}.pr6-m{padding-right:8rem}.pr7-m{padding-right:16rem}.pb0-m{padding-bottom:0}.pb1-m{padding-bottom:.25rem}.pb2-m{padding-bottom:.5rem}.pb3-m{padding-bottom:1rem}.pb4-m{padding-bottom:2rem}.pb5-m{padding-bottom:4rem}.pb6-m{padding-bottom:8rem}.pb7-m{padding-bottom:16rem}.pt0-m{padding-top:0}.pt1-m{padding-top:.25rem}.pt2-m{padding-top:.5rem}.pt3-m{padding-top:1rem}.pt4-m{padding-top:2rem}.pt5-m{padding-top:4rem}.pt6-m{padding-top:8rem}.pt7-m{padding-top:16rem}.pv0-m{padding-top:0;padding-bottom:0}.pv1-m{padding-top:.25rem;padding-bottom:.25rem}.pv2-m{padding-top:.5rem;padding-bottom:.5rem}.pv3-m{padding-top:1rem;padding-bottom:1rem}.pv4-m{padding-top:2rem;padding-bottom:2rem}.pv5-m{padding-top:4rem;padding-bottom:4rem}.pv6-m{padding-top:8rem;padding-bottom:8rem}.pv7-m{padding-top:16rem;padding-bottom:16rem}.ph0-m{padding-left:0;padding-right:0}.ph1-m{padding-left:.25rem;padding-right:.25rem}.ph2-m{padding-left:.5rem;padding-right:.5rem}.ph3-m{padding-left:1rem;padding-right:1rem}.ph4-m{padding-left:2rem;padding-right:2rem}.ph5-m{padding-left:4rem;padding-right:4rem}.ph6-m{padding-left:8rem;padding-right:8rem}.ph7-m{padding-left:16rem;padding-right:16rem}.ma0-m{margin:0}.ma1-m{margin:.25rem}.ma2-m{margin:.5rem}.ma3-m{margin:1rem}.ma4-m{margin:2rem}.ma5-m{margin:4rem}.ma6-m{margin:8rem}.ma7-m{margin:16rem}.ml0-m{margin-left:0}.ml1-m{margin-left:.25rem}.ml2-m{margin-left:.5rem}.ml3-m{margin-left:1rem}.ml4-m{margin-left:2rem}.ml5-m{margin-left:4rem}.ml6-m{margin-left:8rem}.ml7-m{margin-left:16rem}.mr0-m{margin-right:0}.mr1-m{margin-right:.25rem}.mr2-m{margin-right:.5rem}.mr3-m{margin-right:1rem}.mr4-m{margin-right:2rem}.mr5-m{margin-right:4rem}.mr6-m{margin-right:8rem}.mr7-m{margin-right:16rem}.mb0-m{margin-bottom:0}.mb1-m{margin-bottom:.25rem}.mb2-m{margin-bottom:.5rem}.mb3-m{margin-bottom:1rem}.mb4-m{margin-bottom:2rem}.mb5-m{margin-bottom:4rem}.mb6-m{margin-bottom:8rem}.mb7-m{margin-bottom:16rem}.mt0-m{margin-top:0}.mt1-m{margin-top:.25rem}.mt2-m{margin-top:.5rem}.mt3-m{margin-top:1rem}.mt4-m{margin-top:2rem}.mt5-m{margin-top:4rem}.mt6-m{margin-top:8rem}.mt7-m{margin-top:16rem}.mv0-m{margin-top:0;margin-bottom:0}.mv1-m{margin-top:.25rem;margin-bottom:.25rem}.mv2-m{margin-top:.5rem;margin-bottom:.5rem}.mv3-m{margin-top:1rem;margin-bottom:1rem}.mv4-m{margin-top:2rem;margin-bottom:2rem}.mv5-m{margin-top:4rem;margin-bottom:4rem}.mv6-m{margin-top:8rem;margin-bottom:8rem}.mv7-m{margin-top:16rem;margin-bottom:16rem}.mh0-m{margin-left:0;margin-right:0}.mh1-m{margin-left:.25rem;margin-right:.25rem}.mh2-m{margin-left:.5rem;margin-right:.5rem}.mh3-m{margin-left:1rem;margin-right:1rem}.mh4-m{margin-left:2rem;margin-right:2rem}.mh5-m{margin-left:4rem;margin-right:4rem}.mh6-m{margin-left:8rem;margin-right:8rem}.mh7-m{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:60em){.pa0-l{padding:0}.pa1-l{padding:.25rem}.pa2-l{padding:.5rem}.pa3-l{padding:1rem}.pa4-l{padding:2rem}.pa5-l{padding:4rem}.pa6-l{padding:8rem}.pa7-l{padding:16rem}.pl0-l{padding-left:0}.pl1-l{padding-left:.25rem}.pl2-l{padding-left:.5rem}.pl3-l{padding-left:1rem}.pl4-l{padding-left:2rem}.pl5-l{padding-left:4rem}.pl6-l{padding-left:8rem}.pl7-l{padding-left:16rem}.pr0-l{padding-right:0}.pr1-l{padding-right:.25rem}.pr2-l{padding-right:.5rem}.pr3-l{padding-right:1rem}.pr4-l{padding-right:2rem}.pr5-l{padding-right:4rem}.pr6-l{padding-right:8rem}.pr7-l{padding-right:16rem}.pb0-l{padding-bottom:0}.pb1-l{padding-bottom:.25rem}.pb2-l{padding-bottom:.5rem}.pb3-l{padding-bottom:1rem}.pb4-l{padding-bottom:2rem}.pb5-l{padding-bottom:4rem}.pb6-l{padding-bottom:8rem}.pb7-l{padding-bottom:16rem}.pt0-l{padding-top:0}.pt1-l{padding-top:.25rem}.pt2-l{padding-top:.5rem}.pt3-l{padding-top:1rem}.pt4-l{padding-top:2rem}.pt5-l{padding-top:4rem}.pt6-l{padding-top:8rem}.pt7-l{padding-top:16rem}.pv0-l{padding-top:0;padding-bottom:0}.pv1-l{padding-top:.25rem;padding-bottom:.25rem}.pv2-l{padding-top:.5rem;padding-bottom:.5rem}.pv3-l{padding-top:1rem;padding-bottom:1rem}.pv4-l{padding-top:2rem;padding-bottom:2rem}.pv5-l{padding-top:4rem;padding-bottom:4rem}.pv6-l{padding-top:8rem;padding-bottom:8rem}.pv7-l{padding-top:16rem;padding-bottom:16rem}.ph0-l{padding-left:0;padding-right:0}.ph1-l{padding-left:.25rem;padding-right:.25rem}.ph2-l{padding-left:.5rem;padding-right:.5rem}.ph3-l{padding-left:1rem;padding-right:1rem}.ph4-l{padding-left:2rem;padding-right:2rem}.ph5-l{padding-left:4rem;padding-right:4rem}.ph6-l{padding-left:8rem;padding-right:8rem}.ph7-l{padding-left:16rem;padding-right:16rem}.ma0-l{margin:0}.ma1-l{margin:.25rem}.ma2-l{margin:.5rem}.ma3-l{margin:1rem}.ma4-l{margin:2rem}.ma5-l{margin:4rem}.ma6-l{margin:8rem}.ma7-l{margin:16rem}.ml0-l{margin-left:0}.ml1-l{margin-left:.25rem}.ml2-l{margin-left:.5rem}.ml3-l{margin-left:1rem}.ml4-l{margin-left:2rem}.ml5-l{margin-left:4rem}.ml6-l{margin-left:8rem}.ml7-l{margin-left:16rem}.mr0-l{margin-right:0}.mr1-l{margin-right:.25rem}.mr2-l{margin-right:.5rem}.mr3-l{margin-right:1rem}.mr4-l{margin-right:2rem}.mr5-l{margin-right:4rem}.mr6-l{margin-right:8rem}.mr7-l{margin-right:16rem}.mb0-l{margin-bottom:0}.mb1-l{margin-bottom:.25rem}.mb2-l{margin-bottom:.5rem}.mb3-l{margin-bottom:1rem}.mb4-l{margin-bottom:2rem}.mb5-l{margin-bottom:4rem}.mb6-l{margin-bottom:8rem}.mb7-l{margin-bottom:16rem}.mt0-l{margin-top:0}.mt1-l{margin-top:.25rem}.mt2-l{margin-top:.5rem}.mt3-l{margin-top:1rem}.mt4-l{margin-top:2rem}.mt5-l{margin-top:4rem}.mt6-l{margin-top:8rem}.mt7-l{margin-top:16rem}.mv0-l{margin-top:0;margin-bottom:0}.mv1-l{margin-top:.25rem;margin-bottom:.25rem}.mv2-l{margin-top:.5rem;margin-bottom:.5rem}.mv3-l{margin-top:1rem;margin-bottom:1rem}.mv4-l{margin-top:2rem;margin-bottom:2rem}.mv5-l{margin-top:4rem;margin-bottom:4rem}.mv6-l{margin-top:8rem;margin-bottom:8rem}.mv7-l{margin-top:16rem;margin-bottom:16rem}.mh0-l{margin-left:0;margin-right:0}.mh1-l{margin-left:.25rem;margin-right:.25rem}.mh2-l{margin-left:.5rem;margin-right:.5rem}.mh3-l{margin-left:1rem;margin-right:1rem}.mh4-l{margin-left:2rem;margin-right:2rem}.mh5-l{margin-left:4rem;margin-right:4rem}.mh6-l{margin-left:8rem;margin-right:8rem}.mh7-l{margin-left:16rem;margin-right:16rem}}.na1{margin:-.25rem}.na2{margin:-.5rem}.na3{margin:-1rem}.na4{margin:-2rem}.na5{margin:-4rem}.na6{margin:-8rem}.na7{margin:-16rem}.nl1{margin-left:-.25rem}.nl2{margin-left:-.5rem}.nl3{margin-left:-1rem}.nl4{margin-left:-2rem}.nl5{margin-left:-4rem}.nl6{margin-left:-8rem}.nl7{margin-left:-16rem}.nr1{margin-right:-.25rem}.nr2{margin-right:-.5rem}.nr3{margin-right:-1rem}.nr4{margin-right:-2rem}.nr5{margin-right:-4rem}.nr6{margin-right:-8rem}.nr7{margin-right:-16rem}.nb1{margin-bottom:-.25rem}.nb2{margin-bottom:-.5rem}.nb3{margin-bottom:-1rem}.nb4{margin-bottom:-2rem}.nb5{margin-bottom:-4rem}.nb6{margin-bottom:-8rem}.nb7{margin-bottom:-16rem}.nt1{margin-top:-.25rem}.nt2{margin-top:-.5rem}.nt3{margin-top:-1rem}.nt4{margin-top:-2rem}.nt5{margin-top:-4rem}.nt6{margin-top:-8rem}.nt7{margin-top:-16rem}@media screen and (min-width:30em){.na1-ns{margin:-.25rem}.na2-ns{margin:-.5rem}.na3-ns{margin:-1rem}.na4-ns{margin:-2rem}.na5-ns{margin:-4rem}.na6-ns{margin:-8rem}.na7-ns{margin:-16rem}.nl1-ns{margin-left:-.25rem}.nl2-ns{margin-left:-.5rem}.nl3-ns{margin-left:-1rem}.nl4-ns{margin-left:-2rem}.nl5-ns{margin-left:-4rem}.nl6-ns{margin-left:-8rem}.nl7-ns{margin-left:-16rem}.nr1-ns{margin-right:-.25rem}.nr2-ns{margin-right:-.5rem}.nr3-ns{margin-right:-1rem}.nr4-ns{margin-right:-2rem}.nr5-ns{margin-right:-4rem}.nr6-ns{margin-right:-8rem}.nr7-ns{margin-right:-16rem}.nb1-ns{margin-bottom:-.25rem}.nb2-ns{margin-bottom:-.5rem}.nb3-ns{margin-bottom:-1rem}.nb4-ns{margin-bottom:-2rem}.nb5-ns{margin-bottom:-4rem}.nb6-ns{margin-bottom:-8rem}.nb7-ns{margin-bottom:-16rem}.nt1-ns{margin-top:-.25rem}.nt2-ns{margin-top:-.5rem}.nt3-ns{margin-top:-1rem}.nt4-ns{margin-top:-2rem}.nt5-ns{margin-top:-4rem}.nt6-ns{margin-top:-8rem}.nt7-ns{margin-top:-16rem}}@media screen and (min-width:30em) and (max-width:60em){.na1-m{margin:-.25rem}.na2-m{margin:-.5rem}.na3-m{margin:-1rem}.na4-m{margin:-2rem}.na5-m{margin:-4rem}.na6-m{margin:-8rem}.na7-m{margin:-16rem}.nl1-m{margin-left:-.25rem}.nl2-m{margin-left:-.5rem}.nl3-m{margin-left:-1rem}.nl4-m{margin-left:-2rem}.nl5-m{margin-left:-4rem}.nl6-m{margin-left:-8rem}.nl7-m{margin-left:-16rem}.nr1-m{margin-right:-.25rem}.nr2-m{margin-right:-.5rem}.nr3-m{margin-right:-1rem}.nr4-m{margin-right:-2rem}.nr5-m{margin-right:-4rem}.nr6-m{margin-right:-8rem}.nr7-m{margin-right:-16rem}.nb1-m{margin-bottom:-.25rem}.nb2-m{margin-bottom:-.5rem}.nb3-m{margin-bottom:-1rem}.nb4-m{margin-bottom:-2rem}.nb5-m{margin-bottom:-4rem}.nb6-m{margin-bottom:-8rem}.nb7-m{margin-bottom:-16rem}.nt1-m{margin-top:-.25rem}.nt2-m{margin-top:-.5rem}.nt3-m{margin-top:-1rem}.nt4-m{margin-top:-2rem}.nt5-m{margin-top:-4rem}.nt6-m{margin-top:-8rem}.nt7-m{margin-top:-16rem}}@media screen and (min-width:60em){.na1-l{margin:-.25rem}.na2-l{margin:-.5rem}.na3-l{margin:-1rem}.na4-l{margin:-2rem}.na5-l{margin:-4rem}.na6-l{margin:-8rem}.na7-l{margin:-16rem}.nl1-l{margin-left:-.25rem}.nl2-l{margin-left:-.5rem}.nl3-l{margin-left:-1rem}.nl4-l{margin-left:-2rem}.nl5-l{margin-left:-4rem}.nl6-l{margin-left:-8rem}.nl7-l{margin-left:-16rem}.nr1-l{margin-right:-.25rem}.nr2-l{margin-right:-.5rem}.nr3-l{margin-right:-1rem}.nr4-l{margin-right:-2rem}.nr5-l{margin-right:-4rem}.nr6-l{margin-right:-8rem}.nr7-l{margin-right:-16rem}.nb1-l{margin-bottom:-.25rem}.nb2-l{margin-bottom:-.5rem}.nb3-l{margin-bottom:-1rem}.nb4-l{margin-bottom:-2rem}.nb5-l{margin-bottom:-4rem}.nb6-l{margin-bottom:-8rem}.nb7-l{margin-bottom:-16rem}.nt1-l{margin-top:-.25rem}.nt2-l{margin-top:-.5rem}.nt3-l{margin-top:-1rem}.nt4-l{margin-top:-2rem}.nt5-l{margin-top:-4rem}.nt6-l{margin-top:-8rem}.nt7-l{margin-top:-16rem}}.collapse{border-collapse:collapse;border-spacing:0}.striped--light-silver:nth-child(odd){background-color:#aaa}.striped--moon-gray:nth-child(odd){background-color:#ccc}.striped--light-gray:nth-child(odd){background-color:#eee}.striped--near-white:nth-child(odd){background-color:#f4f4f4}.stripe-light:nth-child(odd){background-color:rgba(255,255,255,.1)}.stripe-dark:nth-child(odd){background-color:rgba(0,0,0,.1)}.strike{text-decoration:line-through}.underline{text-decoration:underline}.no-underline{text-decoration:none}@media screen and (min-width:30em){.strike-ns{text-decoration:line-through}.underline-ns{text-decoration:underline}.no-underline-ns{text-decoration:none}}@media screen and (min-width:30em) and (max-width:60em){.strike-m{text-decoration:line-through}.underline-m{text-decoration:underline}.no-underline-m{text-decoration:none}}@media screen and (min-width:60em){.strike-l{text-decoration:line-through}.underline-l{text-decoration:underline}.no-underline-l{text-decoration:none}}.tl{text-align:left}.tr{text-align:right}.tc{text-align:center}.tj{text-align:justify}@media screen and (min-width:30em){.tl-ns{text-align:left}.tr-ns{text-align:right}.tc-ns{text-align:center}.tj-ns{text-align:justify}}@media screen and (min-width:30em) and (max-width:60em){.tl-m{text-align:left}.tr-m{text-align:right}.tc-m{text-align:center}.tj-m{text-align:justify}}@media screen and (min-width:60em){.tl-l{text-align:left}.tr-l{text-align:right}.tc-l{text-align:center}.tj-l{text-align:justify}}.ttc{text-transform:capitalize}.ttl{text-transform:lowercase}.ttu{text-transform:uppercase}.ttn{text-transform:none}@media screen and (min-width:30em){.ttc-ns{text-transform:capitalize}.ttl-ns{text-transform:lowercase}.ttu-ns{text-transform:uppercase}.ttn-ns{text-transform:none}}@media screen and (min-width:30em) and (max-width:60em){.ttc-m{text-transform:capitalize}.ttl-m{text-transform:lowercase}.ttu-m{text-transform:uppercase}.ttn-m{text-transform:none}}@media screen and (min-width:60em){.ttc-l{text-transform:capitalize}.ttl-l{text-transform:lowercase}.ttu-l{text-transform:uppercase}.ttn-l{text-transform:none}}.f-6,.f-headline{font-size:6rem}.f-5,.f-subheadline{font-size:5rem}.f1{font-size:3rem}.f2{font-size:2.25rem}.f3{font-size:1.5rem}.f4{font-size:1.25rem}.f5{font-size:1rem}.f6{font-size:.875rem}.f7{font-size:.75rem}@media screen and (min-width:30em){.f-6-ns,.f-headline-ns{font-size:6rem}.f-5-ns,.f-subheadline-ns{font-size:5rem}.f1-ns{font-size:3rem}.f2-ns{font-size:2.25rem}.f3-ns{font-size:1.5rem}.f4-ns{font-size:1.25rem}.f5-ns{font-size:1rem}.f6-ns{font-size:.875rem}.f7-ns{font-size:.75rem}}@media screen and (min-width:30em) and (max-width:60em){.f-6-m,.f-headline-m{font-size:6rem}.f-5-m,.f-subheadline-m{font-size:5rem}.f1-m{font-size:3rem}.f2-m{font-size:2.25rem}.f3-m{font-size:1.5rem}.f4-m{font-size:1.25rem}.f5-m{font-size:1rem}.f6-m{font-size:.875rem}.f7-m{font-size:.75rem}}@media screen and (min-width:60em){.f-6-l,.f-headline-l{font-size:6rem}.f-5-l,.f-subheadline-l{font-size:5rem}.f1-l{font-size:3rem}.f2-l{font-size:2.25rem}.f3-l{font-size:1.5rem}.f4-l{font-size:1.25rem}.f5-l{font-size:1rem}.f6-l{font-size:.875rem}.f7-l{font-size:.75rem}}.measure{max-width:30em}.measure-wide{max-width:34em}.measure-narrow{max-width:20em}.indent{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps{-webkit-font-feature-settings:"c2sc";font-feature-settings:"c2sc";font-variant:small-caps}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media screen and (min-width:30em){.measure-ns{max-width:30em}.measure-wide-ns{max-width:34em}.measure-narrow-ns{max-width:20em}.indent-ns{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-ns{-webkit-font-feature-settings:"c2sc";font-feature-settings:"c2sc";font-variant:small-caps}.truncate-ns{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@media screen and (min-width:30em) and (max-width:60em){.measure-m{max-width:30em}.measure-wide-m{max-width:34em}.measure-narrow-m{max-width:20em}.indent-m{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-m{-webkit-font-feature-settings:"c2sc";font-feature-settings:"c2sc";font-variant:small-caps}.truncate-m{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@media screen and (min-width:60em){.measure-l{max-width:30em}.measure-wide-l{max-width:34em}.measure-narrow-l{max-width:20em}.indent-l{text-indent:1em;margin-top:0;margin-bottom:0}.small-caps-l{-webkit-font-feature-settings:"c2sc";font-feature-settings:"c2sc";font-variant:small-caps}.truncate-l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.overflow-container{overflow-y:scroll}.center{margin-right:auto;margin-left:auto}.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}@media screen and (min-width:30em){.center-ns{margin-right:auto;margin-left:auto}.mr-auto-ns{margin-right:auto}.ml-auto-ns{margin-left:auto}}@media screen and (min-width:30em) and (max-width:60em){.center-m{margin-right:auto;margin-left:auto}.mr-auto-m{margin-right:auto}.ml-auto-m{margin-left:auto}}@media screen and (min-width:60em){.center-l{margin-right:auto;margin-left:auto}.mr-auto-l{margin-right:auto}.ml-auto-l{margin-left:auto}}.clip{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}@media screen and (min-width:30em){.clip-ns{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}}@media screen and (min-width:30em) and (max-width:60em){.clip-m{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}}@media screen and (min-width:60em){.clip-l{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}}.ws-normal{white-space:normal}.nowrap{white-space:nowrap}.pre{white-space:pre}@media screen and (min-width:30em){.ws-normal-ns{white-space:normal}.nowrap-ns{white-space:nowrap}.pre-ns{white-space:pre}}@media screen and (min-width:30em) and (max-width:60em){.ws-normal-m{white-space:normal}.nowrap-m{white-space:nowrap}.pre-m{white-space:pre}}@media screen and (min-width:60em){.ws-normal-l{white-space:normal}.nowrap-l{white-space:nowrap}.pre-l{white-space:pre}}.v-base{vertical-align:baseline}.v-mid{vertical-align:middle}.v-top{vertical-align:top}.v-btm{vertical-align:bottom}@media screen and (min-width:30em){.v-base-ns{vertical-align:baseline}.v-mid-ns{vertical-align:middle}.v-top-ns{vertical-align:top}.v-btm-ns{vertical-align:bottom}}@media screen and (min-width:30em) and (max-width:60em){.v-base-m{vertical-align:baseline}.v-mid-m{vertical-align:middle}.v-top-m{vertical-align:top}.v-btm-m{vertical-align:bottom}}@media screen and (min-width:60em){.v-base-l{vertical-align:baseline}.v-mid-l{vertical-align:middle}.v-top-l{vertical-align:top}.v-btm-l{vertical-align:bottom}}.dim{opacity:1;-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.dim:hover,.dim:focus{opacity:.5;-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.dim:active{opacity:.8;-webkit-transition:opacity .15s ease-out;transition:opacity .15s ease-out}.glow{-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.glow:hover,.glow:focus{opacity:1;-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.hide-child .child{opacity:0;-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.hide-child:hover .child,.hide-child:focus .child,.hide-child:active .child{opacity:1;-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.underline-hover:hover,.underline-hover:focus{text-decoration:underline}.grow{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:-webkit-transform .25s ease-out;transition:-webkit-transform .25s ease-out;transition:transform .25s ease-out;transition:transform .25s ease-out,-webkit-transform .25s ease-out}.grow:hover,.grow:focus{-webkit-transform:scale(1.05);transform:scale(1.05)}.grow:active{-webkit-transform:scale(.90);transform:scale(.90)}.grow-large{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:-webkit-transform .25s ease-in-out;transition:-webkit-transform .25s ease-in-out;transition:transform .25s ease-in-out;transition:transform .25s ease-in-out,-webkit-transform .25s ease-in-out}.grow-large:hover,.grow-large:focus{-webkit-transform:scale(1.2);transform:scale(1.2)}.grow-large:active{-webkit-transform:scale(.95);transform:scale(.95)}.pointer:hover{cursor:pointer}.shadow-hover{cursor:pointer;position:relative;-webkit-transition:all .5s cubic-bezier(0.165,0.84,0.44,1);transition:all .5s cubic-bezier(0.165,0.84,0.44,1)}.shadow-hover::after{content:'';-webkit-box-shadow:0 0 16px 2px rgba(0,0,0,.2);box-shadow:0 0 16px 2px rgba(0,0,0,.2);border-radius:inherit;opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1;-webkit-transition:opacity .5s cubic-bezier(0.165,0.84,0.44,1);transition:opacity .5s cubic-bezier(0.165,0.84,0.44,1)}.shadow-hover:hover::after,.shadow-hover:focus::after{opacity:1}.bg-animate,.bg-animate:hover,.bg-animate:focus{-webkit-transition:background-color .15s ease-in-out;transition:background-color .15s ease-in-out}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}.z-4{z-index:4}.z-5{z-index:5}.z-999{z-index:999}.z-9999{z-index:9999}.z-max{z-index:2147483647}.z-inherit{z-index:inherit}.z-initial{z-index:auto;z-index:initial}.z-unset{z-index:unset}.nested-copy-line-height p,.nested-copy-line-height ul,.nested-copy-line-height ol{line-height:1.5}.nested-headline-line-height h1,.nested-headline-line-height h2,.nested-headline-line-height h3,.nested-headline-line-height h4,.nested-headline-line-height h5,.nested-headline-line-height h6{line-height:1.25}.nested-list-reset ul,.nested-list-reset ol{padding-left:0;margin-left:0;list-style-type:none}.nested-copy-indent p+p{text-indent:1em;margin-top:0;margin-bottom:0}.nested-copy-separator p+p{margin-top:1.5em}.nested-img img{width:100%;max-width:100%;display:block}.nested-links a{color:#0594cb;-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.nested-links a:hover,.nested-links a:focus{color:#96ccff;-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.header-link:after{position:relative;left:.5em;opacity:0;font-size:.8em;-moz-transition:opacity .2s ease-in-out .1s;-ms-transition:opacity .2s ease-in-out .1s}h2:hover .header-link,h3:hover .header-link,h4:hover .header-link,h5:hover .header-link,h6:hover .header-link{opacity:1}.animated{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}.animated-delay-1{-webkit-animation-delay:.5s;animation-delay:.5s}.note,.warning{border-left-width:4px;border-left-style:solid;position:relative;border-color:#0594cb;display:block}.note #exclamation-icon,.warning #exclamation-icon{fill:#0594cb;position:absolute;top:35%;left:-12px}.admonition-content{display:block;margin:0;padding:.125em 1em;margin-top:2em;margin-bottom:2em;overflow-x:auto;background-color:rgba(0,0,0,.05)}.hide-child-menu .child-menu{display:none}.hide-child-menu:hover .child-menu,.hide-child-menu:focus .child-menu,.hide-child-menu:active .child-menu{display:block}.documentation-copy h2{margin-top:3em}.documentation-copy h2.minor{font-size:inherit;margin-top:inherit;border-bottom:none}.searchbox{display:inline-block;position:relative;width:200px;height:32px!important;white-space:nowrap;-webkit-box-sizing:border-box;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;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:background .4s ease,-webkit-box-shadow .4s ease;transition:background .4s ease,-webkit-box-shadow .4s ease;transition:box-shadow .4s ease,background .4s ease;transition:box-shadow .4s ease,background .4s ease,-webkit-box-shadow .4s ease;border:0;border-radius:16px;-webkit-box-shadow:inset 0 0 0 1px #ccc;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{-webkit-box-shadow:inset 0 0 0 1px #b3b3b3;box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{outline:0;-webkit-box-shadow:inset 0 0 0 1px #aaa;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:0 0;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;-webkit-box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1);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 *{-webkit-box-sizing:border-box;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;-webkit-box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);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:0 0}.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;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAyMCAzOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMS40OSA0LjMxbDE0IDE2LjEyNi4wMDItMi42MjQtMTQgMTYuMDc0LTEuMzE0IDEuNTEgMy4wMTcgMi42MjYgMS4zMTMtMS41MDggMTQtMTYuMDc1IDEuMTQyLTEuMzEzLTEuMTQtMS4zMTMtMTQtMTYuMTI1TDMuMi4xOC4xOCAyLjhsMS4zMSAxLjUxeiIgZmlsbC1ydWxlPSJldmVub2RkIiBmaWxsPSIjMWQzNjU3IiAvPjwvc3ZnPg==);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;-webkit-box-shadow:none;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;base64,PHN2ZyB3aWR0aD0iMTY4IiBoZWlnaHQ9IjI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZD0iTTc4Ljk4OC45MzhoMTYuNTk0YTIuOTY4IDIuOTY4LjAgMCAxIDIuOTY2IDIuOTY2VjIwLjVhMi45NjcgMi45NjcuMCAwIDEtMi45NjYgMi45NjRINzguOTg4YTIuOTY3IDIuOTY3LjAgMCAxLTIuOTY2LTIuOTY0VjMuODk3QTIuOTYxIDIuOTYxLjAgMCAxIDc4Ljk4OC45Mzh6bTQxLjkzNyAxNy44NjZjLTQuMzg2LjAyLTQuMzg2LTMuNTQtNC4zODYtNC4xMDZsLS4wMDctMTMuMzM2IDIuNjc1LS40MjR2MTMuMjU0YzAgLjMyMi4wIDIuMzU4IDEuNzE4IDIuMzY0djIuMjQ4em0tMTAuODQ2LTIuMThjLjgyMS4wIDEuNDMtLjA0NyAxLjg1NS0uMTI5di0yLjcxOWE2LjMzNCA2LjMzNC4wIDAgMC0xLjU3NC0uMTk5IDUuNyA1LjcuMCAwIDAtLjg5Ny4wNjkgMi42OTkgMi42OTkuMCAwIDAtLjgxNC4yNGMtLjI0LjExNi0uNDM5LjI4LS41ODIuNDkxLS4xNS4yMTItLjIxOS4zMzUtLjIxOS42NTYuMC42MjguMjE5Ljk5MS42MTYgMS4yM3MuOTM4LjM2MiAxLjYxNS4zNjJ6bS0uMjMzLTkuN2MuODgzLjAgMS42MjkuMTA5IDIuMjMxLjMyOC42MDIuMjE4IDEuMDg4LjUyNSAxLjQ0NC45MTUuMzYzLjM5Ni42MDkuOTIyLjc2IDEuNDgzLjE1Ny41Ni4yMzIgMS4xNzUuMjMyIDEuODV2Ni44NzRhMzIuNSAzMi41LjAgMCAxLTEuODY4LjMxNGMtLjgzNC4xMjMtMS43NzIuMTg1LTIuODEzLjE4NS0uNjkuMC0xLjMyNy0uMDY5LTEuODk1LS4xOThhNC4wMDEgNC4wMDEuMCAwIDEtMS40NzEtLjYzNiAzLjA4NSAzLjA4NS4wIDAgMS0uOTUxLTEuMTM0Yy0uMjI2LS40NjUtLjM0My0xLjEyLS4zNDMtMS44MDMuMC0uNjU2LjEzLTEuMDczLjM4NC0xLjUyNWEzLjI0IDMuMjQuMCAwIDEgMS4wNDctMS4xMDZjLjQ0NS0uMjg3Ljk1LS40OTIgMS41MzItLjYxNWE4LjggOC44LjAgMCAxIDEuODItLjE4NSA4LjQwNCA4LjQwNC4wIDAgMSAxLjk3Mi4yNHYtLjQzOGMwLS4zMDctLjAzNS0uNi0uMTEtLjg3NGExLjg4IDEuODguMCAwIDAtLjM4NC0uNzMgMS43ODQgMS43ODQuMCAwIDAtLjcyNC0uNDkzIDMuMTY0IDMuMTY0LjAgMCAwLTEuMTQzLS4yMDVjLS42MTYuMC0xLjE3Ny4wNzUtMS42OS4xNjRhNy43MzUgNy43MzUuMCAwIDAtMS4yNi4zMDdsLS4zMjEtMi4xOTJjLjMzNS0uMTE3LjgzNC0uMjMzIDEuNDc4LS4zNDlhMTAuOTggMTAuOTguMCAwIDEgMi4wNzMtLjE3OHptNTIuODQyIDkuNjI2Yy44MjIuMCAxLjQzLS4wNDggMS44NTQtLjEzVjEzLjdhNi4zNDcgNi4zNDcuMCAwIDAtMS41NzQtLjE5OWMtLjI5NC4wLS41OTUuMDIxLS44OTYuMDY5YTIuNyAyLjcuMCAwIDAtLjgxNC4yNCAxLjQ2IDEuNDYuMCAwIDAtLjU4Mi40OTFjLS4xNS4yMTItLjIxOC4zMzUtLjIxOC42NTYuMC42MjguMjE4Ljk5MS42MTUgMS4yMy40MDQuMjQ1LjkzOC4zNjIgMS42MTUuMzYyem0tLjIyNi05LjY5NGMuODgzLjAgMS42MjkuMTA4IDIuMjMxLjMyNy42MDIuMjE5IDEuMDg4LjUyNiAxLjQ0NC45MTUuMzU1LjM5LjYwOS45MjMuNzU5IDEuNDgzYTYuOCA2LjguMCAwIDEgLjIzMyAxLjg1MnY2Ljg3M2MtLjQxLjA4OC0xLjAzNC4xOS0xLjg2OC4zMTQtLjgzNC4xMjMtMS43NzIuMTg0LTIuODEzLjE4NC0uNjkuMC0xLjMyNy0uMDY4LTEuODk1LS4xOThhNC4wMDEgNC4wMDEuMCAwIDEtMS40NzEtLjYzNSAzLjA4NSAzLjA4NS4wIDAgMS0uOTUxLTEuMTM0Yy0uMjI2LS40NjUtLjM0My0xLjEyLS4zNDMtMS44MDQuMC0uNjU2LjEzLTEuMDczLjM4NC0xLjUyNC4yNi0uNDUuNjA4LS44MiAxLjA0Ny0xLjEwNy40NDUtLjI4Ni45NS0uNDkxIDEuNTMyLS42MTRhOC44MDMgOC44MDMuMCAwIDEgMi43NTEtLjEzYy4zMjkuMDM0LjY3MS4wOTYgMS4wNC4xODV2LS40MzdhMy4zIDMuMy4wIDAgMC0uMTA5LS44NzUgMS44NzMgMS44NzMuMCAwIDAtLjM4NC0uNzMxIDEuNzg0IDEuNzg0LjAgMCAwLS43MjQtLjQ5MiAzLjE2NSAzLjE2NS4wIDAgMC0xLjE0My0uMjA1Yy0uNjE2LjAtMS4xNzcuMDc1LTEuNjkuMTY0YTcuNzUgNy43NS4wIDAgMC0xLjI2LjMwN2wtLjMyMS0yLjE5M2MuMzM1LS4xMTYuODM0LS4yMzIgMS40NzgtLjM0OGExMS42MzMgMTEuNjMzLjAgMCAxIDIuMDczLS4xNzd6bS04LjAzNC0xLjI3MWExLjYyNiAxLjYyNi4wIDAgMS0xLjYyOC0xLjYyYzAtLjg5NS43MjUtMS42MiAxLjYyOC0xLjYyLjkwNC4wIDEuNjMuNzI1IDEuNjMgMS42Mi4wLjg5NS0uNzMzIDEuNjItMS42MyAxLjYyem0xLjM0OCAxMy4yMmgtMi42ODlWNy4yN2wyLjY5LS40MjN2MTEuOTU2em0tNC43MTQuMGMtNC4zODYuMDItNC4zODYtMy41NC00LjM4Ni00LjEwN2wtLjAwOC0xMy4zMzYgMi42NzYtLjQyNHYxMy4yNTRjMCAuMzIyLjAgMi4zNTggMS43MTggMi4zNjR2Mi4yNDh6bS04LjY5OC01LjkwM2MwLTEuMTU2LS4yNTMtMi4xMTktLjc0Ni0yLjc4OC0uNDkzLS42NzctMS4xODMtMS4wMS0yLjA2Ny0xLjAxLS44ODIuMC0xLjU3NC4zMzMtMi4wNjUgMS4wMS0uNDkzLjY3Ni0uNzMzIDEuNjMyLS43MzMgMi43ODguMCAxLjE2OC4yNDYgMS45NTMuNzQgMi42My40OTIuNjgzIDEuMTgzIDEuMDE4IDIuMDY2IDEuMDE4Ljg4Mi4wIDEuNTc0LS4zNDIgMi4wNjctMS4wMTkuNDkyLS42ODMuNzM4LTEuNDYuNzM4LTIuNjN6bTIuNzM3LS4wMDdjMCAuOTAyLS4xMyAxLjU4NC0uMzk3IDIuMzNhNS41MiA1LjUyLjAgMCAxLTEuMTI4IDEuOTA2IDQuOTg2IDQuOTg2LjAgMCAxLTEuNzUyIDEuMjIzYy0uNjg1LjI4Ni0xLjczOS40NS0yLjI2NS40NS0uNTI4LS4wMDYtMS41NzQtLjE1Ny0yLjI1Mi0uNDVhNS4wOTYgNS4wOTYuMCAwIDEtMS43NDQtMS4yMjNjLS40ODctLjUyNy0uODYzLTEuMTYyLTEuMTM3LTEuOTA2YTYuMzQ1IDYuMzQ1LjAgMCAxLS40MS0yLjMzYzAtLjkwMi4xMjMtMS43Ny4zOTctMi41MDhhNS41NTQgNS41NTQuMCAwIDEgMS4xNS0xLjg5MiA1LjEzMyA1LjEzMy4wIDAgMSAxLjc1LTEuMjE2Yy42NzktLjI4NyAxLjQyNS0uNDIzIDIuMjMyLS40MjMuODA4LjAgMS41NTMuMTQyIDIuMjM3LjQyM2E0Ljg4IDQuODguMCAwIDEgMS43NTMgMS4yMTYgNS42NDQgNS42NDQuMCAwIDEgMS4xMzUgMS44OTJjLjI4Ny43MzguNDMxIDEuNjA2LjQzMSAyLjUwOHptLTIwLjEzOC4wYzAgMS4xMi4yNDYgMi4zNjMuNzM4IDIuODgyLjQ5My41MiAxLjEzLjc4IDEuOTEuNzguNDI0LjAuODI4LS4wNjIgMS4yMDQtLjE3OC4zNzctLjExNi42NzctLjI1My45MTctLjQxN1Y5LjMzYTEwLjQ3NiAxMC40NzYuMCAwIDAtMS43NjYtLjIyNmMtLjk3MS0uMDI4LTEuNzEuMzctMi4yMyAxLjAwNC0uNTEzLjYzNi0uNzczIDEuNzUtLjc3MyAyLjc4OHptNy40MzggNS4yNzRjMCAxLjgyNC0uNDY2IDMuMTU2LTEuNDA0IDQuMDA0LS45MzYuODQ2LTIuMzY3IDEuMjctNC4yOTYgMS4yNy0uNzA1LjAtMi4xNy0uMTM3LTMuMzQtLjM5NmwuNDMxLTIuMTE4Yy45OC4yMDUgMi4yNzIuMjYgMi45NS4yNiAxLjA3NC4wIDEuODQtLjIxOSAyLjI5OS0uNjU2LjQ1OS0uNDM3LjY4NC0xLjA4Ni42ODQtMS45NDh2LS40MzdhOC4wNyA4LjA3LjAgMCAxLTEuMDQ3LjM5N2MtLjQzLjEzLS45My4xOTgtMS40OTIuMTk4LS43MzkuMC0xLjQxLS4xMTYtMi4wMTgtLjM0OWE0LjIwNiA0LjIwNi4wIDAgMS0xLjU2Ny0xLjAyNWMtLjQzMS0uNDUtLjc3NC0xLjAxNy0xLjAxMy0xLjY5NC0uMjQtLjY3Ny0uMzYzLTEuODg1LS4zNjMtMi43NzMuMC0uODM0LjEzLTEuODguMzg0LTIuNTc3LjI2LS42OTYuNjI5LTEuMjk4IDEuMTI5LTEuNzk2LjQ5My0uNDk4IDEuMDk1LS44ODEgMS44LTEuMTYyYTYuNjA1IDYuNjA1LjAgMCAxIDIuNDI4LS40NTdjLjg3LjAgMS42Ny4xMDkgMi40NS4yNC43OC4xMjkgMS40NDQuMjY1IDEuOTg1LjQxNVYxOC4xN3oiIGZpbGw9IiM1NDY4ZmYiLz48cGF0aCBkPSJNNi45NzIgNi42Nzd2MS42MjdjLS43MTItLjQ0Ni0xLjUyLS42Ny0yLjQyNS0uNjctLjU4NS4wLTEuMDQ1LjEzLTEuMzguMzkxYTEuMjQgMS4yNC4wIDAgMC0uNTAyIDEuMDNjMCAuNDI1LjE2NC43NjUuNDk0IDEuMDIuMzMuMjU2LjgzNS41MzIgMS41MTYuODMuNDQ3LjE5Mi43OTUuMzU2IDEuMDQ1LjQ5NS4yNS4xMzguNTM3LjMzMi44NjIuNTgyLjMyNC4yNS41NjMuNTQ4LjcxOC44OTQuMTU0LjM0NS4yMy43NDEuMjMgMS4xODguMC45NDctLjMzNCAxLjY5MS0xLjAwNCAyLjIzNC0uNjcuNTQyLTEuNTM3LjgxNC0yLjYwMS44MTQtMS4xOC4wLTIuMTYtLjIyOS0yLjkzNi0uNjg2di0xLjcwOGMuODQuNjI4IDEuODE0Ljk0MiAyLjkyLjk0Mi41ODUuMCAxLjA0OC0uMTM2IDEuMzg4LS40MDcuMzQtLjI3MS41MS0uNjQ2LjUxLTEuMTI1LjAtLjI4Ny0uMS0uNTUtLjMwMi0uNzktLjIwMy0uMjQtLjQyLS40Mi0uNjU1LS41NDItLjIzNC0uMTIzLS41ODUtLjI5LTEuMDUzLS41MDNhNjEuMjcgNjEuMjcuMCAwIDEtLjU4Mi0uMjcxIDEzLjY3IDEzLjY3LjAgMCAxLS41NS0uMjg3IDQuMjc1IDQuMjc1LjAgMCAxLS41NjctLjM1MSA2LjkyIDYuOTIuMCAwIDEtLjQ1NS0uNGMtLjE4LS4xNy0uMzEtLjM0LS4zOS0uNTEtLjA4LS4xNy0uMTU1LS4zNy0uMjI0LS41OThhMi41NTMgMi41NTMuMCAwIDEtLjEwNC0uNzQyYzAtLjkxNS4zMzMtMS42MzguOTk4LTIuMTcuNjY0LS41MzIgMS41MjMtLjc5OCAyLjU3Ni0uNzk4Ljk2OC4wIDEuNzkzLjE3IDIuNDczLjUxem03LjQ2OCA1LjY5NnYtLjI4N2MtLjAyMi0uNjA3LS4xODctMS4wODgtLjQ5NS0xLjQ0NC0uMzA5LS4zNTctLjc1LS41MzUtMS4zMjQtLjUzNS0uNTMyLjAtLjk5LjE5NC0xLjM3My41ODMtLjM4Mi4zODgtLjYyMi45NDktLjcxNyAxLjY4M2gzLjkwOXptMS4wMDUgMi43OTJ2MS40MDRjLS41OTYuMzQtMS4zODMuNTEtMi4zNjIuNTEtMS4yNTUuMC0yLjI1NS0uMzc3LTMtMS4xMzItLjc0NC0uNzU1LTEuMTE2LTEuNzQ0LTEuMTE2LTIuOTY4LjAtMS4yOTcuMzQtMi4zMTYgMS4wMjEtMy4wNTUuNjgtLjc0IDEuNTQ4LTEuMTEgMi42LTEuMTEgMS4wMzMuMCAxLjg1Mi4zMjMgMi40NTguOTY2LjYwNi42NDQuOTEgMS41NzIuOTEgMi43ODQuMC4zMy0uMDMzLjY3Ni0uMDk2IDEuMDM4aC01LjMxNGMuMTA3LjcwMi40MDUgMS4yMzkuODk0IDEuNjExLjQ5LjM3MiAxLjEwNi41NTggMS44NS41NTguODYyLjAgMS41OC0uMjAyIDIuMTU1LS42MDZ6bTYuNjA1LTEuNzdoLTEuMjEyYy0uNTk2LjAtMS4wNDUuMTE2LTEuMzQ5LjM1LS4zMDMuMjM0LS40NTQuNTMyLS40NTQuODk0LjAuMzcyLjExNy42NjQuMzUuODc3LjIzNS4yMTMuNTc1LjMyIDEuMDIyLjMyLjUxLjAuOTEyLS4xNDIgMS4yMDQtLjQyNC4yOTMtLjI4MS40NC0uNjUxLjQ0LTEuMTA4di0uOTF6bS00LjA2OC0yLjU1NFY5LjMyNWMuNjI3LS4zNjEgMS40NTctLjU0MiAyLjQ4OS0uNTQyIDIuMTE2LjAgMy4xNzUgMS4wMjYgMy4xNzUgMy4wOFYxN2gtMS41NDh2LS45NTdjLS40MTUuNjgtMS4xNDMgMS4wMi0yLjE4NiAxLjAyLS43NjYuMC0xLjM4LS4yMi0xLjg0My0uNjYxLS40NjItLjQ0Mi0uNjk0LTEuMDAzLS42OTQtMS42ODQuMC0uNzc2LjI5My0xLjM4Ljg3OC0xLjgxLjU4NS0uNDMxIDEuNDA0LS42NDcgMi40NTctLjY0N2gxLjM0VjExLjhjMC0uNTU0LS4xMzMtLjk3MS0uMzk5LTEuMjUzLS4yNjYtLjI4Mi0uNzA3LS40MjMtMS4zMjQtLjQyM2E0LjA3IDQuMDcuMCAwIDAtMi4zNDUuNzE4em05LjMzMy0xLjkzdjEuNDJjLjM5NC0xIDEuMTAxLTEuNSAyLjEyMy0xLjUuMTQ4LjAuMzEzLjAxNi40OTQuMDQ4djEuNTMxYTEuODg1IDEuODg1LjAgMCAwLS43NS0uMTQzYy0uNTQyLjAtLjk4OS4yNC0xLjM0LjcxOC0uMzUxLjQ3OS0uNTI3IDEuMDQ4LS41MjcgMS43MDdWMTdoLTEuNTYzVjguOTFoMS41NjN6bTUuMDEgNC4wODRjLjAyMi44Mi4yNzIgMS40OTIuNzUgMi4wMTkuNDc5LjUyNiAxLjE1Ljc5IDIuMDEuNzkuNjM5LjAgMS4yMzUtLjE3NiAxLjc4OC0uNTI3djEuNDA0Yy0uNTIxLjMxOS0xLjE4Ni40NzktMS45OTUuNDc5LTEuMjY1LjAtMi4yNzYtLjQtMy4wMzEtMS4xOTctLjc1NS0uNzk4LTEuMTMzLTEuNzkyLTEuMTMzLTIuOTg0LjAtMS4xNi4zOC0yLjE1MSAxLjE0LTIuOTc1Ljc2MS0uODI1IDEuNzktMS4yMzcgMy4wODgtMS4yMzcuNzAyLjAgMS4zNDYuMTQ5IDEuOTMuNDQ3djEuNDM2YTMuMjQyIDMuMjQyLjAgMCAwLTEuNzctLjQ5NWMtLjg0LjAtMS41MTMuMjY2LTIuMDE5Ljc5OC0uNTA1LjUzMi0uNzU4IDEuMjEzLS43NTggMi4wNDJ6TTQwLjI0IDUuNzJ2NC41NzljLjQ1OC0xIDEuMjkzLTEuNSAyLjUwNS0xLjUuNzg3LjAgMS40Mi4yNDUgMS44OTkuNzM0LjQ3OS40OS43MTggMS4xNy43MTggMi4wNDJWMTdoLTEuNTY0di01LjEwNmMwLS41NTMtLjE0LS45OC0uNDIyLTEuMjg0LS4yODItLjMwMy0uNjUyLS40NTUtMS4xMS0uNDU1LS41MzEuMC0xLjAwMi4yMDItMS40MTEuNjA2LS40MS40MDUtLjYxNSAxLjAyMi0uNjE1IDEuODUxVjE3aC0xLjU2M1Y1LjcyaDEuNTYzem0xNC45NjYgMTAuMDJjLjU5Ni4wIDEuMDk2LS4yNTMgMS41LS43NTguNDA0LS41MDYuNjA2LTEuMTU3LjYwNi0xLjk1NS4wLS45MTUtLjIwMi0xLjYyLS42MDYtMi4xMTQtLjQwNC0uNDk1LS45Mi0uNzQyLTEuNTQ4LS43NDItLjU1My4wLTEuMDUuMjI0LTEuNDkxLjY3LS40NDIuNDQ3LS42NjIgMS4xMzMtLjY2MiAyLjA1OC4wLjk1OC4yMTIgMS42Ny42MzggMi4xMzguNDI1LjQ2OS45NDYuNzAzIDEuNTYzLjcwM3pNNTMuMDA0IDUuNzJ2NC40MmMuNTc0LS44OTQgMS4zODgtMS4zNDEgMi40NC0xLjM0MSAxLjAyMi4wIDEuODU3LjM4MyAyLjUwNiAxLjE0OS42NDkuNzY2Ljk3MyAxLjc4MS45NzMgMy4wNDcuMCAxLjEzOC0uMzA5IDIuMTA5LS45MjUgMi45MTItLjYxNy44MDMtMS40NjMgMS4yMDUtMi41MzcgMS4yMDUtMS4wNzUuMC0xLjg5NC0uNDQ3LTIuNDU3LTEuMzRWMTdoLTEuNThWNS43MmgxLjU4em05LjkwOCAxMS4xMDQtMy4yMjMtNy45MTNoMS43MzlsMS4wMDUgMi42MzIgMS4yNiAzLjQxNWMuMDk2LS4zMi40OC0xLjQ1OCAxLjE1LTMuNDE1bC45MDktMi42MzJoMS42NmwtMi45MiA3Ljg2NmMtLjc3NyAyLjA3NC0xLjk2MyAzLjExLTMuNTU5IDMuMTFhMi45MiAyLjkyLjAgMCAxLS43MzQtLjA3OXYtMS4zNGMuMTcuMDQyLjM1MS4wNjQuNTQzLjA2NCAxLjAzMi4wIDEuNzU1LS41NyAyLjE3LTEuNzA4eiIgZmlsbD0iIzVkNjQ5NCIvPjxwYXRoIGQ9Ik04OS42MzIgNS45Njd2LS43NzJhLjk3OC45NzguMCAwIDAtLjk3OC0uOTc3aC0yLjI4YS45NzguOTc4LjAgMCAwLS45NzguOTc3di43OTNjMCAuMDg4LjA4Mi4xNS4xNzEuMTNhNy4xMjcgNy4xMjcuMCAwIDEgMS45ODQtLjI4Yy42NS4wIDEuMjk1LjA4OCAxLjkxNy4yNTkuMDgyLjAyLjE2NC0uMDQuMTY0LS4xM20tNi4yNDggMS4wMS0uMzktLjM4OWEuOTc3Ljk3Ny4wIDAgMC0xLjM4Mi4wbC0uNDY1LjQ2NWEuOTczLjk3My4wIDAgMCAwIDEuMzhsLjM4My4zODNjLjA2Mi4wNjEuMTUuMDQ3LjIwNS0uMDE0LjIyNi0uMzA3LjQ3Mi0uNjAxLjc0Ni0uODc0LjI4MS0uMjguNTY4LS41MjYuODgzLS43NTEuMDY4LS4wNDIuMDc1LS4xMzcuMDItLjJtNC4xNiAyLjQ1M3YzLjM0MWMwIC4wOTYuMTA0LjE2NS4xOTIuMTE3bDIuOTctMS41MzdjLjA2OC0uMDM0LjA4OS0uMTE3LjA1NS0uMTg0YTMuNjk1IDMuNjk1LjAgMCAwLTMuMDgtMS44NjZjLS4wNjguMC0uMTM2LjA1NC0uMTM2LjEzbTAgOC4wNDhhNC40ODkgNC40ODkuMCAwIDEtNC40OS00LjQ4MiA0LjQ4OCA0LjQ4OC4wIDAgMSA0LjQ5LTQuNDgyIDQuNDg4IDQuNDg4LjAgMCAxIDQuNDg5IDQuNDgyIDQuNDg0IDQuNDg0LjAgMCAxLTQuNDkgNC40ODJtMC0xMC44NWE2LjM2MyA2LjM2My4wIDEgMCAwIDEyLjcyOSA2LjM3IDYuMzcuMCAwIDAgNi4zNzItNi4zNjggNi4zNTggNi4zNTguMCAwIDAtNi4zNzEtNi4zNiIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4=);background-repeat:no-repeat;background-position:50%;background-size:100%;overflow:hidden;text-indent:-9000px;padding:0!important;width:100%;height:100%;display:block}.overflow-x-scroll{-webkit-overflow-scrolling:touch}.row{-webkit-transition:450ms -webkit-transform;transition:450ms -webkit-transform;transition:450ms transform;transition:450ms transform,450ms -webkit-transform;font-size:0}.tile{-webkit-transition:450ms all;transition:450ms all}.details{background:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.9)),to(rgba(0,0,0,0)));background:linear-gradient(to top,rgba(0,0,0,.9) 0%,rgba(0,0,0,0) 100%);-webkit-transition:450ms opacity;transition:450ms opacity}.tile:hover .details{opacity:1}.row:hover .tile{opacity:.3}.row:hover .tile:hover{opacity:1}.chroma .lntable pre{padding:0;margin:0;border:0}.chroma .lntable pre code{padding:0;margin:0}pre,.pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}code{padding:.2em;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}pre code{display:block;padding:1.5em;font-size:.875rem;line-height:2;overflow-x:auto}pre{background-color:#fff;color:#333;white-space:pre;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;position:relative;border-width:1px;border-color:#ccc;border-style:solid}.highlight pre{background-color:inherit;color:inherit;padding:.5em;font-size:.875rem}.copy:after{content:"Copy"}.copied:after{content:"Copied"}@media screen and (min-width:60em){.full-width,pre.expand:hover{margin-right:-30vw;max-width:100vw}}.code-block .line-numbers-rows{background:#2f3a46;border:none;bottom:-50px;color:#98a4b3;left:-178px;padding:50px 0;top:-50px;width:138px}.code-block .line-numbers-rows>span:before{color:inherit;padding-right:30px}.tab-button{margin-bottom:1px;position:relative;z-index:1;color:#333;border-color:#ccc;outline:none;background-color:#fff}.tab-pane code{background:#f1f2f2;border-radius:0}.tab-pane .chroma{background:0 0;padding:0}.tab-button.active{border-bottom-color:#f1f2f2;background-color:#f1f2f2}.tab-content .tab-pane{display:none}.tab-content .tab-pane.active{display:block}.tab-content .copy,.tab-content .copied{display:none}.tab-content .tab-pane.active+.copy,.tab-content .tab-pane.active+.copied{display:block}.primary-color{color:#0594cb}.bg-primary-color{background-color:#0594cb}.hover-bg-primary-color:hover{background-color:#0594cb}.primary-color-dark{color:#0a1922}.bg-primary-color-dark{background-color:#0a1922}.hover-bg-primary-color-dark:hover{background-color:#0a1922}.primary-color-light{color:#f9f9f9}.bg-primary-color-light{background-color:#f9f9f9}.hover-bg-primary-color-light:hover{background-color:#f9f9f9}.accent-color{color:#ebb951}.bg-accent-color{background-color:#ebb951}.hover-bg-accent-color:hover{background-color:#ebb951}.accent-color-light{color:#ff4088}.hover-accent-color-light:hover{color:#ff4088}.bg-accent-color-light{background-color:#ff4088}.hover-bg-accent-color-light:hover{background-color:#ff4088}.accent-color-dark{color:#33ba91}.bg-accent-color-dark{background-color:#33ba91}.hover-bg-accent-color-dark:hover{background-color:#33ba91}.text-color-primary{color:#373737}.text-on-primary-color{color:#fff}.text-color-secondary{color:#ccc}.text-color-disabled{color:#f7f7f7}.divider-color{color:#f6f6f6}.warn-color{color:red}.nested-links a{color:#0594cb;text-decoration:none}.column-count-2{-webkit-column-count:1;column-count:1}.column-gap-1{-webkit-column-gap:0;column-gap:0}.break-inside-avoid{-webkit-column-break-inside:auto;break-inside:auto}@media screen and (min-width:60em){.column-count-3-l{-webkit-column-count:3;column-count:3}.column-count-2-l{-webkit-column-count:2;column-count:2}.column-gap-1-l{-webkit-column-gap:1;column-gap:1}.break-inside-avoid-l{-webkit-column-break-inside:avoid;break-inside:avoid}}.prose ul,.prose ol{margin-bottom:2em}.prose ul li,.prose ol li{margin-bottom:.5em}.prose li:hover{background-color:#eee}.prose ::selection{background:#0594cb;color:#fff}body{line-height:1.45}p{margin-bottom:1.3em}h1,h2,h3,h4{margin:1.414em 0 .5em;line-height:1.2}h1{margin-top:0;font-size:2.441em}h2{font-size:1.953em}h3{font-size:1.563em}h4{font-size:1.25em}small,.font_small{font-size:.8em}.prose table{width:100%;margin-bottom:3em;border-collapse:collapse;border-spacing:0;font-size:1em;border:1px solid #eee}.prose table th{background-color:#0594cb;border-bottom:1px solid #0594cb;color:#fff;font-weight:400;text-align:left;padding:.375em .5em}.prose table td,.prose table tc{padding:.75em .5em;text-align:left;border-right:1px solid #eee}.prose table tr:nth-child(even){background-color:#eee}dl dt{font-weight:700;font-size:1.125rem}dd{margin:.5em 0 2em;padding:0}.f2-fluid{font-size:2.25rem}@media screen and (min-width:60em){.f2-fluid{font-size:1.25rem;font-size:calc(0.70833rem + 0.83333vw)}}code,.code,pre code,.highlight pre{font-family:inconsolata,Menlo,Monaco,courier new,monospace}.sans-serif{font-family:muli,avenir,helvetica neue,helvetica,ubuntu,roboto,noto,segoe ui,arial,sans-serif}.serif{font-family:Palatino,palatino linotype,palatino lt std,book antiqua,Georgia,serif}.courier{font-family:courier next,courier,monospace}.helvetica{font-family:helvetica neue,helvetica,sans-serif}.avenir{font-family:avenir next,avenir,sans-serif}.athelas{font-family:athelas,georgia,serif}.georgia{font-family:georgia,serif}.times{font-family:times,serif}.bodoni{font-family:bodoni mt,serif}.calisto{font-family:calisto mt,serif}.garamond{font-family:garamond,serif}.baskerville{font-family:baskerville,serif}.pagination{margin:3rem 0}.pagination li{display:inline-block;margin-right:.375rem;font-size:.875rem;margin-bottom:2.5em}.pagination li a{padding:.5rem .625rem;background-color:#fff;color:#333;border:1px solid #ddd;border-radius:3px;text-decoration:none}.pagination li.disabled{display:none}.pagination li.active a:link,.pagination li.active a:active,.pagination li.active a:visited{background-color:#ddd}#TableOfContents ul li ul li ul li{display:none}#TableOfContents ul li{color:#000;display:block;margin-bottom:.375em;line-height:1.375}#TableOfContents ul li a{width:100%;padding:.25em .375em;margin-left:-.375em}#TableOfContents ul li a:hover{background-color:#999;color:#fff}.no-js .needs-js{opacity:0}.js .needs-js{opacity:1;-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.facebook,.twitter,.instagram,.youtube{fill:#bababa}.facebook:hover{fill:#3b5998}.twitter{fill:#55acee}.twitter:hover{fill:#bababa}.instagram:hover{fill:#e95950}.youtube:hover{fill:#b00}@media(min-width:75em){[data-scrolldir=down] .sticky{position:fixed;top:100px;right:0}[data-scrolldir=up] .sticky{position:fixed;top:100px;right:0}}.fill-current{fill:currentColor}.chroma{background-color:#fff}.chroma .err{color:#a61717;background-color:#e3d2d2}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block}.chroma .hl{display:block;width:100%;background-color:#ffc}.chroma .lnt{margin-right:.4em;padding:0 .4em}.chroma .ln{margin-right:.4em;padding:0 .4em}.chroma .k{font-weight:700}.chroma .kc{font-weight:700}.chroma .kd{font-weight:700}.chroma .kn{font-weight:700}.chroma .kp{font-weight:700}.chroma .kr{font-weight:700}.chroma .kt{color:#458;font-weight:700}.chroma .na{color:teal}.chroma .nb{color:#999}.chroma .nc{color:#458;font-weight:700}.chroma .no{color:teal}.chroma .ni{color:purple}.chroma .ne{color:#900;font-weight:700}.chroma .nf{color:#900;font-weight:700}.chroma .nn{color:#555}.chroma .nt{color:navy}.chroma .nv{color:teal}.chroma .s{color:#b84}.chroma .sa{color:#b84}.chroma .sb{color:#b84}.chroma .sc{color:#b84}.chroma .dl{color:#b84}.chroma .sd{color:#b84}.chroma .s2{color:#b84}.chroma .se{color:#b84}.chroma .sh{color:#b84}.chroma .si{color:#b84}.chroma .sx{color:#b84}.chroma .sr{color:olive}.chroma .s1{color:#b84}.chroma .ss{color:#b84}.chroma .m{color:#099}.chroma .mb{color:#099}.chroma .mf{color:#099}.chroma .mh{color:#099}.chroma .mi{color:#099}.chroma .il{color:#099}.chroma .mo{color:#099}.chroma .o{font-weight:700}.chroma .ow{font-weight:700}.chroma .c{color:#998;font-style:italic}.chroma .ch{color:#998;font-style:italic}.chroma .cm{color:#998;font-style:italic}.chroma .c1{color:#998;font-style:italic}.chroma .cs{color:#999;font-weight:700;font-style:italic}.chroma .cp{color:#999;font-weight:700}.chroma .cpf{color:#999;font-weight:700}.chroma .gd{color:#000;background-color:#fdd}.chroma .ge{font-style:italic}.chroma .gr{color:#a00}.chroma .gh{color:#999}.chroma .gi{color:#000;background-color:#dfd}.chroma .go{color:#888}.chroma .gp{color:#555}.chroma .gs{font-weight:700}.chroma .gu{color:#aaa}.chroma .gt{color:#a00}.chroma .w{color:#bbb}.nested-blockquote blockquote{border-left:4px solid #0594cb;padding-left:1em}.mw-90{max-width:90%} \ No newline at end of file
diff --git a/docs/resources/_gen/assets/css/output/css/app.css_d11fe7b62c27961c87ecd0f2490357b9.json b/docs/resources/_gen/assets/css/output/css/app.css_d11fe7b62c27961c87ecd0f2490357b9.json
deleted file mode 100644
index 91f089a79..000000000
--- a/docs/resources/_gen/assets/css/output/css/app.css_d11fe7b62c27961c87ecd0f2490357b9.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Target":"output/css/app.min.2ac9b5935f7ff7709fe13c2b042a4a2d49fa96fb508e3e8870019ee9b72cf329.css","MediaType":"text/css","Data":{"Integrity":"sha256-Ksm1k19/93Cf4TwrBCpKLUn6lvtQjj6IcAGe6bcs8yk="}} \ No newline at end of file
diff --git a/docs/resources/_gen/assets/js/output/js/app.js_8848f55d07695b7ff7188138f23d69e3.content b/docs/resources/_gen/assets/js/output/js/app.js_8848f55d07695b7ff7188138f23d69e3.content
deleted file mode 100644
index 3097ec5a6..000000000
--- a/docs/resources/_gen/assets/js/output/js/app.js_8848f55d07695b7ff7188138f23d69e3.content
+++ /dev/null
@@ -1,18 +0,0 @@
-!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){!function(t,n){var r=function(e,t){"use strict";if(!t.getElementsByClassName)return;var n,r,i=t.documentElement,s=e.Date,o=e.HTMLPictureElement,a=e.addEventListener,c=e.setTimeout,u=e.requestAnimationFrame||c,l=e.requestIdleCallback,h=/^picture$/i,d=["load","error","lazyincluded","_lazyloaded"],f={},p=Array.prototype.forEach,g=function(e,t){return f[t]||(f[t]=new RegExp("(\\s|^)"+t+"(\\s|$)")),f[t].test(e.getAttribute("class")||"")&&f[t]},m=function(e,t){g(e,t)||e.setAttribute("class",(e.getAttribute("class")||"").trim()+" "+t)},v=function(e,t){var n;(n=g(e,t))&&e.setAttribute("class",(e.getAttribute("class")||"").replace(n," "))},y=function(e,t,n){var r=n?"addEventListener":"removeEventListener";n&&y(e,t),d.forEach(function(n){e[r](n,t)})},b=function(e,r,i,s,o){var a=t.createEvent("Event");return i||(i={}),i.instance=n,a.initEvent(r,!s,!o),a.detail=i,e.dispatchEvent(a),a},w=function(t,n){var i;!o&&(i=e.picturefill||r.pf)?(n&&n.src&&!t.getAttribute("srcset")&&t.setAttribute("srcset",n.src),i({reevaluate:!0,elements:[t]})):n&&n.src&&(t.src=n.src)},_=function(e,t){return(getComputedStyle(e,null)||{})[t]},E=function(e,t,n){for(n=n||e.offsetWidth;n<r.minSize&&t&&!e._lazysizesWidth;)n=t.offsetWidth,t=t.parentNode;return n},x=function(){var e,n,r=[],i=[],s=r,o=function(){var t=s;for(s=r.length?i:r,e=!0,n=!1;t.length;)t.shift()();e=!1},a=function(r,i){e&&!i?r.apply(this,arguments):(s.push(r),n||(n=!0,(t.hidden?c:u)(o)))};return a._lsFlush=o,a}(),S=function(e,t){return t?function(){x(e)}:function(){var t=this,n=arguments;x(function(){e.apply(t,n)})}},C=function(e){var t,n,r=function(){t=null,e()},i=function(){var e=s.now()-n;e<99?c(i,99-e):(l||r)(r)};return function(){n=s.now(),t||(t=c(i,99))}};!function(){var t,n={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};for(t in r=e.lazySizesConfig||e.lazysizesConfig||{},n)t in r||(r[t]=n[t]);e.lazySizesConfig=r,c(function(){r.init&&O()})}();var A=function(){var o,u,d,f,E,A,O,T,k,R,M,L,I,D,P=/^img$/i,j=/^iframe$/i,$="onscroll"in e&&!/(gle|ing)bot/.test(navigator.userAgent),H=0,B=0,q=-1,z=function(e){B--,e&&e.target&&y(e.target,z),(!e||B<0||!e.target)&&(B=0)},F=function(e,n){var r,s=e,o="hidden"==_(t.body,"visibility")||"hidden"!=_(e.parentNode,"visibility")&&"hidden"!=_(e,"visibility");for(T-=n,M+=n,k-=n,R+=n;o&&(s=s.offsetParent)&&s!=t.body&&s!=i;)(o=(_(s,"opacity")||1)>0)&&"visible"!=_(s,"overflow")&&(r=s.getBoundingClientRect(),o=R>r.left&&k<r.right&&M>r.top-1&&T<r.bottom+1);return o},U=function(){var e,s,a,c,l,h,d,p,g,m=n.elements;if((f=r.loadMode)&&B<8&&(e=m.length)){s=0,q++,null==I&&("expand"in r||(r.expand=i.clientHeight>500&&i.clientWidth>500?500:370),L=r.expand,I=L*r.expFactor),H<I&&B<1&&q>2&&f>2&&!t.hidden?(H=I,q=0):H=f>1&&q>1&&B<6?L:0;for(;s<e;s++)if(m[s]&&!m[s]._lazyRace)if($)if((p=m[s].getAttribute("data-expand"))&&(h=1*p)||(h=H),g!==h&&(A=innerWidth+h*D,O=innerHeight+h,d=-1*h,g=h),a=m[s].getBoundingClientRect(),(M=a.bottom)>=d&&(T=a.top)<=O&&(R=a.right)>=d*D&&(k=a.left)<=A&&(M||R||k||T)&&(r.loadHidden||"hidden"!=_(m[s],"visibility"))&&(u&&B<3&&!p&&(f<3||q<4)||F(m[s],h))){if(X(m[s]),l=!0,B>9)break}else!l&&u&&!c&&B<4&&q<4&&f>2&&(o[0]||r.preloadAfterLoad)&&(o[0]||!p&&(M||R||k||T||"auto"!=m[s].getAttribute(r.sizesAttr)))&&(c=o[0]||m[s]);else X(m[s]);c&&!l&&X(c)}},K=function(e){var t,n=0,i=r.throttleDelay,o=r.ricTimeout,a=function(){t=!1,n=s.now(),e()},u=l&&o>49?function(){l(a,{timeout:o}),o!==r.ricTimeout&&(o=r.ricTimeout)}:S(function(){c(a)},!0);return function(e){var r;(e=!0===e)&&(o=33),t||(t=!0,(r=i-(s.now()-n))<0&&(r=0),e||r<9?u():c(u,r))}}(U),V=function(e){m(e.target,r.loadedClass),v(e.target,r.loadingClass),y(e.target,W),b(e.target,"lazyloaded")},J=S(V),W=function(e){J({target:e.target})},G=function(e){var t,n=e.getAttribute(r.srcsetAttr);(t=r.customMedia[e.getAttribute("data-media")||e.getAttribute("media")])&&e.setAttribute("media",t),n&&e.setAttribute("srcset",n)},Q=S(function(e,t,n,i,s){var o,a,u,l,f,g;(f=b(e,"lazybeforeunveil",t)).defaultPrevented||(i&&(n?m(e,r.autosizesClass):e.setAttribute("sizes",i)),a=e.getAttribute(r.srcsetAttr),o=e.getAttribute(r.srcAttr),s&&(u=e.parentNode,l=u&&h.test(u.nodeName||"")),g=t.firesLoad||"src"in e&&(a||o||l),f={target:e},g&&(y(e,z,!0),clearTimeout(d),d=c(z,2500),m(e,r.loadingClass),y(e,W,!0)),l&&p.call(u.getElementsByTagName("source"),G),a?e.setAttribute("srcset",a):o&&!l&&(j.test(e.nodeName)?function(e,t){try{e.contentWindow.location.replace(t)}catch(n){e.src=t}}(e,o):e.src=o),s&&(a||l)&&w(e,{src:o})),e._lazyRace&&delete e._lazyRace,v(e,r.lazyClass),x(function(){(!g||e.complete&&e.naturalWidth>1)&&(g?z(f):B--,V(f))},!0)}),X=function(e){var t,n=P.test(e.nodeName),i=n&&(e.getAttribute(r.sizesAttr)||e.getAttribute("sizes")),s="auto"==i;(!s&&u||!n||!e.getAttribute("src")&&!e.srcset||e.complete||g(e,r.errorClass)||!g(e,r.lazyClass))&&(t=b(e,"lazyunveilread").detail,s&&N.updateElem(e,!0,e.offsetWidth),e._lazyRace=!0,B++,Q(e,t,s,i,n))},Z=function(){if(!u)if(s.now()-E<999)c(Z,999);else{var e=C(function(){r.loadMode=3,K()});u=!0,r.loadMode=3,K(),a("scroll",function(){3==r.loadMode&&(r.loadMode=2),e()},!0)}};return{_:function(){E=s.now(),n.elements=t.getElementsByClassName(r.lazyClass),o=t.getElementsByClassName(r.lazyClass+" "+r.preloadClass),D=r.hFac,a("scroll",K,!0),a("resize",K,!0),e.MutationObserver?new MutationObserver(K).observe(i,{childList:!0,subtree:!0,attributes:!0}):(i.addEventListener("DOMNodeInserted",K,!0),i.addEventListener("DOMAttrModified",K,!0),setInterval(K,999)),a("hashchange",K,!0),["focus","mouseover","click","load","transitionend","animationend","webkitAnimationEnd"].forEach(function(e){t.addEventListener(e,K,!0)}),/d$|^c/.test(t.readyState)?Z():(a("load",Z),t.addEventListener("DOMContentLoaded",K),c(Z,2e4)),n.elements.length?(U(),x._lsFlush()):K()},checkElems:K,unveil:X}}(),N=function(){var e,n=S(function(e,t,n,r){var i,s,o;if(e._lazysizesWidth=r,r+="px",e.setAttribute("sizes",r),h.test(t.nodeName||""))for(i=t.getElementsByTagName("source"),s=0,o=i.length;s<o;s++)i[s].setAttribute("sizes",r);n.detail.dataAttr||w(e,n.detail)}),i=function(e,t,r){var i,s=e.parentNode;s&&(r=E(e,s,r),(i=b(e,"lazybeforesizes",{width:r,dataAttr:!!t})).defaultPrevented||(r=i.detail.width)&&r!==e._lazysizesWidth&&n(e,s,i,r))},s=C(function(){var t,n=e.length;if(n)for(t=0;t<n;t++)i(e[t])});return{_:function(){e=t.getElementsByClassName(r.autosizesClass),a("resize",s)},checkElems:s,updateElem:i}}(),O=function(){O.i||(O.i=!0,N._(),A._())};return n={cfg:r,autoSizer:N,loader:A,init:O,uP:w,aC:m,rC:v,hC:g,fire:b,gW:E,rAF:x}}(t,t.document);t.lazySizes=r,e.exports&&(e.exports=r)}(window)},function(e,t,n){"use strict";n.r(t);n(3),n(4),n(5),n(7),n(8),n(10),n(21),n(23),n(24),n(26),n(27),n(28);n(2)},function(e,t,n){},function(e,t,n){},function(e,t){var n=function(e){var t=document.createElement("a");return t.className="header-link",t.href="#"+e,t.innerHTML=' <svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/></svg>',t},r=function(e,t){for(var r=t.getElementsByTagName("h"+e),i=0;i<r.length;i++){var s=r[i];void 0!==s.id&&""!==s.id&&s.appendChild(n(s.id))}};document.onreadystatechange=function(){if("complete"===this.readyState){var e=document.getElementsByClassName("prose")[0];if(!e)return;for(var t=2;t<=4;t++)r(t,e)}}},function(e,t,n){function r(e,t){e.setAttribute("class","copied bg-primary-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2"),e.setAttribute("aria-label",t)}new(n(6))(".copy",{target:function(e){return e.classList.contains("copy-toggle")?e.previousElementSibling:e.nextElementSibling}}).on("success",function(e){r(e.trigger,"Copied!"),e.clearSelection()}).on("error",function(e){r(e.trigger,function(e,t){var n="",r="cut"===t?"X":"C";n=isMac?"Press ⌘-"+r:"Press Ctrl-"+r;return n}(e.action))})},function(e,t,n){
-/*!
- * clipboard.js v2.0.4
- * https://zenorocha.github.io/clipboard.js
- *
- * Licensed MIT © Zeno Rocha
- */
-!function(t,n){e.exports=n()}(0,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=c(n(1)),o=c(n(3)),a=c(n(4));function c(e){return e&&e.__esModule?e:{default:e}}var u=function(e){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.resolveOptions(n),r.listenClick(e),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.default),i(t,[{key:"resolveOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===r(e.container)?e.container:document.body}},{key:"listenClick",value:function(e){var t=this;this.listener=(0,a.default)(e,"click",function(e){return t.onClick(e)})}},{key:"onClick",value:function(e){var t=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new s.default({action:this.action(t),target:this.target(t),text:this.text(t),container:this.container,trigger:t,emitter:this})}},{key:"defaultAction",value:function(e){return l("action",e)}},{key:"defaultTarget",value:function(e){var t=l("target",e);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(e){return l("text",e)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof e?[e]:e,n=!!document.queryCommandSupported;return t.forEach(function(e){n=n&&!!document.queryCommandSupported(e)}),n}}]),t}();function l(e,t){var n="data-clipboard-"+e;if(t.hasAttribute(n))return t.getAttribute(n)}e.exports=u},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=function(e){return e&&e.__esModule?e:{default:e}}(n(2));var o=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.resolveOptions(t),this.initSelection()}return i(e,[{key:"resolveOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var e=this,t="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[t?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,s.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,s.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(e){this.emitter.emit(e?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(e){if(void 0!==e){if(!e||"object"!==(void 0===e?"undefined":r(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function(){return this._target}}]),e}();e.exports=o},function(e,t){e.exports=function(e){var t;if("SELECT"===e.nodeName)e.focus(),t=e.value;else if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName){var n=e.hasAttribute("readonly");n||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),n||e.removeAttribute("readonly"),t=e.value}else{e.hasAttribute("contenteditable")&&e.focus();var r=window.getSelection(),i=document.createRange();i.selectNodeContents(e),r.removeAllRanges(),r.addRange(i),t=r.toString()}return t}},function(e,t){function n(){}n.prototype={on:function(e,t,n){var r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:n}),this},once:function(e,t,n){var r=this;function i(){r.off(e,i),t.apply(n,arguments)}return i._=t,this.on(e,i,n)},emit:function(e){for(var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),r=0,i=n.length;r<i;r++)n[r].fn.apply(n[r].ctx,t);return this},off:function(e,t){var n=this.e||(this.e={}),r=n[e],i=[];if(r&&t)for(var s=0,o=r.length;s<o;s++)r[s].fn!==t&&r[s].fn._!==t&&i.push(r[s]);return i.length?n[e]=i:delete n[e],this}},e.exports=n},function(e,t,n){var r=n(5),i=n(6);e.exports=function(e,t,n){if(!e&&!t&&!n)throw new Error("Missing required arguments");if(!r.string(t))throw new TypeError("Second argument must be a String");if(!r.fn(n))throw new TypeError("Third argument must be a Function");if(r.node(e))return function(e,t,n){return e.addEventListener(t,n),{destroy:function(){e.removeEventListener(t,n)}}}(e,t,n);if(r.nodeList(e))return function(e,t,n){return Array.prototype.forEach.call(e,function(e){e.addEventListener(t,n)}),{destroy:function(){Array.prototype.forEach.call(e,function(e){e.removeEventListener(t,n)})}}}(e,t,n);if(r.string(e))return function(e,t,n){return i(document.body,e,t,n)}(e,t,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}},function(e,t){t.node=function(e){return void 0!==e&&e instanceof HTMLElement&&1===e.nodeType},t.nodeList=function(e){var n=Object.prototype.toString.call(e);return void 0!==e&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in e&&(0===e.length||t.node(e[0]))},t.string=function(e){return"string"==typeof e||e instanceof String},t.fn=function(e){return"[object Function]"===Object.prototype.toString.call(e)}},function(e,t,n){var r=n(7);function i(e,t,n,i,s){var o=function(e,t,n,i){return function(n){n.delegateTarget=r(n.target,t),n.delegateTarget&&i.call(e,n)}}.apply(this,arguments);return e.addEventListener(n,o,s),{destroy:function(){e.removeEventListener(n,o,s)}}}e.exports=function(e,t,n,r,s){return"function"==typeof e.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof e&&(e=document.querySelectorAll(e)),Array.prototype.map.call(e,function(e){return i(e,t,n,r,s)}))}},function(e,t){var n=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}e.exports=function(e,t){for(;e&&e.nodeType!==n;){if("function"==typeof e.matches&&e.matches(t))return e;e=e.parentNode}}}])})},function(e,t){let n=document.getElementById("prose");if(n){let e=n.getElementsByTagName("code");for(let[t,n]of Object.entries(e)){n.scrollWidth-n.clientWidth>0&&n.parentNode.classList.add("expand")}}},function(e,t,n){n(9)({apiKey:"167e7998590aebda7f9fedcf86bc4a55",indexName:"hugodocs",inputSelector:"#search-input",debug:!0})},function(e,t,n){
-/*! docsearch 2.6.1 | © Algolia | github.com/algolia/docsearch */
-!function(t,n){e.exports=n()}("undefined"!=typeof self&&self,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=22)}([function(e,t,n){"use strict";var r=n(1);function i(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}e.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(e){if(void 0===e&&(e=navigator.userAgent),/(msie|trident)/i.test(e)){var t=e.match(/(msie |rv:)(\d+(.\d+)?)/i);if(t)return t[2]}return!1},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(e){return"number"==typeof e},toStr:function(e){return void 0===e||null===e?"":e+""},cloneDeep:function(e){var t=this.mixin({},e),n=this;return this.each(t,function(e,r){e&&(n.isArray(e)?t[r]=[].concat(e):n.isObject(e)&&(t[r]=n.cloneDeep(e)))}),t},error:function(e){throw new Error(e)},every:function(e,t){var n=!0;return e?(this.each(e,function(r,i){if(!(n=t.call(null,r,i,e)))return!1}),!!n):n},any:function(e,t){var n=!1;return e?(this.each(e,function(r,i){if(t.call(null,r,i,e))return n=!0,!1}),n):n},getUniqueId:function(){var e=0;return function(){return e++}}(),templatify:function(e){if(this.isFunction(e))return e;var t=r.element(e);return"SCRIPT"===t.prop("tagName")?function(){return t.text()}:function(){return String(e)}},defer:function(e){setTimeout(e,0)},noop:function(){},formatPrefix:function(e,t){return t?"":e+"-"},className:function(e,t,n){return(n?"":".")+e+t},escapeHighlightedString:function(e,t,n){t=t||"<em>";var r=document.createElement("div");r.appendChild(document.createTextNode(t)),n=n||"</em>";var s=document.createElement("div");s.appendChild(document.createTextNode(n));var o=document.createElement("div");return o.appendChild(document.createTextNode(e)),o.innerHTML.replace(RegExp(i(r.innerHTML),"g"),t).replace(RegExp(i(s.innerHTML),"g"),n)}}},function(e,t,n){"use strict";e.exports={element:null}},function(e,t){var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString;e.exports=function(e,t,i){if("[object Function]"!==r.call(t))throw new TypeError("iterator must be a function");var s=e.length;if(s===+s)for(var o=0;o<s;o++)t.call(i,e[o],o,e);else for(var a in e)n.call(e,a)&&t.call(i,e[a],a,e)}},function(e,t){e.exports=function(e){return JSON.parse(JSON.stringify(e))}},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=n(12);function i(e,t){var r=n(2),i=this;"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):i.stack=(new Error).stack||"Cannot get a stacktrace, browser is too old",this.name="AlgoliaSearchError",this.message=e||"Unknown error",t&&r(t,function(e,t){i[t]=e})}function s(e,t){function n(){var n=Array.prototype.slice.call(arguments,0);"string"!=typeof n[0]&&n.unshift(t),i.apply(this,n),this.name="AlgoliaSearch"+e+"Error"}return r(n,i),n}r(i,Error),e.exports={AlgoliaSearchError:i,UnparsableJSON:s("UnparsableJSON","Could not parse the incoming response as JSON, see err.more for details"),RequestTimeout:s("RequestTimeout","Request timedout before getting a response"),Network:s("Network","Network issue, see err.more for details"),JSONPScriptFail:s("JSONPScriptFail","<script> was loaded but did not call our provided callback"),JSONPScriptError:s("JSONPScriptError","<script> unable to load due to an `error` event on it"),Unknown:s("Unknown","Unknown error occured")}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){var r=n(2);e.exports=function(e,t){var n=[];return r(e,function(r,i){n.push(t(r,i,e))}),n}},function(e,t,n){(function(r){function i(){var e;try{e=t.storage.debug}catch(e){}return!e&&void 0!==r&&"env"in r&&(e=Object({NODE_ENV:"production"}).DEBUG),e}(t=e.exports=n(39)).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},t.formatArgs=function(e){var n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),!n)return;var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var i=0,s=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&"%c"===e&&(s=++i)}),e.splice(s,0,r)},t.save=function(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}},t.load=i,t.useColors=function(){if("undefined"!=typeof window&&window.process&&"renderer"===window.process.type)return!0;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(i())}).call(t,n(9))},function(e,t){var n,r,i=e.exports={};function s(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function a(e){if(n===setTimeout)return setTimeout(e,0);if((n===s||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:s}catch(e){n=s}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(e){r=o}}();var c,u=[],l=!1,h=-1;function d(){l&&c&&(l=!1,c.length?u=c.concat(u):h=-1,u.length&&f())}function f(){if(!l){var e=a(d);l=!0;for(var t=u.length;t;){for(c=u,u=[];++h<t;)c&&c[h].run();h=-1,t=u.length}c=null,l=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function g(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new p(e,t)),1!==u.length||l||a(f)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(e,t,n){"use strict";var r=n(53),i=/\s+/;function s(e,t,n,r){var s;if(!n)return this;for(t=t.split(i),n=r?function(e,t){return e.bind?e.bind(t):function(){e.apply(t,[].slice.call(arguments,0))}}(n,r):n,this._callbacks=this._callbacks||{};s=t.shift();)this._callbacks[s]=this._callbacks[s]||{sync:[],async:[]},this._callbacks[s][e].push(n);return this}function o(e,t,n){return function(){for(var r,i=0,s=e.length;!r&&i<s;i+=1)r=!1===e[i].apply(t,n);return!r}}e.exports={onSync:function(e,t,n){return s.call(this,"sync",e,t,n)},onAsync:function(e,t,n){return s.call(this,"async",e,t,n)},off:function(e){var t;if(!this._callbacks)return this;e=e.split(i);for(;t=e.shift();)delete this._callbacks[t];return this},trigger:function(e){var t,n,s,a,c;if(!this._callbacks)return this;e=e.split(i),s=[].slice.call(arguments,1);for(;(t=e.shift())&&(n=this._callbacks[t]);)a=o(n.sync,this,[t].concat(s)),c=o(n.async,this,[t].concat(s)),a()&&r(c);return this}}},function(e,t,n){"use strict";var r=n(0),i={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};r.isMsie()&&r.mixin(i.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),r.isMsie()&&r.isMsie()<=7&&r.mixin(i.input,{marginTop:"-1px"}),e.exports=i},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},function(e,t,n){e.exports=function(e,t){return function(n,i,s){if("function"==typeof n&&"object"==typeof i||"object"==typeof s)throw new r.AlgoliaSearchError("index.search usage is index.search(query, params, cb)");0===arguments.length||"function"==typeof n?(s=n,n=""):1!==arguments.length&&"function"!=typeof i||(s=i,i=void 0),"object"==typeof n&&null!==n?(i=n,n=void 0):void 0!==n&&null!==n||(n="");var o,a="";return void 0!==n&&(a+=e+"="+encodeURIComponent(n)),void 0!==i&&(i.additionalUA&&(o=i.additionalUA,delete i.additionalUA),a=this.as._getSearchParams(i,a)),this._search(a,t,s,o)}};var r=n(5)},function(e,t,n){e.exports=function(e,t){var r=n(36),i={};return n(2)(r(e),function(n){!0!==t(n)&&(i[n]=e[n])}),i}},function(e,t){!function(t,n){e.exports=function(e){var t=function(){var t,n,r,i,s,o,a=[],c=a.concat,u=a.filter,l=a.slice,h=e.document,d={},f={},p={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},g=/^\s*<(\w+|!)[^>]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,y=/^(?:body|html)$/i,b=/([A-Z])/g,w=["val","css","html","text","data","width","height","offset"],_=h.createElement("table"),E=h.createElement("tr"),x={tr:h.createElement("tbody"),tbody:_,thead:_,tfoot:_,td:E,th:E,"*":h.createElement("div")},S=/complete|loaded|interactive/,C=/^[\w-]*$/,A={},N=A.toString,O={},T=h.createElement("div"),k={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},R=Array.isArray||function(e){return e instanceof Array};function M(e){return null==e?String(e):A[N.call(e)]||"object"}function L(e){return"function"==M(e)}function I(e){return null!=e&&e==e.window}function D(e){return null!=e&&e.nodeType==e.DOCUMENT_NODE}function P(e){return"object"==M(e)}function j(e){return P(e)&&!I(e)&&Object.getPrototypeOf(e)==Object.prototype}function $(e){var t=!!e&&"length"in e&&e.length,n=r.type(e);return"function"!=n&&!I(e)&&("array"==n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function H(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function B(e){return e in f?f[e]:f[e]=new RegExp("(^|\\s)"+e+"(\\s|$)")}function q(e,t){return"number"!=typeof t||p[H(e)]?t:t+"px"}function z(e){return"children"in e?l.call(e.children):r.map(e.childNodes,function(e){if(1==e.nodeType)return e})}function F(e,t){var n,r=e?e.length:0;for(n=0;n<r;n++)this[n]=e[n];this.length=r,this.selector=t||""}function U(e,t){return null==t?r(e):r(e).filter(t)}function K(e,t,n,r){return L(t)?t.call(e,n,r):t}function V(e,t,n){null==n?e.removeAttribute(t):e.setAttribute(t,n)}function J(e,n){var r=e.className||"",i=r&&r.baseVal!==t;if(n===t)return i?r.baseVal:r;i?r.baseVal=n:e.className=n}function W(e){try{return e?"true"==e||"false"!=e&&("null"==e?null:+e+""==e?+e:/^[\[\{]/.test(e)?r.parseJSON(e):e):e}catch(t){return e}}return O.matches=function(e,t){if(!t||!e||1!==e.nodeType)return!1;var n=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.matchesSelector;if(n)return n.call(e,t);var r,i=e.parentNode,s=!i;return s&&(i=T).appendChild(e),r=~O.qsa(i,t).indexOf(e),s&&T.removeChild(e),r},s=function(e){return e.replace(/-+(.)?/g,function(e,t){return t?t.toUpperCase():""})},o=function(e){return u.call(e,function(t,n){return e.indexOf(t)==n})},O.fragment=function(e,n,i){var s,o,a;return m.test(e)&&(s=r(h.createElement(RegExp.$1))),s||(e.replace&&(e=e.replace(v,"<$1></$2>")),n===t&&(n=g.test(e)&&RegExp.$1),n in x||(n="*"),(a=x[n]).innerHTML=""+e,s=r.each(l.call(a.childNodes),function(){a.removeChild(this)})),j(i)&&(o=r(s),r.each(i,function(e,t){w.indexOf(e)>-1?o[e](t):o.attr(e,t)})),s},O.Z=function(e,t){return new F(e,t)},O.isZ=function(e){return e instanceof O.Z},O.init=function(e,n){var i;if(!e)return O.Z();if("string"==typeof e)if("<"==(e=e.trim())[0]&&g.test(e))i=O.fragment(e,RegExp.$1,n),e=null;else{if(n!==t)return r(n).find(e);i=O.qsa(h,e)}else{if(L(e))return r(h).ready(e);if(O.isZ(e))return e;if(R(e))i=function(e){return u.call(e,function(e){return null!=e})}(e);else if(P(e))i=[e],e=null;else if(g.test(e))i=O.fragment(e.trim(),RegExp.$1,n),e=null;else{if(n!==t)return r(n).find(e);i=O.qsa(h,e)}}return O.Z(i,e)},(r=function(e,t){return O.init(e,t)}).extend=function(e){var r,i=l.call(arguments,1);return"boolean"==typeof e&&(r=e,e=i.shift()),i.forEach(function(i){!function e(r,i,s){for(n in i)s&&(j(i[n])||R(i[n]))?(j(i[n])&&!j(r[n])&&(r[n]={}),R(i[n])&&!R(r[n])&&(r[n]=[]),e(r[n],i[n],s)):i[n]!==t&&(r[n]=i[n])}(e,i,r)}),e},O.qsa=function(e,t){var n,r="#"==t[0],i=!r&&"."==t[0],s=r||i?t.slice(1):t,o=C.test(s);return e.getElementById&&o&&r?(n=e.getElementById(s))?[n]:[]:1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType?[]:l.call(o&&!r&&e.getElementsByClassName?i?e.getElementsByClassName(s):e.getElementsByTagName(t):e.querySelectorAll(t))},r.contains=h.documentElement.contains?function(e,t){return e!==t&&e.contains(t)}:function(e,t){for(;t&&(t=t.parentNode);)if(t===e)return!0;return!1},r.type=M,r.isFunction=L,r.isWindow=I,r.isArray=R,r.isPlainObject=j,r.isEmptyObject=function(e){var t;for(t in e)return!1;return!0},r.isNumeric=function(e){var t=Number(e),n=typeof e;return null!=e&&"boolean"!=n&&("string"!=n||e.length)&&!isNaN(t)&&isFinite(t)||!1},r.inArray=function(e,t,n){return a.indexOf.call(t,e,n)},r.camelCase=s,r.trim=function(e){return null==e?"":String.prototype.trim.call(e)},r.uuid=0,r.support={},r.expr={},r.noop=function(){},r.map=function(e,t){var n,i,s,o=[];if($(e))for(i=0;i<e.length;i++)null!=(n=t(e[i],i))&&o.push(n);else for(s in e)null!=(n=t(e[s],s))&&o.push(n);return function(e){return e.length>0?r.fn.concat.apply([],e):e}(o)},r.each=function(e,t){var n,r;if($(e)){for(n=0;n<e.length;n++)if(!1===t.call(e[n],n,e[n]))return e}else for(r in e)if(!1===t.call(e[r],r,e[r]))return e;return e},r.grep=function(e,t){return u.call(e,t)},e.JSON&&(r.parseJSON=JSON.parse),r.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){A["[object "+t+"]"]=t.toLowerCase()}),r.fn={constructor:O.Z,length:0,forEach:a.forEach,reduce:a.reduce,push:a.push,sort:a.sort,splice:a.splice,indexOf:a.indexOf,concat:function(){var e,t,n=[];for(e=0;e<arguments.length;e++)t=arguments[e],n[e]=O.isZ(t)?t.toArray():t;return c.apply(O.isZ(this)?this.toArray():this,n)},map:function(e){return r(r.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return r(l.apply(this,arguments))},ready:function(e){return S.test(h.readyState)&&h.body?e(r):h.addEventListener("DOMContentLoaded",function(){e(r)},!1),this},get:function(e){return e===t?l.call(this):this[e>=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(e){return a.every.call(this,function(t,n){return!1!==e.call(t,n,t)}),this},filter:function(e){return L(e)?this.not(this.not(e)):r(u.call(this,function(t){return O.matches(t,e)}))},add:function(e,t){return r(o(this.concat(r(e,t))))},is:function(e){return this.length>0&&O.matches(this[0],e)},not:function(e){var n=[];if(L(e)&&e.call!==t)this.each(function(t){e.call(this,t)||n.push(this)});else{var i="string"==typeof e?this.filter(e):$(e)&&L(e.item)?l.call(e):r(e);this.forEach(function(e){i.indexOf(e)<0&&n.push(e)})}return r(n)},has:function(e){return this.filter(function(){return P(e)?r.contains(this,e):r(this).find(e).size()})},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){var e=this[0];return e&&!P(e)?e:r(e)},last:function(){var e=this[this.length-1];return e&&!P(e)?e:r(e)},find:function(e){var t=this;return e?"object"==typeof e?r(e).filter(function(){var e=this;return a.some.call(t,function(t){return r.contains(t,e)})}):1==this.length?r(O.qsa(this[0],e)):this.map(function(){return O.qsa(this,e)}):r()},closest:function(e,t){var n=[],i="object"==typeof e&&r(e);return this.each(function(r,s){for(;s&&!(i?i.indexOf(s)>=0:O.matches(s,e));)s=s!==t&&!D(s)&&s.parentNode;s&&n.indexOf(s)<0&&n.push(s)}),r(n)},parents:function(e){for(var t=[],n=this;n.length>0;)n=r.map(n,function(e){if((e=e.parentNode)&&!D(e)&&t.indexOf(e)<0)return t.push(e),e});return U(t,e)},parent:function(e){return U(o(this.pluck("parentNode")),e)},children:function(e){return U(this.map(function(){return z(this)}),e)},contents:function(){return this.map(function(){return this.contentDocument||l.call(this.childNodes)})},siblings:function(e){return U(this.map(function(e,t){return u.call(z(t.parentNode),function(e){return e!==t})}),e)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(e){return r.map(this,function(t){return t[e]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=function(e){var t,n;d[e]||(t=h.createElement(e),h.body.appendChild(t),n=getComputedStyle(t,"").getPropertyValue("display"),t.parentNode.removeChild(t),"none"==n&&(n="block"),d[e]=n);return d[e]}(this.nodeName))})},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){var t=L(e);if(this[0]&&!t)var n=r(e).get(0),i=n.parentNode||this.length>1;return this.each(function(s){r(this).wrapAll(t?e.call(this,s):i?n.cloneNode(!0):n)})},wrapAll:function(e){if(this[0]){var t;for(r(this[0]).before(e=r(e));(t=e.children()).length;)e=t.first();r(e).append(this)}return this},wrapInner:function(e){var t=L(e);return this.each(function(n){var i=r(this),s=i.contents(),o=t?e.call(this,n):e;s.length?s.wrapAll(o):i.append(o)})},unwrap:function(){return this.parent().each(function(){r(this).replaceWith(r(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(e){return this.each(function(){var n=r(this);(e===t?"none"==n.css("display"):e)?n.show():n.hide()})},prev:function(e){return r(this.pluck("previousElementSibling")).filter(e||"*")},next:function(e){return r(this.pluck("nextElementSibling")).filter(e||"*")},html:function(e){return 0 in arguments?this.each(function(t){var n=this.innerHTML;r(this).empty().append(K(this,e,t,n))}):0 in this?this[0].innerHTML:null},text:function(e){return 0 in arguments?this.each(function(t){var n=K(this,e,t,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(e,r){var i;return"string"!=typeof e||1 in arguments?this.each(function(t){if(1===this.nodeType)if(P(e))for(n in e)V(this,n,e[n]);else V(this,e,K(this,r,t,this.getAttribute(e)))}):0 in this&&1==this[0].nodeType&&null!=(i=this[0].getAttribute(e))?i:t},removeAttr:function(e){return this.each(function(){1===this.nodeType&&e.split(" ").forEach(function(e){V(this,e)},this)})},prop:function(e,t){return e=k[e]||e,1 in arguments?this.each(function(n){this[e]=K(this,t,n,this[e])}):this[0]&&this[0][e]},removeProp:function(e){return e=k[e]||e,this.each(function(){delete this[e]})},data:function(e,n){var r="data-"+e.replace(b,"-$1").toLowerCase(),i=1 in arguments?this.attr(r,n):this.attr(r);return null!==i?W(i):t},val:function(e){return 0 in arguments?(null==e&&(e=""),this.each(function(t){this.value=K(this,e,t,this.value)})):this[0]&&(this[0].multiple?r(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var n=r(this),i=K(this,t,e,n.offset()),s=n.offsetParent().offset(),o={top:i.top-s.top,left:i.left-s.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)});if(!this.length)return null;if(h.documentElement!==this[0]&&!r.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+e.pageXOffset,top:n.top+e.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(e,t){if(arguments.length<2){var i=this[0];if("string"==typeof e){if(!i)return;return i.style[s(e)]||getComputedStyle(i,"").getPropertyValue(e)}if(R(e)){if(!i)return;var o={},a=getComputedStyle(i,"");return r.each(e,function(e,t){o[t]=i.style[s(t)]||a.getPropertyValue(t)}),o}}var c="";if("string"==M(e))t||0===t?c=H(e)+":"+q(e,t):this.each(function(){this.style.removeProperty(H(e))});else for(n in e)e[n]||0===e[n]?c+=H(n)+":"+q(n,e[n])+";":this.each(function(){this.style.removeProperty(H(n))});return this.each(function(){this.style.cssText+=";"+c})},index:function(e){return e?this.indexOf(r(e)[0]):this.parent().children().indexOf(this[0])},hasClass:function(e){return!!e&&a.some.call(this,function(e){return this.test(J(e))},B(e))},addClass:function(e){return e?this.each(function(t){if("className"in this){i=[];var n=J(this),s=K(this,e,t,n);s.split(/\s+/g).forEach(function(e){r(this).hasClass(e)||i.push(e)},this),i.length&&J(this,n+(n?" ":"")+i.join(" "))}}):this},removeClass:function(e){return this.each(function(n){if("className"in this){if(e===t)return J(this,"");i=J(this),K(this,e,n,i).split(/\s+/g).forEach(function(e){i=i.replace(B(e)," ")}),J(this,i.trim())}})},toggleClass:function(e,n){return e?this.each(function(i){var s=r(this),o=K(this,e,i,J(this));o.split(/\s+/g).forEach(function(e){(n===t?!s.hasClass(e):n)?s.addClass(e):s.removeClass(e)})}):this},scrollTop:function(e){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var e=this[0],t=this.offsetParent(),n=this.offset(),i=y.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(r(e).css("margin-top"))||0,n.left-=parseFloat(r(e).css("margin-left"))||0,i.top+=parseFloat(r(t[0]).css("border-top-width"))||0,i.left+=parseFloat(r(t[0]).css("border-left-width"))||0,{top:n.top-i.top,left:n.left-i.left}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||h.body;e&&!y.test(e.nodeName)&&"static"==r(e).css("position");)e=e.offsetParent;return e})}},r.fn.detach=r.fn.remove,["width","height"].forEach(function(e){var n=e.replace(/./,function(e){return e[0].toUpperCase()});r.fn[e]=function(i){var s,o=this[0];return i===t?I(o)?o["inner"+n]:D(o)?o.documentElement["scroll"+n]:(s=this.offset())&&s[e]:this.each(function(t){(o=r(this)).css(e,K(this,i,t,o[e]()))})}}),["after","prepend","before","append"].forEach(function(n,i){var s=i%2;r.fn[n]=function(){var n,o,a=r.map(arguments,function(e){var i=[];return"array"==(n=M(e))?(e.forEach(function(e){return e.nodeType!==t?i.push(e):r.zepto.isZ(e)?i=i.concat(e.get()):void(i=i.concat(O.fragment(e)))}),i):"object"==n||null==e?e:O.fragment(e)}),c=this.length>1;return a.length<1?this:this.each(function(t,n){o=s?n:n.parentNode,n=0==i?n.nextSibling:1==i?n.firstChild:2==i?n:null;var u=r.contains(h.documentElement,o);a.forEach(function(t){if(c)t=t.cloneNode(!0);else if(!o)return r(t).remove();o.insertBefore(t,n),u&&function e(t,n){n(t);for(var r=0,i=t.childNodes.length;r<i;r++)e(t.childNodes[r],n)}(t,function(t){if(!(null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src)){var n=t.ownerDocument?t.ownerDocument.defaultView:e;n.eval.call(n,t.innerHTML)}})})})},r.fn[s?n+"To":"insert"+(i?"Before":"After")]=function(e){return r(e)[n](this),this}}),O.Z.prototype=F.prototype=r.fn,O.uniq=o,O.deserializeValue=W,r.zepto=O,r}();return function(t){var n,r=1,i=Array.prototype.slice,s=t.isFunction,o=function(e){return"string"==typeof e},a={},c={},u="onfocusin"in e,l={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function d(e){return e._zid||(e._zid=r++)}function f(e,t,n,r){if((t=p(t)).ns)var i=function(e){return new RegExp("(?:^| )"+e.replace(" "," .* ?")+"(?: |$)")}(t.ns);return(a[d(e)]||[]).filter(function(e){return e&&(!t.e||e.e==t.e)&&(!t.ns||i.test(e.ns))&&(!n||d(e.fn)===d(n))&&(!r||e.sel==r)})}function p(e){var t=(""+e).split(".");return{e:t[0],ns:t.slice(1).sort().join(" ")}}function g(e,t){return e.del&&!u&&e.e in l||!!t}function m(e){return h[e]||u&&l[e]||e}function v(e,r,i,s,o,c,u){var l=d(e),f=a[l]||(a[l]=[]);r.split(/\s/).forEach(function(r){if("ready"==r)return t(document).ready(i);var a=p(r);a.fn=i,a.sel=o,a.e in h&&(i=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return a.fn.apply(this,arguments)}),a.del=c;var l=c||i;a.proxy=function(t){if(!(t=x(t)).isImmediatePropagationStopped()){try{var r=Object.getOwnPropertyDescriptor(t,"data");r&&!r.writable||(t.data=s)}catch(t){}var i=l.apply(e,t._args==n?[t]:[t].concat(t._args));return!1===i&&(t.preventDefault(),t.stopPropagation()),i}},a.i=f.length,f.push(a),"addEventListener"in e&&e.addEventListener(m(a.e),a.proxy,g(a,u))})}function y(e,t,n,r,i){var s=d(e);(t||"").split(/\s/).forEach(function(t){f(e,t,n,r).forEach(function(t){delete a[s][t.i],"removeEventListener"in e&&e.removeEventListener(m(t.e),t.proxy,g(t,i))})})}c.click=c.mousedown=c.mouseup=c.mousemove="MouseEvents",t.event={add:v,remove:y},t.proxy=function(e,n){var r=2 in arguments&&i.call(arguments,2);if(s(e)){var a=function(){return e.apply(n,r?r.concat(i.call(arguments)):arguments)};return a._zid=d(e),a}if(o(n))return r?(r.unshift(e[n],e),t.proxy.apply(null,r)):t.proxy(e[n],e);throw new TypeError("expected function")},t.fn.bind=function(e,t,n){return this.on(e,t,n)},t.fn.unbind=function(e,t){return this.off(e,t)},t.fn.one=function(e,t,n,r){return this.on(e,t,n,r,1)};var b=function(){return!0},w=function(){return!1},_=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,E={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function x(e,r){return!r&&e.isDefaultPrevented||(r||(r=e),t.each(E,function(t,n){var i=r[t];e[t]=function(){return this[n]=b,i&&i.apply(r,arguments)},e[n]=w}),e.timeStamp||(e.timeStamp=Date.now()),(r.defaultPrevented!==n?r.defaultPrevented:"returnValue"in r?!1===r.returnValue:r.getPreventDefault&&r.getPreventDefault())&&(e.isDefaultPrevented=b)),e}function S(e){var t,r={originalEvent:e};for(t in e)_.test(t)||e[t]===n||(r[t]=e[t]);return x(r,e)}t.fn.delegate=function(e,t,n){return this.on(t,e,n)},t.fn.undelegate=function(e,t,n){return this.off(t,e,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,r,a,c,u){var l,h,d=this;return e&&!o(e)?(t.each(e,function(e,t){d.on(e,r,a,t,u)}),d):(o(r)||s(c)||!1===c||(c=a,a=r,r=n),c!==n&&!1!==a||(c=a,a=n),!1===c&&(c=w),d.each(function(n,s){u&&(l=function(e){return y(s,e.type,c),c.apply(this,arguments)}),r&&(h=function(e){var n,o=t(e.target).closest(r,s).get(0);if(o&&o!==s)return n=t.extend(S(e),{currentTarget:o,liveFired:s}),(l||c).apply(o,[n].concat(i.call(arguments,1)))}),v(s,e,c,a,r,h||l)}))},t.fn.off=function(e,r,i){var a=this;return e&&!o(e)?(t.each(e,function(e,t){a.off(e,r,t)}),a):(o(r)||s(i)||!1===i||(i=r,r=n),!1===i&&(i=w),a.each(function(){y(this,e,i,r)}))},t.fn.trigger=function(e,n){return(e=o(e)||t.isPlainObject(e)?t.Event(e):x(e))._args=n,this.each(function(){e.type in l&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,n){var r,i;return this.each(function(s,a){(r=S(o(e)?t.Event(e):e))._args=n,r.target=a,t.each(f(a,e.type||e),function(e,t){if(i=t.proxy(r),r.isImmediatePropagationStopped())return!1})}),i},"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(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(e,t){o(e)||(e=(t=e).type);var n=document.createEvent(c[e]||"Events"),r=!0;if(t)for(var i in t)"bubbles"==i?r=!!t[i]:n[i]=t[i];return n.initEvent(e,r,!0),x(n)}}(t),function(e){var n,r=[];t.fn.remove=function(){return this.each(function(){this.parentNode&&("IMG"===this.tagName&&(r.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",n&&clearTimeout(n),n=setTimeout(function(){r=[]},6e4)),this.parentNode.removeChild(this))})}}(),function(e){var t={},n=e.fn.data,r=e.camelCase,i=e.expando="Zepto"+ +new Date,s=[];function o(n,o,a){var c=n[i]||(n[i]=++e.uuid),u=t[c]||(t[c]=function(t){var n={};return e.each(t.attributes||s,function(t,i){0==i.name.indexOf("data-")&&(n[r(i.name.replace("data-",""))]=e.zepto.deserializeValue(i.value))}),n}(n));return void 0!==o&&(u[r(o)]=a),u}e.fn.data=function(s,a){return void 0===a?e.isPlainObject(s)?this.each(function(t,n){e.each(s,function(e,t){o(n,e,t)})}):0 in this?function(s,a){var c=s[i],u=c&&t[c];if(void 0===a)return u||o(s);if(u){if(a in u)return u[a];var l=r(a);if(l in u)return u[l]}return n.call(e(s),a)}(this[0],s):void 0:this.each(function(){o(this,s,a)})},e.data=function(t,n,r){return e(t).data(n,r)},e.hasData=function(n){var r=n[i],s=r&&t[r];return!!s&&!e.isEmptyObject(s)},e.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each(function(){var s=this[i],o=s&&t[s];o&&e.each(n||o,function(e){delete o[n?r(this):e]})})},["remove","empty"].forEach(function(t){var n=e.fn[t];e.fn[t]=function(){var e=this.find("*");return"remove"===t&&(e=e.add(this)),e.removeData(),n.call(this)}})}(t),t}(t)}(window)},function(e,t,n){"use strict";var r=n(0),i=n(1);function s(e){e&&e.el||r.error("EventBus initialized without el"),this.$el=i.element(e.el)}r.mixin(s.prototype,{trigger:function(e){var t=[].slice.call(arguments,1),n=r.Event("autocomplete:"+e);return this.$el.trigger(n,t),n}}),e.exports=s},function(e,t,n){"use strict";e.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(e,t){e.exports="0.32.0"},function(e,t,n){"use strict";e.exports=function(e){var t=e.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(t)return[t[1],t[2],t[3]]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(15));t.default=r.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default="2.6.1"},function(e,t,n){"use strict";var r=function(e){return e&&e.__esModule?e:{default:e}}(n(23));e.exports=r.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=o(n(24)),i=o(n(25)),s=o(n(21));function o(e){return e&&e.__esModule?e:{default:e}}var a=(0,r.default)(i.default);a.version=s.default,t.default=a},function(e,t,n){"use strict";var r=Function.prototype.bind;e.exports=function(e){var t=function(){for(var t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];return new(r.apply(e,[null].concat(n)))};return t.__proto__=e,t.prototype=e.prototype,t}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),s=d(n(26)),o=d(n(29)),a=d(n(49)),c=d(n(64)),u=d(n(65)),l=d(n(21)),h=d(n(20));function d(e){return e&&e.__esModule?e:{default:e}}var f=function(){function e(t){var n=t.apiKey,i=t.indexName,s=t.inputSelector,u=t.appId,d=void 0===u?"BH4D9OD16A":u,f=t.debug,p=void 0!==f&&f,g=t.algoliaOptions,m=void 0===g?{}:g,v=t.autocompleteOptions,y=void 0===v?{debug:!1,hint:!1,autoselect:!0}:v,b=t.transformData,w=void 0!==b&&b,_=t.queryHook,E=void 0!==_&&_,x=t.handleSelected,S=void 0!==x&&x,C=t.enhancedSearchInput,A=void 0!==C&&C,N=t.layout,O=void 0===N?"collumns":N;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),e.checkArguments({apiKey:n,indexName:i,inputSelector:s,debug:p,algoliaOptions:m,autocompleteOptions:y,transformData:w,queryHook:E,handleSelected:S,enhancedSearchInput:A,layout:O}),this.apiKey=n,this.appId=d,this.indexName=i,this.input=e.getInputFromSelector(s),this.algoliaOptions=r({hitsPerPage:5},m);var T=!(!y||!y.debug)&&y.debug;y.debug=p||T,this.autocompleteOptions=y,this.autocompleteOptions.cssClasses=this.autocompleteOptions.cssClasses||{},this.autocompleteOptions.cssClasses.prefix=this.autocompleteOptions.cssClasses.prefix||"ds",S=S||this.handleSelected,this.isSimpleLayout="simple"===O,this.client=(0,o.default)(this.appId,this.apiKey),this.client.addAlgoliaAgent("docsearch.js "+l.default),A&&(this.input=e.injectSearchBox(this.input)),this.autocomplete=(0,a.default)(this.input,y,[{source:this.getAutocompleteSource(w,E),templates:{suggestion:e.getSuggestionTemplate(this.isSimpleLayout),footer:c.default.footer,empty:e.getEmptyTemplate()}}]),S&&(0,h.default)(".algolia-autocomplete").on("click",".ds-suggestions a",function(e){e.preventDefault()}),this.autocomplete.on("autocomplete:selected",S.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input)),A&&e.bindSearchBoxEvent()}return i(e,[{key:"getAutocompleteSource",value:function(t,n){var r=this;return function(i,s){n&&(i=n(i)||i),r.client.search([{indexName:r.indexName,query:i,params:r.algoliaOptions}]).then(function(n){var r=n.results[0].hits;t&&(r=t(r)||r),s(e.formatHits(r))})}}},{key:"handleSelected",value:function(e,t,n){e.setVal(""),window.location.assign(n.url)}},{key:"handleShown",value:function(e){var t=e.offset().left+e.width()/2,n=(0,h.default)(document).width()/2;isNaN(n)&&(n=900);var r=t-n>=0?"algolia-autocomplete-right":"algolia-autocomplete-left",i=t-n<0?"algolia-autocomplete-right":"algolia-autocomplete-left",s=(0,h.default)(".algolia-autocomplete");s.hasClass(r)||s.addClass(r),s.hasClass(i)&&s.removeClass(i)}}],[{key:"checkArguments",value:function(t){if(!t.apiKey||!t.indexName)throw new Error("Usage:\n documentationSearch({\n apiKey,\n indexName,\n inputSelector,\n [ appId ],\n [ algoliaOptions.{hitsPerPage} ]\n [ autocompleteOptions.{hint,debug} ]\n})");if("string"!=typeof t.inputSelector)throw new Error("Error: inputSelector:"+t.inputSelector+" must be a string. Each selector must match only one element and separated by ','");if(!e.getInputFromSelector(t.inputSelector))throw new Error("Error: No input element in the page matches "+t.inputSelector)}},{key:"injectSearchBox",value:function(e){e.before(c.default.searchBox);var t=e.prev().prev().find("input");return e.remove(),t}},{key:"bindSearchBoxEvent",value:function(){(0,h.default)('.searchbox [type="reset"]').on("click",function(){(0,h.default)("input#docsearch").focus(),(0,h.default)(this).addClass("hide"),a.default.autocomplete.setVal("")}),(0,h.default)("input#docsearch").on("keyup",function(){var e=document.querySelector("input#docsearch"),t=document.querySelector('.searchbox [type="reset"]');t.className="searchbox__reset",0===e.value.length&&(t.className+=" hide")})}},{key:"getInputFromSelector",value:function(e){var t=(0,h.default)(e).filter("input");return t.length?(0,h.default)(t[0]):null}},{key:"formatHits",value:function(t){var n=u.default.deepClone(t).map(function(e){return e._highlightResult&&(e._highlightResult=u.default.mergeKeyWithParent(e._highlightResult,"hierarchy")),u.default.mergeKeyWithParent(e,"hierarchy")}),r=u.default.groupBy(n,"lvl0");return h.default.each(r,function(e,t){var n=u.default.groupBy(t,"lvl1"),i=u.default.flattenAndFlagFirst(n,"isSubCategoryHeader");r[e]=i}),(r=u.default.flattenAndFlagFirst(r,"isCategoryHeader")).map(function(t){var n=e.formatURL(t),r=u.default.getHighlightedValue(t,"lvl0"),i=u.default.getHighlightedValue(t,"lvl1")||r,s=u.default.compact([u.default.getHighlightedValue(t,"lvl2")||i,u.default.getHighlightedValue(t,"lvl3"),u.default.getHighlightedValue(t,"lvl4"),u.default.getHighlightedValue(t,"lvl5"),u.default.getHighlightedValue(t,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> › </span>'),o=u.default.getSnippetedValue(t,"content"),a=i&&""!==i||s&&""!==s,c=s&&""!==s&&s!==i,l=!c&&i&&""!==i&&i!==r;return{isLvl0:!l&&!c,isLvl1:l,isLvl2:c,isLvl1EmptyOrDuplicate:!i||""===i||i===r,isCategoryHeader:t.isCategoryHeader,isSubCategoryHeader:t.isSubCategoryHeader,isTextOrSubcategoryNonEmpty:a,category:r,subcategory:i,title:s,text:o,url:n}})}},{key:"formatURL",value:function(e){var t=e.url,n=e.anchor;return t?-1!==t.indexOf("#")?t:n?e.url+"#"+e.anchor:t:n?"#"+e.anchor:(console.warn("no anchor nor url for : ",JSON.stringify(e)),null)}},{key:"getEmptyTemplate",value:function(){return function(e){return s.default.compile(c.default.empty).render(e)}}},{key:"getSuggestionTemplate",value:function(e){var t=e?c.default.suggestionSimple:c.default.suggestion,n=s.default.compile(t);return function(e){return n.render(e)}}}]),e}();t.default=f},function(e,t,n){var r=n(27);r.Template=n(28).Template,r.template=r.Template,e.exports=r},function(e,t,n){!function(e){var t=/\S/,n=/\"/g,r=/\n/g,i=/\r/g,s=/\\/g,o=/\u2028/,a=/\u2029/;function c(e){"}"===e.n.substr(e.n.length-1)&&(e.n=e.n.substring(0,e.n.length-1))}function u(e){return e.trim?e.trim():e.replace(/^\s*|\s*$/g,"")}function l(e,t,n){if(t.charAt(n)!=e.charAt(0))return!1;for(var r=1,i=e.length;r<i;r++)if(t.charAt(n+r)!=e.charAt(r))return!1;return!0}e.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},e.scan=function(n,r){var i=n.length,s=0,o=null,a=null,h="",d=[],f=!1,p=0,g=0,m="{{",v="}}";function y(){h.length>0&&(d.push({tag:"_t",text:new String(h)}),h="")}function b(n,r){if(y(),n&&function(){for(var n=!0,r=g;r<d.length;r++)if(!(n=e.tags[d[r].tag]<e.tags._v||"_t"==d[r].tag&&null===d[r].text.match(t)))return!1;return n}())for(var i,s=g;s<d.length;s++)d[s].text&&((i=d[s+1])&&">"==i.tag&&(i.indent=d[s].text.toString()),d.splice(s,1));else r||d.push({tag:"\n"});f=!1,g=d.length}function w(e,t){var n="="+v,r=e.indexOf(n,t),i=u(e.substring(e.indexOf("=",t)+1,r)).split(" ");return m=i[0],v=i[i.length-1],r+n.length-1}for(r&&(r=r.split(" "),m=r[0],v=r[1]),p=0;p<i;p++)0==s?l(m,n,p)?(--p,y(),s=1):"\n"==n.charAt(p)?b(f):h+=n.charAt(p):1==s?(p+=m.length-1,"="==(o=(a=e.tags[n.charAt(p+1)])?n.charAt(p+1):"_v")?(p=w(n,p),s=0):(a&&p++,s=2),f=p):l(v,n,p)?(d.push({tag:o,n:u(h),otag:m,ctag:v,i:"/"==o?f-m.length:p+v.length}),h="",p+=v.length-1,s=0,"{"==o&&("}}"==v?p++:c(d[d.length-1]))):h+=n.charAt(p);return b(f,!0),d};var h={_t:!0,"\n":!0,$:!0,"/":!0};function d(e,t){for(var n=0,r=t.length;n<r;n++)if(t[n].o==e.n)return e.tag="#",!0}function f(e,t,n){for(var r=0,i=n.length;r<i;r++)if(n[r].c==e&&n[r].o==t)return!0}function p(e){var t=[];for(var n in e.partials)t.push('"'+m(n)+'":{name:"'+m(e.partials[n].name)+'", '+p(e.partials[n])+"}");return"partials: {"+t.join(",")+"}, subs: "+function(e){var t=[];for(var n in e)t.push('"'+m(n)+'": function(c,p,t,i) {'+e[n]+"}");return"{ "+t.join(",")+" }"}(e.subs)}e.stringify=function(t,n,r){return"{code: function (c,p,i) { "+e.wrapMain(t.code)+" },"+p(t)+"}"};var g=0;function m(e){return e.replace(s,"\\\\").replace(n,'\\"').replace(r,"\\n").replace(i,"\\r").replace(o,"\\u2028").replace(a,"\\u2029")}function v(e){return~e.indexOf(".")?"d":"f"}function y(e,t){var n="<"+(t.prefix||"")+e.n+g++;return t.partials[n]={name:e.n,partials:{}},t.code+='t.b(t.rp("'+m(n)+'",c,p,"'+(e.indent||"")+'"));',n}function b(e,t){t.code+="t.b(t.t(t."+v(e.n)+'("'+m(e.n)+'",c,p,0)));'}function w(e){return"t.b("+e+");"}e.generate=function(t,n,r){g=0;var i={code:"",subs:{},partials:{}};return e.walk(t,i),r.asString?this.stringify(i,n,r):this.makeTemplate(i,n,r)},e.wrapMain=function(e){return'var t=this;t.b(i=i||"");'+e+"return t.fl();"},e.template=e.Template,e.makeTemplate=function(e,t,n){var r=this.makePartials(e);return r.code=new Function("c","p","i",this.wrapMain(e.code)),new this.template(r,t,this,n)},e.makePartials=function(e){var t,n={subs:{},partials:e.partials,name:e.name};for(t in n.partials)n.partials[t]=this.makePartials(n.partials[t]);for(t in e.subs)n.subs[t]=new Function("c","p","t","i",e.subs[t]);return n},e.codegen={"#":function(t,n){n.code+="if(t.s(t."+v(t.n)+'("'+m(t.n)+'",c,p,1),c,p,0,'+t.i+","+t.end+',"'+t.otag+" "+t.ctag+'")){t.rs(c,p,function(c,p,t){',e.walk(t.nodes,n),n.code+="});c.pop();}"},"^":function(t,n){n.code+="if(!t.s(t."+v(t.n)+'("'+m(t.n)+'",c,p,1),c,p,1,0,0,"")){',e.walk(t.nodes,n),n.code+="};"},">":y,"<":function(t,n){var r={partials:{},code:"",subs:{},inPartial:!0};e.walk(t.nodes,r);var i=n.partials[y(t,n)];i.subs=r.subs,i.partials=r.partials},$:function(t,n){var r={subs:{},code:"",partials:n.partials,prefix:t.n};e.walk(t.nodes,r),n.subs[t.n]=r.code,n.inPartial||(n.code+='t.sub("'+m(t.n)+'",c,p,i);')},"\n":function(e,t){t.code+=w('"\\n"'+(e.last?"":" + i"))},_v:function(e,t){t.code+="t.b(t.v(t."+v(e.n)+'("'+m(e.n)+'",c,p,0)));'},_t:function(e,t){t.code+=w('"'+m(e.text)+'"')},"{":b,"&":b},e.walk=function(t,n){for(var r,i=0,s=t.length;i<s;i++)(r=e.codegen[t[i].tag])&&r(t[i],n);return n},e.parse=function(t,n,r){return function t(n,r,i,s){var o,a=[],c=null,u=null;for(o=i[i.length-1];n.length>0;){if(u=n.shift(),o&&"<"==o.tag&&!(u.tag in h))throw new Error("Illegal content in < super tag.");if(e.tags[u.tag]<=e.tags.$||d(u,s))i.push(u),u.nodes=t(n,u.tag,i,s);else{if("/"==u.tag){if(0===i.length)throw new Error("Closing tag without opener: /"+u.n);if(c=i.pop(),u.n!=c.n&&!f(u.n,c.n,s))throw new Error("Nesting error: "+c.n+" vs. "+u.n);return c.end=u.i,a}"\n"==u.tag&&(u.last=0==n.length||"\n"==n[0].tag)}a.push(u)}if(i.length>0)throw new Error("missing closing tag: "+i.pop().n);return a}(t,0,[],(r=r||{}).sectionTags||[])},e.cache={},e.cacheKey=function(e,t){return[e,!!t.asString,!!t.disableLambda,t.delimiters,!!t.modelGet].join("||")},e.compile=function(t,n){n=n||{};var r=e.cacheKey(t,n),i=this.cache[r];if(i){var s=i.partials;for(var o in s)delete s[o].instance;return i}return i=this.generate(this.parse(this.scan(t,n.delimiters),t,n),t,n),this.cache[r]=i}}(t)},function(e,t,n){!function(e){function t(e,t,n){var r;return t&&"object"==typeof t&&(void 0!==t[e]?r=t[e]:n&&t.get&&"function"==typeof t.get&&(r=t.get(e))),r}e.Template=function(e,t,n,r){e=e||{},this.r=e.code||this.r,this.c=n,this.options=r||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:function(e){return e=c(e),a.test(e)?e.replace(n,"&amp;").replace(r,"&lt;").replace(i,"&gt;").replace(s,"&#39;").replace(o,"&quot;"):e},t:c,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var n=this.partials[e],r=t[n.name];if(n.instance&&n.base==r)return n.instance;if("string"==typeof r){if(!this.c)throw new Error("No compiler available.");r=this.c.compile(r,this.options)}if(!r)return null;if(this.partials[e].base=r,n.subs){for(key in t.stackText||(t.stackText={}),n.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);r=function(e,t,n,r,i,s){function o(){}function a(){}var c;o.prototype=e,a.prototype=e.subs;var u=new o;for(c in u.subs=new a,u.subsText={},u.buf="",r=r||{},u.stackSubs=r,u.subsText=s,t)r[c]||(r[c]=t[c]);for(c in r)u.subs[c]=r[c];for(c in i=i||{},u.stackPartials=i,n)i[c]||(i[c]=n[c]);for(c in i)u.partials[c]=i[c];return u}(r,n.subs,n.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=r,r},rp:function(e,t,n,r){var i=this.ep(e,n);return i?i.ri(t,n,r):""},rs:function(e,t,n){var r=e[e.length-1];if(u(r))for(var i=0;i<r.length;i++)e.push(r[i]),n(e,t,this),e.pop();else n(e,t,this)},s:function(e,t,n,r,i,s,o){var a;return(!u(e)||0!==e.length)&&("function"==typeof e&&(e=this.ms(e,t,n,r,i,s,o)),a=!!e,!r&&a&&t&&t.push("object"==typeof e?e:t[t.length-1]),a)},d:function(e,n,r,i){var s,o=e.split("."),a=this.f(o[0],n,r,i),c=this.options.modelGet,l=null;if("."===e&&u(n[n.length-2]))a=n[n.length-1];else for(var h=1;h<o.length;h++)void 0!==(s=t(o[h],a,c))?(l=a,a=s):a="";return!(i&&!a)&&(i||"function"!=typeof a||(n.push(l),a=this.mv(a,n,r),n.pop()),a)},f:function(e,n,r,i){for(var s=!1,o=!1,a=this.options.modelGet,c=n.length-1;c>=0;c--)if(void 0!==(s=t(e,n[c],a))){o=!0;break}return o?(i||"function"!=typeof s||(s=this.mv(s,n,r)),s):!i&&""},ls:function(e,t,n,r,i){var s=this.options.delimiters;return this.options.delimiters=i,this.b(this.ct(c(e.call(t,r)),t,n)),this.options.delimiters=s,!1},ct:function(e,t,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,r,i,s,o){var a,c=t[t.length-1],u=e.call(c);return"function"==typeof u?!!r||(a=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(u,c,n,a.substring(i,s),o)):u},mv:function(e,t,n){var r=t[t.length-1],i=e.call(r);return"function"==typeof i?this.ct(c(i.call(r)),r,n):i},sub:function(e,t,n,r){var i=this.subs[e];i&&(this.activeSub=e,i(t,n,this,r),this.activeSub=!1)}};var n=/&/g,r=/</g,i=/>/g,s=/\'/g,o=/\"/g,a=/[&<>\"\']/;function c(e){return String(null===e||void 0===e?"":e)}var u=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}}(t)},function(e,t,n){"use strict";var r=n(30),i=n(41);e.exports=i(r,"(lite) ")},function(e,t,n){e.exports=c;var r=n(5),i=n(31),s=n(32),o=n(38),a=Object({NODE_ENV:"production"}).RESET_APP_DATA_TIMER&&parseInt(Object({NODE_ENV:"production"}).RESET_APP_DATA_TIMER,10)||12e4;function c(e,t,i){var s=n(8)("algoliasearch"),o=n(3),a=n(6),c=n(7),l="Usage: algoliasearch(applicationID, apiKey, opts)";if(!0!==i._allowEmptyCredentials&&!e)throw new r.AlgoliaSearchError("Please provide an application ID. "+l);if(!0!==i._allowEmptyCredentials&&!t)throw new r.AlgoliaSearchError("Please provide an API key. "+l);this.applicationID=e,this.apiKey=t,this.hosts={read:[],write:[]},i=i||{},this._timeouts=i.timeouts||{connect:1e3,read:2e3,write:3e4},i.timeout&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=i.timeout);var h=i.protocol||"https:";if(/:$/.test(h)||(h+=":"),"http:"!==h&&"https:"!==h)throw new r.AlgoliaSearchError("protocol must be `http:` or `https:` (was `"+i.protocol+"`)");if(this._checkAppIdData(),i.hosts)a(i.hosts)?(this.hosts.read=o(i.hosts),this.hosts.write=o(i.hosts)):(this.hosts.read=o(i.hosts.read),this.hosts.write=o(i.hosts.write));else{var d=c(this._shuffleResult,function(t){return e+"-"+t+".algolianet.com"}),f=(!1===i.dsn?"":"-dsn")+".algolia.net";this.hosts.read=[this.applicationID+f].concat(d),this.hosts.write=[this.applicationID+".algolia.net"].concat(d)}this.hosts.read=c(this.hosts.read,u(h)),this.hosts.write=c(this.hosts.write,u(h)),this.extraHeaders={},this.cache=i._cache||{},this._ua=i._ua,this._useCache=!(void 0!==i._useCache&&!i._cache)||i._useCache,this._useRequestCache=this._useCache&&i._useRequestCache,this._useFallback=void 0===i.useFallback||i.useFallback,this._setTimeout=i._setTimeout,s("init done, %j",this)}function u(e){return function(t){return e+"//"+t.toLowerCase()}}function l(e){if(void 0===Array.prototype.toJSON)return JSON.stringify(e);var t=Array.prototype.toJSON;delete Array.prototype.toJSON;var n=JSON.stringify(e);return Array.prototype.toJSON=t,n}function h(e){var t={};for(var n in e){var r;if(Object.prototype.hasOwnProperty.call(e,n))r="x-algolia-api-key"===n||"x-algolia-application-id"===n?"**hidden for security purposes**":e[n],t[n]=r}return t}c.prototype.initIndex=function(e){return new s(this,e)},c.prototype.setExtraHeader=function(e,t){this.extraHeaders[e.toLowerCase()]=t},c.prototype.getExtraHeader=function(e){return this.extraHeaders[e.toLowerCase()]},c.prototype.unsetExtraHeader=function(e){delete this.extraHeaders[e.toLowerCase()]},c.prototype.addAlgoliaAgent=function(e){-1===this._ua.indexOf(";"+e)&&(this._ua+=";"+e)},c.prototype._jsonRequest=function(e){this._checkAppIdData();var t,s,o,a=n(8)("algoliasearch:"+e.url),c=e.additionalUA||"",u=e.cache,d=this,f=0,p=!1,g=d._useFallback&&d._request.fallback&&e.fallback;this.apiKey.length>500&&void 0!==e.body&&(void 0!==e.body.params||void 0!==e.body.requests)?(e.body.apiKey=this.apiKey,o=this._computeRequestHeaders({additionalUA:c,withApiKey:!1,headers:e.headers})):o=this._computeRequestHeaders({additionalUA:c,headers:e.headers}),void 0!==e.body&&(t=l(e.body)),a("request start");var m=[];function v(e,t,n){return d._useCache&&e&&t&&void 0!==t[n]}function y(t,n){if(v(d._useRequestCache,u,s)&&t.catch(function(){delete u[s]}),"function"!=typeof e.callback)return t.then(n);t.then(function(t){i(function(){e.callback(null,n(t))},d._setTimeout||setTimeout)},function(t){i(function(){e.callback(t)},d._setTimeout||setTimeout)})}if(d._useCache&&d._useRequestCache&&(s=e.url),d._useCache&&d._useRequestCache&&t&&(s+="_body_"+t),v(d._useRequestCache,u,s)){a("serving request from cache");var b=u[s];return y("function"!=typeof b.then?d._promise.resolve({responseText:b}):b,function(e){return JSON.parse(e.responseText)})}var w=function n(i,y){d._checkAppIdData();var b=new Date;if(d._useCache&&!d._useRequestCache&&(s=e.url),d._useCache&&!d._useRequestCache&&t&&(s+="_body_"+y.body),v(!d._useRequestCache,u,s)){a("serving response from cache");var w=u[s];return d._promise.resolve({body:JSON.parse(w),responseText:w})}if(f>=d.hosts[e.hostType].length)return!g||p?(a("could not get any response"),d._promise.reject(new r.AlgoliaSearchError("Cannot connect to the AlgoliaSearch API. Send an email to [email protected] to report and resolve the issue. Application id was: "+d.applicationID,{debugData:m}))):(a("switching to fallback"),f=0,y.method=e.fallback.method,y.url=e.fallback.url,y.jsonBody=e.fallback.body,y.jsonBody&&(y.body=l(y.jsonBody)),o=d._computeRequestHeaders({additionalUA:c,headers:e.headers}),y.timeouts=d._getTimeoutsForRequest(e.hostType),d._setHostIndexByType(0,e.hostType),p=!0,n(d._request.fallback,y));var _=d._getHostByType(e.hostType),E=_+y.url,x={body:y.body,jsonBody:y.jsonBody,method:y.method,headers:o,timeouts:y.timeouts,debug:a,forceAuthHeaders:y.forceAuthHeaders};return a("method: %s, url: %s, headers: %j, timeouts: %d",x.method,E,x.headers,x.timeouts),i===d._request.fallback&&a("using fallback"),i.call(d,E,x).then(function(e){var n=e&&e.body&&e.body.message&&e.body.status||e.statusCode||e&&e.body&&200;a("received response: statusCode: %s, computed statusCode: %d, headers: %j",e.statusCode,n,e.headers);var i=2===Math.floor(n/100),c=new Date;if(m.push({currentHost:_,headers:h(o),content:t||null,contentLength:void 0!==t?t.length:null,method:y.method,timeouts:y.timeouts,url:y.url,startTime:b,endTime:c,duration:c-b,statusCode:n}),i)return d._useCache&&!d._useRequestCache&&u&&(u[s]=e.responseText),{responseText:e.responseText,body:e.body};if(4!==Math.floor(n/100))return f+=1,S();a("unrecoverable error");var l=new r.AlgoliaSearchError(e.body&&e.body.message,{debugData:m,statusCode:n});return d._promise.reject(l)},function(s){a("error: %s, stack: %s",s.message,s.stack);var c=new Date;return m.push({currentHost:_,headers:h(o),content:t||null,contentLength:void 0!==t?t.length:null,method:y.method,timeouts:y.timeouts,url:y.url,startTime:b,endTime:c,duration:c-b}),s instanceof r.AlgoliaSearchError||(s=new r.Unknown(s&&s.message,s)),f+=1,s instanceof r.Unknown||s instanceof r.UnparsableJSON||f>=d.hosts[e.hostType].length&&(p||!g)?(s.debugData=m,d._promise.reject(s)):s instanceof r.RequestTimeout?(a("retrying request with higher timeout"),d._incrementHostIndex(e.hostType),d._incrementTimeoutMultipler(),y.timeouts=d._getTimeoutsForRequest(e.hostType),n(i,y)):S()});function S(){return a("retrying request"),d._incrementHostIndex(e.hostType),n(i,y)}}(d._request,{url:e.url,method:e.method,body:t,jsonBody:e.body,timeouts:d._getTimeoutsForRequest(e.hostType),forceAuthHeaders:e.forceAuthHeaders});return d._useCache&&d._useRequestCache&&u&&(u[s]=w),y(w,function(e){return e.body})},c.prototype._getSearchParams=function(e,t){if(void 0===e||null===e)return t;for(var n in e)null!==n&&void 0!==e[n]&&e.hasOwnProperty(n)&&(t+=""===t?"":"&",t+=n+"="+encodeURIComponent("[object Array]"===Object.prototype.toString.call(e[n])?l(e[n]):e[n]));return t},c.prototype._computeRequestHeaders=function(e){var t=n(2),r={"x-algolia-agent":e.additionalUA?this._ua+";"+e.additionalUA:this._ua,"x-algolia-application-id":this.applicationID};return!1!==e.withApiKey&&(r["x-algolia-api-key"]=this.apiKey),this.userToken&&(r["x-algolia-usertoken"]=this.userToken),this.securityTags&&(r["x-algolia-tagfilters"]=this.securityTags),t(this.extraHeaders,function(e,t){r[t]=e}),e.headers&&t(e.headers,function(e,t){r[t]=e}),r},c.prototype.search=function(e,t,r){var i=n(6),s=n(7);if(!i(e))throw new Error("Usage: client.search(arrayOfQueries[, callback])");"function"==typeof t?(r=t,t={}):void 0===t&&(t={});var o=this,a={requests:s(e,function(e){var t="";return void 0!==e.query&&(t+="query="+encodeURIComponent(e.query)),{indexName:e.indexName,params:o._getSearchParams(e.params,t)}})},c=s(a.requests,function(e,t){return t+"="+encodeURIComponent("/1/indexes/"+encodeURIComponent(e.indexName)+"?"+e.params)}).join("&");return void 0!==t.strategy&&(a.strategy=t.strategy),this._jsonRequest({cache:this.cache,method:"POST",url:"/1/indexes/*/queries",body:a,hostType:"read",fallback:{method:"GET",url:"/1/indexes/*",body:{params:c}},callback:r})},c.prototype.searchForFacetValues=function(e){var t=n(6),r=n(7),i="Usage: client.searchForFacetValues([{indexName, params: {facetName, facetQuery, ...params}}, ...queries])";if(!t(e))throw new Error(i);var s=this;return s._promise.all(r(e,function(e){if(!e||void 0===e.indexName||void 0===e.params.facetName||void 0===e.params.facetQuery)throw new Error(i);var t=n(3),r=n(14),o=e.indexName,a=e.params,c=a.facetName,u=r(t(a),function(e){return"facetName"===e}),l=s._getSearchParams(u,"");return s._jsonRequest({cache:s.cache,method:"POST",url:"/1/indexes/"+encodeURIComponent(o)+"/facets/"+encodeURIComponent(c)+"/query",hostType:"read",body:{params:l}})}))},c.prototype.setSecurityTags=function(e){if("[object Array]"===Object.prototype.toString.call(e)){for(var t=[],n=0;n<e.length;++n)if("[object Array]"===Object.prototype.toString.call(e[n])){for(var r=[],i=0;i<e[n].length;++i)r.push(e[n][i]);t.push("("+r.join(",")+")")}else t.push(e[n]);e=t.join(",")}this.securityTags=e},c.prototype.setUserToken=function(e){this.userToken=e},c.prototype.clearCache=function(){this.cache={}},c.prototype.setRequestTimeout=function(e){e&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=e)},c.prototype.setTimeouts=function(e){this._timeouts=e},c.prototype.getTimeouts=function(){return this._timeouts},c.prototype._getAppIdData=function(){var e=o.get(this.applicationID);return null!==e&&this._cacheAppIdData(e),e},c.prototype._setAppIdData=function(e){return e.lastChange=(new Date).getTime(),this._cacheAppIdData(e),o.set(this.applicationID,e)},c.prototype._checkAppIdData=function(){var e=this._getAppIdData(),t=(new Date).getTime();return null===e||t-e.lastChange>a?this._resetInitialAppIdData(e):e},c.prototype._resetInitialAppIdData=function(e){var t=e||{};return t.hostIndexes={read:0,write:0},t.timeoutMultiplier=1,t.shuffleResult=t.shuffleResult||function(e){var t,n,r=e.length;for(;0!==r;)n=Math.floor(Math.random()*r),t=e[r-=1],e[r]=e[n],e[n]=t;return e}([1,2,3]),this._setAppIdData(t)},c.prototype._cacheAppIdData=function(e){this._hostIndexes=e.hostIndexes,this._timeoutMultiplier=e.timeoutMultiplier,this._shuffleResult=e.shuffleResult},c.prototype._partialAppIdDataUpdate=function(e){var t=n(2),r=this._getAppIdData();return t(e,function(e,t){r[t]=e}),this._setAppIdData(r)},c.prototype._getHostByType=function(e){return this.hosts[e][this._getHostIndexByType(e)]},c.prototype._getTimeoutMultiplier=function(){return this._timeoutMultiplier},c.prototype._getHostIndexByType=function(e){return this._hostIndexes[e]},c.prototype._setHostIndexByType=function(e,t){var r=n(3)(this._hostIndexes);return r[t]=e,this._partialAppIdDataUpdate({hostIndexes:r}),e},c.prototype._incrementHostIndex=function(e){return this._setHostIndexByType((this._getHostIndexByType(e)+1)%this.hosts[e].length,e)},c.prototype._incrementTimeoutMultipler=function(){var e=Math.max(this._timeoutMultiplier+1,4);return this._partialAppIdDataUpdate({timeoutMultiplier:e})},c.prototype._getTimeoutsForRequest=function(e){return{connect:this._timeouts.connect*this._timeoutMultiplier,complete:this._timeouts[e]*this._timeoutMultiplier}}},function(e,t){e.exports=function(e,t){t(e,0)}},function(e,t,n){var r=n(13),i=n(33),s=n(34);function o(e,t){this.indexName=t,this.as=e,this.typeAheadArgs=null,this.typeAheadValueOption=null,this.cache={}}e.exports=o,o.prototype.clearCache=function(){this.cache={}},o.prototype.search=r("query"),o.prototype.similarSearch=r("similarQuery"),o.prototype.browse=function(e,t,r){var i,s,o=n(35);0===arguments.length||1===arguments.length&&"function"==typeof arguments[0]?(i=0,r=arguments[0],e=void 0):"number"==typeof arguments[0]?(i=arguments[0],"number"==typeof arguments[1]?s=arguments[1]:"function"==typeof arguments[1]&&(r=arguments[1],s=void 0),e=void 0,t=void 0):"object"==typeof arguments[0]?("function"==typeof arguments[1]&&(r=arguments[1]),t=arguments[0],e=void 0):"string"==typeof arguments[0]&&"function"==typeof arguments[1]&&(r=arguments[1],t=void 0),t=o({},t||{},{page:i,hitsPerPage:s,query:e});var a=this.as._getSearchParams(t,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/browse",body:{params:a},hostType:"read",callback:r})},o.prototype.browseFrom=function(e,t){return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/browse",body:{cursor:e},hostType:"read",callback:t})},o.prototype.searchForFacetValues=function(e,t){var r=n(3),i=n(14);if(void 0===e.facetName||void 0===e.facetQuery)throw new Error("Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])");var s=e.facetName,o=i(r(e),function(e){return"facetName"===e}),a=this.as._getSearchParams(o,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/facets/"+encodeURIComponent(s)+"/query",hostType:"read",body:{params:a},callback:t})},o.prototype.searchFacet=i(function(e,t){return this.searchForFacetValues(e,t)},s("index.searchFacet(params[, callback])","index.searchForFacetValues(params[, callback])")),o.prototype._search=function(e,t,n,r){return this.as._jsonRequest({cache:this.cache,method:"POST",url:t||"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:e},hostType:"read",fallback:{method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName),body:{params:e}},callback:n,additionalUA:r})},o.prototype.getObject=function(e,t,n){1!==arguments.length&&"function"!=typeof t||(n=t,t=void 0);var r="";if(void 0!==t){r="?attributes=";for(var i=0;i<t.length;++i)0!==i&&(r+=","),r+=t[i]}return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/"+encodeURIComponent(e)+r,hostType:"read",callback:n})},o.prototype.getObjects=function(e,t,r){var i=n(6),s=n(7);if(!i(e))throw new Error("Usage: index.getObjects(arrayOfObjectIDs[, callback])");var o=this;1!==arguments.length&&"function"!=typeof t||(r=t,t=void 0);var a={requests:s(e,function(e){var n={indexName:o.indexName,objectID:e};return t&&(n.attributesToRetrieve=t.join(",")),n})};return this.as._jsonRequest({method:"POST",url:"/1/indexes/*/objects",hostType:"read",body:a,callback:r})},o.prototype.as=null,o.prototype.indexName=null,o.prototype.typeAheadArgs=null,o.prototype.typeAheadValueOption=null},function(e,t){e.exports=function(e,t){var n=!1;return function(){return n||(console.warn(t),n=!0),e.apply(this,arguments)}}},function(e,t){e.exports=function(e,t){return"algoliasearch: `"+e+"` was replaced by `"+t+"`. Please see https://github.com/algolia/algoliasearch-client-javascript/wiki/Deprecated#"+e.toLowerCase().replace(/[\.\(\)]/g,"")}},function(e,t,n){var r=n(2);e.exports=function e(t){var n=Array.prototype.slice.call(arguments);return r(n,function(n){for(var r in n)n.hasOwnProperty(r)&&("object"==typeof t[r]&&"object"==typeof n[r]?t[r]=e({},t[r],n[r]):void 0!==n[r]&&(t[r]=n[r]))}),t}},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,s=Array.prototype.slice,o=n(37),a=Object.prototype.propertyIsEnumerable,c=!a.call({toString:null},"toString"),u=a.call(function(){},"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],h=function(e){var t=e.constructor;return t&&t.prototype===e},d={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!d["$"+e]&&r.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{h(window[e])}catch(e){return!0}}catch(e){return!0}return!1}(),p=function(e){var t=null!==e&&"object"==typeof e,n="[object Function]"===i.call(e),s=o(e),a=t&&"[object String]"===i.call(e),d=[];if(!t&&!n&&!s)throw new TypeError("Object.keys called on a non-object");var p=u&&n;if(a&&e.length>0&&!r.call(e,0))for(var g=0;g<e.length;++g)d.push(String(g));if(s&&e.length>0)for(var m=0;m<e.length;++m)d.push(String(m));else for(var v in e)p&&"prototype"===v||!r.call(e,v)||d.push(String(v));if(c)for(var y=function(e){if("undefined"==typeof window||!f)return h(e);try{return h(e)}catch(e){return!1}}(e),b=0;b<l.length;++b)y&&"constructor"===l[b]||!r.call(e,l[b])||d.push(l[b]);return d};p.shim=function(){if(Object.keys){if(!function(){return 2===(Object.keys(arguments)||"").length}(1,2)){var e=Object.keys;Object.keys=function(t){return o(t)?e(s.call(t)):e(t)}}}else Object.keys=p;return Object.keys||p},e.exports=p},function(e,t,n){"use strict";var r=Object.prototype.toString;e.exports=function(e){var t=r.call(e),n="[object Arguments]"===t;return n||(n="[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===r.call(e.callee)),n}},function(e,t,n){(function(t){var r,i=n(8)("algoliasearch:src/hostIndexState.js"),s="algoliasearch-client-js",o={state:{},set:function(e,t){return this.state[e]=t,this.state[e]},get:function(e){return this.state[e]||null}},a={set:function(e,n){o.set(e,n);try{var r=JSON.parse(t.localStorage[s]);return r[e]=n,t.localStorage[s]=JSON.stringify(r),r[e]}catch(t){return c(e,t)}},get:function(e){try{return JSON.parse(t.localStorage[s])[e]||null}catch(t){return c(e,t)}}};function c(e,n){return i("localStorage failed with",n),function(){try{t.localStorage.removeItem(s)}catch(e){}}(),(r=o).get(e)}function u(e,t){return 1===arguments.length?r.get(e):r.set(e,t)}function l(){try{return"localStorage"in t&&null!==t.localStorage&&(t.localStorage[s]||t.localStorage.setItem(s,JSON.stringify({})),!0)}catch(e){return!1}}r=l()?a:o,e.exports={get:u,set:u,supportsLocalStorage:l}}).call(t,n(4))},function(e,t,n){var r;function i(e){function n(){if(n.enabled){var e=n,i=+new Date,s=i-(r||i);e.diff=s,e.prev=r,e.curr=i,r=i;for(var o=new Array(arguments.length),a=0;a<o.length;a++)o[a]=arguments[a];o[0]=t.coerce(o[0]),"string"!=typeof o[0]&&o.unshift("%O");var c=0;o[0]=o[0].replace(/%([a-zA-Z%])/g,function(n,r){if("%%"===n)return n;c++;var i=t.formatters[r];if("function"==typeof i){var s=o[c];n=i.call(e,s),o.splice(c,1),c--}return n}),t.formatArgs.call(e,o),(n.log||t.log||console.log.bind(console)).apply(e,o)}}return n.namespace=e,n.enabled=t.enabled(e),n.useColors=t.useColors(),n.color=function(e){var n,r=0;for(n in e)r=(r<<5)-r+e.charCodeAt(n),r|=0;return t.colors[Math.abs(r)%t.colors.length]}(e),"function"==typeof t.init&&t.init(n),n}(t=e.exports=i.debug=i.default=i).coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){t.enable("")},t.enable=function(e){t.save(e),t.names=[],t.skips=[];for(var n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length,i=0;i<r;i++)n[i]&&("-"===(e=n[i].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){var n,r;for(n=0,r=t.skips.length;n<r;n++)if(t.skips[n].test(e))return!1;for(n=0,r=t.names.length;n<r;n++)if(t.names[n].test(e))return!0;return!1},t.humanize=n(40),t.names=[],t.skips=[],t.formatters={}},function(e,t){var n=1e3,r=60*n,i=60*r,s=24*i,o=365.25*s;function a(e,t,n){if(!(e<t))return e<1.5*t?Math.floor(e/t)+" "+n:Math.ceil(e/t)+" "+n+"s"}e.exports=function(e,t){t=t||{};var c=typeof e;if("string"===c&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!t)return;var a=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return a*o;case"days":case"day":case"d":return a*s;case"hours":case"hour":case"hrs":case"hr":case"h":return a*i;case"minutes":case"minute":case"mins":case"min":case"m":return a*r;case"seconds":case"second":case"secs":case"sec":case"s":return a*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}(e);if("number"===c&&!1===isNaN(e))return t.long?function(e){return a(e,s,"day")||a(e,i,"hour")||a(e,r,"minute")||a(e,n,"second")||e+" ms"}(e):function(e){if(e>=s)return Math.round(e/s)+"d";if(e>=i)return Math.round(e/i)+"h";if(e>=r)return Math.round(e/r)+"m";if(e>=n)return Math.round(e/n)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t,n){"use strict";var r=n(42),i=r.Promise||n(43).Promise;e.exports=function(e,t){var s=n(12),o=n(5),a=n(44),c=n(46),u=n(47);function l(e,t,r){return(r=n(3)(r||{}))._ua=r._ua||l.ua,new d(e,t,r)}t=t||"",l.version=n(48),l.ua="Algolia for vanilla JavaScript "+t+l.version,l.initPlaces=u(l),r.__algolia={debug:n(8),algoliasearch:l};var h={hasXMLHttpRequest:"XMLHttpRequest"in r,hasXDomainRequest:"XDomainRequest"in r};function d(){e.apply(this,arguments)}return h.hasXMLHttpRequest&&(h.cors="withCredentials"in new XMLHttpRequest),s(d,e),d.prototype._request=function(e,t){return new i(function(n,r){if(h.cors||h.hasXDomainRequest){e=a(e,t.headers);var i,s,c=t.body,u=h.cors?new XMLHttpRequest:new XDomainRequest,l=!1;i=setTimeout(d,t.timeouts.connect),u.onprogress=function(){l||f()},"onreadystatechange"in u&&(u.onreadystatechange=function(){!l&&u.readyState>1&&f()}),u.onload=function(){if(s)return;var e;clearTimeout(i);try{e={body:JSON.parse(u.responseText),responseText:u.responseText,statusCode:u.status,headers:u.getAllResponseHeaders&&u.getAllResponseHeaders()||{}}}catch(t){e=new o.UnparsableJSON({more:u.responseText})}e instanceof o.UnparsableJSON?r(e):n(e)},u.onerror=function(e){if(s)return;clearTimeout(i),r(new o.Network({more:e}))},u instanceof XMLHttpRequest?(u.open(t.method,e,!0),t.forceAuthHeaders&&(u.setRequestHeader("x-algolia-application-id",t.headers["x-algolia-application-id"]),u.setRequestHeader("x-algolia-api-key",t.headers["x-algolia-api-key"]))):u.open(t.method,e),h.cors&&(c&&("POST"===t.method?u.setRequestHeader("content-type","application/x-www-form-urlencoded"):u.setRequestHeader("content-type","application/json")),u.setRequestHeader("accept","application/json")),c?u.send(c):u.send()}else r(new o.Network("CORS not supported"));function d(){s=!0,u.abort(),r(new o.RequestTimeout)}function f(){l=!0,clearTimeout(i),i=setTimeout(d,t.timeouts.complete)}})},d.prototype._request.fallback=function(e,t){return e=a(e,t.headers),new i(function(n,r){c(e,t,function(e,t){e?r(e):n(t)})})},d.prototype._promise={reject:function(e){return i.reject(e)},resolve:function(e){return i.resolve(e)},delay:function(e){return new i(function(t){setTimeout(t,e)})},all:function(e){return i.all(e)}},l}},function(e,t,n){(function(t){var n;n="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},e.exports=n}).call(t,n(4))},function(e,t,n){(function(t,n){
-/*!
- * @overview es6-promise - a tiny implementation of Promises/A+.
- * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
- * @license Licensed under MIT license
- * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
- * @version v4.2.4+314e4831
- */
-!function(t,n){e.exports=n()}(0,function(){"use strict";function e(e){return"function"==typeof e}var r=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},i=0,s=void 0,o=void 0,a=function(e,t){p[i]=e,p[i+1]=t,2===(i+=2)&&(o?o(g):m())};var c="undefined"!=typeof window?window:void 0,u=c||{},l=u.MutationObserver||u.WebKitMutationObserver,h="undefined"==typeof self&&void 0!==t&&"[object process]"==={}.toString.call(t),d="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function f(){var e=setTimeout;return function(){return e(g,1)}}var p=new Array(1e3);function g(){for(var e=0;e<i;e+=2){(0,p[e])(p[e+1]),p[e]=void 0,p[e+1]=void 0}i=0}var m=void 0;function v(e,t){var n=this,r=new this.constructor(w);void 0===r[b]&&D(r);var i=n._state;if(i){var s=arguments[i-1];a(function(){return L(i,r,s,n._result)})}else R(n,r,e,t);return r}function y(e){if(e&&"object"==typeof e&&e.constructor===this)return e;var t=new this(w);return N(t,e),t}m=h?function(){return t.nextTick(g)}:l?function(){var e=0,t=new l(g),n=document.createTextNode("");return t.observe(n,{characterData:!0}),function(){n.data=e=++e%2}}():d?function(){var e=new MessageChannel;return e.port1.onmessage=g,function(){return e.port2.postMessage(0)}}():void 0===c?function(){try{var e=Function("return this")().require("vertx");return void 0!==(s=e.runOnLoop||e.runOnContext)?function(){s(g)}:f()}catch(e){return f()}}():f();var b=Math.random().toString(36).substring(2);function w(){}var _=void 0,E=1,x=2,S={error:null};function C(e){try{return e.then}catch(e){return S.error=e,S}}function A(t,n,r){n.constructor===t.constructor&&r===v&&n.constructor.resolve===y?function(e,t){t._state===E?T(e,t._result):t._state===x?k(e,t._result):R(t,void 0,function(t){return N(e,t)},function(t){return k(e,t)})}(t,n):r===S?(k(t,S.error),S.error=null):void 0===r?T(t,n):e(r)?function(e,t,n){a(function(e){var r=!1,i=function(e,t,n,r){try{e.call(t,n,r)}catch(e){return e}}(n,t,function(n){r||(r=!0,t!==n?N(e,n):T(e,n))},function(t){r||(r=!0,k(e,t))},e._label);!r&&i&&(r=!0,k(e,i))},e)}(t,n,r):T(t,n)}function N(e,t){e===t?k(e,new TypeError("You cannot resolve a promise with itself")):!function(e){var t=typeof e;return null!==e&&("object"===t||"function"===t)}(t)?T(e,t):A(e,t,C(t))}function O(e){e._onerror&&e._onerror(e._result),M(e)}function T(e,t){e._state===_&&(e._result=t,e._state=E,0!==e._subscribers.length&&a(M,e))}function k(e,t){e._state===_&&(e._state=x,e._result=t,a(O,e))}function R(e,t,n,r){var i=e._subscribers,s=i.length;e._onerror=null,i[s]=t,i[s+E]=n,i[s+x]=r,0===s&&e._state&&a(M,e)}function M(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var r=void 0,i=void 0,s=e._result,o=0;o<t.length;o+=3)r=t[o],i=t[o+n],r?L(n,r,i,s):i(s);e._subscribers.length=0}}function L(t,n,r,i){var s=e(r),o=void 0,a=void 0,c=void 0,u=void 0;if(s){if((o=function(e,t){try{return e(t)}catch(e){return S.error=e,S}}(r,i))===S?(u=!0,a=o.error,o.error=null):c=!0,n===o)return void k(n,new TypeError("A promises callback cannot return that same promise."))}else o=i,c=!0;n._state!==_||(s&&c?N(n,o):u?k(n,a):t===E?T(n,o):t===x&&k(n,o))}var I=0;function D(e){e[b]=I++,e._state=void 0,e._result=void 0,e._subscribers=[]}var P=function(){function e(e,t){this._instanceConstructor=e,this.promise=new e(w),this.promise[b]||D(this.promise),r(t)?(this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?T(this.promise,this._result):(this.length=this.length||0,this._enumerate(t),0===this._remaining&&T(this.promise,this._result))):k(this.promise,new Error("Array Methods must be provided an Array"))}return e.prototype._enumerate=function(e){for(var t=0;this._state===_&&t<e.length;t++)this._eachEntry(e[t],t)},e.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,r=n.resolve;if(r===y){var i=C(e);if(i===v&&e._state!==_)this._settledAt(e._state,t,e._result);else if("function"!=typeof i)this._remaining--,this._result[t]=e;else if(n===j){var s=new n(w);A(s,e,i),this._willSettleAt(s,t)}else this._willSettleAt(new n(function(t){return t(e)}),t)}else this._willSettleAt(r(e),t)},e.prototype._settledAt=function(e,t,n){var r=this.promise;r._state===_&&(this._remaining--,e===x?k(r,n):this._result[t]=n),0===this._remaining&&T(r,this._result)},e.prototype._willSettleAt=function(e,t){var n=this;R(e,void 0,function(e){return n._settledAt(E,t,e)},function(e){return n._settledAt(x,t,e)})},e}();var j=function(){function e(t){this[b]=I++,this._result=this._state=void 0,this._subscribers=[],w!==t&&("function"!=typeof t&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof e?function(e,t){try{t(function(t){N(e,t)},function(t){k(e,t)})}catch(t){k(e,t)}}(this,t):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}())}return e.prototype.catch=function(e){return this.then(null,e)},e.prototype.finally=function(e){var t=this.constructor;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){throw n})})},e}();return j.prototype.then=v,j.all=function(e){return new P(this,e).promise},j.race=function(e){var t=this;return r(e)?new t(function(n,r){for(var i=e.length,s=0;s<i;s++)t.resolve(e[s]).then(n,r)}):new t(function(e,t){return t(new TypeError("You must pass an array to race."))})},j.resolve=y,j.reject=function(e){var t=new this(w);return k(t,e),t},j._setScheduler=function(e){o=e},j._setAsap=function(e){a=e},j._asap=a,j.polyfill=function(){var e=void 0;if(void 0!==n)e=n;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var r=null;try{r=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===r&&!t.cast)return}e.Promise=j},j.Promise=j,j})}).call(t,n(9),n(4))},function(e,t,n){"use strict";e.exports=function(e,t){/\?/.test(e)?e+="&":e+="?";return e+r(t)};var r=n(45)},function(e,t,n){"use strict";var r=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,a){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?s(o(e),function(o){var a=encodeURIComponent(r(o))+n;return i(e[o])?s(e[o],function(e){return a+encodeURIComponent(r(e))}).join(t):a+encodeURIComponent(r(e[o]))}).join(t):a?encodeURIComponent(r(a))+n+encodeURIComponent(r(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function s(e,t){if(e.map)return e.map(t);for(var n=[],r=0;r<e.length;r++)n.push(t(e[r],r));return n}var o=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t}},function(e,t,n){"use strict";e.exports=function(e,t,n){if("GET"!==t.method)return void n(new Error("Method "+t.method+" "+e+" is not supported by JSONP."));t.debug("JSONP: start");var s=!1,o=!1;i+=1;var a=document.getElementsByTagName("head")[0],c=document.createElement("script"),u="algoliaJSONP_"+i,l=!1;window[u]=function(e){!function(){try{delete window[u],delete window[u+"_loaded"]}catch(e){window[u]=window[u+"_loaded"]=void 0}}(),o?t.debug("JSONP: Late answer, ignoring"):(s=!0,f(),n(null,{body:e,responseText:JSON.stringify(e)}))},e+="&callback="+u,t.jsonBody&&t.jsonBody.params&&(e+="&"+t.jsonBody.params);var h=setTimeout(function(){t.debug("JSONP: Script timeout"),o=!0,f(),n(new r.RequestTimeout)},t.timeouts.complete);function d(){t.debug("JSONP: success"),l||o||(l=!0,s||(t.debug("JSONP: Fail. Script loaded but did not call the callback"),f(),n(new r.JSONPScriptFail)))}function f(){clearTimeout(h),c.onload=null,c.onreadystatechange=null,c.onerror=null,a.removeChild(c)}c.onreadystatechange=function(){"loaded"!==this.readyState&&"complete"!==this.readyState||d()},c.onload=d,c.onerror=function(){if(t.debug("JSONP: Script error"),l||o)return;f(),n(new r.JSONPScriptError)},c.async=!0,c.defer=!0,c.src=e,a.appendChild(c)};var r=n(5),i=0},function(e,t,n){e.exports=function(e){return function(t,i,s){var o=n(3);(s=s&&o(s)||{}).hosts=s.hosts||["places-dsn.algolia.net","places-1.algolianet.com","places-2.algolianet.com","places-3.algolianet.com"],0!==arguments.length&&"object"!=typeof t&&void 0!==t||(t="",i="",s._allowEmptyCredentials=!0);var a=e(t,i,s),c=a.initIndex("places");return c.search=r("query","/1/places/query"),c.getObject=function(e,t){return this.as._jsonRequest({method:"GET",url:"/1/places/"+encodeURIComponent(e),hostType:"read",callback:t})},c}};var r=n(13)},function(e,t,n){"use strict";e.exports="3.30.0"},function(e,t,n){"use strict";e.exports=n(50)},function(e,t,n){"use strict";var r=n(15);n(1).element=r;var i=n(0);i.isArray=r.isArray,i.isFunction=r.isFunction,i.isObject=r.isPlainObject,i.bind=r.proxy,i.each=function(e,t){r.each(e,function(e,n){return t(n,e)})},i.map=r.map,i.mixin=r.extend,i.Event=r.Event;var s="aaAutocomplete",o=n(51),a=n(16);function c(e,t,n,c){n=i.isArray(n)?n:[].slice.call(arguments,2);var u=r(e).each(function(e,i){var u=r(i),l=new a({el:u}),h=c||new o({input:u,eventBus:l,dropdownMenuContainer:t.dropdownMenuContainer,hint:void 0===t.hint||!!t.hint,minLength:t.minLength,autoselect:t.autoselect,autoselectOnBlur:t.autoselectOnBlur,tabAutocomplete:t.tabAutocomplete,openOnFocus:t.openOnFocus,templates:t.templates,debug:t.debug,clearOnSelected:t.clearOnSelected,cssClasses:t.cssClasses,datasets:n,keyboardShortcuts:t.keyboardShortcuts,appendTo:t.appendTo,autoWidth:t.autoWidth});u.data(s,h)});return u.autocomplete={},i.each(["open","close","getVal","setVal","destroy","getWrapper"],function(e){u.autocomplete[e]=function(){var t,n=arguments;return u.each(function(i,o){var a=r(o).data(s);t=a[e].apply(a,n)}),t}}),u}c.sources=o.sources,c.escapeHighlightedString=i.escapeHighlightedString;var u="autocomplete"in window,l=window.autocomplete;c.noConflict=function(){return u?window.autocomplete=l:delete window.autocomplete,c},e.exports=c},function(e,t,n){"use strict";var r="aaAttrs",i=n(0),s=n(1),o=n(16),a=n(52),c=n(59),u=n(17),l=n(11);function h(e){var t,n;if((e=e||{}).input||i.error("missing input"),this.isActivated=!1,this.debug=!!e.debug,this.autoselect=!!e.autoselect,this.autoselectOnBlur=!!e.autoselectOnBlur,this.openOnFocus=!!e.openOnFocus,this.minLength=i.isNumber(e.minLength)?e.minLength:1,this.autoWidth=void 0===e.autoWidth||!!e.autoWidth,this.clearOnSelected=!!e.clearOnSelected,this.tabAutocomplete=void 0===e.tabAutocomplete||!!e.tabAutocomplete,e.hint=!!e.hint,e.hint&&e.appendTo)throw new Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=e.css=i.mixin({},l,e.appendTo?l.appendTo:{}),this.cssClasses=e.cssClasses=i.mixin({},l.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix=i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=e.listboxId=[this.cssClasses.root,"listbox",i.getUniqueId()].join("-");var a=function(e){var t,n,o,a;t=s.element(e.input),n=s.element(u.wrapper.replace("%ROOT%",e.cssClasses.root)).css(e.css.wrapper),e.appendTo||"block"!==t.css("display")||"table"!==t.parent().css("display")||n.css("display","table-cell");var c=u.dropdown.replace("%PREFIX%",e.cssClasses.prefix).replace("%DROPDOWN_MENU%",e.cssClasses.dropdownMenu);o=s.element(c).css(e.css.dropdown).attr({role:"listbox",id:e.listboxId}),e.templates&&e.templates.dropdownMenu&&o.html(i.templatify(e.templates.dropdownMenu)());(a=t.clone().css(e.css.hint).css(function(e){return{backgroundAttachment:e.css("background-attachment"),backgroundClip:e.css("background-clip"),backgroundColor:e.css("background-color"),backgroundImage:e.css("background-image"),backgroundOrigin:e.css("background-origin"),backgroundPosition:e.css("background-position"),backgroundRepeat:e.css("background-repeat"),backgroundSize:e.css("background-size")}}(t))).val("").addClass(i.className(e.cssClasses.prefix,e.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),a.removeData&&a.removeData();t.data(r,{"aria-autocomplete":t.attr("aria-autocomplete"),"aria-expanded":t.attr("aria-expanded"),"aria-owns":t.attr("aria-owns"),autocomplete:t.attr("autocomplete"),dir:t.attr("dir"),role:t.attr("role"),spellcheck:t.attr("spellcheck"),style:t.attr("style"),type:t.attr("type")}),t.addClass(i.className(e.cssClasses.prefix,e.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":e.datasets&&e.datasets[0]&&e.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":e.ariaLabel,"aria-owns":e.listboxId}).css(e.hint?e.css.input:e.css.inputWithNoHint);try{t.attr("dir")||t.attr("dir","auto")}catch(e){}return(n=e.appendTo?n.appendTo(s.element(e.appendTo).eq(0)).eq(0):t.wrap(n).parent()).prepend(e.hint?a:null).append(o),{wrapper:n,input:t,hint:a,menu:o}}(e);this.$node=a.wrapper;var c=this.$input=a.input;t=a.menu,n=a.hint,e.dropdownMenuContainer&&s.element(e.dropdownMenuContainer).css("position","relative").append(t.css("top","0")),c.on("blur.aa",function(e){var n=document.activeElement;i.isMsie()&&(t[0]===n||t[0].contains(n))&&(e.preventDefault(),e.stopImmediatePropagation(),i.defer(function(){c.focus()}))}),t.on("mousedown.aa",function(e){e.preventDefault()}),this.eventBus=e.eventBus||new o({el:c}),this.dropdown=new h.Dropdown({appendTo:e.appendTo,wrapper:this.$node,menu:t,datasets:e.datasets,templates:e.templates,cssClasses:e.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:c,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(e),this._setLanguageDirection()}i.mixin(h.prototype,{_bindKeyboardShortcuts:function(e){if(e.keyboardShortcuts){var t=this.$input,n=[];i.each(e.keyboardShortcuts,function(e){"string"==typeof e&&(e=e.toUpperCase().charCodeAt(0)),n.push(e)}),s.element(document).keydown(function(e){var r=e.target||e.srcElement,i=r.tagName;if(!r.isContentEditable&&"INPUT"!==i&&"SELECT"!==i&&"TEXTAREA"!==i){var s=e.which||e.keyCode;-1!==n.indexOf(s)&&(t.focus(),e.stopPropagation(),e.preventDefault())}})}},_onSuggestionClicked:function(e,t){var n;(n=this.dropdown.getDatumForSuggestion(t))&&this._select(n)},_onCursorMoved:function(e,t){var n=this.dropdown.getDatumForCursor(),r=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(r),n&&(t&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var e=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",e.width+"px");var t=this.$node[0].getBoundingClientRect(),n=e.bottom-t.top;this.$node.css("top",n+"px");var r=e.left-t.left;this.$node.css("left",r+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var e=this.input.getQuery();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var e,t;e=this.dropdown.getDatumForCursor(),t=this.dropdown.getDatumForTopSuggestion(),this.debug||(this.autoselectOnBlur&&e?this._select(e):this.autoselectOnBlur&&t?this._select(t):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(e,t){var n,r;n=this.dropdown.getDatumForCursor(),r=this.dropdown.getDatumForTopSuggestion(),n?(this._select(n),t.preventDefault()):this.autoselect&&r&&(this._select(r),t.preventDefault())},_onTabKeyed:function(e,t){var n;this.tabAutocomplete?(n=this.dropdown.getDatumForCursor())?(this._select(n),t.preventDefault()):this._autocomplete(!0):this.dropdown.close()},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(e,t){this.input.clearHintIfInvalid(),t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var e=this.input.getLanguageDirection();this.dir!==e&&(this.dir=e,this.$node.css("direction",e),this.dropdown.setLanguageDirection(e))},_updateHint:function(){var e,t,n,r,s;(e=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(t=this.input.getInputValue(),n=a.normalizeQuery(t),r=i.escapeRegExChars(n),(s=new RegExp("^(?:"+r+")(.+$)","i").exec(e.value))?this.input.setHint(t+s[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(e){var t,n,r,i;t=this.input.getHint(),n=this.input.getQuery(),r=e||this.input.isCursorAtEnd(),t&&n!==t&&r&&((i=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(i.value),this.eventBus.trigger("autocompleted",i.raw,i.datasetName))},_select:function(e){void 0!==e.value&&this.input.setQuery(e.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(e.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",e.raw,e.datasetName).isDefaultPrevented()&&(this.dropdown.close(),i.defer(i.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var e=this.input.getInputValue();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(e){e=i.toStr(e),this.isActivated?this.input.setInputValue(e):(this.input.setQuery(e),this.input.setInputValue(e,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),function(e,t){var n=e.find(i.className(t.prefix,t.input));i.each(n.data(r),function(e,t){void 0===e?n.removeAttr(t):n.attr(t,e)}),n.detach().removeClass(i.className(t.prefix,t.input,!0)).insertAfter(e),n.removeData&&n.removeData(r);e.remove()}(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=c,h.Input=a,h.sources=n(61),e.exports=h},function(e,t,n){"use strict";var r;r={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var i=n(0),s=n(1),o=n(10);function a(e){var t,n,o,a,c=this;(e=e||{}).input||i.error("input is missing"),t=i.bind(this._onBlur,this),n=i.bind(this._onFocus,this),o=i.bind(this._onKeydown,this),a=i.bind(this._onInput,this),this.$hint=s.element(e.hint),this.$input=s.element(e.input).on("blur.aa",t).on("focus.aa",n).on("keydown.aa",o),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=i.noop),i.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",function(e){r[e.which||e.keyCode]||i.defer(i.bind(c._onInput,c,e))}):this.$input.on("input.aa",a),this.query=this.$input.val(),this.$overflowHelper=function(e){return s.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:e.css("font-family"),fontSize:e.css("font-size"),fontStyle:e.css("font-style"),fontVariant:e.css("font-variant"),fontWeight:e.css("font-weight"),wordSpacing:e.css("word-spacing"),letterSpacing:e.css("letter-spacing"),textIndent:e.css("text-indent"),textRendering:e.css("text-rendering"),textTransform:e.css("text-transform")}).insertAfter(e)}(this.$input)}function c(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}a.normalizeQuery=function(e){return(e||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},i.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(e){var t=r[e.which||e.keyCode];this._managePreventDefault(t,e),t&&this._shouldTrigger(t,e)&&this.trigger(t+"Keyed",e)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(e,t){var n,r,i;switch(e){case"tab":r=this.getHint(),i=this.getInputValue(),n=r&&r!==i&&!c(t);break;case"up":case"down":n=!c(t);break;default:n=!1}n&&t.preventDefault()},_shouldTrigger:function(e,t){var n;switch(e){case"tab":n=!c(t);break;default:n=!0}return n},_checkInputValue:function(){var e,t,n;n=!(!(t=function(e,t){return a.normalizeQuery(e)===a.normalizeQuery(t)}(e=this.getInputValue(),this.query))||!this.query)&&this.query.length!==e.length,this.query=e,t?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(e){this.query=e},getInputValue:function(){return this.$input.val()},setInputValue:function(e,t){void 0===e&&(e=this.query),this.$input.val(e),t?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(e){this.$input.attr("aria-activedescendant",e)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(e){this.$hint.val(e)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var e,t,n;n=(e=this.getInputValue())!==(t=this.getHint())&&0===t.indexOf(e),""!==e&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var e=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=e},isCursorAtEnd:function(){var e,t,n;return e=this.$input.val().length,t=this.$input[0].selectionStart,i.isNumber(t)?t===e:!document.selection||((n=document.selection.createRange()).moveStart("character",-e),e===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),e.exports=a},function(e,t,n){"use strict";var r,i,s,o=[n(54),n(55),n(56),n(57),n(58)],a=-1,c=[],u=!1;function l(){r&&i&&(r=!1,i.length?c=i.concat(c):a=-1,c.length&&h())}function h(){if(!r){u=!1,r=!0;for(var e=c.length,t=setTimeout(l);e;){for(i=c,c=[];i&&++a<e;)i[a].run();a=-1,e=c.length}i=null,a=-1,r=!1,clearTimeout(t)}}for(var d=-1,f=o.length;++d<f;)if(o[d]&&o[d].test&&o[d].test()){s=o[d].install(h);break}function p(e,t){this.fun=e,this.array=t}p.prototype.run=function(){var e=this.fun,t=this.array;switch(t.length){case 0:return e();case 1:return e(t[0]);case 2:return e(t[0],t[1]);case 3:return e(t[0],t[1],t[2]);default:return e.apply(null,t)}},e.exports=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new p(e,t)),u||r||(u=!0,s())}},function(e,t,n){"use strict";(function(e){t.test=function(){return void 0!==e&&!e.browser},t.install=function(t){return function(){e.nextTick(t)}}}).call(t,n(9))},function(e,t,n){"use strict";(function(e){var n=e.MutationObserver||e.WebKitMutationObserver;t.test=function(){return n},t.install=function(t){var r=0,i=new n(t),s=e.document.createTextNode("");return i.observe(s,{characterData:!0}),function(){s.data=r=++r%2}}}).call(t,n(4))},function(e,t,n){"use strict";(function(e){t.test=function(){return!e.setImmediate&&void 0!==e.MessageChannel},t.install=function(t){var n=new e.MessageChannel;return n.port1.onmessage=t,function(){n.port2.postMessage(0)}}}).call(t,n(4))},function(e,t,n){"use strict";(function(e){t.test=function(){return"document"in e&&"onreadystatechange"in e.document.createElement("script")},t.install=function(t){return function(){var n=e.document.createElement("script");return n.onreadystatechange=function(){t(),n.onreadystatechange=null,n.parentNode.removeChild(n),n=null},e.document.documentElement.appendChild(n),t}}}).call(t,n(4))},function(e,t,n){"use strict";t.test=function(){return!0},t.install=function(e){return function(){setTimeout(e,0)}}},function(e,t,n){"use strict";var r=n(0),i=n(1),s=n(10),o=n(60),a=n(11);function c(e){var t,n,s,o=this;(e=e||{}).menu||r.error("menu is required"),r.isArray(e.datasets)||r.isObject(e.datasets)||r.error("1 or more datasets required"),e.datasets||r.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=e.minLength||0,this.templates={},this.appendTo=e.appendTo||!1,this.css=r.mixin({},a,e.appendTo?a.appendTo:{}),this.cssClasses=e.cssClasses=r.mixin({},a.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),t=r.bind(this._onSuggestionClick,this),n=r.bind(this._onSuggestionMouseEnter,this),s=r.bind(this._onSuggestionMouseLeave,this);var u=r.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=i.element(e.menu).on("mouseenter.aa",u,n).on("mouseleave.aa",u,s).on("click.aa",u,t),this.$container=e.appendTo?e.wrapper:this.$menu,e.templates&&e.templates.header&&(this.templates.header=r.templatify(e.templates.header),this.$menu.prepend(this.templates.header())),e.templates&&e.templates.empty&&(this.templates.empty=r.templatify(e.templates.empty),this.$empty=i.element('<div class="'+r.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=r.map(e.datasets,function(t){return function(e,t,n){return new c.Dataset(r.mixin({$menu:e,cssClasses:n},t))}(o.$menu,t,e.cssClasses)}),r.each(this.datasets,function(e){var t=e.getRoot();t&&0===t.parent().length&&o.$menu.append(t),e.onSync("rendered",o._onRendered,o)}),e.templates&&e.templates.footer&&(this.templates.footer=r.templatify(e.templates.footer),this.$menu.append(this.templates.footer()));var l=this;i.element(window).resize(function(){l._redraw()})}r.mixin(c.prototype,s,{_onSuggestionClick:function(e){this.trigger("suggestionClicked",i.element(e.currentTarget))},_onSuggestionMouseEnter:function(e){var t=i.element(e.currentTarget);if(!t.hasClass(r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout(function(){n._setCursor(t,!1)},0)}},_onSuggestionMouseLeave:function(e){if(e.relatedTarget&&i.element(e.relatedTarget).closest("."+r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return;this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(e,t){if(this.isEmpty=r.every(this.datasets,function(e){return e.isEmpty()}),this.isEmpty)if(t.length>=this.minLength&&this.trigger("empty"),this.$empty)if(t.length<this.minLength)this._hide();else{var n=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(n),this.$empty.show(),this._show()}else r.any(this.datasets,function(e){return e.templates&&e.templates.empty})?t.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),t.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(r.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(r.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(e,t){e.first().addClass(r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",t)},_removeCursor:function(){this._getCursor().removeClass(r.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(e){var t,n,r,i;this.isOpen&&(n=this._getCursor(),t=this._getSuggestions(),this._removeCursor(),-1!==(r=((r=t.index(n)+e)+1)%(t.length+1)-1)?(r<-1&&(r=t.length-1),this._setCursor(i=t.eq(r),!0),this._ensureVisible(i)):this.trigger("cursorRemoved"))},_ensureVisible:function(e){var t,n,r,i;n=(t=e.position().top)+e.height()+parseInt(e.css("margin-top"),10)+parseInt(e.css("margin-bottom"),10),r=this.$menu.scrollTop(),i=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),t<0?this.$menu.scrollTop(r+t):i<n&&this.$menu.scrollTop(r+(n-i))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(e){this.$menu.css("ltr"===e?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(e){var t=null;return e.length&&(t={raw:o.extractDatum(e),value:o.extractValue(e),datasetName:o.extractDatasetName(e)}),t},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(e){r.each(this.datasets,function(t){t.update(e)})},empty:function(){r.each(this.datasets,function(e){e.clear()}),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){this.$menu.off(".aa"),this.$menu=null,r.each(this.datasets,function(e){e.destroy()})}}),c.Dataset=o,e.exports=c},function(e,t,n){"use strict";var r="aaDataset",i="aaValue",s="aaDatum",o=n(0),a=n(1),c=n(17),u=n(11),l=n(10);function h(e){(e=e||{}).templates=e.templates||{},e.source||o.error("missing source"),e.name&&!function(e){return/^[_a-zA-Z0-9-]+$/.test(e)}(e.name)&&o.error("invalid dataset name: "+e.name),this.query=null,this._isEmpty=!0,this.highlight=!!e.highlight,this.name=void 0===e.name||null===e.name?o.getUniqueId():e.name,this.source=e.source,this.displayFn=function(e){return e=e||"value",o.isFunction(e)?e:function(t){return t[e]}}(e.display||e.displayKey),this.debounce=e.debounce,this.cache=!1!==e.cache,this.templates=function(e,t){return{empty:e.empty&&o.templatify(e.empty),header:e.header&&o.templatify(e.header),footer:e.footer&&o.templatify(e.footer),suggestion:e.suggestion||function(e){return"<p>"+t(e)+"</p>"}}}(e.templates,this.displayFn),this.css=o.mixin({},u,e.appendTo?u.appendTo:{}),this.cssClasses=e.cssClasses=o.mixin({},u.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var t=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=e.$menu&&e.$menu.find(t+"-"+this.name).length>0?a.element(e.$menu.find(t+"-"+this.name)[0]):a.element(c.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=e.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(e){return a.element(e).data(r)},h.extractValue=function(e){return a.element(e).data(i)},h.extractDatum=function(e){var t=a.element(e).data(s);return"string"==typeof t&&(t=JSON.parse(t)),t},o.mixin(h.prototype,l,{_render:function(e,t){if(this.$el){var n,u=this,l=[].slice.call(arguments,2);if(this.$el.empty(),n=t&&t.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html(function(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!0}].concat(t),u.templates.empty.apply(this,t)}.apply(this,l)).prepend(u.templates.header?h.apply(this,l):null).append(u.templates.footer?d.apply(this,l):null);else if(n)this.$el.html(function(){var e,n,l=[].slice.call(arguments,0),h=this,d=c.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return e=a.element(d).css(this.css.suggestions),n=o.map(t,function(e){var t,n=c.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(t=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(u.templates.suggestion.apply(this,[e].concat(l)))).data(r,u.name),t.data(i,u.displayFn(e)||void 0),t.data(s,JSON.stringify(e)),t.children().each(function(){a.element(this).css(h.css.suggestionChild)}),t}),e.append.apply(e,n),e}.apply(this,l)).prepend(u.templates.header?h.apply(this,l):null).append(u.templates.footer?d.apply(this,l):null);else if(t&&!Array.isArray(t))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",e)}function h(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),u.templates.header.apply(this,t)}function d(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),u.templates.footer.apply(this,t)}},getRoot:function(){return this.$el},update:function(e){function t(t){if(!this.canceled&&e===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(e,t,n),this._render.apply(this,[e,t].concat(n))}}if(this.query=e,this.canceled=!1,this.shouldFetchFromCache(e))t.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,r=function(){n.canceled||n.source(e,t.bind(n))};if(this.debounce){clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout(function(){n.debounceTimeout=null,r()},this.debounce)}else r()}},cacheSuggestions:function(e,t,n){this.cachedQuery=e,this.cachedSuggestions=t,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(e){return this.cache&&this.cachedQuery===e&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.cancel(),this.$el.empty(),this.trigger("rendered","")},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),e.exports=h},function(e,t,n){"use strict";e.exports={hits:n(62),popularIn:n(63)}},function(e,t,n){"use strict";var r=n(0),i=n(18),s=n(19);e.exports=function(e,t){var n=s(e.as._ua);return n&&n[0]>=3&&n[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+i),function(n,i){e.search(n,t,function(e,t){e?r.error(e.message):i(t.hits,t)})}}},function(e,t,n){"use strict";var r=n(0),i=n(18),s=n(19);e.exports=function(e,t,n,o){var a=s(e.as._ua);if(a&&a[0]>=3&&a[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+i),!n.source)return r.error("Missing 'source' key");var c=r.isFunction(n.source)?n.source:function(e){return e[n.source]};if(!n.index)return r.error("Missing 'index' key");var u=n.index;return o=o||{},function(a,l){e.search(a,t,function(e,a){if(e)r.error(e.message);else{if(a.hits.length>0){var h=a.hits[0],d=r.mixin({hitsPerPage:0},n);delete d.source,delete d.index;var f=s(u.as._ua);return f&&f[0]>=3&&f[1]>20&&(t.additionalUA="autocomplete.js "+i),void u.search(c(h),d,function(e,t){if(e)r.error(e.message);else{var n=[];if(o.includeAll){var i=o.allTitle||"All departments";n.push(r.mixin({facet:{value:i,count:t.nbHits}},r.cloneDeep(h)))}r.each(t.facets,function(e,t){r.each(e,function(e,i){n.push(r.mixin({facet:{facet:t,value:i,count:e}},r.cloneDeep(h)))})});for(var s=1;s<a.hits.length;++s)n.push(a.hits[s]);l(n,a)}})}l([])}})}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="algolia-docsearch-suggestion",i={suggestion:'\n <a class="'+r+"\n {{#isCategoryHeader}}"+r+"__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}"+r+'__secondary{{/isSubCategoryHeader}}\n "\n aria-label="Link to the result"\n href="{{{url}}}"\n >\n <div class="'+r+'--category-header">\n <span class="'+r+'--category-header-lvl0">{{{category}}}</span>\n </div>\n <div class="'+r+'--wrapper">\n <div class="'+r+'--subcategory-column">\n <span class="'+r+'--subcategory-column-text">{{{subcategory}}}</span>\n </div>\n {{#isTextOrSubcategoryNonEmpty}}\n <div class="'+r+'--content">\n <div class="'+r+'--subcategory-inline">{{{subcategory}}}</div>\n <div class="'+r+'--title">{{{title}}}</div>\n {{#text}}<div class="'+r+'--text">{{{text}}}</div>{{/text}}\n </div>\n {{/isTextOrSubcategoryNonEmpty}}\n </div>\n </a>\n ',suggestionSimple:'\n <div class="'+r+"\n {{#isCategoryHeader}}"+r+"__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}"+r+'__secondary{{/isSubCategoryHeader}}\n suggestion-layout-simple\n ">\n <div class="'+r+'--category-header">\n {{^isLvl0}}\n <span class="'+r+"--category-header-lvl0 "+r+'--category-header-item">{{{category}}}</span>\n {{^isLvl1}}\n {{^isLvl1EmptyOrDuplicate}}\n <span class="'+r+"--category-header-lvl1 "+r+'--category-header-item">\n {{{subcategory}}}\n </span>\n {{/isLvl1EmptyOrDuplicate}}\n {{/isLvl1}}\n {{/isLvl0}}\n <div class="'+r+"--title "+r+'--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="'+r+'--wrapper">\n {{#text}}\n <div class="'+r+'--content">\n <div class="'+r+'--text">{{{text}}}</div>\n </div>\n {{/text}}\n </div>\n </div>\n ',footer:'\n <div class="algolia-docsearch-footer">\n Search by <a class="algolia-docsearch-footer--logo" href="https://www.algolia.com/docsearch">Algolia</a>\n </div>\n ',empty:'\n <div class="'+r+'">\n <div class="'+r+'--wrapper">\n <div class="'+r+"--content "+r+'--no-results">\n <div class="'+r+'--title">\n <div class="'+r+'--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 '};t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(e){return e&&e.__esModule?e:{default:e}}(n(20));var s={mergeKeyWithParent:function(e,t){if(void 0===e[t])return e;if("object"!==r(e[t]))return e;var n=i.default.extend({},e,e[t]);return delete n[t],n},groupBy:function(e,t){var n={};return i.default.each(e,function(e,r){if(void 0===r[t])throw new Error("[groupBy]: Object has no key "+t);var i=r[t];"string"==typeof i&&(i=i.toLowerCase()),Object.prototype.hasOwnProperty.call(n,i)||(n[i]=[]),n[i].push(r)}),n},values:function(e){return Object.keys(e).map(function(t){return e[t]})},flatten:function(e){var t=[];return e.forEach(function(e){Array.isArray(e)?e.forEach(function(e){t.push(e)}):t.push(e)}),t},flattenAndFlagFirst:function(e,t){var n=this.values(e).map(function(e){return e.map(function(e,n){return e[t]=0===n,e})});return this.flatten(n)},compact:function(e){var t=[];return e.forEach(function(e){e&&t.push(e)}),t},getHighlightedValue:function(e,t){return e._highlightResult&&e._highlightResult.hierarchy_camel&&e._highlightResult.hierarchy_camel[t]&&e._highlightResult.hierarchy_camel[t].matchLevel&&"none"!==e._highlightResult.hierarchy_camel[t].matchLevel&&e._highlightResult.hierarchy_camel[t].value?e._highlightResult.hierarchy_camel[t].value:e._highlightResult&&e._highlightResult&&e._highlightResult[t]&&e._highlightResult[t].value?e._highlightResult[t].value:e[t]},getSnippetedValue:function(e,t){if(!e._snippetResult||!e._snippetResult[t]||!e._snippetResult[t].value)return e[t];var n=e._snippetResult[t].value;return n[0]!==n[0].toUpperCase()&&(n="…"+n),-1===[".","!","?"].indexOf(n[n.length-1])&&(n+="…"),n},deepClone:function(e){return JSON.parse(JSON.stringify(e))}};t.default=s}])})},function(e,t,n){var r=n(11);r.registerLanguage("bash",n(12)),r.registerLanguage("css",n(13)),r.registerLanguage("markdown",n(14)),r.registerLanguage("diff",n(15)),r.registerLanguage("javascript",n(16)),r.registerLanguage("json",n(17)),r.registerLanguage("yaml",n(18)),r.registerLanguage("xml",n(19)),r.registerLanguage("html",n(20)),r.registerLanguage("go",function(e){var t={keyword:"code output note warning break default func interface select case map struct chan else goto package switch const fallthrough if range end type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune id autoplay Get",literal:"file download copy true false iota nil Pages with",built_in:"append cap close complex highlight copy imag len make new panic print println real recover delete Site Data tweet youtube ref relref vimeo instagram gist figure innershortcode"};return{aliases:["golang","hugo"],k:t,i:"</",c:[e.CLCM,e.CBCM,{cN:"string",v:[e.QSM,{b:"'",e:"[^\\\\]'"},{b:"`",e:"`"}]},{cN:"number",v:[{b:e.CNR+"[dflsi]",r:1},e.CNM]},{b:/:=/},{cN:"function",bK:"func",e:/\s*\{/,eE:!0,c:[e.TM,{cN:"params",b:/\(/,e:/\)/,k:t,i:/["']/}]}]}}),r.initHighlightingOnLoad()},function(e,t,n){!function(e){"object"==typeof window&&window||"object"==typeof self&&self;(function(e){var t=[],n=Object.keys,r={},i={},s=/^(no-?highlight|plain|text)$/i,o=/\blang(?:uage)?-([\w-]+)\b/i,a=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,c="</span>",u={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function l(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function h(e){return e.nodeName.toLowerCase()}function d(e,t){var n=e&&e.exec(t);return n&&0===n.index}function f(e){return s.test(e)}function p(e){var t,n={},r=Array.prototype.slice.call(arguments,1);for(t in e)n[t]=e[t];return r.forEach(function(e){for(t in e)n[t]=e[t]}),n}function g(e){var t=[];return function e(n,r){for(var i=n.firstChild;i;i=i.nextSibling)3===i.nodeType?r+=i.nodeValue.length:1===i.nodeType&&(t.push({event:"start",offset:r,node:i}),r=e(i,r),h(i).match(/br|hr|img|input/)||t.push({event:"stop",offset:r,node:i}));return r}(e,0),t}function m(e){function t(e){return e&&e.source||e}function r(n,r){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(r?"g":""))}!function i(s,o){if(s.compiled)return;s.compiled=!0;s.keywords=s.keywords||s.beginKeywords;if(s.keywords){var a={},c=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof s.keywords?c("keyword",s.keywords):n(s.keywords).forEach(function(e){c(e,s.keywords[e])}),s.keywords=a}s.lexemesRe=r(s.lexemes||/\w+/,!0);o&&(s.beginKeywords&&(s.begin="\\b("+s.beginKeywords.split(" ").join("|")+")\\b"),s.begin||(s.begin=/\B|\b/),s.beginRe=r(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(s.endRe=r(s.end)),s.terminator_end=t(s.end)||"",s.endsWithParent&&o.terminator_end&&(s.terminator_end+=(s.end?"|":"")+o.terminator_end));s.illegal&&(s.illegalRe=r(s.illegal));null==s.relevance&&(s.relevance=1);s.contains||(s.contains=[]);s.contains=Array.prototype.concat.apply([],s.contains.map(function(e){return function(e){e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return p(e,{variants:null},t)}));return e.cached_variants||e.endsWithParent&&[p(e)]||[e]}("self"===e?s:e)}));s.contains.forEach(function(e){i(e,s)});s.starts&&i(s.starts,o);var u=s.contains.map(function(e){return e.beginKeywords?"\\.?("+e.begin+")\\.?":e.begin}).concat([s.terminator_end,s.illegal]).map(t).filter(Boolean);s.terminators=u.length?r(u.join("|"),!0):{exec:function(){return null}}}(e)}function v(e,t,n,i){function s(e){return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}function o(e,t){var n=g.case_insensitive?t[0].toLowerCase():t[0];return e.keywords.hasOwnProperty(n)&&e.keywords[n]}function a(e,t,n,r){var i=r?"":u.classPrefix,s='<span class="'+i,o=n?"":c;return(s+=e+'">')+t+o}function h(){x+=null!=w.subLanguage?function(){var e="string"==typeof w.subLanguage;if(e&&!r[w.subLanguage])return l(S);var t=e?v(w.subLanguage,S,!0,_[w.subLanguage]):y(S,w.subLanguage.length?w.subLanguage:void 0);w.relevance>0&&(C+=t.relevance);e&&(_[w.subLanguage]=t.top);return a(t.language,t.value,!1,!0)}():function(){var e,t,n,r;if(!w.keywords)return l(S);r="",t=0,w.lexemesRe.lastIndex=0,n=w.lexemesRe.exec(S);for(;n;)r+=l(S.substring(t,n.index)),(e=o(w,n))?(C+=e[1],r+=a(e[0],l(n[0]))):r+=l(n[0]),t=w.lexemesRe.lastIndex,n=w.lexemesRe.exec(S);return r+l(S.substr(t))}(),S=""}function f(e){x+=e.className?a(e.className,"",!0):"",w=Object.create(e,{parent:{value:w}})}function p(e,t){if(S+=e,null==t)return h(),0;var r=function(e,t){var n,r;for(n=0,r=t.contains.length;n<r;n++)if(d(t.contains[n].beginRe,e))return t.contains[n].endSameAsBegin&&(t.contains[n].endRe=s(t.contains[n].beginRe.exec(e)[0])),t.contains[n]}(t,w);if(r)return r.skip?S+=t:(r.excludeBegin&&(S+=t),h(),r.returnBegin||r.excludeBegin||(S=t)),f(r),r.returnBegin?0:t.length;var i=function e(t,n){if(d(t.endRe,n)){for(;t.endsParent&&t.parent;)t=t.parent;return t}if(t.endsWithParent)return e(t.parent,n)}(w,t);if(i){var o=w;o.skip?S+=t:(o.returnEnd||o.excludeEnd||(S+=t),h(),o.excludeEnd&&(S=t));do{w.className&&(x+=c),w.skip||w.subLanguage||(C+=w.relevance),w=w.parent}while(w!==i.parent);return i.starts&&(i.endSameAsBegin&&(i.starts.endRe=i.endRe),f(i.starts)),o.returnEnd?0:t.length}if(function(e,t){return!n&&d(t.illegalRe,e)}(t,w))throw new Error('Illegal lexeme "'+t+'" for mode "'+(w.className||"<unnamed>")+'"');return S+=t,t.length||1}var g=E(e);if(!g)throw new Error('Unknown language: "'+e+'"');m(g);var b,w=i||g,_={},x="";for(b=w;b!==g;b=b.parent)b.className&&(x=a(b.className,"",!0)+x);var S="",C=0;try{for(var A,N,O=0;w.terminators.lastIndex=O,A=w.terminators.exec(t);)N=p(t.substring(O,A.index),A[0]),O=A.index+N;for(p(t.substr(O)),b=w;b.parent;b=b.parent)b.className&&(x+=c);return{relevance:C,value:x,language:e,top:w}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{relevance:0,value:l(t)};throw e}}function y(e,t){t=t||u.languages||n(r);var i={relevance:0,value:l(e)},s=i;return t.filter(E).filter(x).forEach(function(t){var n=v(t,e,!1);n.language=t,n.relevance>s.relevance&&(s=n),n.relevance>i.relevance&&(s=i,i=n)}),s.language&&(i.second_best=s),i}function b(e){return u.tabReplace||u.useBR?e.replace(a,function(e,t){return u.useBR&&"\n"===e?"<br>":u.tabReplace?t.replace(/\t/g,u.tabReplace):""}):e}function w(e){var n,r,s,a,c,d=function(e){var t,n,r,i,s=e.className+" ";if(s+=e.parentNode?e.parentNode.className:"",n=o.exec(s))return E(n[1])?n[1]:"no-highlight";for(s=s.split(/\s+/),t=0,r=s.length;t<r;t++)if(f(i=s[t])||E(i))return i}(e);f(d)||(u.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):n=e,c=n.textContent,s=d?v(d,c,!0):y(c),(r=g(n)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=s.value,s.value=function(e,n,r){var i=0,s="",o=[];function a(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset<n[0].offset?e:n:"start"===n[0].event?e:n:e.length?e:n}function c(e){s+="<"+h(e)+t.map.call(e.attributes,function(e){return" "+e.nodeName+'="'+l(e.value).replace('"',"&quot;")+'"'}).join("")+">"}function u(e){s+="</"+h(e)+">"}function d(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var f=a();if(s+=l(r.substring(i,f[0].offset)),i=f[0].offset,f===e){o.reverse().forEach(u);do{d(f.splice(0,1)[0]),f=a()}while(f===e&&f.length&&f[0].offset===i);o.reverse().forEach(c)}else"start"===f[0].event?o.push(f[0].node):o.pop(),d(f.splice(0,1)[0])}return s+l(r.substr(i))}(r,g(a),c)),s.value=b(s.value),e.innerHTML=s.value,e.className=function(e,t,n){var r=t?i[t]:n,s=[e.trim()];e.match(/\bhljs\b/)||s.push("hljs");-1===e.indexOf(r)&&s.push(r);return s.join(" ").trim()}(e.className,d,s.language),e.result={language:s.language,re:s.relevance},s.second_best&&(e.second_best={language:s.second_best.language,re:s.second_best.relevance}))}function _(){if(!_.called){_.called=!0;var e=document.querySelectorAll("pre code");t.forEach.call(e,w)}}function E(e){return e=(e||"").toLowerCase(),r[e]||r[i[e]]}function x(e){var t=E(e);return t&&!t.disableAutodetect}e.highlight=v,e.highlightAuto=y,e.fixMarkup=b,e.highlightBlock=w,e.configure=function(e){u=p(u,e)},e.initHighlighting=_,e.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",_,!1),addEventListener("load",_,!1)},e.registerLanguage=function(t,n){var s=r[t]=n(e);s.aliases&&s.aliases.forEach(function(e){i[e]=t})},e.listLanguages=function(){return n(r)},e.getLanguage=E,e.autoDetection=x,e.inherit=p,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,r){var i=e.inherit({className:"comment",begin:t,end:n,contains:[]},r||{});return i.contains.push(e.PHRASAL_WORDS_MODE),i.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),i},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0}})(t)}()},function(e,t){e.exports=function(e){var t={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]};return{aliases:["sh","zsh"],lexemes:/\b-?[a-z\._]+\b/,keywords:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[{className:"meta",begin:/^#![^\n]+sh\s*$/,relevance:10},{className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},e.HASH_COMMENT_MODE,n,{className:"string",begin:/'/,end:/'/},t]}}},function(e,t){e.exports=function(e){var t={begin:/[A-Z\_\.\-]+\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[{className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}}]};return{case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(font-face|page)",lexemes:"[a-z-]+",keywords:"font-face page"},{begin:"@",end:"[{;]",illegal:/:/,contains:[{className:"keyword",begin:/\w+/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,t]}]}}},function(e,t){e.exports=function(e){return{aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$"},{begin:"^.+?\\n[=-]{2,}$"}]},{begin:"<",end:">",subLanguage:"xml",relevance:0},{className:"bullet",begin:"^([*+-]|(\\d+\\.))\\s+"},{className:"strong",begin:"[*_]{2}.+?[*_]{2}"},{className:"emphasis",variants:[{begin:"\\*.+?\\*"},{begin:"_.+?_",relevance:0}]},{className:"quote",begin:"^>\\s+",end:"$"},{className:"code",variants:[{begin:"^```w*s*$",end:"^```s*$"},{begin:"`.+?`"},{begin:"^( {4}|\t)",end:"$",relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},{begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}},function(e,t){e.exports=function(e){return{aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/\*{5}/,end:/\*{5}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}}},function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},i={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},s={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,i]};i.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,r,e.REGEXP_MODE];var o=i.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:o}]}]},{begin:/</,end:/(\/\w+|\w+\/)>/,subLanguage:"xml",contains:[{begin:/<\w+\s*\/>/,skip:!0},{begin:/<\w+/,end:/(\/\w+|\w+\/)>/,skip:!0,contains:[{begin:/<\w+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:o}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},function(e,t){e.exports=function(e){var t={literal:"true false null"},n=[e.QUOTE_STRING_MODE,e.C_NUMBER_MODE],r={end:",",endsWithParent:!0,excludeEnd:!0,contains:n,keywords:t},i={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE],illegal:"\\n"},e.inherit(r,{begin:/:/})],illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[e.inherit(r)],illegal:"\\S"};return n.splice(n.length,0,i,s),{contains:n,keywords:t,illegal:"\\S"}}},function(e,t){e.exports=function(e){var t="[a-zA-Z_][\\w\\-]*",n={className:"attr",variants:[{begin:"^[ \\-]*"+t+":"},{begin:'^[ \\-]*"'+t+'":'},{begin:"^[ \\-]*'"+t+"':"}]},r={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]};return{case_insensitive:!0,aliases:["yml","YAML","yaml"],contains:[n,{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>] *$",returnEnd:!0,contains:r.contains,end:n.variants[0].begin},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!"+e.UNDERSCORE_IDENT_RE},{className:"type",begin:"!!"+e.UNDERSCORE_IDENT_RE},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"^ *-",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:"true false yes no null",keywords:{literal:"true false yes no null"}},e.C_NUMBER_MODE,r]}}},function(e,t){e.exports=function(e){var t={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:"[A-Za-z0-9\\._:-]+",relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/},{begin:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],case_insensitive:!0,contains:[{className:"meta",begin:"<!DOCTYPE",end:">",relevance:10,contains:[{begin:"\\[",end:"\\]"}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?(php)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]},{className:"tag",begin:"<style(?=\\s|>|$)",end:">",keywords:{name:"style"},contains:[t],starts:{end:"</style>",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:"<script(?=\\s|>|$)",end:">",keywords:{name:"script"},contains:[t],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["actionscript","javascript","handlebars","xml"]}},{className:"tag",begin:"</?",end:"/?>",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},t]}]}}},function(e,t){e.exports=function(e){var t={"builtin-name":"each in with if else unless bindattr action collection debugger log outlet template unbound view yield"};return{aliases:["hbs","html.hbs","html.handlebars"],case_insensitive:!0,subLanguage:"xml",contains:[e.COMMENT("{{!(--)?","(--)?}}"),{className:"template-tag",begin:/\{\{[#\/]/,end:/\}\}/,contains:[{className:"name",begin:/[a-zA-Z\.-]+/,keywords:t,starts:{endsWithParent:!0,relevance:0,contains:[e.QUOTE_STRING_MODE]}}]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,keywords:t}]}}},function(e,t,n){n(0),n(22)},function(e,t,n){!function(t,r){var i=function(){r(t.lazySizes),t.removeEventListener("lazyunveilread",i,!0)};r=r.bind(null,t,t.document),e.exports?r(n(0)):t.lazySizes?i():t.addEventListener("lazyunveilread",i,!0)}(window,function(e,t,n){"use strict";var r,i,s={};function o(e,n){if(!s[e]){var r=t.createElement(n?"link":"script"),i=t.getElementsByTagName("script")[0];n?(r.rel="stylesheet",r.href=e):r.src=e,s[e]=!0,s[r.src||r.href]=!0,i.parentNode.insertBefore(r,i)}}t.addEventListener&&(i=/\(|\)|\s|'/,r=function(e,n){var r=t.createElement("img");r.onload=function(){r.onload=null,r.onerror=null,r=null,n()},r.onerror=r.onload,r.src=e,r&&r.complete&&r.onload&&r.onload()},addEventListener("lazybeforeunveil",function(e){var t,s,a;e.detail.instance==n&&(e.defaultPrevented||("none"==e.target.preload&&(e.target.preload="auto"),(t=e.target.getAttribute("data-link"))&&o(t,!0),(t=e.target.getAttribute("data-script"))&&o(t),(t=e.target.getAttribute("data-require"))&&(n.cfg.requireJs?n.cfg.requireJs([t]):o(t)),(s=e.target.getAttribute("data-bg"))&&(e.detail.firesLoad=!0,r(s,function(){e.target.style.backgroundImage="url("+(i.test(s)?JSON.stringify(s):s)+")",e.detail.firesLoad=!1,n.fire(e.target,"_lazyloaded",{},!0,!0)})),(a=e.target.getAttribute("data-poster"))&&(e.detail.firesLoad=!0,r(a,function(){e.target.poster=a,e.detail.firesLoad=!1,n.fire(e.target,"_lazyloaded",{},!0,!0)}))))},!1))})},function(e,t){for(var n=document.getElementsByClassName("js-toggle"),r=0;r<n.length;r++)n[r].addEventListener("click",i,!1);function i(){for(var e=this.dataset.target.split(" "),t=document.querySelector(".mobilemenu:not(.dn)"),n=document.querySelector(".desktopmenu:not(.dn)"),r=document.querySelector(".desktopmenu:not(.dn)"),i=0;i<e.length;i++){var s=document.querySelectorAll(e[i]);[].forEach.call(s,function(e){return e.classList.contains("dn")?e.classList.remove("dn"):e.classList.add("dn"),!1}),t&&t.classList.add("dn"),n&&n.classList.add("dn"),r&&r.classList.remove("db")}}},function(e,t,n){n(25)},function(e,t,n){!function(){"use strict";var e,t,n="data-scrolldir",r="down",i=document.documentElement,s=window,o=document.body,a=32,c=512,u=64,l=Array(a),h=0;function d(){var d=s.scrollY||s.pageYOffset,f=e.timeStamp,p="down"===r?Math.max:Math.min,g=o.scrollHeight-s.innerHeight;if(d=Math.max(0,d),d=Math.min(g,d),l.unshift({y:d,t:f}),l.pop(),d===p(t,d))return h=f,void(t=d);var m=f-c;if(h<m){t=d;for(var v=0;v<a&&l[v]&&!(l[v].t<m);v+=1)t=p(t,l[v].y)}Math.abs(d-t)>u&&(t=d,h=f,r="down"===r?"up":"down",i.setAttribute(n,r))}function f(t){return e=t,s.requestAnimationFrame(d)}t=s.scrollY||s.pageYOffset,i.setAttribute(n,r),s.addEventListener("scroll",f)}()},function(e,t){!function(){"use strict";if("querySelector"in document&&"addEventListener"in window&&Array.prototype.forEach){var e=document.querySelectorAll("#TableOfContents ul li a");[].forEach.call(e,function(e){e.addEventListener("click",function(t){t.preventDefault();var n=e.getAttribute("href"),r=document.querySelector(n),i=e.getAttribute("data-speed");r&&function(e,t){var n,r=window.pageYOffset,i=e.offsetTop,s=(i-r)/(t/16);n=s>=0?function(){var e=window.pageYOffset;(e>=i-s||window.innerHeight+e>=document.body.offsetHeight)&&clearInterval(o)}:function(){window.pageYOffset<=(i||0)&&clearInterval(o)};var o=setInterval(function(){window.scrollBy(0,s),n()},16)}(r,i||500)},!1)})}}()},function(e,t){var n,r=document.querySelectorAll("[data-toggle-tab]"),i=document.querySelectorAll("[data-pane]");function s(e){if(e.target){e.preventDefault();var t=e.currentTarget.getAttribute("data-toggle-tab")}else t=e;window.localStorage&&window.localStorage.setItem("configLangPref",t);for(var n=document.querySelectorAll("[data-toggle-tab='"+t+"']"),s=document.querySelectorAll("[data-pane='"+t+"']"),o=0;o<r.length;o++)r[o].classList.remove("active"),i[o].classList.remove("active");for(o=0;o<n.length;o++)n[o].classList.add("active"),s[o].classList.add("active")}for(n=0;n<r.length;n++)r[n].addEventListener("click",s);window.localStorage.getItem("configLangPref")&&s(window.localStorage.getItem("configLangPref"))},function(e,t){document.documentElement.className=document.documentElement.className.replace(/\bno-js\b/,"js")}]); \ No newline at end of file
diff --git a/docs/resources/_gen/assets/js/output/js/app.js_8848f55d07695b7ff7188138f23d69e3.json b/docs/resources/_gen/assets/js/output/js/app.js_8848f55d07695b7ff7188138f23d69e3.json
deleted file mode 100644
index 06787c13f..000000000
--- a/docs/resources/_gen/assets/js/output/js/app.js_8848f55d07695b7ff7188138f23d69e3.json
+++ /dev/null
@@ -1 +0,0 @@
-{"Target":"output/js/app.09ca7921ca2b6e15c2dc516eccf642c08861fe5c249cc9073fb370c0a8a9022c.js","MediaType":"application/javascript","Data":{"Integrity":"sha256-Ccp5IcorbhXC3FFuzPZCwIhh/lwknMkHP7NwwKipAiw="}} \ No newline at end of file
diff --git a/docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_1024x512_fill_catmullrom_top_2.png b/docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_1024x512_fill_catmullrom_top_2.png
deleted file mode 100644
index 545cfb2d2..000000000
--- a/docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_1024x512_fill_catmullrom_top_2.png
+++ /dev/null
Binary files differ
diff --git a/docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_640x0_resize_catmullrom_2.png b/docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_640x0_resize_catmullrom_2.png
deleted file mode 100644
index 417ac696c..000000000
--- a/docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_640x0_resize_catmullrom_2.png
+++ /dev/null
Binary files differ
diff --git a/docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_8298a1fa052279512823ecd663d6f9c8.png b/docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_8298a1fa052279512823ecd663d6f9c8.png
deleted file mode 100644
index e09003583..000000000
--- a/docs/resources/_gen/images/showcase/alora-labs/featured_hu15e97d42270c9e985a93353bc5eb2110_83801_8298a1fa052279512823ecd663d6f9c8.png
+++ /dev/null
Binary files differ