diff --git a/.gitignore b/.gitignore
index fabdaab2c5..3ce9386e01 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@ deploy
 .*.swp
 node_modules
 *.log
+/resources
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3a727a9dfd..5e99320aec 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,19 +1,242 @@
 # Contributing to InfluxData Documentation
 
-We welcome (and encourage!) contributions from the community.
-
-- Sign the [InfluxData Contributor License Agreement (CLA)](https://www.influxdata.com/legal/cla/).
-
-- [Downlaod and install Hugo](http://gohugo.io/overview/installing/).
-- Fork this repository on GitHub.
-- Clone the repo to your local computer.
-
-    ```bash
-    git clone https://github.com/your_username/docs.influxdata.com.git
-    cd docs.influxdata.com/
-    ```
-- Make your changes.
-- Make sure the site compiles locally with `hugo server --watch`.
-- Check it out at [localhost:1313](http://localhost:1313/).
-- Submit a pull request.
-- Earn the respect, admiration, and eternal love of the entire InfluxData community.
+## Sign the InfluxData CLA
+The InfluxData Contributor License Agreement (CLA) is part of the legal framework
+for the open-source ecosystem that protects both you and InfluxData.
+In order to contribute to any InfluxData project, you must first sign the CLA.
+
+[Sign the InfluxData (CLA)](https://www.influxdata.com/legal/cla/)
+
+## Make suggested updates
+
+### Fork and clone InfluxData Documentation Repository
+[Fork this repository](https://help.github.com/articles/fork-a-repo/) and
+[clone it](https://help.github.com/articles/cloning-a-repository/) to your local machine.
+
+### Run the documentation locally (optional)
+To run the documentation locally, follow the instructions provided in the README.
+
+### Make your changes
+Make your suggested changes being sure to follow the [style and formatting guidelines](#style--formatting) outline below.
+
+### Submit a pull request
+Push your changes up to your forked repository, then [create a new pull request](https://help.github.com/articles/creating-a-pull-request/).
+
+## Style & Formatting
+
+### Markdown
+All of our documentation is written in [Markdown](https://en.wikipedia.org/wiki/Markdown).
+
+### Semantic Linefeeds
+Use [semantic linefeeds](http://rhodesmill.org/brandon/2012/one-sentence-per-line/).
+Separating each sentence with a new line makes it easy to parse diffs with the human eye.
+
+**Diff without semantic linefeeds:**
+``` diff
+-Data are taking off. Those data are time series. You need a database that specializes in time series. You should check out InfluxDB.
++Data are taking off. Those data are time series. You need a database that specializes in time series. You need InfluxDB.
+```
+
+**Diff with semantic linefeeds:**
+``` diff
+Data are taking off.
+Those data are time series.
+You need a database that specializes in time series.
+-You should check out InfluxDB.
++You need InfluxDB.
+```
+
+### Page frontmatter
+Every documentation page includes frontmatter which specifies information about the page.
+Frontmatter populates variables in page templates and the site's navigation menu.
+
+```yaml
+title: # Title of the page used in the the page's h1
+seotitle: # Page title used in the html <head> title and used in search engine results
+description: # Page description displayed in search engine results
+menu:
+  v2_0:
+    name: # Article name that only appears in the left nav
+    parent: # Specifies a parent group and nests navigation items
+    weight: # Determines sort order.
+draft: # If true, will not render page on build
+enterprise_all: # If true, specifies the doc as a whole is specific to InfluxDB Enterprise
+enterprise_some: # If true, specifies the doc includes some content specific to InfluxDB Enterprise
+```
+
+#### Title usage
+
+##### `title`
+The `title` frontmatter populates each page's h1 header.
+It shouldn't be overly long, but should set the context for users coming from outside sources.
+
+##### `seotitle`
+The `seotitle` frontmatter populates each page's HTML `title` attribute.
+Search engines use this in search results (not the page's h1) and therefore it should be keyword optimized.
+
+##### `menu > name`
+The `name` attribute under the `menu` frontmatter determines the text used in each page's link in the site navigation.
+It should be short and assume the context of its parent if it has one.
+
+### Article headings
+Use only h2-h6 headings in markdown content.
+h1 headings act as the page title and are populated automatically from the `title` frontmatter.
+h2-h6 headings act as section headings.
+
+### Notes and warnings
+Shortcodes are available for formatting notes and warnings in each article:
+
+```md
+{{% note %}}
+Insert note markdown content here.
+{{% /note %}}
+
+{{% warn %}}
+Insert warning markdown content here.
+{{% /warn %}}
+```
+
+### Enterprise Content
+Many articles are unique to InfluxDB enterprise or at least contain some information specific to InfluxDB Enterprise.
+There are frontmatter options and an enterprise shortcode that help to properly identify this content.
+
+#### All content is Enterprise-specific
+If all content in an article is Enterprise-specific, set the `enterprise_all` frontmatter to `true`.
+
+```yaml
+enterprise_all: true
+```
+
+This will display a message at the top of page indicating that the things discussed are unique to InfluxDB Enterprise.
+
+#### Only some content is Enterprise-specific
+If only some content in the article is enterprise specific, set the `enterprise_some` frontmatter to `true`.
+
+```yaml
+enterprise_some: true
+```
+
+This will display a message at the top of page indicating some things are unique to InfluxDB Enterprise.
+To format Enterprise-specific content, wrap it in the `{{% enterprise %}}` shortcode:
+
+```md
+{{% enterprise %}}
+Insert enterprise-specific markdown content here.
+{{% /enterprise %}}
+```
+
+### Tabbed Content
+Shortcodes are available for creating "tabbed" content (content that is changed by a users' selection).
+Ther following three must be used:
+
+`{{< tabs-wrapper >}}`  
+This shortcode creates a wrapper or container for the tabbed content.
+All UI interactions are limited to the scope of each container.
+If you have more than one "group" of tabbed content in a page, each needs its own `tabs-wrapper`.
+This shortcode must be closed with `{{< /tabs-wrapper >}}`.
+
+**Note**: The `<` and `>` characters used in this shortcode indicate that the contents should be processed as HTML.
+
+`{{% tabs %}}`  
+This shortcode creates a container for buttons that control the display of tabbed content.
+It should contain simple markdown links with anonymous anchors (`#`).
+The link text is used as the button text.
+This shortcode must be closed with `{{% /tabs %}}`.
+
+**Note**: The `%` characters used in this shortcode indicate that the contents should be processed as Markdown.
+
+`{{% tab-content %}}`  
+This shortcode creates a container for a content block.
+Each content block in the tab group needs to be wrapped in this shortcode.
+**The number of `tab-content` blocks must match the number of links provided in the `tabs` shortcode**
+This shortcode must be closed with `{{% /tab-content %}}`.
+
+**Note**: The `%` characters used in this shortcode indicate that the contents should be processed as Markdown.
+
+#### Example tabbed content group
+```md
+{{< tabs-wrapper >}}
+
+{{% tabs %}}
+[Button text for tab 1](#)
+[Button text for tab 2](#)
+{{% /tabs %}}
+
+{{% tab-content %}}
+Markdown content for tab 1.
+{{% /tab-content %}}
+
+{{% tab-content %}}
+Markdown content for tab 2.
+{{% /tab-content %}}
+
+{{< /tabs-wrapper >}}
+```
+
+#### Tabbed code blocks
+Shortcodes are also available for tabbed code blocks primarily used to give users
+the option to choose between different languages and syntax.
+The shortcode structure is the same as above, but the shortcode names are different:
+
+`{{< code-tabs-wrapper >}}`  
+`{{% code-tabs %}}`  
+`{{% code-tab-content %}}`
+
+~~~md
+{{< code-tabs-wrapper >}}
+
+{{% code-tabs %}}
+[Flux](#)
+[InfluxQL](#)
+{{% /code-tabs %}}
+
+{{% code-tab-content %}}
+```js
+data = from(bucket: "telegraf/autogen")
+  |> range(start: -15m)
+  |> filter(fn: (r) =>
+    r._measurement == "mem" AND
+    r._field == "used_percent"
+  )
+```
+{{% /code-tab-content %}}
+
+{{% code-tab-content %}}
+```sql
+SELECT "used_percent"
+FROM "telegraf"."autogen"."mem"
+WHERE time > now() - 15m
+```
+{{% /code-tab-content %}}
+
+{{< /code-tabs-wrapper >}}
+~~~
+
+### High-resolution images
+In many cases, screenshots included in the docs are taken from high-resolution (retina) screens.
+Because of this, the actual pixel dimension is 2x larger than it needs to be and is rendered 2x bigger than it should be.
+The following shortcode automatically sets a fixed width on the image using half of its actual pixel dimension.
+This preserves the detail of the image and renders it at a size where there should be little to no "blur"
+cause by browser image resizing.
+
+```html
+{{< img-hd src="/path/to/image" alt="Alternate title" />}}
+```
+
+###### Notes
+- This should only be used on screenshots takes from high-resolution screens.
+- The `src` should be relative to the `static` directory.
+- Image widths are limited to the width of the article content container and will scale accordingly,
+  even with the `width` explicitly set.
+
+### Truncated content blocks
+In some cases, it may be appropriate to shorten or truncate blocks of content.
+Use cases include long examples of output data or tall images.
+The following shortcode truncates blocks of content and allows users to opt into
+to seeing the full content block.
+
+```md
+{{% truncate %}}
+Truncated markdown content here.
+{{% /truncate %}}
+```
diff --git a/README.md b/README.md
index 8b918dca81..5634c1e929 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,35 @@
 # InfluxDB v2.0 Documentation
-This is the repository represents the InfluxDB v2.x documentation that will be
+This is the repository contains the InfluxDB v2.x documentation that will be
 accessible at [docs.influxdata.com](https://docs.influxdata.com).
 
+## Contributing
+We welcome and encourage community contributions to the InfluxData See our [Contribution guidelines](blob/master/CONTRIBUTING.md) for information
+about contributing to the InfluxData documentation.
+
 ## Run the docs locally
+The InfluxData documentation uses [Hugo](https://gohugo.io/), a static site
+generator built in Go.
+
+### Clone this repository
+[Clone this repository](https://help.github.com/articles/cloning-a-repository/)
+to your local machine.
 
 ### Install Hugo
-Hugo is the static site generator used to build the InfluxData documentation.
-[Download and install Hugo](https://gohugo.io/getting-started/installing/) to run the docs locally.
+See the Hugo documentation for information about how to
+[download and install Hugo](https://gohugo.io/getting-started/installing/).
+
+### Install NodeJS & Asset Pipeline Tools
+This project uses tools written in NodeJS to build and process stylesheets and javascript.
+In order for assets to build correctly, [install NodeJS](https://nodejs.org/en/download/)
+and run the following command to install the necessary tools:
 
-### Fork and clone the docs repository
-[Fork this repository](https://help.github.com/articles/fork-a-repo/) and [clone it](https://help.github.com/articles/cloning-a-repository/) to your local machine.
+```sh
+npm i -g postcss-cli autoprefixer
+```
 
 ### Start the hugo server
-Hugo provides a local development server that generates the HTML pages and serves them
-at `localhost:1313`.
+Hugo provides a local development server that generates the HTML pages, builds
+the static assets, and serves them at `localhost:1313`.
 
 Start the hugo server with:
 
@@ -22,66 +38,3 @@ hugo server
 ```
 
 View the docs at [localhost:1313](http://localhost:1313).
-
-## Contributing
-See our [Contribution guidelines](blob/master/CONTRIBUTING.md) for information
-about contributing to the InfluxData documentation.
-
-## Style & Formatting
-
-### Markdown
-All of our documentation is written in [Markdown](https://en.wikipedia.org/wiki/Markdown).
-
-### Semantic Linefeeds
-Use [semantic linefeeds](http://rhodesmill.org/brandon/2012/one-sentence-per-line/).
-Separating each sentence with a new line makes it easy to parse diffs with the human eye.
-
-**Diff without semantic linefeeds:**
-``` diff
--Data are taking off. Those data are time series. You need a database that specializes in time series. You should check out InfluxDB.
-+Data are taking off. Those data are time series. You need a database that specializes in time series. You need InfluxDB.
-```
-
-**Diff with semantic linefeeds:**
-``` diff
-Data are taking off.
-Those data are time series.
-You need a database that specializes in time series.
--You should check out InfluxDB.
-+You need InfluxDB.
-```
-
-### Page frontmatter
-Every documentation page includes frontmatter which specifies information about the page.
-Frontmatter populates variables in page templates and the site's navigation menu.
-
-```yaml
-title: # Title of the page used in the the page's h1
-seotitle: # Page title used in the html <head> title and used in search engine results
-description: # Page description displayed in search engine results
-menu:
-  v2_0:
-    name: # Article name that only appears in the left nav
-    parent: # Specifies a parent group and nests navigation items
-    weight: # Determines sort order.
-draft: # If true, will not render page on build
-```
-
-#### Title usage
-
-##### `title`
-The `title` frontmatter populates each page's h1 header.
-It shouldn't be overly long, but should set the context for users coming from outside sources.
-
-##### `seotitle`
-The `seotitle` frontmatter populates each page's HTML `title` attribute.
-Search engines use this in search results (not the page's h1) and therefore it should be keyword optimized.
-
-##### `menu > name`
-The `name` attribute under the `menu` frontmatter determines the text used in each page's link in the site navigation.
-It should be short and assume the context of its parent if it has one.
-
-### Article headings
-Use only h2-h6 headings in markdown content.
-h1 headings act as the page title and are populated automatically from the `title` frontmatter.
-h2-h6 headings act as section headings.
diff --git a/assets/js/content-interactions.js b/assets/js/content-interactions.js
new file mode 100644
index 0000000000..e103169672
--- /dev/null
+++ b/assets/js/content-interactions.js
@@ -0,0 +1,81 @@
+///////////////////////////// Make headers linkable /////////////////////////////
+
+$("h2,h3,h4,h5,h6").each(function() {
+  var link = "<a href=\"#" + $(this).attr("id") + "\"></a>"
+  $(this).wrapInner( link );
+  })
+
+///////////////////////////////// Smooth Scroll /////////////////////////////////
+
+var elementWhiteList = [
+  ".tabs p a",
+  ".code-tabs p a",
+  ".truncate-toggle"
+]
+
+$('.article a[href^="#"]:not(' + elementWhiteList + ')').click(function (e) {
+  e.preventDefault();
+
+  var target = this.hash;
+  var $target = $(target);
+
+  $('html, body').stop().animate({
+    'scrollTop': ($target.offset().top)
+  }, 400, 'swing', function () {
+    window.location.hash = target;
+  });
+});
+
+///////////////////////////// Left Nav Interactions /////////////////////////////
+
+$(".children-toggle").click(function(e) {
+	e.preventDefault()
+	$(this).toggleClass('open');
+	$(this).siblings('.children').toggleClass('open');
+})
+
+//////////////////////////// Mobile Contents Toggle ////////////////////////////
+
+$('#contents-toggle-btn').click(function(e) {
+  e.preventDefault();
+  $(this).toggleClass('open');
+  $('#nav-tree').toggleClass('open');
+})
+
+//////////////////////////////// Tabbed Content ////////////////////////////////
+
+function tabbedContent(container, tab, content) {
+
+	// Add the active class to the first tab in each tab group,
+	// in case it wasn't already set in the markup.
+	$(container).each(function () {
+		$(tab, this).removeClass('is-active');
+		$(tab + ':first', this).addClass('is-active');
+	});
+
+	$(tab).on('click', function(e) {
+		e.preventDefault();
+
+		// Make sure the tab being clicked is marked as active, and make the rest inactive.
+		$(this).addClass('is-active').siblings().removeClass('is-active');
+
+		// Render the correct tab content based on the position of the tab being clicked.
+		const activeIndex = $(tab).index(this);
+		$(content).each(function(i) {
+			if (i === activeIndex) {
+				$(this).show();
+				$(this).siblings(content).hide();
+			}
+		});
+	});
+}
+
+tabbedContent('.code-tabs-wrapper', '.code-tabs p a', '.code-tab-content');
+tabbedContent('.tabs-wrapper', '.tabs p a', '.tab-content');
+
+/////////////////////////////// Truncate Content ///////////////////////////////
+
+$(".truncate-toggle").click(function(e) {
+	e.preventDefault()
+	$(this).closest('.truncate').toggleClass('closed');
+})
diff --git a/assets/js/docs-themes.js b/assets/js/docs-themes.js
new file mode 100644
index 0000000000..720517f77f
--- /dev/null
+++ b/assets/js/docs-themes.js
@@ -0,0 +1,39 @@
+/*
+	Copied and pasted this script for CSS swaps w/ cookies from
+	http://www.thesitewizard.com/javascripts/change-style-sheets.shtml
+*/
+
+// *** TO BE CUSTOMISED ***
+var style_cookie_name = "influx-docs-theme" ;
+var style_cookie_duration = 30 ;
+var style_domain = "docs.influxdata.com" ;
+
+// *** END OF CUSTOMISABLE SECTION ***
+// You do not need to customise anything below this line
+
+function switch_style ( css_title )
+{
+// You may use this script on your site free of charge provided
+// you do not remove this notice or the URL below. Script from
+// http://www.thesitewizard.com/javascripts/change-style-sheets.shtml
+  var i, link_tag ;
+  for (i = 0, link_tag = document.getElementsByTagName("link") ;
+    i < link_tag.length ; i++ ) {
+    if ((link_tag[i].rel.indexOf("stylesheet") != -1) &&
+      link_tag[i].title) {
+      link_tag[i].disabled = true ;
+      if (link_tag[i].title == css_title) {
+        link_tag[i].disabled = false ;
+      }
+    }
+    Cookies.set(style_cookie_name, css_title);
+  }
+}
+
+function set_style_from_cookie()
+{
+  var css_title = Cookies.get(style_cookie_name);
+  if (css_title !== undefined) {
+    switch_style(css_title);
+  }
+}
diff --git a/assets/js/jquery-3.3.1.min.js b/assets/js/jquery-3.3.1.min.js
new file mode 100644
index 0000000000..4d9b3a2587
--- /dev/null
+++ b/assets/js/jquery-3.3.1.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
diff --git a/assets/js/js.cookie.js b/assets/js/js.cookie.js
new file mode 100644
index 0000000000..9a0945ed89
--- /dev/null
+++ b/assets/js/js.cookie.js
@@ -0,0 +1,165 @@
+/*!
+ * JavaScript Cookie v2.2.0
+ * https://github.com/js-cookie/js-cookie
+ *
+ * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
+ * Released under the MIT license
+ */
+;(function (factory) {
+	var registeredInModuleLoader = false;
+	if (typeof define === 'function' && define.amd) {
+		define(factory);
+		registeredInModuleLoader = true;
+	}
+	if (typeof exports === 'object') {
+		module.exports = factory();
+		registeredInModuleLoader = true;
+	}
+	if (!registeredInModuleLoader) {
+		var OldCookies = window.Cookies;
+		var api = window.Cookies = factory();
+		api.noConflict = function () {
+			window.Cookies = OldCookies;
+			return api;
+		};
+	}
+}(function () {
+	function extend () {
+		var i = 0;
+		var result = {};
+		for (; i < arguments.length; i++) {
+			var attributes = arguments[ i ];
+			for (var key in attributes) {
+				result[key] = attributes[key];
+			}
+		}
+		return result;
+	}
+
+	function init (converter) {
+		function api (key, value, attributes) {
+			var result;
+			if (typeof document === 'undefined') {
+				return;
+			}
+
+			// Write
+
+			if (arguments.length > 1) {
+				attributes = extend({
+					path: '/'
+				}, api.defaults, attributes);
+
+				if (typeof attributes.expires === 'number') {
+					var expires = new Date();
+					expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);
+					attributes.expires = expires;
+				}
+
+				// We're using "expires" because "max-age" is not supported by IE
+				attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';
+
+				try {
+					result = JSON.stringify(value);
+					if (/^[\{\[]/.test(result)) {
+						value = result;
+					}
+				} catch (e) {}
+
+				if (!converter.write) {
+					value = encodeURIComponent(String(value))
+						.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
+				} else {
+					value = converter.write(value, key);
+				}
+
+				key = encodeURIComponent(String(key));
+				key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);
+				key = key.replace(/[\(\)]/g, escape);
+
+				var stringifiedAttributes = '';
+
+				for (var attributeName in attributes) {
+					if (!attributes[attributeName]) {
+						continue;
+					}
+					stringifiedAttributes += '; ' + attributeName;
+					if (attributes[attributeName] === true) {
+						continue;
+					}
+					stringifiedAttributes += '=' + attributes[attributeName];
+				}
+				return (document.cookie = key + '=' + value + stringifiedAttributes);
+			}
+
+			// Read
+
+			if (!key) {
+				result = {};
+			}
+
+			// To prevent the for loop in the first place assign an empty array
+			// in case there are no cookies at all. Also prevents odd result when
+			// calling "get()"
+			var cookies = document.cookie ? document.cookie.split('; ') : [];
+			var rdecode = /(%[0-9A-Z]{2})+/g;
+			var i = 0;
+
+			for (; i < cookies.length; i++) {
+				var parts = cookies[i].split('=');
+				var cookie = parts.slice(1).join('=');
+
+				if (!this.json && cookie.charAt(0) === '"') {
+					cookie = cookie.slice(1, -1);
+				}
+
+				try {
+					var name = parts[0].replace(rdecode, decodeURIComponent);
+					cookie = converter.read ?
+						converter.read(cookie, name) : converter(cookie, name) ||
+						cookie.replace(rdecode, decodeURIComponent);
+
+					if (this.json) {
+						try {
+							cookie = JSON.parse(cookie);
+						} catch (e) {}
+					}
+
+					if (key === name) {
+						result = cookie;
+						break;
+					}
+
+					if (!key) {
+						result[name] = cookie;
+					}
+				} catch (e) {}
+			}
+
+			return result;
+		}
+
+		api.set = api;
+		api.get = function (key) {
+			return api.call(api, key);
+		};
+		api.getJSON = function () {
+			return api.apply({
+				json: true
+			}, [].slice.call(arguments));
+		};
+		api.defaults = {};
+
+		api.remove = function (key, attributes) {
+			api(key, '', extend(attributes, {
+				expires: -1
+			}));
+		};
+
+		api.withConverter = init;
+
+		return api;
+	}
+
+	return init(function () {});
+}));
diff --git a/assets/js/version-selector.js b/assets/js/version-selector.js
new file mode 100644
index 0000000000..6d3e8d464f
--- /dev/null
+++ b/assets/js/version-selector.js
@@ -0,0 +1,11 @@
+// Expand the menu on click
+$(".version-selector").click(function () {
+  $(this).toggleClass("open")
+})
+
+//  Close the version dropdown by clicking anywhere else
+$(document).click(function(e) {
+  if ( $(e.target).closest('.version-selector').length === 0 ) {
+    $(".version-selector").removeClass("open");
+  }
+});
diff --git a/assets/styles/layouts/_layout-article.scss b/assets/styles/layouts/_layout-article.scss
new file mode 100644
index 0000000000..7ec68f1d72
--- /dev/null
+++ b/assets/styles/layouts/_layout-article.scss
@@ -0,0 +1,584 @@
+.article {
+  flex-grow: 1;
+  background: $article-bg;
+  border-radius: $border-radius 0 0 0;
+  padding: 2rem 4rem 3rem;
+  width: 75%;
+}
+
+.article--content{
+  max-width: 760px;
+  h1,h2,h3,h4,h5,h6 {
+    color: $article-heading;
+    a {
+      color: inherit !important;
+      text-decoration: none;
+      code:after {
+        border: none;
+      }
+    }
+  }
+  h1 {
+    font-family: $klavika;
+    font-weight: 300;
+    font-style: italic;
+    font-size: 2.65rem;
+    margin-bottom: 1em;
+  }
+  h2 {
+    font-size: 2rem;
+    margin: -1.5rem 0 .5rem;
+    padding-top: 1.75rem;
+  }
+  h3 {
+    font-size: 1.65rem;
+    margin: -1.5rem 0 .5rem;
+    padding-top: 1.75rem;
+  }
+  h4 {
+    font-size: 1.25rem;
+    font-style: italic;
+    margin: -1.25rem 0 .5rem;
+    padding-top: 1.75rem;
+  }
+  h5 {
+    font-size: 1rem;
+    margin: -1.25rem 0 .25rem;
+    padding-top: 1.75rem;
+  }
+  h6 {
+    font-size: 1rem;
+    font-style: italic;
+    margin: -1.25rem 0 .25rem;
+    padding-top: 1.75rem;
+  }
+
+  p,li {
+    color: $article-text;
+    line-height: 1.6rem;
+  }
+
+  p {
+    margin: 0 0 1.5em;
+  }
+
+  a {
+    color: $article-link;
+    font-weight: bold;
+    text-decoration: none;
+    &:hover {
+      color: $article-link-hover;
+    }
+    code {
+      font-weight: normal;
+      transition: color .2s;
+      position: relative;
+      &:after {
+        content: "";
+        position: absolute;
+        display: block;
+        top: 0;
+        right: 0;
+        border-style: solid;
+        border-width: 0 .4rem .4rem 0;
+        border-color: transparent rgba($article-code, .35) transparent transparent;
+        transition: border .2s;
+      }
+      &:hover {
+        color: $article-code-hover;
+        &:after {
+          border-color: transparent $article-code-hover transparent transparent;
+        }
+      }
+    }
+  }
+
+  img {
+    max-width: 100%;
+    border-radius: ($border-radius * 1.5);
+    box-shadow: 1px 3px 10px $article-shadow;
+  }
+
+  //////////////////////////////////// Lists ////////////////////////////////////
+
+  ol, ul {
+    padding-left: 1.6rem;
+  }
+
+  ul {
+    list-style-type: disc;
+    li:before{
+      content: "" !important;
+    }
+  }
+
+  ol {
+  list-style: none;
+  counter-reset: item;
+    li {
+      position: relative;
+      counter-increment: item;
+      &:before {
+        content: counter(item) ". ";
+        position: absolute;
+        left: -1.6em;
+        color: $article-bold;
+        font-weight: bold;
+      }
+      ul {
+        counter-reset: item;
+      }
+    }
+  }
+
+  & > ol,
+  & > ul {
+    margin: 1rem 0 1.5rem 0;
+  }
+
+  li {
+    margin: .25rem 0;
+  }
+
+  //////////////////////////////////// Code ////////////////////////////////////
+
+  code,pre {
+    background: $article-code-bg;
+    font-family: 'Inconsolata', monospace;
+  }
+
+  code {
+    padding: .15rem .45rem .25rem;
+    border-radius: $border-radius;
+    color: $article-code;
+  }
+
+  pre {
+    margin: 2rem 0 3rem;
+    padding: 1.5rem 1.5rem 1.25rem;
+    border-radius: $border-radius;
+    overflow-x: scroll;
+    overflow-y: hidden;
+    code { padding: 0; }
+  }
+
+  //////////////////////////////////// Tables ////////////////////////////////////
+
+  table {
+    display: inline-block;
+    margin: 1rem 0 3rem;
+    border-spacing: 0;
+    color: $article-text;
+    max-width: 100%;
+    overflow-x: auto;
+    overflow-y: hidden;
+    box-shadow: 1px 3px 10px $article-shadow;
+    border-radius: ($border-radius * 1.5);
+
+    th, td {
+      padding: .85rem 1.25rem;
+    }
+    thead {
+      background: linear-gradient(to right, $article-table-header-left, $article-table-header-right);
+      background-attachment: fixed;
+    }
+
+    th  {
+      color: $g20-white;
+      &:first-child {
+        border-radius: ($border-radius * 1.5) 0 0 0;
+      }
+      &:last-child {
+        border-radius: 0 ($border-radius * 1.5) 0 0;
+      }
+    }
+
+    td {
+      font-size: .95rem;
+      line-height: 1.5em;
+    }
+
+    tr{
+      &:nth-child(even) {
+        background: $article-table-row-alt;
+      }
+      &:last-child {
+        td {
+          &:first-child { border-radius: 0 0 0 ($border-radius * 1.5); }
+          &:last-child { border-radius: 0 0 ($border-radius * 1.5) 0; }
+        }
+
+      }
+    }
+  }
+
+  ////////////////// Blockquotes, Notes, Warnings, & Messages //////////////////
+
+  blockquote,
+  .note,
+  .warn,
+  #enterprise-msg {
+    padding: 1.65rem 2rem .1rem 2rem;
+    margin: 1rem 0 2rem;
+    border-width: 0 0 0 4px;
+    border-style: solid;
+    border-radius: 0 $border-radius $border-radius 0;
+  }
+
+  blockquote {
+    border-color: rgba($article-text, .25);
+    p, li {
+      font-size: 1.15rem;
+      font-style: italic;
+      color: rgba($article-text, .5);
+    }
+  }
+
+  .note {
+    border-color: $article-note-base;
+    background: rgba($article-note-base, .08);
+    h1,h2,h3,h4,h5,h6 {
+      color: $article-note-heading;
+    }
+    p, li {
+      color: $article-note-text;
+    }
+    a {
+      color: $article-note-link;
+      code:after {
+        border-color: transparent rgba($article-note-code, .35) transparent transparent;
+      }
+      &:hover {
+        color: $article-note-link-hover;
+        code:after {
+          border-color: transparent $article-note-link-hover transparent transparent;
+        }
+      }
+    }
+    ol li:before {
+      color: $article-note-text;
+    }
+    code, pre{
+      color: $article-note-code;
+      background: $article-note-code-bg;
+    }
+    img {
+      box-shadow: 1px 3px 10px $article-note-shadow;
+    }
+    table{
+      color: $article-note-text;
+      box-shadow: 1px 3px 10px $article-note-shadow;
+      thead{
+        background: $article-note-table-header;
+      }
+      tr:nth-child(even) td {
+        background: $article-note-table-row-alt;
+      }
+    }
+    blockquote {
+      border-color: rgba($article-note-text, .25);
+      p { color: rgba($article-note-text, .6); }
+    }
+  }
+
+  .warn {
+    border-color: $article-warn-base;
+    background: rgba($article-warn-base, .08);
+    h1,h2,h3,h4,h5,h6 {
+      color: $article-warn-heading;
+    }
+    p, li {
+      color: $article-warn-text;
+    }
+    a {
+      color: $article-warn-link;
+      code:after {
+        border-color: transparent rgba($article-warn-code, .35) transparent transparent;
+      }
+      &:hover {
+        color: $article-warn-link-hover;
+        code:after {
+          border-color: transparent $article-warn-link-hover transparent transparent;
+        }
+      }
+    }
+    ol li:before {
+      color: $article-warn-text;
+    }
+    code, pre{
+      color: $article-warn-code;
+      background: $article-warn-code-bg;
+    }
+    img {
+      box-shadow: 1px 3px 10px $article-warn-shadow;
+    }
+    table{
+      color: $article-warn-text;
+      box-shadow: 1px 3px 10px $article-warn-shadow;
+      thead{
+        background: $article-warn-table-header;
+      }
+      tr:nth-child(even) td {
+        background: $article-warn-table-row-alt;
+      }
+    }
+    blockquote {
+      border-color: rgba($article-warn-text, .25);
+      p { color: rgba($article-warn-text, .6); }
+    }
+  }
+
+  ///////////////////////////////// Enterprise /////////////////////////////////
+
+  #enterprise-msg {
+    border-color: $article-enterprise-base;
+    background: rgba($article-enterprise-base, .15);
+    font-style: italic;
+    display: flex;
+    p {
+      color: $article-enterprise-text;
+    }
+    a {
+      color: $article-enterprise-link;
+      &:hover {
+        color: $article-enterprise-link-hover;
+      }
+    }
+    div:first-child { margin-right: 1.25rem; }
+  }
+
+  .enterprise-flag {
+    padding: .2rem .4rem;
+    background: $article-enterprise-base;
+    font-size: .75rem;
+    font-style: normal;
+    font-weight: bold;
+    color: $g20-white;
+    border-radius: $border-radius;
+    vertical-align: text-bottom;
+    &:before {
+      content: "E";
+    }
+  }
+
+  .enterprise {
+    position: relative;
+    padding: 0 0 .01rem 2rem;
+    margin-left: -2rem;
+    border-left: 2px solid $article-enterprise-base;
+
+    .enterprise-flag {
+      position: absolute;
+      top: -.15rem;
+      left: -.68rem;
+      transform: scale(.8);
+      transition: all .2s;
+      &:hover {
+        transform: scale(1);
+        color: $g20-white;
+      }
+    }
+  }
+
+  /////////////////////////////// Tabbed Content ///////////////////////////////
+
+  .tabs-wrapper {
+    margin: 2.5rem 0 .5rem;
+  }
+
+  .code-tabs-wrapper {
+    margin: 1.5rem 0 .5rem;
+  }
+
+  .tabs, .code-tabs {
+    p {
+      display: flex;
+      flex-wrap: wrap;
+    }
+    a {
+      flex-grow: 1;
+      margin: 2px;
+      font-size: 0.875rem;
+      color: $article-tab-text;
+      padding: .35rem .75rem;
+      display: inline-block;
+      text-align: center;
+      border-radius: $border-radius;
+      background-color: $article-tab-bg;
+      transition: background-color .2s, color .2s;
+
+      &:hover {
+        color: $article-tab-active-text;
+        background: $article-tab-active-bg;
+      }
+      &.is-active {
+        color: $article-tab-active-text;
+        background: $article-tab-active-bg;
+      }
+    }
+  }
+
+  .tab-content, .code-tabs-content {
+    margin: .75rem 0 3rem;
+    width: 100%;
+
+    & > * {
+      width: 100% !important;
+      margin-left: 0 !important;
+    }
+  }
+
+  .tab-content:not(:first-of-type),
+  .code-tab-content:not(:first-of-type) {
+    display: none;
+  }
+
+  .code-tabs-wrapper {
+    .code-tabs {
+      p {
+        margin: 0;
+        text-align: right;
+        display: block;
+      }
+      a {
+        padding: .1rem .75rem;
+        margin: 0;
+        border-radius: $border-radius $border-radius 0 0;
+        display: inline-block;
+        background: $article-tab-code-bg;
+        color: $article-tab-code-text;
+        &:hover {
+         background: $article-tab-code-bg-hover;
+         color: $article-tab-code-text-hover;
+        }
+        &.is-active {
+         background-color: $article-code-bg;
+         color: $article-tab-code-active-text;
+        }
+      }
+    }
+    .code-tab-content {
+      padding: 0;
+      pre {
+        margin: 0 0 3rem;
+        border-radius: $border-radius 0 $border-radius $border-radius;
+      }
+    }
+  }
+
+  /////////////////////////// Truncated Content Blocks ///////////////////////////
+
+  .truncate {
+  	position: relative;
+  	margin-bottom: 3.5rem;
+
+  	.truncate-bottom {
+  		position: absolute;
+  		bottom: -30px;
+  		width: 100%;
+  		z-index: 100%;
+  		height: auto;
+  	}
+
+  	a.truncate-toggle {
+  		display: block;
+  		width: 100px;
+  		margin: 0 auto;
+  		color: $article-text;
+  		background: $article-bg;
+  		padding: .45rem;
+  		text-align: center;
+  		font-size: .75rem;
+  		text-transform: uppercase;
+  		border-radius: $border-radius;
+  		transition: color .2s;
+  		&:before{
+  			content: "Show Less";
+  		}
+  		&:hover {
+  			color: $article-link;
+  		}
+  	}
+  	&.closed {
+  		min-height: 200px;
+  		max-height: 25vh;
+  		overflow: hidden;
+
+  		.truncate-bottom {
+  			bottom: 0;
+  			background-image: linear-gradient(to bottom, rgba($article-bg, 0), rgba($article-bg, 1));
+  			height: 100px;
+  		}
+
+  		a.truncate-toggle {
+  			margin-top: 75px;
+  			&:before {
+  				content: "Show More";
+  			}
+  		}
+    }
+	}
+
+  ///////////////////////////////// Scroll Bars //////////////////////////////////
+
+  pre   { @include scrollbar($article-code-bg, $article-code-scrollbar); }
+  table { @include scrollbar($article-table-row-alt, $article-code-scrollbar);}
+
+  .note {
+    pre   { @include scrollbar($article-note-code-bg, $article-note-code-scrollbar); }
+    table { @include scrollbar($article-note-table-row-alt, $article-note-code-scrollbar); }
+  }
+  .warn {
+    pre   { @include scrollbar($article-warn-code-bg, $article-warn-code-scrollbar); }
+    table { @include scrollbar($article-warn-table-row-alt, $article-warn-code-scrollbar); }
+  }
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////// MEDIA QUERIES ////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+@include media(small) {
+  .article {
+    padding: 1.5rem 1.5rem 3rem;
+
+    h1 { margin: .35rem 0 2rem; font-size: 2.4rem; }
+    h2 { font-size: 1.9rem; }
+    h3 { font-size: 1.55rem; }
+    h4 { font-size: 1.3rem; }
+
+    pre {
+      padding: 1.2em;
+    }
+
+    blockquote,
+    .note,
+    .warn,
+    #enterprise-msg {
+      padding: 1.35rem 1.25rem .1rem 1.25rem;
+      margin: .5rem 0 1rem;
+    }
+
+    .enterprise {
+      padding: 0 0 .01rem .85rem;
+      margin-left: -.85rem;
+
+      .enterprise-flag {
+        left: -.25rem;
+      }
+    }
+
+  }
+}
+
+@include media(medium) {
+  .article { width: 100%; }
+}
+
+@media (min-width: 801px) and (max-width: 1200px) {
+  .article {
+    width: 70%;
+  }
+}
diff --git a/assets/styles/layouts/_layout-global.scss b/assets/styles/layouts/_layout-global.scss
new file mode 100644
index 0000000000..07a3ad5c02
--- /dev/null
+++ b/assets/styles/layouts/_layout-global.scss
@@ -0,0 +1,76 @@
+@font-face {
+    font-family: 'Klavika-Light';
+    src: url(../fonts/KlavikaLight-ItalicTF.otf);
+    font-weight: 200;
+    font-style: italic;
+}
+@font-face {
+    font-family: 'Klavika-Bold';
+    src: url(../fonts/KlavikaBoldBoldItalic.otf);
+    font-weight: 700;
+    font-style: italic;
+}
+
+$klavika: 'Klavika-Light', 'Titillium Web', 'Roboto', sans-serif;
+
+html {
+  height: 100%;
+}
+
+body {
+  min-height: 100%;
+  font-family: Roboto, sans-serif;
+  background: $body-bg;
+}
+
+* {
+	box-sizing: border-box;
+}
+
+a {
+  transition: all .2s;
+}
+
+.page-wrapper {
+  display: flex;
+  flex-grow: 1;
+}
+
+///  Styles for the placeholder homepage only viewalbe with running locally ///
+.home-placeholder {
+  max-width: 480px;
+  padding: 0 1.5rem;
+  margin: 20vh auto 0;
+  color: $article-text;
+  text-align:center;
+  font-style:italic;
+
+  .welcome {
+    text-align:center;
+    font-weight: bold;
+    color: $article-heading;
+    font-size: 1.1rem;
+  }
+  p {
+    margin-top: 1rem;
+    line-height: 1.25rem;
+  }
+  a {
+    color: $article-link;
+    font-weight: bold;
+    text-decoration: none;
+    &:hover {
+      color: $article-link-hover;
+    }
+  }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////// MEDIA QUERIES ////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+@include media(medium) {
+  .page-wrapper {
+    flex-direction: column;
+  }
+}
diff --git a/assets/styles/layouts/_layout-sidebar.scss b/assets/styles/layouts/_layout-sidebar.scss
new file mode 100644
index 0000000000..42af8f3a8a
--- /dev/null
+++ b/assets/styles/layouts/_layout-sidebar.scss
@@ -0,0 +1,243 @@
+.sidebar {
+  display: block;
+  flex-grow: 1;
+  padding: 0 1em;
+  width: 25%;
+
+  &--search {
+    position: relative;
+    flex-grow: 1;
+    &:after {
+      content: '\e905';
+      display: block;
+      font-family: 'icomoon';
+      position: absolute;
+      top: .15rem;
+      right: .25rem;
+      color: $article-text;
+      font-size: 1.75rem;
+    }
+
+    input {
+      background: $article-bg;
+      border-radius: $border-radius;
+      border: 1px solid $sidebar-search-border;
+      padding: .5em 2.15rem .5rem .5rem;
+      width: 100%;
+      color: $article-text;
+      transition-property: border, box-shadow;
+      transition-duration: .2s;
+      &:focus {
+        outline: none;
+        border: 1px solid $sidebar-search-highlight;
+        box-shadow: 0px 0px 7px rgba($sidebar-search-highlight, .65);
+        border-radius: $border-radius;
+      }
+      &::placeholder {
+        font-family: 'Roboto';
+        font-weight: 500;
+        color: rgba($article-text, .35);
+      }
+    }
+  }
+
+  .search-nav-toggle {
+    display: flex;
+    width: 100%;
+    margin-bottom: .7rem;
+  }
+
+  #contents-toggle-btn {
+    display: block;
+    margin: .35rem .05rem .25rem 1.2rem;
+    width: 20px;
+    height: 20px;
+
+    .toggle-hamburger {
+
+      $line-height: 2px;
+      $line-width: 20px;
+
+      display: block;
+      position: relative;
+      margin-top: .65rem;
+      background: rgba($topnav-link, .5);
+      width: $line-width;
+      height: $line-height;
+      transition: all .3s;
+      transform: rotate(0deg);
+
+      &:before, &:after {
+        content: "";
+        display: block;
+        position: absolute;
+        width: $line-width;
+        height: $line-height;
+        border-radius: 1px;
+        background: rgba($topnav-link, .5);
+        transform: rotate(0deg);
+        transition: all .3s;
+      }
+
+      &:before {
+        top: -6px;
+      }
+      &:after {
+        top: 6px;
+      }
+    }
+
+    &:hover {
+      .toggle-hamburger {
+        background: rgba($topnav-link, 1);
+
+        &:before, &:after {
+          background: rgba($topnav-link, 1);
+        }
+      }
+    }
+
+    &.open .toggle-hamburger {
+      background: $body-bg;
+      transform: rotate(90deg);
+      &:before { transform: rotate(-135deg); top: 0; }
+      &:after { transform: rotate(-45deg); top: 0; }
+    }
+
+  }
+
+  #nav-tree {
+    list-style: none;
+    padding-left: 1.5rem;
+    margin-bottom: 1rem;
+
+    ul {
+      list-style: none;
+      padding-left: 2rem;
+      border-left: 2px solid $nav-border;
+    }
+
+    li {
+      margin-top: .5rem;
+      position: relative;
+      &:before {
+        content: "";
+        width: 4px;
+        height: 4px;
+        top: .45em;
+        left: -1em;
+        display: block;
+        position: absolute;
+        background: $nav-border;
+      }
+      ul {
+        margin-left: -.95em;
+      }
+    }
+
+    a {
+      text-decoration: none;
+      font-weight: 600;
+      display: inline-block;
+    }
+    .nav-category > a {
+      color: $nav-category;
+      font-size: 1.1rem;
+      &:hover {
+        color: $nav-category-hover;
+      }
+    }
+    .nav-item > a {
+      color: $nav-item;
+      &:hover {
+        color: $nav-item-hover;
+      }
+    }
+
+    .children {
+      height: 0;
+      overflow: hidden;
+      &.open {
+        height: auto;
+      }
+    }
+
+    .children-toggle {
+      width: 1rem;
+      height: 1rem;
+      position: absolute;
+      top: .05rem;
+      left: -1.4rem;
+      display: block;
+      background: $nav-border;
+      border-radius: 50%;
+
+      &:before, &:after {
+        content: "";
+        position: absolute;
+        display: block;
+        background: $nav-toggle;
+        transition: all .3s;
+      }
+      &:before {
+        top: 4px;
+        left: 7px;
+        height: 8px;
+        width: 2px;
+      }
+      &:after {
+        top: 7px;
+        left: 4px;
+        height: 2px;
+        width: 8px;
+      }
+
+      &:hover {
+        background: $nav-toggle-bg-hover;
+        &:before,
+        &:after {
+          background: $nav-toggle-hover;
+        }
+      }
+
+      &.open {
+        &:before { transform: rotate(90deg); }
+        &:after { transform: rotate(180deg); }
+      }
+    }
+  }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////// MEDIA QUERIES ////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+@include media(medium) {
+  .sidebar {
+    width: 100%;
+
+    #nav-tree {
+      height: 0;
+      overflow: hidden;
+      margin: 0;
+
+      &.open {
+        height: auto;
+        overflow: auto;
+        margin-bottom: 2rem;
+      }
+    }
+  }
+}
+
+@include media(large_min) {
+  .sidebar #contents-toggle-btn {
+    display: none;
+  }
+}
+
+@media (min-width: 801px) and (max-width: 1200px) {
+  .sidebar {
+    width: 30%;
+  }
+}
diff --git a/assets/styles/layouts/_layout-topnav.scss b/assets/styles/layouts/_layout-topnav.scss
new file mode 100644
index 0000000000..07d866a581
--- /dev/null
+++ b/assets/styles/layouts/_layout-topnav.scss
@@ -0,0 +1,143 @@
+.topnav {
+  display: flex;
+  padding: .75rem .75rem .65rem;
+  justify-content: space-between;
+
+  &--left {  }
+  &--right {  }
+
+  .influx-home {
+    font-family: 'icomoon';
+    font-size: 1.9rem;
+    color: $topnav-link;
+    text-decoration: none;
+    vertical-align: middle;
+    &:hover {
+      color: $topnav-link-hover;
+    }
+    .icon-influx-logotype {
+      margin-left: -.8rem;
+    }
+  }
+
+  .divider {
+    height: 100%; border-left: 1px solid rgba($topnav-link, .5);
+    margin-right: 1rem;
+  }
+
+  .docs-home {
+    display: inline-block;
+    vertical-align: text-top;
+    font-family: $klavika;
+    font-style: italic;
+    font-weight: 300;
+    font-size: 1.2rem;
+    color: $topnav-link;
+    text-decoration: none;
+    &:hover {
+      color: $topnav-link-hover;
+    }
+  }
+
+  .version-selector {
+    display: inline-block;
+    position: absolute;
+    z-index: 100;
+    right: 3.5rem;
+    color: $g20-white;
+    height: 2rem;
+    background: $version-selector-top;
+    font-weight: 700;
+    border-radius: $border-radius;
+    overflow: hidden;
+    cursor: pointer;
+
+    .selected {
+      padding: 0 1.5rem 0 .75rem;
+      line-height: 0;
+    }
+
+    &:after {
+      content: '';
+      position: absolute;
+      top: .75rem;
+      right: .5rem;
+      width: 0;
+      height: 0;
+      border-style: solid;
+      border-width: 7px 5px 0 5px;
+      border-color: $g20-white transparent transparent transparent;
+      transition: all .4s;
+    }
+
+    &.open {
+      height: auto;
+      background: linear-gradient($version-selector-top, $version-selector-bottom);
+      &:after {
+        transform: rotate(180deg);
+      }
+    }
+
+    ul.version-list {
+      padding: 0;
+      margin: 0;
+      list-style: none;
+    }
+    a {
+      display: block;
+      text-decoration: none;
+      color: $g20-white;
+      padding: .5rem 1.5rem .5rem .75rem;
+      background: rgba($g20-white, 0);
+      &:hover {
+        background: rgba($g20-white, .2)
+      }
+      &:last-child {
+        border-radius: 0 0 $border-radius $border-radius;
+        position: relative;
+      }
+      &.legacy {
+        position: relative;
+        &:after {
+          content: "\e911";
+          font-family: "icomoon";
+          position: absolute;
+          opacity: .4;
+          margin-left: .25rem;
+        }
+      }
+    }
+  }
+
+  .theme-switcher {
+    display: inline-block;
+    padding: 0;
+    font-size: 1.8rem;
+    color: rgba($topnav-link, .5);
+    background: none;
+    height: 30px;
+    width: 30px;
+    margin-top: 2px;
+    border: none;
+    transition: color .2s;
+    appearance: none;
+    overflow: visible;
+    &:focus {
+      outline: none;
+    }
+    &:hover {
+      color: rgba($topnav-link, 1);
+      cursor: pointer;
+    }
+    &#theme-switch-dark { display: $theme-switch-dark; }
+    &#theme-switch-light { display: $theme-switch-light; }
+  }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////// MEDIA QUERIES ////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+
+@include media(small) {
+  .icon-influx-logotype { display: none; }
+}
diff --git a/assets/styles/layouts/_syntax-highlighting.scss b/assets/styles/layouts/_syntax-highlighting.scss
new file mode 100644
index 0000000000..c8ecaf3a5f
--- /dev/null
+++ b/assets/styles/layouts/_syntax-highlighting.scss
@@ -0,0 +1,222 @@
+code[class*="language-"],
+pre[class*="language-"] {
+	/*text-shadow: 0 1px #101419;*/
+	direction: ltr;
+	text-align: left;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+
+	-moz-tab-size: 1;
+	-o-tab-size: 1;
+	tab-size: 1;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
+	background: rgba($article-code-select, .25);
+}
+
+pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
+code[class*="language-"]::selection, code[class*="language-"] ::selection {
+	background: rgba($article-code-select, .25);
+}
+
+@media print {
+	code[class*="language-"],
+	pre[class*="language-"] {
+		text-shadow: none;
+	}
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	overflow: auto;
+}
+
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+	white-space: normal;
+}
+
+.highlight  { color: $article-code;
+
+  line-height: 1.25rem;
+
+	// COLORS
+
+	.gh, 		/* Generic.Heading */
+	.go, 		/* Generic.Output */
+	.na, 		/* Name.Attribute */
+	.nt, 		/* Name.Tag */
+	.nv, 		/* Name.Variable */
+	.ow 		/* Operator.Word */
+					{ color: $article-code }
+
+	.c, 		/* Comment */
+	.ch, 		/* Comment.Hashbang */
+	.cm, 		/* Comment.Multiline */
+	.cpf, 	/* Comment.PreprocFile */
+	.c1, 		/* Comment.Single */
+	.cs,		/* Comment.Special */
+	.w  		/* Text.Whitespace */
+					{ color: $article-code-accent1; }
+
+	.gi 		/* Generic.Inserted */
+					{ background-color: $article-code-accent1; }
+
+	.k, 		/* Keyword */
+	.kc, 		/* Keyword.Constant */
+	.kd, 		/* Keyword.Declaration */
+	.kn, 		/* Keyword.Namespace */
+	.kp, 		/* Keyword.Pseudo */
+	.kr, 		/* Keyword.Reserved */
+	.nn 		/* Name.Namespace */
+					{ color: $article-code-accent2; }
+
+	.bp, 		/* Name.Builtin.Pseudo */
+	.cp, 		/* Comment.Preproc */
+	.dl, 		/* Literal.String.Delimiter */
+	.gt, 		/* Generic.Traceback */
+	.gu, 		/* Generic.Subheading */
+	.kt, 		/* Keyword.Type */
+	.nb, 		/* Name.Builtin */
+	.nc, 		/* Name.Class */
+	.no, 		/* Name.Constant */
+	.sa, 		/* Literal.String.Affix */
+	.sb, 		/* Literal.String.Backtick */
+	.sc, 		/* Literal.String.Char */
+	.sd, 		/* Literal.String.Doc */
+	.se, 		/* Literal.String.Escape */
+	.sh, 		/* Literal.String.Heredoc */
+	.sx, 		/* Literal.String.Other */
+	.sr, 		/* Literal.String.Regex */
+	.s1, 		/* Literal.String.Single */
+	.s2 		/* Literal.String.Double */
+					{ color: $article-code-accent3 }
+
+	.err,   /* Error */
+	.fm, 		/* Name.Function.Magic */
+	.gr, 		/* Generic.Error */
+	.gd, 		/* Generic.Deleted */
+	.nd, 		/* Name.Decorator */
+	.ne, 		/* Name.Exception */
+	.nf, 		/* Name.Function */
+	.nl, 		/* Name.Label */
+	.si 		/* Literal.String.Interpol */
+					{ color: $article-code-accent4 }
+
+	.m,  		/* Literal.Number */
+	.ni, 		/* Name.Entity */
+	.mb, 		/* Literal.Number.Bin */
+	.mf, 		/* Literal.Number.Float */
+	.mh, 		/* Literal.Number.Hex */
+	.mi, 		/* Literal.Number.Integer */
+	.mo, 		/* Literal.Number.Oct */
+	.vc, 		/* Name.Variable.Class */
+	.vg, 		/* Name.Variable.Global */
+	.vi, 		/* Name.Variable.Instance */
+	.vm, 		/* Name.Variable.Magic */
+	.il 		/* Literal.Number.Integer.Long */
+					{ color: $article-code-accent5 }
+
+	.gp, 		/* Generic.Prompt */
+	.o  		/* Operator */
+					{ color: $article-code-accent6 }
+
+	.ss 		/* Literal.String.Symbol */
+					{ color: $article-code-accent7 }
+
+	// FONT STYLES
+
+	.cs 		/* Comment.Special */
+	.gh, 		/* Generic.Heading */
+	.gu, 		/* Generic.Subheading */
+	.gp, 		/* Generic.Prompt */
+	.gs, 		/* Generic.Strong */
+	.k, 		/* Keyword */
+	.kc, 		/* Keyword.Constant */
+	.kd, 		/* Keyword.Declaration */
+	.kn, 		/* Keyword.Namespace */
+	.kp, 		/* Keyword.Pseudo */
+	.kr, 		/* Keyword.Reserved */
+	.kt, 		/* Keyword.Type */
+	.nc, 		/* Name.Class */
+	.ne, 		/* Name.Exception */
+	.ni, 		/* Name.Entity */
+	.nn 		/* Name.Namespace */
+	.nt, 		/* Name.Tag */
+	.ow, 		/* Operator.Word */
+	.se 		/* Literal.String.Escape */
+					{ font-weight: bold }
+
+	.c, 		/* Comment */
+	.ch, 		/* Comment.Hashbang */
+	.cm, 		/* Comment.Multiline */
+	.cpf, 	/* Comment.PreprocFile */
+	.c1, 		/* Comment.Single */
+	.cs,		/* Comment.Special */
+	.ge, 		/* Generic.Emph */
+	.sd ,		/* Literal.String.Doc */
+	.w  		/* Text.Whitespace */
+					{ font-style: italic }
+}
+
+.note {
+	.highlight  {
+		color: $article-note-code;
+
+		.gh,.go,.na,.nt,.nv,.ow
+			{ color: $article-note-code }
+		.c,.ch,.cm,.cpf,.c1, .cs,.w
+			{ color: $article-note-code-accent1; }
+		.gi
+			{ background-color: $article-note-code-accent1; }
+		.k,.kc,.kd,.kn,.kp,.kr,.nn
+			{ color: $article-note-code-accent2; }
+		.bp,.cp,.dl,.gt,.gu,.kt,.nb,.nc,.no,.sa,.sb,.sc,.sd,.se,.sh,.sx,.sr,.s1,.s2
+			{	color: $article-note-code-accent3 }
+		.err,.fm,.gr,.gd,.nd,.ne,.nf,.nl,.si
+			{ color: $article-note-code-accent4 }
+		.m,.ni,.mb,.mf,.mh,.mi,.mo,.vc,.vg,.vi,.vm,.il
+			{	color: $article-note-code-accent5 }
+		.gp,.o
+			{ color: $article-note-code-accent6	}
+		.ss
+			{ color: $article-note-code-accent7 }
+	}
+}
+
+.warn {
+	.highlight  {
+		color: $article-warn-code;
+
+		.gh,.go,.na,.nt,.nv,.ow
+			{ color: $article-warn-code }
+		.c,.ch,.cm,.cpf,.c1, .cs,.w
+			{ color: $article-warn-code-accent1; }
+		.gi
+			{ background-color: $article-warn-code-accent1; }
+		.k,.kc,.kd,.kn,.kp,.kr,.nn
+			{ color: $article-warn-code-accent2; }
+		.bp,.cp,.dl,.gt,.gu,.kt,.nb,.nc,.no,.sa,.sb,.sc,.sd,.se,.sh,.sx,.sr,.s1,.s2
+			{	color: $article-warn-code-accent3 }
+		.err,.fm,.gr,.gd,.nd,.ne,.nf,.nl,.si
+			{ color: $article-warn-code-accent4 }
+		.m,.ni,.mb,.mf,.mh,.mi,.mo,.vc,.vg,.vi,.vm,.il
+			{	color: $article-warn-code-accent5 }
+		.gp,.o
+			{ color: $article-warn-code-accent6	}
+		.ss
+			{ color: $article-warn-code-accent7 }
+	}
+}
diff --git a/assets/styles/normalize/_import-now.scss b/assets/styles/normalize/_import-now.scss
new file mode 100755
index 0000000000..edbdfff053
--- /dev/null
+++ b/assets/styles/normalize/_import-now.scss
@@ -0,0 +1,11 @@
+// Import Now
+//
+// If you import this module directly, it will immediately output all the CSS
+// needed to normalize default HTML elements across all browsers.
+//
+// ```
+// @import "normalize/import-now";
+// ```
+
+@import 'normalize';
+@include normalize();
diff --git a/assets/styles/normalize/_normalize-mixin.scss b/assets/styles/normalize/_normalize-mixin.scss
new file mode 100755
index 0000000000..a366f7b9e5
--- /dev/null
+++ b/assets/styles/normalize/_normalize-mixin.scss
@@ -0,0 +1,666 @@
+// Helper function for the normalize() mixin.
+@function _normalize-include($section, $exclude: null) {
+  // Initialize the global variables needed by this function.
+  @if not global_variable_exists(_normalize-include) {
+    $_normalize-include: () !global;
+    $_normalize-exclude: () !global;
+  }
+  // Since we are given 2 parameters, set the global variables.
+  @if $exclude != null {
+    $include: $section;
+    // Sass doesn't have static variables, so the work-around is to stuff these
+    // values into global variables so we can access them in future calls.
+    $_normalize-include: if(type-of($include) == 'list', $include, ($include)) !global;
+    $_normalize-exclude: if(type-of($exclude) == 'list', $exclude, ($exclude)) !global;
+    @return true;
+  }
+
+  // Check if $section is in the $include list.
+  @if index($_normalize-include, $section) {
+    @return true;
+  }
+  // If $include is set to (all), make sure $section is not in $exclude.
+  @else if not index($_normalize-exclude, $section) and index($_normalize-include, all) {
+    @return true;
+  }
+  @return false;
+}
+
+@mixin normalize($include: (all), $exclude: ()) {
+  // Initialize the helper function by passing it this mixin's parameters.
+  $init: _normalize-include($include, $exclude);
+
+  // If we've customized any font variables, we'll need extra properties.
+  @if $base-line-height != 24px
+    or $base-unit != 'em'
+    or $h2-font-size != 1.5  * $base-font-size
+    or $h3-font-size != 1.17 * $base-font-size
+    or $h4-font-size != 1    * $base-font-size
+    or $h5-font-size != 0.83 * $base-font-size
+    or $h6-font-size != 0.67 * $base-font-size {
+    $normalize-vertical-rhythm: true !global;
+  }
+
+  /*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */
+
+  @if _normalize-include(document) {
+    /* Document
+       ========================================================================== */
+
+    /**
+     * 1. Correct the line height in all browsers.
+     * 2. Prevent adjustments of font size after orientation changes in
+     *    IE on Windows Phone and in iOS.
+     */
+
+    html {
+      @if $base-font-family {
+        /* Change the default font family in all browsers (opinionated). */
+        font-family: $base-font-family;
+      }
+      @if $base-font-size != 16px or $normalize-vertical-rhythm {
+        // Correct old browser bug that prevented accessible resizing of text
+        // when root font-size is set with px or em.
+        font-size: ($base-font-size / 16px) * 100%;
+      }
+      @if $normalize-vertical-rhythm {
+        line-height: ($base-line-height / $base-font-size) * 1em; /* 1 */
+      }
+      @else {
+        line-height: 1.15; /* 1 */
+      }
+      -ms-text-size-adjust: 100%; /* 2 */
+      -webkit-text-size-adjust: 100%; /* 2 */
+    }
+  }
+
+  @if _normalize-include(sections) {
+    /* Sections
+       ========================================================================== */
+
+    /**
+     * Remove the margin in all browsers (opinionated).
+     */
+
+    body {
+      margin: 0;
+    }
+
+    /**
+     * Add the correct display in IE 9-.
+     */
+
+    article,
+    aside,
+    footer,
+    header,
+    nav,
+    section {
+      display: block;
+    }
+
+    /**
+     * Correct the font size and margin on `h1` elements within `section` and
+     * `article` contexts in Chrome, Firefox, and Safari.
+     */
+
+    h1 {
+      @include normalize-font-size($h1-font-size);
+      @if $normalize-vertical-rhythm {
+        @include normalize-line-height($h1-font-size);
+      }
+
+      @if $normalize-vertical-rhythm {
+        /* Set 1 unit of vertical rhythm on the top and bottom margins. */
+        @include normalize-margin(1 0, $h1-font-size);
+      }
+      @else {
+        margin: 0.67em 0;
+      }
+    }
+
+    @if $normalize-vertical-rhythm {
+      h2 {
+        @include normalize-font-size($h2-font-size);
+        @include normalize-line-height($h2-font-size);
+        @include normalize-margin(1 0, $h2-font-size);
+      }
+
+      h3 {
+        @include normalize-font-size($h3-font-size);
+        @include normalize-line-height($h3-font-size);
+        @include normalize-margin(1 0, $h3-font-size);
+      }
+
+      h4 {
+        @include normalize-font-size($h4-font-size);
+        @include normalize-line-height($h4-font-size);
+        @include normalize-margin(1 0, $h4-font-size);
+      }
+
+      h5 {
+        @include normalize-font-size($h5-font-size);
+        @include normalize-line-height($h5-font-size);
+        @include normalize-margin(1 0, $h5-font-size);
+      }
+
+      h6 {
+        @include normalize-font-size($h6-font-size);
+        @include normalize-line-height($h6-font-size);
+        @include normalize-margin(1 0, $h6-font-size);
+      }
+    }
+  }
+
+  @if _normalize-include(grouping) {
+    /* Grouping content
+       ========================================================================== */
+
+    @if $normalize-vertical-rhythm {
+      /**
+       * Set 1 unit of vertical rhythm on the top and bottom margin.
+       */
+
+      blockquote {
+        @include normalize-margin(1 $indent-amount);
+      }
+
+      dl,
+      ol,
+      ul {
+        @include normalize-margin(1 0);
+      }
+
+      /**
+       * Turn off margins on nested lists.
+       */
+
+      ol,
+      ul {
+        ol,
+        ul {
+          margin: 0;
+        }
+      }
+
+      dd {
+        margin: 0 0 0 $indent-amount;
+      }
+
+      ol,
+      ul {
+        padding: 0 0 0 $indent-amount;
+      }
+    }
+
+    /**
+     * Add the correct display in IE 9-.
+     */
+
+    figcaption,
+    figure {
+      display: block;
+    }
+
+    /**
+     * Add the correct margin in IE 8.
+     */
+
+    figure {
+      @if $normalize-vertical-rhythm {
+        @include normalize-margin(1 $indent-amount);
+      }
+      @else {
+        margin: 1em $indent-amount;
+      }
+    }
+
+    /**
+     * 1. Add the correct box sizing in Firefox.
+     * 2. Show the overflow in Edge and IE.
+     */
+
+    hr {
+      box-sizing: content-box; /* 1 */
+      height: 0; /* 1 */
+      overflow: visible; /* 2 */
+    }
+
+    /**
+     * Add the correct display in IE.
+     */
+
+    main {
+      display: block;
+    }
+
+    @if $normalize-vertical-rhythm {
+      /**
+       * Set 1 unit of vertical rhythm on the top and bottom margin.
+       */
+
+      p,
+      pre {
+        @include normalize-margin(1 0);
+      }
+    }
+
+    /**
+     * 1. Correct the inheritance and scaling of font size in all browsers.
+     * 2. Correct the odd `em` font sizing in all browsers.
+     */
+
+    pre {
+      font-family: monospace, monospace; /* 1 */
+      font-size: 1em; /* 2 */
+    }
+  }
+
+  @if _normalize-include(links) {
+    /* Links
+       ========================================================================== */
+
+    /**
+     * 1. Remove the gray background on active links in IE 10.
+     * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
+     */
+
+    a {
+      background-color: transparent; /* 1 */
+      -webkit-text-decoration-skip: objects; /* 2 */
+    }
+  }
+
+  @if _normalize-include(text) {
+    /* Text-level semantics
+       ========================================================================== */
+
+    /**
+     * 1. Remove the bottom border in Chrome 57- and Firefox 39-.
+     * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+     */
+
+    abbr[title] {
+      border-bottom: none; /* 1 */
+      text-decoration: underline; /* 2 */
+      text-decoration: underline dotted; /* 2 */
+    }
+
+    /**
+     * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
+     */
+
+    b,
+    strong {
+      font-weight: inherit;
+    }
+
+    /**
+     * Add the correct font weight in Chrome, Edge, and Safari.
+     */
+
+    b,
+    strong {
+      font-weight: bolder;
+    }
+
+    /**
+     * 1. Correct the inheritance and scaling of font size in all browsers.
+     * 2. Correct the odd `em` font sizing in all browsers.
+     */
+
+    code,
+    kbd,
+    samp {
+      font-family: monospace, monospace; /* 1 */
+      font-size: 1em; /* 2 */
+    }
+
+    /**
+     * Add the correct font style in Android 4.3-.
+     */
+
+    dfn {
+      font-style: italic;
+    }
+
+    /**
+     * Add the correct background and color in IE 9-.
+     */
+
+    mark {
+      background-color: #ff0;
+      color: #000;
+    }
+
+    /**
+     * Add the correct font size in all browsers.
+     */
+
+    small {
+      font-size: 80%;
+    }
+
+    /**
+     * Prevent `sub` and `sup` elements from affecting the line height in
+     * all browsers.
+     */
+
+    sub,
+    sup {
+      font-size: 75%;
+      line-height: 0;
+      position: relative;
+      vertical-align: baseline;
+    }
+
+    sub {
+      bottom: -0.25em;
+    }
+
+    sup {
+      top: -0.5em;
+    }
+  }
+
+  @if _normalize-include(embedded) {
+    /* Embedded content
+       ========================================================================== */
+
+    /**
+     * Add the correct display in IE 9-.
+     */
+
+    audio,
+    video {
+      display: inline-block;
+    }
+
+    /**
+     * Add the correct display in iOS 4-7.
+     */
+
+    audio:not([controls]) {
+      display: none;
+      height: 0;
+    }
+
+    /**
+     * Remove the border on images inside links in IE 10-.
+     */
+
+    img {
+      border-style: none;
+    }
+
+    /**
+     * Hide the overflow in IE.
+     */
+
+    svg:not(:root) {
+      overflow: hidden;
+    }
+  }
+
+  @if _normalize-include(forms) {
+    /* Forms
+       ========================================================================== */
+
+    /**
+     * 1. Change the font styles in all browsers (opinionated).
+     * 2. Remove the margin in Firefox and Safari.
+     */
+
+    button,
+    input,
+    optgroup,
+    select,
+    textarea {
+      font-family: if($base-font-family, $base-font-family, sans-serif); /* 1 */
+      font-size: 100%; /* 1 */
+      @if $normalize-vertical-rhythm {
+        line-height: ($base-line-height / $base-font-size) * 1em; /* 1 */
+      }
+      @else {
+        line-height: 1.15; /* 1 */
+      }
+      margin: 0; /* 2 */
+    }
+
+    /**
+     * Show the overflow in IE.
+     */
+
+    button {
+      overflow: visible;
+    }
+
+    /**
+     * Remove the inheritance of text transform in Edge, Firefox, and IE.
+     * 1. Remove the inheritance of text transform in Firefox.
+     */
+
+    button,
+    select { /* 1 */
+      text-transform: none;
+    }
+
+    /**
+     * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+     *    controls in Android 4.
+     * 2. Correct the inability to style clickable types in iOS and Safari.
+     */
+
+    button,
+    html [type="button"], /* 1 */
+    [type="reset"],
+    [type="submit"] {
+      -webkit-appearance: button; /* 2 */
+    }
+
+    button,
+    [type="button"],
+    [type="reset"],
+    [type="submit"] {
+
+      /**
+       * Remove the inner border and padding in Firefox.
+       */
+
+      &::-moz-focus-inner {
+        border-style: none;
+        padding: 0;
+      }
+
+      /**
+       * Restore the focus styles unset by the previous rule.
+       */
+
+      &:-moz-focusring {
+        outline: 1px dotted ButtonText;
+      }
+    }
+
+    /**
+     * Show the overflow in Edge.
+     */
+
+    input {
+      overflow: visible;
+    }
+
+    /**
+     * 1. Add the correct box sizing in IE 10-.
+     * 2. Remove the padding in IE 10-.
+     */
+
+    [type="checkbox"],
+    [type="radio"] {
+      box-sizing: border-box; /* 1 */
+      padding: 0; /* 2 */
+    }
+
+    /**
+     * Correct the cursor style of increment and decrement buttons in Chrome.
+     */
+
+    [type="number"]::-webkit-inner-spin-button,
+    [type="number"]::-webkit-outer-spin-button {
+      height: auto;
+    }
+
+    /**
+     * 1. Correct the odd appearance in Chrome and Safari.
+     * 2. Correct the outline style in Safari.
+     */
+
+    [type="search"] {
+      -webkit-appearance: textfield; /* 1 */
+      outline-offset: -2px; /* 2 */
+
+      /**
+       * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
+       */
+
+      &::-webkit-search-cancel-button,
+      &::-webkit-search-decoration {
+        -webkit-appearance: none;
+      }
+    }
+
+    /**
+     * 1. Correct the inability to style clickable types in iOS and Safari.
+     * 2. Change font properties to `inherit` in Safari.
+     */
+
+    ::-webkit-file-upload-button {
+      -webkit-appearance: button; /* 1 */
+      font: inherit; /* 2 */
+    }
+
+    /**
+     * Correct the padding in Firefox.
+     */
+
+    fieldset {
+      padding: 0.35em 0.75em 0.625em;
+    }
+
+    /**
+     * 1. Correct the text wrapping in Edge and IE.
+     * 2. Correct the color inheritance from `fieldset` elements in IE.
+     * 3. Remove the padding so developers are not caught out when they zero out
+     *    `fieldset` elements in all browsers.
+     */
+
+    legend {
+      box-sizing: border-box; /* 1 */
+      display: table; /* 1 */
+      max-width: 100%; /* 1 */
+      padding: 0; /* 3 */
+      color: inherit; /* 2 */
+      white-space: normal; /* 1 */
+    }
+
+    /**
+     * 1. Add the correct display in IE 9-.
+     * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
+     */
+
+    progress {
+      display: inline-block; /* 1 */
+      vertical-align: baseline; /* 2 */
+    }
+
+    /**
+     * Remove the default vertical scrollbar in IE.
+     */
+
+    textarea {
+      overflow: auto;
+    }
+  }
+
+  @if _normalize-include(interactive) {
+    /* Interactive
+       ========================================================================== */
+
+    /*
+     * Add the correct display in Edge, IE, and Firefox.
+     */
+
+    details {
+      display: block;
+    }
+
+    /*
+     * Add the correct display in all browsers.
+     */
+
+    summary {
+      display: list-item;
+    }
+
+    /*
+     * Add the correct display in IE 9-.
+     */
+
+    menu {
+      display: block;
+
+      @if $normalize-vertical-rhythm {
+        /*
+         * 1. Set 1 unit of vertical rhythm on the top and bottom margin.
+         * 2. Set consistent space for the list style image.
+         */
+
+        @include normalize-margin(1 0); /* 1 */
+        padding: 0 0 0 $indent-amount; /* 2 */
+
+        /**
+         * Turn off margins on nested lists.
+         */
+
+        menu &,
+        ol &,
+        ul & {
+          margin: 0;
+        }
+      }
+    }
+  }
+
+  @if _normalize-include(scripting) {
+    /* Scripting
+       ========================================================================== */
+
+    /**
+     * Add the correct display in IE 9-.
+     */
+
+    canvas {
+      display: inline-block;
+    }
+
+    /**
+     * Add the correct display in IE.
+     */
+
+    template {
+      display: none;
+    }
+  }
+
+  @if _normalize-include(hidden) {
+    /* Hidden
+       ========================================================================== */
+
+    /**
+     * Add the correct display in IE 10-.
+     */
+
+    [hidden] {
+      display: none;
+    }
+  }
+}
diff --git a/assets/styles/normalize/_normalize.scss b/assets/styles/normalize/_normalize.scss
new file mode 100755
index 0000000000..fd669eb9bc
--- /dev/null
+++ b/assets/styles/normalize/_normalize.scss
@@ -0,0 +1,3 @@
+@import 'normalize/variables';
+@import 'normalize/vertical-rhythm';
+@import 'normalize/normalize-mixin';
diff --git a/assets/styles/normalize/_variables.scss b/assets/styles/normalize/_variables.scss
new file mode 100755
index 0000000000..10d05ed768
--- /dev/null
+++ b/assets/styles/normalize/_variables.scss
@@ -0,0 +1,36 @@
+//
+// Variables
+//
+// You can override the default values by setting the variables in your Sass
+// before importing the normalize-scss library.
+
+// The font size set on the root html element.
+$base-font-size: 16px !default;
+
+// The base line height determines the basic unit of vertical rhythm.
+$base-line-height: 24px !default;
+
+// The length unit in which to output vertical rhythm values.
+// Supported values: px, em, rem.
+$base-unit: 'em' !default;
+
+// The default font family.
+$base-font-family: null !default;
+
+// The font sizes for h1-h6.
+$h1-font-size: 2    * $base-font-size !default;
+$h2-font-size: 1.5  * $base-font-size !default;
+$h3-font-size: 1.17 * $base-font-size !default;
+$h4-font-size: 1    * $base-font-size !default;
+$h5-font-size: 0.83 * $base-font-size !default;
+$h6-font-size: 0.67 * $base-font-size !default;
+
+// The amount lists and blockquotes are indented.
+$indent-amount: 40px !default;
+
+// The following variable controls whether normalize-scss will output
+// font-sizes, line-heights and block-level top/bottom margins that form a basic
+// vertical rhythm on the page, which differs from the original Normalize.css.
+// However, changing any of the variables above will cause
+// $normalize-vertical-rhythm to be automatically set to true.
+$normalize-vertical-rhythm: false !default;
diff --git a/assets/styles/normalize/_vertical-rhythm.scss b/assets/styles/normalize/_vertical-rhythm.scss
new file mode 100755
index 0000000000..4f53647ca0
--- /dev/null
+++ b/assets/styles/normalize/_vertical-rhythm.scss
@@ -0,0 +1,61 @@
+//
+// Vertical Rhythm
+//
+// This is the minimal amount of code needed to create vertical rhythm in our
+// CSS. If you are looking for a robust solution, look at the excellent Typey
+// library. @see https://github.com/jptaranto/typey
+
+@function normalize-rhythm($value, $relative-to: $base-font-size, $unit: $base-unit) {
+  @if unit($value) != px {
+    @error "The normalize vertical-rhythm module only supports px inputs. The typey library is better.";
+  }
+  @if $unit == rem {
+    @return ($value / $base-font-size) * 1rem;
+  }
+  @else if $unit == em {
+    @return ($value / $relative-to) * 1em;
+  }
+  @else { // $unit == px
+    @return $value;
+  }
+}
+
+@mixin normalize-font-size($value, $relative-to: $base-font-size) {
+  @if unit($value) != 'px' {
+    @error "normalize-font-size() only supports px inputs. The typey library is better.";
+  }
+  font-size: normalize-rhythm($value, $relative-to);
+}
+
+@mixin normalize-rhythm($property, $values, $relative-to: $base-font-size) {
+  $value-list: $values;
+  $sep: space;
+  @if type-of($values) == 'list' {
+    $sep: list-separator($values);
+  }
+  @else {
+    $value-list: append((), $values);
+  }
+
+  $normalized-values: ();
+  @each $value in $value-list {
+    @if unitless($value) and $value != 0 {
+      $value: $value * normalize-rhythm($base-line-height, $relative-to);
+    }
+    $normalized-values: append($normalized-values, $value, $sep);
+  }
+  #{$property}: $normalized-values;
+}
+
+@mixin normalize-margin($values, $relative-to: $base-font-size) {
+  @include normalize-rhythm(margin, $values, $relative-to);
+}
+
+@mixin normalize-line-height($font-size, $min-line-padding: 2px) {
+  $lines: ceil($font-size / $base-line-height);
+  // If lines are cramped include some extra leading.
+  @if ($lines * $base-line-height - $font-size) < ($min-line-padding * 2) {
+    $lines: $lines + 1;
+  }
+  @include normalize-rhythm(line-height, $lines, $font-size);
+}
diff --git a/assets/styles/styles-default.scss b/assets/styles/styles-default.scss
new file mode 100644
index 0000000000..580232a5b6
--- /dev/null
+++ b/assets/styles/styles-default.scss
@@ -0,0 +1,17 @@
+// InfluxData Docs Default Theme (Dark)
+
+// Import Tools
+@import "tools/icomoon";
+@import "tools/media-queries.scss";
+@import "tools/mixins.scss";
+
+// Import default dark theme
+@import "themes/theme-dark.scss";
+
+// Import Layout Styles
+@import "normalize/import-now",
+        "layouts/layout-global",
+        "layouts/layout-topnav",
+        "layouts/layout-sidebar",
+        "layouts/layout-article",
+        "layouts/syntax-highlighting";
diff --git a/assets/styles/styles-light.scss b/assets/styles/styles-light.scss
new file mode 100644
index 0000000000..e15b24e579
--- /dev/null
+++ b/assets/styles/styles-light.scss
@@ -0,0 +1,8 @@
+// InfluxData Docs Theme File
+// Light Theme
+
+// Provide light them overrides
+@import "themes/theme-light";
+
+// Import default theme
+@import "styles-default";
diff --git a/assets/styles/themes/_theme-dark.scss b/assets/styles/themes/_theme-dark.scss
new file mode 100644
index 0000000000..ebe6443672
--- /dev/null
+++ b/assets/styles/themes/_theme-dark.scss
@@ -0,0 +1,124 @@
+/*
+
+	DARK THEME
+	____________________________________________________________
+
+	Notes:
+	- This file is interchangeable with themes/theme-light.scss
+	- Only contains color variables
+
+*/
+
+// General Styles
+// --------------------------------------------------
+
+@import "tools/color-palette";
+
+$body-bg: $g1-raven !default;
+$border-radius: 3px !default;
+
+// TopNav Colors
+$topnav-link: $g20-white !default;
+$topnav-link-hover: $b-pool !default;
+$version-selector-top: $b-ocean !default;
+$version-selector-bottom: $p-star !default;
+$theme-switch-light: inline-block !default;
+$theme-switch-dark: none !default;
+
+// Sidebar
+$sidebar-search-border: $g5-pepper !default;
+$sidebar-search-highlight: $b-pool !default;
+
+// Article Content
+$article-bg: $g3-castle !default;
+$article-heading: $g19-ghost !default;
+$article-text: $g14-chromium !default;
+$article-bold: $g19-ghost !default;
+$article-link: $b-pool !default;
+$article-link-hover: $g20-white !default;
+$article-shadow: #191a1b !default;
+$article-note-shadow: #191a1b !default;
+$article-warn-shadow: #191a1b !default;
+
+// Article Code
+$article-code: $p-potassium !default;
+$article-code-bg: $g1-raven !default;
+$article-code-accent1: $g9-mountain !default;
+$article-code-accent2: $b-pool !default;
+$article-code-accent3: $gr-viridian !default;
+$article-code-accent4: $o-ruby !default;
+$article-code-accent5: #ff6db0 !default;
+$article-code-accent6: $b-pool !default;
+$article-code-accent7: #e90 !default;
+$article-code-select: $b-pool !default;
+$article-code-hover: $g20-white !default;
+$article-code-scrollbar: $g7-graphite !default;
+
+// Article Tables
+$article-table-header-left: $p-planet !default;
+$article-table-header-right: $b-sapphire !default;
+$article-table-row-alt: $g2-kevlar !default;
+
+// Article Notes, Warnings, & Messages
+$article-note-base: $gr-viridian !default;
+$article-note-heading: $g20-white !default;
+$article-note-text: $gr-viridian !default;
+$article-note-link: $gr-rainforest !default;
+$article-note-link-hover: $g20-white !default;
+$article-note-table-header: $gr-viridian !default;
+$article-note-table-row-alt: #21272d !default;
+$article-note-code: #75d2f1 !default;
+$article-note-code-bg: #20272b !default;
+$article-note-code-accent1: #567375 !default;
+$article-note-code-accent2: $b-pool !default;
+$article-note-code-accent3: $gr-viridian !default;
+$article-note-code-accent4: $o-ruby !default;
+$article-note-code-accent5: #ff6db0 !default;
+$article-note-code-accent6: $b-pool !default;
+$article-note-code-accent7: #e90 !default;
+$article-note-code-scrollbar: $gr-grass !default;
+
+$article-warn-base: $o-dreamsicle !default;
+$article-warn-heading: $g20-white !default;
+$article-warn-text: $o-dreamsicle !default;
+$article-warn-link: $o-tungsten !default;
+$article-warn-link-hover: $g20-white !default;
+$article-warn-table-header: $o-dreamsicle !default;
+$article-warn-table-row-alt: #2b252b !default;
+$article-warn-code: #ec6e6e !default;
+$article-warn-code-bg: #292024 !default;
+$article-warn-code-accent1: #844c4c !default;
+$article-warn-code-accent2: $b-pool !default;
+$article-warn-code-accent3: $gr-viridian !default;
+$article-warn-code-accent4: $o-ruby !default;
+$article-warn-code-accent5: #ffb4fb !default;
+$article-warn-code-accent6: $b-pool !default;
+$article-warn-code-accent7: #e90 !default;
+$article-warn-code-scrollbar: #5f3535 !default;
+
+$article-enterprise-base: $p-star !default;
+$article-enterprise-text: $p-potassium !default;
+$article-enterprise-link: $p-moonstone !default;
+$article-enterprise-link-hover: $g20-white !default;
+
+// Article Tabs for tabbed content
+$article-tab-text: $g12-forge !default;
+$article-tab-bg: $g4-onyx !default;
+$article-tab-active-text: $g20-white !default;
+$article-tab-active-bg: $b-ocean !default;
+
+$article-tab-code-text: $g9-mountain !default;
+$article-tab-code-bg: $g5-pepper !default;
+$article-tab-code-text-hover: $g20-white !default;
+$article-tab-code-bg-hover: $b-ocean !default;
+$article-tab-code-active-text: $g20-white !default;
+
+// Left Navigation
+$nav-category: $b-ocean !default;
+$nav-category-hover: $g20-white !default;
+$nav-item: $g16-pearl !default;
+$nav-item-hover: $b-ocean !default;
+$nav-border: $g5-pepper !default;
+$nav-toggle: $g16-pearl !default;
+$nav-toggle-hover: $g16-pearl !default;
+$nav-toggle-bg-hover: $b-ocean !default;
diff --git a/assets/styles/themes/_theme-light.scss b/assets/styles/themes/_theme-light.scss
new file mode 100644
index 0000000000..95555f0a19
--- /dev/null
+++ b/assets/styles/themes/_theme-light.scss
@@ -0,0 +1,123 @@
+/*
+
+	LIGHT THEME
+	____________________________________________________________
+
+	Notes:
+	- This file is interchangeable with themes/theme-dark.scss
+	- Only contains color variables
+
+*/
+
+@import "tools/color-palette";
+
+// General Styles
+// --------------------------------------------------
+
+$body-bg: $g18-cloud;
+
+// TopNav Colors
+$topnav-link: $g5-pepper;
+$topnav-link-hover: $b-ocean;
+$version-selector-top: $b-pool;
+$version-selector-bottom: $gr-viridian;
+$theme-switch-light: none;
+$theme-switch-dark: inline-block;
+
+// Sidebar
+$sidebar-search-border: $g15-platinum;
+$sidebar-search-highlight: $b-pool;
+
+// Article Content
+$article-bg: $g20-white;
+$article-heading: $g7-graphite;
+$article-text: $g8-storm;
+$article-bold: $g8-storm;
+$article-link: $b-ocean;
+$article-link-hover: $gr-viridian;
+$article-shadow: #c8cdd0;
+$article-note-shadow: #8cb7ab;
+$article-warn-shadow: #b98a7d;
+
+// Article Code
+$article-code: $p-star;
+$article-code-bg: $p-violettecreme;
+$article-code-accent1: $p-potassium;
+$article-code-accent2: $b-ocean;
+$article-code-accent3: #008e7c;
+$article-code-accent4: $o-ruby;
+$article-code-accent5: #e24bbb;
+$article-code-accent6: $b-ocean;
+$article-code-accent7: #e90;
+$article-code-select:  $b-pool;
+$article-code-hover: $b-sapphire;
+$article-code-scrollbar: $p-potassium;
+
+// Article Tables
+$article-table-header-left: $b-pool;
+$article-table-header-right: $gr-honeydew;
+$article-table-row-alt: $g18-cloud;
+
+// Article Notes & Warnings
+$article-note-base: $gr-rainforest;
+$article-note-heading: $gr-emerald;
+$article-note-text: $gr-emerald;
+$article-note-link: rgba($gr-emerald, .75);
+$article-note-link-hover: $b-pool;
+$article-note-table-header: $gr-viridian;
+$article-note-table-row-alt: #d6f5e9;
+$article-note-code: #0A6f75;
+$article-note-code-bg: #d6f7ec;
+$article-note-code-accent1: #6abba0;
+$article-note-code-accent2: #0084d6;
+$article-note-code-accent3: #5d52d6;
+$article-note-code-accent4: $o-ruby;
+$article-note-code-accent5: #e24bbb;
+$article-note-code-accent6: #0084d6;
+$article-note-code-accent7: #e90;
+$article-note-code-scrollbar: #87DABE;
+
+$article-warn-base: $o-dreamsicle;
+$article-warn-heading: $o-fire;
+$article-warn-text: $o-curacao;
+$article-warn-link: rgba($o-curacao, .75);
+$article-warn-link-hover: $b-sapphire;
+$article-warn-table-header: $o-dreamsicle;
+$article-warn-table-row-alt: #ffe6df;
+$article-warn-code: #d0154e;
+$article-warn-code-bg: #ffebeb;
+$article-warn-code-accent1: #fd99b8;
+$article-warn-code-accent2: #357ae8;
+$article-warn-code-accent3: #6c59cc;
+$article-warn-code-accent4: $o-ruby;
+$article-warn-code-accent5: #6a0a6f;
+$article-warn-code-accent6: #357ae8;
+$article-warn-code-accent7: #e90;
+$article-warn-code-scrollbar: #FFB1B1;
+
+$article-enterprise-base: $p-comet;
+$article-enterprise-text: $p-star;
+$article-enterprise-link: $p-star;
+$article-enterprise-link-hover: $b-ocean;
+
+// Article Tabs for tabbed content
+$article-tab-text: $g8-storm;
+$article-tab-bg: $g18-cloud;
+$article-tab-active-text: $g20-white;
+$article-tab-active-bg: $b-pool;
+
+$article-tab-code-text: $p-potassium;
+$article-tab-code-bg: $g20-white;
+$article-tab-code-text-hover: $g20-white;
+$article-tab-code-bg-hover: $p-comet;
+$article-tab-code-active-text: $p-star;
+
+// Left Navigation
+$nav-category: $b-ocean;
+$nav-category-hover: $gr-viridian;
+$nav-item: $g9-mountain;
+$nav-item-hover: $gr-viridian;
+$nav-border: $g14-chromium;
+$nav-toggle: $g9-mountain;
+$nav-toggle-hover: $g20-white;
+$nav-toggle-bg-hover: $b-ocean;
diff --git a/assets/styles/tools/_color-palette.scss b/assets/styles/tools/_color-palette.scss
new file mode 100644
index 0000000000..bd494120d9
--- /dev/null
+++ b/assets/styles/tools/_color-palette.scss
@@ -0,0 +1,73 @@
+// Influx Color Palette
+
+// Greys (Dark to Light)
+$g0-obsidian:     #0F0E15;
+$g1-raven:        #1C1C21;
+$g2-kevlar:       #202028;
+$g3-castle:       #292933;
+$g4-onyx:         #2C2C38;
+$g5-pepper:       #383846;
+$g6-smoke:        #434453;
+$g7-graphite:     #545667;
+$g8-storm:        #676978;
+$g9-mountain:     #757888;
+$g10-wolf:        #8E91A1;
+$g11-sidewalk:    #999DAB;
+$g12-forge:       #A4A8B6;
+$g13-mist:        #BEC2CC;
+$g14-chromium:    #C6CAD3;
+$g15-platinum:    #D4D7DD;
+$g16-pearl:       #E7E8EB;
+$g17-whisper:     #EEEFF2;
+$g18-cloud:       #F6F6F8;
+$g19-ghost:       #FAFAFC;
+$g20-white:       #ffffff;
+
+// Oranges (Dark to Light)
+$o-basalt:        #2F1F29;
+$o-ember:         #6F3943;
+$o-ruby:          #BF3D5E;
+$o-fire:          #DC4E58;
+$o-curacao:       #F95F53;
+$o-dreamsicle:    #FF8564;
+$o-tungsten:      #FFB6A0;
+$o-marmelade:     #FFDCCF;
+$o-orangecream:   #EADAD8;
+$o-flan:          #FFF7F4;
+
+// Blues (Dark to Light)
+$b-abyss:         #182838;
+$b-deepsea:       #32547F;
+$b-sapphire:      #326BBA;
+$b-ocean:         #4591ED;
+$b-pool:          #22ADF6;
+$b-laser:         #00C9FF;
+$b-hydrogen:      #6BDFFF;
+$b-neutrino:      #BEF0FF;
+$b-snow:          #C9E0ED;
+$b-yeti:          #F0FCFF;
+
+// Purples (Dark to Light)
+$p-shadow:        #1F2039;
+$p-void:          #311F94;
+$p-purplerain:    #484281;
+$p-planet:        #513CC6;
+$p-star:          #7A65F2;
+$p-comet:         #9394FF;
+$p-potassium:     #B1B6FF;
+$p-moonstone:     #C9D0FF;
+$p-quartz:        #D6D5ED;
+$p-violettecreme: #EDF0FF;
+
+// Greens (Dark to Light)
+$gr-gypsy:        #152B2D;
+$gr-grass:        #2B6058;
+$gr-emerald:      #108174;
+$gr-viridian:     #32B08C;
+$gr-canopy:       #20B76F;
+$gr-rainforest:   #4ED8A0;
+$gr-honeydew:     #7CE490;
+$gr-krypton:      #A5F3B4;
+$gr-wasabi:       #C6FFD0;
+$gr-forestfog:    #CFE6E1;
+$gr-mint:         #F2FFF4;
diff --git a/assets/styles/tools/_icomoon.scss b/assets/styles/tools/_icomoon.scss
new file mode 100644
index 0000000000..fb5febeb61
--- /dev/null
+++ b/assets/styles/tools/_icomoon.scss
@@ -0,0 +1,122 @@
+@font-face {
+  font-family: 'icomoon';
+  src:  url('fonts/icomoon.eot?ppkm5');
+  src:  url('fonts/icomoon.eot?ppkm5#iefix') format('embedded-opentype'),
+    url('fonts/icomoon.ttf?ppkm5') format('truetype'),
+    url('fonts/icomoon.woff?ppkm5') format('woff'),
+    url('fonts/icomoon.svg?ppkm5#icomoon') format('svg');
+  font-weight: normal;
+  font-style: normal;
+}
+
+[class^="icon-"], [class*=" icon-"] {
+  /* use !important to prevent issues with browser extensions that change fonts */
+  font-family: 'icomoon' !important;
+  speak: none;
+  font-style: normal;
+  font-weight: normal;
+  font-variant: normal;
+  text-transform: none;
+  line-height: 1;
+
+  /* Better Font Rendering =========== */
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-alert-triangle:before {
+  content: "\e902";
+}
+.icon-arrow-down:before {
+  content: "\e903";
+}
+.icon-arrow-down-circle:before {
+  content: "\e907";
+}
+.icon-arrow-down-left:before {
+  content: "\e908";
+}
+.icon-arrow-down-right:before {
+  content: "\e909";
+}
+.icon-arrow-left:before {
+  content: "\e90a";
+}
+.icon-arrow-left-circle:before {
+  content: "\e90b";
+}
+.icon-arrow-right:before {
+  content: "\e90c";
+}
+.icon-arrow-right-circle:before {
+  content: "\e90d";
+}
+.icon-arrow-up:before {
+  content: "\e90e";
+}
+.icon-arrow-up-circle:before {
+  content: "\e90f";
+}
+.icon-arrow-up-left:before {
+  content: "\e910";
+}
+.icon-arrow-up-right:before {
+  content: "\e911";
+}
+.icon-check:before {
+  content: "\e912";
+}
+.icon-heart1:before {
+  content: "\e913";
+}
+.icon-settings:before {
+  content: "\e914";
+}
+.icon-zoom-in:before {
+  content: "\e915";
+}
+.icon-zoom-out:before {
+  content: "\e916";
+}
+.icon-moon1:before {
+  content: "\e904";
+}
+.icon-sun1:before {
+  content: "\e906";
+}
+.icon-search:before {
+  content: "\e905";
+}
+.icon-influx-logo:before {
+  content: "\e900";
+}
+.icon-influx-logotype:before {
+  content: "\e901";
+}
+.icon-folder-upload:before {
+  content: "\e934";
+}
+.icon-map2:before {
+  content: "\e94c";
+}
+.icon-download:before {
+  content: "\e960";
+}
+.icon-upload:before {
+  content: "\e961";
+}
+.icon-cog:before {
+  content: "\e994";
+}
+.icon-heart:before {
+  content: "\e9da";
+}
+.icon-tux:before {
+  content: "\eabd";
+}
+.icon-appleinc:before {
+  content: "\eabe";
+}
+.icon-windows8:before {
+  content: "\eac2";
+}
diff --git a/assets/styles/tools/media-queries.scss b/assets/styles/tools/media-queries.scss
new file mode 100644
index 0000000000..60436e9e69
--- /dev/null
+++ b/assets/styles/tools/media-queries.scss
@@ -0,0 +1,24 @@
+$small-max: 600px;
+$medium-min: ($small-max + 1);
+$medium-max: 800px;
+$large-min: ($medium-max + 1);
+$large-max: 1280px;
+$xlarge-min: 1290px;
+
+@mixin media($size) {
+  @if $size == small {
+    @media (max-width: $small-max) { @content ; }
+  }
+  @else if $size == medium {
+    @media (max-width: $medium-max) { @content ; }
+  }
+  @else if $size == large_min {
+    @media (min-width: $large-min) { @content ; }
+  }
+  @else if $size == large {
+    @media (max-width: $large-max) { @content ; }
+  }
+  @else if $size == xlarge {
+    @media (min-width: $xlarge-min) { @content ; }
+  }
+}
diff --git a/assets/styles/tools/mixins.scss b/assets/styles/tools/mixins.scss
new file mode 100644
index 0000000000..51e3f07fc7
--- /dev/null
+++ b/assets/styles/tools/mixins.scss
@@ -0,0 +1,15 @@
+@mixin scrollbar($bg-color, $thumb-color) {
+  &::-webkit-scrollbar {
+    background-color: rgba($bg-color, 0);
+    width: 12px;
+    height: 12px;
+  }
+  &::-webkit-scrollbar-track {
+    background-color: $bg-color;
+  }
+  &::-webkit-scrollbar-thumb {
+    background-color: $thumb-color;
+    border: 3px solid $bg-color;
+    border-radius: 6px;
+  }
+}
diff --git a/config.toml b/config.toml
index 965f80dc0b..099ac8cd61 100644
--- a/config.toml
+++ b/config.toml
@@ -1,3 +1,20 @@
 baseURL = "http://docs.influxdata.com/"
 languageCode = "en-us"
 title = "InfluxDB Documentation"
+
+# Git history information for lastMod-type functionality
+enableGitInfo = true
+
+# Syntax Highlighting
+pygmentsCodefences = true
+pygmentsUseClasses = true
+
+# Markdown rendering options
+[blackfriday]
+hrefTargetBlank = true
+
+# Menu items without actual pages
+[menu]
+  [[menu.versions]]
+    name = "v1.x"
+    url = "https://docs.influxdata.com"
diff --git a/content/v2.0/UI/using-tasks.md b/content/v2.0/UI/using-tasks.md
index 1107084c65..7014b07318 100644
--- a/content/v2.0/UI/using-tasks.md
+++ b/content/v2.0/UI/using-tasks.md
@@ -3,7 +3,7 @@ title: Using tasks
 description: This is just an example post to show the format of new 2.0 posts
 menu:
   v2_0:
-    name: Example post
+    name: Using tasks
     weight: 1
 ---
 
@@ -11,7 +11,7 @@ menu:
 * Enable the **Show Inactive** option to include inactive tasks on the list.
 * Enter text in the **Filter tasks by name** field to search for tasks by name.
 * Select an organization from the **All Organizations** dropdown to filter the list by organization.
-* Click on the heading of any column to sort by that field. 
+* Click on the heading of any column to sort by that field.
 
 **To import a task**:
 1. Click the Tasks (calendar) icon in the left navigation menu.
diff --git a/content/v2.0/_index.md b/content/v2.0/_index.md
index b02a1b6d1a..fee3384b58 100644
--- a/content/v2.0/_index.md
+++ b/content/v2.0/_index.md
@@ -2,7 +2,12 @@
 title: InfluxDB v2.0
 seotitle: This is the SEO title for InfluxDB v2.0
 description: placeholder
-menu: v2_0
+menu:
+  versions:
+    name: v2.0
+  v2_0:
+    name: Introduction
+    weight: 1
 ---
 
 _This placeholder content for the landing page for v2.0._
diff --git a/content/v2.0/example.md b/content/v2.0/example.md
index 53df16e85f..fb5792ff58 100644
--- a/content/v2.0/example.md
+++ b/content/v2.0/example.md
@@ -5,6 +5,494 @@ menu:
   v2_0:
     name: Example post
     weight: 1
+#enterprise_all: true
+enterprise_some: true
 ---
 
-_This is just an example post._
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+
+## h2 This is a header2
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+
+{{< code-tabs-wrapper >}}
+{{% code-tabs %}}
+[Flux](#)
+[InfluxQL](#)
+{{% /code-tabs %}}
+
+{{% code-tab-content %}}
+```js
+data = from(bucket: "telegraf/autogen")
+  |> range(start: -15m)
+  |> filter(fn: (r) =>
+    r._measurement == "mem" AND
+    r._field == "used_percent"
+  )
+```
+{{% /code-tab-content %}}
+{{% code-tab-content %}}
+```sql
+SELECT "used_percent"
+FROM "telegraf"."autogen"."mem"
+WHERE time > now() - 15m
+```
+{{% /code-tab-content %}}
+{{< /code-tabs-wrapper >}}
+
+{{% enterprise %}}
+### h3 This is a header3
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+
+![Test image](http://docs.influxdata.com/img/chronograf/v1.7/alerts-conditions.png)
+
+{{< img-hd src="/img/test-image-2.png" alt="Test Image" />}}
+
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+{{% /enterprise %}}
+
+#### h4 This is a header4
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo. [Link to h2](#h2-this-is-a-header2)
+
+##### h5 This is a header5
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+
+###### h6 This is a header6
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.This is a paragraph
+
+#### Inline Styles
+This is an [inline link](#). This is `inline code`.
+This is an [`inline code link`](#) .
+This is **bold**. This is _italic_.
+
+- Unordered list line-item 1
+- Unordered list line-item 2
+  - Unordered list line-item 2.1
+  - Unordered list line-item 2.2
+  - Unordered list line-item 2.3
+- Unordered list line-item 3
+-   Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+-   Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+1.  Unordered list line-item 1
+2.  Unordered list line-item 2
+  1.  Unordered list line-item 2.1
+  2.  Unordered list line-item 2.2
+  3.  Unordered list line-item 2.3
+3.  Unordered list line-item 3
+4.  Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+5.  Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+```js
+// This is a code block
+cpu = from(bucket:"telegraf/autogen")
+  |> range(start:-30m)
+  |> filter(fn:(r) => r._measurement == "cpu")
+  |> filter(fn:(r) => r._measurement == "cpu") |> filter(fn:(r) => r._measurement == "cpu") |> filter(fn:(r) => r._measurement == "cpu")
+
+avg_cpu = cpu |> window(every:5m) |> mean()
+
+avg_cpu
+  |> group(none:true)
+  |> yield()
+//
+```
+{{% enterprise %}}
+###### This is a table
+| Column 1 | Column 2 | Column 3 | Column 4 |
+| -------- | -------- | -------- | -------- |
+| Row 1.1  | Row 1.2  | Row 1.3  | Row 1.4  |
+| Row 2.1  | Row 2.2  | Row 2.3  | Row 2.4  |
+| Row 3.1  | Row 3.2  | Row 3.3  | Row 3.4  |
+| Row 4.1  | Row 4.2  | Row 4.3  | Row 4.4  |
+| Row 5.1  | Row 5.2  | Row 5.3  | Row 5.4  |
+
+###### This is a table with lots of stuff
+| Column 1 | Column 2 | Column 3 | Column 4 |
+| -------- | -------- | -------- | -------- |
+| Row 1.1Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 1.2Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 1.3Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 1.4Lorem ipsum dolor sit amet, consectetur adipiscing elit. |
+| Row 2.1Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 2.2Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 2.3Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 2.4Lorem ipsum dolor sit amet, consectetur adipiscing elit. |
+| Row 3.1Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 3.2Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 3.3Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 3.4Lorem ipsum dolor sit amet, consectetur adipiscing elit. |
+| Row 4.1Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 4.2Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 4.3Lorem ipsum dolor sit amet, consectetur adipiscing elit. | Row 4.4Lorem ipsum dolor sit amet, consectetur adipiscing elit. |
+
+> This is a basic block quote
+
+Paragraph after a blockquote. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+> This is a multiple paragraph blockquote with internal elements.
+> Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+> Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+> Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+>
+> Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+> Etiam tristique nisi et tristique auctor.
+> Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+> Etiam tristique nisi et tristique auctor.
+
+{{% note %}}
+This is a basic note.
+{{% /note %}}
+{{% /enterprise %}}
+
+{{% note %}}
+## h2 This is a header2
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+### h3 This is a header3
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+{{< img-hd src="/img/test-image-2.png" alt="Test Image" />}}
+
+#### h4 This is a header4
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+##### h5 This is a header5
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+###### h6 This is a header6
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+> Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+> Etiam tristique nisi et tristique auctor.
+> Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+> Etiam tristique nisi et tristique auctor.
+
+#### Inline Styles
+This is an [inline link](#). This is `inline code`.
+This is an [`inline code link`](#) .
+This is **bold**. This is _italic_.
+
+- Unordered list line-item 1
+- Unordered list line-item 2
+  - Unordered list line-item 2.1
+  - Unordered list line-item 2.2
+  - Unordered list line-item 2.3
+- Unordered list line-item 3
+-   Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+-   Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+1.  Unordered list line-item 1
+2.  Unordered list line-item 2
+  1.  Unordered list line-item 2.1
+  2.  Unordered list line-item 2.2
+  3.  Unordered list line-item 2.3
+3.  Unordered list line-item 3
+4.  Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+5.  Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+```js
+// This is a code block inside of a blockquote
+cpu = from(bucket:"telegraf/autogen")
+  |> range(start:-30m)
+  |> filter(fn:(r) => r._measurement == "cpu")
+```
+
+###### This is a table in a blockquote
+| Column 1 | Column 2 | Column 3 | Column 4 |
+| -------- | -------- | -------- | -------- |
+| Row 1.1  | Row 1.2  | Row 1.3  | Row 1.4  |
+| Row 2.1  | Row 2.2  | Row 2.3  | Row 2.4  |
+| Row 3.1  | Row 3.2  | Row 3.3  | Row 3.4  |
+| Row 4.1  | Row 4.2  | Row 4.3  | Row 4.4  |
+
+{{% /note %}}
+
+{{% warn %}}
+This is a basic warning.
+{{% /warn %}}
+
+
+{{% warn %}}
+This is a multiple paragraph blockquote with internal elements.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+## h2 This is a header2
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+{{< img-hd src="/img/test-image-2.png" alt="Test Image" />}}
+
+### h3 This is a header3
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+#### h4 This is a header4
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+##### h5 This is a header5
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+###### h6 This is a header6
+Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+Etiam tristique nisi et tristique auctor.
+
+> Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+> Etiam tristique nisi et tristique auctor.
+> Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+> Etiam tristique nisi et tristique auctor.
+
+#### Inline Styles
+This is an [inline link](#). This is `inline code`.
+This is an [`inline code link`](#) .
+This is **bold**. This is _italic_.
+
+- Unordered list line-item 1
+- Unordered list line-item 2
+  - Unordered list line-item 2.1
+  - Unordered list line-item 2.2
+  - Unordered list line-item 2.3
+- Unordered list line-item 3
+-   Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+-   Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+1.  Unordered list line-item 1
+2.  Unordered list line-item 2
+  1.  Unordered list line-item 2.1
+  2.  Unordered list line-item 2.2
+  3.  Unordered list line-item 2.3
+3.  Unordered list line-item 3
+4.  Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+5.  Unordered list line-item with multiple paragraphs.
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+    Nunc rutrum, metus id scelerisque euismod, erat ante, ac congue enim risus id est.
+    Etiam tristique nisi et tristique auctor.
+
+```js
+// This is a code block inside of a blockquote
+cpu = from(bucket:"telegraf/autogen")
+  |> range(start:-30m)
+  |> filter(fn:(r) => r._measurement == "cpu")
+```
+
+###### This is a table in a blockquote
+| Column 1 | Column 2 | Column 3 | Column 4 |
+| -------- | -------- | -------- | -------- |
+| Row 1.1  | Row 1.2  | Row 1.3  | Row 1.4  |
+| Row 2.1  | Row 2.2  | Row 2.3  | Row 2.4  |
+| Row 3.1  | Row 3.2  | Row 3.3  | Row 3.4  |
+| Row 4.1  | Row 4.2  | Row 4.3  | Row 4.4  |
+
+{{% /warn %}}
+
+{{< tabs-wrapper >}}
+{{% tabs %}}
+[tab 1.1](#)
+[tab 1.2](#)
+[tab 1.3](#)
+[tab 1.4](#)
+{{% /tabs %}}
+
+{{% tab-content %}}
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+
+## h2 This is a header2
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+
+This is a paragraph. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc rutrum, metus id scelerisque euismod, erat ante suscipit nibh, ac congue enim risus id est. Etiam tristique nisi et tristique auctor. Morbi eu bibendum erat. Sed ullamcorper, dui id lobortis efficitur, mauris odio pharetra neque, vel tempor odio dolor blandit justo.
+
+{{< code-tabs-wrapper >}}
+{{% code-tabs %}}
+[Flux](#)
+[InfluxQL](#)
+{{% /code-tabs %}}
+
+{{% code-tab-content %}}
+```js
+data = from(bucket: "telegraf/autogen")
+  |> range(start: -15m)
+  |> filter(fn: (r) =>
+    r._measurement == "mem" AND
+    r._field == "used_percent"
+  )
+```
+{{% /code-tab-content %}}
+{{% code-tab-content %}}
+```sql
+SELECT "used_percent"
+FROM "telegraf"."autogen"."mem"
+WHERE time > now() - 15m
+```
+{{% /code-tab-content %}}
+{{< /code-tabs-wrapper >}}
+
+{{% /tab-content %}}
+
+{{% tab-content %}}
+This is tab 1.2 content.
+{{% /tab-content %}}
+
+{{% tab-content %}}
+This is tab 1.3 content.
+{{% /tab-content %}}
+
+{{% tab-content %}}
+This is tab 1.4 content.
+{{% /tab-content %}}
+
+{{< /tabs-wrapper >}}
+
+{{< tabs-wrapper >}}
+{{% tabs %}}
+[tab 2.1](#)
+[tab 2.2](#)
+[tab 2.3](#)
+[tab 2.4](#)
+{{% /tabs %}}
+
+{{% tab-content %}}
+This is tab 2.1 content.
+{{% /tab-content %}}
+
+{{% tab-content %}}
+This is tab 2.2 content.
+{{% /tab-content %}}
+
+{{% tab-content %}}
+This is tab 2.3 content.
+{{% /tab-content %}}
+
+{{% tab-content %}}
+This is tab 2.4 content.
+{{% /tab-content %}}
+
+{{< /tabs-wrapper >}}
+
+{{% truncate %}}
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+This is truncated content.  
+{{% /truncate %}}
diff --git a/data/versions.yaml b/data/versions.yaml
new file mode 100644
index 0000000000..704caf399f
--- /dev/null
+++ b/data/versions.yaml
@@ -0,0 +1 @@
+latest_version: v2.0
diff --git a/layouts/_default/section.html b/layouts/_default/section.html
index a903ad6064..09197a5408 100644
--- a/layouts/_default/section.html
+++ b/layouts/_default/section.html
@@ -1,7 +1,15 @@
 {{ partial "header.html" . }}
 
-<h1>{{ .Title }}</h1>
-
-{{ .Content }}
+<div class="page-wrapper">
+  {{ partial "sidebar.html" . }}
+  <div class="article">
+    <article class="article--content">
+      <h1>{{ .Title }}</h1>
+      {{ partial "article/latest-version.html" . }}
+      {{ partial "article/enterprise.html" . }}
+      {{ .Content }}
+    </article>
+  </div>
+</div>
 
 {{ partial "footer.html" . }}
diff --git a/layouts/_default/single.html b/layouts/_default/single.html
index a903ad6064..09197a5408 100644
--- a/layouts/_default/single.html
+++ b/layouts/_default/single.html
@@ -1,7 +1,15 @@
 {{ partial "header.html" . }}
 
-<h1>{{ .Title }}</h1>
-
-{{ .Content }}
+<div class="page-wrapper">
+  {{ partial "sidebar.html" . }}
+  <div class="article">
+    <article class="article--content">
+      <h1>{{ .Title }}</h1>
+      {{ partial "article/latest-version.html" . }}
+      {{ partial "article/enterprise.html" . }}
+      {{ .Content }}
+    </article>
+  </div>
+</div>
 
 {{ partial "footer.html" . }}
diff --git a/layouts/index.html b/layouts/index.html
index 2054950907..951782b892 100644
--- a/layouts/index.html
+++ b/layouts/index.html
@@ -1,6 +1,14 @@
-{{ partial "header.html" }}
+{{ partial "header.html" . }}
 
-<p><em>This is a placeholder for the future InfluxDB v2.0 homepage.</em></p>
-<p><a href="/v2.0/">v2.0 director</a></p>
+<div class="home-placeholder">
+  <p class="welcome">
+    Welcome to the InfluxDB v2.x documentation
+  </p>
+  <p>
+    This page is never actually shown on the live docs since visiting the docs domain will redirect to the latest version.
+    Select your desired version from the dropdown above or go straight to the
+    <a href="/{{ $.Site.Data.versions.latest_version }}">latest version</a>.
+  </p>
+</div>
 
-{{ partial "footer.html"}}
+{{ partial "footer.html" . }}
diff --git a/layouts/partials/article/enterprise.html b/layouts/partials/article/enterprise.html
new file mode 100644
index 0000000000..ceea7dad79
--- /dev/null
+++ b/layouts/partials/article/enterprise.html
@@ -0,0 +1,21 @@
+{{ $enterpriseLink := "#"}}
+{{ if ( $.Params.enterprise_all ) }}
+  <div id="enterprise-msg">
+    <p>
+      The features and functionality discussed on this page are unique to the Enterprise edition of InfluxDB.
+      <a href="{{ $enterpriseLink }}" target="_blank">Learn more about InfluxDB Enterprise</a>.
+    </p>
+  </div>
+{{ else if ( $.Params.enterprise_some ) }}
+  <div id="enterprise-msg">
+    <div>
+      <span class="enterprise-flag"></span>
+    </div>
+    <div>
+      <p>
+        This page includes features and functionality unique to the Enterprise edition of InfluxDB.
+        <a href="{{ $enterpriseLink }}" target="_blank">Learn more about InfluxDB Enterprise</a>.
+      </p>
+    </div>
+  </div>
+{{ end }}
diff --git a/layouts/partials/article/latest-version.html b/layouts/partials/article/latest-version.html
new file mode 100644
index 0000000000..f9a75775e1
--- /dev/null
+++ b/layouts/partials/article/latest-version.html
@@ -0,0 +1,11 @@
+{{ $currentVersion := (index (findRE "[^/]+.*?" .RelPermalink) 0) .RelPermalink }}
+{{ $latestVersion := $.Site.Data.versions.latest_version }}
+{{ $latestVersionURL := replaceRE "[^/]+.*?[0]" $latestVersion .RelPermalink }}
+{{ if not (eq $currentVersion $latestVersion) }}
+  <div class="warn">
+    <p>
+      This page documents an earlier version of InfluxDB.
+      View the latest version of this page in the <a href="{{ $latestVersionURL }}">InfluxDB {{ $latestVersion }}</a> documentation.
+    </p>
+  </div>
+{{ end }}
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html
index b605728ee2..a58b1fe010 100644
--- a/layouts/partials/footer.html
+++ b/layouts/partials/footer.html
@@ -1,2 +1,3 @@
   </body>
+  {{ partial "footer/javascript.html" }}
 </html>
diff --git a/layouts/partials/footer/javascript.html b/layouts/partials/footer/javascript.html
new file mode 100644
index 0000000000..3d5407e70d
--- /dev/null
+++ b/layouts/partials/footer/javascript.html
@@ -0,0 +1,5 @@
+{{ $versionSelector := resources.Get "js/version-selector.js" }}
+{{ $contentInteractions := resources.Get "js/content-interactions.js" }}
+{{ $footerjs := slice $versionSelector $contentInteractions | resources.Concat "js/footer.bundle.js" }}
+
+<script type="text/javascript" src="{{ $footerjs.RelPermalink }}" ></script>
diff --git a/layouts/partials/header.html b/layouts/partials/header.html
index 1cb1441bd3..af701de074 100644
--- a/layouts/partials/header.html
+++ b/layouts/partials/header.html
@@ -5,6 +5,15 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="description" content="{{ if .Description }}{{ .Description }}. {{ end }}">
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-    <title>{{ if .Params.seotitle }} {{ .Params.seotitle }} {{ else if .Title }} {{ .Title }} {{ end }} | InfluxData Documentation</title>
+    <title>{{ if .Params.seotitle }} {{ print .Params.seotitle " | " }} {{ else if .Title }} {{ print .Title  " | " }} {{ end }}InfluxData Documentation</title>
+
+    {{ partial "header/stylesheets.html"}}
+
+    <link href="https://fonts.googleapis.com/css?family=Roboto:400,400i,700,700i|Titillium+Web:300i,700i|Inconsolata:400,700" rel="stylesheet">
+
+    {{ partial "header/javascript.html"}}
+
+    <meta name="Copyright" content="InfluxData Inc." />
   </head>
   <body>
+    {{ partial "topnav.html" . }}
diff --git a/layouts/partials/header/javascript.html b/layouts/partials/header/javascript.html
new file mode 100644
index 0000000000..74199ed59e
--- /dev/null
+++ b/layouts/partials/header/javascript.html
@@ -0,0 +1,7 @@
+{{ $jquery := resources.Get "js/jquery-3.3.1.min.js" }}
+{{ $cookies := resources.Get "js/js.cookie.js" }}
+{{ $themes := resources.Get "js/docs-themes.js" }}
+{{ $headerjs := slice $jquery $cookies $themes | resources.Concat "js/header.bundle.js" }}
+
+<script type="text/javascript" src="{{ $headerjs.RelPermalink }}" ></script>
+<script type="text/javascript">set_style_from_cookie();</script>
diff --git a/layouts/partials/header/stylesheets.html b/layouts/partials/header/stylesheets.html
new file mode 100644
index 0000000000..9fb31a3bbd
--- /dev/null
+++ b/layouts/partials/header/stylesheets.html
@@ -0,0 +1,9 @@
+{{ $cssOptionsDark := (dict "targetPath" "dark-theme.css" "outputStyle" "compressed" "enableSourceMap" true) }}
+{{ $cssOptionsLight := (dict "targetPath" "light-theme.css" "outputStyle" "compressed" "enableSourceMap" true) }}
+{{ $PostCSSOptions := (dict "use" "autoprefixer" "noMap" false) }}
+
+{{ $stylesDark := resources.Get "styles/styles-default.scss" | toCSS $cssOptionsDark | postCSS $PostCSSOptions | fingerprint }}
+<link rel="stylesheet" title="dark-theme" type="text/css" href="{{ $stylesDark.RelPermalink }}">
+
+{{ $stylesLight := resources.Get "styles/styles-light.scss" | toCSS $cssOptionsLight | postCSS $PostCSSOptions | fingerprint }}
+<link rel="alternate stylesheet" title="light-theme" type="text/css" href="{{ $stylesLight.RelPermalink }}">
diff --git a/layouts/partials/sidebar.html b/layouts/partials/sidebar.html
new file mode 100644
index 0000000000..134fc750c6
--- /dev/null
+++ b/layouts/partials/sidebar.html
@@ -0,0 +1,98 @@
+{{ $currentPage := . }}
+{{ $currentVersion := (index (findRE "[^/]+.*?" .RelPermalink) 0) }}
+<aside class="sidebar">
+  <div class="search-nav-toggle">
+    <div class="sidebar--search">
+      <input  class="sidebar--search-field"
+              id="algolia-search-input"
+              type="text"
+              accesskey="s"
+              autocomplete="off"
+              autocorrect="off"
+              autocapitalize="off"
+              spellcheck="false"
+              dir="auto"
+              placeholder="Search {{ $currentVersion }}">
+    </div>
+    <a id="contents-toggle-btn" href="#">
+      <span class="toggle-hamburger"></span>
+    </a>
+  </div>
+
+  <ul id="nav-tree">
+
+  {{ $menuID := replaceRE "[.]" "_" $currentVersion }}
+  {{ range (index .Site.Menus $menuID) }}
+    <!-- Nested Navigation -->
+    <li class="nav-category {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}active{{end}}">
+      {{ if .HasChildren }}<a href="#" class="children-toggle {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}"></a>{{ end }}
+      <a href="{{ .URL }}">{{ .Name }}</a>
+      {{ if .HasChildren }}
+        <ul class="children {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}">
+        {{ range .Children }}
+          <li class="nav-item {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}active{{end}}">
+            {{ if .HasChildren }}<a href="#" class="children-toggle {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}"></a>{{ end }}
+            <a href="{{ .URL }}">{{ .Name }}</a>
+            {{ if .HasChildren }}
+              <ul class="children {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}">
+              {{ range .Children }}
+                <li class="nav-item {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}active{{end}}">
+                  {{ if .HasChildren }}<a href="#" class="children-toggle {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}"></a>{{ end }}
+                  <a href="{{ .URL }}">{{ .Name }}</a>
+                  {{ if .HasChildren }}
+                    <ul class="children {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}">
+                    {{ range .Children }}
+                      <li class="nav-item {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}active{{end}}">
+                        {{ if .HasChildren }}<a href="#" class="children-toggle {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}"></a>{{ end }}
+                        <a href="{{ .URL }}">{{ .Name }}</a>
+                        {{ if .HasChildren }}
+                          <ul class="children {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}">
+                          {{ range .Children }}
+                            <li class="nav-item {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}active{{end}}">
+                              {{ if .HasChildren }}<a href="#" class="children-toggle {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}"></a>{{ end }}
+                              <a href="{{ .URL }}">{{ .Name }}</a>
+                              {{ if .HasChildren }}
+                                <ul class="children {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}">
+                                {{ range .Children }}
+                                  <li class="nav-item {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}active{{end}}">
+                                    {{ if .HasChildren }}<a href="#" class="children-toggle {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}"></a>{{ end }}
+                                    <a href="{{ .URL }}">{{ .Name }}</a>
+
+                                    <!-- Begin nested block -->
+                                    {{ if .HasChildren }}
+                                      <ul class="children {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}">
+                                      {{ range .Children }}
+                                        <li class="nav-item {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}active{{end}}">
+                                          {{ if .HasChildren }}<a href="#" class="children-toggle {{ if .HasChildren }}parent{{ end }} {{ if or ($currentPage.IsMenuCurrent .Menu .) ($currentPage.HasMenuCurrent .Menu .) }}open{{end}}"></a>{{ end }}
+                                          <a href="{{ .URL }}">{{ .Name }}</a>
+                                          <!-- To add more nested layers, copy the nested block and paste it here -->
+                                        </li>
+                                      {{ end }}
+                                      </ul>
+                                    {{ end }}
+                                    <!-- End nested block -->
+
+                                  </li>
+                                {{ end }}
+                                </ul>
+                              {{ end }}
+                            </li>
+                          {{ end }}
+                          </ul>
+                        {{ end }}
+                      </li>
+                    {{ end }}
+                    </ul>
+                  {{ end }}
+                </li>
+              {{ end }}
+              </ul>
+            {{ end }}
+          </li>
+        {{ end }}
+        </ul>
+      {{ end }}
+    </li>
+  {{end}}
+  </ul>
+</aside>
diff --git a/layouts/partials/topnav.html b/layouts/partials/topnav.html
new file mode 100644
index 0000000000..9ef49c28f0
--- /dev/null
+++ b/layouts/partials/topnav.html
@@ -0,0 +1,26 @@
+<div class="topnav">
+  <div class="topnav--left">
+    <a class="influx-home" href="https://www.influxdata.com" title="InfluxData">
+      <span class="icon-influx-logo"></span>
+      <span class="icon-influx-logotype"></span>
+    </a>
+    <span class="divider"></span>
+    <a class="docs-home" href="/{{ $.Site.Data.versions.latest_version }}">Docs</a>
+  </div>
+  <div class="topnav--right">
+    <div class="version-selector">
+      {{ $currentVersion := (index (findRE "[^/]+.*?" .RelPermalink) 0) }}
+      {{ if eq $currentVersion nil }}
+        <p class="selected">Select Version</p>
+      {{ else }}
+        <p class="selected">{{ $currentVersion }}</p>
+      {{ end }}
+      <ul class="version-list">
+        {{ range .Site.Menus.versions.ByName.Reverse }}
+          <li><a href="{{ .URL }}" {{if in .Name "1.x" }}class="legacy" target="_blank"{{ end }}>{{ .Name }}</a></li>
+        {{ end }}
+    </div>
+    <button class="theme-switcher" id="theme-switch-light" onclick="switch_style('light-theme');return false;"><span class="icon-sun1"></span></button>
+    <button class="theme-switcher" id="theme-switch-dark" onclick="switch_style('dark-theme');return false;"><span class="icon-moon1"></span></button>
+  </div>
+</div>
diff --git a/layouts/shortcodes/code-tab-content.html b/layouts/shortcodes/code-tab-content.html
new file mode 100644
index 0000000000..151b19b9c2
--- /dev/null
+++ b/layouts/shortcodes/code-tab-content.html
@@ -0,0 +1,3 @@
+<section class="code-tab-content">
+  {{ .Inner }}
+</section>
diff --git a/layouts/shortcodes/code-tabs-wrapper.html b/layouts/shortcodes/code-tabs-wrapper.html
new file mode 100644
index 0000000000..71b5f3120e
--- /dev/null
+++ b/layouts/shortcodes/code-tabs-wrapper.html
@@ -0,0 +1,3 @@
+<div class="code-tabs-wrapper">
+  {{ .Inner }}
+</div>
diff --git a/layouts/shortcodes/code-tabs.html b/layouts/shortcodes/code-tabs.html
new file mode 100644
index 0000000000..4d61d40f72
--- /dev/null
+++ b/layouts/shortcodes/code-tabs.html
@@ -0,0 +1,3 @@
+<div class="code-tabs">
+  {{ .Inner }}
+</div>
diff --git a/layouts/shortcodes/enterprise.html b/layouts/shortcodes/enterprise.html
new file mode 100644
index 0000000000..b32106e640
--- /dev/null
+++ b/layouts/shortcodes/enterprise.html
@@ -0,0 +1,4 @@
+<div class="enterprise">
+  <a class="enterprise-flag" href="#enterprise-msg"></a>
+  {{ .Inner }}
+</div>
diff --git a/layouts/shortcodes/img-hd.html b/layouts/shortcodes/img-hd.html
new file mode 100644
index 0000000000..9c08a761c7
--- /dev/null
+++ b/layouts/shortcodes/img-hd.html
@@ -0,0 +1,7 @@
+{{ .Inner }}
+{{ $src := .Get "src" }}
+{{ $alt := .Get "alt" }}
+{{ with (imageConfig ( print "/static" $src )) }}
+  {{ $imageWidth := div .Width 2 }}
+  <img src='{{ $src }}' alt='{{ $alt }}' width='{{ $imageWidth }}' />
+{{ end }}
diff --git a/layouts/shortcodes/note.html b/layouts/shortcodes/note.html
new file mode 100644
index 0000000000..dff2592440
--- /dev/null
+++ b/layouts/shortcodes/note.html
@@ -0,0 +1,3 @@
+<div class="note">
+  {{ .Inner }}
+</div>
diff --git a/layouts/shortcodes/tab-content.html b/layouts/shortcodes/tab-content.html
new file mode 100644
index 0000000000..d88086a17b
--- /dev/null
+++ b/layouts/shortcodes/tab-content.html
@@ -0,0 +1,3 @@
+<section class="tab-content">
+  {{ .Inner }}
+</section>
diff --git a/layouts/shortcodes/tabs-wrapper.html b/layouts/shortcodes/tabs-wrapper.html
new file mode 100644
index 0000000000..4b935378b6
--- /dev/null
+++ b/layouts/shortcodes/tabs-wrapper.html
@@ -0,0 +1,3 @@
+<div class="tabs-wrapper">
+  {{ .Inner }}
+</div>
diff --git a/layouts/shortcodes/tabs.html b/layouts/shortcodes/tabs.html
new file mode 100644
index 0000000000..94db29833b
--- /dev/null
+++ b/layouts/shortcodes/tabs.html
@@ -0,0 +1,3 @@
+<div class="tabs">
+  {{ .Inner }}
+</div>
diff --git a/layouts/shortcodes/truncate.html b/layouts/shortcodes/truncate.html
new file mode 100644
index 0000000000..0aebb52c3a
--- /dev/null
+++ b/layouts/shortcodes/truncate.html
@@ -0,0 +1,6 @@
+<div class="truncate closed">
+  {{ .Inner }}
+  <div class="truncate-bottom">
+    <a class="truncate-toggle" href="#"></a>
+  </div>
+</div>
diff --git a/layouts/shortcodes/warn.html b/layouts/shortcodes/warn.html
new file mode 100644
index 0000000000..a5963d4c8d
--- /dev/null
+++ b/layouts/shortcodes/warn.html
@@ -0,0 +1,3 @@
+<div class="warn">
+  {{ .Inner }}
+</div>
diff --git a/static/fonts/KlavikaBoldBoldItalic.otf b/static/fonts/KlavikaBoldBoldItalic.otf
new file mode 100644
index 0000000000..95bdd97678
Binary files /dev/null and b/static/fonts/KlavikaBoldBoldItalic.otf differ
diff --git a/static/fonts/KlavikaLight-ItalicTF.otf b/static/fonts/KlavikaLight-ItalicTF.otf
new file mode 100644
index 0000000000..5fdbc356e2
Binary files /dev/null and b/static/fonts/KlavikaLight-ItalicTF.otf differ
diff --git a/static/fonts/icomoon.eot b/static/fonts/icomoon.eot
new file mode 100755
index 0000000000..e806e53b85
Binary files /dev/null and b/static/fonts/icomoon.eot differ
diff --git a/static/fonts/icomoon.svg b/static/fonts/icomoon.svg
new file mode 100755
index 0000000000..9031b95965
--- /dev/null
+++ b/static/fonts/icomoon.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="icomoon" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
+<glyph unicode="&#xe900;" glyph-name="influx-logo" d="M875.52 371.2l-70.656 307.61c-4.096 16.794-19.456 33.587-35.635 38.298l-322.56 99.123c-4.096 1.434-8.806 2.048-13.517 2.048-14.131 0-28.262-5.325-37.683-13.517l-231.424-214.835c-12.083-11.469-19.456-33.587-15.565-49.766l75.366-329.114c4.096-16.794 19.456-33.587 35.635-38.298l301.466-92.979c4.096-1.434 8.806-2.048 13.517-2.048 14.131 0 28.262 5.325 37.683 13.517l247.603 229.581c12.902 12.083 19.661 33.587 15.77 50.381zM479.642 742.707l220.774-67.994c8.806-2.662 8.806-6.758 0-8.806l-116.531-26.829c-8.806-2.048-20.89 2.048-26.829 7.987l-81.51 87.654c-6.554 7.373-4.71 10.854 4.096 7.987zM617.677 345.6c2.048-8.806-3.277-14.131-12.083-11.469l-239.002 74.138c-8.806 2.662-10.035 10.035-3.277 16.179l183.091 169.574c6.758 6.144 13.517 4.096 15.565-4.71l55.706-243.712zM223.846 563.098l193.946 180.429c6.758 6.144 16.794 6.144 23.552-0.614l97.69-105.062c6.144-6.758 6.144-16.794-0.614-23.552l-194.56-180.429c-6.758-6.144-16.794-6.144-23.552 0.614l-96.87 105.062c-6.349 6.758-5.53 17.408 0.41 23.552zM270.95 276.378l-51.2 225.485c-2.048 8.806 1.434 10.854 7.373 4.096l81.51-87.45c6.144-6.758 8.806-18.842 6.144-27.648l-35.021-114.483c-2.662-8.806-6.758-8.806-8.806 0zM555.008 145.101l-253.133 78.029c-8.806 2.662-13.517 12.083-10.854 20.89l42.394 136.602c2.662 8.806 12.083 13.517 20.89 10.854l252.314-78.029c8.806-2.662 13.517-12.083 10.854-20.89l-42.394-136.602c-1.843-8.806-11.264-13.517-20.070-10.854zM779.878 328.806l-169.574-156.877c-6.758-6.144-10.035-4.096-7.373 4.71l35.021 114.483c2.662 8.806 12.083 17.408 20.89 19.456l116.531 26.829c9.216 1.638 11.264-1.843 4.506-8.602zM798.72 362.598l-139.264-31.539c-8.806-2.048-17.408 3.277-19.456 12.083l-59.187 257.843c-2.048 8.806 3.277 17.408 12.083 19.456l139.264 31.539c8.806 2.048 17.408-3.277 19.456-12.083l59.187-257.843c2.048-8.806-3.277-17.613-12.083-19.456z" />
+<glyph unicode="&#xe901;" glyph-name="influx-logotype" horiz-adv-x="2992" d="M2804.941 262.861c-1.434-7.987 2.662-10.035 6.144-10.035h19.456c6.758 0 8.806 6.758 8.806 10.035v0l53.248 302.899c-38.298 14.131-82.739 21.504-113.050 21.504-88.269 0-123.904-35.021-139.264-121.242l-24.986-140.698c-1.434-8.806-2.048-16.794-2.048-24.166 0-40.346 22.938-55.091 64.717-55.091 47.104 0 94.208 22.118 131.891 54.477l-4.915-37.683zM2681.651 279.654c-20.275 0-30.31 5.325-30.31 26.214 0 5.325 0.614 11.469 2.048 19.456l23.552 133.939c12.698 72.090 36.25 94.208 97.69 94.208 26.829 0 58.573-5.325 76.8-10.854l-35.021-198.656c-42.598-37.274-93.594-64.307-134.758-64.307zM2600.96 553.062v0l4.71 21.504c1.434 6.144-1.434 5.325-4.71 5.325h-92.16l12.698 75.366c1.434 7.987-4.096 9.421-7.987 8.806v0l-20.89-2.662c-6.144-0.614-8.806-6.144-8.806-8.806v0l-12.698-72.090h-57.139c-1.434 0-6.144-0.614-7.373-5.325l-3.277-20.89c0-2.048 0-6.144 5.325-6.144h55.91l-43.008-244.941c-0.614-4.71-1.434-8.806-1.434-12.698 0-29.696 20.89-43.827 53.862-43.827 25.6 0 72.090 7.373 94.822 18.842 6.758 4.096 6.144 8.806 4.71 12.083v0l-4.71 13.517c-1.434 2.662-4.71 2.662-7.373 2.048v0c-22.118-8.806-35.021-13.517-80.691-13.517-15.565 0-22.118 3.277-22.118 16.179 0 3.277 0.614 7.373 1.434 12.083l42.394 241.050h91.546c4.301-0.614 6.349 1.434 6.963 4.096zM2267.75 262.861c-1.434-7.987 2.662-10.035 6.144-10.035h19.456c6.758 0 8.806 6.758 8.806 10.035v0l53.248 302.899c-38.298 14.131-82.739 21.504-113.050 21.504-88.269 0-123.904-35.021-139.264-121.242l-24.986-140.698c-1.434-8.806-2.048-16.794-2.048-24.166 0-40.346 22.938-55.091 64.717-55.091 47.104 0 94.208 22.118 131.891 54.477l-4.915-37.683zM2145.28 279.654c-20.275 0-30.31 5.325-30.31 26.214 0 5.325 0.614 11.469 2.048 19.456l23.552 133.939c12.698 72.090 36.25 94.208 97.69 94.208 26.829 0 58.573-5.325 76.8-10.854l-35.021-198.656c-42.598-37.274-93.798-64.307-134.758-64.307zM1935.974 262.861c-1.434-7.987 2.662-10.035 6.144-10.035h19.456c6.758 0 8.806 6.758 8.806 10.035l78.848 446.259c1.434 7.987-4.096 9.421-7.987 8.806v0l-20.89-2.662c-6.144-0.614-8.806-6.144-8.806-8.806v0l-22.938-130.662c-20.275 6.144-57.958 10.854-79.462 10.854-83.558 0-123.904-32.358-139.264-121.242l-24.986-140.698c-1.434-8.806-2.048-16.794-2.048-24.166 0-40.346 22.938-55.091 64.717-55.091 47.104 0 96.256 22.118 133.939 54.477l-5.53-37.069zM1810.842 279.654c-20.275 0-30.31 5.325-30.31 26.214 0 5.325 0.614 11.469 2.048 19.456l23.552 133.939c12.698 72.704 37.683 94.208 97.69 94.208 26.214 0 52.429-4.096 78.848-10.854l-35.021-198.656c-42.598-37.274-95.232-64.307-136.806-64.307zM1717.862 579.891h-94.208c-4.096 0-9.421-3.277-10.854-6.144l-66.56-96.87-39.117 100.966c-2.048 5.325-7.373 7.373-11.469 6.758l-82.125-12.083 70.656-155.443-129.843-164.25h88.269c6.144 0 14.131 2.662 18.842 7.987l61.235 73.318 34.406-73.318c2.048-4.096 7.373-7.987 12.698-7.987h86.221l-69.427 152.166 131.277 174.899zM1313.382 258.765l55.91 320.307c1.434 6.758-4.096 6.758-7.987 6.144l-78.848-10.854c-8.806-1.434-10.854-7.373-11.469-10.854v0l-34.406-194.56c-24.166-12.083-67.379-30.925-84.787-30.925-9.421 0-12.698 3.277-12.698 10.035 0 2.662 0.614 6.758 1.434 10.035l38.298 220.774c1.434 6.758-4.096 6.758-7.373 6.144l-78.029-10.854c-8.806-1.434-10.854-7.373-11.469-10.854v0l-37.683-213.402c-2.048-13.517-3.277-24.166-3.277-37.683 0-40.96 16.794-66.56 59.802-66.56 37.683 0 78.029 12.698 129.229 37.069l0.614-24.166c0-2.048 0.614-6.144 4.096-6.144h72.704c3.891 0.41 5.939 3.686 5.939 6.349zM966.656 267.571l79.462 452.403c1.434 6.758-2.662 6.758-6.144 6.144l-90.931-14.746c-40.96 11.469-87.45 16.179-114.483 16.179-84.173 0-112.435-28.877-125.952-104.243l-7.373-43.008h-36.25c-10.035 0-10.854-4.71-11.469-8.806v0l-10.854-63.283c-0.614-2.662 0.614-5.325 4.71-5.325h40.96l-44.442-249.651c-5.325-29.696-9.421-47.104-37.683-76.8v0c-5.325-5.325-4.096-7.373 0-10.854v0l49.766-46.49c5.325-4.71 7.373-3.277 12.698 2.048 45.67 46.49 60.621 77.414 67.994 121.242l45.67 260.506h72.704c4.096 0 5.325 0 6.758 5.325v0l17.408 65.946c1.434 4.71-3.277 6.144-6.758 6.144h-76.8l8.806 47.718c3.277 16.794 10.035 22.118 31.539 22.118 28.262 0 74.138-5.325 99.533-12.083l-64.717-370.278c-2.662-13.517-1.434-14.746 10.035-14.746h70.042c9.011-0.205 13.107-0.205 15.77 14.541zM534.528 586.65c-37.683 0-78.029-12.698-129.229-37.069l0.614 28.877c0 7.373-5.325 6.144-9.421 5.325l-61.235-10.035c-10.035-2.048-13.517-7.987-14.131-11.469l-51.814-295.526c-2.662-13.517-1.434-14.746 10.035-14.746h70.042c7.987 0 12.083 0 14.746 14.746l34.406 196.608c25.6 13.517 67.379 30.925 84.787 30.925 9.421 0 12.698-2.662 12.698-9.421 0-2.662-0.614-6.144-1.434-10.035l-36.25-208.077c-2.662-13.517-1.434-14.746 10.035-14.746h70.042c7.987 0 12.083 0 14.746 14.746l37.683 215.45c2.662 16.794 3.277 26.214 3.277 37.683 0.41 41.779-15.77 66.765-59.597 66.765zM270.746 725.299l-15.565-84.787c-2.048-10.854-4.096-10.854-11.469-12.083l-77.414-10.854c-8.806-1.434-9.421-1.434-7.987 8.806l14.131 82.125c0.614 2.662 2.662 8.806 11.469 10.035l78.848 10.854c7.373 1.229 8.602 0.614 7.987-4.096zM236.339 585.216l-78.643-10.65c-8.806-1.434-10.854-7.373-11.469-10.854v0l-52.429-298.189c-2.048-11.469-0.614-12.698 10.035-12.698h70.042c7.987 0 12.083 0 14.746 14.746v0l55.091 311.706c2.048 6.758-3.277 5.939-7.373 5.939z" />
+<glyph unicode="&#xe902;" glyph-name="alert-triangle" d="M981.333 192l-358.4 605.867c-17.067 29.867-46.933 51.2-81.067 59.733s-68.267 4.267-98.133-12.8c-17.067-8.533-34.133-25.6-42.667-42.667 0 0 0 0 0 0l-358.4-610.133c-34.133-59.733-12.8-140.8 46.933-174.933 17.067-12.8 38.4-17.067 59.733-17.067h725.333c34.133 0 68.267 12.8 89.6 38.4 25.6 25.6 38.4 55.467 38.4 89.6-4.267 21.333-8.533 46.933-21.333 64zM904.533 98.134c-8.533-8.533-21.333-12.8-29.867-12.8h-725.333c-8.533 0-12.8 0-21.333 4.267-21.333 12.8-25.6 38.4-17.067 59.733l362.667 601.6c4.267 4.267 8.533 12.8 12.8 12.8 21.333 12.8 46.933 4.267 59.733-12.8l362.667-601.6c4.267-4.267 4.267-12.8 4.267-21.333 4.267-12.8-4.267-21.333-8.533-29.867zM512 597.334c-25.6 0-42.667-17.067-42.667-42.667v-170.667c0-25.6 17.067-42.667 42.667-42.667s42.667 17.067 42.667 42.667v170.667c0 25.6-17.067 42.667-42.667 42.667zM482.133 243.2c-8.533-8.533-12.8-17.067-12.8-29.867s4.267-21.333 12.8-29.867c8.533-8.533 17.067-12.8 29.867-12.8s21.333 4.267 29.867 12.8c8.533 8.533 12.8 21.333 12.8 29.867s-4.267 21.333-12.8 29.867c-17.067 17.067-42.667 17.067-59.733 0z" />
+<glyph unicode="&#xe903;" glyph-name="arrow-down" d="M840.533 456.534c-17.067 17.067-42.667 17.067-59.733 0l-226.133-226.133v494.933c0 25.6-17.067 42.667-42.667 42.667s-42.667-17.067-42.667-42.667v-494.933l-226.133 226.133c-17.067 17.067-42.667 17.067-59.733 0s-17.067-42.667 0-59.733l298.667-298.667c4.267-4.267 8.533-8.533 12.8-8.533 4.267-4.267 12.8-4.267 17.067-4.267s12.8 0 17.067 4.267c4.267 4.267 8.533 4.267 12.8 8.533l298.667 298.667c17.067 17.067 17.067 42.667 0 59.733z" />
+<glyph unicode="&#xe904;" glyph-name="moon1" d="M513.707 148.992c-165.888 0-301.056 135.168-301.056 301.056 0.341 149.504 107.861 274.091 255.317 296.619 10.923 1.707 21.845-4.096 26.965-13.995 4.779-9.899 2.731-22.187-5.12-29.696-38.912-37.205-60.416-87.381-60.416-141.312 0-108.544 88.064-196.608 196.608-196.608 53.931 0 103.765 21.504 141.312 60.416 7.851 8.192 19.797 10.24 29.696 5.12s15.701-15.701 13.995-26.965c-23.211-147.456-148.139-254.635-297.301-254.635zM405.163 674.645c-84.651-40.277-140.971-125.952-141.312-224.597 0-137.557 111.957-249.856 249.856-249.856 98.304 0 183.979 56.32 224.597 140.629-34.475-17.749-72.704-26.965-112.64-26.965-136.533 0-247.808 111.275-247.808 247.808 0 39.936 9.557 78.507 27.307 112.981z" />
+<glyph unicode="&#xe905;" glyph-name="search" d="M468.651 251.733c-136.533 0-247.467 110.933-247.467 247.467s110.933 247.467 247.467 247.467 247.467-110.933 247.467-247.467c0-136.533-110.933-247.467-247.467-247.467zM468.651 695.467c-108.203 0-196.267-88.064-196.267-196.267s88.064-196.267 196.267-196.267 196.267 88.064 196.267 196.267c0 108.203-88.064 196.267-196.267 196.267zM777.216 164.693c-6.485 0-12.971 2.389-18.091 7.509l-147.456 147.797c-9.899 9.899-9.899 26.283 0 36.181s26.283 9.899 36.181 0l147.456-147.797c9.899-9.899 9.899-26.283 0-36.181-5.12-5.12-11.605-7.509-18.091-7.509z" />
+<glyph unicode="&#xe906;" glyph-name="sun1" d="M512 280.064c-92.501 0-167.936 75.435-167.936 167.936s75.435 167.936 167.936 167.936 167.936-75.435 167.936-167.936-75.435-167.936-167.936-167.936zM512 564.736c-64.512 0-116.736-52.224-116.736-116.736s52.224-116.736 116.736-116.736 116.736 52.224 116.736 116.736-52.224 116.736-116.736 116.736zM512 663.381c-13.995 0-25.6 11.605-25.6 25.6v97.963c0 13.995 11.605 25.6 25.6 25.6s25.6-11.605 25.6-25.6v-97.963c0-13.995-11.605-25.6-25.6-25.6zM341.333 593.067c-6.485 0-12.971 2.389-18.091 7.509l-69.291 68.949c-9.899 9.899-9.899 26.283 0 36.181s26.283 9.899 36.181 0l69.291-69.291c9.899-9.899 9.899-26.283 0-36.181-4.779-4.779-11.264-7.168-18.091-7.168zM271.019 422.4h-97.963c-13.995 0-25.6 11.605-25.6 25.6s11.605 25.6 25.6 25.6h97.963c13.995 0 25.6-11.605 25.6-25.6s-11.605-25.6-25.6-25.6zM272.384 182.784c-6.485 0-12.971 2.389-18.091 7.509-9.899 9.899-9.899 26.283 0 36.181l69.291 69.291c9.899 9.899 26.283 9.899 36.181 0s9.899-26.283 0-36.181l-69.291-69.291c-5.12-5.12-11.605-7.509-18.091-7.509zM512 83.456c-13.995 0-25.6 11.605-25.6 25.6v97.963c0 13.995 11.605 25.6 25.6 25.6s25.6-11.605 25.6-25.6v-97.963c0-14.336-11.605-25.6-25.6-25.6zM751.616 182.784c-6.485 0-12.971 2.389-18.091 7.509l-69.291 69.291c-9.899 9.899-9.899 26.283 0 36.181s26.283 9.899 36.181 0l69.291-69.291c9.899-9.899 9.899-26.283 0-36.181-4.779-5.12-11.264-7.509-18.091-7.509zM850.944 422.4h-97.963c-13.995 0-25.6 11.605-25.6 25.6s11.605 25.6 25.6 25.6h97.963c13.995 0 25.6-11.605 25.6-25.6s-11.264-25.6-25.6-25.6zM682.667 593.067c-6.485 0-12.971 2.389-18.091 7.509-9.899 9.899-9.899 26.283 0 36.181l69.291 69.291c9.899 9.899 26.283 9.899 36.181 0s9.899-26.283 0-36.181l-69.291-69.291c-5.12-5.12-11.605-7.509-18.091-7.509z" />
+<glyph unicode="&#xe907;" glyph-name="arrow-down-circle" d="M512 896c-260.267 0-469.333-209.067-469.333-469.333s209.067-469.333 469.333-469.333 469.333 209.067 469.333 469.333-209.067 469.333-469.333 469.333zM512 42.667c-213.333 0-384 170.667-384 384s170.667 384 384 384c213.333 0 384-170.667 384-384s-170.667-384-384-384zM652.8 456.534l-98.133-98.133v238.933c0 25.6-17.067 42.667-42.667 42.667s-42.667-17.067-42.667-42.667v-238.933l-98.133 98.133c-17.067 17.067-42.667 17.067-59.733 0s-17.067-42.667 0-59.733l170.667-170.667c4.267-4.267 8.533-8.533 12.8-8.533 4.267-4.267 12.8-4.267 17.067-4.267s12.8 0 17.067 4.267c4.267 4.267 8.533 4.267 12.8 8.533l170.667 170.667c17.067 17.067 17.067 42.667 0 59.733s-42.667 17.067-59.733 0z" />
+<glyph unicode="&#xe908;" glyph-name="arrow-down-left" d="M725.333 256h-324.267l354.133 354.133c17.067 17.067 17.067 42.667 0 59.733s-42.667 17.067-59.733 0l-354.133-354.133v324.267c0 25.6-17.067 42.667-42.667 42.667s-42.667-17.067-42.667-42.667v-426.667c0-4.267 0-12.8 4.267-17.067 4.267-8.533 12.8-17.067 21.333-21.333 4.267-4.267 12.8-4.267 17.067-4.267h426.667c25.6 0 42.667 17.067 42.667 42.667s-17.067 42.667-42.667 42.667z" />
+<glyph unicode="&#xe909;" glyph-name="arrow-down-right" d="M768 640c0 25.6-17.067 42.667-42.667 42.667s-42.667-17.067-42.667-42.667v-324.267l-354.133 354.133c-17.067 17.067-42.667 17.067-59.733 0s-17.067-42.667 0-59.733l354.133-354.133h-324.267c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667h426.667c4.267 0 12.8 0 17.067 4.267 8.533 4.267 17.067 12.8 21.333 21.333 4.267 4.267 4.267 12.8 4.267 17.067v426.667z" />
+<glyph unicode="&#xe90a;" glyph-name="arrow-left" d="M810.667 469.334h-494.933l226.133 226.133c17.067 17.067 17.067 42.667 0 59.733s-42.667 17.067-59.733 0l-298.667-298.667c-4.267-4.267-8.533-8.533-8.533-12.8-4.267-8.533-4.267-21.333 0-34.133 4.267-4.267 4.267-8.533 8.533-12.8l298.667-298.667c8.533-8.533 21.333-12.8 29.867-12.8s21.333 4.267 29.867 12.8c17.067 17.067 17.067 42.667 0 59.733l-226.133 226.133h494.933c25.6 0 42.667 17.067 42.667 42.667s-17.067 42.667-42.667 42.667z" />
+<glyph unicode="&#xe90b;" glyph-name="arrow-left-circle" d="M512 896c-260.267 0-469.333-209.067-469.333-469.333s209.067-469.333 469.333-469.333 469.333 209.067 469.333 469.333-209.067 469.333-469.333 469.333zM512 42.667c-213.333 0-384 170.667-384 384s170.667 384 384 384c213.333 0 384-170.667 384-384s-170.667-384-384-384zM682.667 469.334h-238.933l98.133 98.133c17.067 17.067 17.067 42.667 0 59.733s-42.667 17.067-59.733 0l-170.667-170.667c-4.267-4.267-8.533-8.533-8.533-12.8-4.267-8.533-4.267-21.333 0-34.133 4.267-4.267 4.267-8.533 8.533-12.8l170.667-170.667c8.533-8.533 21.333-12.8 29.867-12.8s21.333 4.267 29.867 12.8c17.067 17.067 17.067 42.667 0 59.733l-98.133 98.133h238.933c25.6 0 42.667 17.067 42.667 42.667s-17.067 42.667-42.667 42.667z" />
+<glyph unicode="&#xe90c;" glyph-name="arrow-right" d="M849.067 409.6c4.267 8.533 4.267 21.333 0 34.133-4.267 4.267-4.267 8.533-8.533 12.8l-298.667 298.667c-17.067 17.067-42.667 17.067-59.733 0s-17.067-42.667 0-59.733l226.133-226.133h-494.933c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667h494.933l-226.133-226.133c-17.067-17.067-17.067-42.667 0-59.733 8.533-8.533 21.333-12.8 29.867-12.8s21.333 4.267 29.867 12.8l298.667 298.667c4.267 4.267 8.533 8.533 8.533 12.8z" />
+<glyph unicode="&#xe90d;" glyph-name="arrow-right-circle" d="M512 896c-260.267 0-469.333-209.067-469.333-469.333s209.067-469.333 469.333-469.333 469.333 209.067 469.333 469.333-209.067 469.333-469.333 469.333zM512 42.667c-213.333 0-384 170.667-384 384s170.667 384 384 384c213.333 0 384-170.667 384-384s-170.667-384-384-384zM721.067 443.734c-4.267 4.267-4.267 8.533-8.533 12.8l-170.667 170.667c-17.067 17.067-42.667 17.067-59.733 0s-17.067-42.667 0-59.733l98.133-98.133h-238.933c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667h238.933l-98.133-98.133c-17.067-17.067-17.067-42.667 0-59.733 8.533-8.533 21.333-12.8 29.867-12.8s21.333 4.267 29.867 12.8l170.667 170.667c4.267 4.267 8.533 8.533 8.533 12.8 4.267 12.8 4.267 21.333 0 34.133z" />
+<glyph unicode="&#xe90e;" glyph-name="arrow-up" d="M840.533 456.534l-298.667 298.667c-4.267 4.267-8.533 8.533-12.8 8.533-8.533 4.267-21.333 4.267-34.133 0-4.267-4.267-8.533-4.267-12.8-8.533l-298.667-298.667c-17.067-17.067-17.067-42.667 0-59.733s42.667-17.067 59.733 0l226.133 226.133v-494.933c0-25.6 17.067-42.667 42.667-42.667s42.667 17.067 42.667 42.667v494.933l226.133-226.133c8.533-8.533 21.333-12.8 29.867-12.8s21.333 4.267 29.867 12.8c17.067 17.067 17.067 42.667 0 59.733z" />
+<glyph unicode="&#xe90f;" glyph-name="arrow-up-circle" d="M512 896c-260.267 0-469.333-209.067-469.333-469.333s209.067-469.333 469.333-469.333 469.333 209.067 469.333 469.333-209.067 469.333-469.333 469.333zM512 42.667c-213.333 0-384 170.667-384 384s170.667 384 384 384c213.333 0 384-170.667 384-384s-170.667-384-384-384zM541.867 627.2c-4.267 4.267-8.533 8.533-12.8 8.533-8.533 4.267-21.333 4.267-34.133 0-4.267-4.267-8.533-4.267-12.8-8.533l-170.667-170.667c-17.067-17.067-17.067-42.667 0-59.733s42.667-17.067 59.733 0l98.133 98.133v-238.933c0-25.6 17.067-42.667 42.667-42.667s42.667 17.067 42.667 42.667v238.933l98.133-98.133c8.533-8.533 21.333-12.8 29.867-12.8s21.333 4.267 29.867 12.8c17.067 17.067 17.067 42.667 0 59.733l-170.667 170.667z" />
+<glyph unicode="&#xe910;" glyph-name="arrow-up-left" d="M401.067 597.334h324.267c25.6 0 42.667 17.067 42.667 42.667s-17.067 42.667-42.667 42.667h-426.667c-4.267 0-12.8 0-17.067-4.267-8.533-4.267-17.067-12.8-21.333-21.333-4.267-4.267-4.267-12.8-4.267-17.067v-426.667c0-25.6 17.067-42.667 42.667-42.667s42.667 17.067 42.667 42.667v324.267l354.133-354.133c8.533-8.533 21.333-12.8 29.867-12.8s21.333 4.267 29.867 12.8c17.067 17.067 17.067 42.667 0 59.733l-354.133 354.133z" />
+<glyph unicode="&#xe911;" glyph-name="arrow-up-right" d="M763.733 657.067c-4.267 8.533-12.8 17.067-21.333 21.333-4.267 4.267-12.8 4.267-17.067 4.267h-426.667c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667h324.267l-354.133-354.133c-17.067-17.067-17.067-42.667 0-59.733 8.533-8.533 17.067-12.8 29.867-12.8s21.333 4.267 29.867 12.8l354.133 354.133v-324.267c0-25.6 17.067-42.667 42.667-42.667s42.667 17.067 42.667 42.667v426.667c0 4.267 0 12.8-4.267 17.067z" />
+<glyph unicode="&#xe912;" glyph-name="check" d="M883.2 712.534c-17.067 17.067-42.667 17.067-59.733 0l-439.467-439.467-183.467 183.467c-17.067 17.067-42.667 17.067-59.733 0s-17.067-42.667 0-59.733l213.333-213.333c8.533-8.533 17.067-12.8 29.867-12.8s21.333 4.267 29.867 12.8l469.333 469.333c17.067 17.067 17.067 42.667 0 59.733z" />
+<glyph unicode="&#xe913;" glyph-name="heart1" d="M917.333 772.267v0c-51.2 51.2-119.467 81.067-192 81.067v0c-72.533 0-145.067-29.867-196.267-81.067 0 0 0 0 0 0l-17.067-17.067-17.067 17.067c-51.2 51.2-119.467 81.067-196.267 81.067-72.533 0-140.8-29.867-192-81.067s-85.333-123.733-85.333-196.267 29.867-145.067 81.067-196.267l375.467-375.467c8.533-8.533 17.067-12.8 29.867-12.8s21.333 4.267 29.867 12.8l375.467 375.467c115.2 106.667 115.2 285.867 4.267 392.533zM857.6 439.467l-345.6-345.6-345.6 345.6c-76.8 76.8-76.8 196.267 0 273.067 34.133 38.4 85.333 55.467 132.267 55.467 51.2 0 98.133-17.067 136.533-55.467l46.933-46.933c17.067-17.067 42.667-17.067 59.733 0l42.667 46.933c0 0 0 0 0 0 38.4 34.133 85.333 55.467 140.8 55.467 0 0 0 0 0 0 51.2 0 98.133-21.333 136.533-55.467v0c34.133-38.4 55.467-85.333 55.467-136.533s-21.333-98.133-59.733-136.533z" />
+<glyph unicode="&#xe914;" glyph-name="settings" d="M512 597.334c-93.867 0-170.667-76.8-170.667-170.667s76.8-170.667 170.667-170.667c93.867 0 170.667 76.8 170.667 170.667s-76.8 170.667-170.667 170.667zM512 341.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333zM866.133 281.6c4.267 8.533 12.8 17.067 29.867 17.067 72.533 0 128 55.467 128 128s-55.467 128-128 128h-8.533c-8.533 0-17.067 4.267-21.333 12.8 0 4.267 0 4.267-4.267 8.533-4.267 8.533-4.267 21.333 8.533 34.133 51.2 51.2 51.2 132.267 0 179.2v0c0 0 0 0 0 0-25.6 25.6-55.467 38.4-89.6 38.4 0 0 0 0 0 0-34.133 0-68.267-12.8-93.867-38.4-8.533-8.533-21.333-8.533-29.867-4.267-8.533 0-17.067 12.8-17.067 25.6 0 72.533-55.467 128-128 128s-128-55.467-128-128v-8.533c0-8.533-4.267-17.067-12.8-21.333-4.267 0-4.267 0-8.533-4.267-8.533-4.267-21.333 0-34.133 8.533-51.2 51.2-132.267 51.2-179.2 0-51.2-51.2-51.2-132.267 4.267-183.467 8.533-8.533 8.533-21.333 4.267-34.133-4.267-8.533-17.067-17.067-29.867-17.067-72.533 0-128-55.467-128-128s55.467-128 128-128h8.533c12.8 0 21.333-8.533 25.6-17.067s4.267-21.333-8.533-34.133c-25.6-25.6-38.4-55.467-38.4-89.6s12.8-64 38.4-89.6c0 0 0 0 0 0 51.2-51.2 132.267-51.2 183.467 4.267 8.533 8.533 21.333 8.533 34.133 4.267s17.067-12.8 17.067-29.867c0-72.533 55.467-128 128-128s128 55.467 128 128v8.533c0 12.8 8.533 21.333 17.067 25.6s21.333 4.267 34.133-8.533c51.2-51.2 132.267-51.2 179.2 0 51.2 51.2 51.2 132.267-4.267 183.467-4.267 8.533-8.533 21.333-4.267 29.867 0 0 0 0 0 0zM789.333 315.734c-17.067-42.667-8.533-89.6 25.6-128 8.533-8.533 12.8-17.067 12.8-29.867s-4.267-21.333-12.8-29.867c-8.533-8.533-17.067-12.8-29.867-12.8 0 0 0 0 0 0-12.8 0-21.333 4.267-34.133 17.067-34.133 34.133-81.067 42.667-123.733 21.333-42.667-17.067-68.267-59.733-68.267-102.4v-8.533c0-25.6-17.067-42.667-42.667-42.667s-42.667 17.067-42.667 42.667c0 0 0 4.267 0 4.267 0 46.933-29.867 85.333-72.533 102.4-12.8 8.533-29.867 8.533-46.933 8.533-29.867 0-59.733-12.8-81.067-34.133-17.067-17.067-42.667-17.067-59.733 0 0 0 0 0 0 0v0c-8.533 8.533-12.8 17.067-12.8 29.867s4.267 21.333 17.067 34.133c34.133 34.133 42.667 81.067 21.333 123.733-17.067 42.667-59.733 68.267-102.4 68.267h-8.533c-25.6 0-42.667 17.067-42.667 42.667s17.067 42.667 42.667 42.667c0 0 4.267 0 4.267 0 46.933 0 85.333 29.867 102.4 72.533s8.533 89.6-25.6 128c-17.067 17.067-17.067 42.667 0 59.733s42.667 17.067 64-4.267c29.867-29.867 76.8-38.4 115.2-25.6 4.267 0 8.533 0 12.8 4.267 42.667 17.067 68.267 59.733 68.267 102.4v8.533c0 25.6 17.067 42.667 42.667 42.667s42.667-17.067 42.667-46.933c0-46.933 25.6-85.333 68.267-102.4s89.6-8.533 128 25.6c8.533 8.533 17.067 12.8 29.867 12.8v0c12.8 0 21.333-4.267 29.867-12.8 0 0 0 0 0 0 17.067-17.067 17.067-42.667-4.267-64-29.867-29.867-38.4-76.8-25.6-115.2 0-4.267 0-8.533 4.267-12.8 17.067-42.667 59.733-68.267 102.4-68.267h8.533c25.6 0 42.667-17.067 42.667-42.667s-17.067-42.667-46.933-42.667c-42.667 0-85.333-25.6-102.4-68.267z" />
+<glyph unicode="&#xe915;" glyph-name="zoom-in" d="M925.867 72.534l-157.867 157.867c51.2 64 85.333 149.333 85.333 238.933 0 213.333-170.667 384-384 384s-384-170.667-384-384c0-213.333 170.667-384 384-384 89.6 0 174.933 29.867 238.933 85.333l157.867-157.867c8.533-8.533 21.333-12.8 29.867-12.8s21.333 4.267 29.867 12.8c17.067 17.067 17.067 42.667 0 59.733zM170.667 469.334c0 166.4 132.267 298.667 298.667 298.667s298.667-132.267 298.667-298.667c0-81.067-34.133-157.867-85.333-209.067 0 0 0 0 0 0s0 0 0 0c-55.467-55.467-128-85.333-209.067-85.333-170.667-4.267-302.933 128-302.933 294.4zM597.333 512h-85.333v85.333c0 25.6-17.067 42.667-42.667 42.667s-42.667-17.067-42.667-42.667v-85.333h-85.333c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667h85.333v-85.333c0-25.6 17.067-42.667 42.667-42.667s42.667 17.067 42.667 42.667v85.333h85.333c25.6 0 42.667 17.067 42.667 42.667s-17.067 42.667-42.667 42.667z" />
+<glyph unicode="&#xe916;" glyph-name="zoom-out" d="M925.867 72.534l-157.867 157.867c51.2 64 85.333 149.333 85.333 238.933 0 213.333-170.667 384-384 384s-384-170.667-384-384c0-213.333 170.667-384 384-384 89.6 0 174.933 29.867 238.933 85.333l157.867-157.867c8.533-8.533 21.333-12.8 29.867-12.8s21.333 4.267 29.867 12.8c17.067 17.067 17.067 42.667 0 59.733zM170.667 469.334c0 166.4 132.267 298.667 298.667 298.667s298.667-132.267 298.667-298.667c0-81.067-34.133-157.867-85.333-209.067 0 0 0 0 0 0s0 0 0 0c-55.467-55.467-128-85.333-209.067-85.333-170.667-4.267-302.933 128-302.933 294.4zM597.333 512h-256c-25.6 0-42.667-17.067-42.667-42.667s17.067-42.667 42.667-42.667h256c25.6 0 42.667 17.067 42.667 42.667s-17.067 42.667-42.667 42.667z" />
+<glyph unicode="&#xe934;" glyph-name="folder-upload" d="M576 704l-128 128h-448v-832h1024v704h-448zM512 480l224-224h-160v-256h-128v256h-160l224 224z" />
+<glyph unicode="&#xe94c;" glyph-name="map2" d="M672 768l-320 128-352-128v-768l352 128 320-128 352 128v768l-352-128zM384 814.27l256-102.4v-630.138l-256 102.398v630.14zM64 723.172l256 93.090v-631.8l-256-93.088v631.798zM960 172.828l-256-93.092v631.8l256 93.090v-631.798z" />
+<glyph unicode="&#xe960;" glyph-name="download" d="M512 384l256 256h-192v256h-128v-256h-192zM744.726 488.728l-71.74-71.742 260.080-96.986-421.066-157.018-421.066 157.018 260.080 96.986-71.742 71.742-279.272-104.728v-256l512-192 512 192v256z" />
+<glyph unicode="&#xe961;" glyph-name="upload" d="M448 384h128v256h192l-256 256-256-256h192zM640 528v-98.712l293.066-109.288-421.066-157.018-421.066 157.018 293.066 109.288v98.712l-384-144v-256l512-192 512 192v256z" />
+<glyph unicode="&#xe994;" glyph-name="cog" d="M933.79 349.75c-53.726 93.054-21.416 212.304 72.152 266.488l-100.626 174.292c-28.75-16.854-62.176-26.518-97.846-26.518-107.536 0-194.708 87.746-194.708 195.99h-201.258c0.266-33.41-8.074-67.282-25.958-98.252-53.724-93.056-173.156-124.702-266.862-70.758l-100.624-174.292c28.97-16.472 54.050-40.588 71.886-71.478 53.638-92.908 21.512-211.92-71.708-266.224l100.626-174.292c28.65 16.696 61.916 26.254 97.4 26.254 107.196 0 194.144-87.192 194.7-194.958h201.254c-0.086 33.074 8.272 66.57 25.966 97.218 53.636 92.906 172.776 124.594 266.414 71.012l100.626 174.29c-28.78 16.466-53.692 40.498-71.434 71.228zM512 240.668c-114.508 0-207.336 92.824-207.336 207.334 0 114.508 92.826 207.334 207.336 207.334 114.508 0 207.332-92.826 207.332-207.334-0.002-114.51-92.824-207.334-207.332-207.334z" />
+<glyph unicode="&#xe9da;" glyph-name="heart" d="M755.188 896c-107.63 0-200.258-87.554-243.164-179-42.938 91.444-135.578 179-243.216 179-148.382 0-268.808-120.44-268.808-268.832 0-301.846 304.5-380.994 512.022-679.418 196.154 296.576 511.978 387.206 511.978 679.418 0 148.392-120.43 268.832-268.812 268.832z" />
+<glyph unicode="&#xeabd;" glyph-name="tux" d="M567.656 223.084c-81.944-38.118-158.158-37.716-209.34-34.020-61.052 4.41-110.158 21.124-131.742 35.732-13.3 9.006-31.384 5.522-40.39-7.782-9.004-13.302-5.52-31.386 7.782-40.39 34.698-23.486 96.068-40.954 160.162-45.58 10.866-0.784 22.798-1.278 35.646-1.278 55.782 0 126.626 5.316 202.42 40.57 14.564 6.778 20.878 24.074 14.104 38.64-6.776 14.566-24.076 20.872-38.642 14.108zM890.948 266.184c2.786 252.688 28.762 730.206-454.97 691.612-477.6-38.442-350.964-542.968-358.082-711.95-6.308-89.386-35.978-198.648-77.896-309.846h129.1c13.266 47.122 23.024 93.72 27.232 138.15 7.782-5.428 16.108-10.674 24.994-15.7 14.458-8.518 26.884-19.844 40.040-31.834 30.744-28.018 65.59-59.774 133.712-63.752 4.572-0.262 9.174-0.394 13.676-0.394 68.896 0 116.014 30.154 153.878 54.382 18.14 11.612 33.818 21.64 48.564 26.452 41.91 13.12 78.532 34.296 105.904 61.252 4.276 4.208 8.242 8.538 11.962 12.948 15.246-55.878 36.118-118.758 59.288-181.504h275.65c-66.174 102.224-134.436 202.374-133.052 330.184zM124.11 403.648c0 0.016 0 0.030-0.002 0.046-4.746 82.462 34.71 151.832 88.126 154.936 53.412 3.106 100.56-61.228 105.304-143.692 0-0.014 0.004-0.030 0.004-0.044 0.256-4.446 0.368-8.846 0.37-13.206-16.924-4.256-32.192-10.436-45.872-17.63-0.052 0.612-0.092 1.216-0.152 1.83 0 0.008 0 0.018 0 0.026-4.57 46.81-29.572 82.16-55.852 78.958-26.28-3.204-43.88-43.75-39.312-90.558 0-0.010 0.004-0.018 0.004-0.026 1.992-20.408 7.868-38.636 16.042-52.444-2.034-1.604-7.784-5.812-14.406-10.656-4.97-3.634-11.020-8.058-18.314-13.43-19.882 26.094-33.506 63.58-35.94 105.89zM665.26 199.822c-1.9-43.586-58.908-84.592-111.582-101.044l-0.296-0.096c-21.9-7.102-41.428-19.6-62.104-32.83-34.732-22.224-70.646-45.208-122.522-45.208-3.404 0-6.894 0.104-10.326 0.296-47.516 2.778-69.742 23.032-97.88 48.676-14.842 13.526-30.19 27.514-49.976 39.124l-0.424 0.244c-42.706 24.104-69.212 54.082-70.908 80.194-0.842 12.98 4.938 24.218 17.182 33.4 26.636 19.972 44.478 33.022 56.284 41.658 13.11 9.588 17.068 12.48 20 15.264 2.096 1.986 4.364 4.188 6.804 6.562 24.446 23.774 65.36 63.562 128.15 63.562 38.404 0 80.898-14.8 126.17-43.902 21.324-13.878 39.882-20.286 63.38-28.4 16.156-5.578 34.468-11.902 58.992-22.404l0.396-0.164c22.88-9.404 49.896-26.564 48.66-54.932zM652.646 302.194c-4.4 2.214-8.974 4.32-13.744 6.286-22.106 9.456-39.832 15.874-54.534 20.998 8.116 15.894 13.16 35.72 13.624 57.242 0 0.010 0 0.022 0 0.030 1.126 52.374-25.288 94.896-58.996 94.976-33.71 0.078-61.95-42.314-63.076-94.686 0-0.010 0-0.018 0-0.028-0.038-1.714-0.042-3.416-0.020-5.11-20.762 9.552-41.18 16.49-61.166 20.76-0.092 1.968-0.204 3.932-0.244 5.92 0 0.016 0 0.036 0 0.050-1.938 95.412 56.602 174.39 130.754 176.402 74.15 2.014 135.828-73.7 137.772-169.11 0-0.018 0-0.038 0-0.052 0.874-43.146-10.66-82.866-30.37-113.678z" />
+<glyph unicode="&#xeabe;" glyph-name="appleinc" d="M791.498 415.908c-1.294 129.682 105.758 191.876 110.542 194.966-60.152 88.020-153.85 100.078-187.242 101.472-79.742 8.074-155.596-46.948-196.066-46.948-40.368 0-102.818 45.754-168.952 44.552-86.916-1.292-167.058-50.538-211.812-128.38-90.304-156.698-23.126-388.84 64.89-515.926 43.008-62.204 94.292-132.076 161.626-129.58 64.842 2.588 89.362 41.958 167.756 41.958s100.428-41.958 169.050-40.67c69.774 1.296 113.982 63.398 156.692 125.796 49.39 72.168 69.726 142.038 70.924 145.626-1.548 0.706-136.060 52.236-137.408 207.134zM662.562 796.478c35.738 43.358 59.86 103.512 53.28 163.522-51.478-2.096-113.878-34.29-150.81-77.55-33.142-38.376-62.148-99.626-54.374-158.436 57.466-4.484 116.128 29.204 151.904 72.464z" />
+<glyph unicode="&#xeac2;" glyph-name="windows8" d="M0.35 448l-0.35 312.074 384 52.144v-364.218zM448 821.518l511.872 74.482v-448h-511.872zM959.998 384l-0.126-448-511.872 72.016v375.984zM384 16.164l-383.688 52.594-0.020 315.242h383.708z" />
+</font></defs></svg>
\ No newline at end of file
diff --git a/static/fonts/icomoon.ttf b/static/fonts/icomoon.ttf
new file mode 100755
index 0000000000..2c3f85f89e
Binary files /dev/null and b/static/fonts/icomoon.ttf differ
diff --git a/static/fonts/icomoon.woff b/static/fonts/icomoon.woff
new file mode 100755
index 0000000000..07b77f7e64
Binary files /dev/null and b/static/fonts/icomoon.woff differ
diff --git a/static/img/test-image-2.png b/static/img/test-image-2.png
new file mode 100644
index 0000000000..fe2c3976a1
Binary files /dev/null and b/static/img/test-image-2.png differ
