diff --git a/Containerfile b/Containerfile new file mode 100644 index 0000000..c645270 --- /dev/null +++ b/Containerfile @@ -0,0 +1,5 @@ +FROM alpine +RUN apk add git hugo +WORKDIR /app +COPY . /app +CMD hugo server --bind 0.0.0.0 diff --git a/README.md b/README.md index d9bfd3b..1fd62cb 100644 --- a/README.md +++ b/README.md @@ -1,2 +1 @@ # website - diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/assets/css/_custom.scss b/assets/css/_custom.scss new file mode 100644 index 0000000..4c87236 --- /dev/null +++ b/assets/css/_custom.scss @@ -0,0 +1,10 @@ +// ============================== +// Custom style +// ============================== + +.home .home-profile, +.home[data-home="posts"] { + .home-avatar img { + width: 12rem; + } +} diff --git a/assets/css/_override.scss b/assets/css/_override.scss new file mode 100644 index 0000000..305de3c --- /dev/null +++ b/assets/css/_override.scss @@ -0,0 +1,3 @@ +// ============================== +// Override Variables +// ============================== diff --git a/assets/images/avatar.png b/assets/images/avatar.png new file mode 100644 index 0000000..ce7f9e2 Binary files /dev/null and b/assets/images/avatar.png differ diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000..101a3a7 Binary files /dev/null and b/assets/images/logo.png differ diff --git a/assets/images/screenshot.png b/assets/images/screenshot.png new file mode 100644 index 0000000..c889469 Binary files /dev/null and b/assets/images/screenshot.png differ diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..12c15fe --- /dev/null +++ b/config.yaml @@ -0,0 +1,305 @@ +baseurl: "http://localhost:1313" +title: JILITS +languageCode: en-us +theme: LoveIt + +defaultContentLanguage: en +languageCode: en +languageName: English +hasCJKLanguage: false +paginate: 12 +googleAnalytics: '' +copyright: '' +enableRobotsTXT: true +enableGitInfo: true +enableEmoji: true + +author: + name: Emil Dabrowski + link: 'https://www.linkedin.com/in/dbrski/' + +menu: + main: + - weight: 1 + identifier: posts + pre: '' + post: '' + name: Posts + url: /posts/ + title: '' + - weight: 2 + identifier: about + pre: '' + post: '' + name: About + url: /about/ + title: '' + - weight: 3 + identifier: gitea + pre: + post: '' + name: '' + url: 'https://git.jilits.se/JILITS/website' + title: Gitea + +params: + title: JILITS + description: Cloud Agnostic Computing + defaultTheme: auto + dateFormat: '2006-01-02' + gitRepo: 'https://git.jilits.se/JILITS/website' + + # website images for Open Graph and Twitter Cards + images: + - /images/screenshot.png + + header: + desktopMode: fixed + mobileMode: auto + + title: + logo: '/images/logo.png' + name: '' + post: '' + typeit: false + + home: + rss: 10 + profile: + enable: true + avatarURL: /images/avatar.png + title: 'Emil Dabrowski // JILITS' + subtitle: 'Cloud Agnostic DevOps Consulting' + typeit: true + social: true + disclaimer: '' + + posts: + enable: false + + social: + Gitea: https://git.jilits.se/explore/repos + Telegram: dbrski + Linkedin: dbrski + + footer: + enable: true + custom: '' + hugo: false + copyright: true + author: true + since: 2022 + license: >- + CC + BY-NC 4.0 + + section: + paginate: 20 + dateFormat: 01-02 + rss: 10 + + list: + paginate: 20 + dateFormat: 01-02 + rss: 10 + + app: + title: JILITS + noFavicon: false + svgFavicon: 'favicon.svg' + themeColor: '#ffffff' + iconColor: '#ffffff' + tileColor: '#ffffff' + + search: + enable: false + + page: + hiddenFromHomePage: false + hiddenFromSearch: false + twemoji: false + lightgallery: false + ruby: true + fraction: true + fontawesome: true + linkToMarkdown: true + rssFullText: false + + toc: + enable: true + keepStatic: false + auto: true + + code: + copy: true + maxShownLines: 50 + + math: + enable: false + inlineLeftDelimiter: '' + inlineRightDelimiter: '' + blockLeftDelimiter: '' + blockRightDelimiter: '' + copyTex: true + mhchem: true + + comment: + enable: false + + share: + enable: true + Twitter: true + Facebook: true + Linkedin: true + Whatsapp: false + Pinterest: false + Tumblr: false + HackerNews: false + Reddit: false + VK: false + Buffer: false + Xing: false + Line: false + Instapaper: false + Pocket: false + Flipboard: false + Weibo: false + Blogger: false + Baidu: false + Odnoklassniki: false + Evernote: false + Skype: false + Trello: false + Mix: false + + # # FIXME + # seo: + # images: [] + # publisher: + # name: xxxx + # logoUrl: /images/avatar.png + + typeit: + speed: 75 + cursorSpeed: 1000 + cursorChar: '|' + duration: -1 + + # # FIXME + # verification: + # google: '' + # bing: '' + # yandex: '' + # pinterest: '' + # baidu: '' + + seo: + thumbnailUrl: /images/screenshot.png + + analytics: + enable: false + + cdn: + data: jsdelivr.yml + + compatibility: + polyfill: false + objectFit: false + +markup: + highlight: + codeFences: true + guessSyntax: true + lineNos: true + lineNumbersInTable: true + noClasses: false + + goldmark: + extensions: + definitionList: true + footnote: true + linkify: true + strikethrough: true + table: true + taskList: true + typographer: true + + renderer: + unsafe: true + + tableOfContents: + startLevel: 2 + endLevel: 6 + +sitemap: + changefreq: weekly + filename: sitemap.xml + priority: 0.5 + +Permalinks: + posts: ':filename' + +privacy: + googleAnalytics: {} + twitter: + enableDNT: true + youtube: + privacyEnhanced: true + +mediaTypes: + text/plain: + suffixes: + - md +outputFormats: + MarkDown: + mediaType: text/plain + isPlainText: true + isHTML: false + +outputs: + home: + - HTML + - RSS + - JSON + page: + - HTML + - MarkDown + section: + - HTML + - RSS + taxonomy: + - HTML + - RSS + taxonomyTerm: + - HTML + +languages: + en: + weight: 1 + languageCode: en + languageName: English + hasCJKLanguage: false + copyright: >- + This work is licensed under a Creative Commons Attribution-NonCommercial + 4.0 International License. + + sv: + weight: 1 + languageCode: sv + languageName: Svenska + hasCJKLanguage: false + copyright: >- + Detta arbete är licensierat under en Creative Commons Attribution-NonCommercial + 4.0 Internationell licens. + + params: + home: + profile: + enable: true + avatarURL: /images/avatar.png + title: 'Emil Dabrowski // JILITS' + subtitle: 'Molnagnostisk DevOps-konsultation' + typeit: true + social: true + disclaimer: '' diff --git a/container-build.sh b/container-build.sh new file mode 100755 index 0000000..455f019 --- /dev/null +++ b/container-build.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +version="0.1.0" +script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +tmp_dir="$(mktemp -d --suffix=-web)" +cleanup () { rm -Rfv "$tmp_dir"; } +trap cleanup EXIT + +theme_dir="$script_dir/themes/LoveIt" +release_json="$theme_dir/release.json" +latest_theme_release_metadata="$(curl -s https://api.github.com/repos/dillonzq/LoveIt/releases/latest)" || exit 1 +latest_theme_tag_name="$(jq -r .tag_name <<<"${latest_theme_release_metadata:?}")" || exit 2 +previous_theme_tag_name="$(jq -r .tag_name "$release_json" 2>/dev/null)" || exit 3 + +if [[ "$latest_theme_tag_name" != "$previous_theme_tag_name" ]]; then + echo "Updating theme: '$latest_theme_tag_name' != '$previous_theme_tag_name'" + curl -L "https://github.com/dillonzq/LoveIt/archive/refs/tags/${latest_theme_tag_name:?}.tar.gz" -o "$tmp_dir/theme.tgz" || exit 11 + tar -xvf "$tmp_dir/theme.tgz" -C "$tmp_dir" || exit 12 + [ -d "$theme_dir" ] && { rm -Rv "$theme_dir"* || exit 13; } + mv "$tmp_dir/LoveIt"* "$theme_dir" || exit 14 + rm -Rv "$theme_dir/exampleSite" + echo "$latest_theme_release_metadata" >"$release_json" +fi + +docker build "$script_dir" -f Containerfile -t jilits/website:latest -t jilits/website:$version diff --git a/content/about/index.en.md b/content/about/index.en.md new file mode 100644 index 0000000..36456d5 --- /dev/null +++ b/content/about/index.en.md @@ -0,0 +1,64 @@ +--- +title: "About us" +date: 2022-12-01T18:04:49+01:00 +draft: false +description: "About JILITS" +images: ["wp2535788-1280px.jpg"] + +lightgallery: true +--- + +![Hoggar Mountains](wp2535788-1280px.jpg) + +## Background + +JILITS is a christian consulting company with a focus on server application hosting with a cloud agnostic approach. Cloud agnostic refers to a cloud design strategy in which applications, tools, and services are designed to migrate seamlessly between multiple cloud platforms or between on-premises and cloud in a hybrid model without disruption of service. Some of the tenets of a cloud-agnostic approach are to support seamless portability independent of the underlying operating system, to ensure limited disruption of the workloads in migration, and to limit the risk of application downtime while enhancing cost efficiencies. The company is run by [Emil Dabrowski](https://www.linkedin.com/in/dbrski/) and was founded in April 2021. + +## Expertise + +Cloud Native: + +- [FluxCD](https://fluxcd.io) +- [Grafana](https://grafana.com) +- [Helm](https://helm.sh) +- [Kubernetes](https://kubernetes.io) +- [Prometheus](https://prometheus.io) +- [Thanos](https://thanos.io) +- [Tekton](https://tekton.dev) + +Cloud providers: + +- Amazon Web Services (AWS) +- Azure + +Database engines: + +- MariaDB +- PostgreSQL + +Programming languages: + +- Bash +- Terraform +- Python +- Ansible + +Networking: + +- DNS +- Routing +- Firewalls +- VPNs + +Operating systems: + +- Debian +- Ubuntu +- Manjaro +- Amazon Linux + +Platforms: + +- Docker +- Proxmox +- vSphere diff --git a/content/about/index.sv.md b/content/about/index.sv.md new file mode 100644 index 0000000..b076586 --- /dev/null +++ b/content/about/index.sv.md @@ -0,0 +1,67 @@ +--- +title: "Om oss" +date: 2022-12-01T18:04:49+01:00 +draft: false +description: "Om JILITS" +# images: ["/Apple-Devices-Preview.png"] + +lightgallery: true + +math: + enable: true +--- + +![Hoggar Mountains](/img/wp2535788-1280px.jpg) + +## Bakgrund + +JILITS är ett kristet konsultbolag med fokus på serverapplikationsdrift med ett molnagnostisk tillvägagångssätt. Molnagnostisism hänvisar till en molndesignstrategi där applikationer, verktyg och tjänster är utformade för att migrera sömlöst mellan flera molnplattformar eller mellan on-prem och moln i en hybridmodell utan avbrott i tjänsten. Några av grundsatserna för ett moln-agnostiskt tillvägagångssätt är att stödja sömlös portabilitet oberoende av det underliggande operativsystemet, för att säkerställa begränsade avbrott i arbetsbelastningen vid migrering, och att begränsa risken för programavbrott samtidigt som kostnadseffektiviteten förbättras. Företaget drivs av [Emil Dabrowski](https://www.linkedin.com/in/dbrski/) och grundades i april 2021. + +## Expertis + +Cloud Native: + +- [FluxCD](https://fluxcd.io) +- [Grafana](https://grafana.com) +- [Helm](https://helm.sh) +- [Kubernetes](https://kubernetes.io) +- [Prometheus](https://prometheus.io) +- [Thanos](https://thanos.io) +- [Tekton](https://tekton.dev) + +Molnleverantörer: + +- Amazon Web Services (AWS) +- Azure + +Databasmotorer: + +- MariaDB +- PostgreSQL + +Programmeringsspråk: + +- Bash +- Terraform +- Python +- Ansible + +Nätverk: + +- DNS +- Routing +- Brandväggar +- VPNs + +Operativsystem: + +- Debian +- Ubuntu +- Manjaro +- Amazon Linux + +Plattformar: + +- Docker +- Proxmox +- vSphere diff --git a/content/about/wp2535788-1280px.jpg b/content/about/wp2535788-1280px.jpg new file mode 100644 index 0000000..dbe6d86 Binary files /dev/null and b/content/about/wp2535788-1280px.jpg differ diff --git a/content/posts/first-post/featured-image.png b/content/posts/first-post/featured-image.png new file mode 100644 index 0000000..91c2898 Binary files /dev/null and b/content/posts/first-post/featured-image.png differ diff --git a/content/posts/first-post/index.en.md b/content/posts/first-post/index.en.md new file mode 100644 index 0000000..60062e8 --- /dev/null +++ b/content/posts/first-post/index.en.md @@ -0,0 +1,31 @@ +--- +weight: 1 +title: "First post" +date: 2022-12-01T18:04:49+01:00 +draft: false +description: "Just a greeting!" +images: [] + +resources: +- name: "featured-image" + src: "featured-image.png" + +toc: + enable: false +--- + +Dear visitor, + +I'm happy that you've found your way to my website. Surely there's not much here, but perhaps you might find some of the tech on the list below useful on your journey through the internet galaxy 😎 + +- [Kubernetes](https://kubernetes.io) +- [Helm](https://helm.sh) +- [FluxCD](https://fluxcd.io) +- [Tekton](https://tekton.dev) +- [Grafana](https://grafana.com) +- [Prometheus](https://prometheus.io) +- [Thanos](https://thanos.io) + +Greetings, + +Emil diff --git a/content/posts/first-post/index.zh-cn.md b/content/posts/first-post/index.zh-cn.md new file mode 100644 index 0000000..2d88270 --- /dev/null +++ b/content/posts/first-post/index.zh-cn.md @@ -0,0 +1,771 @@ +--- +weight: 4 +title: "Markdown 基本语法" +date: 2019-12-01T21:57:40+08:00 +lastmod: 2020-01-01T16:45:40+08:00 +draft: false +author: "Dillon" +authorLink: "https://dillonzq.com" +description: "这篇文章展示了基本的 Markdown 语法和格式." +images: [] +resources: +- name: "featured-image" + src: "featured-image.png" + +tags: ["Markdown", "HTML"] +categories: ["Markdown"] + +lightgallery: true +--- + +这篇文章提供了可以在 Hugo 的文章中使用的基本 Markdown 语法示例. + + + +{{< admonition >}} +这篇文章借鉴了一篇很棒的[来自 Grav 的文章](http://learn.getgrav.org/content/markdown). + +如果你想了解 **Loveit** 主题的扩展 Markdown 语法, 请阅读[扩展 Markdown 语法页面](../theme-documentation-content#extended-markdown-syntax). +{{< /admonition >}} + +事实上, 编写 Web 内容很麻烦. [WYSIWYG]^(所见即所得) 编辑器帮助减轻了这一任务. 但通常会导致代码太糟, 或更糟糕的是, 网页也会很丑. + +没有通常伴随的所有复杂和丑陋的问题, **Markdown** 是一种更好的生成 **HTML** 内容的方式. + +一些主要好处是: + +1. Markdown 简单易学, 几乎没有多余的字符, 因此编写内容也更快. +2. 用 Markdown 书写时出错的机会更少. +3. 可以产生有效的 XHTML 输出. +4. 将内容和视觉显示保持分开, 这样就不会打乱网站的外观. +5. 可以在你喜欢的任何文本编辑器或 Markdown 应用程序中编写内容. +6. Markdown 使用起来很有趣! + +John Gruber, Markdown 的作者如是说: + +> Markdown 格式的首要设计目标是更具可读性. +> 最初的想法是 Markdown 格式的文档应当以纯文本形式发布, +> 而不会看起来像被标签或格式说明所标记. +> 虽然 Markdown 的语法受到几种现有的文本到 HTML 转换工具的影响, +> 但 Markdown 语法的最大灵感来源是纯文本电子邮件的格式. +> +> {{< style "text-align: right;" >}}-- _John Gruber_{{< /style >}} + +话不多说, 我们来回顾一下 Markdown 的主要语法以及生成的 HTML 样式! + +{{< admonition tip >}} +:(far fa-bookmark fa-fw): 将此页保存为书签,以备将来参考! +{{< /admonition >}} + +## 1 标题 + +从 `h2` 到 `h6` 的标题在每个级别上都加上一个 `#`: + +```markdown +## h2 标题 +### h3 标题 +#### h4 标题 +##### h5 标题 +###### h6 标题 +``` + +输出的 HTML 看起来像这样: + +```html +
`/`
` 标签包裹. + +如下段落: + +```markdown +Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, +animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, +soluta officiis concludaturque ei qui, vide sensibus vim ad. +``` + +输出的 HTML 看起来像这样: + +```html +Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. Et legere ocurreret pri, animal tacimates complectitur ad cum. Cu eum inermis inimicus efficiendi. Labore officiis his ex, soluta officiis concludaturque ei qui, vide sensibus vim ad.
+``` + +可以使用一个空白行进行**换行**. + +## 5 内联 HTML 元素 + +如果你需要某个 HTML 标签 (带有一个类), 则可以简单地像这样使用: + +```html +Markdown 格式的段落. + +++``` + +引用也可以嵌套: + +```markdown +> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. +Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi. +>> Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor +odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam. +``` + +呈现的输出效果如下: + +> Donec massa lacus, ultricies a ullamcorper in, fermentum sed augue. +Nunc augue augue, aliquam non hendrerit ac, commodo vel nisi. +>> Sed adipiscing elit vitae augue consectetur a gravida nunc vehicula. Donec auctor +odio non est accumsan facilisis. Aliquam id turpis in dolor tincidunt mollis ac eu diam. + +## 8 列表 + +### 无序列表 + +一系列项的列表, 其中项的顺序没有明显关系. + +你可以使用以下任何符号来表示无序列表中的项: + +```markdown +* 一项内容 +- 一项内容 ++ 一项内容 +``` + +例如: + +```markdown +* Lorem ipsum dolor sit amet +* Consectetur adipiscing elit +* Integer molestie lorem at massa +* Facilisis in pretium nisl aliquet +* Nulla volutpat aliquam velit + * Phasellus iaculis neque + * Purus sodales ultricies + * Vestibulum laoreet porttitor sem + * Ac tristique libero volutpat at +* Faucibus porta lacus fringilla vel +* Aenean sit amet erat nunc +* Eget porttitor lorem +``` + +呈现的输出效果如下: + +* Lorem ipsum dolor sit amet +* Consectetur adipiscing elit +* Integer molestie lorem at massa +* Facilisis in pretium nisl aliquet +* Nulla volutpat aliquam velit + * Phasellus iaculis neque + * Purus sodales ultricies + * Vestibulum laoreet porttitor sem + * Ac tristique libero volutpat at +* Faucibus porta lacus fringilla vel +* Aenean sit amet erat nunc +* Eget porttitor lorem + +输出的 HTML 看起来像这样: + +```html ++ Fusion Drive combines a hard drive with a flash storage (solid-state drive) and presents it as a single logical volume with the space of both drives combined. +
+
`
包装行内代码段.
+
+```markdown
+在这个例子中, `` 会被包裹成 **代码**.
+```
+
+呈现的输出效果如下:
+
+在这个例子中, `` 会被包裹成 **代码**.
+
+输出的 HTML 看起来像这样:
+
+```html
+
+ 在这个例子中, <section></section>
会被包裹成 代码.
+
+
+ // Some comments
+ line 1 of code
+ line 2 of code
+ line 3 of code
+
+
+```
+
+### 围栏代码块
+
+使用 "围栏" ```
来生成一段带有语言属性的代码块.
+
+{{< highlight markdown >}}
+```markdown
+Sample text here...
+```
+{{< / highlight >}}
+
+输出的 HTML 看起来像这样:
+
+```html
+
+ Sample text here...
+
+```
+
+### 语法高亮
+
+[GFM]^(GitHub Flavored Markdown) 也支持语法高亮.
+
+要激活它,只需在第一个代码 "围栏" 之后直接添加你要使用的语言的文件扩展名,
+```js
, 语法高亮显示将自动应用于渲染的 HTML 中.
+
+例如, 在以下 JavaScript 代码中应用语法高亮:
+
+{{< highlight markdown >}}
+```js
+grunt.initConfig({
+ assemble: {
+ options: {
+ assets: 'docs/assets',
+ data: 'src/data/*.{json,yml}',
+ helpers: 'src/custom-helpers.js',
+ partials: ['src/partials/**/*.{hbs,md}']
+ },
+ pages: {
+ options: {
+ layout: 'default.hbs'
+ },
+ files: {
+ './': ['src/templates/pages/index.hbs']
+ }
+ }
+ }
+};
+```
+{{< / highlight >}}
+
+呈现的输出效果如下:
+
+```js
+grunt.initConfig({
+ assemble: {
+ options: {
+ assets: 'docs/assets',
+ data: 'src/data/*.{json,yml}',
+ helpers: 'src/custom-helpers.js',
+ partials: ['src/partials/**/*.{hbs,md}']
+ },
+ pages: {
+ options: {
+ layout: 'default.hbs'
+ },
+ files: {
+ './': ['src/templates/pages/index.hbs']
+ }
+ }
+ }
+};
+```
+
+{{< admonition >}}
+**Hugo** 文档中的 [语法高亮页面](https://gohugo.io/content-management/syntax-highlighting/) 介绍了有关语法高亮的更多信息,
+包括语法高亮的 shortcode.
+{{< /admonition >}}
+
+## 10 表格
+
+通过在每个单元格之间添加竖线作为分隔线, 并在标题下添加一行破折号 (也由竖线分隔) 来创建表格. 注意, 竖线不需要垂直对齐.
+
+```markdown
+| Option | Description |
+| ------ | ----------- |
+| data | path to data files to supply the data that will be passed into templates. |
+| engine | engine to be used for processing templates. Handlebars is the default. |
+| ext | extension to be used for dest files. |
+```
+
+呈现的输出效果如下:
+
+| Option | Description |
+| ------ | ----------- |
+| data | path to data files to supply the data that will be passed into templates. |
+| engine | engine to be used for processing templates. Handlebars is the default. |
+| ext | extension to be used for dest files. |
+
+输出的 HTML 看起来像这样:
+
+```html
+Option | +Description | +
---|---|
data | +path to data files to supply the data that will be passed into templates. | +
engine | +engine to be used for processing templates. Handlebars is the default. | +
ext | +extension to be used for dest files. | +
",t+=r(e[1]),t+="
\n"}),t}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i,a=function(){function e(e,t){for(var n=0;n"+b(a)+"
"}return{empty:a.empty&&k.templatify(a.empty),header:a.header&&k.templatify(a.header),footer:a.footer&&k.templatify(a.footer),suggestion:a.suggestion||c}}function g(a){return/^[_a-zA-Z0-9-]+$/.test(a)}var h="aaDataset",i="aaValue",j="aaDatum",k=c(4),l=c(3),m=c(18),n=c(19),o=c(8);d.extractDatasetName=function(a){return l.element(a).data(h)},d.extractValue=function(a){return l.element(a).data(i)},d.extractDatum=function(a){var b=l.element(a).data(j);return"string"==typeof b&&(b=JSON.parse(b)),b},k.mixin(d.prototype,o,{_render:function(a,b){function c(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!0}].concat(b),n.templates.empty.apply(this,b)}function d(){function a(a){var b,c=m.suggestion.replace("%PREFIX%",f.cssClasses.prefix).replace("%SUGGESTION%",f.cssClasses.suggestion);return b=l.element(c).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(n.templates.suggestion.apply(this,[a].concat(e))),b.data(h,n.name),b.data(i,n.displayFn(a)||void 0),b.data(j,JSON.stringify(a)),b.children().each(function(){l.element(this).css(f.css.suggestionChild)}),b}var c,d,e=[].slice.call(arguments,0),f=this,g=m.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return c=l.element(g).css(this.css.suggestions),d=k.map(b,a),c.append.apply(c,d),c}function e(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!g}].concat(b),n.templates.header.apply(this,b)}function f(){var b=[].slice.call(arguments,0);return b=[{query:a,isEmpty:!g}].concat(b),n.templates.footer.apply(this,b)}if(this.$el){var g,n=this,o=[].slice.call(arguments,2);if(this.$el.empty(),g=b&&b.length,this._isEmpty=!g,!g&&this.templates.empty)this.$el.html(c.apply(this,o)).prepend(n.templates.header?e.apply(this,o):null).append(n.templates.footer?f.apply(this,o):null);else if(g)this.$el.html(d.apply(this,o)).prepend(n.templates.header?e.apply(this,o):null).append(n.templates.footer?f.apply(this,o):null);else if(b&&!Array.isArray(b))throw new TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(g?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(g?"without":"with")+"-"+this.name),this.trigger("rendered",a)}},getRoot:function(){return this.$el},update:function(a){function b(b){if(!this.canceled&&a===this.query){var c=[].slice.call(arguments,1);this.cacheSuggestions(a,b,c),this._render.apply(this,[a,b].concat(c))}}if(this.query=a,this.canceled=!1,this.shouldFetchFromCache(a))b.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var c=this,d=function(){c.canceled||c.source(a,b.bind(c))};if(this.debounce){var e=function(){c.debounceTimeout=null,d()};clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout(e,this.debounce)}else d()}},cacheSuggestions:function(a,b,c){this.cachedQuery=a,this.cachedSuggestions=b,this.cachedRenderExtraArgs=c},shouldFetchFromCache:function(a){return this.cache&&this.cachedQuery===a&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),a.exports=d},function(a,b){"use strict";a.exports={wrapper:'',dropdown:'',dataset:'',suggestions:'',suggestion:''}},function(a,b,c){"use strict";var d=c(4),e={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"}}};d.isMsie()&&d.mixin(e.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),d.isMsie()&&d.isMsie()<=7&&d.mixin(e.input,{marginTop:"-1px"}),a.exports=e},function(a,b,c){"use strict";a.exports={hits:c(21),popularIn:c(24)}},function(a,b,c){"use strict";var d=c(4),e=c(22),f=c(23),g=function(){function a(a,d){return window.Promise.resolve().then(function(){return b.length&&(e=a.search(b),b=[]),e}).then(function(a){if(a)return c=a.results,c[d]})}var b=[],c=[],e=window.Promise.resolve();return function(c,e){return function(f,g){a(c.as,b.push({indexName:c.indexName,query:f,params:e})-1).then(function(a){a&&g(a.hits,a)}).catch(function(a){d.error(a.message)})}}}();a.exports=function(a,b){var c=f(a.as._ua);if(c&&c[0]>=3&&c[1]>20){var d="autocomplete.js "+e;a.as._ua.indexOf(d)===-1&&(a.as._ua+="; "+d)}return g(a,b)}},function(a,b){a.exports="0.38.1"},function(a,b){"use strict";a.exports=function(a){var b=a.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||a.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(b)return[b[1],b[2],b[3]]}},function(a,b,c){"use strict";var d=c(4),e=c(22),f=c(23);a.exports=function(a,b,c,g){function h(h,i){a.search(h,b,function(a,h){if(a)return void d.error(a.message);if(h.hits.length>0){var l=h.hits[0],m=d.mixin({hitsPerPage:0},c);delete m.source,delete m.index;var n=f(k.as._ua);return n&&n[0]>=3&&n[1]>20&&(b.additionalUA="autocomplete.js "+e),void k.search(j(l),m,function(a,b){if(a)return void d.error(a.message);var c=[];if(g.includeAll){var e=g.allTitle||"All departments";c.push(d.mixin({facet:{value:e,count:b.nbHits}},d.cloneDeep(l)))}d.each(b.facets,function(a,b){d.each(a,function(a,e){c.push(d.mixin({facet:{facet:b,value:e,count:a}},d.cloneDeep(l)))})});for(var f=1;f=a)}}for(var h=this.__startIndex;h