Merge commit '9cc9bab46288d8d5f9fda7009c5f746258cec1b4'
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 10 Feb 2018 11:52:31 +0000 (12:52 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 10 Feb 2018 11:52:31 +0000 (12:52 +0100)
74 files changed:
1  2 
docs/.gitignore
docs/config.toml
docs/content/_index.md
docs/content/about/what-is-hugo.md
docs/content/content-management/_index.md
docs/content/content-management/organization/index.md
docs/content/content-management/urls.md
docs/content/getting-started/installing.md
docs/content/hosting-and-deployment/deployment-with-wercker.md
docs/content/hosting-and-deployment/hosting-on-keycdn.md
docs/content/news/0-16.md
docs/content/news/0.36-relnotes/featured-hugo-36-poster.png
docs/content/news/0.36-relnotes/index.md
docs/content/showcase/hartwell-insurance/bio.md
docs/content/showcase/hartwell-insurance/featured.png
docs/content/showcase/hartwell-insurance/hartwell-columns.png
docs/content/showcase/hartwell-insurance/hartwell-lighthouse.png
docs/content/showcase/hartwell-insurance/hartwell-webpagetest.png
docs/content/showcase/hartwell-insurance/index.md
docs/content/showcase/pace-revenue-management/bio.md
docs/content/showcase/pace-revenue-management/featured.png
docs/content/showcase/pace-revenue-management/index.md
docs/content/showcase/template/bio.md
docs/content/showcase/template/featured-template.png
docs/content/showcase/template/index.md
docs/content/templates/lists.md
docs/content/tools/frontends.md
docs/layouts/index.rss.xml
docs/netlify.toml
docs/resources/_gen/images/about/new-in-032/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_300x0_resize_q10_catmullrom.jpg
docs/resources/_gen/images/about/new-in-032/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_300x0_resize_q75_catmullrom.jpg
docs/resources/_gen/images/about/new-in-032/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_90x120_fill_q75_catmullrom_left.jpg
docs/resources/_gen/images/about/new-in-032/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_90x120_fill_q75_catmullrom_right.jpg
docs/resources/_gen/images/about/new-in-032/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_90x90_fit_q75_catmullrom.jpg
docs/resources/_gen/images/content-management/image-processing/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_200x200_fill_q75_catmullrom_smart1.jpg
docs/resources/_gen/images/content-management/image-processing/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_300x0_resize_q10_catmullrom.jpg
docs/resources/_gen/images/content-management/image-processing/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_300x0_resize_q75_catmullrom.jpg
docs/resources/_gen/images/content-management/image-processing/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_90x120_fill_q75_catmullrom_left.jpg
docs/resources/_gen/images/content-management/image-processing/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_90x120_fill_q75_catmullrom_right.jpg
docs/resources/_gen/images/content-management/image-processing/sunset_hu59e56ffff1bc1d8d122b1403d34e039f_90587_90x90_fit_q75_catmullrom.jpg
docs/resources/_gen/images/content-management/organization/1-featured-content-bundles_hu3e3ae7839b071119f32acaa20f204198_63640_300x0_resize_catmullrom.png
docs/resources/_gen/images/news/0.33-relnotes/featured-hugo-33-poster_hu45ce9da1cdea6ca61c5f4f5baccdcad4_70230_480x0_resize_catmullrom.png
docs/resources/_gen/images/news/0.33-relnotes/featured-hugo-33-poster_hu45ce9da1cdea6ca61c5f4f5baccdcad4_70230_640x0_resize_catmullrom.png
docs/resources/_gen/images/news/0.34-relnotes/featured-34-poster_hud8d73dc5df8d5a35383849a78eea35dd_78317_480x0_resize_catmullrom.png
docs/resources/_gen/images/news/0.34-relnotes/featured-34-poster_hud8d73dc5df8d5a35383849a78eea35dd_78317_640x0_resize_catmullrom.png
docs/resources/_gen/images/news/0.35-relnotes/featured-hugo-35-poster_hua42b1310dd72f60a34e02851ebf2f82e_88519_480x0_resize_catmullrom.png
docs/resources/_gen/images/news/0.35-relnotes/featured-hugo-35-poster_hua42b1310dd72f60a34e02851ebf2f82e_88519_640x0_resize_catmullrom.png
docs/resources/_gen/images/news/0.36-relnotes/featured-hugo-36-poster_huf2fee368f65c75d3878561ed4225c39a_67640_480x0_resize_catmullrom.png
docs/resources/_gen/images/news/0.36-relnotes/featured-hugo-36-poster_huf2fee368f65c75d3878561ed4225c39a_67640_640x0_resize_catmullrom.png
docs/resources/_gen/images/showcase/hartwell-insurance/featured_hu642e730c6f819b15fc6ebbaa25b0243f_446603_02c2d5bfbe1f2c621df733e4d040574d.png
docs/resources/_gen/images/showcase/hartwell-insurance/featured_hu642e730c6f819b15fc6ebbaa25b0243f_446603_1024x512_fill_catmullrom_top.png
docs/resources/_gen/images/showcase/hartwell-insurance/featured_hu642e730c6f819b15fc6ebbaa25b0243f_446603_640x0_resize_catmullrom.png
docs/resources/_gen/images/showcase/pace-revenue-management/featured_hu143b6afebcd8780a08aa0a9f8e95dd02_298908_1024x512_fill_catmullrom_top.png
docs/resources/_gen/images/showcase/pace-revenue-management/featured_hu143b6afebcd8780a08aa0a9f8e95dd02_298908_640x0_resize_catmullrom.png
docs/resources/_gen/images/showcase/pace-revenue-management/featured_hu143b6afebcd8780a08aa0a9f8e95dd02_298908_978ff9297dc1d5096773813d2df58a6f.png
docs/resources/_gen/images/showcase/template/featured-template_hu2f0d11388f944348b232a431caeb965b_41270_1024x512_fill_catmullrom_top.png
docs/resources/_gen/images/showcase/template/featured-template_hu2f0d11388f944348b232a431caeb965b_41270_34aaa1bbe5cc1b4798bfff8f28e1033e.png
docs/resources/_gen/images/showcase/template/featured-template_hu2f0d11388f944348b232a431caeb965b_41270_640x0_resize_catmullrom.png
docs/src/package-lock.json
docs/themes/gohugoioTheme/archetypes/showcase.md
docs/themes/gohugoioTheme/layouts/_default/baseof.html
docs/themes/gohugoioTheme/layouts/index.html
docs/themes/gohugoioTheme/layouts/partials/home-page-sections/showcase.html
docs/themes/gohugoioTheme/layouts/partials/previous-next-links-in-section-with-title.html
docs/themes/gohugoioTheme/layouts/partials/site-footer.html
docs/themes/gohugoioTheme/layouts/showcase/list.html
docs/themes/gohugoioTheme/layouts/showcase/single.html
docs/themes/gohugoioTheme/src/css/_carousel.css
docs/themes/gohugoioTheme/src/css/main.css
docs/themes/gohugoioTheme/src/js/lazysizes.js
docs/themes/gohugoioTheme/src/package-lock.json
docs/themes/gohugoioTheme/src/package.json
docs/themes/gohugoioTheme/static/dist/app.bundle.js
docs/themes/gohugoioTheme/static/dist/main.css

diff --cc docs/.gitignore
index dd088ba8f2cec6ee9f6211ff11c98fd169f2cb03,0000000000000000000000000000000000000000..190dfb1abdedd57685d59ad6c8068b730cf75fa1
mode 100644,000000..100644
--- /dev/null
@@@ -1,3 -1,0 +1,4 @@@
 +/.idea
 +/public
 +nohup.out
++.DS_Store
index 53e4e9afabb0cc2b36361b69c840a2393f7c7a2a,0000000000000000000000000000000000000000..4b60aac58cba1d7c56daa9c71d1243247585c7bf
mode 100644,000000..100644
--- /dev/null
@@@ -1,256 -1,0 +1,274 @@@
 +baseURL = "https://gohugo.io/"
 +paginate =  100
 +defaultContentLanguage = "en"
 +enableEmoji = true
 +# Set the unicode character used for the "return" link in page footnotes.
 +footnotereturnlinkcontents = "↩"
 +languageCode = "en-us"
 +metaDataFormat = "yaml"
 +title = "Hugo"
 +theme = "gohugoioTheme"
 +
 +googleAnalytics = "UA-7131036-4"
 +
 +pluralizeListTitles = false
 +
 +# We do redirects via Netlify's _redirects file, generated by Hugo (see "outputs" below).
 +disableAliases = true
 +
 +
 +# Highlighting config (Pygments)
 +# It is (currently) not in use, but you can do ```go in a content file if you want to.
 +pygmentsCodeFences = true
 +
 +pygmentsOptions = ""
 +# Use the Chroma stylesheet
 +pygmentsUseClasses = true
 +pygmentsUseClassic = false
 +
 +# See https://help.farbox.com/pygments.html
 +pygmentsStyle = "friendly"
 +
 +[outputs]
 +home = [ "HTML", "RSS", "REDIR", "HEADERS" ]
 +section = [ "HTML", "RSS"]
 +
 +[mediaTypes]
 +[mediaTypes."text/netlify"]
 +suffix = ""
 +delimiter = ""
 +
 +[outputFormats]
 +[outputFormats.REDIR]
 +mediatype = "text/netlify"
 +baseName = "_redirects"
 +isPlainText = true
 +notAlternative = true
 +[outputFormats.HEADERS]
 +mediatype = "text/netlify"
 +baseName = "_headers"
 +isPlainText = true
 +notAlternative = true
 +
 +[related]
 +
 +threshold = 80
 +includeNewer = true
 +toLower = false
 +
 +[[related.indices]]
 +name = "keywords"
 +weight = 100
 +[[related.indices]]
 +name  = "date"
 +weight = 10
 +pattern = "2006"
 +
 +[social]
 +twitter = "GoHugoIO"
 +
 +#CUSTOM PARAMS
 +[params]
 +  description = "The world’s fastest framework for building websites"
 +  ## Used for views in rendered HTML (i.e., rather than using the .Hugo variable)
 +  release = "0.37-DEV"
 +  ## Setting this to true will add a "noindex" to *EVERY* page on the site
 +  removefromexternalsearch = false
 +  ## Gh repo for site footer (include trailing slash)
 +  ghrepo = "https://github.com/gohugoio/hugoDocs/"
 +  ## GH Repo for filing a new issue
 +  github_repo = "https://github.com/gohugoio/hugo/issues/new"
 +  ### Edit content repo (set to automatically enter "edit" mode; this is good for "improve this page" links)
 +  ghdocsrepo = "https://github.com/gohugoio/hugoDocs/tree/master/docs"
 +  ## Gitter URL
 +  gitter = "https://gitter.im/spf13/hugo"
 +  ## Discuss Forum URL
 +  forum = "https://discourse.gohugo.io/"
 +  ## Google Tag Manager
 +  gtmid = ""
 +
 +  # First one is picked as the Twitter card image if not set on page.
 +  images = ["images/gohugoio-card.png"]
 +
 +  flex_box_interior_classes = "flex-auto w-100 w-40-l mr3 mb3 bg-white ba b--moon-gray nested-copy-line-height"
 +
 +  #sidebar_direction = "sidebar_left"
 +
 +# MARKDOWN
 +## Configuration for BlackFriday markdown parser: https://github.com/russross/blackfriday
 +[blackfriday]
 +      plainIDAnchors = true
 +  # See https://github.com/gohugoio/hugo/issues/2424
 +      hrefTargetBlank = false
 +  angledQuotes = false
 +  latexDashes = true
 +
++[imaging]
++# See https://github.com/disintegration/imaging
++# CatmullRom is a sharp bicubic filter which should fit the docs site well with its many screenshots.
++# Note that you can also set this per image processing.
++resampleFilter = "CatmullRom"
++
++# Defatult JPEG quality setting. Default is 75.
++quality = 75
++
++anchor = "smart"
++
++
 +## As of v0.20, all content files include a default "categories" value that's the same as the section. This was a cheap future-proofing method and should/could be changed accordingly.
 +[taxonomies]
 +  category = "categories"
 +
 +# High level items
 +
 +[[menu.docs]]
 +  name = "About Hugo"
 +  weight = 1
 +  identifier = "about"
 +  url = "/about/"
 +
 +[[menu.docs]]
 +  name = "Getting Started"
 +  weight = 5
 +  identifier = "getting-started"
 +  url = "/getting-started/"
 +
 +
 +[[menu.docs]]
 +  name = "Themes"
 +  weight = 15
 +  identifier = "themes"
 +  post = "break"
 +  url = "/themes/"
 +
 +# Core Menus
 +
 +[[menu.docs]]
 +  name = "Content Management"
 +  weight = 20
 +  identifier = "content-management"
 +  post = "expanded"
 +  url = "/content-management/"
 +
 +[[menu.docs]]
 +  name = "Templates"
 +  weight = 25
 +  identifier = "templates"
 +
 +  url = "/templates/"
 +
 +[[menu.docs]]
 +  name = "Functions"
 +  weight = 30
 +  identifier = "functions"
 +  url = "/functions/"
 +
 +[[menu.docs]]
 +  name = "Variables"
 +  weight = 35
 +  identifier = "variables"
 +  url = "/variables/"
 +
 +[[menu.docs]]
 +  name = "CLI"
 +  weight = 40
 +  post = "break"
 +  identifier = "commands"
 +  url = "/commands/"
 +
 +
 +
 +# LOW LEVEL ITEMS
 +
 +
 +[[menu.docs]]
 +  name = "Troubleshooting"
 +  weight = 60
 +  identifier = "troubleshooting"
 +  url = "/troubleshooting/"
 +
 +[[menu.docs]]
 +  name = "Tools"
 +  weight = 70
 +  identifier = "tools"
 +  url = "/tools/"
 +
 +[[menu.docs]]
 +  name = "Hosting & Deployment"
 +  weight = 80
 +  identifier = "hosting-and-deployment"
 +  url = "/hosting-and-deployment/"
 +
 +[[menu.docs]]
 +  name = "Contribute"
 +  weight = 100
 +  post = "break"
 +  identifier = "contribute"
 +  url = "/contribute/"
 +
 +#[[menu.docs]]
 +#  name = "Tags"
 +#  weight = 120
 +#  identifier = "tags"
 +#  url = "/tags/"
 +
 +
 +# [[menu.docs]]
 +#   name = "Categories"
 +#   weight = 140
 +#   identifier = "categories"
 +#   url = "/categories/"
 +
 +######## QUICKLINKS
 +
 +  [[menu.quicklinks]]
 +    name = "Fundamentals"
 +    weight = 1
 +    identifier = "fundamentals"
 +    url = "/tags/fundamentals/"
 +
 +
 +
 +
 +######## GLOBAL ITEMS TO BE SHARED WITH THE HUGO SITES
 +
 +[[menu.global]]
 +    name = "News"
 +    weight = 1
 +    identifier = "news"
 +    url = "/news/"
 +
 +  [[menu.global]]
 +    name = "Docs"
 +    weight = 5
 +    identifier = "docs"
 +    url = "/documentation/"
 +
 +  [[menu.global]]
 +    name = "Themes"
 +    weight = 10
 +    identifier = "themes"
 +    url = "https://themes.gohugo.io/"
 +
++    [[menu.global]]
++      name = "Showcase"
++      weight = 20
++      identifier = "showcase"
++      url = "/showcase/"
++
 +  # Anything with a weight > 100 gets an external icon
 +  [[menu.global]]
 +    name = "Community"
 +    weight = 150
 +    icon = true
 +    identifier = "community"
 +    post = "external"
 +    url = "https://discourse.gohugo.io/"
 +
 +
 +  [[menu.global]]
 +    name = "GitHub"
 +    weight = 200
 +    identifier = "github"
 +    post = "external"
 +    url = "https://github.com/gohugoio/hugo"
index ec8883c44bfcbf717b3064cc382ee8fac88292d9,0000000000000000000000000000000000000000..c8976eb9458a033a913bc24dfc1601abbc9815cf
mode 100644,000000..100644
--- /dev/null
@@@ -1,49 -1,0 +1,49 @@@
- title: "A Fast and Flexible Website Generator"
 +---
++title: "The world’s fastest framework for building websites"
 +date: 2017-03-02T12:00:00-05:00
 +features:
 +  - heading: Blistering Speed
 +    image_path: /images/icon-fast.svg
 +    tagline: What's modern about waiting for your site to build?
 +    copy: Hugo is the fastest tool of its kind. At <1 ms per page, the average site builds in less than a second.
 +
 +  - heading: Robust Content Management
 +    image_path: /images/icon-content-management.svg
 +    tagline: Flexibility rules. Hugo is a content strategist's dream.
 +    copy: Hugo supports unlimited content types, taxonomies, menus, dynamic API-driven content, and more, all without plugins.
 +
 +  - heading: Shortcodes
 +    image_path: /images/icon-shortcodes.svg
 +    tagline: Hugo's shortcodes are Markdown's hidden superpower.
 +    copy: We love the beautiful simplicity of markdown’s syntax, but there are times when we want more flexibility. Hugo shortcodes allow for both beauty and flexibility.
 +
 +  - heading: Built-in Templates
 +    image_path: /images/icon-built-in-templates.svg
 +    tagline: Hugo has common patterns to get your work done quickly.
 +    copy: Hugo ships with pre-made templates to make quick work of SEO, commenting, analytics and other functions. One line of code, and you're done.
 +
 +  - heading: Multilingual and i18n
 +    image_path: /images/icon-multilingual2.svg
 +    tagline: Polyglot baked in.
 +    copy: Hugo provides full i18n support for multi-language sites with the same straightforward development experience Hugo users love in single-language sites.
 +
 +  - heading: Custom Outputs
 +    image_path: /images/icon-custom-outputs.svg
 +    tagline: HTML not enough?
 +    copy: Hugo allows you to output your content in multiple formats, including JSON or AMP, and makes it easy to create your own.
 +sections:
 +  - heading: "100s of Themes"
 +    cta: Check out the Hugo's themes.
 +    link: http://themes.gohugo.io/
 +    color_classes: bg-accent-color white
 +    image: /images/homepage-screenshot-hugo-themes.jpg
 +    copy: "Hugo provides a robust theming system that is easy to implement but capable of producing even the most complicated websites."
 +  - heading: "Capable Templating"
 +    cta: Get Started.
 +    link: templates/
 +    color_classes: bg-primary-color-light black
 +    image: /images/home-page-templating-example.png
 +    copy: "Hugo's Go-based templating provides just the right amount of logic to build anything from the simple to complex. If you prefer Jade/Pug-like syntax, you can also use Amber, Ace, or any combination of the three."
 +---
 +
 +Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.
index db947e2f90066b1f85f8921d912279d402563fd6,0000000000000000000000000000000000000000..2c7339f7cde44db15db1d482a2ed95bf5f6e6ab3
mode 100644,000000..100644
--- /dev/null
@@@ -1,69 -1,0 +1,69 @@@
-   main:
 +---
 +title: What is Hugo
 +linktitle: What is Hugo
 +description: Hugo is a fast and modern static site generator written in Go, and designed to make website creation fun again.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +layout: single
 +menu:
++  docs:
 +    parent: "about"
 +    weight: 10
 +weight: 10
 +sections_weight: 10
 +draft: false
 +aliases: [/overview/introduction/,/about/why-i-built-hugo/]
 +toc: true
 +---
 +
 +Hugo is a general-purpose website framework. Technically speaking, Hugo is a [static site generator][]. Unlike systems that dynamically build a page with each visitor request, Hugo builds pages when you create or update your content. Since websites are viewed far more often than they are edited, Hugo is designed to provide an optimal viewing experience for your website's end users and an ideal writing experience for website authors.
 +
 +Websites built with Hugo are extremely fast and secure. Hugo sites can be hosted anywhere, including [Netlify][], [Heroku][], [GoDaddy][], [DreamHost][], [GitHub Pages][], [GitLab Pages][], [Surge][], [Aerobatic][], [Firebase][], [Google Cloud Storage][], [Amazon S3][], [Rackspace][], [Azure][], and [CloudFront][] and work well with CDNs. Hugo sites run without the need for a database or dependencies on expensive runtimes like Ruby, Python, or PHP.
 +
 +We think of Hugo as the ideal website creation tool with nearly instant build times, able to rebuild whenever a change is made.
 +
 +## How Fast is Hugo?
 +
 +{{< youtube "CdiDYZ51a2o" >}}
 +
 +## What Does Hugo Do?
 +
 +In technical terms, Hugo takes a source directory of files and templates and uses these as input to create a complete website.
 +
 +## Who Should Use Hugo?
 +
 +Hugo is for people that prefer writing in a text editor over a browser.
 +
 +Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases.
 +
 +Hugo is for people building a blog, a company site, a portfolio site, documentation, a single landing page, or a website with thousands of pages.
 +
 +
 +
 +[@spf13]: https://twitter.com/@spf13
 +[Aerobatic]: https://www.aerobatic.com/
 +[Amazon S3]: http://aws.amazon.com/s3/
 +[Azure]: https://blogs.msdn.microsoft.com/acoat/2016/01/28/publish-a-static-web-site-using-azure-web-apps/
 +[CloudFront]: http://aws.amazon.com/cloudfront/ "Amazon CloudFront"
 +[contributing to it]: https://github.com/gohugoio/hugo
 +[DreamHost]: http://www.dreamhost.com/
 +[Firebase]: https://firebase.google.com/docs/hosting/ "Firebase static hosting"
 +[GitHub Pages]: https://pages.github.com/
 +[GitLab Pages]: https://about.gitlab.com/features/pages/
 +[Go language]: https://golang.org/
 +[GoDaddy]: https://www.godaddy.com/ "Godaddy.com Hosting"
 +[Google Cloud Storage]: http://cloud.google.com/storage/
 +[Heroku]: https://www.heroku.com/
 +[Jekyll]: http://jekyllrb.com/
 +[Jekyll]: https://jekyllrb.com/
 +[Middleman]: https://middlemanapp.com/
 +[Middleman]: https://middlemanapp.com/
 +[Nanoc]: http://nanoc.ws/
 +[Nanoc]: https://nanoc.ws/
 +[Netlify]: https://netlify.com
 +[rackspace]: https://www.rackspace.com/cloud/files
 +[static site generator]: /about/benefits/
 +[Rackspace]: https://www.rackspace.com/cloud/files
 +[static site generator]: /about/benefits/
 +[Surge]: https://surge.sh
index a2fbce523eccef26d6ff23977755b7f80c8a212e,0000000000000000000000000000000000000000..28f2ecf827693be568e933b05acc13007a3bc027
mode 100644,000000..100644
--- /dev/null
@@@ -1,20 -1,0 +1,20 @@@
- A static site generator needs to extend beyond front matter and a couple templates to be both scalable and *manageable*. Hugo was designed with not only developers in mind, but also content managers and authors.
 +---
 +title: Content Management
 +linktitle: Content Management Overview
 +description: Hugo makes managing large static sites easy with support for archetypes, content types, menus, cross references, summaries, and more.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 1
 +keywords: [source, organization]
 +categories: [content management]
 +weight: 01    #rem
 +draft: false
 +aliases: [/content/,/content/organization]
 +toc: false
 +---
 +
++A static site generator needs to extend beyond front matter and a couple of templates to be both scalable and *manageable*. Hugo was designed with not only developers in mind, but also content managers and authors.
index 742a9e5fea6588462ac67e4a95e1d7716f8ba984,0000000000000000000000000000000000000000..b810f6179b9675d745f73de60f3ffd67bd46ddc9
mode 100644,000000..100644
--- /dev/null
@@@ -1,240 -1,0 +1,240 @@@
- The bundle docuementation is **work in progress**. We will publish more comprehensive docs about this soon.
 +---
 +title: Content Organization
 +linktitle: Organization
 +description: Hugo assumes that the same structure that works to organize your source content is used to organize the rendered site.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [content management,fundamentals]
 +keywords: [sections,content,organization,bundle,resources]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 10
 +weight: 10    #rem
 +draft: false
 +aliases: [/content/sections/]
 +toc: true
 +---
 +
 +## Page Bundles
 +
 +Hugo `0.32` announced page-relative images and other resources packaged into `Page Bundles`. 
 +
 +These terms are connected, and you also need to read about [Page Resources]({{< relref "content-management/page-resources" >}}) and [Image Processing]({{< relref "content-management/image-processing" >}}) to get the full picture.
 +
 +{{% imgproc 1-featured Resize "300x" %}}
 +The illustration shows 3 bundles. Note that the home page bundle cannot contain other content pages, but other files (images etc.) are fine.
 +{{% /imgproc %}}
 +
 +
 +{{% note %}}
++The bundle documentation is **work in progress**. We will publish more comprehensive docs about this soon.
 +{{% /note %}}
 +
 +
 +# Organization of Content Source
 +
 +
 +In Hugo, your content should be organized in a manner that reflects the rendered website.
 +
 +While Hugo supports content nested at any level, the top levels (i.e. `content/<DIRECTORIES>`) are special in Hugo and are considered the content type used to determine layouts etc. To read more about sections, including how to nest them, see [sections][]. 
 +
 +Without any additional configuration, the following will just work:
 +
 +```
 +.
 +└── content
 +    └── about
 +    |   └── _index.md  // <- https://example.com/about/
 +    ├── post
 +    |   ├── firstpost.md   // <- https://example.com/post/firstpost/
 +    |   ├── happy
 +    |   |   └── ness.md  // <- https://example.com/post/happy/ness/
 +    |   └── secondpost.md  // <- https://example.com/post/secondpost/
 +    └── quote
 +        ├── first.md       // <- https://example.com/quote/first/
 +        └── second.md      // <- https://example.com/quote/second/
 +```
 +
 +## Path Breakdown in Hugo
 +
 +
 +The following demonstrates the relationships between your content organization and the output URL structure for your Hugo website when it renders. These examples assume you are [using pretty URLs][pretty], which is the default behavior for Hugo. The examples also assume a key-value of `baseurl = "https://example.com"` in your [site's configuration file][config].
 +
 +### Index Pages: `_index.md`
 +
 +`_index.md` has a special role in Hugo. It allows you to add front matter and content to your [list templates][lists]. These templates include those for [section templates][], [taxonomy templates][], [taxonomy terms templates][], and your [homepage template][]. 
 +
 +{{% note %}}
 +**Tip:** You can get a reference to the content and metadata in `_index.md` using the [`.Site.GetPage` function](/functions/getpage/).
 +{{% /note %}}
 +
 +You can keep one `_index.md` for your homepage and one in each of your content sections, taxonomies, and taxonomy terms. The following shows typical placement of an `_index.md` that would contain content and front matter for a `posts` section list page on a Hugo website:
 +
 +
 +```
 +.         url
 +.       ⊢--^-⊣
 +.        path    slug
 +.       ⊢--^-⊣⊢---^---⊣
 +.           filepath
 +.       ⊢------^------⊣
 +content/posts/_index.md
 +```
 +
 +At build, this will output to the following destination with the associated values:
 +
 +```
 +
 +                     url ("/posts/")
 +                    ⊢-^-⊣
 +       baseurl      section ("posts")
 +⊢--------^---------⊣⊢-^-⊣
 +        permalink
 +⊢----------^-------------⊣
 +https://example.com/posts/index.html
 +```
 +
 +The [sections][] can be nested as deeply as you need. The important part to understand is, that to make the section tree fully navigational, at least the lower-most section needs a content file. (i.e. `_index.md`).
 +
 +
 +### Single Pages in Sections
 +
 +Single content files in each of your sections are going to be rendered as [single page templates][singles]. Here is an example of a single `post` within `posts`:
 +
 +
 +```
 +                   path ("posts/my-first-hugo-post.md")
 +.       ⊢-----------^------------⊣
 +.      section        slug
 +.       ⊢-^-⊣⊢--------^----------⊣
 +content/posts/my-first-hugo-post.md
 +```
 +
 +At the time Hugo builds your site, the content will be output to the following destination:
 +
 +```
 +
 +                               url ("/posts/my-first-hugo-post/")
 +                   ⊢------------^----------⊣
 +       baseurl     section     slug
 +⊢--------^--------⊣⊢-^--⊣⊢-------^---------⊣
 +                 permalink
 +⊢--------------------^---------------------⊣
 +https://example.com/posts/my-first-hugo-post/index.html
 +```
 +
 +
 +## Paths Explained
 +
 +The following concepts will provide more insight into the relationship between your project's organization and the default behaviors of Hugo when building the output website.
 +
 +### `section`
 +
 +A default content type is determined by a piece of content's section. `section` is determined by the location within the project's `content` directory. `section` *cannot* be specified or overridden in front matter.
 +
 +### `slug`
 +
 +A content's `slug` is either `name.extension` or `name/`. The value for `slug` is determined by
 +
 +* the name of the content file (e.g., `lollapalooza.md`) OR
 +* front matter overrides
 +
 +### `path`
 +
 +A content's `path` is determined by the section's path to the file. The file `path`
 +
 +* is based on the path to the content's location AND
 +* does not include the slug
 +
 +### `url`
 +
 +The `url` is the relative URL for the piece of content. The `url`
 +
 +* is based on the content's location within the directory structure OR
 +* is defined in front matter and *overrides all the above*
 +
 +## Override Destination Paths via Front Matter
 +
 +Hugo believes that you organize your content with a purpose. The same structure that works to organize your source content is used to organize the rendered site. As displayed above, the organization of the source content will be mirrored in the destination.
 +
 +There are times where you may need more control over your content. In these cases, there are fields that can be specified in the front matter to determine the destination of a specific piece of content.
 +
 +The following items are defined in this order for a specific reason: items explained further down in the list will override earlier items, and not all of these items can be defined in front matter:
 +
 +### `filename`
 +
 +This isn't in the front matter, but is the actual name of the file minus the extension. This will be the name of the file in the destination (e.g., `content/posts/my-post.md` becomes `example.com/posts/my-post/`).
 +
 +### `slug`
 +
 +When defined in the front matter, the `slug` can take the place of the filename for the destination.
 +
 +{{< code file="content/posts/old-post.md" >}}
 +---
 +title: New Post
 +slug: "new-post"
 +---
 +{{< /code >}}
 +
 +This will render to the following destination according to Hugo's default behavior:
 +
 +```
 +example.com/posts/new-post/
 +```
 +
 +### `section`
 +
 +`section` is determined by a content's location on disk and *cannot* be specified in the front matter. See [sections][] for more information.
 +
 +### `type`
 +
 +A content's `type` is also determined by its location on disk but, unlike `section`, it *can* be specified in the front matter. See [types][]. This can come in especially handy when you want a piece of content to render using a different layout. In the following example, you can create a layout at `layouts/new/mylayout.html` that Hugo will use to render this piece of content, even in the midst of many other posts.
 +
 +{{< code file="content/posts/my-post.md" >}}
 +---
 +title: My Post
 +type: new
 +layout: mylayout
 +---
 +{{< /code >}}
 +<!-- See https://discourse.gohugo.io/t/path-not-works/6387 -->
 +<!-- ### `path`-->
 +
 +<!--`path` can be provided in the front matter. This will replace the actual path to the file on disk. Destination will create the destination with the same path, including the section. -->
 +
 +### `url`
 +
 +A complete URL can be provided. This will override all the above as it pertains to the end destination. This must be the path from the baseURL (starting with a `/`). `url` will be used exactly as it provided in the front matter and will ignore the `--uglyURLs` setting in your site configuration:
 +
 +{{< code file="content/posts/old-url.md" >}}
 +---
 +title: Old URL
 +url: /blog/new-url/
 +---
 +{{< /code >}}
 +
 +Assuming your `baseURL` is [configured][config] to `https://example.com`, the addition of `url` to the front matter will make `old-url.md` render to the following destination:
 +
 +```
 +https://example.com/blog/new-url/
 +```
 +
 +You can see more information on how to control output paths in [URL Management][urls].
 +
 +[config]: /getting-started/configuration/
 +[formats]: /content-management/formats/
 +[front matter]: /content-management/front-matter/
 +[getpage]: /functions/getpage/
 +[homepage template]: /templates/homepage/
 +[homepage]: /templates/homepage/
 +[lists]: /templates/lists/
 +[pretty]: /content-management/urls/#pretty-urls
 +[section templates]: /templates/section-templates/
 +[sections]: /content-management/sections/
 +[singles]: /templates/single-page-templates/
 +[taxonomy templates]: /templates/taxonomy-templates/
 +[taxonomy terms templates]: /templates/taxonomy-templates/
 +[types]: /content-management/types/
 +[urls]: /content-management/urls/
index f0d9dca41e754f44a9c5f20604c7b3f0b48a48cc,0000000000000000000000000000000000000000..c2c08a4d4fd0c12e074098b4db4651820ac48cba
mode 100644,000000..100644
--- /dev/null
@@@ -1,282 -1,0 +1,282 @@@
- The `http-equiv="refresh"` line is what performs the redirect, in 0 seconds in this case. If an end user of your website goes to `https://example.com/posts/my-old-url`, they will now be automatically redirected to the newer, correct URL. The addition of `<meta name="robots" content="noindex">` lets search engine bots know they they should not crawl and index your new alias page.
 +---
 +title: URL Management
 +linktitle: URL Management
 +description: Hugo supports permalinks, aliases, link canonicalization, and multiple options for handling relative vs absolute URLs.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-03-09
 +keywords: [aliases,redirects,permalinks,urls]
 +categories: [content management]
 +menu:
 +  docs:
 +    parent: "content-management"
 +    weight: 110
 +weight: 110   #rem
 +draft: false
 +aliases: [/extras/permalinks/,/extras/aliases/,/extras/urls/,/doc/redirects/,/doc/alias/,/doc/aliases/]
 +toc: true
 +---
 +
 +## Permalinks
 +
 +The default Hugo target directory for your built website is `public/`. However, you can change this value by specifying a different `publishDir` in your [site configuration][config]. The directories created at build time for a section reflect the position of the content's directory within the `content` folder and namespace matching its layout within the `contentdir` hierarchy.
 +
 +The `permalinks` option in your [site configuration][config] allows you to adjust the directory paths (i.e., the URLs) on a per-section basis. This will change where the files are written to and will change the page's internal "canonical" location, such that template references to `.RelPermalink` will honor the adjustments made as a result of the mappings in this option.
 +
 +{{% note "Default Publish and Content Folders" %}}
 +These examples use the default values for `publishDir` and `contentDir`; i.e., `public` and `content`, respectively. You can override the default values in your [site's `config` file](/getting-started/configuration/).
 +{{% /note %}}
 +
 +For example, if one of your [sections][] is called `post` and you want to adjust the canonical path to be hierarchical based on the year, month, and post title, you could set up the following configurations in YAML and TOML, respectively.
 +
 +### YAML Permalinks Configuration Example
 +
 +{{< code file="config.yml" copy="false" >}}
 +permalinks:
 +  post: /:year/:month/:title/
 +{{< /code >}}
 +
 +### TOML Permalinks Configuration Example
 +
 +{{< code file="config.toml" copy="false" >}}
 +[permalinks]
 +  post = "/:year/:month/:title/"
 +{{< /code >}}
 +
 +Only the content under `post/` will have the new URL structure. For example, the file `content/post/sample-entry.md` with `date: 2017-02-27T19:20:00-05:00` in its front matter will render to `public/2017/02/sample-entry/index.html` at build time and therefore be reachable at `https://example.com/2017/02/sample-entry/`.
 +
 +You can also configure permalinks of taxonomies with the same syntax, by using the plural form of the taxonomy instead of the section. You will probably only want to use the configuration values `:slug` or `:title`.
 +
 +### Permalink Configuration Values
 +
 +The following is a list of values that can be used in a `permalink` definition in your site `config` file. All references to time are dependent on the content's date.
 +
 +`:year`
 +: the 4-digit year
 +
 +`:month`
 +: the 2-digit month
 +
 +`:monthname`
 +: the name of the month
 +
 +`:day`
 +: the 2-digit day
 +
 +`:weekday`
 +: the 1-digit day of the week (Sunday = 0)
 +
 +`:weekdayname`
 +: the name of the day of the week
 +
 +`:yearday`
 +: the 1- to 3-digit day of the year
 +
 +`:section`
 +: the content's section
 +
 +`:sections`
 +: the content's sections hierarchy
 +
 +`:title`
 +: the content's title
 +
 +`:slug`
 +: the content's slug (or title if no slug is provided in the front matter)
 +
 +`:filename`
 +: the content's filename (without extension)
 +
 +## Aliases
 +
 +For people migrating existing published content to Hugo, there's a good chance you need a mechanism to handle redirecting old URLs.
 +
 +Luckily, redirects can be handled easily with **aliases** in Hugo.
 +
 +### Example: Aliases
 +
 +Let's assume you create a new piece of content at `content/posts/my-awesome-blog-post.md`. The content is a revision of your previous post at `content/posts/my-original-url.md`. You can create an `aliases` field in the front matter of your new `my-awesome-blog-post.md` where you can add previous paths. The following examples show how to create this filed in TOML and YAML front matter, respectively.
 +
 +#### TOML Front Matter
 +
 +{{< code file="content/posts/my-awesome-post.md" copy="false" >}}
 ++++
 +aliases = [
 +    "/posts/my-original-url/",
 +    "/2010/01/01/even-earlier-url.html"
 +]
 ++++
 +{{< /code >}}
 +
 +#### YAML Front Matter
 +
 +{{< code file="content/posts/my-awesome-post.md" copy="false" >}}
 +---
 +aliases:
 +    - /posts/my-original-url/
 +    - /2010/01/01/even-earlier-url.html
 +---
 +{{< /code >}}
 +
 +Now when you visit any of the locations specified in aliases---i.e., *assuming the same site domain*---you'll be redirected to the page they are specified on. For example, a visitor to `example.com/posts/my-original-url/` will be immediately redirected to `example.com/posts/my-awesome-blog-post/`.
 +
 +### Example: Aliases in Multilingual
 +
 +On [multilingual sites][multilingual], each translation of a post can have unique aliases. To use the same alias across multiple languages, prefix it with the language code.
 +
 +In `/posts/my-new-post.es.md`:
 +
 +```
 +---
 +aliases:
 +    - /es/posts/my-original-post/
 +---
 +```
 +
 +### How Hugo Aliases Work
 +
 +When aliases are specified, Hugo creates a directory to match the alias entry. Inside the directory, Hugo creates an `.html` file specifying the canonical URL for the page and the new redirect target.
 +
 +For example, a content file at `posts/my-intended-url.md` with the following in the front matter:
 +
 +```
 +---
 +title: My New post
 +aliases: [/posts/my-old-url/]
 +---
 +```
 +
 +Assuming a `baseURL` of `example.com`, the contents of the auto-generated alias `.html` found at `https://example.com/posts/my-old-url/ will contain the following:`
 +
 +```
 +<!DOCTYPE html>
 +<html>
 +  <head>
 +    <title>https://example.com/posts/my-intended-url</title>
 +    <link rel="canonical" href="https://example.com/posts/my-intended-url"/>
 +    <meta name="robots" content="noindex">
 +    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
 +    <meta http-equiv="refresh" content="0; url=https://example.com/posts/my-intended-url"/>
 +  </head>
 +</html>
 +```
 +
++The `http-equiv="refresh"` line is what performs the redirect, in 0 seconds in this case. If an end user of your website goes to `https://example.com/posts/my-old-url`, they will now be automatically redirected to the newer, correct URL. The addition of `<meta name="robots" content="noindex">` lets search engine bots know that they should not crawl and index your new alias page.
 +
 +### Customize 
 +You may customize this alias page by creating an `alias.html` template in the
 +layouts folder of your site (i.e., `layouts/alias.html`). In this case, the data passed to the template is
 +
 +`Permalink`
 +: the link to the page being aliased
 +
 +`Page`
 +: the Page data for the page being aliased
 +
 +### Important Behaviors of Aliases
 +
 +1. Hugo makes no assumptions about aliases. They also do not change based
 +on your UglyURLs setting. You need to provide absolute paths to your web root
 +and the complete filename or directory.
 +2. Aliases are rendered *before* any content are rendered and therefore will be overwritten by any content with the same location.
 +
 +## Pretty URLs
 +
 +Hugo's default behavior is to render your content with "pretty" URLs. No non-standard server-side configuration is required for these pretty URLs to work.
 +
 +The following demonstrates the concept:
 +
 +```
 +content/posts/_index.md
 +=> example.com/posts/index.html
 +content/posts/post-1.md
 +=> example.com/posts/post-1/
 +```
 +
 +## Ugly URLs
 +
 +If you would like to have what are often referred to as "ugly URLs" (e.g., example.com/urls.html), set `uglyurls = true` or `uglyurls: true` in your site's `config.toml` or `config.yaml`, respectively. You can also use the `--uglyURLs=true` [flag from the command line][usage] with `hugo` or `hugo server`..
 +
 +If you want a specific piece of content to have an exact URL, you can specify this in the [front matter][] under the `url` key. The following are examples of the same content directory and what the eventual URL structure will be when Hugo runs with its default behavior.
 +
 +See [Content Organization][contentorg] for more details on paths.
 +
 +```
 +.
 +└── content
 +    └── about
 +    |   └── _index.md  // <- https://example.com/about/
 +    ├── post
 +    |   ├── firstpost.md   // <- https://example.com/post/firstpost/
 +    |   ├── happy
 +    |   |   └── ness.md  // <- https://example.com/post/happy/ness/
 +    |   └── secondpost.md  // <- https://example.com/post/secondpost/
 +    └── quote
 +        ├── first.md       // <- https://example.com/quote/first/
 +        └── second.md      // <- https://example.com/quote/second/
 +```
 +
 +Here's the same organization run with `hugo --uglyURLs`:
 +
 +```
 +.
 +└── content
 +    └── about
 +    |   └── _index.md  // <- https://example.com/about/index.html
 +    ├── post
 +    |   ├── firstpost.md   // <- https://example.com/post/firstpost.html
 +    |   ├── happy
 +    |   |   └── ness.md    // <- https://example.com/post/happy/ness.html
 +    |   └── secondpost.md  // <- https://example.com/post/secondpost.html
 +    └── quote
 +        ├── first.md       // <- https://example.com/quote/first.html
 +        └── second.md      // <- https://example.com/quote/second.html
 +```
 +
 +
 +## Canonicalization
 +
 +By default, all relative URLs encountered in the input are left unmodified, e.g. `/css/foo.css` would stay as `/css/foo.css`. The `canonifyURLs` field in your site `config` has a default value of `false`.
 +
 +By setting `canonifyURLs` to `true`, all relative URLs would instead be *canonicalized* using `baseURL`.  For example, assuming you have `baseURL = https://example.com/`, the relative URL `/css/foo.css` would be turned into the absolute URL `https://example.com/css/foo.css`.
 +
 +Benefits of canonicalization include fixing all URLs to be absolute, which may aid with some parsing tasks. Note, however, that all modern browsers handle this on the client without issue.
 +
 +Benefits of non-canonicalization include being able to have scheme-relative resource inclusion; e.g., so that `http` vs `https` can be decided according to how the page was retrieved.
 +
 +{{% note "`canonifyURLs` default change" %}}
 +In the May 2014 release of Hugo v0.11, the default value of `canonifyURLs` was switched from `true` to `false`, which we think is the better default and should continue to be the case going forward. Please verify and adjust your website accordingly if you are upgrading from v0.10 or older versions.
 +{{% /note %}}
 +
 +To find out the current value of `canonifyURLs` for your website, you may use the handy `hugo config` command added in v0.13.
 +
 +```
 +hugo config | grep -i canon
 +```
 +
 +Or, if you are on Windows and do not have `grep` installed:
 +
 +```
 +hugo config | FINDSTR /I canon
 +```
 +
 +## Override URLS with Front Matter
 +
 +In addition to specifying permalink values in your site configuration for different content sections, Hugo provides even more granular control for individual pieces of content.
 +
 +Both `slug` and `url` can be defined in individual front matter. For more information on content destinations at build time, see [Content Organization][contentorg].
 +
 +## Relative URLs
 +
 +By default, all relative URLs are left unchanged by Hugo, which can be problematic when you want to make your site browsable from a local file system.
 +
 +Setting `relativeURLs` to `true` in your [site configuration][config] will cause Hugo to rewrite all relative URLs to be relative to the current content.
 +
 +For example, if your `/post/first/` page contains a link to `/about/`, Hugo will rewrite the URL to `../../about/`.
 +
 +[config]: /getting-started/configuration/
 +[contentorg]: /content-management/organization/
 +[front matter]: /content-management/front-matter/
 +[multilingual]: /content-management/multilingual/
 +[sections]: /content-management/sections/
 +[usage]: /getting-started/usage/
index d9ded804d72732ef7aa5175d32bde79178366fe7,0000000000000000000000000000000000000000..eb605c2a6922dd518a6b076445982587e1579579
mode 100644,000000..100644
--- /dev/null
@@@ -1,500 -1,0 +1,502 @@@
- * [govendor][]
 +---
 +title: Install Hugo
 +linktitle: Install Hugo
 +description: Install Hugo on macOS, Windows, Linux, FreeBSD, and on any machine where the Go compiler tool chain can run.
 +date: 2016-11-01
 +publishdate: 2016-11-01
 +lastmod: 2018-01-02
 +categories: [getting started,fundamentals]
 +authors: ["Michael Henderson"]
 +keywords: [install,pc,windows,linux,macos,binary,tarball]
 +menu:
 +  docs:
 +    parent: "getting-started"
 +    weight: 30
 +weight: 30
 +sections_weight: 30
 +draft: false
 +aliases: [/tutorials/installing-on-windows/,/tutorials/installing-on-mac/,/overview/installing/,/getting-started/install,/install/]
 +toc: true
 +---
 +
 +
 +{{% note %}}
 +There is lots of talk about "Hugo being written in Go", but you don't need to install Go to enjoy Hugo. Just grab a precompiled binary!
 +{{% /note %}}
 +
 +Hugo is written in [Go](https://golang.org/) with support for multiple platforms. The latest release can be found at [Hugo Releases][releases].
 +
 +Hugo currently provides pre-built binaries for the following:
 +
 +* macOS (Darwin) for x64, i386, and ARM architectures
 +* Windows
 +* Linux
 +* FreeBSD
 +
 +Hugo may also be compiled from source wherever the Go compiler tool chain can run; e.g., on other operating systems such as DragonFly BSD, OpenBSD, Plan&nbsp;9, Solaris, and others. See <https://golang.org/doc/install/source> for the full set of supported combinations of target operating systems and compilation architectures.
 +
 +## Quick Install
 +
 +### Binary (Cross-platform)
 +
 +Download the appropriate version for your platform from [Hugo Releases][releases]. Once downloaded, the binary can be run from anywhere. You don't need to install it into a global location. This works well for shared hosts and other systems where you don't have a privileged account.
 +
 +Ideally, you should install it somewhere in your `PATH` for easy use. `/usr/local/bin` is the most probable location.
 +
 +### Homebrew (macOS)
 +
 +If you are on macOS and using [Homebrew][brew], you can install Hugo with the following one-liner:
 +
 +{{< code file="install-with-homebrew.sh" >}}
 +brew install hugo
 +{{< /code >}}
 +
 +For more detailed explanations, read the installation guides that follow for installing on macOS and Windows.
 +
 +### Chocolatey (Windows)
 +
 +If you are on a Windows machine and use [Chocolatey][] for package management, you can install Hugo with the following one-liner:
 +
 +{{< code file="install-with-chocolatey.ps1" >}}
 +choco install hugo -confirm
 +{{< /code >}}
 +
 +### Source
 +
 +#### Prerequisite Tools
 +
 +* [Git][installgit]
 +* [Go (latest or previous version)][installgo]
- Hugo uses [govendor][] to vendor dependencies, but we don't commit the vendored packages themselves to the Hugo git repository. Therefore, a simple `go get` is *not* supported because the command is not vendor aware. *You must use `govendor` to fetch Hugo's dependencies.*
 +
 +#### Vendored Dependencies
 +
- go get github.com/kardianos/govendor
- govendor get github.com/gohugoio/hugo
- go install github.com/gohugoio/hugo
++Hugo uses [dep][] to vendor dependencies, but we don't commit the vendored packages themselves to the Hugo git repository. Therefore, a simple `go get` is *not* supported because the command is not vendor aware. 
++
++The simplest way is to use [mage][] (a Make alternative for Go projects.)
 +
 +#### Fetch from GitHub
 +
 +{{< code file="from-gh.sh" >}}
- `govendor get` will fetch Hugo and all its dependent libraries to `$GOPATH/src/github.com/gohugoio/hugo`, and `go install` compiles everything into a final `hugo` (or `hugo.exe`) executable inside `$GOPATH/bin/`.
++go get github.com/magefile/mage
++go get -d github.com/gohugoio/hugo
++cd $HOME/go/src/github.com/gohugoio/hugo
++mage vendor
++mage install
 +{{< /code >}}
 +
- [govendor]: https://github.com/kardianos/govendor
 +{{% note %}}
 +If you are a Windows user, substitute the `$HOME` environment variable above with `%USERPROFILE%`.
 +{{% /note %}}
 +
 +## macOS
 +
 +### Assumptions
 +
 +1. You know how to open the macOS terminal.
 +2. You're running a modern 64-bit Mac.
 +3. You will use `~/Sites` as the starting point for your site. (`~/Sites` is used for example purposes. If you are familiar enough with the command line and file system, you should have no issues following along with the instructions.)
 +
 +### Pick Your Method
 +
 +There are three ways to install Hugo on your Mac
 +
 +1. The [Homebrew][brew] `brew` utility
 +2. Distribution (i.e., tarball)
 +3. Building from Source
 +
 +There is no "best" way to install Hugo on your Mac. You should use the method that works best for your use case.
 +
 +#### Pros and Cons
 +
 +There are pros and cons to each of the aforementioned methods:
 +
 +1. **Homebrew.** Homebrew is the simplest method and will require the least amount of work to maintain. The drawbacks aren't severe. The default package will be for the most recent release, so it will not have bug fixes until the next release (i.e., unless you install it with the `--HEAD` option). Hugo `brew` releases may lag a few days behind because it has to be coordinated with another team. Nevertheless, `brew` is the recommended installation method if you want to work from a stable, widely used source. Brew works well and is easy to update.
 +
 +2. **Tarball.** Downloading and installing from the tarball is also easy, although it requires a few more command line skills than does Homebrew. Updates are easy as well: you just repeat the process with the new binary. This gives you the flexibility to have multiple versions on your computer. If you don't want to use `brew`, then the tarball/binary is a good choice.
 +
 +3. **Building from Source.** Building from source is the most work. The advantage of building from source is that you don't have to wait for a release to add features or bug fixes. The disadvantage is that you need to spend more time managing the setup, which is manageable but requires more time than the preceding two options.
 +
 +{{% note %}}
 +Since building from source is appealing to more seasoned command line users, this guide will focus more on installing Hugo via Homebrew and Tarball.
 +{{% /note %}}
 +
 +### Install Hugo with Brew
 +
 +{{< youtube WvhCGlLcrF8 >}}
 +
 +#### Step 1: Install `brew` if you haven't already
 +
 +Go to the `brew` website, <https://brew.sh/>, and follow the directions there. The most important step is the installation from the command line:
 +
 +{{< code file="install-brew.sh" >}}
 +ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
 +{{< /code >}}
 +
 +#### Step 2: Run the `brew` Command to Install `hugo`
 +
 +Installing Hugo using `brew` is as easy as the following:
 +
 +{{< code file="install-brew.sh" >}}
 +brew install hugo
 +{{< /code >}}
 +
 +If Homebrew is working properly, you should see something similar to the following:
 +
 +```
 +==> Downloading https://homebrew.bintray.com/bottles/hugo-0.21.sierra.bottle.tar.gz
 +######################################################################### 100.0%
 +==> Pouring hugo-0.21.sierra.bottle.tar.gz
 +🍺  /usr/local/Cellar/hugo/0.21: 32 files, 17.4MB
 +```
 +
 +{{% note "Installing the Latest Hugo with Brew" %}}
 +Replace `brew install hugo` with `brew install hugo --HEAD` if you want the absolute latest in-development version.
 +{{% /note %}}
 +
 +`brew` should have updated your path to include Hugo. You can confirm by opening a new terminal window and running a few commands:
 +
 +```
 +$ # show the location of the hugo executable
 +which hugo
 +/usr/local/bin/hugo
 +
 +# show the installed version
 +ls -l $( which hugo )
 +lrwxr-xr-x  1 mdhender admin  30 Mar 28 22:19 /usr/local/bin/hugo -> ../Cellar/hugo/0.13_1/bin/hugo
 +
 +# verify that hugo runs correctly
 +hugo version
 +Hugo Static Site Generator v0.13 BuildDate: 2015-03-09T21:34:47-05:00
 +```
 +
 +### Install Hugo from Tarball
 +
 +#### Step 1: Decide on the location
 +
 +When installing from the tarball, you have to decide if you're going to install the binary in `/usr/local/bin` or in your home directory. There are three camps on this:
 +
 +1. Install it in `/usr/local/bin` so that all the users on your system have access to it. This is a good idea because it's a fairly standard place for executables. The downside is that you may need elevated privileges to put software into that location. Also, if there are multiple users on your system, they will all run the same version. Sometimes this can be an issue if you want to try out a new release.
 +
 +2. Install it in `~/bin` so that only you can execute it. This is a good idea because it's easy to do, easy to maintain, and doesn't require elevated privileges. The downside is that only you can run Hugo. If there are other users on your site, they have to maintain their own copies. That can lead to people running different versions. Of course, this does make it easier for you to experiment with different releases.
 +
 +3. Install it in your `Sites` directory. This is not a bad idea if you have only one site that you're building. It keeps every thing in a single place. If you want to try out new releases, you can make a copy of the entire site and update the Hugo executable.
 +
 +All three locations will work for you. In the interest of brevity, this guide focuses on option #2.
 +
 +#### Step 2: Download the Tarball
 +
 +1. Open <https://github.com/gohugoio/hugo/releases> in your browser.
 +
 +2. Find the current release by scrolling down and looking for the green tag that reads "Latest Release."
 +
 +3. Download the current tarball for the Mac. The name will be something like `hugo_X.Y_osx-64bit.tgz`, where `X.YY` is the release number.
 +
 +4. By default, the tarball will be saved to your `~/Downloads` directory. If you choose to use a different location, you'll need to change that in the following steps.
 +
 +#### Step 3: Confirm your download
 +
 +Verify that the tarball wasn't corrupted during the download:
 +
 +```
 +tar tvf ~/Downloads/hugo_X.Y_osx-64bit.tgz
 +-rwxrwxrwx  0 0      0           0 Feb 22 04:02 hugo_X.Y_osx-64bit/hugo_X.Y_osx-64bit.tgz
 +-rwxrwxrwx  0 0      0           0 Feb 22 03:24 hugo_X.Y_osx-64bit/README.md
 +-rwxrwxrwx  0 0      0           0 Jan 30 18:48 hugo_X.Y_osx-64bit/LICENSE.md
 +```
 +
 +The `.md` files are documentation for Hugo. The other file is the executable.
 +
 +#### Step 4: Install Into Your `bin` Directory
 +
 +```
 +# create the directory if needed
 +mkdir -p ~/bin
 +
 +# make it the working directory
 +cd ~/bin
 +
 +# extract the tarball
 +tar -xvzf ~/Downloads/hugo_X.Y_osx-64bit.tgz
 +Archive:  hugo_X.Y_osx-64bit.tgz
 +  x ./
 +  x ./hugo
 +  x ./LICENSE.md
 +  x ./README.md
 +
 +# verify that it runs
 +./hugo version
 +Hugo Static Site Generator v0.13 BuildDate: 2015-02-22T04:02:30-06:00
 +```
 +
 +You may need to add your bin directory to your `PATH` variable. The `which` command will check for us. If it can find `hugo`, it will print the full path to it. Otherwise, it will not print anything.
 +
 +```
 +# check if hugo is in the path
 +which hugo
 +/Users/USERNAME/bin/hugo
 +```
 +
 +If `hugo` is not in your `PATH`, add it by updating your `~/.bash_profile` file. First, start up an editor:
 +
 +```
 +nano ~/.bash_profile
 +```
 +
 +Add a line to update your `PATH` variable:
 +
 +```
 +export PATH=$PATH:$HOME/bin
 +```
 +
 +Then save the file by pressing Control-X, then Y to save the file and return to the prompt.
 +
 +Close the terminal and open a new terminal to pick up the changes to your profile. Verify your success by running the `which hugo` command again.
 +
 +You've successfully installed Hugo.
 +
 +### Build from Source on Mac
 +
 +If you want to compile Hugo yourself, you'll need to install Go (aka Golang). You can [install Go directly from the Go website](https://golang.org/dl/) or via Homebrew using the following command:
 +
 +```
 +brew install go
 +```
 +
 +#### Step 1: Get the Source
 +
 +If you want to compile a specific version of Hugo, go to <https://github.com/gohugoio/hugo/releases> and download the source code for the version of your choice. If you want to compile Hugo with all the latest changes (which might include bugs), clone the Hugo repository:
 +
 +```
 +git clone https://github.com/gohugoio/hugo
 +```
 +
 +{{% warning "Sometimes \"Latest\" = \"Bugs\""%}}
 +Cloning the Hugo repository directly means taking the good with the bad. By using the bleeding-edge version of Hugo, you make your development susceptible to the latest features, as well as the latest bugs. Your feedback is appreciated. If you find a bug in the latest release, [please create an issue on GitHub](https://github.com/gohugoio/hugo/issues/new).
 +{{% /warning %}}
 +
 +#### Step 2: Compiling
 +
 +Make the directory containing the source your working directory and then fetch Hugo's dependencies:
 +
 +```
 +mkdir -p src/github.com/gohugoio
 +ln -sf $(pwd) src/github.com/gohugoio/hugo
 +
 +# set the build path for Go
 +export GOPATH=$(pwd)
 +
 +go get
 +```
 +
 +This will fetch the absolute latest version of the dependencies. If Hugo fails to build, it may be the result of a dependency's author introducing a breaking change.
 +
 +Once you have properly configured your directory, you can compile Hugo using the following command:
 +
 +```
 +go build -o hugo main.go
 +```
 +
 +Then place the `hugo` executable somewhere in your `$PATH`. You're now ready to start using Hugo.
 +
 +## Windows
 +
 +The following aims to be a complete guide to installing Hugo on your Windows PC.
 +
 +{{< youtube G7umPCU-8xc >}}
 +
 +### Assumptions
 +
 +1. You will use `C:\Hugo\Sites` as the starting point for your new project.
 +2. You will use `C:\Hugo\bin` to store executable files.
 +
 +### Set up Your Directories
 +
 +You'll need a place to store the Hugo executable, your [content][], and the generated Hugo website:
 +
 +1. Open Windows Explorer.
 +2. Create a new folder: `C:\Hugo`, assuming you want Hugo on your C drive, although this can go anywhere
 +3. Create a subfolder in the Hugo folder: `C:\Hugo\bin`
 +4. Create another subfolder in Hugo: `C:\Hugo\Sites`
 +
 +### Technical Users
 +
 +1. Download the latest zipped Hugo executable from [Hugo Releases][releases].
 +2. Extract all contents to your `..\Hugo\bin` folder.
 +3. The `hugo` executable will be named as `hugo_hugo-version_platform_arch.exe`. Rename the executable to `hugo.exe` for ease of use.
 +4. In PowerShell or your preferred CLI, add the `hugo.exe` executable to your PATH by navigating to `C:\Hugo\bin` (or the location of your hugo.exe file) and use the command `set PATH=%PATH%;C:\Hugo\bin`. If the `hugo` command does not work after a reboot, you may have to run the command prompt as administrator.
 +
 +### Less-technical Users
 +
 +1. Go to the [Hugo Releases][releases] page.
 +2. The latest release is announced on top. Scroll to the bottom of the release announcement to see the downloads. They're all ZIP files.
 +3. Find the Windows files near the bottom (they're in alphabetical order, so Windows is last) – download either the 32-bit or 64-bit file depending on whether you have 32-bit or 64-bit Windows. (If you don't know, [see here](https://esupport.trendmicro.com/en-us/home/pages/technical-support/1038680.aspx).)
 +4. Move the ZIP file into your `C:\Hugo\bin` folder.
 +5. Double-click on the ZIP file and extract its contents. Be sure to extract the contents into the same `C:\Hugo\bin` folder – Windows will do this by default unless you tell it to extract somewhere else.
 +6. You should now have three new files: hugo executable (e.g. `hugo_0.18_windows_amd64.exe`), `license.md`, and `readme.md`. (You can delete the ZIP download now.) Rename that hugo executable (`hugo_hugo-version_platform_arch.exe`) to `hugo.exe` for ease of use.
 +
 +Now you need to add Hugo to your Windows PATH settings:
 +
 +#### For Windows 10 Users:
 +
 +* Right click on the **Start** button.
 +* Click on **System**.
 +* Click on **Advanced System Settings** on the left.
 +* Click on the **Environment Variables...** button on the bottom.
 +* In the User variables section, find the row that starts with PATH (PATH will be all caps).
 +* Double-click on **PATH**.
 +* Click the **New...** button.
 +* Type in the folder where `hugo.exe` was extracted, which is `C:\Hugo\bin` if you went by the instructions above. *The PATH entry should be the folder where Hugo lives and not the binary.* Press <kbd>Enter</kbd> when you're done typing.
 +* Click OK at every window to exit.
 +
 +{{% note "Path Editor in Windows 10"%}}
 +The path editor in Windows 10 was added in the large [November 2015 Update](https://blogs.windows.com/windowsexperience/2015/11/12/first-major-update-for-windows-10-available-today/). You'll need to have that or a later update installed for the above steps to work. You can see what Windows 10 build you have by clicking on the <i class="fa fa-windows"></i>&nbsp;Start button → Settings → System → About. See [here](https://www.howtogeek.com/236195/how-to-find-out-which-build-and-version-of-windows-10-you-have/) for more.)
 +{{% /note %}}
 +
 +#### For Windows 7 and 8.x users:
 +
 +Windows 7 and 8.1 do not include the easy path editor included in Windows 10, so non-technical users on those platforms are advised to install a free third-party path editor like [Windows Environment Variables Editor][Windows Environment Variables Editor] or [Path Editor](https://patheditor2.codeplex.com/).
 +
 +### Verify the Executable
 +
 +Run a few commands to verify that the executable is ready to run, and then build a sample site to get started.
 +
 +#### 1. Open a Command Prompt
 +
 +At the prompt, type `hugo help` and press the <kbd>Enter</kbd> key. You should see output that starts with:
 +
 +```
 +hugo is the main command, used to build your Hugo site.
 +
 +Hugo is a Fast and Flexible Static Site Generator
 +built with love by spf13 and friends in Go.
 +
 +Complete documentation is available at https://gohugo.io/.
 +```
 +
 +If you do, then the installation is complete. If you don't, double-check the path that you placed the `hugo.exe` file in and that you typed that path correctly when you added it to your `PATH` variable. If you're still not getting the output, search the [Hugo discussion forum][forum] to see if others have already figured out our problem. If not, add a note---in the "Support" category---and be sure to include your command and the output.
 +
 +At the prompt, change your directory to the `Sites` directory.
 +
 +```
 +C:\Program Files> cd C:\Hugo\Sites
 +C:\Hugo\Sites>
 +```
 +
 +#### 2. Run the Command
 +
 +Run the command to generate a new site. I'm using `example.com` as the name of the site.
 +
 +```
 +C:\Hugo\Sites> hugo new site example.com
 +```
 +
 +You should now have a directory at `C:\Hugo\Sites\example.com`. Change into that directory and list the contents. You should get output similar to the following:
 +
 +```
 +C:\Hugo\Sites> cd example.com
 +C:\Hugo\Sites\example.com> dir
 +Directory of C:\hugo\sites\example.com
 +
 +04/13/2015  10:44 PM    <DIR>          .
 +04/13/2015  10:44 PM    <DIR>          ..
 +04/13/2015  10:44 PM    <DIR>          archetypes
 +04/13/2015  10:44 PM                83 config.toml
 +04/13/2015  10:44 PM    <DIR>          content
 +04/13/2015  10:44 PM    <DIR>          data
 +04/13/2015  10:44 PM    <DIR>          layouts
 +04/13/2015  10:44 PM    <DIR>          static
 +               1 File(s)             83 bytes
 +               7 Dir(s)   6,273,331,200 bytes free
 +```
 +
 +### Troubleshoot Windows Installation
 +
 +[@dhersam][] has created a nice video on common issues:
 +
 +{{< youtube c8fJIRNChmU >}}
 +
 +## Linux
 +
 +### Snap Package
 +
 +In any of the [Linux distributions that support snaps][snaps]:
 +
 +```
 +snap install hugo
 +```
 +
 +### Debian and Ubuntu
 +
 +Debian and Ubuntu provide a `hugo` version via `apt-get`:
 +
 +```
 +sudo apt-get install hugo
 +```
 +
 +#### Pros
 +
 +* Native Debian/Ubuntu package maintained by Debian Developers
 +* Pre-installed bash completion script and `man` pages
 +
 +#### Cons
 +
 +* Might not be the latest version, especially if you are using an older, stable version (e.g., Ubuntu 16.04 LTS). Until backports and PPA are available, you may consider installing the Hugo snap package to get the latest version of Hugo.
 +
 +{{% note %}}
 +Hugo-as-a-snap can write only inside the user’s `$HOME` directory---and gvfs-mounted directories owned by the user---because of Snaps’ confinement and security model. More information is also available [in this related GitHub issue](https://github.com/gohugoio/hugo/issues/3143). Use ```sudo apt-get install hugo --classic``` to disable the default security model if you want hugo to be able to have write access in other paths besides the user’s `$HOME` directory.
 +{{% /note %}}
 +
 +### Arch Linux
 +
 +You can also install Hugo from the Arch Linux [community](https://www.archlinux.org/packages/community/x86_64/hugo/) repository. Applies also for derivatives such as Manjaro.
 +
 +```
 +sudo pacman -Sy hugo
 +```
 +
 +### Fedora
 +
 +Fedora provides a package for Hugo. The installation is done with the command :
 +
 +```
 +sudo dnf install hugo
 +```
 +
 +### CentOS, and Red Hat
 +
 +* <https://copr.fedorainfracloud.org/coprs/daftaupe/hugo/>
 +
 +See the [related discussion in the Hugo forums][redhatforum].
 +
 +## Upgrade Hugo
 +
 +Upgrading Hugo is as easy as downloading and replacing the executable you’ve placed in your `PATH` or run `brew upgrade hugo` if using Homebrew.
 +
 +## Install Pygments (Optional)
 +
 +The Hugo executable has one *optional* external dependency for source code highlighting ([Pygments][pygments]).
 +
 +If you want to have source code highlighting using the [highlight shortcode][], you need to install the Python-based Pygments program. The procedure is outlined on the [Pygments homepage][pygments].
 +
 +## Next Steps
 +
 +Now that you've installed Hugo, read the [Quick Start guide][quickstart] and explore the rest of the documentation. If you have questions, ask the Hugo community directly by visiting the [Hugo Discussion Forum][forum].
 +
 +[brew]: https://brew.sh/
 +[Chocolatey]: https://chocolatey.org/
 +[content]: /content-management/
 +[@dhersam]: https://github.com/dhersam
 +[forum]: https://discourse.gohugo.io
++[mage]: https://github.com/magefile/mage
++[dep]: https://github.com/golang/dep
 +[highlight shortcode]: /content-management/shortcodes/#highlight
 +[installgit]: http://git-scm.com/
 +[installgo]: https://golang.org/dl/
 +[Path Editor]: https://patheditor2.codeplex.com/
 +[pygments]: http://pygments.org
 +[quickstart]: /getting-started/quick-start/
 +[redhatforum]: https://discourse.gohugo.io/t/solved-fedora-copr-repository-out-of-service/2491
 +[releases]: https://github.com/gohugoio/hugo/releases
 +[snaps]: http://snapcraft.io/docs/core/install
 +[windowsarch]: https://esupport.trendmicro.com/en-us/home/pages/technical-support/1038680.aspx
 +[Windows Environment Variables Editor]: http://eveditor.com/
index 9b41ed793b6afc36abf27bf2634e27c00c6dd503,0000000000000000000000000000000000000000..ac9d7a3e63b80b47f18075244420329e76177773
mode 100644,000000..100644
--- /dev/null
@@@ -1,324 -1,0 +1,324 @@@
- To sign up for a free Wercker account, go to <https://wercker.com> and click the the **Sign Up** button on the top right of the home screen.
 +---
 +title: Deployment with Wercker
 +linktitle: Deployment with Wercker
 +description: You can use a free tool called Wercker to automate deployments between your GitHub-hosted source and final website on GitHub pages.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [hosting and deployment]
 +keywords: [wercker,deployment,github,git]
 +authors: [Arjen Schwarz, Samuel Debruyn]
 +menu:
 +  docs:
 +    parent: "hosting-and-deployment"
 +    weight: 60
 +weight: 60
 +sections_weight: 60
 +draft: false
 +aliases: [/tutorials/automated-deployments/]
 +toc: true
 +wip: false
 +notesforauthors:
 +---
 +
 +## Goals
 +
 +By the end of this guide, you will have completed the following:
 +
 +* Creating a basic Hugo project and website
 +* Version controlling your project with Git
 +* Adding your project to GitHub
 +* Automating site deployments with a free tool called Wercker
 +* Deploying your website to GitHub Pages for free hosting
 +
 +## Assumptions
 +
 +1. You have a working familiarity with using Git for version control
 +2. You have a GitHub account
 +3. You have already created a basic Hugo project
 +
 +If you do not meet these assumptions, the [GitHub help section][githubhelp] has an explanation of how to install and use git. [Signing up for a GitHub][ghsignup] account is free as well. If you are completely unfamiliar with creating a new Hugo website, visit the [Hugo Quick Start][quickstart].
 +
 +## Create a Basic Hugo Site
 +
 +{{% note "This Guide Uses the Hugo CLI" %}}
 +All the work for setting up a Hugo project and using this guide is done via the Hugo CLI's most basic commands. See the [command line reference page](/commands/) for a more exhaustive account of the CLI's features.
 +{{% /note %}}
 +
 +First, create your new Hugo website using the [`hugo new site` command][basicusage] and change into the newly created directory for the project. In this guide, we are calling our new project `hugo-wercker-example`:
 +
 +{{< code file="hugo-new-site.sh" >}}
 +hugo new site hugo-wercker-example
 +cd hugo-wercker-example
 +{{< /code >}}
 +
 +We will use the [Herring Cove theme][] by first cloning the theme into the `themes` directory.
 +
 +{{< code file="clone-herring-cove-theme.sh" >}}
 +cd themes
 +git clone https://github.com/spf13/herring-cove.git
 +{{< /code >}}
 +
 +Cloning the project from the command line will conflict with our own version control. So, we need to remove the external git configuration that came with the clone of Herring Cove:
 +
 +{{< code file="remove-herring-cove-git.sh" >}}
 +rm -rf herring-cove/.git
 +{{< /code >}}
 +
 +We need content for Hugo to build. Let's add a quick `/about` page:
 +
 +```
 +hugo new about.md
 +```
 +
 +{{% note %}}
 +The preceding example for the about page leverages archetypes to scaffold a new content file with preconfigured front matter. [Find out more about Hugo's archetypes](/content-management/archetypes/).
 +{{% /note %}}
 +
 +Now you can edit `contents/about.md` in your text editor of choice, but this is not necessary for the purposes of this guide. Running the following command will build your Hugo site into the `public` directory.
 +
 +Once the website is build, it's a good idea to run the following command to start a local server and ensure you're changes have been implemented:
 +
 +```
 +hugo server --theme=herring-cove
 +```
 +
 +If everything is fine, you should see something similar to the image below when you go to <http://localhost:1313> in your browser.
 +
 +![][1]
 +
 +## Set up Version Control in Git
 +
 +Adding Git to your project is done by running the `git init` command from the root directory of your project.
 +
 +```
 +git init
 +```
 +
 +Running `git status` at this point will show you the following entries: the `config.toml` file, the `themes` directory, the `contents` directory, and the `public` directory. However, we don't want the `public` directory version controlled because Wercker is responsible for generating the finished website later on. Therefore, we'll add a `.gitignore` file to our project that will exclude the `/public` directory from being tracked by Git:
 +
 +{{< code file="gitignore.sh" >}}
 +echo "/public" >> .gitignore
 +{{< /code >}}
 +
 +Wercker might complain when we try to build the site later on because we currently do not have any static files outside of the `themes` directory. We simply have to add *any* file to the static folder to prevent Wercker from complaining. To keep this guide simple, let's add a `robots.txt`. The following command creates the file in `/static`. The contents of the `robots.txt` lets search engines know they have full access to crawl the published website:
 +
 +{{< code file="addrobotstxt.sh" >}}
 +echo "User-agent: *\nDisallow:" > static/robots.txt
 +{{< /code >}}
 +
 +Now we need to add (i.e., [stage [see Git documentation]][gitbasics]) and commit all of our changes in the repository into Git:
 +
 +```
 +git commit -a -m "Initial commit"
 +```
 +
 +## Add the Project to GitHub
 +
 +Now we need to create a new repository on GitHub. Once you are signed in to GitHub, you can add a new repository by clicking on the **&#43;&#9660;** dropdown at the top right or by going to [https://github.com/new](https://github.com)..
 +
 +We then choose a name for the project (`hugo-wercker-example`). When clicking on create repository GitHub displays the commands for adding an existing project to the site. The commands shown below are the ones used for this site, if you're following along you will need to use the ones shown by GitHub. Once we've run those commands the project is in GitHub and we can move on to setting up the Wercker configuration. Be sure to replace `YourUserName` with your GitHub account/username:
 +
 +{{< code file="setup-gh-repo.sh" >}}
 +git remote add origin git@github.com:YourUsername/hugo-wercker-example.git
 +git push -u origin master
 +{{< /code >}}
 +
 +![][2]
 +
 +## Set Up Wercker
 +
++To sign up for a free Wercker account, go to <https://wercker.com> and click the **Sign Up** button on the top right of the home screen.
 +
 +![][3]
 +
 +### Register for Wercker with Your GitHub Account
 +
 +Sign up for Wercker using your GitHub credentials. If you don't have a GitHub account, or don't want to use it for your account, you have the option to register with a username and password as well. However, the second half of this guide---devoted to hosting your website on GitHub pages---will no longer be of interest to you.
 +
 +![][4]
 +
 +### Connect GitHub or Bitbucket
 +
 +After you are registered, you will need to link your GitHub or Bitbucket account to Wercker. You can link your account by navigating to your profile settings and then selecting "Git connections."
 +
 +![][17]
 +
 +If you registered for Wercker using GitHub, it will most likely look like the following image. To connect a missing service, click the **Connect** button, which may send you to either GitHub or Bitbucket to sign into your respective account.
 +
 +![][5]
 +
 +### Add Your Project
 +
 +Now that we've got all the preliminaries out of the way, it's time to set up our application. For this we click on the **+ Create** button next to Applications and choose GitHub as our provider.
 +
 +![][6]
 +
 +### Select a Repository
 +
 +When selecting GitHub, Wercker will show all your GitHub repositories. You have the option to filter repositories using the search input at the top of the repositories list. Once you have your repository selected, click the **Use selected repo** button.
 +
 +![][7]
 +
 +### Select the Repository Owner
 +
 +In the next step, Wercker asks you to select the repository owner. Select your GitHub account and continue.
 +
 +![][8]
 +
 +### Configure Access
 +
 +{{% note %}}
 +This guide assumes you are using a public GitHub repository and understand that the [published GitHub Pages website will be available to everyone](https://help.github.com/articles/what-is-github-pages/#usage-limits).
 +{{%/note %}}
 +
 +This step can be slightly tricky. Wercker does not have privileges to check out your private projects by default and therefore needs your permission to add a deploy key to your repository. By selecting the first option, you're simply allowing Wercker to check out the code via the same methods available to anyone visiting the project on GitHub.
 +
 +![][9]
 +
 +### Wercker.yml
 +
 +Wercker will now attempt to create an initial `wercker.yml` file for you. More specifically, it will create a code block within the Wercker interface that you can copy to your finished file. Wercker gives us a `debian` box because our project does not have any special requirements.
 +
 +Now we need to create a *wercker.yml* file in the root of our project. This file will contain our Wercker app's configuration. After we finish setting up our app, we will expand the contents of this file to build and deploy our website.
 +
 +![][10]
 +
 +### Public or Private
 +
 +This is a personal choice. You can make an app public so that everyone can see more details about it. Keeping it private or public does not provide any overt benefits for you as the creator of the app. That said, [the app we are currently creating has been made public][publicappurl] to facilitate easier usage of this hosting and deployment guide.
 +
 +![][11]
 +
 +#### App Successfully Created
 +
 +The application is now added and Wercker will offer you the chance to trigger a build. However, we will decline the offer because we haven't yet pushed our `wercker.yml` file to our GitHub repository.
 +
 +![][12]
 +
 +### Add the Hugo-build Step
 +
 +Now we need to add the Wercker steps to our build process. First, we go to the "Registry" action in the top menu. When in the registry, we can search for "hugo build". Select the "Hugo-Build by **arjen**" step.
 +
 +![][13]
 +
 +### Use the Hugo-build Step
 +
 +A summary of very basic usage is available at the top of the details for the Hugo-Build step. Below the basic usage is the contents of the `README.md` file associated with the step's repository. `README.md`'s on Wercker usually contain more details about the advanced options and examples of usage.
 +
 +We're not going to use any of the advanced features of Hugo-Build in this guide. Let's return to our project and add the first section of details we need to our `wercker.yml`.
 +
 +{{% warning "Hugo Version in `wercker.yml`" %}}
 +The docs are a work in progress. As such, the `version` represented in this guide may not represent the version you've been using for local development. Be sure to use the appropriate Hugo version for your build step.
 +{{% /warning %}}
 +
 +{{< code file="wercker-build-step.yml" >}}
 +box: debian
 +build:
 +  steps:
 +    - arjen/hugo-build:
 +        version: "0.17"
 +        theme: herring-cove
 +        flags: --buildDrafts=true
 +{{< /code >}}
 +
 +We can conclude this first step by pushing our `wercker.yml` to our GitHub repository and then seeing the magic at work within Wercker's interface.
 +
 +{{< code file="push-wecker-to-gh.sh" >}}
 +git commit -a -m "Add wercker.yml"
 +git push origin master
 +{{< /code >}}
 +
 +If completed and successful, a green check mark should appear in the commit column of your first build. However, this is only the build step. We still need to deploy the website to our free hosting on GitHub Pages. If you would like more details about the build, you can click the commit hash.
 +
 +![][14]
 +
 +### Add a GitHub Pages Deploy Step to `wercker.yml`
 +
 +In order to deploy to GitHub Pages, we need to add a deploy step to our `wercker.yml`. We are going to add `lukevevier/gh-pages`, the most popular GitHub Pages step in the Wercker Steps repository. Additionally, we need to ensure the box Wercker uses for our deployments has git and ssh installed. We can do this using the `install-packages` command. Here is our *final* `wercker.yml` file:
 +
 +{{< code file="wercker.yml" >}}
 +box: debian
 +build:
 +  steps:
 +    - arjen/hugo-build:
 +        version: "0.17"
 +        theme: herring-cove
 +        flags: --buildDrafts=true
 +deploy:
 +  steps:
 +    - install-packages:
 +        packages: git ssh-client
 +    - lukevivier/gh-pages@0.2.1:
 +        token: $GIT_TOKEN
 +        domain: hugo-wercker.ig.nore.me
 +        basedir: public
 +{{< /code >}}
 +
 +### How does the GitHub Pages Configuration Work?
 +
 +We've provided a some important information in our `wercker.yml`. First, we've added the domain we want to use for our published website. Configuring the domain here will ensure that GitHub Pages is aware of the domain we want to use.
 +
 +Secondly, we've configured the `basedir` to `public`. This is the directory that will be used as the website on GitHub Pages. `public` is also the default publishing directory in Hugo. (For more information, see [hugo's configuration docs][hugoconfig]).
 +
 +Lastly, you'll notice a `$GIT_TOKEN` variable. This is used for pushing our changes to GitHub. We will need to configure this token before Wercker can build our website.
 +
 +### Set the App's Deploy Target
 +
 +We can set our deploy target by going to our app's settings and clicking on **Deploy targets**. Now select **Add deploy target** and then **Custom deploy**.
 +
 +![][15]
 +
 +### Configure the Deploy Step in Wercker
 +
 +The next screen requires you fill in the deploy target name.
 +
 +1. Make sure you enable **auto deploy** from the **master** branch.
 +2. Add a variable for the **GIT_TOKEN**. You'll need to create an access token in GitHub. Follow the directions in [GitHub help][accesstokenghhelp].
 +3. With the deploy step configured in Wercker, we can push the updated wercker.yml file to GitHub and it will create the GitHub pages site for us.
 +
 +The website described in this guide is available at <http://hugo-wercker.ig.nore.me>.
 +
 +![][16]
 +
 +## Conclusion
 +
 +Once this workflow is established, you can update your website automatically by pushing any content changes to your GitHub repository.
 +
 +### Code for the Wercker Deployment Guide
 +
 +[The source code for the site used in this guide is available on GitHub][guidesource], as is the [Wercker Hugo Build step][guidestep].
 +
 +If you want to see an example of how you can deploy to S3 instead of GitHub pages, check [Wercker's documentation][werckerdocs] for guidance on setup.
 +
 +[1]: /images/hosting-and-deployment/deployment-with-wercker/creating-a-basic-hugo-site.png
 +[2]: /images/hosting-and-deployment/deployment-with-wercker/adding-the-project-to-github.png
 +[3]: /images/hosting-and-deployment/deployment-with-wercker/wercker-sign-up.png
 +[4]: /images/hosting-and-deployment/deployment-with-wercker/wercker-sign-up-page.png
 +[5]: /images/hosting-and-deployment/deployment-with-wercker/wercker-git-connections.png
 +[6]: /images/hosting-and-deployment/deployment-with-wercker/wercker-add-app.png
 +[7]: /images/hosting-and-deployment/deployment-with-wercker/wercker-select-repository.png
 +[8]: /images/hosting-and-deployment/deployment-with-wercker/wercker-select-owner.png
 +[9]: /images/hosting-and-deployment/deployment-with-wercker/wercker-access.png
 +[10]: /images/hosting-and-deployment/deployment-with-wercker/werckeryml.png
 +[11]: /images/hosting-and-deployment/deployment-with-wercker/public-or-not.png
 +[12]: /images/hosting-and-deployment/deployment-with-wercker/and-we-ve-got-an-app.png
 +[13]: /images/hosting-and-deployment/deployment-with-wercker/wercker-search.png
 +[14]: /images/hosting-and-deployment/deployment-with-wercker/using-hugo-build.png
 +[15]: /images/hosting-and-deployment/deployment-with-wercker/adding-a-github-pages-step.png
 +[16]: /images/hosting-and-deployment/deployment-with-wercker/configure-the-deploy-step.png
 +[17]: /images/hosting-and-deployment/deployment-with-wercker/wercker-account-settings.png
 +
 +
 +[accesstokenghhelp]: https://help.github.com/articles/creating-an-access-token-for-command-line-use/
 +[basicusage]: /getting-started/usage/
 +[ghsignup]: https://github.com/join
 +[gitbasics]: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics
 +[githubhelp]: https://help.github.com/articles/set-up-git/
 +[guidesource]: https://github.com/ArjenSchwarz/hugo-wercker-example
 +[guidestep]: https://github.com/ArjenSchwarz/wercker-step-hugo-build
 +[Herring Cove theme]: https://github.com/spf13/herring-cove
 +[hugoconfig]: /getting-started/configuration/
 +[publicappurl]: https://app.wercker.com/#applications/5586dcbdaf7de9c51b02b0d5
 +[quickstart]: /getting-started/quick-start/
 +[werckerdocs]: http://devcenter.wercker.com/docs/deploy/s3.html
index 78337c138a781c2eacb88099836c10d3899fbebb,0000000000000000000000000000000000000000..05bac2ff458e8a6db1e42161e226f84137082eb5
mode 100644,000000..100644
--- /dev/null
@@@ -1,94 -1,0 +1,94 @@@
- The first step will be to login to your KeyCDN account and create a new zone. Name this whatever you like and select the [Pull Zone](https://www.keycdn.com/support/create-a-pull-zone/) option. As for the the origin URL, your site will be running on [GitLab Pages](https://docs.gitlab.com/ee/user/project/pages/getting_started_part_one.html) with a URL of `https://youruser.gitlab.io/reponame/`. Use this as the Origin URL. 
 +---
 +title: "Hosting on KeyCDN"
 +date: 2017-09-12
 +description: "Accelerate your Hugo site globally with a KeyCDN integration. This tutorial shows you how to setup your static site as a GitLab page behind a KeyCDN pull zone."
 +categories: [hosting and deployment]
 +keywords: [keycdn,hosting,deployment,cdn]
 +menu:
 +  docs:
 +    parent: "hosting-and-deployment"
 +    weight: 40
 +slug: ""
 +aliases: []
 +toc: false
 +draft: false
 +---
 +
 +[KeyCDN](https://www.keycdn.com/) provides a multitude of features to help accelerate and secure your Hugo site globally including Brotli compression, Let's Encrypt support, Origin Shield, and more.
 +
 +## Assumptions
 +
 +- You already have a Hugo page configured
 +- You have a GitLab account
 +- You have a KeyCDN account
 +
 +## Create a KeyCDN Pull Zone
 +
++The first step will be to login to your KeyCDN account and create a new zone. Name this whatever you like and select the [Pull Zone](https://www.keycdn.com/support/create-a-pull-zone/) option. As for the origin URL, your site will be running on [GitLab Pages](https://docs.gitlab.com/ee/user/project/pages/getting_started_part_one.html) with a URL of `https://youruser.gitlab.io/reponame/`. Use this as the Origin URL. 
 +
 +![Screenshot of KeyCDN's pull zone creation page](/images/hosting-and-deployment/hosting-on-keycdn/keycdn-pull-zone.png) 
 +
 +While the origin location doesn’t exist yet, you will need to use your new Zone URL address (or [Zonealias](https://www.keycdn.com/support/create-a-zonealias/)) in the `.gitlab-ci.yml` file that will be uploaded to your GitLab project. 
 +
 +Ensure that you use your Zone URL or Zonealias as the `BASEURL` variable in the example below. This will be the user-visible website address.
 +
 +## Configure Your .gitlab-ci.yml File
 +
 +Your `.gitlab-ci.yml` file should look similar to the example below. Be sure to modify any variables that are specific to your setup.
 +
 +```
 +image: alpine:latest
 +
 +variables:
 +    BASEURL: "https://cipull-7bb7.kxcdn.com/"
 +    HUGO_VERSION: "0.26"
 +    HUGO_CHECKSUM: "67e4ba5ec2a02c8164b6846e30a17cc765b0165a5b183d5e480149baf54e1a50"
 +    KEYCDN_ZONE_ID: "75544"
 +
 +before_script:
 +    - apk update
 +    - apk add curl
 +
 +pages:
 +    stage: deploy
 +    script:
 +    - apk add git
 +    - git submodule update --init
 +    - curl -sSL https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz -o /tmp/hugo.tar.gz
 +    - echo "${HUGO_CHECKSUM}  /tmp/hugo.tar.gz" | sha256sum -c
 +    - tar xf /tmp/hugo.tar.gz hugo -C /tmp/ && cp /tmp/hugo /usr/bin
 +    - hugo --baseURL ${BASEURL}
 +    - curl "https://api.keycdn.com/zones/purge/${KEYCDN_ZONE_ID}.json" -u "${KEYCDN_API_KEY}:"
 +    artifacts:
 +    paths:
 +    - public
 +    only:
 +    - master
 +
 +```
 +Using this integration method,  you will have to specify the Zone ID and your [KeyCDN API](https://www.keycdn.com/api) key as secret variables. To do this, navigate to the top-left menu bar in GitLab and select Projects. Then, select your project and click on the Settings page. Finally, select Pipelines from the sub-menu and scroll down to the Secret Variable section. 
 +
 +The Secret Variable for your Zone ID should look similar to:
 +
 +![Screenshot of setting the Zone ID secret variable](/images/hosting-and-deployment/hosting-on-keycdn/secret-zone-id.png)
 +
 +While the Secret Variable for your API Key will look similar to:
 +
 +![Screenshot of setting the API Key secret variable](/images/hosting-and-deployment/hosting-on-keycdn/secret-api-key.png)
 +
 +The Zone ID and API key are used to purge your zone – it’s not strictly needed but otherwise, the CDN might deliver older versions of your assets for quite a while.
 +
 +## Push Your Changes to GitLab
 +
 +Now it’s time to push the newly created repository to GitLab:
 +
 +```
 +git remote add origin git@gitlab.com:youruser/ciexample.git
 +git push -u origin master
 +```
 +
 +You can watch the progress and CI job output in your Gitlab project under “Pipelines”. 
 +
 +After verifying your CI job ran without issues, first check that your GitLab page shows up under `https://youruser.gitlab.io/reponame/` (it might look broken depending on your browser settings as all links point to your KeyCDN zone – don’t worry about that) and then by heading to whatever Zonealias / Zone URL you defined.
 +
 +To learn more about Hugo hosting options with KeyCDN, check out the complete [Hugo hosting with KeyCDN integration guide](https://www.keycdn.com/support/hugo-hosting/).
index 366862e4d937f7da6972952f0493919501507fc5,0000000000000000000000000000000000000000..e33f8e546ae89190287582be26e29efc52933bdc
mode 100644,000000..100644
--- /dev/null
@@@ -1,250 -1,0 +1,250 @@@
- * Do not write to to cache when `ignoreCache` is set  {{<gh 2067>}}
 +---
 +date: 2016-06-06T13:54:06-04:00
 +description: "Hugo 0.16 is our best and biggest release ever. The Hugo community has outdone itself with continued performance improvements, beautiful themes and increased stability."
 +title: "Hugo 0.16"
 +categories: ["Releases"]
 +---
 +
 +Hugo 0.16 is our best and biggest release ever. The Hugo community has
 +outdone itself with continued performance improvements,
 +[beautiful themes](http://themes.gohugo.io) for all types of sites from project
 +sites to documentation to blogs to portfolios, and increased stability.
 +
 +This release represents **over 550 contributions by over 110 contributors** to
 +the main Hugo code base. Since last release Hugo has **gained 3500 stars, 90
 +contributors and 23 additional themes.**
 +
 +This release celebrates 3 years since  {{< gh "@spf13" >}} wrote the first lines
 +of Hugo. During those 3 years Hugo has accomplished some major milestones
 +including...
 +
 +* 10,000+ stars on GitHub
 +* 320+ contributors
 +* 90+ themes
 +* 1000s of happy websites
 +* Many subprojects like {{< gh "@spf13/cobra">}}, {{< gh "@spf13/viper">}} and
 +  {{< gh "@spf13/afero">}} which have experienced broad usage across the Go
 +  ecosystem.
 +
 +{{< gh "@bep" >}} led the development of Hugo for the 3rd consecutive release
 +with nearly half of the contributions to 0.16 in addition to his considerable
 +contributions as lead maintainer. {{< gh "@anthonyfok" >}}, {{< gh
 +"@DigitalCraftsman" >}}, {{< gh "@MooreReason" >}} all made significant
 +contributions. A special thanks to {{< gh "@abourget" >}} for his considerable
 +work on multilingual support. Due to its broad impact we wanted to spend more
 +time testing it and it will be included in Hugo's next release.
 +
 +### Highlights
 +
 +**Partial Builds:** Prior to this release Hugo would always reread and rebuild
 +the entire site. This release introduces support for reactive site building
 +while watching (`hugo server`). Hugo will watch the filesystem for changes and
 +only re-read the changed files. Depending on the files change Hugo will
 +intelligently re-render only the needed portion of the site. Performance gains
 +depend on the operation performed and size of the site. In our testing build
 +times decreased anywhere from 10% to 99%.
 +
 +**Template Improvements:** Template improvements continue to be a mainstay of each Hugo release. Hugo 0.16 adds support for the new `block` keyword introduced in Go 1.6 -- think base templates with default sections -- as well as many new template functions.
 +
 +**Polish:** As Hugo matures releases will inevitably contain fewer huge new features. This release represents hundreds of small improvements across ever facet of Hugo which will make for a much better experience for all of our users. Worth mentioning here is the curious bug where live reloading didn't work in some editors on OS X, including the popular TextMate 2. This is now fixed. Oh, and now any error will exit with an error code, a big thing for automated deployments.
 +
 +### New Features
 +* Support reading configuration variables from the OS environment {{<gh 2090 >}}
 +* Add emoji support {{<gh 1892>}}
 +* Add `themesDir` option to configuration {{<gh 1556>}}
 +* Add support for Go 1.6 `block` keyword in templates {{<gh 1832>}}
 +* Partial static sync {{<gh 1644>}}
 +* Source file based relative linking (à la GitHub) {{<gh 0x0f6b334b6715253b030c4e783b88e911b6e53e56>}}
 +* Add `ByLastmod` sort function to pages. {{<gh 0xeb627ca16de6fb5e8646279edd295a8bf0f72bf1 >}}
 +* New templates functions:
 +    * `readFile` {{<gh 1551 >}}
 +    * `countwords` and `countrunes` {{<gh 1440>}}
 +    * `default` {{<gh 1943>}}
 +    * `hasPrefix` {{<gh 1243>}}
 +    * `humanize` {{<gh 1818>}}
 +    * `jsonify` {{<gh 0x435e996c4fd48e9009ffa9f83a19fb55f0777dbd>}}
 +    * `md5` and `sha1` {{<gh 1932>}}
 +    * `replaceRE` {{<gh 1845>}}
 +    * `findRE` {{<gh 2048>}}
 +    * `shuffle` {{<gh 1942>}}
 +    * `slice` {{<gh 1902>}}
 +    * `plainify` {{<gh 1915>}}
 +
 +### Enhancements
 +
 +* Hugo now exits with error code on any error. This is a big thing for
 +  automated deployments. {{<gh 740 >}}
 +* Print error when `/index.html` is zero-length {{<gh 947>}}
 +* Enable dirname and filename bash autocompletion for more flags {{<gh
 +  0x666ddd237791b56fd048992dca9a27d1af50a10e>}}
 +* Improve error handling in commands {{<gh 1502>}}
 +* Add sanity checks for `hugo import jekyll` {{<gh 1625 >}}
 +* Add description to `Page.Params` {{<gh 1484>}}
 +* Add async version of Google Analytics internal template {{<gh 1711>}}
 +* Add autostart option to YouTube shortcode {{<gh 1784>}}
 +* Set Date and Lastmod for main home page {{<gh 1903>}}
 +* Allow URL with extension in front matter {{<gh 1923>}}
 +* Add list support in Scratch {{<gh
 +  0xeaba04e82bdfc5d4c29e970f11b4aab9cc0efeaa>}}
 +* Add file option to gist shortcode {{<gh 1955>}}
 +* Add config layout and content directory CLI options {{<gh 1698>}}
 +* Add boolean value comparison to `where` template function {{<gh
 +  0xf3c74c9db484c8961e70cb3458f9e41e7832fa12>}}
++* Do not write to cache when `ignoreCache` is set  {{<gh 2067>}}
 +* Add option to disable rendering of 404 page  {{<gh 2037>}}
 +* Mercurial is no longer needed to build Hugo {{<gh 2062 >}}
 +* Do not create `robots.txt` by default {{<gh 2049>}}
 +* Disable syntax guessing for PygmentsCodeFences by default.  To enable syntax
 +  guessing again, add the following to your config file:
 +  `PygmentsCodeFencesGuessSyntax = true` {{<gh 2034>}}
 +* Make `ByCount` sort consistently {{<gh 1930>}}
 +* Add `Scratch` to shortcode {{<gh 2000>}}
 +* Add support for symbolic links for content, layout, static, theme  {{<gh 1855
 +  >}}
 +* Add '+' as one of the valid characters in URLs specified in the front matter
 +  {{<gh 1290 >}}
 +* Make alias redirect output URLs relative when `RelativeURLs = true` {{<gh
 +  2093 >}}
 +* Hugo injects meta generator tag on homepage if missing {{<gh
 +  2182 >}}
 +
 +### Fixes
 +* Fix file change watcher for TextMate 2 and friends on OS X {{<gh 1053 >}}
 +* Make dynamic reloading of config file reliable on all platform {{<gh 1684 >}}
 +* Hugo now works on Linux/arm64 {{<gh 1772 >}}
 +* `plainIDAnchors` now defaults to `true`  {{<gh 2057>}}
 +* Win32 and ARM builds fixed {{<gh 1716>}}
 +* Copy static dir files without theme's static dir {{<gh 1656>}}
 +* Make `noTimes` command flag work {{<gh 1657>}}
 +* Change most global CLI flags into local ones {{<gh 1624>}}
 +* Remove transformation of menu URLs {{<gh 1239>}}
 +* Do not fail on unknown Jekyll file {{<gh 1705>}}
 +* Use absolute path when editing with editor {{<gh 1589>}}
 +* Fix hugo server "Watching for changes" path display {{<gh 1721>}}
 +* Do not strip special characters out of URLs {{<gh 1292>}}
 +* Fix `RSSLink` when uglyURLs are enabled {{<gh 175>}}
 +* Get BaseURL from viper in server mode {{<gh 1821>}}
 +* Fix shortcode handling in RST {{<gh 1904>}}
 +* Use default sitemap configuration for homepage {{<gh 1304>}}
 +* Exit if specific port is unavailable in server mode {{<gh 1901>}}
 +* Fix regression in "section menus for lazy blogger" {{<gh 2065>}}
 +
 +****
 +
 +## **0.15.0**  November 25, 2015
 +
 +The v0.15.0 Hugo release brings a lot of polish to Hugo. Exactly 6 months after
 +the 0.14 release, Hugo has seen massive growth and changes. Most notably, this
 +is Hugo's first release under the Apache 2.0 license. With this license change
 +we hope to expand the great community around Hugo and make it easier for our
 +many users to contribute.  This release represents over **377 contributions by
 +87 contributors** to the main Hugo repo and hundreds of improvements to the
 +libraries Hugo uses. Hugo also launched a [new theme
 +showcase](http://themes.gohugo.io) and participated in
 +[Hacktoberfest](https://hacktoberfest.digitalocean.com).
 +
 +Hugo now has:
 +
 +* 6700 (+2700) stars on GitHub
 +* 235 (+75) contributors
 +* 65 (+30) themes
 +
 +
 +**Template Improvements:** This release takes Hugo to a new level of speed and
 +usability. Considerable work has been done adding features and performance to
 +the template system which now has full support of Ace, Amber and Go Templates.
 +
 +**Hugo Import:** Have a Jekyll site, but dreaming of porting it to Hugo? This
 +release introduces a new `hugo import jekyll`command that makes this easier
 +than ever.
 +
 +**Performance Improvements:** Just when you thought Hugo couldn't get any faster,
 +Hugo continues to improve in speed while adding features. Notably Hugo 0.15
 +introduces the ability to render and serve directly from memory resulting in
 +30%+ lower render times.
 +
 +Huge thanks to all who participated in this release. A special thanks to
 +{{< gh "@bep" >}} who led the development of Hugo this release again,
 +{{< gh "@anthonyfok" >}},
 +{{< gh "@eparis" >}},
 +{{< gh "@tatsushid" >}} and
 +{{< gh "@DigitalCraftsman" >}}.
 +
 +
 +### New features
 +* new `hugo import jekyll` command. {{< gh 1469 >}}
 +* The new `Param` convenience method on `Page` and `Node` can be used to get the most specific parameter value for a given key. {{< gh 1462 >}}
 +* Several new information elements have been added to `Page` and `Node`:
 +    * `RuneCount`: The number of [runes](http://blog.golang.org/strings) in the content, excluding any whitespace. This may be a good alternative to `.WordCount`  for Japanese and other CJK languages where a word-split by spaces makes no sense.  {{< gh 1266 >}}
 +    * `RawContent`: Raw Markdown as a string. One use case may be of embedding remarkjs.com slides.
 +    * `IsHome`: tells the truth about whether you're on the home page or not.
 +
 +### Improvements
 +* `hugo server` now builds ~30%+ faster by rendering to memory instead of disk. To get the old behavior, start the server with `--renderToDisk=true`.
 +* Hugo now supports dynamic reloading of the config file when watching.
 +* We now use a custom-built `LazyFileReader` for reading file contents, which means we don't read media files in `/content` into memory anymore -- and file reading is now performed in parallel on multicore PCs. {{< gh 1181 >}}
 +* Hugo is now built with `Go 1.5` which, among many other improvements, have fixed the last known data race in Hugo. {{< gh 917 >}}
 +* Paginator now also supports page groups. {{< gh 1274 >}}
 +* Markdown improvements:
 +    * Hugo now supports GitHub-flavoured markdown code fences for highlighting for `md`-files (Blackfriday rendered markdown) and `mmark` files (MMark rendered markdown). {{< gh 362 1258 >}}
 +    * Several new Blackfriday options are added:
 +        * Option to disable Blackfriday's `Smartypants`.
 +        * Option for Blackfriday to open links in a new window/tab. {{< gh 1220 >}}
 +        * Option to disable Blackfriday's LaTeX style dashes {{< gh 1231 >}}
 +        * Definition lists extension support.
 +* `Scratch` now has built-in `map` support.
 +* We now fall back to `link title` for the default page sort. {{< gh 1299 >}}
 +* Some notable new configuration options:
 +    *  `IgnoreFiles` can be set with a list of Regular Expressions that matches files to be ignored during build. {{< gh 1189 >}}
 +    * `PreserveTaxonomyNames`, when set to `true`, will preserve what you type as the taxonomy name both in the folders created and the taxonomy `key`, but it will be normalized for the URL.  {{< gh 1180 >}}
 +* `hugo gen` can now generate man files, bash auto complete and markdown documentation
 +* Hugo will now make suggestions when a command is mistyped
 +* Shortcodes now have a boolean `.IsNamedParams` property. {{< gh 1597 >}}
 +
 +### New Template Features
 +* All template engines:
 +    * The new `dict` function that could be used to pass maps into a template. {{< gh 1463 >}}
 +    * The new `pluralize` and `singularize` template funcs.
 +    * The new `base64Decode` and `base64Encode` template funcs.
 +    * The `sort` template func now accepts field/key chaining arguments and pointer values. {{< gh 1330 >}}
 +    * Several fixes for `slicestr` and `substr`, most importantly, they now have full `utf-8`-support. {{< gh 1190 1333 1347 >}}
 +    * The new `last` template function allows the user to select the last `N` items of a slice. {{< gh 1148 >}}
 +    * The new `after` func allows the user to select the items after the `Nth` item. {{< gh 1200 >}}
 +    * Add `time.Time` type support to the `where`, `ge`, `gt`, `le`, and `lt` template functions.
 +    * It is now possible to use constructs like `where Values ".Param.key" nil` to filter pages that doesn't have a particular parameter. {{< gh 1232 >}}
 +    * `getJSON`/`getCSV`: Add retry on invalid content. {{< gh 1166 >}}
 +    *   The new `readDir` func lists local files. {{< gh 1204 >}}
 +    * The new `safeJS` function allows the embedding of content into JavaScript contexts in Go templates.
 +    * Get the main site RSS link from any page by accessing the `.Site.RSSLink` property. {{< gh 1566 >}}
 +* Ace templates:
 +    * Base templates now also works in themes. {{< gh 1215 >}}.
 +    * And now also on Windows. {{< gh 1178 >}}
 +* Full support for Amber templates including all template functions.
 +* A built-in template for Google Analytics. {{< gh 1505 >}}
 +* Hugo is now shipped with new built-in shortcodes: {{< gh 1576 >}}
 +  * `youtube` for YouTube videos
 +  * `vimeo` for Vimeo videos
 +  * `gist` for GitHub gists
 +  * `tweet` for Twitter Tweets
 +  * `speakerdeck` for Speakerdeck slides
 +
 +
 +### Bugfixes
 +* Fix data races in page sorting and page reversal. These operations are now also cached. {{< gh 1293 >}}
 +* `page.HasMenuCurrent()` and `node.HasMenuCurrent()` now work correctly in multi-level nested menus.
 +* Support `Fish and Chips` style section titles. Previously, this would end up as  `Fish And Chips`. Now, the first character is made toupper, but the rest are preserved as-is. {{< gh 1176 >}}
 +* Hugo now removes superfluous p-tags around shortcodes. {{< gh 1148 >}}
 +
 +### Notices
 +* `hugo server` will watch by default now.
 +* Some fields and methods were deprecated in `0.14`. These are now removed, so the error message isn't as friendly if you still use the old values. So please change:
 +    *   `getJson` to `getJSON`, `getCsv` to `getCSV`, `safeHtml` to
 +  `safeHTML`, `safeCss` to `safeCSS`, `safeUrl` to `safeURL`, `Url` to `URL`,
 +  `UrlPath` to `URLPath`, `BaseUrl` to `BaseURL`, `Recent` to `Pages`.
 +
 +### Known Issues
 +
 +Using the Hugo v0.15 32-bit Windows or ARM binary, running `hugo server` would crash or hang due to a [memory alignment issue](https://golang.org/pkg/sync/atomic/#pkg-note-BUG) in [Afero](https://github.com/spf13/afero).  The bug was discovered shortly after the v0.15.0 release and has since been [fixed](https://github.com/spf13/afero/pull/23) by {{< gh "@tpng" >}}.  If you encounter this bug, you may either compile Hugo v0.16-DEV from source, or use the following solution/workaround:
 +
 +* **64-bit Windows users: Please use [hugo_0.15_windows_amd64.zip](https://github.com/gohugoio/hugo/releases/download/v0.15/hugo_0.15_windows_amd64.zip)** (amd64 == x86-64).  It is only the 32-bit hugo_0.15_windows_386.zip that crashes/hangs (see {{< gh 1621 >}} and {{< gh 1628 >}}).
 +* **32-bit Windows and ARM users: Please run `hugo server --renderToDisk` as a workaround** until Hugo v0.16 is released (see [“hugo server” returns runtime error on armhf](https://discourse.gohugo.io/t/hugo-server-returns-runtime-error-on-armhf/2293) and {{< gh 1716 >}}).
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..12dec42fcdb061b5f71b1270914a41fdce771f28
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4e6323287b3830651814b78c27352d34895faaab
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,50 @@@
++
++---
++date: 2018-02-05
++title: "Hugo 0.36: Smart Image Cropping!"
++description: "Hugo 0.36 announces smart image cropping and some important bug fixes."
++categories: ["Releases"]
++---
++
++Hugo `0.36` announces **smart cropping** of images, using the [library](https://github.com/muesli/smartcrop) created by [muesli](https://github.com/muesli). We will work with him to improve this even more in the future, but this is now the default used when cropping images in Hugo.
++
++Go [here](http://hugotest.bep.is/resourcemeta/smartcrop/) for a list of examples.
++
++This release represents **7 contributions by 3 contributors** to the main Hugo code base.
++
++Many have also been busy writing and fixing the documentation in [hugoDocs](https://github.com/gohugoio/hugoDocs), 
++which has received **9 contributions by 4 contributors**. A special thanks to [@bep](https://github.com/bep), [@Jibec](https://github.com/Jibec), [@Nick-Rivera](https://github.com/Nick-Rivera), and [@kaushalmodi](https://github.com/kaushalmodi) for their work on the documentation site.
++
++
++Hugo now has:
++
++* 23100+ [stars](https://github.com/gohugoio/hugo/stargazers)
++* 448+ [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
++* 197+ [themes](http://themes.gohugo.io/)
++
++## Notes
++Hugo now defaults to **smart crop** when cropping images, if you don't specify it when calling `.Fill`.
++
++You can get the old default by adding this to your `config.toml`:
++
++```toml
++[imaging]
++anchor = "center"
++```
++Also, we have removed the superflous anchor name from the processed filenames that does not use this anchor, so it can be wise to run `hugo --gc` once to remove unused images.
++
++## Enhancements
++* Add smart cropping [722086b4](https://github.com/gohugoio/hugo/commit/722086b4ed3e77d1aba6724474bec06d08e7de06) [@bep](https://github.com/bep) [#4375](https://github.com/gohugoio/hugo/issues/4375)
++
++## Fixes
++* Ensure site templates can override theme templates [084cf419](https://github.com/gohugoio/hugo/commit/084cf4191b3c1e7590a4223fd9251019ef5d4c21) [@moorereason](https://github.com/moorereason) [#3505](https://github.com/gohugoio/hugo/issues/3505)
++* Add additional test to `TestTemplateLookupOrder` [fc06d5c1](https://github.com/gohugoio/hugo/commit/fc06d5c18bb1e47f90f0297aa8121ee0775e047d) [@moorereason](https://github.com/moorereason) [#3505](https://github.com/gohugoio/hugo/issues/3505)
++* Fix broken `TestTemplateLookupOrder` [9a367d9d](https://github.com/gohugoio/hugo/commit/9a367d9d06db6f6cf22121d0397c464ae36e7089) [@moorereason](https://github.com/moorereason) 
++* Fix JSON array-based data file handling regression [4402c077](https://github.com/gohugoio/hugo/commit/4402c077754991df19c3bbab0c4a671dcfdc192c) [@vassudanagunta](https://github.com/vassudanagunta) [#4361](https://github.com/gohugoio/hugo/issues/4361)
++* Increase data directory test coverage [4743de0d](https://github.com/gohugoio/hugo/commit/4743de0d3c7564fc06972074e903d5502d204353) [@vassudanagunta](https://github.com/vassudanagunta) [#4138](https://github.com/gohugoio/hugo/issues/4138)
++
++
++
++
++
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8bfdad49d73fa2116c616d336676a322b6b06495
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,6 @@@
++
++Hartwell Insurance is an insurance company set up solely to service the Broker community.
++
++By combining **Hugo**, **Service Worker** and **Netlify**, we were able to achieve incredible global site performance.
++
++The site was built by [Tomango](http://www.tomango.co.uk)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ced251f98188a633f158eb06065244fc43d5457d
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..eb669b5a3ba498b882bbdc0625d9768f1f7d8bf5
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..672a8c1c893b8d3d65394c5fc3322515dbaf6d47
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8dc035f3e9e046969ebdbe6f47d27e37c0392e09
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b291a640f89a94b58cd10b6a50f9d52add770db1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,69 @@@
++---
++
++title: Hartwell Insurance
++
++date: 2018-02-09
++
++description: "Showcase: \"Hugo + Netlify + PWA makes for a rapid website.\""
++
++siteURL: https://www.hartwell-insurance.com/
++
++byline: "[Trys Mudford](http://www.trysmudford.com), Lead Developer, Tomango"
++
++---
++
++We’ve just launched a shiny new website for [Hartwell Insurance](https://www.hartwell-insurance.com/) – I’m really proud of it. It was tackled it in a different way to most previous Tomango site builds, using some fancy new tools and some vintage web standards.
++
++It’s multi-page, single-page (!) website written in Hugo, a static site generator built with performance as a first-class feature. _I’ve outlined a load of benefits to Hugo & static sites [here](https://why-static.netlify.com/), in case you’re interested._
++
++> **In essence, a static site generator pre-renders the whole site into HTML files and serves them like it’s 1995.**
++
++There’s no Apache or Node backend that does compilation at runtime, it’s all done at the build step. This means the server; Netlify in this case, only has to do one thing – serve files. Unsurprisingly, serving simple files is VERY quick.
++
++The starter point was the [victor-hugo](https://github.com/netlify/victor-hugo) repository that Netlify have created. It let me dive in with Hugo, PostCSS, BrowserSync and ES6 without setting up any tooling myself – always a win!
++
++I then took all the content from the design file and moved it into Markdown, putting shortcodes in where necessary. This site did need a number of custom shortcodes for the presentational elements like the expanding circles and full width backgrounds. But mostly it was just clean, semantic HTML with some CSS and JS enhancement thrown in.
++
++For example, this two column layout shown below. I used CSS Columns with a  `break-after: always;` on the `<h1>`. No multi-wrapper or difficult-to-clear shortcodes, just clean HTML.
++
++![The multi-column setup on Hartwell Insurance](hartwell-columns.png)
++
++For the ripple effects on the section headings, I used JS to prepend a `<canvas>` element then animated it with `RequestAnimationFrame`. It adds a nice bit of movement on the page.
++
++On the [Hartwell Profitmaker](https://www.hartwell-insurance.com/profitmaker/) section, I toyed with the idea of using Vue.js for the calculator, but after giving it some thought, I decided to code in Vanilla. The result, all of the site JS comes in at 3.2KB!
++
++The plan was to host with Netlify and therefore get access to Netlify Forms. It meant spending 0 minutes on getting a backend set up – I could focus fully on the frontend.
++
++Cache invalidation isn’t normally something I spend all that much time thinking about when building a site. But as this site was going to be a Progressive Web App, invalidating files would be important to ensure the site didn’t appear broken when we made changes. As I was using Victor-Hugo, I wasn’t really sure how to best tackle this and sadly spent far too many hours wrangling with Webpack and Gulp files to try and get hashed file names working nicely.
++
++Then; while I was waiting for a haircut, I read a [Netlify blog post](https://www.netlify.com/blog/2017/02/23/better-living-through-caching/) on how they do cache invalidation with HTTP2 and it promptly blew my mind.
++
++When you request an asset, they send an ETag in the headers which is a hash of the file. There’s also a header to tell the browser not to trust it’s own cache (which sounds a little bit bonkers).
++
++So when you request the page, it opens a persistent HTTP2 connection up (so no new connections for file requests). When it gets to requesting that asset, the browser sends the ETag back to Netlify and they either return nothing if the ETag matches, or the new file with the new ETag. No `app.klfjlkdsfjdslkfjdslkfdsj.js` or `app.js?v=20180112`. Just a clean `app.js` with instant cache invalidation. Amazing.
++
++Finally, the [Service Worker](https://www.hartwell-insurance.com/sw.js) could be added. This turned out to be straightforward as the Netlify cache invalidation system solved most of the pain points. I went for a network-first, cache-fallback setup for both assets and HTML. This does mean flaky speeds are reliant on the page connection time, but given we’re on HTTP2, I’m hoping the persistent connection and tiny ETag size will keep it quick. For online connections, every request is up to date and instantly live after any update. Offline connections fall back to every assets’ last cached state. It seems to work really nicely, and there’s no need for an update prompt if assets have changed.
++
++---
++
++## The results
++
++The WebPageTest results are looking good. The speed index is 456, 10x smaller than the average Alexa top 300,000 score.
++
++![WebPageTest results](hartwell-webpagetest.png)
++
++[TestMySite.io](https://testmysite.io/5a7e1bb2df99531a23c9ad2f/hartwell-insurance.com) is return ~2ms time to first byte from the CDN edge nodes. Lighthouse audits are also very promising. There’s still some improvement to be gained lazy-loading the images and inlining the CSS. I’m less excited about the [second suggestion](http://www.trysmudford.com/css-in-2017/), but I’ll certainly look at some lazy-loading, especially as I’m already using `IntersectionObserver` for some animations.
++
++![Lighthouse results](hartwell-lighthouse.png)
++
++The most encouraging result is how quick the site is around the world. Most Tomango clients (and their customers) are pretty local and almost exclusively UK-based. We have a dedicated server in Surrey that serves our market pretty well. It did take me by surprise just how much slower a connection from the USA, Australia and Japan to our server was. They’re waiting ~500ms just for the first byte, let alone downloading each asset.
++
++[Hartwell Insurance](https://www.hartwell-insurance.com/) are a US company so by putting them on our server, we’d be instantly hampering their local response times by literally seconds. This was one of the main reasons for going with Netlify. They provide global CDN hosting that’s quick from anywhere in the world.
++
++---
++
++This project was such a blast to develop, it’s a real pleasure to put new technologies to good use in production, and to see real performance and usability benefits from them. Even using classic web methods of serving folders with files is fun when you’ve been databasing for a while – there’s something really ‘pure’ about it.
++
++---
++
++_This was originally posted on [my website](http://www.trysmudford.com/perfomance-wins-with-hugo-and-netlify/)_
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7c7cc9c1c8d3442817b17a3575bbfd6ac498646f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++
++Pace was started in 2016 to give hotels the super-power to always have the right price.
++
++We've been using **Hugo+Gulp** from the very beginning and the workflow is proving to scale incredibly well with us as we grow the team and business.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fa0948e5f887bce232410e309f3a4d529d5f64e0
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cb520acb27b1188cf43492b0e08a0af9d85164e2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,28 @@@
++---
++
++title: Pace Revenue Management
++
++date: 2018-02-08
++
++description: "Showcase: \"When we came across Hugo we were blown away.\""
++
++siteURL: https://www.paceup.com/
++
++# Link to the site's Hugo source code if public and you can/want to share.
++# Remove or leave blank if not needed/wanted.
++
++# Add credit to the article author. Leave blank or remove if not needed/wanted.
++
++---
++
++From the beginning, at Pace, we were focused on solving customer needs and didn't want to over-engineer our marketing or sales. At the same time we didn't want to lock ourselves into a Wordpress, Squarespace or the like.
++
++The ideal was a fast, simple, static site builder. When we came across Hugo we were blown away. Being a European company we wanted to be multi-lingual from the get-go and allow multiple team-members to collaborate and own their content. We also felt that a tech-company in 2018 should be capable of hosting its own blog in a simple way.
++
++Here was Hugo, that allowed us to completely separate content from layout. Our sales-team edit a markdown-file, the engineers commit and off we go -- immediately deployable or pre-viewable.
++
++The only other way to have all that Hugo offers is to go down the full rabbit-hole of building your own server-side React or some such. Possibly Jekyll but again very complex to work with. The alternatives come with too much work for what should be quite simple.
++
++**Hugo + Gulp + Netlify for the win! Don't over engineer your web presence!**
++
++Huge thanks to [@bep](https://github.com/bep) and [community](https://discourse.gohugo.io/) for Hugo.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..597163340028fdc294b9686135f130727f8e12ee
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,8 @@@
++
++Add some **general info** about the site here.
++
++The site is built by:
++
++* [Person 1](https://example.com)
++* [Person 1](https://example.com)
++
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4f390132eb13d9640019d30f13aa1cb882e5c5eb
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4210269c85a92ce0e5a61690e3b3b6a0366fbeeb
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,49 @@@
++---
++
++# A suitable title for this article.
++title: Hugo Showcase Template
++
++# Set this to the current date.
++date: 2018-02-07
++
++description: "A short description of this page."
++
++# The URL to the site on the internet.
++siteURL: https://gohugo.io/
++
++# Link to the site's Hugo source code if public and you can/want to share.
++# Remove or leave blank if not needed/wanted.
++siteSource: https://github.com/gohugoio/hugoDocs
++
++# Add credit to the article author. Leave blank or remove if not needed/wanted.
++byline: "[bep](https://github.com/bep), Hugo Lead"
++
++---
++
++Have a **notable Hugo site[^1]**? We would love to feature it in this **Showcase Section**
++
++We would really appreciate if you could:
++
++1. Fork https://github.com/gohugoio/hugoDocs
++1. Create a copy of the [content/showcase/template](https://github.com/gohugoio/hugoDocs/tree/master/content/showcase/template) directory with a suitable name. If you now run `hugo server`, your site should show up in [http://localhost:1313/showcase/](http://localhost:1313/showcase/) and on the front page.
++2. Adjust the [files](#files) and write a story about your site
++3. Create a new pull request in https://github.com/gohugoio/hugoDocs/pulls
++
++**Note:** The Showcase section uses the latest bells and whistles from Hugo, [resources](/content-management/page-resources/) with [image processing](/content-management/image-processing/), so you need a reasonable up-to-date [Hugo version](https://github.com/gohugoio/hugo/releases).
++
++## Files
++
++The content of the [content/showcase/template](https://github.com/gohugoio/hugoDocs/tree/master/content/showcase/template) directory explained:
++
++index.md
++: The main content file. Fill in required front matter metadata and write your story. I does not have to be a novel. It can even be self-promotional, but it should include Hugo in some form.
++
++bio.md
++: A short summary of the website. Site credits (who built it) fits nicely here.
++
++featured-template.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).
++
++
++
++[^1]: We want this to show Hugo in its best light, so this is not for the average Hugo blog. In most cases the answer to "Is my site [notabable](http://www.dictionary.com/browse/notable)?" will be obvious, but if in doubt, create an [issue](https://github.com/gohugoio/hugoDocs/issues) with a link and some words, and we can discuss it. But if you have a site with an interesting Hugo story or a company site where the company itself is notable, you are most welcome.
index 7609339f0f170237199de8963b2ea118ff23450d,0000000000000000000000000000000000000000..85de5fe0945d6280298d0f8eb95a6ccd148a40b1
mode 100644,000000..100644
--- /dev/null
@@@ -1,599 -1,0 +1,599 @@@
- Using this same `layouts/_default/list.html` template and applying it to the the `quotes` section above will render the following output. Note that `quotes` does not have an `_index.md` file to pull from:
 +---
 +title: Lists of Content in Hugo
 +linktitle: List Page Templates
 +description: Lists have a specific meaning and usage in Hugo when it comes to rendering your site homepage, section page, taxonomy list, or taxonomy terms list.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [templates]
 +keywords: [lists,sections,rss,taxonomies,terms]
 +menu:
 +  docs:
 +    parent: "templates"
 +    weight: 22
 +weight: 22
 +sections_weight: 22
 +draft: false
 +aliases: [/templates/list/,/layout/indexes/]
 +toc: true
 +---
 +
 +## What is a List Page Template?
 +
 +{{< youtube 8b2YTSMdMps >}}
 +
 +A list page template is a template used to render multiple pieces of content in a single HTML page. The exception to this rule is the homepage, which is still a list but has its own [dedicated template][homepage].
 +
 +Hugo uses the term *list* in its truest sense; i.e. a sequential arrangement of material, especially in alphabetical or numerical order. Hugo uses list templates on any output HTML page where content is traditionally listed:
 +
 +* [Taxonomy terms pages][taxterms]
 +* [Taxonomy list pages][taxlists]
 +* [Section list pages][sectiontemps]
 +* [RSS][rss]
 +
 +For template lookup order, see [Template Lookup](/templates/lookup-order/).
 +
 +The idea of a list page comes from the [hierarchical mental model of the web][mentalmodel] and is best demonstrated visually:
 +
 +![Image demonstrating a hierarchical website sitemap.](/images/site-hierarchy.svg)
 +
 +## List Defaults
 +
 +### Default Templates
 +
 +Since section lists and taxonomy lists (N.B., *not* [taxonomy terms lists][taxterms]) are both *lists* with regards to their templates, both have the same terminating default of `_default/list.html` or `themes/<THEME>/layouts/_default/list.html` in their lookup order. In addition, both [section lists][sectiontemps] and [taxonomy lists][taxlists] have their own default list templates in `_default`:
 +
 +#### Default Section Templates
 +
 +1. `layouts/_default/section.html`
 +2. `layouts/_default/list.html`
 +
 +#### Default Taxonomy List Templates
 +
 +1. `layouts/_default/taxonomy.html`
 +2. `themes/<THEME>/layouts/_default/taxonomy.html`
 +
 +## Add Content and Front Matter to List Pages
 +
 +Since v0.18, [everything in Hugo is a `Page`][bepsays]. This means list pages and the homepage can have associated content files (i.e. `_index.md`) that contain page metadata (i.e., front matter) and content.
 +
 +This new model allows you to include list-specific front matter via `.Params` and also means that list templates (e.g., `layouts/_default/list.html`) have access to all [page variables][pagevars].
 +
 +{{% note %}}
 +It is important to note that all `_index.md` content files will render according to a *list* template and not according to a [single page template](/templates/single-page-templates/).
 +{{% /note %}}
 +
 +### Example Project Directory
 +
 +The following is an example of a typical Hugo project directory's content:
 +
 +```
 +.
 +...
 +├── content
 +|   ├── post
 +|   |   ├── _index.md
 +|   |   ├── post-01.md
 +|   |   └── post-02.md
 +|   └── quote
 +|   |   ├── quote-01.md
 +|   |   └── quote-02.md
 +...
 +```
 +
 +Using the above example, let's assume you have the following in `content/post/_index.md`:
 +
 +{{< code file="content/post/_index.md" >}}
 +---
 +title: My Golang Journey
 +date: 2017-03-23
 +publishdate: 2017-03-24
 +---
 +
 +I decided to start learning Golang in March 2017.
 +
 +Follow my journey through this new blog.
 +{{< /code >}}
 +
 +You can now access this `_index.md`'s' content in your list template:
 +
 +{{< code file="layouts/_default/list.html" download="list.html" >}}
 +{{ define "main" }}
 +<main>
 +    <article>
 +        <header>
 +            <h1>{{.Title}}</h1>
 +        </header>
 +        <!-- "{{.Content}}" pulls from the markdown content of the corresponding _index.md -->
 +        {{.Content}}
 +    </article>
 +    <ul>
 +    <!-- Ranges through content/post/*.md -->
 +    {{ range .Data.Pages }}
 +        <li>
 +            <a href="{{.Permalink}}">{{.Date.Format "2006-01-02"}} | {{.Title}}</a>
 +        </li>
 +    {{ end }}
 +    </ul>
 +</main>
 +{{ end }}
 +{{< /code >}}
 +
 +This above will output the following HTML:
 +
 +{{< code file="example.com/post/index.html" copy="false" >}}
 +<!--top of your baseof code-->
 +<main>
 +    <article>
 +        <header>
 +            <h1>My Golang Journey</h1>
 +        </header>
 +        <p>I decided to start learning Golang in March 2017.</p>
 +        <p>Follow my journey through this new blog.</p>
 +    </article>
 +    <ul>
 +        <li><a href="/post/post-01/">Post 1</a></li>
 +        <li><a href="/post/post-02/">Post 2</a></li>
 +    </ul>
 +</main>
 +<!--bottom of your baseof-->
 +{{< /code >}}
 +
 +### List Pages Without `_index.md`
 +
 +You do *not* have to create an `_index.md` file for every list page (i.e. section, taxonomy, taxonomy terms, etc) or the homepage. If Hugo does not find an `_index.md` within the respective content section when rendering a list template, the page will be created but with no `{{.Content}}` and only the default values for `.Title` etc.
 +
++Using this same `layouts/_default/list.html` template and applying it to the `quotes` section above will render the following output. Note that `quotes` does not have an `_index.md` file to pull from:
 +
 +{{< code file="example.com/quote/index.html" copy="false" >}}
 +<!--baseof-->
 +<main>
 +    <article>
 +        <header>
 +        <!-- Hugo assumes that .Title is the name of the section since there is no _index.md content file from which to pull a "title:" field -->
 +            <h1>Quotes</h1>
 +        </header>
 +    </article>
 +    <ul>
 +        <li><a href="https://example.com/quote/quotes-01/">Quote 1</a></li>
 +        <li><a href="https://example.com/quote/quotes-02/">Quote 2</a></li>
 +    </ul>
 +</main>
 +<!--baseof-->
 +{{< /code >}}
 +
 +{{% note %}}
 +The default behavior of Hugo is to pluralize list titles; hence the inflection of the `quote` section to "Quotes" when called with the `.Title` [page variable](/variables/page/). You can change this via the `pluralizeListTitles` directive in your [site configuration](/getting-started/configuration/).
 +{{% /note %}}
 +
 +## Example List Templates
 +
 +### Section Template
 +
 +This list template has been modified slightly from a template originally used in [spf13.com](http://spf13.com/). It makes use of [partial templates][partials] for the chrome of the rendered page rather than using a [base template][base] The examples that follow also use the [content view templates][views] `li.html` or `summary.html`.
 +
 +{{< code file="layouts/section/post.html" >}}
 +{{ partial "header.html" . }}
 +{{ partial "subheader.html" . }}
 +<main>
 +  <div>
 +   <h1>{{ .Title }}</h1>
 +        <ul>
 +        <!-- Renders the li.html content view for each content/post/*.md -->
 +            {{ range .Data.Pages }}
 +                {{ .Render "li"}}
 +            {{ end }}
 +        </ul>
 +  </div>
 +</main>
 +{{ partial "footer.html" . }}
 +{{< /code >}}
 +
 +### Taxonomy Template
 +
 +{{< code file="layouts/_default/taxonomies.html" download="taxonomies.html" >}}
 +{{ define "main" }}
 +<main>
 +  <div>
 +   <h1>{{ .Title }}</h1>
 +   <!-- ranges through each of the content files associated with a particular taxonomy term and renders the summary.html content view -->
 +    {{ range .Data.Pages }}
 +        {{ .Render "summary"}}
 +    {{ end }}
 +  </div>
 +</main>
 +{{ end }}
 +{{< /code >}}
 +
 +## Order Content
 +
 +Hugo lists render the content based on metadata you provide in [front matter][]. In addition to sane defaults, Hugo also ships with multiple methods to make quick work of ordering content inside list templates:
 +
 +### Default: Weight > Date > LinkTitle > FilePath
 +
 +{{< code file="layouts/partials/default-order.html" >}}
 +<ul>
 +    {{ range .Data.Pages }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
 +{{< /code >}}
 +
 +### By Weight
 +
 +{{< code file="layouts/partials/by-weight.html" >}}
 +<ul>
 +    {{ range .Data.Pages.ByWeight }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
 +{{< /code >}}
 +
 +### By Date
 +
 +{{< code file="layouts/partials/by-date.html" >}}
 +<ul>
 +    <!-- orders content according to the "date" field in front matter -->
 +    {{ range .Data.Pages.ByDate }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
 +{{< /code >}}
 +
 +### By Publish Date
 +
 +{{< code file="layouts/partials/by-publish-date.html" >}}
 +<ul>
 +    <!-- orders content according to the "publishdate" field in front matter -->
 +    {{ range .Data.Pages.ByPublishDate }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
 +{{< /code >}}
 +
 +### By Expiration Date
 +
 +{{< code file="layouts/partials/by-expiry-date.html" >}}
 +<ul>
 +    {{ range .Data.Pages.ByExpiryDate }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
 +{{< /code >}}
 +
 +### By Last Modified Date
 +
 +{{< code file="layouts/partials/by-last-mod.html" >}}
 +<ul>
 +    <!-- orders content according to the "lastmod" field in front matter -->
 +    {{ range .Data.Pages.ByLastmod }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
 +{{< /code >}}
 +
 +### By Length
 +
 +{{< code file="layouts/partials/by-length.html" >}}
 +<ul>
 +    <!-- orders content according to content length in ascending order (i.e., the shortest content will be listed first) -->
 +    {{ range .Data.Pages.ByLength }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
 +{{< /code >}}
 +
 +### By Title
 +
 +{{< code file="layouts/partials/by-title.html" >}}
 +<ul>
 +    <!-- ranges through content in ascending order according to the "title" field set in front matter -->
 +    {{ range .Data.Pages.ByTitle }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
 +{{< /code >}}
 +
 +### By Link Title
 +
 +{{< code file="layouts/partials/by-link-title.html" >}}
 +<ul>
 +    <!-- ranges through content in ascending order according to the "linktitle" field in front matter. If a "linktitle" field is not set, the range will start with content that only has a "title" field and use that value for .LinkTitle -->
 +    {{ range .Data.Pages.ByLinkTitle }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
 +{{< /code >}}
 +
 +### By Parameter
 +
 +Order based on the specified front matter parameter. Content that does not have the specified front matter field  will use the site's `.Site.Params` default. If the parameter is not found at all in some entries, those entries will appear together at the end of the ordering.
 +
 +{{< code file="layouts/partials/by-rating.html" >}}
 +<!-- Ranges through content according to the "rating" field set in front matter -->
 +{{ range (.Data.Pages.ByParam "rating") }}
 +  <!-- ... -->
 +{{ end }}
 +{{< /code >}}
 +
 +If the targeted front matter field is nested beneath another field, you can access the field using dot notation.
 +
 +{{< code file="layouts/partials/by-nested-param.html" >}}
 +{{ range (.Data.Pages.ByParam "author.last_name") }}
 +  <!-- ... -->
 +{{ end }}
 +{{< /code >}}
 +
 +### Reverse Order
 +
 +Reversing order can be applied to any of the above methods. The following uses `ByDate` as an example:
 +
 +{{< code file="layouts/partials/by-date-reverse.html" >}}
 +<ul>
 +    {{ range .Data.Pages.ByDate.Reverse }}
 +        <li>
 +            <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
 +            <time>{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
 +        </li>
 +    {{ end }}
 +</ul>
 +{{< /code >}}
 +
 +## Group Content
 +
 +Hugo provides some functions for grouping pages by Section, Type, Date, etc.
 +
 +### By Page Field
 +
 +{{< code file="layouts/partials/by-page-field.html" >}}
 +<!-- Groups content according to content section. The ".Key" in this instance will be the section's title. -->
 +{{ range .Data.Pages.GroupBy "Section" }}
 +<h3>{{ .Key }}</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 >}}
 +
 +In the above example, you may want `{{.Title}}` to point the `title` field you have added to your `_index.md` file instead. You can access this value using the [`.GetPage` function][getpage]:
 +
 +{{< code file="layouts/partials/by-page-field.html" >}}
 +<!-- Groups content according to content section.-->
 +{{ range .Data.Pages.GroupBy "Section" }}
 +<!-- Checks for existence of _index.md for a section; if available, pulls from "title" in front matter -->
 +{{ with $.Site.GetPage "section" .Key }}
 +<h3>{{.Title}}</h3>
 +{{ else }}
 +<!-- If no _index.md is available, ".Key" defaults to the section title and filters to title casing -->
 +<h3>{{ .Key | title }}</h3>
 +{{ end }}
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
 +{{< /code >}}
 +
 +### By Date
 +
 +{{< code file="layouts/partials/by-page-date.html" >}}
 +<!-- Groups content by month according to the "date" field in front matter -->
 +{{ range .Data.Pages.GroupByDate "2006-01" }}
 +<h3>{{ .Key }}</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 >}}
 +
 +### By Publish Date
 +
 +{{< code file="layouts/partials/by-page-publish-date.html" >}}
 +<!-- Groups content by month according to the "publishdate" field in front matter -->
 +{{ range .Data.Pages.GroupByPublishDate "2006-01" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .PublishDate.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
 +{{< /code >}}
 +
 +### By Page Parameter
 +
 +{{< code file="layouts/partials/by-page-param.html" >}}
 +<!-- Groups content according to the "param_key" field in front matter -->
 +{{ range .Data.Pages.GroupByParam "param_key" }}
 +<h3>{{ .Key }}</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 >}}
 +
 +### By Page Parameter in Date Format
 +
 +The following template takes grouping by `date` a step further and uses Golang's layout string. See the [`Format` function][] for more examples of how to use Golang's layout string to format dates in Hugo.
 +
 +{{< code file="layouts/partials/by-page-param-as-date.html" >}}
 +<!-- Groups content by month according to the "param_key" field in front matter -->
 +{{ range .Data.Pages.GroupByParamDate "param_key" "2006-01" }}
 +<h3>{{ .Key }}</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 >}}
 +
 +### Reverse Key Order
 +
 +Ordering of groups is performed by keys in alphanumeric order (A–Z, 1–100) and in reverse chronological order (i.e., with the newest first) for dates.
 +
 +While these are logical defaults, they are not always the desired order. There are two different syntaxes to change Hugo's default ordering for groups, both of which work the same way.
 +
 +#### 1. Adding the Reverse Method
 +
 +```
 +{{ range (.Data.Pages.GroupBy "Section").Reverse }}
 +```
 +
 +```
 +{{ range (.Data.Pages.GroupByDate "2006-01").Reverse }}
 +```
 +
 +#### 2. Providing the Alternate Direction
 +
 +```
 +{{ range .Data.Pages.GroupByDate "2006-01" "asc" }}
 +```
 +
 +```
 +{{ range .Data.Pages.GroupBy "Section" "desc" }}
 +```
 +
 +### Order Within Groups
 +
 +Because Grouping returns a `{{.Key}}` and a slice of pages, all of the ordering methods listed above are available.
 +
 +Here is the ordering for the example that follows:
 +
 +1. Content is grouped by month according to the `date` field in front matter.
 +2. Groups are listed in ascending order (i.e., the oldest groups first)
 +3. Pages within each respective group are ordered alphabetically according to the `title`.
 +
 +{{< code file="layouts/partials/by-group-by-page.html" >}}
 +{{ range .Data.Pages.GroupByDate "2006-01" "asc" }}
 +<h3>{{ .Key }}</h3>
 +<ul>
 +    {{ range .Pages.ByTitle }}
 +    <li>
 +    <a href="{{ .Permalink }}">{{ .Title }}</a>
 +    <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
 +    </li>
 +    {{ end }}
 +</ul>
 +{{ end }}
 +{{< /code >}}
 +
 +## Filter and Limiting Lists
 +
 +Sometimes you only want to list a subset of the available content. A common is to only display “Posts” on blog's homepage. You can accomplish this with the `where` function.
 +
 +### `where`
 +
 +`where` works in a similar manner to the [`where` keyword in SQL][wherekeyword]. It selects all elements of the array or slice that match the provided field and value. `where` takes three arguments:
 +
 +1. `array` *or* `slice of maps or structs`
 +2. `key` *or* `field name`
 +3. `match value`
 +
 +{{< code file="layouts/_default/.html" >}}
 +{{ range where .Data.Pages "Section" "post" }}
 +   {{ .Content }}
 +{{ end }}
 +{{< /code >}}
 +
 +You can see more examples in the [functions documentation for `where`][wherefunction].
 +
 +### `first`
 +
 +`first` works in a similar manner to the [`limit` keyword in SQL][limitkeyword]. It reduces the array to only the `first N` elements. It takes the array and number of elements as input. `first` takes two arguments:
 +
 +1. `array` *or* `slice of maps or structs`
 +2. `number of elements`
 +
 +{{< code file="layout/_default/section.html" >}}
 +{{ range first 10 .Data.Pages }}
 +  {{ .Render "summary" }}
 +{{ end }}
 +{{< /code >}}
 +
 +### `first` and `where` Together
 +
 +Using `first` and `where` together can be very powerful:
 +
 +{{< code file="first-and-where-together.html" >}}
 +<!-- Orders the content inside the "posts" section by the "title" field and then ranges through only the first 5 posts -->
 +{{ range first 5 (where .Data.Pages "Section" "post").ByTitle }}
 +   {{ .Content }}
 +{{ end }}
 +{{< /code >}}
 +
 +[base]: /templates/base/
 +[bepsays]: http://bepsays.com/en/2016/12/19/hugo-018/
 +[directorystructure]: /getting-started/directory-structure/
 +[`Format` function]: /functions/format/
 +[front matter]: /content-management/front-matter/
 +[getpage]: /functions/getpage/
 +[homepage]: /templates/homepage/
 +[homepage]: /templates/homepage/
 +[limitkeyword]: https://www.techonthenet.com/sql/select_limit.php
 +[mentalmodel]: http://webstyleguide.com/wsg3/3-information-architecture/3-site-structure.html
 +[pagevars]: /variables/page/
 +[partials]: /templates/partials/
 +[RSS 2.0]: http://cyber.law.harvard.edu/rss/rss.html "RSS 2.0 Specification"
 +[rss]: /templates/rss/
 +[sections]: /content-management/sections/
 +[sectiontemps]: /templates/section-templates/
 +[sitevars]: /variables/site/
 +[taxlists]: /templates/taxonomy-templates/#taxonomy-list-templates/
 +[taxterms]: /templates/taxonomy-templates/#taxonomy-terms-templates/
 +[taxvars]: /variables/taxonomy/
 +[views]: /templates/views/
 +[wherefunction]: /functions/where/
 +[wherekeyword]: https://www.techonthenet.com/sql/where.php
index ecfce2d187084bd5e4a104e37a11849704a44bf0,0000000000000000000000000000000000000000..f41751b4920c054089343f57d953865de9528fd5
mode 100644,000000..100644
--- /dev/null
@@@ -1,33 -1,0 +1,34 @@@
 +---
 +title: Frontend Interfaces with Hugo
 +linktitle: Frontends
 +description: Do you prefer a graphical user interface over a text editor? Give these frontends a try.
 +date: 2017-02-01
 +publishdate: 2017-02-01
 +lastmod: 2017-02-01
 +categories: [developer tools]
 +keywords: [frontend,gui]
 +menu:
 +  docs:
 +    parent: "tools"
 +    weight: 40
 +weight: 40
 +sections_weight: 40
 +draft: false
 +aliases: []
 +toc: false
 +---
 +
 +* [enwrite](https://github.com/zzamboni/enwrite). Enwrite enables evernote-powered, statically generated blogs and websites. Now posting to your blog or updating your website is as easy as writing a new note in Evernote!
 +* [caddy-hugo](https://github.com/hacdias/caddy-hugo). `caddy-hugo` is an add-on for [Caddy](https://caddyserver.com/) that delivers a good UI to edit the content of your Hugo website.
 +* [Lipi](https://github.com/SohanChy/Lipi). Lipi is a native GUI frontend written in Java to manage your Hugo websites.
++* [Netlify CMS](https://netlifycms.org). Netlify CMS is an open source, serverless solution for managing Git based content in static sites, and it works on any platform that can host static sites. A [Hugo/Netlify CMS starter](https://github.com/netlify-templates/one-click-hugo-cms) is available to get new projects running quickly.
 +
 +
 +## Commercial Services
 +
 +* [Appernetic.io](https://appernetic.io) is a Hugo Static Site Generator as a Service that is easy to use for non-technical users.
 +    * **Features:** inline PageDown editor, visual tree view, image upload and digital asset management with Cloudinary, site preview, continuous integration with GitHub, atomic deploy and hosting, Git and Hugo integration, autosave, custom domain, project syncing, theme cloning and management. Developers have complete control over the source code and can manage it with GitHub’s deceptively simple workflow.
 +* [DATOCMS](https://www.datocms.com) DatoCMS is a fully customizable administrative area for your static websites. Use your favorite website generator, let your clients publish new content independently, and the host the site anywhere you like.
 +* [Forestry.io](https://forestry.io/). Forestry is a simple CMS for Jekyll and Hugo websites with support for GitHub, GitLab, and Bitbucket. Every time an update is made via the CMS, Forestry will commit changes back to your repo and will compile/deploy your website to S3, GitHub Pages, FTP, etc.
 +* [Netlify.com](https://www.netlify.com). Netlify builds, deploys, and hosts your static website or app (Hugo, Jekyll, etc). Netlify offers a drag-and-drop interface and automatic deployments from GitHub or Bitbucket.
 +    * **Features:** global CDN, atomic deploys, ultra-fast DNS, instant cache invalidation, high availability, automated hosting, Git integration, form submission hooks, authentication providers, and custom domains. Developers have complete control over the source code and can manage it with GitHub or Bitbucket's deceptively simple workflow.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1d3498a1efbad20fb6f9e3fa140b82343e9a84fd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,38 @@@
++<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
++  <channel>
++    <title>{{ .Site.Title }} – {{ .Title }}</title>
++    <link>{{ .Permalink }}</link>
++    <description>Recent Hugo news from gohugo.io</description>
++    <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
++    <language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
++    <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
++    <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
++    <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
++    <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
++    <image>
++      <url>{{ "img/hugo.png" | absURL }}</url>
++      <title>GoHugo.io</title>
++      <link>{{ .Permalink }}</link>
++    </image>
++    {{ with .OutputFormats.Get "RSS" }}
++      {{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
++    {{ end }}
++    {{ range first 50 (where .Site.RegularPages "Type" "in" (slice "news" "showcase")) }}
++    <item>
++      <title>{{ .Section | title }}: {{ .Title }}</title>
++      <link>{{ .Permalink }}</link>
++      <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
++      {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
++      <guid>{{ .Permalink }}</guid>
++      <description>
++        {{ $img := (.Resources.ByType "image").GetMatch "*featured*" }}
++        {{ with $img }}
++        {{ $img := .Resize "640x" }}
++        {{ printf "<![CDATA[<img src=\"%s\" width=\"%d\" height=\"%d\"/>]]>" $img.Permalink $img.Width $img.Height | safeHTML }}
++        {{ end }}
++        {{ .Content | html }}
++      </description>
++    </item>
++    {{ end }}
++  </channel>
++</rss>
index 55e6a89a57a99a380c84789a7a8472e0599582fa,0000000000000000000000000000000000000000..7ecd9ebc4d66107d16a78596fe52b6cbdfedb9c2
mode 100644,000000..100644
--- /dev/null
@@@ -1,18 -1,0 +1,23 @@@
-   publish = "public"
-   command = "hugo"
 +[build]
-   HUGO_VERSION = "0.35"
-   HUGO_ENV = "production"
-   HUGO_ENABLEGITINFO = "true"
++publish = "public"
++command = "hugo"
 +
 +[context.production.environment]
-   HUGO_VERSION = "0.35"
++HUGO_VERSION = "0.36"
++HUGO_ENV = "production"
++HUGO_ENABLEGITINFO = "true"
++
++[context.deploy-preview]
++command = "hugo -b $DEPLOY_PRIME_URL"
 +
 +[context.deploy-preview.environment]
-   HUGO_VERSION = "0.35"
++HUGO_VERSION = "0.36"
++
++[context.branch-deploy]
++command = "hugo -b $DEPLOY_PRIME_URL"
 +
 +[context.branch-deploy.environment]
-   HUGO_BASEURL = "https://next--gohugoio.netlify.com/"
-   HUGO_ENABLEGITINFO = "true"
++HUGO_VERSION = "0.36"
 +
 +[context.next.environment]
++HUGO_ENABLEGITINFO = "true"
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6499e83414f4caca067dc79d17b415492b5391d4
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8caa587986ac80338d84ec212a1df4e2a2917396
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..69549b2df429c4d533bc6cd60a1418ecd48595fa
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2497087652e310f7f9c995e7a4a904b9c38c252d
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..634fb0ce1e7b62ce35c71276f30f4f429ea27ecf
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..094f2a4f1d8cc5e6bd90be5452363a9bb4fe1d7e
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6499e83414f4caca067dc79d17b415492b5391d4
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8caa587986ac80338d84ec212a1df4e2a2917396
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..69549b2df429c4d533bc6cd60a1418ecd48595fa
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2497087652e310f7f9c995e7a4a904b9c38c252d
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..634fb0ce1e7b62ce35c71276f30f4f429ea27ecf
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bc604e562a60287685be43d9015ab41a7c0091ad
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cf00e1cd68f244cf80ddb8147d6396684801713c
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..37ff457ecf953864d8c84d1c9e5d91b8ee67fb7c
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c2ae4527c37e913932e43797993bba2ea6bbf2d3
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7788b1fd2ced9eb9dd84695babab2735daf1741e
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d08624fb837afcc88e574d72607857b5e7df22eb
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..61197ee1b605775630870c506262bf34f0e945d6
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0084edfa51bdf861cf831c088bffb35de1c97ca7
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a6dafec1d41fe71e1084a2fc53ccf5e57774572c
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9b158b66c503b648a00086687e3de9646933d2d3
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3324816ccda5397243de440425c48c7177b292a6
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3bb21e8f74378fd8812ec6d29af7ac4b0f722757
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c295aafad6c1f9016224cf07cd6e4902b1a81365
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3bb9e2a67594310ff78618c03c72d6bcd8767984
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e4eb094af18a41fc3ff5b5830e716a6dca3b914e
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..aac9edb6636c79aa8b2a0dd4598c7bfba1c04db2
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fe56cdfbeadf097149233b1cb341275f66e6af1f
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1bf56b67b22dc1ac241a4d6fd72295f83ba2ec1b
new file mode 100644 (file)
Binary files differ
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..48e341a0954d5f8c2accf3a6731be28e5bb9c0de
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++{
++  "lockfileVersion": 1
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d852bb1ca81a2e335b3415ef003ccc335792065c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,7 @@@
++---
++title: "{{ replace .Name "-" " " | title }}"
++date: {{ .Date }}
++description:
++siteURL:
++siteSource:
++---
index d6c854db075e5e937ea80b224c509369f860c23a,0000000000000000000000000000000000000000..b7ad4f10e547227e2b0e3ea01a90a00b3a48d223
mode 100755,000000..100755
--- /dev/null
@@@ -1,51 -1,0 +1,55 @@@
 +<!DOCTYPE html>
 +<html class="no-js" lang="{{ with $.Site.LanguageCode }}{{ . }}{{ else }}en-us{{ end }}">
 +  <head>
 +    <meta charset="utf-8">
 +    {{/* https://www.zachleat.com/web/preload/ */}}
 +    <link rel="preload" href="{{ "files/muli-latin-200.woff2" | absURL }}" as="font" type="font/woff2" crossorigin>
 +    <link rel="preload" href="{{ "files/muli-latin-400.woff2" | absURL }}" as="font" type="font/woff2" crossorigin>
 +    <link rel="preload" href="{{ "files/muli-latin-800.woff2" | absURL }}" as="font" type="font/woff2" crossorigin>
 +
 +    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 +     {{/* NOTE: the Site's title, and if there is a page title, that is set too */}}
 +    <title>{{ block "title" . }}{{ with .Title }}{{ . }} | {{ end }}{{ .Site.Title }}{{ end }}</title>
 +    <meta name="HandheldFriendly" content="True">
 +    <meta name="MobileOptimized" content="320">
 +
 +    <meta name="viewport" content="width=device-width,minimum-scale=1">
 +     {{ .Hugo.Generator }}
 +
 +      {{ if eq (getenv "HUGO_ENV") "production" | or (eq .Site.Params.env "production")  }}
 +        <META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">
 +      {{ else }}
 +        <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
 +      {{ end }}
++
++    {{ range .AlternativeOutputFormats -}}
++    <link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
++    {{ end -}}
 +
 +     <link href='{{ "dist/main.css" | relURL }}' rel='stylesheet' type="text/css" />
 +      {{- partial "head-additions.html" . -}}
 +      {{- template "_internal/opengraph.html" . -}}
 +      {{- template "_internal/google_news.html" . -}}
 +      {{- template "_internal/schema.html" . -}}
 +      {{- template "_internal/twitter_cards.html" . -}}
 +
 +      {{ if eq (getenv "HUGO_ENV") "production" | or (eq .Site.Params.env "production")  }}
 +        {{ template "_internal/google_analytics_async.html" . }}
 +      {{ end }}
 +
 +
 +
 +
 +  </head>
 +  <body class="ma0 sans-serif bg-primary-color-light{{ with getenv "HUGO_ENV" }} {{ . }}{{ end }}">
 +    {{ block "nav" . }}{{ partial "site-nav.html" . }}{{ end }}
 +    {{ block "header" . }}{{ end }}
 +    <main role="main" class="content-with-sidebar min-vh-100 pb7 pb0-ns">
 +      {{ block "main" . }}{{ end }}
 +    </main>
 +
 +    {{ block "footer" . }}{{ partialCached "site-footer.html" . }}{{ end }}
 +    {{ block "scripts" . }}{{- partial "site-scripts.html" . -}}{{ end }}
 +
 +  </body>
 +</html>
index 5e8ebbdd414a58bac6b9470840631558967bc1e4,0000000000000000000000000000000000000000..9dcee424d4ce9b482cde5de86821812bcf6f6d0e
mode 100644,000000..100644
--- /dev/null
@@@ -1,26 -1,0 +1,28 @@@
 +{{ define "header" }}
 +  {{ partial "hero" . }}
 +  {{ partial "boxes-small-news" . }}
 +{{ end }}
 +
 +{{ define "main" }}
 +
 +  <section class="w-100 ph4 ph5-ns pv4">
 +    {{- partial "home-page-sections/features-icons" . -}}
 +  </section>
 +
++  {{- partial "home-page-sections/showcase.html" . -}} 
++
 +  {{- partial "home-page-sections/features-single" . -}}
 +
 +  <section class="w-100 ph4 ph5-ns pv4 pv6-ns mid-gray bg-white bb bt b--light-gray">
 +    {{- partial "home-page-sections/installation" . -}}
 +  </section>
 +
 +  {{ partial "home-page-sections/sponsors.html" (dict "cx" . ) }}
 +
 +  <section class="w-100 ph4 ph5-ns pv4 pv6-ns mid-gray bg-accent-color-dark">
 +    {{- partial "home-page-sections/tweets" . -}}
 +  </section>
 +  <section class="w-100 ph4 ph5-ns pt4 pb5 mid-gray bg-primary-color-light bb bt b--light-gray ">
 +    {{- partial "home-page-sections/open-source-involvement" . -}}
 +  </section>
 +{{ end }}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..337fd2fc80d7a19f2a46f2c9d15db8e222c6f5d8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,35 @@@
++<section class="bg-near-white mid-gray pb5 ph4 ph5-ns pt4 w-100">
++  <h3 class="black f1 fw4 lh-title ma0 pb3 pt0-l pt4">Showcase</h3>
++  {{/* NOTE: transitions for this section are in themes/gohugoioTheme/src/css/_carousel.css */}}
++  <div class="w-100">
++    <div class="w-100 overflow-x-scroll">
++      <div class="row nowrap mv2 pb1">
++        {{ range $p := first 10 (where .Site.RegularPages "Section" "showcase") }}
++        {{ $img := (.Resources.ByType "image").GetMatch "*featured*" }}
++        {{ with $img }}
++        {{ $big := .Fill "1024x512 top" }}
++        {{ $small := $big.Resize "512x" }}
++        <a href="{{ $p.RelPermalink}}" class="tile lazyload cover dib f4 h5 ml1 mr4 bg-black relative mw-100 shadow-5" style="width:{{ $small.Width }}px;" 
++          data-bg="{{ $img.RelPermalink }}"
++          data-sizes="auto" 
++           data-srcset="{{ $small.RelPermalink }} 1x,
++          {{ $big.RelPermalink }} 2x" data-src="small"
++        >
++          {{with $p.Title}}
++          <div class="details absolute bottom-0 f3-ns f4 left-0 o-0 right-0 top-0">
++            <div class="absolute bottom-0 pa2 tc white">
++              {{.}} &#8594;
++            </div>
++          </div>
++          {{end}}
++        </a>
++        {{ end }}
++        {{end}}
++      </div>
++    </div>
++  </div>
++  {{/* END */}}
++  <div class="flex w-100 mt4 justify-end">{{/* using Flex to make the button show up on the right side */}}
++    <a href="/showcase/" class="br2 f6 bg-primary-color-dark hover-bg-primary-color link ph3 pv2 ttu white">See All</a>
++  </div>
++</section>
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..71a14c0efabd6979254010dabb460354290ebe4d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,14 @@@
++{{ if or .PrevInSection .NextInSection }}
++{{/* this div holds these a tags as a unit for flex-box display */}}
++      <div date-pref class="white">
++              {{if .NextInSection}}
++                      <a href="{{.NextInSection.Permalink }}" class="br2 db f6 ph2 pv2 bg-light-gray white" title="{{ .NextInSection.Title }} ">{{ partial "svg/ic_chevron_left_black_24px.svg" (dict "fill" "#fff" "size" "12px") }} {{.NextInSection.Title}}</a>
++              {{end}}
++
++              {{if .PrevInSection}}
++                      <a href="{{ .PrevInSection.Permalink }}" class="br2 db f6 pr1 mt3 bg-light-gray ph2 pv2 white" title="{{ .PrevInSection.Title }}">
++                      {{.PrevInSection.Title}} {{ partial "svg/ic_chevron_right_black_24px.svg" (dict "fill" "#fff" "size" "12px") }}
++                      </a>
++              {{end}}
++      </div>
++{{ end }}
index fb5b04b81d4f57f41b0af47ed3781cbd845c9544,0000000000000000000000000000000000000000..ef32025ebeb73060edff23b5f35a33a206f3b195
mode 100755,000000..100755
--- /dev/null
@@@ -1,48 -1,0 +1,48 @@@
-       
 +<footer class="bg-primary-color-dark ph4-ns pt4 relative w-100" role="contentinfo">
 +    <div class="center flex-ns flex-wrap justify-between mw9 w-90">
 +      <div class="pb3 pt4 w-100 w-50-ns">
-     <div class="bg-primary-color-dark bottom-0 dn-ns fixed pb3 ph3 w-100"> 
-       {{ partial "nav-mobile.html" . }}
++
 +         <div class="b f3  light-gray mb3 nested-links tc">
 +           By the <a href="https://github.com/gohugoio/hugo/contributors" class="link">Hugo Authors</a><br />
 +          </div>
 +
 +          <div class="center w4">
 +            {{ partialCached "svg/hugo-logo-wide.svg" . }}
 +          </div>
 +
 +          <ul class="center f6 list ma0 mv3 pa0 tc">
 +            {{- with .Site.Params.github_repo -}}<li class="dib mr3"><a href="{{ . }}" class="dim link light-gray pv2">File an Issue</a></li>{{- end -}}
 +            {{- with .Site.Params.forum -}}<li class="dib mr3"><a href="{{ . }}" class="dim link light-gray pv2">Get Help</a></li>{{- end -}}
 +            {{- with .Site.Params.gitter -}}<li class="dib"><a href="{{ . }}" class="dim link light-gray pv2">Discuss Source Code</a></li>{{- end -}}
 +          </ul>
 +
 +          <ul class="center f6 list ma0 mv4 pa0 tc">
 +            <li class="dib mr3"><a href="https://twitter.com/gohugoio" class="dim link light-gray pv2">@GoHugoIO</a></li>
 +            <li class="dib mr3"><a href="https://twitter.com/spf13" class="dim link light-gray pv2">@spf13</a></li>
 +            <li class="dib"><a href="https://twitter.com/bepsays" class="dim link light-gray pv2">@bepsays</a></li>
 +          </ul>
 +
 +          {{ with  getenv "REPOSITORY_URL" -}}
 +          <p class="center f6 tc w-70"><a href="https://www.netlify.com"><img src="https://www.netlify.com/img/global/badges/netlify-dark.svg"/></a></p>
 +          {{- end }}
 +
 +      </div>
 +
 +      <div class="w-100 w-50-l"> 
 +        {{ partial "home-page-sections/sponsors.html" (dict "cx" . "classes_section" "pb3 w-100" "classes_copy" "f7 w-90-ns") }}
 +      </div>
 +
 +    </div>
 +
 +    <div class="f7 gray mb5 mb0-ns ph3 w-100"> 
 +      <p class="dib mr4">The Hugo logos are copyright © Steve Francia 2013–{{ now.Year }}.</p>
 +      <p class="dib">The Hugo Gopher is based on an original work by Renée French.</p>
 +    </div>
 +
 +    <img src="/images/gopher-side_color.svg" class="absolute-l bottom-0 dn db-l h4 right-0 z-999"/>
 +
++    <div class="bg-primary-color-dark bottom-0 left-0 right-0 dn-l fixed pb3 ph3 w-100">
++      {{- partial "nav-mobile.html" . -}}
 +    </div>
 +
 +</footer>
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..89565f342668cee25bdb1c60ddb8f708ff191c84
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,46 @@@
++{{ define "main" }}
++<div class="w-100 ph4 ph5-ns pb5 pb6-ns pt1 pt3-ns ">
++  <article class="cf pa3 pa4-m pa4-l nested-copy-line-height nested-img">
++    <h1 class="primary-color-dark">
++      {{ .Title }}
++    </h1>
++    <div class="nested-copy-line-height">
++      {{ .Content }}
++    </div>
++  </article>
++    <section class="flex-ns flex-wrap justify-between w-100 v-top">
++      {{ range (.Paginator 20).Pages  }}
++        {{template "showcase_items" .}}
++      {{ end }}
++    </section>
++  <div class="nested-list-reset nested-links">
++    {{/* pagination.html: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/template_embedded.go#L117 */}}
++    {{ template "_internal/pagination.html" . }}
++  </div>
++  <div class="dib f3 mt4">The Showcase articles are copyright the content authors. Any open source license will be attached.</div>
++</div>
++{{ end }}
++
++
++{{define "showcase_items"}}
++  <a href="{{.Permalink}}" class="b--moon-gray ba bg-animate bg-white db flex-auto-ns hover-bg-near-white mb3 mr3 w-100 w-30-l" style="max-width: 1024px;">
++    <div class="flex flex-column black h-100 mb2 pa3 pa4-l">
++      {{ $img := (.Resources.ByType "image").GetMatch "*featured*" }}
++      {{ with $img }}
++      {{ $big := .Fill "1024x512 top" }}
++      {{ $small := $big.Resize "512x" }}
++      <img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYwMCIgaGVpZ2h0PSI5MDAiIHZpZXdCb3g9IjAgMCAxNjAwIDkwMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48dGl0bGU+UmVjdGFuZ2xlPC90aXRsZT48ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz48ZyBpZD0iUGFnZS0xIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cmVjdCBpZD0iUmVjdGFuZ2xlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTYwMCIgaGVpZ2h0PSI5MDAiLz48L2c+PC9zdmc+" 
++          data-sizes="auto" 
++          data-srcset="{{ $small.RelPermalink }} 1x,
++          {{ $big.RelPermalink }} 2x" data-bg="{{ $small.RelPermalink }}" class="grow img lazyload" style="display: block;  width: 100%; height: auto;" />
++      {{end}}
++      <div style="margin-top:auto;">{{/* the margin aligns to the bottom */}}
++        <h2 class="dib f3 mt4">
++          {{- .Title -}}
++        </h2>
++      </div>
++    </div>
++  </a>
++
++
++{{end}}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c396f7b05ad5676409d733817e4ac7eaf172eba4
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,99 @@@
++{{ define "title" }}
++Showcase: {{ .Title }}
++{{ end }}
++
++{{ define "main" }}
++  <article class="center ph3 ph4-ns pv3 pv5-ns mw9">
++
++    <!-- header spans the full width -->
++    <div class="flex flex-wrap">
++
++      <div class="w-100 w-20-l order-1 order-0-l">
++        {{template "details" .}}
++      </div>
++
++      <div class="w-100 w-60-l order-0 order-1-l">
++        {{template "main-column" .}}
++      </div>
++
++      <aside class="dn mid-gray w-100 w-20-ns flex-l justify-center order-2">
++        {{template "navigation" .}}
++      </aside>
++
++    </div>
++
++    <div class="f6 gray mv6">{{/* bottom row */}}
++      Last Update: {{ .Lastmod.Format "January 2, 2006" }} <br>
++      {{ partial "page-edit.html" . }}
++    </div>
++    <div class="b">The Showcase articles are copyright the content authors. Any open source license will be attached.</div>
++  </article>
++{{ end }}
++
++
++
++{{define "main-column"}}
++  {{ $img := (.Resources.ByType "image").GetMatch "*featured*" }}
++  {{ with $img }}
++     {{ $big := .Fill "1024x512 top" }}
++     {{ $small := $big.Resize "512x" }}
++      <img srcset="{{ $small.RelPermalink }} 1x, {{ $big.RelPermalink }} 2x" alt="{{ $img.Title }}" width="{{ $big.Width }}"  class="mw-100 b--light-gray ba">
++  {{ end }}
++   <div class="mid-gray nested-copy-line-height nested-img nested-links">
++  {{with .Params.byline }}
++     <div style="margin-top: 20px; font-style: italic;">By {{ . | markdownify -}}</div>
++  {{ end }}
++  {{with .Content}}
++      {{- . -}}
++  {{end}}
++  </div>
++
++{{end}}
++
++{{define "details"}}
++  <div class="mt4 mt0-ns nested-links mr3-m mr4-l">
++    <div class="ba b--light-gray bg-white pa3">
++      <h1 class="f3 mt0">{{.Title}}</h1>
++      {{ with .Params.siteURL }}
++      <a href="{{ . }}" class="db f5 mb1">{{ . | replaceRE "^https?://([^/]+).*" "$1"}} {{ partial "svg/link-ext.svg" (dict "size" "10") }}</a>
++      {{ end }}
++      {{ with .Params.siteSource }}
++      <a href="{{ . }}" class="db mb4">source {{ partial "svg/link-ext.svg" (dict "size" "10") }}</a>
++      {{ end }}
++      {{ $bio := (.Resources.ByType "page").GetMatch "bio*" }}
++      {{ with $bio }}
++        <div class="f6 mid-gray nested-copy-line-height nested-links">
++          {{- .Content -}}
++        </div>
++      {{ end }}
++    </div>
++    <div class="b--light-gray bt dn-l pt3">
++      <div class="f6 gray mb2">Previous/Next</div>
++      {{- partial "previous-next-links-in-section-with-title.html" . -}}
++    </div>
++  </div>
++{{end}}
++
++{{define "navigation"}}
++  {{$section := where .Site.RegularPages "Section" .Section}}
++  {{$number_of_entries := $section | len}}
++  <ul class="pa0 list">
++  <li class="b f5 blTK b--light-gray pb2 pl2">
++      More Sites
++  </li>
++    {{range first 20 $section}}
++      <li class="bl b--light-gray pl2 f6 hover-bg-light-gray hover-accent-color-light {{if eq $ .}} bg-light-gray{{end}}">
++        <a href="{{.RelPermalink}}" class="db link w-100 pv1 ph1 {{ if eq $ . }} b  primary-color{{else}} mid-gray {{end}}">
++          {{- .Title -}}
++        </a>
++      </li>
++    {{end}}
++    {{if ge $number_of_entries 20}}
++      <li class="mt3">
++        <a href="/showcase/page/2/" class="link blue">
++          See More &raquo;
++        </a>
++      </li>
++    {{end}}
++  </ul>
++{{end}}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..11fae8702b070a8c3f057ca8d9f85a08390d2804
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,25 @@@
++/* These styles enhance the home page carousel, located here: themes/gohugoioTheme/layouts/partials/home-page-sections/showcase.html */
++.overflow-x-scroll{
++  -webkit-overflow-scrolling: touch;
++}
++.row {
++  transition: 450ms transform;
++  font-size: 0;
++}
++.tile {
++  transition: 450ms all;
++}
++.details {
++  background: -webkit-gradient(linear, left bottom, left top, from(rgba(0,0,0,0.9)), to(rgba(0,0,0,0)));
++  background: linear-gradient(to top, rgba(0,0,0,0.9) 0%, rgba(0,0,0,0) 100%);
++  transition: 450ms opacity;
++}
++.tile:hover .details {
++  opacity: 1;
++}
++.row:hover .tile {
++  opacity: 0.3;
++}
++.row:hover .tile:hover {
++  opacity: 1;
++}
index 912bf5ce5f2dd57cd4357882507f54b71f566a35,0000000000000000000000000000000000000000..3f59a8c064589b88b2cf116922925fd87acced90
mode 100755,000000..100755
--- /dev/null
@@@ -1,40 -1,0 +1,41 @@@
 +/*Base Styles*/
 +@import '_tachyons';
 +
 +/*type*/
 +@import 'font/_muli-200';
 +@import 'font/_muli-400';
 +@import 'font/_muli-800';
 +
 +@import '_anchorforid';
 +@import '_animation';
 +@import '_documentation-styles';
 +
 +@import '_algolia';
++@import '_carousel';
 +@import '_code';
 +@import '_color-scheme';
 +@import '_columns';
 +@import '_content';
 +@import '_content-tables';
 +@import '_definition-lists';
 +@import '_font-family';
 +/*@import '_hljs';*/
 +@import '_hugo-internal-template-styling';
 +@import '_no-js';
 +@import '_social-icons';
 +@import '_stickyheader';
 +
 +@import '_svg';
 +@import '_chroma';
 +@import '_variables';
 +
 +.nested-blockquote blockquote {
 +  border-left: 4px solid var(--primary-color);
 +  padding-left: 1em;
 +  /*margin: 0;*/
 +}
 +
 +
 +.mw-90 {
 +  max-width:90%;
 +}
index dc4ab11863acbe57daf665e882f6c0d28d6f7824,0000000000000000000000000000000000000000..4eb3950afe14e72a2a43bb6950cde1d209dfca11
mode 100644,000000..100644
--- /dev/null
@@@ -1,2 -1,0 +1,3 @@@
 +var lazysizes = require('lazysizes');
 +// var lsnoscript = require('lazysizes/plugins/noscript/ls.noscript.js');
++var unveilhooks = require('lazysizes/plugins/unveilhooks/ls.unveilhooks.js');
index a977ac90a8ade1446887730ad082820c4a423874,0000000000000000000000000000000000000000..c07d45b2f30134f2116f943207633eebf2cf7412
mode 100644,000000..100644
--- /dev/null
@@@ -1,5887 -1,0 +1,5887 @@@
-         "string_decoder": {
-           "version": "1.0.1",
-           "bundled": true,
-           "dev": true,
-           "requires": {
-             "safe-buffer": "5.0.1"
-           }
-         },
 +{
 +  "name": "gohugo-default-styles",
 +  "version": "1.0.0",
 +  "lockfileVersion": 1,
 +  "requires": true,
 +  "dependencies": {
 +    "abbrev": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz",
 +      "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=",
 +      "dev": true
 +    },
 +    "acorn": {
 +      "version": "5.1.1",
 +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz",
 +      "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==",
 +      "dev": true
 +    },
 +    "acorn-dynamic-import": {
 +      "version": "2.0.2",
 +      "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz",
 +      "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=",
 +      "dev": true,
 +      "requires": {
 +        "acorn": "4.0.13"
 +      },
 +      "dependencies": {
 +        "acorn": {
 +          "version": "4.0.13",
 +          "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
 +          "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "agentkeepalive": {
 +      "version": "2.2.0",
 +      "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz",
 +      "integrity": "sha1-xdG9SxKQCPEWPyNvhuX66iAm4u8=",
 +      "dev": true
 +    },
 +    "ajv": {
 +      "version": "4.11.8",
 +      "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
 +      "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
 +      "dev": true,
 +      "requires": {
 +        "co": "4.6.0",
 +        "json-stable-stringify": "1.0.1"
 +      }
 +    },
 +    "algoliasearch": {
 +      "version": "3.24.0",
 +      "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.24.0.tgz",
 +      "integrity": "sha1-0KasKWO3gdL7BZo6hT/hh2VnM0Y=",
 +      "dev": true,
 +      "requires": {
 +        "agentkeepalive": "2.2.0",
 +        "debug": "2.6.8",
 +        "envify": "4.1.0",
 +        "es6-promise": "4.1.1",
 +        "events": "1.1.1",
 +        "foreach": "2.0.5",
 +        "global": "4.3.2",
 +        "inherits": "2.0.3",
 +        "isarray": "2.0.1",
 +        "load-script": "1.0.0",
 +        "object-keys": "1.0.11",
 +        "querystring-es3": "0.2.1",
 +        "reduce": "1.0.1",
 +        "semver": "5.3.0",
 +        "tunnel-agent": "0.6.0"
 +      },
 +      "dependencies": {
 +        "es6-promise": {
 +          "version": "4.1.1",
 +          "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz",
 +          "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==",
 +          "dev": true
 +        },
 +        "isarray": {
 +          "version": "2.0.1",
 +          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
 +          "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
 +          "dev": true
 +        },
 +        "tunnel-agent": {
 +          "version": "0.6.0",
 +          "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
 +          "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
 +          "dev": true,
 +          "requires": {
 +            "safe-buffer": "5.1.1"
 +          }
 +        }
 +      }
 +    },
 +    "align-text": {
 +      "version": "0.1.4",
 +      "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
 +      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
 +      "dev": true,
 +      "requires": {
 +        "kind-of": "3.2.2",
 +        "longest": "1.0.1",
 +        "repeat-string": "1.6.1"
 +      }
 +    },
 +    "alphanum-sort": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
 +      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
 +      "dev": true
 +    },
 +    "ansi-regex": {
 +      "version": "2.1.1",
 +      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
 +      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
 +      "dev": true
 +    },
 +    "ansi-styles": {
 +      "version": "2.2.1",
 +      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
 +      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
 +      "dev": true
 +    },
 +    "any-promise": {
 +      "version": "0.1.0",
 +      "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-0.1.0.tgz",
 +      "integrity": "sha1-gwtoCqflbzNFHUsEnzvYBESY7ic=",
 +      "dev": true
 +    },
 +    "anymatch": {
 +      "version": "1.3.0",
 +      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz",
 +      "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=",
 +      "dev": true,
 +      "requires": {
 +        "arrify": "1.0.1",
 +        "micromatch": "2.3.11"
 +      }
 +    },
 +    "argparse": {
 +      "version": "1.0.9",
 +      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
 +      "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
 +      "dev": true,
 +      "requires": {
 +        "sprintf-js": "1.0.3"
 +      }
 +    },
 +    "arr-diff": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
 +      "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
 +      "dev": true,
 +      "requires": {
 +        "arr-flatten": "1.1.0"
 +      }
 +    },
 +    "arr-flatten": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
 +      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
 +      "dev": true
 +    },
 +    "array-unique": {
 +      "version": "0.2.1",
 +      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
 +      "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
 +      "dev": true
 +    },
 +    "arrify": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
 +      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
 +      "dev": true
 +    },
 +    "asn1.js": {
 +      "version": "4.9.1",
 +      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz",
 +      "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=",
 +      "dev": true,
 +      "requires": {
 +        "bn.js": "4.11.7",
 +        "inherits": "2.0.3",
 +        "minimalistic-assert": "1.0.0"
 +      }
 +    },
 +    "assert": {
 +      "version": "1.4.1",
 +      "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
 +      "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
 +      "dev": true,
 +      "requires": {
 +        "util": "0.10.3"
 +      }
 +    },
 +    "async": {
 +      "version": "2.5.0",
 +      "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz",
 +      "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==",
 +      "dev": true,
 +      "requires": {
 +        "lodash": "4.17.4"
 +      }
 +    },
 +    "async-each": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
 +      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
 +      "dev": true
 +    },
 +    "autocomplete.js": {
 +      "version": "0.28.2",
 +      "resolved": "https://registry.npmjs.org/autocomplete.js/-/autocomplete.js-0.28.2.tgz",
 +      "integrity": "sha1-7EXDTbjzgdRzK99FoKHveu0ewiA=",
 +      "dev": true,
 +      "requires": {
 +        "immediate": "3.2.3"
 +      }
 +    },
 +    "autoprefixer": {
 +      "version": "6.7.7",
 +      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
 +      "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
 +      "dev": true,
 +      "requires": {
 +        "browserslist": "1.7.7",
 +        "caniuse-db": "1.0.30000699",
 +        "normalize-range": "0.1.2",
 +        "num2fraction": "1.2.2",
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      },
 +      "dependencies": {
 +        "browserslist": {
 +          "version": "1.7.7",
 +          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
 +          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
 +          "dev": true,
 +          "requires": {
 +            "caniuse-db": "1.0.30000699",
 +            "electron-to-chromium": "1.3.15"
 +          }
 +        }
 +      }
 +    },
 +    "babel-code-frame": {
 +      "version": "6.22.0",
 +      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz",
 +      "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=",
 +      "dev": true,
 +      "requires": {
 +        "chalk": "1.1.3",
 +        "esutils": "2.0.2",
 +        "js-tokens": "3.0.2"
 +      }
 +    },
 +    "babel-core": {
 +      "version": "6.25.0",
 +      "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz",
 +      "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=",
 +      "dev": true,
 +      "requires": {
 +        "babel-code-frame": "6.22.0",
 +        "babel-generator": "6.25.0",
 +        "babel-helpers": "6.24.1",
 +        "babel-messages": "6.23.0",
 +        "babel-register": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0",
 +        "babel-traverse": "6.25.0",
 +        "babel-types": "6.25.0",
 +        "babylon": "6.17.4",
 +        "convert-source-map": "1.5.0",
 +        "debug": "2.6.8",
 +        "json5": "0.5.1",
 +        "lodash": "4.17.4",
 +        "minimatch": "3.0.4",
 +        "path-is-absolute": "1.0.1",
 +        "private": "0.1.7",
 +        "slash": "1.0.0",
 +        "source-map": "0.5.6"
 +      }
 +    },
 +    "babel-generator": {
 +      "version": "6.25.0",
 +      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz",
 +      "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=",
 +      "dev": true,
 +      "requires": {
 +        "babel-messages": "6.23.0",
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0",
 +        "detect-indent": "4.0.0",
 +        "jsesc": "1.3.0",
 +        "lodash": "4.17.4",
 +        "source-map": "0.5.6",
 +        "trim-right": "1.0.1"
 +      }
 +    },
 +    "babel-helper-builder-binary-assignment-operator-visitor": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
 +      "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-explode-assignable-expression": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-helper-call-delegate": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
 +      "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-hoist-variables": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-traverse": "6.25.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-helper-define-map": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz",
 +      "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-function-name": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0",
 +        "lodash": "4.17.4"
 +      }
 +    },
 +    "babel-helper-explode-assignable-expression": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
 +      "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-traverse": "6.25.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-helper-function-name": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
 +      "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-get-function-arity": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0",
 +        "babel-traverse": "6.25.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-helper-get-function-arity": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
 +      "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-helper-hoist-variables": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
 +      "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-helper-optimise-call-expression": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
 +      "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-helper-regex": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz",
 +      "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0",
 +        "lodash": "4.17.4"
 +      }
 +    },
 +    "babel-helper-remap-async-to-generator": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
 +      "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-function-name": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0",
 +        "babel-traverse": "6.25.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-helper-replace-supers": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
 +      "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-optimise-call-expression": "6.24.1",
 +        "babel-messages": "6.23.0",
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0",
 +        "babel-traverse": "6.25.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-helpers": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
 +      "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0"
 +      }
 +    },
 +    "babel-loader": {
 +      "version": "7.1.1",
 +      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.1.tgz",
 +      "integrity": "sha1-uHE0yLEuPkwqlOBUYIW8aAorhIg=",
 +      "dev": true,
 +      "requires": {
 +        "find-cache-dir": "1.0.0",
 +        "loader-utils": "1.1.0",
 +        "mkdirp": "0.5.1"
 +      }
 +    },
 +    "babel-messages": {
 +      "version": "6.23.0",
 +      "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
 +      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-check-es2015-constants": {
 +      "version": "6.22.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
 +      "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-syntax-async-functions": {
 +      "version": "6.13.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
 +      "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
 +      "dev": true
 +    },
 +    "babel-plugin-syntax-exponentiation-operator": {
 +      "version": "6.13.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
 +      "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
 +      "dev": true
 +    },
 +    "babel-plugin-syntax-trailing-function-commas": {
 +      "version": "6.22.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
 +      "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
 +      "dev": true
 +    },
 +    "babel-plugin-transform-async-to-generator": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
 +      "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-remap-async-to-generator": "6.24.1",
 +        "babel-plugin-syntax-async-functions": "6.13.0",
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-arrow-functions": {
 +      "version": "6.22.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
 +      "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-block-scoped-functions": {
 +      "version": "6.22.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
 +      "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-block-scoping": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz",
 +      "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0",
 +        "babel-traverse": "6.25.0",
 +        "babel-types": "6.25.0",
 +        "lodash": "4.17.4"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-classes": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
 +      "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-define-map": "6.24.1",
 +        "babel-helper-function-name": "6.24.1",
 +        "babel-helper-optimise-call-expression": "6.24.1",
 +        "babel-helper-replace-supers": "6.24.1",
 +        "babel-messages": "6.23.0",
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0",
 +        "babel-traverse": "6.25.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-computed-properties": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
 +      "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-destructuring": {
 +      "version": "6.23.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
 +      "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-duplicate-keys": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
 +      "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-for-of": {
 +      "version": "6.23.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
 +      "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-function-name": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
 +      "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-function-name": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-literals": {
 +      "version": "6.22.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
 +      "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-modules-amd": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
 +      "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
 +      "dev": true,
 +      "requires": {
 +        "babel-plugin-transform-es2015-modules-commonjs": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-modules-commonjs": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz",
 +      "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=",
 +      "dev": true,
 +      "requires": {
 +        "babel-plugin-transform-strict-mode": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-modules-systemjs": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
 +      "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-hoist-variables": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-modules-umd": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
 +      "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
 +      "dev": true,
 +      "requires": {
 +        "babel-plugin-transform-es2015-modules-amd": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-object-super": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
 +      "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-replace-supers": "6.24.1",
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-parameters": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
 +      "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-call-delegate": "6.24.1",
 +        "babel-helper-get-function-arity": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-template": "6.25.0",
 +        "babel-traverse": "6.25.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-shorthand-properties": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
 +      "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-spread": {
 +      "version": "6.22.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
 +      "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-sticky-regex": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
 +      "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-regex": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-template-literals": {
 +      "version": "6.22.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
 +      "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-typeof-symbol": {
 +      "version": "6.23.0",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
 +      "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-transform-es2015-unicode-regex": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
 +      "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-regex": "6.24.1",
 +        "babel-runtime": "6.23.0",
 +        "regexpu-core": "2.0.0"
 +      }
 +    },
 +    "babel-plugin-transform-exponentiation-operator": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
 +      "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
 +      "dev": true,
 +      "requires": {
 +        "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1",
 +        "babel-plugin-syntax-exponentiation-operator": "6.13.0",
 +        "babel-runtime": "6.23.0"
 +      }
 +    },
 +    "babel-plugin-transform-regenerator": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz",
 +      "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=",
 +      "dev": true,
 +      "requires": {
 +        "regenerator-transform": "0.9.11"
 +      }
 +    },
 +    "babel-plugin-transform-strict-mode": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
 +      "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0"
 +      }
 +    },
 +    "babel-preset-env": {
 +      "version": "1.6.0",
 +      "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.0.tgz",
 +      "integrity": "sha512-OVgtQRuOZKckrILgMA5rvctvFZPv72Gua9Rt006AiPoB0DJKGN07UmaQA+qRrYgK71MVct8fFhT0EyNWYorVew==",
 +      "dev": true,
 +      "requires": {
 +        "babel-plugin-check-es2015-constants": "6.22.0",
 +        "babel-plugin-syntax-trailing-function-commas": "6.22.0",
 +        "babel-plugin-transform-async-to-generator": "6.24.1",
 +        "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
 +        "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
 +        "babel-plugin-transform-es2015-block-scoping": "6.24.1",
 +        "babel-plugin-transform-es2015-classes": "6.24.1",
 +        "babel-plugin-transform-es2015-computed-properties": "6.24.1",
 +        "babel-plugin-transform-es2015-destructuring": "6.23.0",
 +        "babel-plugin-transform-es2015-duplicate-keys": "6.24.1",
 +        "babel-plugin-transform-es2015-for-of": "6.23.0",
 +        "babel-plugin-transform-es2015-function-name": "6.24.1",
 +        "babel-plugin-transform-es2015-literals": "6.22.0",
 +        "babel-plugin-transform-es2015-modules-amd": "6.24.1",
 +        "babel-plugin-transform-es2015-modules-commonjs": "6.24.1",
 +        "babel-plugin-transform-es2015-modules-systemjs": "6.24.1",
 +        "babel-plugin-transform-es2015-modules-umd": "6.24.1",
 +        "babel-plugin-transform-es2015-object-super": "6.24.1",
 +        "babel-plugin-transform-es2015-parameters": "6.24.1",
 +        "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
 +        "babel-plugin-transform-es2015-spread": "6.22.0",
 +        "babel-plugin-transform-es2015-sticky-regex": "6.24.1",
 +        "babel-plugin-transform-es2015-template-literals": "6.22.0",
 +        "babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
 +        "babel-plugin-transform-es2015-unicode-regex": "6.24.1",
 +        "babel-plugin-transform-exponentiation-operator": "6.24.1",
 +        "babel-plugin-transform-regenerator": "6.24.1",
 +        "browserslist": "2.1.5",
 +        "invariant": "2.2.2",
 +        "semver": "5.3.0"
 +      }
 +    },
 +    "babel-register": {
 +      "version": "6.24.1",
 +      "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz",
 +      "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=",
 +      "dev": true,
 +      "requires": {
 +        "babel-core": "6.25.0",
 +        "babel-runtime": "6.23.0",
 +        "core-js": "2.4.1",
 +        "home-or-tmp": "2.0.0",
 +        "lodash": "4.17.4",
 +        "mkdirp": "0.5.1",
 +        "source-map-support": "0.4.15"
 +      }
 +    },
 +    "babel-runtime": {
 +      "version": "6.23.0",
 +      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz",
 +      "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=",
 +      "dev": true,
 +      "requires": {
 +        "core-js": "2.4.1",
 +        "regenerator-runtime": "0.10.5"
 +      }
 +    },
 +    "babel-template": {
 +      "version": "6.25.0",
 +      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz",
 +      "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-traverse": "6.25.0",
 +        "babel-types": "6.25.0",
 +        "babylon": "6.17.4",
 +        "lodash": "4.17.4"
 +      }
 +    },
 +    "babel-traverse": {
 +      "version": "6.25.0",
 +      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz",
 +      "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=",
 +      "dev": true,
 +      "requires": {
 +        "babel-code-frame": "6.22.0",
 +        "babel-messages": "6.23.0",
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0",
 +        "babylon": "6.17.4",
 +        "debug": "2.6.8",
 +        "globals": "9.18.0",
 +        "invariant": "2.2.2",
 +        "lodash": "4.17.4"
 +      }
 +    },
 +    "babel-types": {
 +      "version": "6.25.0",
 +      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz",
 +      "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "esutils": "2.0.2",
 +        "lodash": "4.17.4",
 +        "to-fast-properties": "1.0.3"
 +      }
 +    },
 +    "babylon": {
 +      "version": "6.17.4",
 +      "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz",
 +      "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==",
 +      "dev": true
 +    },
 +    "balanced-match": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
 +      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
 +      "dev": true
 +    },
 +    "base64-js": {
 +      "version": "1.2.1",
 +      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
 +      "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==",
 +      "dev": true
 +    },
 +    "big.js": {
 +      "version": "3.1.3",
 +      "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz",
 +      "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=",
 +      "dev": true
 +    },
 +    "binary-extensions": {
 +      "version": "1.8.0",
 +      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz",
 +      "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=",
 +      "dev": true
 +    },
 +    "bn.js": {
 +      "version": "4.11.7",
 +      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz",
 +      "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==",
 +      "dev": true
 +    },
 +    "brace-expansion": {
 +      "version": "1.1.8",
 +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
 +      "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
 +      "dev": true,
 +      "requires": {
 +        "balanced-match": "1.0.0",
 +        "concat-map": "0.0.1"
 +      }
 +    },
 +    "braces": {
 +      "version": "1.8.5",
 +      "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
 +      "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
 +      "dev": true,
 +      "requires": {
 +        "expand-range": "1.8.2",
 +        "preserve": "0.2.0",
 +        "repeat-element": "1.1.2"
 +      }
 +    },
 +    "brorand": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
 +      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
 +      "dev": true
 +    },
 +    "browserify-aes": {
 +      "version": "1.0.6",
 +      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz",
 +      "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=",
 +      "dev": true,
 +      "requires": {
 +        "buffer-xor": "1.0.3",
 +        "cipher-base": "1.0.4",
 +        "create-hash": "1.1.3",
 +        "evp_bytestokey": "1.0.0",
 +        "inherits": "2.0.3"
 +      }
 +    },
 +    "browserify-cipher": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz",
 +      "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=",
 +      "dev": true,
 +      "requires": {
 +        "browserify-aes": "1.0.6",
 +        "browserify-des": "1.0.0",
 +        "evp_bytestokey": "1.0.0"
 +      }
 +    },
 +    "browserify-des": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz",
 +      "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=",
 +      "dev": true,
 +      "requires": {
 +        "cipher-base": "1.0.4",
 +        "des.js": "1.0.0",
 +        "inherits": "2.0.3"
 +      }
 +    },
 +    "browserify-rsa": {
 +      "version": "4.0.1",
 +      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
 +      "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
 +      "dev": true,
 +      "requires": {
 +        "bn.js": "4.11.7",
 +        "randombytes": "2.0.5"
 +      }
 +    },
 +    "browserify-sign": {
 +      "version": "4.0.4",
 +      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
 +      "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
 +      "dev": true,
 +      "requires": {
 +        "bn.js": "4.11.7",
 +        "browserify-rsa": "4.0.1",
 +        "create-hash": "1.1.3",
 +        "create-hmac": "1.1.6",
 +        "elliptic": "6.4.0",
 +        "inherits": "2.0.3",
 +        "parse-asn1": "5.1.0"
 +      }
 +    },
 +    "browserify-zlib": {
 +      "version": "0.1.4",
 +      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
 +      "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
 +      "dev": true,
 +      "requires": {
 +        "pako": "0.2.9"
 +      }
 +    },
 +    "browserslist": {
 +      "version": "2.1.5",
 +      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.1.5.tgz",
 +      "integrity": "sha1-6IJVDfPRzW1IHBo+ADjyuvE6RxE=",
 +      "dev": true,
 +      "requires": {
 +        "caniuse-lite": "1.0.30000699",
 +        "electron-to-chromium": "1.3.15"
 +      }
 +    },
 +    "buffer": {
 +      "version": "4.9.1",
 +      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
 +      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
 +      "dev": true,
 +      "requires": {
 +        "base64-js": "1.2.1",
 +        "ieee754": "1.1.8",
 +        "isarray": "1.0.0"
 +      }
 +    },
 +    "buffer-xor": {
 +      "version": "1.0.3",
 +      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
 +      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
 +      "dev": true
 +    },
 +    "builtin-modules": {
 +      "version": "1.1.1",
 +      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
 +      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
 +      "dev": true
 +    },
 +    "builtin-status-codes": {
 +      "version": "3.0.0",
 +      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
 +      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
 +      "dev": true
 +    },
 +    "caniuse-api": {
 +      "version": "1.6.1",
 +      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz",
 +      "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
 +      "dev": true,
 +      "requires": {
 +        "browserslist": "1.7.7",
 +        "caniuse-db": "1.0.30000699",
 +        "lodash.memoize": "4.1.2",
 +        "lodash.uniq": "4.5.0"
 +      },
 +      "dependencies": {
 +        "browserslist": {
 +          "version": "1.7.7",
 +          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
 +          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
 +          "dev": true,
 +          "requires": {
 +            "caniuse-db": "1.0.30000699",
 +            "electron-to-chromium": "1.3.15"
 +          }
 +        }
 +      }
 +    },
 +    "caniuse-db": {
 +      "version": "1.0.30000699",
 +      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000699.tgz",
 +      "integrity": "sha1-WvSRqxx3dWGjK0P+JT1qcHHM+Xk=",
 +      "dev": true
 +    },
 +    "caniuse-lite": {
 +      "version": "1.0.30000699",
 +      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000699.tgz",
 +      "integrity": "sha1-Khh7c37aqevtu7Vu3LU+mU7O2gw=",
 +      "dev": true
 +    },
 +    "center-align": {
 +      "version": "0.1.3",
 +      "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
 +      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
 +      "dev": true,
 +      "requires": {
 +        "align-text": "0.1.4",
 +        "lazy-cache": "1.0.4"
 +      }
 +    },
 +    "chalk": {
 +      "version": "1.1.3",
 +      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
 +      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
 +      "dev": true,
 +      "requires": {
 +        "ansi-styles": "2.2.1",
 +        "escape-string-regexp": "1.0.5",
 +        "has-ansi": "2.0.0",
 +        "strip-ansi": "3.0.1",
 +        "supports-color": "2.0.0"
 +      }
 +    },
 +    "chokidar": {
 +      "version": "1.7.0",
 +      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
 +      "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
 +      "dev": true,
 +      "requires": {
 +        "anymatch": "1.3.0",
 +        "async-each": "1.0.1",
 +        "fsevents": "1.1.2",
 +        "glob-parent": "2.0.0",
 +        "inherits": "2.0.3",
 +        "is-binary-path": "1.0.1",
 +        "is-glob": "2.0.1",
 +        "path-is-absolute": "1.0.1",
 +        "readdirp": "2.1.0"
 +      }
 +    },
 +    "cipher-base": {
 +      "version": "1.0.4",
 +      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
 +      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
 +      "dev": true,
 +      "requires": {
 +        "inherits": "2.0.3",
 +        "safe-buffer": "5.1.1"
 +      }
 +    },
 +    "clap": {
 +      "version": "1.2.0",
 +      "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz",
 +      "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=",
 +      "dev": true,
 +      "requires": {
 +        "chalk": "1.1.3"
 +      }
 +    },
 +    "clipboard": {
 +      "version": "1.7.1",
 +      "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz",
 +      "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=",
 +      "dev": true,
 +      "requires": {
 +        "good-listener": "1.2.2",
 +        "select": "1.1.2",
 +        "tiny-emitter": "2.0.1"
 +      }
 +    },
 +    "cliui": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
 +      "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
 +      "dev": true,
 +      "requires": {
 +        "center-align": "0.1.3",
 +        "right-align": "0.1.3",
 +        "wordwrap": "0.0.2"
 +      },
 +      "dependencies": {
 +        "wordwrap": {
 +          "version": "0.0.2",
 +          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
 +          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "clone": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz",
 +      "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=",
 +      "dev": true
 +    },
 +    "co": {
 +      "version": "4.6.0",
 +      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
 +      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
 +      "dev": true
 +    },
 +    "coa": {
 +      "version": "1.0.4",
 +      "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
 +      "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
 +      "dev": true,
 +      "requires": {
 +        "q": "1.5.0"
 +      }
 +    },
 +    "code-point-at": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
 +      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
 +      "dev": true
 +    },
 +    "color": {
 +      "version": "0.11.4",
 +      "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
 +      "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
 +      "dev": true,
 +      "requires": {
 +        "clone": "1.0.2",
 +        "color-convert": "1.9.0",
 +        "color-string": "0.3.0"
 +      }
 +    },
 +    "color-convert": {
 +      "version": "1.9.0",
 +      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz",
 +      "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=",
 +      "dev": true,
 +      "requires": {
 +        "color-name": "1.1.2"
 +      }
 +    },
 +    "color-name": {
 +      "version": "1.1.2",
 +      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz",
 +      "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=",
 +      "dev": true
 +    },
 +    "color-string": {
 +      "version": "0.3.0",
 +      "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
 +      "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
 +      "dev": true,
 +      "requires": {
 +        "color-name": "1.1.2"
 +      }
 +    },
 +    "colormin": {
 +      "version": "1.1.2",
 +      "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz",
 +      "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
 +      "dev": true,
 +      "requires": {
 +        "color": "0.11.4",
 +        "css-color-names": "0.0.4",
 +        "has": "1.0.1"
 +      }
 +    },
 +    "colors": {
 +      "version": "1.1.2",
 +      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
 +      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
 +      "dev": true
 +    },
 +    "commondir": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
 +      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
 +      "dev": true
 +    },
 +    "concat-map": {
 +      "version": "0.0.1",
 +      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
 +      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
 +      "dev": true
 +    },
 +    "console-browserify": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
 +      "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
 +      "dev": true,
 +      "requires": {
 +        "date-now": "0.1.4"
 +      }
 +    },
 +    "constants-browserify": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
 +      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
 +      "dev": true
 +    },
 +    "convert-source-map": {
 +      "version": "1.5.0",
 +      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
 +      "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=",
 +      "dev": true
 +    },
 +    "core-js": {
 +      "version": "2.4.1",
 +      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz",
 +      "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=",
 +      "dev": true
 +    },
 +    "core-util-is": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
 +      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
 +      "dev": true
 +    },
 +    "cosmiconfig": {
 +      "version": "2.1.3",
 +      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.1.3.tgz",
 +      "integrity": "sha1-lSdx6w3dwcs/ovb75RpSLpOz7go=",
 +      "dev": true,
 +      "requires": {
 +        "is-directory": "0.3.1",
 +        "js-yaml": "3.7.0",
 +        "minimist": "1.2.0",
 +        "object-assign": "4.1.1",
 +        "os-homedir": "1.0.2",
 +        "parse-json": "2.2.0",
 +        "require-from-string": "1.2.1"
 +      },
 +      "dependencies": {
 +        "minimist": {
 +          "version": "1.2.0",
 +          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
 +          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "create-ecdh": {
 +      "version": "4.0.0",
 +      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz",
 +      "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=",
 +      "dev": true,
 +      "requires": {
 +        "bn.js": "4.11.7",
 +        "elliptic": "6.4.0"
 +      }
 +    },
 +    "create-hash": {
 +      "version": "1.1.3",
 +      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
 +      "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=",
 +      "dev": true,
 +      "requires": {
 +        "cipher-base": "1.0.4",
 +        "inherits": "2.0.3",
 +        "ripemd160": "2.0.1",
 +        "sha.js": "2.4.8"
 +      }
 +    },
 +    "create-hmac": {
 +      "version": "1.1.6",
 +      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz",
 +      "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=",
 +      "dev": true,
 +      "requires": {
 +        "cipher-base": "1.0.4",
 +        "create-hash": "1.1.3",
 +        "inherits": "2.0.3",
 +        "ripemd160": "2.0.1",
 +        "safe-buffer": "5.1.1",
 +        "sha.js": "2.4.8"
 +      }
 +    },
 +    "crypto-browserify": {
 +      "version": "3.11.1",
 +      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz",
 +      "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==",
 +      "dev": true,
 +      "requires": {
 +        "browserify-cipher": "1.0.0",
 +        "browserify-sign": "4.0.4",
 +        "create-ecdh": "4.0.0",
 +        "create-hash": "1.1.3",
 +        "create-hmac": "1.1.6",
 +        "diffie-hellman": "5.0.2",
 +        "inherits": "2.0.3",
 +        "pbkdf2": "3.0.12",
 +        "public-encrypt": "4.0.0",
 +        "randombytes": "2.0.5"
 +      }
 +    },
 +    "css-color-function": {
 +      "version": "1.3.0",
 +      "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.0.tgz",
 +      "integrity": "sha1-csdnuvl48BuKipT0Lxe6XSKndvw=",
 +      "dev": true,
 +      "requires": {
 +        "balanced-match": "0.1.0",
 +        "color": "0.11.4",
 +        "debug": "0.7.4",
 +        "rgb": "0.1.0"
 +      },
 +      "dependencies": {
 +        "balanced-match": {
 +          "version": "0.1.0",
 +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz",
 +          "integrity": "sha1-tQS9BYabOSWd0MXvw12EMXbczEo=",
 +          "dev": true
 +        },
 +        "debug": {
 +          "version": "0.7.4",
 +          "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
 +          "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "css-color-names": {
 +      "version": "0.0.4",
 +      "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
 +      "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
 +      "dev": true
 +    },
 +    "css-loader": {
 +      "version": "0.28.4",
 +      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.4.tgz",
 +      "integrity": "sha1-bPNXkZLONV6LONX0Ldeh8uyJjQ8=",
 +      "dev": true,
 +      "requires": {
 +        "babel-code-frame": "6.22.0",
 +        "css-selector-tokenizer": "0.7.0",
 +        "cssnano": "3.10.0",
 +        "icss-utils": "2.1.0",
 +        "loader-utils": "1.1.0",
 +        "lodash.camelcase": "4.3.0",
 +        "object-assign": "4.1.1",
 +        "postcss": "5.2.17",
 +        "postcss-modules-extract-imports": "1.1.0",
 +        "postcss-modules-local-by-default": "1.2.0",
 +        "postcss-modules-scope": "1.1.0",
 +        "postcss-modules-values": "1.3.0",
 +        "postcss-value-parser": "3.3.0",
 +        "source-list-map": "0.1.8"
 +      }
 +    },
 +    "css-selector-tokenizer": {
 +      "version": "0.7.0",
 +      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
 +      "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
 +      "dev": true,
 +      "requires": {
 +        "cssesc": "0.1.0",
 +        "fastparse": "1.1.1",
 +        "regexpu-core": "1.0.0"
 +      },
 +      "dependencies": {
 +        "regexpu-core": {
 +          "version": "1.0.0",
 +          "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
 +          "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
 +          "dev": true,
 +          "requires": {
 +            "regenerate": "1.3.2",
 +            "regjsgen": "0.2.0",
 +            "regjsparser": "0.1.5"
 +          }
 +        }
 +      }
 +    },
 +    "cssesc": {
 +      "version": "0.1.0",
 +      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
 +      "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
 +      "dev": true
 +    },
 +    "cssnano": {
 +      "version": "3.10.0",
 +      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz",
 +      "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
 +      "dev": true,
 +      "requires": {
 +        "autoprefixer": "6.7.7",
 +        "decamelize": "1.2.0",
 +        "defined": "1.0.0",
 +        "has": "1.0.1",
 +        "object-assign": "4.1.1",
 +        "postcss": "5.2.17",
 +        "postcss-calc": "5.3.1",
 +        "postcss-colormin": "2.2.2",
 +        "postcss-convert-values": "2.6.1",
 +        "postcss-discard-comments": "2.0.4",
 +        "postcss-discard-duplicates": "2.1.0",
 +        "postcss-discard-empty": "2.1.0",
 +        "postcss-discard-overridden": "0.1.1",
 +        "postcss-discard-unused": "2.2.3",
 +        "postcss-filter-plugins": "2.0.2",
 +        "postcss-merge-idents": "2.1.7",
 +        "postcss-merge-longhand": "2.0.2",
 +        "postcss-merge-rules": "2.1.2",
 +        "postcss-minify-font-values": "1.0.5",
 +        "postcss-minify-gradients": "1.0.5",
 +        "postcss-minify-params": "1.2.2",
 +        "postcss-minify-selectors": "2.1.1",
 +        "postcss-normalize-charset": "1.1.1",
 +        "postcss-normalize-url": "3.0.8",
 +        "postcss-ordered-values": "2.2.3",
 +        "postcss-reduce-idents": "2.4.0",
 +        "postcss-reduce-initial": "1.0.1",
 +        "postcss-reduce-transforms": "1.0.4",
 +        "postcss-svgo": "2.1.6",
 +        "postcss-unique-selectors": "2.0.2",
 +        "postcss-value-parser": "3.3.0",
 +        "postcss-zindex": "2.2.0"
 +      }
 +    },
 +    "csso": {
 +      "version": "2.3.2",
 +      "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz",
 +      "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
 +      "dev": true,
 +      "requires": {
 +        "clap": "1.2.0",
 +        "source-map": "0.5.6"
 +      }
 +    },
 +    "date-now": {
 +      "version": "0.1.4",
 +      "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
 +      "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
 +      "dev": true
 +    },
 +    "debug": {
 +      "version": "2.6.8",
 +      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
 +      "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
 +      "dev": true,
 +      "requires": {
 +        "ms": "2.0.0"
 +      }
 +    },
 +    "decamelize": {
 +      "version": "1.2.0",
 +      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
 +      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
 +      "dev": true
 +    },
 +    "defined": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
 +      "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
 +      "dev": true
 +    },
 +    "delegate": {
 +      "version": "3.1.3",
 +      "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.1.3.tgz",
 +      "integrity": "sha1-moJRp3fXAl+qVXN7w7BxdCEnqf0=",
 +      "dev": true
 +    },
 +    "des.js": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
 +      "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
 +      "dev": true,
 +      "requires": {
 +        "inherits": "2.0.3",
 +        "minimalistic-assert": "1.0.0"
 +      }
 +    },
 +    "detect-indent": {
 +      "version": "4.0.0",
 +      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
 +      "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
 +      "dev": true,
 +      "requires": {
 +        "repeating": "2.0.1"
 +      }
 +    },
 +    "diffie-hellman": {
 +      "version": "5.0.2",
 +      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz",
 +      "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=",
 +      "dev": true,
 +      "requires": {
 +        "bn.js": "4.11.7",
 +        "miller-rabin": "4.0.0",
 +        "randombytes": "2.0.5"
 +      }
 +    },
 +    "docsearch.js": {
 +      "version": "2.3.3",
 +      "resolved": "https://registry.npmjs.org/docsearch.js/-/docsearch.js-2.3.3.tgz",
 +      "integrity": "sha1-ba7k+5eDZdA4lgtNCuU2ClQAKgw=",
 +      "dev": true,
 +      "requires": {
 +        "algoliasearch": "3.24.0",
 +        "autocomplete.js": "0.28.2",
 +        "hogan.js": "3.0.2",
 +        "to-factory": "1.0.0"
 +      }
 +    },
 +    "dom-walk": {
 +      "version": "0.1.1",
 +      "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
 +      "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=",
 +      "dev": true
 +    },
 +    "domain-browser": {
 +      "version": "1.1.7",
 +      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
 +      "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
 +      "dev": true
 +    },
 +    "electron-to-chromium": {
 +      "version": "1.3.15",
 +      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.15.tgz",
 +      "integrity": "sha1-CDl5NIkcvPrrvRi4KpW1pIETg2k=",
 +      "dev": true
 +    },
 +    "elliptic": {
 +      "version": "6.4.0",
 +      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
 +      "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
 +      "dev": true,
 +      "requires": {
 +        "bn.js": "4.11.7",
 +        "brorand": "1.1.0",
 +        "hash.js": "1.1.3",
 +        "hmac-drbg": "1.0.1",
 +        "inherits": "2.0.3",
 +        "minimalistic-assert": "1.0.0",
 +        "minimalistic-crypto-utils": "1.0.1"
 +      }
 +    },
 +    "emojis-list": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
 +      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
 +      "dev": true
 +    },
 +    "enhanced-resolve": {
 +      "version": "3.3.0",
 +      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz",
 +      "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==",
 +      "dev": true,
 +      "requires": {
 +        "graceful-fs": "4.1.11",
 +        "memory-fs": "0.4.1",
 +        "object-assign": "4.1.1",
 +        "tapable": "0.2.6"
 +      }
 +    },
 +    "envify": {
 +      "version": "4.1.0",
 +      "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz",
 +      "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==",
 +      "dev": true,
 +      "requires": {
 +        "esprima": "4.0.0",
 +        "through": "2.3.8"
 +      },
 +      "dependencies": {
 +        "esprima": {
 +          "version": "4.0.0",
 +          "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
 +          "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "errno": {
 +      "version": "0.1.4",
 +      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz",
 +      "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=",
 +      "dev": true,
 +      "requires": {
 +        "prr": "0.0.0"
 +      }
 +    },
 +    "error-ex": {
 +      "version": "1.3.1",
 +      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
 +      "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
 +      "dev": true,
 +      "requires": {
 +        "is-arrayish": "0.2.1"
 +      }
 +    },
 +    "escape-string-regexp": {
 +      "version": "1.0.5",
 +      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
 +      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
 +      "dev": true
 +    },
 +    "esprima": {
 +      "version": "2.7.3",
 +      "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
 +      "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
 +      "dev": true
 +    },
 +    "esutils": {
 +      "version": "2.0.2",
 +      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
 +      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
 +      "dev": true
 +    },
 +    "events": {
 +      "version": "1.1.1",
 +      "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
 +      "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
 +      "dev": true
 +    },
 +    "evp_bytestokey": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz",
 +      "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=",
 +      "dev": true,
 +      "requires": {
 +        "create-hash": "1.1.3"
 +      }
 +    },
 +    "expand-brackets": {
 +      "version": "0.1.5",
 +      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
 +      "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
 +      "dev": true,
 +      "requires": {
 +        "is-posix-bracket": "0.1.1"
 +      }
 +    },
 +    "expand-range": {
 +      "version": "1.8.2",
 +      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
 +      "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
 +      "dev": true,
 +      "requires": {
 +        "fill-range": "2.2.3"
 +      }
 +    },
 +    "extglob": {
 +      "version": "0.3.2",
 +      "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
 +      "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
 +      "dev": true,
 +      "requires": {
 +        "is-extglob": "1.0.0"
 +      }
 +    },
 +    "extract-text-webpack-plugin": {
 +      "version": "2.1.2",
 +      "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz",
 +      "integrity": "sha1-dW7076gVXDaBgz+8NNpTuUF0bWw=",
 +      "dev": true,
 +      "requires": {
 +        "async": "2.5.0",
 +        "loader-utils": "1.1.0",
 +        "schema-utils": "0.3.0",
 +        "webpack-sources": "1.0.1"
 +      }
 +    },
 +    "fast-deep-equal": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
 +      "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=",
 +      "dev": true
 +    },
 +    "fastparse": {
 +      "version": "1.1.1",
 +      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
 +      "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=",
 +      "dev": true
 +    },
 +    "file-loader": {
 +      "version": "0.11.2",
 +      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz",
 +      "integrity": "sha512-N+uhF3mswIFeziHQjGScJ/yHXYt3DiLBeC+9vWW+WjUBiClMSOlV1YrXQi+7KM2aA3Rn4Bybgv+uXFQbfkzpvg==",
 +      "dev": true,
 +      "requires": {
 +        "loader-utils": "1.1.0"
 +      }
 +    },
 +    "filename-regex": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
 +      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
 +      "dev": true
 +    },
 +    "fill-range": {
 +      "version": "2.2.3",
 +      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
 +      "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
 +      "dev": true,
 +      "requires": {
 +        "is-number": "2.1.0",
 +        "isobject": "2.1.0",
 +        "randomatic": "1.1.7",
 +        "repeat-element": "1.1.2",
 +        "repeat-string": "1.6.1"
 +      }
 +    },
 +    "find-cache-dir": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
 +      "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
 +      "dev": true,
 +      "requires": {
 +        "commondir": "1.0.1",
 +        "make-dir": "1.0.0",
 +        "pkg-dir": "2.0.0"
 +      }
 +    },
 +    "find-up": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
 +      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
 +      "dev": true,
 +      "requires": {
 +        "locate-path": "2.0.0"
 +      }
 +    },
 +    "flatten": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
 +      "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
 +      "dev": true
 +    },
 +    "for-in": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
 +      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
 +      "dev": true
 +    },
 +    "for-own": {
 +      "version": "0.1.5",
 +      "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
 +      "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
 +      "dev": true,
 +      "requires": {
 +        "for-in": "1.0.2"
 +      }
 +    },
 +    "foreach": {
 +      "version": "2.0.5",
 +      "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
 +      "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
 +      "dev": true
 +    },
 +    "fsevents": {
 +      "version": "1.1.2",
 +      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz",
 +      "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==",
 +      "dev": true,
 +      "optional": true,
 +      "requires": {
 +        "nan": "2.6.2",
 +        "node-pre-gyp": "0.6.36"
 +      },
 +      "dependencies": {
 +        "abbrev": {
 +          "version": "1.1.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "ajv": {
 +          "version": "4.11.8",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "co": "4.6.0",
 +            "json-stable-stringify": "1.0.1"
 +          }
 +        },
 +        "ansi-regex": {
 +          "version": "2.1.1",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "aproba": {
 +          "version": "1.1.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "are-we-there-yet": {
 +          "version": "1.1.4",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "delegates": "1.0.0",
 +            "readable-stream": "2.2.9"
 +          }
 +        },
 +        "asn1": {
 +          "version": "0.2.3",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "assert-plus": {
 +          "version": "0.2.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "asynckit": {
 +          "version": "0.4.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "aws-sign2": {
 +          "version": "0.6.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "aws4": {
 +          "version": "1.6.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "balanced-match": {
 +          "version": "0.4.2",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "bcrypt-pbkdf": {
 +          "version": "1.0.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "tweetnacl": "0.14.5"
 +          }
 +        },
 +        "block-stream": {
 +          "version": "0.0.9",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "inherits": "2.0.3"
 +          }
 +        },
 +        "boom": {
 +          "version": "2.10.1",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "hoek": "2.16.3"
 +          }
 +        },
 +        "brace-expansion": {
 +          "version": "1.1.7",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "balanced-match": "0.4.2",
 +            "concat-map": "0.0.1"
 +          }
 +        },
 +        "buffer-shims": {
 +          "version": "1.0.0",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "caseless": {
 +          "version": "0.12.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "co": {
 +          "version": "4.6.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "code-point-at": {
 +          "version": "1.1.0",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "combined-stream": {
 +          "version": "1.0.5",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "delayed-stream": "1.0.0"
 +          }
 +        },
 +        "concat-map": {
 +          "version": "0.0.1",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "console-control-strings": {
 +          "version": "1.1.0",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "core-util-is": {
 +          "version": "1.0.2",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "cryptiles": {
 +          "version": "2.0.5",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "boom": "2.10.1"
 +          }
 +        },
 +        "dashdash": {
 +          "version": "1.14.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "assert-plus": "1.0.0"
 +          },
 +          "dependencies": {
 +            "assert-plus": {
 +              "version": "1.0.0",
 +              "bundled": true,
 +              "dev": true,
 +              "optional": true
 +            }
 +          }
 +        },
 +        "debug": {
 +          "version": "2.6.8",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "ms": "2.0.0"
 +          }
 +        },
 +        "deep-extend": {
 +          "version": "0.4.2",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "delayed-stream": {
 +          "version": "1.0.0",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "delegates": {
 +          "version": "1.0.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "ecc-jsbn": {
 +          "version": "0.1.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "jsbn": "0.1.1"
 +          }
 +        },
 +        "extend": {
 +          "version": "3.0.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "extsprintf": {
 +          "version": "1.0.2",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "forever-agent": {
 +          "version": "0.6.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "form-data": {
 +          "version": "2.1.4",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "asynckit": "0.4.0",
 +            "combined-stream": "1.0.5",
 +            "mime-types": "2.1.15"
 +          }
 +        },
 +        "fs.realpath": {
 +          "version": "1.0.0",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "fstream": {
 +          "version": "1.0.11",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "graceful-fs": "4.1.11",
 +            "inherits": "2.0.3",
 +            "mkdirp": "0.5.1",
 +            "rimraf": "2.6.1"
 +          }
 +        },
 +        "fstream-ignore": {
 +          "version": "1.0.5",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "fstream": "1.0.11",
 +            "inherits": "2.0.3",
 +            "minimatch": "3.0.4"
 +          }
 +        },
 +        "gauge": {
 +          "version": "2.7.4",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "aproba": "1.1.1",
 +            "console-control-strings": "1.1.0",
 +            "has-unicode": "2.0.1",
 +            "object-assign": "4.1.1",
 +            "signal-exit": "3.0.2",
 +            "string-width": "1.0.2",
 +            "strip-ansi": "3.0.1",
 +            "wide-align": "1.1.2"
 +          }
 +        },
 +        "getpass": {
 +          "version": "0.1.7",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "assert-plus": "1.0.0"
 +          },
 +          "dependencies": {
 +            "assert-plus": {
 +              "version": "1.0.0",
 +              "bundled": true,
 +              "dev": true,
 +              "optional": true
 +            }
 +          }
 +        },
 +        "glob": {
 +          "version": "7.1.2",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "fs.realpath": "1.0.0",
 +            "inflight": "1.0.6",
 +            "inherits": "2.0.3",
 +            "minimatch": "3.0.4",
 +            "once": "1.4.0",
 +            "path-is-absolute": "1.0.1"
 +          }
 +        },
 +        "graceful-fs": {
 +          "version": "4.1.11",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "har-schema": {
 +          "version": "1.0.5",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "har-validator": {
 +          "version": "4.2.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "ajv": "4.11.8",
 +            "har-schema": "1.0.5"
 +          }
 +        },
 +        "has-unicode": {
 +          "version": "2.0.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "hawk": {
 +          "version": "3.1.3",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "boom": "2.10.1",
 +            "cryptiles": "2.0.5",
 +            "hoek": "2.16.3",
 +            "sntp": "1.0.9"
 +          }
 +        },
 +        "hoek": {
 +          "version": "2.16.3",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "http-signature": {
 +          "version": "1.1.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "assert-plus": "0.2.0",
 +            "jsprim": "1.4.0",
 +            "sshpk": "1.13.0"
 +          }
 +        },
 +        "inflight": {
 +          "version": "1.0.6",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "once": "1.4.0",
 +            "wrappy": "1.0.2"
 +          }
 +        },
 +        "inherits": {
 +          "version": "2.0.3",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "ini": {
 +          "version": "1.3.4",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "is-fullwidth-code-point": {
 +          "version": "1.0.0",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "number-is-nan": "1.0.1"
 +          }
 +        },
 +        "is-typedarray": {
 +          "version": "1.0.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "isarray": {
 +          "version": "1.0.0",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "isstream": {
 +          "version": "0.1.2",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "jodid25519": {
 +          "version": "1.0.2",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "jsbn": "0.1.1"
 +          }
 +        },
 +        "jsbn": {
 +          "version": "0.1.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "json-schema": {
 +          "version": "0.2.3",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "json-stable-stringify": {
 +          "version": "1.0.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "jsonify": "0.0.0"
 +          }
 +        },
 +        "json-stringify-safe": {
 +          "version": "5.0.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "jsonify": {
 +          "version": "0.0.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "jsprim": {
 +          "version": "1.4.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "assert-plus": "1.0.0",
 +            "extsprintf": "1.0.2",
 +            "json-schema": "0.2.3",
 +            "verror": "1.3.6"
 +          },
 +          "dependencies": {
 +            "assert-plus": {
 +              "version": "1.0.0",
 +              "bundled": true,
 +              "dev": true,
 +              "optional": true
 +            }
 +          }
 +        },
 +        "mime-db": {
 +          "version": "1.27.0",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "mime-types": {
 +          "version": "2.1.15",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "mime-db": "1.27.0"
 +          }
 +        },
 +        "minimatch": {
 +          "version": "3.0.4",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "brace-expansion": "1.1.7"
 +          }
 +        },
 +        "minimist": {
 +          "version": "0.0.8",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "mkdirp": {
 +          "version": "0.5.1",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "minimist": "0.0.8"
 +          }
 +        },
 +        "ms": {
 +          "version": "2.0.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "node-pre-gyp": {
 +          "version": "0.6.36",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "mkdirp": "0.5.1",
 +            "nopt": "4.0.1",
 +            "npmlog": "4.1.0",
 +            "rc": "1.2.1",
 +            "request": "2.81.0",
 +            "rimraf": "2.6.1",
 +            "semver": "5.3.0",
 +            "tar": "2.2.1",
 +            "tar-pack": "3.4.0"
 +          }
 +        },
 +        "nopt": {
 +          "version": "4.0.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "abbrev": "1.1.0",
 +            "osenv": "0.1.4"
 +          }
 +        },
 +        "npmlog": {
 +          "version": "4.1.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "are-we-there-yet": "1.1.4",
 +            "console-control-strings": "1.1.0",
 +            "gauge": "2.7.4",
 +            "set-blocking": "2.0.0"
 +          }
 +        },
 +        "number-is-nan": {
 +          "version": "1.0.1",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "oauth-sign": {
 +          "version": "0.8.2",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "object-assign": {
 +          "version": "4.1.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "once": {
 +          "version": "1.4.0",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "wrappy": "1.0.2"
 +          }
 +        },
 +        "os-homedir": {
 +          "version": "1.0.2",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "os-tmpdir": {
 +          "version": "1.0.2",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "osenv": {
 +          "version": "0.1.4",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "os-homedir": "1.0.2",
 +            "os-tmpdir": "1.0.2"
 +          }
 +        },
 +        "path-is-absolute": {
 +          "version": "1.0.1",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "performance-now": {
 +          "version": "0.2.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "process-nextick-args": {
 +          "version": "1.0.7",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "punycode": {
 +          "version": "1.4.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "qs": {
 +          "version": "6.4.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "rc": {
 +          "version": "1.2.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "deep-extend": "0.4.2",
 +            "ini": "1.3.4",
 +            "minimist": "1.2.0",
 +            "strip-json-comments": "2.0.1"
 +          },
 +          "dependencies": {
 +            "minimist": {
 +              "version": "1.2.0",
 +              "bundled": true,
 +              "dev": true,
 +              "optional": true
 +            }
 +          }
 +        },
 +        "readable-stream": {
 +          "version": "2.2.9",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "buffer-shims": "1.0.0",
 +            "core-util-is": "1.0.2",
 +            "inherits": "2.0.3",
 +            "isarray": "1.0.0",
 +            "process-nextick-args": "1.0.7",
 +            "string_decoder": "1.0.1",
 +            "util-deprecate": "1.0.2"
 +          }
 +        },
 +        "request": {
 +          "version": "2.81.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "aws-sign2": "0.6.0",
 +            "aws4": "1.6.0",
 +            "caseless": "0.12.0",
 +            "combined-stream": "1.0.5",
 +            "extend": "3.0.1",
 +            "forever-agent": "0.6.1",
 +            "form-data": "2.1.4",
 +            "har-validator": "4.2.1",
 +            "hawk": "3.1.3",
 +            "http-signature": "1.1.1",
 +            "is-typedarray": "1.0.0",
 +            "isstream": "0.1.2",
 +            "json-stringify-safe": "5.0.1",
 +            "mime-types": "2.1.15",
 +            "oauth-sign": "0.8.2",
 +            "performance-now": "0.2.0",
 +            "qs": "6.4.0",
 +            "safe-buffer": "5.0.1",
 +            "stringstream": "0.0.5",
 +            "tough-cookie": "2.3.2",
 +            "tunnel-agent": "0.6.0",
 +            "uuid": "3.0.1"
 +          }
 +        },
 +        "rimraf": {
 +          "version": "2.6.1",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "glob": "7.1.2"
 +          }
 +        },
 +        "safe-buffer": {
 +          "version": "5.0.1",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "semver": {
 +          "version": "5.3.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "set-blocking": {
 +          "version": "2.0.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "signal-exit": {
 +          "version": "3.0.2",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "sntp": {
 +          "version": "1.0.9",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "hoek": "2.16.3"
 +          }
 +        },
 +        "sshpk": {
 +          "version": "1.13.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "asn1": "0.2.3",
 +            "assert-plus": "1.0.0",
 +            "bcrypt-pbkdf": "1.0.1",
 +            "dashdash": "1.14.1",
 +            "ecc-jsbn": "0.1.1",
 +            "getpass": "0.1.7",
 +            "jodid25519": "1.0.2",
 +            "jsbn": "0.1.1",
 +            "tweetnacl": "0.14.5"
 +          },
 +          "dependencies": {
 +            "assert-plus": {
 +              "version": "1.0.0",
 +              "bundled": true,
 +              "dev": true,
 +              "optional": true
 +            }
 +          }
 +        },
-     "string_decoder": {
-       "version": "1.0.3",
-       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
-       "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
-       "dev": true,
-       "requires": {
-         "safe-buffer": "5.1.1"
-       }
-     },
 +        "string-width": {
 +          "version": "1.0.2",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "code-point-at": "1.1.0",
 +            "is-fullwidth-code-point": "1.0.0",
 +            "strip-ansi": "3.0.1"
 +          }
 +        },
++        "string_decoder": {
++          "version": "1.0.1",
++          "bundled": true,
++          "dev": true,
++          "requires": {
++            "safe-buffer": "5.0.1"
++          }
++        },
 +        "stringstream": {
 +          "version": "0.0.5",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "strip-ansi": {
 +          "version": "3.0.1",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "ansi-regex": "2.1.1"
 +          }
 +        },
 +        "strip-json-comments": {
 +          "version": "2.0.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "tar": {
 +          "version": "2.2.1",
 +          "bundled": true,
 +          "dev": true,
 +          "requires": {
 +            "block-stream": "0.0.9",
 +            "fstream": "1.0.11",
 +            "inherits": "2.0.3"
 +          }
 +        },
 +        "tar-pack": {
 +          "version": "3.4.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "debug": "2.6.8",
 +            "fstream": "1.0.11",
 +            "fstream-ignore": "1.0.5",
 +            "once": "1.4.0",
 +            "readable-stream": "2.2.9",
 +            "rimraf": "2.6.1",
 +            "tar": "2.2.1",
 +            "uid-number": "0.0.6"
 +          }
 +        },
 +        "tough-cookie": {
 +          "version": "2.3.2",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "punycode": "1.4.1"
 +          }
 +        },
 +        "tunnel-agent": {
 +          "version": "0.6.0",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "safe-buffer": "5.0.1"
 +          }
 +        },
 +        "tweetnacl": {
 +          "version": "0.14.5",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "uid-number": {
 +          "version": "0.0.6",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "util-deprecate": {
 +          "version": "1.0.2",
 +          "bundled": true,
 +          "dev": true
 +        },
 +        "uuid": {
 +          "version": "3.0.1",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true
 +        },
 +        "verror": {
 +          "version": "1.3.6",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "extsprintf": "1.0.2"
 +          }
 +        },
 +        "wide-align": {
 +          "version": "1.1.2",
 +          "bundled": true,
 +          "dev": true,
 +          "optional": true,
 +          "requires": {
 +            "string-width": "1.0.2"
 +          }
 +        },
 +        "wrappy": {
 +          "version": "1.0.2",
 +          "bundled": true,
 +          "dev": true
 +        }
 +      }
 +    },
 +    "function-bind": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz",
 +      "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=",
 +      "dev": true
 +    },
 +    "get-caller-file": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
 +      "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
 +      "dev": true
 +    },
 +    "glob-base": {
 +      "version": "0.3.0",
 +      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
 +      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
 +      "dev": true,
 +      "requires": {
 +        "glob-parent": "2.0.0",
 +        "is-glob": "2.0.1"
 +      }
 +    },
 +    "glob-parent": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
 +      "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
 +      "dev": true,
 +      "requires": {
 +        "is-glob": "2.0.1"
 +      }
 +    },
 +    "global": {
 +      "version": "4.3.2",
 +      "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz",
 +      "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
 +      "dev": true,
 +      "requires": {
 +        "min-document": "2.19.0",
 +        "process": "0.5.2"
 +      }
 +    },
 +    "globals": {
 +      "version": "9.18.0",
 +      "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
 +      "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
 +      "dev": true
 +    },
 +    "good-listener": {
 +      "version": "1.2.2",
 +      "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
 +      "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
 +      "dev": true,
 +      "requires": {
 +        "delegate": "3.1.3"
 +      }
 +    },
 +    "graceful-fs": {
 +      "version": "4.1.11",
 +      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
 +      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
 +      "dev": true
 +    },
 +    "has": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
 +      "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
 +      "dev": true,
 +      "requires": {
 +        "function-bind": "1.1.0"
 +      }
 +    },
 +    "has-ansi": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
 +      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
 +      "dev": true,
 +      "requires": {
 +        "ansi-regex": "2.1.1"
 +      }
 +    },
 +    "has-flag": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
 +      "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
 +      "dev": true
 +    },
 +    "hash-base": {
 +      "version": "2.0.2",
 +      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
 +      "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=",
 +      "dev": true,
 +      "requires": {
 +        "inherits": "2.0.3"
 +      }
 +    },
 +    "hash.js": {
 +      "version": "1.1.3",
 +      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
 +      "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
 +      "dev": true,
 +      "requires": {
 +        "inherits": "2.0.3",
 +        "minimalistic-assert": "1.0.0"
 +      }
 +    },
 +    "highlight.js": {
 +      "version": "9.12.0",
 +      "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz",
 +      "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=",
 +      "dev": true
 +    },
 +    "hmac-drbg": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
 +      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
 +      "dev": true,
 +      "requires": {
 +        "hash.js": "1.1.3",
 +        "minimalistic-assert": "1.0.0",
 +        "minimalistic-crypto-utils": "1.0.1"
 +      }
 +    },
 +    "hogan.js": {
 +      "version": "3.0.2",
 +      "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz",
 +      "integrity": "sha1-TNnhq9QpQUbnZ55B14mHMrAse/0=",
 +      "dev": true,
 +      "requires": {
 +        "mkdirp": "0.3.0",
 +        "nopt": "1.0.10"
 +      },
 +      "dependencies": {
 +        "mkdirp": {
 +          "version": "0.3.0",
 +          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
 +          "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "home-or-tmp": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
 +      "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
 +      "dev": true,
 +      "requires": {
 +        "os-homedir": "1.0.2",
 +        "os-tmpdir": "1.0.2"
 +      }
 +    },
 +    "hosted-git-info": {
 +      "version": "2.5.0",
 +      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
 +      "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
 +      "dev": true
 +    },
 +    "html-comment-regex": {
 +      "version": "1.1.1",
 +      "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz",
 +      "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=",
 +      "dev": true
 +    },
 +    "https-browserify": {
 +      "version": "0.0.1",
 +      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
 +      "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
 +      "dev": true
 +    },
 +    "icss-replace-symbols": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
 +      "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
 +      "dev": true
 +    },
 +    "icss-utils": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz",
 +      "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "6.0.6"
 +      },
 +      "dependencies": {
 +        "ansi-styles": {
 +          "version": "3.1.0",
 +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz",
 +          "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=",
 +          "dev": true,
 +          "requires": {
 +            "color-convert": "1.9.0"
 +          }
 +        },
 +        "chalk": {
 +          "version": "2.0.1",
 +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz",
 +          "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==",
 +          "dev": true,
 +          "requires": {
 +            "ansi-styles": "3.1.0",
 +            "escape-string-regexp": "1.0.5",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "has-flag": {
 +          "version": "2.0.0",
 +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
 +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
 +          "dev": true
 +        },
 +        "postcss": {
 +          "version": "6.0.6",
 +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz",
 +          "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=",
 +          "dev": true,
 +          "requires": {
 +            "chalk": "2.0.1",
 +            "source-map": "0.5.6",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "supports-color": {
 +          "version": "4.2.0",
 +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz",
 +          "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==",
 +          "dev": true,
 +          "requires": {
 +            "has-flag": "2.0.0"
 +          }
 +        }
 +      }
 +    },
 +    "ieee754": {
 +      "version": "1.1.8",
 +      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
 +      "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
 +      "dev": true
 +    },
 +    "immediate": {
 +      "version": "3.2.3",
 +      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz",
 +      "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=",
 +      "dev": true
 +    },
 +    "indexes-of": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
 +      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
 +      "dev": true
 +    },
 +    "indexof": {
 +      "version": "0.0.1",
 +      "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
 +      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
 +      "dev": true
 +    },
 +    "inherits": {
 +      "version": "2.0.3",
 +      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
 +      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
 +      "dev": true
 +    },
 +    "interpret": {
 +      "version": "1.0.3",
 +      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz",
 +      "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=",
 +      "dev": true
 +    },
 +    "invariant": {
 +      "version": "2.2.2",
 +      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
 +      "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
 +      "dev": true,
 +      "requires": {
 +        "loose-envify": "1.3.1"
 +      }
 +    },
 +    "invert-kv": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
 +      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
 +      "dev": true
 +    },
 +    "is-absolute-url": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
 +      "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
 +      "dev": true
 +    },
 +    "is-arrayish": {
 +      "version": "0.2.1",
 +      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
 +      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
 +      "dev": true
 +    },
 +    "is-binary-path": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
 +      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
 +      "dev": true,
 +      "requires": {
 +        "binary-extensions": "1.8.0"
 +      }
 +    },
 +    "is-buffer": {
 +      "version": "1.1.5",
 +      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
 +      "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
 +      "dev": true
 +    },
 +    "is-builtin-module": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
 +      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
 +      "dev": true,
 +      "requires": {
 +        "builtin-modules": "1.1.1"
 +      }
 +    },
 +    "is-directory": {
 +      "version": "0.3.1",
 +      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
 +      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
 +      "dev": true
 +    },
 +    "is-dotfile": {
 +      "version": "1.0.3",
 +      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
 +      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
 +      "dev": true
 +    },
 +    "is-equal-shallow": {
 +      "version": "0.1.3",
 +      "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
 +      "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
 +      "dev": true,
 +      "requires": {
 +        "is-primitive": "2.0.0"
 +      }
 +    },
 +    "is-extendable": {
 +      "version": "0.1.1",
 +      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
 +      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
 +      "dev": true
 +    },
 +    "is-extglob": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
 +      "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
 +      "dev": true
 +    },
 +    "is-finite": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
 +      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
 +      "dev": true,
 +      "requires": {
 +        "number-is-nan": "1.0.1"
 +      }
 +    },
 +    "is-fullwidth-code-point": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
 +      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
 +      "dev": true,
 +      "requires": {
 +        "number-is-nan": "1.0.1"
 +      }
 +    },
 +    "is-glob": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
 +      "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
 +      "dev": true,
 +      "requires": {
 +        "is-extglob": "1.0.0"
 +      }
 +    },
 +    "is-number": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
 +      "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
 +      "dev": true,
 +      "requires": {
 +        "kind-of": "3.2.2"
 +      }
 +    },
 +    "is-plain-obj": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
 +      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
 +      "dev": true
 +    },
 +    "is-posix-bracket": {
 +      "version": "0.1.1",
 +      "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
 +      "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
 +      "dev": true
 +    },
 +    "is-primitive": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
 +      "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
 +      "dev": true
 +    },
 +    "is-svg": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
 +      "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
 +      "dev": true,
 +      "requires": {
 +        "html-comment-regex": "1.1.1"
 +      }
 +    },
 +    "is-utf8": {
 +      "version": "0.2.1",
 +      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
 +      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
 +      "dev": true
 +    },
 +    "isarray": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
 +      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
 +      "dev": true
 +    },
 +    "isnumeric": {
 +      "version": "0.2.0",
 +      "resolved": "https://registry.npmjs.org/isnumeric/-/isnumeric-0.2.0.tgz",
 +      "integrity": "sha1-ojR7o2DeGeM9D/1ZD933dVy/LmQ=",
 +      "dev": true
 +    },
 +    "isobject": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
 +      "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
 +      "dev": true,
 +      "requires": {
 +        "isarray": "1.0.0"
 +      }
 +    },
 +    "js-base64": {
 +      "version": "2.1.9",
 +      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz",
 +      "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=",
 +      "dev": true
 +    },
 +    "js-tokens": {
 +      "version": "3.0.2",
 +      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
 +      "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
 +      "dev": true
 +    },
 +    "js-yaml": {
 +      "version": "3.7.0",
 +      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
 +      "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
 +      "dev": true,
 +      "requires": {
 +        "argparse": "1.0.9",
 +        "esprima": "2.7.3"
 +      }
 +    },
 +    "jsesc": {
 +      "version": "1.3.0",
 +      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
 +      "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
 +      "dev": true
 +    },
 +    "json-loader": {
 +      "version": "0.5.4",
 +      "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz",
 +      "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=",
 +      "dev": true
 +    },
 +    "json-schema-traverse": {
 +      "version": "0.3.1",
 +      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
 +      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
 +      "dev": true
 +    },
 +    "json-stable-stringify": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
 +      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
 +      "dev": true,
 +      "requires": {
 +        "jsonify": "0.0.0"
 +      }
 +    },
 +    "json5": {
 +      "version": "0.5.1",
 +      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
 +      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
 +      "dev": true
 +    },
 +    "jsonify": {
 +      "version": "0.0.0",
 +      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
 +      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
 +      "dev": true
 +    },
 +    "kind-of": {
 +      "version": "3.2.2",
 +      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
 +      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
 +      "dev": true,
 +      "requires": {
 +        "is-buffer": "1.1.5"
 +      }
 +    },
 +    "lazy-cache": {
 +      "version": "1.0.4",
 +      "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
 +      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
 +      "dev": true
 +    },
 +    "lazysizes": {
 +      "version": "3.0.0",
 +      "resolved": "https://registry.npmjs.org/lazysizes/-/lazysizes-3.0.0.tgz",
 +      "integrity": "sha1-sbrLWg8oET/6ezic4vNfHP8Z2bk=",
 +      "dev": true
 +    },
 +    "lcid": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
 +      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
 +      "dev": true,
 +      "requires": {
 +        "invert-kv": "1.0.0"
 +      }
 +    },
 +    "load-json-file": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
 +      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
 +      "dev": true,
 +      "requires": {
 +        "graceful-fs": "4.1.11",
 +        "parse-json": "2.2.0",
 +        "pify": "2.3.0",
 +        "pinkie-promise": "2.0.1",
 +        "strip-bom": "2.0.0"
 +      }
 +    },
 +    "load-script": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz",
 +      "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=",
 +      "dev": true
 +    },
 +    "loader-runner": {
 +      "version": "2.3.0",
 +      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz",
 +      "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=",
 +      "dev": true
 +    },
 +    "loader-utils": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
 +      "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
 +      "dev": true,
 +      "requires": {
 +        "big.js": "3.1.3",
 +        "emojis-list": "2.1.0",
 +        "json5": "0.5.1"
 +      }
 +    },
 +    "locate-path": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
 +      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
 +      "dev": true,
 +      "requires": {
 +        "p-locate": "2.0.0",
 +        "path-exists": "3.0.0"
 +      }
 +    },
 +    "lodash": {
 +      "version": "4.17.4",
 +      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
 +      "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
 +      "dev": true
 +    },
 +    "lodash._reinterpolate": {
 +      "version": "3.0.0",
 +      "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
 +      "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
 +      "dev": true
 +    },
 +    "lodash.camelcase": {
 +      "version": "4.3.0",
 +      "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
 +      "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
 +      "dev": true
 +    },
 +    "lodash.memoize": {
 +      "version": "4.1.2",
 +      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
 +      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
 +      "dev": true
 +    },
 +    "lodash.uniq": {
 +      "version": "4.5.0",
 +      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
 +      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
 +      "dev": true
 +    },
 +    "longest": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
 +      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
 +      "dev": true
 +    },
 +    "loose-envify": {
 +      "version": "1.3.1",
 +      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
 +      "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
 +      "dev": true,
 +      "requires": {
 +        "js-tokens": "3.0.2"
 +      }
 +    },
 +    "macaddress": {
 +      "version": "0.2.8",
 +      "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz",
 +      "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=",
 +      "dev": true
 +    },
 +    "make-dir": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz",
 +      "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=",
 +      "dev": true,
 +      "requires": {
 +        "pify": "2.3.0"
 +      }
 +    },
 +    "math-expression-evaluator": {
 +      "version": "1.2.17",
 +      "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
 +      "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
 +      "dev": true
 +    },
 +    "memory-fs": {
 +      "version": "0.4.1",
 +      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
 +      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
 +      "dev": true,
 +      "requires": {
 +        "errno": "0.1.4",
 +        "readable-stream": "2.3.3"
 +      }
 +    },
 +    "micromatch": {
 +      "version": "2.3.11",
 +      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
 +      "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
 +      "dev": true,
 +      "requires": {
 +        "arr-diff": "2.0.0",
 +        "array-unique": "0.2.1",
 +        "braces": "1.8.5",
 +        "expand-brackets": "0.1.5",
 +        "extglob": "0.3.2",
 +        "filename-regex": "2.0.1",
 +        "is-extglob": "1.0.0",
 +        "is-glob": "2.0.1",
 +        "kind-of": "3.2.2",
 +        "normalize-path": "2.1.1",
 +        "object.omit": "2.0.1",
 +        "parse-glob": "3.0.4",
 +        "regex-cache": "0.4.3"
 +      }
 +    },
 +    "miller-rabin": {
 +      "version": "4.0.0",
 +      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz",
 +      "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=",
 +      "dev": true,
 +      "requires": {
 +        "bn.js": "4.11.7",
 +        "brorand": "1.1.0"
 +      }
 +    },
 +    "min-document": {
 +      "version": "2.19.0",
 +      "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
 +      "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
 +      "dev": true,
 +      "requires": {
 +        "dom-walk": "0.1.1"
 +      }
 +    },
 +    "minimalistic-assert": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
 +      "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=",
 +      "dev": true
 +    },
 +    "minimalistic-crypto-utils": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
 +      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
 +      "dev": true
 +    },
 +    "minimatch": {
 +      "version": "3.0.4",
 +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
 +      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
 +      "dev": true,
 +      "requires": {
 +        "brace-expansion": "1.1.8"
 +      }
 +    },
 +    "minimist": {
 +      "version": "0.0.8",
 +      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
 +      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
 +      "dev": true
 +    },
 +    "mkdirp": {
 +      "version": "0.5.1",
 +      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
 +      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
 +      "dev": true,
 +      "requires": {
 +        "minimist": "0.0.8"
 +      }
 +    },
 +    "ms": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
 +      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
 +      "dev": true
 +    },
 +    "nan": {
 +      "version": "2.6.2",
 +      "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz",
 +      "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=",
 +      "dev": true,
 +      "optional": true
 +    },
 +    "node-libs-browser": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz",
 +      "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=",
 +      "dev": true,
 +      "requires": {
 +        "assert": "1.4.1",
 +        "browserify-zlib": "0.1.4",
 +        "buffer": "4.9.1",
 +        "console-browserify": "1.1.0",
 +        "constants-browserify": "1.0.0",
 +        "crypto-browserify": "3.11.1",
 +        "domain-browser": "1.1.7",
 +        "events": "1.1.1",
 +        "https-browserify": "0.0.1",
 +        "os-browserify": "0.2.1",
 +        "path-browserify": "0.0.0",
 +        "process": "0.11.10",
 +        "punycode": "1.4.1",
 +        "querystring-es3": "0.2.1",
 +        "readable-stream": "2.3.3",
 +        "stream-browserify": "2.0.1",
 +        "stream-http": "2.7.2",
 +        "string_decoder": "0.10.31",
 +        "timers-browserify": "2.0.2",
 +        "tty-browserify": "0.0.0",
 +        "url": "0.11.0",
 +        "util": "0.10.3",
 +        "vm-browserify": "0.0.4"
 +      },
 +      "dependencies": {
 +        "process": {
 +          "version": "0.11.10",
 +          "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
 +          "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
 +          "dev": true
 +        },
 +        "string_decoder": {
 +          "version": "0.10.31",
 +          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
 +          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "nopt": {
 +      "version": "1.0.10",
 +      "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
 +      "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
 +      "dev": true,
 +      "requires": {
 +        "abbrev": "1.1.0"
 +      }
 +    },
 +    "normalize-package-data": {
 +      "version": "2.4.0",
 +      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
 +      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
 +      "dev": true,
 +      "requires": {
 +        "hosted-git-info": "2.5.0",
 +        "is-builtin-module": "1.0.0",
 +        "semver": "5.3.0",
 +        "validate-npm-package-license": "3.0.1"
 +      }
 +    },
 +    "normalize-path": {
 +      "version": "2.1.1",
 +      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
 +      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
 +      "dev": true,
 +      "requires": {
 +        "remove-trailing-separator": "1.0.2"
 +      }
 +    },
 +    "normalize-range": {
 +      "version": "0.1.2",
 +      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
 +      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
 +      "dev": true
 +    },
 +    "normalize-url": {
 +      "version": "1.9.1",
 +      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
 +      "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
 +      "dev": true,
 +      "requires": {
 +        "object-assign": "4.1.1",
 +        "prepend-http": "1.0.4",
 +        "query-string": "4.3.4",
 +        "sort-keys": "1.1.2"
 +      }
 +    },
 +    "num2fraction": {
 +      "version": "1.2.2",
 +      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
 +      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
 +      "dev": true
 +    },
 +    "number-is-nan": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
 +      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
 +      "dev": true
 +    },
 +    "object-assign": {
 +      "version": "4.1.1",
 +      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
 +      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
 +      "dev": true
 +    },
 +    "object-keys": {
 +      "version": "1.0.11",
 +      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
 +      "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
 +      "dev": true
 +    },
 +    "object.omit": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
 +      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
 +      "dev": true,
 +      "requires": {
 +        "for-own": "0.1.5",
 +        "is-extendable": "0.1.1"
 +      }
 +    },
 +    "onecolor": {
 +      "version": "2.4.2",
 +      "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-2.4.2.tgz",
 +      "integrity": "sha1-pT7D/xccNEYBbdUhDRobVEv32HQ=",
 +      "dev": true
 +    },
 +    "os-browserify": {
 +      "version": "0.2.1",
 +      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz",
 +      "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=",
 +      "dev": true
 +    },
 +    "os-homedir": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
 +      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
 +      "dev": true
 +    },
 +    "os-locale": {
 +      "version": "1.4.0",
 +      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
 +      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
 +      "dev": true,
 +      "requires": {
 +        "lcid": "1.0.0"
 +      }
 +    },
 +    "os-tmpdir": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
 +      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
 +      "dev": true
 +    },
 +    "p-limit": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
 +      "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=",
 +      "dev": true
 +    },
 +    "p-locate": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
 +      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
 +      "dev": true,
 +      "requires": {
 +        "p-limit": "1.1.0"
 +      }
 +    },
 +    "pako": {
 +      "version": "0.2.9",
 +      "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
 +      "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
 +      "dev": true
 +    },
 +    "parse-asn1": {
 +      "version": "5.1.0",
 +      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz",
 +      "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=",
 +      "dev": true,
 +      "requires": {
 +        "asn1.js": "4.9.1",
 +        "browserify-aes": "1.0.6",
 +        "create-hash": "1.1.3",
 +        "evp_bytestokey": "1.0.0",
 +        "pbkdf2": "3.0.12"
 +      }
 +    },
 +    "parse-glob": {
 +      "version": "3.0.4",
 +      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
 +      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
 +      "dev": true,
 +      "requires": {
 +        "glob-base": "0.3.0",
 +        "is-dotfile": "1.0.3",
 +        "is-extglob": "1.0.0",
 +        "is-glob": "2.0.1"
 +      }
 +    },
 +    "parse-json": {
 +      "version": "2.2.0",
 +      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
 +      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
 +      "dev": true,
 +      "requires": {
 +        "error-ex": "1.3.1"
 +      }
 +    },
 +    "path-browserify": {
 +      "version": "0.0.0",
 +      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
 +      "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
 +      "dev": true
 +    },
 +    "path-exists": {
 +      "version": "3.0.0",
 +      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
 +      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
 +      "dev": true
 +    },
 +    "path-is-absolute": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
 +      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
 +      "dev": true
 +    },
 +    "path-parse": {
 +      "version": "1.0.5",
 +      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
 +      "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
 +      "dev": true
 +    },
 +    "path-type": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
 +      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
 +      "dev": true,
 +      "requires": {
 +        "graceful-fs": "4.1.11",
 +        "pify": "2.3.0",
 +        "pinkie-promise": "2.0.1"
 +      }
 +    },
 +    "pbkdf2": {
 +      "version": "3.0.12",
 +      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz",
 +      "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=",
 +      "dev": true,
 +      "requires": {
 +        "create-hash": "1.1.3",
 +        "create-hmac": "1.1.6",
 +        "ripemd160": "2.0.1",
 +        "safe-buffer": "5.1.1",
 +        "sha.js": "2.4.8"
 +      }
 +    },
 +    "pify": {
 +      "version": "2.3.0",
 +      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
 +      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
 +      "dev": true
 +    },
 +    "pinkie": {
 +      "version": "2.0.4",
 +      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
 +      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
 +      "dev": true
 +    },
 +    "pinkie-promise": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
 +      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
 +      "dev": true,
 +      "requires": {
 +        "pinkie": "2.0.4"
 +      }
 +    },
 +    "pixrem": {
 +      "version": "3.0.2",
 +      "resolved": "https://registry.npmjs.org/pixrem/-/pixrem-3.0.2.tgz",
 +      "integrity": "sha1-MNG6+0w73Ojpu0vVahOYVhkyDDQ=",
 +      "dev": true,
 +      "requires": {
 +        "browserslist": "1.7.7",
 +        "postcss": "5.2.17",
 +        "reduce-css-calc": "1.3.0"
 +      },
 +      "dependencies": {
 +        "browserslist": {
 +          "version": "1.7.7",
 +          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
 +          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
 +          "dev": true,
 +          "requires": {
 +            "caniuse-db": "1.0.30000699",
 +            "electron-to-chromium": "1.3.15"
 +          }
 +        }
 +      }
 +    },
 +    "pkg-dir": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
 +      "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
 +      "dev": true,
 +      "requires": {
 +        "find-up": "2.1.0"
 +      }
 +    },
 +    "pleeease-filters": {
 +      "version": "3.0.1",
 +      "resolved": "https://registry.npmjs.org/pleeease-filters/-/pleeease-filters-3.0.1.tgz",
 +      "integrity": "sha1-Tf4OjxBGYTUXxktyi8gGCKfr8i8=",
 +      "dev": true,
 +      "requires": {
 +        "onecolor": "2.4.2",
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss": {
 +      "version": "5.2.17",
 +      "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz",
 +      "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=",
 +      "dev": true,
 +      "requires": {
 +        "chalk": "1.1.3",
 +        "js-base64": "2.1.9",
 +        "source-map": "0.5.6",
 +        "supports-color": "3.2.3"
 +      },
 +      "dependencies": {
 +        "supports-color": {
 +          "version": "3.2.3",
 +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
 +          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
 +          "dev": true,
 +          "requires": {
 +            "has-flag": "1.0.0"
 +          }
 +        }
 +      }
 +    },
 +    "postcss-apply": {
 +      "version": "0.3.0",
 +      "resolved": "https://registry.npmjs.org/postcss-apply/-/postcss-apply-0.3.0.tgz",
 +      "integrity": "sha1-ovN8W9+ogeTBX08kXsDNlt0ucNU=",
 +      "dev": true,
 +      "requires": {
 +        "balanced-match": "0.4.2",
 +        "postcss": "5.2.17"
 +      },
 +      "dependencies": {
 +        "balanced-match": {
 +          "version": "0.4.2",
 +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
 +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "postcss-attribute-case-insensitive": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-1.0.1.tgz",
 +      "integrity": "sha1-zrc3d+EGFn6yM/GTjJvZ8uaXMI0=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "postcss-selector-parser": "2.2.3"
 +      }
 +    },
 +    "postcss-calc": {
 +      "version": "5.3.1",
 +      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz",
 +      "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "postcss-message-helpers": "2.0.0",
 +        "reduce-css-calc": "1.3.0"
 +      }
 +    },
 +    "postcss-color-function": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/postcss-color-function/-/postcss-color-function-2.0.1.tgz",
 +      "integrity": "sha1-mtIm9VDop8f4uKd4YFRbbdf1UkE=",
 +      "dev": true,
 +      "requires": {
 +        "css-color-function": "1.3.0",
 +        "postcss": "5.2.17",
 +        "postcss-message-helpers": "2.0.0",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-color-gray": {
 +      "version": "3.0.1",
 +      "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-3.0.1.tgz",
 +      "integrity": "sha1-dEMu3mbdg7HRNjVlxos3bhj/Z3A=",
 +      "dev": true,
 +      "requires": {
 +        "color": "0.11.4",
 +        "postcss": "5.2.17",
 +        "postcss-message-helpers": "2.0.0",
 +        "reduce-function-call": "1.0.2"
 +      }
 +    },
 +    "postcss-color-hex-alpha": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-2.0.0.tgz",
 +      "integrity": "sha1-RP1uyt5mAoZIyIHLZQTNy/3GzQk=",
 +      "dev": true,
 +      "requires": {
 +        "color": "0.10.1",
 +        "postcss": "5.2.17",
 +        "postcss-message-helpers": "2.0.0"
 +      },
 +      "dependencies": {
 +        "color": {
 +          "version": "0.10.1",
 +          "resolved": "https://registry.npmjs.org/color/-/color-0.10.1.tgz",
 +          "integrity": "sha1-wEGI34KiCd3rzOzazT7DIPGTc58=",
 +          "dev": true,
 +          "requires": {
 +            "color-convert": "0.5.3",
 +            "color-string": "0.3.0"
 +          }
 +        },
 +        "color-convert": {
 +          "version": "0.5.3",
 +          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
 +          "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "postcss-color-hsl": {
 +      "version": "1.0.5",
 +      "resolved": "https://registry.npmjs.org/postcss-color-hsl/-/postcss-color-hsl-1.0.5.tgz",
 +      "integrity": "sha1-9Tuxw0gxDOMHrYnjGBqGRzi15oc=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0",
 +        "units-css": "0.4.0"
 +      }
 +    },
 +    "postcss-color-hwb": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/postcss-color-hwb/-/postcss-color-hwb-2.0.1.tgz",
 +      "integrity": "sha1-1jr6+bcMtZX5AKKcn+V78qMvq+w=",
 +      "dev": true,
 +      "requires": {
 +        "color": "0.11.4",
 +        "postcss": "5.2.17",
 +        "postcss-message-helpers": "2.0.0",
 +        "reduce-function-call": "1.0.2"
 +      }
 +    },
 +    "postcss-color-rebeccapurple": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-2.0.1.tgz",
 +      "integrity": "sha1-dMZETny7fYVhO19yht96SRYIRRw=",
 +      "dev": true,
 +      "requires": {
 +        "color": "0.11.4",
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-color-rgb": {
 +      "version": "1.1.4",
 +      "resolved": "https://registry.npmjs.org/postcss-color-rgb/-/postcss-color-rgb-1.1.4.tgz",
 +      "integrity": "sha1-8pJD4i6OjBNDRHQJI3LUzmBb6Lw=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-color-rgba-fallback": {
 +      "version": "2.2.0",
 +      "resolved": "https://registry.npmjs.org/postcss-color-rgba-fallback/-/postcss-color-rgba-fallback-2.2.0.tgz",
 +      "integrity": "sha1-bSlJG+WZCpMXPUfnx29YELCUAro=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0",
 +        "rgb-hex": "1.0.0"
 +      }
 +    },
 +    "postcss-colormin": {
 +      "version": "2.2.2",
 +      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz",
 +      "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=",
 +      "dev": true,
 +      "requires": {
 +        "colormin": "1.1.2",
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-convert-values": {
 +      "version": "2.6.1",
 +      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz",
 +      "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-cssnext": {
 +      "version": "2.11.0",
 +      "resolved": "https://registry.npmjs.org/postcss-cssnext/-/postcss-cssnext-2.11.0.tgz",
 +      "integrity": "sha1-MeaPAB5AlgTacDtm3hS4uMjJ8rE=",
 +      "dev": true,
 +      "requires": {
 +        "autoprefixer": "6.7.7",
 +        "caniuse-api": "1.6.1",
 +        "chalk": "1.1.3",
 +        "pixrem": "3.0.2",
 +        "pleeease-filters": "3.0.1",
 +        "postcss": "5.2.17",
 +        "postcss-apply": "0.3.0",
 +        "postcss-attribute-case-insensitive": "1.0.1",
 +        "postcss-calc": "5.3.1",
 +        "postcss-color-function": "2.0.1",
 +        "postcss-color-gray": "3.0.1",
 +        "postcss-color-hex-alpha": "2.0.0",
 +        "postcss-color-hsl": "1.0.5",
 +        "postcss-color-hwb": "2.0.1",
 +        "postcss-color-rebeccapurple": "2.0.1",
 +        "postcss-color-rgb": "1.1.4",
 +        "postcss-color-rgba-fallback": "2.2.0",
 +        "postcss-custom-media": "5.0.1",
 +        "postcss-custom-properties": "5.0.2",
 +        "postcss-custom-selectors": "3.0.0",
 +        "postcss-font-family-system-ui": "1.0.2",
 +        "postcss-font-variant": "2.0.1",
 +        "postcss-image-set-polyfill": "0.3.5",
 +        "postcss-initial": "1.5.3",
 +        "postcss-media-minmax": "2.1.2",
 +        "postcss-nesting": "2.3.1",
 +        "postcss-pseudo-class-any-link": "1.0.0",
 +        "postcss-pseudoelements": "3.0.0",
 +        "postcss-replace-overflow-wrap": "1.0.0",
 +        "postcss-selector-matches": "2.0.5",
 +        "postcss-selector-not": "2.0.0"
 +      }
 +    },
 +    "postcss-custom-media": {
 +      "version": "5.0.1",
 +      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-5.0.1.tgz",
 +      "integrity": "sha1-E40loYS/LrVN4S1VpsAcMKnYvYE=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-custom-properties": {
 +      "version": "5.0.2",
 +      "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-5.0.2.tgz",
 +      "integrity": "sha1-lxnXjy2pz59TgQrrwj1GVhMKzrE=",
 +      "dev": true,
 +      "requires": {
 +        "balanced-match": "0.4.2",
 +        "postcss": "5.2.17"
 +      },
 +      "dependencies": {
 +        "balanced-match": {
 +          "version": "0.4.2",
 +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
 +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "postcss-custom-selectors": {
 +      "version": "3.0.0",
 +      "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-3.0.0.tgz",
 +      "integrity": "sha1-j4Ekn17Qeo0JF89qOf5bBWt/lqw=",
 +      "dev": true,
 +      "requires": {
 +        "balanced-match": "0.2.1",
 +        "postcss": "5.2.17",
 +        "postcss-selector-matches": "2.0.5"
 +      },
 +      "dependencies": {
 +        "balanced-match": {
 +          "version": "0.2.1",
 +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz",
 +          "integrity": "sha1-e8ZYtL7WHu5CStdPdfXD4sTfPMc=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "postcss-discard-comments": {
 +      "version": "2.0.4",
 +      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz",
 +      "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-discard-duplicates": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz",
 +      "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-discard-empty": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz",
 +      "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-discard-overridden": {
 +      "version": "0.1.1",
 +      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz",
 +      "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-discard-unused": {
 +      "version": "2.2.3",
 +      "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz",
 +      "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "uniqs": "2.0.0"
 +      }
 +    },
 +    "postcss-filter-plugins": {
 +      "version": "2.0.2",
 +      "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz",
 +      "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "uniqid": "4.1.1"
 +      }
 +    },
 +    "postcss-font-family-system-ui": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/postcss-font-family-system-ui/-/postcss-font-family-system-ui-1.0.2.tgz",
 +      "integrity": "sha1-PhpeP7fjHl6ecUOcyw6AFFVpJ8c=",
 +      "dev": true,
 +      "requires": {
 +        "lodash": "4.17.4",
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-font-variant": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-2.0.1.tgz",
 +      "integrity": "sha1-fKKRA/WfoCyjrOLKIrL3VoU9Tvg=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-image-set-polyfill": {
 +      "version": "0.3.5",
 +      "resolved": "https://registry.npmjs.org/postcss-image-set-polyfill/-/postcss-image-set-polyfill-0.3.5.tgz",
 +      "integrity": "sha1-Dxk0E3AM8fgr05Bm7wFtZaShgYE=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "6.0.6",
 +        "postcss-media-query-parser": "0.2.3"
 +      },
 +      "dependencies": {
 +        "ansi-styles": {
 +          "version": "3.1.0",
 +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz",
 +          "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=",
 +          "dev": true,
 +          "requires": {
 +            "color-convert": "1.9.0"
 +          }
 +        },
 +        "chalk": {
 +          "version": "2.0.1",
 +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz",
 +          "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==",
 +          "dev": true,
 +          "requires": {
 +            "ansi-styles": "3.1.0",
 +            "escape-string-regexp": "1.0.5",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "has-flag": {
 +          "version": "2.0.0",
 +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
 +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
 +          "dev": true
 +        },
 +        "postcss": {
 +          "version": "6.0.6",
 +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz",
 +          "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=",
 +          "dev": true,
 +          "requires": {
 +            "chalk": "2.0.1",
 +            "source-map": "0.5.6",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "supports-color": {
 +          "version": "4.2.0",
 +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz",
 +          "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==",
 +          "dev": true,
 +          "requires": {
 +            "has-flag": "2.0.0"
 +          }
 +        }
 +      }
 +    },
 +    "postcss-import": {
 +      "version": "9.1.0",
 +      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-9.1.0.tgz",
 +      "integrity": "sha1-lf6YdqHnmvSfvcNYnwH+WqfMHoA=",
 +      "dev": true,
 +      "requires": {
 +        "object-assign": "4.1.1",
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0",
 +        "promise-each": "2.2.0",
 +        "read-cache": "1.0.0",
 +        "resolve": "1.3.3"
 +      }
 +    },
 +    "postcss-initial": {
 +      "version": "1.5.3",
 +      "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-1.5.3.tgz",
 +      "integrity": "sha1-IMPpHJaCLdsb7UlQjbltVrrDd9A=",
 +      "dev": true,
 +      "requires": {
 +        "lodash.template": "4.4.0",
 +        "postcss": "5.2.17"
 +      },
 +      "dependencies": {
 +        "lodash.template": {
 +          "version": "4.4.0",
 +          "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
 +          "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
 +          "dev": true,
 +          "requires": {
 +            "lodash._reinterpolate": "3.0.0",
 +            "lodash.templatesettings": "4.1.0"
 +          }
 +        },
 +        "lodash.templatesettings": {
 +          "version": "4.1.0",
 +          "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
 +          "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
 +          "dev": true,
 +          "requires": {
 +            "lodash._reinterpolate": "3.0.0"
 +          }
 +        }
 +      }
 +    },
 +    "postcss-load-config": {
 +      "version": "1.2.0",
 +      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz",
 +      "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=",
 +      "dev": true,
 +      "requires": {
 +        "cosmiconfig": "2.1.3",
 +        "object-assign": "4.1.1",
 +        "postcss-load-options": "1.2.0",
 +        "postcss-load-plugins": "2.3.0"
 +      }
 +    },
 +    "postcss-load-options": {
 +      "version": "1.2.0",
 +      "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz",
 +      "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=",
 +      "dev": true,
 +      "requires": {
 +        "cosmiconfig": "2.1.3",
 +        "object-assign": "4.1.1"
 +      }
 +    },
 +    "postcss-load-plugins": {
 +      "version": "2.3.0",
 +      "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz",
 +      "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=",
 +      "dev": true,
 +      "requires": {
 +        "cosmiconfig": "2.1.3",
 +        "object-assign": "4.1.1"
 +      }
 +    },
 +    "postcss-loader": {
 +      "version": "1.3.3",
 +      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-1.3.3.tgz",
 +      "integrity": "sha1-piHqH6KQYqg5cqRvVEhncTAZFus=",
 +      "dev": true,
 +      "requires": {
 +        "loader-utils": "1.1.0",
 +        "object-assign": "4.1.1",
 +        "postcss": "5.2.17",
 +        "postcss-load-config": "1.2.0"
 +      }
 +    },
 +    "postcss-media-minmax": {
 +      "version": "2.1.2",
 +      "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-2.1.2.tgz",
 +      "integrity": "sha1-RExc+JJqteT9iiUJ6Sl+dRZJzfg=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-media-query-parser": {
 +      "version": "0.2.3",
 +      "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
 +      "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=",
 +      "dev": true
 +    },
 +    "postcss-merge-idents": {
 +      "version": "2.1.7",
 +      "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz",
 +      "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
 +      "dev": true,
 +      "requires": {
 +        "has": "1.0.1",
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-merge-longhand": {
 +      "version": "2.0.2",
 +      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz",
 +      "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-merge-rules": {
 +      "version": "2.1.2",
 +      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz",
 +      "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=",
 +      "dev": true,
 +      "requires": {
 +        "browserslist": "1.7.7",
 +        "caniuse-api": "1.6.1",
 +        "postcss": "5.2.17",
 +        "postcss-selector-parser": "2.2.3",
 +        "vendors": "1.0.1"
 +      },
 +      "dependencies": {
 +        "browserslist": {
 +          "version": "1.7.7",
 +          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
 +          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
 +          "dev": true,
 +          "requires": {
 +            "caniuse-db": "1.0.30000699",
 +            "electron-to-chromium": "1.3.15"
 +          }
 +        }
 +      }
 +    },
 +    "postcss-message-helpers": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz",
 +      "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=",
 +      "dev": true
 +    },
 +    "postcss-minify-font-values": {
 +      "version": "1.0.5",
 +      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz",
 +      "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=",
 +      "dev": true,
 +      "requires": {
 +        "object-assign": "4.1.1",
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-minify-gradients": {
 +      "version": "1.0.5",
 +      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz",
 +      "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-minify-params": {
 +      "version": "1.2.2",
 +      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz",
 +      "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=",
 +      "dev": true,
 +      "requires": {
 +        "alphanum-sort": "1.0.2",
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0",
 +        "uniqs": "2.0.0"
 +      }
 +    },
 +    "postcss-minify-selectors": {
 +      "version": "2.1.1",
 +      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz",
 +      "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=",
 +      "dev": true,
 +      "requires": {
 +        "alphanum-sort": "1.0.2",
 +        "has": "1.0.1",
 +        "postcss": "5.2.17",
 +        "postcss-selector-parser": "2.2.3"
 +      }
 +    },
 +    "postcss-modules-extract-imports": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz",
 +      "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "6.0.6"
 +      },
 +      "dependencies": {
 +        "ansi-styles": {
 +          "version": "3.1.0",
 +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz",
 +          "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=",
 +          "dev": true,
 +          "requires": {
 +            "color-convert": "1.9.0"
 +          }
 +        },
 +        "chalk": {
 +          "version": "2.0.1",
 +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz",
 +          "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==",
 +          "dev": true,
 +          "requires": {
 +            "ansi-styles": "3.1.0",
 +            "escape-string-regexp": "1.0.5",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "has-flag": {
 +          "version": "2.0.0",
 +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
 +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
 +          "dev": true
 +        },
 +        "postcss": {
 +          "version": "6.0.6",
 +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz",
 +          "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=",
 +          "dev": true,
 +          "requires": {
 +            "chalk": "2.0.1",
 +            "source-map": "0.5.6",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "supports-color": {
 +          "version": "4.2.0",
 +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz",
 +          "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==",
 +          "dev": true,
 +          "requires": {
 +            "has-flag": "2.0.0"
 +          }
 +        }
 +      }
 +    },
 +    "postcss-modules-local-by-default": {
 +      "version": "1.2.0",
 +      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz",
 +      "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=",
 +      "dev": true,
 +      "requires": {
 +        "css-selector-tokenizer": "0.7.0",
 +        "postcss": "6.0.6"
 +      },
 +      "dependencies": {
 +        "ansi-styles": {
 +          "version": "3.1.0",
 +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz",
 +          "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=",
 +          "dev": true,
 +          "requires": {
 +            "color-convert": "1.9.0"
 +          }
 +        },
 +        "chalk": {
 +          "version": "2.0.1",
 +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz",
 +          "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==",
 +          "dev": true,
 +          "requires": {
 +            "ansi-styles": "3.1.0",
 +            "escape-string-regexp": "1.0.5",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "has-flag": {
 +          "version": "2.0.0",
 +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
 +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
 +          "dev": true
 +        },
 +        "postcss": {
 +          "version": "6.0.6",
 +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz",
 +          "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=",
 +          "dev": true,
 +          "requires": {
 +            "chalk": "2.0.1",
 +            "source-map": "0.5.6",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "supports-color": {
 +          "version": "4.2.0",
 +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz",
 +          "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==",
 +          "dev": true,
 +          "requires": {
 +            "has-flag": "2.0.0"
 +          }
 +        }
 +      }
 +    },
 +    "postcss-modules-scope": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz",
 +      "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=",
 +      "dev": true,
 +      "requires": {
 +        "css-selector-tokenizer": "0.7.0",
 +        "postcss": "6.0.6"
 +      },
 +      "dependencies": {
 +        "ansi-styles": {
 +          "version": "3.1.0",
 +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz",
 +          "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=",
 +          "dev": true,
 +          "requires": {
 +            "color-convert": "1.9.0"
 +          }
 +        },
 +        "chalk": {
 +          "version": "2.0.1",
 +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz",
 +          "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==",
 +          "dev": true,
 +          "requires": {
 +            "ansi-styles": "3.1.0",
 +            "escape-string-regexp": "1.0.5",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "has-flag": {
 +          "version": "2.0.0",
 +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
 +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
 +          "dev": true
 +        },
 +        "postcss": {
 +          "version": "6.0.6",
 +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz",
 +          "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=",
 +          "dev": true,
 +          "requires": {
 +            "chalk": "2.0.1",
 +            "source-map": "0.5.6",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "supports-color": {
 +          "version": "4.2.0",
 +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz",
 +          "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==",
 +          "dev": true,
 +          "requires": {
 +            "has-flag": "2.0.0"
 +          }
 +        }
 +      }
 +    },
 +    "postcss-modules-values": {
 +      "version": "1.3.0",
 +      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz",
 +      "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=",
 +      "dev": true,
 +      "requires": {
 +        "icss-replace-symbols": "1.1.0",
 +        "postcss": "6.0.6"
 +      },
 +      "dependencies": {
 +        "ansi-styles": {
 +          "version": "3.1.0",
 +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz",
 +          "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=",
 +          "dev": true,
 +          "requires": {
 +            "color-convert": "1.9.0"
 +          }
 +        },
 +        "chalk": {
 +          "version": "2.0.1",
 +          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz",
 +          "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==",
 +          "dev": true,
 +          "requires": {
 +            "ansi-styles": "3.1.0",
 +            "escape-string-regexp": "1.0.5",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "has-flag": {
 +          "version": "2.0.0",
 +          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
 +          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
 +          "dev": true
 +        },
 +        "postcss": {
 +          "version": "6.0.6",
 +          "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz",
 +          "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=",
 +          "dev": true,
 +          "requires": {
 +            "chalk": "2.0.1",
 +            "source-map": "0.5.6",
 +            "supports-color": "4.2.0"
 +          }
 +        },
 +        "supports-color": {
 +          "version": "4.2.0",
 +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz",
 +          "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==",
 +          "dev": true,
 +          "requires": {
 +            "has-flag": "2.0.0"
 +          }
 +        }
 +      }
 +    },
 +    "postcss-nesting": {
 +      "version": "2.3.1",
 +      "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-2.3.1.tgz",
 +      "integrity": "sha1-lKa2pO9wf77CCof+5clXdZtOAc8=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-normalize-charset": {
 +      "version": "1.1.1",
 +      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz",
 +      "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-normalize-url": {
 +      "version": "3.0.8",
 +      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz",
 +      "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=",
 +      "dev": true,
 +      "requires": {
 +        "is-absolute-url": "2.1.0",
 +        "normalize-url": "1.9.1",
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-ordered-values": {
 +      "version": "2.2.3",
 +      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz",
 +      "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-pseudo-class-any-link": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-1.0.0.tgz",
 +      "integrity": "sha1-kDI5GWQB0zX+c6x1YYb6YuaTryY=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "postcss-selector-parser": "1.3.3"
 +      },
 +      "dependencies": {
 +        "postcss-selector-parser": {
 +          "version": "1.3.3",
 +          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-1.3.3.tgz",
 +          "integrity": "sha1-0u4Z33pk+O8hwacchvfUg1yIwoE=",
 +          "dev": true,
 +          "requires": {
 +            "flatten": "1.0.2",
 +            "indexes-of": "1.0.1",
 +            "uniq": "1.0.1"
 +          }
 +        }
 +      }
 +    },
 +    "postcss-pseudoelements": {
 +      "version": "3.0.0",
 +      "resolved": "https://registry.npmjs.org/postcss-pseudoelements/-/postcss-pseudoelements-3.0.0.tgz",
 +      "integrity": "sha1-bGghd8eQC6BTtt8X+MWQKEx7i7w=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-reduce-idents": {
 +      "version": "2.4.0",
 +      "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz",
 +      "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-reduce-initial": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz",
 +      "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-reduce-transforms": {
 +      "version": "1.0.4",
 +      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz",
 +      "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
 +      "dev": true,
 +      "requires": {
 +        "has": "1.0.1",
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0"
 +      }
 +    },
 +    "postcss-replace-overflow-wrap": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-1.0.0.tgz",
 +      "integrity": "sha1-8KA7Meq5Y2ppNr/SEOKu8bQ0pkM=",
 +      "dev": true,
 +      "requires": {
 +        "postcss": "5.2.17"
 +      }
 +    },
 +    "postcss-selector-matches": {
 +      "version": "2.0.5",
 +      "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-2.0.5.tgz",
 +      "integrity": "sha1-+g9Dvle2jneqTNEYBwI0kqExAn8=",
 +      "dev": true,
 +      "requires": {
 +        "balanced-match": "0.4.2",
 +        "postcss": "5.2.17"
 +      },
 +      "dependencies": {
 +        "balanced-match": {
 +          "version": "0.4.2",
 +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
 +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "postcss-selector-not": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-2.0.0.tgz",
 +      "integrity": "sha1-xzrSGj91I0vuf+4mnhVP1qhpeY0=",
 +      "dev": true,
 +      "requires": {
 +        "balanced-match": "0.2.1",
 +        "postcss": "5.2.17"
 +      },
 +      "dependencies": {
 +        "balanced-match": {
 +          "version": "0.2.1",
 +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz",
 +          "integrity": "sha1-e8ZYtL7WHu5CStdPdfXD4sTfPMc=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "postcss-selector-parser": {
 +      "version": "2.2.3",
 +      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz",
 +      "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
 +      "dev": true,
 +      "requires": {
 +        "flatten": "1.0.2",
 +        "indexes-of": "1.0.1",
 +        "uniq": "1.0.1"
 +      }
 +    },
 +    "postcss-svgo": {
 +      "version": "2.1.6",
 +      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz",
 +      "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=",
 +      "dev": true,
 +      "requires": {
 +        "is-svg": "2.1.0",
 +        "postcss": "5.2.17",
 +        "postcss-value-parser": "3.3.0",
 +        "svgo": "0.7.2"
 +      }
 +    },
 +    "postcss-unique-selectors": {
 +      "version": "2.0.2",
 +      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz",
 +      "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=",
 +      "dev": true,
 +      "requires": {
 +        "alphanum-sort": "1.0.2",
 +        "postcss": "5.2.17",
 +        "uniqs": "2.0.0"
 +      }
 +    },
 +    "postcss-value-parser": {
 +      "version": "3.3.0",
 +      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
 +      "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
 +      "dev": true
 +    },
 +    "postcss-zindex": {
 +      "version": "2.2.0",
 +      "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz",
 +      "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
 +      "dev": true,
 +      "requires": {
 +        "has": "1.0.1",
 +        "postcss": "5.2.17",
 +        "uniqs": "2.0.0"
 +      }
 +    },
 +    "prepend-http": {
 +      "version": "1.0.4",
 +      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
 +      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
 +      "dev": true
 +    },
 +    "preserve": {
 +      "version": "0.2.0",
 +      "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
 +      "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
 +      "dev": true
 +    },
 +    "private": {
 +      "version": "0.1.7",
 +      "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz",
 +      "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=",
 +      "dev": true
 +    },
 +    "process": {
 +      "version": "0.5.2",
 +      "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
 +      "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=",
 +      "dev": true
 +    },
 +    "process-nextick-args": {
 +      "version": "1.0.7",
 +      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
 +      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
 +      "dev": true
 +    },
 +    "promise-each": {
 +      "version": "2.2.0",
 +      "resolved": "https://registry.npmjs.org/promise-each/-/promise-each-2.2.0.tgz",
 +      "integrity": "sha1-M1MXTv8mlEgQN+BOAfd6oPttG2A=",
 +      "dev": true,
 +      "requires": {
 +        "any-promise": "0.1.0"
 +      }
 +    },
 +    "prr": {
 +      "version": "0.0.0",
 +      "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz",
 +      "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=",
 +      "dev": true
 +    },
 +    "public-encrypt": {
 +      "version": "4.0.0",
 +      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz",
 +      "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=",
 +      "dev": true,
 +      "requires": {
 +        "bn.js": "4.11.7",
 +        "browserify-rsa": "4.0.1",
 +        "create-hash": "1.1.3",
 +        "parse-asn1": "5.1.0",
 +        "randombytes": "2.0.5"
 +      }
 +    },
 +    "punycode": {
 +      "version": "1.4.1",
 +      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
 +      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
 +      "dev": true
 +    },
 +    "q": {
 +      "version": "1.5.0",
 +      "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz",
 +      "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=",
 +      "dev": true
 +    },
 +    "query-string": {
 +      "version": "4.3.4",
 +      "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
 +      "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
 +      "dev": true,
 +      "requires": {
 +        "object-assign": "4.1.1",
 +        "strict-uri-encode": "1.1.0"
 +      }
 +    },
 +    "querystring": {
 +      "version": "0.2.0",
 +      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
 +      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
 +      "dev": true
 +    },
 +    "querystring-es3": {
 +      "version": "0.2.1",
 +      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
 +      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
 +      "dev": true
 +    },
 +    "randomatic": {
 +      "version": "1.1.7",
 +      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
 +      "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
 +      "dev": true,
 +      "requires": {
 +        "is-number": "3.0.0",
 +        "kind-of": "4.0.0"
 +      },
 +      "dependencies": {
 +        "is-number": {
 +          "version": "3.0.0",
 +          "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
 +          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
 +          "dev": true,
 +          "requires": {
 +            "kind-of": "3.2.2"
 +          },
 +          "dependencies": {
 +            "kind-of": {
 +              "version": "3.2.2",
 +              "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
 +              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
 +              "dev": true,
 +              "requires": {
 +                "is-buffer": "1.1.5"
 +              }
 +            }
 +          }
 +        },
 +        "kind-of": {
 +          "version": "4.0.0",
 +          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
 +          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
 +          "dev": true,
 +          "requires": {
 +            "is-buffer": "1.1.5"
 +          }
 +        }
 +      }
 +    },
 +    "randombytes": {
 +      "version": "2.0.5",
 +      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz",
 +      "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==",
 +      "dev": true,
 +      "requires": {
 +        "safe-buffer": "5.1.1"
 +      }
 +    },
 +    "read-cache": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
 +      "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
 +      "dev": true,
 +      "requires": {
 +        "pify": "2.3.0"
 +      }
 +    },
 +    "read-pkg": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
 +      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
 +      "dev": true,
 +      "requires": {
 +        "load-json-file": "1.1.0",
 +        "normalize-package-data": "2.4.0",
 +        "path-type": "1.1.0"
 +      }
 +    },
 +    "read-pkg-up": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
 +      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
 +      "dev": true,
 +      "requires": {
 +        "find-up": "1.1.2",
 +        "read-pkg": "1.1.0"
 +      },
 +      "dependencies": {
 +        "find-up": {
 +          "version": "1.1.2",
 +          "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
 +          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
 +          "dev": true,
 +          "requires": {
 +            "path-exists": "2.1.0",
 +            "pinkie-promise": "2.0.1"
 +          }
 +        },
 +        "path-exists": {
 +          "version": "2.1.0",
 +          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
 +          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
 +          "dev": true,
 +          "requires": {
 +            "pinkie-promise": "2.0.1"
 +          }
 +        }
 +      }
 +    },
 +    "readable-stream": {
 +      "version": "2.3.3",
 +      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
 +      "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
 +      "dev": true,
 +      "requires": {
 +        "core-util-is": "1.0.2",
 +        "inherits": "2.0.3",
 +        "isarray": "1.0.0",
 +        "process-nextick-args": "1.0.7",
 +        "safe-buffer": "5.1.1",
 +        "string_decoder": "1.0.3",
 +        "util-deprecate": "1.0.2"
 +      }
 +    },
 +    "readdirp": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
 +      "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
 +      "dev": true,
 +      "requires": {
 +        "graceful-fs": "4.1.11",
 +        "minimatch": "3.0.4",
 +        "readable-stream": "2.3.3",
 +        "set-immediate-shim": "1.0.1"
 +      }
 +    },
 +    "reduce": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.1.tgz",
 +      "integrity": "sha1-FPouX/H8VgcDoCDLtfuqtpFWWAQ=",
 +      "dev": true,
 +      "requires": {
 +        "object-keys": "1.0.11"
 +      }
 +    },
 +    "reduce-css-calc": {
 +      "version": "1.3.0",
 +      "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz",
 +      "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
 +      "dev": true,
 +      "requires": {
 +        "balanced-match": "0.4.2",
 +        "math-expression-evaluator": "1.2.17",
 +        "reduce-function-call": "1.0.2"
 +      },
 +      "dependencies": {
 +        "balanced-match": {
 +          "version": "0.4.2",
 +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
 +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "reduce-function-call": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz",
 +      "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=",
 +      "dev": true,
 +      "requires": {
 +        "balanced-match": "0.4.2"
 +      },
 +      "dependencies": {
 +        "balanced-match": {
 +          "version": "0.4.2",
 +          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
 +          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "regenerate": {
 +      "version": "1.3.2",
 +      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz",
 +      "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=",
 +      "dev": true
 +    },
 +    "regenerator-runtime": {
 +      "version": "0.10.5",
 +      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
 +      "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
 +      "dev": true
 +    },
 +    "regenerator-transform": {
 +      "version": "0.9.11",
 +      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz",
 +      "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=",
 +      "dev": true,
 +      "requires": {
 +        "babel-runtime": "6.23.0",
 +        "babel-types": "6.25.0",
 +        "private": "0.1.7"
 +      }
 +    },
 +    "regex-cache": {
 +      "version": "0.4.3",
 +      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz",
 +      "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=",
 +      "dev": true,
 +      "requires": {
 +        "is-equal-shallow": "0.1.3",
 +        "is-primitive": "2.0.0"
 +      }
 +    },
 +    "regexpu-core": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
 +      "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
 +      "dev": true,
 +      "requires": {
 +        "regenerate": "1.3.2",
 +        "regjsgen": "0.2.0",
 +        "regjsparser": "0.1.5"
 +      }
 +    },
 +    "regjsgen": {
 +      "version": "0.2.0",
 +      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
 +      "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
 +      "dev": true
 +    },
 +    "regjsparser": {
 +      "version": "0.1.5",
 +      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
 +      "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
 +      "dev": true,
 +      "requires": {
 +        "jsesc": "0.5.0"
 +      },
 +      "dependencies": {
 +        "jsesc": {
 +          "version": "0.5.0",
 +          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
 +          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "remove-trailing-separator": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz",
 +      "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=",
 +      "dev": true
 +    },
 +    "repeat-element": {
 +      "version": "1.1.2",
 +      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
 +      "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
 +      "dev": true
 +    },
 +    "repeat-string": {
 +      "version": "1.6.1",
 +      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
 +      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
 +      "dev": true
 +    },
 +    "repeating": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
 +      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
 +      "dev": true,
 +      "requires": {
 +        "is-finite": "1.0.2"
 +      }
 +    },
 +    "require-directory": {
 +      "version": "2.1.1",
 +      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
 +      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
 +      "dev": true
 +    },
 +    "require-from-string": {
 +      "version": "1.2.1",
 +      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz",
 +      "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=",
 +      "dev": true
 +    },
 +    "require-main-filename": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
 +      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
 +      "dev": true
 +    },
 +    "resolve": {
 +      "version": "1.3.3",
 +      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz",
 +      "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=",
 +      "dev": true,
 +      "requires": {
 +        "path-parse": "1.0.5"
 +      }
 +    },
 +    "rgb": {
 +      "version": "0.1.0",
 +      "resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz",
 +      "integrity": "sha1-vieykej+/+rBvZlylyG/pA/AN7U=",
 +      "dev": true
 +    },
 +    "rgb-hex": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-1.0.0.tgz",
 +      "integrity": "sha1-v6+M2c2RZLWibXHrTxWgllMks8E=",
 +      "dev": true
 +    },
 +    "right-align": {
 +      "version": "0.1.3",
 +      "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
 +      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
 +      "dev": true,
 +      "requires": {
 +        "align-text": "0.1.4"
 +      }
 +    },
 +    "ripemd160": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
 +      "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=",
 +      "dev": true,
 +      "requires": {
 +        "hash-base": "2.0.2",
 +        "inherits": "2.0.3"
 +      }
 +    },
 +    "safe-buffer": {
 +      "version": "5.1.1",
 +      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
 +      "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
 +      "dev": true
 +    },
 +    "sax": {
 +      "version": "1.2.4",
 +      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
 +      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
 +      "dev": true
 +    },
 +    "schema-utils": {
 +      "version": "0.3.0",
 +      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
 +      "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
 +      "dev": true,
 +      "requires": {
 +        "ajv": "5.2.2"
 +      },
 +      "dependencies": {
 +        "ajv": {
 +          "version": "5.2.2",
 +          "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz",
 +          "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=",
 +          "dev": true,
 +          "requires": {
 +            "co": "4.6.0",
 +            "fast-deep-equal": "1.0.0",
 +            "json-schema-traverse": "0.3.1",
 +            "json-stable-stringify": "1.0.1"
 +          }
 +        }
 +      }
 +    },
 +    "scrolldir": {
 +      "version": "1.2.9",
 +      "resolved": "https://registry.npmjs.org/scrolldir/-/scrolldir-1.2.9.tgz",
 +      "integrity": "sha1-o6VKM4AG3SjA/hfq/m3ObQIcDb4=",
 +      "dev": true
 +    },
 +    "select": {
 +      "version": "1.1.2",
 +      "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
 +      "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=",
 +      "dev": true
 +    },
 +    "semver": {
 +      "version": "5.3.0",
 +      "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
 +      "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
 +      "dev": true
 +    },
 +    "set-blocking": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
 +      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
 +      "dev": true
 +    },
 +    "set-immediate-shim": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
 +      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
 +      "dev": true
 +    },
 +    "setimmediate": {
 +      "version": "1.0.5",
 +      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
 +      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
 +      "dev": true
 +    },
 +    "sha.js": {
 +      "version": "2.4.8",
 +      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz",
 +      "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=",
 +      "dev": true,
 +      "requires": {
 +        "inherits": "2.0.3"
 +      }
 +    },
 +    "slash": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
 +      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
 +      "dev": true
 +    },
 +    "sort-keys": {
 +      "version": "1.1.2",
 +      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
 +      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
 +      "dev": true,
 +      "requires": {
 +        "is-plain-obj": "1.1.0"
 +      }
 +    },
 +    "source-list-map": {
 +      "version": "0.1.8",
 +      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
 +      "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=",
 +      "dev": true
 +    },
 +    "source-map": {
 +      "version": "0.5.6",
 +      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
 +      "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
 +      "dev": true
 +    },
 +    "source-map-support": {
 +      "version": "0.4.15",
 +      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz",
 +      "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=",
 +      "dev": true,
 +      "requires": {
 +        "source-map": "0.5.6"
 +      }
 +    },
 +    "spdx-correct": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
 +      "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
 +      "dev": true,
 +      "requires": {
 +        "spdx-license-ids": "1.2.2"
 +      }
 +    },
 +    "spdx-expression-parse": {
 +      "version": "1.0.4",
 +      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
 +      "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
 +      "dev": true
 +    },
 +    "spdx-license-ids": {
 +      "version": "1.2.2",
 +      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
 +      "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
 +      "dev": true
 +    },
 +    "sprintf-js": {
 +      "version": "1.0.3",
 +      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
 +      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
 +      "dev": true
 +    },
 +    "stream-browserify": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
 +      "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
 +      "dev": true,
 +      "requires": {
 +        "inherits": "2.0.3",
 +        "readable-stream": "2.3.3"
 +      }
 +    },
 +    "stream-http": {
 +      "version": "2.7.2",
 +      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz",
 +      "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==",
 +      "dev": true,
 +      "requires": {
 +        "builtin-status-codes": "3.0.0",
 +        "inherits": "2.0.3",
 +        "readable-stream": "2.3.3",
 +        "to-arraybuffer": "1.0.1",
 +        "xtend": "4.0.1"
 +      }
 +    },
 +    "strict-uri-encode": {
 +      "version": "1.1.0",
 +      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
 +      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
 +      "dev": true
 +    },
 +    "string-width": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
 +      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
 +      "dev": true,
 +      "requires": {
 +        "code-point-at": "1.1.0",
 +        "is-fullwidth-code-point": "1.0.0",
 +        "strip-ansi": "3.0.1"
 +      }
 +    },
++    "string_decoder": {
++      "version": "1.0.3",
++      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
++      "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
++      "dev": true,
++      "requires": {
++        "safe-buffer": "5.1.1"
++      }
++    },
 +    "strip-ansi": {
 +      "version": "3.0.1",
 +      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
 +      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
 +      "dev": true,
 +      "requires": {
 +        "ansi-regex": "2.1.1"
 +      }
 +    },
 +    "strip-bom": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
 +      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
 +      "dev": true,
 +      "requires": {
 +        "is-utf8": "0.2.1"
 +      }
 +    },
 +    "style-loader": {
 +      "version": "0.16.1",
 +      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.16.1.tgz",
 +      "integrity": "sha1-UOMlJY1OeEId2WgGNrQehmFZXRA=",
 +      "dev": true,
 +      "requires": {
 +        "loader-utils": "1.1.0"
 +      }
 +    },
 +    "supports-color": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
 +      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
 +      "dev": true
 +    },
 +    "svgo": {
 +      "version": "0.7.2",
 +      "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz",
 +      "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=",
 +      "dev": true,
 +      "requires": {
 +        "coa": "1.0.4",
 +        "colors": "1.1.2",
 +        "csso": "2.3.2",
 +        "js-yaml": "3.7.0",
 +        "mkdirp": "0.5.1",
 +        "sax": "1.2.4",
 +        "whet.extend": "0.9.9"
 +      }
 +    },
 +    "tachyons": {
 +      "version": "4.7.4",
 +      "resolved": "https://registry.npmjs.org/tachyons/-/tachyons-4.7.4.tgz",
 +      "integrity": "sha1-7KT/oVwfBqNX8IjG0OaH/F8ECMw=",
 +      "dev": true
 +    },
 +    "tapable": {
 +      "version": "0.2.6",
 +      "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz",
 +      "integrity": "sha1-IGvo4YiGC1FEJTdebxrom/sB/Y0=",
 +      "dev": true
 +    },
 +    "through": {
 +      "version": "2.3.8",
 +      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
 +      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
 +      "dev": true
 +    },
 +    "timers-browserify": {
 +      "version": "2.0.2",
 +      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz",
 +      "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=",
 +      "dev": true,
 +      "requires": {
 +        "setimmediate": "1.0.5"
 +      }
 +    },
 +    "tiny-emitter": {
 +      "version": "2.0.1",
 +      "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.1.tgz",
 +      "integrity": "sha1-5lkZ2R5Ijip49+voJ6VsaxiNUa8=",
 +      "dev": true
 +    },
 +    "to-arraybuffer": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
 +      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
 +      "dev": true
 +    },
 +    "to-factory": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/to-factory/-/to-factory-1.0.0.tgz",
 +      "integrity": "sha1-hzivi9lxIK0dQEeXKtpVY7+UebE=",
 +      "dev": true
 +    },
 +    "to-fast-properties": {
 +      "version": "1.0.3",
 +      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
 +      "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
 +      "dev": true
 +    },
 +    "trim-right": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
 +      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
 +      "dev": true
 +    },
 +    "tty-browserify": {
 +      "version": "0.0.0",
 +      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
 +      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
 +      "dev": true
 +    },
 +    "uglify-to-browserify": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
 +      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
 +      "dev": true,
 +      "optional": true
 +    },
 +    "uniq": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
 +      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
 +      "dev": true
 +    },
 +    "uniqid": {
 +      "version": "4.1.1",
 +      "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz",
 +      "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=",
 +      "dev": true,
 +      "requires": {
 +        "macaddress": "0.2.8"
 +      }
 +    },
 +    "uniqs": {
 +      "version": "2.0.0",
 +      "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
 +      "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
 +      "dev": true
 +    },
 +    "units-css": {
 +      "version": "0.4.0",
 +      "resolved": "https://registry.npmjs.org/units-css/-/units-css-0.4.0.tgz",
 +      "integrity": "sha1-1iKGU6UZg9fBb/KPi53Dsf/tOgc=",
 +      "dev": true,
 +      "requires": {
 +        "isnumeric": "0.2.0",
 +        "viewport-dimensions": "0.2.0"
 +      }
 +    },
 +    "url": {
 +      "version": "0.11.0",
 +      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
 +      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
 +      "dev": true,
 +      "requires": {
 +        "punycode": "1.3.2",
 +        "querystring": "0.2.0"
 +      },
 +      "dependencies": {
 +        "punycode": {
 +          "version": "1.3.2",
 +          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
 +          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "util": {
 +      "version": "0.10.3",
 +      "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
 +      "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
 +      "dev": true,
 +      "requires": {
 +        "inherits": "2.0.1"
 +      },
 +      "dependencies": {
 +        "inherits": {
 +          "version": "2.0.1",
 +          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
 +          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "util-deprecate": {
 +      "version": "1.0.2",
 +      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
 +      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
 +      "dev": true
 +    },
 +    "validate-npm-package-license": {
 +      "version": "3.0.1",
 +      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
 +      "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
 +      "dev": true,
 +      "requires": {
 +        "spdx-correct": "1.0.2",
 +        "spdx-expression-parse": "1.0.4"
 +      }
 +    },
 +    "vendors": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz",
 +      "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=",
 +      "dev": true
 +    },
 +    "viewport-dimensions": {
 +      "version": "0.2.0",
 +      "resolved": "https://registry.npmjs.org/viewport-dimensions/-/viewport-dimensions-0.2.0.tgz",
 +      "integrity": "sha1-3nQHR9tTh/0XJfUXXpG6x2r982w=",
 +      "dev": true
 +    },
 +    "vm-browserify": {
 +      "version": "0.0.4",
 +      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
 +      "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
 +      "dev": true,
 +      "requires": {
 +        "indexof": "0.0.1"
 +      }
 +    },
 +    "watchpack": {
 +      "version": "1.3.1",
 +      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz",
 +      "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=",
 +      "dev": true,
 +      "requires": {
 +        "async": "2.5.0",
 +        "chokidar": "1.7.0",
 +        "graceful-fs": "4.1.11"
 +      }
 +    },
 +    "webpack": {
 +      "version": "2.6.1",
 +      "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.6.1.tgz",
 +      "integrity": "sha1-LgRX8KuxrF3zqxBsacZy8jZ4Xwc=",
 +      "dev": true,
 +      "requires": {
 +        "acorn": "5.1.1",
 +        "acorn-dynamic-import": "2.0.2",
 +        "ajv": "4.11.8",
 +        "ajv-keywords": "1.5.1",
 +        "async": "2.5.0",
 +        "enhanced-resolve": "3.3.0",
 +        "interpret": "1.0.3",
 +        "json-loader": "0.5.4",
 +        "json5": "0.5.1",
 +        "loader-runner": "2.3.0",
 +        "loader-utils": "0.2.17",
 +        "memory-fs": "0.4.1",
 +        "mkdirp": "0.5.1",
 +        "node-libs-browser": "2.0.0",
 +        "source-map": "0.5.6",
 +        "supports-color": "3.2.3",
 +        "tapable": "0.2.6",
 +        "uglify-js": "2.8.29",
 +        "watchpack": "1.3.1",
 +        "webpack-sources": "0.2.3",
 +        "yargs": "6.6.0"
 +      },
 +      "dependencies": {
 +        "ajv-keywords": {
 +          "version": "1.5.1",
 +          "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
 +          "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=",
 +          "dev": true
 +        },
 +        "camelcase": {
 +          "version": "1.2.1",
 +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
 +          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
 +          "dev": true
 +        },
 +        "loader-utils": {
 +          "version": "0.2.17",
 +          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
 +          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
 +          "dev": true,
 +          "requires": {
 +            "big.js": "3.1.3",
 +            "emojis-list": "2.1.0",
 +            "json5": "0.5.1",
 +            "object-assign": "4.1.1"
 +          }
 +        },
 +        "source-list-map": {
 +          "version": "1.1.2",
 +          "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz",
 +          "integrity": "sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE=",
 +          "dev": true
 +        },
 +        "supports-color": {
 +          "version": "3.2.3",
 +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
 +          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
 +          "dev": true,
 +          "requires": {
 +            "has-flag": "1.0.0"
 +          }
 +        },
 +        "uglify-js": {
 +          "version": "2.8.29",
 +          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
 +          "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
 +          "dev": true,
 +          "requires": {
 +            "source-map": "0.5.6",
 +            "uglify-to-browserify": "1.0.2",
 +            "yargs": "3.10.0"
 +          },
 +          "dependencies": {
 +            "yargs": {
 +              "version": "3.10.0",
 +              "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
 +              "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
 +              "dev": true,
 +              "requires": {
 +                "camelcase": "1.2.1",
 +                "cliui": "2.1.0",
 +                "decamelize": "1.2.0",
 +                "window-size": "0.1.0"
 +              }
 +            }
 +          }
 +        },
 +        "webpack-sources": {
 +          "version": "0.2.3",
 +          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz",
 +          "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=",
 +          "dev": true,
 +          "requires": {
 +            "source-list-map": "1.1.2",
 +            "source-map": "0.5.6"
 +          }
 +        }
 +      }
 +    },
 +    "webpack-sources": {
 +      "version": "1.0.1",
 +      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz",
 +      "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==",
 +      "dev": true,
 +      "requires": {
 +        "source-list-map": "2.0.0",
 +        "source-map": "0.5.6"
 +      },
 +      "dependencies": {
 +        "source-list-map": {
 +          "version": "2.0.0",
 +          "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
 +          "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==",
 +          "dev": true
 +        }
 +      }
 +    },
 +    "whet.extend": {
 +      "version": "0.9.9",
 +      "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
 +      "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=",
 +      "dev": true
 +    },
 +    "which-module": {
 +      "version": "1.0.0",
 +      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
 +      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
 +      "dev": true
 +    },
 +    "window-size": {
 +      "version": "0.1.0",
 +      "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
 +      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
 +      "dev": true
 +    },
 +    "wrap-ansi": {
 +      "version": "2.1.0",
 +      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
 +      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
 +      "dev": true,
 +      "requires": {
 +        "string-width": "1.0.2",
 +        "strip-ansi": "3.0.1"
 +      }
 +    },
 +    "xtend": {
 +      "version": "4.0.1",
 +      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
 +      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
 +      "dev": true
 +    },
 +    "y18n": {
 +      "version": "3.2.1",
 +      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
 +      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
 +      "dev": true
 +    },
 +    "yargs": {
 +      "version": "6.6.0",
 +      "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz",
 +      "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
 +      "dev": true,
 +      "requires": {
 +        "camelcase": "3.0.0",
 +        "cliui": "3.2.0",
 +        "decamelize": "1.2.0",
 +        "get-caller-file": "1.0.2",
 +        "os-locale": "1.4.0",
 +        "read-pkg-up": "1.0.1",
 +        "require-directory": "2.1.1",
 +        "require-main-filename": "1.0.1",
 +        "set-blocking": "2.0.0",
 +        "string-width": "1.0.2",
 +        "which-module": "1.0.0",
 +        "y18n": "3.2.1",
 +        "yargs-parser": "4.2.1"
 +      },
 +      "dependencies": {
 +        "camelcase": {
 +          "version": "3.0.0",
 +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
 +          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
 +          "dev": true
 +        },
 +        "cliui": {
 +          "version": "3.2.0",
 +          "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
 +          "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
 +          "dev": true,
 +          "requires": {
 +            "string-width": "1.0.2",
 +            "strip-ansi": "3.0.1",
 +            "wrap-ansi": "2.1.0"
 +          }
 +        }
 +      }
 +    },
 +    "yargs-parser": {
 +      "version": "4.2.1",
 +      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz",
 +      "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
 +      "dev": true,
 +      "requires": {
 +        "camelcase": "3.0.0"
 +      },
 +      "dependencies": {
 +        "camelcase": {
 +          "version": "3.0.0",
 +          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
 +          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
 +          "dev": true
 +        }
 +      }
 +    }
 +  }
 +}
index f0847492b0bcd56e6caeb2c29df20dc7767742ec,0000000000000000000000000000000000000000..04bd261f395781448ec9c77b4980f0d6d0afaa9b
mode 100755,000000..100755
--- /dev/null
@@@ -1,36 -1,0 +1,36 @@@
-     "build": "webpack --progress --colors --watch",    
 +{
 +  "name": "gohugo-default-styles",
 +  "version": "1.0.0",
 +  "description": "Default Theme for Hugo Sites",
 +  "main": "index.js",
 +  "repository": "",
 +  "author": "budparr",
 +  "license": "MIT",
 +  "scripts": {
 +    "build:production": "rm -rf ../static/dist && webpack -p",
++    "build": "webpack --progress --colors --watch",
 +    "start": "npm run build"
 +  },
 +  "devDependencies": {
 +    "babel-core": "^6.24.1",
 +    "babel-loader": "^7.0.0",
 +    "babel-preset-env": "^1.4.0",
 +    "clipboard": "^1.6.1",
 +    "css-loader": "^0.28.0",
 +    "cssnano": "^3.10.0",
 +    "docsearch.js": "^2.3.3",
 +    "extract-text-webpack-plugin": "^2.1.0",
 +    "file-loader": "^0.11.1",
 +    "highlight.js": "^9.11.0",
 +    "lazysizes": "^3.0.0",
 +    "postcss": "^5.2.16",
 +    "postcss-cssnext": "^2.10.0",
 +    "postcss-import": "^9.1.0",
 +    "postcss-loader": "^1.3.3",
 +    "scrolldir": "^1.2.7",
 +    "style-loader": "^0.16.1",
 +    "tachyons": "^4.7.0",
 +    "webpack": "^2.3.3"
 +  },
 +  "dependencies": {}
 +}
index 47a0fa0e041bae9b7451753244dfd57c2b81ad8f,0000000000000000000000000000000000000000..fc757f71c5bd15cb194a701b1fc96d8013847953
mode 100644,000000..100644
--- /dev/null
@@@ -1,11708 -1,0 +1,22 @@@
- /******/ (function(modules) { // webpackBootstrap
- /******/      // The module cache
- /******/      var installedModules = {};
- /******/
- /******/      // The require function
- /******/      function __webpack_require__(moduleId) {
- /******/
- /******/              // Check if module is in cache
- /******/              if(installedModules[moduleId]) {
- /******/                      return installedModules[moduleId].exports;
- /******/              }
- /******/              // Create a new module (and put it into the cache)
- /******/              var module = installedModules[moduleId] = {
- /******/                      i: moduleId,
- /******/                      l: false,
- /******/                      exports: {}
- /******/              };
- /******/
- /******/              // Execute the module function
- /******/              modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/
- /******/              // Flag the module as loaded
- /******/              module.l = true;
- /******/
- /******/              // Return the exports of the module
- /******/              return module.exports;
- /******/      }
- /******/
- /******/
- /******/      // expose the modules object (__webpack_modules__)
- /******/      __webpack_require__.m = modules;
- /******/
- /******/      // expose the module cache
- /******/      __webpack_require__.c = installedModules;
- /******/
- /******/      // identity function for calling harmony imports with the correct context
- /******/      __webpack_require__.i = function(value) { return value; };
- /******/
- /******/      // define getter function for harmony exports
- /******/      __webpack_require__.d = function(exports, name, getter) {
- /******/              if(!__webpack_require__.o(exports, name)) {
- /******/                      Object.defineProperty(exports, name, {
- /******/                              configurable: false,
- /******/                              enumerable: true,
- /******/                              get: getter
- /******/                      });
- /******/              }
- /******/      };
- /******/
- /******/      // getDefaultExport function for compatibility with non-harmony modules
- /******/      __webpack_require__.n = function(module) {
- /******/              var getter = module && module.__esModule ?
- /******/                      function getDefault() { return module['default']; } :
- /******/                      function getModuleExports() { return module; };
- /******/              __webpack_require__.d(getter, 'a', getter);
- /******/              return getter;
- /******/      };
- /******/
- /******/      // Object.prototype.hasOwnProperty.call
- /******/      __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
- /******/
- /******/      // __webpack_public_path__
- /******/      __webpack_require__.p = "";
- /******/
- /******/      // Load entry module and return exports
- /******/      return __webpack_require__(__webpack_require__.s = 10);
- /******/ })
- /************************************************************************/
- /******/ ([
- /* 0 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /**
- * Anchor for ID BPNY
- **/
- var anchorForId = function anchorForId(id) {
-   var anchor = document.createElement("a");
-   anchor.className = "header-link";
-   anchor.href = "#" + id;
-   anchor.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>';
-   return anchor;
- };
- var linkifyAnchors = function linkifyAnchors(level, containingElement) {
-   var headers = containingElement.getElementsByTagName("h" + level);
-   for (var h = 0; h < headers.length; h++) {
-     var header = headers[h];
-     if (typeof header.id !== "undefined" && header.id !== "") {
-       header.appendChild(anchorForId(header.id));
-     }
-   }
- };
- document.onreadystatechange = function () {
-   if (this.readyState === "complete") {
-     var contentBlock = document.getElementsByClassName("prose")[0];
-     if (!contentBlock) {
-       return;
-     }
-     for (var level = 2; level <= 2; level++) {
-       linkifyAnchors(level, contentBlock);
-     }
-   }
- };
- /***/ }),
- /* 1 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var Clipboard = __webpack_require__(11);
- new Clipboard('.copy', {
-   target: function target(trigger) {
-     return trigger.nextElementSibling;
-   }
- }).on('success', function (e) {
-   successMessage(e.trigger, 'Copied!');
-   e.clearSelection();
- }).on('error', function (e) {
-   successMessage(e.trigger, fallbackMessage(e.action));
- });
- function successMessage(elem, msg) {
-   elem.setAttribute('class', 'copied bg-primary-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2');
-   elem.setAttribute('aria-label', msg);
- }
- function fallbackMessage(elem, action) {
-   var actionMsg = '';
-   var actionKey = action === 'cut' ? 'X' : 'C';
-   if (isMac) {
-     actionMsg = 'Press ⌘-' + actionKey;
-   } else {
-     actionMsg = 'Press Ctrl-' + actionKey;
-   }
-   return actionMsg;
- }
- /***/ }),
- /* 2 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
- var article = document.getElementById('prose');
- if (article) {
-   var codeBlocks = article.getElementsByTagName('code');
-   var _iteratorNormalCompletion = true;
-   var _didIteratorError = false;
-   var _iteratorError = undefined;
-   try {
-     for (var _iterator = Object.entries(codeBlocks)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
-       var _ref = _step.value;
-       var _ref2 = _slicedToArray(_ref, 2);
-       var key = _ref2[0];
-       var codeBlock = _ref2[1];
-       var widthDif = codeBlock.scrollWidth - codeBlock.clientWidth;
-       if (widthDif > 0) codeBlock.parentNode.classList.add('expand');
-     }
-   } catch (err) {
-     _didIteratorError = true;
-     _iteratorError = err;
-   } finally {
-     try {
-       if (!_iteratorNormalCompletion && _iterator.return) {
-         _iterator.return();
-       }
-     } finally {
-       if (_didIteratorError) {
-         throw _iteratorError;
-       }
-     }
-   }
- }
- /***/ }),
- /* 3 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var docsearch = __webpack_require__(12);
- docsearch({
-   apiKey: '167e7998590aebda7f9fedcf86bc4a55',
-   indexName: 'hugodocs',
-   inputSelector: '#search-input',
-   debug: true // Set debug to true if you want to inspect the dropdown
- });
- /***/ }),
- /* 4 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var lazysizes = __webpack_require__(13);
- // var lsnoscript = require('lazysizes/plugins/noscript/ls.noscript.js');
- /***/ }),
- /* 5 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- // Grab any element that has the 'js-toggle' class and add an event listner for the toggleClass function
- var toggleBtns = document.getElementsByClassName('js-toggle');
- for (var i = 0; i < toggleBtns.length; i++) {
-   toggleBtns[i].addEventListener('click', toggleClass, false);
- }
- function toggleClass() {
-   // Define the data target via the dataset "target" (e.g. data-target=".docsmenu")
-   var content = this.dataset.target.split(' ');
-   // Find any menu items that are open
-   var mobileCurrentlyOpen = document.querySelector('.mobilemenu:not(.dn)');
-   var desktopCurrentlyOpen = document.querySelector('.desktopmenu:not(.dn)');
-   var desktopActive = document.querySelector('.desktopmenu:not(.dn)');
-   // Loop through the targets' divs
-   for (var i = 0; i < content.length; i++) {
-     var matches = document.querySelectorAll(content[i]);
-     //for each, if the div has the 'dn' class (which is "display:none;"), remove it, otherwise, add that class
-     [].forEach.call(matches, function (dom) {
-       dom.classList.contains('dn') ? dom.classList.remove('dn') : dom.classList.add('dn');
-       return false;
-     });
-     // close the currently open menu items
-     if (mobileCurrentlyOpen) mobileCurrentlyOpen.classList.add('dn');
-     if (desktopCurrentlyOpen) desktopCurrentlyOpen.classList.add('dn');
-     if (desktopActive) desktopActive.classList.remove('db');
-   }
- }
- /***/ }),
- /* 6 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/, 'js');
- /***/ }),
- /* 7 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var scrollDir = __webpack_require__(14);
- /***/ }),
- /* 8 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- // query selector targets Hugo TOC 
- (function () {
-   'use strict';
-   // Feature Test
-   if ('querySelector' in document && 'addEventListener' in window && Array.prototype.forEach) {
-     // Function to animate the scroll
-     var smoothScroll = function smoothScroll(anchor, duration) {
-       // Calculate how far and how fast to scroll
-       var startLocation = window.pageYOffset;
-       var endLocation = anchor.offsetTop;
-       var distance = endLocation - startLocation;
-       var increments = distance / (duration / 16);
-       var stopAnimation;
-       // Scroll the page by an increment, and check if it's time to stop
-       var animateScroll = function animateScroll() {
-         window.scrollBy(0, increments);
-         stopAnimation();
-       };
-       // If scrolling down
-       if (increments >= 0) {
-         // Stop animation when you reach the anchor OR the bottom of the page
-         stopAnimation = function stopAnimation() {
-           var travelled = window.pageYOffset;
-           if (travelled >= endLocation - increments || window.innerHeight + travelled >= document.body.offsetHeight) {
-             clearInterval(runAnimation);
-           }
-         };
-       }
-       // If scrolling up
-       else {
-           // Stop animation when you reach the anchor OR the top of the page
-           stopAnimation = function stopAnimation() {
-             var travelled = window.pageYOffset;
-             if (travelled <= (endLocation || 0)) {
-               clearInterval(runAnimation);
-             }
-           };
-         }
-       // Loop the animation function
-       var runAnimation = setInterval(animateScroll, 16);
-     };
-     // Define smooth scroll links
-     var scrollToggle = document.querySelectorAll('#TableOfContents ul li a');
-     // For each smooth scroll link
-     [].forEach.call(scrollToggle, function (toggle) {
-       // When the smooth scroll link is clicked
-       toggle.addEventListener('click', function (e) {
-         // Prevent the default link behavior
-         e.preventDefault();
-         // Get anchor link and calculate distance from the top
-         var dataID = toggle.getAttribute('href');
-         var dataTarget = document.querySelector(dataID);
-         var dataSpeed = toggle.getAttribute('data-speed');
-         // If the anchor exists
-         if (dataTarget) {
-           // Scroll to the anchor
-           smoothScroll(dataTarget, dataSpeed || 500);
-         }
-       }, false);
-     });
-   }
- })();
- /***/ }),
- /* 9 */
- /***/ (function(module, exports) {
- // removed by extract-text-webpack-plugin
- /***/ }),
- /* 10 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var _main = __webpack_require__(9);
- var _main2 = _interopRequireDefault(_main);
- __webpack_require__(0);
- __webpack_require__(1);
- __webpack_require__(2);
- __webpack_require__(3);
- __webpack_require__(4);
- __webpack_require__(5);
- __webpack_require__(7);
- __webpack_require__(8);
- __webpack_require__(6);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- /***/ }),
- /* 11 */
- /***/ (function(module, exports, __webpack_require__) {
- var require;var require;/*!
++!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=10)}([function(t,e,n){"use strict";var r=function(t){var e=document.createElement("a");return e.className="header-link",e.href="#"+t,e.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>',e},i=function(t,e){for(var n=e.getElementsByTagName("h"+t),i=0;i<n.length;i++){var o=n[i];void 0!==o.id&&""!==o.id&&o.appendChild(r(o.id))}};document.onreadystatechange=function(){if("complete"===this.readyState){var t=document.getElementsByClassName("prose")[0];if(!t)return;for(var e=2;e<=2;e++)i(e,t)}}},function(t,e,n){"use strict";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)}function i(t,e){var n="cut"===e?"X":"C";return isMac?"Press ⌘-"+n:"Press Ctrl-"+n}new(n(11))(".copy",{target:function(t){return t.nextElementSibling}}).on("success",function(t){r(t.trigger,"Copied!"),t.clearSelection()}).on("error",function(t){r(t.trigger,i(t.action))})},function(t,e,n){"use strict";var r=function(){function t(t,e){var n=[],r=!0,i=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(r=(s=a.next()).done)&&(n.push(s.value),!e||n.length!==e);r=!0);}catch(t){i=!0,o=t}finally{try{!r&&a.return&&a.return()}finally{if(i)throw o}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),i=document.getElementById("prose");if(i){var o=i.getElementsByTagName("code"),s=!0,a=!1,u=void 0;try{for(var c,l=Object.entries(o)[Symbol.iterator]();!(s=(c=l.next()).done);s=!0){var h=c.value,f=r(h,2),p=(f[0],f[1]);p.scrollWidth-p.clientWidth>0&&p.parentNode.classList.add("expand")}}catch(t){a=!0,u=t}finally{try{!s&&l.return&&l.return()}finally{if(a)throw u}}}},function(t,e,n){"use strict";n(12)({apiKey:"167e7998590aebda7f9fedcf86bc4a55",indexName:"hugodocs",inputSelector:"#search-input",debug:!0})},function(t,e,n){"use strict";n(13),n(14)},function(t,e,n){"use strict";function r(){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")}}for(var i=document.getElementsByClassName("js-toggle"),o=0;o<i.length;o++)i[o].addEventListener("click",r,!1)},function(t,e,n){"use strict";document.documentElement.className=document.documentElement.className.replace(/\bno-js\b/,"js")},function(t,e,n){"use strict";n(15)},function(t,e,n){"use strict";!function(){if("querySelector"in document&&"addEventListener"in window&&Array.prototype.forEach){var t=function(t,e){var n,r=window.pageYOffset,i=t.offsetTop,o=i-r,s=o/(e/16),a=function(){window.scrollBy(0,s),n()};n=s>=0?function(){var t=window.pageYOffset;(t>=i-s||window.innerHeight+t>=document.body.offsetHeight)&&clearInterval(u)}:function(){window.pageYOffset<=(i||0)&&clearInterval(u)};var u=setInterval(a,16)},e=document.querySelectorAll("#TableOfContents ul li a");[].forEach.call(e,function(e){e.addEventListener("click",function(n){n.preventDefault();var r=e.getAttribute("href"),i=document.querySelector(r),o=e.getAttribute("data-speed");i&&t(i,o||500)},!1)})}}()},function(t,e){},function(t,e,n){"use strict";var r=n(9);!function(t){t&&t.__esModule}(r);n(0),n(1),n(2),n(3),n(4),n(5),n(7),n(8),n(6)},function(t,e,n){var r,r;/*!
 + * clipboard.js v1.7.1
 + * https://zenorocha.github.io/clipboard.js
 + *
 + * Licensed MIT © Zeno Rocha
 + */
- (function(f){if(true){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Clipboard = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return require(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
- var DOCUMENT_NODE_TYPE = 9;
- /**
-  * A polyfill for Element.matches()
-  */
- if (typeof Element !== 'undefined' && !Element.prototype.matches) {
-     var proto = Element.prototype;
-     proto.matches = proto.matchesSelector ||
-                     proto.mozMatchesSelector ||
-                     proto.msMatchesSelector ||
-                     proto.oMatchesSelector ||
-                     proto.webkitMatchesSelector;
- }
- /**
-  * Finds the closest parent that matches a selector.
-  *
-  * @param {Element} element
-  * @param {String} selector
-  * @return {Function}
-  */
- function closest (element, selector) {
-     while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {
-         if (typeof element.matches === 'function' &&
-             element.matches(selector)) {
-           return element;
-         }
-         element = element.parentNode;
-     }
- }
- module.exports = closest;
- },{}],2:[function(require,module,exports){
- var closest = require('./closest');
- /**
-  * Delegates event to a selector.
-  *
-  * @param {Element} element
-  * @param {String} selector
-  * @param {String} type
-  * @param {Function} callback
-  * @param {Boolean} useCapture
-  * @return {Object}
-  */
- function delegate(element, selector, type, callback, useCapture) {
-     var listenerFn = listener.apply(this, arguments);
-     element.addEventListener(type, listenerFn, useCapture);
-     return {
-         destroy: function() {
-             element.removeEventListener(type, listenerFn, useCapture);
-         }
-     }
- }
- /**
-  * Finds closest match and invokes callback.
-  *
-  * @param {Element} element
-  * @param {String} selector
-  * @param {String} type
-  * @param {Function} callback
-  * @return {Function}
-  */
- function listener(element, selector, type, callback) {
-     return function(e) {
-         e.delegateTarget = closest(e.target, selector);
-         if (e.delegateTarget) {
-             callback.call(element, e);
-         }
-     }
- }
- module.exports = delegate;
- },{"./closest":1}],3:[function(require,module,exports){
- /**
-  * Check if argument is a HTML element.
-  *
-  * @param {Object} value
-  * @return {Boolean}
-  */
- exports.node = function(value) {
-     return value !== undefined
-         && value instanceof HTMLElement
-         && value.nodeType === 1;
- };
- /**
-  * Check if argument is a list of HTML elements.
-  *
-  * @param {Object} value
-  * @return {Boolean}
-  */
- exports.nodeList = function(value) {
-     var type = Object.prototype.toString.call(value);
-     return value !== undefined
-         && (type === '[object NodeList]' || type === '[object HTMLCollection]')
-         && ('length' in value)
-         && (value.length === 0 || exports.node(value[0]));
- };
- /**
-  * Check if argument is a string.
-  *
-  * @param {Object} value
-  * @return {Boolean}
-  */
- exports.string = function(value) {
-     return typeof value === 'string'
-         || value instanceof String;
- };
- /**
-  * Check if argument is a function.
-  *
-  * @param {Object} value
-  * @return {Boolean}
-  */
- exports.fn = function(value) {
-     var type = Object.prototype.toString.call(value);
-     return type === '[object Function]';
- };
- },{}],4:[function(require,module,exports){
- var is = require('./is');
- var delegate = require('delegate');
- /**
-  * Validates all params and calls the right
-  * listener function based on its target type.
-  *
-  * @param {String|HTMLElement|HTMLCollection|NodeList} target
-  * @param {String} type
-  * @param {Function} callback
-  * @return {Object}
-  */
- function listen(target, type, callback) {
-     if (!target && !type && !callback) {
-         throw new Error('Missing required arguments');
-     }
-     if (!is.string(type)) {
-         throw new TypeError('Second argument must be a String');
-     }
-     if (!is.fn(callback)) {
-         throw new TypeError('Third argument must be a Function');
-     }
-     if (is.node(target)) {
-         return listenNode(target, type, callback);
-     }
-     else if (is.nodeList(target)) {
-         return listenNodeList(target, type, callback);
-     }
-     else if (is.string(target)) {
-         return listenSelector(target, type, callback);
-     }
-     else {
-         throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');
-     }
- }
- /**
-  * Adds an event listener to a HTML element
-  * and returns a remove listener function.
-  *
-  * @param {HTMLElement} node
-  * @param {String} type
-  * @param {Function} callback
-  * @return {Object}
-  */
- function listenNode(node, type, callback) {
-     node.addEventListener(type, callback);
-     return {
-         destroy: function() {
-             node.removeEventListener(type, callback);
-         }
-     }
- }
- /**
-  * Add an event listener to a list of HTML elements
-  * and returns a remove listener function.
-  *
-  * @param {NodeList|HTMLCollection} nodeList
-  * @param {String} type
-  * @param {Function} callback
-  * @return {Object}
-  */
- function listenNodeList(nodeList, type, callback) {
-     Array.prototype.forEach.call(nodeList, function(node) {
-         node.addEventListener(type, callback);
-     });
-     return {
-         destroy: function() {
-             Array.prototype.forEach.call(nodeList, function(node) {
-                 node.removeEventListener(type, callback);
-             });
-         }
-     }
- }
- /**
-  * Add an event listener to a selector
-  * and returns a remove listener function.
-  *
-  * @param {String} selector
-  * @param {String} type
-  * @param {Function} callback
-  * @return {Object}
-  */
- function listenSelector(selector, type, callback) {
-     return delegate(document.body, selector, type, callback);
- }
- module.exports = listen;
- },{"./is":3,"delegate":2}],5:[function(require,module,exports){
- function select(element) {
-     var selectedText;
-     if (element.nodeName === 'SELECT') {
-         element.focus();
-         selectedText = element.value;
-     }
-     else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {
-         var isReadOnly = element.hasAttribute('readonly');
-         if (!isReadOnly) {
-             element.setAttribute('readonly', '');
-         }
-         element.select();
-         element.setSelectionRange(0, element.value.length);
-         if (!isReadOnly) {
-             element.removeAttribute('readonly');
-         }
-         selectedText = element.value;
-     }
-     else {
-         if (element.hasAttribute('contenteditable')) {
-             element.focus();
-         }
-         var selection = window.getSelection();
-         var range = document.createRange();
-         range.selectNodeContents(element);
-         selection.removeAllRanges();
-         selection.addRange(range);
-         selectedText = selection.toString();
-     }
-     return selectedText;
- }
- module.exports = select;
- },{}],6:[function(require,module,exports){
- function E () {
-   // Keep this empty so it's easier to inherit from
-   // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
- }
- E.prototype = {
-   on: function (name, callback, ctx) {
-     var e = this.e || (this.e = {});
-     (e[name] || (e[name] = [])).push({
-       fn: callback,
-       ctx: ctx
-     });
-     return this;
-   },
-   once: function (name, callback, ctx) {
-     var self = this;
-     function listener () {
-       self.off(name, listener);
-       callback.apply(ctx, arguments);
-     };
-     listener._ = callback
-     return this.on(name, listener, ctx);
-   },
-   emit: function (name) {
-     var data = [].slice.call(arguments, 1);
-     var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
-     var i = 0;
-     var len = evtArr.length;
-     for (i; i < len; i++) {
-       evtArr[i].fn.apply(evtArr[i].ctx, data);
-     }
-     return this;
-   },
-   off: function (name, callback) {
-     var e = this.e || (this.e = {});
-     var evts = e[name];
-     var liveEvents = [];
-     if (evts && callback) {
-       for (var i = 0, len = evts.length; i < len; i++) {
-         if (evts[i].fn !== callback && evts[i].fn._ !== callback)
-           liveEvents.push(evts[i]);
-       }
-     }
-     // Remove event from queue to prevent memory leak
-     // Suggested by https://github.com/lazd
-     // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910
-     (liveEvents.length)
-       ? e[name] = liveEvents
-       : delete e[name];
-     return this;
-   }
- };
- module.exports = E;
- },{}],7:[function(require,module,exports){
- (function (global, factory) {
-     if (typeof define === "function" && define.amd) {
-         define(['module', 'select'], factory);
-     } else if (typeof exports !== "undefined") {
-         factory(module, require('select'));
-     } else {
-         var mod = {
-             exports: {}
-         };
-         factory(mod, global.select);
-         global.clipboardAction = mod.exports;
-     }
- })(this, function (module, _select) {
-     'use strict';
-     var _select2 = _interopRequireDefault(_select);
-     function _interopRequireDefault(obj) {
-         return obj && obj.__esModule ? obj : {
-             default: obj
-         };
-     }
-     var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
-         return typeof obj;
-     } : function (obj) {
-         return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
-     };
-     function _classCallCheck(instance, Constructor) {
-         if (!(instance instanceof Constructor)) {
-             throw new TypeError("Cannot call a class as a function");
-         }
-     }
-     var _createClass = function () {
-         function defineProperties(target, props) {
-             for (var i = 0; i < props.length; i++) {
-                 var descriptor = props[i];
-                 descriptor.enumerable = descriptor.enumerable || false;
-                 descriptor.configurable = true;
-                 if ("value" in descriptor) descriptor.writable = true;
-                 Object.defineProperty(target, descriptor.key, descriptor);
-             }
-         }
-         return function (Constructor, protoProps, staticProps) {
-             if (protoProps) defineProperties(Constructor.prototype, protoProps);
-             if (staticProps) defineProperties(Constructor, staticProps);
-             return Constructor;
-         };
-     }();
-     var ClipboardAction = function () {
-         /**
-          * @param {Object} options
-          */
-         function ClipboardAction(options) {
-             _classCallCheck(this, ClipboardAction);
-             this.resolveOptions(options);
-             this.initSelection();
-         }
-         /**
-          * Defines base properties passed from constructor.
-          * @param {Object} options
-          */
-         _createClass(ClipboardAction, [{
-             key: 'resolveOptions',
-             value: function resolveOptions() {
-                 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-                 this.action = options.action;
-                 this.container = options.container;
-                 this.emitter = options.emitter;
-                 this.target = options.target;
-                 this.text = options.text;
-                 this.trigger = options.trigger;
-                 this.selectedText = '';
-             }
-         }, {
-             key: 'initSelection',
-             value: function initSelection() {
-                 if (this.text) {
-                     this.selectFake();
-                 } else if (this.target) {
-                     this.selectTarget();
-                 }
-             }
-         }, {
-             key: 'selectFake',
-             value: function selectFake() {
-                 var _this = this;
-                 var isRTL = document.documentElement.getAttribute('dir') == 'rtl';
-                 this.removeFake();
-                 this.fakeHandlerCallback = function () {
-                     return _this.removeFake();
-                 };
-                 this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;
-                 this.fakeElem = document.createElement('textarea');
-                 // Prevent zooming on iOS
-                 this.fakeElem.style.fontSize = '12pt';
-                 // Reset box model
-                 this.fakeElem.style.border = '0';
-                 this.fakeElem.style.padding = '0';
-                 this.fakeElem.style.margin = '0';
-                 // Move element out of screen horizontally
-                 this.fakeElem.style.position = 'absolute';
-                 this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';
-                 // Move element to the same position vertically
-                 var yPosition = window.pageYOffset || document.documentElement.scrollTop;
-                 this.fakeElem.style.top = yPosition + 'px';
-                 this.fakeElem.setAttribute('readonly', '');
-                 this.fakeElem.value = this.text;
-                 this.container.appendChild(this.fakeElem);
-                 this.selectedText = (0, _select2.default)(this.fakeElem);
-                 this.copyText();
-             }
-         }, {
-             key: 'removeFake',
-             value: function removeFake() {
-                 if (this.fakeHandler) {
-                     this.container.removeEventListener('click', this.fakeHandlerCallback);
-                     this.fakeHandler = null;
-                     this.fakeHandlerCallback = null;
-                 }
-                 if (this.fakeElem) {
-                     this.container.removeChild(this.fakeElem);
-                     this.fakeElem = null;
-                 }
-             }
-         }, {
-             key: 'selectTarget',
-             value: function selectTarget() {
-                 this.selectedText = (0, _select2.default)(this.target);
-                 this.copyText();
-             }
-         }, {
-             key: 'copyText',
-             value: function copyText() {
-                 var succeeded = void 0;
-                 try {
-                     succeeded = document.execCommand(this.action);
-                 } catch (err) {
-                     succeeded = false;
-                 }
-                 this.handleResult(succeeded);
-             }
-         }, {
-             key: 'handleResult',
-             value: function handleResult(succeeded) {
-                 this.emitter.emit(succeeded ? 'success' : 'error', {
-                     action: this.action,
-                     text: this.selectedText,
-                     trigger: this.trigger,
-                     clearSelection: this.clearSelection.bind(this)
-                 });
-             }
-         }, {
-             key: 'clearSelection',
-             value: function clearSelection() {
-                 if (this.trigger) {
-                     this.trigger.focus();
-                 }
-                 window.getSelection().removeAllRanges();
-             }
-         }, {
-             key: 'destroy',
-             value: function destroy() {
-                 this.removeFake();
-             }
-         }, {
-             key: 'action',
-             set: function set() {
-                 var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';
-                 this._action = action;
-                 if (this._action !== 'copy' && this._action !== 'cut') {
-                     throw new Error('Invalid "action" value, use either "copy" or "cut"');
-                 }
-             },
-             get: function get() {
-                 return this._action;
-             }
-         }, {
-             key: 'target',
-             set: function set(target) {
-                 if (target !== undefined) {
-                     if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {
-                         if (this.action === 'copy' && target.hasAttribute('disabled')) {
-                             throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
-                         }
-                         if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {
-                             throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
-                         }
-                         this._target = target;
-                     } else {
-                         throw new Error('Invalid "target" value, use a valid Element');
-                     }
-                 }
-             },
-             get: function get() {
-                 return this._target;
-             }
-         }]);
-         return ClipboardAction;
-     }();
-     module.exports = ClipboardAction;
- });
- },{"select":5}],8:[function(require,module,exports){
- (function (global, factory) {
-     if (typeof define === "function" && define.amd) {
-         define(['module', './clipboard-action', 'tiny-emitter', 'good-listener'], factory);
-     } else if (typeof exports !== "undefined") {
-         factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener'));
-     } else {
-         var mod = {
-             exports: {}
-         };
-         factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener);
-         global.clipboard = mod.exports;
-     }
- })(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) {
-     'use strict';
-     var _clipboardAction2 = _interopRequireDefault(_clipboardAction);
-     var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);
-     var _goodListener2 = _interopRequireDefault(_goodListener);
-     function _interopRequireDefault(obj) {
-         return obj && obj.__esModule ? obj : {
-             default: obj
-         };
-     }
-     var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
-         return typeof obj;
-     } : function (obj) {
-         return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
-     };
-     function _classCallCheck(instance, Constructor) {
-         if (!(instance instanceof Constructor)) {
-             throw new TypeError("Cannot call a class as a function");
-         }
-     }
-     var _createClass = function () {
-         function defineProperties(target, props) {
-             for (var i = 0; i < props.length; i++) {
-                 var descriptor = props[i];
-                 descriptor.enumerable = descriptor.enumerable || false;
-                 descriptor.configurable = true;
-                 if ("value" in descriptor) descriptor.writable = true;
-                 Object.defineProperty(target, descriptor.key, descriptor);
-             }
-         }
-         return function (Constructor, protoProps, staticProps) {
-             if (protoProps) defineProperties(Constructor.prototype, protoProps);
-             if (staticProps) defineProperties(Constructor, staticProps);
-             return Constructor;
-         };
-     }();
-     function _possibleConstructorReturn(self, call) {
-         if (!self) {
-             throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
-         }
-         return call && (typeof call === "object" || typeof call === "function") ? call : self;
-     }
-     function _inherits(subClass, superClass) {
-         if (typeof superClass !== "function" && superClass !== null) {
-             throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
-         }
-         subClass.prototype = Object.create(superClass && superClass.prototype, {
-             constructor: {
-                 value: subClass,
-                 enumerable: false,
-                 writable: true,
-                 configurable: true
-             }
-         });
-         if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
-     }
-     var Clipboard = function (_Emitter) {
-         _inherits(Clipboard, _Emitter);
-         /**
-          * @param {String|HTMLElement|HTMLCollection|NodeList} trigger
-          * @param {Object} options
-          */
-         function Clipboard(trigger, options) {
-             _classCallCheck(this, Clipboard);
-             var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));
-             _this.resolveOptions(options);
-             _this.listenClick(trigger);
-             return _this;
-         }
-         /**
-          * Defines if attributes would be resolved using internal setter functions
-          * or custom functions that were passed in the constructor.
-          * @param {Object} options
-          */
-         _createClass(Clipboard, [{
-             key: 'resolveOptions',
-             value: function resolveOptions() {
-                 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-                 this.action = typeof options.action === 'function' ? options.action : this.defaultAction;
-                 this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;
-                 this.text = typeof options.text === 'function' ? options.text : this.defaultText;
-                 this.container = _typeof(options.container) === 'object' ? options.container : document.body;
-             }
-         }, {
-             key: 'listenClick',
-             value: function listenClick(trigger) {
-                 var _this2 = this;
-                 this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {
-                     return _this2.onClick(e);
-                 });
-             }
-         }, {
-             key: 'onClick',
-             value: function onClick(e) {
-                 var trigger = e.delegateTarget || e.currentTarget;
-                 if (this.clipboardAction) {
-                     this.clipboardAction = null;
-                 }
-                 this.clipboardAction = new _clipboardAction2.default({
-                     action: this.action(trigger),
-                     target: this.target(trigger),
-                     text: this.text(trigger),
-                     container: this.container,
-                     trigger: trigger,
-                     emitter: this
-                 });
-             }
-         }, {
-             key: 'defaultAction',
-             value: function defaultAction(trigger) {
-                 return getAttributeValue('action', trigger);
-             }
-         }, {
-             key: 'defaultTarget',
-             value: function defaultTarget(trigger) {
-                 var selector = getAttributeValue('target', trigger);
-                 if (selector) {
-                     return document.querySelector(selector);
-                 }
-             }
-         }, {
-             key: 'defaultText',
-             value: function defaultText(trigger) {
-                 return getAttributeValue('text', trigger);
-             }
-         }, {
-             key: 'destroy',
-             value: function destroy() {
-                 this.listener.destroy();
-                 if (this.clipboardAction) {
-                     this.clipboardAction.destroy();
-                     this.clipboardAction = null;
-                 }
-             }
-         }], [{
-             key: 'isSupported',
-             value: function isSupported() {
-                 var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];
-                 var actions = typeof action === 'string' ? [action] : action;
-                 var support = !!document.queryCommandSupported;
-                 actions.forEach(function (action) {
-                     support = support && !!document.queryCommandSupported(action);
-                 });
-                 return support;
-             }
-         }]);
-         return Clipboard;
-     }(_tinyEmitter2.default);
-     /**
-      * Helper function to retrieve attribute value.
-      * @param {String} suffix
-      * @param {Element} element
-      */
-     function getAttributeValue(suffix, element) {
-         var attribute = 'data-clipboard-' + suffix;
-         if (!element.hasAttribute(attribute)) {
-             return;
-         }
-         return element.getAttribute(attribute);
-     }
-     module.exports = Clipboard;
- });
- },{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)
- });
- /***/ }),
- /* 12 */
- /***/ (function(module, exports, __webpack_require__) {
- /*! docsearch 2.4.1 | © Algolia | github.com/algolia/docsearch */
- (function webpackUniversalModuleDefinition(root, factory) {
-       if(true)
-               module.exports = factory();
-       else if(typeof define === 'function' && define.amd)
-               define([], factory);
-       else if(typeof exports === 'object')
-               exports["docsearch"] = factory();
-       else
-               root["docsearch"] = factory();
- })(this, function() {
- return /******/ (function(modules) { // webpackBootstrap
- /******/      // The module cache
- /******/      var installedModules = {};
- /******/
- /******/      // The require function
- /******/      function __webpack_require__(moduleId) {
- /******/
- /******/              // Check if module is in cache
- /******/              if(installedModules[moduleId])
- /******/                      return installedModules[moduleId].exports;
- /******/
- /******/              // Create a new module (and put it into the cache)
- /******/              var module = installedModules[moduleId] = {
- /******/                      i: moduleId,
- /******/                      l: false,
- /******/                      exports: {}
- /******/              };
- /******/
- /******/              // Execute the module function
- /******/              modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/
- /******/              // Flag the module as loaded
- /******/              module.l = true;
- /******/
- /******/              // Return the exports of the module
- /******/              return module.exports;
- /******/      }
- /******/
- /******/
- /******/      // expose the modules object (__webpack_modules__)
- /******/      __webpack_require__.m = modules;
- /******/
- /******/      // expose the module cache
- /******/      __webpack_require__.c = installedModules;
- /******/
- /******/      // identity function for calling harmony imports with the correct context
- /******/      __webpack_require__.i = function(value) { return value; };
- /******/
- /******/      // define getter function for harmony exports
- /******/      __webpack_require__.d = function(exports, name, getter) {
- /******/              if(!__webpack_require__.o(exports, name)) {
- /******/                      Object.defineProperty(exports, name, {
- /******/                              configurable: false,
- /******/                              enumerable: true,
- /******/                              get: getter
- /******/                      });
- /******/              }
- /******/      };
- /******/
- /******/      // getDefaultExport function for compatibility with non-harmony modules
- /******/      __webpack_require__.n = function(module) {
- /******/              var getter = module && module.__esModule ?
- /******/                      function getDefault() { return module['default']; } :
- /******/                      function getModuleExports() { return module; };
- /******/              __webpack_require__.d(getter, 'a', getter);
- /******/              return getter;
- /******/      };
- /******/
- /******/      // Object.prototype.hasOwnProperty.call
- /******/      __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
- /******/
- /******/      // __webpack_public_path__
- /******/      __webpack_require__.p = "";
- /******/
- /******/      // Load entry module and return exports
- /******/      return __webpack_require__(__webpack_require__.s = 46);
- /******/ })
- /************************************************************************/
- /******/ ([
- /* 0 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var DOM = __webpack_require__(1);
- function escapeRegExp(str) {
-   return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
- }
- module.exports = {
-   // those methods are implemented differently
-   // depending on which build it is, using
-   // $... or angular... or Zepto... or require(...)
-   isArray: null,
-   isFunction: null,
-   isObject: null,
-   bind: null,
-   each: null,
-   map: null,
-   mixin: null,
-   isMsie: function() {
-     // from https://github.com/ded/bowser/blob/master/bowser.js
-     return (/(msie|trident)/i).test(navigator.userAgent) ?
-       navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false;
-   },
-   // http://stackoverflow.com/a/6969486
-   escapeRegExChars: function(str) {
-     return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
-   },
-   isNumber: function(obj) { return typeof obj === 'number'; },
-   toStr: function toStr(s) {
-     return s === undefined || s === null ? '' : s + '';
-   },
-   cloneDeep: function cloneDeep(obj) {
-     var clone = this.mixin({}, obj);
-     var self = this;
-     this.each(clone, function(value, key) {
-       if (value) {
-         if (self.isArray(value)) {
-           clone[key] = [].concat(value);
-         } else if (self.isObject(value)) {
-           clone[key] = self.cloneDeep(value);
-         }
-       }
-     });
-     return clone;
-   },
-   error: function(msg) {
-     throw new Error(msg);
-   },
-   every: function(obj, test) {
-     var result = true;
-     if (!obj) {
-       return result;
-     }
-     this.each(obj, function(val, key) {
-       result = test.call(null, val, key, obj);
-       if (!result) {
-         return false;
-       }
-     });
-     return !!result;
-   },
-   any: function(obj, test) {
-     var found = false;
-     if (!obj) {
-       return found;
-     }
-     this.each(obj, function(val, key) {
-       if (test.call(null, val, key, obj)) {
-         found = true;
-         return false;
-       }
-     });
-     return found;
-   },
-   getUniqueId: (function() {
-     var counter = 0;
-     return function() { return counter++; };
-   })(),
-   templatify: function templatify(obj) {
-     if (this.isFunction(obj)) {
-       return obj;
-     }
-     var $template = DOM.element(obj);
-     if ($template.prop('tagName') === 'SCRIPT') {
-       return function template() { return $template.text(); };
-     }
-     return function template() { return String(obj); };
-   },
-   defer: function(fn) { setTimeout(fn, 0); },
-   noop: function() {},
-   formatPrefix: function(prefix, noPrefix) {
-     return noPrefix ? '' : prefix + '-';
-   },
-   className: function(prefix, clazz, skipDot) {
-     return (skipDot ? '' : '.') + prefix + clazz;
-   },
-   escapeHighlightedString: function(str, highlightPreTag, highlightPostTag) {
-     highlightPreTag = highlightPreTag || '<em>';
-     var pre = document.createElement('div');
-     pre.appendChild(document.createTextNode(highlightPreTag));
-     highlightPostTag = highlightPostTag || '</em>';
-     var post = document.createElement('div');
-     post.appendChild(document.createTextNode(highlightPostTag));
-     var div = document.createElement('div');
-     div.appendChild(document.createTextNode(str));
-     return div.innerHTML
-       .replace(RegExp(escapeRegExp(pre.innerHTML), 'g'), highlightPreTag)
-       .replace(RegExp(escapeRegExp(post.innerHTML), 'g'), highlightPostTag);
-   }
- };
- /***/ }),
- /* 1 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- module.exports = {
-   element: null
- };
- /***/ }),
- /* 2 */
- /***/ (function(module, exports) {
- var hasOwn = Object.prototype.hasOwnProperty;
- var toString = Object.prototype.toString;
- module.exports = function forEach (obj, fn, ctx) {
-     if (toString.call(fn) !== '[object Function]') {
-         throw new TypeError('iterator must be a function');
-     }
-     var l = obj.length;
-     if (l === +l) {
-         for (var i = 0; i < l; i++) {
-             fn.call(ctx, obj[i], i, obj);
-         }
-     } else {
-         for (var k in obj) {
-             if (hasOwn.call(obj, k)) {
-                 fn.call(ctx, obj[k], k, obj);
-             }
-         }
-     }
- };
- /***/ }),
- /* 3 */
- /***/ (function(module, exports) {
- var g;\r
\r
- // This works in non-strict mode\r
- g = (function() {\r
-       return this;\r
- })();\r
\r
- try {\r
-       // This works if eval is allowed (see CSP)\r
-       g = g || Function("return this")() || (1,eval)("this");\r
- } catch(e) {\r
-       // This works if the window reference is available\r
-       if(typeof window === "object")\r
-               g = window;\r
- }\r
\r
- // g can still be undefined, but nothing to do about it...\r
- // We return undefined, instead of nothing here, so it's\r
- // easier to handle this case. if(!global) { ...}\r
\r
- module.exports = g;\r
- /***/ }),
- /* 4 */
- /***/ (function(module, exports) {
- module.exports = function clone(obj) {
-   return JSON.parse(JSON.stringify(obj));
- };
- /***/ }),
- /* 5 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- // This file hosts our error definitions
- // We use custom error "types" so that we can act on them when we need it
- // e.g.: if error instanceof errors.UnparsableJSON then..
- var inherits = __webpack_require__(20);
- function AlgoliaSearchError(message, extraProperties) {
-   var forEach = __webpack_require__(2);
-   var error = this;
-   // try to get a stacktrace
-   if (typeof Error.captureStackTrace === 'function') {
-     Error.captureStackTrace(this, this.constructor);
-   } else {
-     error.stack = (new Error()).stack || 'Cannot get a stacktrace, browser is too old';
-   }
-   this.name = 'AlgoliaSearchError';
-   this.message = message || 'Unknown error';
-   if (extraProperties) {
-     forEach(extraProperties, function addToErrorObject(value, key) {
-       error[key] = value;
-     });
-   }
- }
- inherits(AlgoliaSearchError, Error);
- function createCustomError(name, message) {
-   function AlgoliaSearchCustomError() {
-     var args = Array.prototype.slice.call(arguments, 0);
-     // custom message not set, use default
-     if (typeof args[0] !== 'string') {
-       args.unshift(message);
-     }
-     AlgoliaSearchError.apply(this, args);
-     this.name = 'AlgoliaSearch' + name + 'Error';
-   }
-   inherits(AlgoliaSearchCustomError, AlgoliaSearchError);
-   return AlgoliaSearchCustomError;
- }
- // late exports to let various fn defs and inherits take place
- module.exports = {
-   AlgoliaSearchError: AlgoliaSearchError,
-   UnparsableJSON: createCustomError(
-     'UnparsableJSON',
-     'Could not parse the incoming response as JSON, see err.more for details'
-   ),
-   RequestTimeout: createCustomError(
-     'RequestTimeout',
-     'Request timedout before getting a response'
-   ),
-   Network: createCustomError(
-     'Network',
-     'Network issue, see err.more for details'
-   ),
-   JSONPScriptFail: createCustomError(
-     'JSONPScriptFail',
-     '<script> was loaded but did not call our provided callback'
-   ),
-   JSONPScriptError: createCustomError(
-     'JSONPScriptError',
-     '<script> unable to load due to an `error` event on it'
-   ),
-   Unknown: createCustomError(
-     'Unknown',
-     'Unknown error occured'
-   )
- };
- /***/ }),
- /* 6 */
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(process) {
- /**
-  * This is the web browser implementation of `debug()`.
-  *
-  * Expose `debug()` as the module.
-  */
- exports = module.exports = __webpack_require__(50);
- exports.log = log;
- exports.formatArgs = formatArgs;
- exports.save = save;
- exports.load = load;
- exports.useColors = useColors;
- exports.storage = 'undefined' != typeof chrome
-                && 'undefined' != typeof chrome.storage
-                   ? chrome.storage.local
-                   : localstorage();
- /**
-  * Colors.
-  */
- exports.colors = [
-   'lightseagreen',
-   'forestgreen',
-   'goldenrod',
-   'dodgerblue',
-   'darkorchid',
-   'crimson'
- ];
- /**
-  * Currently only WebKit-based Web Inspectors, Firefox >= v31,
-  * and the Firebug extension (any Firefox version) are known
-  * to support "%c" CSS customizations.
-  *
-  * TODO: add a `localStorage` variable to explicitly enable/disable colors
-  */
- function useColors() {
-   // is webkit? http://stackoverflow.com/a/16459606/376773
-   // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
-   return (typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style) ||
-     // is firebug? http://stackoverflow.com/a/398120/376773
-     (window.console && (console.firebug || (console.exception && console.table))) ||
-     // is firefox >= v31?
-     // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
-     (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31);
- }
- /**
-  * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
-  */
- exports.formatters.j = function(v) {
-   try {
-     return JSON.stringify(v);
-   } catch (err) {
-     return '[UnexpectedJSONParseError]: ' + err.message;
-   }
- };
- /**
-  * Colorize log arguments if enabled.
-  *
-  * @api public
-  */
- function formatArgs() {
-   var args = arguments;
-   var useColors = this.useColors;
-   args[0] = (useColors ? '%c' : '')
-     + this.namespace
-     + (useColors ? ' %c' : ' ')
-     + args[0]
-     + (useColors ? '%c ' : ' ')
-     + '+' + exports.humanize(this.diff);
-   if (!useColors) return args;
-   var c = 'color: ' + this.color;
-   args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));
-   // the final "%c" is somewhat tricky, because there could be other
-   // arguments passed either before or after the %c, so we need to
-   // figure out the correct index to insert the CSS into
-   var index = 0;
-   var lastC = 0;
-   args[0].replace(/%[a-z%]/g, function(match) {
-     if ('%%' === match) return;
-     index++;
-     if ('%c' === match) {
-       // we only are interested in the *last* %c
-       // (the user may have provided their own)
-       lastC = index;
-     }
-   });
-   args.splice(lastC, 0, c);
-   return args;
- }
- /**
-  * Invokes `console.log()` when available.
-  * No-op when `console.log` is not a "function".
-  *
-  * @api public
-  */
- function log() {
-   // this hackery is required for IE8/9, where
-   // the `console.log` function doesn't have 'apply'
-   return 'object' === typeof console
-     && console.log
-     && Function.prototype.apply.call(console.log, console, arguments);
- }
- /**
-  * Save `namespaces`.
-  *
-  * @param {String} namespaces
-  * @api private
-  */
- function save(namespaces) {
-   try {
-     if (null == namespaces) {
-       exports.storage.removeItem('debug');
-     } else {
-       exports.storage.debug = namespaces;
-     }
-   } catch(e) {}
- }
- /**
-  * Load `namespaces`.
-  *
-  * @return {String} returns the previously persisted debug modes
-  * @api private
-  */
- function load() {
-   var r;
-   try {
-     return exports.storage.debug;
-   } catch(e) {}
-   // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
-   if (typeof process !== 'undefined' && 'env' in process) {
-     return __webpack_require__.i({"NODE_ENV":"production"}).DEBUG;
-   }
- }
- /**
-  * Enable namespaces listed in `localStorage.debug` initially.
-  */
- exports.enable(load());
- /**
-  * Localstorage attempts to return the localstorage.
-  *
-  * This is necessary because safari throws
-  * when a user disables cookies/localstorage
-  * and you attempt to access it.
-  *
-  * @return {LocalStorage}
-  * @api private
-  */
- function localstorage(){
-   try {
-     return window.localStorage;
-   } catch (e) {}
- }
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11)))
- /***/ }),
- /* 7 */
- /***/ (function(module, exports, __webpack_require__) {
- var foreach = __webpack_require__(2);
- module.exports = function map(arr, fn) {
-   var newArr = [];
-   foreach(arr, function(item, itemIndex) {
-     newArr.push(fn(item, itemIndex, arr));
-   });
-   return newArr;
- };
- /***/ }),
- /* 8 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var _ = __webpack_require__(0);
- var css = {
-   wrapper: {
-     position: 'relative',
-     display: 'inline-block'
-   },
-   hint: {
-     position: 'absolute',
-     top: '0',
-     left: '0',
-     borderColor: 'transparent',
-     boxShadow: 'none',
-     // #741: fix hint opacity issue on iOS
-     opacity: '1'
-   },
-   input: {
-     position: 'relative',
-     verticalAlign: 'top',
-     backgroundColor: 'transparent'
-   },
-   inputWithNoHint: {
-     position: 'relative',
-     verticalAlign: 'top'
-   },
-   dropdown: {
-     position: 'absolute',
-     top: '100%',
-     left: '0',
-     zIndex: '100',
-     display: 'none'
-   },
-   suggestions: {
-     display: 'block'
-   },
-   suggestion: {
-     whiteSpace: 'nowrap',
-     cursor: 'pointer'
-   },
-   suggestionChild: {
-     whiteSpace: 'normal'
-   },
-   ltr: {
-     left: '0',
-     right: 'auto'
-   },
-   rtl: {
-     left: 'auto',
-     right: '0'
-   },
-   defaultClasses: {
-     root: 'algolia-autocomplete',
-     prefix: 'aa',
-     noPrefix: false,
-     dropdownMenu: 'dropdown-menu',
-     input: 'input',
-     hint: 'hint',
-     suggestions: 'suggestions',
-     suggestion: 'suggestion',
-     cursor: 'cursor',
-     dataset: 'dataset',
-     empty: 'empty'
-   },
-   // will be merged with the default ones if appendTo is used
-   appendTo: {
-     wrapper: {
-       position: 'absolute',
-       zIndex: '100',
-       display: 'none'
-     },
-     input: {},
-     inputWithNoHint: {},
-     dropdown: {
-       display: 'block'
-     }
-   }
- };
- // ie specific styling
- if (_.isMsie()) {
-   // ie6-8 (and 9?) doesn't fire hover and click events for elements with
-   // transparent backgrounds, for a workaround, use 1x1 transparent gif
-   _.mixin(css.input, {
-     backgroundImage: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)'
-   });
- }
- // ie7 and under specific styling
- if (_.isMsie() && _.isMsie() <= 7) {
-   // if someone can tell me why this is necessary to align
-   // the hint with the query in ie7, i'll send you $5 - @JakeHarding
-   _.mixin(css.input, {marginTop: '-1px'});
- }
- module.exports = css;
- /***/ }),
- /* 9 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var immediate = __webpack_require__(56);
- var splitter = /\s+/;
- module.exports = {
-   onSync: onSync,
-   onAsync: onAsync,
-   off: off,
-   trigger: trigger
- };
- function on(method, types, cb, context) {
-   var type;
-   if (!cb) {
-     return this;
-   }
-   types = types.split(splitter);
-   cb = context ? bindContext(cb, context) : cb;
-   this._callbacks = this._callbacks || {};
-   while (type = types.shift()) {
-     this._callbacks[type] = this._callbacks[type] || {sync: [], async: []};
-     this._callbacks[type][method].push(cb);
-   }
-   return this;
- }
- function onAsync(types, cb, context) {
-   return on.call(this, 'async', types, cb, context);
- }
- function onSync(types, cb, context) {
-   return on.call(this, 'sync', types, cb, context);
- }
- function off(types) {
-   var type;
-   if (!this._callbacks) {
-     return this;
-   }
-   types = types.split(splitter);
-   while (type = types.shift()) {
-     delete this._callbacks[type];
-   }
-   return this;
- }
- function trigger(types) {
-   var type;
-   var callbacks;
-   var args;
-   var syncFlush;
-   var asyncFlush;
-   if (!this._callbacks) {
-     return this;
-   }
-   types = types.split(splitter);
-   args = [].slice.call(arguments, 1);
-   while ((type = types.shift()) && (callbacks = this._callbacks[type])) { // eslint-disable-line
-     syncFlush = getFlush(callbacks.sync, this, [type].concat(args));
-     asyncFlush = getFlush(callbacks.async, this, [type].concat(args));
-     if (syncFlush()) {
-       immediate(asyncFlush);
-     }
-   }
-   return this;
- }
- function getFlush(callbacks, context, args) {
-   return flush;
-   function flush() {
-     var cancelled;
-     for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {
-       // only cancel if the callback explicitly returns false
-       cancelled = callbacks[i].apply(context, args) === false;
-     }
-     return !cancelled;
-   }
- }
- function bindContext(fn, context) {
-   return fn.bind ?
-     fn.bind(context) :
-     function() { fn.apply(context, [].slice.call(arguments, 0)); };
- }
- /***/ }),
- /* 10 */
- /***/ (function(module, exports) {
- var toString = {}.toString;
- module.exports = Array.isArray || function (arr) {
-   return toString.call(arr) == '[object Array]';
- };
- /***/ }),
- /* 11 */
- /***/ (function(module, exports) {
- // shim for using process in browser
- var process = module.exports = {};
- // cached from whatever global is present so that test runners that stub it
- // don't break things.  But we need to wrap it in a try catch in case it is
- // wrapped in strict mode code which doesn't define any globals.  It's inside a
- // function because try/catches deoptimize in certain engines.
- var cachedSetTimeout;
- var cachedClearTimeout;
- function defaultSetTimout() {
-     throw new Error('setTimeout has not been defined');
- }
- function defaultClearTimeout () {
-     throw new Error('clearTimeout has not been defined');
- }
- (function () {
-     try {
-         if (typeof setTimeout === 'function') {
-             cachedSetTimeout = setTimeout;
-         } else {
-             cachedSetTimeout = defaultSetTimout;
-         }
-     } catch (e) {
-         cachedSetTimeout = defaultSetTimout;
-     }
-     try {
-         if (typeof clearTimeout === 'function') {
-             cachedClearTimeout = clearTimeout;
-         } else {
-             cachedClearTimeout = defaultClearTimeout;
-         }
-     } catch (e) {
-         cachedClearTimeout = defaultClearTimeout;
-     }
- } ())
- function runTimeout(fun) {
-     if (cachedSetTimeout === setTimeout) {
-         //normal enviroments in sane situations
-         return setTimeout(fun, 0);
-     }
-     // if setTimeout wasn't available but was latter defined
-     if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
-         cachedSetTimeout = setTimeout;
-         return setTimeout(fun, 0);
-     }
-     try {
-         // when when somebody has screwed with setTimeout but no I.E. maddness
-         return cachedSetTimeout(fun, 0);
-     } catch(e){
-         try {
-             // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
-             return cachedSetTimeout.call(null, fun, 0);
-         } catch(e){
-             // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
-             return cachedSetTimeout.call(this, fun, 0);
-         }
-     }
- }
- function runClearTimeout(marker) {
-     if (cachedClearTimeout === clearTimeout) {
-         //normal enviroments in sane situations
-         return clearTimeout(marker);
-     }
-     // if clearTimeout wasn't available but was latter defined
-     if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
-         cachedClearTimeout = clearTimeout;
-         return clearTimeout(marker);
-     }
-     try {
-         // when when somebody has screwed with setTimeout but no I.E. maddness
-         return cachedClearTimeout(marker);
-     } catch (e){
-         try {
-             // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
-             return cachedClearTimeout.call(null, marker);
-         } catch (e){
-             // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
-             // Some versions of I.E. have different rules for clearTimeout vs setTimeout
-             return cachedClearTimeout.call(this, marker);
-         }
-     }
- }
- var queue = [];
- var draining = false;
- var currentQueue;
- var queueIndex = -1;
- function cleanUpNextTick() {
-     if (!draining || !currentQueue) {
-         return;
-     }
-     draining = false;
-     if (currentQueue.length) {
-         queue = currentQueue.concat(queue);
-     } else {
-         queueIndex = -1;
-     }
-     if (queue.length) {
-         drainQueue();
-     }
- }
- function drainQueue() {
-     if (draining) {
-         return;
-     }
-     var timeout = runTimeout(cleanUpNextTick);
-     draining = true;
-     var len = queue.length;
-     while(len) {
-         currentQueue = queue;
-         queue = [];
-         while (++queueIndex < len) {
-             if (currentQueue) {
-                 currentQueue[queueIndex].run();
-             }
-         }
-         queueIndex = -1;
-         len = queue.length;
-     }
-     currentQueue = null;
-     draining = false;
-     runClearTimeout(timeout);
- }
- process.nextTick = function (fun) {
-     var args = new Array(arguments.length - 1);
-     if (arguments.length > 1) {
-         for (var i = 1; i < arguments.length; i++) {
-             args[i - 1] = arguments[i];
-         }
-     }
-     queue.push(new Item(fun, args));
-     if (queue.length === 1 && !draining) {
-         runTimeout(drainQueue);
-     }
- };
- // v8 likes predictible objects
- function Item(fun, array) {
-     this.fun = fun;
-     this.array = array;
- }
- Item.prototype.run = function () {
-     this.fun.apply(null, this.array);
- };
- process.title = 'browser';
- process.browser = true;
- process.env = {};
- process.argv = [];
- process.version = ''; // empty string to avoid regexp issues
- process.versions = {};
- function noop() {}
- process.on = noop;
- process.addListener = noop;
- process.once = noop;
- process.off = noop;
- process.removeListener = noop;
- process.removeAllListeners = noop;
- process.emit = noop;
- process.binding = function (name) {
-     throw new Error('process.binding is not supported');
- };
- process.cwd = function () { return '/' };
- process.chdir = function (dir) {
-     throw new Error('process.chdir is not supported');
- };
- process.umask = function() { return 0; };
- /***/ }),
- /* 12 */
- /***/ (function(module, exports, __webpack_require__) {
- module.exports = buildSearchMethod;
- var errors = __webpack_require__(5);
- /**
-  * Creates a search method to be used in clients
-  * @param {string} queryParam the name of the attribute used for the query
-  * @param {string} url the url
-  * @return {function} the search method
-  */
- function buildSearchMethod(queryParam, url) {
-   /**
-    * The search method. Prepares the data and send the query to Algolia.
-    * @param {string} query the string used for query search
-    * @param {object} args additional parameters to send with the search
-    * @param {function} [callback] the callback to be called with the client gets the answer
-    * @return {undefined|Promise} If the callback is not provided then this methods returns a Promise
-    */
-   return function search(query, args, callback) {
-     // warn V2 users on how to search
-     if (typeof query === 'function' && typeof args === 'object' ||
-       typeof callback === 'object') {
-       // .search(query, params, cb)
-       // .search(cb, params)
-       throw new errors.AlgoliaSearchError('index.search usage is index.search(query, params, cb)');
-     }
-     // Normalizing the function signature
-     if (arguments.length === 0 || typeof query === 'function') {
-       // Usage : .search(), .search(cb)
-       callback = query;
-       query = '';
-     } else if (arguments.length === 1 || typeof args === 'function') {
-       // Usage : .search(query/args), .search(query, cb)
-       callback = args;
-       args = undefined;
-     }
-     // At this point we have 3 arguments with values
-     // Usage : .search(args) // careful: typeof null === 'object'
-     if (typeof query === 'object' && query !== null) {
-       args = query;
-       query = undefined;
-     } else if (query === undefined || query === null) { // .search(undefined/null)
-       query = '';
-     }
-     var params = '';
-     if (query !== undefined) {
-       params += queryParam + '=' + encodeURIComponent(query);
-     }
-     var additionalUA;
-     if (args !== undefined) {
-       if (args.additionalUA) {
-         additionalUA = args.additionalUA;
-         delete args.additionalUA;
-       }
-       // `_getSearchParams` will augment params, do not be fooled by the = versus += from previous if
-       params = this.as._getSearchParams(args, params);
-     }
-     return this._search(params, url, callback, additionalUA);
-   };
- }
- /***/ }),
- /* 13 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var namespace = 'autocomplete:';
- var _ = __webpack_require__(0);
- var DOM = __webpack_require__(1);
- // constructor
- // -----------
- function EventBus(o) {
-   if (!o || !o.el) {
-     _.error('EventBus initialized without el');
-   }
-   this.$el = DOM.element(o.el);
- }
- // instance methods
- // ----------------
- _.mixin(EventBus.prototype, {
-   // ### public
-   trigger: function(type) {
-     var args = [].slice.call(arguments, 1);
-     var event = _.Event(namespace + type);
-     this.$el.trigger(event, args);
-     return event;
-   }
- });
- module.exports = EventBus;
- /***/ }),
- /* 14 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- module.exports = {
-   wrapper: '<span class="%ROOT%"></span>',
-   dropdown: '<span class="%PREFIX%%DROPDOWN_MENU%"></span>',
-   dataset: '<div class="%PREFIX%%DATASET%-%CLASS%"></div>',
-   suggestions: '<span class="%PREFIX%%SUGGESTIONS%"></span>',
-   suggestion: '<div class="%PREFIX%%SUGGESTION%"></div>'
- };
- /***/ }),
- /* 15 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- module.exports = function parseAlgoliaClientVersion(agent) {
-   var parsed = agent.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);
-   if (parsed) return [parsed[1], parsed[2], parsed[3]];
-   return undefined;
- };
- /***/ }),
- /* 16 */
- /***/ (function(module, exports) {
- module.exports = "0.28.0";
- /***/ }),
- /* 17 */
- /***/ (function(module, exports) {
- /* istanbul ignore next */
- /* Zepto v1.2.0 - zepto event assets data - zeptojs.com/license */
- (function(global, factory) {
-   module.exports = factory(global);
- }(/* this ##### UPDATED: here we want to use window/global instead of this which is the current file context ##### */ window, function(window) {  
-   var Zepto = (function() {
-   var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,
-     document = window.document,
-     elementDisplay = {}, classCache = {},
-     cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },
-     fragmentRE = /^\s*<(\w+|!)[^>]*>/,
-     singleTagRE = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
-     tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
-     rootNodeRE = /^(?:body|html)$/i,
-     capitalRE = /([A-Z])/g,
-     // special attributes that should be get/set via method calls
-     methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],
-     adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],
-     table = document.createElement('table'),
-     tableRow = document.createElement('tr'),
-     containers = {
-       'tr': document.createElement('tbody'),
-       'tbody': table, 'thead': table, 'tfoot': table,
-       'td': tableRow, 'th': tableRow,
-       '*': document.createElement('div')
-     },
-     readyRE = /complete|loaded|interactive/,
-     simpleSelectorRE = /^[\w-]*$/,
-     class2type = {},
-     toString = class2type.toString,
-     zepto = {},
-     camelize, uniq,
-     tempParent = document.createElement('div'),
-     propMap = {
-       'tabindex': 'tabIndex',
-       'readonly': 'readOnly',
-       'for': 'htmlFor',
-       'class': 'className',
-       'maxlength': 'maxLength',
-       'cellspacing': 'cellSpacing',
-       'cellpadding': 'cellPadding',
-       'rowspan': 'rowSpan',
-       'colspan': 'colSpan',
-       'usemap': 'useMap',
-       'frameborder': 'frameBorder',
-       'contenteditable': 'contentEditable'
-     },
-     isArray = Array.isArray ||
-       function(object){ return object instanceof Array }
-   zepto.matches = function(element, selector) {
-     if (!selector || !element || element.nodeType !== 1) return false
-     var matchesSelector = element.matches || element.webkitMatchesSelector ||
-                           element.mozMatchesSelector || element.oMatchesSelector ||
-                           element.matchesSelector
-     if (matchesSelector) return matchesSelector.call(element, selector)
-     // fall back to performing a selector:
-     var match, parent = element.parentNode, temp = !parent
-     if (temp) (parent = tempParent).appendChild(element)
-     match = ~zepto.qsa(parent, selector).indexOf(element)
-     temp && tempParent.removeChild(element)
-     return match
-   }
-   function type(obj) {
-     return obj == null ? String(obj) :
-       class2type[toString.call(obj)] || "object"
-   }
-   function isFunction(value) { return type(value) == "function" }
-   function isWindow(obj)     { return obj != null && obj == obj.window }
-   function isDocument(obj)   { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }
-   function isObject(obj)     { return type(obj) == "object" }
-   function isPlainObject(obj) {
-     return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype
-   }
-   function likeArray(obj) {
-     var length = !!obj && 'length' in obj && obj.length,
-       type = $.type(obj)
-     return 'function' != type && !isWindow(obj) && (
-       'array' == type || length === 0 ||
-         (typeof length == 'number' && length > 0 && (length - 1) in obj)
-     )
-   }
-   function compact(array) { return filter.call(array, function(item){ return item != null }) }
-   function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }
-   camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }
-   function dasherize(str) {
-     return str.replace(/::/g, '/')
-            .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')
-            .replace(/([a-z\d])([A-Z])/g, '$1_$2')
-            .replace(/_/g, '-')
-            .toLowerCase()
-   }
-   uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }
-   function classRE(name) {
-     return name in classCache ?
-       classCache[name] : (classCache[name] = new RegExp('(^|\\s)' + name + '(\\s|$)'))
-   }
-   function maybeAddPx(name, value) {
-     return (typeof value == "number" && !cssNumber[dasherize(name)]) ? value + "px" : value
-   }
-   function defaultDisplay(nodeName) {
-     var element, display
-     if (!elementDisplay[nodeName]) {
-       element = document.createElement(nodeName)
-       document.body.appendChild(element)
-       display = getComputedStyle(element, '').getPropertyValue("display")
-       element.parentNode.removeChild(element)
-       display == "none" && (display = "block")
-       elementDisplay[nodeName] = display
-     }
-     return elementDisplay[nodeName]
-   }
-   function children(element) {
-     return 'children' in element ?
-       slice.call(element.children) :
-       $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })
-   }
-   function Z(dom, selector) {
-     var i, len = dom ? dom.length : 0
-     for (i = 0; i < len; i++) this[i] = dom[i]
-     this.length = len
-     this.selector = selector || ''
-   }
-   // `$.zepto.fragment` takes a html string and an optional tag name
-   // to generate DOM nodes from the given html string.
-   // The generated DOM nodes are returned as an array.
-   // This function can be overridden in plugins for example to make
-   // it compatible with browsers that don't support the DOM fully.
-   zepto.fragment = function(html, name, properties) {
-     var dom, nodes, container
-     // A special case optimization for a single tag
-     if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))
-     if (!dom) {
-       if (html.replace) html = html.replace(tagExpanderRE, "<$1></$2>")
-       if (name === undefined) name = fragmentRE.test(html) && RegExp.$1
-       if (!(name in containers)) name = '*'
-       container = containers[name]
-       container.innerHTML = '' + html
-       dom = $.each(slice.call(container.childNodes), function(){
-         container.removeChild(this)
-       })
-     }
-     if (isPlainObject(properties)) {
-       nodes = $(dom)
-       $.each(properties, function(key, value) {
-         if (methodAttributes.indexOf(key) > -1) nodes[key](value)
-         else nodes.attr(key, value)
-       })
-     }
-     return dom
-   }
-   // `$.zepto.Z` swaps out the prototype of the given `dom` array
-   // of nodes with `$.fn` and thus supplying all the Zepto functions
-   // to the array. This method can be overridden in plugins.
-   zepto.Z = function(dom, selector) {
-     return new Z(dom, selector)
-   }
-   // `$.zepto.isZ` should return `true` if the given object is a Zepto
-   // collection. This method can be overridden in plugins.
-   zepto.isZ = function(object) {
-     return object instanceof zepto.Z
-   }
-   // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and
-   // takes a CSS selector and an optional context (and handles various
-   // special cases).
-   // This method can be overridden in plugins.
-   zepto.init = function(selector, context) {
-     var dom
-     // If nothing given, return an empty Zepto collection
-     if (!selector) return zepto.Z()
-     // Optimize for string selectors
-     else if (typeof selector == 'string') {
-       selector = selector.trim()
-       // If it's a html fragment, create nodes from it
-       // Note: In both Chrome 21 and Firefox 15, DOM error 12
-       // is thrown if the fragment doesn't begin with <
-       if (selector[0] == '<' && fragmentRE.test(selector))
-         dom = zepto.fragment(selector, RegExp.$1, context), selector = null
-       // If there's a context, create a collection on that context first, and select
-       // nodes from there
-       else if (context !== undefined) return $(context).find(selector)
-       // If it's a CSS selector, use it to select nodes.
-       else dom = zepto.qsa(document, selector)
-     }
-     // If a function is given, call it when the DOM is ready
-     else if (isFunction(selector)) return $(document).ready(selector)
-     // If a Zepto collection is given, just return it
-     else if (zepto.isZ(selector)) return selector
-     else {
-       // normalize array if an array of nodes is given
-       if (isArray(selector)) dom = compact(selector)
-       // Wrap DOM nodes.
-       else if (isObject(selector))
-         dom = [selector], selector = null
-       // If it's a html fragment, create nodes from it
-       else if (fragmentRE.test(selector))
-         dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null
-       // If there's a context, create a collection on that context first, and select
-       // nodes from there
-       else if (context !== undefined) return $(context).find(selector)
-       // And last but no least, if it's a CSS selector, use it to select nodes.
-       else dom = zepto.qsa(document, selector)
-     }
-     // create a new Zepto collection from the nodes found
-     return zepto.Z(dom, selector)
-   }
-   // `$` will be the base `Zepto` object. When calling this
-   // function just call `$.zepto.init, which makes the implementation
-   // details of selecting nodes and creating Zepto collections
-   // patchable in plugins.
-   $ = function(selector, context){
-     return zepto.init(selector, context)
-   }
-   function extend(target, source, deep) {
-     for (key in source)
-       if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {
-         if (isPlainObject(source[key]) && !isPlainObject(target[key]))
-           target[key] = {}
-         if (isArray(source[key]) && !isArray(target[key]))
-           target[key] = []
-         extend(target[key], source[key], deep)
-       }
-       else if (source[key] !== undefined) target[key] = source[key]
-   }
-   // Copy all but undefined properties from one or more
-   // objects to the `target` object.
-   $.extend = function(target){
-     var deep, args = slice.call(arguments, 1)
-     if (typeof target == 'boolean') {
-       deep = target
-       target = args.shift()
-     }
-     args.forEach(function(arg){ extend(target, arg, deep) })
-     return target
-   }
-   // `$.zepto.qsa` is Zepto's CSS selector implementation which
-   // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.
-   // This method can be overridden in plugins.
-   zepto.qsa = function(element, selector){
-     var found,
-         maybeID = selector[0] == '#',
-         maybeClass = !maybeID && selector[0] == '.',
-         nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked
-         isSimple = simpleSelectorRE.test(nameOnly)
-     return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById
-       ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :
-       (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :
-       slice.call(
-         isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName
-           maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class
-           element.getElementsByTagName(selector) : // Or a tag
-           element.querySelectorAll(selector) // Or it's not simple, and we need to query all
-       )
-   }
-   function filtered(nodes, selector) {
-     return selector == null ? $(nodes) : $(nodes).filter(selector)
-   }
-   $.contains = document.documentElement.contains ?
-     function(parent, node) {
-       return parent !== node && parent.contains(node)
-     } :
-     function(parent, node) {
-       while (node && (node = node.parentNode))
-         if (node === parent) return true
-       return false
-     }
-   function funcArg(context, arg, idx, payload) {
-     return isFunction(arg) ? arg.call(context, idx, payload) : arg
-   }
-   function setAttribute(node, name, value) {
-     value == null ? node.removeAttribute(name) : node.setAttribute(name, value)
-   }
-   // access className property while respecting SVGAnimatedString
-   function className(node, value){
-     var klass = node.className || '',
-         svg   = klass && klass.baseVal !== undefined
-     if (value === undefined) return svg ? klass.baseVal : klass
-     svg ? (klass.baseVal = value) : (node.className = value)
-   }
-   // "true"  => true
-   // "false" => false
-   // "null"  => null
-   // "42"    => 42
-   // "42.5"  => 42.5
-   // "08"    => "08"
-   // JSON    => parse if valid
-   // String  => self
-   function deserializeValue(value) {
-     try {
-       return value ?
-         value == "true" ||
-         ( value == "false" ? false :
-           value == "null" ? null :
-           +value + "" == value ? +value :
-           /^[\[\{]/.test(value) ? $.parseJSON(value) :
-           value )
-         : value
-     } catch(e) {
-       return value
-     }
-   }
-   $.type = type
-   $.isFunction = isFunction
-   $.isWindow = isWindow
-   $.isArray = isArray
-   $.isPlainObject = isPlainObject
-   $.isEmptyObject = function(obj) {
-     var name
-     for (name in obj) return false
-     return true
-   }
-   $.isNumeric = function(val) {
-     var num = Number(val), type = typeof val
-     return val != null && type != 'boolean' &&
-       (type != 'string' || val.length) &&
-       !isNaN(num) && isFinite(num) || false
-   }
-   $.inArray = function(elem, array, i){
-     return emptyArray.indexOf.call(array, elem, i)
-   }
-   $.camelCase = camelize
-   $.trim = function(str) {
-     return str == null ? "" : String.prototype.trim.call(str)
-   }
-   // plugin compatibility
-   $.uuid = 0
-   $.support = { }
-   $.expr = { }
-   $.noop = function() {}
-   $.map = function(elements, callback){
-     var value, values = [], i, key
-     if (likeArray(elements))
-       for (i = 0; i < elements.length; i++) {
-         value = callback(elements[i], i)
-         if (value != null) values.push(value)
-       }
-     else
-       for (key in elements) {
-         value = callback(elements[key], key)
-         if (value != null) values.push(value)
-       }
-     return flatten(values)
-   }
-   $.each = function(elements, callback){
-     var i, key
-     if (likeArray(elements)) {
-       for (i = 0; i < elements.length; i++)
-         if (callback.call(elements[i], i, elements[i]) === false) return elements
-     } else {
-       for (key in elements)
-         if (callback.call(elements[key], key, elements[key]) === false) return elements
-     }
-     return elements
-   }
-   $.grep = function(elements, callback){
-     return filter.call(elements, callback)
-   }
-   if (window.JSON) $.parseJSON = JSON.parse
-   // Populate the class2type map
-   $.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
-     class2type[ "[object " + name + "]" ] = name.toLowerCase()
-   })
-   // Define methods that will be available on all
-   // Zepto collections
-   $.fn = {
-     constructor: zepto.Z,
-     length: 0,
-     // Because a collection acts like an array
-     // copy over these useful array functions.
-     forEach: emptyArray.forEach,
-     reduce: emptyArray.reduce,
-     push: emptyArray.push,
-     sort: emptyArray.sort,
-     splice: emptyArray.splice,
-     indexOf: emptyArray.indexOf,
-     concat: function(){
-       var i, value, args = []
-       for (i = 0; i < arguments.length; i++) {
-         value = arguments[i]
-         args[i] = zepto.isZ(value) ? value.toArray() : value
-       }
-       return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)
-     },
-     // `map` and `slice` in the jQuery API work differently
-     // from their array counterparts
-     map: function(fn){
-       return $($.map(this, function(el, i){ return fn.call(el, i, el) }))
-     },
-     slice: function(){
-       return $(slice.apply(this, arguments))
-     },
-     ready: function(callback){
-       // need to check if document.body exists for IE as that browser reports
-       // document ready when it hasn't yet created the body element
-       if (readyRE.test(document.readyState) && document.body) callback($)
-       else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)
-       return this
-     },
-     get: function(idx){
-       return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]
-     },
-     toArray: function(){ return this.get() },
-     size: function(){
-       return this.length
-     },
-     remove: function(){
-       return this.each(function(){
-         if (this.parentNode != null)
-           this.parentNode.removeChild(this)
-       })
-     },
-     each: function(callback){
-       emptyArray.every.call(this, function(el, idx){
-         return callback.call(el, idx, el) !== false
-       })
-       return this
-     },
-     filter: function(selector){
-       if (isFunction(selector)) return this.not(this.not(selector))
-       return $(filter.call(this, function(element){
-         return zepto.matches(element, selector)
-       }))
-     },
-     add: function(selector,context){
-       return $(uniq(this.concat($(selector,context))))
-     },
-     is: function(selector){
-       return this.length > 0 && zepto.matches(this[0], selector)
-     },
-     not: function(selector){
-       var nodes=[]
-       if (isFunction(selector) && selector.call !== undefined)
-         this.each(function(idx){
-           if (!selector.call(this,idx)) nodes.push(this)
-         })
-       else {
-         var excludes = typeof selector == 'string' ? this.filter(selector) :
-           (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)
-         this.forEach(function(el){
-           if (excludes.indexOf(el) < 0) nodes.push(el)
-         })
-       }
-       return $(nodes)
-     },
-     has: function(selector){
-       return this.filter(function(){
-         return isObject(selector) ?
-           $.contains(this, selector) :
-           $(this).find(selector).size()
-       })
-     },
-     eq: function(idx){
-       return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)
-     },
-     first: function(){
-       var el = this[0]
-       return el && !isObject(el) ? el : $(el)
-     },
-     last: function(){
-       var el = this[this.length - 1]
-       return el && !isObject(el) ? el : $(el)
-     },
-     find: function(selector){
-       var result, $this = this
-       if (!selector) result = $()
-       else if (typeof selector == 'object')
-         result = $(selector).filter(function(){
-           var node = this
-           return emptyArray.some.call($this, function(parent){
-             return $.contains(parent, node)
-           })
-         })
-       else if (this.length == 1) result = $(zepto.qsa(this[0], selector))
-       else result = this.map(function(){ return zepto.qsa(this, selector) })
-       return result
-     },
-     closest: function(selector, context){
-       var nodes = [], collection = typeof selector == 'object' && $(selector)
-       this.each(function(_, node){
-         while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))
-           node = node !== context && !isDocument(node) && node.parentNode
-         if (node && nodes.indexOf(node) < 0) nodes.push(node)
-       })
-       return $(nodes)
-     },
-     parents: function(selector){
-       var ancestors = [], nodes = this
-       while (nodes.length > 0)
-         nodes = $.map(nodes, function(node){
-           if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {
-             ancestors.push(node)
-             return node
-           }
-         })
-       return filtered(ancestors, selector)
-     },
-     parent: function(selector){
-       return filtered(uniq(this.pluck('parentNode')), selector)
-     },
-     children: function(selector){
-       return filtered(this.map(function(){ return children(this) }), selector)
-     },
-     contents: function() {
-       return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })
-     },
-     siblings: function(selector){
-       return filtered(this.map(function(i, el){
-         return filter.call(children(el.parentNode), function(child){ return child!==el })
-       }), selector)
-     },
-     empty: function(){
-       return this.each(function(){ this.innerHTML = '' })
-     },
-     // `pluck` is borrowed from Prototype.js
-     pluck: function(property){
-       return $.map(this, function(el){ return el[property] })
-     },
-     show: function(){
-       return this.each(function(){
-         this.style.display == "none" && (this.style.display = '')
-         if (getComputedStyle(this, '').getPropertyValue("display") == "none")
-           this.style.display = defaultDisplay(this.nodeName)
-       })
-     },
-     replaceWith: function(newContent){
-       return this.before(newContent).remove()
-     },
-     wrap: function(structure){
-       var func = isFunction(structure)
-       if (this[0] && !func)
-         var dom   = $(structure).get(0),
-             clone = dom.parentNode || this.length > 1
-       return this.each(function(index){
-         $(this).wrapAll(
-           func ? structure.call(this, index) :
-             clone ? dom.cloneNode(true) : dom
-         )
-       })
-     },
-     wrapAll: function(structure){
-       if (this[0]) {
-         $(this[0]).before(structure = $(structure))
-         var children
-         // drill down to the inmost element
-         while ((children = structure.children()).length) structure = children.first()
-         $(structure).append(this)
-       }
-       return this
-     },
-     wrapInner: function(structure){
-       var func = isFunction(structure)
-       return this.each(function(index){
-         var self = $(this), contents = self.contents(),
-             dom  = func ? structure.call(this, index) : structure
-         contents.length ? contents.wrapAll(dom) : self.append(dom)
-       })
-     },
-     unwrap: function(){
-       this.parent().each(function(){
-         $(this).replaceWith($(this).children())
-       })
-       return this
-     },
-     clone: function(){
-       return this.map(function(){ return this.cloneNode(true) })
-     },
-     hide: function(){
-       return this.css("display", "none")
-     },
-     toggle: function(setting){
-       return this.each(function(){
-         var el = $(this)
-         ;(setting === undefined ? el.css("display") == "none" : setting) ? el.show() : el.hide()
-       })
-     },
-     prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },
-     next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },
-     html: function(html){
-       return 0 in arguments ?
-         this.each(function(idx){
-           var originHtml = this.innerHTML
-           $(this).empty().append( funcArg(this, html, idx, originHtml) )
-         }) :
-         (0 in this ? this[0].innerHTML : null)
-     },
-     text: function(text){
-       return 0 in arguments ?
-         this.each(function(idx){
-           var newText = funcArg(this, text, idx, this.textContent)
-           this.textContent = newText == null ? '' : ''+newText
-         }) :
-         (0 in this ? this.pluck('textContent').join("") : null)
-     },
-     attr: function(name, value){
-       var result
-       return (typeof name == 'string' && !(1 in arguments)) ?
-         (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :
-         this.each(function(idx){
-           if (this.nodeType !== 1) return
-           if (isObject(name)) for (key in name) setAttribute(this, key, name[key])
-           else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))
-         })
-     },
-     removeAttr: function(name){
-       return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){
-         setAttribute(this, attribute)
-       }, this)})
-     },
-     prop: function(name, value){
-       name = propMap[name] || name
-       return (1 in arguments) ?
-         this.each(function(idx){
-           this[name] = funcArg(this, value, idx, this[name])
-         }) :
-         (this[0] && this[0][name])
-     },
-     removeProp: function(name){
-       name = propMap[name] || name
-       return this.each(function(){ delete this[name] })
-     },
-     data: function(name, value){
-       var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()
-       var data = (1 in arguments) ?
-         this.attr(attrName, value) :
-         this.attr(attrName)
-       return data !== null ? deserializeValue(data) : undefined
-     },
-     val: function(value){
-       if (0 in arguments) {
-         if (value == null) value = ""
-         return this.each(function(idx){
-           this.value = funcArg(this, value, idx, this.value)
-         })
-       } else {
-         return this[0] && (this[0].multiple ?
-            $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :
-            this[0].value)
-       }
-     },
-     offset: function(coordinates){
-       if (coordinates) return this.each(function(index){
-         var $this = $(this),
-             coords = funcArg(this, coordinates, index, $this.offset()),
-             parentOffset = $this.offsetParent().offset(),
-             props = {
-               top:  coords.top  - parentOffset.top,
-               left: coords.left - parentOffset.left
-             }
-         if ($this.css('position') == 'static') props['position'] = 'relative'
-         $this.css(props)
-       })
-       if (!this.length) return null
-       if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))
-         return {top: 0, left: 0}
-       var obj = this[0].getBoundingClientRect()
-       return {
-         left: obj.left + window.pageXOffset,
-         top: obj.top + window.pageYOffset,
-         width: Math.round(obj.width),
-         height: Math.round(obj.height)
-       }
-     },
-     css: function(property, value){
-       if (arguments.length < 2) {
-         var element = this[0]
-         if (typeof property == 'string') {
-           if (!element) return
-           return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)
-         } else if (isArray(property)) {
-           if (!element) return
-           var props = {}
-           var computedStyle = getComputedStyle(element, '')
-           $.each(property, function(_, prop){
-             props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))
-           })
-           return props
-         }
-       }
-       var css = ''
-       if (type(property) == 'string') {
-         if (!value && value !== 0)
-           this.each(function(){ this.style.removeProperty(dasherize(property)) })
-         else
-           css = dasherize(property) + ":" + maybeAddPx(property, value)
-       } else {
-         for (key in property)
-           if (!property[key] && property[key] !== 0)
-             this.each(function(){ this.style.removeProperty(dasherize(key)) })
-           else
-             css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'
-       }
-       return this.each(function(){ this.style.cssText += ';' + css })
-     },
-     index: function(element){
-       return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])
-     },
-     hasClass: function(name){
-       if (!name) return false
-       return emptyArray.some.call(this, function(el){
-         return this.test(className(el))
-       }, classRE(name))
-     },
-     addClass: function(name){
-       if (!name) return this
-       return this.each(function(idx){
-         if (!('className' in this)) return
-         classList = []
-         var cls = className(this), newName = funcArg(this, name, idx, cls)
-         newName.split(/\s+/g).forEach(function(klass){
-           if (!$(this).hasClass(klass)) classList.push(klass)
-         }, this)
-         classList.length && className(this, cls + (cls ? " " : "") + classList.join(" "))
-       })
-     },
-     removeClass: function(name){
-       return this.each(function(idx){
-         if (!('className' in this)) return
-         if (name === undefined) return className(this, '')
-         classList = className(this)
-         funcArg(this, name, idx, classList).split(/\s+/g).forEach(function(klass){
-           classList = classList.replace(classRE(klass), " ")
-         })
-         className(this, classList.trim())
-       })
-     },
-     toggleClass: function(name, when){
-       if (!name) return this
-       return this.each(function(idx){
-         var $this = $(this), names = funcArg(this, name, idx, className(this))
-         names.split(/\s+/g).forEach(function(klass){
-           (when === undefined ? !$this.hasClass(klass) : when) ?
-             $this.addClass(klass) : $this.removeClass(klass)
-         })
-       })
-     },
-     scrollTop: function(value){
-       if (!this.length) return
-       var hasScrollTop = 'scrollTop' in this[0]
-       if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset
-       return this.each(hasScrollTop ?
-         function(){ this.scrollTop = value } :
-         function(){ this.scrollTo(this.scrollX, value) })
-     },
-     scrollLeft: function(value){
-       if (!this.length) return
-       var hasScrollLeft = 'scrollLeft' in this[0]
-       if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset
-       return this.each(hasScrollLeft ?
-         function(){ this.scrollLeft = value } :
-         function(){ this.scrollTo(value, this.scrollY) })
-     },
-     position: function() {
-       if (!this.length) return
-       var elem = this[0],
-         // Get *real* offsetParent
-         offsetParent = this.offsetParent(),
-         // Get correct offsets
-         offset       = this.offset(),
-         parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()
-       // Subtract element margins
-       // note: when an element has margin: auto the offsetLeft and marginLeft
-       // are the same in Safari causing offset.left to incorrectly be 0
-       offset.top  -= parseFloat( $(elem).css('margin-top') ) || 0
-       offset.left -= parseFloat( $(elem).css('margin-left') ) || 0
-       // Add offsetParent borders
-       parentOffset.top  += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0
-       parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0
-       // Subtract the two offsets
-       return {
-         top:  offset.top  - parentOffset.top,
-         left: offset.left - parentOffset.left
-       }
-     },
-     offsetParent: function() {
-       return this.map(function(){
-         var parent = this.offsetParent || document.body
-         while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css("position") == "static")
-           parent = parent.offsetParent
-         return parent
-       })
-     }
-   }
-   // for now
-   $.fn.detach = $.fn.remove
-   // Generate the `width` and `height` functions
-   ;['width', 'height'].forEach(function(dimension){
-     var dimensionProperty =
-       dimension.replace(/./, function(m){ return m[0].toUpperCase() })
-     $.fn[dimension] = function(value){
-       var offset, el = this[0]
-       if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :
-         isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :
-         (offset = this.offset()) && offset[dimension]
-       else return this.each(function(idx){
-         el = $(this)
-         el.css(dimension, funcArg(this, value, idx, el[dimension]()))
-       })
-     }
-   })
-   function traverseNode(node, fun) {
-     fun(node)
-     for (var i = 0, len = node.childNodes.length; i < len; i++)
-       traverseNode(node.childNodes[i], fun)
-   }
-   // Generate the `after`, `prepend`, `before`, `append`,
-   // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.
-   adjacencyOperators.forEach(function(operator, operatorIndex) {
-     var inside = operatorIndex % 2 //=> prepend, append
-     $.fn[operator] = function(){
-       // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings
-       var argType, nodes = $.map(arguments, function(arg) {
-             var arr = []
-             argType = type(arg)
-             if (argType == "array") {
-               arg.forEach(function(el) {
-                 if (el.nodeType !== undefined) return arr.push(el)
-                 else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())
-                 arr = arr.concat(zepto.fragment(el))
-               })
-               return arr
-             }
-             return argType == "object" || arg == null ?
-               arg : zepto.fragment(arg)
-           }),
-           parent, copyByClone = this.length > 1
-       if (nodes.length < 1) return this
-       return this.each(function(_, target){
-         parent = inside ? target : target.parentNode
-         // convert all methods to a "before" operation
-         target = operatorIndex == 0 ? target.nextSibling :
-                  operatorIndex == 1 ? target.firstChild :
-                  operatorIndex == 2 ? target :
-                  null
-         var parentInDocument = $.contains(document.documentElement, parent)
-         nodes.forEach(function(node){
-           if (copyByClone) node = node.cloneNode(true)
-           else if (!parent) return $(node).remove()
-           parent.insertBefore(node, target)
-           if (parentInDocument) traverseNode(node, function(el){
-             if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&
-                (!el.type || el.type === 'text/javascript') && !el.src){
-               var target = el.ownerDocument ? el.ownerDocument.defaultView : window
-               target['eval'].call(target, el.innerHTML)
-             }
-           })
-         })
-       })
-     }
-     // after    => insertAfter
-     // prepend  => prependTo
-     // before   => insertBefore
-     // append   => appendTo
-     $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){
-       $(html)[operator](this)
-       return this
-     }
-   })
-   zepto.Z.prototype = Z.prototype = $.fn
-   // Export internal API functions in the `$.zepto` namespace
-   zepto.uniq = uniq
-   zepto.deserializeValue = deserializeValue
-   $.zepto = zepto
-   return $
- })()
- ;(function($){
-   var _zid = 1, undefined,
-       slice = Array.prototype.slice,
-       isFunction = $.isFunction,
-       isString = function(obj){ return typeof obj == 'string' },
-       handlers = {},
-       specialEvents={},
-       focusinSupported = 'onfocusin' in window,
-       focus = { focus: 'focusin', blur: 'focusout' },
-       hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }
-   specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'
-   function zid(element) {
-     return element._zid || (element._zid = _zid++)
-   }
-   function findHandlers(element, event, fn, selector) {
-     event = parse(event)
-     if (event.ns) var matcher = matcherFor(event.ns)
-     return (handlers[zid(element)] || []).filter(function(handler) {
-       return handler
-         && (!event.e  || handler.e == event.e)
-         && (!event.ns || matcher.test(handler.ns))
-         && (!fn       || zid(handler.fn) === zid(fn))
-         && (!selector || handler.sel == selector)
-     })
-   }
-   function parse(event) {
-     var parts = ('' + event).split('.')
-     return {e: parts[0], ns: parts.slice(1).sort().join(' ')}
-   }
-   function matcherFor(ns) {
-     return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')
-   }
-   function eventCapture(handler, captureSetting) {
-     return handler.del &&
-       (!focusinSupported && (handler.e in focus)) ||
-       !!captureSetting
-   }
-   function realEvent(type) {
-     return hover[type] || (focusinSupported && focus[type]) || type
-   }
-   function add(element, events, fn, data, selector, delegator, capture){
-     var id = zid(element), set = (handlers[id] || (handlers[id] = []))
-     events.split(/\s/).forEach(function(event){
-       if (event == 'ready') return $(document).ready(fn)
-       var handler   = parse(event)
-       handler.fn    = fn
-       handler.sel   = selector
-       // emulate mouseenter, mouseleave
-       if (handler.e in hover) fn = function(e){
-         var related = e.relatedTarget
-         if (!related || (related !== this && !$.contains(this, related)))
-           return handler.fn.apply(this, arguments)
-       }
-       handler.del   = delegator
-       var callback  = delegator || fn
-       handler.proxy = function(e){
-         e = compatible(e)
-         if (e.isImmediatePropagationStopped()) return
-         e.data = data
-         var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))
-         if (result === false) e.preventDefault(), e.stopPropagation()
-         return result
-       }
-       handler.i = set.length
-       set.push(handler)
-       if ('addEventListener' in element)
-         element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))
-     })
-   }
-   function remove(element, events, fn, selector, capture){
-     var id = zid(element)
-     ;(events || '').split(/\s/).forEach(function(event){
-       findHandlers(element, event, fn, selector).forEach(function(handler){
-         delete handlers[id][handler.i]
-       if ('removeEventListener' in element)
-         element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))
-       })
-     })
-   }
-   $.event = { add: add, remove: remove }
-   $.proxy = function(fn, context) {
-     var args = (2 in arguments) && slice.call(arguments, 2)
-     if (isFunction(fn)) {
-       var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }
-       proxyFn._zid = zid(fn)
-       return proxyFn
-     } else if (isString(context)) {
-       if (args) {
-         args.unshift(fn[context], fn)
-         return $.proxy.apply(null, args)
-       } else {
-         return $.proxy(fn[context], fn)
-       }
-     } else {
-       throw new TypeError("expected function")
-     }
-   }
-   $.fn.bind = function(event, data, callback){
-     return this.on(event, data, callback)
-   }
-   $.fn.unbind = function(event, callback){
-     return this.off(event, callback)
-   }
-   $.fn.one = function(event, selector, data, callback){
-     return this.on(event, selector, data, callback, 1)
-   }
-   var returnTrue = function(){return true},
-       returnFalse = function(){return false},
-       ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,
-       eventMethods = {
-         preventDefault: 'isDefaultPrevented',
-         stopImmediatePropagation: 'isImmediatePropagationStopped',
-         stopPropagation: 'isPropagationStopped'
-       }
-   function compatible(event, source) {
-     if (source || !event.isDefaultPrevented) {
-       source || (source = event)
-       $.each(eventMethods, function(name, predicate) {
-         var sourceMethod = source[name]
-         event[name] = function(){
-           this[predicate] = returnTrue
-           return sourceMethod && sourceMethod.apply(source, arguments)
-         }
-         event[predicate] = returnFalse
-       })
-       event.timeStamp || (event.timeStamp = Date.now())
-       if (source.defaultPrevented !== undefined ? source.defaultPrevented :
-           'returnValue' in source ? source.returnValue === false :
-           source.getPreventDefault && source.getPreventDefault())
-         event.isDefaultPrevented = returnTrue
-     }
-     return event
-   }
-   function createProxy(event) {
-     var key, proxy = { originalEvent: event }
-     for (key in event)
-       if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]
-     return compatible(proxy, event)
-   }
-   $.fn.delegate = function(selector, event, callback){
-     return this.on(event, selector, callback)
-   }
-   $.fn.undelegate = function(selector, event, callback){
-     return this.off(event, selector, callback)
-   }
-   $.fn.live = function(event, callback){
-     $(document.body).delegate(this.selector, event, callback)
-     return this
-   }
-   $.fn.die = function(event, callback){
-     $(document.body).undelegate(this.selector, event, callback)
-     return this
-   }
-   $.fn.on = function(event, selector, data, callback, one){
-     var autoRemove, delegator, $this = this
-     if (event && !isString(event)) {
-       $.each(event, function(type, fn){
-         $this.on(type, selector, data, fn, one)
-       })
-       return $this
-     }
-     if (!isString(selector) && !isFunction(callback) && callback !== false)
-       callback = data, data = selector, selector = undefined
-     if (callback === undefined || data === false)
-       callback = data, data = undefined
-     if (callback === false) callback = returnFalse
-     return $this.each(function(_, element){
-       if (one) autoRemove = function(e){
-         remove(element, e.type, callback)
-         return callback.apply(this, arguments)
-       }
-       if (selector) delegator = function(e){
-         var evt, match = $(e.target).closest(selector, element).get(0)
-         if (match && match !== element) {
-           evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})
-           return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))
-         }
-       }
-       add(element, event, callback, data, selector, delegator || autoRemove)
-     })
-   }
-   $.fn.off = function(event, selector, callback){
-     var $this = this
-     if (event && !isString(event)) {
-       $.each(event, function(type, fn){
-         $this.off(type, selector, fn)
-       })
-       return $this
-     }
-     if (!isString(selector) && !isFunction(callback) && callback !== false)
-       callback = selector, selector = undefined
-     if (callback === false) callback = returnFalse
-     return $this.each(function(){
-       remove(this, event, callback, selector)
-     })
-   }
-   $.fn.trigger = function(event, args){
-     event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)
-     event._args = args
-     return this.each(function(){
-       // handle focus(), blur() by calling them directly
-       if (event.type in focus && typeof this[event.type] == "function") this[event.type]()
-       // items in the collection might not be DOM elements
-       else if ('dispatchEvent' in this) this.dispatchEvent(event)
-       else $(this).triggerHandler(event, args)
-     })
-   }
-   // triggers event handlers on current element just as if an event occurred,
-   // doesn't trigger an actual event, doesn't bubble
-   $.fn.triggerHandler = function(event, args){
-     var e, result
-     this.each(function(i, element){
-       e = createProxy(isString(event) ? $.Event(event) : event)
-       e._args = args
-       e.target = element
-       $.each(findHandlers(element, event.type || event), function(i, handler){
-         result = handler.proxy(e)
-         if (e.isImmediatePropagationStopped()) return false
-       })
-     })
-     return result
-   }
-   // shortcut methods for `.bind(event, fn)` for each event type
-   ;('focusin focusout focus blur load resize scroll unload click dblclick '+
-   'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+
-   'change select keydown keypress keyup error').split(' ').forEach(function(event) {
-     $.fn[event] = function(callback) {
-       return (0 in arguments) ?
-         this.bind(event, callback) :
-         this.trigger(event)
-     }
-   })
-   $.Event = function(type, props) {
-     if (!isString(type)) props = type, type = props.type
-     var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true
-     if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])
-     event.initEvent(type, bubbles, true)
-     return compatible(event)
-   }
- })(Zepto)
- ;(function($){
-   var cache = [], timeout
-   $.fn.remove = function(){
-     return this.each(function(){
-       if(this.parentNode){
-         if(this.tagName === 'IMG'){
-           cache.push(this)
-           this.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='
-           if (timeout) clearTimeout(timeout)
-           timeout = setTimeout(function(){ cache = [] }, 60000)
-         }
-         this.parentNode.removeChild(this)
-       }
-     })
-   }
- })(Zepto)
- ;(function($){
-   var data = {}, dataAttr = $.fn.data, camelize = $.camelCase,
-     exp = $.expando = 'Zepto' + (+new Date()), emptyArray = []
-   // Get value from node:
-   // 1. first try key as given,
-   // 2. then try camelized key,
-   // 3. fall back to reading "data-*" attribute.
-   function getData(node, name) {
-     var id = node[exp], store = id && data[id]
-     if (name === undefined) return store || setData(node)
-     else {
-       if (store) {
-         if (name in store) return store[name]
-         var camelName = camelize(name)
-         if (camelName in store) return store[camelName]
-       }
-       return dataAttr.call($(node), name)
-     }
-   }
-   // Store value under camelized key on node
-   function setData(node, name, value) {
-     var id = node[exp] || (node[exp] = ++$.uuid),
-       store = data[id] || (data[id] = attributeData(node))
-     if (name !== undefined) store[camelize(name)] = value
-     return store
-   }
-   // Read all "data-*" attributes from a node
-   function attributeData(node) {
-     var store = {}
-     $.each(node.attributes || emptyArray, function(i, attr){
-       if (attr.name.indexOf('data-') == 0)
-         store[camelize(attr.name.replace('data-', ''))] =
-           $.zepto.deserializeValue(attr.value)
-     })
-     return store
-   }
-   $.fn.data = function(name, value) {
-     return value === undefined ?
-       // set multiple values via object
-       $.isPlainObject(name) ?
-         this.each(function(i, node){
-           $.each(name, function(key, value){ setData(node, key, value) })
-         }) :
-         // get value from first element
-         (0 in this ? getData(this[0], name) : undefined) :
-       // set value on all elements
-       this.each(function(){ setData(this, name, value) })
-   }
-   $.data = function(elem, name, value) {
-     return $(elem).data(name, value)
-   }
-   $.hasData = function(elem) {
-     var id = elem[exp], store = id && data[id]
-     return store ? !$.isEmptyObject(store) : false
-   }
-   $.fn.removeData = function(names) {
-     if (typeof names == 'string') names = names.split(/\s+/)
-     return this.each(function(){
-       var id = this[exp], store = id && data[id]
-       if (store) $.each(names || store, function(key){
-         delete store[names ? camelize(this) : key]
-       })
-     })
-   }
-   // Generate extended `remove` and `empty` functions
-   ;['remove', 'empty'].forEach(function(methodName){
-     var origFn = $.fn[methodName]
-     $.fn[methodName] = function() {
-       var elements = this.find('*')
-       if (methodName === 'remove') elements = elements.add(this)
-       elements.removeData()
-       return origFn.call(this)
-     }
-   })
- })(Zepto)
-   return Zepto
- }))
- /***/ }),
- /* 18 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", {
-   value: true
- });
- exports.default = '2.4.1';
- /***/ }),
- /* 19 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", {
-   value: true
- });
- var _zepto = __webpack_require__(17);
- var _zepto2 = _interopRequireDefault(_zepto);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- exports.default = _zepto2.default;
- /***/ }),
- /* 20 */
- /***/ (function(module, exports) {
- if (typeof Object.create === 'function') {
-   // implementation from standard node.js 'util' module
-   module.exports = function inherits(ctor, superCtor) {
-     ctor.super_ = superCtor
-     ctor.prototype = Object.create(superCtor.prototype, {
-       constructor: {
-         value: ctor,
-         enumerable: false,
-         writable: true,
-         configurable: true
-       }
-     });
-   };
- } else {
-   // old school shim for old browsers
-   module.exports = function inherits(ctor, superCtor) {
-     ctor.super_ = superCtor
-     var TempCtor = function () {}
-     TempCtor.prototype = superCtor.prototype
-     ctor.prototype = new TempCtor()
-     ctor.prototype.constructor = ctor
-   }
- }
- /***/ }),
- /* 21 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", {
-   value: true
- });
- var _toFactory = __webpack_require__(66);
- var _toFactory2 = _interopRequireDefault(_toFactory);
- var _DocSearch = __webpack_require__(47);
- var _DocSearch2 = _interopRequireDefault(_DocSearch);
- var _version = __webpack_require__(18);
- var _version2 = _interopRequireDefault(_version);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- var docsearch = (0, _toFactory2.default)(_DocSearch2.default);
- docsearch.version = _version2.default;
- exports.default = docsearch;
- /***/ }),
- /* 22 */
- /***/ (function(module, exports, __webpack_require__) {
- module.exports = AlgoliaSearchCore;
- var errors = __webpack_require__(5);
- var exitPromise = __webpack_require__(31);
- var IndexCore = __webpack_require__(23);
- var store = __webpack_require__(35);
- // We will always put the API KEY in the JSON body in case of too long API KEY,
- // to avoid query string being too long and failing in various conditions (our server limit, browser limit,
- // proxies limit)
- var MAX_API_KEY_LENGTH = 500;
- var RESET_APP_DATA_TIMER =
-   __webpack_require__.i({"NODE_ENV":"production"}).RESET_APP_DATA_TIMER && parseInt(__webpack_require__.i({"NODE_ENV":"production"}).RESET_APP_DATA_TIMER, 10) ||
-   60 * 2 * 1000; // after 2 minutes reset to first host
- /*
-  * Algolia Search library initialization
-  * https://www.algolia.com/
-  *
-  * @param {string} applicationID - Your applicationID, found in your dashboard
-  * @param {string} apiKey - Your API key, found in your dashboard
-  * @param {Object} [opts]
-  * @param {number} [opts.timeout=2000] - The request timeout set in milliseconds,
-  * another request will be issued after this timeout
-  * @param {string} [opts.protocol='http:'] - The protocol used to query Algolia Search API.
-  *                                        Set to 'https:' to force using https.
-  *                                        Default to document.location.protocol in browsers
-  * @param {Object|Array} [opts.hosts={
-  *           read: [this.applicationID + '-dsn.algolia.net'].concat([
-  *             this.applicationID + '-1.algolianet.com',
-  *             this.applicationID + '-2.algolianet.com',
-  *             this.applicationID + '-3.algolianet.com']
-  *           ]),
-  *           write: [this.applicationID + '.algolia.net'].concat([
-  *             this.applicationID + '-1.algolianet.com',
-  *             this.applicationID + '-2.algolianet.com',
-  *             this.applicationID + '-3.algolianet.com']
-  *           ]) - The hosts to use for Algolia Search API.
-  *           If you provide them, you will less benefit from our HA implementation
-  */
- function AlgoliaSearchCore(applicationID, apiKey, opts) {
-   var debug = __webpack_require__(6)('algoliasearch');
-   var clone = __webpack_require__(4);
-   var isArray = __webpack_require__(10);
-   var map = __webpack_require__(7);
-   var usage = 'Usage: algoliasearch(applicationID, apiKey, opts)';
-   if (opts._allowEmptyCredentials !== true && !applicationID) {
-     throw new errors.AlgoliaSearchError('Please provide an application ID. ' + usage);
-   }
-   if (opts._allowEmptyCredentials !== true && !apiKey) {
-     throw new errors.AlgoliaSearchError('Please provide an API key. ' + usage);
-   }
-   this.applicationID = applicationID;
-   this.apiKey = apiKey;
-   this.hosts = {
-     read: [],
-     write: []
-   };
-   opts = opts || {};
-   var protocol = opts.protocol || 'https:';
-   this._timeouts = opts.timeouts || {
-     connect: 1 * 1000, // 500ms connect is GPRS latency
-     read: 2 * 1000,
-     write: 30 * 1000
-   };
-   // backward compat, if opts.timeout is passed, we use it to configure all timeouts like before
-   if (opts.timeout) {
-     this._timeouts.connect = this._timeouts.read = this._timeouts.write = opts.timeout;
-   }
-   // while we advocate for colon-at-the-end values: 'http:' for `opts.protocol`
-   // we also accept `http` and `https`. It's a common error.
-   if (!/:$/.test(protocol)) {
-     protocol = protocol + ':';
-   }
-   if (opts.protocol !== 'http:' && opts.protocol !== 'https:') {
-     throw new errors.AlgoliaSearchError('protocol must be `http:` or `https:` (was `' + opts.protocol + '`)');
-   }
-   this._checkAppIdData();
-   if (!opts.hosts) {
-     var defaultHosts = map(this._shuffleResult, function(hostNumber) {
-       return applicationID + '-' + hostNumber + '.algolianet.com';
-     });
-     // no hosts given, compute defaults
-     this.hosts.read = [this.applicationID + '-dsn.algolia.net'].concat(defaultHosts);
-     this.hosts.write = [this.applicationID + '.algolia.net'].concat(defaultHosts);
-   } else if (isArray(opts.hosts)) {
-     // when passing custom hosts, we need to have a different host index if the number
-     // of write/read hosts are different.
-     this.hosts.read = clone(opts.hosts);
-     this.hosts.write = clone(opts.hosts);
-   } else {
-     this.hosts.read = clone(opts.hosts.read);
-     this.hosts.write = clone(opts.hosts.write);
-   }
-   // add protocol and lowercase hosts
-   this.hosts.read = map(this.hosts.read, prepareHost(protocol));
-   this.hosts.write = map(this.hosts.write, prepareHost(protocol));
-   this.extraHeaders = [];
-   // In some situations you might want to warm the cache
-   this.cache = opts._cache || {};
-   this._ua = opts._ua;
-   this._useCache = opts._useCache === undefined || opts._cache ? true : opts._useCache;
-   this._useFallback = opts.useFallback === undefined ? true : opts.useFallback;
-   this._setTimeout = opts._setTimeout;
-   debug('init done, %j', this);
- }
- /*
-  * Get the index object initialized
-  *
-  * @param indexName the name of index
-  * @param callback the result callback with one argument (the Index instance)
-  */
- AlgoliaSearchCore.prototype.initIndex = function(indexName) {
-   return new IndexCore(this, indexName);
- };
- /**
- * Add an extra field to the HTTP request
- *
- * @param name the header field name
- * @param value the header field value
- */
- AlgoliaSearchCore.prototype.setExtraHeader = function(name, value) {
-   this.extraHeaders.push({
-     name: name.toLowerCase(), value: value
-   });
- };
- /**
- * Augment sent x-algolia-agent with more data, each agent part
- * is automatically separated from the others by a semicolon;
- *
- * @param algoliaAgent the agent to add
- */
- AlgoliaSearchCore.prototype.addAlgoliaAgent = function(algoliaAgent) {
-   if (this._ua.indexOf(';' + algoliaAgent) === -1) {
-     this._ua += ';' + algoliaAgent;
-   }
- };
- /*
-  * Wrapper that try all hosts to maximize the quality of service
-  */
- AlgoliaSearchCore.prototype._jsonRequest = function(initialOpts) {
-   this._checkAppIdData();
-   var requestDebug = __webpack_require__(6)('algoliasearch:' + initialOpts.url);
-   var body;
-   var additionalUA = initialOpts.additionalUA || '';
-   var cache = initialOpts.cache;
-   var client = this;
-   var tries = 0;
-   var usingFallback = false;
-   var hasFallback = client._useFallback && client._request.fallback && initialOpts.fallback;
-   var headers;
-   if (
-     this.apiKey.length > MAX_API_KEY_LENGTH &&
-     initialOpts.body !== undefined &&
-     (initialOpts.body.params !== undefined || // index.search()
-     initialOpts.body.requests !== undefined) // client.search()
-   ) {
-     initialOpts.body.apiKey = this.apiKey;
-     headers = this._computeRequestHeaders(additionalUA, false);
-   } else {
-     headers = this._computeRequestHeaders(additionalUA);
-   }
-   if (initialOpts.body !== undefined) {
-     body = safeJSONStringify(initialOpts.body);
-   }
-   requestDebug('request start');
-   var debugData = [];
-   function doRequest(requester, reqOpts) {
-     client._checkAppIdData();
-     var startTime = new Date();
-     var cacheID;
-     if (client._useCache) {
-       cacheID = initialOpts.url;
-     }
-     // as we sometime use POST requests to pass parameters (like query='aa'),
-     // the cacheID must also include the body to be different between calls
-     if (client._useCache && body) {
-       cacheID += '_body_' + reqOpts.body;
-     }
-     // handle cache existence
-     if (client._useCache && cache && cache[cacheID] !== undefined) {
-       requestDebug('serving response from cache');
-       return client._promise.resolve(JSON.parse(cache[cacheID]));
-     }
-     // if we reached max tries
-     if (tries >= client.hosts[initialOpts.hostType].length) {
-       if (!hasFallback || usingFallback) {
-         requestDebug('could not get any response');
-         // then stop
-         return client._promise.reject(new errors.AlgoliaSearchError(
-           'Cannot connect to the AlgoliaSearch API.' +
-           ' Send an email to support@algolia.com to report and resolve the issue.' +
-           ' Application id was: ' + client.applicationID, {debugData: debugData}
-         ));
-       }
-       requestDebug('switching to fallback');
-       // let's try the fallback starting from here
-       tries = 0;
-       // method, url and body are fallback dependent
-       reqOpts.method = initialOpts.fallback.method;
-       reqOpts.url = initialOpts.fallback.url;
-       reqOpts.jsonBody = initialOpts.fallback.body;
-       if (reqOpts.jsonBody) {
-         reqOpts.body = safeJSONStringify(reqOpts.jsonBody);
-       }
-       // re-compute headers, they could be omitting the API KEY
-       headers = client._computeRequestHeaders(additionalUA);
-       reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType);
-       client._setHostIndexByType(0, initialOpts.hostType);
-       usingFallback = true; // the current request is now using fallback
-       return doRequest(client._request.fallback, reqOpts);
-     }
-     var currentHost = client._getHostByType(initialOpts.hostType);
-     var url = currentHost + reqOpts.url;
-     var options = {
-       body: reqOpts.body,
-       jsonBody: reqOpts.jsonBody,
-       method: reqOpts.method,
-       headers: headers,
-       timeouts: reqOpts.timeouts,
-       debug: requestDebug
-     };
-     requestDebug('method: %s, url: %s, headers: %j, timeouts: %d',
-       options.method, url, options.headers, options.timeouts);
-     if (requester === client._request.fallback) {
-       requestDebug('using fallback');
-     }
-     // `requester` is any of this._request or this._request.fallback
-     // thus it needs to be called using the client as context
-     return requester.call(client, url, options).then(success, tryFallback);
-     function success(httpResponse) {
-       // compute the status of the response,
-       //
-       // When in browser mode, using XDR or JSONP, we have no statusCode available
-       // So we rely on our API response `status` property.
-       // But `waitTask` can set a `status` property which is not the statusCode (it's the task status)
-       // So we check if there's a `message` along `status` and it means it's an error
-       //
-       // That's the only case where we have a response.status that's not the http statusCode
-       var status = httpResponse && httpResponse.body && httpResponse.body.message && httpResponse.body.status ||
-         // this is important to check the request statusCode AFTER the body eventual
-         // statusCode because some implementations (jQuery XDomainRequest transport) may
-         // send statusCode 200 while we had an error
-         httpResponse.statusCode ||
-         // When in browser mode, using XDR or JSONP
-         // we default to success when no error (no response.status && response.message)
-         // If there was a JSON.parse() error then body is null and it fails
-         httpResponse && httpResponse.body && 200;
-       requestDebug('received response: statusCode: %s, computed statusCode: %d, headers: %j',
-         httpResponse.statusCode, status, httpResponse.headers);
-       var httpResponseOk = Math.floor(status / 100) === 2;
-       var endTime = new Date();
-       debugData.push({
-         currentHost: currentHost,
-         headers: removeCredentials(headers),
-         content: body || null,
-         contentLength: body !== undefined ? body.length : null,
-         method: reqOpts.method,
-         timeouts: reqOpts.timeouts,
-         url: reqOpts.url,
-         startTime: startTime,
-         endTime: endTime,
-         duration: endTime - startTime,
-         statusCode: status
-       });
-       if (httpResponseOk) {
-         if (client._useCache && cache) {
-           cache[cacheID] = httpResponse.responseText;
-         }
-         return httpResponse.body;
-       }
-       var shouldRetry = Math.floor(status / 100) !== 4;
-       if (shouldRetry) {
-         tries += 1;
-         return retryRequest();
-       }
-       requestDebug('unrecoverable error');
-       // no success and no retry => fail
-       var unrecoverableError = new errors.AlgoliaSearchError(
-         httpResponse.body && httpResponse.body.message, {debugData: debugData, statusCode: status}
-       );
-       return client._promise.reject(unrecoverableError);
-     }
-     function tryFallback(err) {
-       // error cases:
-       //  While not in fallback mode:
-       //    - CORS not supported
-       //    - network error
-       //  While in fallback mode:
-       //    - timeout
-       //    - network error
-       //    - badly formatted JSONP (script loaded, did not call our callback)
-       //  In both cases:
-       //    - uncaught exception occurs (TypeError)
-       requestDebug('error: %s, stack: %s', err.message, err.stack);
-       var endTime = new Date();
-       debugData.push({
-         currentHost: currentHost,
-         headers: removeCredentials(headers),
-         content: body || null,
-         contentLength: body !== undefined ? body.length : null,
-         method: reqOpts.method,
-         timeouts: reqOpts.timeouts,
-         url: reqOpts.url,
-         startTime: startTime,
-         endTime: endTime,
-         duration: endTime - startTime
-       });
-       if (!(err instanceof errors.AlgoliaSearchError)) {
-         err = new errors.Unknown(err && err.message, err);
-       }
-       tries += 1;
-       // stop the request implementation when:
-       if (
-         // we did not generate this error,
-         // it comes from a throw in some other piece of code
-         err instanceof errors.Unknown ||
-         // server sent unparsable JSON
-         err instanceof errors.UnparsableJSON ||
-         // max tries and already using fallback or no fallback
-         tries >= client.hosts[initialOpts.hostType].length &&
-         (usingFallback || !hasFallback)) {
-         // stop request implementation for this command
-         err.debugData = debugData;
-         return client._promise.reject(err);
-       }
-       // When a timeout occured, retry by raising timeout
-       if (err instanceof errors.RequestTimeout) {
-         return retryRequestWithHigherTimeout();
-       }
-       return retryRequest();
-     }
-     function retryRequest() {
-       requestDebug('retrying request');
-       client._incrementHostIndex(initialOpts.hostType);
-       return doRequest(requester, reqOpts);
-     }
-     function retryRequestWithHigherTimeout() {
-       requestDebug('retrying request with higher timeout');
-       client._incrementHostIndex(initialOpts.hostType);
-       client._incrementTimeoutMultipler();
-       reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType);
-       return doRequest(requester, reqOpts);
-     }
-   }
-   var promise = doRequest(
-     client._request, {
-       url: initialOpts.url,
-       method: initialOpts.method,
-       body: body,
-       jsonBody: initialOpts.body,
-       timeouts: client._getTimeoutsForRequest(initialOpts.hostType)
-     }
-   );
-   // either we have a callback
-   // either we are using promises
-   if (initialOpts.callback) {
-     promise.then(function okCb(content) {
-       exitPromise(function() {
-         initialOpts.callback(null, content);
-       }, client._setTimeout || setTimeout);
-     }, function nookCb(err) {
-       exitPromise(function() {
-         initialOpts.callback(err);
-       }, client._setTimeout || setTimeout);
-     });
-   } else {
-     return promise;
-   }
- };
- /*
- * Transform search param object in query string
- * @param {object} args arguments to add to the current query string
- * @param {string} params current query string
- * @return {string} the final query string
- */
- AlgoliaSearchCore.prototype._getSearchParams = function(args, params) {
-   if (args === undefined || args === null) {
-     return params;
-   }
-   for (var key in args) {
-     if (key !== null && args[key] !== undefined && args.hasOwnProperty(key)) {
-       params += params === '' ? '' : '&';
-       params += key + '=' + encodeURIComponent(Object.prototype.toString.call(args[key]) === '[object Array]' ? safeJSONStringify(args[key]) : args[key]);
-     }
-   }
-   return params;
- };
- AlgoliaSearchCore.prototype._computeRequestHeaders = function(additionalUA, withAPIKey) {
-   var forEach = __webpack_require__(2);
-   var ua = additionalUA ?
-     this._ua + ';' + additionalUA :
-     this._ua;
-   var requestHeaders = {
-     'x-algolia-agent': ua,
-     'x-algolia-application-id': this.applicationID
-   };
-   // browser will inline headers in the url, node.js will use http headers
-   // but in some situations, the API KEY will be too long (big secured API keys)
-   // so if the request is a POST and the KEY is very long, we will be asked to not put
-   // it into headers but in the JSON body
-   if (withAPIKey !== false) {
-     requestHeaders['x-algolia-api-key'] = this.apiKey;
-   }
-   if (this.userToken) {
-     requestHeaders['x-algolia-usertoken'] = this.userToken;
-   }
-   if (this.securityTags) {
-     requestHeaders['x-algolia-tagfilters'] = this.securityTags;
-   }
-   if (this.extraHeaders) {
-     forEach(this.extraHeaders, function addToRequestHeaders(header) {
-       requestHeaders[header.name] = header.value;
-     });
-   }
-   return requestHeaders;
- };
- /**
-  * Search through multiple indices at the same time
-  * @param  {Object[]}   queries  An array of queries you want to run.
-  * @param {string} queries[].indexName The index name you want to target
-  * @param {string} [queries[].query] The query to issue on this index. Can also be passed into `params`
-  * @param {Object} queries[].params Any search param like hitsPerPage, ..
-  * @param  {Function} callback Callback to be called
-  * @return {Promise|undefined} Returns a promise if no callback given
-  */
- AlgoliaSearchCore.prototype.search = function(queries, opts, callback) {
-   var isArray = __webpack_require__(10);
-   var map = __webpack_require__(7);
-   var usage = 'Usage: client.search(arrayOfQueries[, callback])';
-   if (!isArray(queries)) {
-     throw new Error(usage);
-   }
-   if (typeof opts === 'function') {
-     callback = opts;
-     opts = {};
-   } else if (opts === undefined) {
-     opts = {};
-   }
-   var client = this;
-   var postObj = {
-     requests: map(queries, function prepareRequest(query) {
-       var params = '';
-       // allow query.query
-       // so we are mimicing the index.search(query, params) method
-       // {indexName:, query:, params:}
-       if (query.query !== undefined) {
-         params += 'query=' + encodeURIComponent(query.query);
-       }
-       return {
-         indexName: query.indexName,
-         params: client._getSearchParams(query.params, params)
-       };
-     })
-   };
-   var JSONPParams = map(postObj.requests, function prepareJSONPParams(request, requestId) {
-     return requestId + '=' +
-       encodeURIComponent(
-         '/1/indexes/' + encodeURIComponent(request.indexName) + '?' +
-         request.params
-       );
-   }).join('&');
-   var url = '/1/indexes/*/queries';
-   if (opts.strategy !== undefined) {
-     url += '?strategy=' + opts.strategy;
-   }
-   return this._jsonRequest({
-     cache: this.cache,
-     method: 'POST',
-     url: url,
-     body: postObj,
-     hostType: 'read',
-     fallback: {
-       method: 'GET',
-       url: '/1/indexes/*',
-       body: {
-         params: JSONPParams
-       }
-     },
-     callback: callback
-   });
- };
- /**
-  * Set the extra security tagFilters header
-  * @param {string|array} tags The list of tags defining the current security filters
-  */
- AlgoliaSearchCore.prototype.setSecurityTags = function(tags) {
-   if (Object.prototype.toString.call(tags) === '[object Array]') {
-     var strTags = [];
-     for (var i = 0; i < tags.length; ++i) {
-       if (Object.prototype.toString.call(tags[i]) === '[object Array]') {
-         var oredTags = [];
-         for (var j = 0; j < tags[i].length; ++j) {
-           oredTags.push(tags[i][j]);
-         }
-         strTags.push('(' + oredTags.join(',') + ')');
-       } else {
-         strTags.push(tags[i]);
-       }
-     }
-     tags = strTags.join(',');
-   }
-   this.securityTags = tags;
- };
- /**
-  * Set the extra user token header
-  * @param {string} userToken The token identifying a uniq user (used to apply rate limits)
-  */
- AlgoliaSearchCore.prototype.setUserToken = function(userToken) {
-   this.userToken = userToken;
- };
- /**
-  * Clear all queries in client's cache
-  * @return undefined
-  */
- AlgoliaSearchCore.prototype.clearCache = function() {
-   this.cache = {};
- };
- /**
- * Set the number of milliseconds a request can take before automatically being terminated.
- * @deprecated
- * @param {Number} milliseconds
- */
- AlgoliaSearchCore.prototype.setRequestTimeout = function(milliseconds) {
-   if (milliseconds) {
-     this._timeouts.connect = this._timeouts.read = this._timeouts.write = milliseconds;
-   }
- };
- /**
- * Set the three different (connect, read, write) timeouts to be used when requesting
- * @param {Object} timeouts
- */
- AlgoliaSearchCore.prototype.setTimeouts = function(timeouts) {
-   this._timeouts = timeouts;
- };
- /**
- * Get the three different (connect, read, write) timeouts to be used when requesting
- * @param {Object} timeouts
- */
- AlgoliaSearchCore.prototype.getTimeouts = function() {
-   return this._timeouts;
- };
- AlgoliaSearchCore.prototype._getAppIdData = function() {
-   var data = store.get(this.applicationID);
-   if (data !== null) this._cacheAppIdData(data);
-   return data;
- };
- AlgoliaSearchCore.prototype._setAppIdData = function(data) {
-   data.lastChange = (new Date()).getTime();
-   this._cacheAppIdData(data);
-   return store.set(this.applicationID, data);
- };
- AlgoliaSearchCore.prototype._checkAppIdData = function() {
-   var data = this._getAppIdData();
-   var now = (new Date()).getTime();
-   if (data === null || now - data.lastChange > RESET_APP_DATA_TIMER) {
-     return this._resetInitialAppIdData(data);
-   }
-   return data;
- };
- AlgoliaSearchCore.prototype._resetInitialAppIdData = function(data) {
-   var newData = data || {};
-   newData.hostIndexes = {read: 0, write: 0};
-   newData.timeoutMultiplier = 1;
-   newData.shuffleResult = newData.shuffleResult || shuffle([1, 2, 3]);
-   return this._setAppIdData(newData);
- };
- AlgoliaSearchCore.prototype._cacheAppIdData = function(data) {
-   this._hostIndexes = data.hostIndexes;
-   this._timeoutMultiplier = data.timeoutMultiplier;
-   this._shuffleResult = data.shuffleResult;
- };
- AlgoliaSearchCore.prototype._partialAppIdDataUpdate = function(newData) {
-   var foreach = __webpack_require__(2);
-   var currentData = this._getAppIdData();
-   foreach(newData, function(value, key) {
-     currentData[key] = value;
-   });
-   return this._setAppIdData(currentData);
- };
- AlgoliaSearchCore.prototype._getHostByType = function(hostType) {
-   return this.hosts[hostType][this._getHostIndexByType(hostType)];
- };
- AlgoliaSearchCore.prototype._getTimeoutMultiplier = function() {
-   return this._timeoutMultiplier;
- };
- AlgoliaSearchCore.prototype._getHostIndexByType = function(hostType) {
-   return this._hostIndexes[hostType];
- };
- AlgoliaSearchCore.prototype._setHostIndexByType = function(hostIndex, hostType) {
-   var clone = __webpack_require__(4);
-   var newHostIndexes = clone(this._hostIndexes);
-   newHostIndexes[hostType] = hostIndex;
-   this._partialAppIdDataUpdate({hostIndexes: newHostIndexes});
-   return hostIndex;
- };
- AlgoliaSearchCore.prototype._incrementHostIndex = function(hostType) {
-   return this._setHostIndexByType(
-     (this._getHostIndexByType(hostType) + 1) % this.hosts[hostType].length, hostType
-   );
- };
- AlgoliaSearchCore.prototype._incrementTimeoutMultipler = function() {
-   var timeoutMultiplier = Math.max(this._timeoutMultiplier + 1, 4);
-   return this._partialAppIdDataUpdate({timeoutMultiplier: timeoutMultiplier});
- };
- AlgoliaSearchCore.prototype._getTimeoutsForRequest = function(hostType) {
-   return {
-     connect: this._timeouts.connect * this._timeoutMultiplier,
-     complete: this._timeouts[hostType] * this._timeoutMultiplier
-   };
- };
- function prepareHost(protocol) {
-   return function prepare(host) {
-     return protocol + '//' + host.toLowerCase();
-   };
- }
- // Prototype.js < 1.7, a widely used library, defines a weird
- // Array.prototype.toJSON function that will fail to stringify our content
- // appropriately
- // refs:
- //   - https://groups.google.com/forum/#!topic/prototype-core/E-SAVvV_V9Q
- //   - https://github.com/sstephenson/prototype/commit/038a2985a70593c1a86c230fadbdfe2e4898a48c
- //   - http://stackoverflow.com/a/3148441/147079
- function safeJSONStringify(obj) {
-   /* eslint no-extend-native:0 */
-   if (Array.prototype.toJSON === undefined) {
-     return JSON.stringify(obj);
-   }
-   var toJSON = Array.prototype.toJSON;
-   delete Array.prototype.toJSON;
-   var out = JSON.stringify(obj);
-   Array.prototype.toJSON = toJSON;
-   return out;
- }
- function shuffle(array) {
-   var currentIndex = array.length;
-   var temporaryValue;
-   var randomIndex;
-   // While there remain elements to shuffle...
-   while (currentIndex !== 0) {
-     // Pick a remaining element...
-     randomIndex = Math.floor(Math.random() * currentIndex);
-     currentIndex -= 1;
-     // And swap it with the current element.
-     temporaryValue = array[currentIndex];
-     array[currentIndex] = array[randomIndex];
-     array[randomIndex] = temporaryValue;
-   }
-   return array;
- }
- function removeCredentials(headers) {
-   var newHeaders = {};
-   for (var headerName in headers) {
-     if (Object.prototype.hasOwnProperty.call(headers, headerName)) {
-       var value;
-       if (headerName === 'x-algolia-api-key' || headerName === 'x-algolia-application-id') {
-         value = '**hidden for security purposes**';
-       } else {
-         value = headers[headerName];
-       }
-       newHeaders[headerName] = value;
-     }
-   }
-   return newHeaders;
- }
- /***/ }),
- /* 23 */
- /***/ (function(module, exports, __webpack_require__) {
- var buildSearchMethod = __webpack_require__(12);
- var deprecate = __webpack_require__(29);
- var deprecatedMessage = __webpack_require__(30);
- module.exports = IndexCore;
- /*
- * Index class constructor.
- * You should not use this method directly but use initIndex() function
- */
- function IndexCore(algoliasearch, indexName) {
-   this.indexName = indexName;
-   this.as = algoliasearch;
-   this.typeAheadArgs = null;
-   this.typeAheadValueOption = null;
-   // make sure every index instance has it's own cache
-   this.cache = {};
- }
- /*
- * Clear all queries in cache
- */
- IndexCore.prototype.clearCache = function() {
-   this.cache = {};
- };
- /*
- * Search inside the index using XMLHttpRequest request (Using a POST query to
- * minimize number of OPTIONS queries: Cross-Origin Resource Sharing).
- *
- * @param {string} [query] the full text query
- * @param {object} [args] (optional) if set, contains an object with query parameters:
- * - page: (integer) Pagination parameter used to select the page to retrieve.
- *                   Page is zero-based and defaults to 0. Thus,
- *                   to retrieve the 10th page you need to set page=9
- * - hitsPerPage: (integer) Pagination parameter used to select the number of hits per page. Defaults to 20.
- * - attributesToRetrieve: a string that contains the list of object attributes
- * you want to retrieve (let you minimize the answer size).
- *   Attributes are separated with a comma (for example "name,address").
- *   You can also use an array (for example ["name","address"]).
- *   By default, all attributes are retrieved. You can also use '*' to retrieve all
- *   values when an attributesToRetrieve setting is specified for your index.
- * - attributesToHighlight: a string that contains the list of attributes you
- *   want to highlight according to the query.
- *   Attributes are separated by a comma. You can also use an array (for example ["name","address"]).
- *   If an attribute has no match for the query, the raw value is returned.
- *   By default all indexed text attributes are highlighted.
- *   You can use `*` if you want to highlight all textual attributes.
- *   Numerical attributes are not highlighted.
- *   A matchLevel is returned for each highlighted attribute and can contain:
- *      - full: if all the query terms were found in the attribute,
- *      - partial: if only some of the query terms were found,
- *      - none: if none of the query terms were found.
- * - attributesToSnippet: a string that contains the list of attributes to snippet alongside
- * the number of words to return (syntax is `attributeName:nbWords`).
- *    Attributes are separated by a comma (Example: attributesToSnippet=name:10,content:10).
- *    You can also use an array (Example: attributesToSnippet: ['name:10','content:10']).
- *    By default no snippet is computed.
- * - minWordSizefor1Typo: the minimum number of characters in a query word to accept one typo in this word.
- * Defaults to 3.
- * - minWordSizefor2Typos: the minimum number of characters in a query word
- * to accept two typos in this word. Defaults to 7.
- * - getRankingInfo: if set to 1, the result hits will contain ranking
- * information in _rankingInfo attribute.
- * - aroundLatLng: search for entries around a given
- * latitude/longitude (specified as two floats separated by a comma).
- *   For example aroundLatLng=47.316669,5.016670).
- *   You can specify the maximum distance in meters with the aroundRadius parameter (in meters)
- *   and the precision for ranking with aroundPrecision
- *   (for example if you set aroundPrecision=100, two objects that are distant of
- *   less than 100m will be considered as identical for "geo" ranking parameter).
- *   At indexing, you should specify geoloc of an object with the _geoloc attribute
- *   (in the form {"_geoloc":{"lat":48.853409, "lng":2.348800}})
- * - insideBoundingBox: search entries inside a given area defined by the two extreme points
- * of a rectangle (defined by 4 floats: p1Lat,p1Lng,p2Lat,p2Lng).
- *   For example insideBoundingBox=47.3165,4.9665,47.3424,5.0201).
- *   At indexing, you should specify geoloc of an object with the _geoloc attribute
- *   (in the form {"_geoloc":{"lat":48.853409, "lng":2.348800}})
- * - numericFilters: a string that contains the list of numeric filters you want to
- * apply separated by a comma.
- *   The syntax of one filter is `attributeName` followed by `operand` followed by `value`.
- *   Supported operands are `<`, `<=`, `=`, `>` and `>=`.
- *   You can have multiple conditions on one attribute like for example numericFilters=price>100,price<1000.
- *   You can also use an array (for example numericFilters: ["price>100","price<1000"]).
- * - tagFilters: filter the query by a set of tags. You can AND tags by separating them by commas.
- *   To OR tags, you must add parentheses. For example, tags=tag1,(tag2,tag3) means tag1 AND (tag2 OR tag3).
- *   You can also use an array, for example tagFilters: ["tag1",["tag2","tag3"]]
- *   means tag1 AND (tag2 OR tag3).
- *   At indexing, tags should be added in the _tags** attribute
- *   of objects (for example {"_tags":["tag1","tag2"]}).
- * - facetFilters: filter the query by a list of facets.
- *   Facets are separated by commas and each facet is encoded as `attributeName:value`.
- *   For example: `facetFilters=category:Book,author:John%20Doe`.
- *   You can also use an array (for example `["category:Book","author:John%20Doe"]`).
- * - facets: List of object attributes that you want to use for faceting.
- *   Comma separated list: `"category,author"` or array `['category','author']`
- *   Only attributes that have been added in **attributesForFaceting** index setting
- *   can be used in this parameter.
- *   You can also use `*` to perform faceting on all attributes specified in **attributesForFaceting**.
- * - queryType: select how the query words are interpreted, it can be one of the following value:
- *    - prefixAll: all query words are interpreted as prefixes,
- *    - prefixLast: only the last word is interpreted as a prefix (default behavior),
- *    - prefixNone: no query word is interpreted as a prefix. This option is not recommended.
- * - optionalWords: a string that contains the list of words that should
- * be considered as optional when found in the query.
- *   Comma separated and array are accepted.
- * - distinct: If set to 1, enable the distinct feature (disabled by default)
- * if the attributeForDistinct index setting is set.
- *   This feature is similar to the SQL "distinct" keyword: when enabled
- *   in a query with the distinct=1 parameter,
- *   all hits containing a duplicate value for the attributeForDistinct attribute are removed from results.
- *   For example, if the chosen attribute is show_name and several hits have
- *   the same value for show_name, then only the best
- *   one is kept and others are removed.
- * - restrictSearchableAttributes: List of attributes you want to use for
- * textual search (must be a subset of the attributesToIndex index setting)
- * either comma separated or as an array
- * @param {function} [callback] the result callback called with two arguments:
- *  error: null or Error('message'). If false, the content contains the error.
- *  content: the server answer that contains the list of results.
- */
- IndexCore.prototype.search = buildSearchMethod('query');
- /*
- * -- BETA --
- * Search a record similar to the query inside the index using XMLHttpRequest request (Using a POST query to
- * minimize number of OPTIONS queries: Cross-Origin Resource Sharing).
- *
- * @param {string} [query] the similar query
- * @param {object} [args] (optional) if set, contains an object with query parameters.
- *   All search parameters are supported (see search function), restrictSearchableAttributes and facetFilters
- *   are the two most useful to restrict the similar results and get more relevant content
- */
- IndexCore.prototype.similarSearch = buildSearchMethod('similarQuery');
- /*
- * Browse index content. The response content will have a `cursor` property that you can use
- * to browse subsequent pages for this query. Use `index.browseFrom(cursor)` when you want.
- *
- * @param {string} query - The full text query
- * @param {Object} [queryParameters] - Any search query parameter
- * @param {Function} [callback] - The result callback called with two arguments
- *   error: null or Error('message')
- *   content: the server answer with the browse result
- * @return {Promise|undefined} Returns a promise if no callback given
- * @example
- * index.browse('cool songs', {
- *   tagFilters: 'public,comments',
- *   hitsPerPage: 500
- * }, callback);
- * @see {@link https://www.algolia.com/doc/rest_api#Browse|Algolia REST API Documentation}
- */
- IndexCore.prototype.browse = function(query, queryParameters, callback) {
-   var merge = __webpack_require__(32);
-   var indexObj = this;
-   var page;
-   var hitsPerPage;
-   // we check variadic calls that are not the one defined
-   // .browse()/.browse(fn)
-   // => page = 0
-   if (arguments.length === 0 || arguments.length === 1 && typeof arguments[0] === 'function') {
-     page = 0;
-     callback = arguments[0];
-     query = undefined;
-   } else if (typeof arguments[0] === 'number') {
-     // .browse(2)/.browse(2, 10)/.browse(2, fn)/.browse(2, 10, fn)
-     page = arguments[0];
-     if (typeof arguments[1] === 'number') {
-       hitsPerPage = arguments[1];
-     } else if (typeof arguments[1] === 'function') {
-       callback = arguments[1];
-       hitsPerPage = undefined;
-     }
-     query = undefined;
-     queryParameters = undefined;
-   } else if (typeof arguments[0] === 'object') {
-     // .browse(queryParameters)/.browse(queryParameters, cb)
-     if (typeof arguments[1] === 'function') {
-       callback = arguments[1];
-     }
-     queryParameters = arguments[0];
-     query = undefined;
-   } else if (typeof arguments[0] === 'string' && typeof arguments[1] === 'function') {
-     // .browse(query, cb)
-     callback = arguments[1];
-     queryParameters = undefined;
-   }
-   // otherwise it's a .browse(query)/.browse(query, queryParameters)/.browse(query, queryParameters, cb)
-   // get search query parameters combining various possible calls
-   // to .browse();
-   queryParameters = merge({}, queryParameters || {}, {
-     page: page,
-     hitsPerPage: hitsPerPage,
-     query: query
-   });
-   var params = this.as._getSearchParams(queryParameters, '');
-   return this.as._jsonRequest({
-     method: 'POST',
-     url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/browse',
-     body: {params: params},
-     hostType: 'read',
-     callback: callback
-   });
- };
- /*
- * Continue browsing from a previous position (cursor), obtained via a call to `.browse()`.
- *
- * @param {string} query - The full text query
- * @param {Object} [queryParameters] - Any search query parameter
- * @param {Function} [callback] - The result callback called with two arguments
- *   error: null or Error('message')
- *   content: the server answer with the browse result
- * @return {Promise|undefined} Returns a promise if no callback given
- * @example
- * index.browseFrom('14lkfsakl32', callback);
- * @see {@link https://www.algolia.com/doc/rest_api#Browse|Algolia REST API Documentation}
- */
- IndexCore.prototype.browseFrom = function(cursor, callback) {
-   return this.as._jsonRequest({
-     method: 'POST',
-     url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/browse',
-     body: {cursor: cursor},
-     hostType: 'read',
-     callback: callback
-   });
- };
- /*
- * Search for facet values
- * https://www.algolia.com/doc/rest-api/search#search-for-facet-values
- *
- * @param {string} params.facetName Facet name, name of the attribute to search for values in.
- * Must be declared as a facet
- * @param {string} params.facetQuery Query for the facet search
- * @param {string} [params.*] Any search parameter of Algolia,
- * see https://www.algolia.com/doc/api-client/javascript/search#search-parameters
- * Pagination is not supported. The page and hitsPerPage parameters will be ignored.
- * @param callback (optional)
- */
- IndexCore.prototype.searchForFacetValues = function(params, callback) {
-   var clone = __webpack_require__(4);
-   var omit = __webpack_require__(33);
-   var usage = 'Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])';
-   if (params.facetName === undefined || params.facetQuery === undefined) {
-     throw new Error(usage);
-   }
-   var facetName = params.facetName;
-   var filteredParams = omit(clone(params), function(keyName) {
-     return keyName === 'facetName';
-   });
-   var searchParameters = this.as._getSearchParams(filteredParams, '');
-   return this.as._jsonRequest({
-     method: 'POST',
-     url: '/1/indexes/' +
-       encodeURIComponent(this.indexName) + '/facets/' + encodeURIComponent(facetName) + '/query',
-     hostType: 'read',
-     body: {params: searchParameters},
-     callback: callback
-   });
- };
- IndexCore.prototype.searchFacet = deprecate(function(params, callback) {
-   return this.searchForFacetValues(params, callback);
- }, deprecatedMessage(
-   'index.searchFacet(params[, callback])',
-   'index.searchForFacetValues(params[, callback])'
- ));
- IndexCore.prototype._search = function(params, url, callback, additionalUA) {
-   return this.as._jsonRequest({
-     cache: this.cache,
-     method: 'POST',
-     url: url || '/1/indexes/' + encodeURIComponent(this.indexName) + '/query',
-     body: {params: params},
-     hostType: 'read',
-     fallback: {
-       method: 'GET',
-       url: '/1/indexes/' + encodeURIComponent(this.indexName),
-       body: {params: params}
-     },
-     callback: callback,
-     additionalUA: additionalUA
-   });
- };
- /*
- * Get an object from this index
- *
- * @param objectID the unique identifier of the object to retrieve
- * @param attrs (optional) if set, contains the array of attribute names to retrieve
- * @param callback (optional) the result callback called with two arguments
- *  error: null or Error('message')
- *  content: the object to retrieve or the error message if a failure occured
- */
- IndexCore.prototype.getObject = function(objectID, attrs, callback) {
-   var indexObj = this;
-   if (arguments.length === 1 || typeof attrs === 'function') {
-     callback = attrs;
-     attrs = undefined;
-   }
-   var params = '';
-   if (attrs !== undefined) {
-     params = '?attributes=';
-     for (var i = 0; i < attrs.length; ++i) {
-       if (i !== 0) {
-         params += ',';
-       }
-       params += attrs[i];
-     }
-   }
-   return this.as._jsonRequest({
-     method: 'GET',
-     url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/' + encodeURIComponent(objectID) + params,
-     hostType: 'read',
-     callback: callback
-   });
- };
- /*
- * Get several objects from this index
- *
- * @param objectIDs the array of unique identifier of objects to retrieve
- */
- IndexCore.prototype.getObjects = function(objectIDs, attributesToRetrieve, callback) {
-   var isArray = __webpack_require__(10);
-   var map = __webpack_require__(7);
-   var usage = 'Usage: index.getObjects(arrayOfObjectIDs[, callback])';
-   if (!isArray(objectIDs)) {
-     throw new Error(usage);
-   }
-   var indexObj = this;
-   if (arguments.length === 1 || typeof attributesToRetrieve === 'function') {
-     callback = attributesToRetrieve;
-     attributesToRetrieve = undefined;
-   }
-   var body = {
-     requests: map(objectIDs, function prepareRequest(objectID) {
-       var request = {
-         indexName: indexObj.indexName,
-         objectID: objectID
-       };
-       if (attributesToRetrieve) {
-         request.attributesToRetrieve = attributesToRetrieve.join(',');
-       }
-       return request;
-     })
-   };
-   return this.as._jsonRequest({
-     method: 'POST',
-     url: '/1/indexes/*/objects',
-     hostType: 'read',
-     body: body,
-     callback: callback
-   });
- };
- IndexCore.prototype.as = null;
- IndexCore.prototype.indexName = null;
- IndexCore.prototype.typeAheadArgs = null;
- IndexCore.prototype.typeAheadValueOption = null;
- /***/ }),
- /* 24 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var AlgoliaSearchCore = __webpack_require__(22);
- var createAlgoliasearch = __webpack_require__(25);
- module.exports = createAlgoliasearch(AlgoliaSearchCore, '(lite) ');
- /***/ }),
- /* 25 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var global = __webpack_require__(52);
- var Promise = global.Promise || __webpack_require__(51).Promise;
- // This is the standalone browser build entry point
- // Browser implementation of the Algolia Search JavaScript client,
- // using XMLHttpRequest, XDomainRequest and JSONP as fallback
- module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {
-   var inherits = __webpack_require__(20);
-   var errors = __webpack_require__(5);
-   var inlineHeaders = __webpack_require__(27);
-   var jsonpRequest = __webpack_require__(28);
-   var places = __webpack_require__(34);
-   uaSuffix = uaSuffix || '';
-   if (false) {
-     require('debug').enable('algoliasearch*');
-   }
-   function algoliasearch(applicationID, apiKey, opts) {
-     var cloneDeep = __webpack_require__(4);
-     var getDocumentProtocol = __webpack_require__(26);
-     opts = cloneDeep(opts || {});
-     if (opts.protocol === undefined) {
-       opts.protocol = getDocumentProtocol();
-     }
-     opts._ua = opts._ua || algoliasearch.ua;
-     return new AlgoliaSearchBrowser(applicationID, apiKey, opts);
-   }
-   algoliasearch.version = __webpack_require__(36);
-   algoliasearch.ua = 'Algolia for vanilla JavaScript ' + uaSuffix + algoliasearch.version;
-   algoliasearch.initPlaces = places(algoliasearch);
-   // we expose into window no matter how we are used, this will allow
-   // us to easily debug any website running algolia
-   global.__algolia = {
-     debug: __webpack_require__(6),
-     algoliasearch: algoliasearch
-   };
-   var support = {
-     hasXMLHttpRequest: 'XMLHttpRequest' in global,
-     hasXDomainRequest: 'XDomainRequest' in global
-   };
-   if (support.hasXMLHttpRequest) {
-     support.cors = 'withCredentials' in new XMLHttpRequest();
-   }
-   function AlgoliaSearchBrowser() {
-     // call AlgoliaSearch constructor
-     AlgoliaSearch.apply(this, arguments);
-   }
-   inherits(AlgoliaSearchBrowser, AlgoliaSearch);
-   AlgoliaSearchBrowser.prototype._request = function request(url, opts) {
-     return new Promise(function wrapRequest(resolve, reject) {
-       // no cors or XDomainRequest, no request
-       if (!support.cors && !support.hasXDomainRequest) {
-         // very old browser, not supported
-         reject(new errors.Network('CORS not supported'));
-         return;
-       }
-       url = inlineHeaders(url, opts.headers);
-       var body = opts.body;
-       var req = support.cors ? new XMLHttpRequest() : new XDomainRequest();
-       var reqTimeout;
-       var timedOut;
-       var connected = false;
-       reqTimeout = setTimeout(onTimeout, opts.timeouts.connect);
-       // we set an empty onprogress listener
-       // so that XDomainRequest on IE9 is not aborted
-       // refs:
-       //  - https://github.com/algolia/algoliasearch-client-js/issues/76
-       //  - https://social.msdn.microsoft.com/Forums/ie/en-US/30ef3add-767c-4436-b8a9-f1ca19b4812e/ie9-rtm-xdomainrequest-issued-requests-may-abort-if-all-event-handlers-not-specified?forum=iewebdevelopment
-       req.onprogress = onProgress;
-       if ('onreadystatechange' in req) req.onreadystatechange = onReadyStateChange;
-       req.onload = onLoad;
-       req.onerror = onError;
-       // do not rely on default XHR async flag, as some analytics code like hotjar
-       // breaks it and set it to false by default
-       if (req instanceof XMLHttpRequest) {
-         req.open(opts.method, url, true);
-       } else {
-         req.open(opts.method, url);
-       }
-       // headers are meant to be sent after open
-       if (support.cors) {
-         if (body) {
-           if (opts.method === 'POST') {
-             // https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Simple_requests
-             req.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
-           } else {
-             req.setRequestHeader('content-type', 'application/json');
-           }
-         }
-         req.setRequestHeader('accept', 'application/json');
-       }
-       req.send(body);
-       // event object not received in IE8, at least
-       // but we do not use it, still important to note
-       function onLoad(/* event */) {
-         // When browser does not supports req.timeout, we can
-         // have both a load and timeout event, since handled by a dumb setTimeout
-         if (timedOut) {
-           return;
-         }
-         clearTimeout(reqTimeout);
-         var out;
-         try {
-           out = {
-             body: JSON.parse(req.responseText),
-             responseText: req.responseText,
-             statusCode: req.status,
-             // XDomainRequest does not have any response headers
-             headers: req.getAllResponseHeaders && req.getAllResponseHeaders() || {}
-           };
-         } catch (e) {
-           out = new errors.UnparsableJSON({
-             more: req.responseText
-           });
-         }
-         if (out instanceof errors.UnparsableJSON) {
-           reject(out);
-         } else {
-           resolve(out);
-         }
-       }
-       function onError(event) {
-         if (timedOut) {
-           return;
-         }
-         clearTimeout(reqTimeout);
-         // error event is trigerred both with XDR/XHR on:
-         //   - DNS error
-         //   - unallowed cross domain request
-         reject(
-           new errors.Network({
-             more: event
-           })
-         );
-       }
-       function onTimeout() {
-         timedOut = true;
-         req.abort();
-         reject(new errors.RequestTimeout());
-       }
-       function onConnect() {
-         connected = true;
-         clearTimeout(reqTimeout);
-         reqTimeout = setTimeout(onTimeout, opts.timeouts.complete);
-       }
-       function onProgress() {
-         if (!connected) onConnect();
-       }
-       function onReadyStateChange() {
-         if (!connected && req.readyState > 1) onConnect();
-       }
-     });
-   };
-   AlgoliaSearchBrowser.prototype._request.fallback = function requestFallback(url, opts) {
-     url = inlineHeaders(url, opts.headers);
-     return new Promise(function wrapJsonpRequest(resolve, reject) {
-       jsonpRequest(url, opts, function jsonpRequestDone(err, content) {
-         if (err) {
-           reject(err);
-           return;
-         }
-         resolve(content);
-       });
-     });
-   };
-   AlgoliaSearchBrowser.prototype._promise = {
-     reject: function rejectPromise(val) {
-       return Promise.reject(val);
-     },
-     resolve: function resolvePromise(val) {
-       return Promise.resolve(val);
-     },
-     delay: function delayPromise(ms) {
-       return new Promise(function resolveOnTimeout(resolve/* , reject*/) {
-         setTimeout(resolve, ms);
-       });
-     }
-   };
-   return algoliasearch;
- };
- /***/ }),
- /* 26 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- module.exports = getDocumentProtocol;
- function getDocumentProtocol() {
-   var protocol = window.document.location.protocol;
-   // when in `file:` mode (local html file), default to `http:`
-   if (protocol !== 'http:' && protocol !== 'https:') {
-     protocol = 'http:';
-   }
-   return protocol;
- }
- /***/ }),
- /* 27 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- module.exports = inlineHeaders;
- var encode = __webpack_require__(65);
- function inlineHeaders(url, headers) {
-   if (/\?/.test(url)) {
-     url += '&';
-   } else {
-     url += '?';
-   }
-   return url + encode(headers);
- }
- /***/ }),
- /* 28 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- module.exports = jsonpRequest;
- var errors = __webpack_require__(5);
- var JSONPCounter = 0;
- function jsonpRequest(url, opts, cb) {
-   if (opts.method !== 'GET') {
-     cb(new Error('Method ' + opts.method + ' ' + url + ' is not supported by JSONP.'));
-     return;
-   }
-   opts.debug('JSONP: start');
-   var cbCalled = false;
-   var timedOut = false;
-   JSONPCounter += 1;
-   var head = document.getElementsByTagName('head')[0];
-   var script = document.createElement('script');
-   var cbName = 'algoliaJSONP_' + JSONPCounter;
-   var done = false;
-   window[cbName] = function(data) {
-     removeGlobals();
-     if (timedOut) {
-       opts.debug('JSONP: Late answer, ignoring');
-       return;
-     }
-     cbCalled = true;
-     clean();
-     cb(null, {
-       body: data/* ,
-       // We do not send the statusCode, there's no statusCode in JSONP, it will be
-       // computed using data.status && data.message like with XDR
-       statusCode*/
-     });
-   };
-   // add callback by hand
-   url += '&callback=' + cbName;
-   // add body params manually
-   if (opts.jsonBody && opts.jsonBody.params) {
-     url += '&' + opts.jsonBody.params;
-   }
-   var ontimeout = setTimeout(timeout, opts.timeouts.complete);
-   // script onreadystatechange needed only for
-   // <= IE8
-   // https://github.com/angular/angular.js/issues/4523
-   script.onreadystatechange = readystatechange;
-   script.onload = success;
-   script.onerror = error;
-   script.async = true;
-   script.defer = true;
-   script.src = url;
-   head.appendChild(script);
-   function success() {
-     opts.debug('JSONP: success');
-     if (done || timedOut) {
-       return;
-     }
-     done = true;
-     // script loaded but did not call the fn => script loading error
-     if (!cbCalled) {
-       opts.debug('JSONP: Fail. Script loaded but did not call the callback');
-       clean();
-       cb(new errors.JSONPScriptFail());
-     }
-   }
-   function readystatechange() {
-     if (this.readyState === 'loaded' || this.readyState === 'complete') {
-       success();
-     }
-   }
-   function clean() {
-     clearTimeout(ontimeout);
-     script.onload = null;
-     script.onreadystatechange = null;
-     script.onerror = null;
-     head.removeChild(script);
-   }
-   function removeGlobals() {
-     try {
-       delete window[cbName];
-       delete window[cbName + '_loaded'];
-     } catch (e) {
-       window[cbName] = window[cbName + '_loaded'] = undefined;
-     }
-   }
-   function timeout() {
-     opts.debug('JSONP: Script timeout');
-     timedOut = true;
-     clean();
-     cb(new errors.RequestTimeout());
-   }
-   function error() {
-     opts.debug('JSONP: Script error');
-     if (done || timedOut) {
-       return;
-     }
-     clean();
-     cb(new errors.JSONPScriptError());
-   }
- }
- /***/ }),
- /* 29 */
- /***/ (function(module, exports) {
- module.exports = function deprecate(fn, message) {
-   var warned = false;
-   function deprecated() {
-     if (!warned) {
-       /* eslint no-console:0 */
-       console.log(message);
-       warned = true;
-     }
-     return fn.apply(this, arguments);
-   }
-   return deprecated;
- };
- /***/ }),
- /* 30 */
- /***/ (function(module, exports) {
- module.exports = function deprecatedMessage(previousUsage, newUsage) {
-   var githubAnchorLink = previousUsage.toLowerCase()
-     .replace('.', '')
-     .replace('()', '');
-   return 'algoliasearch: `' + previousUsage + '` was replaced by `' + newUsage +
-     '`. Please see https://github.com/algolia/algoliasearch-client-js/wiki/Deprecated#' + githubAnchorLink;
- };
- /***/ }),
- /* 31 */
- /***/ (function(module, exports) {
- // Parse cloud does not supports setTimeout
- // We do not store a setTimeout reference in the client everytime
- // We only fallback to a fake setTimeout when not available
- // setTimeout cannot be override globally sadly
- module.exports = function exitPromise(fn, _setTimeout) {
-   _setTimeout(fn, 0);
- };
- /***/ }),
- /* 32 */
- /***/ (function(module, exports, __webpack_require__) {
- var foreach = __webpack_require__(2);
- module.exports = function merge(destination/* , sources */) {
-   var sources = Array.prototype.slice.call(arguments);
-   foreach(sources, function(source) {
-     for (var keyName in source) {
-       if (source.hasOwnProperty(keyName)) {
-         if (typeof destination[keyName] === 'object' && typeof source[keyName] === 'object') {
-           destination[keyName] = merge({}, destination[keyName], source[keyName]);
-         } else if (source[keyName] !== undefined) {
-           destination[keyName] = source[keyName];
-         }
-       }
-     }
-   });
-   return destination;
- };
- /***/ }),
- /* 33 */
- /***/ (function(module, exports, __webpack_require__) {
- module.exports = function omit(obj, test) {
-   var keys = __webpack_require__(63);
-   var foreach = __webpack_require__(2);
-   var filtered = {};
-   foreach(keys(obj), function doFilter(keyName) {
-     if (test(keyName) !== true) {
-       filtered[keyName] = obj[keyName];
-     }
-   });
-   return filtered;
- };
- /***/ }),
- /* 34 */
- /***/ (function(module, exports, __webpack_require__) {
- module.exports = createPlacesClient;
- var buildSearchMethod = __webpack_require__(12);
- function createPlacesClient(algoliasearch) {
-   return function places(appID, apiKey, opts) {
-     var cloneDeep = __webpack_require__(4);
-     opts = opts && cloneDeep(opts) || {};
-     opts.hosts = opts.hosts || [
-       'places-dsn.algolia.net',
-       'places-1.algolianet.com',
-       'places-2.algolianet.com',
-       'places-3.algolianet.com'
-     ];
-     // allow initPlaces() no arguments => community rate limited
-     if (arguments.length === 0 || typeof appID === 'object' || appID === undefined) {
-       appID = '';
-       apiKey = '';
-       opts._allowEmptyCredentials = true;
-     }
-     var client = algoliasearch(appID, apiKey, opts);
-     var index = client.initIndex('places');
-     index.search = buildSearchMethod('query', '/1/places/query');
-     return index;
-   };
- }
- /***/ }),
- /* 35 */
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(global) {var debug = __webpack_require__(6)('algoliasearch:src/hostIndexState.js');
- var localStorageNamespace = 'algoliasearch-client-js';
- var store;
- var moduleStore = {
-   state: {},
-   set: function(key, data) {
-     this.state[key] = data;
-     return this.state[key];
-   },
-   get: function(key) {
-     return this.state[key] || null;
-   }
- };
- var localStorageStore = {
-   set: function(key, data) {
-     moduleStore.set(key, data); // always replicate localStorageStore to moduleStore in case of failure
-     try {
-       var namespace = JSON.parse(global.localStorage[localStorageNamespace]);
-       namespace[key] = data;
-       global.localStorage[localStorageNamespace] = JSON.stringify(namespace);
-       return namespace[key];
-     } catch (e) {
-       return localStorageFailure(key, e);
-     }
-   },
-   get: function(key) {
-     try {
-       return JSON.parse(global.localStorage[localStorageNamespace])[key] || null;
-     } catch (e) {
-       return localStorageFailure(key, e);
-     }
-   }
- };
- function localStorageFailure(key, e) {
-   debug('localStorage failed with', e);
-   cleanup();
-   store = moduleStore;
-   return store.get(key);
- }
- store = supportsLocalStorage() ? localStorageStore : moduleStore;
- module.exports = {
-   get: getOrSet,
-   set: getOrSet,
-   supportsLocalStorage: supportsLocalStorage
- };
- function getOrSet(key, data) {
-   if (arguments.length === 1) {
-     return store.get(key);
-   }
-   return store.set(key, data);
- }
- function supportsLocalStorage() {
-   try {
-     if ('localStorage' in global &&
-       global.localStorage !== null) {
-       if (!global.localStorage[localStorageNamespace]) {
-         // actual creation of the namespace
-         global.localStorage.setItem(localStorageNamespace, JSON.stringify({}));
-       }
-       return true;
-     }
-     return false;
-   } catch (_) {
-     return false;
-   }
- }
- // In case of any error on localStorage, we clean our own namespace, this should handle
- // quota errors when a lot of keys + data are used
- function cleanup() {
-   try {
-     global.localStorage.removeItem(localStorageNamespace);
-   } catch (_) {
-     // nothing to do
-   }
- }
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))
- /***/ }),
- /* 36 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- module.exports = '3.22.1';
- /***/ }),
- /* 37 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- module.exports = __webpack_require__(45);
- /***/ }),
- /* 38 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var datasetKey = 'aaDataset';
- var valueKey = 'aaValue';
- var datumKey = 'aaDatum';
- var _ = __webpack_require__(0);
- var DOM = __webpack_require__(1);
- var html = __webpack_require__(14);
- var css = __webpack_require__(8);
- var EventEmitter = __webpack_require__(9);
- // constructor
- // -----------
- function Dataset(o) {
-   o = o || {};
-   o.templates = o.templates || {};
-   if (!o.source) {
-     _.error('missing source');
-   }
-   if (o.name && !isValidName(o.name)) {
-     _.error('invalid dataset name: ' + o.name);
-   }
-   // tracks the last query the dataset was updated for
-   this.query = null;
-   this._isEmpty = true;
-   this.highlight = !!o.highlight;
-   this.name = typeof o.name === 'undefined' || o.name === null ? _.getUniqueId() : o.name;
-   this.source = o.source;
-   this.displayFn = getDisplayFn(o.display || o.displayKey);
-   this.templates = getTemplates(o.templates, this.displayFn);
-   this.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});
-   this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});
-   this.cssClasses.prefix =
-     o.cssClasses.formattedPrefix || _.formatPrefix(this.cssClasses.prefix, this.cssClasses.noPrefix);
-   var clazz = _.className(this.cssClasses.prefix, this.cssClasses.dataset);
-   this.$el = o.$menu && o.$menu.find(clazz + '-' + this.name).length > 0 ?
-     DOM.element(o.$menu.find(clazz + '-' + this.name)[0]) :
-     DOM.element(
-       html.dataset.replace('%CLASS%', this.name)
-         .replace('%PREFIX%', this.cssClasses.prefix)
-         .replace('%DATASET%', this.cssClasses.dataset)
-     );
-   this.$menu = o.$menu;
- }
- // static methods
- // --------------
- Dataset.extractDatasetName = function extractDatasetName(el) {
-   return DOM.element(el).data(datasetKey);
- };
- Dataset.extractValue = function extractValue(el) {
-   return DOM.element(el).data(valueKey);
- };
- Dataset.extractDatum = function extractDatum(el) {
-   var datum = DOM.element(el).data(datumKey);
-   if (typeof datum === 'string') {
-     // Zepto has an automatic deserialization of the
-     // JSON encoded data attribute
-     datum = JSON.parse(datum);
-   }
-   return datum;
- };
- // instance methods
- // ----------------
- _.mixin(Dataset.prototype, EventEmitter, {
-   // ### private
-   _render: function render(query, suggestions) {
-     if (!this.$el) {
-       return;
-     }
-     var that = this;
-     var hasSuggestions;
-     var renderArgs = [].slice.call(arguments, 2);
-     this.$el.empty();
-     hasSuggestions = suggestions && suggestions.length;
-     this._isEmpty = !hasSuggestions;
-     if (!hasSuggestions && this.templates.empty) {
-       this.$el
-         .html(getEmptyHtml.apply(this, renderArgs))
-         .prepend(that.templates.header ? getHeaderHtml.apply(this, renderArgs) : null)
-         .append(that.templates.footer ? getFooterHtml.apply(this, renderArgs) : null);
-     } else if (hasSuggestions) {
-       this.$el
-         .html(getSuggestionsHtml.apply(this, renderArgs))
-         .prepend(that.templates.header ? getHeaderHtml.apply(this, renderArgs) : null)
-         .append(that.templates.footer ? getFooterHtml.apply(this, renderArgs) : null);
-     }
-     if (this.$menu) {
-       this.$menu.addClass(
-         this.cssClasses.prefix + (hasSuggestions ? 'with' : 'without') + '-' + this.name
-       ).removeClass(
-         this.cssClasses.prefix + (hasSuggestions ? 'without' : 'with') + '-' + this.name
-       );
-     }
-     this.trigger('rendered', query);
-     function getEmptyHtml() {
-       var args = [].slice.call(arguments, 0);
-       args = [{query: query, isEmpty: true}].concat(args);
-       return that.templates.empty.apply(this, args);
-     }
-     function getSuggestionsHtml() {
-       var args = [].slice.call(arguments, 0);
-       var $suggestions;
-       var nodes;
-       var self = this;
-       var suggestionsHtml = html.suggestions.
-         replace('%PREFIX%', this.cssClasses.prefix).
-         replace('%SUGGESTIONS%', this.cssClasses.suggestions);
-       $suggestions = DOM
-         .element(suggestionsHtml)
-         .css(this.css.suggestions);
-       // jQuery#append doesn't support arrays as the first argument
-       // until version 1.8, see http://bugs.jquery.com/ticket/11231
-       nodes = _.map(suggestions, getSuggestionNode);
-       $suggestions.append.apply($suggestions, nodes);
-       return $suggestions;
-       function getSuggestionNode(suggestion) {
-         var $el;
-         var suggestionHtml = html.suggestion.
-           replace('%PREFIX%', self.cssClasses.prefix).
-           replace('%SUGGESTION%', self.cssClasses.suggestion);
-         $el = DOM.element(suggestionHtml)
-           .attr({
-             role: 'option',
-             id: ['option', Math.floor(Math.random() * 100000000)].join('-')
-           })
-           .append(that.templates.suggestion.apply(this, [suggestion].concat(args)));
-         $el.data(datasetKey, that.name);
-         $el.data(valueKey, that.displayFn(suggestion) || undefined); // this led to undefined return value
-         $el.data(datumKey, JSON.stringify(suggestion));
-         $el.children().each(function() { DOM.element(this).css(self.css.suggestionChild); });
-         return $el;
-       }
-     }
-     function getHeaderHtml() {
-       var args = [].slice.call(arguments, 0);
-       args = [{query: query, isEmpty: !hasSuggestions}].concat(args);
-       return that.templates.header.apply(this, args);
-     }
-     function getFooterHtml() {
-       var args = [].slice.call(arguments, 0);
-       args = [{query: query, isEmpty: !hasSuggestions}].concat(args);
-       return that.templates.footer.apply(this, args);
-     }
-   },
-   // ### public
-   getRoot: function getRoot() {
-     return this.$el;
-   },
-   update: function update(query) {
-     var that = this;
-     this.query = query;
-     this.canceled = false;
-     this.source(query, render);
-     function render(suggestions) {
-       // if the update has been canceled or if the query has changed
-       // do not render the suggestions as they've become outdated
-       if (!that.canceled && query === that.query) {
-         // concat all the other arguments that could have been passed
-         // to the render function, and forward them to _render
-         var args = [].slice.call(arguments, 1);
-         args = [query, suggestions].concat(args);
-         that._render.apply(that, args);
-       }
-     }
-   },
-   cancel: function cancel() {
-     this.canceled = true;
-   },
-   clear: function clear() {
-     this.cancel();
-     this.$el.empty();
-     this.trigger('rendered', '');
-   },
-   isEmpty: function isEmpty() {
-     return this._isEmpty;
-   },
-   destroy: function destroy() {
-     this.$el = null;
-   }
- });
- // helper functions
- // ----------------
- function getDisplayFn(display) {
-   display = display || 'value';
-   return _.isFunction(display) ? display : displayFn;
-   function displayFn(obj) {
-     return obj[display];
-   }
- }
- function getTemplates(templates, displayFn) {
-   return {
-     empty: templates.empty && _.templatify(templates.empty),
-     header: templates.header && _.templatify(templates.header),
-     footer: templates.footer && _.templatify(templates.footer),
-     suggestion: templates.suggestion || suggestionTemplate
-   };
-   function suggestionTemplate(context) {
-     return '<p>' + displayFn(context) + '</p>';
-   }
- }
- function isValidName(str) {
-   // dashes, underscores, letters, and numbers
-   return (/^[_a-zA-Z0-9-]+$/).test(str);
- }
- module.exports = Dataset;
- /***/ }),
- /* 39 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var _ = __webpack_require__(0);
- var DOM = __webpack_require__(1);
- var EventEmitter = __webpack_require__(9);
- var Dataset = __webpack_require__(38);
- var css = __webpack_require__(8);
- // constructor
- // -----------
- function Dropdown(o) {
-   var that = this;
-   var onSuggestionClick;
-   var onSuggestionMouseEnter;
-   var onSuggestionMouseLeave;
-   o = o || {};
-   if (!o.menu) {
-     _.error('menu is required');
-   }
-   if (!_.isArray(o.datasets) && !_.isObject(o.datasets)) {
-     _.error('1 or more datasets required');
-   }
-   if (!o.datasets) {
-     _.error('datasets is required');
-   }
-   this.isOpen = false;
-   this.isEmpty = true;
-   this.minLength = o.minLength || 0;
-   this.templates = {};
-   this.appendTo = o.appendTo || false;
-   this.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});
-   this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});
-   this.cssClasses.prefix =
-     o.cssClasses.formattedPrefix || _.formatPrefix(this.cssClasses.prefix, this.cssClasses.noPrefix);
-   // bound functions
-   onSuggestionClick = _.bind(this._onSuggestionClick, this);
-   onSuggestionMouseEnter = _.bind(this._onSuggestionMouseEnter, this);
-   onSuggestionMouseLeave = _.bind(this._onSuggestionMouseLeave, this);
-   var cssClass = _.className(this.cssClasses.prefix, this.cssClasses.suggestion);
-   this.$menu = DOM.element(o.menu)
-     .on('click.aa', cssClass, onSuggestionClick)
-     .on('mouseenter.aa', cssClass, onSuggestionMouseEnter)
-     .on('mouseleave.aa', cssClass, onSuggestionMouseLeave);
-   this.$container = o.appendTo ? o.wrapper : this.$menu;
-   if (o.templates && o.templates.header) {
-     this.templates.header = _.templatify(o.templates.header);
-     this.$menu.prepend(this.templates.header());
-   }
-   if (o.templates && o.templates.empty) {
-     this.templates.empty = _.templatify(o.templates.empty);
-     this.$empty = DOM.element('<div class="' +
-       _.className(this.cssClasses.prefix, this.cssClasses.empty, true) + '">' +
-       '</div>');
-     this.$menu.append(this.$empty);
-   }
-   this.datasets = _.map(o.datasets, function(oDataset) {
-     return initializeDataset(that.$menu, oDataset, o.cssClasses);
-   });
-   _.each(this.datasets, function(dataset) {
-     var root = dataset.getRoot();
-     if (root && root.parent().length === 0) {
-       that.$menu.append(root);
-     }
-     dataset.onSync('rendered', that._onRendered, that);
-   });
-   if (o.templates && o.templates.footer) {
-     this.templates.footer = _.templatify(o.templates.footer);
-     this.$menu.append(this.templates.footer());
-   }
-   var self = this;
-   DOM.element(window).resize(function() {
-     self._redraw();
-   });
- }
- // instance methods
- // ----------------
- _.mixin(Dropdown.prototype, EventEmitter, {
-   // ### private
-   _onSuggestionClick: function onSuggestionClick($e) {
-     this.trigger('suggestionClicked', DOM.element($e.currentTarget));
-   },
-   _onSuggestionMouseEnter: function onSuggestionMouseEnter($e) {
-     var elt = DOM.element($e.currentTarget);
-     if (elt.hasClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))) {
-       // we're already on the cursor
-       // => we're probably entering it again after leaving it for a nested div
-       return;
-     }
-     this._removeCursor();
-     this._setCursor(elt, false);
-   },
-   _onSuggestionMouseLeave: function onSuggestionMouseLeave($e) {
-     // $e.relatedTarget is the `EventTarget` the pointing device entered to
-     if ($e.relatedTarget) {
-       var elt = DOM.element($e.relatedTarget);
-       if (elt.closest('.' + _.className(this.cssClasses.prefix, this.cssClasses.cursor, true)).length > 0) {
-         // our father is a cursor
-         // => it means we're just leaving the suggestion for a nested div
-         return;
-       }
-     }
-     this._removeCursor();
-     this.trigger('cursorRemoved');
-   },
-   _onRendered: function onRendered(e, query) {
-     this.isEmpty = _.every(this.datasets, isDatasetEmpty);
-     if (this.isEmpty) {
-       if (query.length >= this.minLength) {
-         this.trigger('empty');
-       }
-       if (this.$empty) {
-         if (query.length < this.minLength) {
-           this._hide();
-         } else {
-           var html = this.templates.empty({
-             query: this.datasets[0] && this.datasets[0].query
-           });
-           this.$empty.html(html);
-           this._show();
-         }
-       } else if (_.any(this.datasets, hasEmptyTemplate)) {
-         if (query.length < this.minLength) {
-           this._hide();
-         } else {
-           this._show();
-         }
-       } else {
-         this._hide();
-       }
-     } else if (this.isOpen) {
-       if (this.$empty) {
-         this.$empty.empty();
-       }
-       if (query.length >= this.minLength) {
-         this._show();
-       } else {
-         this._hide();
-       }
-     }
-     this.trigger('datasetRendered');
-     function isDatasetEmpty(dataset) {
-       return dataset.isEmpty();
-     }
-     function hasEmptyTemplate(dataset) {
-       return dataset.templates && dataset.templates.empty;
-     }
-   },
-   _hide: function() {
-     this.$container.hide();
-   },
-   _show: function() {
-     // can't use jQuery#show because $menu is a span element we want
-     // display: block; not dislay: inline;
-     this.$container.css('display', 'block');
-     this._redraw();
-     this.trigger('shown');
-   },
-   _redraw: function redraw() {
-     if (!this.isOpen || !this.appendTo) return;
-     this.trigger('redrawn');
-   },
-   _getSuggestions: function getSuggestions() {
-     return this.$menu.find(_.className(this.cssClasses.prefix, this.cssClasses.suggestion));
-   },
-   _getCursor: function getCursor() {
-     return this.$menu.find(_.className(this.cssClasses.prefix, this.cssClasses.cursor)).first();
-   },
-   _setCursor: function setCursor($el, updateInput) {
-     $el.first()
-       .addClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))
-       .attr('aria-selected', 'true');
-     this.trigger('cursorMoved', updateInput);
-   },
-   _removeCursor: function removeCursor() {
-     this._getCursor()
-       .removeClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))
-       .removeAttr('aria-selected');
-   },
-   _moveCursor: function moveCursor(increment) {
-     var $suggestions;
-     var $oldCursor;
-     var newCursorIndex;
-     var $newCursor;
-     if (!this.isOpen) {
-       return;
-     }
-     $oldCursor = this._getCursor();
-     $suggestions = this._getSuggestions();
-     this._removeCursor();
-     // shifting before and after modulo to deal with -1 index
-     newCursorIndex = $suggestions.index($oldCursor) + increment;
-     newCursorIndex = (newCursorIndex + 1) % ($suggestions.length + 1) - 1;
-     if (newCursorIndex === -1) {
-       this.trigger('cursorRemoved');
-       return;
-     } else if (newCursorIndex < -1) {
-       newCursorIndex = $suggestions.length - 1;
-     }
-     this._setCursor($newCursor = $suggestions.eq(newCursorIndex), true);
-     // in the case of scrollable overflow
-     // make sure the cursor is visible in the menu
-     this._ensureVisible($newCursor);
-   },
-   _ensureVisible: function ensureVisible($el) {
-     var elTop;
-     var elBottom;
-     var menuScrollTop;
-     var menuHeight;
-     elTop = $el.position().top;
-     elBottom = elTop + $el.height() +
-       parseInt($el.css('margin-top'), 10) +
-       parseInt($el.css('margin-bottom'), 10);
-     menuScrollTop = this.$menu.scrollTop();
-     menuHeight = this.$menu.height() +
-       parseInt(this.$menu.css('paddingTop'), 10) +
-       parseInt(this.$menu.css('paddingBottom'), 10);
-     if (elTop < 0) {
-       this.$menu.scrollTop(menuScrollTop + elTop);
-     } else if (menuHeight < elBottom) {
-       this.$menu.scrollTop(menuScrollTop + (elBottom - menuHeight));
-     }
-   },
-   // ### public
-   close: function close() {
-     if (this.isOpen) {
-       this.isOpen = false;
-       this._removeCursor();
-       this._hide();
-       this.trigger('closed');
-     }
-   },
-   open: function open() {
-     if (!this.isOpen) {
-       this.isOpen = true;
-       if (!this.isEmpty) {
-         this._show();
-       }
-       this.trigger('opened');
-     }
-   },
-   setLanguageDirection: function setLanguageDirection(dir) {
-     this.$menu.css(dir === 'ltr' ? this.css.ltr : this.css.rtl);
-   },
-   moveCursorUp: function moveCursorUp() {
-     this._moveCursor(-1);
-   },
-   moveCursorDown: function moveCursorDown() {
-     this._moveCursor(+1);
-   },
-   getDatumForSuggestion: function getDatumForSuggestion($el) {
-     var datum = null;
-     if ($el.length) {
-       datum = {
-         raw: Dataset.extractDatum($el),
-         value: Dataset.extractValue($el),
-         datasetName: Dataset.extractDatasetName($el)
-       };
-     }
-     return datum;
-   },
-   getCurrentCursor: function getCurrentCursor() {
-     return this._getCursor().first();
-   },
-   getDatumForCursor: function getDatumForCursor() {
-     return this.getDatumForSuggestion(this._getCursor().first());
-   },
-   getDatumForTopSuggestion: function getDatumForTopSuggestion() {
-     return this.getDatumForSuggestion(this._getSuggestions().first());
-   },
-   cursorTopSuggestion: function cursorTopSuggestion() {
-     this._setCursor(this._getSuggestions().first(), false);
-   },
-   update: function update(query) {
-     _.each(this.datasets, updateDataset);
-     function updateDataset(dataset) {
-       dataset.update(query);
-     }
-   },
-   empty: function empty() {
-     _.each(this.datasets, clearDataset);
-     this.isEmpty = true;
-     function clearDataset(dataset) {
-       dataset.clear();
-     }
-   },
-   isVisible: function isVisible() {
-     return this.isOpen && !this.isEmpty;
-   },
-   destroy: function destroy() {
-     this.$menu.off('.aa');
-     this.$menu = null;
-     _.each(this.datasets, destroyDataset);
-     function destroyDataset(dataset) {
-       dataset.destroy();
-     }
-   }
- });
- // helper functions
- // ----------------
- Dropdown.Dataset = Dataset;
- function initializeDataset($menu, oDataset, cssClasses) {
-   return new Dropdown.Dataset(_.mixin({$menu: $menu, cssClasses: cssClasses}, oDataset));
- }
- module.exports = Dropdown;
- /***/ }),
- /* 40 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var specialKeyCodeMap;
- specialKeyCodeMap = {
-   9: 'tab',
-   27: 'esc',
-   37: 'left',
-   39: 'right',
-   13: 'enter',
-   38: 'up',
-   40: 'down'
- };
- var _ = __webpack_require__(0);
- var DOM = __webpack_require__(1);
- var EventEmitter = __webpack_require__(9);
- // constructor
- // -----------
- function Input(o) {
-   var that = this;
-   var onBlur;
-   var onFocus;
-   var onKeydown;
-   var onInput;
-   o = o || {};
-   if (!o.input) {
-     _.error('input is missing');
-   }
-   // bound functions
-   onBlur = _.bind(this._onBlur, this);
-   onFocus = _.bind(this._onFocus, this);
-   onKeydown = _.bind(this._onKeydown, this);
-   onInput = _.bind(this._onInput, this);
-   this.$hint = DOM.element(o.hint);
-   this.$input = DOM.element(o.input)
-     .on('blur.aa', onBlur)
-     .on('focus.aa', onFocus)
-     .on('keydown.aa', onKeydown);
-   // if no hint, noop all the hint related functions
-   if (this.$hint.length === 0) {
-     this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;
-   }
-   // ie7 and ie8 don't support the input event
-   // ie9 doesn't fire the input event when characters are removed
-   // not sure if ie10 is compatible
-   if (!_.isMsie()) {
-     this.$input.on('input.aa', onInput);
-   } else {
-     this.$input.on('keydown.aa keypress.aa cut.aa paste.aa', function($e) {
-       // if a special key triggered this, ignore it
-       if (specialKeyCodeMap[$e.which || $e.keyCode]) {
-         return;
-       }
-       // give the browser a chance to update the value of the input
-       // before checking to see if the query changed
-       _.defer(_.bind(that._onInput, that, $e));
-     });
-   }
-   // the query defaults to whatever the value of the input is
-   // on initialization, it'll most likely be an empty string
-   this.query = this.$input.val();
-   // helps with calculating the width of the input's value
-   this.$overflowHelper = buildOverflowHelper(this.$input);
- }
- // static methods
- // --------------
- Input.normalizeQuery = function(str) {
-   // strips leading whitespace and condenses all whitespace
-   return (str || '').replace(/^\s*/g, '').replace(/\s{2,}/g, ' ');
- };
- // instance methods
- // ----------------
- _.mixin(Input.prototype, EventEmitter, {
-   // ### private
-   _onBlur: function onBlur() {
-     this.resetInputValue();
-     this.$input.removeAttr('aria-activedescendant');
-     this.trigger('blurred');
-   },
-   _onFocus: function onFocus() {
-     this.trigger('focused');
-   },
-   _onKeydown: function onKeydown($e) {
-     // which is normalized and consistent (but not for ie)
-     var keyName = specialKeyCodeMap[$e.which || $e.keyCode];
-     this._managePreventDefault(keyName, $e);
-     if (keyName && this._shouldTrigger(keyName, $e)) {
-       this.trigger(keyName + 'Keyed', $e);
-     }
-   },
-   _onInput: function onInput() {
-     this._checkInputValue();
-   },
-   _managePreventDefault: function managePreventDefault(keyName, $e) {
-     var preventDefault;
-     var hintValue;
-     var inputValue;
-     switch (keyName) {
-     case 'tab':
-       hintValue = this.getHint();
-       inputValue = this.getInputValue();
-       preventDefault = hintValue &&
-         hintValue !== inputValue &&
-         !withModifier($e);
-       break;
-     case 'up':
-     case 'down':
-       preventDefault = !withModifier($e);
-       break;
-     default:
-       preventDefault = false;
-     }
-     if (preventDefault) {
-       $e.preventDefault();
-     }
-   },
-   _shouldTrigger: function shouldTrigger(keyName, $e) {
-     var trigger;
-     switch (keyName) {
-     case 'tab':
-       trigger = !withModifier($e);
-       break;
-     default:
-       trigger = true;
-     }
-     return trigger;
-   },
-   _checkInputValue: function checkInputValue() {
-     var inputValue;
-     var areEquivalent;
-     var hasDifferentWhitespace;
-     inputValue = this.getInputValue();
-     areEquivalent = areQueriesEquivalent(inputValue, this.query);
-     hasDifferentWhitespace = areEquivalent && this.query ?
-       this.query.length !== inputValue.length : false;
-     this.query = inputValue;
-     if (!areEquivalent) {
-       this.trigger('queryChanged', this.query);
-     } else if (hasDifferentWhitespace) {
-       this.trigger('whitespaceChanged', this.query);
-     }
-   },
-   // ### public
-   focus: function focus() {
-     this.$input.focus();
-   },
-   blur: function blur() {
-     this.$input.blur();
-   },
-   getQuery: function getQuery() {
-     return this.query;
-   },
-   setQuery: function setQuery(query) {
-     this.query = query;
-   },
-   getInputValue: function getInputValue() {
-     return this.$input.val();
-   },
-   setInputValue: function setInputValue(value, silent) {
-     if (typeof value === 'undefined') {
-       value = this.query;
-     }
-     this.$input.val(value);
-     // silent prevents any additional events from being triggered
-     if (silent) {
-       this.clearHint();
-     } else {
-       this._checkInputValue();
-     }
-   },
-   expand: function expand() {
-     this.$input.attr('aria-expanded', 'true');
-   },
-   collapse: function collapse() {
-     this.$input.attr('aria-expanded', 'false');
-   },
-   setActiveDescendant: function setActiveDescendant(activedescendantId) {
-     this.$input.attr('aria-activedescendant', activedescendantId);
-   },
-   removeActiveDescendant: function removeActiveDescendant() {
-     this.$input.removeAttr('aria-activedescendant');
-   },
-   resetInputValue: function resetInputValue() {
-     this.setInputValue(this.query, true);
-   },
-   getHint: function getHint() {
-     return this.$hint.val();
-   },
-   setHint: function setHint(value) {
-     this.$hint.val(value);
-   },
-   clearHint: function clearHint() {
-     this.setHint('');
-   },
-   clearHintIfInvalid: function clearHintIfInvalid() {
-     var val;
-     var hint;
-     var valIsPrefixOfHint;
-     var isValid;
-     val = this.getInputValue();
-     hint = this.getHint();
-     valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;
-     isValid = val !== '' && valIsPrefixOfHint && !this.hasOverflow();
-     if (!isValid) {
-       this.clearHint();
-     }
-   },
-   getLanguageDirection: function getLanguageDirection() {
-     return (this.$input.css('direction') || 'ltr').toLowerCase();
-   },
-   hasOverflow: function hasOverflow() {
-     // 2 is arbitrary, just picking a small number to handle edge cases
-     var constraint = this.$input.width() - 2;
-     this.$overflowHelper.text(this.getInputValue());
-     return this.$overflowHelper.width() >= constraint;
-   },
-   isCursorAtEnd: function() {
-     var valueLength;
-     var selectionStart;
-     var range;
-     valueLength = this.$input.val().length;
-     selectionStart = this.$input[0].selectionStart;
-     if (_.isNumber(selectionStart)) {
-       return selectionStart === valueLength;
-     } else if (document.selection) {
-       // NOTE: this won't work unless the input has focus, the good news
-       // is this code should only get called when the input has focus
-       range = document.selection.createRange();
-       range.moveStart('character', -valueLength);
-       return valueLength === range.text.length;
-     }
-     return true;
-   },
-   destroy: function destroy() {
-     this.$hint.off('.aa');
-     this.$input.off('.aa');
-     this.$hint = this.$input = this.$overflowHelper = null;
-   }
- });
- // helper functions
- // ----------------
- function buildOverflowHelper($input) {
-   return DOM.element('<pre aria-hidden="true"></pre>')
-     .css({
-       // position helper off-screen
-       position: 'absolute',
-       visibility: 'hidden',
-       // avoid line breaks and whitespace collapsing
-       whiteSpace: 'pre',
-       // use same font css as input to calculate accurate width
-       fontFamily: $input.css('font-family'),
-       fontSize: $input.css('font-size'),
-       fontStyle: $input.css('font-style'),
-       fontVariant: $input.css('font-variant'),
-       fontWeight: $input.css('font-weight'),
-       wordSpacing: $input.css('word-spacing'),
-       letterSpacing: $input.css('letter-spacing'),
-       textIndent: $input.css('text-indent'),
-       textRendering: $input.css('text-rendering'),
-       textTransform: $input.css('text-transform')
-     })
-     .insertAfter($input);
- }
- function areQueriesEquivalent(a, b) {
-   return Input.normalizeQuery(a) === Input.normalizeQuery(b);
- }
- function withModifier($e) {
-   return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;
- }
- module.exports = Input;
- /***/ }),
- /* 41 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var attrsKey = 'aaAttrs';
- var _ = __webpack_require__(0);
- var DOM = __webpack_require__(1);
- var EventBus = __webpack_require__(13);
- var Input = __webpack_require__(40);
- var Dropdown = __webpack_require__(39);
- var html = __webpack_require__(14);
- var css = __webpack_require__(8);
- // constructor
- // -----------
- // THOUGHT: what if datasets could dynamically be added/removed?
- function Typeahead(o) {
-   var $menu;
-   var $hint;
-   o = o || {};
-   if (!o.input) {
-     _.error('missing input');
-   }
-   this.isActivated = false;
-   this.debug = !!o.debug;
-   this.autoselect = !!o.autoselect;
-   this.autoselectOnBlur = !!o.autoselectOnBlur;
-   this.openOnFocus = !!o.openOnFocus;
-   this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;
-   this.autoWidth = (o.autoWidth === undefined) ? true : !!o.autoWidth;
-   o.hint = !!o.hint;
-   if (o.hint && o.appendTo) {
-     throw new Error('[autocomplete.js] hint and appendTo options can\'t be used at the same time');
-   }
-   this.css = o.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});
-   this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});
-   this.cssClasses.prefix =
-     o.cssClasses.formattedPrefix = _.formatPrefix(this.cssClasses.prefix, this.cssClasses.noPrefix);
-   this.listboxId = o.listboxId = [this.cssClasses.root, 'listbox', _.getUniqueId()].join('-');
-   var domElts = buildDom(o);
-   this.$node = domElts.wrapper;
-   var $input = this.$input = domElts.input;
-   $menu = domElts.menu;
-   $hint = domElts.hint;
-   if (o.dropdownMenuContainer) {
-     DOM.element(o.dropdownMenuContainer)
-       .css('position', 'relative') // ensure the container has a relative position
-       .append($menu.css('top', '0')); // override the top: 100%
-   }
-   // #705: if there's scrollable overflow, ie doesn't support
-   // blur cancellations when the scrollbar is clicked
-   //
-   // #351: preventDefault won't cancel blurs in ie <= 8
-   $input.on('blur.aa', function($e) {
-     var active = document.activeElement;
-     if (_.isMsie() && ($menu[0] === active || $menu[0].contains(active))) {
-       $e.preventDefault();
-       // stop immediate in order to prevent Input#_onBlur from
-       // getting exectued
-       $e.stopImmediatePropagation();
-       _.defer(function() { $input.focus(); });
-     }
-   });
-   // #351: prevents input blur due to clicks within dropdown menu
-   $menu.on('mousedown.aa', function($e) { $e.preventDefault(); });
-   this.eventBus = o.eventBus || new EventBus({el: $input});
-   this.dropdown = new Typeahead.Dropdown({
-     appendTo: o.appendTo,
-     wrapper: this.$node,
-     menu: $menu,
-     datasets: o.datasets,
-     templates: o.templates,
-     cssClasses: o.cssClasses,
-     minLength: this.minLength
-   })
-     .onSync('suggestionClicked', this._onSuggestionClicked, this)
-     .onSync('cursorMoved', this._onCursorMoved, this)
-     .onSync('cursorRemoved', this._onCursorRemoved, this)
-     .onSync('opened', this._onOpened, this)
-     .onSync('closed', this._onClosed, this)
-     .onSync('shown', this._onShown, this)
-     .onSync('empty', this._onEmpty, this)
-     .onSync('redrawn', this._onRedrawn, this)
-     .onAsync('datasetRendered', this._onDatasetRendered, this);
-   this.input = new Typeahead.Input({input: $input, hint: $hint})
-     .onSync('focused', this._onFocused, this)
-     .onSync('blurred', this._onBlurred, this)
-     .onSync('enterKeyed', this._onEnterKeyed, this)
-     .onSync('tabKeyed', this._onTabKeyed, this)
-     .onSync('escKeyed', this._onEscKeyed, this)
-     .onSync('upKeyed', this._onUpKeyed, this)
-     .onSync('downKeyed', this._onDownKeyed, this)
-     .onSync('leftKeyed', this._onLeftKeyed, this)
-     .onSync('rightKeyed', this._onRightKeyed, this)
-     .onSync('queryChanged', this._onQueryChanged, this)
-     .onSync('whitespaceChanged', this._onWhitespaceChanged, this);
-   this._bindKeyboardShortcuts(o);
-   this._setLanguageDirection();
- }
- // instance methods
- // ----------------
- _.mixin(Typeahead.prototype, {
-   // ### private
-   _bindKeyboardShortcuts: function(options) {
-     if (!options.keyboardShortcuts) {
-       return;
-     }
-     var $input = this.$input;
-     var keyboardShortcuts = [];
-     _.each(options.keyboardShortcuts, function(key) {
-       if (typeof key === 'string') {
-         key = key.toUpperCase().charCodeAt(0);
-       }
-       keyboardShortcuts.push(key);
-     });
-     DOM.element(document).keydown(function(event) {
-       var elt = (event.target || event.srcElement);
-       var tagName = elt.tagName;
-       if (elt.isContentEditable || tagName === 'INPUT' || tagName === 'SELECT' || tagName === 'TEXTAREA') {
-         // already in an input
-         return;
-       }
-       var which = event.which || event.keyCode;
-       if (keyboardShortcuts.indexOf(which) === -1) {
-         // not the right shortcut
-         return;
-       }
-       $input.focus();
-       event.stopPropagation();
-       event.preventDefault();
-     });
-   },
-   _onSuggestionClicked: function onSuggestionClicked(type, $el) {
-     var datum;
-     if (datum = this.dropdown.getDatumForSuggestion($el)) {
-       this._select(datum);
-     }
-   },
-   _onCursorMoved: function onCursorMoved(event, updateInput) {
-     var datum = this.dropdown.getDatumForCursor();
-     var currentCursorId = this.dropdown.getCurrentCursor().attr('id');
-     this.input.setActiveDescendant(currentCursorId);
-     if (datum) {
-       if (updateInput) {
-         this.input.setInputValue(datum.value, true);
-       }
-       this.eventBus.trigger('cursorchanged', datum.raw, datum.datasetName);
-     }
-   },
-   _onCursorRemoved: function onCursorRemoved() {
-     this.input.resetInputValue();
-     this._updateHint();
-     this.eventBus.trigger('cursorremoved');
-   },
-   _onDatasetRendered: function onDatasetRendered() {
-     this._updateHint();
-     this.eventBus.trigger('updated');
-   },
-   _onOpened: function onOpened() {
-     this._updateHint();
-     this.input.expand();
-     this.eventBus.trigger('opened');
-   },
-   _onEmpty: function onEmpty() {
-     this.eventBus.trigger('empty');
-   },
-   _onRedrawn: function onRedrawn() {
-     this.$node.css('top', 0 + 'px');
-     this.$node.css('left', 0 + 'px');
-     var inputRect = this.$input[0].getBoundingClientRect();
-     if (this.autoWidth) {
-       this.$node.css('width', inputRect.width + 'px');
-     }
-     var wrapperRect = this.$node[0].getBoundingClientRect();
-     var top = inputRect.bottom - wrapperRect.top;
-     this.$node.css('top', top + 'px');
-     var left = inputRect.left - wrapperRect.left;
-     this.$node.css('left', left + 'px');
-     this.eventBus.trigger('redrawn');
-   },
-   _onShown: function onShown() {
-     this.eventBus.trigger('shown');
-     if (this.autoselect) {
-       this.dropdown.cursorTopSuggestion();
-     }
-   },
-   _onClosed: function onClosed() {
-     this.input.clearHint();
-     this.input.removeActiveDescendant();
-     this.input.collapse();
-     this.eventBus.trigger('closed');
-   },
-   _onFocused: function onFocused() {
-     this.isActivated = true;
-     if (this.openOnFocus) {
-       var query = this.input.getQuery();
-       if (query.length >= this.minLength) {
-         this.dropdown.update(query);
-       } else {
-         this.dropdown.empty();
-       }
-       this.dropdown.open();
-     }
-   },
-   _onBlurred: function onBlurred() {
-     var cursorDatum;
-     var topSuggestionDatum;
-     cursorDatum = this.dropdown.getDatumForCursor();
-     topSuggestionDatum = this.dropdown.getDatumForTopSuggestion();
-     if (!this.debug) {
-       if (this.autoselectOnBlur && cursorDatum) {
-         this._select(cursorDatum);
-       } else if (this.autoselectOnBlur && topSuggestionDatum) {
-         this._select(topSuggestionDatum);
-       } else {
-         this.isActivated = false;
-         this.dropdown.empty();
-         this.dropdown.close();
-       }
-     }
-   },
-   _onEnterKeyed: function onEnterKeyed(type, $e) {
-     var cursorDatum;
-     var topSuggestionDatum;
-     cursorDatum = this.dropdown.getDatumForCursor();
-     topSuggestionDatum = this.dropdown.getDatumForTopSuggestion();
-     if (cursorDatum) {
-       this._select(cursorDatum);
-       $e.preventDefault();
-     } else if (this.autoselect && topSuggestionDatum) {
-       this._select(topSuggestionDatum);
-       $e.preventDefault();
-     }
-   },
-   _onTabKeyed: function onTabKeyed(type, $e) {
-     var datum;
-     if (datum = this.dropdown.getDatumForCursor()) {
-       this._select(datum);
-       $e.preventDefault();
-     } else {
-       this._autocomplete(true);
-     }
-   },
-   _onEscKeyed: function onEscKeyed() {
-     this.dropdown.close();
-     this.input.resetInputValue();
-   },
-   _onUpKeyed: function onUpKeyed() {
-     var query = this.input.getQuery();
-     if (this.dropdown.isEmpty && query.length >= this.minLength) {
-       this.dropdown.update(query);
-     } else {
-       this.dropdown.moveCursorUp();
-     }
-     this.dropdown.open();
-   },
-   _onDownKeyed: function onDownKeyed() {
-     var query = this.input.getQuery();
-     if (this.dropdown.isEmpty && query.length >= this.minLength) {
-       this.dropdown.update(query);
-     } else {
-       this.dropdown.moveCursorDown();
-     }
-     this.dropdown.open();
-   },
-   _onLeftKeyed: function onLeftKeyed() {
-     if (this.dir === 'rtl') {
-       this._autocomplete();
-     }
-   },
-   _onRightKeyed: function onRightKeyed() {
-     if (this.dir === 'ltr') {
-       this._autocomplete();
-     }
-   },
-   _onQueryChanged: function onQueryChanged(e, query) {
-     this.input.clearHintIfInvalid();
-     if (query.length >= this.minLength) {
-       this.dropdown.update(query);
-     } else {
-       this.dropdown.empty();
-     }
-     this.dropdown.open();
-     this._setLanguageDirection();
-   },
-   _onWhitespaceChanged: function onWhitespaceChanged() {
-     this._updateHint();
-     this.dropdown.open();
-   },
-   _setLanguageDirection: function setLanguageDirection() {
-     var dir = this.input.getLanguageDirection();
-     if (this.dir !== dir) {
-       this.dir = dir;
-       this.$node.css('direction', dir);
-       this.dropdown.setLanguageDirection(dir);
-     }
-   },
-   _updateHint: function updateHint() {
-     var datum;
-     var val;
-     var query;
-     var escapedQuery;
-     var frontMatchRegEx;
-     var match;
-     datum = this.dropdown.getDatumForTopSuggestion();
-     if (datum && this.dropdown.isVisible() && !this.input.hasOverflow()) {
-       val = this.input.getInputValue();
-       query = Input.normalizeQuery(val);
-       escapedQuery = _.escapeRegExChars(query);
-       // match input value, then capture trailing text
-       frontMatchRegEx = new RegExp('^(?:' + escapedQuery + ')(.+$)', 'i');
-       match = frontMatchRegEx.exec(datum.value);
-       // clear hint if there's no trailing text
-       if (match) {
-         this.input.setHint(val + match[1]);
-       } else {
-         this.input.clearHint();
-       }
-     } else {
-       this.input.clearHint();
-     }
-   },
-   _autocomplete: function autocomplete(laxCursor) {
-     var hint;
-     var query;
-     var isCursorAtEnd;
-     var datum;
-     hint = this.input.getHint();
-     query = this.input.getQuery();
-     isCursorAtEnd = laxCursor || this.input.isCursorAtEnd();
-     if (hint && query !== hint && isCursorAtEnd) {
-       datum = this.dropdown.getDatumForTopSuggestion();
-       if (datum) {
-         this.input.setInputValue(datum.value);
-       }
-       this.eventBus.trigger('autocompleted', datum.raw, datum.datasetName);
-     }
-   },
-   _select: function select(datum) {
-     if (typeof datum.value !== 'undefined') {
-       this.input.setQuery(datum.value);
-     }
-     this.input.setInputValue(datum.value, true);
-     this._setLanguageDirection();
-     var event = this.eventBus.trigger('selected', datum.raw, datum.datasetName);
-     if (event.isDefaultPrevented() === false) {
-       this.dropdown.close();
-       // #118: allow click event to bubble up to the body before removing
-       // the suggestions otherwise we break event delegation
-       _.defer(_.bind(this.dropdown.empty, this.dropdown));
-     }
-   },
-   // ### public
-   open: function open() {
-     // if the menu is not activated yet, we need to update
-     // the underlying dropdown menu to trigger the search
-     // otherwise we're not gonna see anything
-     if (!this.isActivated) {
-       var query = this.input.getInputValue();
-       if (query.length >= this.minLength) {
-         this.dropdown.update(query);
-       } else {
-         this.dropdown.empty();
-       }
-     }
-     this.dropdown.open();
-   },
-   close: function close() {
-     this.dropdown.close();
-   },
-   setVal: function setVal(val) {
-     // expect val to be a string, so be safe, and coerce
-     val = _.toStr(val);
-     if (this.isActivated) {
-       this.input.setInputValue(val);
-     } else {
-       this.input.setQuery(val);
-       this.input.setInputValue(val, true);
-     }
-     this._setLanguageDirection();
-   },
-   getVal: function getVal() {
-     return this.input.getQuery();
-   },
-   destroy: function destroy() {
-     this.input.destroy();
-     this.dropdown.destroy();
-     destroyDomStructure(this.$node, this.cssClasses);
-     this.$node = null;
-   },
-   getWrapper: function getWrapper() {
-     return this.dropdown.$container[0];
-   }
- });
- function buildDom(options) {
-   var $input;
-   var $wrapper;
-   var $dropdown;
-   var $hint;
-   $input = DOM.element(options.input);
-   $wrapper = DOM
-     .element(html.wrapper.replace('%ROOT%', options.cssClasses.root))
-     .css(options.css.wrapper);
-   // override the display property with the table-cell value
-   // if the parent element is a table and the original input was a block
-   //  -> https://github.com/algolia/autocomplete.js/issues/16
-   if (!options.appendTo && $input.css('display') === 'block' && $input.parent().css('display') === 'table') {
-     $wrapper.css('display', 'table-cell');
-   }
-   var dropdownHtml = html.dropdown.
-     replace('%PREFIX%', options.cssClasses.prefix).
-     replace('%DROPDOWN_MENU%', options.cssClasses.dropdownMenu);
-   $dropdown = DOM.element(dropdownHtml)
-     .css(options.css.dropdown)
-     .attr({
-       role: 'listbox',
-       id: options.listboxId
-     });
-   if (options.templates && options.templates.dropdownMenu) {
-     $dropdown.html(_.templatify(options.templates.dropdownMenu)());
-   }
-   $hint = $input.clone().css(options.css.hint).css(getBackgroundStyles($input));
-   $hint
-     .val('')
-     .addClass(_.className(options.cssClasses.prefix, options.cssClasses.hint, true))
-     .removeAttr('id name placeholder required')
-     .prop('readonly', true)
-     .attr({
-       'aria-hidden': 'true',
-       autocomplete: 'off',
-       spellcheck: 'false',
-       tabindex: -1
-     });
-   if ($hint.removeData) {
-     $hint.removeData();
-   }
-   // store the original values of the attrs that get modified
-   // so modifications can be reverted on destroy
-   $input.data(attrsKey, {
-     'aria-autocomplete': $input.attr('aria-autocomplete'),
-     'aria-expanded': $input.attr('aria-expanded'),
-     'aria-owns': $input.attr('aria-owns'),
-     autocomplete: $input.attr('autocomplete'),
-     dir: $input.attr('dir'),
-     role: $input.attr('role'),
-     spellcheck: $input.attr('spellcheck'),
-     style: $input.attr('style'),
-     type: $input.attr('type')
-   });
-   $input
-     .addClass(_.className(options.cssClasses.prefix, options.cssClasses.input, true))
-     .attr({
-       autocomplete: 'off',
-       spellcheck: false,
-       // Accessibility features
-       // Give the field a presentation of a "select".
-       // Combobox is the combined presentation of a single line textfield
-       // with a listbox popup.
-       // https://www.w3.org/WAI/PF/aria/roles#combobox
-       role: 'combobox',
-       // Let the screen reader know the field has an autocomplete
-       // feature to it.
-       'aria-autocomplete': (options.datasets && options.datasets[0] && options.datasets[0].displayKey ? 'both' : 'list'),
-       // Indicates whether the dropdown it controls is currently expanded or collapsed
-       'aria-expanded': 'false',
-       // If a placeholder is set, label this field with itself, which in this case,
-       // is an explicit pointer to use the placeholder attribute value.
-       'aria-labelledby': ($input.attr('placeholder') ? $input.attr('id') : null),
-       // Explicitly point to the listbox,
-       // which is a list of suggestions (aka options)
-       'aria-owns': options.listboxId
-     })
-     .css(options.hint ? options.css.input : options.css.inputWithNoHint);
-   // ie7 does not like it when dir is set to auto
-   try {
-     if (!$input.attr('dir')) {
-       $input.attr('dir', 'auto');
-     }
-   } catch (e) {
-     // ignore
-   }
-   $wrapper = options.appendTo
-     ? $wrapper.appendTo(DOM.element(options.appendTo).eq(0)).eq(0)
-     : $input.wrap($wrapper).parent();
-   $wrapper
-     .prepend(options.hint ? $hint : null)
-     .append($dropdown);
-   return {
-     wrapper: $wrapper,
-     input: $input,
-     hint: $hint,
-     menu: $dropdown
-   };
- }
- function getBackgroundStyles($el) {
-   return {
-     backgroundAttachment: $el.css('background-attachment'),
-     backgroundClip: $el.css('background-clip'),
-     backgroundColor: $el.css('background-color'),
-     backgroundImage: $el.css('background-image'),
-     backgroundOrigin: $el.css('background-origin'),
-     backgroundPosition: $el.css('background-position'),
-     backgroundRepeat: $el.css('background-repeat'),
-     backgroundSize: $el.css('background-size')
-   };
- }
- function destroyDomStructure($node, cssClasses) {
-   var $input = $node.find(_.className(cssClasses.prefix, cssClasses.input));
-   // need to remove attrs that weren't previously defined and
-   // revert attrs that originally had a value
-   _.each($input.data(attrsKey), function(val, key) {
-     if (val === undefined) {
-       $input.removeAttr(key);
-     } else {
-       $input.attr(key, val);
-     }
-   });
-   $input
-     .detach()
-     .removeClass(_.className(cssClasses.prefix, cssClasses.input, true))
-     .insertAfter($node);
-   if ($input.removeData) {
-     $input.removeData(attrsKey);
-   }
-   $node.remove();
- }
- Typeahead.Dropdown = Dropdown;
- Typeahead.Input = Input;
- Typeahead.sources = __webpack_require__(43);
- module.exports = Typeahead;
- /***/ }),
- /* 42 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var _ = __webpack_require__(0);
- var version = __webpack_require__(16);
- var parseAlgoliaClientVersion = __webpack_require__(15);
- module.exports = function search(index, params) {
-   var algoliaVersion = parseAlgoliaClientVersion(index.as._ua);
-   if (algoliaVersion && algoliaVersion[0] >= 3 && algoliaVersion[1] > 20) {
-     params = params || {};
-     params.additionalUA = 'autocomplete.js ' + version;
-   }
-   return sourceFn;
-   function sourceFn(query, cb) {
-     index.search(query, params, function(error, content) {
-       if (error) {
-         _.error(error.message);
-         return;
-       }
-       cb(content.hits, content);
-     });
-   }
- };
- /***/ }),
- /* 43 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- module.exports = {
-   hits: __webpack_require__(42),
-   popularIn: __webpack_require__(44)
- };
- /***/ }),
- /* 44 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var _ = __webpack_require__(0);
- var version = __webpack_require__(16);
- var parseAlgoliaClientVersion = __webpack_require__(15);
- module.exports = function popularIn(index, params, details, options) {
-   var algoliaVersion = parseAlgoliaClientVersion(index.as._ua);
-   if (algoliaVersion && algoliaVersion[0] >= 3 && algoliaVersion[1] > 20) {
-     params = params || {};
-     params.additionalUA = 'autocomplete.js ' + version;
-   }
-   if (!details.source) {
-     return _.error("Missing 'source' key");
-   }
-   var source = _.isFunction(details.source) ? details.source : function(hit) { return hit[details.source]; };
-   if (!details.index) {
-     return _.error("Missing 'index' key");
-   }
-   var detailsIndex = details.index;
-   options = options || {};
-   return sourceFn;
-   function sourceFn(query, cb) {
-     index.search(query, params, function(error, content) {
-       if (error) {
-         _.error(error.message);
-         return;
-       }
-       if (content.hits.length > 0) {
-         var first = content.hits[0];
-         var detailsParams = _.mixin({hitsPerPage: 0}, details);
-         delete detailsParams.source; // not a query parameter
-         delete detailsParams.index; // not a query parameter
-         var detailsAlgoliaVersion = parseAlgoliaClientVersion(detailsIndex.as._ua);
-         if (detailsAlgoliaVersion && detailsAlgoliaVersion[0] >= 3 && detailsAlgoliaVersion[1] > 20) {
-           params.additionalUA = 'autocomplete.js ' + version;
-         }
-         detailsIndex.search(source(first), detailsParams, function(error2, content2) {
-           if (error2) {
-             _.error(error2.message);
-             return;
-           }
-           var suggestions = [];
-           // add the 'all department' entry before others
-           if (options.includeAll) {
-             var label = options.allTitle || 'All departments';
-             suggestions.push(_.mixin({
-               facet: {value: label, count: content2.nbHits}
-             }, _.cloneDeep(first)));
-           }
-           // enrich the first hit iterating over the facets
-           _.each(content2.facets, function(values, facet) {
-             _.each(values, function(count, value) {
-               suggestions.push(_.mixin({
-                 facet: {facet: facet, value: value, count: count}
-               }, _.cloneDeep(first)));
-             });
-           });
-           // append all other hits
-           for (var i = 1; i < content.hits.length; ++i) {
-             suggestions.push(content.hits[i]);
-           }
-           cb(suggestions, content);
-         });
-         return;
-       }
-       cb([]);
-     });
-   }
- };
- /***/ }),
- /* 45 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- // this will inject Zepto in window, unfortunately no easy commonJS zepto build
- var zepto = __webpack_require__(17);
- // setup DOM element
- var DOM = __webpack_require__(1);
- DOM.element = zepto;
- // setup utils functions
- var _ = __webpack_require__(0);
- _.isArray = zepto.isArray;
- _.isFunction = zepto.isFunction;
- _.isObject = zepto.isPlainObject;
- _.bind = zepto.proxy;
- _.each = function(collection, cb) {
-   // stupid argument order for jQuery.each
-   zepto.each(collection, reverseArgs);
-   function reverseArgs(index, value) {
-     return cb(value, index);
-   }
- };
- _.map = zepto.map;
- _.mixin = zepto.extend;
- _.Event = zepto.Event;
- var typeaheadKey = 'aaAutocomplete';
- var Typeahead = __webpack_require__(41);
- var EventBus = __webpack_require__(13);
- function autocomplete(selector, options, datasets, typeaheadObject) {
-   datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 2);
-   var inputs = zepto(selector).each(function(i, input) {
-     var $input = zepto(input);
-     var eventBus = new EventBus({el: $input});
-     var typeahead = typeaheadObject || new Typeahead({
-       input: $input,
-       eventBus: eventBus,
-       dropdownMenuContainer: options.dropdownMenuContainer,
-       hint: options.hint === undefined ? true : !!options.hint,
-       minLength: options.minLength,
-       autoselect: options.autoselect,
-       autoselectOnBlur: options.autoselectOnBlur,
-       openOnFocus: options.openOnFocus,
-       templates: options.templates,
-       debug: options.debug,
-       cssClasses: options.cssClasses,
-       datasets: datasets,
-       keyboardShortcuts: options.keyboardShortcuts,
-       appendTo: options.appendTo,
-       autoWidth: options.autoWidth
-     });
-     $input.data(typeaheadKey, typeahead);
-   });
-   // expose all methods in the `autocomplete` attribute
-   inputs.autocomplete = {};
-   _.each(['open', 'close', 'getVal', 'setVal', 'destroy', 'getWrapper'], function(method) {
-     inputs.autocomplete[method] = function() {
-       var methodArguments = arguments;
-       var result;
-       inputs.each(function(j, input) {
-         var typeahead = zepto(input).data(typeaheadKey);
-         result = typeahead[method].apply(typeahead, methodArguments);
-       });
-       return result;
-     };
-   });
-   return inputs;
- }
- autocomplete.sources = Typeahead.sources;
- autocomplete.escapeHighlightedString = _.escapeHighlightedString;
- var wasAutocompleteSet = 'autocomplete' in window;
- var oldAutocomplete = window.autocomplete;
- autocomplete.noConflict = function noConflict() {
-   if (wasAutocompleteSet) {
-     window.autocomplete = oldAutocomplete;
-   } else {
-     delete window.autocomplete;
-   }
-   return autocomplete;
- };
- module.exports = autocomplete;
- /***/ }),
- /* 46 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var _main = __webpack_require__(21);
- var _main2 = _interopRequireDefault(_main);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- module.exports = _main2.default; /* eslint-disable import/no-commonjs */
- /***/ }),
- /* 47 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", {
-   value: true
- });
- var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
- var _hogan = __webpack_require__(54);
- var _hogan2 = _interopRequireDefault(_hogan);
- var _lite = __webpack_require__(24);
- var _lite2 = _interopRequireDefault(_lite);
- var _autocomplete = __webpack_require__(37);
- var _autocomplete2 = _interopRequireDefault(_autocomplete);
- var _templates = __webpack_require__(48);
- var _templates2 = _interopRequireDefault(_templates);
- var _utils = __webpack_require__(49);
- var _utils2 = _interopRequireDefault(_utils);
- var _version = __webpack_require__(18);
- var _version2 = _interopRequireDefault(_version);
- var _zepto = __webpack_require__(19);
- var _zepto2 = _interopRequireDefault(_zepto);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
- /**
-  * Adds an autocomplete dropdown to an input field
-  * @function DocSearch
-  * @param  {string} options.apiKey         Read-only API key
-  * @param  {string} options.indexName      Name of the index to target
-  * @param  {string} options.inputSelector  CSS selector that targets the input
-  * @param  {string} [options.appId]  Lets you override the applicationId used.
-  * If using the default Algolia Crawler, you should not have to change this
-  * value.
-  * @param  {Object} [options.algoliaOptions] Options to pass the underlying Algolia client
-  * @param  {Object} [options.autocompleteOptions] Options to pass to the underlying autocomplete instance
-  * @return {Object}
-  */
- var usage = 'Usage:\n  documentationSearch({\n  apiKey,\n  indexName,\n  inputSelector,\n  [ appId ],\n  [ algoliaOptions.{hitsPerPage} ]\n  [ autocompleteOptions.{hint,debug} ]\n})';
- var DocSearch = function () {
-   function DocSearch(_ref) {
-     var apiKey = _ref.apiKey,
-         indexName = _ref.indexName,
-         inputSelector = _ref.inputSelector,
-         _ref$appId = _ref.appId,
-         appId = _ref$appId === undefined ? 'BH4D9OD16A' : _ref$appId,
-         _ref$debug = _ref.debug,
-         debug = _ref$debug === undefined ? false : _ref$debug,
-         _ref$algoliaOptions = _ref.algoliaOptions,
-         algoliaOptions = _ref$algoliaOptions === undefined ? {} : _ref$algoliaOptions,
-         _ref$autocompleteOpti = _ref.autocompleteOptions,
-         autocompleteOptions = _ref$autocompleteOpti === undefined ? {
-       debug: false,
-       hint: false,
-       autoselect: true
-     } : _ref$autocompleteOpti,
-         _ref$transformData = _ref.transformData,
-         transformData = _ref$transformData === undefined ? false : _ref$transformData,
-         _ref$queryHook = _ref.queryHook,
-         queryHook = _ref$queryHook === undefined ? false : _ref$queryHook,
-         _ref$handleSelected = _ref.handleSelected,
-         handleSelected = _ref$handleSelected === undefined ? false : _ref$handleSelected,
-         _ref$enhancedSearchIn = _ref.enhancedSearchInput,
-         enhancedSearchInput = _ref$enhancedSearchIn === undefined ? false : _ref$enhancedSearchIn,
-         _ref$layout = _ref.layout,
-         layout = _ref$layout === undefined ? 'collumns' : _ref$layout;
-     _classCallCheck(this, DocSearch);
-     DocSearch.checkArguments({
-       apiKey: apiKey,
-       indexName: indexName,
-       inputSelector: inputSelector,
-       debug: debug,
-       algoliaOptions: algoliaOptions,
-       autocompleteOptions: autocompleteOptions,
-       transformData: transformData,
-       queryHook: queryHook,
-       handleSelected: handleSelected,
-       enhancedSearchInput: enhancedSearchInput,
-       layout: layout
-     });
-     this.apiKey = apiKey;
-     this.appId = appId;
-     this.indexName = indexName;
-     this.input = DocSearch.getInputFromSelector(inputSelector);
-     this.algoliaOptions = _extends({ hitsPerPage: 5 }, algoliaOptions);
-     var autocompleteOptionsDebug = autocompleteOptions && autocompleteOptions.debug ? autocompleteOptions.debug : false;
-     autocompleteOptions.debug = debug || autocompleteOptionsDebug;
-     this.autocompleteOptions = autocompleteOptions;
-     this.autocompleteOptions.cssClasses = {
-       prefix: 'ds'
-     };
-     handleSelected = handleSelected || this.handleSelected;
-     this.isSimpleLayout = layout === 'simple';
-     this.client = (0, _lite2.default)(this.appId, this.apiKey);
-     this.client.addAlgoliaAgent('docsearch.js ' + _version2.default);
-     if (enhancedSearchInput) {
-       this.input = DocSearch.injectSearchBox(this.input);
-     }
-     this.autocomplete = (0, _autocomplete2.default)(this.input, autocompleteOptions, [{
-       source: this.getAutocompleteSource(transformData, queryHook),
-       templates: {
-         suggestion: DocSearch.getSuggestionTemplate(this.isSimpleLayout),
-         footer: _templates2.default.footer,
-         empty: DocSearch.getEmptyTemplate()
-       }
-     }]);
-     this.autocomplete.on('autocomplete:selected', handleSelected.bind(null, this.autocomplete.autocomplete));
-     this.autocomplete.on('autocomplete:shown', this.handleShown.bind(null, this.input));
-     if (enhancedSearchInput) {
-       DocSearch.bindSearchBoxEvent();
-     }
-   }
-   /**
-    * Checks that the passed arguments are valid. Will throw errors otherwise
-    * @function checkArguments
-    * @param  {object} args Arguments as an option object
-    * @returns {void}
-    */
-   _createClass(DocSearch, [{
-     key: 'getAutocompleteSource',
-     /**
-      * Returns the `source` method to be passed to autocomplete.js. It will query
-      * the Algolia index and call the callbacks with the formatted hits.
-      * @function getAutocompleteSource
-      * @param  {function} transformData An optional function to transform the hits
-      * @param {function} queryHook An optional function to transform the query
-      * @returns {function} Method to be passed as the `source` option of
-      * autocomplete
-      */
-     value: function getAutocompleteSource(transformData, queryHook) {
-       var _this = this;
-       return function (query, callback) {
-         if (queryHook) {
-           query = queryHook(query) || query;
-         }
-         _this.client.search([{
-           indexName: _this.indexName,
-           query: query,
-           params: _this.algoliaOptions
-         }]).then(function (data) {
-           var hits = data.results[0].hits;
-           if (transformData) {
-             hits = transformData(hits) || hits;
-           }
-           callback(DocSearch.formatHits(hits));
-         });
-       };
-     }
-     // Given a list of hits returned by the API, will reformat them to be used in
-     // a Hogan template
-   }, {
-     key: 'handleSelected',
-     value: function handleSelected(input, event, suggestion) {
-       input.setVal('');
-       window.location.href = suggestion.url;
-     }
-   }, {
-     key: 'handleShown',
-     value: function handleShown(input) {
-       var middleOfInput = input.offset().left + input.width() / 2;
-       var middleOfWindow = (0, _zepto2.default)(document).width() / 2;
-       if (isNaN(middleOfWindow)) {
-         middleOfWindow = 900;
-       }
-       var alignClass = middleOfInput - middleOfWindow >= 0 ? 'algolia-autocomplete-right' : 'algolia-autocomplete-left';
-       var otherAlignClass = middleOfInput - middleOfWindow < 0 ? 'algolia-autocomplete-right' : 'algolia-autocomplete-left';
-       var autocompleteWrapper = (0, _zepto2.default)('.algolia-autocomplete');
-       if (!autocompleteWrapper.hasClass(alignClass)) {
-         autocompleteWrapper.addClass(alignClass);
-       }
-       if (autocompleteWrapper.hasClass(otherAlignClass)) {
-         autocompleteWrapper.removeClass(otherAlignClass);
-       }
-     }
-   }], [{
-     key: 'checkArguments',
-     value: function checkArguments(args) {
-       if (!args.apiKey || !args.indexName) {
-         throw new Error(usage);
-       }
-       if (!DocSearch.getInputFromSelector(args.inputSelector)) {
-         throw new Error('Error: No input element in the page matches ' + args.inputSelector);
-       }
-     }
-   }, {
-     key: 'injectSearchBox',
-     value: function injectSearchBox(input) {
-       input.before(_templates2.default.searchBox);
-       var newInput = input.prev().prev().find('input');
-       input.remove();
-       return newInput;
-     }
-   }, {
-     key: 'bindSearchBoxEvent',
-     value: function bindSearchBoxEvent() {
-       (0, _zepto2.default)('.searchbox [type="reset"]').on('click', function () {
-         (0, _zepto2.default)('input#docsearch').focus();
-         (0, _zepto2.default)(this).addClass('hide');
-         _autocomplete2.default.autocomplete.setVal('');
-       });
-       (0, _zepto2.default)('input#docsearch').on('keyup', function () {
-         var searchbox = document.querySelector('input#docsearch');
-         var reset = document.querySelector('.searchbox [type="reset"]');
-         reset.className = 'searchbox__reset';
-         if (searchbox.value.length === 0) {
-           reset.className += ' hide';
-         }
-       });
-     }
-     /**
-      * Returns the matching input from a CSS selector, null if none matches
-      * @function getInputFromSelector
-      * @param  {string} selector CSS selector that matches the search
-      * input of the page
-      * @returns {void}
-      */
-   }, {
-     key: 'getInputFromSelector',
-     value: function getInputFromSelector(selector) {
-       var input = (0, _zepto2.default)(selector).filter('input');
-       return input.length ? (0, _zepto2.default)(input[0]) : null;
-     }
-   }, {
-     key: 'formatHits',
-     value: function formatHits(receivedHits) {
-       var clonedHits = _utils2.default.deepClone(receivedHits);
-       var hits = clonedHits.map(function (hit) {
-         if (hit._highlightResult) {
-           hit._highlightResult = _utils2.default.mergeKeyWithParent(hit._highlightResult, 'hierarchy');
-         }
-         return _utils2.default.mergeKeyWithParent(hit, 'hierarchy');
-       });
-       // Group hits by category / subcategory
-       var groupedHits = _utils2.default.groupBy(hits, 'lvl0');
-       _zepto2.default.each(groupedHits, function (level, collection) {
-         var groupedHitsByLvl1 = _utils2.default.groupBy(collection, 'lvl1');
-         var flattenedHits = _utils2.default.flattenAndFlagFirst(groupedHitsByLvl1, 'isSubCategoryHeader');
-         groupedHits[level] = flattenedHits;
-       });
-       groupedHits = _utils2.default.flattenAndFlagFirst(groupedHits, 'isCategoryHeader');
-       // Translate hits into smaller objects to be send to the template
-       return groupedHits.map(function (hit) {
-         var url = DocSearch.formatURL(hit);
-         var category = _utils2.default.getHighlightedValue(hit, 'lvl0');
-         var subcategory = _utils2.default.getHighlightedValue(hit, 'lvl1') || category;
-         var displayTitle = _utils2.default.compact([_utils2.default.getHighlightedValue(hit, 'lvl2') || subcategory, _utils2.default.getHighlightedValue(hit, 'lvl3'), _utils2.default.getHighlightedValue(hit, 'lvl4'), _utils2.default.getHighlightedValue(hit, 'lvl5'), _utils2.default.getHighlightedValue(hit, 'lvl6')]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> › </span>');
-         var text = _utils2.default.getSnippetedValue(hit, 'content');
-         var isTextOrSubcatoryNonEmpty = subcategory && subcategory !== '' || displayTitle && displayTitle !== '';
-         var isLvl1EmptyOrDuplicate = !subcategory || subcategory === '' || subcategory === category;
-         var isLvl2 = displayTitle && displayTitle !== '' && displayTitle !== subcategory;
-         var isLvl1 = !isLvl2 && subcategory && subcategory !== '' && subcategory !== category;
-         var isLvl0 = !isLvl1 && !isLvl2;
-         return {
-           isLvl0: isLvl0,
-           isLvl1: isLvl1,
-           isLvl2: isLvl2,
-           isLvl1EmptyOrDuplicate: isLvl1EmptyOrDuplicate,
-           isCategoryHeader: hit.isCategoryHeader,
-           isSubCategoryHeader: hit.isSubCategoryHeader,
-           isTextOrSubcatoryNonEmpty: isTextOrSubcatoryNonEmpty,
-           category: category,
-           subcategory: subcategory,
-           title: displayTitle,
-           text: text,
-           url: url
-         };
-       });
-     }
-   }, {
-     key: 'formatURL',
-     value: function formatURL(hit) {
-       var url = hit.url,
-           anchor = hit.anchor;
-       if (url) {
-         var containsAnchor = url.indexOf('#') !== -1;
-         if (containsAnchor) return url;else if (anchor) return hit.url + '#' + hit.anchor;
-         return url;
-       } else if (anchor) return '#' + hit.anchor;
-       /* eslint-disable */
-       console.warn('no anchor nor url for : ', JSON.stringify(hit));
-       /* eslint-enable */
-       return null;
-     }
-   }, {
-     key: 'getEmptyTemplate',
-     value: function getEmptyTemplate() {
-       return function (args) {
-         return _hogan2.default.compile(_templates2.default.empty).render(args);
-       };
-     }
-   }, {
-     key: 'getSuggestionTemplate',
-     value: function getSuggestionTemplate(isSimpleLayout) {
-       var stringTemplate = isSimpleLayout ? _templates2.default.suggestionSimple : _templates2.default.suggestion;
-       var template = _hogan2.default.compile(stringTemplate);
-       return function (suggestion) {
-         return template.render(suggestion);
-       };
-     }
-   }]);
-   return DocSearch;
- }();
- exports.default = DocSearch;
- /***/ }),
- /* 48 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", {
-   value: true
- });
- var prefix = 'algolia-docsearch';
- var suggestionPrefix = prefix + '-suggestion';
- var footerPrefix = prefix + '-footer';
- /* eslint-disable max-len */
- var templates = {
-   suggestion: '\n  <div class="' + suggestionPrefix + '\n    {{#isCategoryHeader}}' + suggestionPrefix + '__main{{/isCategoryHeader}}\n    {{#isSubCategoryHeader}}' + suggestionPrefix + '__secondary{{/isSubCategoryHeader}}\n  ">\n    <div class="' + suggestionPrefix + '--category-header">\n        <span class="' + suggestionPrefix + '--category-header-lvl0">{{{category}}}</span>\n    </div>\n    <div class="' + suggestionPrefix + '--wrapper">\n      <div class="' + suggestionPrefix + '--subcategory-column">\n        <span class="' + suggestionPrefix + '--subcategory-column-text">{{{subcategory}}}</span>\n      </div>\n      {{#isTextOrSubcatoryNonEmpty}}\n      <div class="' + suggestionPrefix + '--content">\n        <div class="' + suggestionPrefix + '--subcategory-inline">{{{subcategory}}}</div>\n        <div class="' + suggestionPrefix + '--title">{{{title}}}</div>\n        {{#text}}<div class="' + suggestionPrefix + '--text">{{{text}}}</div>{{/text}}\n      </div>\n      {{/isTextOrSubcatoryNonEmpty}}\n    </div>\n  </div>\n  ',
-   suggestionSimple: '\n  <div class="' + suggestionPrefix + '\n    {{#isCategoryHeader}}' + suggestionPrefix + '__main{{/isCategoryHeader}}\n    {{#isSubCategoryHeader}}' + suggestionPrefix + '__secondary{{/isSubCategoryHeader}}\n    suggestion-layout-simple\n  ">\n    <div class="' + suggestionPrefix + '--category-header">\n        {{^isLvl0}}\n        <span class="' + suggestionPrefix + '--category-header-lvl0 ' + suggestionPrefix + '--category-header-item">{{{category}}}</span>\n          {{^isLvl1}}\n          {{^isLvl1EmptyOrDuplicate}}\n          <span class="' + suggestionPrefix + '--category-header-lvl1 ' + suggestionPrefix + '--category-header-item">\n              {{{subcategory}}}\n          </span>\n          {{/isLvl1EmptyOrDuplicate}}\n          {{/isLvl1}}\n        {{/isLvl0}}\n        <div class="' + suggestionPrefix + '--title ' + suggestionPrefix + '--category-header-item">\n            {{#isLvl2}}\n                {{{title}}}\n            {{/isLvl2}}\n            {{#isLvl1}}\n                {{{subcategory}}}\n            {{/isLvl1}}\n            {{#isLvl0}}\n                {{{category}}}\n            {{/isLvl0}}\n        </div>\n    </div>\n    <div class="' + suggestionPrefix + '--wrapper">\n      {{#text}}\n      <div class="' + suggestionPrefix + '--content">\n        <div class="' + suggestionPrefix + '--text">{{{text}}}</div>\n      </div>\n      {{/text}}\n    </div>\n  </div>\n  ',
-   footer: '\n    <div class="' + footerPrefix + '">\n      Search by <a class="' + footerPrefix + '--logo" href="https://www.algolia.com/docsearch">Algolia</a>\n    </div>\n  ',
-   empty: '\n  <div class="' + suggestionPrefix + '">\n    <div class="' + suggestionPrefix + '--wrapper">\n        <div class="' + suggestionPrefix + '--content ' + suggestionPrefix + '--no-results">\n            <div class="' + suggestionPrefix + '--title">\n                <div class="' + suggestionPrefix + '--text">\n                    No results found for query <b>"{{query}}"</b>\n                </div>\n            </div>\n        </div>\n    </div>\n  </div>\n  ',
-   searchBox: '\n  <form novalidate="novalidate" onsubmit="return false;" class="searchbox">\n    <div role="search" class="searchbox__wrapper">\n      <input id="docsearch" type="search" name="search" placeholder="Search the docs" autocomplete="off" required="required" class="searchbox__input"/>\n      <button type="submit" title="Submit your search query." class="searchbox__submit" >\n        <svg width=12 height=12 role="img" aria-label="Search">\n          <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-search-13"></use>\n        </svg>\n      </button>\n      <button type="reset" title="Clear the search query." class="searchbox__reset hide">\n        <svg width=12 height=12 role="img" aria-label="Reset">\n          <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-clear-3"></use>\n        </svg>\n      </button>\n    </div>\n</form>\n\n<div class="svg-icons" style="height: 0; width: 0; position: absolute; visibility: hidden">\n  <svg xmlns="http://www.w3.org/2000/svg">\n    <symbol id="sbx-icon-clear-3" viewBox="0 0 40 40"><path d="M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z" fill-rule="evenodd"></symbol>\n    <symbol id="sbx-icon-search-13" viewBox="0 0 40 40"><path d="M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z" fill-rule="evenodd"></symbol>\n  </svg>\n</div>\n  '
- };
- exports.default = templates;
- /***/ }),
- /* 49 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports, "__esModule", {
-   value: true
- });
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
- var _zepto = __webpack_require__(19);
- var _zepto2 = _interopRequireDefault(_zepto);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- var utils = {
-   /*
-   * Move the content of an object key one level higher.
-   * eg.
-   * {
-   *   name: 'My name',
-   *   hierarchy: {
-   *     lvl0: 'Foo',
-   *     lvl1: 'Bar'
-   *   }
-   * }
-   * Will be converted to
-   * {
-   *   name: 'My name',
-   *   lvl0: 'Foo',
-   *   lvl1: 'Bar'
-   * }
-   * @param {Object} object Main object
-   * @param {String} property Main object key to move up
-   * @return {Object}
-   * @throws Error when key is not an attribute of Object or is not an object itself
-   */
-   mergeKeyWithParent: function mergeKeyWithParent(object, property) {
-     if (object[property] === undefined) {
-       return object;
-     }
-     if (_typeof(object[property]) !== 'object') {
-       return object;
-     }
-     var newObject = _zepto2.default.extend({}, object, object[property]);
-     delete newObject[property];
-     return newObject;
-   },
-   /*
-   * Group all objects of a collection by the value of the specified attribute
-   * If the attribute is a string, use the lowercase form.
-   *
-   * eg.
-   * groupBy([
-   *   {name: 'Tim', category: 'dev'},
-   *   {name: 'Vincent', category: 'dev'},
-   *   {name: 'Ben', category: 'sales'},
-   *   {name: 'Jeremy', category: 'sales'},
-   *   {name: 'AlexS', category: 'dev'},
-   *   {name: 'AlexK', category: 'sales'}
-   * ], 'category');
-   * =>
-   * {
-   *   'devs': [
-   *     {name: 'Tim', category: 'dev'},
-   *     {name: 'Vincent', category: 'dev'},
-   *     {name: 'AlexS', category: 'dev'}
-   *   ],
-   *   'sales': [
-   *     {name: 'Ben', category: 'sales'},
-   *     {name: 'Jeremy', category: 'sales'},
-   *     {name: 'AlexK', category: 'sales'}
-   *   ]
-   * }
-   * @param {array} collection Array of objects to group
-   * @param {String} property The attribute on which apply the grouping
-   * @return {array}
-   * @throws Error when one of the element does not have the specified property
-   */
-   groupBy: function groupBy(collection, property) {
-     var newCollection = {};
-     _zepto2.default.each(collection, function (index, item) {
-       if (item[property] === undefined) {
-         throw new Error('[groupBy]: Object has no key ' + property);
-       }
-       var key = item[property];
-       if (typeof key === 'string') {
-         key = key.toLowerCase();
-       }
-       // fix #171 the given data type of docsearch hits might be conflict with the properties of the native Object,
-       // such as the constructor, so we need to do this check.
-       if (!Object.prototype.hasOwnProperty.call(newCollection, key)) {
-         newCollection[key] = [];
-       }
-       newCollection[key].push(item);
-     });
-     return newCollection;
-   },
-   /*
-   * Return an array of all the values of the specified object
-   * eg.
-   * values({
-   *   foo: 42,
-   *   bar: true,
-   *   baz: 'yep'
-   * })
-   * =>
-   * [42, true, yep]
-   * @param {object} object Object to extract values from
-   * @return {array}
-   */
-   values: function values(object) {
-     return Object.keys(object).map(function (key) {
-       return object[key];
-     });
-   },
-   /*
-   * Flattens an array
-   * eg.
-   * flatten([1, 2, [3, 4], [5, 6]])
-   * =>
-   * [1, 2, 3, 4, 5, 6]
-   * @param {array} array Array to flatten
-   * @return {array}
-   */
-   flatten: function flatten(array) {
-     var results = [];
-     array.forEach(function (value) {
-       if (!Array.isArray(value)) {
-         results.push(value);
-         return;
-       }
-       value.forEach(function (subvalue) {
-         results.push(subvalue);
-       });
-     });
-     return results;
-   },
-   /*
-   * Flatten all values of an object into an array, marking each first element of
-   * each group with a specific flag
-   * eg.
-   * flattenAndFlagFirst({
-   *   'devs': [
-   *     {name: 'Tim', category: 'dev'},
-   *     {name: 'Vincent', category: 'dev'},
-   *     {name: 'AlexS', category: 'dev'}
-   *   ],
-   *   'sales': [
-   *     {name: 'Ben', category: 'sales'},
-   *     {name: 'Jeremy', category: 'sales'},
-   *     {name: 'AlexK', category: 'sales'}
-   *   ]
-   * , 'isTop');
-   * =>
-   * [
-   *     {name: 'Tim', category: 'dev', isTop: true},
-   *     {name: 'Vincent', category: 'dev', isTop: false},
-   *     {name: 'AlexS', category: 'dev', isTop: false},
-   *     {name: 'Ben', category: 'sales', isTop: true},
-   *     {name: 'Jeremy', category: 'sales', isTop: false},
-   *     {name: 'AlexK', category: 'sales', isTop: false}
-   * ]
-   * @param {object} object Object to flatten
-   * @param {string} flag Flag to set to true on first element of each group
-   * @return {array}
-   */
-   flattenAndFlagFirst: function flattenAndFlagFirst(object, flag) {
-     var values = this.values(object).map(function (collection) {
-       return collection.map(function (item, index) {
-         item[flag] = index === 0;
-         return item;
-       });
-     });
-     return this.flatten(values);
-   },
-   /*
-   * Removes all empty strings, null, false and undefined elements array
-   * eg.
-   * compact([42, false, null, undefined, '', [], 'foo']);
-   * =>
-   * [42, [], 'foo']
-   * @param {array} array Array to compact
-   * @return {array}
-   */
-   compact: function compact(array) {
-     var results = [];
-     array.forEach(function (value) {
-       if (!value) {
-         return;
-       }
-       results.push(value);
-     });
-     return results;
-   },
-   /*
-    * Returns the highlighted value of the specified key in the specified object.
-    * If no highlighted value is available, will return the key value directly
-    * eg.
-    * getHighlightedValue({
-    *    _highlightResult: {
-    *      text: {
-    *        value: '<mark>foo</mark>'
-    *      }
-    *    },
-    *    text: 'foo'
-    * }, 'text');
-    * =>
-    * '<mark>foo</mark>'
-    * @param {object} object Hit object returned by the Algolia API
-    * @param {string} property Object key to look for
-    * @return {string}
-    **/
-   getHighlightedValue: function getHighlightedValue(object, property) {
-     if (object._highlightResult && object._highlightResult.hierarchy_camel && object._highlightResult.hierarchy_camel[property] && object._highlightResult.hierarchy_camel[property].matchLevel && object._highlightResult.hierarchy_camel[property].matchLevel !== 'none' && object._highlightResult.hierarchy_camel[property].value) {
-       return object._highlightResult.hierarchy_camel[property].value;
-     }
-     if (object._highlightResult && object._highlightResult && object._highlightResult[property] && object._highlightResult[property].value) {
-       return object._highlightResult[property].value;
-     }
-     return object[property];
-   },
-   /*
-    * Returns the snippeted value of the specified key in the specified object.
-    * If no highlighted value is available, will return the key value directly.
-    * Will add starting and ending ellipsis (…) if we detect that a sentence is
-    * incomplete
-    * eg.
-    * getSnippetedValue({
-    *    _snippetResult: {
-    *      text: {
-    *        value: '<mark>This is an unfinished sentence</mark>'
-    *      }
-    *    },
-    *    text: 'This is an unfinished sentence'
-    * }, 'text');
-    * =>
-    * '<mark>This is an unefinished sentenced</mark>…'
-    * @param {object} object Hit object returned by the Algolia API
-    * @param {string} property Object key to look for
-    * @return {string}
-    **/
-   getSnippetedValue: function getSnippetedValue(object, property) {
-     if (!object._snippetResult || !object._snippetResult[property] || !object._snippetResult[property].value) {
-       return object[property];
-     }
-     var snippet = object._snippetResult[property].value;
-     if (snippet[0] !== snippet[0].toUpperCase()) {
-       snippet = '\u2026' + snippet;
-     }
-     if (['.', '!', '?'].indexOf(snippet[snippet.length - 1]) === -1) {
-       snippet = snippet + '\u2026';
-     }
-     return snippet;
-   },
-   /*
-   * Deep clone an object.
-   * Note: This will not clone functions and dates
-   * @param {object} object Object to clone
-   * @return {object}
-   */
-   deepClone: function deepClone(object) {
-     return JSON.parse(JSON.stringify(object));
-   }
- };
- exports.default = utils;
- /***/ }),
- /* 50 */
- /***/ (function(module, exports, __webpack_require__) {
- /**
-  * This is the common logic for both the Node.js and web browser
-  * implementations of `debug()`.
-  *
-  * Expose `debug()` as the module.
-  */
- exports = module.exports = debug.debug = debug;
- exports.coerce = coerce;
- exports.disable = disable;
- exports.enable = enable;
- exports.enabled = enabled;
- exports.humanize = __webpack_require__(62);
- /**
-  * The currently active debug mode names, and names to skip.
-  */
- exports.names = [];
- exports.skips = [];
- /**
-  * Map of special "%n" handling functions, for the debug "format" argument.
-  *
-  * Valid key names are a single, lowercased letter, i.e. "n".
-  */
- exports.formatters = {};
- /**
-  * Previously assigned color.
-  */
- var prevColor = 0;
- /**
-  * Previous log timestamp.
-  */
- var prevTime;
- /**
-  * Select a color.
-  *
-  * @return {Number}
-  * @api private
-  */
- function selectColor() {
-   return exports.colors[prevColor++ % exports.colors.length];
- }
- /**
-  * Create a debugger with the given `namespace`.
-  *
-  * @param {String} namespace
-  * @return {Function}
-  * @api public
-  */
- function debug(namespace) {
-   // define the `disabled` version
-   function disabled() {
-   }
-   disabled.enabled = false;
-   // define the `enabled` version
-   function enabled() {
-     var self = enabled;
-     // set `diff` timestamp
-     var curr = +new Date();
-     var ms = curr - (prevTime || curr);
-     self.diff = ms;
-     self.prev = prevTime;
-     self.curr = curr;
-     prevTime = curr;
-     // add the `color` if not set
-     if (null == self.useColors) self.useColors = exports.useColors();
-     if (null == self.color && self.useColors) self.color = selectColor();
-     var args = new Array(arguments.length);
-     for (var i = 0; i < args.length; i++) {
-       args[i] = arguments[i];
-     }
-     args[0] = exports.coerce(args[0]);
-     if ('string' !== typeof args[0]) {
-       // anything else let's inspect with %o
-       args = ['%o'].concat(args);
-     }
-     // apply any `formatters` transformations
-     var index = 0;
-     args[0] = args[0].replace(/%([a-z%])/g, function(match, format) {
-       // if we encounter an escaped % then don't increase the array index
-       if (match === '%%') return match;
-       index++;
-       var formatter = exports.formatters[format];
-       if ('function' === typeof formatter) {
-         var val = args[index];
-         match = formatter.call(self, val);
-         // now we need to remove `args[index]` since it's inlined in the `format`
-         args.splice(index, 1);
-         index--;
-       }
-       return match;
-     });
-     // apply env-specific formatting
-     args = exports.formatArgs.apply(self, args);
-     var logFn = enabled.log || exports.log || console.log.bind(console);
-     logFn.apply(self, args);
-   }
-   enabled.enabled = true;
-   var fn = exports.enabled(namespace) ? enabled : disabled;
-   fn.namespace = namespace;
-   return fn;
- }
- /**
-  * Enables a debug mode by namespaces. This can include modes
-  * separated by a colon and wildcards.
-  *
-  * @param {String} namespaces
-  * @api public
-  */
- function enable(namespaces) {
-   exports.save(namespaces);
-   var split = (namespaces || '').split(/[\s,]+/);
-   var len = split.length;
-   for (var i = 0; i < len; i++) {
-     if (!split[i]) continue; // ignore empty strings
-     namespaces = split[i].replace(/[\\^$+?.()|[\]{}]/g, '\\$&').replace(/\*/g, '.*?');
-     if (namespaces[0] === '-') {
-       exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
-     } else {
-       exports.names.push(new RegExp('^' + namespaces + '$'));
-     }
-   }
- }
- /**
-  * Disable debug output.
-  *
-  * @api public
-  */
- function disable() {
-   exports.enable('');
- }
- /**
-  * Returns true if the given mode name is enabled, false otherwise.
-  *
-  * @param {String} name
-  * @return {Boolean}
-  * @api public
-  */
- function enabled(name) {
-   var i, len;
-   for (i = 0, len = exports.skips.length; i < len; i++) {
-     if (exports.skips[i].test(name)) {
-       return false;
-     }
-   }
-   for (i = 0, len = exports.names.length; i < len; i++) {
-     if (exports.names[i].test(name)) {
-       return true;
-     }
-   }
-   return false;
- }
- /**
-  * Coerce `val`.
-  *
-  * @param {Mixed} val
-  * @return {Mixed}
-  * @api private
-  */
- function coerce(val) {
-   if (val instanceof Error) return val.stack || val.message;
-   return val;
- }
- /***/ }),
- /* 51 */
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(process, global) {var require;/*!
++!function(e){t.exports=e()}(function(){var t;return function t(e,n,i){function o(a,u){if(!n[a]){if(!e[a]){var c="function"==typeof r&&r;if(!u&&c)return r(a,!0);if(s)return s(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var h=n[a]={exports:{}};e[a][0].call(h.exports,function(t){var n=e[a][1][t];return o(n||t)},h,h.exports,t,e,n,i)}return n[a].exports}for(var s="function"==typeof r&&r,a=0;a<i.length;a++)o(i[a]);return o}({1:[function(t,e,n){function r(t,e){for(;t&&t.nodeType!==i;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}var i=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var o=Element.prototype;o.matches=o.matchesSelector||o.mozMatchesSelector||o.msMatchesSelector||o.oMatchesSelector||o.webkitMatchesSelector}e.exports=r},{}],2:[function(t,e,n){function r(t,e,n,r,o){var s=i.apply(this,arguments);return t.addEventListener(n,s,o),{destroy:function(){t.removeEventListener(n,s,o)}}}function i(t,e,n,r){return function(n){n.delegateTarget=o(n.target,e),n.delegateTarget&&r.call(t,n)}}var o=t("./closest");e.exports=r},{"./closest":1}],3:[function(t,e,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},{}],4:[function(t,e,n){function r(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!a.string(e))throw new TypeError("Second argument must be a String");if(!a.fn(n))throw new TypeError("Third argument must be a Function");if(a.node(t))return i(t,e,n);if(a.nodeList(t))return o(t,e,n);if(a.string(t))return s(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function i(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function o(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)})}}}function s(t,e,n){return u(document.body,t,e,n)}var a=t("./is"),u=t("delegate");e.exports=r},{"./is":3,delegate:2}],5:[function(t,e,n){function r(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}e.exports=r},{}],6:[function(t,e,n){function r(){}r.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){function r(){i.off(t,r),e.apply(n,arguments)}var i=this;return r._=e,this.on(t,r,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),r=0,i=n.length;for(r;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}},e.exports=r},{}],7:[function(e,n,r){!function(i,o){if("function"==typeof t&&t.amd)t(["module","select"],o);else if(void 0!==r)o(n,e("select"));else{var s={exports:{}};o(s,i.select),i.clipboardAction=s.exports}}(this,function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r=function(t){return t&&t.__esModule?t:{default:t}}(e),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=function(){function t(e){n(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,r.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,r.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=s})},{select:5}],8:[function(e,n,r){!function(i,o){if("function"==typeof t&&t.amd)t(["module","./clipboard-action","tiny-emitter","good-listener"],o);else if(void 0!==r)o(n,e("./clipboard-action"),e("tiny-emitter"),e("good-listener"));else{var s={exports:{}};o(s,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=s.exports}}(this,function(t,e,n,r){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(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}function a(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)}function u(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var c=i(e),l=i(n),h=i(r),f="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},p=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}}(),d=function(t){function e(t,n){o(this,e);var r=s(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return r.resolveOptions(n),r.listenClick(t),r}return a(e,t),p(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"===f(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,h.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 c.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 u("action",t)}},{key:"defaultTarget",value:function(t){var e=u("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return u("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}(l.default);t.exports=d})},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)})},function(t,e,n){/*! docsearch 2.3.3 | © Algolia | github.com/algolia/docsearch */
++!function(e,n){t.exports=n()}(0,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=46)}([function(t,e,n){"use strict";function r(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var i=n(1);t.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(t){return"number"==typeof t},toStr:function(t){return void 0===t||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:function(){var t=0;return function(){return t++}}(),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 i=document.createElement("div");i.appendChild(document.createTextNode(e)),n=n||"</em>";var o=document.createElement("div");o.appendChild(document.createTextNode(n));var s=document.createElement("div");return s.appendChild(document.createTextNode(t)),s.innerHTML.replace(RegExp(r(i.innerHTML),"g"),e).replace(RegExp(r(o.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){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){t.exports=function(t){return JSON.parse(JSON.stringify(t))}},function(t,e,n){"use strict";function r(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 i(t,e){function n(){var n=Array.prototype.slice.call(arguments,0);"string"!=typeof n[0]&&n.unshift(e),r.apply(this,n),this.name="AlgoliaSearch"+t+"Error"}return o(n,r),n}var o=n(20);o(r,Error),t.exports={AlgoliaSearchError:r,UnparsableJSON:i("UnparsableJSON","Could not parse the incoming response as JSON, see err.more for details"),RequestTimeout:i("RequestTimeout","Request timedout before getting a response"),Network:i("Network","Network issue, see err.more for details"),JSONPScriptFail:i("JSONPScriptFail","<script> was loaded but did not call our provided callback"),JSONPScriptError:i("JSONPScriptError","<script> unable to load due to an `error` event on it"),Unknown:i("Unknown","Unknown error occured")}},function(t,e,n){(function(r){function i(){return"undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function o(){var t=arguments,n=this.useColors;if(t[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+t[0]+(n?"%c ":" ")+"+"+e.humanize(this.diff),!n)return t;var r="color: "+this.color;t=[t[0],r,"color: inherit"].concat(Array.prototype.slice.call(t,1));var i=0,o=0;return t[0].replace(/%[a-z%]/g,function(t){"%%"!==t&&(i++,"%c"===t&&(o=i))}),t.splice(o,0,r),t}function s(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function a(t){try{null==t?e.storage.removeItem("debug"):e.storage.debug=t}catch(t){}}function u(){try{return e.storage.debug}catch(t){}if(void 0!==r&&"env"in r)return n.i({NODE_ENV:"production"}).DEBUG}e=t.exports=n(50),e.log=s,e.formatArgs=o,e.save=a,e.load=u,e.useColors=i,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(u())}).call(e,n(11))},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){"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,n){"use strict";function r(t,e,n,r){var i;if(!n)return this;for(e=e.split(h),n=r?c(n,r):n,this._callbacks=this._callbacks||{};i=e.shift();)this._callbacks[i]=this._callbacks[i]||{sync:[],async:[]},this._callbacks[i][t].push(n);return this}function i(t,e,n){return r.call(this,"async",t,e,n)}function o(t,e,n){return r.call(this,"sync",t,e,n)}function s(t){var e;if(!this._callbacks)return this;for(t=t.split(h);e=t.shift();)delete this._callbacks[e];return this}function a(t){var e,n,r,i,o;if(!this._callbacks)return this;for(t=t.split(h),r=[].slice.call(arguments,1);(e=t.shift())&&(n=this._callbacks[e]);)i=u(n.sync,this,[e].concat(r)),o=u(n.async,this,[e].concat(r)),i()&&l(o);return this}function u(t,e,n){function r(){for(var r,i=0,o=t.length;!r&&i<o;i+=1)r=!1===t[i].apply(e,n);return!r}return r}function c(t,e){return t.bind?t.bind(e):function(){t.apply(e,[].slice.call(arguments,0))}}var l=n(56),h=/\s+/;t.exports={onSync:o,onAsync:i,off:s,trigger:a}},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function i(t){if(l===setTimeout)return setTimeout(t,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(t,0);try{return l(t,0)}catch(e){try{return l.call(null,t,0)}catch(e){return l.call(this,t,0)}}}function o(t){if(h===clearTimeout)return clearTimeout(t);if((h===r||!h)&&clearTimeout)return h=clearTimeout,clearTimeout(t);try{return h(t)}catch(e){try{return h.call(null,t)}catch(e){return h.call(this,t)}}}function s(){g&&p&&(g=!1,p.length?d=p.concat(d):m=-1,d.length&&a())}function a(){if(!g){var t=i(s);g=!0;for(var e=d.length;e;){for(p=d,d=[];++m<e;)p&&p[m].run();m=-1,e=d.length}p=null,g=!1,o(t)}}function u(t,e){this.fun=t,this.array=e}function c(){}var l,h,f=t.exports={};!function(){try{l="function"==typeof setTimeout?setTimeout:n}catch(t){l=n}try{h="function"==typeof clearTimeout?clearTimeout:r}catch(t){h=r}}();var p,d=[],g=!1,m=-1;f.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];d.push(new u(t,e)),1!==d.length||g||i(a)},u.prototype.run=function(){this.fun.apply(null,this.array)},f.title="browser",f.browser=!0,f.env={},f.argv=[],f.version="",f.versions={},f.on=c,f.addListener=c,f.once=c,f.off=c,f.removeListener=c,f.removeAllListeners=c,f.emit=c,f.binding=function(t){throw new Error("process.binding is not supported")},f.cwd=function(){return"/"},f.chdir=function(t){throw new Error("process.chdir is not supported")},f.umask=function(){return 0}},function(t,e,n){function r(t,e){return function(n,r,o){if("function"==typeof n&&"object"==typeof r||"object"==typeof o)throw new i.AlgoliaSearchError("index.search usage is index.search(query, params, cb)");0===arguments.length||"function"==typeof n?(o=n,n=""):1!==arguments.length&&"function"!=typeof r||(o=r,r=void 0),"object"==typeof n&&null!==n?(r=n,n=void 0):void 0!==n&&null!==n||(n="");var s="";void 0!==n&&(s+=t+"="+encodeURIComponent(n));var a;return void 0!==r&&(r.additionalUA&&(a=r.additionalUA,delete r.additionalUA),s=this.as._getSearchParams(r,s)),this._search(s,e,o,a)}}t.exports=r;var i=n(5)},function(t,e,n){"use strict";function r(t){t&&t.el||i.error("EventBus initialized without el"),this.$el=o.element(t.el)}var i=n(0),o=n(1);i.mixin(r.prototype,{trigger:function(t){var e=[].slice.call(arguments,1),n=i.Event("autocomplete:"+t);return this.$el.trigger(n,e),n}}),t.exports=r},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,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){t.exports="0.28.0"},function(t,e){!function(e,n){t.exports=function(t){var e=function(){function e(t){return null==t?String(t):X[Q.call(t)]||"object"}function n(t){return"function"==e(t)}function r(t){return null!=t&&t==t.window}function i(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function o(t){return"object"==e(t)}function s(t){return o(t)&&!r(t)&&Object.getPrototypeOf(t)==Object.prototype}function a(t){var e=!!t&&"length"in t&&t.length,n=E.type(t);return"function"!=n&&!r(t)&&("array"==n||0===e||"number"==typeof e&&e>0&&e-1 in t)}function u(t){return I.call(t,function(t){return null!=t})}function c(t){return t.length>0?E.fn.concat.apply([],t):t}function l(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 h(t){return t in R?R[t]:R[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function f(t,e){return"number"!=typeof e||D[l(t)]?e:e+"px"}function p(t){var e,n;return P[t]||(e=L.createElement(t),L.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),P[t]=n),P[t]}function d(t){return"children"in t?j.call(t.children):E.map(t.childNodes,function(t){if(1==t.nodeType)return t})}function g(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 m(t,e,n){for(C in e)n&&(s(e[C])||tt(e[C]))?(s(e[C])&&!s(t[C])&&(t[C]={}),tt(e[C])&&!tt(t[C])&&(t[C]=[]),m(t[C],e[C],n)):e[C]!==S&&(t[C]=e[C])}function v(t,e){return null==e?E(t):E(t).filter(e)}function y(t,e,r,i){return n(e)?e.call(t,r,i):e}function b(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function w(t,e){var n=t.className||"",r=n&&n.baseVal!==S;if(e===S)return r?n.baseVal:n;r?n.baseVal=e:t.className=e}function _(t){try{return t?"true"==t||"false"!=t&&("null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?E.parseJSON(t):t):t}catch(e){return t}}function x(t,e){e(t);for(var n=0,r=t.childNodes.length;n<r;n++)x(t.childNodes[n],e)}var S,C,E,A,T,k,O=[],N=O.concat,I=O.filter,j=O.slice,L=t.document,P={},R={},D={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},$=/^\s*<(\w+|!)[^>]*>/,M=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,H=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,q=/^(?:body|html)$/i,F=/([A-Z])/g,z=["val","css","html","text","data","width","height","offset"],B=["after","prepend","before","append"],U=L.createElement("table"),V=L.createElement("tr"),K={tr:L.createElement("tbody"),tbody:U,thead:U,tfoot:U,td:V,th:V,"*":L.createElement("div")},J=/complete|loaded|interactive/,W=/^[\w-]*$/,X={},Q=X.toString,G={},Z=L.createElement("div"),Y={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},tt=Array.isArray||function(t){return t instanceof Array};return G.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=Z).appendChild(t),r=~G.qsa(i,e).indexOf(t),o&&Z.removeChild(t),r},T=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},k=function(t){return I.call(t,function(e,n){return t.indexOf(e)==n})},G.fragment=function(t,e,n){var r,i,o;return M.test(t)&&(r=E(L.createElement(RegExp.$1))),r||(t.replace&&(t=t.replace(H,"<$1></$2>")),e===S&&(e=$.test(t)&&RegExp.$1),e in K||(e="*"),o=K[e],o.innerHTML=""+t,r=E.each(j.call(o.childNodes),function(){o.removeChild(this)})),s(n)&&(i=E(r),E.each(n,function(t,e){z.indexOf(t)>-1?i[t](e):i.attr(t,e)})),r},G.Z=function(t,e){return new g(t,e)},G.isZ=function(t){return t instanceof G.Z},G.init=function(t,e){var r;if(!t)return G.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&$.test(t))r=G.fragment(t,RegExp.$1,e),t=null;else{if(e!==S)return E(e).find(t);r=G.qsa(L,t)}else{if(n(t))return E(L).ready(t);if(G.isZ(t))return t;if(tt(t))r=u(t);else if(o(t))r=[t],t=null;else if($.test(t))r=G.fragment(t.trim(),RegExp.$1,e),t=null;else{if(e!==S)return E(e).find(t);r=G.qsa(L,t)}}return G.Z(r,t)},E=function(t,e){return G.init(t,e)},E.extend=function(t){var e,n=j.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){m(t,n,e)}),t},G.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,s=W.test(o);return t.getElementById&&s&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:j.call(s&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},E.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},E.type=e,E.isFunction=n,E.isWindow=r,E.isArray=tt,E.isPlainObject=s,E.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},E.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},E.inArray=function(t,e,n){return O.indexOf.call(e,t,n)},E.camelCase=T,E.trim=function(t){return null==t?"":String.prototype.trim.call(t)},E.uuid=0,E.support={},E.expr={},E.noop=function(){},E.map=function(t,e){var n,r,i,o=[];if(a(t))for(r=0;r<t.length;r++)null!=(n=e(t[r],r))&&o.push(n);else for(i in t)null!=(n=e(t[i],i))&&o.push(n);return c(o)},E.each=function(t,e){var n,r;if(a(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},E.grep=function(t,e){return I.call(t,e)},t.JSON&&(E.parseJSON=JSON.parse),E.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(t,e){X["[object "+e+"]"]=e.toLowerCase()}),E.fn={constructor:G.Z,length:0,forEach:O.forEach,reduce:O.reduce,push:O.push,sort:O.sort,splice:O.splice,indexOf:O.indexOf,concat:function(){var t,e,n=[];for(t=0;t<arguments.length;t++)e=arguments[t],n[t]=G.isZ(e)?e.toArray():e;return N.apply(G.isZ(this)?this.toArray():this,n)},map:function(t){return E(E.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return E(j.apply(this,arguments))},ready:function(t){return J.test(L.readyState)&&L.body?t(E):L.addEventListener("DOMContentLoaded",function(){t(E)},!1),this},get:function(t){return t===S?j.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 O.every.call(this,function(e,n){return!1!==t.call(e,n,e)}),this},filter:function(t){return n(t)?this.not(this.not(t)):E(I.call(this,function(e){return G.matches(e,t)}))},add:function(t,e){return E(k(this.concat(E(t,e))))},is:function(t){return this.length>0&&G.matches(this[0],t)},not:function(t){var e=[];if(n(t)&&t.call!==S)this.each(function(n){t.call(this,n)||e.push(this)});else{var r="string"==typeof t?this.filter(t):a(t)&&n(t.item)?j.call(t):E(t);this.forEach(function(t){r.indexOf(t)<0&&e.push(t)})}return E(e)},has:function(t){return this.filter(function(){return o(t)?E.contains(this,t):E(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&&!o(t)?t:E(t)},last:function(){var t=this[this.length-1];return t&&!o(t)?t:E(t)},find:function(t){var e=this;return t?"object"==typeof t?E(t).filter(function(){var t=this;return O.some.call(e,function(e){return E.contains(e,t)})}):1==this.length?E(G.qsa(this[0],t)):this.map(function(){return G.qsa(this,t)}):E()},closest:function(t,e){var n=[],r="object"==typeof t&&E(t);return this.each(function(o,s){for(;s&&!(r?r.indexOf(s)>=0:G.matches(s,t));)s=s!==e&&!i(s)&&s.parentNode;s&&n.indexOf(s)<0&&n.push(s)}),E(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=E.map(n,function(t){if((t=t.parentNode)&&!i(t)&&e.indexOf(t)<0)return e.push(t),t});return v(e,t)},parent:function(t){return v(k(this.pluck("parentNode")),t)},children:function(t){return v(this.map(function(){return d(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||j.call(this.childNodes)})},siblings:function(t){return v(this.map(function(t,e){return I.call(d(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return E.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=p(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=n(t);if(this[0]&&!e)var r=E(t).get(0),i=r.parentNode||this.length>1;return this.each(function(n){E(this).wrapAll(e?t.call(this,n):i?r.cloneNode(!0):r)})},wrapAll:function(t){if(this[0]){E(this[0]).before(t=E(t));for(var e;(e=t.children()).length;)t=e.first();E(t).append(this)}return this},wrapInner:function(t){var e=n(t);return this.each(function(n){var r=E(this),i=r.contents(),o=e?t.call(this,n):t;i.length?i.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){E(this).replaceWith(E(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=E(this);(t===S?"none"==e.css("display"):t)?e.show():e.hide()})},prev:function(t){return E(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return E(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;E(this).empty().append(y(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=y(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,e){var n;return"string"!=typeof t||1 in arguments?this.each(function(n){if(1===this.nodeType)if(o(t))for(C in t)b(this,C,t[C]);else b(this,t,y(this,e,n,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(n=this[0].getAttribute(t))?n:S},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){b(this,t)},this)})},prop:function(t,e){return t=Y[t]||t,1 in arguments?this.each(function(n){this[t]=y(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=Y[t]||t,this.each(function(){delete this[t]})},data:function(t,e){var n="data-"+t.replace(F,"-$1").toLowerCase(),r=1 in arguments?this.attr(n,e):this.attr(n);return null!==r?_(r):S},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=y(this,t,e,this.value)})):this[0]&&(this[0].multiple?E(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each(function(t){var n=E(this),r=y(this,e,t,n.offset()),i=n.offsetParent().offset(),o={top:r.top-i.top,left:r.left-i.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)});if(!this.length)return null;if(L.documentElement!==this[0]&&!E.contains(L.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,n){if(arguments.length<2){var r=this[0];if("string"==typeof t){if(!r)return;return r.style[T(t)]||getComputedStyle(r,"").getPropertyValue(t)}if(tt(t)){if(!r)return;var i={},o=getComputedStyle(r,"");return E.each(t,function(t,e){i[e]=r.style[T(e)]||o.getPropertyValue(e)}),i}}var s="";if("string"==e(t))n||0===n?s=l(t)+":"+f(t,n):this.each(function(){this.style.removeProperty(l(t))});else for(C in t)t[C]||0===t[C]?s+=l(C)+":"+f(C,t[C])+";":this.each(function(){this.style.removeProperty(l(C))});return this.each(function(){this.style.cssText+=";"+s})},index:function(t){return t?this.indexOf(E(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&O.some.call(this,function(t){return this.test(w(t))},h(t))},addClass:function(t){return t?this.each(function(e){if("className"in this){A=[];var n=w(this);y(this,t,e,n).split(/\s+/g).forEach(function(t){E(this).hasClass(t)||A.push(t)},this),A.length&&w(this,n+(n?" ":"")+A.join(" "))}}):this},removeClass:function(t){return this.each(function(e){if("className"in this){if(t===S)return w(this,"");A=w(this),y(this,t,e,A).split(/\s+/g).forEach(function(t){A=A.replace(h(t)," ")}),w(this,A.trim())}})},toggleClass:function(t,e){return t?this.each(function(n){var r=E(this);y(this,t,n,w(this)).split(/\s+/g).forEach(function(t){(e===S?!r.hasClass(t):e)?r.addClass(t):r.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var e="scrollTop"in this[0];return t===S?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 t===S?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(),n=this.offset(),r=q.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(E(t).css("margin-top"))||0,n.left-=parseFloat(E(t).css("margin-left"))||0,r.top+=parseFloat(E(e[0]).css("border-top-width"))||0,r.left+=parseFloat(E(e[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||L.body;t&&!q.test(t.nodeName)&&"static"==E(t).css("position");)t=t.offsetParent;return t})}},E.fn.detach=E.fn.remove,["width","height"].forEach(function(t){var e=t.replace(/./,function(t){return t[0].toUpperCase()});E.fn[t]=function(n){var o,s=this[0];return n===S?r(s)?s["inner"+e]:i(s)?s.documentElement["scroll"+e]:(o=this.offset())&&o[t]:this.each(function(e){s=E(this),s.css(t,y(this,n,e,s[t]()))})}}),B.forEach(function(n,r){var i=r%2;E.fn[n]=function(){var n,o,s=E.map(arguments,function(t){var r=[];return n=e(t),"array"==n?(t.forEach(function(t){return t.nodeType!==S?r.push(t):E.zepto.isZ(t)?r=r.concat(t.get()):void(r=r.concat(G.fragment(t)))}),r):"object"==n||null==t?t:G.fragment(t)}),a=this.length>1;return s.length<1?this:this.each(function(e,n){o=i?n:n.parentNode,n=0==r?n.nextSibling:1==r?n.firstChild:2==r?n:null;var u=E.contains(L.documentElement,o);s.forEach(function(e){if(a)e=e.cloneNode(!0);else if(!o)return E(e).remove();o.insertBefore(e,n),u&&x(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)}})})})},E.fn[i?n+"To":"insert"+(r?"Before":"After")]=function(t){return E(t)[n](this),this}}),G.Z.prototype=g.prototype=E.fn,G.uniq=k,G.deserializeValue=_,E.zepto=G,E}();return function(e){function n(t){return t._zid||(t._zid=p++)}function r(t,e,r,s){if(e=i(e),e.ns)var a=o(e.ns);return(v[n(t)]||[]).filter(function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||a.test(t.ns))&&(!r||n(t.fn)===n(r))&&(!s||t.sel==s)})}function i(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function o(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function s(t,e){return t.del&&!b&&t.e in w||!!e}function a(t){return _[t]||b&&w[t]||t}function u(t,r,o,u,c,h,p){var d=n(t),g=v[d]||(v[d]=[]);r.split(/\s/).forEach(function(n){if("ready"==n)return e(document).ready(o);var r=i(n);r.fn=o,r.sel=c,r.e in _&&(o=function(t){var n=t.relatedTarget;if(!n||n!==this&&!e.contains(this,n))return r.fn.apply(this,arguments)}),r.del=h;var d=h||o;r.proxy=function(e){if(e=l(e),!e.isImmediatePropagationStopped()){e.data=u;var n=d.apply(t,e._args==f?[e]:[e].concat(e._args));return!1===n&&(e.preventDefault(),e.stopPropagation()),n}},r.i=g.length,g.push(r),"addEventListener"in t&&t.addEventListener(a(r.e),r.proxy,s(r,p))})}function c(t,e,i,o,u){var c=n(t);(e||"").split(/\s/).forEach(function(e){r(t,e,i,o).forEach(function(e){delete v[c][e.i],"removeEventListener"in t&&t.removeEventListener(a(e.e),e.proxy,s(e,u))})})}function l(t,n){return!n&&t.isDefaultPrevented||(n||(n=t),e.each(E,function(e,r){var i=n[e];t[e]=function(){return this[r]=x,i&&i.apply(n,arguments)},t[r]=S}),t.timeStamp||(t.timeStamp=Date.now()),(n.defaultPrevented!==f?n.defaultPrevented:"returnValue"in n?!1===n.returnValue:n.getPreventDefault&&n.getPreventDefault())&&(t.isDefaultPrevented=x)),t}function h(t){var e,n={originalEvent:t};for(e in t)C.test(e)||t[e]===f||(n[e]=t[e]);return l(n,t)}var f,p=1,d=Array.prototype.slice,g=e.isFunction,m=function(t){return"string"==typeof t},v={},y={},b="onfocusin"in t,w={focus:"focusin",blur:"focusout"},_={mouseenter:"mouseover",mouseleave:"mouseout"};y.click=y.mousedown=y.mouseup=y.mousemove="MouseEvents",e.event={add:u,remove:c},e.proxy=function(t,r){var i=2 in arguments&&d.call(arguments,2);if(g(t)){var o=function(){return t.apply(r,i?i.concat(d.call(arguments)):arguments)};return o._zid=n(t),o}if(m(r))return i?(i.unshift(t[r],t),e.proxy.apply(null,i)):e.proxy(t[r],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 x=function(){return!0},S=function(){return!1},C=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,E={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};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,r,i,o){var s,a,l=this;return t&&!m(t)?(e.each(t,function(t,e){l.on(t,n,r,e,o)}),l):(m(n)||g(i)||!1===i||(i=r,r=n,n=f),i!==f&&!1!==r||(i=r,r=f),!1===i&&(i=S),l.each(function(l,f){o&&(s=function(t){return c(f,t.type,i),i.apply(this,arguments)}),n&&(a=function(t){var r,o=e(t.target).closest(n,f).get(0);if(o&&o!==f)return r=e.extend(h(t),{currentTarget:o,liveFired:f}),(s||i).apply(o,[r].concat(d.call(arguments,1)))}),u(f,t,i,r,n,a||s)}))},e.fn.off=function(t,n,r){var i=this;return t&&!m(t)?(e.each(t,function(t,e){i.off(t,n,e)}),i):(m(n)||g(r)||!1===r||(r=n,n=f),!1===r&&(r=S),i.each(function(){c(this,t,r,n)}))},e.fn.trigger=function(t,n){return t=m(t)||e.isPlainObject(t)?e.Event(t):l(t),t._args=n,this.each(function(){t.type in w&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)})},e.fn.triggerHandler=function(t,n){var i,o;return this.each(function(s,a){i=h(m(t)?e.Event(t):t),i._args=n,i.target=a,e.each(r(a,t.type||t),function(t,e){if(o=e.proxy(i),i.isImmediatePropagationStopped())return!1})}),o},"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){m(t)||(e=t,t=e.type);var n=document.createEvent(y[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),l(n)}}(e),function(t){var e,n=[];t.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))})}}(e),function(t){function e(e,r){var u=e[a],c=u&&i[u];if(void 0===r)return c||n(e);if(c){if(r in c)return c[r];var l=s(r);if(l in c)return c[l]}return o.call(t(e),r)}function n(e,n,o){var u=e[a]||(e[a]=++t.uuid),c=i[u]||(i[u]=r(e));return void 0!==n&&(c[s(n)]=o),c}function r(e){var n={};return t.each(e.attributes||u,function(e,r){0==r.name.indexOf("data-")&&(n[s(r.name.replace("data-",""))]=t.zepto.deserializeValue(r.value))}),n}var i={},o=t.fn.data,s=t.camelCase,a=t.expando="Zepto"+ +new Date,u=[];t.fn.data=function(r,i){return void 0===i?t.isPlainObject(r)?this.each(function(e,i){t.each(r,function(t,e){n(i,t,e)})}):0 in this?e(this[0],r):void 0:this.each(function(){n(this,r,i)})},t.data=function(e,n,r){return t(e).data(n,r)},t.hasData=function(e){var n=e[a],r=n&&i[n];return!!r&&!t.isEmptyObject(r)},t.fn.removeData=function(e){return"string"==typeof e&&(e=e.split(/\s+/)),this.each(function(){var n=this[a],r=n&&i[n];r&&t.each(e||r,function(t){delete r[e?s(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)}})}(e),e}(e)}(window)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default="2.3.3"},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(17),i=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default=i.default},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){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(66),o=r(i),s=n(47),a=r(s),u=n(18),c=r(u),l=(0,o.default)(a.default);l.version=c.default,e.default=l},function(t,e,n){function r(t,e,r){var o=n(6)("algoliasearch"),s=n(4),a=n(7),c=n(8),l="Usage: algoliasearch(applicationID, apiKey, opts)";if(!0!==r._allowEmptyCredentials&&!t)throw new u.AlgoliaSearchError("Please provide an application ID. "+l);if(!0!==r._allowEmptyCredentials&&!e)throw new u.AlgoliaSearchError("Please provide an API key. "+l);this.applicationID=t,this.apiKey=e,this.hosts={read:[],write:[]},r=r||{};var h=r.protocol||"https:";if(this._timeouts=r.timeouts||{connect:1e3,read:2e3,write:3e4},r.timeout&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=r.timeout),/:$/.test(h)||(h+=":"),"http:"!==r.protocol&&"https:"!==r.protocol)throw new u.AlgoliaSearchError("protocol must be `http:` or `https:` (was `"+r.protocol+"`)");if(this._checkAppIdData(),r.hosts)a(r.hosts)?(this.hosts.read=s(r.hosts),this.hosts.write=s(r.hosts)):(this.hosts.read=s(r.hosts.read),this.hosts.write=s(r.hosts.write));else{var f=c(this._shuffleResult,function(e){return t+"-"+e+".algolianet.com"});this.hosts.read=[this.applicationID+"-dsn.algolia.net"].concat(f),this.hosts.write=[this.applicationID+".algolia.net"].concat(f)}this.hosts.read=c(this.hosts.read,i(h)),this.hosts.write=c(this.hosts.write,i(h)),this.extraHeaders=[],this.cache=r._cache||{},this._ua=r._ua,this._useCache=!(void 0!==r._useCache&&!r._cache)||r._useCache,this._useFallback=void 0===r.useFallback||r.useFallback,this._setTimeout=r._setTimeout,o("init done, %j",this)}function i(t){return function(e){return t+"//"+e.toLowerCase()}}function o(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 s(t){for(var e,n,r=t.length;0!==r;)n=Math.floor(Math.random()*r),r-=1,e=t[r],t[r]=t[n],t[n]=e;return t}function a(t){var e={};for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var r;r="x-algolia-api-key"===n||"x-algolia-application-id"===n?"**hidden for security purposes**":t[n],e[n]=r}return e}t.exports=r;var u=n(5),c=n(31),l=n(23),h=n(35),f=n.i({NODE_ENV:"production"}).RESET_APP_DATA_TIMER&&parseInt(n.i({NODE_ENV:"production"}).RESET_APP_DATA_TIMER,10)||12e4;r.prototype.initIndex=function(t){return new l(this,t)},r.prototype.setExtraHeader=function(t,e){this.extraHeaders.push({name:t.toLowerCase(),value:e})},r.prototype.addAlgoliaAgent=function(t){-1===this._ua.indexOf(";"+t)&&(this._ua+=";"+t)},r.prototype._jsonRequest=function(t){function e(n,c){function v(t){var e=t&&t.body&&t.body.message&&t.body.status||t.statusCode||t&&t.body&&200;s("received response: statusCode: %s, computed statusCode: %d, headers: %j",t.statusCode,e,t.headers);var n=2===Math.floor(e/100),o=new Date;if(m.push({currentHost:S,headers:a(i),content:r||null,contentLength:void 0!==r?r.length:null,method:c.method,timeouts:c.timeouts,url:c.url,startTime:x,endTime:o,duration:o-x,statusCode:e}),n)return f._useCache&&h&&(h[_]=t.responseText),t.body;if(4!==Math.floor(e/100))return p+=1,b();s("unrecoverable error");var l=new u.AlgoliaSearchError(t.body&&t.body.message,{debugData:m,statusCode:e});return f._promise.reject(l)}function y(e){s("error: %s, stack: %s",e.message,e.stack);var n=new Date;return m.push({currentHost:S,headers:a(i),content:r||null,contentLength:void 0!==r?r.length:null,method:c.method,timeouts:c.timeouts,url:c.url,startTime:x,endTime:n,duration:n-x}),e instanceof u.AlgoliaSearchError||(e=new u.Unknown(e&&e.message,e)),p+=1,e instanceof u.Unknown||e instanceof u.UnparsableJSON||p>=f.hosts[t.hostType].length&&(d||!g)?(e.debugData=m,f._promise.reject(e)):e instanceof u.RequestTimeout?w():b()}function b(){return s("retrying request"),f._incrementHostIndex(t.hostType),e(n,c)}function w(){return s("retrying request with higher timeout"),f._incrementHostIndex(t.hostType),f._incrementTimeoutMultipler(),c.timeouts=f._getTimeoutsForRequest(t.hostType),e(n,c)}f._checkAppIdData();var _,x=new Date;if(f._useCache&&(_=t.url),f._useCache&&r&&(_+="_body_"+c.body),f._useCache&&h&&void 0!==h[_])return s("serving response from cache"),f._promise.resolve(JSON.parse(h[_]));if(p>=f.hosts[t.hostType].length)return!g||d?(s("could not get any response"),f._promise.reject(new u.AlgoliaSearchError("Cannot connect to the AlgoliaSearch API. Send an email to support@algolia.com to report and resolve the issue. Application id was: "+f.applicationID,{debugData:m}))):(s("switching to fallback"),p=0,c.method=t.fallback.method,c.url=t.fallback.url,c.jsonBody=t.fallback.body,c.jsonBody&&(c.body=o(c.jsonBody)),i=f._computeRequestHeaders(l),c.timeouts=f._getTimeoutsForRequest(t.hostType),f._setHostIndexByType(0,t.hostType),d=!0,e(f._request.fallback,c));var S=f._getHostByType(t.hostType),C=S+c.url,E={body:c.body,jsonBody:c.jsonBody,method:c.method,headers:i,timeouts:c.timeouts,debug:s};return s("method: %s, url: %s, headers: %j, timeouts: %d",E.method,C,E.headers,E.timeouts),n===f._request.fallback&&s("using fallback"),n.call(f,C,E).then(v,y)}this._checkAppIdData();var r,i,s=n(6)("algoliasearch:"+t.url),l=t.additionalUA||"",h=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,i=this._computeRequestHeaders(l,!1)):i=this._computeRequestHeaders(l),void 0!==t.body&&(r=o(t.body)),s("request start");var m=[],v=e(f._request,{url:t.url,method:t.method,body:r,jsonBody:t.body,timeouts:f._getTimeoutsForRequest(t.hostType)});if(!t.callback)return v;v.then(function(e){c(function(){t.callback(null,e)},f._setTimeout||setTimeout)},function(e){c(function(){t.callback(e)},f._setTimeout||setTimeout)})},r.prototype._getSearchParams=function(t,e){if(void 0===t||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])?o(t[n]):t[n]));return e},r.prototype._computeRequestHeaders=function(t,e){var r=n(2),i=t?this._ua+";"+t:this._ua,o={"x-algolia-agent":i,"x-algolia-application-id":this.applicationID};return!1!==e&&(o["x-algolia-api-key"]=this.apiKey),this.userToken&&(o["x-algolia-usertoken"]=this.userToken),this.securityTags&&(o["x-algolia-tagfilters"]=this.securityTags),this.extraHeaders&&r(this.extraHeaders,function(t){o[t.name]=t.value}),o},r.prototype.search=function(t,e,r){var i=n(7),o=n(8);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("&"),c="/1/indexes/*/queries";return void 0!==e.strategy&&(c+="?strategy="+e.strategy),this._jsonRequest({cache:this.cache,method:"POST",url:c,body:a,hostType:"read",fallback:{method:"GET",url:"/1/indexes/*",body:{params:u}},callback:r})},r.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},r.prototype.setUserToken=function(t){this.userToken=t},r.prototype.clearCache=function(){this.cache={}},r.prototype.setRequestTimeout=function(t){t&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=t)},r.prototype.setTimeouts=function(t){this._timeouts=t},r.prototype.getTimeouts=function(){return this._timeouts},r.prototype._getAppIdData=function(){var t=h.get(this.applicationID);return null!==t&&this._cacheAppIdData(t),t},r.prototype._setAppIdData=function(t){return t.lastChange=(new Date).getTime(),this._cacheAppIdData(t),h.set(this.applicationID,t)},r.prototype._checkAppIdData=function(){var t=this._getAppIdData(),e=(new Date).getTime();return null===t||e-t.lastChange>f?this._resetInitialAppIdData(t):t},r.prototype._resetInitialAppIdData=function(t){var e=t||{};return e.hostIndexes={read:0,write:0},e.timeoutMultiplier=1,e.shuffleResult=e.shuffleResult||s([1,2,3]),this._setAppIdData(e)},r.prototype._cacheAppIdData=function(t){this._hostIndexes=t.hostIndexes,this._timeoutMultiplier=t.timeoutMultiplier,this._shuffleResult=t.shuffleResult},r.prototype._partialAppIdDataUpdate=function(t){var e=n(2),r=this._getAppIdData();return e(t,function(t,e){r[e]=t}),this._setAppIdData(r)},r.prototype._getHostByType=function(t){return this.hosts[t][this._getHostIndexByType(t)]},r.prototype._getTimeoutMultiplier=function(){return this._timeoutMultiplier},r.prototype._getHostIndexByType=function(t){return this._hostIndexes[t]},r.prototype._setHostIndexByType=function(t,e){var r=n(4),i=r(this._hostIndexes);return i[e]=t,this._partialAppIdDataUpdate({hostIndexes:i}),t},r.prototype._incrementHostIndex=function(t){return this._setHostIndexByType((this._getHostIndexByType(t)+1)%this.hosts[t].length,t)},r.prototype._incrementTimeoutMultipler=function(){var t=Math.max(this._timeoutMultiplier+1,4);return this._partialAppIdDataUpdate({timeoutMultiplier:t})},r.prototype._getTimeoutsForRequest=function(t){return{connect:this._timeouts.connect*this._timeoutMultiplier,complete:this._timeouts[t]*this._timeoutMultiplier}}},function(t,e,n){function r(t,e){this.indexName=e,this.as=t,this.typeAheadArgs=null,this.typeAheadValueOption=null,this.cache={}}var i=n(12),o=n(29),s=n(30);t.exports=r,r.prototype.clearCache=function(){this.cache={}},r.prototype.search=i("query"),r.prototype.similarSearch=i("similarQuery"),r.prototype.browse=function(t,e,r){var i,o,s=n(32),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})},r.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})},r.prototype.searchForFacetValues=function(t,e){var r=n(4),i=n(33);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})},r.prototype.searchFacet=o(function(t,e){return this.searchForFacetValues(t,e)},s("index.searchFacet(params[, callback])","index.searchForFacetValues(params[, callback])")),r.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})},r.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})},r.prototype.getObjects=function(t,e,r){var i=n(7),o=n(8);if(!i(t))throw new Error("Usage: index.getObjects(arrayOfObjectIDs[, callback])");var s=this;1!==arguments.length&&"function"!=typeof e||(r=e,e=void 0);var a={requests:o(t,function(t){var n={indexName:s.indexName,objectID:t};return e&&(n.attributesToRetrieve=e.join(",")),n})};return this.as._jsonRequest({method:"POST",url:"/1/indexes/*/objects",hostType:"read",body:a,callback:r})},r.prototype.as=null,r.prototype.indexName=null,r.prototype.typeAheadArgs=null,r.prototype.typeAheadValueOption=null},function(t,e,n){"use strict";var r=n(22),i=n(25);t.exports=i(r,"(lite) ")},function(t,e,n){"use strict";var r=n(52),i=r.Promise||n(51).Promise;t.exports=function(t,e){function o(t,e,r){var i=n(4),a=n(26);return r=i(r||{}),void 0===r.protocol&&(r.protocol=a()),r._ua=r._ua||o.ua,new s(t,e,r)}function s(){t.apply(this,arguments)}var a=n(20),u=n(5),c=n(27),l=n(28),h=n(34);e=e||"",o.version=n(36),o.ua="Algolia for vanilla JavaScript "+e+o.version,o.initPlaces=h(o),r.__algolia={debug:n(6),algoliasearch:o};var f={hasXMLHttpRequest:"XMLHttpRequest"in r,hasXDomainRequest:"XDomainRequest"in r};return f.hasXMLHttpRequest&&(f.cors="withCredentials"in new XMLHttpRequest),a(s,t),s.prototype._request=function(t,e){return new i(function(n,r){function i(){if(!d){clearTimeout(p);var t;try{t={body:JSON.parse(m.responseText),responseText:m.responseText,statusCode:m.status,headers:m.getAllResponseHeaders&&m.getAllResponseHeaders()||{}}}catch(e){t=new u.UnparsableJSON({more:m.responseText})}t instanceof u.UnparsableJSON?r(t):n(t)}}function o(t){d||(clearTimeout(p),r(new u.Network({more:t})))}function s(){d=!0,m.abort(),r(new u.RequestTimeout)}function a(){v=!0,clearTimeout(p),p=setTimeout(s,e.timeouts.complete)}function l(){v||a()}function h(){!v&&m.readyState>1&&a()}if(!f.cors&&!f.hasXDomainRequest)return void r(new u.Network("CORS not supported"));t=c(t,e.headers);var p,d,g=e.body,m=f.cors?new XMLHttpRequest:new XDomainRequest,v=!1;p=setTimeout(s,e.timeouts.connect),m.onprogress=l,"onreadystatechange"in m&&(m.onreadystatechange=h),m.onload=i,m.onerror=o,m instanceof XMLHttpRequest?m.open(e.method,t,!0):m.open(e.method,t),f.cors&&(g&&("POST"===e.method?m.setRequestHeader("content-type","application/x-www-form-urlencoded"):m.setRequestHeader("content-type","application/json")),m.setRequestHeader("accept","application/json")),m.send(g)})},s.prototype._request.fallback=function(t,e){return t=c(t,e.headers),new i(function(n,r){l(t,e,function(t,e){if(t)return void r(t);n(e)})})},s.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)})}},o}},function(t,e,n){"use strict";function r(){var t=window.document.location.protocol;return"http:"!==t&&"https:"!==t&&(t="http:"),t}t.exports=r},function(t,e,n){"use strict";function r(t,e){return/\?/.test(t)?t+="&":t+="?",t+i(e)}t.exports=r;var i=n(65)},function(t,e,n){"use strict";function r(t,e,n){function r(){e.debug("JSONP: success"),m||f||(m=!0,h||(e.debug("JSONP: Fail. Script loaded but did not call the callback"),a(),n(new i.JSONPScriptFail)))}function s(){"loaded"!==this.readyState&&"complete"!==this.readyState||r()}function a(){clearTimeout(v),d.onload=null,d.onreadystatechange=null,d.onerror=null,p.removeChild(d)}function u(){try{delete window[g],delete window[g+"_loaded"]}catch(t){window[g]=window[g+"_loaded"]=void 0}}function c(){e.debug("JSONP: Script timeout"),f=!0,a(),n(new i.RequestTimeout)}function l(){e.debug("JSONP: Script error"),m||f||(a(),n(new i.JSONPScriptError))}if("GET"!==e.method)return void n(new Error("Method "+e.method+" "+t+" is not supported by JSONP."));e.debug("JSONP: start");var h=!1,f=!1;o+=1;var p=document.getElementsByTagName("head")[0],d=document.createElement("script"),g="algoliaJSONP_"+o,m=!1;window[g]=function(t){if(u(),f)return void e.debug("JSONP: Late answer, ignoring");h=!0,a(),n(null,{body:t})},t+="&callback="+g,e.jsonBody&&e.jsonBody.params&&(t+="&"+e.jsonBody.params);var v=setTimeout(c,e.timeouts.complete);d.onreadystatechange=s,d.onload=r,d.onerror=l,d.async=!0,d.defer=!0,d.src=t,p.appendChild(d)}t.exports=r;var i=n(5),o=0},function(t,e){t.exports=function(t,e){function n(){return r||(console.log(e),r=!0),t.apply(this,arguments)}var r=!1;return n}},function(t,e){t.exports=function(t,e){return"algoliasearch: `"+t+"` was replaced by `"+e+"`. Please see https://github.com/algolia/algoliasearch-client-js/wiki/Deprecated#"+t.toLowerCase().replace(".","").replace("()","")}},function(t,e){t.exports=function(t,e){e(t,0)}},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){t.exports=function(t,e){var r=n(63),i=n(2),o={};return i(r(t),function(n){!0!==e(n)&&(o[n]=t[n])}),o}},function(t,e,n){function r(t){return function(e,r,o){var s=n(4);o=o&&s(o)||{},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="",r="",o._allowEmptyCredentials=!0);var a=t(e,r,o),u=a.initIndex("places");return u.search=i("query","/1/places/query"),u}}t.exports=r;var i=n(12)},function(t,e,n){(function(e){function r(t,e){return u("localStorage failed with",e),s(),a=l,a.get(t)}function i(t,e){return 1===arguments.length?a.get(t):a.set(t,e)}function o(){try{return"localStorage"in e&&null!==e.localStorage&&(e.localStorage[c]||e.localStorage.setItem(c,JSON.stringify({})),!0)}catch(t){return!1}}function s(){try{e.localStorage.removeItem(c)}catch(t){}}var a,u=n(6)("algoliasearch:src/hostIndexState.js"),c="algoliasearch-client-js",l={state:{},set:function(t,e){return this.state[t]=e,this.state[t]},get:function(t){return this.state[t]||null}},h={set:function(t,n){l.set(t,n);try{var i=JSON.parse(e.localStorage[c]);return i[t]=n,e.localStorage[c]=JSON.stringify(i),i[t]}catch(e){return r(t,e)}},get:function(t){try{return JSON.parse(e.localStorage[c])[t]||null}catch(e){return r(t,e)}}};a=o()?h:l,t.exports={get:i,set:i,supportsLocalStorage:o}}).call(e,n(3))},function(t,e,n){"use strict";t.exports="3.22.1"},function(t,e,n){"use strict";t.exports=n(45)},function(t,e,n){"use strict";function r(t){t=t||{},t.templates=t.templates||{},t.source||l.error("missing source"),t.name&&!s(t.name)&&l.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?l.getUniqueId():t.name,this.source=t.source,this.displayFn=i(t.display||t.displayKey),this.templates=o(t.templates,this.displayFn),this.css=l.mixin({},p,t.appendTo?p.appendTo:{}),this.cssClasses=t.cssClasses=l.mixin({},p.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||l.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var e=l.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=t.$menu&&t.$menu.find(e+"-"+this.name).length>0?h.element(t.$menu.find(e+"-"+this.name)[0]):h.element(f.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=t.$menu}function i(t){function e(e){return e[t]}return t=t||"value",l.isFunction(t)?t:e}function o(t,e){function n(t){return"<p>"+e(t)+"</p>"}return{empty:t.empty&&l.templatify(t.empty),header:t.header&&l.templatify(t.header),footer:t.footer&&l.templatify(t.footer),suggestion:t.suggestion||n}}function s(t){return/^[_a-zA-Z0-9-]+$/.test(t)}var a="aaDataset",u="aaValue",c="aaDatum",l=n(0),h=n(1),f=n(14),p=n(9),d=n(10);r.extractDatasetName=function(t){return h.element(t).data(a)},r.extractValue=function(t){return h.element(t).data(u)},r.extractDatum=function(t){var e=h.element(t).data(c);return"string"==typeof e&&(e=JSON.parse(e)),e},l.mixin(r.prototype,d,{_render:function(t,e){function n(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!0}].concat(e),p.templates.empty.apply(this,e)}function r(){function t(t){var e,n=f.suggestion.replace("%PREFIX%",o.cssClasses.prefix).replace("%SUGGESTION%",o.cssClasses.suggestion);return e=h.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(p.templates.suggestion.apply(this,[t].concat(i))),e.data(a,p.name),e.data(u,p.displayFn(t)||void 0),e.data(c,JSON.stringify(t)),e.children().each(function(){h.element(this).css(o.css.suggestionChild)}),e}var n,r,i=[].slice.call(arguments,0),o=this,s=f.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return n=h.element(s).css(this.css.suggestions),r=l.map(e,t),n.append.apply(n,r),n}function i(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!s}].concat(e),p.templates.header.apply(this,e)}function o(){var e=[].slice.call(arguments,0);return e=[{query:t,isEmpty:!s}].concat(e),p.templates.footer.apply(this,e)}if(this.$el){var s,p=this,d=[].slice.call(arguments,2);this.$el.empty(),s=e&&e.length,this._isEmpty=!s,!s&&this.templates.empty?this.$el.html(n.apply(this,d)).prepend(p.templates.header?i.apply(this,d):null).append(p.templates.footer?o.apply(this,d):null):s&&this.$el.html(r.apply(this,d)).prepend(p.templates.header?i.apply(this,d):null).append(p.templates.footer?o.apply(this,d):null),this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(s?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(s?"without":"with")+"-"+this.name),this.trigger("rendered",t)}},getRoot:function(){return this.$el},update:function(t){function e(e){if(!n.canceled&&t===n.query){var r=[].slice.call(arguments,1);r=[t,e].concat(r),n._render.apply(n,r)}}var n=this;this.query=t,this.canceled=!1,this.source(t,e)},cancel:function(){this.canceled=!0},clear:function(){this.cancel(),this.$el.empty(),this.trigger("rendered","")},isEmpty:function(){return this._isEmpty},destroy:function(){this.$el=null}}),t.exports=r},function(t,e,n){"use strict";function r(t){var e,n,r,a=this;t=t||{},t.menu||o.error("menu is required"),o.isArray(t.datasets)||o.isObject(t.datasets)||o.error("1 or more datasets required"),t.datasets||o.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=t.minLength||0,this.templates={},this.appendTo=t.appendTo||!1,this.css=o.mixin({},c,t.appendTo?c.appendTo:{}),this.cssClasses=t.cssClasses=o.mixin({},c.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),e=o.bind(this._onSuggestionClick,this),n=o.bind(this._onSuggestionMouseEnter,this),r=o.bind(this._onSuggestionMouseLeave,this);var u=o.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=s.element(t.menu).on("click.aa",u,e).on("mouseenter.aa",u,n).on("mouseleave.aa",u,r),this.$container=t.appendTo?t.wrapper:this.$menu,t.templates&&t.templates.header&&(this.templates.header=o.templatify(t.templates.header),this.$menu.prepend(this.templates.header())),t.templates&&t.templates.empty&&(this.templates.empty=o.templatify(t.templates.empty),this.$empty=s.element('<div class="'+o.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty)),this.datasets=o.map(t.datasets,function(e){return i(a.$menu,e,t.cssClasses)}),o.each(this.datasets,function(t){var e=t.getRoot();e&&0===e.parent().length&&a.$menu.append(e),t.onSync("rendered",a._onRendered,a)}),t.templates&&t.templates.footer&&(this.templates.footer=o.templatify(t.templates.footer),this.$menu.append(this.templates.footer()));var l=this;s.element(window).resize(function(){l._redraw()})}function i(t,e,n){return new r.Dataset(o.mixin({$menu:t,cssClasses:n},e))}var o=n(0),s=n(1),a=n(10),u=n(38),c=n(9);o.mixin(r.prototype,a,{_onSuggestionClick:function(t){this.trigger("suggestionClicked",s.element(t.currentTarget))},_onSuggestionMouseEnter:function(t){var e=s.element(t.currentTarget);e.hasClass(o.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))||(this._removeCursor(),this._setCursor(e,!1))},_onSuggestionMouseLeave:function(t){if(t.relatedTarget){if(s.element(t.relatedTarget).closest("."+o.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0)return}this._removeCursor(),this.trigger("cursorRemoved")},_onRendered:function(t,e){function n(t){return t.isEmpty()}function r(t){return t.templates&&t.templates.empty}if(this.isEmpty=o.every(this.datasets,n),this.isEmpty)if(e.length>=this.minLength&&this.trigger("empty"),this.$empty)if(e.length<this.minLength)this._hide();else{var i=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(i),this._show()}else o.any(this.datasets,r)?e.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&this.$empty.empty(),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(o.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(o.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(t,e){t.first().addClass(o.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",e)},_removeCursor:function(){this._getCursor().removeClass(o.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(t){var e,n,r,i;if(this.isOpen){if(n=this._getCursor(),e=this._getSuggestions(),this._removeCursor(),r=e.index(n)+t,-1===(r=(r+1)%(e.length+1)-1))return void this.trigger("cursorRemoved");r<-1&&(r=e.length-1),this._setCursor(i=e.eq(r),!0),this._ensureVisible(i)}},_ensureVisible:function(t){var e,n,r,i;e=t.position().top,n=e+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("paddingTop"),10)+parseInt(this.$menu.css("paddingBottom"),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:u.extractDatum(t),value:u.extractValue(t),datasetName:u.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){function e(e){e.update(t)}o.each(this.datasets,e)},empty:function(){function t(t){t.clear()}o.each(this.datasets,t),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){function t(t){t.destroy()}this.$menu.off(".aa"),this.$menu=null,o.each(this.datasets,t)}}),r.Dataset=u,t.exports=r},function(t,e,n){"use strict";function r(t){var e,n,r,o,s=this;t=t||{},t.input||u.error("input is missing"),e=u.bind(this._onBlur,this),n=u.bind(this._onFocus,this),r=u.bind(this._onKeydown,this),o=u.bind(this._onInput,this),this.$hint=c.element(t.hint),this.$input=c.element(t.input).on("blur.aa",e).on("focus.aa",n).on("keydown.aa",r),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=u.noop),u.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",function(t){a[t.which||t.keyCode]||u.defer(u.bind(s._onInput,s,t))}):this.$input.on("input.aa",o),this.query=this.$input.val(),this.$overflowHelper=i(this.$input)}function i(t){return c.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:t.css("font-family"),fontSize:t.css("font-size"),fontStyle:t.css("font-style"),fontVariant:t.css("font-variant"),fontWeight:t.css("font-weight"),wordSpacing:t.css("word-spacing"),letterSpacing:t.css("letter-spacing"),textIndent:t.css("text-indent"),textRendering:t.css("text-rendering"),textTransform:t.css("text-transform")}).insertAfter(t)}function o(t,e){return r.normalizeQuery(t)===r.normalizeQuery(e)}function s(t){return t.altKey||t.ctrlKey||t.metaKey||t.shiftKey}var a;a={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"};var u=n(0),c=n(1),l=n(10);r.normalizeQuery=function(t){return(t||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},u.mixin(r.prototype,l,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(t){var e=a[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&&!s(e);break;case"up":case"down":n=!s(e);break;default:n=!1}n&&e.preventDefault()},_shouldTrigger:function(t,e){var n;switch(t){case"tab":n=!s(e);break;default:n=!0}return n},_checkInputValue:function(){var t,e,n;t=this.getInputValue(),e=o(t,this.query),n=!(!e||!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,r;t=this.getInputValue(),e=this.getHint(),n=t!==e&&0===e.indexOf(t),(r=""!==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,u.isNumber(e)?e===t:!document.selection||(n=document.selection.createRange(),n.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=r},function(t,e,n){"use strict";function r(t){var e,n;if(t=t||{},t.input||u.error("missing input"),this.isActivated=!1,this.debug=!!t.debug,this.autoselect=!!t.autoselect,this.autoselectOnBlur=!!t.autoselectOnBlur,this.openOnFocus=!!t.openOnFocus,this.minLength=u.isNumber(t.minLength)?t.minLength:1,this.autoWidth=void 0===t.autoWidth||!!t.autoWidth,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=u.mixin({},d,t.appendTo?d.appendTo:{}),this.cssClasses=t.cssClasses=u.mixin({},d.defaultClasses,t.cssClasses||{}),this.cssClasses.prefix=t.cssClasses.formattedPrefix=u.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=t.listboxId=[this.cssClasses.root,"listbox",u.getUniqueId()].join("-");var o=i(t);this.$node=o.wrapper;var s=this.$input=o.input;e=o.menu,n=o.hint,t.dropdownMenuContainer&&c.element(t.dropdownMenuContainer).css("position","relative").append(e.css("top","0")),s.on("blur.aa",function(t){var n=document.activeElement;u.isMsie()&&(e[0]===n||e[0].contains(n))&&(t.preventDefault(),t.stopImmediatePropagation(),u.defer(function(){s.focus()}))}),e.on("mousedown.aa",function(t){t.preventDefault()}),this.eventBus=t.eventBus||new l({el:s}),this.dropdown=new r.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 r.Input({input:s,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()}function i(t){var e,n,r,i;e=c.element(t.input),n=c.element(p.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 s=p.dropdown.replace("%PREFIX%",t.cssClasses.prefix).replace("%DROPDOWN_MENU%",t.cssClasses.dropdownMenu);r=c.element(s).css(t.css.dropdown).attr({role:"listbox",id:t.listboxId}),t.templates&&t.templates.dropdownMenu&&r.html(u.templatify(t.templates.dropdownMenu)()),i=e.clone().css(t.css.hint).css(o(e)),i.val("").addClass(u.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}),i.removeData&&i.removeData(),e.data(a,{"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(u.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-labelledby":e.attr("placeholder")?e.attr("id"):null,"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(c.element(t.appendTo).eq(0)).eq(0):e.wrap(n).parent(),n.prepend(t.hint?i:null).append(r),{wrapper:n,input:e,hint:i,menu:r}}function o(t){return{backgroundAttachment:t.css("background-attachment"),backgroundClip:t.css("background-clip"),backgroundColor:t.css("background-color"),backgroundImage:t.css("background-image"),backgroundOrigin:t.css("background-origin"),backgroundPosition:t.css("background-position"),backgroundRepeat:t.css("background-repeat"),backgroundSize:t.css("background-size")}}function s(t,e){var n=t.find(u.className(e.prefix,e.input));u.each(n.data(a),function(t,e){void 0===t?n.removeAttr(e):n.attr(e,t)}),n.detach().removeClass(u.className(e.prefix,e.input,!0)).insertAfter(t),n.removeData&&n.removeData(a),t.remove()}var a="aaAttrs",u=n(0),c=n(1),l=n(13),h=n(40),f=n(39),p=n(14),d=n(9);u.mixin(r.prototype,{_bindKeyboardShortcuts:function(t){if(t.keyboardShortcuts){var e=this.$input,n=[];u.each(t.keyboardShortcuts,function(t){"string"==typeof t&&(t=t.toUpperCase().charCodeAt(0)),n.push(t)}),c.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;(n=this.dropdown.getDatumForCursor())?(this._select(n),e.preventDefault()):this._autocomplete(!0)},_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,r,i,o;t=this.dropdown.getDatumForTopSuggestion(),t&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(e=this.input.getInputValue(),n=h.normalizeQuery(e),r=u.escapeRegExChars(n),i=new RegExp("^(?:"+r+")(.+$)","i"),o=i.exec(t.value),o?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(),i&&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.input.setInputValue(t.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",t.raw,t.datasetName).isDefaultPrevented()&&(this.dropdown.close(),u.defer(u.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=u.toStr(t),this.isActivated?this.input.setInputValue(t):(this.input.setQuery(t),this.input.setInputValue(t,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){this.input.destroy(),this.dropdown.destroy(),s(this.$node,this.cssClasses),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),r.Dropdown=f,r.Input=h,r.sources=n(43),t.exports=r},function(t,e,n){"use strict";var r=n(0),i=n(16),o=n(15);t.exports=function(t,e){function n(n,i){t.search(n,e,function(t,e){if(t)return void r.error(t.message);i(e.hits,e)})}var s=o(t.as._ua);return s&&s[0]>=3&&s[1]>20&&(e=e||{},e.additionalUA="autocomplete.js "+i),n}},function(t,e,n){"use strict";t.exports={hits:n(42),popularIn:n(44)}},function(t,e,n){"use strict";var r=n(0),i=n(16),o=n(15);t.exports=function(t,e,n,s){function a(a,u){t.search(a,e,function(t,a){if(t)return void r.error(t.message);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(l.as._ua);return p&&p[0]>=3&&p[1]>20&&(e.additionalUA="autocomplete.js "+i),void l.search(c(h),f,function(t,e){if(t)return void r.error(t.message);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]);u(n,a)})}u([])})}var u=o(t.as._ua);if(u&&u[0]>=3&&u[1]>20&&(e=e||{},e.additionalUA="autocomplete.js "+i),!n.source)return r.error("Missing 'source' key");var c=r.isFunction(n.source)?n.source:function(t){return t[n.source]};if(!n.index)return r.error("Missing 'index' key");var l=n.index;return s=s||{},a}},function(t,e,n){"use strict";function r(t,e,n,r){n=o.isArray(n)?n:[].slice.call(arguments,2);var c=i(t).each(function(t,o){var c=i(o),l=new u({el:c}),h=r||new a({input:c,eventBus:l,dropdownMenuContainer:e.dropdownMenuContainer,hint:void 0===e.hint||!!e.hint,minLength:e.minLength,autoselect:e.autoselect,autoselectOnBlur:e.autoselectOnBlur,openOnFocus:e.openOnFocus,templates:e.templates,debug:e.debug,cssClasses:e.cssClasses,datasets:n,keyboardShortcuts:e.keyboardShortcuts,appendTo:e.appendTo,autoWidth:e.autoWidth});c.data(s,h)});return c.autocomplete={},o.each(["open","close","getVal","setVal","destroy","getWrapper"],function(t){c.autocomplete[t]=function(){var e,n=arguments;return c.each(function(r,o){var a=i(o).data(s);e=a[t].apply(a,n)}),e}}),c}var i=n(17);n(1).element=i;var o=n(0);o.isArray=i.isArray,o.isFunction=i.isFunction,o.isObject=i.isPlainObject,o.bind=i.proxy,o.each=function(t,e){function n(t,n){return e(n,t)}i.each(t,n)},o.map=i.map,o.mixin=i.extend,o.Event=i.Event;var s="aaAutocomplete",a=n(41),u=n(13);r.sources=a.sources,r.escapeHighlightedString=o.escapeHighlightedString;var c="autocomplete"in window,l=window.autocomplete;r.noConflict=function(){return c?window.autocomplete=l:delete window.autocomplete,r},t.exports=r},function(t,e,n){"use strict";var r=n(21),i=function(t){return t&&t.__esModule?t:{default:t}}(r);t.exports=i.default},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=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},s=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}}(),a=n(54),u=r(a),c=n(24),l=r(c),h=n(37),f=r(h),p=n(48),d=r(p),g=n(49),m=r(g),v=n(18),y=r(v),b=n(19),w=r(b),_=function(){function t(e){var n=e.apiKey,r=e.indexName,s=e.inputSelector,a=e.appId,u=void 0===a?"BH4D9OD16A":a,c=e.debug,h=void 0!==c&&c,p=e.algoliaOptions,g=void 0===p?{}:p,m=e.autocompleteOptions,v=void 0===m?{debug:!1,hint:!1,autoselect:!0}:m,b=e.transformData,w=void 0!==b&&b,_=e.handleSelected,x=void 0!==_&&_,S=e.enhancedSearchInput,C=void 0!==S&&S,E=e.layout,A=void 0===E?"collumns":E;i(this,t),t.checkArguments({apiKey:n,indexName:r,inputSelector:s,debug:h,algoliaOptions:g,autocompleteOptions:v,transformData:w,handleSelected:x,enhancedSearchInput:C,layout:A}),this.apiKey=n,this.appId=u,this.indexName=r,this.input=t.getInputFromSelector(s),this.algoliaOptions=o({hitsPerPage:5},g);var T=!(!v||!v.debug)&&v.debug;v.debug=h||T,this.autocompleteOptions=v,this.autocompleteOptions.cssClasses={prefix:"ds"},x=x||this.handleSelected,this.isSimpleLayout="simple"===A,this.client=(0,l.default)(this.appId,this.apiKey),this.client.addAlgoliaAgent("docsearch.js "+y.default),C&&(this.input=t.injectSearchBox(this.input)),this.autocomplete=(0,f.default)(this.input,v,[{source:this.getAutocompleteSource(w),templates:{suggestion:t.getSuggestionTemplate(this.isSimpleLayout),footer:d.default.footer,empty:t.getEmptyTemplate()}}]),this.autocomplete.on("autocomplete:selected",x.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input)),C&&t.bindSearchBoxEvent()}return s(t,[{key:"getAutocompleteSource",value:function(e){var n=this;return function(r,i){n.client.search([{indexName:n.indexName,query:r,params:n.algoliaOptions}]).then(function(n){var r=n.results[0].hits;e&&(r=e(r)||r),i(t.formatHits(r))})}}},{key:"handleSelected",value:function(t,e,n){t.setVal(""),window.location.href=n.url}},{key:"handleShown",value:function(t){var e=t.offset().left+t.width()/2,n=(0,w.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,w.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(!t.getInputFromSelector(e.inputSelector))throw new Error("Error: No input element in the page matches "+e.inputSelector)}},{key:"injectSearchBox",value:function(t){t.before(d.default.searchBox);var e=t.prev().prev().find("input");return t.remove(),e}},{key:"bindSearchBoxEvent",value:function(){(0,w.default)('.searchbox [type="reset"]').on("click",function(){(0,w.default)("input#docsearch").focus(),(0,w.default)(this).addClass("hide"),f.default.autocomplete.setVal("")}),(0,w.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,w.default)(t).filter("input");return e.length?(0,w.default)(e[0]):null}},{key:"formatHits",value:function(e){var n=m.default.deepClone(e),r=n.map(function(t){return t._highlightResult&&(t._highlightResult=m.default.mergeKeyWithParent(t._highlightResult,"hierarchy")),m.default.mergeKeyWithParent(t,"hierarchy")}),i=m.default.groupBy(r,"lvl0");return w.default.each(i,function(t,e){var n=m.default.groupBy(e,"lvl1"),r=m.default.flattenAndFlagFirst(n,"isSubCategoryHeader");i[t]=r}),i=m.default.flattenAndFlagFirst(i,"isCategoryHeader"),i.map(function(e){var n=t.formatURL(e),r=m.default.getHighlightedValue(e,"lvl0"),i=m.default.getHighlightedValue(e,"lvl1")||r,o=m.default.compact([m.default.getHighlightedValue(e,"lvl2")||i,m.default.getHighlightedValue(e,"lvl3"),m.default.getHighlightedValue(e,"lvl4"),m.default.getHighlightedValue(e,"lvl5"),m.default.getHighlightedValue(e,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> › </span>'),s=m.default.getSnippetedValue(e,"content"),a=i&&""!==i||o&&""!==o,u=!i||""===i||i===r,c=o&&""!==o&&o!==i,l=!c&&i&&""!==i&&i!==r;return{isLvl0:!l&&!c,isLvl1:l,isLvl2:c,isLvl1EmptyOrDuplicate:u,isCategoryHeader:e.isCategoryHeader,isSubCategoryHeader:e.isSubCategoryHeader,isTextOrSubcatoryNonEmpty:a,category:r,subcategory:i,title:o,text:s,url:n}})}},{key:"formatURL",value:function(t){var e=t.url,n=t.anchor;if(e){return-1!==e.indexOf("#")?e:n?t.url+"#"+t.anchor:e}return n?"#"+t.anchor:(console.warn("no anchor nor url for : ",JSON.stringify(t)),null)}},{key:"getEmptyTemplate",value:function(){return function(t){return u.default.compile(d.default.empty).render(t)}}},{key:"getSuggestionTemplate",value:function(t){var e=t?d.default.suggestionSimple:d.default.suggestion,n=u.default.compile(e);return function(t){return n.render(t)}}}]),t}();e.default=_},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="algolia-docsearch-suggestion",i={suggestion:'\n  <div class="'+r+"\n    {{#isCategoryHeader}}"+r+"__main{{/isCategoryHeader}}\n    {{#isSubCategoryHeader}}"+r+'__secondary{{/isSubCategoryHeader}}\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      {{#isTextOrSubcatoryNonEmpty}}\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      {{/isTextOrSubcatoryNonEmpty}}\n    </div>\n  </div>\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="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=n(19),o=function(t){return t&&t.__esModule?t:{default:t}}(i),s={mergeKeyWithParent:function(t,e){if(void 0===t[e])return t;if("object"!==r(t[e]))return t;var n=o.default.extend({},t,t[e]);return delete n[e],n},groupBy:function(t,e){var n={};return o.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){if(!Array.isArray(t))return void e.push(t);t.forEach(function(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=s},function(t,e,n){function r(){return e.colors[l++%e.colors.length]}function i(t){function n(){}function i(){var t=i,n=+new Date,o=n-(c||n);t.diff=o,t.prev=c,t.curr=n,c=n,null==t.useColors&&(t.useColors=e.useColors()),null==t.color&&t.useColors&&(t.color=r());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=["%o"].concat(s));var u=0;s[0]=s[0].replace(/%([a-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}),s=e.formatArgs.apply(t,s),(i.log||e.log||console.log.bind(console)).apply(t,s)}n.enabled=!1,i.enabled=!0;var o=e.enabled(t)?i:n;return o.namespace=t,o}function o(t){e.save(t);for(var n=(t||"").split(/[\s,]+/),r=n.length,i=0;i<r;i++)n[i]&&(t=n[i].replace(/[\\^$+?.()|[\]{}]/g,"\\$&").replace(/\*/g,".*?"),"-"===t[0]?e.skips.push(new RegExp("^"+t.substr(1)+"$")):e.names.push(new RegExp("^"+t+"$")))}function s(){e.enable("")}function a(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}function u(t){return t instanceof Error?t.stack||t.message:t}e=t.exports=i.debug=i,e.coerce=u,e.disable=s,e.enable=o,e.enabled=a,e.humanize=n(62),e.names=[],e.skips=[],e.formatters={};var c,l=0},function(t,e,n){(function(e,r){/*!
 + * @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   4.0.5
 + */
- (function (global, factory) {
-      true ? module.exports = factory() :
-     typeof define === 'function' && define.amd ? define(factory) :
-     (global.ES6Promise = factory());
- }(this, (function () { 'use strict';
- function objectOrFunction(x) {
-   return typeof x === 'function' || typeof x === 'object' && x !== null;
- }
- function isFunction(x) {
-   return typeof x === 'function';
- }
- var _isArray = undefined;
- if (!Array.isArray) {
-   _isArray = function (x) {
-     return Object.prototype.toString.call(x) === '[object Array]';
-   };
- } else {
-   _isArray = Array.isArray;
- }
- var isArray = _isArray;
- var len = 0;
- var vertxNext = undefined;
- var customSchedulerFn = undefined;
- var asap = function asap(callback, arg) {
-   queue[len] = callback;
-   queue[len + 1] = arg;
-   len += 2;
-   if (len === 2) {
-     // If len is 2, that means that we need to schedule an async flush.
-     // If additional callbacks are queued before the queue is flushed, they
-     // will be processed by this flush that we are scheduling.
-     if (customSchedulerFn) {
-       customSchedulerFn(flush);
-     } else {
-       scheduleFlush();
-     }
-   }
- };
- function setScheduler(scheduleFn) {
-   customSchedulerFn = scheduleFn;
- }
- function setAsap(asapFn) {
-   asap = asapFn;
- }
- var browserWindow = typeof window !== 'undefined' ? window : undefined;
- var browserGlobal = browserWindow || {};
- var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
- var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';
- // test for web worker but not in IE10
- var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
- // node
- function useNextTick() {
-   // node version 0.10.x displays a deprecation warning when nextTick is used recursively
-   // see https://github.com/cujojs/when/issues/410 for details
-   return function () {
-     return process.nextTick(flush);
-   };
- }
- // vertx
- function useVertxTimer() {
-   if (typeof vertxNext !== 'undefined') {
-     return function () {
-       vertxNext(flush);
-     };
-   }
-   return useSetTimeout();
- }
- function useMutationObserver() {
-   var iterations = 0;
-   var observer = new BrowserMutationObserver(flush);
-   var node = document.createTextNode('');
-   observer.observe(node, { characterData: true });
-   return function () {
-     node.data = iterations = ++iterations % 2;
-   };
- }
- // web worker
- function useMessageChannel() {
-   var channel = new MessageChannel();
-   channel.port1.onmessage = flush;
-   return function () {
-     return channel.port2.postMessage(0);
-   };
- }
- function useSetTimeout() {
-   // Store setTimeout reference so es6-promise will be unaffected by
-   // other code modifying setTimeout (like sinon.useFakeTimers())
-   var globalSetTimeout = setTimeout;
-   return function () {
-     return globalSetTimeout(flush, 1);
-   };
- }
- var queue = new Array(1000);
- function flush() {
-   for (var i = 0; i < len; i += 2) {
-     var callback = queue[i];
-     var arg = queue[i + 1];
-     callback(arg);
-     queue[i] = undefined;
-     queue[i + 1] = undefined;
-   }
-   len = 0;
- }
- function attemptVertx() {
-   try {
-     var r = require;
-     var vertx = __webpack_require__(67);
-     vertxNext = vertx.runOnLoop || vertx.runOnContext;
-     return useVertxTimer();
-   } catch (e) {
-     return useSetTimeout();
-   }
- }
- var scheduleFlush = undefined;
- // Decide what async method to use to triggering processing of queued callbacks:
- if (isNode) {
-   scheduleFlush = useNextTick();
- } else if (BrowserMutationObserver) {
-   scheduleFlush = useMutationObserver();
- } else if (isWorker) {
-   scheduleFlush = useMessageChannel();
- } else if (browserWindow === undefined && "function" === 'function') {
-   scheduleFlush = attemptVertx();
- } else {
-   scheduleFlush = useSetTimeout();
- }
- function then(onFulfillment, onRejection) {
-   var _arguments = arguments;
-   var parent = this;
-   var child = new this.constructor(noop);
-   if (child[PROMISE_ID] === undefined) {
-     makePromise(child);
-   }
-   var _state = parent._state;
-   if (_state) {
-     (function () {
-       var callback = _arguments[_state - 1];
-       asap(function () {
-         return invokeCallback(_state, child, callback, parent._result);
-       });
-     })();
-   } else {
-     subscribe(parent, child, onFulfillment, onRejection);
-   }
-   return child;
- }
- /**
-   `Promise.resolve` returns a promise that will become resolved with the
-   passed `value`. It is shorthand for the following:
-   ```javascript
-   let promise = new Promise(function(resolve, reject){
-     resolve(1);
-   });
-   promise.then(function(value){
-     // value === 1
-   });
-   ```
-   Instead of writing the above, your code now simply becomes the following:
-   ```javascript
-   let promise = Promise.resolve(1);
-   promise.then(function(value){
-     // value === 1
-   });
-   ```
-   @method resolve
-   @static
-   @param {Any} value value that the returned promise will be resolved with
-   Useful for tooling.
-   @return {Promise} a promise that will become fulfilled with the given
-   `value`
- */
- function resolve(object) {
-   /*jshint validthis:true */
-   var Constructor = this;
-   if (object && typeof object === 'object' && object.constructor === Constructor) {
-     return object;
-   }
-   var promise = new Constructor(noop);
-   _resolve(promise, object);
-   return promise;
- }
- var PROMISE_ID = Math.random().toString(36).substring(16);
- function noop() {}
- var PENDING = void 0;
- var FULFILLED = 1;
- var REJECTED = 2;
- var GET_THEN_ERROR = new ErrorObject();
- function selfFulfillment() {
-   return new TypeError("You cannot resolve a promise with itself");
- }
- function cannotReturnOwn() {
-   return new TypeError('A promises callback cannot return that same promise.');
- }
- function getThen(promise) {
-   try {
-     return promise.then;
-   } catch (error) {
-     GET_THEN_ERROR.error = error;
-     return GET_THEN_ERROR;
-   }
- }
- function tryThen(then, value, fulfillmentHandler, rejectionHandler) {
-   try {
-     then.call(value, fulfillmentHandler, rejectionHandler);
-   } catch (e) {
-     return e;
-   }
- }
- function handleForeignThenable(promise, thenable, then) {
-   asap(function (promise) {
-     var sealed = false;
-     var error = tryThen(then, thenable, function (value) {
-       if (sealed) {
-         return;
-       }
-       sealed = true;
-       if (thenable !== value) {
-         _resolve(promise, value);
-       } else {
-         fulfill(promise, value);
-       }
-     }, function (reason) {
-       if (sealed) {
-         return;
-       }
-       sealed = true;
-       _reject(promise, reason);
-     }, 'Settle: ' + (promise._label || ' unknown promise'));
-     if (!sealed && error) {
-       sealed = true;
-       _reject(promise, error);
-     }
-   }, promise);
- }
- function handleOwnThenable(promise, thenable) {
-   if (thenable._state === FULFILLED) {
-     fulfill(promise, thenable._result);
-   } else if (thenable._state === REJECTED) {
-     _reject(promise, thenable._result);
-   } else {
-     subscribe(thenable, undefined, function (value) {
-       return _resolve(promise, value);
-     }, function (reason) {
-       return _reject(promise, reason);
-     });
-   }
- }
- function handleMaybeThenable(promise, maybeThenable, then$$) {
-   if (maybeThenable.constructor === promise.constructor && then$$ === then && maybeThenable.constructor.resolve === resolve) {
-     handleOwnThenable(promise, maybeThenable);
-   } else {
-     if (then$$ === GET_THEN_ERROR) {
-       _reject(promise, GET_THEN_ERROR.error);
-     } else if (then$$ === undefined) {
-       fulfill(promise, maybeThenable);
-     } else if (isFunction(then$$)) {
-       handleForeignThenable(promise, maybeThenable, then$$);
-     } else {
-       fulfill(promise, maybeThenable);
-     }
-   }
- }
- function _resolve(promise, value) {
-   if (promise === value) {
-     _reject(promise, selfFulfillment());
-   } else if (objectOrFunction(value)) {
-     handleMaybeThenable(promise, value, getThen(value));
-   } else {
-     fulfill(promise, value);
-   }
- }
- function publishRejection(promise) {
-   if (promise._onerror) {
-     promise._onerror(promise._result);
-   }
-   publish(promise);
- }
- function fulfill(promise, value) {
-   if (promise._state !== PENDING) {
-     return;
-   }
-   promise._result = value;
-   promise._state = FULFILLED;
-   if (promise._subscribers.length !== 0) {
-     asap(publish, promise);
-   }
- }
- function _reject(promise, reason) {
-   if (promise._state !== PENDING) {
-     return;
-   }
-   promise._state = REJECTED;
-   promise._result = reason;
-   asap(publishRejection, promise);
- }
- function subscribe(parent, child, onFulfillment, onRejection) {
-   var _subscribers = parent._subscribers;
-   var length = _subscribers.length;
-   parent._onerror = null;
-   _subscribers[length] = child;
-   _subscribers[length + FULFILLED] = onFulfillment;
-   _subscribers[length + REJECTED] = onRejection;
-   if (length === 0 && parent._state) {
-     asap(publish, parent);
-   }
- }
- function publish(promise) {
-   var subscribers = promise._subscribers;
-   var settled = promise._state;
-   if (subscribers.length === 0) {
-     return;
-   }
-   var child = undefined,
-       callback = undefined,
-       detail = promise._result;
-   for (var i = 0; i < subscribers.length; i += 3) {
-     child = subscribers[i];
-     callback = subscribers[i + settled];
-     if (child) {
-       invokeCallback(settled, child, callback, detail);
-     } else {
-       callback(detail);
-     }
-   }
-   promise._subscribers.length = 0;
- }
- function ErrorObject() {
-   this.error = null;
- }
- var TRY_CATCH_ERROR = new ErrorObject();
- function tryCatch(callback, detail) {
-   try {
-     return callback(detail);
-   } catch (e) {
-     TRY_CATCH_ERROR.error = e;
-     return TRY_CATCH_ERROR;
-   }
- }
- function invokeCallback(settled, promise, callback, detail) {
-   var hasCallback = isFunction(callback),
-       value = undefined,
-       error = undefined,
-       succeeded = undefined,
-       failed = undefined;
-   if (hasCallback) {
-     value = tryCatch(callback, detail);
-     if (value === TRY_CATCH_ERROR) {
-       failed = true;
-       error = value.error;
-       value = null;
-     } else {
-       succeeded = true;
-     }
-     if (promise === value) {
-       _reject(promise, cannotReturnOwn());
-       return;
-     }
-   } else {
-     value = detail;
-     succeeded = true;
-   }
-   if (promise._state !== PENDING) {
-     // noop
-   } else if (hasCallback && succeeded) {
-       _resolve(promise, value);
-     } else if (failed) {
-       _reject(promise, error);
-     } else if (settled === FULFILLED) {
-       fulfill(promise, value);
-     } else if (settled === REJECTED) {
-       _reject(promise, value);
-     }
- }
- function initializePromise(promise, resolver) {
-   try {
-     resolver(function resolvePromise(value) {
-       _resolve(promise, value);
-     }, function rejectPromise(reason) {
-       _reject(promise, reason);
-     });
-   } catch (e) {
-     _reject(promise, e);
-   }
- }
- var id = 0;
- function nextId() {
-   return id++;
- }
- function makePromise(promise) {
-   promise[PROMISE_ID] = id++;
-   promise._state = undefined;
-   promise._result = undefined;
-   promise._subscribers = [];
- }
- function Enumerator(Constructor, input) {
-   this._instanceConstructor = Constructor;
-   this.promise = new Constructor(noop);
-   if (!this.promise[PROMISE_ID]) {
-     makePromise(this.promise);
-   }
-   if (isArray(input)) {
-     this._input = input;
-     this.length = input.length;
-     this._remaining = input.length;
-     this._result = new Array(this.length);
-     if (this.length === 0) {
-       fulfill(this.promise, this._result);
-     } else {
-       this.length = this.length || 0;
-       this._enumerate();
-       if (this._remaining === 0) {
-         fulfill(this.promise, this._result);
-       }
-     }
-   } else {
-     _reject(this.promise, validationError());
-   }
- }
- function validationError() {
-   return new Error('Array Methods must be provided an Array');
- };
- Enumerator.prototype._enumerate = function () {
-   var length = this.length;
-   var _input = this._input;
-   for (var i = 0; this._state === PENDING && i < length; i++) {
-     this._eachEntry(_input[i], i);
-   }
- };
- Enumerator.prototype._eachEntry = function (entry, i) {
-   var c = this._instanceConstructor;
-   var resolve$$ = c.resolve;
-   if (resolve$$ === resolve) {
-     var _then = getThen(entry);
-     if (_then === then && entry._state !== PENDING) {
-       this._settledAt(entry._state, i, entry._result);
-     } else if (typeof _then !== 'function') {
-       this._remaining--;
-       this._result[i] = entry;
-     } else if (c === Promise) {
-       var promise = new c(noop);
-       handleMaybeThenable(promise, entry, _then);
-       this._willSettleAt(promise, i);
-     } else {
-       this._willSettleAt(new c(function (resolve$$) {
-         return resolve$$(entry);
-       }), i);
-     }
-   } else {
-     this._willSettleAt(resolve$$(entry), i);
-   }
- };
- Enumerator.prototype._settledAt = function (state, i, value) {
-   var promise = this.promise;
-   if (promise._state === PENDING) {
-     this._remaining--;
-     if (state === REJECTED) {
-       _reject(promise, value);
-     } else {
-       this._result[i] = value;
-     }
-   }
-   if (this._remaining === 0) {
-     fulfill(promise, this._result);
-   }
- };
- Enumerator.prototype._willSettleAt = function (promise, i) {
-   var enumerator = this;
-   subscribe(promise, undefined, function (value) {
-     return enumerator._settledAt(FULFILLED, i, value);
-   }, function (reason) {
-     return enumerator._settledAt(REJECTED, i, reason);
-   });
- };
- /**
-   `Promise.all` accepts an array of promises, and returns a new promise which
-   is fulfilled with an array of fulfillment values for the passed promises, or
-   rejected with the reason of the first passed promise to be rejected. It casts all
-   elements of the passed iterable to promises as it runs this algorithm.
-   Example:
-   ```javascript
-   let promise1 = resolve(1);
-   let promise2 = resolve(2);
-   let promise3 = resolve(3);
-   let promises = [ promise1, promise2, promise3 ];
-   Promise.all(promises).then(function(array){
-     // The array here would be [ 1, 2, 3 ];
-   });
-   ```
-   If any of the `promises` given to `all` are rejected, the first promise
-   that is rejected will be given as an argument to the returned promises's
-   rejection handler. For example:
-   Example:
-   ```javascript
-   let promise1 = resolve(1);
-   let promise2 = reject(new Error("2"));
-   let promise3 = reject(new Error("3"));
-   let promises = [ promise1, promise2, promise3 ];
-   Promise.all(promises).then(function(array){
-     // Code here never runs because there are rejected promises!
-   }, function(error) {
-     // error.message === "2"
-   });
-   ```
-   @method all
-   @static
-   @param {Array} entries array of promises
-   @param {String} label optional string for labeling the promise.
-   Useful for tooling.
-   @return {Promise} promise that is fulfilled when all `promises` have been
-   fulfilled, or rejected if any of them become rejected.
-   @static
- */
- function all(entries) {
-   return new Enumerator(this, entries).promise;
- }
- /**
-   `Promise.race` returns a new promise which is settled in the same way as the
-   first passed promise to settle.
-   Example:
-   ```javascript
-   let promise1 = new Promise(function(resolve, reject){
-     setTimeout(function(){
-       resolve('promise 1');
-     }, 200);
-   });
-   let promise2 = new Promise(function(resolve, reject){
-     setTimeout(function(){
-       resolve('promise 2');
-     }, 100);
-   });
-   Promise.race([promise1, promise2]).then(function(result){
-     // result === 'promise 2' because it was resolved before promise1
-     // was resolved.
-   });
-   ```
-   `Promise.race` is deterministic in that only the state of the first
-   settled promise matters. For example, even if other promises given to the
-   `promises` array argument are resolved, but the first settled promise has
-   become rejected before the other promises became fulfilled, the returned
-   promise will become rejected:
-   ```javascript
-   let promise1 = new Promise(function(resolve, reject){
-     setTimeout(function(){
-       resolve('promise 1');
-     }, 200);
-   });
-   let promise2 = new Promise(function(resolve, reject){
-     setTimeout(function(){
-       reject(new Error('promise 2'));
-     }, 100);
-   });
-   Promise.race([promise1, promise2]).then(function(result){
-     // Code here never runs
-   }, function(reason){
-     // reason.message === 'promise 2' because promise 2 became rejected before
-     // promise 1 became fulfilled
-   });
-   ```
-   An example real-world use case is implementing timeouts:
-   ```javascript
-   Promise.race([ajax('foo.json'), timeout(5000)])
-   ```
-   @method race
-   @static
-   @param {Array} promises array of promises to observe
-   Useful for tooling.
-   @return {Promise} a promise which settles in the same way as the first passed
-   promise to settle.
- */
- function race(entries) {
-   /*jshint validthis:true */
-   var Constructor = this;
-   if (!isArray(entries)) {
-     return new Constructor(function (_, reject) {
-       return reject(new TypeError('You must pass an array to race.'));
-     });
-   } else {
-     return new Constructor(function (resolve, reject) {
-       var length = entries.length;
-       for (var i = 0; i < length; i++) {
-         Constructor.resolve(entries[i]).then(resolve, reject);
-       }
-     });
-   }
- }
- /**
-   `Promise.reject` returns a promise rejected with the passed `reason`.
-   It is shorthand for the following:
-   ```javascript
-   let promise = new Promise(function(resolve, reject){
-     reject(new Error('WHOOPS'));
-   });
-   promise.then(function(value){
-     // Code here doesn't run because the promise is rejected!
-   }, function(reason){
-     // reason.message === 'WHOOPS'
-   });
-   ```
-   Instead of writing the above, your code now simply becomes the following:
-   ```javascript
-   let promise = Promise.reject(new Error('WHOOPS'));
-   promise.then(function(value){
-     // Code here doesn't run because the promise is rejected!
-   }, function(reason){
-     // reason.message === 'WHOOPS'
-   });
-   ```
-   @method reject
-   @static
-   @param {Any} reason value that the returned promise will be rejected with.
-   Useful for tooling.
-   @return {Promise} a promise rejected with the given `reason`.
- */
- function reject(reason) {
-   /*jshint validthis:true */
-   var Constructor = this;
-   var promise = new Constructor(noop);
-   _reject(promise, reason);
-   return promise;
- }
- function needsResolver() {
-   throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
- }
- function needsNew() {
-   throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
- }
- /**
-   Promise objects represent the eventual result of an asynchronous operation. The
-   primary way of interacting with a promise is through its `then` method, which
-   registers callbacks to receive either a promise's eventual value or the reason
-   why the promise cannot be fulfilled.
-   Terminology
-   -----------
-   - `promise` is an object or function with a `then` method whose behavior conforms to this specification.
-   - `thenable` is an object or function that defines a `then` method.
-   - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).
-   - `exception` is a value that is thrown using the throw statement.
-   - `reason` is a value that indicates why a promise was rejected.
-   - `settled` the final resting state of a promise, fulfilled or rejected.
-   A promise can be in one of three states: pending, fulfilled, or rejected.
-   Promises that are fulfilled have a fulfillment value and are in the fulfilled
-   state.  Promises that are rejected have a rejection reason and are in the
-   rejected state.  A fulfillment value is never a thenable.
-   Promises can also be said to *resolve* a value.  If this value is also a
-   promise, then the original promise's settled state will match the value's
-   settled state.  So a promise that *resolves* a promise that rejects will
-   itself reject, and a promise that *resolves* a promise that fulfills will
-   itself fulfill.
-   Basic Usage:
-   ------------
-   ```js
-   let promise = new Promise(function(resolve, reject) {
-     // on success
-     resolve(value);
-     // on failure
-     reject(reason);
-   });
-   promise.then(function(value) {
-     // on fulfillment
-   }, function(reason) {
-     // on rejection
-   });
-   ```
-   Advanced Usage:
-   ---------------
-   Promises shine when abstracting away asynchronous interactions such as
-   `XMLHttpRequest`s.
-   ```js
-   function getJSON(url) {
-     return new Promise(function(resolve, reject){
-       let xhr = new XMLHttpRequest();
-       xhr.open('GET', url);
-       xhr.onreadystatechange = handler;
-       xhr.responseType = 'json';
-       xhr.setRequestHeader('Accept', 'application/json');
-       xhr.send();
-       function handler() {
-         if (this.readyState === this.DONE) {
-           if (this.status === 200) {
-             resolve(this.response);
-           } else {
-             reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
-           }
-         }
-       };
-     });
-   }
-   getJSON('/posts.json').then(function(json) {
-     // on fulfillment
-   }, function(reason) {
-     // on rejection
-   });
-   ```
-   Unlike callbacks, promises are great composable primitives.
-   ```js
-   Promise.all([
-     getJSON('/posts'),
-     getJSON('/comments')
-   ]).then(function(values){
-     values[0] // => postsJSON
-     values[1] // => commentsJSON
-     return values;
-   });
-   ```
-   @class Promise
-   @param {function} resolver
-   Useful for tooling.
-   @constructor
- */
- function Promise(resolver) {
-   this[PROMISE_ID] = nextId();
-   this._result = this._state = undefined;
-   this._subscribers = [];
-   if (noop !== resolver) {
-     typeof resolver !== 'function' && needsResolver();
-     this instanceof Promise ? initializePromise(this, resolver) : needsNew();
-   }
- }
- Promise.all = all;
- Promise.race = race;
- Promise.resolve = resolve;
- Promise.reject = reject;
- Promise._setScheduler = setScheduler;
- Promise._setAsap = setAsap;
- Promise._asap = asap;
- Promise.prototype = {
-   constructor: Promise,
-   /**
-     The primary way of interacting with a promise is through its `then` method,
-     which registers callbacks to receive either a promise's eventual value or the
-     reason why the promise cannot be fulfilled.
-   
-     ```js
-     findUser().then(function(user){
-       // user is available
-     }, function(reason){
-       // user is unavailable, and you are given the reason why
-     });
-     ```
-   
-     Chaining
-     --------
-   
-     The return value of `then` is itself a promise.  This second, 'downstream'
-     promise is resolved with the return value of the first promise's fulfillment
-     or rejection handler, or rejected if the handler throws an exception.
-   
-     ```js
-     findUser().then(function (user) {
-       return user.name;
-     }, function (reason) {
-       return 'default name';
-     }).then(function (userName) {
-       // If `findUser` fulfilled, `userName` will be the user's name, otherwise it
-       // will be `'default name'`
-     });
-   
-     findUser().then(function (user) {
-       throw new Error('Found user, but still unhappy');
-     }, function (reason) {
-       throw new Error('`findUser` rejected and we're unhappy');
-     }).then(function (value) {
-       // never reached
-     }, function (reason) {
-       // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
-       // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
-     });
-     ```
-     If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
-   
-     ```js
-     findUser().then(function (user) {
-       throw new PedagogicalException('Upstream error');
-     }).then(function (value) {
-       // never reached
-     }).then(function (value) {
-       // never reached
-     }, function (reason) {
-       // The `PedgagocialException` is propagated all the way down to here
-     });
-     ```
-   
-     Assimilation
-     ------------
-   
-     Sometimes the value you want to propagate to a downstream promise can only be
-     retrieved asynchronously. This can be achieved by returning a promise in the
-     fulfillment or rejection handler. The downstream promise will then be pending
-     until the returned promise is settled. This is called *assimilation*.
-   
-     ```js
-     findUser().then(function (user) {
-       return findCommentsByAuthor(user);
-     }).then(function (comments) {
-       // The user's comments are now available
-     });
-     ```
-   
-     If the assimliated promise rejects, then the downstream promise will also reject.
-   
-     ```js
-     findUser().then(function (user) {
-       return findCommentsByAuthor(user);
-     }).then(function (comments) {
-       // If `findCommentsByAuthor` fulfills, we'll have the value here
-     }, function (reason) {
-       // If `findCommentsByAuthor` rejects, we'll have the reason here
-     });
-     ```
-   
-     Simple Example
-     --------------
-   
-     Synchronous Example
-   
-     ```javascript
-     let result;
-   
-     try {
-       result = findResult();
-       // success
-     } catch(reason) {
-       // failure
-     }
-     ```
-   
-     Errback Example
-   
-     ```js
-     findResult(function(result, err){
-       if (err) {
-         // failure
-       } else {
-         // success
-       }
-     });
-     ```
-   
-     Promise Example;
-   
-     ```javascript
-     findResult().then(function(result){
-       // success
-     }, function(reason){
-       // failure
-     });
-     ```
-   
-     Advanced Example
-     --------------
-   
-     Synchronous Example
-   
-     ```javascript
-     let author, books;
-   
-     try {
-       author = findAuthor();
-       books  = findBooksByAuthor(author);
-       // success
-     } catch(reason) {
-       // failure
-     }
-     ```
-   
-     Errback Example
-   
-     ```js
-   
-     function foundBooks(books) {
-   
-     }
-   
-     function failure(reason) {
-   
-     }
-   
-     findAuthor(function(author, err){
-       if (err) {
-         failure(err);
-         // failure
-       } else {
-         try {
-           findBoooksByAuthor(author, function(books, err) {
-             if (err) {
-               failure(err);
-             } else {
-               try {
-                 foundBooks(books);
-               } catch(reason) {
-                 failure(reason);
-               }
-             }
-           });
-         } catch(error) {
-           failure(err);
-         }
-         // success
-       }
-     });
-     ```
-   
-     Promise Example;
-   
-     ```javascript
-     findAuthor().
-       then(findBooksByAuthor).
-       then(function(books){
-         // found books
-     }).catch(function(reason){
-       // something went wrong
-     });
-     ```
-   
-     @method then
-     @param {Function} onFulfilled
-     @param {Function} onRejected
-     Useful for tooling.
-     @return {Promise}
-   */
-   then: then,
-   /**
-     `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
-     as the catch block of a try/catch statement.
-   
-     ```js
-     function findAuthor(){
-       throw new Error('couldn't find that author');
-     }
-   
-     // synchronous
-     try {
-       findAuthor();
-     } catch(reason) {
-       // something went wrong
-     }
-   
-     // async with promises
-     findAuthor().catch(function(reason){
-       // something went wrong
-     });
-     ```
-   
-     @method catch
-     @param {Function} onRejection
-     Useful for tooling.
-     @return {Promise}
-   */
-   'catch': function _catch(onRejection) {
-     return this.then(null, onRejection);
-   }
- };
- function polyfill() {
-     var local = undefined;
-     if (typeof global !== 'undefined') {
-         local = global;
-     } else if (typeof self !== 'undefined') {
-         local = self;
-     } else {
-         try {
-             local = Function('return this')();
-         } catch (e) {
-             throw new Error('polyfill failed because global object is unavailable in this environment');
-         }
-     }
-     var P = local.Promise;
-     if (P) {
-         var promiseToString = null;
-         try {
-             promiseToString = Object.prototype.toString.call(P.resolve());
-         } catch (e) {
-             // silently ignored
-         }
-         if (promiseToString === '[object Promise]' && !P.cast) {
-             return;
-         }
-     }
-     local.Promise = Promise;
- }
- // Strange compat..
- Promise.polyfill = polyfill;
- Promise.Promise = Promise;
- return Promise;
- })));
- //# sourceMappingURL=es6-promise.map
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11), __webpack_require__(3)))
- /***/ }),
- /* 52 */
- /***/ (function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(global) {if (typeof window !== "undefined") {
-     module.exports = window;
- } else if (typeof global !== "undefined") {
-     module.exports = global;
- } else if (typeof self !== "undefined"){
-     module.exports = self;
- } else {
-     module.exports = {};
- }
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))
- /***/ }),
- /* 53 */
- /***/ (function(module, exports, __webpack_require__) {
- /*
-  *  Copyright 2011 Twitter, Inc.
-  *  Licensed under the Apache License, Version 2.0 (the "License");
-  *  you may not use this file except in compliance with the License.
-  *  You may obtain a copy of the License at
-  *
-  *  http://www.apache.org/licenses/LICENSE-2.0
-  *
-  *  Unless required by applicable law or agreed to in writing, software
-  *  distributed under the License is distributed on an "AS IS" BASIS,
-  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  *  See the License for the specific language governing permissions and
-  *  limitations under the License.
-  */
- (function (Hogan) {
-   // Setup regex  assignments
-   // remove whitespace according to Mustache spec
-   var rIsWhitespace = /\S/,
-       rQuot = /\"/g,
-       rNewline =  /\n/g,
-       rCr = /\r/g,
-       rSlash = /\\/g,
-       rLineSep = /\u2028/,
-       rParagraphSep = /\u2029/;
-   Hogan.tags = {
-     '#': 1, '^': 2, '<': 3, '$': 4,
-     '/': 5, '!': 6, '>': 7, '=': 8, '_v': 9,
-     '{': 10, '&': 11, '_t': 12
-   };
-   Hogan.scan = function scan(text, delimiters) {
-     var len = text.length,
-         IN_TEXT = 0,
-         IN_TAG_TYPE = 1,
-         IN_TAG = 2,
-         state = IN_TEXT,
-         tagType = null,
-         tag = null,
-         buf = '',
-         tokens = [],
-         seenTag = false,
-         i = 0,
-         lineStart = 0,
-         otag = '{{',
-         ctag = '}}';
-     function addBuf() {
-       if (buf.length > 0) {
-         tokens.push({tag: '_t', text: new String(buf)});
-         buf = '';
-       }
-     }
-     function lineIsWhitespace() {
-       var isAllWhitespace = true;
-       for (var j = lineStart; j < tokens.length; j++) {
-         isAllWhitespace =
-           (Hogan.tags[tokens[j].tag] < Hogan.tags['_v']) ||
-           (tokens[j].tag == '_t' && tokens[j].text.match(rIsWhitespace) === null);
-         if (!isAllWhitespace) {
-           return false;
-         }
-       }
-       return isAllWhitespace;
-     }
-     function filterLine(haveSeenTag, noNewLine) {
-       addBuf();
-       if (haveSeenTag && lineIsWhitespace()) {
-         for (var j = lineStart, next; j < tokens.length; j++) {
-           if (tokens[j].text) {
-             if ((next = tokens[j+1]) && next.tag == '>') {
-               // set indent to token value
-               next.indent = tokens[j].text.toString()
-             }
-             tokens.splice(j, 1);
-           }
-         }
-       } else if (!noNewLine) {
-         tokens.push({tag:'\n'});
-       }
-       seenTag = false;
-       lineStart = tokens.length;
-     }
-     function changeDelimiters(text, index) {
-       var close = '=' + ctag,
-           closeIndex = text.indexOf(close, index),
-           delimiters = trim(
-             text.substring(text.indexOf('=', index) + 1, closeIndex)
-           ).split(' ');
-       otag = delimiters[0];
-       ctag = delimiters[delimiters.length - 1];
-       return closeIndex + close.length - 1;
-     }
-     if (delimiters) {
-       delimiters = delimiters.split(' ');
-       otag = delimiters[0];
-       ctag = delimiters[1];
-     }
-     for (i = 0; i < len; i++) {
-       if (state == IN_TEXT) {
-         if (tagChange(otag, text, i)) {
-           --i;
-           addBuf();
-           state = IN_TAG_TYPE;
-         } else {
-           if (text.charAt(i) == '\n') {
-             filterLine(seenTag);
-           } else {
-             buf += text.charAt(i);
-           }
-         }
-       } else if (state == IN_TAG_TYPE) {
-         i += otag.length - 1;
-         tag = Hogan.tags[text.charAt(i + 1)];
-         tagType = tag ? text.charAt(i + 1) : '_v';
-         if (tagType == '=') {
-           i = changeDelimiters(text, i);
-           state = IN_TEXT;
-         } else {
-           if (tag) {
-             i++;
-           }
-           state = IN_TAG;
-         }
-         seenTag = i;
-       } else {
-         if (tagChange(ctag, text, i)) {
-           tokens.push({tag: tagType, n: trim(buf), otag: otag, ctag: ctag,
-                        i: (tagType == '/') ? seenTag - otag.length : i + ctag.length});
-           buf = '';
-           i += ctag.length - 1;
-           state = IN_TEXT;
-           if (tagType == '{') {
-             if (ctag == '}}') {
-               i++;
-             } else {
-               cleanTripleStache(tokens[tokens.length - 1]);
-             }
-           }
-         } else {
-           buf += text.charAt(i);
-         }
-       }
-     }
-     filterLine(seenTag, true);
-     return tokens;
-   }
-   function cleanTripleStache(token) {
-     if (token.n.substr(token.n.length - 1) === '}') {
-       token.n = token.n.substring(0, token.n.length - 1);
-     }
-   }
-   function trim(s) {
-     if (s.trim) {
-       return s.trim();
-     }
-     return s.replace(/^\s*|\s*$/g, '');
-   }
-   function tagChange(tag, text, index) {
-     if (text.charAt(index) != tag.charAt(0)) {
-       return false;
-     }
-     for (var i = 1, l = tag.length; i < l; i++) {
-       if (text.charAt(index + i) != tag.charAt(i)) {
-         return false;
-       }
-     }
-     return true;
-   }
-   // the tags allowed inside super templates
-   var allowedInSuper = {'_t': true, '\n': true, '$': true, '/': true};
-   function buildTree(tokens, kind, stack, customTags) {
-     var instructions = [],
-         opener = null,
-         tail = null,
-         token = null;
-     tail = stack[stack.length - 1];
-     while (tokens.length > 0) {
-       token = tokens.shift();
-       if (tail && tail.tag == '<' && !(token.tag in allowedInSuper)) {
-         throw new Error('Illegal content in < super tag.');
-       }
-       if (Hogan.tags[token.tag] <= Hogan.tags['$'] || isOpener(token, customTags)) {
-         stack.push(token);
-         token.nodes = buildTree(tokens, token.tag, stack, customTags);
-       } else if (token.tag == '/') {
-         if (stack.length === 0) {
-           throw new Error('Closing tag without opener: /' + token.n);
-         }
-         opener = stack.pop();
-         if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {
-           throw new Error('Nesting error: ' + opener.n + ' vs. ' + token.n);
-         }
-         opener.end = token.i;
-         return instructions;
-       } else if (token.tag == '\n') {
-         token.last = (tokens.length == 0) || (tokens[0].tag == '\n');
-       }
-       instructions.push(token);
-     }
-     if (stack.length > 0) {
-       throw new Error('missing closing tag: ' + stack.pop().n);
-     }
-     return instructions;
-   }
-   function isOpener(token, tags) {
-     for (var i = 0, l = tags.length; i < l; i++) {
-       if (tags[i].o == token.n) {
-         token.tag = '#';
-         return true;
-       }
-     }
-   }
-   function isCloser(close, open, tags) {
-     for (var i = 0, l = tags.length; i < l; i++) {
-       if (tags[i].c == close && tags[i].o == open) {
-         return true;
-       }
-     }
-   }
-   function stringifySubstitutions(obj) {
-     var items = [];
-     for (var key in obj) {
-       items.push('"' + esc(key) + '": function(c,p,t,i) {' + obj[key] + '}');
-     }
-     return "{ " + items.join(",") + " }";
-   }
-   function stringifyPartials(codeObj) {
-     var partials = [];
-     for (var key in codeObj.partials) {
-       partials.push('"' + esc(key) + '":{name:"' + esc(codeObj.partials[key].name) + '", ' + stringifyPartials(codeObj.partials[key]) + "}");
-     }
-     return "partials: {" + partials.join(",") + "}, subs: " + stringifySubstitutions(codeObj.subs);
-   }
-   Hogan.stringify = function(codeObj, text, options) {
-     return "{code: function (c,p,i) { " + Hogan.wrapMain(codeObj.code) + " }," + stringifyPartials(codeObj) +  "}";
-   }
-   var serialNo = 0;
-   Hogan.generate = function(tree, text, options) {
-     serialNo = 0;
-     var context = { code: '', subs: {}, partials: {} };
-     Hogan.walk(tree, context);
-     if (options.asString) {
-       return this.stringify(context, text, options);
-     }
-     return this.makeTemplate(context, text, options);
-   }
-   Hogan.wrapMain = function(code) {
-     return 'var t=this;t.b(i=i||"");' + code + 'return t.fl();';
-   }
-   Hogan.template = Hogan.Template;
-   Hogan.makeTemplate = function(codeObj, text, options) {
-     var template = this.makePartials(codeObj);
-     template.code = new Function('c', 'p', 'i', this.wrapMain(codeObj.code));
-     return new this.template(template, text, this, options);
-   }
-   Hogan.makePartials = function(codeObj) {
-     var key, template = {subs: {}, partials: codeObj.partials, name: codeObj.name};
-     for (key in template.partials) {
-       template.partials[key] = this.makePartials(template.partials[key]);
-     }
-     for (key in codeObj.subs) {
-       template.subs[key] = new Function('c', 'p', 't', 'i', codeObj.subs[key]);
-     }
-     return template;
-   }
-   function esc(s) {
-     return s.replace(rSlash, '\\\\')
-             .replace(rQuot, '\\\"')
-             .replace(rNewline, '\\n')
-             .replace(rCr, '\\r')
-             .replace(rLineSep, '\\u2028')
-             .replace(rParagraphSep, '\\u2029');
-   }
-   function chooseMethod(s) {
-     return (~s.indexOf('.')) ? 'd' : 'f';
-   }
-   function createPartial(node, context) {
-     var prefix = "<" + (context.prefix || "");
-     var sym = prefix + node.n + serialNo++;
-     context.partials[sym] = {name: node.n, partials: {}};
-     context.code += 't.b(t.rp("' +  esc(sym) + '",c,p,"' + (node.indent || '') + '"));';
-     return sym;
-   }
-   Hogan.codegen = {
-     '#': function(node, context) {
-       context.code += 'if(t.s(t.' + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,1),' +
-                       'c,p,0,' + node.i + ',' + node.end + ',"' + node.otag + " " + node.ctag + '")){' +
-                       't.rs(c,p,' + 'function(c,p,t){';
-       Hogan.walk(node.nodes, context);
-       context.code += '});c.pop();}';
-     },
-     '^': function(node, context) {
-       context.code += 'if(!t.s(t.' + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,1),c,p,1,0,0,"")){';
-       Hogan.walk(node.nodes, context);
-       context.code += '};';
-     },
-     '>': createPartial,
-     '<': function(node, context) {
-       var ctx = {partials: {}, code: '', subs: {}, inPartial: true};
-       Hogan.walk(node.nodes, ctx);
-       var template = context.partials[createPartial(node, context)];
-       template.subs = ctx.subs;
-       template.partials = ctx.partials;
-     },
-     '$': function(node, context) {
-       var ctx = {subs: {}, code: '', partials: context.partials, prefix: node.n};
-       Hogan.walk(node.nodes, ctx);
-       context.subs[node.n] = ctx.code;
-       if (!context.inPartial) {
-         context.code += 't.sub("' + esc(node.n) + '",c,p,i);';
-       }
-     },
-     '\n': function(node, context) {
-       context.code += write('"\\n"' + (node.last ? '' : ' + i'));
-     },
-     '_v': function(node, context) {
-       context.code += 't.b(t.v(t.' + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,0)));';
-     },
-     '_t': function(node, context) {
-       context.code += write('"' + esc(node.text) + '"');
-     },
-     '{': tripleStache,
-     '&': tripleStache
-   }
-   function tripleStache(node, context) {
-     context.code += 't.b(t.t(t.' + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,0)));';
-   }
-   function write(s) {
-     return 't.b(' + s + ');';
-   }
-   Hogan.walk = function(nodelist, context) {
-     var func;
-     for (var i = 0, l = nodelist.length; i < l; i++) {
-       func = Hogan.codegen[nodelist[i].tag];
-       func && func(nodelist[i], context);
-     }
-     return context;
-   }
-   Hogan.parse = function(tokens, text, options) {
-     options = options || {};
-     return buildTree(tokens, '', [], options.sectionTags || []);
-   }
-   Hogan.cache = {};
-   Hogan.cacheKey = function(text, options) {
-     return [text, !!options.asString, !!options.disableLambda, options.delimiters, !!options.modelGet].join('||');
-   }
-   Hogan.compile = function(text, options) {
-     options = options || {};
-     var key = Hogan.cacheKey(text, options);
-     var template = this.cache[key];
-     if (template) {
-       var partials = template.partials;
-       for (var name in partials) {
-         delete partials[name].instance;
-       }
-       return template;
-     }
-     template = this.generate(this.parse(this.scan(text, options.delimiters), text, options), text, options);
-     return this.cache[key] = template;
-   }
- })( true ? exports : Hogan);
- /***/ }),
- /* 54 */
- /***/ (function(module, exports, __webpack_require__) {
- /*
-  *  Copyright 2011 Twitter, Inc.
-  *  Licensed under the Apache License, Version 2.0 (the "License");
-  *  you may not use this file except in compliance with the License.
-  *  You may obtain a copy of the License at
-  *
-  *  http://www.apache.org/licenses/LICENSE-2.0
-  *
-  *  Unless required by applicable law or agreed to in writing, software
-  *  distributed under the License is distributed on an "AS IS" BASIS,
-  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  *  See the License for the specific language governing permissions and
-  *  limitations under the License.
-  */
- // This file is for use with Node.js. See dist/ for browser files.
- var Hogan = __webpack_require__(53);
- Hogan.Template = __webpack_require__(55).Template;
- Hogan.template = Hogan.Template;
- module.exports = Hogan;
- /***/ }),
- /* 55 */
- /***/ (function(module, exports, __webpack_require__) {
- /*
-  *  Copyright 2011 Twitter, Inc.
-  *  Licensed under the Apache License, Version 2.0 (the "License");
-  *  you may not use this file except in compliance with the License.
-  *  You may obtain a copy of the License at
-  *
-  *  http://www.apache.org/licenses/LICENSE-2.0
-  *
-  *  Unless required by applicable law or agreed to in writing, software
-  *  distributed under the License is distributed on an "AS IS" BASIS,
-  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  *  See the License for the specific language governing permissions and
-  *  limitations under the License.
-  */
- var Hogan = {};
- (function (Hogan) {
-   Hogan.Template = function (codeObj, text, compiler, options) {
-     codeObj = codeObj || {};
-     this.r = codeObj.code || this.r;
-     this.c = compiler;
-     this.options = options || {};
-     this.text = text || '';
-     this.partials = codeObj.partials || {};
-     this.subs = codeObj.subs || {};
-     this.buf = '';
-   }
-   Hogan.Template.prototype = {
-     // render: replaced by generated code.
-     r: function (context, partials, indent) { return ''; },
-     // variable escaping
-     v: hoganEscape,
-     // triple stache
-     t: coerceToString,
-     render: function render(context, partials, indent) {
-       return this.ri([context], partials || {}, indent);
-     },
-     // render internal -- a hook for overrides that catches partials too
-     ri: function (context, partials, indent) {
-       return this.r(context, partials, indent);
-     },
-     // ensurePartial
-     ep: function(symbol, partials) {
-       var partial = this.partials[symbol];
-       // check to see that if we've instantiated this partial before
-       var template = partials[partial.name];
-       if (partial.instance && partial.base == template) {
-         return partial.instance;
-       }
-       if (typeof template == 'string') {
-         if (!this.c) {
-           throw new Error("No compiler available.");
-         }
-         template = this.c.compile(template, this.options);
-       }
-       if (!template) {
-         return null;
-       }
-       // We use this to check whether the partials dictionary has changed
-       this.partials[symbol].base = template;
-       if (partial.subs) {
-         // Make sure we consider parent template now
-         if (!partials.stackText) partials.stackText = {};
-         for (key in partial.subs) {
-           if (!partials.stackText[key]) {
-             partials.stackText[key] = (this.activeSub !== undefined && partials.stackText[this.activeSub]) ? partials.stackText[this.activeSub] : this.text;
-           }
-         }
-         template = createSpecializedPartial(template, partial.subs, partial.partials,
-           this.stackSubs, this.stackPartials, partials.stackText);
-       }
-       this.partials[symbol].instance = template;
-       return template;
-     },
-     // tries to find a partial in the current scope and render it
-     rp: function(symbol, context, partials, indent) {
-       var partial = this.ep(symbol, partials);
-       if (!partial) {
-         return '';
-       }
-       return partial.ri(context, partials, indent);
-     },
-     // render a section
-     rs: function(context, partials, section) {
-       var tail = context[context.length - 1];
-       if (!isArray(tail)) {
-         section(context, partials, this);
-         return;
-       }
-       for (var i = 0; i < tail.length; i++) {
-         context.push(tail[i]);
-         section(context, partials, this);
-         context.pop();
-       }
-     },
-     // maybe start a section
-     s: function(val, ctx, partials, inverted, start, end, tags) {
-       var pass;
-       if (isArray(val) && val.length === 0) {
-         return false;
-       }
-       if (typeof val == 'function') {
-         val = this.ms(val, ctx, partials, inverted, start, end, tags);
-       }
-       pass = !!val;
-       if (!inverted && pass && ctx) {
-         ctx.push((typeof val == 'object') ? val : ctx[ctx.length - 1]);
-       }
-       return pass;
-     },
-     // find values with dotted names
-     d: function(key, ctx, partials, returnFound) {
-       var found,
-           names = key.split('.'),
-           val = this.f(names[0], ctx, partials, returnFound),
-           doModelGet = this.options.modelGet,
-           cx = null;
-       if (key === '.' && isArray(ctx[ctx.length - 2])) {
-         val = ctx[ctx.length - 1];
-       } else {
-         for (var i = 1; i < names.length; i++) {
-           found = findInScope(names[i], val, doModelGet);
-           if (found !== undefined) {
-             cx = val;
-             val = found;
-           } else {
-             val = '';
-           }
-         }
-       }
-       if (returnFound && !val) {
-         return false;
-       }
-       if (!returnFound && typeof val == 'function') {
-         ctx.push(cx);
-         val = this.mv(val, ctx, partials);
-         ctx.pop();
-       }
-       return val;
-     },
-     // find values with normal names
-     f: function(key, ctx, partials, returnFound) {
-       var val = false,
-           v = null,
-           found = false,
-           doModelGet = this.options.modelGet;
-       for (var i = ctx.length - 1; i >= 0; i--) {
-         v = ctx[i];
-         val = findInScope(key, v, doModelGet);
-         if (val !== undefined) {
-           found = true;
-           break;
-         }
-       }
-       if (!found) {
-         return (returnFound) ? false : "";
-       }
-       if (!returnFound && typeof val == 'function') {
-         val = this.mv(val, ctx, partials);
-       }
-       return val;
-     },
-     // higher order templates
-     ls: function(func, cx, partials, text, tags) {
-       var oldTags = this.options.delimiters;
-       this.options.delimiters = tags;
-       this.b(this.ct(coerceToString(func.call(cx, text)), cx, partials));
-       this.options.delimiters = oldTags;
-       return false;
-     },
-     // compile text
-     ct: function(text, cx, partials) {
-       if (this.options.disableLambda) {
-         throw new Error('Lambda features disabled.');
-       }
-       return this.c.compile(text, this.options).render(cx, partials);
-     },
-     // template result buffering
-     b: function(s) { this.buf += s; },
-     fl: function() { var r = this.buf; this.buf = ''; return r; },
-     // method replace section
-     ms: function(func, ctx, partials, inverted, start, end, tags) {
-       var textSource,
-           cx = ctx[ctx.length - 1],
-           result = func.call(cx);
-       if (typeof result == 'function') {
-         if (inverted) {
-           return true;
-         } else {
-           textSource = (this.activeSub && this.subsText && this.subsText[this.activeSub]) ? this.subsText[this.activeSub] : this.text;
-           return this.ls(result, cx, partials, textSource.substring(start, end), tags);
-         }
-       }
-       return result;
-     },
-     // method replace variable
-     mv: function(func, ctx, partials) {
-       var cx = ctx[ctx.length - 1];
-       var result = func.call(cx);
-       if (typeof result == 'function') {
-         return this.ct(coerceToString(result.call(cx)), cx, partials);
-       }
-       return result;
-     },
-     sub: function(name, context, partials, indent) {
-       var f = this.subs[name];
-       if (f) {
-         this.activeSub = name;
-         f(context, partials, this, indent);
-         this.activeSub = false;
-       }
-     }
-   };
-   //Find a key in an object
-   function findInScope(key, scope, doModelGet) {
-     var val;
-     if (scope && typeof scope == 'object') {
-       if (scope[key] !== undefined) {
-         val = scope[key];
-       // try lookup with get for backbone or similar model data
-       } else if (doModelGet && scope.get && typeof scope.get == 'function') {
-         val = scope.get(key);
-       }
-     }
-     return val;
-   }
-   function createSpecializedPartial(instance, subs, partials, stackSubs, stackPartials, stackText) {
-     function PartialTemplate() {};
-     PartialTemplate.prototype = instance;
-     function Substitutions() {};
-     Substitutions.prototype = instance.subs;
-     var key;
-     var partial = new PartialTemplate();
-     partial.subs = new Substitutions();
-     partial.subsText = {};  //hehe. substext.
-     partial.buf = '';
-     stackSubs = stackSubs || {};
-     partial.stackSubs = stackSubs;
-     partial.subsText = stackText;
-     for (key in subs) {
-       if (!stackSubs[key]) stackSubs[key] = subs[key];
-     }
-     for (key in stackSubs) {
-       partial.subs[key] = stackSubs[key];
-     }
-     stackPartials = stackPartials || {};
-     partial.stackPartials = stackPartials;
-     for (key in partials) {
-       if (!stackPartials[key]) stackPartials[key] = partials[key];
-     }
-     for (key in stackPartials) {
-       partial.partials[key] = stackPartials[key];
-     }
-     return partial;
-   }
-   var rAmp = /&/g,
-       rLt = /</g,
-       rGt = />/g,
-       rApos = /\'/g,
-       rQuot = /\"/g,
-       hChars = /[&<>\"\']/;
-   function coerceToString(val) {
-     return String((val === null || val === undefined) ? '' : val);
-   }
-   function hoganEscape(str) {
-     str = coerceToString(str);
-     return hChars.test(str) ?
-       str
-         .replace(rAmp, '&amp;')
-         .replace(rLt, '&lt;')
-         .replace(rGt, '&gt;')
-         .replace(rApos, '&#39;')
-         .replace(rQuot, '&quot;') :
-       str;
-   }
-   var isArray = Array.isArray || function(a) {
-     return Object.prototype.toString.call(a) === '[object Array]';
-   };
- })( true ? exports : Hogan);
- /***/ }),
- /* 56 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var types = [
-   __webpack_require__(59),
-   __webpack_require__(58),
-   __webpack_require__(57),
-   __webpack_require__(60),
-   __webpack_require__(61)
- ];
- var draining;
- var currentQueue;
- var queueIndex = -1;
- var queue = [];
- var scheduled = false;
- function cleanUpNextTick() {
-   if (!draining || !currentQueue) {
-     return;
-   }
-   draining = false;
-   if (currentQueue.length) {
-     queue = currentQueue.concat(queue);
-   } else {
-     queueIndex = -1;
-   }
-   if (queue.length) {
-     nextTick();
-   }
- }
- //named nextTick for less confusing stack traces
- function nextTick() {
-   if (draining) {
-     return;
-   }
-   scheduled = false;
-   draining = true;
-   var len = queue.length;
-   var timeout = setTimeout(cleanUpNextTick);
-   while (len) {
-     currentQueue = queue;
-     queue = [];
-     while (currentQueue && ++queueIndex < len) {
-       currentQueue[queueIndex].run();
-     }
-     queueIndex = -1;
-     len = queue.length;
-   }
-   currentQueue = null;
-   queueIndex = -1;
-   draining = false;
-   clearTimeout(timeout);
- }
- var scheduleDrain;
- var i = -1;
- var len = types.length;
- while (++i < len) {
-   if (types[i] && types[i].test && types[i].test()) {
-     scheduleDrain = types[i].install(nextTick);
-     break;
-   }
- }
- // v8 likes predictible objects
- function Item(fun, array) {
-   this.fun = fun;
-   this.array = array;
- }
- Item.prototype.run = function () {
-   var fun = this.fun;
-   var array = this.array;
-   switch (array.length) {
-   case 0:
-     return fun();
-   case 1:
-     return fun(array[0]);
-   case 2:
-     return fun(array[0], array[1]);
-   case 3:
-     return fun(array[0], array[1], array[2]);
-   default:
-     return fun.apply(null, array);
-   }
- };
- module.exports = immediate;
- function immediate(task) {
-   var args = new Array(arguments.length - 1);
-   if (arguments.length > 1) {
-     for (var i = 1; i < arguments.length; i++) {
-       args[i - 1] = arguments[i];
-     }
-   }
-   queue.push(new Item(task, args));
-   if (!scheduled && !draining) {
-     scheduled = true;
-     scheduleDrain();
-   }
- }
- /***/ }),
- /* 57 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(global) {
- exports.test = function () {
-   if (global.setImmediate) {
-     // we can only get here in IE10
-     // which doesn't handel postMessage well
-     return false;
-   }
-   return typeof global.MessageChannel !== 'undefined';
- };
- exports.install = function (func) {
-   var channel = new global.MessageChannel();
-   channel.port1.onmessage = func;
-   return function () {
-     channel.port2.postMessage(0);
-   };
- };
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))
- /***/ }),
- /* 58 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(global) {
- //based off rsvp https://github.com/tildeio/rsvp.js
- //license https://github.com/tildeio/rsvp.js/blob/master/LICENSE
- //https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/asap.js
- var Mutation = global.MutationObserver || global.WebKitMutationObserver;
- exports.test = function () {
-   return Mutation;
- };
- exports.install = function (handle) {
-   var called = 0;
-   var observer = new Mutation(handle);
-   var element = global.document.createTextNode('');
-   observer.observe(element, {
-     characterData: true
-   });
-   return function () {
-     element.data = (called = ++called % 2);
-   };
- };
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))
- /***/ }),
- /* 59 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {
- exports.test = function () {
-   // Don't get fooled by e.g. browserify environments.
-   return (typeof process !== 'undefined') && !process.browser;
- };
- exports.install = function (func) {
-   return function () {
-     process.nextTick(func);
-   };
- };
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11)))
- /***/ }),
- /* 60 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(global) {
- exports.test = function () {
-   return 'document' in global && 'onreadystatechange' in global.document.createElement('script');
- };
- exports.install = function (handle) {
-   return function () {
-     // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
-     // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
-     var scriptEl = global.document.createElement('script');
-     scriptEl.onreadystatechange = function () {
-       handle();
-       scriptEl.onreadystatechange = null;
-       scriptEl.parentNode.removeChild(scriptEl);
-       scriptEl = null;
-     };
-     global.document.documentElement.appendChild(scriptEl);
-     return handle;
-   };
- };
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))
- /***/ }),
- /* 61 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- exports.test = function () {
-   return true;
- };
- exports.install = function (t) {
-   return function () {
-     setTimeout(t, 0);
-   };
- };
- /***/ }),
- /* 62 */
- /***/ (function(module, exports) {
- /**
-  * Helpers.
-  */
- var s = 1000
- var m = s * 60
- var h = m * 60
- var d = h * 24
- var y = d * 365.25
- /**
-  * Parse or format the given `val`.
-  *
-  * Options:
-  *
-  *  - `long` verbose formatting [false]
-  *
-  * @param {String|Number} val
-  * @param {Object} options
-  * @throws {Error} throw an error if val is not a non-empty string or a number
-  * @return {String|Number}
-  * @api public
-  */
- module.exports = function (val, options) {
-   options = options || {}
-   var type = typeof val
-   if (type === 'string' && val.length > 0) {
-     return parse(val)
-   } else if (type === 'number' && isNaN(val) === false) {
-     return options.long ?
-                       fmtLong(val) :
-                       fmtShort(val)
-   }
-   throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val))
- }
- /**
-  * Parse the given `str` and return milliseconds.
-  *
-  * @param {String} str
-  * @return {Number}
-  * @api private
-  */
- function parse(str) {
-   str = String(str)
-   if (str.length > 10000) {
-     return
-   }
-   var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str)
-   if (!match) {
-     return
-   }
-   var n = parseFloat(match[1])
-   var type = (match[2] || 'ms').toLowerCase()
-   switch (type) {
-     case 'years':
-     case 'year':
-     case 'yrs':
-     case 'yr':
-     case 'y':
-       return n * y
-     case 'days':
-     case 'day':
-     case 'd':
-       return n * d
-     case 'hours':
-     case 'hour':
-     case 'hrs':
-     case 'hr':
-     case 'h':
-       return n * h
-     case 'minutes':
-     case 'minute':
-     case 'mins':
-     case 'min':
-     case 'm':
-       return n * m
-     case 'seconds':
-     case 'second':
-     case 'secs':
-     case 'sec':
-     case 's':
-       return n * s
-     case 'milliseconds':
-     case 'millisecond':
-     case 'msecs':
-     case 'msec':
-     case 'ms':
-       return n
-     default:
-       return undefined
-   }
- }
- /**
-  * Short format for `ms`.
-  *
-  * @param {Number} ms
-  * @return {String}
-  * @api private
-  */
- function fmtShort(ms) {
-   if (ms >= d) {
-     return Math.round(ms / d) + 'd'
-   }
-   if (ms >= h) {
-     return Math.round(ms / h) + 'h'
-   }
-   if (ms >= m) {
-     return Math.round(ms / m) + 'm'
-   }
-   if (ms >= s) {
-     return Math.round(ms / s) + 's'
-   }
-   return ms + 'ms'
- }
- /**
-  * Long format for `ms`.
-  *
-  * @param {Number} ms
-  * @return {String}
-  * @api private
-  */
- function fmtLong(ms) {
-   return plural(ms, d, 'day') ||
-     plural(ms, h, 'hour') ||
-     plural(ms, m, 'minute') ||
-     plural(ms, s, 'second') ||
-     ms + ' ms'
- }
- /**
-  * Pluralization helper.
-  */
- function plural(ms, n, name) {
-   if (ms < n) {
-     return
-   }
-   if (ms < n * 1.5) {
-     return Math.floor(ms / n) + ' ' + name
-   }
-   return Math.ceil(ms / n) + ' ' + name + 's'
- }
- /***/ }),
- /* 63 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- // modified from https://github.com/es-shims/es5-shim
- var has = Object.prototype.hasOwnProperty;
- var toStr = Object.prototype.toString;
- var slice = Array.prototype.slice;
- var isArgs = __webpack_require__(64);
- var isEnumerable = Object.prototype.propertyIsEnumerable;
- var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');
- var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');
- var dontEnums = [
-       'toString',
-       'toLocaleString',
-       'valueOf',
-       'hasOwnProperty',
-       'isPrototypeOf',
-       'propertyIsEnumerable',
-       'constructor'
- ];
- var equalsConstructorPrototype = function (o) {
-       var ctor = o.constructor;
-       return ctor && ctor.prototype === o;
- };
- var excludedKeys = {
-       $console: true,
-       $external: true,
-       $frame: true,
-       $frameElement: true,
-       $frames: true,
-       $innerHeight: true,
-       $innerWidth: true,
-       $outerHeight: true,
-       $outerWidth: true,
-       $pageXOffset: true,
-       $pageYOffset: true,
-       $parent: true,
-       $scrollLeft: true,
-       $scrollTop: true,
-       $scrollX: true,
-       $scrollY: true,
-       $self: true,
-       $webkitIndexedDB: true,
-       $webkitStorageInfo: true,
-       $window: true
- };
- var hasAutomationEqualityBug = (function () {
-       /* global window */
-       if (typeof window === 'undefined') { return false; }
-       for (var k in window) {
-               try {
-                       if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {
-                               try {
-                                       equalsConstructorPrototype(window[k]);
-                               } catch (e) {
-                                       return true;
-                               }
-                       }
-               } catch (e) {
-                       return true;
-               }
-       }
-       return false;
- }());
- var equalsConstructorPrototypeIfNotBuggy = function (o) {
-       /* global window */
-       if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
-               return equalsConstructorPrototype(o);
-       }
-       try {
-               return equalsConstructorPrototype(o);
-       } catch (e) {
-               return false;
-       }
- };
- var keysShim = function keys(object) {
-       var isObject = object !== null && typeof object === 'object';
-       var isFunction = toStr.call(object) === '[object Function]';
-       var isArguments = isArgs(object);
-       var isString = isObject && toStr.call(object) === '[object String]';
-       var theKeys = [];
-       if (!isObject && !isFunction && !isArguments) {
-               throw new TypeError('Object.keys called on a non-object');
-       }
-       var skipProto = hasProtoEnumBug && isFunction;
-       if (isString && object.length > 0 && !has.call(object, 0)) {
-               for (var i = 0; i < object.length; ++i) {
-                       theKeys.push(String(i));
-               }
-       }
-       if (isArguments && object.length > 0) {
-               for (var j = 0; j < object.length; ++j) {
-                       theKeys.push(String(j));
-               }
-       } else {
-               for (var name in object) {
-                       if (!(skipProto && name === 'prototype') && has.call(object, name)) {
-                               theKeys.push(String(name));
-                       }
-               }
-       }
-       if (hasDontEnumBug) {
-               var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
-               for (var k = 0; k < dontEnums.length; ++k) {
-                       if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {
-                               theKeys.push(dontEnums[k]);
-                       }
-               }
-       }
-       return theKeys;
- };
- keysShim.shim = function shimObjectKeys() {
-       if (Object.keys) {
-               var keysWorksWithArguments = (function () {
-                       // Safari 5.0 bug
-                       return (Object.keys(arguments) || '').length === 2;
-               }(1, 2));
-               if (!keysWorksWithArguments) {
-                       var originalKeys = Object.keys;
-                       Object.keys = function keys(object) {
-                               if (isArgs(object)) {
-                                       return originalKeys(slice.call(object));
-                               } else {
-                                       return originalKeys(object);
-                               }
-                       };
-               }
-       } else {
-               Object.keys = keysShim;
-       }
-       return Object.keys || keysShim;
- };
- module.exports = keysShim;
- /***/ }),
- /* 64 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var toStr = Object.prototype.toString;
- module.exports = function isArguments(value) {
-       var str = toStr.call(value);
-       var isArgs = str === '[object Arguments]';
-       if (!isArgs) {
-               isArgs = str !== '[object Array]' &&
-                       value !== null &&
-                       typeof value === 'object' &&
-                       typeof value.length === 'number' &&
-                       value.length >= 0 &&
-                       toStr.call(value.callee) === '[object Function]';
-       }
-       return isArgs;
- };
- /***/ }),
- /* 65 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- // Copyright Joyent, Inc. and other Node contributors.
- //
- // Permission is hereby granted, free of charge, to any person obtaining a
- // copy of this software and associated documentation files (the
- // "Software"), to deal in the Software without restriction, including
- // without limitation the rights to use, copy, modify, merge, publish,
- // distribute, sublicense, and/or sell copies of the Software, and to permit
- // persons to whom the Software is furnished to do so, subject to the
- // following conditions:
- //
- // The above copyright notice and this permission notice shall be included
- // in all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
- var stringifyPrimitive = function(v) {
-   switch (typeof v) {
-     case 'string':
-       return v;
-     case 'boolean':
-       return v ? 'true' : 'false';
-     case 'number':
-       return isFinite(v) ? v : '';
-     default:
-       return '';
-   }
- };
- module.exports = function(obj, sep, eq, name) {
-   sep = sep || '&';
-   eq = eq || '=';
-   if (obj === null) {
-     obj = undefined;
-   }
-   if (typeof obj === 'object') {
-     return map(objectKeys(obj), function(k) {
-       var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
-       if (isArray(obj[k])) {
-         return map(obj[k], function(v) {
-           return ks + encodeURIComponent(stringifyPrimitive(v));
-         }).join(sep);
-       } else {
-         return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
-       }
-     }).join(sep);
-   }
-   if (!name) return '';
-   return encodeURIComponent(stringifyPrimitive(name)) + eq +
-          encodeURIComponent(stringifyPrimitive(obj));
- };
- var isArray = Array.isArray || function (xs) {
-   return Object.prototype.toString.call(xs) === '[object Array]';
- };
- function map (xs, f) {
-   if (xs.map) return xs.map(f);
-   var res = [];
-   for (var i = 0; i < xs.length; i++) {
-     res.push(f(xs[i], i));
-   }
-   return res;
- }
- var objectKeys = Object.keys || function (obj) {
-   var res = [];
-   for (var key in obj) {
-     if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
-   }
-   return res;
- };
- /***/ }),
- /* 66 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var _bind = Function.prototype.bind;
- function toFactory(Class) {
-   var Factory = function Factory() {
-     for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-       args[_key] = arguments[_key];
-     }
-     return new (_bind.apply(Class, [null].concat(args)))();
-   };
-   Factory.__proto__ = Class;
-   Factory.prototype = Class.prototype;
-   return Factory;
- }
- module.exports = toFactory;
- /***/ }),
- /* 67 */
- /***/ (function(module, exports) {
- /* (ignored) */
- /***/ })
- /******/ ]);
- });
- //# sourceMappingURL=docsearch.js.map
- /***/ }),
- /* 13 */
- /***/ (function(module, exports) {
- (function(window, factory) {
-       var lazySizes = factory(window, window.document);
-       window.lazySizes = lazySizes;
-       if(typeof module == 'object' && module.exports){
-               module.exports = lazySizes;
-       }
- }(window, function l(window, document) {
-       'use strict';
-       /*jshint eqnull:true */
-       if(!document.getElementsByClassName){return;}
-       var lazySizesConfig;
-       var docElem = document.documentElement;
-       var Date = window.Date;
-       var supportPicture = window.HTMLPictureElement;
-       var _addEventListener = 'addEventListener';
-       var _getAttribute = 'getAttribute';
-       var addEventListener = window[_addEventListener];
-       var setTimeout = window.setTimeout;
-       var requestAnimationFrame = window.requestAnimationFrame || setTimeout;
-       var requestIdleCallback = window.requestIdleCallback;
-       var regPicture = /^picture$/i;
-       var loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];
-       var regClassCache = {};
-       var forEach = Array.prototype.forEach;
-       var hasClass = function(ele, cls) {
-               if(!regClassCache[cls]){
-                       regClassCache[cls] = new RegExp('(\\s|^)'+cls+'(\\s|$)');
-               }
-               return regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];
-       };
-       var addClass = function(ele, cls) {
-               if (!hasClass(ele, cls)){
-                       ele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);
-               }
-       };
-       var removeClass = function(ele, cls) {
-               var reg;
-               if ((reg = hasClass(ele,cls))) {
-                       ele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));
-               }
-       };
-       var addRemoveLoadEvents = function(dom, fn, add){
-               var action = add ? _addEventListener : 'removeEventListener';
-               if(add){
-                       addRemoveLoadEvents(dom, fn);
-               }
-               loadEvents.forEach(function(evt){
-                       dom[action](evt, fn);
-               });
-       };
-       var triggerEvent = function(elem, name, detail, noBubbles, noCancelable){
-               var event = document.createEvent('CustomEvent');
-               event.initCustomEvent(name, !noBubbles, !noCancelable, detail || {});
-               elem.dispatchEvent(event);
-               return event;
-       };
-       var updatePolyfill = function (el, full){
-               var polyfill;
-               if( !supportPicture && ( polyfill = (window.picturefill || lazySizesConfig.pf) ) ){
-                       polyfill({reevaluate: true, elements: [el]});
-               } else if(full && full.src){
-                       el.src = full.src;
-               }
-       };
-       var getCSS = function (elem, style){
-               return (getComputedStyle(elem, null) || {})[style];
-       };
-       var getWidth = function(elem, parent, width){
-               width = width || elem.offsetWidth;
-               while(width < lazySizesConfig.minSize && parent && !elem._lazysizesWidth){
-                       width =  parent.offsetWidth;
-                       parent = parent.parentNode;
-               }
-               return width;
-       };
-       var rAF = (function(){
-               var running, waiting;
-               var firstFns = [];
-               var secondFns = [];
-               var fns = firstFns;
-               var run = function(){
-                       var runFns = fns;
-                       fns = firstFns.length ? secondFns : firstFns;
-                       running = true;
-                       waiting = false;
-                       while(runFns.length){
-                               runFns.shift()();
-                       }
-                       running = false;
-               };
-               var rafBatch = function(fn, queue){
-                       if(running && !queue){
-                               fn.apply(this, arguments);
-                       } else {
-                               fns.push(fn);
-                               if(!waiting){
-                                       waiting = true;
-                                       (document.hidden ? setTimeout : requestAnimationFrame)(run);
-                               }
-                       }
-               };
-               rafBatch._lsFlush = run;
-               return rafBatch;
-       })();
-       var rAFIt = function(fn, simple){
-               return simple ?
-                       function() {
-                               rAF(fn);
-                       } :
-                       function(){
-                               var that = this;
-                               var args = arguments;
-                               rAF(function(){
-                                       fn.apply(that, args);
-                               });
-                       }
-               ;
-       };
-       var throttle = function(fn){
-               var running;
-               var lastTime = 0;
-               var gDelay = 125;
-               var RIC_DEFAULT_TIMEOUT = 666;
-               var rICTimeout = RIC_DEFAULT_TIMEOUT;
-               var run = function(){
-                       running = false;
-                       lastTime = Date.now();
-                       fn();
-               };
-               var idleCallback = requestIdleCallback ?
-                       function(){
-                               requestIdleCallback(run, {timeout: rICTimeout});
-                               if(rICTimeout !== RIC_DEFAULT_TIMEOUT){
-                                       rICTimeout = RIC_DEFAULT_TIMEOUT;
-                               }
-                       }:
-                       rAFIt(function(){
-                               setTimeout(run);
-                       }, true)
-               ;
-               return function(isPriority){
-                       var delay;
-                       if((isPriority = isPriority === true)){
-                               rICTimeout = 44;
-                       }
-                       if(running){
-                               return;
-                       }
-                       running =  true;
-                       delay = gDelay - (Date.now() - lastTime);
-                       if(delay < 0){
-                               delay = 0;
-                       }
-                       if(isPriority || (delay < 9 && requestIdleCallback)){
-                               idleCallback();
-                       } else {
-                               setTimeout(idleCallback, delay);
-                       }
-               };
-       };
-       //based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html
-       var debounce = function(func) {
-               var timeout, timestamp;
-               var wait = 99;
-               var run = function(){
-                       timeout = null;
-                       func();
-               };
-               var later = function() {
-                       var last = Date.now() - timestamp;
-                       if (last < wait) {
-                               setTimeout(later, wait - last);
-                       } else {
-                               (requestIdleCallback || run)(run);
-                       }
-               };
-               return function() {
-                       timestamp = Date.now();
-                       if (!timeout) {
-                               timeout = setTimeout(later, wait);
-                       }
-               };
-       };
-       var loader = (function(){
-               var lazyloadElems, preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;
-               var eLvW, elvH, eLtop, eLleft, eLright, eLbottom;
-               var defaultExpand, preloadExpand, hFac;
-               var regImg = /^img$/i;
-               var regIframe = /^iframe$/i;
-               var supportScroll = ('onscroll' in window) && !(/glebot/.test(navigator.userAgent));
-               var shrinkExpand = 0;
-               var currentExpand = 0;
-               var isLoading = 0;
-               var lowRuns = -1;
-               var resetPreloading = function(e){
-                       isLoading--;
-                       if(e && e.target){
-                               addRemoveLoadEvents(e.target, resetPreloading);
-                       }
-                       if(!e || isLoading < 0 || !e.target){
-                               isLoading = 0;
-                       }
-               };
-               var isNestedVisible = function(elem, elemExpand){
-                       var outerRect;
-                       var parent = elem;
-                       var visible = getCSS(document.body, 'visibility') == 'hidden' || getCSS(elem, 'visibility') != 'hidden';
-                       eLtop -= elemExpand;
-                       eLbottom += elemExpand;
-                       eLleft -= elemExpand;
-                       eLright += elemExpand;
-                       while(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){
-                               visible = ((getCSS(parent, 'opacity') || 1) > 0);
-                               if(visible && getCSS(parent, 'overflow') != 'visible'){
-                                       outerRect = parent.getBoundingClientRect();
-                                       visible = eLright > outerRect.left &&
-                                               eLleft < outerRect.right &&
-                                               eLbottom > outerRect.top - 1 &&
-                                               eLtop < outerRect.bottom + 1
-                                       ;
-                               }
-                       }
-                       return visible;
-               };
-               var checkElements = function() {
-                       var eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal, beforeExpandVal;
-                       if((loadMode = lazySizesConfig.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){
-                               i = 0;
-                               lowRuns++;
-                               if(preloadExpand == null){
-                                       if(!('expand' in lazySizesConfig)){
-                                               lazySizesConfig.expand = docElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370;
-                                       }
-                                       defaultExpand = lazySizesConfig.expand;
-                                       preloadExpand = defaultExpand * lazySizesConfig.expFactor;
-                               }
-                               if(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){
-                                       currentExpand = preloadExpand;
-                                       lowRuns = 0;
-                               } else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){
-                                       currentExpand = defaultExpand;
-                               } else {
-                                       currentExpand = shrinkExpand;
-                               }
-                               for(; i < eLlen; i++){
-                                       if(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}
-                                       if(!supportScroll){unveilElement(lazyloadElems[i]);continue;}
-                                       if(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){
-                                               elemExpand = currentExpand;
-                                       }
-                                       if(beforeExpandVal !== elemExpand){
-                                               eLvW = innerWidth + (elemExpand * hFac);
-                                               elvH = innerHeight + elemExpand;
-                                               elemNegativeExpand = elemExpand * -1;
-                                               beforeExpandVal = elemExpand;
-                                       }
-                                       rect = lazyloadElems[i].getBoundingClientRect();
-                                       if ((eLbottom = rect.bottom) >= elemNegativeExpand &&
-                                               (eLtop = rect.top) <= elvH &&
-                                               (eLright = rect.right) >= elemNegativeExpand * hFac &&
-                                               (eLleft = rect.left) <= eLvW &&
-                                               (eLbottom || eLright || eLleft || eLtop) &&
-                                               ((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){
-                                               unveilElement(lazyloadElems[i]);
-                                               loadedSomething = true;
-                                               if(isLoading > 9){break;}
-                                       } else if(!loadedSomething && isCompleted && !autoLoadElem &&
-                                               isLoading < 4 && lowRuns < 4 && loadMode > 2 &&
-                                               (preloadElems[0] || lazySizesConfig.preloadAfterLoad) &&
-                                               (preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesConfig.sizesAttr) != 'auto')))){
-                                               autoLoadElem = preloadElems[0] || lazyloadElems[i];
-                                       }
-                               }
-                               if(autoLoadElem && !loadedSomething){
-                                       unveilElement(autoLoadElem);
-                               }
-                       }
-               };
-               var throttledCheckElements = throttle(checkElements);
-               var switchLoadingClass = function(e){
-                       addClass(e.target, lazySizesConfig.loadedClass);
-                       removeClass(e.target, lazySizesConfig.loadingClass);
-                       addRemoveLoadEvents(e.target, rafSwitchLoadingClass);
-               };
-               var rafedSwitchLoadingClass = rAFIt(switchLoadingClass);
-               var rafSwitchLoadingClass = function(e){
-                       rafedSwitchLoadingClass({target: e.target});
-               };
-               var changeIframeSrc = function(elem, src){
-                       try {
-                               elem.contentWindow.location.replace(src);
-                       } catch(e){
-                               elem.src = src;
-                       }
-               };
-               var handleSources = function(source){
-                       var customMedia, parent;
-                       var sourceSrcset = source[_getAttribute](lazySizesConfig.srcsetAttr);
-                       if( (customMedia = lazySizesConfig.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){
-                               source.setAttribute('media', customMedia);
-                       }
-                       if(sourceSrcset){
-                               source.setAttribute('srcset', sourceSrcset);
-                       }
-                       //https://bugzilla.mozilla.org/show_bug.cgi?id=1170572
-                       if(customMedia){
-                               parent = source.parentNode;
-                               parent.insertBefore(source.cloneNode(), source);
-                               parent.removeChild(source);
-                       }
-               };
-               var lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){
-                       var src, srcset, parent, isPicture, event, firesLoad;
-                       if(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){
-                               if(sizes){
-                                       if(isAuto){
-                                               addClass(elem, lazySizesConfig.autosizesClass);
-                                       } else {
-                                               elem.setAttribute('sizes', sizes);
-                                       }
-                               }
-                               srcset = elem[_getAttribute](lazySizesConfig.srcsetAttr);
-                               src = elem[_getAttribute](lazySizesConfig.srcAttr);
-                               if(isImg) {
-                                       parent = elem.parentNode;
-                                       isPicture = parent && regPicture.test(parent.nodeName || '');
-                               }
-                               firesLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));
-                               event = {target: elem};
-                               if(firesLoad){
-                                       addRemoveLoadEvents(elem, resetPreloading, true);
-                                       clearTimeout(resetPreloadingTimer);
-                                       resetPreloadingTimer = setTimeout(resetPreloading, 2500);
-                                       addClass(elem, lazySizesConfig.loadingClass);
-                                       addRemoveLoadEvents(elem, rafSwitchLoadingClass, true);
-                               }
-                               if(isPicture){
-                                       forEach.call(parent.getElementsByTagName('source'), handleSources);
-                               }
-                               if(srcset){
-                                       elem.setAttribute('srcset', srcset);
-                               } else if(src && !isPicture){
-                                       if(regIframe.test(elem.nodeName)){
-                                               changeIframeSrc(elem, src);
-                                       } else {
-                                               elem.src = src;
-                                       }
-                               }
-                               if(srcset || isPicture){
-                                       updatePolyfill(elem, {src: src});
-                               }
-                       }
-                       if(elem._lazyRace){
-                               delete elem._lazyRace;
-                       }
-                       removeClass(elem, lazySizesConfig.lazyClass);
-                       rAF(function(){
-                               if( !firesLoad || (elem.complete && elem.naturalWidth > 1)){
-                                       if(firesLoad){
-                                               resetPreloading(event);
-                                       } else {
-                                               isLoading--;
-                                       }
-                                       switchLoadingClass(event);
-                               }
-                       }, true);
-               });
-               var unveilElement = function (elem){
-                       var detail;
-                       var isImg = regImg.test(elem.nodeName);
-                       //allow using sizes="auto", but don't use. it's invalid. Use data-sizes="auto" or a valid value for sizes instead (i.e.: sizes="80vw")
-                       var sizes = isImg && (elem[_getAttribute](lazySizesConfig.sizesAttr) || elem[_getAttribute]('sizes'));
-                       var isAuto = sizes == 'auto';
-                       if( (isAuto || !isCompleted) && isImg && (elem.src || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesConfig.errorClass)){return;}
-                       detail = triggerEvent(elem, 'lazyunveilread').detail;
-                       if(isAuto){
-                                autoSizer.updateElem(elem, true, elem.offsetWidth);
-                       }
-                       elem._lazyRace = true;
-                       isLoading++;
-                       lazyUnveil(elem, detail, isAuto, sizes, isImg);
-               };
-               var onload = function(){
-                       if(isCompleted){return;}
-                       if(Date.now() - started < 999){
-                               setTimeout(onload, 999);
-                               return;
-                       }
-                       var afterScroll = debounce(function(){
-                               lazySizesConfig.loadMode = 3;
-                               throttledCheckElements();
-                       });
-                       isCompleted = true;
-                       lazySizesConfig.loadMode = 3;
-                       throttledCheckElements();
-                       addEventListener('scroll', function(){
-                               if(lazySizesConfig.loadMode == 3){
-                                       lazySizesConfig.loadMode = 2;
-                               }
-                               afterScroll();
-                       }, true);
-               };
-               return {
-                       _: function(){
-                               started = Date.now();
-                               lazyloadElems = document.getElementsByClassName(lazySizesConfig.lazyClass);
-                               preloadElems = document.getElementsByClassName(lazySizesConfig.lazyClass + ' ' + lazySizesConfig.preloadClass);
-                               hFac = lazySizesConfig.hFac;
-                               addEventListener('scroll', throttledCheckElements, true);
-                               addEventListener('resize', throttledCheckElements, true);
-                               if(window.MutationObserver){
-                                       new MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );
-                               } else {
-                                       docElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);
-                                       docElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);
-                                       setInterval(throttledCheckElements, 999);
-                               }
-                               addEventListener('hashchange', throttledCheckElements, true);
-                               //, 'fullscreenchange'
-                               ['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend', 'webkitAnimationEnd'].forEach(function(name){
-                                       document[_addEventListener](name, throttledCheckElements, true);
-                               });
-                               if((/d$|^c/.test(document.readyState))){
-                                       onload();
-                               } else {
-                                       addEventListener('load', onload);
-                                       document[_addEventListener]('DOMContentLoaded', throttledCheckElements);
-                                       setTimeout(onload, 20000);
-                               }
-                               if(lazyloadElems.length){
-                                       checkElements();
-                                       rAF._lsFlush();
-                               } else {
-                                       throttledCheckElements();
-                               }
-                       },
-                       checkElems: throttledCheckElements,
-                       unveil: unveilElement
-               };
-       })();
-       var autoSizer = (function(){
-               var autosizesElems;
-               var sizeElement = rAFIt(function(elem, parent, event, width){
-                       var sources, i, len;
-                       elem._lazysizesWidth = width;
-                       width += 'px';
-                       elem.setAttribute('sizes', width);
-                       if(regPicture.test(parent.nodeName || '')){
-                               sources = parent.getElementsByTagName('source');
-                               for(i = 0, len = sources.length; i < len; i++){
-                                       sources[i].setAttribute('sizes', width);
-                               }
-                       }
-                       if(!event.detail.dataAttr){
-                               updatePolyfill(elem, event.detail);
-                       }
-               });
-               var getSizeElement = function (elem, dataAttr, width){
-                       var event;
-                       var parent = elem.parentNode;
-                       if(parent){
-                               width = getWidth(elem, parent, width);
-                               event = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});
-                               if(!event.defaultPrevented){
-                                       width = event.detail.width;
-                                       if(width && width !== elem._lazysizesWidth){
-                                               sizeElement(elem, parent, event, width);
-                                       }
-                               }
-                       }
-               };
-               var updateElementsSizes = function(){
-                       var i;
-                       var len = autosizesElems.length;
-                       if(len){
-                               i = 0;
-                               for(; i < len; i++){
-                                       getSizeElement(autosizesElems[i]);
-                               }
-                       }
-               };
-               var debouncedUpdateElementsSizes = debounce(updateElementsSizes);
-               return {
-                       _: function(){
-                               autosizesElems = document.getElementsByClassName(lazySizesConfig.autosizesClass);
-                               addEventListener('resize', debouncedUpdateElementsSizes);
-                       },
-                       checkElems: debouncedUpdateElementsSizes,
-                       updateElem: getSizeElement
-               };
-       })();
-       var init = function(){
-               if(!init.i){
-                       init.i = true;
-                       autoSizer._();
-                       loader._();
-               }
-       };
-       (function(){
-               var prop;
-               var lazySizesDefaults = {
-                       lazyClass: 'lazyload',
-                       loadedClass: 'lazyloaded',
-                       loadingClass: 'lazyloading',
-                       preloadClass: 'lazypreload',
-                       errorClass: 'lazyerror',
-                       //strictClass: 'lazystrict',
-                       autosizesClass: 'lazyautosizes',
-                       srcAttr: 'data-src',
-                       srcsetAttr: 'data-srcset',
-                       sizesAttr: 'data-sizes',
-                       //preloadAfterLoad: false,
-                       minSize: 40,
-                       customMedia: {},
-                       init: true,
-                       expFactor: 1.5,
-                       hFac: 0.8,
-                       loadMode: 2
-               };
-               lazySizesConfig = window.lazySizesConfig || window.lazysizesConfig || {};
-               for(prop in lazySizesDefaults){
-                       if(!(prop in lazySizesConfig)){
-                               lazySizesConfig[prop] = lazySizesDefaults[prop];
-                       }
-               }
-               window.lazySizesConfig = lazySizesConfig;
-               setTimeout(function(){
-                       if(lazySizesConfig.init){
-                               init();
-                       }
-               });
-       })();
-       return {
-               cfg: lazySizesConfig,
-               autoSizer: autoSizer,
-               loader: loader,
-               init: init,
-               uP: updatePolyfill,
-               aC: addClass,
-               rC: removeClass,
-               hC: hasClass,
-               fire: triggerEvent,
-               gW: getWidth,
-               rAF: rAF,
-       };
- }
- ));
- /***/ }),
- /* 14 */
- /***/ (function(module, exports, __webpack_require__) {
- /**
++!function(e,n){t.exports=n()}(0,function(){"use strict";function t(t){return"function"==typeof t||"object"==typeof t&&null!==t}function i(t){return"function"==typeof t}function o(t){V=t}function s(t){K=t}function a(){return void 0!==U?function(){U(c)}:u()}function u(){var t=setTimeout;return function(){return t(c,1)}}function c(){for(var t=0;t<B;t+=2){(0,Z[t])(Z[t+1]),Z[t]=void 0,Z[t+1]=void 0}B=0}function l(t,e){var n=arguments,r=this,i=new this.constructor(f);void 0===i[tt]&&I(i);var o=r._state;return o?function(){var t=n[o-1];K(function(){return k(o,i,t,r._result)})}():C(r,i,t,e),i}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(f);return w(n,t),n}function f(){}function p(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function g(t){try{return t.then}catch(t){return it.error=t,it}}function m(t,e,n,r){try{t.call(e,n,r)}catch(t){return t}}function v(t,e,n){K(function(t){var r=!1,i=m(n,e,function(n){r||(r=!0,e!==n?w(t,n):x(t,n))},function(e){r||(r=!0,S(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&i&&(r=!0,S(t,i))},t)}function y(t,e){e._state===nt?x(t,e._result):e._state===rt?S(t,e._result):C(e,void 0,function(e){return w(t,e)},function(e){return S(t,e)})}function b(t,e,n){e.constructor===t.constructor&&n===l&&e.constructor.resolve===h?y(t,e):n===it?S(t,it.error):void 0===n?x(t,e):i(n)?v(t,e,n):x(t,e)}function w(e,n){e===n?S(e,p()):t(n)?b(e,n,g(n)):x(e,n)}function _(t){t._onerror&&t._onerror(t._result),E(t)}function x(t,e){t._state===et&&(t._result=e,t._state=nt,0!==t._subscribers.length&&K(E,t))}function S(t,e){t._state===et&&(t._state=rt,t._result=e,K(_,t))}function C(t,e,n,r){var i=t._subscribers,o=i.length;t._onerror=null,i[o]=e,i[o+nt]=n,i[o+rt]=r,0===o&&t._state&&K(E,t)}function E(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?k(n,r,i,o):i(o);t._subscribers.length=0}}function A(){this.error=null}function T(t,e){try{return t(e)}catch(t){return ot.error=t,ot}}function k(t,e,n,r){var o=i(n),s=void 0,a=void 0,u=void 0,c=void 0;if(o){if(s=T(n,r),s===ot?(c=!0,a=s.error,s=null):u=!0,e===s)return void S(e,d())}else s=r,u=!0;e._state!==et||(o&&u?w(e,s):c?S(e,a):t===nt?x(e,s):t===rt&&S(e,s))}function O(t,e){try{e(function(e){w(t,e)},function(e){S(t,e)})}catch(e){S(t,e)}}function N(){return st++}function I(t){t[tt]=st++,t._state=void 0,t._result=void 0,t._subscribers=[]}function j(t,e){this._instanceConstructor=t,this.promise=new t(f),this.promise[tt]||I(this.promise),z(e)?(this._input=e,this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?x(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&x(this.promise,this._result))):S(this.promise,L())}function L(){return new Error("Array Methods must be provided an Array")}function P(t){return new j(this,t).promise}function R(t){var e=this;return new e(z(t)?function(n,r){for(var i=t.length,o=0;o<i;o++)e.resolve(t[o]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function D(t){var e=this,n=new e(f);return S(n,t),n}function $(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function M(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function H(t){this[tt]=N(),this._result=this._state=void 0,this._subscribers=[],f!==t&&("function"!=typeof t&&$(),this instanceof H?O(this,t):M())}function q(){var t=void 0;if(void 0!==r)t=r;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 n=null;try{n=Object.prototype.toString.call(e.resolve())}catch(t){}if("[object Promise]"===n&&!e.cast)return}t.Promise=H}var F=void 0;F=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var z=F,B=0,U=void 0,V=void 0,K=function(t,e){Z[B]=t,Z[B+1]=e,2===(B+=2)&&(V?V(c):Y())},J="undefined"!=typeof window?window:void 0,W=J||{},X=W.MutationObserver||W.WebKitMutationObserver,Q="undefined"==typeof self&&void 0!==e&&"[object process]"==={}.toString.call(e),G="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,Z=new Array(1e3),Y=void 0;Y=Q?function(){return function(){return e.nextTick(c)}}():X?function(){var t=0,e=new X(c),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}():G?function(){var t=new MessageChannel;return t.port1.onmessage=c,function(){return t.port2.postMessage(0)}}():void 0===J?function(){try{var t=n(67);return U=t.runOnLoop||t.runOnContext,a()}catch(t){return u()}}():u();var tt=Math.random().toString(36).substring(16),et=void 0,nt=1,rt=2,it=new A,ot=new A,st=0;return j.prototype._enumerate=function(){for(var t=this.length,e=this._input,n=0;this._state===et&&n<t;n++)this._eachEntry(e[n],n)},j.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var i=g(t);if(i===l&&t._state!==et)this._settledAt(t._state,e,t._result);else if("function"!=typeof i)this._remaining--,this._result[e]=t;else if(n===H){var o=new n(f);b(o,t,i),this._willSettleAt(o,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},j.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===et&&(this._remaining--,t===rt?S(r,n):this._result[e]=n),0===this._remaining&&x(r,this._result)},j.prototype._willSettleAt=function(t,e){var n=this;C(t,void 0,function(t){return n._settledAt(nt,e,t)},function(t){return n._settledAt(rt,e,t)})},H.all=P,H.race=R,H.resolve=h,H.reject=D,H._setScheduler=o,H._setAsap=s,H._asap=K,H.prototype={constructor:H,then:l,catch:function(t){return this.then(null,t)}},H.polyfill=q,H.Promise=H,H})}).call(e,n(11),n(3))},function(t,e,n){(function(e){"undefined"!=typeof window?t.exports=window:void 0!==e?t.exports=e:"undefined"!=typeof self?t.exports=self:t.exports={}}).call(e,n(3))},function(t,e,n){!function(t){function e(t){"}"===t.n.substr(t.n.length-1)&&(t.n=t.n.substring(0,t.n.length-1))}function n(t){return t.trim?t.trim():t.replace(/^\s*|\s*$/g,"")}function r(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}function i(e,n,r,a){var u=[],c=null,l=null,h=null;for(l=r[r.length-1];e.length>0;){if(h=e.shift(),l&&"<"==l.tag&&!(h.tag in _))throw new Error("Illegal content in < super tag.");if(t.tags[h.tag]<=t.tags.$||o(h,a))r.push(h),h.nodes=i(e,h.tag,r,a);else{if("/"==h.tag){if(0===r.length)throw new Error("Closing tag without opener: /"+h.n);if(c=r.pop(),h.n!=c.n&&!s(h.n,c.n,a))throw new Error("Nesting error: "+c.n+" vs. "+h.n);return c.end=h.i,u}"\n"==h.tag&&(h.last=0==e.length||"\n"==e[0].tag)}u.push(h)}if(r.length>0)throw new Error("missing closing tag: "+r.pop().n);return u}function o(t,e){for(var n=0,r=e.length;n<r;n++)if(e[n].o==t.n)return t.tag="#",!0}function s(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 a(t){var e=[];for(var n in t)e.push('"'+c(n)+'": function(c,p,t,i) {'+t[n]+"}");return"{ "+e.join(",")+" }"}function u(t){var e=[];for(var n in t.partials)e.push('"'+c(n)+'":{name:"'+c(t.partials[n].name)+'", '+u(t.partials[n])+"}");return"partials: {"+e.join(",")+"}, subs: "+a(t.subs)}function c(t){return t.replace(y,"\\\\").replace(g,'\\"').replace(m,"\\n").replace(v,"\\r").replace(b,"\\u2028").replace(w,"\\u2029")}function l(t){return~t.indexOf(".")?"d":"f"}function h(t,e){var n="<"+(e.prefix||""),r=n+t.n+x++;return e.partials[r]={name:t.n,partials:{}},e.code+='t.b(t.rp("'+c(r)+'",c,p,"'+(t.indent||"")+'"));',r}function f(t,e){e.code+="t.b(t.t(t."+l(t.n)+'("'+c(t.n)+'",c,p,0)));'}function p(t){return"t.b("+t+");"}var d=/\S/,g=/\"/g,m=/\n/g,v=/\r/g,y=/\\/g,b=/\u2028/,w=/\u2029/;t.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},t.scan=function(i,o){function s(){p.length>0&&(g.push({tag:"_t",text:new String(p)}),p="")}function a(){for(var e=!0,n=y;n<g.length;n++)if(!(e=t.tags[g[n].tag]<t.tags._v||"_t"==g[n].tag&&null===g[n].text.match(d)))return!1;return e}function u(t,e){if(s(),t&&a())for(var n,r=y;r<g.length;r++)g[r].text&&((n=g[r+1])&&">"==n.tag&&(n.indent=g[r].text.toString()),g.splice(r,1));else e||g.push({tag:"\n"});m=!1,y=g.length}var c=i.length,l=0,h=null,f=null,p="",g=[],m=!1,v=0,y=0,b="{{",w="}}";for(o&&(o=o.split(" "),b=o[0],w=o[1]),v=0;v<c;v++)0==l?r(b,i,v)?(--v,s(),l=1):"\n"==i.charAt(v)?u(m):p+=i.charAt(v):1==l?(v+=b.length-1,f=t.tags[i.charAt(v+1)],h=f?i.charAt(v+1):"_v","="==h?(v=function(t,e){var r="="+w,i=t.indexOf(r,e),o=n(t.substring(t.indexOf("=",e)+1,i)).split(" ");return b=o[0],w=o[o.length-1],i+r.length-1}(i,v),l=0):(f&&v++,l=2),m=v):r(w,i,v)?(g.push({tag:h,n:n(p),otag:b,ctag:w,i:"/"==h?m-b.length:v+w.length}),p="",v+=w.length-1,l=0,"{"==h&&("}}"==w?v++:e(g[g.length-1]))):p+=i.charAt(v);return u(m,!0),g};var _={_t:!0,"\n":!0,$:!0,"/":!0};t.stringify=function(e,n,r){return"{code: function (c,p,i) { "+t.wrapMain(e.code)+" },"+u(e)+"}"};var x=0;t.generate=function(e,n,r){x=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."+l(e.n)+'("'+c(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."+l(e.n)+'("'+c(e.n)+'",c,p,1),c,p,1,0,0,"")){',t.walk(e.nodes,n),n.code+="};"},">":h,"<":function(e,n){var r={partials:{},code:"",subs:{},inPartial:!0};t.walk(e.nodes,r);var i=n.partials[h(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("'+c(e.n)+'",c,p,i);')},"\n":function(t,e){e.code+=p('"\\n"'+(t.last?"":" + i"))},_v:function(t,e){e.code+="t.b(t.v(t."+l(t.n)+'("'+c(t.n)+'",c,p,0)));'},_t:function(t,e){e.code+=p('"'+c(t.text)+'"')},"{":f,"&":f},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(t,e,n){return n=n||{},i(t,"",[],n.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){var r=n(53);r.Template=n(55).Template,r.template=r.Template,t.exports=r},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}function n(t,e,n,r,i,o){function s(){}function a(){}s.prototype=t,a.prototype=t.subs;var u,c=new s;c.subs=new a,c.subsText={},c.buf="",r=r||{},c.stackSubs=r,c.subsText=o;for(u in e)r[u]||(r[u]=e[u]);for(u in r)c.subs[u]=r[u];i=i||{},c.stackPartials=i;for(u in n)i[u]||(i[u]=n[u]);for(u in i)c.partials[u]=i[u];return c}function r(t){return String(null===t||void 0===t?"":t)}function i(t){return t=r(t),l.test(t)?t.replace(o,"&amp;").replace(s,"&lt;").replace(a,"&gt;").replace(u,"&#39;").replace(c,"&quot;"):t}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:i,t:r,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 r=this.partials[t],i=e[r.name];if(r.instance&&r.base==i)return r.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[t].base=i,r.subs){e.stackText||(e.stackText={});for(key in r.subs)e.stackText[key]||(e.stackText[key]=void 0!==this.activeSub&&e.stackText[this.activeSub]?e.stackText[this.activeSub]:this.text);i=n(i,r.subs,r.partials,this.stackSubs,this.stackPartials,e.stackText)}return this.partials[t].instance=i,i},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(!h(r))return void n(t,e,this);for(var i=0;i<r.length;i++)t.push(r[i]),n(t,e,this),t.pop()},s:function(t,e,n,r,i,o,s){var a;return(!h(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,c=null;if("."===t&&h(n[n.length-2]))a=n[n.length-1];else for(var l=1;l<s.length;l++)o=e(s[l],a,u),void 0!==o?(c=a,a=o):a="";return!(i&&!a)&&(i||"function"!=typeof a||(n.push(c),a=this.mv(a,n,r),n.pop()),a)},f:function(t,n,r,i){for(var o=!1,s=null,a=!1,u=this.options.modelGet,c=n.length-1;c>=0;c--)if(s=n[c],void 0!==(o=e(t,s,u))){a=!0;break}return a?(i||"function"!=typeof o||(o=this.mv(o,n,r)),o):!i&&""},ls:function(t,e,n,i,o){var s=this.options.delimiters;return this.options.delimiters=o,this.b(this.ct(r(t.call(e,i)),e,n)),this.options.delimiters=s,!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 i=e[e.length-1],o=t.call(i);return"function"==typeof o?this.ct(r(o.call(i)),i,n):o},sub:function(t,e,n,r){var i=this.subs[t];i&&(this.activeSub=t,i(e,n,this,r),this.activeSub=!1)}};var o=/&/g,s=/</g,a=/>/g,u=/\'/g,c=/\"/g,l=/[&<>\"\']/,h=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}}(e)},function(t,e,n){"use strict";function r(){a&&u&&(a=!1,u.length?f=u.concat(f):h=-1,f.length&&i())}function i(){if(!a){p=!1,a=!0;for(var t=f.length,e=setTimeout(r);t;){for(u=f,f=[];u&&++h<t;)u[h].run();h=-1,t=f.length}u=null,h=-1,a=!1,clearTimeout(e)}}function o(t,e){this.fun=t,this.array=e}function s(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];f.push(new o(t,e)),p||a||(p=!0,c())}for(var a,u,c,l=[n(59),n(58),n(57),n(60),n(61)],h=-1,f=[],p=!1,d=-1,g=l.length;++d<g;)if(l[d]&&l[d].test&&l[d].test()){c=l[d].install(i);break}o.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=s},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(3))},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(3))},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(11))},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(3))},function(t,e,n){"use strict";e.test=function(){return!0},e.install=function(t){return function(){setTimeout(t,0)}}},function(t,e){function n(t){if(t=String(t),!(t.length>1e4)){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 n=parseFloat(e[1]);switch((e[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return n*l;case"days":case"day":case"d":return n*c;case"hours":case"hour":case"hrs":case"hr":case"h":return n*u;case"minutes":case"minute":case"mins":case"min":case"m":return n*a;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function r(t){return t>=c?Math.round(t/c)+"d":t>=u?Math.round(t/u)+"h":t>=a?Math.round(t/a)+"m":t>=s?Math.round(t/s)+"s":t+"ms"}function i(t){return o(t,c,"day")||o(t,u,"hour")||o(t,a,"minute")||o(t,s,"second")||t+" ms"}function o(t,e,n){if(!(t<e))return t<1.5*e?Math.floor(t/e)+" "+n:Math.ceil(t/e)+" "+n+"s"}var s=1e3,a=60*s,u=60*a,c=24*u,l=365.25*c;t.exports=function(t,e){e=e||{};var o=typeof t;if("string"===o&&t.length>0)return n(t);if("number"===o&&!1===isNaN(t))return e.long?i(t):r(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=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=Array.prototype.slice,s=n(64),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={$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){if("undefined"==typeof window||!p)return h(t);try{return h(t)}catch(t){return!1}},g=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),h=[];if(!e&&!n&&!o)throw new TypeError("Object.keys called on a non-object");var f=c&&n;if(a&&t.length>0&&!r.call(t,0))for(var p=0;p<t.length;++p)h.push(String(p));if(o&&t.length>0)for(var g=0;g<t.length;++g)h.push(String(g));else for(var m in t)f&&"prototype"===m||!r.call(t,m)||h.push(String(m));if(u)for(var v=d(t),y=0;y<l.length;++y)v&&"constructor"===l[y]||!r.call(t,l[y])||h.push(l[y]);return h};g.shim=function(){if(Object.keys){if(!function(){return 2===(Object.keys(arguments)||"").length}(1,2)){var t=Object.keys;Object.keys=function(e){return t(s(e)?o.call(e):e)}}}else Object.keys=g;return Object.keys||g},t.exports=g},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){"use strict";function r(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 i=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?r(s(t),function(s){var a=encodeURIComponent(i(s))+n;return o(t[s])?r(t[s],function(t){return a+encodeURIComponent(i(t))}).join(e):a+encodeURIComponent(i(t[s]))}).join(e):a?encodeURIComponent(i(a))+n+encodeURIComponent(i(t)):""};var o=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},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";function r(t){var e=function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return new(i.apply(t,[null].concat(n)))};return e.__proto__=t,e.prototype=t.prototype,e}var i=Function.prototype.bind;t.exports=r},function(t,e){}])})},function(t,e){!function(e,n){var r=function(t,e){"use strict";if(e.getElementsByClassName){var n,r=e.documentElement,i=t.Date,o=t.HTMLPictureElement,s=t.addEventListener,a=t.setTimeout,u=t.requestAnimationFrame||a,c=t.requestIdleCallback,l=/^picture$/i,h=["load","error","lazyincluded","_lazyloaded"],f={},p=Array.prototype.forEach,d=function(t,e){return f[e]||(f[e]=new RegExp("(\\s|^)"+e+"(\\s|$)")),f[e].test(t.getAttribute("class")||"")&&f[e]},g=function(t,e){d(t,e)||t.setAttribute("class",(t.getAttribute("class")||"").trim()+" "+e)},m=function(t,e){var n;(n=d(t,e))&&t.setAttribute("class",(t.getAttribute("class")||"").replace(n," "))},v=function(t,e,n){var r=n?"addEventListener":"removeEventListener";n&&v(t,e),h.forEach(function(n){t[r](n,e)})},y=function(t,n,r,i,o){var s=e.createEvent("CustomEvent");return s.initCustomEvent(n,!i,!o,r||{}),t.dispatchEvent(s),s},b=function(e,r){var i;!o&&(i=t.picturefill||n.pf)?i({reevaluate:!0,elements:[e]}):r&&r.src&&(e.src=r.src)},w=function(t,e){return(getComputedStyle(t,null)||{})[e]},_=function(t,e,r){for(r=r||t.offsetWidth;r<n.minSize&&e&&!t._lazysizesWidth;)r=e.offsetWidth,e=e.parentNode;return r},x=function(){var t,n,r=[],i=[],o=r,s=function(){var e=o;for(o=r.length?i:r,t=!0,n=!1;e.length;)e.shift()();t=!1},c=function(r,i){t&&!i?r.apply(this,arguments):(o.push(r),n||(n=!0,(e.hidden?a:u)(s)))};return c._lsFlush=s,c}(),S=function(t,e){return e?function(){x(t)}:function(){var e=this,n=arguments;x(function(){t.apply(e,n)})}},C=function(t){var e,n=0,r=666,o=function(){e=!1,n=i.now(),t()},s=c?function(){c(o,{timeout:r}),666!==r&&(r=666)}:S(function(){a(o)},!0);return function(t){var o;(t=!0===t)&&(r=44),e||(e=!0,o=125-(i.now()-n),o<0&&(o=0),t||o<9&&c?s():a(s,o))}},E=function(t){var e,n,r=function(){e=null,t()},o=function(){var t=i.now()-n;t<99?a(o,99-t):(c||r)(r)};return function(){n=i.now(),e||(e=a(o,99))}},A=function(){var o,u,c,h,f,_,A,k,O,N,I,j,L,P,R,D=/^img$/i,$=/^iframe$/i,M="onscroll"in t&&!/glebot/.test(navigator.userAgent),H=0,q=0,F=-1,z=function(t){q--,t&&t.target&&v(t.target,z),(!t||q<0||!t.target)&&(q=0)},B=function(t,n){var i,o=t,s="hidden"==w(e.body,"visibility")||"hidden"!=w(t,"visibility");for(O-=n,j+=n,N-=n,I+=n;s&&(o=o.offsetParent)&&o!=e.body&&o!=r;)(s=(w(o,"opacity")||1)>0)&&"visible"!=w(o,"overflow")&&(i=o.getBoundingClientRect(),s=I>i.left&&N<i.right&&j>i.top-1&&O<i.bottom+1);return s},U=function(){var t,i,s,a,l,h,p,d,g;if((f=n.loadMode)&&q<8&&(t=o.length)){i=0,F++,null==P&&("expand"in n||(n.expand=r.clientHeight>500&&r.clientWidth>500?500:370),L=n.expand,P=L*n.expFactor),H<P&&q<1&&F>2&&f>2&&!e.hidden?(H=P,F=0):H=f>1&&F>1&&q<6?L:0;for(;i<t;i++)if(o[i]&&!o[i]._lazyRace)if(M)if((d=o[i].getAttribute("data-expand"))&&(h=1*d)||(h=H),g!==h&&(A=innerWidth+h*R,k=innerHeight+h,p=-1*h,g=h),s=o[i].getBoundingClientRect(),(j=s.bottom)>=p&&(O=s.top)<=k&&(I=s.right)>=p*R&&(N=s.left)<=A&&(j||I||N||O)&&(c&&q<3&&!d&&(f<3||F<4)||B(o[i],h))){if(Z(o[i]),l=!0,q>9)break}else!l&&c&&!a&&q<4&&F<4&&f>2&&(u[0]||n.preloadAfterLoad)&&(u[0]||!d&&(j||I||N||O||"auto"!=o[i].getAttribute(n.sizesAttr)))&&(a=u[0]||o[i]);else Z(o[i]);a&&!l&&Z(a)}},V=C(U),K=function(t){g(t.target,n.loadedClass),m(t.target,n.loadingClass),v(t.target,W)},J=S(K),W=function(t){J({target:t.target})},X=function(t,e){try{t.contentWindow.location.replace(e)}catch(n){t.src=e}},Q=function(t){var e,r,i=t.getAttribute(n.srcsetAttr);(e=n.customMedia[t.getAttribute("data-media")||t.getAttribute("media")])&&t.setAttribute("media",e),i&&t.setAttribute("srcset",i),e&&(r=t.parentNode,r.insertBefore(t.cloneNode(),t),r.removeChild(t))},G=S(function(t,e,r,i,o){var s,u,c,f,d,w;(d=y(t,"lazybeforeunveil",e)).defaultPrevented||(i&&(r?g(t,n.autosizesClass):t.setAttribute("sizes",i)),u=t.getAttribute(n.srcsetAttr),s=t.getAttribute(n.srcAttr),o&&(c=t.parentNode,f=c&&l.test(c.nodeName||"")),w=e.firesLoad||"src"in t&&(u||s||f),d={target:t},w&&(v(t,z,!0),clearTimeout(h),h=a(z,2500),g(t,n.loadingClass),v(t,W,!0)),f&&p.call(c.getElementsByTagName("source"),Q),u?t.setAttribute("srcset",u):s&&!f&&($.test(t.nodeName)?X(t,s):t.src=s),(u||f)&&b(t,{src:s})),t._lazyRace&&delete t._lazyRace,m(t,n.lazyClass),x(function(){(!w||t.complete&&t.naturalWidth>1)&&(w?z(d):q--,K(d))},!0)}),Z=function(t){var e,r=D.test(t.nodeName),i=r&&(t.getAttribute(n.sizesAttr)||t.getAttribute("sizes")),o="auto"==i;(!o&&c||!r||!t.src&&!t.srcset||t.complete||d(t,n.errorClass))&&(e=y(t,"lazyunveilread").detail,o&&T.updateElem(t,!0,t.offsetWidth),t._lazyRace=!0,q++,G(t,e,o,i,r))},Y=function(){if(!c){if(i.now()-_<999)return void a(Y,999);var t=E(function(){n.loadMode=3,V()});c=!0,n.loadMode=3,V(),s("scroll",function(){3==n.loadMode&&(n.loadMode=2),t()},!0)}};return{_:function(){_=i.now(),o=e.getElementsByClassName(n.lazyClass),u=e.getElementsByClassName(n.lazyClass+" "+n.preloadClass),R=n.hFac,s("scroll",V,!0),s("resize",V,!0),t.MutationObserver?new MutationObserver(V).observe(r,{childList:!0,subtree:!0,attributes:!0}):(r.addEventListener("DOMNodeInserted",V,!0),r.addEventListener("DOMAttrModified",V,!0),setInterval(V,999)),s("hashchange",V,!0),["focus","mouseover","click","load","transitionend","animationend","webkitAnimationEnd"].forEach(function(t){e.addEventListener(t,V,!0)}),/d$|^c/.test(e.readyState)?Y():(s("load",Y),e.addEventListener("DOMContentLoaded",V),a(Y,2e4)),o.length?(U(),x._lsFlush()):V()},checkElems:V,unveil:Z}}(),T=function(){var t,r=S(function(t,e,n,r){var i,o,s;if(t._lazysizesWidth=r,r+="px",t.setAttribute("sizes",r),l.test(e.nodeName||""))for(i=e.getElementsByTagName("source"),o=0,s=i.length;o<s;o++)i[o].setAttribute("sizes",r);n.detail.dataAttr||b(t,n.detail)}),i=function(t,e,n){var i,o=t.parentNode;o&&(n=_(t,o,n),i=y(t,"lazybeforesizes",{width:n,dataAttr:!!e}),i.defaultPrevented||(n=i.detail.width)&&n!==t._lazysizesWidth&&r(t,o,i,n))},o=function(){var e,n=t.length;if(n)for(e=0;e<n;e++)i(t[e])},a=E(o);return{_:function(){t=e.getElementsByClassName(n.autosizesClass),s("resize",a)},checkElems:a,updateElem:i}}(),k=function(){k.i||(k.i=!0,T._(),A._())};return function(){var e,r={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};n=t.lazySizesConfig||t.lazysizesConfig||{};for(e in r)e in n||(n[e]=r[e]);t.lazySizesConfig=n,a(function(){n.init&&k()})}(),{cfg:n,autoSizer:T,loader:A,init:k,uP:b,aC:g,rC:m,hC:d,fire:y,gW:_,rAF:x}}}(e,e.document);e.lazySizes=r,"object"==typeof t&&t.exports&&(t.exports=r)}(window)},function(t,e){!function(t,e){"use strict";function n(t,n){if(!o[t]){var r=e.createElement(n?"link":"script"),i=e.getElementsByTagName("script")[0];n?(r.rel="stylesheet",r.href=t):r.src=t,o[t]=!0,o[r.src||r.href]=!0,i.parentNode.insertBefore(r,i)}}var r,i,o={};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,s,a;t.defaultPrevented||("none"==t.target.preload&&(t.target.preload="auto"),e=t.target.getAttribute("data-link"),e&&n(e,!0),e=t.target.getAttribute("data-script"),e&&n(e),e=t.target.getAttribute("data-require"),e&&(lazySizes.cfg.requireJs?lazySizes.cfg.requireJs([e]):n(e)),s=t.target.getAttribute("data-bg"),s&&(t.detail.firesLoad=!0,o=function(){t.target.style.backgroundImage="url("+(i.test(s)?JSON.stringify(s):s)+")",t.detail.firesLoad=!1,lazySizes.fire(t.target,"_lazyloaded",{},!0,!0)},r(s,o)),(a=t.target.getAttribute("data-poster"))&&(t.detail.firesLoad=!0,o=function(){t.target.poster=a,t.detail.firesLoad=!1,lazySizes.fire(t.target,"_lazyloaded",{},!0,!0)},r(a,o)))},!1))}(window,document)},function(t,e,n){/**
 + * scrolldir - Vertical scroll direction in CSS
-  * @version v1.2.17
++ * @version v1.2.8
 + * @link https://github.com/dollarshaveclub/scrolldir.git
 + * @author Patrick Fisher <patrick@pwfisher.com>
 + * @license MIT
 +**/
- !function(t,e){ true?e():"function"==typeof define&&define.amd?define(e):e()}(0,function(){"use strict";function t(){var t=o.scrollY||o.pageYOffset,e=l.timeStamp,i="down"===d?Math.max:Math.min,p=f.offsetHeight-o.innerHeight;if(t=Math.max(0,t),t=Math.min(p,t),c.unshift({y:t,t:e}),c.pop(),t===i(m,t))return v=e,void(m=t);var b=e-u;if(b>v){m=t;for(var w=0;w<a&&(c[w]&&!(c[w].t<b));w+=1)m=i(m,c[w].y)}Math.abs(t-m)>s&&(m=t,v=e,d="down"===d?"up":"down",n.setAttribute(r,d))}function e(e){return l=e,o.requestAnimationFrame(t)}var i={el:document.documentElement,win:window,attribute:"data-scrolldir",dir:"down"},n=void 0,o=void 0,r=void 0,d=void 0,f=document.body,a=32,u=512,s=64,c=Array(a),l=void 0,m=void 0,v=0;!function(t){n=t&&t.el||i.el,o=t&&t.win||i.win,r=t&&t.attribute||i.attribute,d=t&&t.direction||i.dir,t&&!0===t.off?(n.setAttribute(r,"off"),o.removeEventListener("scroll",e)):(m=o.scrollY||o.pageYOffset,n.setAttribute(r,d),o.addEventListener("scroll",e))}()});
- /***/ })
- /******/ ]);
++!function(t,e){e()}(0,function(){"use strict";!function(){var t=document.documentElement,e=window,n=document.body,r=Array(32),i="down",o=void 0,s=void 0,a=0,u=function(){var u=e.scrollY,c=o.timeStamp,l="down"===i?Math.max:Math.min,h=n.offsetHeight-e.innerHeight;if(u=Math.max(0,u),u=Math.min(h,u),r.unshift({y:u,t:c}),r.pop(),u===l(s,u))return a=c,void(s=u);var f=c-512;if(f>a){s=u;for(var p=0;p<32&&r[p]&&!(r[p].t<f);p+=1)s=l(s,r[p].y)}Math.abs(u-s)>64&&(s=u,a=c,i="down"===i?"up":"down",t.setAttribute("data-scrolldir",i))},c=function(t){o=t,e.requestAnimationFrame(u)};s=e.scrollY,t.setAttribute("data-scrolldir",i),e.addEventListener("scroll",c)}()})}]);
index a6a1146e0e202ee13fc686062492b84a6eec63d3,0000000000000000000000000000000000000000..ffb4e7b0c63b2376d01398d205d6f76ed725dbc1
mode 100644,000000..100644
--- /dev/null
@@@ -1,1 -1,0 +1,1 @@@
- html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{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-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}.border-box,a,article,body,code,dd,div,dl,dt,fieldset,footer,form,h1,h2,h3,h4,h5,h6,header,html,input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],legend,li,main,ol,p,pre,section,table,td,textarea,th,tr,ul{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-position:50%}.bg-center,.bg-top{background-repeat:no-repeat}.bg-top{background-position:top}.bg-right{background-position:100%}.bg-bottom,.bg-right{background-repeat:no-repeat}.bg-bottom{background-position:bottom}.bg-left{background-repeat:no-repeat;background-position:0}@media screen and (min-width:30em){.bg-center-ns{background-position:50%}.bg-center-ns,.bg-top-ns{background-repeat:no-repeat}.bg-top-ns{background-position:top}.bg-right-ns{background-position:100%}.bg-bottom-ns,.bg-right-ns{background-repeat:no-repeat}.bg-bottom-ns{background-position:bottom}.bg-left-ns{background-repeat:no-repeat;background-position:0}}@media screen and (min-width:30em) and (max-width:60em){.bg-center-m{background-position:50%}.bg-center-m,.bg-top-m{background-repeat:no-repeat}.bg-top-m{background-position:top}.bg-right-m{background-position:100%}.bg-bottom-m,.bg-right-m{background-repeat:no-repeat}.bg-bottom-m{background-position:bottom}.bg-left-m{background-repeat:no-repeat;background-position:0}}@media screen and (min-width:60em){.bg-center-l{background-position:50%}.bg-center-l,.bg-top-l{background-repeat:no-repeat}.bg-top-l{background-position:top}.bg-right-l{background-position:100%}.bg-bottom-l,.bg-right-l{background-repeat:no-repeat}.bg-bottom-l{background-position:bottom}.bg-left-l{background-repeat:no-repeat;background-position: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:hsla(0,0%,100%,.9)}.b--white-80{border-color:hsla(0,0%,100%,.8)}.b--white-70{border-color:hsla(0,0%,100%,.7)}.b--white-60{border-color:hsla(0,0%,100%,.6)}.b--white-50{border-color:hsla(0,0%,100%,.5)}.b--white-40{border-color:hsla(0,0%,100%,.4)}.b--white-30{border-color:hsla(0,0%,100%,.3)}.b--white-20{border-color:hsla(0,0%,100%,.2)}.b--white-10{border-color:hsla(0,0%,100%,.1)}.b--white-05{border-color:hsla(0,0%,100%,.05)}.b--white-025{border-color:hsla(0,0%,100%,.025)}.b--white-0125{border-color:hsla(0,0%,100%,.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-right-radius:0}.br--right,.br--top{border-bottom-left-radius:0}.br--right{border-top-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-right-radius:0}.br--right-ns,.br--top-ns{border-bottom-left-radius:0}.br--right-ns{border-top-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-right-radius:0}.br--right-m,.br--top-m{border-bottom-left-radius:0}.br--right-m{border-top-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-right-radius:0}.br--right-l,.br--top-l{border-bottom-left-radius:0}.br--right-l{border-top-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{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}@media screen and (min-width:30em){.shadow-1-ns{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-ns{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-ns{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-ns{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-ns{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:30em) and (max-width:60em){.shadow-1-m{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-m{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-m{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-m{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-m{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:60em){.shadow-1-l{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-l{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-l{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-l{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-l{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:after,.cf:before{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;-ms-flex-direction:column;flex-direction:column}.flex-column,.flex-row{-webkit-box-direction:normal}.flex-row{-webkit-box-orient:horizontal;-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;-ms-grid-row-align:center;align-self:center}.self-baseline{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch{-ms-flex-item-align:stretch;-ms-grid-row-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}@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;-ms-grid-row-align:center;align-self:center}.self-baseline-ns{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch-ns{-ms-flex-item-align:stretch;-ms-grid-row-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}}@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;-ms-flex-direction:column;flex-direction:column}.flex-column-m,.flex-row-m{-webkit-box-direction:normal}.flex-row-m{-webkit-box-orient:horizontal;-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;-ms-grid-row-align:center;align-self:center}.self-baseline-m{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch-m{-ms-flex-item-align:stretch;-ms-grid-row-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}}@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;-ms-flex-direction:column;flex-direction:column}.flex-column-l,.flex-row-l{-webkit-box-direction:normal}.flex-row-l{-webkit-box-orient:horizontal;-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;-ms-grid-row-align:center;align-self:center}.self-baseline-l{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch-l{-ms-flex-item-align:stretch;-ms-grid-row-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}}.fl{float:left}.fl,.fr{_display:inline}.fr{float:right}.fn{float:none}@media screen and (min-width:30em){.fl-ns{float:left}.fl-ns,.fr-ns{_display:inline}.fr-ns{float:right}.fn-ns{float:none}}@media screen and (min-width:30em) and (max-width:60em){.fl-m{float:left}.fl-m,.fr-m{_display:inline}.fr-m{float:right}.fn-m{float:none}}@media screen and (min-width:60em){.fl-l{float:left}.fl-l,.fr-l{_display:inline}.fr-l{float:right}.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}.link,.link:active,.link:focus,.link:hover,.link:link,.link:visited{transition:color .15s ease-in}.link:focus{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:hsla(0,0%,100%,.9)}.white-80{color:hsla(0,0%,100%,.8)}.white-70{color:hsla(0,0%,100%,.7)}.white-60{color:hsla(0,0%,100%,.6)}.white-50{color:hsla(0,0%,100%,.5)}.white-40{color:hsla(0,0%,100%,.4)}.white-30{color:hsla(0,0%,100%,.3)}.white-20{color:hsla(0,0%,100%,.2)}.white-10{color:hsla(0,0%,100%,.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:hsla(0,0%,100%,.9)}.bg-white-80{background-color:hsla(0,0%,100%,.8)}.bg-white-70{background-color:hsla(0,0%,100%,.7)}.bg-white-60{background-color:hsla(0,0%,100%,.6)}.bg-white-50{background-color:hsla(0,0%,100%,.5)}.bg-white-40{background-color:hsla(0,0%,100%,.4)}.bg-white-30{background-color:hsla(0,0%,100%,.3)}.bg-white-20{background-color:hsla(0,0%,100%,.2)}.bg-white-10{background-color:hsla(0,0%,100%,.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:focus,.hover-black:hover{color:#000}.hover-near-black:focus,.hover-near-black:hover{color:#111}.hover-dark-gray:focus,.hover-dark-gray:hover{color:#333}.hover-mid-gray:focus,.hover-mid-gray:hover{color:#555}.hover-gray:focus,.hover-gray:hover{color:#777}.hover-silver:focus,.hover-silver:hover{color:#999}.hover-light-silver:focus,.hover-light-silver:hover{color:#aaa}.hover-moon-gray:focus,.hover-moon-gray:hover{color:#ccc}.hover-light-gray:focus,.hover-light-gray:hover{color:#eee}.hover-near-white:focus,.hover-near-white:hover{color:#f4f4f4}.hover-white:focus,.hover-white:hover{color:#fff}.hover-black-90:focus,.hover-black-90:hover{color:rgba(0,0,0,.9)}.hover-black-80:focus,.hover-black-80:hover{color:rgba(0,0,0,.8)}.hover-black-70:focus,.hover-black-70:hover{color:rgba(0,0,0,.7)}.hover-black-60:focus,.hover-black-60:hover{color:rgba(0,0,0,.6)}.hover-black-50:focus,.hover-black-50:hover{color:rgba(0,0,0,.5)}.hover-black-40:focus,.hover-black-40:hover{color:rgba(0,0,0,.4)}.hover-black-30:focus,.hover-black-30:hover{color:rgba(0,0,0,.3)}.hover-black-20:focus,.hover-black-20:hover{color:rgba(0,0,0,.2)}.hover-black-10:focus,.hover-black-10:hover{color:rgba(0,0,0,.1)}.hover-white-90:focus,.hover-white-90:hover{color:hsla(0,0%,100%,.9)}.hover-white-80:focus,.hover-white-80:hover{color:hsla(0,0%,100%,.8)}.hover-white-70:focus,.hover-white-70:hover{color:hsla(0,0%,100%,.7)}.hover-white-60:focus,.hover-white-60:hover{color:hsla(0,0%,100%,.6)}.hover-white-50:focus,.hover-white-50:hover{color:hsla(0,0%,100%,.5)}.hover-white-40:focus,.hover-white-40:hover{color:hsla(0,0%,100%,.4)}.hover-white-30:focus,.hover-white-30:hover{color:hsla(0,0%,100%,.3)}.hover-white-20:focus,.hover-white-20:hover{color:hsla(0,0%,100%,.2)}.hover-white-10:focus,.hover-white-10:hover{color:hsla(0,0%,100%,.1)}.hover-inherit:focus,.hover-inherit:hover{color:inherit}.hover-bg-black:focus,.hover-bg-black:hover{background-color:#000}.hover-bg-near-black:focus,.hover-bg-near-black:hover{background-color:#111}.hover-bg-dark-gray:focus,.hover-bg-dark-gray:hover{background-color:#333}.hover-bg-mid-gray:focus,.hover-bg-mid-gray:hover{background-color:#555}.hover-bg-gray:focus,.hover-bg-gray:hover{background-color:#777}.hover-bg-silver:focus,.hover-bg-silver:hover{background-color:#999}.hover-bg-light-silver:focus,.hover-bg-light-silver:hover{background-color:#aaa}.hover-bg-moon-gray:focus,.hover-bg-moon-gray:hover{background-color:#ccc}.hover-bg-light-gray:focus,.hover-bg-light-gray:hover{background-color:#eee}.hover-bg-near-white:focus,.hover-bg-near-white:hover{background-color:#f4f4f4}.hover-bg-white:focus,.hover-bg-white:hover{background-color:#fff}.hover-bg-transparent:focus,.hover-bg-transparent:hover{background-color:transparent}.hover-bg-black-90:focus,.hover-bg-black-90:hover{background-color:rgba(0,0,0,.9)}.hover-bg-black-80:focus,.hover-bg-black-80:hover{background-color:rgba(0,0,0,.8)}.hover-bg-black-70:focus,.hover-bg-black-70:hover{background-color:rgba(0,0,0,.7)}.hover-bg-black-60:focus,.hover-bg-black-60:hover{background-color:rgba(0,0,0,.6)}.hover-bg-black-50:focus,.hover-bg-black-50:hover{background-color:rgba(0,0,0,.5)}.hover-bg-black-40:focus,.hover-bg-black-40:hover{background-color:rgba(0,0,0,.4)}.hover-bg-black-30:focus,.hover-bg-black-30:hover{background-color:rgba(0,0,0,.3)}.hover-bg-black-20:focus,.hover-bg-black-20:hover{background-color:rgba(0,0,0,.2)}.hover-bg-black-10:focus,.hover-bg-black-10:hover{background-color:rgba(0,0,0,.1)}.hover-bg-white-90:focus,.hover-bg-white-90:hover{background-color:hsla(0,0%,100%,.9)}.hover-bg-white-80:focus,.hover-bg-white-80:hover{background-color:hsla(0,0%,100%,.8)}.hover-bg-white-70:focus,.hover-bg-white-70:hover{background-color:hsla(0,0%,100%,.7)}.hover-bg-white-60:focus,.hover-bg-white-60:hover{background-color:hsla(0,0%,100%,.6)}.hover-bg-white-50:focus,.hover-bg-white-50:hover{background-color:hsla(0,0%,100%,.5)}.hover-bg-white-40:focus,.hover-bg-white-40:hover{background-color:hsla(0,0%,100%,.4)}.hover-bg-white-30:focus,.hover-bg-white-30:hover{background-color:hsla(0,0%,100%,.3)}.hover-bg-white-20:focus,.hover-bg-white-20:hover{background-color:hsla(0,0%,100%,.2)}.hover-bg-white-10:focus,.hover-bg-white-10:hover{background-color:hsla(0,0%,100%,.1)}.hover-dark-red:focus,.hover-dark-red:hover{color:#e7040f}.hover-red:focus,.hover-red:hover{color:#ff4136}.hover-light-red:focus,.hover-light-red:hover{color:#ff725c}.hover-orange:focus,.hover-orange:hover{color:#ff6300}.hover-gold:focus,.hover-gold:hover{color:#ffb700}.hover-yellow:focus,.hover-yellow:hover{color:gold}.hover-light-yellow:focus,.hover-light-yellow:hover{color:#fbf1a9}.hover-purple:focus,.hover-purple:hover{color:#5e2ca5}.hover-light-purple:focus,.hover-light-purple:hover{color:#a463f2}.hover-dark-pink:focus,.hover-dark-pink:hover{color:#d5008f}.hover-hot-pink:focus,.hover-hot-pink:hover{color:#ff41b4}.hover-pink:focus,.hover-pink:hover{color:#ff80cc}.hover-light-pink:focus,.hover-light-pink:hover{color:#ffa3d7}.hover-dark-green:focus,.hover-dark-green:hover{color:#137752}.hover-green:focus,.hover-green:hover{color:#19a974}.hover-light-green:focus,.hover-light-green:hover{color:#9eebcf}.hover-navy:focus,.hover-navy:hover{color:#001b44}.hover-dark-blue:focus,.hover-dark-blue:hover{color:#00449e}.hover-blue:focus,.hover-blue:hover{color:#0594cb}.hover-light-blue:focus,.hover-light-blue:hover{color:#96ccff}.hover-lightest-blue:focus,.hover-lightest-blue:hover{color:#cdecff}.hover-washed-blue:focus,.hover-washed-blue:hover{color:#f6fffe}.hover-washed-green:focus,.hover-washed-green:hover{color:#e8fdf5}.hover-washed-yellow:focus,.hover-washed-yellow:hover{color:#fffceb}.hover-washed-red:focus,.hover-washed-red:hover{color:#ffdfdf}.hover-bg-dark-red:focus,.hover-bg-dark-red:hover{background-color:#e7040f}.hover-bg-red:focus,.hover-bg-red:hover{background-color:#ff4136}.hover-bg-light-red:focus,.hover-bg-light-red:hover{background-color:#ff725c}.hover-bg-orange:focus,.hover-bg-orange:hover{background-color:#ff6300}.hover-bg-gold:focus,.hover-bg-gold:hover{background-color:#ffb700}.hover-bg-yellow:focus,.hover-bg-yellow:hover{background-color:gold}.hover-bg-light-yellow:focus,.hover-bg-light-yellow:hover{background-color:#fbf1a9}.hover-bg-purple:focus,.hover-bg-purple:hover{background-color:#5e2ca5}.hover-bg-light-purple:focus,.hover-bg-light-purple:hover{background-color:#a463f2}.hover-bg-dark-pink:focus,.hover-bg-dark-pink:hover{background-color:#d5008f}.hover-bg-hot-pink:focus,.hover-bg-hot-pink:hover{background-color:#ff41b4}.hover-bg-pink:focus,.hover-bg-pink:hover{background-color:#ff80cc}.hover-bg-light-pink:focus,.hover-bg-light-pink:hover{background-color:#ffa3d7}.hover-bg-dark-green:focus,.hover-bg-dark-green:hover{background-color:#137752}.hover-bg-green:focus,.hover-bg-green:hover{background-color:#19a974}.hover-bg-light-green:focus,.hover-bg-light-green:hover{background-color:#9eebcf}.hover-bg-navy:focus,.hover-bg-navy:hover{background-color:#001b44}.hover-bg-dark-blue:focus,.hover-bg-dark-blue:hover{background-color:#00449e}.hover-bg-blue:focus,.hover-bg-blue:hover{background-color:#0594cb}.hover-bg-light-blue:focus,.hover-bg-light-blue:hover{background-color:#96ccff}.hover-bg-lightest-blue:focus,.hover-bg-lightest-blue:hover{background-color:#cdecff}.hover-bg-washed-blue:focus,.hover-bg-washed-blue:hover{background-color:#f6fffe}.hover-bg-washed-green:focus,.hover-bg-washed-green:hover{background-color:#e8fdf5}.hover-bg-washed-yellow:focus,.hover-bg-washed-yellow:hover{background-color:#fffceb}.hover-bg-washed-red:focus,.hover-bg-washed-red:hover{background-color:#ffdfdf}.hover-bg-inherit:focus,.hover-bg-inherit:hover{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:hsla(0,0%,100%,.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-left:auto}.center,.mr-auto{margin-right:auto}.ml-auto{margin-left:auto}@media screen and (min-width:30em){.center-ns{margin-left:auto}.center-ns,.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-left:auto}.center-m,.mr-auto-m{margin-right:auto}.ml-auto-m{margin-left:auto}}@media screen and (min-width:60em){.center-l{margin-left:auto}.center-l,.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}.dim,.dim:focus,.dim:hover{transition:opacity .15s ease-in}.dim:focus,.dim:hover{opacity:.5}.dim:active{opacity:.8;transition:opacity .15s ease-out}.glow,.glow:focus,.glow:hover{transition:opacity .15s ease-in}.glow:focus,.glow:hover{opacity:1}.hide-child .child{opacity:0;transition:opacity .15s ease-in}.hide-child:active .child,.hide-child:focus .child,.hide-child:hover .child{opacity:1;transition:opacity .15s ease-in}.underline-hover:focus,.underline-hover:hover{text-decoration:underline}.grow{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);transition:-webkit-transform .25s ease-out;transition:transform .25s ease-out;transition:transform .25s ease-out,-webkit-transform .25s ease-out}.grow:focus,.grow:hover{-webkit-transform:scale(1.05);transform:scale(1.05)}.grow:active{-webkit-transform:scale(.9);transform:scale(.9)}.grow-large{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);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:focus,.grow-large:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.grow-large:active{-webkit-transform:scale(.95);transform:scale(.95)}.pointer:hover,.shadow-hover{cursor:pointer}.shadow-hover{position:relative;transition:all .5s cubic-bezier(.165,.84,.44,1)}.shadow-hover:after{content:"";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;transition:opacity .5s cubic-bezier(.165,.84,.44,1)}.shadow-hover:focus:after,.shadow-hover:hover:after{opacity:1}.bg-animate,.bg-animate:focus,.bg-animate:hover{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-unset{z-index:unset}.nested-copy-line-height ol,.nested-copy-line-height p,.nested-copy-line-height ul{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 ol,.nested-list-reset ul{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-seperator p+p{margin-top:1.5em}.nested-img img{width:100%;max-width:100%;display:block}.nested-links a{transition:color .15s ease-in}.nested-links a:focus,.nested-links a:hover{color:#96ccff;transition:color .15s ease-in}@font-face{font-family:Muli;font-style:normal;font-weight:200;src:url(/files/muli-latin-200.eot);src:local("Muli Extra Light "),local("Muli-Extra Light"),url(/files/muli-latin-200.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-200.woff2) format("woff2"),url(/files/muli-latin-200.woff) format("woff"),url(/files/muli-latin-200.svg#muli) format("svg")}@font-face{font-family:Muli;font-style:italic;font-weight:200;src:url(/files/muli-latin-200italic.eot);src:local("Muli Extra Light italic"),local("Muli-Extra Lightitalic"),url(/files/muli-latin-200italic.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-200italic.woff2) format("woff2"),url(/files/muli-latin-200italic.woff) format("woff"),url(/files/muli-latin-200italic.svg#muli) format("svg")}@font-face{font-family:Muli;font-style:normal;font-weight:400;src:url(/files/muli-latin-400.eot);src:local("Muli Regular "),local("Muli-Regular"),url(/files/muli-latin-400.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-400.woff2) format("woff2"),url(/files/muli-latin-400.woff) format("woff"),url(/files/muli-latin-400.svg#muli) format("svg")}@font-face{font-family:Muli;font-style:italic;font-weight:400;src:url(/files/muli-latin-400italic.eot);src:local("Muli Regular italic"),local("Muli-Regularitalic"),url(/files/muli-latin-400italic.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-400italic.woff2) format("woff2"),url(/files/muli-latin-400italic.woff) format("woff"),url(/files/muli-latin-400italic.svg#muli) format("svg")}@font-face{font-family:Muli;font-style:normal;font-weight:800;src:url(/files/muli-latin-800.eot);src:local("Muli ExtraBold "),local("Muli-ExtraBold"),url(/files/muli-latin-800.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-800.woff2) format("woff2"),url(/files/muli-latin-800.woff) format("woff"),url(/files/muli-latin-800.svg#muli) format("svg")}@font-face{font-family:Muli;font-style:italic;font-weight:800;src:url(/files/muli-latin-800italic.eot);src:local("Muli ExtraBold italic"),local("Muli-ExtraBolditalic"),url(/files/muli-latin-800italic.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-800italic.woff2) format("woff2"),url(/files/muli-latin-800italic.woff) format("woff"),url(/files/muli-latin-800italic.svg#muli) format("svg")}.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 a{0%{opacity:0}to{opacity:1}}@keyframes a{0%{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:a;animation-name:a}.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:active .child-menu,.hide-child-menu:focus .child-menu,.hide-child-menu:hover .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;box-sizing:border-box;visibility:visible!important}.searchbox .algolia-autocomplete{display:block;width:100%;height:100%}.searchbox__wrapper{width:100%;height:100%;z-index:1;position:relative}.searchbox__input{display:inline-block;box-sizing:border-box;transition:box-shadow .4s ease,background .4s ease;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;background:#fff!important;padding:0;padding-right:26px;padding-left:32px;width:100%;height:100%;vertical-align:middle;white-space:normal;font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{outline:0;box-shadow:inset 0 0 0 1px #aaa;background:#fff}.searchbox__input::-webkit-input-placeholder{color:#aaa}.searchbox__input:-ms-input-placeholder{color:#aaa}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{position:absolute;top:0;margin:0;border:0;border-radius:16px 0 0 16px;background-color:rgba(69,142,225,0);padding:0;width:32px;height:100%;vertical-align:middle;text-align:center;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;right:inherit;left:0}.searchbox__submit:before{display:inline-block;margin-right:-4px;height:100%;vertical-align:middle;content:""}.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit:focus{outline:0}.searchbox__submit svg{width:14px;height:14px;vertical-align:middle;fill:#6d7e96}.searchbox__reset{display:block;position:absolute;top:8px;right:8px;margin:0;border:0;background:none;cursor:pointer;padding:0;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;fill:rgba(0,0,0,.5)}.searchbox__reset.hide{display:none}.searchbox__reset:focus{outline:0}.searchbox__reset svg{display:block;margin:4px;width:8px;height:8px}.searchbox__input:valid~.searchbox__reset{display:block;-webkit-animation-name:b;animation-name:b;-webkit-animation-duration:.15s;animation-duration:.15s}@-webkit-keyframes b{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes b{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:1;max-width:600px;min-width:500px;box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1)}.algolia-autocomplete .ds-dropdown-menu:before{display:block;position:absolute;content:"";width:14px;height:14px;background:#fff;z-index:2;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:2;margin-top:8px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion{cursor:pointer}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple,.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content{background-color:rgba(69,142,225,.05)}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{position:relative;border:1px solid #d9d9d9;background:#fff;border-radius:4px;overflow:auto;padding:0 8px 8px}.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}.algolia-autocomplete .algolia-docsearch-suggestion{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{color:inherit;background:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{padding:0 0 1px;background:inherit;box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--content{display:block;float:right;width:70%;position:relative;padding:5.33333px 0 5.33333px 10.66667px;cursor:pointer}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;left:-1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{position:relative;border-bottom:1px solid #ddd;display:none;margin-top:8px;padding:4px 0;font-size:1em;color:#33363d}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{width:100%;float:left;padding:8px 0 0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:left;width:30%;display:none;padding-left:0;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-column .algolia-docsearch-suggestion--highlight{background-color:inherit;color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:4px;color:#02060c;font-size:.9em;font-weight:700}.algolia-autocomplete .algolia-docsearch-suggestion--text{display:block;line-height:1.2em;font-size:.85em;color:#63676d}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{width:100%;padding:8px 0;text-align:center;font-size:1.2em}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion code{padding:1px 5px;font-size:90%;border:none;color:#222;background-color:#ebebeb;border-radius:3px;font-family:Menlo,Monaco,Consolas,Courier New,monospace}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary .algolia-docsearch-suggestion--subcategory-column{display:block}.algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion{border-bottom:1px solid #eee;padding:8px;margin:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content{width:100%;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content:before{display:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header{margin:0;padding:0;display:block;width:100%;border:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1{opacity:.6;font-size:.85em}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1:before{background-image:url('data:image/svg+xml;utf8,<svg width="10" height="10" viewBox="0 0 20 38" xmlns="http://www.w3.org/2000/svg"><path d="M1.49 4.31l14 16.126.002-2.624-14 16.074-1.314 1.51 3.017 2.626 1.313-1.508 14-16.075 1.142-1.313-1.14-1.313-14-16.125L3.2.18.18 2.8l1.31 1.51z" fill-rule="evenodd" fill="%231D3657" /></svg>');content:"";width:10px;height:10px;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper{width:100%;float:left;margin:0;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-column,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline{display:none!important}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title{margin:0;color:#458ee1;font-size:.9em;font-weight:400}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title:before{content:"#";font-weight:700;color:#458ee1;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text{margin:4px 0 0;display:block;line-height:1.4em;padding:5.33333px 8px;background:#f8f8f8;font-size:.85em;opacity:.8}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{color:#3f4145;font-weight:700;box-shadow:none}.algolia-autocomplete .algolia-docsearch-footer{width:110px;height:20px;z-index:3;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;utf8,<svg viewBox='0 0 130 18' xmlns='http://www.w3.org/2000/svg'><defs><linearGradient x1='-36.868%' y1='134.936%' x2='129.432%' y2='-27.7%' id='a'><stop stop-color='%2300AEFF' offset='0%'/><stop stop-color='%233369E7' offset='100%'/></linearGradient></defs><g fill='none' fill-rule='evenodd'><path d='M59.399.022h13.299a2.372 2.372 0 0 1 2.377 2.364V15.62a2.372 2.372 0 0 1-2.377 2.364H59.399a2.372 2.372 0 0 1-2.377-2.364V2.381A2.368 2.368 0 0 1 59.399.022z' fill='url(%23a)'/><path d='M66.257 4.56c-2.815 0-5.1 2.272-5.1 5.078 0 2.806 2.284 5.072 5.1 5.072 2.815 0 5.1-2.272 5.1-5.078 0-2.806-2.279-5.072-5.1-5.072zm0 8.652c-1.983 0-3.593-1.602-3.593-3.574 0-1.972 1.61-3.574 3.593-3.574 1.983 0 3.593 1.602 3.593 3.574a3.582 3.582 0 0 1-3.593 3.574zm0-6.418v2.664c0 .076.082.131.153.093l2.377-1.226c.055-.027.071-.093.044-.147a2.96 2.96 0 0 0-2.465-1.487c-.055 0-.11.044-.11.104l.001-.001zm-3.33-1.956l-.312-.311a.783.783 0 0 0-1.106 0l-.372.37a.773.773 0 0 0 0 1.101l.307.305c.049.049.121.038.164-.011.181-.245.378-.479.597-.697.225-.223.455-.42.707-.599.055-.033.06-.109.016-.158h-.001zm5.001-.806v-.616a.781.781 0 0 0-.783-.779h-1.824a.78.78 0 0 0-.783.779v.632c0 .071.066.12.137.104a5.736 5.736 0 0 1 1.588-.223c.52 0 1.035.071 1.534.207a.106.106 0 0 0 .131-.104z' fill='%23FFF'/><path d='M102.162 13.762c0 1.455-.372 2.517-1.123 3.193-.75.676-1.895 1.013-3.44 1.013-.564 0-1.736-.109-2.673-.316l.345-1.689c.783.163 1.819.207 2.361.207.86 0 1.473-.174 1.84-.523.367-.349.548-.866.548-1.553v-.349a6.374 6.374 0 0 1-.838.316 4.151 4.151 0 0 1-1.194.158 4.515 4.515 0 0 1-1.616-.278 3.385 3.385 0 0 1-1.254-.817 3.744 3.744 0 0 1-.811-1.351c-.192-.539-.29-1.504-.29-2.212 0-.665.104-1.498.307-2.054a3.925 3.925 0 0 1 .904-1.433 4.124 4.124 0 0 1 1.441-.926 5.31 5.31 0 0 1 1.945-.365c.696 0 1.337.087 1.961.191a15.86 15.86 0 0 1 1.588.332v8.456h-.001zm-5.954-4.206c0 .893.197 1.885.592 2.299.394.414.904.621 1.528.621.34 0 .663-.049.964-.142a2.75 2.75 0 0 0 .734-.332v-5.29a8.531 8.531 0 0 0-1.413-.18c-.778-.022-1.369.294-1.786.801-.411.507-.619 1.395-.619 2.223zm16.12 0c0 .719-.104 1.264-.318 1.858a4.389 4.389 0 0 1-.904 1.52c-.389.42-.854.746-1.402.975-.548.229-1.391.36-1.813.36-.422-.005-1.26-.125-1.802-.36a4.088 4.088 0 0 1-1.397-.975 4.486 4.486 0 0 1-.909-1.52 5.037 5.037 0 0 1-.329-1.858c0-.719.099-1.411.318-1.999.219-.588.526-1.09.92-1.509.394-.42.865-.741 1.402-.97a4.547 4.547 0 0 1 1.786-.338 4.69 4.69 0 0 1 1.791.338c.548.229 1.019.55 1.402.97.389.42.69.921.909 1.509.23.588.345 1.28.345 1.999h.001zm-2.191.005c0-.921-.203-1.689-.597-2.223-.394-.539-.948-.806-1.654-.806-.707 0-1.26.267-1.654.806-.394.539-.586 1.302-.586 2.223 0 .932.197 1.558.592 2.098.394.545.948.812 1.654.812.707 0 1.26-.272 1.654-.812.394-.545.592-1.166.592-2.098h-.001zm6.962 4.707c-3.511.016-3.511-2.822-3.511-3.274L113.583.926l2.142-.338v10.003c0 .256 0 1.88 1.375 1.885v1.792h-.001zm3.774 0h-2.153V5.072l2.153-.338v9.534zm-1.079-10.542c.718 0 1.304-.578 1.304-1.291 0-.714-.581-1.291-1.304-1.291-.723 0-1.304.578-1.304 1.291 0 .714.586 1.291 1.304 1.291zm6.431 1.013c.707 0 1.304.087 1.786.262.482.174.871.42 1.156.73.285.311.488.735.608 1.182.126.447.186.937.186 1.476v5.481a25.24 25.24 0 0 1-1.495.251c-.668.098-1.419.147-2.251.147a6.829 6.829 0 0 1-1.517-.158 3.213 3.213 0 0 1-1.178-.507 2.455 2.455 0 0 1-.761-.904c-.181-.37-.274-.893-.274-1.438 0-.523.104-.855.307-1.215.208-.36.487-.654.838-.883a3.609 3.609 0 0 1 1.227-.49 7.073 7.073 0 0 1 2.202-.103c.263.027.537.076.833.147v-.349c0-.245-.027-.479-.088-.697a1.486 1.486 0 0 0-.307-.583c-.148-.169-.34-.3-.581-.392a2.536 2.536 0 0 0-.915-.163c-.493 0-.942.06-1.353.131-.411.071-.75.153-1.008.245l-.257-1.749c.268-.093.668-.185 1.183-.278a9.335 9.335 0 0 1 1.66-.142l-.001-.001zm.181 7.731c.657 0 1.145-.038 1.484-.104v-2.168a5.097 5.097 0 0 0-1.978-.104c-.241.033-.46.098-.652.191a1.167 1.167 0 0 0-.466.392c-.121.169-.175.267-.175.523 0 .501.175.79.493.981.323.196.75.289 1.293.289h.001zM84.109 4.794c.707 0 1.304.087 1.786.262.482.174.871.42 1.156.73.29.316.487.735.608 1.182.126.447.186.937.186 1.476v5.481a25.24 25.24 0 0 1-1.495.251c-.668.098-1.419.147-2.251.147a6.829 6.829 0 0 1-1.517-.158 3.213 3.213 0 0 1-1.178-.507 2.455 2.455 0 0 1-.761-.904c-.181-.37-.274-.893-.274-1.438 0-.523.104-.855.307-1.215.208-.36.487-.654.838-.883a3.609 3.609 0 0 1 1.227-.49 7.073 7.073 0 0 1 2.202-.103c.257.027.537.076.833.147v-.349c0-.245-.027-.479-.088-.697a1.486 1.486 0 0 0-.307-.583c-.148-.169-.34-.3-.581-.392a2.536 2.536 0 0 0-.915-.163c-.493 0-.942.06-1.353.131-.411.071-.75.153-1.008.245l-.257-1.749c.268-.093.668-.185 1.183-.278a8.89 8.89 0 0 1 1.66-.142l-.001-.001zm.186 7.736c.657 0 1.145-.038 1.484-.104v-2.168a5.097 5.097 0 0 0-1.978-.104c-.241.033-.46.098-.652.191a1.167 1.167 0 0 0-.466.392c-.121.169-.175.267-.175.523 0 .501.175.79.493.981.318.191.75.289 1.293.289h.001zm8.682 1.738c-3.511.016-3.511-2.822-3.511-3.274L89.461.926l2.142-.338v10.003c0 .256 0 1.88 1.375 1.885v1.792h-.001z' fill='%23182359'/><path d='M5.027 11.025c0 .698-.252 1.246-.757 1.644-.505.397-1.201.596-2.089.596-.888 0-1.615-.138-2.181-.414v-1.214c.358.168.739.301 1.141.397.403.097.778.145 1.125.145.508 0 .884-.097 1.125-.29a.945.945 0 0 0 .363-.779.978.978 0 0 0-.333-.747c-.222-.204-.68-.446-1.375-.725-.716-.29-1.221-.621-1.515-.994-.294-.372-.44-.82-.44-1.343 0-.655.233-1.171.698-1.547.466-.376 1.09-.564 1.875-.564.752 0 1.5.165 2.245.494l-.408 1.047c-.698-.294-1.321-.44-1.869-.44-.415 0-.73.09-.945.271a.89.89 0 0 0-.322.717c0 .204.043.379.129.524.086.145.227.282.424.411.197.129.551.299 1.063.51.577.24.999.464 1.268.671.269.208.466.442.591.704.125.261.188.569.188.924l-.001.002zm3.98 2.24c-.924 0-1.646-.269-2.167-.808-.521-.539-.782-1.281-.782-2.226 0-.97.242-1.733.725-2.288.483-.555 1.148-.833 1.993-.833.784 0 1.404.238 1.858.714.455.476.682 1.132.682 1.966v.682H7.357c.018.577.174 1.02.467 1.329.294.31.707.465 1.241.465.351 0 .678-.033.98-.099a5.1 5.1 0 0 0 .975-.33v1.026a3.865 3.865 0 0 1-.935.312 5.723 5.723 0 0 1-1.08.091l.002-.001zm-.231-5.199c-.401 0-.722.127-.964.381s-.386.625-.432 1.112h2.696c-.007-.491-.125-.862-.354-1.115-.229-.252-.544-.379-.945-.379l-.001.001zm7.692 5.092l-.252-.827h-.043c-.286.362-.575.608-.865.739-.29.131-.662.196-1.117.196-.584 0-1.039-.158-1.367-.473-.328-.315-.491-.761-.491-1.337 0-.612.227-1.074.682-1.386.455-.312 1.148-.482 2.079-.51l1.026-.032v-.317c0-.38-.089-.663-.266-.851-.177-.188-.452-.282-.824-.282-.304 0-.596.045-.876.134a6.68 6.68 0 0 0-.806.317l-.408-.902a4.414 4.414 0 0 1 1.058-.384 4.856 4.856 0 0 1 1.085-.132c.756 0 1.326.165 1.711.494.385.329.577.847.577 1.552v4.002h-.902l-.001-.001zm-1.88-.859c.458 0 .826-.128 1.104-.384.278-.256.416-.615.416-1.077v-.516l-.763.032c-.594.021-1.027.121-1.297.298s-.406.448-.406.814c0 .265.079.47.236.615.158.145.394.218.709.218h.001zm7.557-5.189c.254 0 .464.018.628.054l-.124 1.176a2.383 2.383 0 0 0-.559-.064c-.505 0-.914.165-1.227.494-.313.329-.47.757-.47 1.284v3.105h-1.262V7.218h.988l.167 1.047h.064c.197-.354.454-.636.771-.843a1.83 1.83 0 0 1 1.023-.312h.001zm4.125 6.155c-.899 0-1.582-.262-2.049-.787-.467-.525-.701-1.277-.701-2.259 0-.999.244-1.767.733-2.304.489-.537 1.195-.806 2.119-.806.627 0 1.191.116 1.692.349l-.381 1.015c-.534-.208-.974-.312-1.321-.312-1.028 0-1.542.682-1.542 2.046 0 .666.128 1.166.384 1.501.256.335.631.502 1.125.502a3.23 3.23 0 0 0 1.595-.419v1.101a2.53 2.53 0 0 1-.722.285 4.356 4.356 0 0 1-.932.086v.002zm8.277-.107h-1.268V9.506c0-.458-.092-.8-.277-1.026-.184-.226-.477-.338-.878-.338-.53 0-.919.158-1.168.475-.249.317-.373.848-.373 1.593v2.949h-1.262V4.801h1.262v2.122c0 .34-.021.704-.064 1.09h.081a1.76 1.76 0 0 1 .717-.666c.306-.158.663-.236 1.072-.236 1.439 0 2.159.725 2.159 2.175v3.873l-.001-.001zm7.649-6.048c.741 0 1.319.269 1.732.806.414.537.62 1.291.62 2.261 0 .974-.209 1.732-.628 2.275-.419.542-1.001.814-1.746.814-.752 0-1.336-.27-1.751-.811h-.086l-.231.704h-.945V4.801h1.262v1.987l-.021.655-.032.553h.054c.401-.591.992-.886 1.772-.886zm-.328 1.031c-.508 0-.875.149-1.098.448-.224.299-.339.799-.346 1.501v.086c0 .723.115 1.247.344 1.571.229.324.603.486 1.123.486.448 0 .787-.177 1.018-.532.231-.354.346-.867.346-1.536 0-1.35-.462-2.025-1.386-2.025l-.001.001zm3.244-.924h1.375l1.209 3.368c.183.48.304.931.365 1.354h.043c.032-.197.091-.436.177-.717.086-.281.541-1.616 1.364-4.004h1.364l-2.541 6.73c-.462 1.235-1.232 1.853-2.31 1.853-.279 0-.551-.03-.816-.091v-.999c.19.043.406.064.65.064.609 0 1.037-.353 1.284-1.058l.22-.559-2.385-5.941h.001z' fill='%231D3657'/></g></svg>");background-repeat:no-repeat;background-position:50%;background-size:100%;overflow:hidden;text-indent:-9000px;padding:0!important;width:100%;height:100%;display:block}.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:1px solid #ccc}.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}.primary-color{color:#0594cb}.bg-primary-color,.hover-bg-primary-color:hover{background-color:#0594cb}.primary-color-dark{color:#0a1922}.bg-primary-color-dark,.hover-bg-primary-color-dark:hover{background-color:#0a1922}.primary-color-light{color:#f9f9f9}.bg-primary-color-light,.hover-bg-primary-color-light:hover{background-color:#f9f9f9}.accent-color{color:#ebb951}.bg-accent-color,.hover-bg-accent-color:hover{background-color:#ebb951}.accent-color-light,.hover-accent-color-light:hover{color:#ff4088}.bg-accent-color-light,.hover-bg-accent-color-light:hover{background-color:#ff4088}.accent-color-dark{color:#33ba91}.bg-accent-color-dark,.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 ol,.prose ul{margin-bottom:2em}.prose ol li,.prose ul li{margin-bottom:.5em}.prose li:hover{background-color:#eee}.prose ::-moz-selection{background:#0594cb;color:#fff}.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}.font_small,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 tc,.prose table td{padding:.75em .5em;text-align:left;border-right:1px solid #eee}.prose table tr:nth-child(2n){background-color:#eee}dl dt{font-weight:700;font-size:1.125rem}dd{margin:.5em 0 2em;padding:0}.code,.highlight pre,code,pre code{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:active,.pagination li.active a:link,.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;transition:opacity .15s ease-in}.facebook,.instagram,.twitter,.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,[data-scrolldir=up] .sticky{position:fixed;top:100px;right:0}}.fill-current{fill:currentColor}.chroma{background-color:#f0f0f0}.chroma .lntd{;vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{;border-spacing:0;padding:0;margin:0;border:0;width:100%;overflow:auto;display:block}.chroma .hl{background-color:#ffc;width:100%}.chroma .hl,.chroma .lnt{display:block}.chroma .ln,.chroma .lnt{;margin-right:.4em;padding:0 .4em}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn{color:#007020;font-weight:700}.chroma .kp,.chroma .kr{color:#007020}.chroma .kr{font-weight:700}.chroma .kt{color:#902000}.chroma .na{color:#4070a0}.chroma .nb{color:#007020}.chroma .nc{color:#0e84b5;font-weight:700}.chroma .no{color:#60add5}.chroma .nd{color:#555;font-weight:700}.chroma .ni{color:#d55537;font-weight:700}.chroma .ne{color:#007020}.chroma .nf{color:#06287e}.chroma .nl{color:#002070;font-weight:700}.chroma .nn{color:#0e84b5;font-weight:700}.chroma .nt{color:#062873;font-weight:700}.chroma .nv{color:#bb60d5}.chroma .dl,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .sd{color:#4070a0}.chroma .sd{font-style:italic}.chroma .s2,.chroma .se{color:#4070a0}.chroma .se{font-weight:700}.chroma .sh{color:#4070a0}.chroma .si{color:#70a0d0;font-style:italic}.chroma .sx{color:#c65d09}.chroma .sr{color:#235388}.chroma .s1{color:#4070a0}.chroma .ss{color:#517918}.chroma .il,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .mo{color:#40a070}.chroma .o{color:#666}.chroma .ow{color:#007020;font-weight:700}.chroma .c,.chroma .c1,.chroma .ch,.chroma .cm{color:#60a0b0;font-style:italic}.chroma .cs{color:#60a0b0;background-color:#fff0f0}.chroma .cp,.chroma .cpf{color:#007020}.chroma .gd{color:#a00000}.chroma .ge{font-style:italic}.chroma .gr{color:red}.chroma .gh{color:navy;font-weight:700}.chroma .gi{color:#00a000}.chroma .go{color:#888}.chroma .gp{color:#c65d09}.chroma .gp,.chroma .gs,.chroma .gu{font-weight:700}.chroma .gu{color:purple}.chroma .gt{color:#04d}.chroma .w{color:#bbb}.nested-blockquote blockquote{border-left:4px solid #0594cb;padding-left:1em}.mw-90{max-width:90%}
++html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{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-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}.border-box,a,article,body,code,dd,div,dl,dt,fieldset,footer,form,h1,h2,h3,h4,h5,h6,header,html,input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],legend,li,main,ol,p,pre,section,table,td,textarea,th,tr,ul{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-position:50%}.bg-center,.bg-top{background-repeat:no-repeat}.bg-top{background-position:top}.bg-right{background-position:100%}.bg-bottom,.bg-right{background-repeat:no-repeat}.bg-bottom{background-position:bottom}.bg-left{background-repeat:no-repeat;background-position:0}@media screen and (min-width:30em){.bg-center-ns{background-position:50%}.bg-center-ns,.bg-top-ns{background-repeat:no-repeat}.bg-top-ns{background-position:top}.bg-right-ns{background-position:100%}.bg-bottom-ns,.bg-right-ns{background-repeat:no-repeat}.bg-bottom-ns{background-position:bottom}.bg-left-ns{background-repeat:no-repeat;background-position:0}}@media screen and (min-width:30em) and (max-width:60em){.bg-center-m{background-position:50%}.bg-center-m,.bg-top-m{background-repeat:no-repeat}.bg-top-m{background-position:top}.bg-right-m{background-position:100%}.bg-bottom-m,.bg-right-m{background-repeat:no-repeat}.bg-bottom-m{background-position:bottom}.bg-left-m{background-repeat:no-repeat;background-position:0}}@media screen and (min-width:60em){.bg-center-l{background-position:50%}.bg-center-l,.bg-top-l{background-repeat:no-repeat}.bg-top-l{background-position:top}.bg-right-l{background-position:100%}.bg-bottom-l,.bg-right-l{background-repeat:no-repeat}.bg-bottom-l{background-position:bottom}.bg-left-l{background-repeat:no-repeat;background-position: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:hsla(0,0%,100%,.9)}.b--white-80{border-color:hsla(0,0%,100%,.8)}.b--white-70{border-color:hsla(0,0%,100%,.7)}.b--white-60{border-color:hsla(0,0%,100%,.6)}.b--white-50{border-color:hsla(0,0%,100%,.5)}.b--white-40{border-color:hsla(0,0%,100%,.4)}.b--white-30{border-color:hsla(0,0%,100%,.3)}.b--white-20{border-color:hsla(0,0%,100%,.2)}.b--white-10{border-color:hsla(0,0%,100%,.1)}.b--white-05{border-color:hsla(0,0%,100%,.05)}.b--white-025{border-color:hsla(0,0%,100%,.025)}.b--white-0125{border-color:hsla(0,0%,100%,.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-right-radius:0}.br--right,.br--top{border-bottom-left-radius:0}.br--right{border-top-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-right-radius:0}.br--right-ns,.br--top-ns{border-bottom-left-radius:0}.br--right-ns{border-top-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-right-radius:0}.br--right-m,.br--top-m{border-bottom-left-radius:0}.br--right-m{border-top-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-right-radius:0}.br--right-l,.br--top-l{border-bottom-left-radius:0}.br--right-l{border-top-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{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}@media screen and (min-width:30em){.shadow-1-ns{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-ns{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-ns{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-ns{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-ns{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:30em) and (max-width:60em){.shadow-1-m{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-m{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-m{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-m{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-m{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:60em){.shadow-1-l{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.shadow-2-l{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.shadow-3-l{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.shadow-4-l{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.shadow-5-l{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:after,.cf:before{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;-ms-flex-direction:column;flex-direction:column}.flex-column,.flex-row{-webkit-box-direction:normal}.flex-row{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.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}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-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;-ms-grid-row-align:center;align-self:center}.self-baseline{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch{-ms-flex-item-align:stretch;-ms-grid-row-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}@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-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}.flex-wrap-reverse-ns{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-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;-ms-grid-row-align:center;align-self:center}.self-baseline-ns{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch-ns{-ms-flex-item-align:stretch;-ms-grid-row-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}}@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;-ms-flex-direction:column;flex-direction:column}.flex-column-m,.flex-row-m{-webkit-box-direction:normal}.flex-row-m{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-wrap-m{-ms-flex-wrap:wrap;flex-wrap:wrap}.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}.flex-wrap-reverse-m{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-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;-ms-grid-row-align:center;align-self:center}.self-baseline-m{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch-m{-ms-flex-item-align:stretch;-ms-grid-row-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}}@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;-ms-flex-direction:column;flex-direction:column}.flex-column-l,.flex-row-l{-webkit-box-direction:normal}.flex-row-l{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-wrap-l{-ms-flex-wrap:wrap;flex-wrap:wrap}.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}.flex-wrap-reverse-l{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-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;-ms-grid-row-align:center;align-self:center}.self-baseline-l{-ms-flex-item-align:baseline;align-self:baseline}.self-stretch-l{-ms-flex-item-align:stretch;-ms-grid-row-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}}.fl{float:left}.fl,.fr{_display:inline}.fr{float:right}.fn{float:none}@media screen and (min-width:30em){.fl-ns{float:left}.fl-ns,.fr-ns{_display:inline}.fr-ns{float:right}.fn-ns{float:none}}@media screen and (min-width:30em) and (max-width:60em){.fl-m{float:left}.fl-m,.fr-m{_display:inline}.fr-m{float:right}.fn-m{float:none}}@media screen and (min-width:60em){.fl-l{float:left}.fl-l,.fr-l{_display:inline}.fr-l{float:right}.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}.link,.link:active,.link:focus,.link:hover,.link:link,.link:visited{transition:color .15s ease-in}.link:focus{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:hsla(0,0%,100%,.9)}.white-80{color:hsla(0,0%,100%,.8)}.white-70{color:hsla(0,0%,100%,.7)}.white-60{color:hsla(0,0%,100%,.6)}.white-50{color:hsla(0,0%,100%,.5)}.white-40{color:hsla(0,0%,100%,.4)}.white-30{color:hsla(0,0%,100%,.3)}.white-20{color:hsla(0,0%,100%,.2)}.white-10{color:hsla(0,0%,100%,.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:hsla(0,0%,100%,.9)}.bg-white-80{background-color:hsla(0,0%,100%,.8)}.bg-white-70{background-color:hsla(0,0%,100%,.7)}.bg-white-60{background-color:hsla(0,0%,100%,.6)}.bg-white-50{background-color:hsla(0,0%,100%,.5)}.bg-white-40{background-color:hsla(0,0%,100%,.4)}.bg-white-30{background-color:hsla(0,0%,100%,.3)}.bg-white-20{background-color:hsla(0,0%,100%,.2)}.bg-white-10{background-color:hsla(0,0%,100%,.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:focus,.hover-black:hover{color:#000}.hover-near-black:focus,.hover-near-black:hover{color:#111}.hover-dark-gray:focus,.hover-dark-gray:hover{color:#333}.hover-mid-gray:focus,.hover-mid-gray:hover{color:#555}.hover-gray:focus,.hover-gray:hover{color:#777}.hover-silver:focus,.hover-silver:hover{color:#999}.hover-light-silver:focus,.hover-light-silver:hover{color:#aaa}.hover-moon-gray:focus,.hover-moon-gray:hover{color:#ccc}.hover-light-gray:focus,.hover-light-gray:hover{color:#eee}.hover-near-white:focus,.hover-near-white:hover{color:#f4f4f4}.hover-white:focus,.hover-white:hover{color:#fff}.hover-black-90:focus,.hover-black-90:hover{color:rgba(0,0,0,.9)}.hover-black-80:focus,.hover-black-80:hover{color:rgba(0,0,0,.8)}.hover-black-70:focus,.hover-black-70:hover{color:rgba(0,0,0,.7)}.hover-black-60:focus,.hover-black-60:hover{color:rgba(0,0,0,.6)}.hover-black-50:focus,.hover-black-50:hover{color:rgba(0,0,0,.5)}.hover-black-40:focus,.hover-black-40:hover{color:rgba(0,0,0,.4)}.hover-black-30:focus,.hover-black-30:hover{color:rgba(0,0,0,.3)}.hover-black-20:focus,.hover-black-20:hover{color:rgba(0,0,0,.2)}.hover-black-10:focus,.hover-black-10:hover{color:rgba(0,0,0,.1)}.hover-white-90:focus,.hover-white-90:hover{color:hsla(0,0%,100%,.9)}.hover-white-80:focus,.hover-white-80:hover{color:hsla(0,0%,100%,.8)}.hover-white-70:focus,.hover-white-70:hover{color:hsla(0,0%,100%,.7)}.hover-white-60:focus,.hover-white-60:hover{color:hsla(0,0%,100%,.6)}.hover-white-50:focus,.hover-white-50:hover{color:hsla(0,0%,100%,.5)}.hover-white-40:focus,.hover-white-40:hover{color:hsla(0,0%,100%,.4)}.hover-white-30:focus,.hover-white-30:hover{color:hsla(0,0%,100%,.3)}.hover-white-20:focus,.hover-white-20:hover{color:hsla(0,0%,100%,.2)}.hover-white-10:focus,.hover-white-10:hover{color:hsla(0,0%,100%,.1)}.hover-inherit:focus,.hover-inherit:hover{color:inherit}.hover-bg-black:focus,.hover-bg-black:hover{background-color:#000}.hover-bg-near-black:focus,.hover-bg-near-black:hover{background-color:#111}.hover-bg-dark-gray:focus,.hover-bg-dark-gray:hover{background-color:#333}.hover-bg-dark-gray:focus,.hover-bg-mid-gray:hover{background-color:#555}.hover-bg-gray:focus,.hover-bg-gray:hover{background-color:#777}.hover-bg-silver:focus,.hover-bg-silver:hover{background-color:#999}.hover-bg-light-silver:focus,.hover-bg-light-silver:hover{background-color:#aaa}.hover-bg-moon-gray:focus,.hover-bg-moon-gray:hover{background-color:#ccc}.hover-bg-light-gray:focus,.hover-bg-light-gray:hover{background-color:#eee}.hover-bg-near-white:focus,.hover-bg-near-white:hover{background-color:#f4f4f4}.hover-bg-white:focus,.hover-bg-white:hover{background-color:#fff}.hover-bg-transparent:focus,.hover-bg-transparent:hover{background-color:transparent}.hover-bg-black-90:focus,.hover-bg-black-90:hover{background-color:rgba(0,0,0,.9)}.hover-bg-black-80:focus,.hover-bg-black-80:hover{background-color:rgba(0,0,0,.8)}.hover-bg-black-70:focus,.hover-bg-black-70:hover{background-color:rgba(0,0,0,.7)}.hover-bg-black-60:focus,.hover-bg-black-60:hover{background-color:rgba(0,0,0,.6)}.hover-bg-black-50:focus,.hover-bg-black-50:hover{background-color:rgba(0,0,0,.5)}.hover-bg-black-40:focus,.hover-bg-black-40:hover{background-color:rgba(0,0,0,.4)}.hover-bg-black-30:focus,.hover-bg-black-30:hover{background-color:rgba(0,0,0,.3)}.hover-bg-black-20:focus,.hover-bg-black-20:hover{background-color:rgba(0,0,0,.2)}.hover-bg-black-10:focus,.hover-bg-black-10:hover{background-color:rgba(0,0,0,.1)}.hover-bg-white-90:focus,.hover-bg-white-90:hover{background-color:hsla(0,0%,100%,.9)}.hover-bg-white-80:focus,.hover-bg-white-80:hover{background-color:hsla(0,0%,100%,.8)}.hover-bg-white-70:focus,.hover-bg-white-70:hover{background-color:hsla(0,0%,100%,.7)}.hover-bg-white-60:focus,.hover-bg-white-60:hover{background-color:hsla(0,0%,100%,.6)}.hover-bg-white-50:focus,.hover-bg-white-50:hover{background-color:hsla(0,0%,100%,.5)}.hover-bg-white-40:focus,.hover-bg-white-40:hover{background-color:hsla(0,0%,100%,.4)}.hover-bg-white-30:focus,.hover-bg-white-30:hover{background-color:hsla(0,0%,100%,.3)}.hover-bg-white-20:focus,.hover-bg-white-20:hover{background-color:hsla(0,0%,100%,.2)}.hover-bg-white-10:focus,.hover-bg-white-10:hover{background-color:hsla(0,0%,100%,.1)}.hover-dark-red:focus,.hover-dark-red:hover{color:#e7040f}.hover-red:focus,.hover-red:hover{color:#ff4136}.hover-light-red:focus,.hover-light-red:hover{color:#ff725c}.hover-orange:focus,.hover-orange:hover{color:#ff6300}.hover-gold:focus,.hover-gold:hover{color:#ffb700}.hover-yellow:focus,.hover-yellow:hover{color:gold}.hover-light-yellow:focus,.hover-light-yellow:hover{color:#fbf1a9}.hover-purple:focus,.hover-purple:hover{color:#5e2ca5}.hover-light-purple:focus,.hover-light-purple:hover{color:#a463f2}.hover-dark-pink:focus,.hover-dark-pink:hover{color:#d5008f}.hover-hot-pink:focus,.hover-hot-pink:hover{color:#ff41b4}.hover-pink:focus,.hover-pink:hover{color:#ff80cc}.hover-light-pink:focus,.hover-light-pink:hover{color:#ffa3d7}.hover-dark-green:focus,.hover-dark-green:hover{color:#137752}.hover-green:focus,.hover-green:hover{color:#19a974}.hover-light-green:focus,.hover-light-green:hover{color:#9eebcf}.hover-navy:focus,.hover-navy:hover{color:#001b44}.hover-dark-blue:focus,.hover-dark-blue:hover{color:#00449e}.hover-blue:focus,.hover-blue:hover{color:#0594cb}.hover-light-blue:focus,.hover-light-blue:hover{color:#96ccff}.hover-lightest-blue:focus,.hover-lightest-blue:hover{color:#cdecff}.hover-washed-blue:focus,.hover-washed-blue:hover{color:#f6fffe}.hover-washed-green:focus,.hover-washed-green:hover{color:#e8fdf5}.hover-washed-yellow:focus,.hover-washed-yellow:hover{color:#fffceb}.hover-washed-red:focus,.hover-washed-red:hover{color:#ffdfdf}.hover-bg-dark-red:focus,.hover-bg-dark-red:hover{background-color:#e7040f}.hover-bg-red:focus,.hover-bg-red:hover{background-color:#ff4136}.hover-bg-light-red:focus,.hover-bg-light-red:hover{background-color:#ff725c}.hover-bg-orange:focus,.hover-bg-orange:hover{background-color:#ff6300}.hover-bg-gold:focus,.hover-bg-gold:hover{background-color:#ffb700}.hover-bg-yellow:focus,.hover-bg-yellow:hover{background-color:gold}.hover-bg-light-yellow:focus,.hover-bg-light-yellow:hover{background-color:#fbf1a9}.hover-bg-purple:focus,.hover-bg-purple:hover{background-color:#5e2ca5}.hover-bg-light-purple:focus,.hover-bg-light-purple:hover{background-color:#a463f2}.hover-bg-dark-pink:focus,.hover-bg-dark-pink:hover{background-color:#d5008f}.hover-bg-hot-pink:focus,.hover-bg-hot-pink:hover{background-color:#ff41b4}.hover-bg-pink:focus,.hover-bg-pink:hover{background-color:#ff80cc}.hover-bg-light-pink:focus,.hover-bg-light-pink:hover{background-color:#ffa3d7}.hover-bg-dark-green:focus,.hover-bg-dark-green:hover{background-color:#137752}.hover-bg-green:focus,.hover-bg-green:hover{background-color:#19a974}.hover-bg-light-green:focus,.hover-bg-light-green:hover{background-color:#9eebcf}.hover-bg-navy:focus,.hover-bg-navy:hover{background-color:#001b44}.hover-bg-dark-blue:focus,.hover-bg-dark-blue:hover{background-color:#00449e}.hover-bg-blue:focus,.hover-bg-blue:hover{background-color:#0594cb}.hover-bg-light-blue:focus,.hover-bg-light-blue:hover{background-color:#96ccff}.hover-bg-lightest-blue:focus,.hover-bg-lightest-blue:hover{background-color:#cdecff}.hover-bg-washed-blue:focus,.hover-bg-washed-blue:hover{background-color:#f6fffe}.hover-bg-washed-green:focus,.hover-bg-washed-green:hover{background-color:#e8fdf5}.hover-bg-washed-yellow:focus,.hover-bg-washed-yellow:hover{background-color:#fffceb}.hover-bg-washed-red:focus,.hover-bg-washed-red:hover{background-color:#ffdfdf}.hover-bg-inherit:focus,.hover-bg-inherit:hover{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:hsla(0,0%,100%,.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}@media screen and (min-width:30em){.tl-ns{text-align:left}.tr-ns{text-align:right}.tc-ns{text-align:center}}@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}}@media screen and (min-width:60em){.tl-l{text-align:left}.tr-l{text-align:right}.tc-l{text-align:center}}.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}@media screen and (min-width:30em){.center-ns{margin-right:auto;margin-left:auto}}@media screen and (min-width:30em) and (max-width:60em){.center-m{margin-right:auto;margin-left:auto}}@media screen and (min-width:60em){.center-l{margin-right:auto;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}.dim,.dim:focus,.dim:hover{transition:opacity .15s ease-in}.dim:focus,.dim:hover{opacity:.5}.dim:active{opacity:.8;transition:opacity .15s ease-out}.glow,.glow:focus,.glow:hover{transition:opacity .15s ease-in}.glow:focus,.glow:hover{opacity:1}.hide-child .child{opacity:0;transition:opacity .15s ease-in}.hide-child:active .child,.hide-child:focus .child,.hide-child:hover .child{opacity:1;transition:opacity .15s ease-in}.underline-hover:focus,.underline-hover:hover{text-decoration:underline}.grow{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);transition:-webkit-transform .25s ease-out;transition:transform .25s ease-out;transition:transform .25s ease-out,-webkit-transform .25s ease-out}.grow:focus,.grow:hover{-webkit-transform:scale(1.05);transform:scale(1.05)}.grow:active{-webkit-transform:scale(.9);transform:scale(.9)}.grow-large{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);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:focus,.grow-large:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.grow-large:active{-webkit-transform:scale(.95);transform:scale(.95)}.pointer:hover,.shadow-hover{cursor:pointer}.shadow-hover{position:relative;transition:all .5s cubic-bezier(.165,.84,.44,1)}.shadow-hover:after{content:"";box-shadow:0 0 16px 2px rgba(0,0,0,.2);opacity:0;position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1;transition:opacity .5s cubic-bezier(.165,.84,.44,1)}.shadow-hover:focus:after,.shadow-hover:hover:after{opacity:1}.bg-animate,.bg-animate:focus,.bg-animate:hover{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-unset{z-index:unset}.nested-copy-line-height ol,.nested-copy-line-height p,.nested-copy-line-height ul{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 ol,.nested-list-reset ul{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-seperator p+p{margin-top:1.5em}.nested-img img{width:100%;max-width:100%;display:block}.nested-links a{transition:color .15s ease-in}.nested-links a:focus,.nested-links a:hover{color:#96ccff;transition:color .15s ease-in}@font-face{font-family:Muli;font-style:normal;font-weight:200;src:url(/files/muli-latin-200.eot);src:local("Muli Extra Light "),local("Muli-Extra Light"),url(/files/muli-latin-200.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-200.woff2) format("woff2"),url(/files/muli-latin-200.woff) format("woff"),url(/files/muli-latin-200.svg#muli) format("svg")}@font-face{font-family:Muli;font-style:italic;font-weight:200;src:url(/files/muli-latin-200italic.eot);src:local("Muli Extra Light italic"),local("Muli-Extra Lightitalic"),url(/files/muli-latin-200italic.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-200italic.woff2) format("woff2"),url(/files/muli-latin-200italic.woff) format("woff"),url(/files/muli-latin-200italic.svg#muli) format("svg")}@font-face{font-family:Muli;font-style:normal;font-weight:400;src:url(/files/muli-latin-400.eot);src:local("Muli Regular "),local("Muli-Regular"),url(/files/muli-latin-400.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-400.woff2) format("woff2"),url(/files/muli-latin-400.woff) format("woff"),url(/files/muli-latin-400.svg#muli) format("svg")}@font-face{font-family:Muli;font-style:italic;font-weight:400;src:url(/files/muli-latin-400italic.eot);src:local("Muli Regular italic"),local("Muli-Regularitalic"),url(/files/muli-latin-400italic.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-400italic.woff2) format("woff2"),url(/files/muli-latin-400italic.woff) format("woff"),url(/files/muli-latin-400italic.svg#muli) format("svg")}@font-face{font-family:Muli;font-style:normal;font-weight:800;src:url(/files/muli-latin-800.eot);src:local("Muli ExtraBold "),local("Muli-ExtraBold"),url(/files/muli-latin-800.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-800.woff2) format("woff2"),url(/files/muli-latin-800.woff) format("woff"),url(/files/muli-latin-800.svg#muli) format("svg")}@font-face{font-family:Muli;font-style:italic;font-weight:800;src:url(/files/muli-latin-800italic.eot);src:local("Muli ExtraBold italic"),local("Muli-ExtraBolditalic"),url(/files/muli-latin-800italic.eot?#iefix) format("embedded-opentype"),url(/files/muli-latin-800italic.woff2) format("woff2"),url(/files/muli-latin-800italic.woff) format("woff"),url(/files/muli-latin-800italic.svg#muli) format("svg")}.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 a{0%{opacity:0}to{opacity:1}}@keyframes a{0%{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:a;animation-name:a}.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:active .child-menu,.hide-child-menu:focus .child-menu,.hide-child-menu:hover .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;box-sizing:border-box;visibility:visible!important}.searchbox .algolia-autocomplete{display:block;width:100%;height:100%}.searchbox__wrapper{width:100%;height:100%;z-index:1;position:relative}.searchbox__input{display:inline-block;box-sizing:border-box;transition:box-shadow .4s ease,background .4s ease;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;background:#fff!important;padding:0;padding-right:26px;padding-left:32px;width:100%;height:100%;vertical-align:middle;white-space:normal;font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{outline:0;box-shadow:inset 0 0 0 1px #aaa;background:#fff}.searchbox__input::-webkit-input-placeholder{color:#aaa}.searchbox__input:-ms-input-placeholder{color:#aaa}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{position:absolute;top:0;margin:0;border:0;border-radius:16px 0 0 16px;background-color:rgba(69,142,225,0);padding:0;width:32px;height:100%;vertical-align:middle;text-align:center;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;right:inherit;left:0}.searchbox__submit:before{display:inline-block;margin-right:-4px;height:100%;vertical-align:middle;content:""}.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit:focus{outline:0}.searchbox__submit svg{width:14px;height:14px;vertical-align:middle;fill:#6d7e96}.searchbox__reset{display:block;position:absolute;top:8px;right:8px;margin:0;border:0;background:none;cursor:pointer;padding:0;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;fill:rgba(0,0,0,.5)}.searchbox__reset.hide{display:none}.searchbox__reset:focus{outline:0}.searchbox__reset svg{display:block;margin:4px;width:8px;height:8px}.searchbox__input:valid~.searchbox__reset{display:block;-webkit-animation-name:b;animation-name:b;-webkit-animation-duration:.15s;animation-duration:.15s}@-webkit-keyframes b{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes b{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:1;max-width:600px;min-width:500px;box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1)}.algolia-autocomplete .ds-dropdown-menu:before{display:block;position:absolute;content:"";width:14px;height:14px;background:#fff;z-index:2;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:2;margin-top:8px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion{cursor:pointer}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple,.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content{background-color:rgba(69,142,225,.05)}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{position:relative;border:1px solid #d9d9d9;background:#fff;border-radius:4px;overflow:auto;padding:0 8px 8px}.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}.algolia-autocomplete .algolia-docsearch-suggestion{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{color:inherit;background:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{padding:0 0 1px;background:inherit;box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--content{display:block;float:right;width:70%;position:relative;padding:5.33333px 0 5.33333px 10.66667px;cursor:pointer}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;left:-1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{position:relative;border-bottom:1px solid #ddd;display:none;margin-top:8px;padding:4px 0;font-size:1em;color:#33363d}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{width:100%;float:left;padding:8px 0 0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:left;width:30%;display:none;padding-left:0;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-column .algolia-docsearch-suggestion--highlight{background-color:inherit;color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:4px;color:#02060c;font-size:.9em;font-weight:700}.algolia-autocomplete .algolia-docsearch-suggestion--text{display:block;line-height:1.2em;font-size:.85em;color:#63676d}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{width:100%;padding:8px 0;text-align:center;font-size:1.2em}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion code{padding:1px 5px;font-size:90%;border:none;color:#222;background-color:#ebebeb;border-radius:3px;font-family:Menlo,Monaco,Consolas,Courier New,monospace}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary .algolia-docsearch-suggestion--subcategory-column{display:block}.algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion{border-bottom:1px solid #eee;padding:8px;margin:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content{width:100%;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content:before{display:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header{margin:0;padding:0;display:block;width:100%;border:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1{opacity:.6;font-size:.85em}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1:before{background-image:url('data:image/svg+xml;utf8,<svg width="10" height="10" viewBox="0 0 20 38" xmlns="http://www.w3.org/2000/svg"><path d="M1.49 4.31l14 16.126.002-2.624-14 16.074-1.314 1.51 3.017 2.626 1.313-1.508 14-16.075 1.142-1.313-1.14-1.313-14-16.125L3.2.18.18 2.8l1.31 1.51z" fill-rule="evenodd" fill="%231D3657" /></svg>');content:"";width:10px;height:10px;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper{width:100%;float:left;margin:0;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-column,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline{display:none!important}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title{margin:0;color:#458ee1;font-size:.9em;font-weight:400}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title:before{content:"#";font-weight:700;color:#458ee1;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text{margin:4px 0 0;display:block;line-height:1.4em;padding:5.33333px 8px;background:#f8f8f8;font-size:.85em;opacity:.8}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{color:#3f4145;font-weight:700;box-shadow:none}.algolia-autocomplete .algolia-docsearch-footer{width:110px;height:20px;z-index:3;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;utf8,<svg viewBox='0 0 130 18' xmlns='http://www.w3.org/2000/svg'><defs><linearGradient x1='-36.868%' y1='134.936%' x2='129.432%' y2='-27.7%' id='a'><stop stop-color='%2300AEFF' offset='0%'/><stop stop-color='%233369E7' offset='100%'/></linearGradient></defs><g fill='none' fill-rule='evenodd'><path d='M59.399.022h13.299a2.372 2.372 0 0 1 2.377 2.364V15.62a2.372 2.372 0 0 1-2.377 2.364H59.399a2.372 2.372 0 0 1-2.377-2.364V2.381A2.368 2.368 0 0 1 59.399.022z' fill='url(%23a)'/><path d='M66.257 4.56c-2.815 0-5.1 2.272-5.1 5.078 0 2.806 2.284 5.072 5.1 5.072 2.815 0 5.1-2.272 5.1-5.078 0-2.806-2.279-5.072-5.1-5.072zm0 8.652c-1.983 0-3.593-1.602-3.593-3.574 0-1.972 1.61-3.574 3.593-3.574 1.983 0 3.593 1.602 3.593 3.574a3.582 3.582 0 0 1-3.593 3.574zm0-6.418v2.664c0 .076.082.131.153.093l2.377-1.226c.055-.027.071-.093.044-.147a2.96 2.96 0 0 0-2.465-1.487c-.055 0-.11.044-.11.104l.001-.001zm-3.33-1.956l-.312-.311a.783.783 0 0 0-1.106 0l-.372.37a.773.773 0 0 0 0 1.101l.307.305c.049.049.121.038.164-.011.181-.245.378-.479.597-.697.225-.223.455-.42.707-.599.055-.033.06-.109.016-.158h-.001zm5.001-.806v-.616a.781.781 0 0 0-.783-.779h-1.824a.78.78 0 0 0-.783.779v.632c0 .071.066.12.137.104a5.736 5.736 0 0 1 1.588-.223c.52 0 1.035.071 1.534.207a.106.106 0 0 0 .131-.104z' fill='%23FFF'/><path d='M102.162 13.762c0 1.455-.372 2.517-1.123 3.193-.75.676-1.895 1.013-3.44 1.013-.564 0-1.736-.109-2.673-.316l.345-1.689c.783.163 1.819.207 2.361.207.86 0 1.473-.174 1.84-.523.367-.349.548-.866.548-1.553v-.349a6.374 6.374 0 0 1-.838.316 4.151 4.151 0 0 1-1.194.158 4.515 4.515 0 0 1-1.616-.278 3.385 3.385 0 0 1-1.254-.817 3.744 3.744 0 0 1-.811-1.351c-.192-.539-.29-1.504-.29-2.212 0-.665.104-1.498.307-2.054a3.925 3.925 0 0 1 .904-1.433 4.124 4.124 0 0 1 1.441-.926 5.31 5.31 0 0 1 1.945-.365c.696 0 1.337.087 1.961.191a15.86 15.86 0 0 1 1.588.332v8.456h-.001zm-5.954-4.206c0 .893.197 1.885.592 2.299.394.414.904.621 1.528.621.34 0 .663-.049.964-.142a2.75 2.75 0 0 0 .734-.332v-5.29a8.531 8.531 0 0 0-1.413-.18c-.778-.022-1.369.294-1.786.801-.411.507-.619 1.395-.619 2.223zm16.12 0c0 .719-.104 1.264-.318 1.858a4.389 4.389 0 0 1-.904 1.52c-.389.42-.854.746-1.402.975-.548.229-1.391.36-1.813.36-.422-.005-1.26-.125-1.802-.36a4.088 4.088 0 0 1-1.397-.975 4.486 4.486 0 0 1-.909-1.52 5.037 5.037 0 0 1-.329-1.858c0-.719.099-1.411.318-1.999.219-.588.526-1.09.92-1.509.394-.42.865-.741 1.402-.97a4.547 4.547 0 0 1 1.786-.338 4.69 4.69 0 0 1 1.791.338c.548.229 1.019.55 1.402.97.389.42.69.921.909 1.509.23.588.345 1.28.345 1.999h.001zm-2.191.005c0-.921-.203-1.689-.597-2.223-.394-.539-.948-.806-1.654-.806-.707 0-1.26.267-1.654.806-.394.539-.586 1.302-.586 2.223 0 .932.197 1.558.592 2.098.394.545.948.812 1.654.812.707 0 1.26-.272 1.654-.812.394-.545.592-1.166.592-2.098h-.001zm6.962 4.707c-3.511.016-3.511-2.822-3.511-3.274L113.583.926l2.142-.338v10.003c0 .256 0 1.88 1.375 1.885v1.792h-.001zm3.774 0h-2.153V5.072l2.153-.338v9.534zm-1.079-10.542c.718 0 1.304-.578 1.304-1.291 0-.714-.581-1.291-1.304-1.291-.723 0-1.304.578-1.304 1.291 0 .714.586 1.291 1.304 1.291zm6.431 1.013c.707 0 1.304.087 1.786.262.482.174.871.42 1.156.73.285.311.488.735.608 1.182.126.447.186.937.186 1.476v5.481a25.24 25.24 0 0 1-1.495.251c-.668.098-1.419.147-2.251.147a6.829 6.829 0 0 1-1.517-.158 3.213 3.213 0 0 1-1.178-.507 2.455 2.455 0 0 1-.761-.904c-.181-.37-.274-.893-.274-1.438 0-.523.104-.855.307-1.215.208-.36.487-.654.838-.883a3.609 3.609 0 0 1 1.227-.49 7.073 7.073 0 0 1 2.202-.103c.263.027.537.076.833.147v-.349c0-.245-.027-.479-.088-.697a1.486 1.486 0 0 0-.307-.583c-.148-.169-.34-.3-.581-.392a2.536 2.536 0 0 0-.915-.163c-.493 0-.942.06-1.353.131-.411.071-.75.153-1.008.245l-.257-1.749c.268-.093.668-.185 1.183-.278a9.335 9.335 0 0 1 1.66-.142l-.001-.001zm.181 7.731c.657 0 1.145-.038 1.484-.104v-2.168a5.097 5.097 0 0 0-1.978-.104c-.241.033-.46.098-.652.191a1.167 1.167 0 0 0-.466.392c-.121.169-.175.267-.175.523 0 .501.175.79.493.981.323.196.75.289 1.293.289h.001zM84.109 4.794c.707 0 1.304.087 1.786.262.482.174.871.42 1.156.73.29.316.487.735.608 1.182.126.447.186.937.186 1.476v5.481a25.24 25.24 0 0 1-1.495.251c-.668.098-1.419.147-2.251.147a6.829 6.829 0 0 1-1.517-.158 3.213 3.213 0 0 1-1.178-.507 2.455 2.455 0 0 1-.761-.904c-.181-.37-.274-.893-.274-1.438 0-.523.104-.855.307-1.215.208-.36.487-.654.838-.883a3.609 3.609 0 0 1 1.227-.49 7.073 7.073 0 0 1 2.202-.103c.257.027.537.076.833.147v-.349c0-.245-.027-.479-.088-.697a1.486 1.486 0 0 0-.307-.583c-.148-.169-.34-.3-.581-.392a2.536 2.536 0 0 0-.915-.163c-.493 0-.942.06-1.353.131-.411.071-.75.153-1.008.245l-.257-1.749c.268-.093.668-.185 1.183-.278a8.89 8.89 0 0 1 1.66-.142l-.001-.001zm.186 7.736c.657 0 1.145-.038 1.484-.104v-2.168a5.097 5.097 0 0 0-1.978-.104c-.241.033-.46.098-.652.191a1.167 1.167 0 0 0-.466.392c-.121.169-.175.267-.175.523 0 .501.175.79.493.981.318.191.75.289 1.293.289h.001zm8.682 1.738c-3.511.016-3.511-2.822-3.511-3.274L89.461.926l2.142-.338v10.003c0 .256 0 1.88 1.375 1.885v1.792h-.001z' fill='%23182359'/><path d='M5.027 11.025c0 .698-.252 1.246-.757 1.644-.505.397-1.201.596-2.089.596-.888 0-1.615-.138-2.181-.414v-1.214c.358.168.739.301 1.141.397.403.097.778.145 1.125.145.508 0 .884-.097 1.125-.29a.945.945 0 0 0 .363-.779.978.978 0 0 0-.333-.747c-.222-.204-.68-.446-1.375-.725-.716-.29-1.221-.621-1.515-.994-.294-.372-.44-.82-.44-1.343 0-.655.233-1.171.698-1.547.466-.376 1.09-.564 1.875-.564.752 0 1.5.165 2.245.494l-.408 1.047c-.698-.294-1.321-.44-1.869-.44-.415 0-.73.09-.945.271a.89.89 0 0 0-.322.717c0 .204.043.379.129.524.086.145.227.282.424.411.197.129.551.299 1.063.51.577.24.999.464 1.268.671.269.208.466.442.591.704.125.261.188.569.188.924l-.001.002zm3.98 2.24c-.924 0-1.646-.269-2.167-.808-.521-.539-.782-1.281-.782-2.226 0-.97.242-1.733.725-2.288.483-.555 1.148-.833 1.993-.833.784 0 1.404.238 1.858.714.455.476.682 1.132.682 1.966v.682H7.357c.018.577.174 1.02.467 1.329.294.31.707.465 1.241.465.351 0 .678-.033.98-.099a5.1 5.1 0 0 0 .975-.33v1.026a3.865 3.865 0 0 1-.935.312 5.723 5.723 0 0 1-1.08.091l.002-.001zm-.231-5.199c-.401 0-.722.127-.964.381s-.386.625-.432 1.112h2.696c-.007-.491-.125-.862-.354-1.115-.229-.252-.544-.379-.945-.379l-.001.001zm7.692 5.092l-.252-.827h-.043c-.286.362-.575.608-.865.739-.29.131-.662.196-1.117.196-.584 0-1.039-.158-1.367-.473-.328-.315-.491-.761-.491-1.337 0-.612.227-1.074.682-1.386.455-.312 1.148-.482 2.079-.51l1.026-.032v-.317c0-.38-.089-.663-.266-.851-.177-.188-.452-.282-.824-.282-.304 0-.596.045-.876.134a6.68 6.68 0 0 0-.806.317l-.408-.902a4.414 4.414 0 0 1 1.058-.384 4.856 4.856 0 0 1 1.085-.132c.756 0 1.326.165 1.711.494.385.329.577.847.577 1.552v4.002h-.902l-.001-.001zm-1.88-.859c.458 0 .826-.128 1.104-.384.278-.256.416-.615.416-1.077v-.516l-.763.032c-.594.021-1.027.121-1.297.298s-.406.448-.406.814c0 .265.079.47.236.615.158.145.394.218.709.218h.001zm7.557-5.189c.254 0 .464.018.628.054l-.124 1.176a2.383 2.383 0 0 0-.559-.064c-.505 0-.914.165-1.227.494-.313.329-.47.757-.47 1.284v3.105h-1.262V7.218h.988l.167 1.047h.064c.197-.354.454-.636.771-.843a1.83 1.83 0 0 1 1.023-.312h.001zm4.125 6.155c-.899 0-1.582-.262-2.049-.787-.467-.525-.701-1.277-.701-2.259 0-.999.244-1.767.733-2.304.489-.537 1.195-.806 2.119-.806.627 0 1.191.116 1.692.349l-.381 1.015c-.534-.208-.974-.312-1.321-.312-1.028 0-1.542.682-1.542 2.046 0 .666.128 1.166.384 1.501.256.335.631.502 1.125.502a3.23 3.23 0 0 0 1.595-.419v1.101a2.53 2.53 0 0 1-.722.285 4.356 4.356 0 0 1-.932.086v.002zm8.277-.107h-1.268V9.506c0-.458-.092-.8-.277-1.026-.184-.226-.477-.338-.878-.338-.53 0-.919.158-1.168.475-.249.317-.373.848-.373 1.593v2.949h-1.262V4.801h1.262v2.122c0 .34-.021.704-.064 1.09h.081a1.76 1.76 0 0 1 .717-.666c.306-.158.663-.236 1.072-.236 1.439 0 2.159.725 2.159 2.175v3.873l-.001-.001zm7.649-6.048c.741 0 1.319.269 1.732.806.414.537.62 1.291.62 2.261 0 .974-.209 1.732-.628 2.275-.419.542-1.001.814-1.746.814-.752 0-1.336-.27-1.751-.811h-.086l-.231.704h-.945V4.801h1.262v1.987l-.021.655-.032.553h.054c.401-.591.992-.886 1.772-.886zm-.328 1.031c-.508 0-.875.149-1.098.448-.224.299-.339.799-.346 1.501v.086c0 .723.115 1.247.344 1.571.229.324.603.486 1.123.486.448 0 .787-.177 1.018-.532.231-.354.346-.867.346-1.536 0-1.35-.462-2.025-1.386-2.025l-.001.001zm3.244-.924h1.375l1.209 3.368c.183.48.304.931.365 1.354h.043c.032-.197.091-.436.177-.717.086-.281.541-1.616 1.364-4.004h1.364l-2.541 6.73c-.462 1.235-1.232 1.853-2.31 1.853-.279 0-.551-.03-.816-.091v-.999c.19.043.406.064.65.064.609 0 1.037-.353 1.284-1.058l.22-.559-2.385-5.941h.001z' fill='%231D3657'/></g></svg>");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{transition:-webkit-transform .45s;transition:transform .45s;transition:transform .45s,-webkit-transform .45s;font-size:0}.tile{transition:all .45s}.details{background:linear-gradient(0deg,rgba(0,0,0,.9),transparent);transition:opacity .45s}.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:1px solid #ccc}.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}.primary-color{color:#0594cb}.bg-primary-color,.hover-bg-primary-color:hover{background-color:#0594cb}.primary-color-dark{color:#0a1922}.bg-primary-color-dark,.hover-bg-primary-color-dark:hover{background-color:#0a1922}.primary-color-light{color:#f9f9f9}.bg-primary-color-light,.hover-bg-primary-color-light:hover{background-color:#f9f9f9}.accent-color{color:#ebb951}.bg-accent-color,.hover-bg-accent-color:hover{background-color:#ebb951}.accent-color-light,.hover-accent-color-light:hover{color:#ff4088}.bg-accent-color-light,.hover-bg-accent-color-light:hover{background-color:#ff4088}.accent-color-dark{color:#33ba91}.bg-accent-color-dark,.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 ol,.prose ul{margin-bottom:2em}.prose ol li,.prose ul li{margin-bottom:.5em}.prose li:hover{background-color:#eee}.prose ::-moz-selection{background:#0594cb;color:#fff}.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}.font_small,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 tc,.prose table td{padding:.75em .5em;text-align:left;border-right:1px solid #eee}.prose table tr:nth-child(2n){background-color:#eee}dl dt{font-weight:700;font-size:1.125rem}dd{margin:.5em 0 2em;padding:0}.code,.highlight pre,code,pre code{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:active,.pagination li.active a:link,.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;transition:opacity .15s ease-in}.facebook,.instagram,.twitter,.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,[data-scrolldir=up] .sticky{position:fixed;top:100px;right:0}}.fill-current{fill:currentColor}.chroma{background-color:#f0f0f0}.chroma .lntd{;vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{;border-spacing:0;padding:0;margin:0;border:0;width:100%;overflow:auto;display:block}.chroma .hl{background-color:#ffc;width:100%}.chroma .hl,.chroma .lnt{display:block}.chroma .ln,.chroma .lnt{;margin-right:.4em;padding:0 .4em}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn{color:#007020;font-weight:700}.chroma .kp,.chroma .kr{color:#007020}.chroma .kr{font-weight:700}.chroma .kt{color:#902000}.chroma .na{color:#4070a0}.chroma .nb{color:#007020}.chroma .nc{color:#0e84b5;font-weight:700}.chroma .no{color:#60add5}.chroma .nd{color:#555;font-weight:700}.chroma .ni{color:#d55537;font-weight:700}.chroma .ne{color:#007020}.chroma .nf{color:#06287e}.chroma .nl{color:#002070;font-weight:700}.chroma .nn{color:#0e84b5;font-weight:700}.chroma .nt{color:#062873;font-weight:700}.chroma .nv{color:#bb60d5}.chroma .dl,.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .sd{color:#4070a0}.chroma .sd{font-style:italic}.chroma .s2,.chroma .se{color:#4070a0}.chroma .se{font-weight:700}.chroma .sh{color:#4070a0}.chroma .si{color:#70a0d0;font-style:italic}.chroma .sx{color:#c65d09}.chroma .sr{color:#235388}.chroma .s1{color:#4070a0}.chroma .ss{color:#517918}.chroma .il,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .mo{color:#40a070}.chroma .o{color:#666}.chroma .ow{color:#007020;font-weight:700}.chroma .c,.chroma .c1,.chroma .ch,.chroma .cm{color:#60a0b0;font-style:italic}.chroma .cs{color:#60a0b0;background-color:#fff0f0}.chroma .cp,.chroma .cpf{color:#007020}.chroma .gd{color:#a00000}.chroma .ge{font-style:italic}.chroma .gr{color:red}.chroma .gh{color:navy;font-weight:700}.chroma .gi{color:#00a000}.chroma .go{color:#888}.chroma .gp{color:#c65d09}.chroma .gp,.chroma .gs,.chroma .gu{font-weight:700}.chroma .gu{color:purple}.chroma .gt{color:#04d}.chroma .w{color:#bbb}.nested-blockquote blockquote{border-left:4px solid #0594cb;padding-left:1em}.mw-90{max-width:90%}