diff --git a/static/cdnjs/jsdelivr/fonts/exo-2-v4-latin_latin-ext_cyrillic-600.woff2 b/static/cdnjs/jsdelivr/fonts/exo-2-v4-latin_latin-ext_cyrillic-600.woff2
new file mode 100644
index 0000000..09581ee
Binary files /dev/null and b/static/cdnjs/jsdelivr/fonts/exo-2-v4-latin_latin-ext_cyrillic-600.woff2 differ
diff --git a/static/cdnjs/jsdelivr/fonts/exo-2.css b/static/cdnjs/jsdelivr/fonts/exo-2.css
new file mode 100644
index 0000000..d539291
--- /dev/null
+++ b/static/cdnjs/jsdelivr/fonts/exo-2.css
@@ -0,0 +1,13 @@
+/* exo-2-600 - latin_latin-ext_cyrillic */
+@font-face {
+ font-family: 'Exo 2';
+ font-style: normal;
+ font-weight: 600;
+ src: url('fonts/exo-2-v4-latin_latin-ext_cyrillic-600.eot'); /* IE9 Compat Modes */
+ src: local('Exo 2 Semi Bold'), local('Exo2-SemiBold'),
+ url('fonts/exo-2-v4-latin_latin-ext_cyrillic-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('exo-2-v4-latin_latin-ext_cyrillic-600.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/exo-2-v4-latin_latin-ext_cyrillic-600.woff') format('woff'), /* Modern Browsers */
+ url('fonts/exo-2-v4-latin_latin-ext_cyrillic-600.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/exo-2-v4-latin_latin-ext_cyrillic-600.svg#Exo2') format('svg'); /* Legacy iOS */
+}
diff --git a/static/cdnjs/jsdelivr/fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-500.woff2 b/static/cdnjs/jsdelivr/fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-500.woff2
new file mode 100644
index 0000000..f028c3e
Binary files /dev/null and b/static/cdnjs/jsdelivr/fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-500.woff2 differ
diff --git a/static/cdnjs/jsdelivr/fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-regular.woff2 b/static/cdnjs/jsdelivr/fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-regular.woff2
new file mode 100644
index 0000000..dd0b7e7
Binary files /dev/null and b/static/cdnjs/jsdelivr/fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-regular.woff2 differ
diff --git a/static/cdnjs/jsdelivr/fonts/fira-mono.css b/static/cdnjs/jsdelivr/fonts/fira-mono.css
new file mode 100644
index 0000000..4049b78
--- /dev/null
+++ b/static/cdnjs/jsdelivr/fonts/fira-mono.css
@@ -0,0 +1,26 @@
+/* fira-mono-regular - greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Fira Mono';
+ font-style: normal;
+ font-weight: 400;
+ src: url('fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-regular.eot'); /* IE9 Compat Modes */
+ src: local('Fira Mono Regular'), local('FiraMono-Regular'),
+ url('fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-regular.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-regular.woff') format('woff'), /* Modern Browsers */
+ url('fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-regular.svg#FiraMono') format('svg'); /* Legacy iOS */
+}
+/* fira-mono-500 - greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Fira Mono';
+ font-style: normal;
+ font-weight: 500;
+ src: url('fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-500.eot'); /* IE9 Compat Modes */
+ src: local('Fira Mono Medium'), local('FiraMono-Medium'),
+ url('fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-500.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-500.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-500.woff') format('woff'), /* Modern Browsers */
+ url('fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-500.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/fira-mono-v6-greek_latin_latin-ext_greek-ext_cyrillic-ext_cyrillic-500.svg#FiraMono') format('svg'); /* Legacy iOS */
+}
diff --git a/static/cdnjs/jsdelivr/fonts/icons.woff2 b/static/cdnjs/jsdelivr/fonts/icons.woff2
new file mode 100644
index 0000000..eea9aa2
Binary files /dev/null and b/static/cdnjs/jsdelivr/fonts/icons.woff2 differ
diff --git a/static/cdnjs/jsdelivr/fonts/lato-v14-latin_latin-ext-700.woff2 b/static/cdnjs/jsdelivr/fonts/lato-v14-latin_latin-ext-700.woff2
new file mode 100644
index 0000000..e344f0e
Binary files /dev/null and b/static/cdnjs/jsdelivr/fonts/lato-v14-latin_latin-ext-700.woff2 differ
diff --git a/static/cdnjs/jsdelivr/fonts/lato-v14-latin_latin-ext-regular.woff2 b/static/cdnjs/jsdelivr/fonts/lato-v14-latin_latin-ext-regular.woff2
new file mode 100644
index 0000000..b41315e
Binary files /dev/null and b/static/cdnjs/jsdelivr/fonts/lato-v14-latin_latin-ext-regular.woff2 differ
diff --git a/static/cdnjs/jsdelivr/fonts/lato.css b/static/cdnjs/jsdelivr/fonts/lato.css
new file mode 100644
index 0000000..b7d651c
--- /dev/null
+++ b/static/cdnjs/jsdelivr/fonts/lato.css
@@ -0,0 +1,52 @@
+/* lato-regular - latin_latin-ext */
+@font-face {
+ font-family: 'Lato';
+ font-style: normal;
+ font-weight: 400;
+ src: url('fonts/lato-v14-latin_latin-ext-regular.eot'); /* IE9 Compat Modes */
+ src: local('Lato Regular'), local('Lato-Regular'),
+ url('fonts/lato-v14-latin_latin-ext-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('lato-v14-latin_latin-ext-regular.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/lato-v14-latin_latin-ext-regular.woff') format('woff'), /* Modern Browsers */
+ url('fonts/lato-v14-latin_latin-ext-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/lato-v14-latin_latin-ext-regular.svg#Lato') format('svg'); /* Legacy iOS */
+}
+/* lato-italic - latin_latin-ext */
+@font-face {
+ font-family: 'Lato';
+ font-style: italic;
+ font-weight: 400;
+ src: url('fonts/lato-v14-latin_latin-ext-italic.eot'); /* IE9 Compat Modes */
+ src: local('Lato Italic'), local('Lato-Italic'),
+ url('fonts/lato-v14-latin_latin-ext-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fonts/lato-v14-latin_latin-ext-italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/lato-v14-latin_latin-ext-italic.woff') format('woff'), /* Modern Browsers */
+ url('fonts/lato-v14-latin_latin-ext-italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/lato-v14-latin_latin-ext-italic.svg#Lato') format('svg'); /* Legacy iOS */
+}
+/* lato-700 - latin_latin-ext */
+@font-face {
+ font-family: 'Lato';
+ font-style: normal;
+ font-weight: 700;
+ src: url('fonts/lato-v14-latin_latin-ext-700.eot'); /* IE9 Compat Modes */
+ src: local('Lato Bold'), local('Lato-Bold'),
+ url('fonts/lato-v14-latin_latin-ext-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('lato-v14-latin_latin-ext-700.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/lato-v14-latin_latin-ext-700.woff') format('woff'), /* Modern Browsers */
+ url('fonts/lato-v14-latin_latin-ext-700.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/lato-v14-latin_latin-ext-700.svg#Lato') format('svg'); /* Legacy iOS */
+}
+/* lato-700italic - latin_latin-ext */
+@font-face {
+ font-family: 'Lato';
+ font-style: italic;
+ font-weight: 700;
+ src: url('fonts/lato-v14-latin_latin-ext-700italic.eot'); /* IE9 Compat Modes */
+ src: local('Lato Bold Italic'), local('Lato-BoldItalic'),
+ url('fonts/lato-v14-latin_latin-ext-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fonts/lato-v14-latin_latin-ext-700italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/lato-v14-latin_latin-ext-700italic.woff') format('woff'), /* Modern Browsers */
+ url('fonts/lato-v14-latin_latin-ext-700italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/lato-v14-latin_latin-ext-700italic.svg#Lato') format('svg'); /* Legacy iOS */
+}
diff --git a/static/cdnjs/jsdelivr/fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-regular.woff2 b/static/cdnjs/jsdelivr/fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-regular.woff2
new file mode 100644
index 0000000..9908e32
Binary files /dev/null and b/static/cdnjs/jsdelivr/fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-regular.woff2 differ
diff --git a/static/cdnjs/jsdelivr/fonts/open-sans.css b/static/cdnjs/jsdelivr/fonts/open-sans.css
new file mode 100644
index 0000000..90c380b
--- /dev/null
+++ b/static/cdnjs/jsdelivr/fonts/open-sans.css
@@ -0,0 +1,130 @@
+/* open-sans-300 - greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 300;
+ src: url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300.eot'); /* IE9 Compat Modes */
+ src: local('Open Sans Light'), local('OpenSans-Light'),
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300.woff') format('woff'), /* Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300.svg#OpenSans') format('svg'); /* Legacy iOS */
+}
+/* open-sans-300italic - greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: italic;
+ font-weight: 300;
+ src: url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300italic.eot'); /* IE9 Compat Modes */
+ src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'),
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300italic.woff') format('woff'), /* Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-300italic.svg#OpenSans') format('svg'); /* Legacy iOS */
+}
+/* open-sans-regular - greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-regular.eot'); /* IE9 Compat Modes */
+ src: local('Open Sans Regular'), local('OpenSans-Regular'),
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-regular.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-regular.woff') format('woff'), /* Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-regular.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-regular.svg#OpenSans') format('svg'); /* Legacy iOS */
+}
+/* open-sans-italic - greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: italic;
+ font-weight: 400;
+ src: url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-italic.eot'); /* IE9 Compat Modes */
+ src: local('Open Sans Italic'), local('OpenSans-Italic'),
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-italic.woff') format('woff'), /* Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-italic.svg#OpenSans') format('svg'); /* Legacy iOS */
+}
+/* open-sans-600 - greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 600;
+ src: url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600.eot'); /* IE9 Compat Modes */
+ src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'),
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600.woff') format('woff'), /* Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600.svg#OpenSans') format('svg'); /* Legacy iOS */
+}
+/* open-sans-600italic - greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: italic;
+ font-weight: 600;
+ src: url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600italic.eot'); /* IE9 Compat Modes */
+ src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'),
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600italic.woff') format('woff'), /* Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-600italic.svg#OpenSans') format('svg'); /* Legacy iOS */
+}
+/* open-sans-700 - greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 700;
+ src: url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700.eot'); /* IE9 Compat Modes */
+ src: local('Open Sans Bold'), local('OpenSans-Bold'),
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700.woff') format('woff'), /* Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700.svg#OpenSans') format('svg'); /* Legacy iOS */
+}
+/* open-sans-700italic - greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: italic;
+ font-weight: 700;
+ src: url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700italic.eot'); /* IE9 Compat Modes */
+ src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'),
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700italic.woff') format('woff'), /* Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-700italic.svg#OpenSans') format('svg'); /* Legacy iOS */
+}
+/* open-sans-800 - greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 800;
+ src: url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800.eot'); /* IE9 Compat Modes */
+ src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'),
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800.woff') format('woff'), /* Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800.svg#OpenSans') format('svg'); /* Legacy iOS */
+}
+/* open-sans-800italic - greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic */
+@font-face {
+ font-family: 'Open Sans';
+ font-style: italic;
+ font-weight: 800;
+ src: url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800italic.eot'); /* IE9 Compat Modes */
+ src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'),
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800italic.woff2') format('woff2'), /* Super Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800italic.woff') format('woff'), /* Modern Browsers */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800italic.ttf') format('truetype'), /* Safari, Android, iOS */
+ url('fonts/open-sans-v15-greek_latin_latin-ext_vietnamese_greek-ext_cyrillic-ext_cyrillic-800italic.svg#OpenSans') format('svg'); /* Legacy iOS */
+}
diff --git a/static/cdnjs/jsdelivr/math.css b/static/cdnjs/jsdelivr/math.css
new file mode 100644
index 0000000..80af550
--- /dev/null
+++ b/static/cdnjs/jsdelivr/math.css
@@ -0,0 +1,80 @@
+.math-rendering-error-message {
+ display: inline-block;
+ border: 2px solid #000;
+ padding: 8px;
+ font-weight: bold;
+ text-align: left;
+}
+
+.mjpage .MJX-monospace {
+ font-family: monospace
+}
+
+.mjpage .MJX-sans-serif {
+ font-family: sans-serif
+}
+
+.mjpage {
+ display: inline;
+ font-style: normal;
+ font-weight: normal;
+ line-height: normal;
+ font-size: 100%;
+ font-size-adjust: none;
+ text-indent: 0;
+ text-align: left;
+ text-transform: none;
+ letter-spacing: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ white-space: nowrap;
+ float: none;
+ direction: ltr;
+ max-width: none;
+ max-height: none;
+ min-width: 0;
+ min-height: 0;
+ border: 0;
+ padding: 0;
+ margin: 0
+}
+
+.mjpage * {
+ transition: none;
+ -webkit-transition: none;
+ -moz-transition: none;
+ -ms-transition: none;
+ -o-transition: none
+}
+
+.mjx-svg-href {
+ fill: blue;
+ stroke: blue
+}
+
+.MathJax_SVG_LineBox {
+ display: table!important
+}
+
+.MathJax_SVG_LineBox span {
+ display: table-cell!important;
+ width: 10000em!important;
+ min-width: 0;
+ max-width: none;
+ padding: 0;
+ border: 0;
+ margin: 0
+}
+
+.mjpage__block {
+ text-align: center;
+ margin: 1em 0em;
+ position: relative;
+ display: block!important;
+ text-indent: 0;
+ max-width: none;
+ max-height: none;
+ min-width: 0;
+ min-height: 0;
+ width: 100%
+}
diff --git a/static/cdnjs/jsdelivr/script.js b/static/cdnjs/jsdelivr/script.js
new file mode 100644
index 0000000..b4a5d18
--- /dev/null
+++ b/static/cdnjs/jsdelivr/script.js
@@ -0,0 +1,37 @@
+var addUrlParam = function (url, key, val) {
+ var newParam = encodeURIComponent(key) + '=' + encodeURIComponent(val);
+
+ url = url.split('#')[0];
+ var twoPart = url.split('?'), params = {};
+ var tmp = twoPart[1] ? twoPart[1].split('&') : [];
+ for (var i in tmp) {
+ var a = tmp[i].split('=');
+ params[a[0]] = a[1];
+ }
+
+ params[key] = val;
+
+ url = twoPart[0] + '?';
+ for (var key2 in params) {
+ url += encodeURIComponent(key2) + '=' + encodeURIComponent(params[key2]) + '&';
+ }
+
+ url = url.substring(0, url.length - 1);
+
+ return url;
+};
+
+$(function () {
+ $(document).on('click', 'a[href-post]', function (e) {
+ e.preventDefault();
+
+ var form = document.createElement('form');
+ form.style.display = 'none';
+ form.method = 'post';
+ form.action = $(this).attr('href-post');
+ form.target = '_self';
+
+ document.body.appendChild(form);
+ form.submit();
+ });
+});
diff --git a/static/cdnjs/jsdelivr/style.css b/static/cdnjs/jsdelivr/style.css
new file mode 100644
index 0000000..3cc9f9f
--- /dev/null
+++ b/static/cdnjs/jsdelivr/style.css
@@ -0,0 +1,314 @@
+.ui.header,
+.ui.button,
+.ui.input input,
+.ui.menu,
+.ui.form input:not([type]),
+.ui.form input[type=date],
+.ui.form input[type=datetime-local],
+.ui.form input[type=email],
+.ui.form input[type=file],
+.ui.form input[type=number],
+.ui.form input[type=password],
+.ui.form input[type=search],
+.ui.form input[type=tel],
+.ui.form input[type=text],
+.ui.form input[type=time],
+.ui.form input[type=url],
+h1,
+h2,
+h3,
+h4,
+h5,
+body
+{
+ font-family:
+ Lato,
+ -apple-system,
+ 'PingFang SC',/* Apple */
+ 'Source Han Sans SC',
+ 'Noto Sans CJK SC', /* Google */
+ 'Microsoft Yahei',
+ 'Lantinghei SC',
+ 'Hiragino Sans GB',
+ 'Microsoft Sans Serif', /* M$ */
+ 'WenQuanYi Micro Hei', /* *nix */
+ sans-serif;
+}
+
+a.black-link {
+ color: #000;
+}
+
+a.black-link:hover {
+ color: #4183c4;
+}
+
+.font-content {
+ font-family: 'Open Sans', 'Source Han Sans SC', 'Noto Sans CJK SC', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif;
+}
+
+.markdown-edit {
+ font-family: 'Fira Mono', 'Noto Sans CJK SC', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft Yahei', monospace;
+}
+
+.padding {
+ padding-left: 1em;
+ padding-right: 1em;
+}
+
+.ui.segment:first-child {
+ margin-top: 0;
+}
+
+.ui.segment:last-child {
+ margin-bottom: 3px;
+}
+
+.hljs {
+ background: #FFF !important;
+}
+
+.ui.footer.segment {
+ margin: 2em 0em 0em;
+ padding: 1em 0em;
+ border: none;
+}
+
+th {
+ white-space: nowrap;
+}
+
+pre {
+ tab-size: 4;
+ overflow: auto;
+}
+
+img {
+ max-width: 100%;
+}
+
+table.center.aligned ul, table.center.aligned ol {
+ display: inline-block;
+ text-align: left;
+}
+
+body > .ui.page.dimmer {
+ position: fixed !important;
+}
+
+:not(.status_detail).status.success,
+.title:hover .status_detail.status.success,
+.title.active .status_detail.status.success,
+:not(.status_detail).status.submitted,
+.title:hover .status_detail.status.submitted,
+.title.active .status_detail.status.submitted,
+:not(.status_detail).status.accepted,
+.title:hover .status_detail.status.accepted,
+.title.active .status_detail.status.accepted {
+ color: forestgreen;
+}
+
+:not(.status_detail).status.wrong_answer,
+.title:hover .status_detail.status.wrong_answer,
+.title.active .status_detail.status.wrong_answer {
+ color: red;
+}
+
+:not(.status_detail).status.invalid_interaction,
+.title:hover .status_detail.status.invalid_interaction,
+.title.active .status_detail.status.invalid_interaction,
+:not(.status_detail).status.runtime_error,
+.title:hover .status_detail.status.runtime_error,
+.title.active .status_detail.status.runtime_error,
+:not(.status_detail).status.file_error,
+.title:hover .status_detail.status.file_error,
+.title.active .status_detail.status.file_error {
+ color: darkorchid;
+}
+
+:not(.status_detail).status.memory_limit_exceeded,
+.title:hover .status_detail.status.memory_limit_exceeded,
+.title.active .status_detail.status.memory_limit_exceeded,
+:not(.status_detail).status.time_limit_exceeded,
+.title:hover .status_detail.status.time_limit_exceeded,
+.title.active .status_detail.status.time_limit_exceeded,
+:not(.status_detail).status.output_limit_exceeded,
+.title:hover .status_detail.status.output_limit_exceeded,
+.title.active .status_detail.status.output_limit_exceeded {
+ color: sandybrown;
+}
+
+:not(.status_detail).status.waiting,
+.title:hover .status_detail.status.waiting,
+.title.active .status_detail.status.waiting,
+:not(.status_detail).status.system_error {
+ color: grey;
+}
+
+:not(.status_detail).status.unknown {
+ color: #e28989;
+}
+
+:not(.status_detail).status.running,
+.title:hover .status_detail.status.running,
+.title.active .status_detail.status.running,
+:not(.status_detail).status.pending,
+.title:hover .status_detail.status.pending,
+.title.active .status_detail.status.pending,
+:not(.status_detail).status.judging,
+.title:hover .status_detail.status.judging,
+.title.active .status_detail.status.judging {
+ color: #6cf;
+}
+
+:not(.status_detail).status.partially_correct,
+.title:hover .status_detail.status.partially_correct,
+.title.active .status_detail.status.partially_correct {
+ color: #01bab2;
+}
+
+:not(.status_detail).status.judgement_failed,
+.title:hover .status_detail.status.judgement_failed,
+.title.active .status_detail.status.judgement_failed {
+ color: #FF5722;
+}
+
+:not(.status_detail).status.skipped,
+.title:hover .status_detail.status.skipped,
+.title.active .status_detail.status.skipped {
+ color: #78909C;
+}
+
+:not(.status_detail).status.compiling {
+ color: #00b5ad;
+}
+
+:not(.status_detail).status.no_testdata {
+ color: brown;
+}
+
+:not(.status_detail).status.compile_error {
+ color: rgb(0, 68, 136);
+}
+
+/* score color */
+.score_0 {
+ color: red;
+}
+
+.score_1 {
+ color: #ff4b00;
+}
+
+.score_2 {
+ color: #ff6200;
+}
+
+.score_3 {
+ color: #ffa900;
+}
+
+.score_4 {
+ color: #ffd800;
+}
+
+.score_5 {
+ color: #c8ff00;
+}
+
+.score_6 {
+ color: #a5ff00;
+}
+
+.score_7 {
+ color: #52ff00;
+}
+
+.score_8 {
+ color: #41f741;
+}
+
+.score_9 {
+ color: #34d034;
+}
+
+.score_10 {
+ color: forestgreen;
+}
+
+.score {
+ text-shadow: 0 0 0.1px;
+}
+
+.rating_up {
+ color: #dd4b39;
+}
+
+.rating_down {
+ color: #3d9400;
+}
+
+/* code tag */
+:not(pre) > code {
+ display: inline-block;
+ font-size: 0.94em;
+ font-weight: bold;
+ padding: 0 1px;
+ vertical-align: bottom;
+}
+
+code {
+ font-family: "Fira Mono","Monaco","Menlo","Ubuntu Mono","Consolas","source-code-pro",monospace;
+}
+
+/* Animated spinner */
+@keyframes spinner-icon-rotate {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+.spinner.icon:before {
+ animation: spinner-icon-rotate 3s linear infinite;
+ display: block;
+}
+
+::-webkit-scrollbar {
+ -webkit-appearance: none;
+ width: 10px;
+ height: 10px;
+}
+
+::-webkit-scrollbar-track {
+ background: rgba(0, 0, 0, 0.1);
+ border-radius: 0px;
+}
+
+::-webkit-scrollbar-thumb {
+ cursor: pointer;
+ border-radius: 5px;
+ background: rgba(0, 0, 0, 0.25);
+ -webkit-transition: color 0.2s ease;
+ transition: color 0.2s ease;
+}
+
+::-webkit-scrollbar-thumb:window-inactive {
+ background: rgba(0, 0, 0, 0.15);
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background: rgba(128, 135, 139, 0.8);
+}
+
+.ui.top.attached.block.header i.icon {
+ font-size: 1em;
+ vertical-align: initial;
+}
+
+.ui.selection.dropdown .menu>.item {
+ padding-left: 0.8rem !important;
+ padding-right: 0 !important;
+}
diff --git a/static/cdnjs/jsdelivr/tomorrow.css b/static/cdnjs/jsdelivr/tomorrow.css
new file mode 100644
index 0000000..4508e89
--- /dev/null
+++ b/static/cdnjs/jsdelivr/tomorrow.css
@@ -0,0 +1,67 @@
+.hll { background-color: #d6d6d6 }
+.pl-c { color: #8e908c } /* Comment */
+.pl-err { color: #c82829 } /* Error */
+.pl-k { color: #8959a8 } /* Keyword */
+.pl-l { color: #f5871f } /* Literal */
+.pl-n { color: #4d4d4c } /* Name */
+.pl-o { color: #3e999f } /* Operator */
+.pl-p { color: #4d4d4c } /* Punctuation */
+.pl-ch { color: #8e908c } /* Comment.Hashbang */
+.pl-cm { color: #8e908c } /* Comment.Multiline */
+.pl-cp { color: #8e908c } /* Comment.Preproc */
+.pl-cpf { color: #8e908c } /* Comment.PreprocFile */
+.pl-c1 { color: #8e908c } /* Comment.Single */
+.pl-cs { color: #8e908c } /* Comment.Special */
+.pl-gd { color: #c82829 } /* Generic.Deleted */
+.pl-ge { font-style: italic } /* Generic.Emph */
+.pl-gh { color: #4d4d4c; font-weight: bold } /* Generic.Heading */
+.pl-gi { color: #718c00 } /* Generic.Inserted */
+.pl-gp { color: #8e908c; font-weight: bold } /* Generic.Prompt */
+.pl-gs { font-weight: bold } /* Generic.Strong */
+.pl-gu { color: #3e999f; font-weight: bold } /* Generic.Subheading */
+.pl-kc { color: #8959a8 } /* Keyword.Constant */
+.pl-kd { color: #8959a8 } /* Keyword.Declaration */
+.pl-kn { color: #3e999f } /* Keyword.Namespace */
+.pl-kp { color: #8959a8 } /* Keyword.Pseudo */
+.pl-kr { color: #8959a8 } /* Keyword.Reserved */
+.pl-kt { color: #eab700 } /* Keyword.Type */
+.pl-ld { color: #718c00 } /* Literal.Date */
+.pl-m { color: #f5871f } /* Literal.Number */
+.pl-s { color: #718c00 } /* Literal.String */
+.pl-na { color: #4271ae } /* Name.Attribute */
+.pl-nb { color: #4d4d4c } /* Name.Builtin */
+.pl-nc { color: #eab700 } /* Name.Class */
+.pl-no { color: #c82829 } /* Name.Constant */
+.pl-nd { color: #3e999f } /* Name.Decorator */
+.pl-ni { color: #4d4d4c } /* Name.Entity */
+.pl-ne { color: #c82829 } /* Name.Exception */
+.pl-nf { color: #4271ae } /* Name.Function */
+.pl-nl { color: #4d4d4c } /* Name.Label */
+.pl-nn { color: #eab700 } /* Name.Namespace */
+.pl-nx { color: #4271ae } /* Name.Other */
+.pl-py { color: #4d4d4c } /* Name.Property */
+.pl-nt { color: #3e999f } /* Name.Tag */
+.pl-nv { color: #c82829 } /* Name.Variable */
+.pl-ow { color: #3e999f } /* Operator.Word */
+.pl-w { color: #4d4d4c } /* Text.Whitespace */
+.pl-mb { color: #f5871f } /* Literal.Number.Bin */
+.pl-mf { color: #f5871f } /* Literal.Number.Float */
+.pl-mh { color: #f5871f } /* Literal.Number.Hex */
+.pl-mi { color: #f5871f } /* Literal.Number.Integer */
+.pl-mo { color: #f5871f } /* Literal.Number.Oct */
+.pl-sb { color: #718c00 } /* Literal.String.Backtick */
+.pl-sc { color: #4d4d4c } /* Literal.String.Char */
+.pl-sd { color: #8e908c } /* Literal.String.Doc */
+.pl-s2 { color: #718c00 } /* Literal.String.Double */
+.pl-se { color: #f5871f } /* Literal.String.Escape */
+.pl-sh { color: #718c00 } /* Literal.String.Heredoc */
+.pl-si { color: #f5871f } /* Literal.String.Interpol */
+.pl-sx { color: #718c00 } /* Literal.String.Other */
+.pl-sr { color: #718c00 } /* Literal.String.Regex */
+.pl-s1 { color: #718c00 } /* Literal.String.Single */
+.pl-ss { color: #718c00 } /* Literal.String.Symbol */
+.pl-bp { color: #4d4d4c } /* Name.Builtin.Pseudo */
+.pl-vc { color: #c82829 } /* Name.Variable.Class */
+.pl-vg { color: #c82829 } /* Name.Variable.Global */
+.pl-vi { color: #c82829 } /* Name.Variable.Instance */
+.pl-il { color: #f5871f } /* Literal.Number.Integer.Long */
diff --git a/views/footer.ejs b/views/footer.ejs
index 8b70b7e..f19e3a1 100644
--- a/views/footer.ejs
+++ b/views/footer.ejs
@@ -7,6 +7,6 @@
-
+