Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "fourth": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "header": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "content2": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/full-width/ibeam/ibeam.png b/examples/twig/flex/full-width/ibeam/ibeam.png
new file mode 100644
index 000000000..989f5e4cb
Binary files /dev/null and b/examples/twig/flex/full-width/ibeam/ibeam.png differ
diff --git a/examples/twig/flex/full-width/ibeam/ibeam.twig b/examples/twig/flex/full-width/ibeam/ibeam.twig
new file mode 100644
index 000000000..dd55f1896
--- /dev/null
+++ b/examples/twig/flex/full-width/ibeam/ibeam.twig
@@ -0,0 +1,46 @@
+{#
+/**
+ * @file
+ * I-Beam
+ * A full width single column alternative with a single centered column layou.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * full_width - Full width content region
+ * content - Single column centered content region
+ * full_width2 - Full width content region
+ * content2 - Single column centered content region
+ */
+#}
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/one-column/basic/basic.png b/examples/twig/flex/one-column/basic/basic.png
new file mode 100644
index 000000000..4bdf0e752
Binary files /dev/null and b/examples/twig/flex/one-column/basic/basic.png differ
diff --git a/examples/twig/flex/one-column/basic/basic.twig b/examples/twig/flex/one-column/basic/basic.twig
new file mode 100644
index 000000000..3e8a53760
--- /dev/null
+++ b/examples/twig/flex/one-column/basic/basic.twig
@@ -0,0 +1,40 @@
+{#
+/**
+ * @file
+ * Template for a single celled centered content layout.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - Centered single column open content area
+ * footer - Centered single column open content area
+ * content - Centered single column open content area
+ */
+#}
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/one-column/centered-container/centered-container.twig b/examples/twig/flex/one-column/centered-container/centered-container.twig
new file mode 100644
index 000000000..ab695e406
--- /dev/null
+++ b/examples/twig/flex/one-column/centered-container/centered-container.twig
@@ -0,0 +1,25 @@
+{#
+/**
+ * @file
+ * Centered container
+ *
+ * An example of how to center a container in the page.
+ *
+ * Available modifiers
+ * - None so far
+ *
+ * Available Variables
+ * - attributes: A series of tag attributes for the wrapper
+ * - modifier_class: Modifier css classes for this component.
+ * - body: A block element that is expected to be replaced with your content.
+ * - content: Your content
+ *
+ */
+#}
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/three-column/bars/bars.png b/examples/twig/flex/three-column/bars/bars.png
new file mode 100644
index 000000000..8419c6511
Binary files /dev/null and b/examples/twig/flex/three-column/bars/bars.png differ
diff --git a/examples/twig/flex/three-column/bars/bars.twig b/examples/twig/flex/three-column/bars/bars.twig
new file mode 100644
index 000000000..66cdc6d7b
--- /dev/null
+++ b/examples/twig/flex/three-column/bars/bars.twig
@@ -0,0 +1,31 @@
+{#
+/**
+ * @file
+ * Template for a three equal column layout. 33/33/33
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * first - First of three equal columns
+ * second - Second of three equal columns
+ * third - third of three equal columns
+ * body - A block area to allow for others to change wrappers around regions.
+ */
+#}
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "first": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/three-column/blastila/blastila.twig b/examples/twig/flex/three-column/blastila/blastila.twig
new file mode 100644
index 000000000..25342829c
--- /dev/null
+++ b/examples/twig/flex/three-column/blastila/blastila.twig
@@ -0,0 +1,72 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout with a single
+ * cell top most column followed by a 3 column layout where a 2 column span
+ * header region is above two single column regions and a right sidebar.
+ *
+ * Variants:
+ * layout-blastila--right - A right sidebar variant to the layout.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - A single cell centered columns
+ * sidebar - A 1/3 row right sidebar open content region
+ * first - A 2/3 row section below the header and to the left of the sidebar.
+ * second - A 1/3 column content region below the first region.
+ * third - A 1/3 column content region below the first region.
+ *
+ */
+#}
+Footer is optional.
",
+ "first": "Footer is optional.
",
+ "first": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/three-column/cuttoner/cuttoner.twig b/examples/twig/flex/three-column/cuttoner/cuttoner.twig
new file mode 100644
index 000000000..0e95352bc
--- /dev/null
+++ b/examples/twig/flex/three-column/cuttoner/cuttoner.twig
@@ -0,0 +1,62 @@
+{#
+/**
+ * @file
+ * A three column layout with a two column content area topped with a 2 span
+ * header area and footed by a two span content aread and a top to bottom
+ * of content sidebar region.
+ *
+ * Variants:
+ * layout-cuttoner-flex--right - A right sidebar variant to the layout.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - A two span 66% topper for the first and second columns.
+ * first - A single 33% width column
+ * second - A single 33% width column
+ * footer - A two span 66% footer for the first and second columns
+ * sidebar - A 33% multiple row spanning sidebar
+ *
+ */
+#}
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "fourth": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "fifth": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/three-column/percles/percles.twig b/examples/twig/flex/three-column/percles/percles.twig
new file mode 100644
index 000000000..985bd0e90
--- /dev/null
+++ b/examples/twig/flex/three-column/percles/percles.twig
@@ -0,0 +1,57 @@
+{#
+/**
+ * @file
+ * A three column layout with a two rows. The first two features two cells, one
+ * that spans 2 columns and one that is a single column. The second row
+ * features three equal column content areas
+ *
+ * 66/33
+ * 33/33/33
+ *
+ * Variants:
+ * layout-precles-flex--right - A right side weighted header variant to the layout.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * first - A single cell single row content area
+ * second - A two span content column in the first row
+ * third - A single column 33% content area in the second row
+ * fourth - A single column 33% content area in the second row
+ * fifth - A single column 33% content area in the second row
+ *
+ */
+#}
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "first": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/three-column/sunset-delorean/sunset-delorean.twig b/examples/twig/flex/three-column/sunset-delorean/sunset-delorean.twig
new file mode 100644
index 000000000..365c2d9db
--- /dev/null
+++ b/examples/twig/flex/three-column/sunset-delorean/sunset-delorean.twig
@@ -0,0 +1,56 @@
+{#
+/**
+ * @file
+ * A three column layout with a 2 span header and an equal three column layout.
+ *
+ * AA BB BB
+ * AA CC DD
+ * AA CC DD
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - A single column centered content area.
+ * first - A 33% width content column.
+ * second - A 33% width content column.
+ * third - A 33% width content column.
+ */
+#}
+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "fourth": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "fifth": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/three-column/thions/thions.twig b/examples/twig/flex/three-column/thions/thions.twig
new file mode 100644
index 000000000..bb0068208
--- /dev/null
+++ b/examples/twig/flex/three-column/thions/thions.twig
@@ -0,0 +1,38 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * - $id: An optional CSS id to use for the layout.
+ * - $content: An array of content, each item in the array is keyed to one
+ * panel of the layout. This layout supports the following sections:
+ * - $content['first']: Content in the left column.
+ * - $content['second']: Content in the right column.
+ */
+#}
+
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
+ {{ third }}
+
+
+
+ {{ fourth }}
+
+
+
+ {{ fifth }}
+
+
diff --git a/examples/twig/flex/three-column/valmer/valmer-left.png b/examples/twig/flex/three-column/valmer/valmer-left.png
new file mode 100644
index 000000000..eef03107c
Binary files /dev/null and b/examples/twig/flex/three-column/valmer/valmer-left.png differ
diff --git a/examples/twig/flex/three-column/valmer/valmer-right.png b/examples/twig/flex/three-column/valmer/valmer-right.png
new file mode 100644
index 000000000..a00f3100c
Binary files /dev/null and b/examples/twig/flex/three-column/valmer/valmer-right.png differ
diff --git a/examples/twig/flex/three-column/valmer/valmer.json b/examples/twig/flex/three-column/valmer/valmer.json
new file mode 100644
index 000000000..b25fa8bc3
--- /dev/null
+++ b/examples/twig/flex/three-column/valmer/valmer.json
@@ -0,0 +1,7 @@
+{
+ "header": "
An optional Header Area
",
+ "footer": "
Optional Footer
",
+ "first": "
Content Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "
Content Column
Lorem ipsum dolor sit amet, consectetur adiptrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "
Content Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore eum.
"
+}
diff --git a/examples/twig/flex/three-column/valmer/valmer.twig b/examples/twig/flex/three-column/valmer/valmer.twig
new file mode 100644
index 000000000..fcfc6f562
--- /dev/null
+++ b/examples/twig/flex/three-column/valmer/valmer.twig
@@ -0,0 +1,47 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+ {% if header is not empty %}
+
+ {% endif %}
+
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
+ {{ third }}
+
+
+
+ {% if footer is not empty %}
+
+ {% endif %}
+
diff --git a/examples/twig/flex/two-column/donies/donies.json b/examples/twig/flex/two-column/donies/donies.json
new file mode 100644
index 000000000..8caea6850
--- /dev/null
+++ b/examples/twig/flex/two-column/donies/donies.json
@@ -0,0 +1,6 @@
+{
+ "first": "
First Column
",
+ "second": "
Second Column
",
+ "header": "
Header
",
+ "footer": "
This is the footer
"
+}
diff --git a/examples/twig/flex/two-column/donies/donies.png b/examples/twig/flex/two-column/donies/donies.png
new file mode 100644
index 000000000..288575f9b
Binary files /dev/null and b/examples/twig/flex/two-column/donies/donies.png differ
diff --git a/examples/twig/flex/two-column/donies/donies.twig b/examples/twig/flex/two-column/donies/donies.twig
new file mode 100644
index 000000000..9d7258ba1
--- /dev/null
+++ b/examples/twig/flex/two-column/donies/donies.twig
@@ -0,0 +1,46 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+ {# Optional header region #}
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {# Mandatory content region #}
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
+ {# Optional footer region #}
+ {% if footer is not empty %}
+
+ {% endif %}
+
diff --git a/examples/twig/flex/two-column/frogger/frogger.json b/examples/twig/flex/two-column/frogger/frogger.json
new file mode 100644
index 000000000..a78aaa491
--- /dev/null
+++ b/examples/twig/flex/two-column/frogger/frogger.json
@@ -0,0 +1,9 @@
+{
+ "first": "
First Column
",
+ "second": "
Second Column
",
+ "third": "
Third Column
",
+ "fourth": "
Fourth Column
",
+ "middle": "
Optional Middle content can go here
",
+ "header": "
Header
",
+ "footer": "
This is the footer
"
+}
diff --git a/examples/twig/flex/two-column/frogger/frogger.png b/examples/twig/flex/two-column/frogger/frogger.png
new file mode 100644
index 000000000..b5e85d7a1
Binary files /dev/null and b/examples/twig/flex/two-column/frogger/frogger.png differ
diff --git a/examples/twig/flex/two-column/frogger/frogger.twig b/examples/twig/flex/two-column/frogger/frogger.twig
new file mode 100644
index 000000000..5bc54064b
--- /dev/null
+++ b/examples/twig/flex/two-column/frogger/frogger.twig
@@ -0,0 +1,70 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+
+ {# Optional Header #}
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {# Required content section #}
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
+ {# Optional centered container #}
+ {% if middle is not empty %}
+
+ {% endif %}
+
+ {# Optional third row #}
+ {% if third is not empty %}
+
+
+ {{ third }}
+
+
+
+ {{ fourth }}
+
+
+ {% endif %}
+
+ {# Optional footer #}
+ {% if footer is not empty %}
+
+ {% endif %}
+
+
{# end layout wrapper #}
diff --git a/examples/twig/flex/two-column/pacman/pacman-left.png b/examples/twig/flex/two-column/pacman/pacman-left.png
new file mode 100644
index 000000000..cfa76eeab
Binary files /dev/null and b/examples/twig/flex/two-column/pacman/pacman-left.png differ
diff --git a/examples/twig/flex/two-column/pacman/pacman-right.png b/examples/twig/flex/two-column/pacman/pacman-right.png
new file mode 100644
index 000000000..7e6ee0a87
Binary files /dev/null and b/examples/twig/flex/two-column/pacman/pacman-right.png differ
diff --git a/examples/twig/flex/two-column/pacman/pacman.json b/examples/twig/flex/two-column/pacman/pacman.json
new file mode 100644
index 000000000..26477b6e3
--- /dev/null
+++ b/examples/twig/flex/two-column/pacman/pacman.json
@@ -0,0 +1,6 @@
+{
+ "sidebar": "
Sidebar
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "content": "
Content Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "header": "
Header
",
+ "footer": "
This is the footer
"
+}
diff --git a/examples/twig/flex/two-column/pacman/pacman.twig b/examples/twig/flex/two-column/pacman/pacman.twig
new file mode 100644
index 000000000..f10af1f7f
--- /dev/null
+++ b/examples/twig/flex/two-column/pacman/pacman.twig
@@ -0,0 +1,46 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+ {# Optional Header #}
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {# Required content section #}
+
+
+ {# Optional footer #}
+ {% if footer is not empty %}
+
+ {% endif %}
+
diff --git a/examples/twig/flex/two-column/plakes/plakes-left.png b/examples/twig/flex/two-column/plakes/plakes-left.png
new file mode 100644
index 000000000..a0f6171e7
Binary files /dev/null and b/examples/twig/flex/two-column/plakes/plakes-left.png differ
diff --git a/examples/twig/flex/two-column/plakes/plakes-right.png b/examples/twig/flex/two-column/plakes/plakes-right.png
new file mode 100644
index 000000000..a3c84b67f
Binary files /dev/null and b/examples/twig/flex/two-column/plakes/plakes-right.png differ
diff --git a/examples/twig/flex/two-column/plakes/plakes.json b/examples/twig/flex/two-column/plakes/plakes.json
new file mode 100644
index 000000000..585039eed
--- /dev/null
+++ b/examples/twig/flex/two-column/plakes/plakes.json
@@ -0,0 +1,5 @@
+{
+ "header": "
This is the header region
",
+ "sidebar": "
Sidebar
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "content": "
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/two-column/plakes/plakes.twig b/examples/twig/flex/two-column/plakes/plakes.twig
new file mode 100644
index 000000000..e639e68c3
--- /dev/null
+++ b/examples/twig/flex/two-column/plakes/plakes.twig
@@ -0,0 +1,40 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+ {# Optional Header #}
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {# Grid Container #}
+
+ {# Manditory sidebar #}
+
+
+ {# Manditory content #}
+
+
+
+
diff --git a/examples/twig/flex/two-column/toucan/toucan.json b/examples/twig/flex/two-column/toucan/toucan.json
new file mode 100644
index 000000000..330be3d05
--- /dev/null
+++ b/examples/twig/flex/two-column/toucan/toucan.json
@@ -0,0 +1,4 @@
+{
+ "first": "
First Column
",
+ "second": "
Second Column
"
+}
diff --git a/examples/twig/flex/two-column/toucan/toucan.png b/examples/twig/flex/two-column/toucan/toucan.png
new file mode 100644
index 000000000..3258a9ca4
Binary files /dev/null and b/examples/twig/flex/two-column/toucan/toucan.png differ
diff --git a/examples/twig/flex/two-column/toucan/toucan.twig b/examples/twig/flex/two-column/toucan/toucan.twig
new file mode 100644
index 000000000..bfce8f470
--- /dev/null
+++ b/examples/twig/flex/two-column/toucan/toucan.twig
@@ -0,0 +1,23 @@
+{#
+/**
+ * @file
+ * Toucan
+ *
+ *
+ */
+#}
+
+
+
+ {# Required column #}
+
+ {{ first }}
+
+
+ {# Required column #}
+
+ {{ second }}
+
+
+
+
diff --git a/examples/twig/flex/two-column/trunks/trunks-left.png b/examples/twig/flex/two-column/trunks/trunks-left.png
new file mode 100644
index 000000000..b052303f5
Binary files /dev/null and b/examples/twig/flex/two-column/trunks/trunks-left.png differ
diff --git a/examples/twig/flex/two-column/trunks/trunks-right.png b/examples/twig/flex/two-column/trunks/trunks-right.png
new file mode 100644
index 000000000..f44bb6857
Binary files /dev/null and b/examples/twig/flex/two-column/trunks/trunks-right.png differ
diff --git a/examples/twig/flex/two-column/trunks/trunks.json b/examples/twig/flex/two-column/trunks/trunks.json
new file mode 100644
index 000000000..1c4721a25
--- /dev/null
+++ b/examples/twig/flex/two-column/trunks/trunks.json
@@ -0,0 +1,4 @@
+{
+ "first": "
First Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "
Second Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/two-column/trunks/trunks.twig b/examples/twig/flex/two-column/trunks/trunks.twig
new file mode 100644
index 000000000..65ac9145b
--- /dev/null
+++ b/examples/twig/flex/two-column/trunks/trunks.twig
@@ -0,0 +1,27 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
diff --git a/examples/twig/flex/two-column/wedge/wedge-left.png b/examples/twig/flex/two-column/wedge/wedge-left.png
new file mode 100644
index 000000000..aec0b65d9
Binary files /dev/null and b/examples/twig/flex/two-column/wedge/wedge-left.png differ
diff --git a/examples/twig/flex/two-column/wedge/wedge-right.png b/examples/twig/flex/two-column/wedge/wedge-right.png
new file mode 100644
index 000000000..b84f814a0
Binary files /dev/null and b/examples/twig/flex/two-column/wedge/wedge-right.png differ
diff --git a/examples/twig/flex/two-column/wedge/wedge.json b/examples/twig/flex/two-column/wedge/wedge.json
new file mode 100644
index 000000000..1c4721a25
--- /dev/null
+++ b/examples/twig/flex/two-column/wedge/wedge.json
@@ -0,0 +1,4 @@
+{
+ "first": "
First Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "
Second Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/flex/two-column/wedge/wedge.twig b/examples/twig/flex/two-column/wedge/wedge.twig
new file mode 100644
index 000000000..5263e63f9
--- /dev/null
+++ b/examples/twig/flex/two-column/wedge/wedge.twig
@@ -0,0 +1,30 @@
+{#
+/**
+ * @file
+ * Wedge 2 column layout
+ *
+ * A 25/75 style two column layout.
+ *
+ * Variants:
+ * layout-wedge-flex--right - A right sidebar variant to the layout.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * first - First column and 25% width
+ * second - Second Column and 75% width
+ *
+ *
+ */
+#}
+
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
diff --git a/examples/twig/grid/four-column/molive/molive.json b/examples/twig/grid/four-column/molive/molive.json
new file mode 100644
index 000000000..615d25495
--- /dev/null
+++ b/examples/twig/grid/four-column/molive/molive.json
@@ -0,0 +1,8 @@
+{
+ "first": "
First column
",
+ "second": "
Second Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "
Third Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "fourth": "
Fourth Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "header": "
This is your header column
",
+ "footer": "
This is your footer column
"
+}
diff --git a/examples/twig/grid/four-column/molive/molive.png b/examples/twig/grid/four-column/molive/molive.png
new file mode 100644
index 000000000..454a33eb5
Binary files /dev/null and b/examples/twig/grid/four-column/molive/molive.png differ
diff --git a/examples/twig/grid/four-column/molive/molive.twig b/examples/twig/grid/four-column/molive/molive.twig
new file mode 100644
index 000000000..b35a6f8e4
--- /dev/null
+++ b/examples/twig/grid/four-column/molive/molive.twig
@@ -0,0 +1,58 @@
+{#
+/**
+ * @file
+ * Molive - Template for a 4 column panel layout.
+ *
+ * This template provides a four column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - A four column span header area
+ * first - First of four columns
+ * second - Second of four columns
+ * third - Third of four columns
+ * fourth - Fourth of four columns
+ * footer - A four column span footer area
+ */
+#}
+
+
+ {# A centered max-width header region #}
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {# Because of the responsive behaviour each column is required. #}
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
+ {{ third }}
+
+
+
+ {{ fourth }}
+
+
+
+ {# Centered max-width footer region #}
+ {% if footer is not empty %}
+
+ {% endif %}
+
diff --git a/examples/twig/grid/full-width/bricks/bricks.json b/examples/twig/grid/full-width/bricks/bricks.json
new file mode 100644
index 000000000..558128ca4
--- /dev/null
+++ b/examples/twig/grid/full-width/bricks/bricks.json
@@ -0,0 +1,8 @@
+{
+ "hero": "
Full Width Hero Column 1
",
+ "hero2": "
Full Width Hero Column 2
",
+ "first": "
First Column
",
+ "second": "
Second Column
",
+ "third": "
Third Column
",
+ "fourth": "
Fourth Column
"
+}
diff --git a/examples/twig/grid/full-width/bricks/bricks.png b/examples/twig/grid/full-width/bricks/bricks.png
new file mode 100644
index 000000000..288575f9b
Binary files /dev/null and b/examples/twig/grid/full-width/bricks/bricks.png differ
diff --git a/examples/twig/grid/full-width/bricks/bricks.twig b/examples/twig/grid/full-width/bricks/bricks.twig
new file mode 100644
index 000000000..6d8f60598
--- /dev/null
+++ b/examples/twig/grid/full-width/bricks/bricks.twig
@@ -0,0 +1,60 @@
+{#
+/**
+ * @file
+ * Bricks
+ * A two column 50/50 centered row followed by a full width region.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * hero - The top most full width region.
+ * first - First of a 50/50 centered column
+ * second - Second of a 50/50 centered column
+ * hero2 - Second full width region
+ * third - First of a 50/50 centered column
+ * fourth - Second of a 50/50 centered column
+ */
+#}
+
+
+ {# Full width region #}
+ {% if hero is not empty %}
+
+ {% endif %}
+
+ {# Required two equal column centered content area. #}
+ {% if first is not empty or second is not empty %}
+
+
+ {{ first }}
+
+
+
+ {{ second}}
+
+
+ {% endif %}
+
+ {# Full width region #}
+ {% if hero2 is not empty %}
+
+ {% endif %}
+
+ {# Optional two equal column centered content area. #}
+ {% if third is not empty or fourth is not empty %}
+
+
+ {{ third }}
+
+
+
+ {{ fourth }}
+
+
+ {% endif %}
+
+
diff --git a/examples/twig/grid/full-width/ibeam/ibeam.json b/examples/twig/grid/full-width/ibeam/ibeam.json
new file mode 100644
index 000000000..a9746d5e8
--- /dev/null
+++ b/examples/twig/grid/full-width/ibeam/ibeam.json
@@ -0,0 +1,6 @@
+{
+ "full_width": "
Full width region
",
+ "full_width2": "
Full width region
",
+ "content": "
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "content2": "
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/full-width/ibeam/ibeam.png b/examples/twig/grid/full-width/ibeam/ibeam.png
new file mode 100644
index 000000000..989f5e4cb
Binary files /dev/null and b/examples/twig/grid/full-width/ibeam/ibeam.png differ
diff --git a/examples/twig/grid/full-width/ibeam/ibeam.twig b/examples/twig/grid/full-width/ibeam/ibeam.twig
new file mode 100644
index 000000000..b1414b019
--- /dev/null
+++ b/examples/twig/grid/full-width/ibeam/ibeam.twig
@@ -0,0 +1,42 @@
+{#
+/**
+ * @file
+ * I-Beam
+ * A full width single column alternative with a single centered column layou.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * full_width - Full width content region
+ * content - Single column centered content region
+ * full_width2 - Full width content region
+ * content2 - Single column centered content region
+ */
+#}
+
+
+ {% if full_width is not empty %}
+
+ {{ full_width }}
+
+ {% endif %}
+
+ {% if content is not empty %}
+
+ {% endif %}
+
+ {% if full_width2 is not empty %}
+
+ {{ full_width2 }}
+
+ {% endif %}
+
+ {% if content2 is not empty %}
+
+ {% endif %}
+
+
diff --git a/examples/twig/grid/one-column/basic/basic.json b/examples/twig/grid/one-column/basic/basic.json
new file mode 100644
index 000000000..1a723bb68
--- /dev/null
+++ b/examples/twig/grid/one-column/basic/basic.json
@@ -0,0 +1,5 @@
+{
+ "header": "
Header
",
+ "footer": "
This is the footer
",
+ "content": "
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/one-column/basic/basic.png b/examples/twig/grid/one-column/basic/basic.png
new file mode 100644
index 000000000..4bdf0e752
Binary files /dev/null and b/examples/twig/grid/one-column/basic/basic.png differ
diff --git a/examples/twig/grid/one-column/basic/basic.twig b/examples/twig/grid/one-column/basic/basic.twig
new file mode 100644
index 000000000..21643c2f4
--- /dev/null
+++ b/examples/twig/grid/one-column/basic/basic.twig
@@ -0,0 +1,34 @@
+{#
+/**
+ * @file
+ * Template for a single celled centered content layout.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - Centered single column open content area
+ * footer - Centered single column open content area
+ * content - Centered single column open content area
+ */
+#}
+
+
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {% if content is not empty %}
+
+ {% endif %}
+
+ {% if footer is not empty %}
+
+ {% endif %}
+
+
diff --git a/examples/twig/grid/one-column/centered-container/centered-container.json b/examples/twig/grid/one-column/centered-container/centered-container.json
new file mode 100644
index 000000000..39711e9e0
--- /dev/null
+++ b/examples/twig/grid/one-column/centered-container/centered-container.json
@@ -0,0 +1,3 @@
+{
+ "content": "
My Centered Content
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/one-column/centered-container/centered-container.twig b/examples/twig/grid/one-column/centered-container/centered-container.twig
new file mode 100644
index 000000000..ffe52c312
--- /dev/null
+++ b/examples/twig/grid/one-column/centered-container/centered-container.twig
@@ -0,0 +1,25 @@
+{#
+/**
+ * @file
+ * Centered container
+ *
+ * An example of how to center a container in the page.
+ *
+ * Available modifiers
+ * - None so far
+ *
+ * Available Variables
+ * - attributes: A series of tag attributes for the wrapper
+ * - modifier_class: Modifier css classes for this component.
+ * - body: A block element that is expected to be replaced with your content.
+ * - content: Your content
+ *
+ */
+#}
+
+
+ {% block body %}
+ {{ content }}
+ {% endblock %}
+
+
diff --git a/examples/twig/grid/three-column/bars/bars.json b/examples/twig/grid/three-column/bars/bars.json
new file mode 100644
index 000000000..aa79e4ede
--- /dev/null
+++ b/examples/twig/grid/three-column/bars/bars.json
@@ -0,0 +1,5 @@
+{
+ "first": "
Column 1
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "
Column 2
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "
Column 3
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/three-column/bars/bars.png b/examples/twig/grid/three-column/bars/bars.png
new file mode 100644
index 000000000..8419c6511
Binary files /dev/null and b/examples/twig/grid/three-column/bars/bars.png differ
diff --git a/examples/twig/grid/three-column/bars/bars.twig b/examples/twig/grid/three-column/bars/bars.twig
new file mode 100644
index 000000000..55668f8df
--- /dev/null
+++ b/examples/twig/grid/three-column/bars/bars.twig
@@ -0,0 +1,31 @@
+{#
+/**
+ * @file
+ * Template for a three equal column layout. 33/33/33
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * first - First of three equal columns
+ * second - Second of three equal columns
+ * third - third of three equal columns
+ * body - A block area to allow for others to change wrappers around regions.
+ */
+#}
+
+
+ {% block body %}
+
+
+
+
+
+ {% endblock %}
+
+
diff --git a/examples/twig/grid/three-column/battleship/battleship.json b/examples/twig/grid/three-column/battleship/battleship.json
new file mode 100644
index 000000000..a190ce1fc
--- /dev/null
+++ b/examples/twig/grid/three-column/battleship/battleship.json
@@ -0,0 +1,10 @@
+{
+ "first": "
Heading goes here
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "
",
+ "third": "
",
+ "fourth": "
",
+ "fifth": "
",
+ "sixth": "
",
+ "seventh": "
",
+ "eighth": "
"
+}
diff --git a/examples/twig/grid/three-column/battleship/battleship.png b/examples/twig/grid/three-column/battleship/battleship.png
new file mode 100644
index 000000000..3162b44eb
Binary files /dev/null and b/examples/twig/grid/three-column/battleship/battleship.png differ
diff --git a/examples/twig/grid/three-column/battleship/battleship.twig b/examples/twig/grid/three-column/battleship/battleship.twig
new file mode 100644
index 000000000..f6600b12c
--- /dev/null
+++ b/examples/twig/grid/three-column/battleship/battleship.twig
@@ -0,0 +1,75 @@
+{#
+/**
+ * @file
+ * Template for a three row three column layout.
+ * 66/33
+ * 33/33/33
+ * 33/33/33
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * first - a two column span content region
+ * second - a single column span content region
+ * third - a single column 1/3 width content region
+ * fourth - a single column 1/3 width content region
+ * fifth - a single column 1/3 width content region
+ * sixth - a single column 1/3 width content region
+ * seventh - a single column 1/3 width content region
+ * eighth - a single column 1/3 width content region
+ * body - a block area for changing the wrappers on the content regions
+ */
+#}
+
+
+ {% block body %}
+ {% if first is not empty %}
+
+ {{ first }}
+
+ {% endif %}
+
+ {% if second is not empty %}
+
+ {{ second }}
+
+ {% endif %}
+
+ {% if third is not empty %}
+
+ {{ third }}
+
+ {% endif %}
+
+ {% if fourth is not empty %}
+
+ {{ fourth }}
+
+ {% endif %}
+
+ {% if fifth is not empty %}
+
+ {{ fifth }}
+
+ {% endif %}
+
+ {% if sixth is not empty %}
+
+ {{ sixth }}
+
+ {% endif %}
+
+ {% if seventh is not empty %}
+
+ {{ seventh }}
+
+ {% endif %}
+
+ {% if eighth is not empty %}
+
+ {{ eighth }}
+
+ {% endif %}
+ {% endblock %}
+
+
diff --git a/examples/twig/grid/three-column/blastila/blastila-left.png b/examples/twig/grid/three-column/blastila/blastila-left.png
new file mode 100644
index 000000000..a31ac6d8c
Binary files /dev/null and b/examples/twig/grid/three-column/blastila/blastila-left.png differ
diff --git a/examples/twig/grid/three-column/blastila/blastila-right.png b/examples/twig/grid/three-column/blastila/blastila-right.png
new file mode 100644
index 000000000..53fb6da16
Binary files /dev/null and b/examples/twig/grid/three-column/blastila/blastila-right.png differ
diff --git a/examples/twig/grid/three-column/blastila/blastila.json b/examples/twig/grid/three-column/blastila/blastila.json
new file mode 100644
index 000000000..f62059bc8
--- /dev/null
+++ b/examples/twig/grid/three-column/blastila/blastila.json
@@ -0,0 +1,7 @@
+{
+ "header": "
This is the full column header.
",
+ "sidebar": "
Sidebar Heading
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "first": "
A mini heading area
",
+ "second": "
Left content column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "
Right content area
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/three-column/blastila/blastila.twig b/examples/twig/grid/three-column/blastila/blastila.twig
new file mode 100644
index 000000000..215f87b60
--- /dev/null
+++ b/examples/twig/grid/three-column/blastila/blastila.twig
@@ -0,0 +1,65 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout with a single
+ * cell top most column followed by a 3 column layout where a 2 column span
+ * header region is above two single column regions and a right sidebar.
+ *
+ * Variants:
+ * layout-blastila--right - A right sidebar variant to the layout.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - A single cell centered columns
+ * sidebar - A 1/3 row right sidebar open content region
+ * first - A 2/3 row section below the header and to the left of the sidebar.
+ * second - A 1/3 column content region below the first region.
+ * third - A 1/3 column content region below the first region.
+ *
+ */
+#}
+
+
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {# Div for grid container #}
+
+
+ {# Sidebar #}
+ {% if sidebar is not empty %}
+
+ {% endif %}
+
+ {# Mini header area #}
+ {% if first is not empty %}
+
+ {% endif %}
+
+ {# Left content column #}
+ {% if second is not empty %}
+
+ {{ second }}
+
+ {% endif %}
+
+ {# Right content column #}
+ {% if third is not empty %}
+
+ {{ third }}
+
+ {% endif %}
+
+
{# end grid container #}
+
+
diff --git a/examples/twig/grid/three-column/chess/chess.json b/examples/twig/grid/three-column/chess/chess.json
new file mode 100644
index 000000000..ef8e9b188
--- /dev/null
+++ b/examples/twig/grid/three-column/chess/chess.json
@@ -0,0 +1,10 @@
+{
+ "header": "
This is the optional full column header.
",
+ "footer": "
Footer is optional.
",
+ "first": "
First Column
",
+ "second": "
Second Column
",
+ "third": "
Third Column
",
+ "fourth": "
Fourth Column
",
+ "fifth": "
Fifth Column
",
+ "sixth": "
Sixth Column
"
+}
diff --git a/examples/twig/grid/three-column/chess/chess.png b/examples/twig/grid/three-column/chess/chess.png
new file mode 100644
index 000000000..b4ffd94c7
Binary files /dev/null and b/examples/twig/grid/three-column/chess/chess.png differ
diff --git a/examples/twig/grid/three-column/chess/chess.twig b/examples/twig/grid/three-column/chess/chess.twig
new file mode 100644
index 000000000..ce7821473
--- /dev/null
+++ b/examples/twig/grid/three-column/chess/chess.twig
@@ -0,0 +1,75 @@
+{#
+/**
+ * @file
+ * A two row three column layout bookended by single column centered header
+ * and footer content regions.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - A single cell centered column header
+ * first - First row 1/3 width column
+ * second - First row 1/3 width column
+ * third - First row 1/3 width column
+ * fourth - Second row 1/3 width column
+ * fifth - Second row 1/3 width column
+ * sixth - Second row 1/3 width column
+ * footer - A single cell centered column content area
+ * body - An overridable block region.
+ */
+#}
+
+
+ {% if header is not empty %}
+
+ {% endif %}
+
+
+ {% block body %}
+ {% if first is not empty %}
+
+ {{ first }}
+
+ {% endif %}
+
+ {% if second is not empty %}
+
+ {{ second }}
+
+ {% endif %}
+
+ {% if third is not empty %}
+
+ {{ third }}
+
+ {% endif %}
+
+ {% if fourth is not empty %}
+
+ {{ fourth }}
+
+ {% endif %}
+
+ {% if fifth is not empty %}
+
+ {{ fifth }}
+
+ {% endif %}
+
+ {% if sixth is not empty %}
+
+ {{ sixth }}
+
+ {% endif %}
+ {% endblock %}
+
+
+ {% if footer is not empty %}
+
+ {% endif %}
+
+
diff --git a/examples/twig/grid/three-column/cuttoner/cuttoner-left.png b/examples/twig/grid/three-column/cuttoner/cuttoner-left.png
new file mode 100644
index 000000000..32a3e249b
Binary files /dev/null and b/examples/twig/grid/three-column/cuttoner/cuttoner-left.png differ
diff --git a/examples/twig/grid/three-column/cuttoner/cuttoner-right.png b/examples/twig/grid/three-column/cuttoner/cuttoner-right.png
new file mode 100644
index 000000000..584eb1b24
Binary files /dev/null and b/examples/twig/grid/three-column/cuttoner/cuttoner-right.png differ
diff --git a/examples/twig/grid/three-column/cuttoner/cuttoner.json b/examples/twig/grid/three-column/cuttoner/cuttoner.json
new file mode 100644
index 000000000..07e982833
--- /dev/null
+++ b/examples/twig/grid/three-column/cuttoner/cuttoner.json
@@ -0,0 +1,7 @@
+{
+ "header": "
This is the optional full column header.
",
+ "footer": "
Footer is optional.
",
+ "first": "
First Column
",
+ "second": "
Second Column
",
+ "sidebar": "
Sidebar
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/three-column/cuttoner/cuttoner.twig b/examples/twig/grid/three-column/cuttoner/cuttoner.twig
new file mode 100644
index 000000000..f693ecb28
--- /dev/null
+++ b/examples/twig/grid/three-column/cuttoner/cuttoner.twig
@@ -0,0 +1,58 @@
+{#
+/**
+ * @file
+ * A three column layout with a two column content area topped with a 2 span
+ * header area and footed by a two span content aread and a top to bottom
+ * of content sidebar region.
+ *
+ * Variants:
+ * layout-cuttoner--right - A right sidebar variant to the layout.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - A two span 66% topper for the first and second columns.
+ * first - A single 33% width column
+ * second - A single 33% width column
+ * footer - A two span 66% footer for the first and second columns
+ * sidebar - A 33% multiple row spanning sidebar
+ *
+ */
+#}
+
+
+
+ {% if sidebar is not empty %}
+
+ {% endif %}
+
+
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {% if first is not empty %}
+
+ {{ first }}
+
+ {% endif %}
+
+ {% if second is not empty %}
+
+ {{ second }}
+
+ {% endif %}
+
+ {% if footer is not empty %}
+
+ {% endif %}
+
+
+
+
diff --git a/examples/twig/grid/three-column/percles/percles-left.png b/examples/twig/grid/three-column/percles/percles-left.png
new file mode 100644
index 000000000..c596c36b0
Binary files /dev/null and b/examples/twig/grid/three-column/percles/percles-left.png differ
diff --git a/examples/twig/grid/three-column/percles/percles-right.png b/examples/twig/grid/three-column/percles/percles-right.png
new file mode 100644
index 000000000..fb0e4f2c1
Binary files /dev/null and b/examples/twig/grid/three-column/percles/percles-right.png differ
diff --git a/examples/twig/grid/three-column/percles/percles.json b/examples/twig/grid/three-column/percles/percles.json
new file mode 100644
index 000000000..74ef82b7b
--- /dev/null
+++ b/examples/twig/grid/three-column/percles/percles.json
@@ -0,0 +1,7 @@
+{
+ "first": "
First Column
",
+ "second": "
Second Column
",
+ "third": "
Third Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "fourth": "
Fourth Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "fifth": "
Fifth Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/three-column/percles/percles.twig b/examples/twig/grid/three-column/percles/percles.twig
new file mode 100644
index 000000000..7e9102e4e
--- /dev/null
+++ b/examples/twig/grid/three-column/percles/percles.twig
@@ -0,0 +1,57 @@
+{#
+/**
+ * @file
+ * A three column layout with a two rows. The first two features two cells, one
+ * that spans 2 columns and one that is a single column. The second row
+ * features three equal column content areas
+ *
+ * 66/33
+ * 33/33/33
+ *
+ * Variants:
+ * layout-precles--right - A right side weighted header variant to the layout.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * first - A single cell single row content area
+ * second - A two span content column in the first row
+ * third - A single column 33% content area in the second row
+ * fourth - A single column 33% content area in the second row
+ * fifth - A single column 33% content area in the second row
+ *
+ */
+#}
+
+
+ {% if first is not empty %}
+
+ {{ first }}
+
+ {% endif %}
+
+ {% if second is not empty %}
+
+ {% endif %}
+
+ {% if third is not empty %}
+
+ {{ third }}
+
+ {% endif %}
+
+ {% if fourth is not empty %}
+
+ {{ fourth }}
+
+ {% endif %}
+
+ {% if fifth is not empty %}
+
+ {{ fifth }}
+
+ {% endif %}
+
+
diff --git a/examples/twig/grid/three-column/robot/robot.json b/examples/twig/grid/three-column/robot/robot.json
new file mode 100644
index 000000000..2ecc22da6
--- /dev/null
+++ b/examples/twig/grid/three-column/robot/robot.json
@@ -0,0 +1,6 @@
+{
+ "header": "
An optional Header Area
",
+ "first": "
First column
",
+ "second": "
Content Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "
Third Column
"
+}
diff --git a/examples/twig/grid/three-column/robot/robot.png b/examples/twig/grid/three-column/robot/robot.png
new file mode 100644
index 000000000..2bde12efd
Binary files /dev/null and b/examples/twig/grid/three-column/robot/robot.png differ
diff --git a/examples/twig/grid/three-column/robot/robot.twig b/examples/twig/grid/three-column/robot/robot.twig
new file mode 100644
index 000000000..e22cf1a92
--- /dev/null
+++ b/examples/twig/grid/three-column/robot/robot.twig
@@ -0,0 +1,48 @@
+{#
+/**
+ * @file
+ * A three column layout with a 3 span header and an unequal three column layout
+ * below it where the center column is 50%
+ *
+ * 100
+ * 25/50/25
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - A single column centered content area.
+ * first - A skinny 25% width left sidebar.
+ * second - A larger 50% width centered column.
+ * third - A skinny 25% width right sidebar
+ *
+ */
+#}
+
+
+
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {% if first is not empty %}
+
+ {{ first }}
+
+ {% endif %}
+
+ {% if second is not empty %}
+
+ {{ second }}
+
+ {% endif %}
+
+ {% if third is not empty %}
+
+ {{ third }}
+
+ {% endif %}
+
+
+
diff --git a/examples/twig/grid/three-column/space-invader/space-invader.json b/examples/twig/grid/three-column/space-invader/space-invader.json
new file mode 100644
index 000000000..2ecc22da6
--- /dev/null
+++ b/examples/twig/grid/three-column/space-invader/space-invader.json
@@ -0,0 +1,6 @@
+{
+ "header": "
An optional Header Area
",
+ "first": "
First column
",
+ "second": "
Content Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "
Third Column
"
+}
diff --git a/examples/twig/grid/three-column/space-invader/space-invader.png b/examples/twig/grid/three-column/space-invader/space-invader.png
new file mode 100644
index 000000000..4c14d6a4e
Binary files /dev/null and b/examples/twig/grid/three-column/space-invader/space-invader.png differ
diff --git a/examples/twig/grid/three-column/space-invader/space-invader.twig b/examples/twig/grid/three-column/space-invader/space-invader.twig
new file mode 100644
index 000000000..4bb927a62
--- /dev/null
+++ b/examples/twig/grid/three-column/space-invader/space-invader.twig
@@ -0,0 +1,47 @@
+{#
+/**
+ * @file
+ * A three column layout with a 3 span header and an equal three column layout
+ * below it.
+ *
+ * 100
+ * 33/33/33
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - A single column centered content area.
+ * first - A 33% width content column.
+ * second - A 33% width content column.
+ * third - A 33% width content column.
+ */
+#}
+
+
+
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {% if first is not empty %}
+
+ {{ first }}
+
+ {% endif %}
+
+ {% if second is not empty %}
+
+ {{ second }}
+
+ {% endif %}
+
+ {% if third is not empty %}
+
+ {{ third }}
+
+ {% endif %}
+
+
+
diff --git a/examples/twig/grid/three-column/sunset-delorean/sunset-delorean-left.png b/examples/twig/grid/three-column/sunset-delorean/sunset-delorean-left.png
new file mode 100644
index 000000000..c3387947e
Binary files /dev/null and b/examples/twig/grid/three-column/sunset-delorean/sunset-delorean-left.png differ
diff --git a/examples/twig/grid/three-column/sunset-delorean/sunset-delorean-right.png b/examples/twig/grid/three-column/sunset-delorean/sunset-delorean-right.png
new file mode 100644
index 000000000..bee639a65
Binary files /dev/null and b/examples/twig/grid/three-column/sunset-delorean/sunset-delorean-right.png differ
diff --git a/examples/twig/grid/three-column/sunset-delorean/sunset-delorean.json b/examples/twig/grid/three-column/sunset-delorean/sunset-delorean.json
new file mode 100644
index 000000000..391a2c98d
--- /dev/null
+++ b/examples/twig/grid/three-column/sunset-delorean/sunset-delorean.json
@@ -0,0 +1,6 @@
+{
+ "header": "
An optional Header Area
",
+ "sidebar": "
Sidebar
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "first": "
Content Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "
Content Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/three-column/sunset-delorean/sunset-delorean.twig b/examples/twig/grid/three-column/sunset-delorean/sunset-delorean.twig
new file mode 100644
index 000000000..60559f7b7
--- /dev/null
+++ b/examples/twig/grid/three-column/sunset-delorean/sunset-delorean.twig
@@ -0,0 +1,46 @@
+{#
+/**
+ * @file
+ * A three column layout with a 2 span header and an equal three column layout.
+ *
+ * AA BB BB
+ * AA CC DD
+ * AA CC DD
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * header - A single column centered content area.
+ * first - A 33% width content column.
+ * second - A 33% width content column.
+ * third - A 33% width content column.
+ */
+#}
+
+
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {% if first is not empty %}
+
+ {% endif %}
+
+ {% if second is not empty %}
+
+ {% endif %}
+
+ {# Sidebar #}
+ {% if sidebar is not empty %}
+
+ {% endif %}
+
+
diff --git a/examples/twig/grid/three-column/thions/thions-bottom.png b/examples/twig/grid/three-column/thions/thions-bottom.png
new file mode 100644
index 000000000..10a2192fe
Binary files /dev/null and b/examples/twig/grid/three-column/thions/thions-bottom.png differ
diff --git a/examples/twig/grid/three-column/thions/thions-top.png b/examples/twig/grid/three-column/thions/thions-top.png
new file mode 100644
index 000000000..992a04e44
Binary files /dev/null and b/examples/twig/grid/three-column/thions/thions-top.png differ
diff --git a/examples/twig/grid/three-column/thions/thions.json b/examples/twig/grid/three-column/thions/thions.json
new file mode 100644
index 000000000..4a7c14c1b
--- /dev/null
+++ b/examples/twig/grid/three-column/thions/thions.json
@@ -0,0 +1,7 @@
+{
+ "first": "
First Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "
Second Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "
Third Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "fourth": "
Fourth Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "fifth": "
Fifth Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/three-column/thions/thions.twig b/examples/twig/grid/three-column/thions/thions.twig
new file mode 100644
index 000000000..4b348a5f7
--- /dev/null
+++ b/examples/twig/grid/three-column/thions/thions.twig
@@ -0,0 +1,39 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * - $id: An optional CSS id to use for the layout.
+ * - $content: An array of content, each item in the array is keyed to one
+ * panel of the layout. This layout supports the following sections:
+ * - $content['first']: Content in the left column.
+ * - $content['second']: Content in the right column.
+ */
+#}
+
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
+ {{ third }}
+
+
+
+ {{ fourth }}
+
+
+
+ {{ fifth }}
+
+
+
diff --git a/examples/twig/grid/three-column/valmer/valmer-left.png b/examples/twig/grid/three-column/valmer/valmer-left.png
new file mode 100644
index 000000000..eef03107c
Binary files /dev/null and b/examples/twig/grid/three-column/valmer/valmer-left.png differ
diff --git a/examples/twig/grid/three-column/valmer/valmer-right.png b/examples/twig/grid/three-column/valmer/valmer-right.png
new file mode 100644
index 000000000..a00f3100c
Binary files /dev/null and b/examples/twig/grid/three-column/valmer/valmer-right.png differ
diff --git a/examples/twig/grid/three-column/valmer/valmer.json b/examples/twig/grid/three-column/valmer/valmer.json
new file mode 100644
index 000000000..b25fa8bc3
--- /dev/null
+++ b/examples/twig/grid/three-column/valmer/valmer.json
@@ -0,0 +1,7 @@
+{
+ "header": "
An optional Header Area
",
+ "footer": "
Optional Footer
",
+ "first": "
Content Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "
Content Column
Lorem ipsum dolor sit amet, consectetur adiptrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "third": "
Content Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore eum.
"
+}
diff --git a/examples/twig/grid/three-column/valmer/valmer.twig b/examples/twig/grid/three-column/valmer/valmer.twig
new file mode 100644
index 000000000..ddf2a8f51
--- /dev/null
+++ b/examples/twig/grid/three-column/valmer/valmer.twig
@@ -0,0 +1,44 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+
+ {% if header is not empty %}
+
+ {% endif %}
+
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
+ {{ third }}
+
+
+
+ {% if footer is not empty %}
+
+ {% endif %}
+
diff --git a/examples/twig/grid/two-column/donies/donies.json b/examples/twig/grid/two-column/donies/donies.json
new file mode 100644
index 000000000..8caea6850
--- /dev/null
+++ b/examples/twig/grid/two-column/donies/donies.json
@@ -0,0 +1,6 @@
+{
+ "first": "
First Column
",
+ "second": "
Second Column
",
+ "header": "
Header
",
+ "footer": "
This is the footer
"
+}
diff --git a/examples/twig/grid/two-column/donies/donies.png b/examples/twig/grid/two-column/donies/donies.png
new file mode 100644
index 000000000..288575f9b
Binary files /dev/null and b/examples/twig/grid/two-column/donies/donies.png differ
diff --git a/examples/twig/grid/two-column/donies/donies.twig b/examples/twig/grid/two-column/donies/donies.twig
new file mode 100644
index 000000000..eade7e75e
--- /dev/null
+++ b/examples/twig/grid/two-column/donies/donies.twig
@@ -0,0 +1,42 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+ {# Optional header region #}
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {# Mandatory content region #}
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
+ {# Optional footer region #}
+ {% if footer is not empty %}
+
+ {% endif %}
+
diff --git a/examples/twig/grid/two-column/frogger/frogger.json b/examples/twig/grid/two-column/frogger/frogger.json
new file mode 100644
index 000000000..a78aaa491
--- /dev/null
+++ b/examples/twig/grid/two-column/frogger/frogger.json
@@ -0,0 +1,9 @@
+{
+ "first": "
First Column
",
+ "second": "
Second Column
",
+ "third": "
Third Column
",
+ "fourth": "
Fourth Column
",
+ "middle": "
Optional Middle content can go here
",
+ "header": "
Header
",
+ "footer": "
This is the footer
"
+}
diff --git a/examples/twig/grid/two-column/frogger/frogger.png b/examples/twig/grid/two-column/frogger/frogger.png
new file mode 100644
index 000000000..b5e85d7a1
Binary files /dev/null and b/examples/twig/grid/two-column/frogger/frogger.png differ
diff --git a/examples/twig/grid/two-column/frogger/frogger.twig b/examples/twig/grid/two-column/frogger/frogger.twig
new file mode 100644
index 000000000..d527206cb
--- /dev/null
+++ b/examples/twig/grid/two-column/frogger/frogger.twig
@@ -0,0 +1,64 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+
+ {# Optional Header #}
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {# Required content section #}
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
+ {# Optional centered container #}
+ {% if middle is not empty %}
+
+ {{ middle }}
+
+ {% endif %}
+
+ {# Optional third row #}
+ {% if third is not empty %}
+
+
+ {{ third }}
+
+
+
+ {{ fourth }}
+
+
+ {% endif %}
+
+ {# Optional footer #}
+ {% if footer is not empty %}
+
+ {% endif %}
+
+
{# end layout wrapper #}
diff --git a/examples/twig/grid/two-column/pacman/pacman-left.png b/examples/twig/grid/two-column/pacman/pacman-left.png
new file mode 100644
index 000000000..cfa76eeab
Binary files /dev/null and b/examples/twig/grid/two-column/pacman/pacman-left.png differ
diff --git a/examples/twig/grid/two-column/pacman/pacman-right.png b/examples/twig/grid/two-column/pacman/pacman-right.png
new file mode 100644
index 000000000..7e6ee0a87
Binary files /dev/null and b/examples/twig/grid/two-column/pacman/pacman-right.png differ
diff --git a/examples/twig/grid/two-column/pacman/pacman.json b/examples/twig/grid/two-column/pacman/pacman.json
new file mode 100644
index 000000000..26477b6e3
--- /dev/null
+++ b/examples/twig/grid/two-column/pacman/pacman.json
@@ -0,0 +1,6 @@
+{
+ "sidebar": "
Sidebar
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "content": "
Content Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "header": "
Header
",
+ "footer": "
This is the footer
"
+}
diff --git a/examples/twig/grid/two-column/pacman/pacman.twig b/examples/twig/grid/two-column/pacman/pacman.twig
new file mode 100644
index 000000000..f6a76a519
--- /dev/null
+++ b/examples/twig/grid/two-column/pacman/pacman.twig
@@ -0,0 +1,42 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+ {# Optional Header #}
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {# Required content section #}
+
+
+ {# Optional footer #}
+ {% if footer is not empty %}
+
+ {% endif %}
+
diff --git a/examples/twig/grid/two-column/plakes/plakes-left.png b/examples/twig/grid/two-column/plakes/plakes-left.png
new file mode 100644
index 000000000..a0f6171e7
Binary files /dev/null and b/examples/twig/grid/two-column/plakes/plakes-left.png differ
diff --git a/examples/twig/grid/two-column/plakes/plakes-right.png b/examples/twig/grid/two-column/plakes/plakes-right.png
new file mode 100644
index 000000000..a3c84b67f
Binary files /dev/null and b/examples/twig/grid/two-column/plakes/plakes-right.png differ
diff --git a/examples/twig/grid/two-column/plakes/plakes.json b/examples/twig/grid/two-column/plakes/plakes.json
new file mode 100644
index 000000000..585039eed
--- /dev/null
+++ b/examples/twig/grid/two-column/plakes/plakes.json
@@ -0,0 +1,5 @@
+{
+ "header": "
This is the header region
",
+ "sidebar": "
Sidebar
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "content": "
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/two-column/plakes/plakes.twig b/examples/twig/grid/two-column/plakes/plakes.twig
new file mode 100644
index 000000000..c9d1310da
--- /dev/null
+++ b/examples/twig/grid/two-column/plakes/plakes.twig
@@ -0,0 +1,38 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+ {# Optional Header #}
+ {% if header is not empty %}
+
+ {% endif %}
+
+ {# Grid Container #}
+
+ {# Manditory sidebar #}
+
+
+ {# Manditory content #}
+
+
+
+
diff --git a/examples/twig/grid/two-column/toucan/toucan.json b/examples/twig/grid/two-column/toucan/toucan.json
new file mode 100644
index 000000000..330be3d05
--- /dev/null
+++ b/examples/twig/grid/two-column/toucan/toucan.json
@@ -0,0 +1,4 @@
+{
+ "first": "
First Column
",
+ "second": "
Second Column
"
+}
diff --git a/examples/twig/grid/two-column/toucan/toucan.png b/examples/twig/grid/two-column/toucan/toucan.png
new file mode 100644
index 000000000..3258a9ca4
Binary files /dev/null and b/examples/twig/grid/two-column/toucan/toucan.png differ
diff --git a/examples/twig/grid/two-column/toucan/toucan.twig b/examples/twig/grid/two-column/toucan/toucan.twig
new file mode 100644
index 000000000..a8327f4d3
--- /dev/null
+++ b/examples/twig/grid/two-column/toucan/toucan.twig
@@ -0,0 +1,23 @@
+{#
+/**
+ * @file
+ * Toucan
+ *
+ *
+ */
+#}
+
+
+
+ {# Required column #}
+
+ {{ first }}
+
+
+ {# Required column #}
+
+ {{ second }}
+
+
+
+
diff --git a/examples/twig/grid/two-column/trunks/trunks-left.png b/examples/twig/grid/two-column/trunks/trunks-left.png
new file mode 100644
index 000000000..b052303f5
Binary files /dev/null and b/examples/twig/grid/two-column/trunks/trunks-left.png differ
diff --git a/examples/twig/grid/two-column/trunks/trunks-right.png b/examples/twig/grid/two-column/trunks/trunks-right.png
new file mode 100644
index 000000000..f44bb6857
Binary files /dev/null and b/examples/twig/grid/two-column/trunks/trunks-right.png differ
diff --git a/examples/twig/grid/two-column/trunks/trunks.json b/examples/twig/grid/two-column/trunks/trunks.json
new file mode 100644
index 000000000..1c4721a25
--- /dev/null
+++ b/examples/twig/grid/two-column/trunks/trunks.json
@@ -0,0 +1,4 @@
+{
+ "first": "
First Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "
Second Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/two-column/trunks/trunks.twig b/examples/twig/grid/two-column/trunks/trunks.twig
new file mode 100644
index 000000000..e1cc8b6d2
--- /dev/null
+++ b/examples/twig/grid/two-column/trunks/trunks.twig
@@ -0,0 +1,27 @@
+{#
+/**
+ * @file
+ * Template for a complex column panel layout.
+ *
+ * This template provides a complex column panel display layout, with
+ * each column roughly equal in width.
+ *
+ * Variables:
+ * -
+ * -
+ *
+ *
+ *
+ */
+#}
+
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
diff --git a/examples/twig/grid/two-column/wedge/wedge-left.png b/examples/twig/grid/two-column/wedge/wedge-left.png
new file mode 100644
index 000000000..aec0b65d9
Binary files /dev/null and b/examples/twig/grid/two-column/wedge/wedge-left.png differ
diff --git a/examples/twig/grid/two-column/wedge/wedge-right.png b/examples/twig/grid/two-column/wedge/wedge-right.png
new file mode 100644
index 000000000..b84f814a0
Binary files /dev/null and b/examples/twig/grid/two-column/wedge/wedge-right.png differ
diff --git a/examples/twig/grid/two-column/wedge/wedge.json b/examples/twig/grid/two-column/wedge/wedge.json
new file mode 100644
index 000000000..1c4721a25
--- /dev/null
+++ b/examples/twig/grid/two-column/wedge/wedge.json
@@ -0,0 +1,4 @@
+{
+ "first": "
First Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
",
+ "second": "
Second Column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
"
+}
diff --git a/examples/twig/grid/two-column/wedge/wedge.twig b/examples/twig/grid/two-column/wedge/wedge.twig
new file mode 100644
index 000000000..cd553d143
--- /dev/null
+++ b/examples/twig/grid/two-column/wedge/wedge.twig
@@ -0,0 +1,30 @@
+{#
+/**
+ * @file
+ * Wedge 2 column layout
+ *
+ * A 25/75 style two column layout.
+ *
+ * Variants:
+ * layout-wedge--right - A right sidebar variant to the layout.
+ *
+ * Variables:
+ * attributes - html attributes for the template wrapper tag
+ * modifier_class - Variant modifier css classes
+ * first - First column and 25% width
+ * second - Second Column and 75% width
+ *
+ *
+ */
+#}
+
+
+
+ {{ first }}
+
+
+
+ {{ second }}
+
+
+
diff --git a/index.js b/index.js
new file mode 100644
index 000000000..969adf46d
--- /dev/null
+++ b/index.js
@@ -0,0 +1,9 @@
+var path = require("path");
+
+module.exports = {
+ includePaths: [
+ path.join(__dirname, "core/src/js"),
+ path.join(__dirname, "core/src/scss"),
+ path.resolve("../", "bourbon/core")
+ ]
+};
diff --git a/kss/builder/decanter/builder.js b/kss/builder/decanter/builder.js
deleted file mode 100644
index cc87a76ee..000000000
--- a/kss/builder/decanter/builder.js
+++ /dev/null
@@ -1,139 +0,0 @@
-'use strict';
-
-/**
- * This module is used to load the base KSS builder class needed by this builder
- * and to define any custom CLI options or extend any base class methods.
- *
- * Note: since this builder wants to extend the KssBuilderBaseTwig class, it
- * must export a KssBuilderBaseTwig sub-class as a module. Otherwise, kss-node
- * will assume the builder wants to use the KssBuilderBaseHandlebars class.
- *
- * This file's name should follow standard node.js require() conventions. It
- * should either be named index.js or have its name set in the "main" property
- * of the builder's package.json. See
- * http://nodejs.org/api/modules.html#modules_folders_as_modules
- *
- * @module kss/builder/twig
- */
-
-const path = require('path');
-const crypto = require('crypto');
-
-// We want to extend kss-node's Twig builder so we can add options that
-// are used in our templates.
-let BaseTwigBuilder;
-
-// In order for a builder to be "kss clone"-able, it must use the
-// require('kss/builder/path') syntax.
-BaseTwigBuilder = require('kss/builder/base/twig');
-
-/**
- * A kss-node builder that takes input files and builds a style guide using Twig
- * templates.
- */
-class DecanterBuilder extends BaseTwigBuilder {
- /**
- * Create a builder object.
- */
- constructor() {
- // First call the constructor of KssBuilderBaseTwig.
- super();
-
- // Then tell kss which Yargs-like options this builder adds.
- this.addOptionDefinitions({
- 'title': {
- group: 'Style guide:',
- string: true,
- multiple: false,
- describe: 'Title of the style guide',
- default: 'KSS Style Guide'
- }
- });
- }
-
- // add builder extend
- prepareExtend(templateEngine) {
- this.options.extend.push(path.resolve(__dirname, 'extend'));
- return super.prepareExtend(templateEngine);
- }
-
- /**
- * Build the HTML files of the style guide given a KssStyleGuide object.
- *
- * @param {KssStyleGuide} styleGuide The KSS style guide in object format.
- * @returns {Promise.
} A `Promise` object resolving to a
- * `KssStyleGuide` object.
- */
- build(styleGuide) {
- let options = {};
- // Returns a promise to read/load a template provided by the builder.
- options.readBuilderTemplate = name => {
- return this.Twig.twigAsync({
- id: '@builderTwig/' + name + '.twig',
- path: path.resolve(this.options.builder, name + '.twig')
- });
- };
- // Returns a promise to read/load a template specified by a section.
- options.readSectionTemplate = (name, filepath) => {
- return this.Twig.twigAsync({
- id: name,
- path: filepath
- });
- };
- // Returns a promise to load an inline template from markup.
- options.loadInlineTemplate = (name, markup) => {
- return this.Twig.twigAsync({
- id: name,
- data: markup
- });
- };
- // Returns a promise to load the data context given a template file path.
- options.loadContext = filepath => {
- let context;
- // Load sample context for the template from the sample .json file.
- try {
- context = require(path.join(path.dirname(filepath), path.basename(filepath, path.extname(filepath)) + '.json'));
- // require() returns a cached object. We want an independent clone of
- // the object so we can make changes without affecting the original.
- context = JSON.parse(JSON.stringify(context));
- context = this.safeMarkup(context);
- } catch (error) {
- context = {};
- }
- return Promise.resolve(context);
- };
- // Returns a promise to get a template by name.
- options.getTemplate = name => {
- return this.Twig.twigAsync({
- ref: name
- });
- };
- // Returns a promise to get a template's markup by name.
- options.getTemplateMarkup = name => {
- return options.getTemplate(name).then(template => {
- // The rawMarkup is a custom property set in twigAsync().
- return template.rawMarkup;
- });
- };
- // Renders a template and returns the markup.
- options.templateRender = (template, context) => {
- return template.render(context);
- };
- // Converts a filename into a Twig template name.
- options.filenameToTemplateRef = filename => {
- // Return the filename without the full path.
- return crypto.createHash('md5').update(filename).digest('hex');
- };
- options.templateExtension = 'twig';
- options.emptyTemplate = '{# Cannot be an empty string. #}';
-
- // Reset the Twig template registry so KSS can be run in a "watch" task that
- // does not destroy the Node.js environment between builds.
- this.Twig.registryReset();
-
- return this.buildGuide(styleGuide, options);
- }
-
-}
-
-module.exports = DecanterBuilder;
diff --git a/kss/builder/decanter/index.twig b/kss/builder/decanter/index.twig
deleted file mode 100644
index 805195cfe..000000000
--- a/kss/builder/decanter/index.twig
+++ /dev/null
@@ -1,335 +0,0 @@
-
-
-
-
- {{ options.title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ styles|raw }}
-
-
-
-{%
- include "@decanter/components/brand-bar/brand-bar.twig" with
- {
- "modifier_class": "su-brand-bar--bright",
- }
- only
-%}
-
-
-
-
-
-{% if not template.isHomepage %}
-
-{% endif %}
-
-
- {% if template.isHomepage %}
- {% if homepage %}
-
- {{ homepage|raw }}
-
- {% endif %}
- {% else %}
-
- {#
- Display each section, in order.
-
- The "root" element comes first in this loop, and can be detected using the
- "loop.first" variable as seen below.
- #}
- {% for section in sections %}
- {% set sectionElement = loop.first ? 'div' : 'section' %}
- <{{ sectionElement }} id="kssref-{{ section.referenceURI }}" class="kss-section kss-section--depth-{{ section.depth }} {% if template.isItem %}is-fullscreen{% endif %}">
-
-
- {% if section.example %}
-
-
- Example{% if section.modifiers is not empty %}s{% endif %}
-
-
- {% if section.modifiers is not empty %}
-
- Default styling
-
- {% endif %}
-
-
- {{ section.example|raw }}
-
-
-
- {% for modifier in section.modifiers %}
-
- {{ modifier.name }}
-
-
- {{ modifier.description|raw }}
-
-
- {{ modifier.markup|raw }}
-
-
- {% endfor %}
-
- {% if section.markup %}
-
-
- {% if section.markupFile %}
- Markup: {{ section.markupFile }}
- {% else %}
- Markup
- {% endif %}
-
- {{ section.markup|escape('html') }}
-
- {% endif %}
- {% endif %}
-
- {% if section.source.filename %}
-
- Source: {{ section.source.filename }}
, line {{ section.source.line }}
-
- {% endif %}
- {{ sectionElement }}>
- {% endfor %}
-{% endif %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-{{ scripts|raw }}
-
-
-
diff --git a/kss/builder/decanter/kss-assets/css/kss.css b/kss/builder/decanter/kss-assets/css/kss.css
deleted file mode 100644
index 10e8da9ee..000000000
--- a/kss/builder/decanter/kss-assets/css/kss.css
+++ /dev/null
@@ -1,2028 +0,0 @@
-/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */
-/* Document
- ========================================================================== */
-/**
- * 1. Correct the line height in all browsers.
- * 2. Prevent adjustments of font size after orientation changes in iOS.
- */
-html {
- line-height: 1.15;
- /* 1 */
- -webkit-text-size-adjust: 100%;
- /* 2 */ }
-
-/* Sections
- ========================================================================== */
-/**
- * Remove the margin in all browsers.
- */
-body {
- margin: 0; }
-
-/**
- * Correct the font size and margin on `h1` elements within `section` and
- * `article` contexts in Chrome, Firefox, and Safari.
- */
-h1 {
- font-size: 2em;
- margin: 0.67em 0; }
-
-/* Grouping content
- ========================================================================== */
-/**
- * 1. Add the correct box sizing in Firefox.
- * 2. Show the overflow in Edge and IE.
- */
-hr {
- -webkit-box-sizing: content-box;
- box-sizing: content-box;
- /* 1 */
- height: 0;
- /* 1 */
- overflow: visible;
- /* 2 */ }
-
-/**
- * 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 */ }
-
-/* Text-level semantics
- ========================================================================== */
-/**
- * Remove the gray background on active links in IE 10.
- */
-a {
- background-color: transparent; }
-
-/**
- * 1. Remove the bottom border in Chrome 57-
- * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
- */
-abbr[title] {
- border-bottom: 0;
- /* 1 */
- text-decoration: underline;
- /* 2 */
- -webkit-text-decoration: underline dotted;
- text-decoration: underline dotted;
- /* 2 */ }
-
-/**
- * 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 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; }
-
-/* Embedded content
- ========================================================================== */
-/**
- * Remove the border on images inside links in IE 10.
- */
-img {
- border-style: none; }
-
-/* Forms
- ========================================================================== */
-/**
- * 1. Change the font styles in all browsers.
- * 2. Remove the margin in Firefox and Safari.
- */
-button,
-input,
-optgroup,
-select,
-textarea {
- font-family: inherit;
- /* 1 */
- font-size: 100%;
- /* 1 */
- line-height: 1.15;
- /* 1 */
- margin: 0;
- /* 2 */ }
-
-/**
- * Show the overflow in IE.
- * 1. Show the overflow in Edge.
- */
-button,
-input {
- /* 1 */
- 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; }
-
-/**
- * Correct the inability to style clickable types in iOS and Safari.
- */
-button,
-[type="button"],
-[type="reset"],
-[type="submit"] {
- -webkit-appearance: button; }
-
-/**
- * Remove the inner border and padding in Firefox.
- */
-button::-moz-focus-inner,
-[type="button"]::-moz-focus-inner,
-[type="reset"]::-moz-focus-inner,
-[type="submit"]::-moz-focus-inner {
- border-style: none;
- padding: 0; }
-
-/**
- * Restore the focus styles unset by the previous rule.
- */
-button:-moz-focusring,
-[type="button"]:-moz-focusring,
-[type="reset"]:-moz-focusring,
-[type="submit"]:-moz-focusring {
- outline: 1px dotted ButtonText; }
-
-/**
- * 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 {
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- /* 1 */
- color: inherit;
- /* 2 */
- display: table;
- /* 1 */
- max-width: 100%;
- /* 1 */
- padding: 0;
- /* 3 */
- white-space: normal;
- /* 1 */ }
-
-/**
- * Add the correct vertical alignment in Chrome, Firefox, and Opera.
- */
-progress {
- vertical-align: baseline; }
-
-/**
- * Remove the default vertical scrollbar in IE 10+.
- */
-textarea {
- overflow: auto; }
-
-/**
- * 1. Add the correct box sizing in IE 10.
- * 2. Remove the padding in IE 10.
- */
-[type="checkbox"],
-[type="radio"] {
- -webkit-box-sizing: border-box;
- 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 in Chrome and Safari on macOS.
- */
-[type="search"]::-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 */ }
-
-/* Interactive
- ========================================================================== */
-/*
- * Add the correct display in Edge, IE 10+, and Firefox.
- */
-details {
- display: block; }
-
-/*
- * Add the correct display in all browsers.
- */
-summary {
- display: list-item; }
-
-/* Misc
- ========================================================================== */
-/**
- * Add the correct display in IE 10+.
- */
-template {
- display: none; }
-
-/**
- * Add the correct display in IE 10.
- */
-[hidden] {
- display: none; }
-
-:root {
- --max_width: $su-site-max-width;
- --baseline: 3rem;
- --baseline-shift: 2rem;
- --repeating-width: calc(100% / var(--columns));
- --column-width: calc((100% / var(--columns)) - var(--gutter));
- --background-width: calc(100% + var(--gutter));
- --background-columns: repeating-linear-gradient(
- to right,
- var(--color),
- var(--color) var(--column-width),
- transparent var(--column-width),
- transparent var(--repeating-width)
- );
- --background-baseline: repeating-linear-gradient(
- to bottom,
- var(--color),
- var(--color) 0,
- transparent 0,
- transparent var(--baseline)
- ); }
-
-@media (min-width: 0) {
- :root {
- --columns: 12;
- --gutter: 20px;
- --color: hsla(204, 80%, 72%, 0.2);
- --color-text: hsla(204, 80%, 72%, 1);
- --media-query: 'xs'; } }
-
-@media (min-width: 576px) {
- :root {
- --columns: 12;
- --gutter: 20px;
- --color: hsla(286, 51%, 44%, 0.125);
- --color-text: hsla(286, 51%, 44%, 1);
- --media-query: 'sm'; } }
-
-@media (min-width: 768px) {
- :root {
- --columns: 12;
- --gutter: 20px;
- --color: hsla(204, 80%, 72%, 0.2);
- --color-text: hsla(204, 80%, 72%, 1);
- --media-query: 'md'; } }
-
-@media (min-width: 992px) {
- :root {
- --columns: 12;
- --gutter: 36px;
- --color: hsla(286, 51%, 44%, 0.125);
- --color-text: hsla(286, 51%, 44%, 1);
- --media-query: 'lg'; } }
-
-@media (min-width: 1200px) {
- :root {
- --columns: 12;
- --gutter: 40px;
- --color: hsla(204, 80%, 72%, 0.2);
- --color-text: hsla(204, 80%, 72%, 1);
- --media-query: 'xl'; } }
-
-@media (min-width: 1500px) {
- :root {
- --columns: 12;
- --gutter: 48px;
- --color: hsla(104, 40%, 32%, 0.2);
- --color-text: hsla(104, 40%, 32%, 1);
- --media-query: '2xl'; } }
-
-.kss-nav a, .kss-nav a:link, .kss-nav a:visited, .kss-nav a:hover {
- text-decoration: none; }
-
-pre, code, kbd, samp {
- font-family: Menlo, "Ubuntu Mono", "Lucida Console", "Courier New", Courier, monospace;
- color: #363533;
- font-size: 1em; }
-
-pre {
- white-space: pre;
- overflow: scroll; }
-
-ins {
- color: #2e2d29;
- background: #ff9;
- text-decoration: none; }
-
-mark {
- color: #2e2d29;
- background: #ff0;
- font-weight: bold; }
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline; }
-
-sup {
- top: -0.5em; }
-
-sub {
- bottom: -0.25em; }
-
-#kssref-core-helpers-aspect-ratio .kss-modifier__wrapper {
- max-width: 600px; }
- #kssref-core-helpers-aspect-ratio .kss-modifier__wrapper .su-aspect-ratio {
- margin: 0 0 3rem; }
- #kssref-core-helpers-aspect-ratio .kss-modifier__wrapper div.su-aspect-ratio {
- background: #dad7cb; }
-
-#kss-node {
- padding-top: 30px; }
- #kss-node > .su-brand-bar {
- position: fixed;
- top: 0;
- z-index: 11200; }
-
-.main-page-layout {
- display: -ms-grid;
- display: grid; }
- @media only screen and (min-width: 0) {
- .main-page-layout {
- -ms-grid-columns: 1fr;
- grid-template-columns: 1fr; }
- .main-page-layout > * {
- margin-right: 20px; }
- @supports (grid-column-gap: 20px) {
- .main-page-layout {
- grid-column-gap: 20px; }
- .main-page-layout > * {
- margin-right: 0;
- margin-left: 0; } }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 20px; }
- @supports (grid-row-gap: 20px) {
- .main-page-layout {
- grid-row-gap: 20px; }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 0; } }
- .main-page-layout > *:nth-child(1) {
- -ms-grid-column: 1; } }
- @media only screen and (min-width: 576px) {
- .main-page-layout {
- -ms-grid-columns: 1fr;
- grid-template-columns: 1fr; }
- .main-page-layout > * {
- margin-right: 20px; }
- @supports (grid-column-gap: 20px) {
- .main-page-layout {
- grid-column-gap: 20px; }
- .main-page-layout > * {
- margin-right: 0;
- margin-left: 0; } }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 20px; }
- @supports (grid-row-gap: 20px) {
- .main-page-layout {
- grid-row-gap: 20px; }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 0; } }
- .main-page-layout > *:nth-child(1) {
- -ms-grid-column: 1; } }
- @media only screen and (min-width: 768px) {
- .main-page-layout {
- -ms-grid-columns: 1fr 1fr 1fr 1fr;
- grid-template-columns: 1fr 1fr 1fr 1fr; }
- .main-page-layout > * {
- margin-right: 20px; }
- @supports (grid-column-gap: 20px) {
- .main-page-layout {
- grid-column-gap: 20px; }
- .main-page-layout > * {
- margin-right: 0;
- margin-left: 0; } }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 20px; }
- @supports (grid-row-gap: 20px) {
- .main-page-layout {
- grid-row-gap: 20px; }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 0; } }
- .main-page-layout > *:nth-child(1) {
- -ms-grid-column: 1; }
- .main-page-layout > *:nth-child(2) {
- -ms-grid-column: 2; }
- .main-page-layout > *:nth-child(3) {
- -ms-grid-column: 3; }
- .main-page-layout > *:nth-child(4) {
- -ms-grid-column: 4; } }
- @media only screen and (min-width: 992px) {
- .main-page-layout {
- -ms-grid-columns: 1fr 1fr 1fr 1fr 1fr;
- grid-template-columns: 1fr 1fr 1fr 1fr 1fr; }
- .main-page-layout > * {
- margin-right: 36px; }
- @supports (grid-column-gap: 20px) {
- .main-page-layout {
- grid-column-gap: 36px; }
- .main-page-layout > * {
- margin-right: 0;
- margin-left: 0; } }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 36px; }
- @supports (grid-row-gap: 20px) {
- .main-page-layout {
- grid-row-gap: 36px; }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 0; } }
- .main-page-layout > *:nth-child(1) {
- -ms-grid-column: 1; }
- .main-page-layout > *:nth-child(2) {
- -ms-grid-column: 2; }
- .main-page-layout > *:nth-child(3) {
- -ms-grid-column: 3; }
- .main-page-layout > *:nth-child(4) {
- -ms-grid-column: 4; }
- .main-page-layout > *:nth-child(5) {
- -ms-grid-column: 5; } }
- @media only screen and (min-width: 1200px) {
- .main-page-layout {
- -ms-grid-columns: 1fr 1fr 1fr 1fr 1fr;
- grid-template-columns: 1fr 1fr 1fr 1fr 1fr; }
- .main-page-layout > * {
- margin-right: 40px; }
- @supports (grid-column-gap: 20px) {
- .main-page-layout {
- grid-column-gap: 40px; }
- .main-page-layout > * {
- margin-right: 0;
- margin-left: 0; } }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 40px; }
- @supports (grid-row-gap: 20px) {
- .main-page-layout {
- grid-row-gap: 40px; }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 0; } }
- .main-page-layout > *:nth-child(1) {
- -ms-grid-column: 1; }
- .main-page-layout > *:nth-child(2) {
- -ms-grid-column: 2; }
- .main-page-layout > *:nth-child(3) {
- -ms-grid-column: 3; }
- .main-page-layout > *:nth-child(4) {
- -ms-grid-column: 4; }
- .main-page-layout > *:nth-child(5) {
- -ms-grid-column: 5; } }
- @media only screen and (min-width: 1500px) {
- .main-page-layout {
- -ms-grid-columns: 1fr 1fr 1fr 1fr 1fr;
- grid-template-columns: 1fr 1fr 1fr 1fr 1fr; }
- .main-page-layout > * {
- margin-right: 48px; }
- @supports (grid-column-gap: 20px) {
- .main-page-layout {
- grid-column-gap: 48px; }
- .main-page-layout > * {
- margin-right: 0;
- margin-left: 0; } }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 48px; }
- @supports (grid-row-gap: 20px) {
- .main-page-layout {
- grid-row-gap: 48px; }
- .main-page-layout > * {
- margin-top: 0;
- margin-bottom: 0; } }
- .main-page-layout > *:nth-child(1) {
- -ms-grid-column: 1; }
- .main-page-layout > *:nth-child(2) {
- -ms-grid-column: 2; }
- .main-page-layout > *:nth-child(3) {
- -ms-grid-column: 3; }
- .main-page-layout > *:nth-child(4) {
- -ms-grid-column: 4; }
- .main-page-layout > *:nth-child(5) {
- -ms-grid-column: 5; } }
- @media only screen and (min-width: 0) and (max-width: 575px) {
- .main-page-layout {
- display: block; } }
-
-@media only screen and (min-width: 0) and (max-width: 575px) {
- body:not(.kss-home) .main-page-layout {
- margin: 0 auto;
- max-width: calc(100% - 40px);
- width: calc(100% - 40px); } }
-
-@media only screen and (min-width: 576px) and (max-width: 767px) {
- body:not(.kss-home) .main-page-layout {
- margin: 0 auto;
- max-width: calc(100% - 60px);
- width: calc(100% - 60px); } }
-
-@media (max-width: 767px) {
- body:not(.kss-home).kss-fullscreen-mode .main-page-layout {
- width: 100%;
- max-width: 100%; } }
-
-.kss-sidebar {
- display: none;
- -ms-grid-column: 1;
- grid-column: 1 / span 1;
- -ms-grid-column-span: 1;
- -ms-grid-row: 1;
- grid-row: 1 / 1;
- -ms-grid-row-span: 0; }
- @media only screen and (min-width: 768px) {
- .kss-sidebar {
- display: block; } }
-
-@media only screen and (min-width: 768px) {
- .kss-main {
- -ms-grid-column: 2;
- grid-column: 2 / span 3;
- -ms-grid-column-span: 3; } }
-
-@media only screen and (min-width: 992px) {
- .kss-main {
- -ms-grid-column: 2;
- grid-column: 2 / span 4;
- -ms-grid-column-span: 4; } }
-
-.kss-home .main-page-layout {
- display: block; }
-
-#kssref-components-card .su-card {
- max-width: 480px; }
- #kssref-components-card .su-card.su-card--horizontal {
- max-width: 1000px; }
-
-.kss-colors-container {
- margin: 0;
- padding-left: 0; }
- @media only screen and (min-width: 35.5625em) {
- .kss-colors-container {
- margin-left: -10px; } }
- @media only screen and (min-width: 0) and (max-width: 575px) {
- .kss-colors-container.kss-parameters {
- display: block; } }
-
-#kss-node .kss-colors-container .kss-parameters__item {
- display: inline-block; }
-
-.kss-color {
- position: relative;
- display: block;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- width: 100%;
- height: 147px;
- margin: 0 auto;
- margin-top: 25px;
- border: 1px solid #4d4f53;
- border-radius: 2px; }
- @media only screen and (min-width: 35.5625em) {
- .kss-color {
- display: inline-block;
- width: 250px;
- margin-left: 10px; } }
-
-.kss-color .kss-parameters__description {
- position: absolute;
- bottom: 0;
- left: 0;
- display: block;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- width: 100%;
- padding: 5px;
- background: #ffffff; }
-
-.kss-color__name {
- display: block;
- min-height: 12px;
- font-weight: 700;
- font-size: em(14px);
- line-height: 1.6; }
-
-.kss-color__var,
-.kss-color__code {
- display: block;
- font-size: em(12px);
- line-height: 1.4; }
-
-.kss-color .kss-parameters__name,
-.kss-color code {
- display: none; }
-
-.kss-section {
- margin-bottom: 60px;
- margin-top: 30px; }
- .kss-section h1 > a,
- .kss-section h2 > a,
- .kss-section h3 > a,
- .kss-section h4 > a,
- .kss-section h5 > a,
- .kss-section h6 > a {
- display: inline-block;
- color: #2e2d29; }
-
-.kss-title {
- margin-bottom: 0; }
-
-.kss-title__ref {
- display: block;
- font-size: 20px;
- line-height: 20px; }
- .kss-title__ref:before {
- content: 'Section '; }
-
-.kss-title__permalink {
- display: block;
- text-decoration: none; }
- @media screen and (min-width: 607px) {
- .kss-title__permalink:hover .kss-title__permalink-hash, .kss-title__permalink:focus .kss-title__permalink-hash, .kss-title__permalink:active .kss-title__permalink-hash {
- display: inline; } }
-
-.kss-title__permalink-hash {
- display: none;
- color: #ccc; }
-
-.kss-parameters {
- display: table;
- list-style-type: none;
- margin-top: 0;
- margin-left: 0;
- padding-left: 0; }
-
-.kss-parameters__title {
- font-weight: bold; }
-
-.kss-parameters__item {
- display: table-row; }
-
-.kss-parameters__name {
- display: table-cell;
- padding-right: 20px;
- white-space: nowrap; }
-
-.kss-parameters__description {
- display: table-cell; }
-
-.kss-parameters__default-value code {
- white-space: nowrap; }
-
-.kss-modifier__wrapper {
- border: 1px solid #ccc;
- padding: 0 10px 10px; }
-
-.kss-modifier__heading {
- margin: 0 -10px 10px -10px;
- padding: 10px;
- border-bottom: 1px solid #ccc;
- background-color: #eee;
- font-weight: bold; }
-
-.kss-modifier__default-name {
- font-weight: bold;
- margin-bottom: 15px; }
-
-.kss-modifier__name {
- float: left;
- padding-right: 10px;
- font-weight: bold; }
-
-.kss-modifier__description {
- margin-bottom: 15px; }
-
-.kss-modifier__example {
- clear: left;
- border: 2px dashed transparent;
- position: relative;
- margin: -2px -2px 28px; }
- .kss-modifier__example:last-child {
- margin-bottom: 0; }
-
-.kss-modifier__example-footer {
- clear: both; }
-
-.kss-description,
-.kss-modifier__description {
- max-width: 1000px; }
-
-#kssref-core-helpers-aspect-ratio .kss-modifier__wrapper,
-#kssref-components-cta .kss-modifier__wrapper,
-#kssref-components-media .kss-modifier__wrapper {
- max-width: 600px; }
-
-.kss-modifier__wrapper .flex-item {
- padding: 10px;
- background-color: #4d4f53;
- color: #ffffff; }
-
-#kss-node.kss-fullscreen-mode .kss-sidebar,
-#kss-node.kss-fullscreen-mode .kss-section:not(.is-fullscreen),
-#kss-node.kss-fullscreen-mode .kss-github {
- display: none; }
-
-#kss-node.kss-fullscreen-mode .main-page-layout {
- display: block; }
-
-@media (min-width: 992px) {
- #kss-node.kss-fullscreen-mode #kssref-components-main-navigation .su-main-nav {
- margin-left: 1.6em; }
- #kss-node.kss-fullscreen-mode #kssref-components-main-navigation .su-main-nav.su-main-nav--right {
- margin-right: 3em;
- margin-left: 0; } }
-
-.kss-guides-mode.kss-fullscreen-mode .kss-modifier__example:before {
- left: auto;
- right: 0; }
-
-.kss-guides-mode.kss-fullscreen-mode .kss-modifier__example:after {
- right: auto;
- left: 0; }
-
-.kss-guides-mode.kss-fullscreen-mode .kss-modifier__example-footer:before {
- left: auto;
- right: 0; }
-
-.kss-guides-mode.kss-fullscreen-mode .kss-modifier__example-footer:after {
- right: auto;
- left: 0; }
-
-.is-fullscreen > .kss-style {
- margin: 0 auto; }
- @media only screen and (min-width: 0) {
- .is-fullscreen > .kss-style {
- max-width: calc(100% - 40px);
- width: calc(100% - 40px); } }
- @media only screen and (min-width: 576px) {
- .is-fullscreen > .kss-style {
- max-width: calc(100% - 60px);
- width: calc(100% - 60px); } }
- @media only screen and (min-width: 768px) {
- .is-fullscreen > .kss-style {
- max-width: calc(100% - 100px);
- width: calc(100% - 100px); } }
- @media only screen and (min-width: 992px) {
- .is-fullscreen > .kss-style {
- max-width: calc(100% - 160px);
- width: calc(100% - 160px); } }
- @media only screen and (min-width: 1200px) {
- .is-fullscreen > .kss-style {
- max-width: calc(100% - 200px);
- width: calc(100% - 200px); } }
- @media only screen and (min-width: 1500px) {
- .is-fullscreen > .kss-style {
- max-width: 1500px;
- width: calc(100% - 200px); } }
-
-.is-fullscreen .kss-title {
- margin-top: 0; }
-
-.is-fullscreen .kss-modifier__wrapper {
- padding-left: 0;
- padding-right: 0;
- border: none; }
-
-.is-fullscreen .kss-modifier__heading {
- margin: 0 20px 10px;
- border: 1px solid #ccc; }
-
-.is-fullscreen .kss-modifier__default-name {
- margin-left: 20px;
- margin-right: 20px; }
-
-.is-fullscreen .is-fullscreen .kss-modifier__name {
- margin-left: 20px; }
-
-.is-fullscreen .kss-modifier__description {
- margin-right: 20px; }
-
-body {
- padding: 0;
- margin: 0;
- height: 100%;
- min-height: 100vh;
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -ms-flex-preferred-size: 100%;
- flex-basis: 100%;
- -webkit-box-pack: start;
- -ms-flex-pack: start;
- justify-content: flex-start;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -ms-flex-direction: column;
- flex-direction: column; }
- body > .site-footer {
- margin-top: auto; }
- html {
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex; }
-
-.is-fullscreen .kss-toolbar a[data-kss-fullscreen],
-.kss-guides-mode .kss-toolbar a[data-kss-guides],
-.kss-markup-mode .kss-toolbar a[data-kss-markup] {
- border-color: #666;
- background-color: #666; }
- .is-fullscreen .kss-toolbar a[data-kss-fullscreen] .kss-toolbar__icon-fill,
- .kss-guides-mode .kss-toolbar a[data-kss-guides] .kss-toolbar__icon-fill,
- .kss-markup-mode .kss-toolbar a[data-kss-markup] .kss-toolbar__icon-fill {
- fill: #fff; }
- .is-fullscreen .kss-toolbar a[data-kss-fullscreen] svg.on,
- .kss-guides-mode .kss-toolbar a[data-kss-guides] svg.on,
- .kss-markup-mode .kss-toolbar a[data-kss-markup] svg.on {
- display: block; }
- .is-fullscreen .kss-toolbar a[data-kss-fullscreen] svg.off,
- .kss-guides-mode .kss-toolbar a[data-kss-guides] svg.off,
- .kss-markup-mode .kss-toolbar a[data-kss-markup] svg.off {
- display: none; }
-
-.kss-guides-mode .kss-modifier__example:before, .kss-guides-mode .kss-modifier__example:after,
-.kss-guides-mode .kss-modifier__example-footer:before,
-.kss-guides-mode .kss-modifier__example-footer:after {
- z-index: -1;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- content: '';
- position: absolute;
- width: 5px;
- height: 5px;
- border: 2px solid #000; }
-
-.kss-guides-mode .kss-modifier__example {
- border-color: #000; }
- .kss-guides-mode .kss-modifier__example:before {
- top: -5px;
- left: -5px;
- border-top: 0;
- border-left: 0; }
- .kss-guides-mode .kss-modifier__example:after {
- top: -5px;
- right: -5px;
- border-top: 0;
- border-right: 0; }
-
-.kss-guides-mode .kss-modifier__example-footer:before {
- bottom: -5px;
- left: -5px;
- border-bottom: 0;
- border-left: 0; }
-
-.kss-guides-mode .kss-modifier__example-footer:after {
- bottom: -5px;
- right: -5px;
- border-right: 0;
- border-bottom: 0; }
-
-#kss-node.kss-home .kss-main {
- margin: 30px 0 0;
- padding: 0;
- width: 100%; }
-
-#kss-node.kss-home {
- background: #2e2d29; }
- #kss-node.kss-home .kss-section {
- margin-bottom: 0; }
- #kss-node.kss-home p {
- font-size: 1em; }
- #kss-node.kss-home h2, #kss-node.kss-home h3, #kss-node.kss-home h4, #kss-node.kss-home h5, #kss-node.kss-home p, #kss-node.kss-home li {
- color: #2e2d29; }
- #kss-node.kss-home h2 {
- font-size: 1.953125em;
- font-weight: 700; }
- #kss-node.kss-home .section {
- padding-top: 20px;
- padding-bottom: 20px; }
- @media only screen and (min-width: 768px) {
- #kss-node.kss-home .section {
- padding-top: 60px;
- padding-bottom: 60px; } }
- #kss-node.kss-home .section--welcome:first-child {
- margin: 0 auto; }
- @media only screen and (min-width: 0) {
- #kss-node.kss-home .section--welcome:first-child {
- max-width: calc(100% - 40px);
- width: calc(100% - 40px); } }
- @media only screen and (min-width: 576px) {
- #kss-node.kss-home .section--welcome:first-child {
- max-width: calc(100% - 60px);
- width: calc(100% - 60px); } }
- @media only screen and (min-width: 768px) {
- #kss-node.kss-home .section--welcome:first-child {
- max-width: calc(100% - 100px);
- width: calc(100% - 100px); } }
- @media only screen and (min-width: 992px) {
- #kss-node.kss-home .section--welcome:first-child {
- max-width: calc(100% - 160px);
- width: calc(100% - 160px); } }
- @media only screen and (min-width: 1200px) {
- #kss-node.kss-home .section--welcome:first-child {
- max-width: calc(100% - 200px);
- width: calc(100% - 200px); } }
- @media only screen and (min-width: 1500px) {
- #kss-node.kss-home .section--welcome:first-child {
- max-width: 1500px;
- width: calc(100% - 200px); } }
- #kss-node.kss-home .section--welcome h1,
- #kss-node.kss-home .section--welcome h2,
- #kss-node.kss-home .section--welcome h3,
- #kss-node.kss-home .section--welcome h4,
- #kss-node.kss-home .section--welcome h5,
- #kss-node.kss-home .section--welcome p {
- color: #ffffff; }
- @media only screen and (min-width: 576px) {
- #kss-node.kss-home .section--welcome h1,
- #kss-node.kss-home .section--welcome h2,
- #kss-node.kss-home .section--welcome h3,
- #kss-node.kss-home .section--welcome h4,
- #kss-node.kss-home .section--welcome h5,
- #kss-node.kss-home .section--welcome p {
- max-width: 65%; } }
- #kss-node.kss-home .section--welcome p {
- font-size: 1.25em;
- font-weight: 200; }
- #kss-node.kss-home .section--welcome h2 {
- margin: 0; }
- #kss-node.kss-home .section--ui-components {
- background: #ffffff; }
- #kss-node.kss-home .section--ui-components .su-card {
- margin: 0 auto;
- -webkit-box-shadow: none;
- box-shadow: none;
- border: 0; }
- @media only screen and (min-width: 0) {
- #kss-node.kss-home .section--ui-components .su-card {
- max-width: calc(100% - 40px);
- width: calc(100% - 40px); } }
- @media only screen and (min-width: 576px) {
- #kss-node.kss-home .section--ui-components .su-card {
- max-width: calc(100% - 60px);
- width: calc(100% - 60px); } }
- @media only screen and (min-width: 768px) {
- #kss-node.kss-home .section--ui-components .su-card {
- max-width: calc(100% - 100px);
- width: calc(100% - 100px); } }
- @media only screen and (min-width: 992px) {
- #kss-node.kss-home .section--ui-components .su-card {
- max-width: calc(100% - 160px);
- width: calc(100% - 160px); } }
- @media only screen and (min-width: 1200px) {
- #kss-node.kss-home .section--ui-components .su-card {
- max-width: calc(100% - 200px);
- width: calc(100% - 200px); } }
- @media only screen and (min-width: 1500px) {
- #kss-node.kss-home .section--ui-components .su-card {
- max-width: 1500px;
- width: calc(100% - 200px); } }
- #kss-node.kss-home .section--ui-components p {
- max-width: 55%; }
- #kss-node.kss-home .section--dev-resources {
- background: #f9f6ef; }
- #kss-node.kss-home .section--dev-resources h2 {
- margin: 0 auto;
- text-align: center; }
- @media only screen and (min-width: 0) {
- #kss-node.kss-home .section--dev-resources h2 {
- max-width: calc(100% - 40px);
- width: calc(100% - 40px); } }
- @media only screen and (min-width: 576px) {
- #kss-node.kss-home .section--dev-resources h2 {
- max-width: calc(100% - 60px);
- width: calc(100% - 60px); } }
- @media only screen and (min-width: 768px) {
- #kss-node.kss-home .section--dev-resources h2 {
- max-width: calc(100% - 100px);
- width: calc(100% - 100px); } }
- @media only screen and (min-width: 992px) {
- #kss-node.kss-home .section--dev-resources h2 {
- max-width: calc(100% - 160px);
- width: calc(100% - 160px); } }
- @media only screen and (min-width: 1200px) {
- #kss-node.kss-home .section--dev-resources h2 {
- max-width: calc(100% - 200px);
- width: calc(100% - 200px); } }
- @media only screen and (min-width: 1500px) {
- #kss-node.kss-home .section--dev-resources h2 {
- max-width: 1500px;
- width: calc(100% - 200px); } }
- #kss-node.kss-home .section--dev-resources .cards-container {
- margin: 0 auto;
- display: -ms-grid;
- display: grid; }
- @media only screen and (min-width: 0) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- max-width: calc(100% - 40px);
- width: calc(100% - 40px); } }
- @media only screen and (min-width: 576px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- max-width: calc(100% - 60px);
- width: calc(100% - 60px); } }
- @media only screen and (min-width: 768px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- max-width: calc(100% - 100px);
- width: calc(100% - 100px); } }
- @media only screen and (min-width: 992px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- max-width: calc(100% - 160px);
- width: calc(100% - 160px); } }
- @media only screen and (min-width: 1200px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- max-width: calc(100% - 200px);
- width: calc(100% - 200px); } }
- @media only screen and (min-width: 1500px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- max-width: 1500px;
- width: calc(100% - 200px); } }
- @media only screen and (min-width: 0) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- -ms-grid-columns: 1fr;
- grid-template-columns: 1fr; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 20px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-column-gap: 20px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 20px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-row-gap: 20px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > *:nth-child(1) {
- -ms-grid-column: 1; } }
- @media only screen and (min-width: 576px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- -ms-grid-columns: 1fr 1fr;
- grid-template-columns: 1fr 1fr; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 20px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-column-gap: 20px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 20px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-row-gap: 20px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > *:nth-child(1) {
- -ms-grid-column: 1; }
- #kss-node.kss-home .section--dev-resources .cards-container > *:nth-child(2) {
- -ms-grid-column: 2; } }
- @media only screen and (min-width: 768px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- -ms-grid-columns: 1fr 1fr;
- grid-template-columns: 1fr 1fr; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 20px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-column-gap: 20px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 20px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-row-gap: 20px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > *:nth-child(1) {
- -ms-grid-column: 1; }
- #kss-node.kss-home .section--dev-resources .cards-container > *:nth-child(2) {
- -ms-grid-column: 2; } }
- @media only screen and (min-width: 992px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- -ms-grid-columns: 1fr 1fr;
- grid-template-columns: 1fr 1fr; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 36px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-column-gap: 36px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 36px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-row-gap: 36px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > *:nth-child(1) {
- -ms-grid-column: 1; }
- #kss-node.kss-home .section--dev-resources .cards-container > *:nth-child(2) {
- -ms-grid-column: 2; } }
- @media only screen and (min-width: 1200px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- -ms-grid-columns: 1fr 1fr;
- grid-template-columns: 1fr 1fr; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 40px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-column-gap: 40px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 40px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-row-gap: 40px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > *:nth-child(1) {
- -ms-grid-column: 1; }
- #kss-node.kss-home .section--dev-resources .cards-container > *:nth-child(2) {
- -ms-grid-column: 2; } }
- @media only screen and (min-width: 1500px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- -ms-grid-columns: 1fr 1fr;
- grid-template-columns: 1fr 1fr; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 48px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-column-gap: 48px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 48px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- grid-row-gap: 48px; }
- #kss-node.kss-home .section--dev-resources .cards-container > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--dev-resources .cards-container > *:nth-child(1) {
- -ms-grid-column: 1; }
- #kss-node.kss-home .section--dev-resources .cards-container > *:nth-child(2) {
- -ms-grid-column: 2; } }
- @media only screen and (min-width: 0) and (max-width: 575px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- display: block; } }
- @media only screen and (min-width: 0) and (max-width: 575px) {
- #kss-node.kss-home .section--dev-resources .cards-container {
- display: block; } }
- #kss-node.kss-home .section--dev-resources .su-card {
- border: 0;
- -webkit-box-shadow: none;
- box-shadow: none; }
- #kss-node.kss-home .section--dev-resources .su-card img {
- max-width: 100px;
- margin: 20px auto;
- display: block; }
- @media only screen and (min-width: 576px) {
- #kss-node.kss-home .section--dev-resources .su-card h3 {
- text-align: center; } }
- @media only screen and (min-width: 1200px) {
- #kss-node.kss-home .section--dev-resources .su-card .su-card__contents {
- text-align: center; } }
- #kss-node.kss-home .section--more-info {
- background: #00b589; }
- #kss-node.kss-home .section--more-info > div {
- margin: 0 auto; }
- @media only screen and (min-width: 0) {
- #kss-node.kss-home .section--more-info > div {
- max-width: calc(100% - 40px);
- width: calc(100% - 40px); } }
- @media only screen and (min-width: 576px) {
- #kss-node.kss-home .section--more-info > div {
- max-width: calc(100% - 60px);
- width: calc(100% - 60px); } }
- @media only screen and (min-width: 768px) {
- #kss-node.kss-home .section--more-info > div {
- max-width: calc(100% - 100px);
- width: calc(100% - 100px); } }
- @media only screen and (min-width: 992px) {
- #kss-node.kss-home .section--more-info > div {
- max-width: calc(100% - 160px);
- width: calc(100% - 160px); } }
- @media only screen and (min-width: 1200px) {
- #kss-node.kss-home .section--more-info > div {
- max-width: calc(100% - 200px);
- width: calc(100% - 200px); } }
- @media only screen and (min-width: 1500px) {
- #kss-node.kss-home .section--more-info > div {
- max-width: 1500px;
- width: calc(100% - 200px); } }
- #kss-node.kss-home .section--more-info h2 {
- text-align: center;
- margin-bottom: 60px; }
- #kss-node.kss-home .section--more-info ul {
- display: -ms-grid;
- display: grid;
- margin: 0;
- padding: 0; }
- @media only screen and (min-width: 0) {
- #kss-node.kss-home .section--more-info ul {
- -ms-grid-columns: 1fr;
- grid-template-columns: 1fr; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 20px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-column-gap: 20px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 20px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-row-gap: 20px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--more-info ul > *:nth-child(1) {
- -ms-grid-column: 1; } }
- @media only screen and (min-width: 576px) {
- #kss-node.kss-home .section--more-info ul {
- -ms-grid-columns: 1fr 1fr;
- grid-template-columns: 1fr 1fr; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 20px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-column-gap: 20px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 20px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-row-gap: 20px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--more-info ul > *:nth-child(1) {
- -ms-grid-column: 1; }
- #kss-node.kss-home .section--more-info ul > *:nth-child(2) {
- -ms-grid-column: 2; } }
- @media only screen and (min-width: 768px) {
- #kss-node.kss-home .section--more-info ul {
- -ms-grid-columns: 1fr 1fr;
- grid-template-columns: 1fr 1fr; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 20px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-column-gap: 20px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 20px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-row-gap: 20px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--more-info ul > *:nth-child(1) {
- -ms-grid-column: 1; }
- #kss-node.kss-home .section--more-info ul > *:nth-child(2) {
- -ms-grid-column: 2; } }
- @media only screen and (min-width: 992px) {
- #kss-node.kss-home .section--more-info ul {
- -ms-grid-columns: 1fr 1fr 1fr;
- grid-template-columns: 1fr 1fr 1fr; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 36px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-column-gap: 36px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 36px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-row-gap: 36px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--more-info ul > *:nth-child(1) {
- -ms-grid-column: 1; }
- #kss-node.kss-home .section--more-info ul > *:nth-child(2) {
- -ms-grid-column: 2; }
- #kss-node.kss-home .section--more-info ul > *:nth-child(3) {
- -ms-grid-column: 3; } }
- @media only screen and (min-width: 1200px) {
- #kss-node.kss-home .section--more-info ul {
- -ms-grid-columns: 1fr 1fr 1fr;
- grid-template-columns: 1fr 1fr 1fr; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 40px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-column-gap: 40px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 40px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-row-gap: 40px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--more-info ul > *:nth-child(1) {
- -ms-grid-column: 1; }
- #kss-node.kss-home .section--more-info ul > *:nth-child(2) {
- -ms-grid-column: 2; }
- #kss-node.kss-home .section--more-info ul > *:nth-child(3) {
- -ms-grid-column: 3; } }
- @media only screen and (min-width: 1500px) {
- #kss-node.kss-home .section--more-info ul {
- -ms-grid-columns: 1fr 1fr 1fr;
- grid-template-columns: 1fr 1fr 1fr; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 48px; }
- @supports (grid-column-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-column-gap: 48px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-right: 0;
- margin-left: 0; } }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 48px; }
- @supports (grid-row-gap: 20px) {
- #kss-node.kss-home .section--more-info ul {
- grid-row-gap: 48px; }
- #kss-node.kss-home .section--more-info ul > * {
- margin-top: 0;
- margin-bottom: 0; } }
- #kss-node.kss-home .section--more-info ul > *:nth-child(1) {
- -ms-grid-column: 1; }
- #kss-node.kss-home .section--more-info ul > *:nth-child(2) {
- -ms-grid-column: 2; }
- #kss-node.kss-home .section--more-info ul > *:nth-child(3) {
- -ms-grid-column: 3; } }
- @media only screen and (min-width: 0) and (max-width: 575px) {
- #kss-node.kss-home .section--more-info ul {
- display: block; } }
- @media only screen and (min-width: 0) and (max-width: 575px) {
- #kss-node.kss-home .section--more-info ul {
- display: block; } }
- #kss-node.kss-home .section--more-info li {
- list-style: none;
- list-style-type: none; }
- @media only screen and (min-width: 576px) {
- #kss-node.kss-home .section--more-info li:nth-of-type(3) {
- -ms-grid-row: 2;
- -ms-grid-column: 1; } }
- @media only screen and (min-width: 992px) {
- #kss-node.kss-home .section--more-info li:nth-of-type(3) {
- -ms-grid-row: 1;
- -ms-grid-column: 3; } }
- #kss-node.kss-home .section--more-info a {
- color: #2e2d29;
- text-decoration: underline; }
- #kss-node.kss-home .section--more-info a:hover {
- color: #ffffff; }
- #kss-node.kss-home .section--more-info a::after {
- -webkit-text-decoration-color: #009b76;
- text-decoration-color: #009b76; }
-
-.layout {
- overflow: hidden; }
- .layout > * {
- position: relative;
- border: dashed 1px #2e2d29; }
- .layout > *::before {
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- margin-right: auto;
- margin-left: auto;
- width: calc(100% - (2 * var(--offset)));
- max-width: var(--max_width);
- content: '';
- background-image: var(--background-columns), var(--background-baseline);
- background-size: var(--background-width) 100%;
- background-position: 0 var(--baseline-shift);
- z-index: -100;
- pointer-events: none; }
- .layout > *::after {
- content: var(--media-query);
- position: absolute;
- top: 4px;
- right: 4px;
- font-family: -apple-system, sans-serif;
- color: var(--color-text);
- display: block;
- background-color: rgba(238, 238, 238, 0.75);
- text-shadow: 3px 3px 3px rgba(255, 255, 255, 0.75);
- padding: 4px 6px;
- border: 1px solid;
- border-radius: 6px;
- opacity: .8; }
- .layout header {
- background-color: rgba(0, 0, 139, 0.15); }
- .layout footer {
- background-color: rgba(85, 107, 47, 0.2); }
- .layout > section,
- .layout > div,
- .layout > aside {
- background-color: rgba(255, 165, 0, 0.25); }
- .layout div > div,
- .layout div > section,
- .layout section > div,
- .layout div > aside,
- .layout section > aside {
- border: dashed 1px #2e2d29;
- background-color: rgba(128, 0, 0, 0.2); }
- .layout header,
- .layout footer,
- .layout aside {
- border: dashed 1px #2e2d29; }
-
-.masthead .su-main-nav {
- margin-top: 12px; }
- .masthead .su-main-nav a {
- color: #fff; }
- @media only screen and (min-width: 992px) {
- .masthead .su-main-nav {
- margin-top: 4px; } }
- @media (max-width: 767px) {
- .masthead .su-main-nav > ul {
- width: 100vw; } }
- @media only screen and (min-width: 0) and (max-width: 575px) {
- .masthead .su-main-nav > ul {
- -webkit-transform: translateX(20px);
- transform: translateX(20px); } }
- @media only screen and (min-width: 576px) and (max-width: 767px) {
- .masthead .su-main-nav > ul {
- -webkit-transform: translateX(30px);
- transform: translateX(30px); } }
- @media only screen and (min-width: 992px) {
- .masthead .su-main-nav > ul > li > a {
- padding-bottom: 2rem; } }
-
-@media (max-width: 991px) {
- .masthead .su-main-nav__toggle {
- margin-top: 0.4rem;
- padding-bottom: 1.6rem; } }
-
-#kssref-components-main-navigation > .kss-modifier__wrapper > div:nth-child(9) {
- background: #2e2d29; }
-
-.kss-markup {
- overflow: scroll;
- margin: 30px 0;
- border: 1px solid #ccc; }
- .kss-markup[open] summary {
- border-bottom: 1px solid #ccc;
- margin-bottom: 3px; }
- .kss-markup summary {
- padding-left: 10px; }
- .kss-markup pre {
- margin: 0; }
-
-.kss-source {
- font-size: 80%; }
-
-.masthead {
- border: 0;
- -webkit-box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.13), 0px 3px 6px rgba(0, 0, 0, 0.1);
- box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.13), 0px 3px 6px rgba(0, 0, 0, 0.1);
- padding: 0;
- background: #2e2d29;
- position: relative;
- z-index: 20; }
- .masthead div {
- margin: 0 auto;
- display: -ms-grid;
- display: grid; }
- @media only screen and (min-width: 0) {
- .masthead div {
- max-width: calc(100% - 40px);
- width: calc(100% - 40px); } }
- @media only screen and (min-width: 576px) {
- .masthead div {
- max-width: calc(100% - 60px);
- width: calc(100% - 60px); } }
- @media only screen and (min-width: 768px) {
- .masthead div {
- max-width: calc(100% - 100px);
- width: calc(100% - 100px); } }
- @media only screen and (min-width: 992px) {
- .masthead div {
- max-width: calc(100% - 160px);
- width: calc(100% - 160px); } }
- @media only screen and (min-width: 1200px) {
- .masthead div {
- max-width: calc(100% - 200px);
- width: calc(100% - 200px); } }
- @media only screen and (min-width: 1500px) {
- .masthead div {
- max-width: 1500px;
- width: calc(100% - 200px); } }
- @media (max-width: 767px) {
- .masthead div {
- -ms-grid-columns: auto 1fr;
- grid-template-columns: auto 1fr; }
- .masthead div > *:nth-child(1) {
- -ms-grid-column: 1; }
- .masthead div > *:nth-child(2) {
- -ms-grid-column: 2; } }
- @media only screen and (min-width: 768px) {
- .masthead div {
- -ms-grid-columns: 1fr 11fr;
- grid-template-columns: 1fr 11fr; }
- .masthead div > *:nth-child(1) {
- -ms-grid-column: 1; }
- .masthead div > *:nth-child(2) {
- -ms-grid-column: 2; } }
- @media only screen and (min-width: 992px) and (max-width: 1199px) {
- .masthead div {
- -ms-grid-columns: 1fr;
- grid-template-columns: 1fr; }
- .masthead div > *:nth-child(1) {
- -ms-grid-column: 1; } }
- .masthead .brand-logo {
- font-size: 1.953125em;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- margin-left: -2px;
- color: #ffffff;
- font-weight: 700;
- display: block;
- vertical-align: middle;
- height: 100%;
- line-height: 69px;
- -ms-grid-row: 1;
- -ms-grid-column: 1; }
- .masthead .brand-logo a {
- color: #ffffff;
- text-decoration: none;
- font-weight: 700; }
- .masthead .main-nav {
- -ms-grid-row: 1;
- -ms-grid-column: 2; }
-
-@media (max-width: 991px) {
- #kssref-components-masthead .kss-modifier__example:nth-child(3) nav {
- z-index: 9999 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(3) .su-lockup {
- z-index: 10010 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(6) nav {
- z-index: 9899 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(6) .su-lockup {
- z-index: 9910 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(9) nav {
- z-index: 9799 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(9) .su-lockup {
- z-index: 9810 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(12) nav {
- z-index: 9699 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(12) .su-lockup {
- z-index: 9710 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(15) nav {
- z-index: 9599 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(15) .su-lockup {
- z-index: 9610 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(18) nav {
- z-index: 9499 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(18) .su-lockup {
- z-index: 9510 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(21) nav {
- z-index: 9399 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(21) .su-lockup {
- z-index: 9410 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(24) nav {
- z-index: 9299 !important; }
- #kssref-components-masthead .kss-modifier__example:nth-child(24) .su-lockup {
- z-index: 9310 !important; } }
-
-#kssref-components-nav-toggle .kss-modifier__example {
- background-color: #2e2d29; }
-
-.kss-modifier__example > .su-nav-toggle {
- position: relative; }
-
-/* SPAN elements with the classes below are added by prettyprint. */
-.pln {
- color: #000; }
-
-/* plain text */
-.str {
- color: #080; }
-
-/* string content */
-.kwd {
- color: #008; }
-
-/* a keyword */
-.com {
- color: #800; }
-
-/* a comment */
-.typ {
- color: #606; }
-
-/* a type name */
-.lit {
- color: #066; }
-
-/* a literal value */
-/* punctuation, lisp open bracket, lisp close bracket */
-.pun, .opn, .clo {
- color: #660; }
-
-.tag {
- color: #008; }
-
-/* a markup tag name */
-.atn {
- color: #606; }
-
-/* a markup attribute name */
-.atv {
- color: #080; }
-
-/* a markup attribute value */
-.dec, .var {
- color: #606; }
-
-/* a declaration; a variable name */
-.fun {
- color: red; }
-
-/* a function name */
-/* Use higher contrast and text-weight for printable form. */
-@media print, projection {
- .str {
- color: #060; }
- .kwd {
- color: #006;
- font-weight: bold; }
- .com {
- color: #600;
- font-style: italic; }
- .typ {
- color: #404;
- font-weight: bold; }
- .lit {
- color: #044; }
- .pun, .opn, .clo {
- color: #440; }
- .tag {
- color: #006;
- font-weight: bold; }
- .atn {
- color: #404; }
- .atv {
- color: #060; } }
-
-/* Specify class=linenums on a pre to get line numbering */
-ol.linenums {
- margin: 0;
- padding: 0 0 3px 0;
- list-style-type: none;
- /* Alternate shading for lines */ }
- ol.linenums li {
- min-height: 30px;
- border-bottom: 1px solid #eee;
- padding: 0 10px;
- background: #fff; }
- ol.linenums li:first-child {
- padding-top: 3px; }
- ol.linenums li.L0,
- ol.linenums li.L2,
- ol.linenums li.L4,
- ol.linenums li.L6,
- ol.linenums li.L8 {
- background: #fcfcfc; }
-
-@media print {
- a, a:visited {
- text-decoration: underline; }
- hr {
- height: 1px;
- border: 0;
- border-bottom: 1px solid black; }
- a[href]:after {
- content: " (" attr(href) ")"; }
- a[href^="javascript:"]:after, a[href^="#"]:after {
- content: ""; }
- abbr[title]:after {
- content: " (" attr(title) ")"; }
- pre, blockquote {
- border: 1px solid #999;
- padding-right: 1em;
- page-break-inside: avoid; }
- tr, img {
- page-break-inside: avoid; }
- img {
- max-width: 100% !important; }
- p, h2, h3 {
- orphans: 3;
- widows: 3; }
- h2, h3 {
- page-break-after: avoid; } }
-
-#kssref-components-secondary-navigation .kss-modifier__wrapper {
- max-width: 400px; }
-
-.kss-sidebar {
- position: relative;
- overflow: hidden;
- background: #f4f4f4; }
-
-.scrollable {
- width: 100%; }
- @media only screen and (min-width: 768px) {
- .scrollable {
- padding-bottom: 160px;
- height: 100vh;
- position: absolute;
- top: 0px;
- overflow-y: scroll; } }
-
-.kss-nav__menu {
- margin-top: 15px;
- margin-bottom: 15px;
- padding: 10px 30px 10px 31px;
- list-style-type: none; }
-
-.kss-nav__menu-item {
- display: inline-block; }
- @media only screen and (min-width: 768px) {
- .kss-nav__menu-item {
- display: list-item; } }
-
-.kss-nav__menu-link {
- position: relative;
- display: inline-block;
- font-weight: bold; }
- @media only screen and (min-width: 768px) {
- .kss-nav__menu-link:before {
- content: ' ';
- position: absolute;
- left: -31px;
- width: 0;
- height: 100%;
- background-color: rgba(0, 0, 0, 0); } }
- .kss-nav__menu-link.is-in-viewport:before {
- background-color: #000;
- width: 5px;
- -webkit-transition: background-color .4s, width .6s;
- transition: background-color .4s, width .6s; }
-
-.kss-nav__menu-child {
- display: none; }
- .kss-nav__menu-child .kss-nav__menu-item {
- margin-bottom: 6px; }
- .kss-nav__menu-child .kss-nav__menu-link {
- font-weight: normal; }
- @media only screen and (min-width: 768px) {
- .kss-nav__menu-child {
- display: block;
- list-style-type: none;
- margin: 0;
- padding: 0; }
- .kss-nav__menu-child li:first-child {
- margin-top: 20px;
- border-top: 2px solid #ccc;
- padding: 20px 0 0; }
- .kss-nav__menu-child li:last-child {
- margin-bottom: 20px;
- border-bottom: 1px solid #ccc;
- padding-bottom: 20px; } }
-
-.kss-nav__ref {
- color: #2e2d29;
- font-weight: bold; }
- .kss-nav__ref:after {
- content: ' '; }
-
-.child-nav-level-2 a {
- padding-left: 10px; }
-
-.child-nav-level-3 a {
- padding-left: 20px; }
-
-.separator-child {
- margin-top: 10px; }
-
-.separator-parent {
- background: #F0F; }
-
-.kss-nav__ref-child {
- font-weight: normal; }
-
-.kss-nav__menu-child .kss-nav__ref {
- font-weight: normal;
- color: #56554d; }
-
-#kssref-components-site-search .kss-modifier__wrapper {
- max-width: 40rem; }
-
-#kssref-components-skiplinks .kss-modifier__example {
- z-index: 11222; }
-
-.kss-toolbar {
- margin: 6px 0 24px;
- display: inline-block;
- border: 1px solid #eee;
- background-color: #f9f9f9;
- border-right-color: #e0e0e0;
- border-bottom-color: #e0e0e0;
- line-height: 1;
- padding: 3px; }
- .kss-toolbar a {
- -webkit-box-sizing: content-box;
- box-sizing: content-box;
- display: inline-block;
- width: 16px;
- height: 16px;
- padding: 3px;
- vertical-align: top;
- position: relative;
- overflow: visible; }
- .kss-toolbar a + a {
- margin-left: 6px; }
- .kss-toolbar a .kss-toolbar__icon-fill {
- fill: #ccc; }
- .kss-toolbar a svg.on {
- display: none; }
- .kss-toolbar a:focus, .kss-toolbar a:hover {
- border-color: #000; }
- .kss-toolbar a:focus .kss-toolbar__icon-fill, .kss-toolbar a:hover .kss-toolbar__icon-fill {
- fill: #000; }
-
-.kss-toolbar__tooltip {
- position: absolute;
- z-index: 1;
- display: inline-block;
- bottom: 100%;
- left: -10px;
- margin-bottom: 5px;
- border: solid 1px #666;
- padding: 8px 10px 6px;
- -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.25);
- box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.25);
- white-space: nowrap;
- color: #000;
- background: #fff;
- cursor: help;
- opacity: 0;
- -webkit-transition: opacity 0.25s;
- transition: opacity 0.25s;
- height: 1px;
- width: 1px;
- overflow: hidden;
- clip: rect(1px, 1px, 1px, 1px);
- word-wrap: normal; }
- .kss-toolbar__tooltip:before, .kss-toolbar__tooltip:after {
- content: '';
- position: absolute;
- bottom: -8px;
- left: 15px;
- width: 0;
- height: 0;
- border-width: 7px 5px 0;
- border-color: #666 transparent;
- border-style: solid; }
- .kss-toolbar__tooltip:after {
- bottom: -6px;
- border-top-color: #fff; }
-
-a:focus > .kss-toolbar__tooltip,
-a:hover > .kss-toolbar__tooltip {
- opacity: 1;
- clip: auto;
- height: auto;
- width: auto;
- overflow: visible; }
-
-
-/*# sourceMappingURL=kss.css.map*/
\ No newline at end of file
diff --git a/kss/builder/decanter/kss-assets/cubes.png b/kss/builder/decanter/kss-assets/cubes.png
deleted file mode 100644
index 945817155..000000000
Binary files a/kss/builder/decanter/kss-assets/cubes.png and /dev/null differ
diff --git a/kss/builder/decanter/kss-assets/favicon.ico b/kss/builder/decanter/kss-assets/favicon.ico
deleted file mode 100644
index 49e70f583..000000000
Binary files a/kss/builder/decanter/kss-assets/favicon.ico and /dev/null differ
diff --git a/kss/builder/decanter/kss-assets/file.png b/kss/builder/decanter/kss-assets/file.png
deleted file mode 100644
index 06dc721b3..000000000
Binary files a/kss/builder/decanter/kss-assets/file.png and /dev/null differ
diff --git a/kss/builder/decanter/kss-assets/github-fork--black.png b/kss/builder/decanter/kss-assets/github-fork--black.png
deleted file mode 100644
index 146ef8a80..000000000
Binary files a/kss/builder/decanter/kss-assets/github-fork--black.png and /dev/null differ
diff --git a/kss/builder/decanter/kss-assets/header-stanford-logo@2x.png b/kss/builder/decanter/kss-assets/header-stanford-logo@2x.png
deleted file mode 100644
index 093f03167..000000000
Binary files a/kss/builder/decanter/kss-assets/header-stanford-logo@2x.png and /dev/null differ
diff --git a/kss/builder/decanter/kss-assets/headshot.png b/kss/builder/decanter/kss-assets/headshot.png
deleted file mode 100644
index 15aa552c5..000000000
Binary files a/kss/builder/decanter/kss-assets/headshot.png and /dev/null differ
diff --git a/kss/builder/decanter/kss-assets/hero-banner-800.jpg b/kss/builder/decanter/kss-assets/hero-banner-800.jpg
deleted file mode 100644
index 43ec8d20f..000000000
Binary files a/kss/builder/decanter/kss-assets/hero-banner-800.jpg and /dev/null differ
diff --git a/kss/builder/decanter/kss-assets/hero-banner.jpg b/kss/builder/decanter/kss-assets/hero-banner.jpg
deleted file mode 100644
index 8d0939489..000000000
Binary files a/kss/builder/decanter/kss-assets/hero-banner.jpg and /dev/null differ
diff --git a/kss/builder/decanter/kss-assets/js/jquery.js b/kss/builder/decanter/kss-assets/js/jquery.js
deleted file mode 100644
index 49990d6e1..000000000
--- a/kss/builder/decanter/kss-assets/js/jquery.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){
-return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{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:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)),
-void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("}
- * define style rules. See the example page for examples.
- * mark the {@code } and {@code } tags in your source with
- * {@code class=prettyprint.}
- * You can also use the (html deprecated) {@code } tag, but the pretty
- * printer needs to do more substantial DOM manipulations to support that, so
- * some css styles may not be preserved.
- *
- * That's it. I wanted to keep the API as simple as possible, so there's no
- * need to specify which language the code is in, but if you wish, you can add
- * another class to the {@code } or {@code } element to specify the
- * language, as in {@code }. Any class that
- * starts with "lang-" followed by a file extension, specifies the file type.
- * See the "lang-*.js" files in this directory for code that implements
- * per-language file handlers.
- *
- * Change log:
- * cbeust, 2006/08/22
- *
- * Java annotations (start with "@") are now captured as literals ("lit")
- *
- * @requires console
- */
-
-// JSLint declarations
-/*global console, document, navigator, setTimeout, window */
-
-/**
- * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
- * UI events.
- * If set to {@code false}, {@code prettyPrint()} is synchronous.
- */
-window['PR_SHOULD_USE_CONTINUATION'] = true;
-
-(function () {
- // Keyword lists for various languages.
- // We use things that coerce to strings to make them compact when minified
- // and to defeat aggressive optimizers that fold large string constants.
- var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
- var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," +
- "double,enum,extern,float,goto,int,long,register,short,signed,sizeof," +
- "static,struct,switch,typedef,union,unsigned,void,volatile"];
- var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
- "new,operator,private,protected,public,this,throw,true,try,typeof"];
- var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
- "concept,concept_map,const_cast,constexpr,decltype," +
- "dynamic_cast,explicit,export,friend,inline,late_check," +
- "mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast," +
- "template,typeid,typename,using,virtual,where"];
- var JAVA_KEYWORDS = [COMMON_KEYWORDS,
- "abstract,boolean,byte,extends,final,finally,implements,import," +
- "instanceof,null,native,package,strictfp,super,synchronized,throws," +
- "transient"];
- var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
- "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
- "fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock," +
- "object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed," +
- "stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];
- var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
- "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
- "true,try,unless,until,when,while,yes";
- var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
- "debugger,eval,export,function,get,null,set,undefined,var,with," +
- "Infinity,NaN"];
- var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
- "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
- "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
- var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
- "elif,except,exec,finally,from,global,import,in,is,lambda," +
- "nonlocal,not,or,pass,print,raise,try,with,yield," +
- "False,True,None"];
- var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
- "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
- "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
- "BEGIN,END"];
- var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
- "function,in,local,set,then,until"];
- var ALL_KEYWORDS = [
- CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +
- PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
- var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
-
- // token style names. correspond to css classes
- /**
- * token style for a string literal
- * @const
- */
- var PR_STRING = 'str';
- /**
- * token style for a keyword
- * @const
- */
- var PR_KEYWORD = 'kwd';
- /**
- * token style for a comment
- * @const
- */
- var PR_COMMENT = 'com';
- /**
- * token style for a type
- * @const
- */
- var PR_TYPE = 'typ';
- /**
- * token style for a literal value. e.g. 1, null, true.
- * @const
- */
- var PR_LITERAL = 'lit';
- /**
- * token style for a punctuation string.
- * @const
- */
- var PR_PUNCTUATION = 'pun';
- /**
- * token style for a punctuation string.
- * @const
- */
- var PR_PLAIN = 'pln';
-
- /**
- * token style for an sgml tag.
- * @const
- */
- var PR_TAG = 'tag';
- /**
- * token style for a markup declaration such as a DOCTYPE.
- * @const
- */
- var PR_DECLARATION = 'dec';
- /**
- * token style for embedded source.
- * @const
- */
- var PR_SOURCE = 'src';
- /**
- * token style for an sgml attribute name.
- * @const
- */
- var PR_ATTRIB_NAME = 'atn';
- /**
- * token style for an sgml attribute value.
- * @const
- */
- var PR_ATTRIB_VALUE = 'atv';
-
- /**
- * A class that indicates a section of markup that is not code, e.g. to allow
- * embedding of line numbers within code listings.
- * @const
- */
- var PR_NOCODE = 'nocode';
-
-
-
-/**
- * A set of tokens that can precede a regular expression literal in
- * javascript
- * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
- * has the full list, but I've removed ones that might be problematic when
- * seen in languages that don't support regular expression literals.
- *
- * Specifically, I've removed any keywords that can't precede a regexp
- * literal in a syntactically legal javascript program, and I've removed the
- * "in" keyword since it's not a keyword in many languages, and might be used
- * as a count of inches.
- *
- *
The link a above does not accurately describe EcmaScript rules since
- * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
- * very well in practice.
- *
- * @private
- * @const
- */
-var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
-
-// CAVEAT: this does not properly handle the case where a regular
-// expression immediately follows another since a regular expression may
-// have flags for case-sensitivity and the like. Having regexp tokens
-// adjacent is not valid in any language I'm aware of, so I'm punting.
-// TODO: maybe style special characters inside a regexp as punctuation.
-
-
- /**
- * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
- * matches the union of the sets of strings matched by the input RegExp.
- * Since it matches globally, if the input strings have a start-of-input
- * anchor (/^.../), it is ignored for the purposes of unioning.
- * @param {Array.} regexs non multiline, non-global regexs.
- * @return {RegExp} a global regex.
- */
- function combinePrefixPatterns(regexs) {
- var capturedGroupIndex = 0;
-
- var needToFoldCase = false;
- var ignoreCase = false;
- for (var i = 0, n = regexs.length; i < n; ++i) {
- var regex = regexs[i];
- if (regex.ignoreCase) {
- ignoreCase = true;
- } else if (/[a-z]/i.test(regex.source.replace(
- /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
- needToFoldCase = true;
- ignoreCase = false;
- break;
- }
- }
-
- var escapeCharToCodeUnit = {
- 'b': 8,
- 't': 9,
- 'n': 0xa,
- 'v': 0xb,
- 'f': 0xc,
- 'r': 0xd
- };
-
- function decodeEscape(charsetPart) {
- var cc0 = charsetPart.charCodeAt(0);
- if (cc0 !== 92 /* \\ */) {
- return cc0;
- }
- var c1 = charsetPart.charAt(1);
- cc0 = escapeCharToCodeUnit[c1];
- if (cc0) {
- return cc0;
- } else if ('0' <= c1 && c1 <= '7') {
- return parseInt(charsetPart.substring(1), 8);
- } else if (c1 === 'u' || c1 === 'x') {
- return parseInt(charsetPart.substring(2), 16);
- } else {
- return charsetPart.charCodeAt(1);
- }
- }
-
- function encodeEscape(charCode) {
- if (charCode < 0x20) {
- return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
- }
- var ch = String.fromCharCode(charCode);
- if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
- ch = '\\' + ch;
- }
- return ch;
- }
-
- function caseFoldCharset(charSet) {
- var charsetParts = charSet.substring(1, charSet.length - 1).match(
- new RegExp(
- '\\\\u[0-9A-Fa-f]{4}'
- + '|\\\\x[0-9A-Fa-f]{2}'
- + '|\\\\[0-3][0-7]{0,2}'
- + '|\\\\[0-7]{1,2}'
- + '|\\\\[\\s\\S]'
- + '|-'
- + '|[^-\\\\]',
- 'g'));
- var groups = [];
- var ranges = [];
- var inverse = charsetParts[0] === '^';
- for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
- var p = charsetParts[i];
- if (/\\[bdsw]/i.test(p)) { // Don't muck with named groups.
- groups.push(p);
- } else {
- var start = decodeEscape(p);
- var end;
- if (i + 2 < n && '-' === charsetParts[i + 1]) {
- end = decodeEscape(charsetParts[i + 2]);
- i += 2;
- } else {
- end = start;
- }
- ranges.push([start, end]);
- // If the range might intersect letters, then expand it.
- // This case handling is too simplistic.
- // It does not deal with non-latin case folding.
- // It works for latin source code identifiers though.
- if (!(end < 65 || start > 122)) {
- if (!(end < 65 || start > 90)) {
- ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
- }
- if (!(end < 97 || start > 122)) {
- ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
- }
- }
- }
- }
-
- // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
- // -> [[1, 12], [14, 14], [16, 17]]
- ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
- var consolidatedRanges = [];
- var lastRange = [NaN, NaN];
- for (var i = 0; i < ranges.length; ++i) {
- var range = ranges[i];
- if (range[0] <= lastRange[1] + 1) {
- lastRange[1] = Math.max(lastRange[1], range[1]);
- } else {
- consolidatedRanges.push(lastRange = range);
- }
- }
-
- var out = ['['];
- if (inverse) { out.push('^'); }
- out.push.apply(out, groups);
- for (var i = 0; i < consolidatedRanges.length; ++i) {
- var range = consolidatedRanges[i];
- out.push(encodeEscape(range[0]));
- if (range[1] > range[0]) {
- if (range[1] + 1 > range[0]) { out.push('-'); }
- out.push(encodeEscape(range[1]));
- }
- }
- out.push(']');
- return out.join('');
- }
-
- function allowAnywhereFoldCaseAndRenumberGroups(regex) {
- // Split into character sets, escape sequences, punctuation strings
- // like ('(', '(?:', ')', '^'), and runs of characters that do not
- // include any of the above.
- var parts = regex.source.match(
- new RegExp(
- '(?:'
- + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set
- + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape
- + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape
- + '|\\\\[0-9]+' // a back-reference or octal escape
- + '|\\\\[^ux0-9]' // other escape sequence
- + '|\\(\\?[:!=]' // start of a non-capturing group
- + '|[\\(\\)\\^]' // start/emd of a group, or line start
- + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
- + ')',
- 'g'));
- var n = parts.length;
-
- // Maps captured group numbers to the number they will occupy in
- // the output or to -1 if that has not been determined, or to
- // undefined if they need not be capturing in the output.
- var capturedGroups = [];
-
- // Walk over and identify back references to build the capturedGroups
- // mapping.
- for (var i = 0, groupIndex = 0; i < n; ++i) {
- var p = parts[i];
- if (p === '(') {
- // groups are 1-indexed, so max group index is count of '('
- ++groupIndex;
- } else if ('\\' === p.charAt(0)) {
- var decimalValue = +p.substring(1);
- if (decimalValue && decimalValue <= groupIndex) {
- capturedGroups[decimalValue] = -1;
- }
- }
- }
-
- // Renumber groups and reduce capturing groups to non-capturing groups
- // where possible.
- for (var i = 1; i < capturedGroups.length; ++i) {
- if (-1 === capturedGroups[i]) {
- capturedGroups[i] = ++capturedGroupIndex;
- }
- }
- for (var i = 0, groupIndex = 0; i < n; ++i) {
- var p = parts[i];
- if (p === '(') {
- ++groupIndex;
- if (capturedGroups[groupIndex] === undefined) {
- parts[i] = '(?:';
- }
- } else if ('\\' === p.charAt(0)) {
- var decimalValue = +p.substring(1);
- if (decimalValue && decimalValue <= groupIndex) {
- parts[i] = '\\' + capturedGroups[groupIndex];
- }
- }
- }
-
- // Remove any prefix anchors so that the output will match anywhere.
- // ^^ really does mean an anchored match though.
- for (var i = 0, groupIndex = 0; i < n; ++i) {
- if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
- }
-
- // Expand letters to groups to handle mixing of case-sensitive and
- // case-insensitive patterns if necessary.
- if (regex.ignoreCase && needToFoldCase) {
- for (var i = 0; i < n; ++i) {
- var p = parts[i];
- var ch0 = p.charAt(0);
- if (p.length >= 2 && ch0 === '[') {
- parts[i] = caseFoldCharset(p);
- } else if (ch0 !== '\\') {
- // TODO: handle letters in numeric escapes.
- parts[i] = p.replace(
- /[a-zA-Z]/g,
- function (ch) {
- var cc = ch.charCodeAt(0);
- return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
- });
- }
- }
- }
-
- return parts.join('');
- }
-
- var rewritten = [];
- for (var i = 0, n = regexs.length; i < n; ++i) {
- var regex = regexs[i];
- if (regex.global || regex.multiline) { throw new Error('' + regex); }
- rewritten.push(
- '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
- }
-
- return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
- }
-
-
- /**
- * Split markup into a string of source code and an array mapping ranges in
- * that string to the text nodes in which they appear.
- *
- *
- * The HTML DOM structure:
- *
- * (Element "p"
- * (Element "b"
- * (Text "print ")) ; #1
- * (Text "'Hello '") ; #2
- * (Element "br") ; #3
- * (Text " + 'World';")) ; #4
- *
- *
- * corresponds to the HTML
- * {@code
print 'Hello '
+ 'World';
}.
- *
- *
- * It will produce the output:
- *
- * {
- * sourceCode: "print 'Hello '\n + 'World';",
- * // 1 2
- * // 012345678901234 5678901234567
- * spans: [0, #1, 6, #2, 14, #3, 15, #4]
- * }
- *
- *
- * where #1 is a reference to the {@code "print "} text node above, and so
- * on for the other text nodes.
- *
- *
- *
- * The {@code} spans array is an array of pairs. Even elements are the start
- * indices of substrings, and odd elements are the text nodes (or BR elements)
- * that contain the text for those substrings.
- * Substrings continue until the next index or the end of the source.
- *
- *
- * @param {Node} node an HTML DOM subtree containing source-code.
- * @return {Object} source code and the text nodes in which they occur.
- */
- function extractSourceSpans(node) {
- var nocode = /(?:^|\s)nocode(?:\s|$)/;
-
- var chunks = [];
- var length = 0;
- var spans = [];
- var k = 0;
-
- var whitespace;
- if (node.currentStyle) {
- whitespace = node.currentStyle.whiteSpace;
- } else if (window.getComputedStyle) {
- whitespace = document.defaultView.getComputedStyle(node, null)
- .getPropertyValue('white-space');
- }
- var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
-
- function walk(node) {
- switch (node.nodeType) {
- case 1: // Element
- if (nocode.test(node.className)) { return; }
- for (var child = node.firstChild; child; child = child.nextSibling) {
- walk(child);
- }
- var nodeName = node.nodeName;
- if ('BR' === nodeName || 'LI' === nodeName) {
- chunks[k] = '\n';
- spans[k << 1] = length++;
- spans[(k++ << 1) | 1] = node;
- }
- break;
- case 3: case 4: // Text
- var text = node.nodeValue;
- if (text.length) {
- if (!isPreformatted) {
- text = text.replace(/[ \t\r\n]+/g, ' ');
- } else {
- text = text.replace(/\r\n?/g, '\n'); // Normalize newlines.
- }
- // TODO: handle tabs here?
- chunks[k] = text;
- spans[k << 1] = length;
- length += text.length;
- spans[(k++ << 1) | 1] = node;
- }
- break;
- }
- }
-
- walk(node);
-
- return {
- sourceCode: chunks.join('').replace(/\n$/, ''),
- spans: spans
- };
- }
-
-
- /**
- * Apply the given language handler to sourceCode and add the resulting
- * decorations to out.
- * @param {number} basePos the index of sourceCode within the chunk of source
- * whose decorations are already present on out.
- */
- function appendDecorations(basePos, sourceCode, langHandler, out) {
- if (!sourceCode) { return; }
- var job = {
- sourceCode: sourceCode,
- basePos: basePos
- };
- langHandler(job);
- out.push.apply(out, job.decorations);
- }
-
- var notWs = /\S/;
-
- /**
- * Given an element, if it contains only one child element and any text nodes
- * it contains contain only space characters, return the sole child element.
- * Otherwise returns undefined.
- *
- * This is meant to return the CODE element in {@code
} when
- * there is a single child element that contains all the non-space textual
- * content, but not to return anything where there are multiple child elements
- * as in {@code ...
...
} or when there
- * is textual content.
- */
- function childContentWrapper(element) {
- var wrapper = undefined;
- for (var c = element.firstChild; c; c = c.nextSibling) {
- var type = c.nodeType;
- wrapper = (type === 1) // Element Node
- ? (wrapper ? element : c)
- : (type === 3) // Text Node
- ? (notWs.test(c.nodeValue) ? element : wrapper)
- : wrapper;
- }
- return wrapper === element ? undefined : wrapper;
- }
-
- /** Given triples of [style, pattern, context] returns a lexing function,
- * The lexing function interprets the patterns to find token boundaries and
- * returns a decoration list of the form
- * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
- * where index_n is an index into the sourceCode, and style_n is a style
- * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to
- * all characters in sourceCode[index_n-1:index_n].
- *
- * The stylePatterns is a list whose elements have the form
- * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
- *
- * Style is a style constant like PR_PLAIN, or can be a string of the
- * form 'lang-FOO', where FOO is a language extension describing the
- * language of the portion of the token in $1 after pattern executes.
- * E.g., if style is 'lang-lisp', and group 1 contains the text
- * '(hello (world))', then that portion of the token will be passed to the
- * registered lisp handler for formatting.
- * The text before and after group 1 will be restyled using this decorator
- * so decorators should take care that this doesn't result in infinite
- * recursion. For example, the HTML lexer rule for SCRIPT elements looks
- * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match
- * '