diff --git a/.gitignore b/.gitignore
index 4ce7bb4e4..06f40b993 100644
--- a/.gitignore
+++ b/.gitignore
@@ -54,5 +54,4 @@ docker-sync.yml
/config/credentials/development.key
/config/credentials/test.key
/config/credentials/staging.key
-/config/credentials/appliance.key
-
+/config/credentials/appliance.key
\ No newline at end of file
diff --git a/Gemfile.lock b/Gemfile.lock
index 6e4f2b162..7d7448cc4 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -164,7 +164,7 @@ GEM
flamegraph (0.9.5)
globalid (1.1.0)
activesupport (>= 5.0)
- graphql (2.0.24)
+ graphql (2.0.25)
graphql-client (0.18.0)
activesupport (>= 3.0)
graphql
@@ -239,7 +239,7 @@ GEM
marcel (1.0.2)
matrix (0.4.2)
method_source (1.0.0)
- mime-types (3.4.1)
+ mime-types (3.5.0)
mime-types-data (~> 3.2015)
mime-types-data (3.2023.0218.1)
mini_mime (1.1.2)
@@ -269,6 +269,9 @@ GEM
netrc (0.11.0)
newrelic_rpm (9.3.1)
nio4r (2.5.9)
+ nokogiri (1.15.3)
+ mini_portile2 (~> 2.8.2)
+ racc (~> 1.4)
nokogiri (1.15.3-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.15.3-x86_64-linux)
@@ -280,30 +283,32 @@ GEM
multi_xml (~> 0.5)
rack (>= 1.2, < 4)
oj (3.15.1)
- omniauth (1.9.2)
+ omniauth (2.1.1)
hashie (>= 3.4.6)
- rack (>= 1.6.2, < 3)
- omniauth-github (1.4.0)
- omniauth (~> 1.5)
- omniauth-oauth2 (>= 1.4.0, < 2.0)
- omniauth-google-oauth2 (0.8.2)
+ rack (>= 2.2.3)
+ rack-protection
+ omniauth-github (2.0.0)
+ omniauth (~> 2.0)
+ omniauth-oauth2 (~> 1.7.1)
+ omniauth-google-oauth2 (1.0.1)
jwt (>= 2.0)
oauth2 (~> 1.1)
- omniauth (~> 1.1)
- omniauth-oauth2 (>= 1.6)
- omniauth-keycloak (1.2.1)
- json-jwt (~> 1.12)
- omniauth (~> 1.9.0)
- omniauth-oauth2 (~> 1.6.0)
- omniauth-oauth2 (1.6.0)
- oauth2 (~> 1.1)
- omniauth (~> 1.9)
+ omniauth (~> 2.0)
+ omniauth-oauth2 (~> 1.7.1)
+ omniauth-keycloak (1.5.1)
+ faraday
+ json-jwt (> 1.13.0)
+ omniauth (>= 2.0)
+ omniauth-oauth2 (~> 1.7.1)
+ omniauth-oauth2 (1.7.3)
+ oauth2 (>= 1.4, < 3)
+ omniauth (>= 1.9, < 3)
omniauth-orcid (2.1.1)
omniauth-oauth2 (~> 1.3)
ruby_dig (~> 0.0.2)
- omniauth-rails_csrf_protection (0.1.2)
+ omniauth-rails_csrf_protection (1.0.1)
actionpack (>= 4.2)
- omniauth (>= 1.3.1)
+ omniauth (~> 2.0)
open_uri_redirections (0.2.1)
parallel (1.23.0)
parser (3.2.2.3)
@@ -323,6 +328,8 @@ GEM
rack (>= 0.4)
rack-mini-profiler (3.1.1)
rack (>= 1.2.0)
+ rack-protection (3.1.0)
+ rack (~> 2.2, >= 2.2.4)
rack-test (2.1.0)
rack (>= 1.3)
rails (7.0.3)
@@ -441,7 +448,7 @@ GEM
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
stackprof (0.2.25)
- stimulus-rails (1.2.1)
+ stimulus-rails (1.2.2)
railties (>= 6.0.0)
temple (0.10.2)
terser (1.1.17)
@@ -572,4 +579,4 @@ DEPENDENCIES
will_paginate (~> 3.0)
BUNDLED WITH
- 2.4.12
+ 2.1.4
diff --git a/app/assets/images/icons/circle-down.svg b/app/assets/images/icons/circle-down.svg
new file mode 100644
index 000000000..a230b0565
--- /dev/null
+++ b/app/assets/images/icons/circle-down.svg
@@ -0,0 +1,4 @@
+
+
+
\ No newline at end of file
diff --git a/app/assets/images/icons/circle-left.svg b/app/assets/images/icons/circle-left.svg
new file mode 100644
index 000000000..45a2739be
--- /dev/null
+++ b/app/assets/images/icons/circle-left.svg
@@ -0,0 +1,4 @@
+
+
+
\ No newline at end of file
diff --git a/app/assets/images/icons/circle-right.svg b/app/assets/images/icons/circle-right.svg
new file mode 100644
index 000000000..f77ce5fb8
--- /dev/null
+++ b/app/assets/images/icons/circle-right.svg
@@ -0,0 +1,4 @@
+
+
+
\ No newline at end of file
diff --git a/app/assets/images/icons/circle-up.svg b/app/assets/images/icons/circle-up.svg
new file mode 100644
index 000000000..30d084681
--- /dev/null
+++ b/app/assets/images/icons/circle-up.svg
@@ -0,0 +1,4 @@
+
+
+
\ No newline at end of file
diff --git a/app/assets/images/icons/zoom-center.svg b/app/assets/images/icons/zoom-center.svg
new file mode 100644
index 000000000..8cdd83939
--- /dev/null
+++ b/app/assets/images/icons/zoom-center.svg
@@ -0,0 +1,4 @@
+
+
+
\ No newline at end of file
diff --git a/app/assets/images/icons/zoom-in.svg b/app/assets/images/icons/zoom-in.svg
new file mode 100644
index 000000000..9d91d0541
--- /dev/null
+++ b/app/assets/images/icons/zoom-in.svg
@@ -0,0 +1,4 @@
+
+
+
\ No newline at end of file
diff --git a/app/assets/images/icons/zoom-out.svg b/app/assets/images/icons/zoom-out.svg
new file mode 100644
index 000000000..58f33bebb
--- /dev/null
+++ b/app/assets/images/icons/zoom-out.svg
@@ -0,0 +1,4 @@
+
+
+
\ No newline at end of file
diff --git a/app/assets/images/summary/documentation.svg b/app/assets/images/summary/documentation.svg
new file mode 100644
index 000000000..826e62cc5
--- /dev/null
+++ b/app/assets/images/summary/documentation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/images/summary/download.svg b/app/assets/images/summary/download.svg
new file mode 100644
index 000000000..3af86ed8a
--- /dev/null
+++ b/app/assets/images/summary/download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/images/summary/homepage.svg b/app/assets/images/summary/homepage.svg
new file mode 100644
index 000000000..4df669b75
--- /dev/null
+++ b/app/assets/images/summary/homepage.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/images/summary/sparql.svg b/app/assets/images/summary/sparql.svg
new file mode 100644
index 000000000..c2cda9582
--- /dev/null
+++ b/app/assets/images/summary/sparql.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/assets/stylesheets/application.css.scss.erb b/app/assets/stylesheets/application.css.scss.erb
index e509a4f5d..7152e9a2a 100755
--- a/app/assets/stylesheets/application.css.scss.erb
+++ b/app/assets/stylesheets/application.css.scss.erb
@@ -21,6 +21,7 @@
*= require select2
*= require trumbowyg
*= require theme-variables
+ *= require summary
*/
/* BioPortal */
diff --git a/app/assets/stylesheets/components/concept_details.scss b/app/assets/stylesheets/components/concept_details.scss
index 7ae6fef43..28b1b92cf 100644
--- a/app/assets/stylesheets/components/concept_details.scss
+++ b/app/assets/stylesheets/components/concept_details.scss
@@ -1,6 +1,4 @@
-
.concept_details_component .raw-table .dropdown-title-bar p {
- padding: 10px 0px;
color: rgb(136, 136, 136);
font-weight: 400;
}
diff --git a/app/assets/stylesheets/ontologies.scss b/app/assets/stylesheets/ontologies.scss
index 41edd683d..19cfad023 100644
--- a/app/assets/stylesheets/ontologies.scss
+++ b/app/assets/stylesheets/ontologies.scss
@@ -158,10 +158,7 @@ $ont-show-bg-color: #e9ecef;
}
}
-#ontology_versions td.show_more_subs {
- text-align: right;
- background-color: white;
-}
+
/************************************
/* Classes pane
diff --git a/app/assets/stylesheets/summary.scss.erb b/app/assets/stylesheets/summary.scss.erb
new file mode 100644
index 000000000..e3f6adbdd
--- /dev/null
+++ b/app/assets/stylesheets/summary.scss.erb
@@ -0,0 +1,213 @@
+.summary-page-center {
+ display: flex;
+ justify-content: center;
+ flex-wrap: wrap;
+}
+
+.summary-page-first-row {
+ width: 670px;
+ margin-right: 20px;
+}
+
+.summary-page-second-row {
+ width: 450px;
+}
+
+@media (max-width: 1288px) {
+ .summary-page-first-row {
+ width: 100%;
+ margin: 0;
+ padding: 0 20px;
+ }
+ .summary-page-second-row {
+ width: 100%;
+ margin: 0;
+ padding: 0 20px;
+ }
+}
+
+.show > .btn-outline-primary.dropdown-toggle {
+ background-color: var(--primary-color) !important;
+ color: white !important;
+}
+
+
+.description_text,
+.description_text a {
+ color: #888888 !important;
+ font-size: 15px;
+ overflow: hidden;
+ margin-bottom: 0;
+ flex: 1;
+ min-width: 500px;
+}
+
+
+.creation_info {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+}
+
+
+
+.date_creation_text {
+ color: #888888;
+ font-size: 14px;
+ font-weight: 550;
+ margin-top: 15px;
+ margin-right: 5px;
+ margin-left: 5px;
+}
+
+.creator_text {
+ color: #888888;
+ font-size: 14px;
+ margin-left: 5px;
+ font-weight: 550;
+ margin-top: 15px;
+ width: 300px;
+}
+
+.creation_text {
+ color: #888888;
+ font-size: 14px;
+ margin-left: 1px;
+ margin-top: 15px;
+ margin-right: 2px;
+}
+
+
+.icons_container {
+ margin-top: 10px;
+ justify-content: space-evenly;
+ display: flex;
+ padding: 0 20px;
+ svg path {
+ fill: var(--primary-color);
+ }
+}
+
+
+
+.disabled-icon svg path {
+ fill: rgba(0, 0, 0, 0.1);
+}
+
+.normal_text {
+ font-size: 15px;
+ color: black;
+ word-wrap: break-word;
+}
+
+
+
+.metrics {
+ display: flex;
+ justify-content: space-between;
+}
+
+.metrics-container {
+ border-radius: 8px;
+ height: 90px;
+ box-shadow: 2px 0px 60px rgba(0, 0, 0, 0.1);
+ padding: 71px 40px;
+ margin-top: 10px;
+}
+
+.metrics-container > div {
+ display: flex;
+ align-items: center;
+ margin-bottom: 20px;
+}
+
+.metrics-container > div > p {
+ font-size: 20px;
+ font-weight: 600;
+ margin-left: 18px;
+}
+
+.metrics-item {
+ display: flex;
+ align-items: center;
+}
+
+.metrics-item hr {
+ height: 73px;
+ width: 0px;
+ border: 2px solid var(--primary-color);
+ border-radius: 5px;
+ margin-right: 15px;
+}
+
+.metrics-item h4 {
+ font-size: 30px;
+ font-weight: 600;
+ line-height: 1.2;
+ color: #000000;
+}
+
+.metrics-item p,
+.metrics-item a {
+ font-size: 18px;
+ font-weight: 400;
+}
+
+
+#ontology_versions .show_more_subs td {
+ text-align: right;
+}
+
+
+
+div.vis-network div.vis-navigation {
+ div.vis-button.vis-up{
+ background-color: var(--primary-color);
+ -webkit-mask-image: url(asset-path('icons/circle-up.svg'));
+ mask-image: url(asset-path('icons/circle-up.svg'));
+ background-image: none !important;
+ }
+ div.vis-button.vis-down{
+ background-color: var(--primary-color);
+ -webkit-mask-image: url(asset-path('icons/circle-down.svg'));
+ mask-image: url(asset-path('icons/circle-down.svg'));
+ background-image: none !important;
+ }
+
+ div.vis-button.vis-left{
+ background-color: var(--primary-color);
+ -webkit-mask-image: url(asset-path('icons/circle-left.svg'));
+ mask-image: url(asset-path('icons/circle-left.svg'));
+ background-image: none !important;
+ }
+
+ div.vis-button.vis-right{
+ background-color: var(--primary-color);
+ -webkit-mask-image: url(asset-path('icons/circle-right.svg'));
+ mask-image: url(asset-path('icons/circle-right.svg'));
+ background-image: none !important;
+ }
+
+ div.vis-button.vis-zoomIn{
+ background-color: var(--primary-color);
+ -webkit-mask-image: url(asset-path('icons/zoom-in.svg'));
+ mask-image: url(asset-path('icons/zoom-in.svg'));
+ background-image: none !important;
+ }
+
+ div.vis-button.vis-zoomOut{
+ background-color: var(--primary-color);
+ -webkit-mask-image: url(asset-path('icons/zoom-out.svg'));
+ mask-image: url(asset-path('icons/zoom-out.svg'));
+ background-image: none !important;
+ }
+
+ div.vis-button.vis-zoomExtends{
+ background-color: var(--primary-color);
+ -webkit-mask-image: url(asset-path('icons/zoom-center.svg'));
+ mask-image: url(asset-path('icons/zoom-center.svg'));
+ background-image: none !important;
+ }
+}
+
+
diff --git a/app/components/dropdown_container_component.rb b/app/components/dropdown_container_component.rb
index 897d708b9..3d785f85e 100644
--- a/app/components/dropdown_container_component.rb
+++ b/app/components/dropdown_container_component.rb
@@ -6,5 +6,6 @@ def initialize(title:, id:, tooltip:nil)
super
@title = title
@id = id
+ @tooltip = tooltip
end
end
diff --git a/app/components/language_field_component.rb b/app/components/language_field_component.rb
index 6922f855e..c2e00ed31 100644
--- a/app/components/language_field_component.rb
+++ b/app/components/language_field_component.rb
@@ -3,21 +3,22 @@
class LanguageFieldComponent < ViewComponent::Base
LEXVO_TO_FLAG = { 'http://lexvo.org/id/iso639-3/aar' => 'aa', 'http://lexvo.org/id/iso639-3/abk' => 'ab',
- 'http://lexvo.org/id/iso639-3/ave' => 'ae', 'http://lexvo.org/id/iso639-3/afr' => 'af',
- 'http://lexvo.org/id/iso639-3/aka' => 'ak', 'http://lexvo.org/id/iso639-3/amh' => 'am',
- 'http://lexvo.org/id/iso639-3/arg' => 'an', 'http://lexvo.org/id/iso639-3/ara' => 'ar', 'http://lexvo.org/id/iso639-3/asm' => 'as', 'http://lexvo.org/id/iso639-3/ava' => 'av', 'http://lexvo.org/id/iso639-3/aym' => 'ay', 'http://lexvo.org/id/iso639-3/aze' => 'az', 'http://lexvo.org/id/iso639-3/bak' => 'ba', 'http://lexvo.org/id/iso639-3/bel' => 'be', 'http://lexvo.org/id/iso639-3/bul' => 'bg', 'http://lexvo.org/id/iso639-3/bis' => 'bi', 'http://lexvo.org/id/iso639-3/bam' => 'bm', 'http://lexvo.org/id/iso639-3/ben' => 'bn', 'http://lexvo.org/id/iso639-3/bod' => 'bo', 'http://lexvo.org/id/iso639-3/bre' => 'br', 'http://lexvo.org/id/iso639-3/bos' => 'bs', 'http://lexvo.org/id/iso639-3/cat' => 'ca', 'http://lexvo.org/id/iso639-3/che' => 'ce', 'http://lexvo.org/id/iso639-3/cha' => 'ch', 'http://lexvo.org/id/iso639-3/cos' => 'co', 'http://lexvo.org/id/iso639-3/cre' => 'cr', 'http://lexvo.org/id/iso639-3/ces' => 'cs', 'http://lexvo.org/id/iso639-3/chu' => 'cu', 'http://lexvo.org/id/iso639-3/chv' => 'cv', 'http://lexvo.org/id/iso639-3/cym' => 'cy', 'http://lexvo.org/id/iso639-3/dan' => 'da', 'http://lexvo.org/id/iso639-3/deu' => 'de', 'http://lexvo.org/id/iso639-3/div' => 'dv', 'http://lexvo.org/id/iso639-3/dzo' => 'dz', 'http://lexvo.org/id/iso639-3/ewe' => 'ee', 'http://lexvo.org/id/iso639-3/ell' => 'el', 'http://lexvo.org/id/iso639-3/eng' => 'en', 'http://lexvo.org/id/iso639-3/epo' => 'eo', 'http://lexvo.org/id/iso639-3/spa' => 'es', 'http://lexvo.org/id/iso639-3/est' => 'et', 'http://lexvo.org/id/iso639-3/eus' => 'eu', 'http://lexvo.org/id/iso639-3/fas' => 'fa', 'http://lexvo.org/id/iso639-3/ful' => 'ff', 'http://lexvo.org/id/iso639-3/fin' => 'fi', 'http://lexvo.org/id/iso639-3/fij' => 'fj', 'http://lexvo.org/id/iso639-3/fao' => 'fo', 'http://lexvo.org/id/iso639-3/fra' => 'fr', 'http://lexvo.org/id/iso639-3/fry' => 'fy', 'http://lexvo.org/id/iso639-3/gle' => 'ga', 'http://lexvo.org/id/iso639-3/gla' => 'gd', 'http://lexvo.org/id/iso639-3/glg' => 'gl', 'http://lexvo.org/id/iso639-3/grn' => 'gn', 'http://lexvo.org/id/iso639-3/guj' => 'gu', 'http://lexvo.org/id/iso639-3/glv' => 'gv', 'http://lexvo.org/id/iso639-3/hau' => 'ha', 'http://lexvo.org/id/iso639-3/heb' => 'he', 'http://lexvo.org/id/iso639-3/hin' => 'hi', 'http://lexvo.org/id/iso639-3/hmo' => 'ho', 'http://lexvo.org/id/iso639-3/hrv' => 'hr', 'http://lexvo.org/id/iso639-3/hat' => 'ht', 'http://lexvo.org/id/iso639-3/hun' => 'hu', 'http://lexvo.org/id/iso639-3/hye' => 'hy', 'http://lexvo.org/id/iso639-3/her' => 'hz', 'http://lexvo.org/id/iso639-3/ina' => 'ia', 'http://lexvo.org/id/iso639-3/ind' => 'id', 'http://lexvo.org/id/iso639-3/ile' => 'ie', 'http://lexvo.org/id/iso639-3/ibo' => 'ig', 'http://lexvo.org/id/iso639-3/iii' => 'ii', 'http://lexvo.org/id/iso639-3/ipk' => 'ik', 'http://lexvo.org/id/iso639-3/ido' => 'io', 'http://lexvo.org/id/iso639-3/isl' => 'is', 'http://lexvo.org/id/iso639-3/ita' => 'it', 'http://lexvo.org/id/iso639-3/iku' => 'iu', 'http://lexvo.org/id/iso639-3/jpn' => 'ja', 'http://lexvo.org/id/iso639-3/jav' => 'jv', 'http://lexvo.org/id/iso639-3/kat' => 'ka', 'http://lexvo.org/id/iso639-3/kon' => 'kg', 'http://lexvo.org/id/iso639-3/kik' => 'ki', 'http://lexvo.org/id/iso639-3/kua' => 'kj', 'http://lexvo.org/id/iso639-3/kaz' => 'kk', 'http://lexvo.org/id/iso639-3/kal' => 'kl', 'http://lexvo.org/id/iso639-3/khm' => 'km', 'http://lexvo.org/id/iso639-3/kan' => 'kn', 'http://lexvo.org/id/iso639-3/kor' => 'ko', 'http://lexvo.org/id/iso639-3/kau' => 'kr', 'http://lexvo.org/id/iso639-3/kas' => 'ks', 'http://lexvo.org/id/iso639-3/kur' => 'ku', 'http://lexvo.org/id/iso639-3/kom' => 'kv', 'http://lexvo.org/id/iso639-3/cor' => 'kw', 'http://lexvo.org/id/iso639-3/kir' => 'ky', 'http://lexvo.org/id/iso639-3/lat' => 'la', 'http://lexvo.org/id/iso639-3/ltz' => 'lb', 'http://lexvo.org/id/iso639-3/lug' => 'lg', 'http://lexvo.org/id/iso639-3/lim' => 'li', 'http://lexvo.org/id/iso639-3/lin' => 'ln', 'http://lexvo.org/id/iso639-3/lao' => 'lo', 'http://lexvo.org/id/iso639-3/lit' => 'lt', 'http://lexvo.org/id/iso639-3/lub' => 'lu', 'http://lexvo.org/id/iso639-3/lav' => 'lv', 'http://lexvo.org/id/iso639-3/mlg' => 'mg', 'http://lexvo.org/id/iso639-3/mah' => 'mh', 'http://lexvo.org/id/iso639-3/mri' => 'mi', 'http://lexvo.org/id/iso639-3/mkd' => 'mk', 'http://lexvo.org/id/iso639-3/mal' => 'ml', 'http://lexvo.org/id/iso639-3/mon' => 'mn', 'http://lexvo.org/id/iso639-3/mar' => 'mr', 'http://lexvo.org/id/iso639-3/msa' => 'ms', 'http://lexvo.org/id/iso639-3/mlt' => 'mt', 'http://lexvo.org/id/iso639-3/mya' => 'my', 'http://lexvo.org/id/iso639-3/nau' => 'na', 'http://lexvo.org/id/iso639-3/nob' => 'nb', 'http://lexvo.org/id/iso639-3/nde' => 'nd', 'http://lexvo.org/id/iso639-3/nep' => 'ne', 'http://lexvo.org/id/iso639-3/ndo' => 'ng', 'http://lexvo.org/id/iso639-3/nld' => 'nl', 'http://lexvo.org/id/iso639-3/nno' => 'nn', 'http://lexvo.org/id/iso639-3/nor' => 'no', 'http://lexvo.org/id/iso639-3/nbl' => 'nr', 'http://lexvo.org/id/iso639-3/nav' => 'nv', 'http://lexvo.org/id/iso639-3/nya' => 'ny', 'http://lexvo.org/id/iso639-3/oci' => 'oc', 'http://lexvo.org/id/iso639-3/oji' => 'oj', 'http://lexvo.org/id/iso639-3/orm' => 'om', 'http://lexvo.org/id/iso639-3/ori' => 'or', 'http://lexvo.org/id/iso639-3/oss' => 'os', 'http://lexvo.org/id/iso639-3/pan' => 'pa', 'http://lexvo.org/id/iso639-3/pli' => 'pi', 'http://lexvo.org/id/iso639-3/pol' => 'pl', 'http://lexvo.org/id/iso639-3/pus' => 'ps', 'http://lexvo.org/id/iso639-3/por' => 'pt', 'http://lexvo.org/id/iso639-3/que' => 'qu', 'http://lexvo.org/id/iso639-3/roh' => 'rm', 'http://lexvo.org/id/iso639-3/run' => 'rn', 'http://lexvo.org/id/iso639-3/ron' => 'ro', 'http://lexvo.org/id/iso639-3/rus' => 'ru', 'http://lexvo.org/id/iso639-3/kin' => 'rw', 'http://lexvo.org/id/iso639-3/san' => 'sa', 'http://lexvo.org/id/iso639-3/srd' => 'sc', 'http://lexvo.org/id/iso639-3/snd' => 'sd', 'http://lexvo.org/id/iso639-3/sme' => 'se', 'http://lexvo.org/id/iso639-3/sag' => 'sg', 'http://lexvo.org/id/iso639-3/hbs' => 'sh', 'http://lexvo.org/id/iso639-3/sin' => 'si', 'http://lexvo.org/id/iso639-3/slk' => 'sk', 'http://lexvo.org/id/iso639-3/slv' => 'sl', 'http://lexvo.org/id/iso639-3/smo' => 'sm', 'http://lexvo.org/id/iso639-3/sna' => 'sn', 'http://lexvo.org/id/iso639-3/som' => 'so', 'http://lexvo.org/id/iso639-3/sqi' => 'sq', 'http://lexvo.org/id/iso639-3/srp' => 'sr', 'http://lexvo.org/id/iso639-3/ssw' => 'ss', 'http://lexvo.org/id/iso639-3/sot' => 'st', 'http://lexvo.org/id/iso639-3/sun' => 'su', 'http://lexvo.org/id/iso639-3/swe' => 'sv', 'http://lexvo.org/id/iso639-3/swa' => 'sw', 'http://lexvo.org/id/iso639-3/tam' => 'ta', 'http://lexvo.org/id/iso639-3/tel' => 'te', 'http://lexvo.org/id/iso639-3/tgk' => 'tg', 'http://lexvo.org/id/iso639-3/tha' => 'th', 'http://lexvo.org/id/iso639-3/tir' => 'ti', 'http://lexvo.org/id/iso639-3/tuk' => 'tk', 'http://lexvo.org/id/iso639-3/tgl' => 'tl', 'http://lexvo.org/id/iso639-3/tsn' => 'tn', 'http://lexvo.org/id/iso639-3/ton' => 'to', 'http://lexvo.org/id/iso639-3/tur' => 'tr', 'http://lexvo.org/id/iso639-3/tso' => 'ts', 'http://lexvo.org/id/iso639-3/tat' => 'tt', 'http://lexvo.org/id/iso639-3/twi' => 'tw', 'http://lexvo.org/id/iso639-3/tah' => 'ty', 'http://lexvo.org/id/iso639-3/uig' => 'ug', 'http://lexvo.org/id/iso639-3/ukr' => 'uk', 'http://lexvo.org/id/iso639-3/urd' => 'ur', 'http://lexvo.org/id/iso639-3/uzb' => 'uz', 'http://lexvo.org/id/iso639-3/ven' => 've', 'http://lexvo.org/id/iso639-3/vie' => 'vi', 'http://lexvo.org/id/iso639-3/vol' => 'vo', 'http://lexvo.org/id/iso639-3/wln' => 'wa', 'http://lexvo.org/id/iso639-3/wol' => 'wo', 'http://lexvo.org/id/iso639-3/xho' => 'xh', 'http://lexvo.org/id/iso639-3/yid' => 'yi', 'http://lexvo.org/id/iso639-3/yor' => 'yo', 'http://lexvo.org/id/iso639-3/zha' => 'za', 'http://lexvo.org/id/iso639-3/zho' => 'zh', 'http://lexvo.org/id/iso639-3/zul' => 'zu' }
+ 'http://lexvo.org/id/iso639-3/ave' => 'ae', 'http://lexvo.org/id/iso639-3/afr' => 'af',
+ 'http://lexvo.org/id/iso639-3/aka' => 'ak', 'http://lexvo.org/id/iso639-3/amh' => 'am',
+ 'http://lexvo.org/id/iso639-3/arg' => 'an', 'http://lexvo.org/id/iso639-3/ara' => 'ar', 'http://lexvo.org/id/iso639-3/asm' => 'as', 'http://lexvo.org/id/iso639-3/ava' => 'av', 'http://lexvo.org/id/iso639-3/aym' => 'ay', 'http://lexvo.org/id/iso639-3/aze' => 'az', 'http://lexvo.org/id/iso639-3/bak' => 'ba', 'http://lexvo.org/id/iso639-3/bel' => 'be', 'http://lexvo.org/id/iso639-3/bul' => 'bg', 'http://lexvo.org/id/iso639-3/bis' => 'bi', 'http://lexvo.org/id/iso639-3/bam' => 'bm', 'http://lexvo.org/id/iso639-3/ben' => 'bn', 'http://lexvo.org/id/iso639-3/bod' => 'bo', 'http://lexvo.org/id/iso639-3/bre' => 'br', 'http://lexvo.org/id/iso639-3/bos' => 'bs', 'http://lexvo.org/id/iso639-3/cat' => 'ca', 'http://lexvo.org/id/iso639-3/che' => 'ce', 'http://lexvo.org/id/iso639-3/cha' => 'ch', 'http://lexvo.org/id/iso639-3/cos' => 'co', 'http://lexvo.org/id/iso639-3/cre' => 'cr', 'http://lexvo.org/id/iso639-3/ces' => 'cs', 'http://lexvo.org/id/iso639-3/chu' => 'cu', 'http://lexvo.org/id/iso639-3/chv' => 'cv', 'http://lexvo.org/id/iso639-3/cym' => 'cy', 'http://lexvo.org/id/iso639-3/dan' => 'da', 'http://lexvo.org/id/iso639-3/deu' => 'de', 'http://lexvo.org/id/iso639-3/div' => 'dv', 'http://lexvo.org/id/iso639-3/dzo' => 'dz', 'http://lexvo.org/id/iso639-3/ewe' => 'ee', 'http://lexvo.org/id/iso639-3/ell' => 'el', 'http://lexvo.org/id/iso639-3/eng' => 'en', 'http://lexvo.org/id/iso639-3/epo' => 'eo', 'http://lexvo.org/id/iso639-3/spa' => 'es', 'http://lexvo.org/id/iso639-3/est' => 'et', 'http://lexvo.org/id/iso639-3/eus' => 'eu', 'http://lexvo.org/id/iso639-3/fas' => 'fa', 'http://lexvo.org/id/iso639-3/ful' => 'ff', 'http://lexvo.org/id/iso639-3/fin' => 'fi', 'http://lexvo.org/id/iso639-3/fij' => 'fj', 'http://lexvo.org/id/iso639-3/fao' => 'fo', 'http://lexvo.org/id/iso639-3/fra' => 'fr', 'http://lexvo.org/id/iso639-3/fry' => 'fy', 'http://lexvo.org/id/iso639-3/gle' => 'ga', 'http://lexvo.org/id/iso639-3/gla' => 'gd', 'http://lexvo.org/id/iso639-3/glg' => 'gl', 'http://lexvo.org/id/iso639-3/grn' => 'gn', 'http://lexvo.org/id/iso639-3/guj' => 'gu', 'http://lexvo.org/id/iso639-3/glv' => 'gv', 'http://lexvo.org/id/iso639-3/hau' => 'ha', 'http://lexvo.org/id/iso639-3/heb' => 'he', 'http://lexvo.org/id/iso639-3/hin' => 'hi', 'http://lexvo.org/id/iso639-3/hmo' => 'ho', 'http://lexvo.org/id/iso639-3/hrv' => 'hr', 'http://lexvo.org/id/iso639-3/hat' => 'ht', 'http://lexvo.org/id/iso639-3/hun' => 'hu', 'http://lexvo.org/id/iso639-3/hye' => 'hy', 'http://lexvo.org/id/iso639-3/her' => 'hz', 'http://lexvo.org/id/iso639-3/ina' => 'ia', 'http://lexvo.org/id/iso639-3/ind' => 'id', 'http://lexvo.org/id/iso639-3/ile' => 'ie', 'http://lexvo.org/id/iso639-3/ibo' => 'ig', 'http://lexvo.org/id/iso639-3/iii' => 'ii', 'http://lexvo.org/id/iso639-3/ipk' => 'ik', 'http://lexvo.org/id/iso639-3/ido' => 'io', 'http://lexvo.org/id/iso639-3/isl' => 'is', 'http://lexvo.org/id/iso639-3/ita' => 'it', 'http://lexvo.org/id/iso639-3/iku' => 'iu', 'http://lexvo.org/id/iso639-3/jpn' => 'ja', 'http://lexvo.org/id/iso639-3/jav' => 'jv', 'http://lexvo.org/id/iso639-3/kat' => 'ka', 'http://lexvo.org/id/iso639-3/kon' => 'kg', 'http://lexvo.org/id/iso639-3/kik' => 'ki', 'http://lexvo.org/id/iso639-3/kua' => 'kj', 'http://lexvo.org/id/iso639-3/kaz' => 'kk', 'http://lexvo.org/id/iso639-3/kal' => 'kl', 'http://lexvo.org/id/iso639-3/khm' => 'km', 'http://lexvo.org/id/iso639-3/kan' => 'kn', 'http://lexvo.org/id/iso639-3/kor' => 'ko', 'http://lexvo.org/id/iso639-3/kau' => 'kr', 'http://lexvo.org/id/iso639-3/kas' => 'ks', 'http://lexvo.org/id/iso639-3/kur' => 'ku', 'http://lexvo.org/id/iso639-3/kom' => 'kv', 'http://lexvo.org/id/iso639-3/cor' => 'kw', 'http://lexvo.org/id/iso639-3/kir' => 'ky', 'http://lexvo.org/id/iso639-3/lat' => 'la', 'http://lexvo.org/id/iso639-3/ltz' => 'lb', 'http://lexvo.org/id/iso639-3/lug' => 'lg', 'http://lexvo.org/id/iso639-3/lim' => 'li', 'http://lexvo.org/id/iso639-3/lin' => 'ln', 'http://lexvo.org/id/iso639-3/lao' => 'lo', 'http://lexvo.org/id/iso639-3/lit' => 'lt', 'http://lexvo.org/id/iso639-3/lub' => 'lu', 'http://lexvo.org/id/iso639-3/lav' => 'lv', 'http://lexvo.org/id/iso639-3/mlg' => 'mg', 'http://lexvo.org/id/iso639-3/mah' => 'mh', 'http://lexvo.org/id/iso639-3/mri' => 'mi', 'http://lexvo.org/id/iso639-3/mkd' => 'mk', 'http://lexvo.org/id/iso639-3/mal' => 'ml', 'http://lexvo.org/id/iso639-3/mon' => 'mn', 'http://lexvo.org/id/iso639-3/mar' => 'mr', 'http://lexvo.org/id/iso639-3/msa' => 'ms', 'http://lexvo.org/id/iso639-3/mlt' => 'mt', 'http://lexvo.org/id/iso639-3/mya' => 'my', 'http://lexvo.org/id/iso639-3/nau' => 'na', 'http://lexvo.org/id/iso639-3/nob' => 'nb', 'http://lexvo.org/id/iso639-3/nde' => 'nd', 'http://lexvo.org/id/iso639-3/nep' => 'ne', 'http://lexvo.org/id/iso639-3/ndo' => 'ng', 'http://lexvo.org/id/iso639-3/nld' => 'nl', 'http://lexvo.org/id/iso639-3/nno' => 'nn', 'http://lexvo.org/id/iso639-3/nor' => 'no', 'http://lexvo.org/id/iso639-3/nbl' => 'nr', 'http://lexvo.org/id/iso639-3/nav' => 'nv', 'http://lexvo.org/id/iso639-3/nya' => 'ny', 'http://lexvo.org/id/iso639-3/oci' => 'oc', 'http://lexvo.org/id/iso639-3/oji' => 'oj', 'http://lexvo.org/id/iso639-3/orm' => 'om', 'http://lexvo.org/id/iso639-3/ori' => 'or', 'http://lexvo.org/id/iso639-3/oss' => 'os', 'http://lexvo.org/id/iso639-3/pan' => 'pa', 'http://lexvo.org/id/iso639-3/pli' => 'pi', 'http://lexvo.org/id/iso639-3/pol' => 'pl', 'http://lexvo.org/id/iso639-3/pus' => 'ps', 'http://lexvo.org/id/iso639-3/por' => 'pt', 'http://lexvo.org/id/iso639-3/que' => 'qu', 'http://lexvo.org/id/iso639-3/roh' => 'rm', 'http://lexvo.org/id/iso639-3/run' => 'rn', 'http://lexvo.org/id/iso639-3/ron' => 'ro', 'http://lexvo.org/id/iso639-3/rus' => 'ru', 'http://lexvo.org/id/iso639-3/kin' => 'rw', 'http://lexvo.org/id/iso639-3/san' => 'sa', 'http://lexvo.org/id/iso639-3/srd' => 'sc', 'http://lexvo.org/id/iso639-3/snd' => 'sd', 'http://lexvo.org/id/iso639-3/sme' => 'se', 'http://lexvo.org/id/iso639-3/sag' => 'sg', 'http://lexvo.org/id/iso639-3/hbs' => 'sh', 'http://lexvo.org/id/iso639-3/sin' => 'si', 'http://lexvo.org/id/iso639-3/slk' => 'sk', 'http://lexvo.org/id/iso639-3/slv' => 'sl', 'http://lexvo.org/id/iso639-3/smo' => 'sm', 'http://lexvo.org/id/iso639-3/sna' => 'sn', 'http://lexvo.org/id/iso639-3/som' => 'so', 'http://lexvo.org/id/iso639-3/sqi' => 'sq', 'http://lexvo.org/id/iso639-3/srp' => 'sr', 'http://lexvo.org/id/iso639-3/ssw' => 'ss', 'http://lexvo.org/id/iso639-3/sot' => 'st', 'http://lexvo.org/id/iso639-3/sun' => 'su', 'http://lexvo.org/id/iso639-3/swe' => 'sv', 'http://lexvo.org/id/iso639-3/swa' => 'sw', 'http://lexvo.org/id/iso639-3/tam' => 'ta', 'http://lexvo.org/id/iso639-3/tel' => 'te', 'http://lexvo.org/id/iso639-3/tgk' => 'tg', 'http://lexvo.org/id/iso639-3/tha' => 'th', 'http://lexvo.org/id/iso639-3/tir' => 'ti', 'http://lexvo.org/id/iso639-3/tuk' => 'tk', 'http://lexvo.org/id/iso639-3/tgl' => 'tl', 'http://lexvo.org/id/iso639-3/tsn' => 'tn', 'http://lexvo.org/id/iso639-3/ton' => 'to', 'http://lexvo.org/id/iso639-3/tur' => 'tr', 'http://lexvo.org/id/iso639-3/tso' => 'ts', 'http://lexvo.org/id/iso639-3/tat' => 'tt', 'http://lexvo.org/id/iso639-3/twi' => 'tw', 'http://lexvo.org/id/iso639-3/tah' => 'ty', 'http://lexvo.org/id/iso639-3/uig' => 'ug', 'http://lexvo.org/id/iso639-3/ukr' => 'uk', 'http://lexvo.org/id/iso639-3/urd' => 'ur', 'http://lexvo.org/id/iso639-3/uzb' => 'uz', 'http://lexvo.org/id/iso639-3/ven' => 've', 'http://lexvo.org/id/iso639-3/vie' => 'vi', 'http://lexvo.org/id/iso639-3/vol' => 'vo', 'http://lexvo.org/id/iso639-3/wln' => 'wa', 'http://lexvo.org/id/iso639-3/wol' => 'wo', 'http://lexvo.org/id/iso639-3/xho' => 'xh', 'http://lexvo.org/id/iso639-3/yid' => 'yi', 'http://lexvo.org/id/iso639-3/yor' => 'yo', 'http://lexvo.org/id/iso639-3/zha' => 'za', 'http://lexvo.org/id/iso639-3/zho' => 'zh', 'http://lexvo.org/id/iso639-3/zul' => 'zu' }
-
- def initialize(value: )
+ def initialize(value:)
super
- @lang_code = lang_codes_init(value)
+
+ @lang_code = lang_codes_init(value)
end
def lang_codes_init(lang)
- if lang.to_s.eql?("en") || lang.to_s.eql?("eng") || lang.to_s.eql?("http://lexvo.org/id/iso639-3/eng")
+
+ if lang.to_s.eql?("en") || lang.to_s.eql?("eng") || lang.to_s.start_with?("http://lexvo.org/id/iso639-3/en")
lang_codes = "gb"
elsif lang.to_s.start_with?("http://lexvo.org")
- lang_codes = LEXVO_TO_FLAG[lang]
+ lang_codes = LEXVO_TO_FLAG[lang] || lang
else
lang_codes = lang
end
diff --git a/app/components/language_field_component/language_field_component.html.haml b/app/components/language_field_component/language_field_component.html.haml
index a6b431565..6c0c9998e 100644
--- a/app/components/language_field_component/language_field_component.html.haml
+++ b/app/components/language_field_component/language_field_component.html.haml
@@ -1,4 +1,4 @@
-- if @lang_code.length == 2
+- if @lang_code && @lang_code.length == 2
%div.f32
%span.flag{:class => " #{@lang_code}", :style => "margin-right: 0.5em;"}
- else
diff --git a/app/components/submission_metadata_component.rb b/app/components/submission_metadata_component.rb
new file mode 100644
index 000000000..69c23f9bd
--- /dev/null
+++ b/app/components/submission_metadata_component.rb
@@ -0,0 +1,52 @@
+# frozen_string_literal: true
+
+class SubmissionMetadataComponent < ViewComponent::Base
+ include ApplicationHelper, MetadataHelper,OntologiesHelper, AgentHelper
+
+ def initialize(submission: , submission_metadata:)
+ super
+ @submission = submission
+
+ @json_metadata = submission_metadata
+ metadata_list = {}
+ # Get extracted metadata and put them in a hash with their label, if one, as value
+ @json_metadata.each do |metadata|
+ metadata_list[metadata["attribute"]] = metadata["label"]
+ end
+
+ @metadata_list = metadata_list.sort
+ end
+
+ def display_attributes(metadata)
+ if Array(@submission.send(metadata)).empty?
+ out = 'N/A'
+ else
+ out = Array(@submission.send(metadata)).map do |value|
+ content_tag(:div, class: 'm-1 f32') do
+ display_attribute(metadata, value)
+ end
+ end.join
+ end
+ out.html_safe
+ end
+ def attribute_help_text(attr)
+ if !attr["namespace"].nil?
+ help_text = "#{attr["namespace"]}:#{attr["attribute"]} "
+ else
+ help_text = "bioportal:#{attr["attribute"]} "
+ end
+
+ if (attr["metadataMappings"] != nil)
+ help_text += " (#{attr["metadataMappings"].join(", ")})"
+ end
+
+ if (!attr["enforce"].nil? && attr["enforce"].include?("uri"))
+ help_text += " This metadata should be an URI "
+ end
+
+ if (attr["helpText"] != nil)
+ help_text += " #{attr["helpText"]}"
+ end
+ help_text.html_safe
+ end
+end
diff --git a/app/components/submission_metadata_component/submission_metadata_component.html.haml b/app/components/submission_metadata_component/submission_metadata_component.html.haml
new file mode 100644
index 000000000..c244e7685
--- /dev/null
+++ b/app/components/submission_metadata_component/submission_metadata_component.html.haml
@@ -0,0 +1,18 @@
+= render TableComponent.new(id: 'submission_metadata_table', borderless: true, layout_fixed: true) do |t|
+ - t.header do |h|
+ - h.th(width:'15%') {"Label"}
+ - h.th(width:'50%') {"Value"}
+ - h.th(width:'35%') {"Metadata"}
+
+ - @metadata_list.each do |metadata, label|
+ - t.row do |r|
+ - r.td do
+ = label || metadata.underscore.humanize
+ - r.td do
+ .d-flex.flex-wrap.align-items-center
+ = display_attributes(metadata)
+ - r.td {attribute_help_text(attr_metadata(metadata))}
+:javascript
+ $("#submission_metadata_table").dataTable({ paging: false, autoWidth: false })
+
+
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 7ce8b03e2..5829d5484 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -529,13 +529,6 @@ def get_class(params)
@concept
end
- def get_metrics_hash
- metrics_hash = {}
- # TODO: Metrics do not return for views on the backend, need to enable include_views param there
- @metrics = LinkedData::Client::Models::Metrics.all(include_views: true)
- @metrics.each {|m| metrics_hash[m.links['ontology']] = m }
- return metrics_hash
- end
def get_ontology_submission_ready(ontology)
# Get the latest 'ready' submission
@@ -782,9 +775,8 @@ def init_trial_license
# Get the submission metadata from the REST API.
def submission_metadata
- @metadata ||= JSON.parse(Net::HTTP.get(URI.parse("#{REST_URI}/submission_metadata?apikey=#{API_KEY}")))
+ helpers.submission_metadata
end
- helper_method :submission_metadata
def request_lang
diff --git a/app/controllers/ontologies_controller.rb b/app/controllers/ontologies_controller.rb
index a50f1797c..afb34ecfd 100644
--- a/app/controllers/ontologies_controller.rb
+++ b/app/controllers/ontologies_controller.rb
@@ -370,7 +370,6 @@ def summary
@ontology = LinkedData::Client::Models::Ontology.find_by_acronym(params[:id]).first if @ontology.nil?
ontology_not_found(params[:id]) if @ontology.nil?
# Check to see if user is requesting json-ld, return the file from REST service if so
-
if request.accept.to_s.eql?('application/ld+json') || request.accept.to_s.eql?('application/json')
headers['Content-Type'] = request.accept.to_s
render plain: @ontology.to_jsonld
@@ -382,13 +381,23 @@ def summary
@projects = @ontology.explore.projects.sort {|a,b| a.name.downcase <=> b.name.downcase } || []
@analytics = LinkedData::Client::HTTP.get(@ontology.links['analytics'])
- #Call to fairness assessment service
+ # Call to fairness assessment service
tmp = fairness_service_enabled? ? get_fair_score(@ontology.acronym) : nil
@fair_scores_data = create_fair_scores_data(tmp.values.first) unless tmp.nil?
@views = get_views(@ontology)
- @view_decorators = @views.map{ |view| ViewDecorator.new(view, view_context) }
-
+ @view_decorators = @views.map { |view| ViewDecorator.new(view, view_context) }
+ @ontology_relations_data = ontology_relations_data
+
+ category_attributes = submission_metadata.group_by{|x| x['category']}.transform_values{|x| x.map{|attr| attr['attribute']} }
+
+ @methodology_properties = properties_hash_values(category_attributes["methodology"])
+ @agents_properties = properties_hash_values(category_attributes["people"].without('wasGeneratedBy', 'wasInvalidatedBy') + [:hasCreator, :hasContributor, :translator, :publisher, :copyrightHolder])
+ @dates_properties = properties_hash_values(category_attributes["dates"] + [:creationDate, :modificationDate, :released])
+ @links_properties = properties_hash_values(category_attributes["links"].without('includedInDataCatalog') +[:wasGeneratedBy, :wasInvalidatedBy] )
+ @identifiers = properties_hash_values( [:URI, :versionIRI, :identifier])
+ @projects_properties = properties_hash_values(category_attributes["usage"].without('hasDomain') + [:audience, :includedInDataCatalog])
+ @ontology_icon_links = [%w[summary/download dataDump], %w[summary/homepage homepage], %w[summary/documentation documentation], %w[icons/github repository], %w[summary/sparql endpoint]]
if request.xhr?
render partial: 'ontologies/sections/metadata', layout: false
else
@@ -439,6 +448,14 @@ def widgets
render partial: 'ontologies/sections/widgets', layout: 'ontology_viewer'
end
end
+
+
+ def show_additional_metadata
+ @metadata = submission_metadata
+ @ontology = LinkedData::Client::Models::Ontology.find_by_acronym(params[:id]).first
+ @submission_latest = @ontology.explore.latest_submission(include: 'all', display_context: false, display_links: false)
+ render partial: 'ontologies/sections/additional_metadata'
+ end
def show_licenses
@@ -452,9 +469,28 @@ def ajax_ontologies
render json: LinkedData::Client::Models::Ontology.all(include_views: true,
- display: 'acronym,name', display_links: false, display_context: false)
+ display: 'acronym,name', display_links: false, display_context: false)
end
+
+
+ def metrics_evolution
+ @ontology = LinkedData::Client::Models::Ontology.find_by_acronym(params[:ontology_id]).first
+ key = params[:metrics_key]
+ ontology_not_found(params[:ontology_id]) if @ontology.nil?
+
+ # Retrieve submissions in descending submissionId order (should be reverse chronological order)
+ @submissions = @ontology.explore.submissions({ include: "metrics" })
+ .sort { |a, b| a.submissionId.to_i <=> b.submissionId.to_i }.reverse || []
+
+ metrics = @submissions.map { |s| s.metrics }
+
+ data = {
+ key => metrics.map { |m| m[key] }
+ }
+
+ render partial: 'ontologies/sections/metadata/metrics_evolution_graph', locals: { data: data }
+ end
private
def get_views(ontology)
@@ -463,4 +499,63 @@ def get_views(ontology)
views.sort{ |a,b| a.acronym.downcase <=> b.acronym.downcase }
end
+ def ontology_relations_data(sub = @submission_latest)
+ ontology_relations_array = []
+ @relations_array = ["omv:useImports", "door:isAlignedTo", "door:ontologyRelatedTo", "omv:isBackwardCompatibleWith", "omv:isIncompatibleWith", "door:comesFromTheSameDomain", "door:similarTo",
+ "door:explanationEvolution", "voaf:generalizes", "door:hasDisparateModelling", "dct:hasPart", "voaf:usedBy", "schema:workTranslation", "schema:translationOfWork"]
+
+ return if sub.nil?
+
+ ont = sub.ontology
+ # Get ontology relations between each other (ex: STY isAlignedTo GO)
+ @relations_array.each do |relation_attr|
+ relation_values = sub.send(relation_attr.to_s.split(':')[1])
+ next if relation_values.nil? || relation_values.empty?
+
+ relation_values = [relation_values] unless relation_values.kind_of?(Array)
+
+ relation_values.each do |relation_value|
+ next if relation_value.eql?(ont.acronym)
+
+ target_id = relation_value
+ target_in_portal = false
+ # if we find our portal URL in the ontology URL, then we just keep the ACRONYM to try to get the ontology.
+ relation_value = relation_value.split('/').last if relation_value.include?($UI_URL)
+
+ # Use acronym to get ontology from the portal
+ target_ont = LinkedData::Client::Models::Ontology.find_by_acronym(relation_value).first
+ if target_ont
+ target_id = target_ont.acronym
+ target_in_portal = true
+ end
+
+ ontology_relations_array.push({ source: ont.acronym, target: target_id, relation: relation_attr.to_s, targetInPortal: target_in_portal })
+ end
+ end
+
+ ontology_relations_array
+ end
+ def properties_hash_values(properties, sub = @submission_latest)
+ return {} if sub.nil?
+
+ properties.map { |x| [x.to_s, sub.send(x.to_s)] }.to_h
+ end
+
+ def get_metrics_hash
+ metrics_hash = {}
+ # TODO: Metrics do not return for views on the backend, need to enable include_views param there
+ @metrics = LinkedData::Client::Models::Metrics.all(include_views: true)
+ @metrics.each {|m| metrics_hash[m.links['ontology']] = m }
+ return metrics_hash
+ end
+
+ def determine_layout
+ case action_name
+ when 'index'
+ 'angular'
+ else
+ super
+ end
+ end
+
end
diff --git a/app/controllers/ontologies_metadata_curator_controller.rb b/app/controllers/ontologies_metadata_curator_controller.rb
index 7b9c95cfb..b65658f86 100644
--- a/app/controllers/ontologies_metadata_curator_controller.rb
+++ b/app/controllers/ontologies_metadata_curator_controller.rb
@@ -144,7 +144,7 @@ def metadata_params
:publication
]
- @metadata.each do |m|
+ submission_metadata.each do |m|
m_attr = m["attribute"].to_sym
diff --git a/app/helpers/agent_helper.rb b/app/helpers/agent_helper.rb
index ea8c46c6a..590e297ce 100644
--- a/app/helpers/agent_helper.rb
+++ b/app/helpers/agent_helper.rb
@@ -79,6 +79,8 @@ def display_identifiers(identifiers, link: true)
end
def display_agent(agent, link: true)
+ return agent if agent.is_a?(String)
+
out = agent.name.to_s.humanize
identifiers = display_identifiers(agent.identifiers, link: link)
out = "#{out} (#{identifiers})" unless identifiers.empty?
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 396f68883..9e65befaf 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -6,6 +6,8 @@
require 'pry' # used in a rescue
module ApplicationHelper
+ REST_URI = $REST_URL
+ API_KEY = $API_KEY
include ModalHelper
@@ -41,6 +43,10 @@ def omniauth_token_provider(strategy)
omniauth_provider_info(strategy).keys.first
end
+ def submission_metadata
+ @metadata ||= JSON.parse(Net::HTTP.get(URI.parse("#{REST_URI}/submission_metadata?apikey=#{API_KEY}")))
+ end
+
def isOwner?(id)
unless session[:user].nil?
if session[:user].admin?
@@ -52,6 +58,7 @@ def isOwner?(id)
end
end
end
+
def encode_param(string)
CGI.escape(string)
@@ -276,6 +283,8 @@ def help_tooltip(content, html_attribs = {}, icon = 'fas fa-question-circle', cs
BLOCK
end
+
+
def anonymous_user
#
# TODO: Fix and failures from removing 'DataAccess' call here.
@@ -529,24 +538,23 @@ def label_ajax_data_h(cls_id, ont_acronym, ajax_uri, cls_url)
end
def label_ajax_data(cls_id, ont_acronym, ajax_uri, cls_url)
- tag.attributes label_ajax_data_h(cls_id, ont_acronym, ajax_uri, cls_url)
+ label_ajax_data_h(cls_id, ont_acronym, ajax_uri, cls_url)
end
- def label_ajax_link(link, cls_id, ont_acronym, ajax_uri, cls_url, target = '')
- href_cls = " href='#{link}'"
+ def label_ajax_link(link, cls_id, ont_acronym, ajax_uri, cls_url, target = nil)
data = label_ajax_data(cls_id, ont_acronym, ajax_uri, cls_url)
- style = 'btn btn-sm btn-light'
- "#{cls_id} "
+ options = { 'data-controller': 'label-ajax' }.merge(data)
+ options = options.merge({ target: target }) if target
+
+ render ChipButtonComponent.new(url: link, text: cls_id, type: 'clickable', **options)
end
def get_link_for_cls_ajax(cls_id, ont_acronym, target = nil)
- target = target.nil? ? '' : " target='#{target}' "
-
if cls_id.start_with?('http://') || cls_id.start_with?('https://')
link = bp_class_link(cls_id, ont_acronym)
ajax_url = "/ajax/classes/label?language=#{request_lang}"
cls_url = "?p=classes&conceptid=#{CGI.escape(cls_id)}&language=#{request_lang}"
- label_ajax_link(link, cls_id, ont_acronym, ajax_url , cls_url ,target)
+ label_ajax_link(link, cls_id, ont_acronym, ajax_url, cls_url, target)
else
auto_link(cls_id, :all, target: '_blank')
end
diff --git a/app/helpers/mappings_helper.rb b/app/helpers/mappings_helper.rb
index a3f03f65f..b64ab13ae 100644
--- a/app/helpers/mappings_helper.rb
+++ b/app/helpers/mappings_helper.rb
@@ -48,26 +48,6 @@ def get_prefixed_uri(uri)
return uri
end
- def get_link_for_cls_ajax(cls_id, ont_acronym, target = nil)
- # Note: bp_ajax_controller.ajax_process_cls will try to resolve class labels.
- # Uses 'http' as a more generic attempt to resolve class labels than .include? ont_acronym; the
- # bp_ajax_controller.ajax_process_cls will try to resolve class labels and
- # otherwise remove the UNIQUE_SPLIT_STR and the ont_acronym.
- if target.nil?
- target = ""
- else
- target = " target='#{target}' "
- end
- if cls_id.start_with? 'http://'
- href_cls = " href='#{bp_class_link(cls_id, ont_acronym)}' "
- data_cls = " data-cls='#{cls_id}' "
- data_ont = " data-ont='#{ont_acronym}' "
- return "#{cls_id} "
- else
- return auto_link(cls_id, :all, :target => '_blank')
- end
- end
-
# method to get (using http) prefLabel for interportal classes
# Using bp_ajax_controller.ajax_process_interportal_cls will try to resolve class labels.
def ajax_to_inter_portal_cls(cls)
diff --git a/app/helpers/metadata_helper.rb b/app/helpers/metadata_helper.rb
new file mode 100644
index 000000000..5cf73e2fa
--- /dev/null
+++ b/app/helpers/metadata_helper.rb
@@ -0,0 +1,77 @@
+module MetadataHelper
+
+ def input_type?(attr, type)
+ attr["enforce"].include?(type)
+ end
+
+ def attr_metadata(attr_key)
+ submission_metadata.select { |attr_hash| attr_hash["attribute"].to_s.eql?(attr_key) }.first
+ end
+
+ def attr_label(attr)
+ data = attr_metadata(attr.to_s)
+ return attr.humanize if data.nil?
+ data["label"]
+ end
+
+ def integer?(attr_label)
+ input_type?(attr_metadata(attr_label), 'integer')
+ end
+
+ def date_time?(attr_label)
+ input_type?(attr_metadata(attr_label), 'date_time')
+ end
+
+ def textarea?(attr_label)
+ input_type?(attr_metadata(attr_label), 'textarea')
+ end
+
+ def enforce_values?(attr)
+ !attr["enforcedValues"].nil?
+ end
+
+ def list?(attr_label)
+ input_type?(attr_metadata(attr_label), "list")
+ end
+
+ def isOntology?(attr_label)
+ input_type?(attr_metadata(attr_label), 'isOntology')
+ end
+
+ def attr_uri?(attr_label)
+ input_type?(attr_metadata(attr_label), "uri")
+ end
+
+ def boolean?(attr_label)
+ input_type?(attr_metadata(attr_label), "boolean")
+ end
+
+ def agent?(attr)
+ input_type?(attr_metadata(attr), "Agent")
+ end
+
+ def display_attribute(metadata, value)
+ return 'N/A' if value.nil? || Array(value).empty?
+
+ if agent?(metadata)
+ display_agent(value)
+ elsif metadata.eql?("naturalLanguage")
+ render LanguageFieldComponent.new(value: value)
+ elsif metadata.to_s.eql?("hasLicense")
+ render LicenseFieldComponent.new(value: value)
+ elsif metadata.to_s.eql?("endpoint") && (value.start_with?("http://sparql.") || value.start_with?("https://sparql."))
+ link_to(value, :title => value, :target => "_blank", :style => "border-width:0;") do
+ image_tag('logos/sparql_logo.png', :title => value, :class => 'logo')
+ end
+ elsif date_time?(metadata)
+ render DateTimeFieldComponent.new(value: value)
+ elsif attr_uri?(metadata)
+ render LinkFieldComponent.new(value: value)
+ elsif input_type?(attr_metadata(metadata), 'contact')
+ display_contact(value)
+ else
+ render TextAreaFieldComponent.new(value: value.to_s)
+ end
+ end
+
+end
\ No newline at end of file
diff --git a/app/helpers/ontologies_helper.rb b/app/helpers/ontologies_helper.rb
index cf35e422d..036652052 100644
--- a/app/helpers/ontologies_helper.rb
+++ b/app/helpers/ontologies_helper.rb
@@ -20,28 +20,14 @@ def additional_details
end
# Display data catalog metadata under visits (in _metadata.html.haml)
- def display_data_catalog(sub)
- if !sub.send("includedInDataCatalog").nil? && sub.send("includedInDataCatalog").any?
+ def display_data_catalog(value)
+ if !value.nil? && value.any?
# Buttons for data catalogs
- return content_tag(:section, { :class => "ont-metadata-card ont-included-in-data-catalog-card" }) do
- concat(content_tag(:div, { :class => "ont-section-toolbar" }) do
- concat(content_tag(:header, "includedInDataCatalog", { :class => "pb-2 font-weight-bold" }))
- end)
- concat(content_tag(:div, { :class => "" }) do
- sub.send("includedInDataCatalog").each do |catalog|
- catalog_btn_label = catalog
- $DATA_CATALOG_VALUES.each do |cat_uri, cat_label|
- if catalog[cat_uri]
- catalog_btn_label = cat_label
- break
- end
- end
- concat(content_tag(:a, catalog_btn_label, { :class => "btn btn-primary", :href => catalog, :target => "_blank" }))
- end
- end)
+ content_tag(:div, { :class => "" }) do
+
end
else
- ""
+ ""
end
end
@@ -50,232 +36,10 @@ def agent?(sub_metadata, attr)
metadata && Array(metadata['enforce']).include?('Agent')
end
- # Display data catalog metadata under visits (in _metadata.html.haml)
- def display_logo(sub)
- logo_attributes = ["logo", "depiction"]
- logo_html = ""
- logo_attributes.each do |metadata|
- if !sub.send(metadata).nil?
- puts sub.send(metadata)
- logo_html.concat(content_tag(:section, { :class => "ont-metadata-card ont-logo-depiction-card" }) do
- concat(content_tag(:div, { :class => "ont-section-toolbar" }) do
- concat(content_tag(:header, metadata.capitalize, { :class => "pb-2 font-weight-bold" }))
- end)
- concat(content_tag(:div, { :class => "" }) do
- concat(content_tag(:a, { :href => sub.send(metadata), :title => sub.send(metadata),
- :target => "_blank", :style => "border-width:0;" }) do
-
- concat(content_tag(:img, "", { :title => sub.send(metadata),
- :style => "border-width:0;max-width: 100%;", :src => sub.send(metadata).to_s }))
- end)
- end)
- end)
- end
- end
- return logo_html
+ def display_contact(contacts)
+ contacts.map {|c| "#{c.name.humanize} at #{c.email}" if c.member?(:name) && c.member?(:email)}&.join(", ")
end
-
- # Add additional metadata as html for a submission
- def additional_metadata(sub)
- # Get the list of metadata attribute from the REST API
- json_metadata = submission_metadata
- metadata_list = {}
- # Get extracted metadata and put them in a hash with their label, if one, as value
- json_metadata.each do |metadata|
- metadata_list[metadata["attribute"]] = metadata["label"]
- end
- metadata_list = metadata_list.sort
-
- html = []
-
- metadata_not_displayed = ["status", "description", "documentation", "publication", "homepage",
- "openSearchDescription", "dataDump", "includedInDataCatalog", "logo",
- "depiction", "submissionId", "submissionStatus", 'ontology', 'contact']
- begin
-
- metadata_list.each do |metadata, label|
- # Don't display documentation, publication, homepage, status and description, they are already in main details
- if !metadata_not_displayed.include?(metadata)
- # different html build if list or single value
-
- # METADATA ARRAY
- if sub.send(metadata).kind_of?(Array)
- if sub.send(metadata).any?
- if metadata.eql?("naturalLanguage")
- # Special treatment for naturalLanguage: we want the flags in a bootstrap box
- # UK is gb: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
- lang_codes = []
-
- sub.send(metadata).each do |lang|
- if (lang.to_s.eql?("en") || lang.to_s.eql?("eng") || lang.to_s.eql?("http://lexvo.org/id/iso639-3/eng"))
- # We consider en and eng as english
- lang_codes << "gb"
- elsif lang.to_s.start_with?("http://lexvo.org")
- lang_codes << $LEXVO_TO_FLAG[lang]
- else
- lang_codes << lang
- end
- end
-
- html << content_tag(:tr) do
- concat(content_tag(:td, "Natural Language", " "))
- # Display naturalLanguage as flag
- concat(content_tag(:td) do
- concat(content_tag(:ul, { :class => "f32" }) do
- lang_codes.each do |lang_code|
- if lang_code.length == 2
- concat(content_tag(:li, "", { :class => "flag #{lang_code}", :style => "margin-right: 0.5em;" }))
- else
- concat(content_tag(:li, lang_code))
- end
- end
- end)
- end)
- end
-
- elsif agent?(json_metadata, metadata)
- html << content_tag(:tr) do
- if label.nil?
- concat(content_tag(:td, metadata.gsub(/(?=[A-Z])/, " ")))
- else
- concat(content_tag(:td, label))
- end
-
- metadata_array = []
-
- sub.send(metadata).each do |metadata_value|
- metadata_array << "
#{display_agent(metadata_value)}
"
- end
-
- concat(content_tag(:td, raw(metadata_array.join(""))))
- end
- else
- html << content_tag(:tr) do
- if label.nil?
- concat(content_tag(:td, metadata.gsub(/(?=[A-Z])/, " ")))
- else
- concat(content_tag(:td, label))
- end
-
- metadata_array = []
- sub.send(metadata).each do |metadata_value|
- if metadata_value.to_s.start_with?("#{$REST_URL}/ontologies/")
- # For URI that links to our ontologies we display a button with only the acronym. And redirect to the UI
- # Warning! Redirection is done by removing "data." from the REST_URL. So might not work perfectly everywhere
- if metadata_value.to_s.split("/").length < 6
- # for ontologies/ACRONYM we redirect to the UI url
- metadata_array.push("#{metadata_value.to_s.split("/")[4..-1].join("/")} ")
- else
- metadata_array.push("#{metadata_value.to_s.split("/")[4..-1].join("/")} ")
- end
-
- elsif metadata_value.to_s =~ /\A#{URI::regexp(['http', 'https'])}\z/
- # Don't create a link if it not an URI
- metadata_array.push("#{metadata_value.to_s} ")
- else
- metadata_array.push(metadata_value)
- end
- end
- concat(content_tag(:td, raw(metadata_array.join(", "))))
- end
- end
- end
- else
-
- # SINGLE METADATA
- if agent?(json_metadata, metadata)
- next if sub.send(metadata).nil?
-
- html << content_tag(:tr) do
- if label.nil?
- concat(content_tag(:td, metadata.gsub(/(?=[A-Z])/, " ")))
- else
- concat(content_tag(:td, label))
- end
- concat(content_tag(:td, raw(" #{display_agent(sub.send(metadata))}
")))
- end
- elsif !sub.send(metadata).nil?
- html << content_tag(:tr) do
- if label.nil?
- concat(content_tag(:td, metadata.gsub(/(?=[A-Z])/, " ")))
- else
- concat(content_tag(:td, label))
- end
- if (metadata.to_s.eql?("hasLicense"))
- if (sub.send(metadata).to_s.start_with?("http://creativecommons.org/licenses") || sub.send(metadata).start_with?("https://creativecommons.org/licenses"))
- concat(content_tag(:td) do
- concat(content_tag(:a, { :rel => "license", :alt => "Creative Commons License",
- :href => sub.send(metadata), :target => "_blank", :style => "border-width:0", :title => sub.send(metadata),
- :src => "https://i.creativecommons.org/l/by/4.0/88x31.png" }) do
-
- concat(content_tag(:img, "", { :rel => "license", :alt => "Creative Commons License", :title => sub.send(metadata),
- :style => "border-width:0", :src => "https://i.creativecommons.org/l/by/4.0/88x31.png" }))
- end)
- end)
-
- elsif (sub.send(metadata).to_s.start_with?("http://opensource.org/licenses") || sub.send(metadata).start_with?("https://opensource.org/licenses"))
- concat(content_tag(:td) do
- concat(content_tag(:a, { :rel => "license", :alt => "Open Source License",
- :href => sub.send(metadata), :title => sub.send(metadata), :target => "_blank", :style => "border-width:0;",
- :src => "https://opensource.org/files/osi_logo_bold_100X133_90ppi.png" }) do
-
- concat(content_tag(:img, "", { :rel => "license", :alt => "Open Source License", :title => sub.send(metadata),
- :style => "height: 80px; border-width:0;", :src => "https://opensource.org/files/osi_logo_bold_100X133_90ppi.png" }))
- end)
- end)
-
- else
- concat(content_tag(:td) do
- concat(content_tag(:a, sub.send(metadata), { :rel => "license", :href => sub.send(metadata), :target => "_blank" }))
- end)
- end
-
- elsif (metadata.to_s.eql?("endpoint") && (sub.send(metadata).start_with?("http://sparql.") || sub.send(metadata).start_with?("https://sparql.")))
- concat(content_tag(:td) do
- concat(content_tag(:a, { :href => sub.send(metadata), :title => sub.send(metadata),
- :target => "_blank", :style => "border-width:0;" }) do
-
- concat(image_tag('logos/sparql_logo.png', title: sub.send(metadata), class: 'logo'))
- end)
- end)
-
- elsif sub.send(metadata).to_s.start_with?("#{$REST_URL}/ontologies/")
- # For URI that links to our ontologies we display a button with only the acronym. And redirect to the UI
- # Warning! Redirection is done by removing "data." from the REST_URL. So might not work perfectly everywhere
- if sub.send(metadata).to_s.split("/").length < 6
- # for ontologies/ACRONYM we redirect to the UI url
- concat(content_tag(:td) do
- concat(content_tag(:a, sub.send(metadata).to_s.split("/")[4..-1].join("/"), { :class => "btn btn-primary",
- :href => sub.send(metadata).sub("data.", ""), :target => "_blank", :title => sub.send(metadata) }))
- end)
- else
- concat(content_tag(:td) do
- concat(content_tag(:a, sub.send(metadata).to_s.split("/")[4..-1].join("/"), { :class => "btn btn-primary",
- :href => sub.send(metadata), :target => "_blank", :title => sub.send(metadata) }))
- end)
- end
-
- else
- if sub.send(metadata).to_s =~ /\A#{URI::regexp(['http', 'https'])}\z/
- # Don't create a link if it not an URI
- concat(content_tag(:td, raw("#{sub.send(metadata).to_s} ")))
- else
- concat(content_tag(:td, raw(sub.send(metadata).to_s)))
- end
- end
- end
- end
- end
- end
- end
- rescue => e
- LOG.add :debug, "Unable to retrieve additional ontology metadata"
- LOG.add :debug, "error: #{e}"
- LOG.add :debug, "error message: #{e.message}"
- end
- html.join("")
- end
-
+
def count_links(ont_acronym, page_name = 'summary', count = 0)
ont_url = "/ontologies/#{ont_acronym}"
if count.nil? || count.zero?
@@ -294,29 +58,34 @@ def classes_link(ontology, count)
# Creates a link based on the status of an ontology submission
def download_link(submission, ontology = nil)
ontology ||= @ontology
+ links = []
if ontology.summaryOnly
if submission.homepage.nil?
- link = 'N/A - metadata only'
+ links << {href: '', label:'N/A - metadata only'}
else
uri = submission.homepage
- link = "Home Page "
+ links << {href: uri, label:'Home Page'}
end
else
uri = submission.id + "/download?apikey=#{get_apikey}"
- link = "#{submission.pretty_format} "
+ links << {href: uri, label:submission.pretty_format}
latest = ontology.explore.latest_submission({ include_status: 'ready' })
if latest && latest.submissionId == submission.submissionId
- link += " | CSV "
+ links << {href: "#{ontology.id}/download?apikey=#{get_apikey}&download_format=csv", label:"CSV"}
if !latest.hasOntologyLanguage.eql?('UMLS')
- link += " | RDF/XML "
+ links << {href: "#{ontology.id}/download?apikey=#{get_apikey}&download_format=rdf", label:"RDF/XML"}
end
end
unless submission.diffFilePath.nil?
uri = submission.id + "/download_diff?apikey=#{get_apikey}"
- link = link + " | DIFF "
+ links << {href: uri, label:"DIFF"}
end
end
- link
+ links
+ end
+
+ def link?(string)
+ string.start_with?('http://') || string.start_with?('https://')
end
def mappings_link(ontology, count)
@@ -380,6 +149,12 @@ def visibility_link(ontology)
"#{link_name} "
end
+ def show_category_name(domain)
+ acronym = domain.split('/').last.upcase
+ category = LinkedData::Client::Models::Category.find_by_acronym(acronym).first
+ category ? category.name : acronym
+ end
+
def visits_data(ontology = nil)
ontology ||= @ontology
@@ -480,7 +255,7 @@ def sections_to_show
def language_selector_tag(name)
languages = languages_options
- if languages.empty?
+ if languages.empty? && @submission_latest
content_tag(:div ,data: {'ontology-viewer-tabs-target': 'languageSelector'}, style: "visibility: #{ontology_data_section? ? 'visible' : 'hidden'} ; margin-bottom: -1px;") do
render EditSubmissionAttributeButtonComponent.new(acronym: @ontology.acronym, submission_id: @submission_latest.submissionId, attribute: :naturalLanguage) do
concat "Enable multilingual display "
@@ -519,7 +294,55 @@ def dispaly_complex_text(definitions)
end
return html.html_safe
end
+ def new_view_path(ont_id)
+ ont_id_esc = CGI.escape(ont_id)
+ if session[:user].nil?
+ "/login?redirect=#{escape("/ontologies/new?ontology[viewOf]=#{ont_id_esc}")}"
+ else
+ "/ontologies/new?ontology[viewOf]=#{ont_id_esc}"
+ end
+ end
+ def new_element_link(title, link)
+ link_to(link, title: title, class: "mx-1") do
+ inline_svg_tag("icons/plus.svg", width: '15px', height: '15px')
+ end
+ end
+ def ontology_icon_links(links, submission_latest)
+ links.map do |icon, attr|
+ value = submission_latest.nil? ? nil : submission_latest.send(attr)
+
+ link_options = { style: "text-decoration: none; width: 30px; height: 30px" }
+ link_options[:class] = 'disabled-icon' if value.nil?
+
+ link_to(inline_svg("#{icon}.svg"), Array(value).first || '', link_options)
+ end.join.html_safe
+ end
+ def ontology_depiction_card
+ return if Array(@submission_latest&.depiction).empty?
+ render Layout::CardComponent.new do
+ list_container(@submission_latest.depiction) do |depiction_url|
+ render Display::ImageComponent.new(src: depiction_url)
+ end
+ end
+ end
+ def metadata_formats_buttons
+ render SummarySectionComponent.new(title: 'Get my metadata back', show_card: false) do
+ content_tag :div, data: { controller: 'metadata-downloader' } do
+ horizontal_list_container([
+ ['NQuads', 'N-Triple'],
+ ['JsonLd', 'Json-LD'],
+ ['XML', 'RDF/XML']
+ ]) do |format, label|
+ render ChipButtonComponent.new(type: 'clickable', 'data-action': "metadata-downloader#download#{format}") do
+ concat content_tag(:span, label)
+ concat content_tag(:span, inline_svg("summary/download.svg", width: '15px', height: '15px'))
+ end
+ end
+ end
+ end
+
+ end
def count_subscriptions(ontology_id)
users = LinkedData::Client::Models::User.all(include: 'subscription', display_context: false, display_links: false )
@@ -553,7 +376,7 @@ def error_message
private
def submission_languages(submission = @submission)
- submission&.naturalLanguage.map { |natural_language| natural_language["iso639"] && natural_language.split('/').last }.compact
+ Array(submission&.naturalLanguage).map { |natural_language| natural_language["iso639"] && natural_language.split('/').last }.compact
end
end
diff --git a/app/helpers/submissions_helper.rb b/app/helpers/submissions_helper.rb
index ca55ce95b..2fe2408d6 100644
--- a/app/helpers/submissions_helper.rb
+++ b/app/helpers/submissions_helper.rb
@@ -266,7 +266,7 @@ def extractable_metadatum_tooltip(options = {})
def attribute_infos(attr_label)
- @metadata.select{ |attr_hash| attr_hash["attribute"].to_s.eql?(attr_label) }.first
+ submission_metadata.select{ |attr_hash| attr_hash["attribute"].to_s.eql?(attr_label) }.first
end
def attribute_help_text(attr)
@@ -481,12 +481,14 @@ def generate_attribute_input(attr_label, options = {})
end
- def generate_attribute_text(attr_label , label)
+ def generate_attribute_text(attr_label , label, tooltip: true)
attr = attribute_infos(attr_label)
label_html = "#{label} "
# Generate tooltip
- help_text = attribute_help_text(attr)
- label_html << help_tooltip(help_text, {:id => "tooltip#{attr["attribute"]}"} ).html_safe
+ if tooltip
+ help_text = attribute_help_text(attr)
+ label_html << help_tooltip(help_text, {:id => "tooltip#{attr["attribute"]}"} ).html_safe
+ end
label_html << '
'
label_html.html_safe
end
diff --git a/app/javascript/controllers/application.js b/app/javascript/controllers/application.js
index 185546806..f0624491d 100644
--- a/app/javascript/controllers/application.js
+++ b/app/javascript/controllers/application.js
@@ -14,6 +14,8 @@ import NestedForm from 'stimulus-rails-nested-form'
application.register('nested-form', NestedForm)
import ReadMore from 'stimulus-read-more'
application.register('read-more', ReadMore)
+import Timeago from 'stimulus-timeago'
+application.register('timeago', Timeago)
export { application }
diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js
index 33e05b02d..59ac72d22 100644
--- a/app/javascript/controllers/index.js
+++ b/app/javascript/controllers/index.js
@@ -43,12 +43,16 @@ application.register("load-chart", LoadChartController)
import MetadataDownloaderController from "./metadata_downloader_controller"
application.register("metadata-downloader", MetadataDownloaderController)
+import OntologyRelationsNetworkController from "./ontology_relations_network_controller"
+application.register("ontology-relations-network", OntologyRelationsNetworkController)
+
import OntologyViewerTabsController from "./ontology_viewer_tabs_controller"
application.register("ontology-viewer-tabs", OntologyViewerTabsController)
import OntoportalAutocompleteController from "./ontoportal_autocomplete_controller"
application.register("ontoportal-autocomplete", OntoportalAutocompleteController)
+
import PlatformLanguageController from "./platform_language_controller"
application.register("platform-language", PlatformLanguageController)
diff --git a/app/javascript/controllers/metadata_downloader_controller.js b/app/javascript/controllers/metadata_downloader_controller.js
index c1f2a5b69..415b22223 100644
--- a/app/javascript/controllers/metadata_downloader_controller.js
+++ b/app/javascript/controllers/metadata_downloader_controller.js
@@ -57,7 +57,7 @@ export default class extends Controller {
if (subJson["hasDomain"] == null) {
subJson["hasDomain"] = ontJson["hasDomain"];
} else {
- subJson["hasDomain"] = subJson["hasDomain"].split(", ").concat(ontJson["hasDomain"]);
+ subJson["hasDomain"] = subJson["hasDomain"].join(', ').split(", ").concat(ontJson["hasDomain"]);
/* make the array unique:
var unique = arr.filter(function(elem, index, self) {
return index == self.indexOf(elem);
diff --git a/app/javascript/controllers/ontology_relations_network_controller.js b/app/javascript/controllers/ontology_relations_network_controller.js
new file mode 100644
index 000000000..7043a8384
--- /dev/null
+++ b/app/javascript/controllers/ontology_relations_network_controller.js
@@ -0,0 +1,169 @@
+import {Controller} from "@hotwired/stimulus"
+import { Network, DataSet } from 'vis-network/standalone/esm/vis-network.min.js';
+
+// Connects to data-controller="ontology-relations-network"
+export default class extends Controller {
+ static values = {
+ data: Array
+ }
+
+ static targets = ["container"]
+
+ connect() {
+ this.build()
+ }
+
+
+ build(){
+ this.#buildNetwork(this.dataValue);
+ }
+ /**
+ * Build the VIS network for ontologies relations: http://visjs.org/docs/network/
+ * @param ontologyRelationsArray
+ */
+ #buildNetwork(ontologyRelationsArray) {
+ const nodes = new DataSet([])
+ // create an array with edges
+ const edges = new DataSet();
+
+ let propertyCount = 1; // To define nodes IDs
+
+ // Hash with nodes id for each ontology URI
+ let nodeIds = {};
+
+ /* Get the relations that have been selected
+ if (jQuery("#selected_relations").val() !== null) {
+ selected_relations = jQuery("#selected_relations").val()
+ }*/
+
+ let selected_relations = [];
+ this.relationCheckTargets = Array.from(this.element.querySelectorAll('option'))
+ this.relationCheckTargets.forEach((elem) => {
+ if (elem.selected) {
+ selected_relations.push(elem.value);
+ }
+ })
+
+ ontologyRelationsArray.forEach((relation) => {
+ let targetNodeNumber
+ let sourceNodeNumber
+
+ // If relations have been selected for filtering then we don't show others relations
+ if (!selected_relations.includes(relation["relation"])) {
+ return
+ }
+
+ // Don't create a new node if node exist already, just add a new edge
+ if ( nodeIds[relation["source"]] != null) {
+ sourceNodeNumber = nodeIds[relation["source"]];
+ } else {
+ sourceNodeNumber = propertyCount;
+ // If the node is the source it means it is from the Portal, so we colorate it in green
+ nodes.add([
+ {id: sourceNodeNumber, label: relation["source"], color: "#5cb85c"}
+ ]);
+ nodeIds[relation["source"]] = propertyCount;
+ propertyCount++;
+ }
+
+ // Create the target node if don't exist
+ if (nodeIds[relation["target"]] != null) {
+ targetNodeNumber = nodeIds[relation["target"]];
+ } else {
+ targetNodeNumber = propertyCount;
+ // If target node is an ontology from the portal then node in green
+ if (relation["targetInPortal"]) {
+ nodes.add([
+ {id: targetNodeNumber, label: relation["target"], color: "#5cb85c"}
+ ]);
+ } else {
+ nodes.add([
+ {id: targetNodeNumber, label: relation["target"]}
+ ]);
+ }
+ nodeIds[relation["target"]] = propertyCount;
+ propertyCount++;
+ }
+
+ edges.add([
+ {
+ from: sourceNodeNumber,
+ to: targetNodeNumber,
+ label: relation["relation"],
+ font: {align: 'horizontal'}
+ }
+ ]);
+ })
+
+
+
+ // create a network
+ const container = this.containerTarget;
+ // provide the data in the vis format
+
+ const data = {
+ nodes: nodes,
+ edges: edges
+ };
+
+ // Get height of div
+ const networkHeight = container.clientHeight.toString();
+
+ const options = {
+ autoResize: true,
+ height: networkHeight,
+ groups: {
+ useDefaultGroups: true,
+ myGroupId: {
+ /*node options*/
+ }
+ },
+ edges: {
+ color: {inherit: 'both'},
+ smooth: {
+ enabled: true,
+ type: "dynamic",
+ roundness: 0.5
+ }
+ },
+ nodes: {
+ shape: "box"
+ },
+ physics: {
+ // http://visjs.org/docs/network/physics.html
+ enabled: true,
+ // To stabilize faster, increase the minVelocity value
+ minVelocity: 1,
+ stabilization: {
+ enabled: true,
+ onlyDynamicEdges: false,
+ fit: true
+ },
+ barnesHut: {
+ gravitationalConstant: -1500,
+ centralGravity: 0,
+ springLength: 300,
+ springConstant: 0.01,
+ damping: 0.2,
+ avoidOverlap: 0.2
+ },
+ hierarchicalRepulsion: { // not used at the moment
+ centralGravity: 0.0,
+ springLength: 500,
+ springConstant: 0.2,
+ damping: 1,
+ nodeDistance: 170
+ },
+ solver: 'barnesHut'
+ },
+ interaction: {
+ zoomView: false,
+ navigationButtons: true
+ }
+ };
+
+ // initialize your network!
+ const network = new Network(container, data, options);
+ network.fit();
+ }
+}
diff --git a/app/javascript/controllers/tooltip_controller.js b/app/javascript/controllers/tooltip_controller.js
index f9bc3ca02..49bf93eee 100644
--- a/app/javascript/controllers/tooltip_controller.js
+++ b/app/javascript/controllers/tooltip_controller.js
@@ -4,6 +4,8 @@ import useTooltip from "../mixins/useTooltip";
// Connects to data-controller="tooltip"
export default class extends Controller {
connect() {
- useTooltip(this.element)
+ if(this.element.title && this.element.title !== ''){
+ useTooltip(this.element)
+ }
}
}
diff --git a/app/views/fair_score/_fair_service_header.html.haml b/app/views/fair_score/_fair_service_header.html.haml
index 61321623d..f462f97dc 100644
--- a/app/views/fair_score/_fair_service_header.html.haml
+++ b/app/views/fair_score/_fair_service_header.html.haml
@@ -1,10 +1,9 @@
%span
%span
- FAIR Scores
%span.badge.badge-pill.badge-secondary
beta
%span
= link_to("https://github.com/agroportal/fairness", target: "_blank", "aria-label": t("view_fair_scores_definitions"), title: t("view_fair_scores_definitions")) do
- %i.fas.fa-lg.fa-question-circle{"aria-hidden": "true", style: "margin-left: 0.5rem"}
+ %i.fas.fa-question-circle{"aria-hidden": "true", style: "margin-left: 0.5rem"}
= link_to(get_fairness_service_url,id: "fairness-service-url", target: "_blank", "aria-label": t("get_json_version"), title: t("get_json_version")) do
- %i.fas.fa-lg.fa-code{"aria-hidden": "true", style: "margin-left: 0.5rem" }
\ No newline at end of file
+ %i.fas.fa-code{"aria-hidden": "true", style: "margin-left: 0.5rem" }
\ No newline at end of file
diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml
index 248c0f115..6461297cb 100644
--- a/app/views/home/index.html.haml
+++ b/app/views/home/index.html.haml
@@ -22,24 +22,24 @@
.home-bubble.home-bubble-one
%h5
= @anal_ont_names[0]
- %p
+ %p
= @anal_ont_numbers[0].to_s + " visits"
.home-bubble.home-bubble-two
%h5
= @anal_ont_names[1]
- %p
+ %p
= @anal_ont_numbers[1].to_s + " visits"
.home-bubble.home-bubble-three
%h5
= @anal_ont_names[2]
- %p
+ %p
= @anal_ont_numbers[2].to_s + " visits"
%a.home-bubble.home-bubble-four{:href => "/visits"}
%h5 ...
.home-header-title-container
.home-header-title
- %h4
+ %h4
= t('.welcome', site: $SITE)
%p
= t('.tagline')
@@ -91,10 +91,10 @@
- if fairness_service_enabled?
%div#fair-home{data:{controller:"fair-score-home"}}
= render partial: "shared/fair_score_bars", locals: {data: nil}
- %a{:href => "#fairDetails"}
- %div.home-fair-details
- %p See details
- = inline_svg_tag "arrow-right.svg"
+ %a{:href => "#fairDetails"}
+ %div.home-fair-details
+ %p See details
+ = inline_svg_tag "arrow-right.svg"
.home-sub-section-right
%h4 News
%hr.home-section-line
@@ -106,13 +106,13 @@
.home-statistics-container
.home-agroportal-figures
= inline_svg_tag "ontoportal-icon.svg"
- %p
+ %p
= portal_name+" in figures:"
.home-statistics
.home-statistics-item
%hr/
%div
- %h4
+ %h4
= number_with_delimiter(@ont_count, :delimiter => ",")
%p Ontologies
.home-statistics-item
diff --git a/app/views/layouts/appliance.html.haml b/app/views/layouts/appliance.html.haml
index 5794e4865..d99cfaac7 100644
--- a/app/views/layouts/appliance.html.haml
+++ b/app/views/layouts/appliance.html.haml
@@ -28,7 +28,7 @@
%body{:class => "#{controller_name} #{action_name}"}
= render partial: "layouts/topnav"
- %div.container-fluid.flex-grow-1
+ %div.flex-grow-1
= render partial: "layouts/notices"
= modal_frame_container
diff --git a/app/views/layouts/ontology_viewer/_header.html.haml b/app/views/layouts/ontology_viewer/_header.html.haml
index 41173aaf9..30474e193 100644
--- a/app/views/layouts/ontology_viewer/_header.html.haml
+++ b/app/views/layouts/ontology_viewer/_header.html.haml
@@ -15,13 +15,13 @@
= @ontology.name
%span
= "("+ @ontology.acronym+")"
- - unless sub.hasLicense.nil?
+ - unless sub.nil? || sub.hasLicense.nil?
= render ChipButtonComponent.new(class: 'chip_button_small') do
= link_to_modal(nil, "/ajax/submission/show_licenses/#{@ontology.acronym}",data: { show_modal_title_value: "More licenses", show_modal_size_value: 'modal-xl' }) do
= attribute_enforced_values('hasLicense')[sub.hasLicense] || sub.hasLicense
= inline_svg_tag "icons/popup-link.svg"
- - unless sub.creationDate.nil?
+ - unless sub.nil? || sub.creationDate.nil?
.ontology-details-last-update
%img{src: asset_path("update.svg")}/
%div
diff --git a/app/views/ontologies/_fairs_score.html.haml b/app/views/ontologies/_fairs_score.html.haml
index 26a98885c..95602dc6a 100644
--- a/app/views/ontologies/_fairs_score.html.haml
+++ b/app/views/ontologies/_fairs_score.html.haml
@@ -6,17 +6,18 @@
})
- if @fair_scores_data
- - text = "Total score : #{@fair_scores_data[:score]} ( #{@fair_scores_data[:normalizedScore]}% ) details "
- = link_to_modal(text.html_safe,
- "/ajax/fair_score/html/?ontologies=#{@ontology.acronym}",
- class: "btn btn-primary w-100",
- data: { show_modal_title_value: "FAIRness assessment questions", show_modal_size_value: 'modal-xl' },
- )
- %div.statistics_container{data:{controller:"fair-score-summary"}}
- %div
+ %div.statistics_container.d-flex.flex-grow-1{data:{controller:"fair-score-summary"}}
+ %div.w-50
= render partial: "shared/fair_score_radar" , locals: {data: @fair_scores_data}
- %div
+ %div.w-50
= render partial: "shared/fair_score_bars" , locals: {data: @fair_scores_data}
+ %div.text-center
+ - text = " See details "
+ = link_to_modal(text.html_safe,
+ "/ajax/fair_score/html/?ontologies=#{@ontology.acronym}",
+ class: "btn",
+ data: { show_modal_title_value: "FAIRness assessment questions", show_modal_size_value: 'modal-xl' },
+ )
- else
%p.font-italic= "We are still collecting data for #{@ontology.acronym}"
diff --git a/app/views/ontologies/_ontology_views.html.haml b/app/views/ontologies/_ontology_views.html.haml
new file mode 100644
index 000000000..b500e0346
--- /dev/null
+++ b/app/views/ontologies/_ontology_views.html.haml
@@ -0,0 +1,8 @@
+- if @views.empty?
+ = empty_state_message "No views of #{@ontology.acronym} available"
+- else
+ %div.border-top
+ %dl
+ - @view_decorators.each do |view_decorator|
+ %dt= view_decorator.linked_name
+ %dd= view_decorator.description
\ No newline at end of file
diff --git a/app/views/ontologies/_visits.html.haml b/app/views/ontologies/_visits.html.haml
index bb2420bb2..13266ac02 100644
--- a/app/views/ontologies/_visits.html.haml
+++ b/app/views/ontologies/_visits.html.haml
@@ -2,4 +2,4 @@
%canvas#visits_chart{data: {controller:'load-chart' , 'load-chart-labels-value': @visits_data[:labels].last(13),
'load-chart-datasets-value': visits_chart_dataset(@visits_data[:visits].last(13))}}
- else
- %p.font-italic= "We are still collecting data for #{@ontology.acronym}"
+ = empty_state_message "We are still collecting data for #{@ontology.acronym}"
diff --git a/app/views/ontologies/sections/_additional_metadata.html.haml b/app/views/ontologies/sections/_additional_metadata.html.haml
new file mode 100644
index 000000000..0054b4c76
--- /dev/null
+++ b/app/views/ontologies/sections/_additional_metadata.html.haml
@@ -0,0 +1,18 @@
+= turbo_frame_tag 'application_modal_content' do
+ - sub_hash = @submission_latest.to_hash.except(:context, :links, :ontology)
+ %div.card.overflow-hidden{style: 'border-radius: 20px;'}
+ %div
+ = render Display::AlertComponent.new(closable: false) do
+ %div.d-flex.align-items-center
+ %div{style:'width: 50px; height: 50px'}
+ - sub_values = sub_hash.values
+ - count = sub_values.count{|x| !(x.nil? || x.to_s.empty?)}
+ = render CircleProgressBarComponent.new(count: count , max: sub_values.size )
+ %div.mx-1
+ of the metadata attributes were filled
+ %section.px-4{style:'height: 70vh; overflow-y: scroll'}
+ = render SubmissionMetadataComponent.new(submission: @submission_latest, submission_metadata: submission_metadata) unless @submission_latest.nil?
+ %div.scroll-message.text-center.py-3.bg-light.text-primary
+ %p.scroll-text.mb-0
+ Scroll down to see more
+ %i.scroll-icon.fa.fa-chevron-down
diff --git a/app/views/ontologies/sections/_licenses.html.haml b/app/views/ontologies/sections/_licenses.html.haml
index b9899f6dd..e966e7608 100644
--- a/app/views/ontologies/sections/_licenses.html.haml
+++ b/app/views/ontologies/sections/_licenses.html.haml
@@ -1,10 +1,3 @@
-= turbo_frame_tag 'application_modal_content' do
- - @licenses.each do |attribute|
- - attr = attribute_infos(attribute)
- - value = Array(@submission_latest.send(attribute))
- .creation_info
- %p.description_text
- = attr["label"] || attribute
- %p.normal_text
- = value.join(", ")
-
+= render_in_modal do
+ = render Layout::ListComponent.new do |l|
+ = properties_list_component(l, @licenses.map { |x| [x.to_s, @submission_latest.send(x.to_s)] }.to_h)
diff --git a/app/views/ontologies/sections/_metadata.html.haml b/app/views/ontologies/sections/_metadata.html.haml
old mode 100644
new mode 100755
index 655e20bf1..3b575d5b5
--- a/app/views/ontologies/sections/_metadata.html.haml
+++ b/app/views/ontologies/sections/_metadata.html.haml
@@ -1,189 +1,66 @@
= turbo_frame_tag 'summary', target:"_top" do
- %div.ont-metadata
- -# Details pane
- %section.ont-metadata-card.ont-details-card
- %header.pb-2.font-weight-bold= t('ontology_details.metadata.details')
- %table.table.table-sm
- %tr
- %td= t('ontology_details.metadata.acronym')
- %td= @ontology.acronym
- %tr
- %td= t('ontology_details.metadata.visibility')
- %td= strip_links(visibility_link(@ontology))
- - if @ontology.viewing_restricted?
- %tr
- %td= t('ontology_details.metadata.viewing_restriction')
- %td= @ontology.viewingRestriction.capitalize
- - unless @ontology.viewOf.nil?
- %tr
- %td= t('ontology_details.metadata.view_of_ontology')
- %td
- - ont_parent_acronym = @ontology.viewOf.split('/').last
- - if $PURL_ENABLED
- - ont_url = @ontology.purl.sub(@ontology.acronym, ont_parent_acronym)
- - else
- - ont_url = @ontology.links['ui'].sub(@ontology.acronym, ont_parent_acronym)
- = link_to(ont_parent_acronym, ont_url)
- - unless @submission_latest.nil?
- %tr
- %td= t('ontology_details.metadata.description')
- %td= sanitize(@submission_latest.description)
- %tr
- %td= t('ontology_details.metadata.status')
- %td= @submission_latest.status.capitalize unless @submission_latest.status.nil?
- %tr
- %td= t('ontology_details.metadata.format')
- %td= @submission_latest.hasOntologyLanguage
- %tr
- %td= t('ontology_details.metadata.contact')
- %td= raw @submission_latest.contact.map {|c| [c.name, c.email].join(", ") if c.member?(:name) && c.member?(:email)}.join(" ")
- - categories_hash = LinkedData::Client::Models::Category.all_to_hash
- - categories = @ontology.hasDomain
- - unless categories.empty?
- %tr
- %td= t('ontology_details.metadata.categories')
- %td= categories.map {|c| categories_hash[c].name}.sort.join(", ")
- - groups_hash = LinkedData::Client::Models::Group.all_to_hash
- - groups = @ontology.group
- - unless groups.empty?
- %tr
- %td= t('ontology_details.metadata.groups')
- %td= groups.map {|g| groups_hash[g].name}.sort.join(", ")
- - if @ontology.admin?(session[:user])
- %tr
- %td= t('ontology_details.metadata.pull_url')
- %td
- = link_to @submission_latest.pullLocation, @submission_latest.pullLocation
- = raw additional_details
+ .summary-page-center
+ .summary-page-first-row
+ = render partial: 'ontologies/sections/metadata/ontology_description_section'
+ = render partial: 'ontologies/sections/metadata/ontology_fairness_section'
+ = render partial: 'ontologies/sections/metadata/ontology_relations_network'
+ = render partial: 'ontologies/sections/metadata/ontology_submissions_section'
+ = render partial: 'ontologies/sections/metadata/ontology_metrics_section'
+ .summary-page-second-row
+ = ontology_depiction_card
+ = properties_card('Identifiers','Principal identifiers of the ontology', @identifiers) do |values|
+ = horizontal_list_container(values) do |v|
+ = render LinkFieldComponent.new(value: v)
- = render partial: 'additional_metadata'
+ = properties_dropdown('dates','Dates','', @dates_properties) do |values|
+ = horizontal_list_container(values) do |v|
+ = render DateTimeFieldComponent.new(value: v)
- -# Submissions pane
- %section.ont-metadata-card.ont-subs-card
- %div.ont-section-toolbar
- %header.pb-2.font-weight-bold= t('ontology_details.metadata.submissions')
- - if @ontology.admin?(session[:user])
- = link_to(new_ontology_submission_path(@ontology.acronym), "aria-label": t('ontology_details.metadata.add_submission'), title: t('ontology_details.metadata.add_submission')) do
- %i.fas.fa-lg.fa-plus-circle{"aria-hidden": "true", style: "margin-left: 0.75rem;"}
- - unless (@submission_latest.nil? || (@submission_latest.respond_to?(:status) && @submission_latest.status == 404))
- = link_to(edit_ontology_submission_path(@ontology.acronym, @submission_latest.submissionId), "aria-label": t('ontology_details.metadata.edit_latest_submission'), title: t('ontology_details.metadata.edit_latest_submission')) do
- %i.fas.fa-user-edit{"aria-hidden": "true", style: "margin-left: 0.5rem;"}
- = render TurboFrameComponent.new(id: 'ontology_submissions', src: ontology_submissions_path(@ontology.acronym), target: '_top')
+ = properties_dropdown('person_and_organization','Persons and organizations','', @agents_properties) do |values|
+ = horizontal_list_container(values) do |v|
+ = render ChipButtonComponent.new(type: "static",'data-controller':' tooltip', title: '', class: 'text-truncate', style: 'max-width: 280px; display:block; line-height: unset') do
+ = display_agent(v, link: false)
+ = properties_dropdown('link','Links','Metadata properties that highlight the links enabling access to datasets, downloading semantic resources, etc', @links_properties)
- -# Views pane (don't show if the ontology is a view - we don't allow views of views).
- - unless @ontology.view?
- %section.ont-metadata-card.ont-views-card
- %div.ont-section-toolbar
- %header.pb-2.font-weight-bold= "#{t('ontology_details.metadata.views_of')} #{@ontology.acronym}"
- - ont_id_esc = CGI.escape(@ontology.id)
- -# TODO: I don't think we should have brackets in the URL parameters.
- - if session[:user].nil?
- %a{href: "/login?redirect=#{escape("/ontologies/new?ontology[viewOf]=#{ont_id_esc}")}", "aria-label": t('ontology_details.metadata.create_new_view'), title: t('ontology_details.metadata.create_new_view')}
- %i.fas.fa-lg.fa-plus-circle{"aria-hidden": "true", style: "margin-left: 0.5rem;"}
- - else
- %a{href: "/ontologies/new?ontology[viewOf]=#{ont_id_esc}"}
- %i.fas.fa-lg.fa-plus-circle{"aria-hidden": "true", style: "margin-left: 0.5rem;"}
- - if @views.empty?
- %p.font-italic= t('ontology_details.metadata.no_views_of', name: @ontology.acronym)
- - else
- %div.border-top
- %dl
- - @view_decorators.each do |view_decorator|
- %dt= view_decorator.linked_name
- %dd= view_decorator.description
+ = properties_dropdown('projects_section','Projects and usage information','Details pertaining to the utilization of the ontology.', nil) do |c|
+ - c.row do
+ = render FieldContainerComponent.new do |f|
+ - f.label do
+ Projects using #{@ontology.acronym}
+ = new_element_link('Create new project', new_project_path)
- %div.right-hand-content
+ - if @projects.empty?
+ = empty_state_message("No projects using #{@ontology.acronym}")
+ - else
+ = horizontal_list_container(@projects) do |project|
+ = render ChipButtonComponent.new(url: project_path(project.acronym), text: project.name, type: "clickable")
+ - properties_list_component(c, @projects_properties)
- -# Misc links pane
- %section.ont-metadata-card.ont-links-card
- %div.ont-section-toolbar
- %header.pb-2.font-weight-bold= t('ontology_details.metadata.links')
- %a{:href => "#{(@submission_latest || @ontology).id}?display=all", :target => '_blank', :class => "btn btn-primary"}= t('ontology_details.metadata.go_to_rest_api_json_entry')
+ = properties_dropdown('methodology','Methodology', 'Metadata properties primarily encompass the design, methods, and actions to create the ontology. This includes elements such as the tools and software employed by the creator of the ontology during its configuration', @methodology_properties)
- -# Metadata links pane
- %section.ont-metadata-card.ont-metadatalinks-card
- %div.ont-section-toolbar
- %header.pb-2.font-weight-bold= t('ontology_details.metadata.get_my_metadata_back')
- %div
- - unless @submission_latest.nil?
- %div{data:{controller: 'metadata-downloader'}}
- =javascript_include_tag "jsonld"
- %button{:id => "getMetadataBackNquadsBtn", :class => "btn btn-primary", 'data-action': 'metadata-downloader#downloadNQuads'}= t('ontology_details.metadata.n_triple')
- %button{:id => "getMetadataBackJsonldBtn", :class => "btn btn-primary", 'data-action': 'metadata-downloader#downloadJsonLd'}= t('ontology_details.metadata.json_ld')
- %button{:id => "getMetadataBackXmlBtn", :class => "btn btn-primary", 'data-action': 'metadata-downloader#downloadXML'}= t('ontology_details.metadata.rdf_xml')
- -# Listener in bp_ontology_viewer.js.erb
- -# Fair score pane
- -# TODO temporary hide fairness_service for AGROVOC after there demand
- - if fairness_service_enabled? && @ontology.acronym != 'AGROVOC'
- %section.ont-metadata-card.ont-fair-score-card#fair-summary
- %div.ont-section-toolbar
- %header.pb-2.font-weight-bold
- = render partial: "fair_score/fair_service_header"
- %div#fair-score-charts-container
- = render partial: "fairs_score"
+ = render Layout::CardComponent.new do |c|
+ - c.header do |h|
+ - h.text do
+ Visits
+ - if visits_data(@ontology)
+ = link_to(@ontology.links["analytics"] + "?apikey=#{get_apikey}&format=csv", title: "Download as CSV") do
+ = inline_svg("summary/download.svg", width: '30px', height: '20px')
- -# Metrics pane
- %section.ont-metadata-card.ont-metrics-card
- %div.ont-section-toolbar
- %header.pb-2.font-weight-bold= t('ontology_details.metadata.metrics')
- = link_to(Rails.configuration.settings.links[:metrics], target: "_blank", "aria-label": t('ontology_details.metadata.view_individual_metrics_definitions'), title: t('ontology_details.metadata.view_individual_metrics_definitions')) do
- %i.fas.fa-lg.fa-question-circle{"aria-hidden": "true", style: "margin-left: 0.5rem"}
- - if @metrics.nil? || (@metrics.is_a?(Array) && @metrics.empty?) || (@metrics.respond_to?(:status) && @metrics.status == 404)
- %p.font-italic= "#{t('ontology_details.metadata.metrics_not_calculated_yet')} #{@ontology.acronym}"
- - else
- %table.table.table-sm
- %tr
- %td= t('ontology_details.metadata.classes')
- %td{style: "text-align: right"}= number_with_delimiter(@metrics.classes)
- %tr
- %td= t('ontology_details.metadata.individuals')
- %td= number_with_delimiter(@metrics.individuals)
- %tr
- %td= t('ontology_details.metadata.properties')
- %td= number_with_delimiter(@metrics.properties)
- %tr
- %td= t('ontology_details.metadata.max_depth')
- %td= number_with_delimiter(@metrics.maxDepth)
- %tr
- %td= t('ontology_details.metadata.max_children')
- %td= number_with_delimiter(@metrics.maxChildCount)
- %tr
- %td= t('ontology_details.metadata.avg_children')
- %td= number_with_delimiter(@metrics.averageChildCount)
- %tr
- %td= t('ontology_details.metadata.single_child_classes')
- %td= number_with_delimiter(@metrics.classesWithOneChild)
- %tr
- %td= t('ontology_details.metadata.many_children_classes')
- %td= number_with_delimiter(@metrics.classesWithMoreThan25Children)
- %tr
- %td= t('ontology_details.metadata.no_definition_classes')
- %td= number_with_delimiter(@metrics.classesWithNoDefinition)
- -# Visits pane
- %section.ont-metadata-card.ont-analytics-card
- %div.ont-section-toolbar
- %header.pb-2.font-weight-bold= t('ontology_details.metadata.visits')
- - if visits_data(@ontology)
- = link_to(@ontology.links["analytics"] + "?apikey=#{get_apikey}&format=csv", "aria-label": t('ontology_details.metadata.download_as_csv'), title: t('ontology_details.metadata.download_as_csv')) do
- %i.fas.fa-lg.fa-download{"aria-hidden": "true", style: "margin-left: 0.5rem"}
- = render partial: "visits"
+ = render Layout::ListComponent.new do |l|
+ - l.row do
+ = render partial: "visits"
- -# Included in data catalog pane
- = raw display_data_catalog(@submission_latest) unless @submission_latest.nil?
- -# Logo & depiction
- = raw display_logo(@submission_latest) unless @submission_latest.nil?
-
- -# Projects pane
- %section.ont-metadata-card.ont-projects-card
- %div.ont-section-toolbar
- %header.pb-2.font-weight-bold= "#{t('ontology_details.metadata.projects_using')} #{@ontology.acronym}"
- = link_to(new_project_path(), "aria-label": t('ontology_details.metadata.create_new_project'), title: t('ontology_details.metadata.create_new_project')) do
- %i.fas.fa-lg.fa-plus-circle{"aria-hidden": "true", style: "margin-left: 0.5rem"}
- - if @projects.empty?
- %p.font-italic= "#{t('ontology_details.metadata.no_projects_using')} #{@ontology.acronym}"
- - else
- %div.border-top
- - for project in @projects
- %p= link_to(project.name, project_path(project.acronym))
+ - unless @ontology.view?
+ = render Layout::CardComponent.new do |d|
+ - d.header do |h|
+ - h.text do
+ Views of #{@ontology.acronym}
+ = new_element_link('Create new view', new_view_path(@ontology.id))
+ = render Layout::ListComponent.new do |l|
+ - l.row do
+ = render partial: 'ontology_views'
+ - unless @submission_latest.nil?
+ = javascript_include_tag("jsonld")
+ = metadata_formats_buttons
\ No newline at end of file
diff --git a/app/views/ontologies/sections/metadata/_metrics_evolution_graph.html.haml b/app/views/ontologies/sections/metadata/_metrics_evolution_graph.html.haml
new file mode 100644
index 000000000..a8791f2da
--- /dev/null
+++ b/app/views/ontologies/sections/metadata/_metrics_evolution_graph.html.haml
@@ -0,0 +1,26 @@
+= turbo_frame_tag 'application_modal_content' do
+ %canvas#metrics_evolution_chart
+ :javascript
+
+ var metrics = #{raw data.to_json};
+ var key = Object.entries(metrics)[0][0]
+ var numbers = Object.entries(metrics)[0][1]
+
+ // Create a line chart
+ var ctx = document.getElementById('metrics_evolution_chart').getContext('2d');
+ console.log(key, numbers)
+ var metricsChart = new Chart(ctx, {
+ type: 'line',
+ data: {
+ labels: numbers.map((_, index) => `Submission ${index + 1}`),
+ datasets: [
+ {
+ label: key,
+ data: numbers,
+ borderColor: 'rgba(75, 192, 192, 1)',
+ backgroundColor: 'rgba(75, 192, 192, 0.2)',
+ }
+ ]
+ },
+ options: {}
+ })
\ No newline at end of file
diff --git a/app/views/ontologies/sections/metadata/_ontology_description_section.html.haml b/app/views/ontologies/sections/metadata/_ontology_description_section.html.haml
new file mode 100644
index 000000000..4fc4c21c7
--- /dev/null
+++ b/app/views/ontologies/sections/metadata/_ontology_description_section.html.haml
@@ -0,0 +1,53 @@
+= render Layout::CardComponent.new do |c|
+ - c.header(text: 'General information')
+ = render Layout::ListComponent.new do |l|
+ - l.row do
+ .d-flex.align-items-center
+ .description_text
+ = render TextAreaFieldComponent.new(value: @submission_latest&.description)
+ - unless @submission_latest&.logo.nil?
+ = image_tag(@submission_latest&.logo, class: 'description_img')
+ - l.row do
+ %span.creation_text
+ - if @submission_latest&.released
+ Initial release occurred on
+ %span.date_creation_text= l(Date.parse(@submission_latest.released), format: :monthfull_day_year) + '.'
+ - if @submission_latest&.contact
+ For additional information, reach out
+ %span.creator_text
+ = display_contact(@submission_latest.contact)
+
+ - unless Array(@submission_latest&.naturalLanguage).empty?
+ - l.row do
+ = render FieldContainerComponent.new(label: 'Languages') do
+ = horizontal_list_container(Array(@submission_latest&.naturalLanguage)) do |v|
+ = render LanguageFieldComponent.new(value: v)
+
+ - if @ontology.admin?(session[:user]) && @submission_latest&.pullLocation
+ - l.row do
+ = render FieldContainerComponent.new(label: 'Pull location') do
+ = horizontal_list_container([@submission_latest&.pullLocation]) do |v|
+ = render LinkFieldComponent.new(value: v)
+ - unless Array(@submission_latest&.keywords).empty? && Array(@submission_latest&.keyClasses).empty?
+ - l.row do
+ = render FieldContainerComponent.new(label: 'Keywords and classes') do
+ - values = (Array(@submission_latest&.keywords) + Array(@submission_latest&.keyClasses))
+ - values = values.map{|x| x.split(',')}.flatten
+ = horizontal_list_container(values) do |v|
+ - if link?(v)
+ = raw get_link_for_cls_ajax(v, @ontology.acronym, '_blank')
+ - else
+ = render ChipButtonComponent.new(text: v, type: "static")
+
+ - unless Array(@ontology.hasDomain).empty?
+ - l.row do
+ = render FieldContainerComponent.new(label: 'Categories and subjects') do
+ = horizontal_list_container(@ontology.hasDomain) do |v|
+ = render ChipButtonComponent.new(text: show_category_name(v), type: "static")
+
+ %hr.w-100.my-3
+ .icons_container
+ = ontology_icon_links(@ontology_icon_links, @submission_latest)
+ %hr.w-100.my-3
+ %div.text-center.pb-3
+ = link_to_modal('See all metadata...', "/ajax/submission/show_additional_metadata/#{@ontology.acronym}",data: { show_modal_title_value: "All metadata properties", show_modal_size_value: 'modal-xl' })
\ No newline at end of file
diff --git a/app/views/ontologies/sections/metadata/_ontology_fairness_section.html.haml b/app/views/ontologies/sections/metadata/_ontology_fairness_section.html.haml
new file mode 100644
index 000000000..550776961
--- /dev/null
+++ b/app/views/ontologies/sections/metadata/_ontology_fairness_section.html.haml
@@ -0,0 +1,15 @@
+- if fairness_service_enabled? && @ontology.acronym != 'AGROVOC' && @fair_scores_data
+ = render SummarySectionComponent.new(title: 'FAIR score') do |s|
+ - s.action_link do
+ = render partial: "fair_score/fair_service_header"
+
+ %div.p-2
+ %section.ont-metadata-card.ont-fair-score-card#fair-summary
+ %div.ont-section-toolbar.justify-content-between.flex-row-reverse
+ %div.align-items-start
+ .btn.btn-primary.rounded-pill.right-button
+ .span Total score : #{@fair_scores_data[:score]} ( #{@fair_scores_data[:normalizedScore]}% )
+
+ %div#fair-score-charts-container
+ = render partial: "fairs_score"
+ .account-page-card-sub-container
\ No newline at end of file
diff --git a/app/views/ontologies/sections/metadata/_ontology_metrics_section.html.haml b/app/views/ontologies/sections/metadata/_ontology_metrics_section.html.haml
new file mode 100644
index 000000000..ffe69f38d
--- /dev/null
+++ b/app/views/ontologies/sections/metadata/_ontology_metrics_section.html.haml
@@ -0,0 +1,15 @@
+= render SummarySectionComponent.new(title: "Metrics" , link: Rails.configuration.settings.links[:metrics], link_title: "Metadata properties that provide information about measurements of the ontology, such as the number of classes, individuals, etc.", show_card: false) do
+ - if @metrics.nil? || (@metrics.is_a?(Array) && @metrics.empty?) || (@metrics.respond_to?(:status) && @metrics.status == 404)
+ = empty_state_message("We have not yet calculated metrics for #{@ontology.acronym}")
+ - else
+ .metrics-container.metrics
+ - %w[classes individuals properties].each do |metric|
+ = link_to_modal nil, ontology_path(@ontology.acronym) + "/metrics_evolution?metrics_key=#{metric}",
+ class: "metrics-item", data: { show_modal_title_value: "Metrics evolution of #{@ontology.acronym}"} do
+ %hr
+ %div
+ %h4
+ = @metrics.send(metric)
+ %p
+ = render PopupLinkTextComponent.new(text: metric.humanize)
+
diff --git a/app/views/ontologies/sections/metadata/_ontology_relations_network.html.haml b/app/views/ontologies/sections/metadata/_ontology_relations_network.html.haml
new file mode 100644
index 000000000..3064d1a8d
--- /dev/null
+++ b/app/views/ontologies/sections/metadata/_ontology_relations_network.html.haml
@@ -0,0 +1,13 @@
+- unless @ontology_relations_data.nil? || @ontology_relations_data.empty?
+ = render SummarySectionComponent.new(title: 'Ontology relations network') do
+ %div.d-flex.flex-column.justify-content-center{data: {controller: "ontology-relations-network", "ontology-relations-network-data-value": @ontology_relations_data.to_json.html_safe }}
+ %button.btn.btn-link.m-2{'data-toggle': "collapse",'data-target': "#ontologyRelations"}
+ %span= t("landscape.filter_network")
+ %i.fas.fa-chevron-down
+ %div#ontologyRelations.collapse.flex-row.flex-wrap.px-2.my-1.fade{'data-action': "change->ontology-relations-network#build"}
+ - values = @relations_array.map{|relation| ["#{attr_label(relation.split(':').last)}(#{relation})", relation]}
+ = render SelectInputComponent.new(id:'relation-network', name: 'selectedRelations[]', values: values, selected:@relations_array , multiple: true)
+
+ %div{:style => "width: 100%;"}
+ %div#networkContainer{:style => "height: 465px; width: 100%;", "data-ontology-relations-network-target": "container" }
+ %div#ontologyNetwork
\ No newline at end of file
diff --git a/app/views/ontologies/sections/metadata/_ontology_submissions_section.html.haml b/app/views/ontologies/sections/metadata/_ontology_submissions_section.html.haml
new file mode 100644
index 000000000..1f90304f5
--- /dev/null
+++ b/app/views/ontologies/sections/metadata/_ontology_submissions_section.html.haml
@@ -0,0 +1,10 @@
+= render SummarySectionComponent.new(title: 'Submissions') do |s|
+ - if @ontology.admin?(session[:user])
+ - s.action_link do
+ = link_to(new_ontology_submission_path(@ontology.acronym), "aria-label": "Add submission", title: "Add submission") do
+ %i.fas.fa-plus-circle
+ - unless @submission_latest.nil? || (@submission_latest.respond_to?(:status) && @submission_latest.status == 404)
+ - s.action_link do
+ = link_to(edit_ontology_submission_path(@ontology.acronym, @submission_latest.submissionId), "aria-label": "Edit latest submission", title: "Edit latest submission") do
+ %i.fas.fa-user-edit
+ = render TurboFrameComponent.new(id: 'ontology_submissions', src: ontology_submissions_path(@ontology.acronym))
\ No newline at end of file
diff --git a/app/views/submissions/_form_content.html.haml b/app/views/submissions/_form_content.html.haml
index 695a941b0..7ff7806a9 100644
--- a/app/views/submissions/_form_content.html.haml
+++ b/app/views/submissions/_form_content.html.haml
@@ -83,7 +83,7 @@
- data.each do |d|
= metadata_section(d[0], d[1], parent_id: "description-card") do
- - for attr in @metadata.select { |m| m['display'] == d[2] }
+ - for attr in submission_metadata.select { |m| m['category'] == d[2] }
= form_group_attribute(attr["attribute"])
%div#ontology-dates-card.mt-4
@@ -91,7 +91,7 @@
= form_group_attribute("released", default: Date.today, required: true)
= form_group_attribute("modificationDate")
= metadata_section('more-dates', 'More dates', parent_id: "ontology-dates-card") do
- - for attr in @metadata.select { |m| m['display'] == 'dates' }
+ - for attr in submission_metadata.select { |m| m['category'] == 'dates' }
= form_group_attribute(attr["attribute"])
%div#licenses-card.mt-4
@@ -106,7 +106,7 @@
to choose your license
= metadata_section('more-licensing-info', 'More licensing information', parent_id: "licenses-card") do
- - for attr in @metadata.select { |m| m['display'] == 'license' }
+ - for attr in submission_metadata.select { |m| m['category'] == 'license' }
= form_group_attribute(attr["attribute"])
%div#community.mt-4
@@ -128,11 +128,11 @@
= form_group_attribute("hasCreator")
= metadata_section('more-community-info', 'More community information', parent_id: "community") do
- - for attr in @metadata.select { |m| m['display'] == 'community' }
+ - for attr in submission_metadata.select { |m| m['category'] == 'community' }
= form_group_attribute(attr["attribute"])
= metadata_section('more-people-info', 'More people information', parent_id: "community") do
- - for attr in @metadata.select { |m| m['display'] == 'people' }
+ - for attr in submission_metadata.select { |m| m['category'] == 'people' }
= form_group_attribute(attr["attribute"])
%div#ontology-relations-more.mt-4
@@ -142,9 +142,10 @@
= form_group_attribute("isAlignedTo")
= form_group_attribute("ontologyRelatedTo")
+
= metadata_section('more-relations', 'More relations', parent_id: "ontology-relations-more") do
- - for attr in @metadata
- - if attr["display"].eql?("relations")
+ - for attr in submission_metadata
+ - if attr["category"].eql?("relations")
= form_group_attribute(attr["attribute"])
%div#ontology-content-metrics.mt-4
@@ -152,10 +153,11 @@
= form_group_attribute("preferredNamespacePrefix")
= form_group_attribute("preferredNamespaceUri")
- = metadata_section('more-informations', 'More content informations', parent_id: "ontology-content-metrics") do
- - for attr in @metadata.select { |m| m['display'] == 'content' }
+ %div#ontology-more-informations.mt-4
+ = metadata_section('more-informations', 'More content informations', parent_id: "ontology-more-informations") do
+ - for attr in submission_metadata.select { |m| m['category'] == 'content' }
= form_group_attribute(attr["attribute"])
= metadata_section('more-metrics-informations', 'More metrics informations', parent_id: "ontology-content-metrics") do
- - for attr in @metadata.select { |m| m['display'] == 'metrics' }
+ - for attr in submission_metadata.select { |m| m['category'] == 'metrics' }
= form_group_attribute(attr["attribute"])
diff --git a/app/views/submissions/_submissions.html.haml b/app/views/submissions/_submissions.html.haml
index 6a666118f..8c74959a3 100644
--- a/app/views/submissions/_submissions.html.haml
+++ b/app/views/submissions/_submissions.html.haml
@@ -4,24 +4,29 @@
- more_colspan = 7
- more_colspan = 6 if @ont_restricted
- %div.click_versions_collapse
+ %div.click_versions_collapse.p-1
= render_alerts_container(AdminController)
- %table#ontology_versions.table.table-sm.table-striped
- %thead
- %tr
- - if @ontology.admin?(session[:user])
- %th.align-middle ID
- %th.align-middle Version
- %th
- = generate_attribute_text("released", "Released")
- %th
- = generate_attribute_text("modificationDate", "Modified")
- %th
- = generate_attribute_text("creationDate", "Uploaded")
- - unless @ont_restricted
- %th.align-middle Downloads
- - if @ontology.admin?(session[:user])
- %th.align-middle Actions
+ = render TableComponent.new(id: 'ontology_versions', stripped: false, borderless: true) do |t|
+ - t.header do |header|
+ - if @ontology.admin?(session[:user])
+ - header.th do
+ %div.align-middle
+ ID
+ - header.th do
+ %div.align-middle
+ Version
+ - header.th do
+ = generate_attribute_text("modificationDate", "Modified", tooltip: false)
+ - header.th do
+ = generate_attribute_text("creationDate", "Uploaded", tooltip: false)
+ - unless @ont_restricted
+ - header.th do
+ %div.align-middle
+ Downloads
+ - if @ontology.admin?(session[:user])
+ - header.th do
+ %div.align-middle
+ Actions
- begin
- submission_ready = @ontology.explore.latest_submission({:include_status => 'ready', display: 'submissionId'})
@@ -30,23 +35,29 @@
- submission_readyId = -1
- @submissions.each_with_index do |sub, index|
- hidden_row_class = index >= 5 ? "hidden_ont hidden_select" : ""
- %tr{class: "#{hidden_row_class}", id: "submission_#{sub.submissionId}"}
+ - t.row(id:"submission_#{sub.submissionId}" , class_css: hidden_row_class) do |r|
+
- if @ontology.admin?(session[:user])
- %td
- = sub.submissionId
- %td
- = raw status_link(sub, sub.submissionId==submission_readyId)
- %td
- = xmldatetime_to_date(sub.released) unless sub.released.nil?
- %td
- = xmldatetime_to_date(sub.modificationDate) unless sub.modificationDate.nil?
- %td
- = xmldatetime_to_date(sub.creationDate) unless sub.creationDate.nil?
+ - r.td { raw sub.submissionId }
+ - r.td { raw status_link(sub, sub.submissionId==submission_readyId)}
+ - r.td { xmldatetime_to_date(sub.modificationDate) unless sub.modificationDate.nil? }
+ - r.td { xmldatetime_to_date(sub.creationDate) unless sub.creationDate.nil? }
+
- unless @ont_restricted
- %td
- = raw download_link(sub, @ontology)
+ - r.td do
+ %div.dropdown
+ %button.btn.btn-outline-primary.rounded-pill.dropdown-toggle{type:"button", 'data-toggle':"dropdown", 'aria-expanded': "false", style:'white-space: nowrap'}
+ Download
+ %span.sr-only Toggle Dropdown
+ .dropdown-menu
+ - links = download_link(sub,@ontology)
+ - links.each do |value|
+ - link,label = value.values
+ %a.dropdown-item{ href: link }= label
+
+ -# = raw download_link(sub, @ontology)
- if @ontology.admin?(session[:user])
- %td
+ - r.td do
%div.d-flex
%a.btn.btn-sm.btn-link{:href => "/ontologies/#{@ontology.acronym}/submissions/#{sub.submissionId}/edit"}
%span Edit
@@ -55,8 +66,8 @@
= button_to "Delete", "/admin/ontologies/#{@ontology.acronym}/submissions/#{sub.submissionId}?turbo_stream=true", method: :delete, class:'btn btn-sm btn-link', form: {data: { turbo: true, turbo_confirm: alert_text, turbo_frame: '_top'}}
- if @submissions.length > 5
- %tr
- %td{colspan: more_colspan, class: "show_more_subs"}
+ - t.row(class_css: "show_more_subs") do |r|
+ - r.td(colspan: more_colspan) do
%a#version_toggle{:href => ""} more...
:javascript
diff --git a/config/routes.rb b/config/routes.rb
index 589464523..3188d56f7 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -46,6 +46,7 @@
get 'instances/:instance_id', to: 'instances#show', constraints: { instance_id: /[^\/?]+/ }
get 'schemes/show_scheme', to: 'schemes#show'
get 'collections/show'
+ get 'metrics_evolution'
end
resources :login
@@ -151,6 +152,7 @@
get 'ajax/label_xl', to: "label_xl#show"
get '/ajax/biomixer' => 'concepts#biomixer'
get '/ajax/fair_score/html' => 'fair_score#details_html'
+ get '/ajax/submission/show_additional_metadata/:id' => 'ontologies#show_additional_metadata'
get '/ajax/submission/show_licenses/:id' => 'ontologies#show_licenses'
get '/ajax/fair_score/json' => 'fair_score#details_json'
get '/ajax/:ontology/instances' => 'instances#index_by_ontology'
diff --git a/package.json b/package.json
index 94282d913..62dabf435 100644
--- a/package.json
+++ b/package.json
@@ -4,12 +4,17 @@
"dependencies": {
"@hotwired/stimulus": "^3.0.1",
"@hotwired/turbo-rails": "^7.1.1",
+ "debounce": "^1.2.1",
"esbuild": "^0.14.41",
"flatpickr": "^4.6.13",
"split.js": "^1.6.5",
"stimulus-flatpickr": "^3.0.0-0",
- "stimulus-rails-nested-form": "^4.0.0",
"stimulus-read-more": "^4.1.0",
+ "stimulus-rails-nested-form": "^4.0.0",
+ "stimulus-timeago": "^4.1.0",
+ "vis-data": "^7.1.6",
+ "vis-network": "^9.1.6",
+ "vis-util": "^5.0.3",
"tom-select": "^2.2.2"
},
"scripts": {
diff --git a/public/browse/font/webhostinghub-glyphs.eot b/public/browse/font/webhostinghub-glyphs.eot
old mode 100755
new mode 100644
diff --git a/public/browse/font/webhostinghub-glyphs.ttf b/public/browse/font/webhostinghub-glyphs.ttf
old mode 100755
new mode 100644
diff --git a/public/browse/font/whhg.css b/public/browse/font/whhg.css
old mode 100755
new mode 100644
index 9423e9914..ee5bfe84a
--- a/public/browse/font/whhg.css
+++ b/public/browse/font/whhg.css
@@ -1,2085 +1,2085 @@
-@font-face {
- font-family: 'WebHostingHub-Glyphs';
- src: url('webhostinghub-glyphs.eot');
- src: url('webhostinghub-glyphs.eot?#iefix') format('embedded-opentype'),
- url('webhostinghub-glyphs.ttf') format('truetype');
- font-weight: normal;
- font-style: normal;
- -moz-font-feature-settings: "calt=0,liga=0";
-}
-[class^="icon-"], [class*=" icon-"] {font-family:'WebHostingHub-Glyphs';background:none;width:auto;height:auto;font-style:normal}
-.icon-aaabattery:before{content:'\f413'}
-.icon-abacus:before{content:'\f261'}
-.icon-accountfilter:before{content:'\f05e'}
-.icon-acsource:before{content:'\f3ea'}
-.icon-addfriend:before{content:'\f3da'}
-.icon-address:before{content:'\f08f'}
-.icon-addshape:before{content:'\f1fd'}
-.icon-addtocart:before{content:'\f394'}
-.icon-addtolist:before{content:'\f2ac'}
-.icon-adjust:before{content:'\f484'}
-.icon-adobe:before{content:'\f1c9'}
-.icon-ads-bilboard:before{content:'\f082'}
-.icon-affiliate:before{content:'\f01e'}
-.icon-ajax:before{content:'\f06f'}
-.icon-alarm:before{content:'\f233'}
-.icon-alarmalt:before{content:'\f23d'}
-.icon-album-cover:before{content:'\f19f'}
-.icon-alertalt:before{content:'\f2b4'}
-.icon-alertpay:before{content:'\f269'}
-.icon-algorhythm:before{content:'\f0b8'}
-.icon-alienship:before{content:'\f41f'}
-.icon-alienware:before{content:'\f3be'}
-.icon-align-center:before{content:'\f1d9'}
-.icon-align-justify:before{content:'\f1da'}
-.icon-align-left:before{content:'\f1d7'}
-.icon-align-right:before{content:'\f1d8'}
-.icon-alignbottomedge:before{content:'\f1d3'}
-.icon-alignhorizontalcenter:before{content:'\f1d2'}
-.icon-alignleftedge:before{content:'\f1d6'}
-.icon-alignrightedge:before{content:'\f1d5'}
-.icon-aligntopedge:before{content:'\f1d4'}
-.icon-alignverticalcenter:before{content:'\f1d1'}
-.icon-amd:before{content:'\f020'}
-.icon-analogdown:before{content:'\f2cb'}
-.icon-analogleft:before{content:'\f2c8'}
-.icon-analogright:before{content:'\f2c9'}
-.icon-analogup:before{content:'\f2ca'}
-.icon-analytics-piechart:before{content:'\f000'}
-.icon-analyticsalt-piechartalt:before{content:'\f001'}
-.icon-anchor-port:before{content:'\f21d'}
-.icon-android:before{content:'\f12a'}
-.icon-angrybirds:before{content:'\f3c1'}
-.icon-antenna:before{content:'\f3ec'}
-.icon-apache-feather:before{content:'\f056'}
-.icon-aperture:before{content:'\f356'}
-.icon-appointment-agenda:before{content:'\f26c'}
-.icon-archive:before{content:'\f171'}
-.icon-arrow-down:before{content:'\f2fe'}
-.icon-arrow-left:before{content:'\f305'}
-.icon-arrow-right:before{content:'\f304'}
-.icon-arrow-up:before{content:'\f301'}
-.icon-asterisk:before{content:'\f317'}
-.icon-asteriskalt:before{content:'\002a'}
-.icon-at:before{content:'\40'}
-.icon-atari:before{content:'\f3b9'}
-.icon-authentication-keyalt:before{content:'\f051'}
-.icon-automobile-car:before{content:'\f239'}
-.icon-autorespond:before{content:'\f08e'}
-.icon-avatar:before{content:'\f15a'}
-.icon-avataralt:before{content:'\f161'}
-.icon-avengers:before{content:'\f342'}
-.icon-awstats:before{content:'\f04c'}
-.icon-axe:before{content:'\f2ef'}
-.icon-backup-vault:before{content:'\f004'}
-.icon-backupalt-vaultalt:before{content:'\f005'}
-.icon-backupwizard:before{content:'\f05f'}
-.icon-backward:before{content:'\f183'}
-.icon-bag:before{content:'\f234'}
-.icon-baloon:before{content:'\f405'}
-.icon-ban-circle:before{content:'\f313'}
-.icon-banana:before{content:'\f3f4'}
-.icon-bandwidth:before{content:'\f006'}
-.icon-bank:before{content:'\f262'}
-.icon-barchart:before{content:'\f02f'}
-.icon-barchartalt:before{content:'\f07d'}
-.icon-barcode:before{content:'\f276'}
-.icon-basecamp:before{content:'\f160'}
-.icon-basketball:before{content:'\f2e9'}
-.icon-bat:before{content:'\f3d3'}
-.icon-batman:before{content:'\f348'}
-.icon-batteryaltcharging:before{content:'\f104'}
-.icon-batteryaltfull:before{content:'\f101'}
-.icon-batteryaltsixty:before{content:'\f102'}
-.icon-batteryaltthird:before{content:'\f103'}
-.icon-batterycharged:before{content:'\f0f4'}
-.icon-batterycharging:before{content:'\f0f3'}
-.icon-batteryeighty:before{content:'\f0f9'}
-.icon-batteryempty:before{content:'\f0f5'}
-.icon-batteryforty:before{content:'\f0f7'}
-.icon-batteryfull:before{content:'\f0fa'}
-.icon-batterysixty:before{content:'\f0f8'}
-.icon-batterytwenty:before{content:'\f0f6'}
-.icon-bed:before{content:'\f2b9'}
-.icon-beer:before{content:'\f244'}
-.icon-bell:before{content:'\2407'}
-.icon-bigger:before{content:'\f30a'}
-.icon-bill:before{content:'\f278'}
-.icon-binary:before{content:'\f087'}
-.icon-binoculars-searchalt:before{content:'\f2a0'}
-.icon-birdhouse:before{content:'\f390'}
-.icon-birthday:before{content:'\f36b'}
-.icon-bishop:before{content:'\f2f9'}
-.icon-blackberry:before{content:'\f421'}
-.icon-blankstare:before{content:'\f13e'}
-.icon-blogger-blog:before{content:'\f167'}
-.icon-bluetooth:before{content:'\f12b'}
-.icon-bluetoothconnected:before{content:'\f386'}
-.icon-boardgame:before{content:'\f2d9'}
-.icon-boat:before{content:'\f21a'}
-.icon-bold:before{content:'\f1f4'}
-.icon-bomb:before{content:'\f2dc'}
-.icon-bone:before{content:'\f35f'}
-.icon-book:before{content:'\f1ba'}
-.icon-bookmark:before{content:'\f143'}
-.icon-boombox:before{content:'\f195'}
-.icon-bottle:before{content:'\f361'}
-.icon-bow:before{content:'\f2ee'}
-.icon-bowling:before{content:'\f2f3'}
-.icon-bowlingpins:before{content:'\f3d2'}
-.icon-bowtie:before{content:'\f37f'}
-.icon-boxtrapper-mousetrap:before{content:'\f046'}
-.icon-braces:before{content:'\f0b4'}
-.icon-braille0:before{content:'\f44b'}
-.icon-braille1:before{content:'\f44c'}
-.icon-braille2:before{content:'\f44d'}
-.icon-braille3:before{content:'\f44e'}
-.icon-braille4:before{content:'\f44f'}
-.icon-braille5:before{content:'\f450'}
-.icon-braille6:before{content:'\f451'}
-.icon-braille7:before{content:'\f452'}
-.icon-braille8:before{content:'\f453'}
-.icon-braille9:before{content:'\f454'}
-.icon-braillea:before{content:'\f431'}
-.icon-brailleb:before{content:'\f432'}
-.icon-braillec:before{content:'\f433'}
-.icon-brailled:before{content:'\f434'}
-.icon-braillee:before{content:'\f435'}
-.icon-braillef:before{content:'\f436'}
-.icon-brailleg:before{content:'\f437'}
-.icon-brailleh:before{content:'\f438'}
-.icon-braillei:before{content:'\f439'}
-.icon-braillej:before{content:'\f43a'}
-.icon-braillek:before{content:'\f43b'}
-.icon-braillel:before{content:'\f43c'}
-.icon-braillem:before{content:'\f43d'}
-.icon-braillen:before{content:'\f43e'}
-.icon-brailleo:before{content:'\f43f'}
-.icon-braillep:before{content:'\f440'}
-.icon-brailleq:before{content:'\f441'}
-.icon-brailler:before{content:'\f442'}
-.icon-brailles:before{content:'\f443'}
-.icon-braillespace:before{content:'\f455'}
-.icon-braillet:before{content:'\f444'}
-.icon-brailleu:before{content:'\f445'}
-.icon-braillev:before{content:'\f446'}
-.icon-braillew:before{content:'\f447'}
-.icon-braillex:before{content:'\f448'}
-.icon-brailley:before{content:'\f449'}
-.icon-braillez:before{content:'\f44a'}
-.icon-brain:before{content:'\f3e3'}
-.icon-bread:before{content:'\f42f'}
-.icon-breakable:before{content:'\f41c'}
-.icon-briefcase:before{content:'\f25e'}
-.icon-briefcasethree:before{content:'\f25f'}
-.icon-briefcasetwo:before{content:'\f0a2'}
-.icon-brightness:before{content:'\f10a'}
-.icon-brightnessfull:before{content:'\f10b'}
-.icon-brightnesshalf:before{content:'\f10c'}
-.icon-broom:before{content:'\f40a'}
-.icon-browser:before{content:'\f159'}
-.icon-brush:before{content:'\f1b8'}
-.icon-bucket:before{content:'\f1b5'}
-.icon-bug:before{content:'\f0a7'}
-.icon-bullhorn:before{content:'\f287'}
-.icon-bus:before{content:'\f241'}
-.icon-businesscardalt:before{content:'\f137'}
-.icon-buttona:before{content:'\f2bf'}
-.icon-buttonb:before{content:'\f2c0'}
-.icon-buttonx:before{content:'\f2c1'}
-.icon-buttony:before{content:'\f2c2'}
-.icon-cactus-desert:before{content:'\f22c'}
-.icon-calculator:before{content:'\f258'}
-.icon-calculatoralt:before{content:'\f265'}
-.icon-calendar:before{content:'\f20f'}
-.icon-calendaralt-cronjobs:before{content:'\f0a1'}
-.icon-camera:before{content:'\f19b'}
-.icon-candle:before{content:'\f29a'}
-.icon-candy:before{content:'\f42d'}
-.icon-candycane:before{content:'\f37d'}
-.icon-cannon:before{content:'\f401'}
-.icon-canvas:before{content:'\f1c8'}
-.icon-canvasrulers:before{content:'\f205'}
-.icon-capacitator:before{content:'\f3e8'}
-.icon-capslock:before{content:'\21ea'}
-.icon-captainamerica:before{content:'\f341'}
-.icon-carrot:before{content:'\f3f2'}
-.icon-cashregister:before{content:'\f26e'}
-.icon-cassette:before{content:'\f377'}
-.icon-cd-dvd:before{content:'\f0cd'}
-.icon-certificate:before{content:'\f277'}
-.icon-certificatealt:before{content:'\f058'}
-.icon-certificatethree:before{content:'\f059'}
-.icon-cgi:before{content:'\f086'}
-.icon-cgicenter:before{content:'\f079'}
-.icon-chair:before{content:'\2441'}
-.icon-chat:before{content:'\f162'}
-.icon-check:before{content:'\f310'}
-.icon-checkboxalt:before{content:'\f311'}
-.icon-checkin:before{content:'\f223'}
-.icon-checkinalt:before{content:'\f227'}
-.icon-chef:before{content:'\f3ce'}
-.icon-cherry:before{content:'\f35d'}
-.icon-chevron-down:before{content:'\f48b'}
-.icon-chevron-left:before{content:'\f489'}
-.icon-chevron-right:before{content:'\f488'}
-.icon-chevron-up:before{content:'\f48a'}
-.icon-chevrons:before{content:'\f0b5'}
-.icon-chicken:before{content:'\f359'}
-.icon-chocolate:before{content:'\f367'}
-.icon-christiancross:before{content:'\f40f'}
-.icon-christmastree:before{content:'\f37b'}
-.icon-chrome:before{content:'\f14e'}
-.icon-cigarette:before{content:'\f229'}
-.icon-circle-arrow-down:before{content:'\f475'}
-.icon-circle-arrow-left:before{content:'\f472'}
-.icon-circle-arrow-right:before{content:'\f473'}
-.icon-circle-arrow-up:before{content:'\f474'}
-.icon-circleadd:before{content:'\f0d1'}
-.icon-circledelete:before{content:'\f0d2'}
-.icon-circledown:before{content:'\f3c7'}
-.icon-circleleft:before{content:'\f3c6'}
-.icon-circleright:before{content:'\f3c9'}
-.icon-circleselect:before{content:'\f0d3'}
-.icon-circleselection:before{content:'\f1b1'}
-.icon-circleup:before{content:'\f3c8'}
-.icon-clearformatting:before{content:'\f1e7'}
-.icon-clipboard-paste:before{content:'\f0cb'}
-.icon-clockalt-timealt:before{content:'\f22b'}
-.icon-closetab:before{content:'\f170'}
-.icon-closewindow:before{content:'\f16e'}
-.icon-cloud:before{content:'\f0b9'}
-.icon-clouddownload:before{content:'\f0bb'}
-.icon-cloudhosting:before{content:'\f007'}
-.icon-cloudsync:before{content:'\f0bc'}
-.icon-cloudupload:before{content:'\f0ba'}
-.icon-clubs:before{content:'\f2f6'}
-.icon-cmd:before{content:'\f33a'}
-.icon-cms:before{content:'\f036'}
-.icon-cmsmadesimple:before{content:'\f0b0'}
-.icon-codeigniter:before{content:'\f077'}
-.icon-coffee:before{content:'\f235'}
-.icon-coffeebean:before{content:'\f366'}
-.icon-cog:before{content:'\f00f'}
-.icon-colocation:before{content:'\f024'}
-.icon-colocationalt:before{content:'\f023'}
-.icon-colors:before{content:'\f1e6'}
-.icon-comment:before{content:'\f12c'}
-.icon-commentout:before{content:'\f080'}
-.icon-commentround:before{content:'\f155'}
-.icon-commentroundempty:before{content:'\f156'}
-.icon-commentroundtyping:before{content:'\f157'}
-.icon-commentroundtypingempty:before{content:'\f158'}
-.icon-commenttyping:before{content:'\f12d'}
-.icon-compass:before{content:'\263c'}
-.icon-concretefive:before{content:'\f0af'}
-.icon-contact-businesscard:before{content:'\f040'}
-.icon-controllernes:before{content:'\f2d2'}
-.icon-controllerps:before{content:'\f2d1'}
-.icon-controllersnes:before{content:'\f2d3'}
-.icon-controlpanel:before{content:'\f008'}
-.icon-controlpanelalt:before{content:'\f009'}
-.icon-cooling:before{content:'\f00a'}
-.icon-coppermine:before{content:'\f0a4'}
-.icon-copy:before{content:'\f0c9'}
-.icon-copyright:before{content:'\00a9'}
-.icon-coupon:before{content:'\f254'}
-.icon-cpanel:before{content:'\f072'}
-.icon-cplusplus:before{content:'\f0b1'}
-.icon-cpu-processor:before{content:'\f002'}
-.icon-cpualt-processoralt:before{content:'\f003'}
-.icon-crayon:before{content:'\f383'}
-.icon-createfile:before{content:'\f0c6'}
-.icon-createfolder:before{content:'\f0da'}
-.icon-creativecommons:before{content:'\f1fc'}
-.icon-creditcard:before{content:'\f279'}
-.icon-cricket:before{content:'\f418'}
-.icon-croisant:before{content:'\f29f'}
-.icon-crop:before{content:'\f1af'}
-.icon-crown:before{content:'\f28f'}
-.icon-csharp:before{content:'\f0b2'}
-.icon-cssthree:before{content:'\f06a'}
-.icon-cup-coffeealt:before{content:'\f24b'}
-.icon-cupcake:before{content:'\f35b'}
-.icon-curling:before{content:'\f3d7'}
-.icon-cursor:before{content:'\f0dc'}
-.icon-cut-scissors:before{content:'\f0ca'}
-.icon-dagger:before{content:'\2020'}
-.icon-danger:before{content:'\f415'}
-.icon-dart:before{content:'\f3d4'}
-.icon-darthvader:before{content:'\f34a'}
-.icon-database:before{content:'\f00b'}
-.icon-databaseadd:before{content:'\f00c'}
-.icon-databasedelete:before{content:'\f00d'}
-.icon-davidstar:before{content:'\f40e'}
-.icon-dcsource:before{content:'\f3e9'}
-.icon-dedicatedserver:before{content:'\f00e'}
-.icon-deletefile:before{content:'\f0c7'}
-.icon-deletefolder:before{content:'\f0db'}
-.icon-delicious:before{content:'\f152'}
-.icon-designcontest:before{content:'\f351'}
-.icon-desklamp:before{content:'\f412'}
-.icon-dialpad:before{content:'\f399'}
-.icon-diamond:before{content:'\2666'}
-.icon-diamonds:before{content:'\f2f7'}
-.icon-die-dice:before{content:'\f2d8'}
-.icon-diefive:before{content:'\f3fb'}
-.icon-diefour:before{content:'\f3fa'}
-.icon-dieone:before{content:'\f3f7'}
-.icon-diesix:before{content:'\f3fc'}
-.icon-diethree:before{content:'\f3f9'}
-.icon-dietwo:before{content:'\f3f8'}
-.icon-diode:before{content:'\f3e7'}
-.icon-director:before{content:'\f2ae'}
-.icon-diskspace:before{content:'\f096'}
-.icon-distributehorizontalcenters:before{content:'\f1dc'}
-.icon-distributeverticalcenters:before{content:'\f1db'}
-.icon-divide:before{content:'\00f7'}
-.icon-dna:before{content:'\f409'}
-.icon-dnszone:before{content:'\f07f'}
-.icon-document:before{content:'\f0c2'}
-.icon-doghouse:before{content:'\f38f'}
-.icon-dollar:before{content:'\24'}
-.icon-dollaralt:before{content:'\f259'}
-.icon-dolphinsoftware:before{content:'\f064'}
-.icon-domain:before{content:'\f01d'}
-.icon-domainaddon:before{content:'\f053'}
-.icon-domino:before{content:'\f3d5'}
-.icon-donut:before{content:'\f3ca'}
-.icon-downleft:before{content:'\f2ff'}
-.icon-download:before{content:'\f47b'}
-.icon-download-alt:before{content:'\f11a'}
-.icon-downright:before{content:'\f300'}
-.icon-draft:before{content:'\f172'}
-.icon-dreamweaver:before{content:'\f1d0'}
-.icon-dribbble:before{content:'\f14c'}
-.icon-dropmenu:before{content:'\f0a5'}
-.icon-drupal:before{content:'\f075'}
-.icon-drwho:before{content:'\f3c0'}
-.icon-edit:before{content:'\f47c'}
-.icon-editalt:before{content:'\f0f2'}
-.icon-egg:before{content:'\f407'}
-.icon-eightball:before{content:'\f36e'}
-.icon-eject:before{content:'\f199'}
-.icon-elipse:before{content:'\f1bc'}
-.icon-emailalt:before{content:'\f136'}
-.icon-emailexport:before{content:'\f176'}
-.icon-emailforward:before{content:'\f175'}
-.icon-emailforwarders:before{content:'\f049'}
-.icon-emailimport:before{content:'\f177'}
-.icon-emailrefresh:before{content:'\f174'}
-.icon-emailtrace:before{content:'\f091'}
-.icon-emergency:before{content:'\f246'}
-.icon-emptycart:before{content:'\f395'}
-.icon-enter:before{content:'\f323'}
-.icon-envelope:before{content:'\f028'}
-.icon-equalizer:before{content:'\f18e'}
-.icon-equalizeralt:before{content:'\f18f'}
-.icon-equals:before{content:'\f30c'}
-.icon-eraser:before{content:'\f1f1'}
-.icon-erroralt:before{content:'\f05a'}
-.icon-euro:before{content:'\20ac'}
-.icon-euroalt:before{content:'\f25a'}
-.icon-evernote:before{content:'\f17c'}
-.icon-exchange-currency:before{content:'\f26b'}
-.icon-exclamation-sign:before{content:'\f04a'}
-.icon-excludeshape:before{content:'\f200'}
-.icon-exit:before{content:'\f324'}
-.icon-explorerwindow:before{content:'\f0d9'}
-.icon-exportfile:before{content:'\f32f'}
-.icon-exposure:before{content:'\f1de'}
-.icon-extinguisher:before{content:'\f2b7'}
-.icon-eye-close:before{content:'\f481'}
-.icon-eye-open:before{content:'\f2b5'}
-.icon-eye-view:before{content:'\f280'}
-.icon-eyedropper:before{content:'\f1ad'}
-.icon-facebook:before{content:'\f140'}
-.icon-facebookalt:before{content:'\f14b'}
-.icon-facetime-video:before{content:'\f19c'}
-.icon-factory:before{content:'\f27a'}
-.icon-fantastico:before{content:'\f0ae'}
-.icon-faq:before{content:'\f099'}
-.icon-fast-backward:before{content:'\f47e'}
-.icon-fast-forward:before{content:'\f47f'}
-.icon-fastdown:before{content:'\f31d'}
-.icon-fastleft:before{content:'\f31a'}
-.icon-fastright:before{content:'\f31b'}
-.icon-fastup:before{content:'\f31c'}
-.icon-favoritefile:before{content:'\f381'}
-.icon-favoritefolder:before{content:'\f382'}
-.icon-featheralt-write:before{content:'\f1c5'}
-.icon-fedora:before{content:'\f3f1'}
-.icon-fence:before{content:'\f2af'}
-.icon-file:before{content:'\f0d6'}
-.icon-film:before{content:'\f19d'}
-.icon-filmstrip:before{content:'\f3ed'}
-.icon-filter:before{content:'\f05c'}
-.icon-finder:before{content:'\f398'}
-.icon-fire:before{content:'\f27f'}
-.icon-firefox:before{content:'\f420'}
-.icon-firewall:before{content:'\f021'}
-.icon-firewire:before{content:'\f0fc'}
-.icon-firstaid:before{content:'\f2ba'}
-.icon-fish:before{content:'\f35a'}
-.icon-fishbone:before{content:'\f42b'}
-.icon-flag:before{content:'\f487'}
-.icon-flagalt:before{content:'\f232'}
-.icon-flagtriangle:before{content:'\f20b'}
-.icon-flash:before{content:'\f1cf'}
-.icon-flashlight:before{content:'\f299'}
-.icon-flashplayer:before{content:'\f070'}
-.icon-flaskfull:before{content:'\f27e'}
-.icon-flickr:before{content:'\f146'}
-.icon-flower:before{content:'\f2a5'}
-.icon-flowernew:before{content:'\f3a8'}
-.icon-folder-close:before{content:'\f094'}
-.icon-folder-open:before{content:'\f483'}
-.icon-foldertree:before{content:'\f0f0'}
-.icon-font:before{content:'\f1ae'}
-.icon-foodtray:before{content:'\f3d0'}
-.icon-football-soccer:before{content:'\f2eb'}
-.icon-forbiddenalt:before{content:'\f314'}
-.icon-forest-tree:before{content:'\f217'}
-.icon-forestalt-treealt:before{content:'\f21c'}
-.icon-fork:before{content:'\22d4'}
-.icon-forklift:before{content:'\f29b'}
-.icon-form:before{content:'\f08c'}
-.icon-forrst:before{content:'\f14d'}
-.icon-fort:before{content:'\f400'}
-.icon-forward:before{content:'\f182'}
-.icon-fourohfour:before{content:'\f09d'}
-.icon-foursquare:before{content:'\f42a'}
-.icon-freeway:before{content:'\f24a'}
-.icon-fridge:before{content:'\f40d'}
-.icon-fries:before{content:'\f36a'}
-.icon-ftp:before{content:'\f029'}
-.icon-ftpaccounts:before{content:'\f07b'}
-.icon-ftpsession:before{content:'\f07c'}
-.icon-fullscreen:before{content:'\f485'}
-.icon-gameboy:before{content:'\f403'}
-.icon-gamecursor:before{content:'\f2d0'}
-.icon-gasstation:before{content:'\f216'}
-.icon-gearfour:before{content:'\f3a7'}
-.icon-ghost:before{content:'\f2da'}
-.icon-gift:before{content:'\f260'}
-.icon-github:before{content:'\f081'}
-.icon-glass:before{content:'\f236'}
-.icon-glasses:before{content:'\f295'}
-.icon-glassesalt:before{content:'\f39d'}
-.icon-globe:before{content:'\f01b'}
-.icon-globealt:before{content:'\f36c'}
-.icon-glue:before{content:'\f36d'}
-.icon-gmail:before{content:'\f150'}
-.icon-golf:before{content:'\f2f1'}
-.icon-googledrive:before{content:'\f163'}
-.icon-googleplus:before{content:'\f165'}
-.icon-googlewallet:before{content:'\f270'}
-.icon-gpsoff-gps:before{content:'\f21e'}
-.icon-gpson:before{content:'\f21f'}
-.icon-gpu-graphicscard:before{content:'\f108'}
-.icon-gradient:before{content:'\2207'}
-.icon-grails:before{content:'\f085'}
-.icon-greenlantern:before{content:'\f340'}
-.icon-greenlightbulb:before{content:'\f406'}
-.icon-grooveshark:before{content:'\f3a2'}
-.icon-groups-friends:before{content:'\f134'}
-.icon-guitar:before{content:'\f19a'}
-.icon-halflife:before{content:'\f3ba'}
-.icon-halo:before{content:'\f3bb'}
-.icon-hamburger:before{content:'\f2b3'}
-.icon-hammer:before{content:'\f291'}
-.icon-hand-down:before{content:'\f387'}
-.icon-hand-left:before{content:'\f389'}
-.icon-hand-right:before{content:'\f388'}
-.icon-hand-up:before{content:'\f0dd'}
-.icon-handcuffs:before{content:'\f393'}
-.icon-handdrag:before{content:'\f0de'}
-.icon-handtwofingers:before{content:'\f0df'}
-.icon-hanger:before{content:'\f2ab'}
-.icon-happy:before{content:'\f13c'}
-.icon-harrypotter:before{content:'\f38b'}
-.icon-hdd:before{content:'\f02a'}
-.icon-hdtv:before{content:'\f1a0'}
-.icon-headphones:before{content:'\f180'}
-.icon-headphonesalt:before{content:'\f1a3'}
-.icon-heart:before{content:'\f131'}
-.icon-heartempty-love:before{content:'\f132'}
-.icon-hearts:before{content:'\f2f4'}
-.icon-helicopter:before{content:'\f3e4'}
-.icon-hexagon-polygon:before{content:'\f1be'}
-.icon-hockey:before{content:'\f3d9'}
-.icon-home:before{content:'\21b8'}
-.icon-homealt:before{content:'\f02b'}
-.icon-hospital:before{content:'\f247'}
-.icon-hotdog:before{content:'\f3cc'}
-.icon-hotlinkprotection:before{content:'\f050'}
-.icon-hourglassalt:before{content:'\f122'}
-.icon-html:before{content:'\f068'}
-.icon-htmlfive:before{content:'\f069'}
-.icon-hydrant:before{content:'\f3ff'}
-.icon-icecream:before{content:'\f2a4'}
-.icon-icecreamalt:before{content:'\f289'}
-.icon-illustrator:before{content:'\f1ce'}
-.icon-imac:before{content:'\f0fb'}
-.icon-images-gallery:before{content:'\f09f'}
-.icon-importcontacts:before{content:'\f092'}
-.icon-importfile:before{content:'\f32e'}
-.icon-inbox:before{content:'\f17a'}
-.icon-inboxalt:before{content:'\f178'}
-.icon-incomingcall:before{content:'\f15d'}
-.icon-indent-left:before{content:'\f1f2'}
-.icon-indent-right:before{content:'\f1f3'}
-.icon-indexmanager:before{content:'\f09e'}
-.icon-infinity:before{content:'\221e'}
-.icon-info-sign:before{content:'\f315'}
-.icon-infographic:before{content:'\f336'}
-.icon-ink:before{content:'\f3f6'}
-.icon-inkpen:before{content:'\f1ac'}
-.icon-insertbarchart:before{content:'\f1e5'}
-.icon-insertpicture:before{content:'\f1e0'}
-.icon-insertpicturecenter:before{content:'\f1e3'}
-.icon-insertpictureleft:before{content:'\f1e1'}
-.icon-insertpictureright:before{content:'\f1e2'}
-.icon-insertpiechart:before{content:'\f1e4'}
-.icon-instagram:before{content:'\f14a'}
-.icon-install:before{content:'\f128'}
-.icon-intel:before{content:'\f01f'}
-.icon-intersection:before{content:'\2229'}
-.icon-intersectshape:before{content:'\f1ff'}
-.icon-invert:before{content:'\f1df'}
-.icon-invoice:before{content:'\f3e5'}
-.icon-ipcontrol:before{content:'\f08b'}
-.icon-iphone:before{content:'\f0e6'}
-.icon-ipod:before{content:'\f190'}
-.icon-ironman:before{content:'\f349'}
-.icon-islam:before{content:'\f410'}
-.icon-island:before{content:'\f392'}
-.icon-italic:before{content:'\f1f5'}
-.icon-jar:before{content:'\f2b6'}
-.icon-jason:before{content:'\f38c'}
-.icon-java:before{content:'\f083'}
-.icon-joomla:before{content:'\f073'}
-.icon-joystickarcade:before{content:'\f2d4'}
-.icon-joystickatari:before{content:'\f2d5'}
-.icon-jquery:before{content:'\f06b'}
-.icon-jqueryui:before{content:'\f06c'}
-.icon-kerning:before{content:'\f1e9'}
-.icon-key:before{content:'\f093'}
-.icon-keyboard:before{content:'\f119'}
-.icon-keyboardalt:before{content:'\f105'}
-.icon-keyboarddelete:before{content:'\f3a6'}
-.icon-kidney:before{content:'\f3e0'}
-.icon-king:before{content:'\f2fc'}
-.icon-knife:before{content:'\f214'}
-.icon-knight:before{content:'\f2fb'}
-.icon-knob:before{content:'\f376'}
-.icon-lab-flask:before{content:'\f27d'}
-.icon-lamp:before{content:'\f2b1'}
-.icon-lan:before{content:'\f0ee'}
-.icon-language:before{content:'\f042'}
-.icon-laptop:before{content:'\f0d8'}
-.icon-lasso:before{content:'\f396'}
-.icon-lastfm:before{content:'\f3a3'}
-.icon-laugh:before{content:'\f13f'}
-.icon-law:before{content:'\f263'}
-.icon-layers:before{content:'\f1ca'}
-.icon-layersalt:before{content:'\f1cb'}
-.icon-leaf:before{content:'\f039'}
-.icon-leechprotect:before{content:'\f07e'}
-.icon-legacyfilemanager:before{content:'\f095'}
-.icon-lego:before{content:'\f370'}
-.icon-lifeempty:before{content:'\f2e1'}
-.icon-lifefull:before{content:'\f2e3'}
-.icon-lifehacker:before{content:'\f380'}
-.icon-lifehalf:before{content:'\f2e2'}
-.icon-lifepreserver:before{content:'\f015'}
-.icon-lightbulb-idea:before{content:'\f338'}
-.icon-lighthouse:before{content:'\f3e6'}
-.icon-lightning:before{content:'\f231'}
-.icon-lightningalt:before{content:'\f2a8'}
-.icon-line:before{content:'\f1bf'}
-.icon-lineheight:before{content:'\f1c0'}
-.icon-link:before{content:'\f022'}
-.icon-linkalt:before{content:'\f333'}
-.icon-linkedin:before{content:'\f166'}
-.icon-linux:before{content:'\f01a'}
-.icon-list:before{content:'\f111'}
-.icon-list-alt:before{content:'\f480'}
-.icon-liver:before{content:'\f3e2'}
-.icon-loading-hourglass:before{content:'\f123'}
-.icon-loadingalt:before{content:'\f339'}
-.icon-lock:before{content:'\f0be'}
-.icon-lockalt-keyhole:before{content:'\f0eb'}
-.icon-lollypop:before{content:'\f3ee'}
-.icon-lungs:before{content:'\f3df'}
-.icon-macpro:before{content:'\f3a5'}
-.icon-macro-plant:before{content:'\f1c6'}
-.icon-magazine:before{content:'\f1ec'}
-.icon-magento:before{content:'\f06e'}
-.icon-magnet:before{content:'\f281'}
-.icon-mailbox:before{content:'\f044'}
-.icon-mailinglists:before{content:'\f090'}
-.icon-man-male:before{content:'\f2a1'}
-.icon-managedhosting:before{content:'\f038'}
-.icon-map:before{content:'\f209'}
-.icon-map-marker:before{content:'\f220'}
-.icon-marker:before{content:'\f204'}
-.icon-marvin:before{content:'\f3dd'}
-.icon-mastercard:before{content:'\f266'}
-.icon-maximize:before{content:'\f30f'}
-.icon-medal:before{content:'\f2e5'}
-.icon-medalbronze:before{content:'\f2e8'}
-.icon-medalgold:before{content:'\f2e6'}
-.icon-medalsilver:before{content:'\f2e7'}
-.icon-mediarepeat:before{content:'\f187'}
-.icon-men:before{content:'\f24c'}
-.icon-menu:before{content:'\f127'}
-.icon-merge:before{content:'\f334'}
-.icon-mergecells:before{content:'\f327'}
-.icon-mergeshapes:before{content:'\f201'}
-.icon-metro-subway:before{content:'\f24f'}
-.icon-metronome:before{content:'\f374'}
-.icon-mickeymouse:before{content:'\f37a'}
-.icon-microphone:before{content:'\f191'}
-.icon-microscope:before{content:'\f283'}
-.icon-microsd:before{content:'\f107'}
-.icon-microwave:before{content:'\f42e'}
-.icon-mimetype:before{content:'\f057'}
-.icon-minimize:before{content:'\f30e'}
-.icon-minus:before{content:'\2212'}
-.icon-minus-sign:before{content:'\f477'}
-.icon-missedcall:before{content:'\f15c'}
-.icon-mobile:before{content:'\f0e8'}
-.icon-moleskine:before{content:'\f1f0'}
-.icon-money-cash:before{content:'\f27b'}
-.icon-moneybag:before{content:'\f271'}
-.icon-monitor:before{content:'\f0d5'}
-.icon-monstersinc:before{content:'\f3bd'}
-.icon-moon-night:before{content:'\f207'}
-.icon-mouse:before{content:'\f0d4'}
-.icon-mousealt:before{content:'\f126'}
-.icon-move:before{content:'\f322'}
-.icon-movieclapper:before{content:'\f193'}
-.icon-moviereel:before{content:'\f17f'}
-.icon-muffin:before{content:'\f363'}
-.icon-mug:before{content:'\f24e'}
-.icon-mushroom:before{content:'\f35e'}
-.icon-music:before{content:'\f181'}
-.icon-musicalt:before{content:'\f18d'}
-.icon-mutealt:before{content:'\f0e5'}
-.icon-mxentry:before{content:'\f07a'}
-.icon-mybb:before{content:'\f065'}
-.icon-myspace:before{content:'\f153'}
-.icon-mysql-dolphin:before{content:'\f076'}
-.icon-nail:before{content:'\f428'}
-.icon-navigation:before{content:'\f23a'}
-.icon-network:before{content:'\f0a6'}
-.icon-networksignal:before{content:'\f3a9'}
-.icon-news:before{content:'\f256'}
-.icon-newtab:before{content:'\f16f'}
-.icon-newwindow:before{content:'\f16d'}
-.icon-next:before{content:'\f18a'}
-.icon-nexus:before{content:'\f0e7'}
-.icon-nintendods:before{content:'\f404'}
-.icon-nodejs:before{content:'\f084'}
-.icon-notes:before{content:'\f0d7'}
-.icon-notificationbottom:before{content:'\f144'}
-.icon-notificationtop:before{content:'\f145'}
-.icon-nut:before{content:'\f427'}
-.icon-off:before{content:'\f11d'}
-.icon-office-building:before{content:'\f245'}
-.icon-officechair:before{content:'\f26d'}
-.icon-ok:before{content:'\2713'}
-.icon-ok-circle:before{content:'\f471'}
-.icon-ok-sign:before{content:'\f479'}
-.icon-oneup:before{content:'\f3b7'}
-.icon-oneupalt:before{content:'\f3b6'}
-.icon-opencart:before{content:'\f060'}
-.icon-opennewwindow:before{content:'\f332'}
-.icon-orange:before{content:'\f29e'}
-.icon-outbox:before{content:'\f179'}
-.icon-outgoingcall:before{content:'\f15e'}
-.icon-oxwall:before{content:'\f06d'}
-.icon-pacman:before{content:'\f2db'}
-.icon-pageback:before{content:'\f31e'}
-.icon-pagebreak:before{content:'\f1cc'}
-.icon-pageforward:before{content:'\f31f'}
-.icon-pagesetup:before{content:'\f331'}
-.icon-paintbrush:before{content:'\f1e8'}
-.icon-paintroll:before{content:'\f1fa'}
-.icon-palette-painting:before{content:'\f1b9'}
-.icon-paperclip:before{content:'\f284'}
-.icon-paperclipalt:before{content:'\f285'}
-.icon-paperclipvertical:before{content:'\f286'}
-.icon-paperplane:before{content:'\f296'}
-.icon-parentheses:before{content:'\f3c4'}
-.icon-parkeddomain:before{content:'\f055'}
-.icon-password:before{content:'\f03e'}
-.icon-passwordalt:before{content:'\f03f'}
-.icon-pasta:before{content:'\f408'}
-.icon-patch:before{content:'\f2a3'}
-.icon-path:before{content:'\f169'}
-.icon-pause:before{content:'\f186'}
-.icon-paw-pet:before{content:'\f29d'}
-.icon-pawn:before{content:'\f2f8'}
-.icon-paypal:before{content:'\f267'}
-.icon-peace:before{content:'\f2a7'}
-.icon-pen:before{content:'\f1ee'}
-.icon-pencil:before{content:'\f1b7'}
-.icon-pepperoni:before{content:'\f364'}
-.icon-percent:before{content:'\25'}
-.icon-perl-camel:before{content:'\f0b6'}
-.icon-perlalt:before{content:'\f0b7'}
-.icon-phone-call:before{content:'\f14f'}
-.icon-phonealt:before{content:'\f15b'}
-.icon-phonebook:before{content:'\f149'}
-.icon-phonebookalt:before{content:'\f135'}
-.icon-phonemic:before{content:'\f391'}
-.icon-phoneold:before{content:'\f148'}
-.icon-photoshop:before{content:'\f1cd'}
-.icon-php:before{content:'\f09c'}
-.icon-phpbb:before{content:'\f063'}
-.icon-phppear:before{content:'\f09b'}
-.icon-piano:before{content:'\f19e'}
-.icon-picture:before{content:'\22b7'}
-.icon-pictureframe:before{content:'\f41e'}
-.icon-piggybank:before{content:'\f257'}
-.icon-pigpena:before{content:'\f456'}
-.icon-pigpenb:before{content:'\f457'}
-.icon-pigpenc:before{content:'\f458'}
-.icon-pigpend:before{content:'\f459'}
-.icon-pigpene:before{content:'\f45a'}
-.icon-pigpenf:before{content:'\f45b'}
-.icon-pigpeng:before{content:'\f45c'}
-.icon-pigpenh:before{content:'\f45d'}
-.icon-pigpeni:before{content:'\f45e'}
-.icon-pigpenj:before{content:'\f45f'}
-.icon-pigpenk:before{content:'\f460'}
-.icon-pigpenl:before{content:'\f461'}
-.icon-pigpenm:before{content:'\f462'}
-.icon-pigpenn:before{content:'\f463'}
-.icon-pigpeno:before{content:'\f464'}
-.icon-pigpenp:before{content:'\f465'}
-.icon-pigpenq:before{content:'\f466'}
-.icon-pigpenr:before{content:'\f467'}
-.icon-pigpens:before{content:'\f468'}
-.icon-pigpent:before{content:'\f469'}
-.icon-pigpenu:before{content:'\f46a'}
-.icon-pigpenv:before{content:'\f46b'}
-.icon-pigpenw:before{content:'\f46c'}
-.icon-pigpenx:before{content:'\f46d'}
-.icon-pigpeny:before{content:'\f46e'}
-.icon-pigpenz:before{content:'\f46f'}
-.icon-pilcrow:before{content:'\00b6'}
-.icon-pill-antivirusalt:before{content:'\f0aa'}
-.icon-pin:before{content:'\f20a'}
-.icon-pipe:before{content:'\01c0'}
-.icon-piwigo:before{content:'\f0ad'}
-.icon-pizza:before{content:'\f35c'}
-.icon-placeadd:before{content:'\f221'}
-.icon-placealt:before{content:'\f224'}
-.icon-placealtadd:before{content:'\f225'}
-.icon-placealtdelete:before{content:'\f226'}
-.icon-placedelete:before{content:'\f222'}
-.icon-placeios:before{content:'\f20c'}
-.icon-plane:before{content:'\f23e'}
-.icon-plaque:before{content:'\f2b8'}
-.icon-play:before{content:'\f184'}
-.icon-play-circle:before{content:'\f17e'}
-.icon-playstore:before{content:'\f255'}
-.icon-playvideo:before{content:'\f03d'}
-.icon-plug:before{content:'\f0ea'}
-.icon-pluginalt:before{content:'\f098'}
-.icon-plus:before{content:'\002b'}
-.icon-plus-sign:before{content:'\f476'}
-.icon-pocket:before{content:'\f16b'}
-.icon-podcast:before{content:'\f1a2'}
-.icon-podium-winner:before{content:'\f2d6'}
-.icon-pokemon:before{content:'\f354'}
-.icon-police:before{content:'\f2aa'}
-.icon-polygonlasso:before{content:'\f397'}
-.icon-post:before{content:'\f12e'}
-.icon-postalt:before{content:'\f130'}
-.icon-pound:before{content:'\f25b'}
-.icon-poundalt:before{content:'\f25c'}
-.icon-powerjack:before{content:'\f0fd'}
-.icon-powerplug:before{content:'\f0ed'}
-.icon-powerplugeu:before{content:'\f28b'}
-.icon-powerplugus:before{content:'\f28c'}
-.icon-presentation:before{content:'\f0c4'}
-.icon-prestashop:before{content:'\f061'}
-.icon-pretzel:before{content:'\f3cf'}
-.icon-preview:before{content:'\f330'}
-.icon-previous:before{content:'\f18b'}
-.icon-print:before{content:'\f125'}
-.icon-protecteddirectory:before{content:'\f04d'}
-.icon-pscircle:before{content:'\f2bb'}
-.icon-pscursor:before{content:'\f2c3'}
-.icon-psdown:before{content:'\f2c6'}
-.icon-psleft:before{content:'\f2c7'}
-.icon-pslone:before{content:'\f2cc'}
-.icon-psltwo:before{content:'\f2cd'}
-.icon-psright:before{content:'\f2c5'}
-.icon-psrone:before{content:'\f2ce'}
-.icon-psrtwo:before{content:'\f2cf'}
-.icon-pssquare:before{content:'\f2bc'}
-.icon-pstriangle:before{content:'\f2bd'}
-.icon-psup:before{content:'\f2c4'}
-.icon-psx:before{content:'\f2be'}
-.icon-pull:before{content:'\f089'}
-.icon-punisher:before{content:'\f343'}
-.icon-push:before{content:'\f088'}
-.icon-puzzle-plugin:before{content:'\f0a0'}
-.icon-python:before{content:'\f071'}
-.icon-qrcode:before{content:'\f275'}
-.icon-quake:before{content:'\f355'}
-.icon-queen:before{content:'\f2fd'}
-.icon-query:before{content:'\f08a'}
-.icon-question-sign:before{content:'\f0a3'}
-.icon-quote:before{content:'\f12f'}
-.icon-quotedown:before{content:'\f329'}
-.icon-quoteup:before{content:'\f328'}
-.icon-raceflag:before{content:'\f38e'}
-.icon-racquet:before{content:'\f2f2'}
-.icon-radio:before{content:'\f1a1'}
-.icon-radioactive:before{content:'\f282'}
-.icon-radiobutton:before{content:'\f312'}
-.icon-railroad:before{content:'\f248'}
-.icon-rain:before{content:'\f22f'}
-.icon-ram:before{content:'\f02c'}
-.icon-random:before{content:'\f188'}
-.icon-rar:before{content:'\f117'}
-.icon-raspberry:before{content:'\f368'}
-.icon-raspberrypi:before{content:'\f369'}
-.icon-rawaccesslogs:before{content:'\f0c1'}
-.icon-razor:before{content:'\f416'}
-.icon-reademail:before{content:'\f173'}
-.icon-record:before{content:'\f189'}
-.icon-rectangle:before{content:'\25ad'}
-.icon-recycle:before{content:'\f297'}
-.icon-reddit:before{content:'\f154'}
-.icon-redirect:before{content:'\f054'}
-.icon-refresh:before{content:'\f078'}
-.icon-reliability:before{content:'\f016'}
-.icon-remote:before{content:'\f298'}
-.icon-remove:before{content:'\00d7'}
-.icon-remove-circle:before{content:'\f470'}
-.icon-remove-sign:before{content:'\f478'}
-.icon-removefriend:before{content:'\f3db'}
-.icon-repeat:before{content:'\f32b'}
-.icon-repeatone:before{content:'\f196'}
-.icon-resellerhosting:before{content:'\f03a'}
-.icon-residentevil:before{content:'\f350'}
-.icon-resistor:before{content:'\f3eb'}
-.icon-resize:before{content:'\f1ed'}
-.icon-resize-full:before{content:'\f325'}
-.icon-resize-horizontal:before{content:'\f318'}
-.icon-resize-small:before{content:'\f326'}
-.icon-resize-vertical:before{content:'\f319'}
-.icon-restart:before{content:'\f11f'}
-.icon-restaurantmenu:before{content:'\f362'}
-.icon-restore:before{content:'\f30d'}
-.icon-restricted:before{content:'\f0ab'}
-.icon-retweet:before{content:'\f486'}
-.icon-rim:before{content:'\f36f'}
-.icon-ring:before{content:'\02da'}
-.icon-road:before{content:'\f249'}
-.icon-roadsign-roadsignright:before{content:'\f21b'}
-.icon-roadsignleft:before{content:'\f240'}
-.icon-robocop:before{content:'\f357'}
-.icon-rocket-launch:before{content:'\f29c'}
-.icon-rook:before{content:'\f2fa'}
-.icon-root:before{content:'\f33c'}
-.icon-rorschach:before{content:'\f358'}
-.icon-rotateclockwise:before{content:'\f202'}
-.icon-rotatecounterclockwise:before{content:'\f203'}
-.icon-roundrectangle:before{content:'\f1bd'}
-.icon-route:before{content:'\f402'}
-.icon-router:before{content:'\f0e9'}
-.icon-rss:before{content:'\f17b'}
-.icon-rubberstamp:before{content:'\f274'}
-.icon-ruby:before{content:'\f067'}
-.icon-ruler:before{content:'\f1ef'}
-.icon-sad:before{content:'\f13d'}
-.icon-safetypin:before{content:'\f417'}
-.icon-satellite:before{content:'\f38a'}
-.icon-satellitedish-remotemysql:before{content:'\f0c0'}
-.icon-save-floppy:before{content:'\f0c8'}
-.icon-scales:before{content:'\f3fd'}
-.icon-science-atom:before{content:'\f2b0'}
-.icon-scope-scan:before{content:'\f212'}
-.icon-scopealt:before{content:'\f237'}
-.icon-screenshot:before{content:'\f109'}
-.icon-screw:before{content:'\f426'}
-.icon-screwdriver:before{content:'\f292'}
-.icon-screwdriveralt:before{content:'\f293'}
-.icon-script:before{content:'\f08d'}
-.icon-sd:before{content:'\f106'}
-.icon-search:before{content:'\f0c5'}
-.icon-searchdocument:before{content:'\f419'}
-.icon-searchfolder:before{content:'\f41a'}
-.icon-security-shield:before{content:'\f02d'}
-.icon-securityalt-shieldalt:before{content:'\f02e'}
-.icon-selection-rectangleselection:before{content:'\f1b0'}
-.icon-selectionadd:before{content:'\f1b2'}
-.icon-selectionintersect:before{content:'\f1b4'}
-.icon-selectionremove:before{content:'\f1b3'}
-.icon-seo:before{content:'\f030'}
-.icon-server:before{content:'\f026'}
-.icon-servers:before{content:'\f027'}
-.icon-settingsandroid:before{content:'\f309'}
-.icon-settingsfour-gearsalt:before{content:'\f306'}
-.icon-settingsthree-gears:before{content:'\f307'}
-.icon-settingstwo-gearalt:before{content:'\f308'}
-.icon-shades-sunglasses:before{content:'\f294'}
-.icon-shapes:before{content:'\f1dd'}
-.icon-share:before{content:'\f47d'}
-.icon-share-alt:before{content:'\f16c'}
-.icon-sharealt:before{content:'\f147'}
-.icon-sharedfile:before{content:'\f0ef'}
-.icon-sharedhosting:before{content:'\f037'}
-.icon-sharethree:before{content:'\f414'}
-.icon-sheriff:before{content:'\f2a9'}
-.icon-shipping:before{content:'\f23f'}
-.icon-shopping:before{content:'\f010'}
-.icon-shopping-cart:before{content:'\f035'}
-.icon-shoppingbag:before{content:'\f273'}
-.icon-shortcut:before{content:'\f043'}
-.icon-shovel:before{content:'\f290'}
-.icon-shredder:before{content:'\f27c'}
-.icon-shutdown:before{content:'\f11e'}
-.icon-sidebar:before{content:'\f124'}
-.icon-signal:before{content:'\f100'}
-.icon-sim:before{content:'\f0e1'}
-.icon-simalt:before{content:'\f121'}
-.icon-skrill:before{content:'\f268'}
-.icon-skull:before{content:'\f38d'}
-.icon-skype:before{content:'\f141'}
-.icon-skypeaway:before{content:'\f39f'}
-.icon-skypebusy:before{content:'\f3a0'}
-.icon-skypeoffline:before{content:'\f3a1'}
-.icon-skypeonline:before{content:'\f39e'}
-.icon-smaller:before{content:'\f30b'}
-.icon-smf:before{content:'\f062'}
-.icon-smile:before{content:'\263a'}
-.icon-snow:before{content:'\f22e'}
-.icon-snowman:before{content:'\f37c'}
-.icon-socialnetwork:before{content:'\f03b'}
-.icon-software:before{content:'\f09a'}
-.icon-sortbynameascending-atoz:before{content:'\f1c2'}
-.icon-sortbynamedescending-ztoa:before{content:'\f1c1'}
-.icon-sortbysizeascending:before{content:'\f1c3'}
-.icon-sortbysizedescending:before{content:'\f1c4'}
-.icon-soundwave:before{content:'\f194'}
-.icon-soup:before{content:'\f3d1'}
-.icon-spaceinvaders:before{content:'\f352'}
-.icon-spades:before{content:'\f2f5'}
-.icon-spam:before{content:'\f047'}
-.icon-spamalt:before{content:'\f048'}
-.icon-spawn:before{content:'\f344'}
-.icon-speaker:before{content:'\f372'}
-.icon-speed:before{content:'\f40b'}
-.icon-spider:before{content:'\f346'}
-.icon-spiderman:before{content:'\f347'}
-.icon-split:before{content:'\f335'}
-.icon-spoon:before{content:'\f213'}
-.icon-spray:before{content:'\f1c7'}
-.icon-spreadsheet:before{content:'\f0c3'}
-.icon-squareapp:before{content:'\f26f'}
-.icon-squarebrackets:before{content:'\f0b3'}
-.icon-ssh:before{content:'\f04e'}
-.icon-sslmanager:before{content:'\f04f'}
-.icon-stadium:before{content:'\f3d6'}
-.icon-stamp:before{content:'\f242'}
-.icon-stampalt:before{content:'\f243'}
-.icon-star:before{content:'\f13a'}
-.icon-star-empty:before{content:'\f13b'}
-.icon-starempty:before{content:'\f2de'}
-.icon-starfull:before{content:'\f2e0'}
-.icon-starhalf:before{content:'\f2df'}
-.icon-steak:before{content:'\f360'}
-.icon-steam:before{content:'\f2dd'}
-.icon-step-backward:before{content:'\f198'}
-.icon-step-forward:before{content:'\f197'}
-.icon-sticker:before{content:'\f3f5'}
-.icon-stiletto:before{content:'\f429'}
-.icon-stockdown:before{content:'\f252'}
-.icon-stocks:before{content:'\f250'}
-.icon-stockup:before{content:'\f251'}
-.icon-stomach:before{content:'\f3e1'}
-.icon-stop:before{content:'\f185'}
-.icon-stopwatch:before{content:'\f219'}
-.icon-storage-box:before{content:'\f011'}
-.icon-storagealt-drawer:before{content:'\f012'}
-.icon-store:before{content:'\f272'}
-.icon-storm:before{content:'\f230'}
-.icon-stove:before{content:'\f371'}
-.icon-strawberry:before{content:'\f3f3'}
-.icon-strikethrough:before{content:'\f1f7'}
-.icon-student-school:before{content:'\f288'}
-.icon-stumbleupon:before{content:'\f40c'}
-.icon-subdomain:before{content:'\f052'}
-.icon-submarine:before{content:'\f373'}
-.icon-subscript:before{content:'\f1ea'}
-.icon-subtractshape:before{content:'\f1fe'}
-.icon-sum:before{content:'\f33b'}
-.icon-sun-day:before{content:'\f206'}
-.icon-sunnysideup:before{content:'\f365'}
-.icon-superman:before{content:'\f33f'}
-.icon-superscript:before{content:'\f1eb'}
-.icon-support:before{content:'\f013'}
-.icon-supportalt:before{content:'\f014'}
-.icon-switch:before{content:'\f28a'}
-.icon-switchoff:before{content:'\f32d'}
-.icon-switchoffalt:before{content:'\f28e'}
-.icon-switchon:before{content:'\f32c'}
-.icon-switchonalt:before{content:'\f28d'}
-.icon-sword:before{content:'\f2ed'}
-.icon-sync:before{content:'\f0bd'}
-.icon-syncalt:before{content:'\f11c'}
-.icon-synckeeplocal:before{content:'\f33e'}
-.icon-synckeepserver:before{content:'\f33d'}
-.icon-syringe-antivirus:before{content:'\f0a9'}
-.icon-tablet:before{content:'\f118'}
-.icon-tabletennis-pingpong:before{content:'\f2f0'}
-.icon-taco:before{content:'\f3cd'}
-.icon-tag:before{content:'\f032'}
-.icon-tagalt-pricealt:before{content:'\f264'}
-.icon-tags:before{content:'\f482'}
-.icon-tagvertical:before{content:'\f15f'}
-.icon-tank:before{content:'\f423'}
-.icon-target:before{content:'\f2a6'}
-.icon-taskmanager-logprograms:before{content:'\f04b'}
-.icon-tasks:before{content:'\f0e0'}
-.icon-taxi:before{content:'\f3a4'}
-.icon-tea:before{content:'\f3cb'}
-.icon-teapot:before{content:'\f42c'}
-.icon-telescope:before{content:'\f3ef'}
-.icon-temperature-thermometer:before{content:'\f20d'}
-.icon-temperaturealt-thermometeralt:before{content:'\f20e'}
-.icon-tennis:before{content:'\f2ea'}
-.icon-tent-camping:before{content:'\f215'}
-.icon-terminal:before{content:'\f114'}
-.icon-tethering:before{content:'\f0f1'}
-.icon-tetrisone:before{content:'\f34b'}
-.icon-tetristhree:before{content:'\f34d'}
-.icon-tetristwo:before{content:'\f34c'}
-.icon-text-height:before{content:'\f1f8'}
-.icon-text-width:before{content:'\f1f9'}
-.icon-th:before{content:'\f110'}
-.icon-th-large:before{content:'\f112'}
-.icon-th-list:before{content:'\f113'}
-.icon-theather:before{content:'\f39c'}
-.icon-theme-style:before{content:'\f041'}
-.icon-thissideup:before{content:'\f41d'}
-.icon-threecolumns:before{content:'\f1ab'}
-.icon-thumbs-down:before{content:'\f139'}
-.icon-thumbs-up:before{content:'\f138'}
-.icon-ticket:before{content:'\f3dc'}
-.icon-tictactoe:before{content:'\f39a'}
-.icon-tie-business:before{content:'\2040'}
-.icon-time:before{content:'\f210'}
-.icon-timeline:before{content:'\f253'}
-.icon-tint:before{content:'\f208'}
-.icon-toast:before{content:'\f2ad'}
-.icon-toiletpaper:before{content:'\f384'}
-.icon-tooth:before{content:'\f3de'}
-.icon-toothbrush:before{content:'\f385'}
-.icon-tophat:before{content:'\f3f0'}
-.icon-torigate:before{content:'\f411'}
-.icon-touchpad:before{content:'\f115'}
-.icon-trafficlight:before{content:'\f22a'}
-.icon-transform:before{content:'\f1a6'}
-.icon-trash:before{content:'\f0ce'}
-.icon-trashempty:before{content:'\f0cf'}
-.icon-trashfull:before{content:'\f0d0'}
-.icon-travel:before{content:'\f422'}
-.icon-treediagram:before{content:'\f0ec'}
-.icon-treeornament:before{content:'\f37e'}
-.icon-triangle:before{content:'\25b3'}
-.icon-tron:before{content:'\f34f'}
-.icon-trophy:before{content:'\f2d7'}
-.icon-truck:before{content:'\f211'}
-.icon-trumpet:before{content:'\f375'}
-.icon-tumblr:before{content:'\f164'}
-.icon-tv:before{content:'\f1a4'}
-.icon-twitter:before{content:'\f16a'}
-.icon-twocolumnsleft:before{content:'\f1a9'}
-.icon-twocolumnsleftalt:before{content:'\f1aa'}
-.icon-twocolumnsright:before{content:'\f1a7'}
-.icon-twocolumnsrightalt:before{content:'\f1a8'}
-.icon-ubuntu:before{content:'\f120'}
-.icon-umbrella:before{content:'\f218'}
-.icon-underline:before{content:'\f1f6'}
-.icon-undo:before{content:'\f32a'}
-.icon-unlock:before{content:'\f0bf'}
-.icon-upleft:before{content:'\f302'}
-.icon-upload:before{content:'\f47a'}
-.icon-uploadalt:before{content:'\f11b'}
-.icon-upright:before{content:'\f303'}
-.icon-uptime:before{content:'\f017'}
-.icon-usb:before{content:'\f10d'}
-.icon-usbalt:before{content:'\f10e'}
-.icon-usbplug:before{content:'\f10f'}
-.icon-user:before{content:'\f133'}
-.icon-userfilter:before{content:'\f05d'}
-.icon-usfootball:before{content:'\f2ec'}
-.icon-value-coins:before{content:'\f018'}
-.icon-vector:before{content:'\f1b6'}
-.icon-vendetta:before{content:'\f3c5'}
-.icon-video:before{content:'\f17d'}
-.icon-viking:before{content:'\f379'}
-.icon-vimeo:before{content:'\f168'}
-.icon-vinyl:before{content:'\f0cc'}
-.icon-violin:before{content:'\f1a5'}
-.icon-virus:before{content:'\f0a8'}
-.icon-visa:before{content:'\f3c2'}
-.icon-visitor:before{content:'\f097'}
-.icon-vlc-cone:before{content:'\f192'}
-.icon-voice:before{content:'\f18c'}
-.icon-volume-down:before{content:'\f0e3'}
-.icon-volume-off:before{content:'\f0e4'}
-.icon-volume-up:before{content:'\f0e2'}
-.icon-vps:before{content:'\f025'}
-.icon-wacom:before{content:'\f1bb'}
-.icon-walle:before{content:'\f3bc'}
-.icon-wallet:before{content:'\e000'}
-.icon-warcraft:before{content:'\f3bf'}
-.icon-warmedal:before{content:'\f2e4'}
-.icon-warning-sign:before{content:'\f316'}
-.icon-washer:before{content:'\f39b'}
-.icon-watch:before{content:'\f378'}
-.icon-watertap-plumbing:before{content:'\f22d'}
-.icon-wave-sea:before{content:'\f23c'}
-.icon-wavealt-seaalt:before{content:'\f23b'}
-.icon-webcam:before{content:'\f0fe'}
-.icon-webcamalt:before{content:'\f129'}
-.icon-webhostinghub:before{content:'\f031'}
-.icon-webmail:before{content:'\f045'}
-.icon-webpage:before{content:'\f033'}
-.icon-webplatform:before{content:'\f3c3'}
-.icon-websitealt:before{content:'\f01c'}
-.icon-websitebuilder:before{content:'\f034'}
-.icon-weight:before{content:'\f430'}
-.icon-westernunion:before{content:'\f26a'}
-.icon-wheel:before{content:'\f228'}
-.icon-wheelchair:before{content:'\f3fe'}
-.icon-whistle:before{content:'\f3d8'}
-.icon-whmcs:before{content:'\f066'}
-.icon-wifi:before{content:'\f0ff'}
-.icon-wind:before{content:'\f41b'}
-.icon-windleft:before{content:'\f424'}
-.icon-windows:before{content:'\f019'}
-.icon-windright:before{content:'\f425'}
-.icon-wine:before{content:'\f238'}
-.icon-wizard:before{content:'\f03c'}
-.icon-wizardalt:before{content:'\f1fb'}
-.icon-wizardhat:before{content:'\f337'}
-.icon-woman-female:before{content:'\f2a2'}
-.icon-women:before{content:'\f24d'}
-.icon-wordpress:before{content:'\f074'}
-.icon-wrench:before{content:'\f05b'}
-.icon-wrenchalt:before{content:'\f2b2'}
-.icon-xbox:before{content:'\f353'}
-.icon-xmen:before{content:'\f345'}
-.icon-yahoo:before{content:'\f151'}
-.icon-yen:before{content:'\00a5'}
-.icon-yenalt:before{content:'\f25d'}
-.icon-yinyang:before{content:'\262f'}
-.icon-youtube:before{content:'\f142'}
-.icon-zelda:before{content:'\f3b8'}
-.icon-zikula:before{content:'\f0ac'}
-.icon-zip:before{content:'\f116'}
-.icon-zodiac-aquarius:before{content:'\f3b4'}
-.icon-zodiac-aries:before{content:'\f3aa'}
-.icon-zodiac-cancer:before{content:'\f3ad'}
-.icon-zodiac-capricorn:before{content:'\f3b3'}
-.icon-zodiac-gemini:before{content:'\f3ac'}
-.icon-zodiac-leo:before{content:'\f3ae'}
-.icon-zodiac-libra:before{content:'\f3b0'}
-.icon-zodiac-pisces:before{content:'\f3b5'}
-.icon-zodiac-sagitarius:before{content:'\f3b2'}
-.icon-zodiac-scorpio:before{content:'\f3b1'}
-.icon-zodiac-taurus:before{content:'\f3ab'}
-.icon-zodiac-virgo:before{content:'\f3af'}
-.icon-zoom-in:before{content:'\f320'}
-.icon-zoom-out:before{content:'\f321'}
-.icon-vk:before{content:'\f34e'}
-.icon-bitcoin:before{content:'\f584'}
-.icon-rouble:before{content:'\f4ca'}
-.icon-phpnuke:before{content:'\f48c'}
-.icon-modx:before{content:'\f48d'}
-.icon-eoneohseven:before{content:'\f48e'}
-.icon-subrion:before{content:'\f48f'}
-.icon-typothree:before{content:'\f490'}
-.icon-tikiwiki:before{content:'\f491'}
-.icon-pligg:before{content:'\f492'}
-.icon-pyrocms:before{content:'\f493'}
-.icon-mambo:before{content:'\f494'}
-.icon-contao:before{content:'\f495'}
-.icon-crackedegg:before{content:'\f496'}
-.icon-coffeecupalt:before{content:'\f497'}
-.icon-reademailalt:before{content:'\f498'}
-.icon-train:before{content:'\f499'}
-.icon-shoebox:before{content:'\f49a'}
-.icon-bathtub:before{content:'\f49b'}
-.icon-ninegag:before{content:'\f49c'}
-.icon-pebble:before{content:'\f49d'}
-.icon-musicthree:before{content:'\f49e'}
-.icon-stairsup:before{content:'\f49f'}
-.icon-stairsdown:before{content:'\f4a0'}
-.icon-bookalt:before{content:'\f4a1'}
-.icon-programclose:before{content:'\f4a2'}
-.icon-programok:before{content:'\f4a3'}
-.icon-splitalt:before{content:'\f4a4'}
-.icon-solarsystem:before{content:'\f4a5'}
-.icon-honeycomb:before{content:'\f4a6'}
-.icon-tools:before{content:'\f4a7'}
-.icon-xoops:before{content:'\f4a8'}
-.icon-pixie:before{content:'\f4a9'}
-.icon-dotclear:before{content:'\f4aa'}
-.icon-impresscms:before{content:'\f4ab'}
-.icon-saurus:before{content:'\f4ac'}
-.icon-impresspages:before{content:'\f4ad'}
-.icon-monstra:before{content:'\f4ae'}
-.icon-snews:before{content:'\f4af'}
-.icon-jcore:before{content:'\f4b0'}
-.icon-silverstripe:before{content:'\f4b1'}
-.icon-btwoevolution:before{content:'\f4b2'}
-.icon-nucleus:before{content:'\f4b3'}
-.icon-symphony:before{content:'\f4b5'}
-.icon-vanillacms:before{content:'\f4b6'}
-.icon-bbpress:before{content:'\f4b7'}
-.icon-phpbbalt:before{content:'\f4b8'}
-.icon-chyrp:before{content:'\f4b9'}
-.icon-pivotx:before{content:'\f4ba'}
-.icon-pagecookery:before{content:'\f4bb'}
-.icon-moviereelalt:before{content:'\f4bc'}
-.icon-cassettealt:before{content:'\f4bd'}
-.icon-photobucket:before{content:'\f4be'}
-.icon-technorati:before{content:'\f4bf'}
-.icon-theverge:before{content:'\f4c0'}
-.icon-stacks:before{content:'\f4c1'}
-.icon-dotlist:before{content:'\f4c2'}
-.icon-numberlist:before{content:'\f4c3'}
-.icon-indentleft:before{content:'\f4c4'}
-.icon-indentright:before{content:'\f4c5'}
-.icon-fblike:before{content:'\f4c6'}
-.icon-fbdislike:before{content:'\f4c7'}
-.icon-sale:before{content:'\f4c8'}
-.icon-sharetronix:before{content:'\f4c9'}
-.icon-markerdown:before{content:'\f4cb'}
-.icon-markerup:before{content:'\f4cc'}
-.icon-markerleft:before{content:'\f4cd'}
-.icon-markerright:before{content:'\f4ce'}
-.icon-bookmarkalt:before{content:'\f4cf'}
-.icon-calendarthree:before{content:'\f4d0'}
-.icon-wineglass:before{content:'\f4d1'}
-.icon-slidersoff:before{content:'\f4d2'}
-.icon-slidersmiddle:before{content:'\f4d3'}
-.icon-slidersfull:before{content:'\f4d4'}
-.icon-slidersdesc:before{content:'\f4d5'}
-.icon-slidersasc:before{content:'\f4d6'}
-.icon-slideronefull:before{content:'\f4d7'}
-.icon-slidertwofull:before{content:'\f4d8'}
-.icon-sliderthreefull:before{content:'\f4d9'}
-.icon-noborders:before{content:'\f4da'}
-.icon-bottomborder:before{content:'\f4db'}
-.icon-topborder:before{content:'\f4dc'}
-.icon-leftborder:before{content:'\f4dd'}
-.icon-rightborder:before{content:'\f4de'}
-.icon-horizontalborder:before{content:'\f4df'}
-.icon-verticalborder:before{content:'\f4e0'}
-.icon-outerborders:before{content:'\f4e1'}
-.icon-innerborders:before{content:'\f4e2'}
-.icon-fullborders:before{content:'\f4e3'}
-.icon-networksignalalt:before{content:'\f4e4'}
-.icon-resizeverticalalt:before{content:'\f4e5'}
-.icon-resizehorizontalalt:before{content:'\f4e6'}
-.icon-moneyalt:before{content:'\f4e7'}
-.icon-fontcase:before{content:'\f4e8'}
-.icon-playstation:before{content:'\f4e9'}
-.icon-cube:before{content:'\f4ea'}
-.icon-sphere:before{content:'\f4eb'}
-.icon-ceilinglight:before{content:'\f4ec'}
-.icon-chandelier:before{content:'\f4ed'}
-.icon-details:before{content:'\f4ee'}
-.icon-detailsalt:before{content:'\f4ef'}
-.icon-bullet:before{content:'\f4f0'}
-.icon-gun:before{content:'\f4f1'}
-.icon-processorthree:before{content:'\f4f2'}
-.icon-world:before{content:'\f4f3'}
-.icon-statistics:before{content:'\f4f4'}
-.icon-shoppingcartalt:before{content:'\f4f5'}
-.icon-microphonealt:before{content:'\f4f6'}
-.icon-routeralt:before{content:'\f4f7'}
-.icon-shell:before{content:'\f4f8'}
-.icon-squareplay:before{content:'\f4f9'}
-.icon-squarestop:before{content:'\f4fa'}
-.icon-squarepause:before{content:'\f4fb'}
-.icon-squarerecord:before{content:'\f4fc'}
-.icon-squareforward:before{content:'\f4fd'}
-.icon-squareback:before{content:'\f4fe'}
-.icon-squarenext:before{content:'\f4ff'}
-.icon-squareprevious:before{content:'\f500'}
-.icon-mega:before{content:'\f501'}
-.icon-charliechaplin:before{content:'\f502'}
-.icon-popcorn:before{content:'\f503'}
-.icon-fatarrowright:before{content:'\f504'}
-.icon-fatarrowleft:before{content:'\f505'}
-.icon-fatarrowdown:before{content:'\f506'}
-.icon-fatarrowup:before{content:'\f507'}
-.icon-shirtbutton:before{content:'\f508'}
-.icon-shirtbuttonalt:before{content:'\f509'}
-.icon-cuckooclock:before{content:'\f50a'}
-.icon-lens:before{content:'\f50b'}
-.icon-voltage:before{content:'\f50c'}
-.icon-planealt:before{content:'\f50d'}
-.icon-busalt:before{content:'\f50e'}
-.icon-lipstick:before{content:'\f50f'}
-.icon-plantalt:before{content:'\f510'}
-.icon-paperboat:before{content:'\f511'}
-.icon-texture:before{content:'\f512'}
-.icon-dominoone:before{content:'\f513'}
-.icon-dominotwo:before{content:'\f514'}
-.icon-dominothree:before{content:'\f515'}
-.icon-dominofour:before{content:'\f516'}
-.icon-dominofive:before{content:'\f517'}
-.icon-dominosix:before{content:'\f518'}
-.icon-dominoseven:before{content:'\f519'}
-.icon-dominoeight:before{content:'\f51a'}
-.icon-dominonine:before{content:'\f51b'}
-.icon-connected:before{content:'\f51c'}
-.icon-connectedpc:before{content:'\f51d'}
-.icon-musicsheet:before{content:'\f51e'}
-.icon-rdio:before{content:'\f51f'}
-.icon-spotify:before{content:'\f520'}
-.icon-deviantart:before{content:'\f521'}
-.icon-yelp:before{content:'\f522'}
-.icon-behance:before{content:'\f523'}
-.icon-nfc:before{content:'\f524'}
-.icon-earbudsalt:before{content:'\f525'}
-.icon-earbuds:before{content:'\f526'}
-.icon-amazon:before{content:'\f527'}
-.icon-openid:before{content:'\f528'}
-.icon-digg:before{content:'\f529'}
-.icon-retweet:before{content:'\f52a'}
-.icon-moonnew:before{content:'\f52b'}
-.icon-moonwaxingcrescent:before{content:'\f52c'}
-.icon-moonfirstquarter:before{content:'\f52d'}
-.icon-moonwaxinggibbous:before{content:'\f52e'}
-.icon-moonfull:before{content:'\f52f'}
-.icon-moonwaninggibbous:before{content:'\f530'}
-.icon-moonthirdquarter:before{content:'\f531'}
-.icon-moonwaningcrescent:before{content:'\f532'}
-.icon-planet:before{content:'\f533'}
-.icon-sodacup:before{content:'\f534'}
-.icon-cocktail:before{content:'\f535'}
-.icon-church:before{content:'\f536'}
-.icon-mosque:before{content:'\f537'}
-.icon-comedy:before{content:'\f538'}
-.icon-tragedy:before{content:'\f539'}
-.icon-bacon:before{content:'\f53a'}
-.icon-trailor:before{content:'\f53b'}
-.icon-tshirt:before{content:'\f53c'}
-.icon-design:before{content:'\f53d'}
-.icon-spiderweb:before{content:'\f53e'}
-.icon-fireplace:before{content:'\f53f'}
-.icon-tallglass:before{content:'\f540'}
-.icon-grapes:before{content:'\f541'}
-.icon-biohazard:before{content:'\f542'}
-.icon-directions:before{content:'\f543'}
-.icon-equalizerthree:before{content:'\f544'}
-.icon-mountains:before{content:'\f545'}
-.icon-bing:before{content:'\f546'}
-.icon-windowseight:before{content:'\f547'}
-.icon-microsoftoffice:before{content:'\f548'}
-.icon-salealt:before{content:'\f549'}
-.icon-purse:before{content:'\f54a'}
-.icon-chickenalt:before{content:'\f54b'}
-.icon-podium:before{content:'\f54c'}
-.icon-findfriends:before{content:'\f54d'}
-.icon-microphonethree:before{content:'\f54e'}
-.icon-workshirt:before{content:'\f54f'}
-.icon-donotdisturb:before{content:'\f550'}
-.icon-addtags:before{content:'\f551'}
-.icon-removetags:before{content:'\f556'}
-.icon-carbattery:before{content:'\f553'}
-.icon-debug:before{content:'\f554'}
-.icon-trojan:before{content:'\f555'}
-.icon-molecule:before{content:'\f556'}
-.icon-safetygoggles:before{content:'\f557'}
-.icon-leather:before{content:'\f558'}
-.icon-teddybear:before{content:'\f559'}
-.icon-stroller:before{content:'\f55a'}
-.icon-circleplay:before{content:'\f55b'}
-.icon-circlestop:before{content:'\f55c'}
-.icon-circlepause:before{content:'\f55d'}
-.icon-circlerecord:before{content:'\f55e'}
-.icon-circleforward:before{content:'\f55f'}
-.icon-circlebackward:before{content:'\f560'}
-.icon-circlenext:before{content:'\f561'}
-.icon-circleprevious:before{content:'\f562'}
-.icon-circleplayempty:before{content:'\f563'}
-.icon-circlestopempty:before{content:'\f564'}
-.icon-circlepauseempty:before{content:'\f565'}
-.icon-circlerecordempty:before{content:'\f566'}
-.icon-circleforwardempty:before{content:'\f567'}
-.icon-circlebackwardempty:before{content:'\f568'}
-.icon-circlenextempty:before{content:'\f569'}
-.icon-circlepreviousempty:before{content:'\f56a'}
-.icon-belt:before{content:'\f56b'}
-.icon-bait:before{content:'\f56c'}
-.icon-manalt:before{content:'\f56d'}
-.icon-womanalt:before{content:'\f56e'}
-.icon-clover:before{content:'\f56f'}
-.icon-pacifier:before{content:'\f570'}
-.icon-calcplus:before{content:'\f571'}
-.icon-calcminus:before{content:'\f572'}
-.icon-calcmultiply:before{content:'\f573'}
-.icon-calcdivide:before{content:'\f574'}
-.icon-calcequals:before{content:'\f575'}
-.icon-city:before{content:'\f576'}
-.icon-hdvideo:before{content:'\f577'}
-.icon-horizontalexpand:before{content:'\f578'}
-.icon-horizontalcontract:before{content:'\f579'}
-.icon-radar:before{content:'\f57a'}
-.icon-threed:before{content:'\f57b'}
-.icon-flickralt:before{content:'\f57c'}
-.icon-pattern:before{content:'\f57d'}
-.icon-elevator:before{content:'\f57e'}
-.icon-escalator:before{content:'\f57f'}
-.icon-portrait:before{content:'\f580'}
-.icon-cigar:before{content:'\f581'}
-.icon-dropbox:before{content:'\f582'}
-.icon-origami:before{content:'\f583'}
-.icon-opensource:before{content:'\f585'}
-.icon-redaxscript:before{content:'\f586'}
-.icon-mahara:before{content:'\f587'}
-.icon-forkcms:before{content:'\f588'}
-.icon-pimcore:before{content:'\f589'}
-.icon-bigace:before{content:'\f58a'}
-.icon-aef:before{content:'\f58b'}
-.icon-punbb:before{content:'\f58c'}
-.icon-phorum:before{content:'\f58d'}
-.icon-fluxbb:before{content:'\f58e'}
-.icon-minibb:before{content:'\f58f'}
-.icon-zenphoto:before{content:'\f590'}
-.icon-fourimages:before{content:'\f591'}
-.icon-plogger:before{content:'\f592'}
-.icon-jcow:before{content:'\f593'}
-.icon-elgg:before{content:'\f594'}
-.icon-etano:before{content:'\f595'}
-.icon-openclassifieds:before{content:'\f596'}
-.icon-osclass:before{content:'\f597'}
-.icon-openx:before{content:'\f598'}
-.icon-phplist:before{content:'\f599'}
-.icon-roundcube:before{content:'\f59a'}
-.icon-pommo:before{content:'\f59b'}
-.icon-webinsta:before{content:'\f59c'}
-.icon-limesurvey:before{content:'\f59d'}
-.icon-fengoffice:before{content:'\f59e'}
-.icon-eyeos:before{content:'\f59f'}
-.icon-dotproject:before{content:'\f5a0'}
-.icon-collabtive:before{content:'\f5a1'}
-.icon-projectpier:before{content:'\f5a2'}
-.icon-taskfreak:before{content:'\f5a3'}
-.icon-eventum:before{content:'\f5a4'}
-.icon-traq:before{content:'\f5a5'}
-.icon-mantisbugtracker:before{content:'\f5a6'}
-.icon-oscommerce:before{content:'\f5a7'}
-.icon-zencart:before{content:'\f5a8'}
-.icon-tomatocart:before{content:'\f5a9'}
-.icon-boxbilling:before{content:'\f5aa'}
-.icon-zurmo:before{content:'\f5ab'}
-.icon-orangehrm:before{content:'\f5ac'}
-.icon-vtiger:before{content:'\f5ad'}
-.icon-mibew:before{content:'\f5ae'}
-.icon-phpmyfaq:before{content:'\f5af'}
-.icon-yiiframework:before{content:'\f5b0'}
-.icon-zendframework:before{content:'\f5b1'}
-.icon-fuelphp:before{content:'\f5b2'}
-.icon-kohana:before{content:'\f5b3'}
-.icon-smarty:before{content:'\f5b4'}
-.icon-sidu:before{content:'\f5b5'}
-.icon-simplepie:before{content:'\f5b6'}
-.icon-projectsend:before{content:'\f5b7'}
-.icon-extjs:before{content:'\f5b8'}
-.icon-raphael:before{content:'\f5b9'}
-.icon-sizzle:before{content:'\f5ba'}
-.icon-yui:before{content:'\f5bb'}
-.icon-scissorsalt:before{content:'\f5bc'}
-.icon-cuthere:before{content:'\f5bd'}
-.icon-coinsalt:before{content:'\f5be'}
-.icon-parkingmeter:before{content:'\f5bf'}
-.icon-treethree:before{content:'\f5c0'}
-.icon-packarchive:before{content:'\f5c1'}
-.icon-unpackarchive:before{content:'\f5c2'}
-.icon-terminalalt:before{content:'\f5c3'}
-.icon-jersey:before{content:'\f5c4'}
-.icon-vial:before{content:'\f5c5'}
-.icon-noteslist:before{content:'\f5c6'}
-.icon-notestasks:before{content:'\f5c7'}
-.icon-notesdate:before{content:'\f5c8'}
-.icon-noteslocation:before{content:'\f5c9'}
-.icon-noteslistalt:before{content:'\f5ca'}
-.icon-notestasksalt:before{content:'\f5cb'}
-.icon-notesdatealt:before{content:'\f5cc'}
-.icon-noteslocationalt:before{content:'\f5cd'}
-.icon-useralt:before{content:'\f5ce'}
-.icon-adduseralt:before{content:'\f5cf'}
-.icon-removeuseralt:before{content:'\f5d0'}
-.icon-banuseralt:before{content:'\f5d1'}
-.icon-banuser:before{content:'\f5d2'}
-.icon-paintrollalt:before{content:'\f5d3'}
-.icon-textcursor:before{content:'\f5d4'}
-.icon-textfield:before{content:'\f5d5'}
-.icon-precisecursor:before{content:'\f5d6'}
-.icon-brokenlink:before{content:'\f5d7'}
-.icon-bookmarkthree:before{content:'\f5d8'}
-.icon-bookmarkfour:before{content:'\f5d9'}
-.icon-warmedalalt:before{content:'\f5da'}
-.icon-thinking:before{content:'\f5db'}
-.icon-commentlove:before{content:'\f5dc'}
-.icon-commentsmiley:before{content:'\f5dd'}
-.icon-sharetwo:before{content:'\f147'}
-.icon-emptystar:before{content:'\f2de'}
-.icon-halfstar:before{content:'\f2df'}
-.icon-fullstar:before{content:'\f2e0'}
-.icon-forbidden:before{content:'\f314'}
-.icon-indentleftalt:before{content:'\f4c4'}
-.icon-indentrightalt:before{content:'\f4c5'}
-.icon-modxalt:before{content:'\f5de'}
-.icon-apple:before{content:'\f5df'}
-.icon-greekcolumn:before{content:'\f5e0'}
-.icon-walletalt:before{content:'\f5e1'}
-.icon-dollarsquare:before{content:'\f5e2'}
-.icon-poundsquare:before{content:'\f5e3'}
-.icon-yensquare:before{content:'\f5e4'}
-.icon-eurosquare:before{content:'\f5e5'}
-.icon-bitcoinsquare:before{content:'\f5e6'}
-.icon-roublesquare:before{content:'\f5e7'}
-.icon-roublealt:before{content:'\f5e8'}
-.icon-bitcoinalt:before{content:'\f5e9'}
-.icon-gavel:before{content:'\f5ea'}
-.icon-barchartasc:before{content:'\f5eb'}
-.icon-barchartdesc:before{content:'\f5ec'}
-.icon-house:before{content:'\f5ed'}
-.icon-garage:before{content:'\f5ee'}
-.icon-milk:before{content:'\f5ef'}
-.icon-hryvnia:before{content:'\f5f0'}
-.icon-hryvniasquare:before{content:'\f5f1'}
-.icon-hryvniaalt:before{content:'\f5f2'}
-.icon-beeralt:before{content:'\f5f3'}
-.icon-trolleyfull:before{content:'\f5f4'}
-.icon-trolleyload:before{content:'\f5f5'}
-.icon-trolleyunload:before{content:'\f5f6'}
-.icon-trolleyempty:before{content:'\f5f7'}
-.icon-mootools:before{content:'\f5f8'}
-.icon-mootoolstwo:before{content:'\f5f9'}
-.icon-mootoolsthree:before{content:'\f5fa'}
-.icon-mysqlthree:before{content:'\f5fb'}
-.icon-mysqlalt:before{content:'\f5fc'}
-.icon-pgsql:before{content:'\f5fd'}
-.icon-mongodb:before{content:'\f5fe'}
-.icon-neofourj:before{content:'\f5ff'}
-.icon-nosql:before{content:'\f600'}
-.icon-catface:before{content:'\f601'}
-.icon-polaroid:before{content:'\f602'}
-.icon-clouderror:before{content:'\f603'}
-.icon-camcorder:before{content:'\f604'}
-.icon-projector:before{content:'\f605'}
-.icon-sdvideo:before{content:'\f606'}
-.icon-fx:before{content:'\f607'}
-.icon-gramophone:before{content:'\f608'}
-.icon-speakeralt:before{content:'\f609'}
-.icon-hddalt:before{content:'\f60a'}
-.icon-usbflash:before{content:'\f60b'}
-.icon-manillaenvelope:before{content:'\f60c'}
-.icon-stickynote:before{content:'\f60d'}
-.icon-stickynotealt:before{content:'\f60e'}
-.icon-torch:before{content:'\f60f'}
-.icon-flashlightalt:before{content:'\f610'}
-.icon-campfire:before{content:'\f611'}
-.icon-cctv:before{content:'\f612'}
-.icon-drill:before{content:'\f613'}
-.icon-lampalt:before{content:'\f614'}
-.icon-flowerpot:before{content:'\f615'}
-.icon-defragment:before{content:'\f616'}
-.icon-panoramio:before{content:'\f617'}
-.icon-panorama:before{content:'\f618'}
-.icon-photosphere:before{content:'\f619'}
-.icon-panoramaalt:before{content:'\f61a'}
-.icon-timer:before{content:'\f61b'}
-.icon-burstmode:before{content:'\f61c'}
-.icon-cameraflash:before{content:'\f61d'}
-.icon-autoflash:before{content:'\f61e'}
-.icon-noflash:before{content:'\f61f'}
-.icon-threetofour:before{content:'\f620'}
-.icon-sixteentonine:before{content:'\f621'}
-.icon-cat:before{content:'\f622'}
-.icon-dog:before{content:'\f623'}
-.icon-rabbit:before{content:'\f624'}
-.icon-koala:before{content:'\f625'}
-.icon-butterflyalt:before{content:'\f626'}
-.icon-butterfly:before{content:'\f627'}
-.icon-wwf:before{content:'\f628'}
-.icon-poop:before{content:'\f629'}
-.icon-poopalt:before{content:'\f62a'}
-.icon-kiwi:before{content:'\f62b'}
-.icon-kiwifruit:before{content:'\f62c'}
-.icon-lemon:before{content:'\f62d'}
-.icon-pear:before{content:'\f62e'}
-.icon-watermelon:before{content:'\f62f'}
-.icon-onion:before{content:'\f630'}
-.icon-turnip:before{content:'\f631'}
-.icon-eggplant:before{content:'\f632'}
-.icon-avocado:before{content:'\f633'}
-.icon-perfume:before{content:'\f634'}
-.icon-arch:before{content:'\f635'}
-.icon-pluspages:before{content:'\f636'}
-.icon-community:before{content:'\f637'}
-.icon-pluscircles:before{content:'\f638'}
-.icon-googleplusold:before{content:'\f639'}
-.icon-plusgames:before{content:'\f63a'}
-.icon-event:before{content:'\f63b'}
-.icon-miui:before{content:'\f63c'}
-.icon-hot:before{content:'\f63d'}
-.icon-flowup:before{content:'\f63e'}
-.icon-flowdown:before{content:'\f63f'}
-.icon-moustache:before{content:'\f640'}
-.icon-angle:before{content:'\f641'}
-.icon-sleep:before{content:'\f642'}
-.icon-acorn:before{content:'\f643'}
-.icon-steamalt:before{content:'\f644'}
-.icon-resizeupleft:before{content:'\f645'}
-.icon-resizeupright:before{content:'\f646'}
-.icon-resizedownright:before{content:'\f647'}
-.icon-resizedownleft:before{content:'\f648'}
-.icon-hammeralt:before{content:'\f649'}
-.icon-bamboo:before{content:'\f64a'}
-.icon-mypictures:before{content:'\f64b'}
-.icon-mymusic:before{content:'\f64c'}
-.icon-myvideos:before{content:'\f64d'}
-.icon-systemfolder:before{content:'\f64e'}
-.icon-bookthree:before{content:'\f64f'}
-.icon-compile:before{content:'\f650'}
-.icon-report:before{content:'\f651'}
-.icon-fliphorizontal:before{content:'\f652'}
-.icon-flipvertical:before{content:'\f653'}
-.icon-construction:before{content:'\f654'}
-.icon-counteralt:before{content:'\f655'}
-.icon-counter:before{content:'\f656'}
-.icon-papercutter:before{content:'\f657'}
-.icon-snaptodot:before{content:'\f658'}
-.icon-snaptogrid:before{content:'\f659'}
-.icon-caligraphy:before{content:'\f65a'}
-.icon-icecreamthree:before{content:'\f65b'}
-.icon-skitch:before{content:'\f65c'}
-.icon-archlinux:before{content:'\f65d'}
-.icon-elementaryos:before{content:'\f65e'}
-.icon-loadingone:before{content:'\f65f'}
-.icon-loadingtwo:before{content:'\f660'}
-.icon-loadingthree:before{content:'\f661'}
-.icon-loadingfour:before{content:'\f662'}
-.icon-loadingfive:before{content:'\f663'}
-.icon-loadingsix:before{content:'\f664'}
-.icon-loadingseven:before{content:'\f665'}
-.icon-loadingeight:before{content:'\f666'}
-.icon-brokenheart:before{content:'\f667'}
-.icon-heartarrow:before{content:'\f668'}
-.icon-heartsparkle:before{content:'\f669'}
-.icon-cell:before{content:'\f66a'}
-.icon-panda:before{content:'\f66b'}
-.icon-refreshalt:before{content:'\f66c'}
-.icon-mirror:before{content:'\f66d'}
-.icon-headphonesthree:before{content:'\f66e'}
-.icon-fan:before{content:'\f66f'}
-.icon-tornado:before{content:'\f670'}
-.icon-hangout:before{content:'\f671'}
-.icon-beaker:before{content:'\f672'}
-.icon-beakeralt:before{content:'\f673'}
-.icon-phonescreensize:before{content:'\f674'}
-.icon-tabletscreensize:before{content:'\f675'}
-.icon-notification:before{content:'\f676'}
-.icon-googleglass:before{content:'\f677'}
-.icon-pinterest:before{content:'\f678'}
-.icon-soundcloud:before{content:'\f679'}
-.icon-alarmclock:before{content:'\f67a'}
-.icon-addalarm:before{content:'\f67b'}
-.icon-deletealarm:before{content:'\f67c'}
-.icon-turnoffalarm:before{content:'\f67d'}
-.icon-snooze:before{content:'\f67e'}
-.icon-bringforward:before{content:'\f67f'}
-.icon-sendbackward:before{content:'\f680'}
-.icon-bringtofront:before{content:'\f681'}
-.icon-sendtoback:before{content:'\f682'}
-.icon-tectile:before{content:'\f683'}
-.icon-grave:before{content:'\f684'}
-.icon-gravetwo:before{content:'\f685'}
-.icon-gravethree:before{content:'\f686'}
-.icon-gravefour:before{content:'\f687'}
-.icon-textlayer:before{content:'\f688'}
-.icon-vectoralt:before{content:'\f689'}
-.icon-drmanhattan:before{content:'\f68a'}
-.icon-foursquarealt:before{content:'\f68b'}
-.icon-hashtag:before{content:'\f68c'}
-.icon-enteralt:before{content:'\f68d'}
-.icon-exitalt:before{content:'\f68e'}
-.icon-cartalt:before{content:'\f68f'}
-.icon-vaultthree:before{content:'\f690'}
-.icon-fatundo:before{content:'\f691'}
-.icon-fatredo:before{content:'\f692'}
-.icon-feedly:before{content:'\f693'}
-.icon-feedlyalt:before{content:'\f694'}
-.icon-squareheart:before{content:'\f695'}
-.icon-squarestar:before{content:'\f696'}
-.icon-squarecomment:before{content:'\f697'}
-.icon-squarelike:before{content:'\f698'}
-.icon-squarebookmark:before{content:'\f699'}
-.icon-squaresearch:before{content:'\f69a'}
-.icon-squaresettings:before{content:'\f69b'}
-.icon-squarevoice:before{content:'\f69c'}
-.icon-google:before{content:'\f69d'}
-.icon-emojigrinalt:before{content:'\f69e'}
-.icon-emojigrin:before{content:'\f69f'}
-.icon-constellation:before{content:'\f6a0'}
-.icon-emojisurprise:before{content:'\f6a1'}
-.icon-emojidead:before{content:'\f6a2'}
-.icon-emojiangry:before{content:'\f6a3'}
-.icon-emojidevil:before{content:'\f6a4'}
-.icon-emojiwink:before{content:'\f6a5'}
-.icon-moonorbit:before{content:'\f6a6'}
-.icon-emojismile:before{content:'\f6a7'}
-.icon-emojisorry:before{content:'\f6a8'}
-.icon-emojiconfused:before{content:'\f6a9'}
-.icon-emojisleep:before{content:'\f6aa'}
-.icon-emojicry:before{content:'\f6ab'}
-.icon-circlefork:before{content:'\f6ac'}
-.icon-circlespoon:before{content:'\f6ad'}
-.icon-circleknife:before{content:'\f6ae'}
-.icon-circlepencil:before{content:'\f6af'}
-.icon-circlehammer:before{content:'\f6b0'}
-.icon-circlescrewdriver:before{content:'\f6b1'}
-.icon-middlefinger:before{content:'\f6b2'}
-.icon-heavymetal:before{content:'\f6b3'}
-.icon-turnright:before{content:'\f6b4'}
-.icon-turnleft:before{content:'\f6b5'}
-.icon-vineapp:before{content:'\f6b6'}
-.icon-vineappalt:before{content:'\f6b7'}
-.icon-finance:before{content:'\f6b8'}
-.icon-survey:before{content:'\f6b9'}
-.icon-hangouts:before{content:'\f6ba'}
-.icon-square0:before{content:'\f6bb'}
-.icon-square1:before{content:'\f6bc'}
-.icon-square2:before{content:'\f6bd'}
-.icon-square3:before{content:'\f6be'}
-.icon-square4:before{content:'\f6bf'}
-.icon-square5:before{content:'\f6c0'}
-.icon-square6:before{content:'\f6c1'}
-.icon-square7:before{content:'\f6c2'}
-.icon-square8:before{content:'\f6c3'}
-.icon-square9:before{content:'\f6c4'}
-.icon-squarea:before{content:'\f6c5'}
-.icon-squareb:before{content:'\f6c6'}
-.icon-squarec:before{content:'\f6c7'}
-.icon-squared:before{content:'\f6c8'}
-.icon-squaree:before{content:'\f6c9'}
-.icon-squaref:before{content:'\f6ca'}
-.icon-squareg:before{content:'\f6cb'}
-.icon-squareh:before{content:'\f6cc'}
-.icon-squarei:before{content:'\f6cd'}
-.icon-squarej:before{content:'\f6ce'}
-.icon-squarek:before{content:'\f6cf'}
-.icon-squarel:before{content:'\f6d0'}
-.icon-squarem:before{content:'\f6d1'}
-.icon-squaren:before{content:'\f6d2'}
-.icon-squareo:before{content:'\f6d3'}
-.icon-squarep:before{content:'\f6d4'}
-.icon-squareq:before{content:'\f6d5'}
-.icon-squarer:before{content:'\f6d6'}
-.icon-squares:before{content:'\f6d7'}
-.icon-squaret:before{content:'\f6d8'}
-.icon-squareu:before{content:'\f6d9'}
-.icon-squarev:before{content:'\f6da'}
-.icon-squarew:before{content:'\f6db'}
-.icon-squarex:before{content:'\f6dc'}
-.icon-squarey:before{content:'\f6dd'}
-.icon-squarez:before{content:'\f6de'}
-.icon-shuttle:before{content:'\f6df'}
-.icon-meteor:before{content:'\f6e0'}
-.icon-galaxy:before{content:'\f6e1'}
-.icon-observatory:before{content:'\f6e2'}
-.icon-astronaut:before{content:'\f6e3'}
-.icon-asteroid:before{content:'\f6e4'}
-.icon-sunrise:before{content:'\f6e5'}
-.icon-sunset:before{content:'\f6e6'}
-.icon-tiderise:before{content:'\f6e7'}
-.icon-tidefall:before{content:'\f6e8'}
-.icon-mushroomcloud:before{content:'\f6e9'}
-.icon-galaxyalt:before{content:'\f6ea'}
-.icon-sputnik:before{content:'\f6eb'}
-.icon-sextant:before{content:'\f6ec'}
-.icon-spock:before{content:'\f6ed'}
-.icon-meteorite:before{content:'\f6ee'}
-.icon-deathstar:before{content:'\f6ef'}
-.icon-deathstarbulding:before{content:'\f6f0'}
-.icon-fallingstar:before{content:'\f6f1'}
-.icon-windmill:before{content:'\f6f2'}
-.icon-windmillalt:before{content:'\f6f3'}
-.icon-pumpjack:before{content:'\f6f4'}
-.icon-nuclearplant:before{content:'\f6f5'}
-.icon-solarpanel:before{content:'\f6f6'}
-.icon-barrel:before{content:'\f6f7'}
-.icon-canister:before{content:'\f6f8'}
-.icon-railtunnel:before{content:'\f6f9'}
-.icon-roadtunnel:before{content:'\f6fa'}
-.icon-pickaxe:before{content:'\f6fb'}
-.icon-cow:before{content:'\f6fc'}
-.icon-sheep:before{content:'\f6fd'}
-.icon-fountain:before{content:'\f6fe'}
-.icon-circlezero:before{content:'\f6ff'}
-.icon-circleone:before{content:'\f700'}
-.icon-circletwo:before{content:'\f701'}
-.icon-circlethree:before{content:'\f702'}
-.icon-circlefour:before{content:'\f703'}
-.icon-circlefive:before{content:'\f704'}
-.icon-circlesix:before{content:'\f705'}
-.icon-circleseven:before{content:'\f706'}
-.icon-circleeight:before{content:'\f707'}
-.icon-circlenine:before{content:'\f708'}
-.icon-circlea:before{content:'\f709'}
-.icon-circleb:before{content:'\f70a'}
-.icon-circlec:before{content:'\f70b'}
-.icon-circled:before{content:'\f70c'}
-.icon-circlee:before{content:'\f70d'}
-.icon-circlef:before{content:'\f70e'}
-.icon-circleg:before{content:'\f70f'}
-.icon-circleh:before{content:'\f710'}
-.icon-circlei:before{content:'\f711'}
-.icon-circlej:before{content:'\f712'}
-.icon-circlek:before{content:'\f713'}
-.icon-circlel:before{content:'\f714'}
-.icon-circlem:before{content:'\f715'}
-.icon-circlen:before{content:'\f716'}
-.icon-circleo:before{content:'\f717'}
-.icon-circlep:before{content:'\f718'}
-.icon-circleq:before{content:'\f719'}
-.icon-circler:before{content:'\f71a'}
-.icon-circles:before{content:'\f71b'}
-.icon-circlet:before{content:'\f71c'}
-.icon-circleu:before{content:'\f71d'}
-.icon-circlev:before{content:'\f71e'}
-.icon-circlew:before{content:'\f71f'}
-.icon-circlex:before{content:'\f720'}
-.icon-circley:before{content:'\f721'}
-.icon-circlez:before{content:'\f722'}
-.icon-creeper:before{content:'\f723'}
-.icon-minecraft:before{content:'\f724'}
-.icon-minecraftalt:before{content:'\f725'}
-.icon-pixelsword:before{content:'\f726'}
-.icon-pixelbroadsword:before{content:'\f727'}
-.icon-pixelwand:before{content:'\f728'}
-.icon-pixelpotion:before{content:'\f729'}
-.icon-pixelpotionalt:before{content:'\f72a'}
-.icon-pixelpickaxe:before{content:'\f72b'}
-.icon-pixelbow:before{content:'\f72c'}
-.icon-pixelarrow:before{content:'\f72d'}
-.icon-pixelaxe:before{content:'\f72e'}
-.icon-pixeldagger:before{content:'\f72f'}
-.icon-pixelbastardsword:before{content:'\f730'}
-.icon-pixellance:before{content:'\f731'}
-.icon-pixelbattleaxe:before{content:'\f732'}
-.icon-pixelshovel:before{content:'\f733'}
-.icon-pixelsphere:before{content:'\f734'}
-.icon-pixelelixir:before{content:'\f735'}
-.icon-pixelchest:before{content:'\f736'}
-.icon-pixelshield:before{content:'\f737'}
-.icon-pixelheart:before{content:'\f738'}
-.icon-rudder:before{content:'\f739'}
-.icon-folderalt:before{content:'\f73a'}
-.icon-removefolderalt:before{content:'\f73b'}
-.icon-addfolderalt:before{content:'\f73c'}
-.icon-deletefolderalt:before{content:'\f73d'}
-.icon-openfolderalt:before{content:'\f73e'}
-.icon-clipboardalt:before{content:'\f73f'}
-.icon-pastealt:before{content:'\f740'}
-.icon-loadingflowccw:before{content:'\f741'}
-.icon-loadingflowcw:before{content:'\f742'}
-.icon-code:before{content:'\f743'}
-.icon-cloveralt:before{content:'\f744'}
-.icon-lips:before{content:'\f745'}
-.icon-kiss:before{content:'\f746'}
-.icon-manualshift:before{content:'\f747'}
-.icon-simcardthree:before{content:'\f748'}
-.icon-parthenon:before{content:'\f749'}
-.icon-addcomment:before{content:'\f74a'}
-.icon-deletecomment:before{content:'\f74b'}
-.icon-gender:before{content:'\f74c'}
-.icon-callalt:before{content:'\f74d'}
-.icon-outgoingcallalt:before{content:'\f74e'}
-.icon-incomingcallalt:before{content:'\f74f'}
-.icon-missedcallalt:before{content:'\f750'}
-.icon-export:before{content:'\f751'}
-.icon-import:before{content:'\f752'}
-.icon-cherryalt:before{content:'\f753'}
-.icon-panties:before{content:'\f754'}
-.icon-kimai:before{content:'\f755'}
-.icon-livejournal:before{content:'\f756'}
-.icon-livejournalalt:before{content:'\f757'}
-.icon-tagged:before{content:'\f758'}
-.icon-temple:before{content:'\f759'}
-.icon-mayanpyramid:before{content:'\f75a'}
-.icon-egyptpyramid:before{content:'\f75b'}
-.icon-tampermonkey:before{content:'\f75c'}
-.icon-pushbullet:before{content:'\f75d'}
-.icon-currents:before{content:'\f75e'}
-.icon-communitysmall:before{content:'\f75f'}
-.icon-squaregithub:before{content:'\f760'}
-.icon-projectfork:before{content:'\f761'}
-.icon-projectmerge:before{content:'\f762'}
-.icon-projectcompare:before{content:'\f763'}
-.icon-history:before{content:'\f764'}
-.icon-notebook:before{content:'\f765'}
-.icon-issue:before{content:'\f766'}
-.icon-issueclosed:before{content:'\f767'}
-.icon-issuereopened:before{content:'\f768'}
-.icon-rubyalt:before{content:'\f769'}
-.icon-lighton:before{content:'\f76a'}
-.icon-lightoff:before{content:'\f76b'}
-.icon-bellalt:before{content:'\f76c'}
-.icon-versions:before{content:'\f777'}
-.icon-twog:before{content:'\f76e'}
-.icon-threeg:before{content:'\f76f'}
-.icon-fourg:before{content:'\f770'}
-.icon-gpsalt:before{content:'\f771'}
-.icon-circleloaderfull:before{content:'\f772'}
-.icon-circleloaderseven:before{content:'\f773'}
-.icon-circleloadersix:before{content:'\f774'}
-.icon-circleloaderfive:before{content:'\f775'}
-.icon-circleloaderfour:before{content:'\f776'}
-.icon-circleloaderthree:before{content:'\f777'}
-.icon-circleloadertwo:before{content:'\f778'}
-.icon-circleloaderone:before{content:'\f779'}
-.icon-circleloaderempty:before{content:'\f77a'}
-.icon-whatsapp:before{content:'\f77b'}
-.icon-whatsappalt:before{content:'\f77c'}
-.icon-viber:before{content:'\f77d'}
-.icon-squareviber:before{content:'\f77e'}
-.icon-teamviewer:before{content:'\f77f'}
-.icon-tunein:before{content:'\f780'}
-.icon-tuneinalt:before{content:'\f781'}
-.icon-weightscale:before{content:'\f782'}
-.icon-boxing:before{content:'\f783'}
-.icon-speedalt:before{content:'\f784'}
-.icon-scriptalt:before{content:'\f785'}
-.icon-splitthree:before{content:'\f786'}
-.icon-mergethree:before{content:'\f787'}
-.icon-layersthree:before{content:'\f788'}
-.icon-mutemic:before{content:'\f789'}
-.icon-zerply:before{content:'\f78a'}
-.icon-circlegoogleplus:before{content:'\f78b'}
-.icon-circletwitter:before{content:'\f78c'}
-.icon-circlefacebook:before{content:'\f78d'}
-.icon-circleyahoo:before{content:'\f78e'}
-.icon-circlegithub:before{content:'\f78f'}
-.icon-forumsalt:before{content:'\f790'}
-.icon-circlepath:before{content:'\f791'}
-.icon-circlevimeo:before{content:'\f792'}
-.icon-circlevine:before{content:'\f793'}
-.icon-instagramtwo:before{content:'\f794'}
-.icon-instagramthree:before{content:'\f795'}
-.icon-flickrthree:before{content:'\f796'}
-.icon-quora:before{content:'\f797'}
-.icon-squarequora:before{content:'\f798'}
-.icon-circlequora:before{content:'\f799'}
-.icon-picasa:before{content:'\f79a'}
-.icon-branch:before{content:'\f79b'}
-.icon-ingress:before{content:'\f79c'}
-.icon-squarezerply:before{content:'\f79d'}
-.icon-circlezerply:before{content:'\f79e'}
-.icon-squarevimeo:before{content:'\f79f'}
-.icon-squaretwitter:before{content:'\f7a0'}
-.icon-brightnessalt:before{content:'\f7a1'}
-.icon-brightnessalthalf:before{content:'\f7a2'}
-.icon-brightnessaltfull:before{content:'\f7a3'}
-.icon-brightnessaltauto:before{content:'\f7a4'}
-.icon-shirtbuttonthree:before{content:'\f7a5'}
-.icon-openshare:before{content:'\f7a6'}
-.icon-copyapp:before{content:'\f7a7'}
-.icon-bowl:before{content:'\f7a8'}
-.icon-cloudalt:before{content:'\f7a9'}
-.icon-cloudaltdownload:before{content:'\f7aa'}
-.icon-cloudaltupload:before{content:'\f7ab'}
-.icon-cloudaltsync:before{content:'\f7ac'}
-.icon-cloudaltprivate:before{content:'\f7ad'}
-.icon-flipboard:before{content:'\f7ae'}
-.icon-octoloaderempty:before{content:'\f7af'}
-.icon-octoloaderone:before{content:'\f7b0'}
-.icon-octoloadertwo:before{content:'\f7b1'}
-.icon-octoloaderthree:before{content:'\f7b2'}
-.icon-octoloaderfour:before{content:'\f7b3'}
-.icon-octoloaderfive:before{content:'\f7b4'}
-.icon-octoloadersix:before{content:'\f7b5'}
-.icon-octoloaderseven:before{content:'\f7b6'}
-.icon-octoloaderfull:before{content:'\f7b7'}
-.icon-selectionsymbol:before{content:'\f7b8'}
-.icon-infinityalt:before{content:'\f7b9'}
-.icon-pullrequest:before{content:'\f7ba'}
-.icon-projectforkdelete:before{content:'\f7bb'}
-.icon-projectforkprivate:before{content:'\f7bc'}
-.icon-commit:before{content:'\f7bd'}
-.icon-htmlfile:before{content:'\f7be'}
-.icon-pushalt:before{content:'\f7bf'}
-.icon-pullalt:before{content:'\f7c0'}
-.icon-photonineframes:before{content:'\f7c1'}
-.icon-wetfloor:before{content:'\f7c2'}
-.icon-instagramfour:before{content:'\f7c3'}
-.icon-circleinstagram:before{content:'\f7c4'}
-.icon-videocamerathree:before{content:'\f7c5'}
-.icon-subtitles:before{content:'\f7c6'}
-.icon-subtitlesoff:before{content:'\f7c7'}
-.icon-compress:before{content:'\f7c8'}
-.icon-baby:before{content:'\f7c9'}
-.icon-ducky:before{content:'\f7ca'}
-.icon-handswipe:before{content:'\f7cb'}
-.icon-swipeup:before{content:'\f7cc'}
-.icon-swipedown:before{content:'\f7cd'}
-.icon-twofingerswipedown:before{content:'\f7ce'}
-.icon-twofingerswipeup:before{content:'\f7cf'}
-.icon-doubletap:before{content:'\f7d0'}
-.icon-dribbblealt:before{content:'\f7d1'}
-.icon-circlecallmissed:before{content:'\f7d2'}
-.icon-circlecallincoming:before{content:'\f7d3'}
-.icon-circlecalloutgoing:before{content:'\f7d4'}
-.icon-circledownload:before{content:'\f7d5'}
-.icon-circleupload:before{content:'\f7d6'}
-.icon-minismile:before{content:'\f7d7'}
-.icon-minisad:before{content:'\f7d8'}
-.icon-minilaugh:before{content:'\f7d9'}
-.icon-minigrin:before{content:'\f7da'}
-.icon-miniangry:before{content:'\f7db'}
-.icon-minitongue:before{content:'\f7dc'}
-.icon-minitonguealt:before{content:'\f7dd'}
-.icon-miniwink:before{content:'\f7de'}
-.icon-minitonguewink:before{content:'\f7df'}
-.icon-miniconfused:before{content:'\f7e0'}
-.icon-soundright:before{content:'\f7e1'}
-.icon-soundleft:before{content:'\f7e2'}
-.icon-savetodrive:before{content:'\f7e3'}
-.icon-layerorderup:before{content:'\f7e4'}
-.icon-layerorderdown:before{content:'\f7e5'}
-.icon-layerorder:before{content:'\f7e6'}
-.icon-circledribbble:before{content:'\f7e7'}
-.icon-squaredribbble:before{content:'\f7e8'}
-.icon-handexpand:before{content:'\f7e9'}
-.icon-handpinch:before{content:'\f7ea'}
-.icon-fontserif:before{content:'\f7eb'}
-.icon-fontsansserif:before{content:'\f7ec'}
-.icon-fontrounded:before{content:'\f7ed'}
-.icon-fonthandwriting:before{content:'\f7ee'}
-.icon-fonttypewriter:before{content:'\f7ef'}
-.icon-fontcomic:before{content:'\f7f0'}
-.icon-fontcaligraphy:before{content:'\f7f1'}
-.icon-fontgothic:before{content:'\f7f2'}
-.icon-fontstencil:before{content:'\f7f3'}
+@font-face {
+ font-family: 'WebHostingHub-Glyphs';
+ src: url('webhostinghub-glyphs.eot');
+ src: url('webhostinghub-glyphs.eot?#iefix') format('embedded-opentype'),
+ url('webhostinghub-glyphs.ttf') format('truetype');
+ font-weight: normal;
+ font-style: normal;
+ -moz-font-feature-settings: "calt=0,liga=0";
+}
+[class^="icon-"], [class*=" icon-"] {font-family:'WebHostingHub-Glyphs';background:none;width:auto;height:auto;font-style:normal}
+.icon-aaabattery:before{content:'\f413'}
+.icon-abacus:before{content:'\f261'}
+.icon-accountfilter:before{content:'\f05e'}
+.icon-acsource:before{content:'\f3ea'}
+.icon-addfriend:before{content:'\f3da'}
+.icon-address:before{content:'\f08f'}
+.icon-addshape:before{content:'\f1fd'}
+.icon-addtocart:before{content:'\f394'}
+.icon-addtolist:before{content:'\f2ac'}
+.icon-adjust:before{content:'\f484'}
+.icon-adobe:before{content:'\f1c9'}
+.icon-ads-bilboard:before{content:'\f082'}
+.icon-affiliate:before{content:'\f01e'}
+.icon-ajax:before{content:'\f06f'}
+.icon-alarm:before{content:'\f233'}
+.icon-alarmalt:before{content:'\f23d'}
+.icon-album-cover:before{content:'\f19f'}
+.icon-alertalt:before{content:'\f2b4'}
+.icon-alertpay:before{content:'\f269'}
+.icon-algorhythm:before{content:'\f0b8'}
+.icon-alienship:before{content:'\f41f'}
+.icon-alienware:before{content:'\f3be'}
+.icon-align-center:before{content:'\f1d9'}
+.icon-align-justify:before{content:'\f1da'}
+.icon-align-left:before{content:'\f1d7'}
+.icon-align-right:before{content:'\f1d8'}
+.icon-alignbottomedge:before{content:'\f1d3'}
+.icon-alignhorizontalcenter:before{content:'\f1d2'}
+.icon-alignleftedge:before{content:'\f1d6'}
+.icon-alignrightedge:before{content:'\f1d5'}
+.icon-aligntopedge:before{content:'\f1d4'}
+.icon-alignverticalcenter:before{content:'\f1d1'}
+.icon-amd:before{content:'\f020'}
+.icon-analogdown:before{content:'\f2cb'}
+.icon-analogleft:before{content:'\f2c8'}
+.icon-analogright:before{content:'\f2c9'}
+.icon-analogup:before{content:'\f2ca'}
+.icon-analytics-piechart:before{content:'\f000'}
+.icon-analyticsalt-piechartalt:before{content:'\f001'}
+.icon-anchor-port:before{content:'\f21d'}
+.icon-android:before{content:'\f12a'}
+.icon-angrybirds:before{content:'\f3c1'}
+.icon-antenna:before{content:'\f3ec'}
+.icon-apache-feather:before{content:'\f056'}
+.icon-aperture:before{content:'\f356'}
+.icon-appointment-agenda:before{content:'\f26c'}
+.icon-archive:before{content:'\f171'}
+.icon-arrow-down:before{content:'\f2fe'}
+.icon-arrow-left:before{content:'\f305'}
+.icon-arrow-right:before{content:'\f304'}
+.icon-arrow-up:before{content:'\f301'}
+.icon-asterisk:before{content:'\f317'}
+.icon-asteriskalt:before{content:'\002a'}
+.icon-at:before{content:'\40'}
+.icon-atari:before{content:'\f3b9'}
+.icon-authentication-keyalt:before{content:'\f051'}
+.icon-automobile-car:before{content:'\f239'}
+.icon-autorespond:before{content:'\f08e'}
+.icon-avatar:before{content:'\f15a'}
+.icon-avataralt:before{content:'\f161'}
+.icon-avengers:before{content:'\f342'}
+.icon-awstats:before{content:'\f04c'}
+.icon-axe:before{content:'\f2ef'}
+.icon-backup-vault:before{content:'\f004'}
+.icon-backupalt-vaultalt:before{content:'\f005'}
+.icon-backupwizard:before{content:'\f05f'}
+.icon-backward:before{content:'\f183'}
+.icon-bag:before{content:'\f234'}
+.icon-baloon:before{content:'\f405'}
+.icon-ban-circle:before{content:'\f313'}
+.icon-banana:before{content:'\f3f4'}
+.icon-bandwidth:before{content:'\f006'}
+.icon-bank:before{content:'\f262'}
+.icon-barchart:before{content:'\f02f'}
+.icon-barchartalt:before{content:'\f07d'}
+.icon-barcode:before{content:'\f276'}
+.icon-basecamp:before{content:'\f160'}
+.icon-basketball:before{content:'\f2e9'}
+.icon-bat:before{content:'\f3d3'}
+.icon-batman:before{content:'\f348'}
+.icon-batteryaltcharging:before{content:'\f104'}
+.icon-batteryaltfull:before{content:'\f101'}
+.icon-batteryaltsixty:before{content:'\f102'}
+.icon-batteryaltthird:before{content:'\f103'}
+.icon-batterycharged:before{content:'\f0f4'}
+.icon-batterycharging:before{content:'\f0f3'}
+.icon-batteryeighty:before{content:'\f0f9'}
+.icon-batteryempty:before{content:'\f0f5'}
+.icon-batteryforty:before{content:'\f0f7'}
+.icon-batteryfull:before{content:'\f0fa'}
+.icon-batterysixty:before{content:'\f0f8'}
+.icon-batterytwenty:before{content:'\f0f6'}
+.icon-bed:before{content:'\f2b9'}
+.icon-beer:before{content:'\f244'}
+.icon-bell:before{content:'\2407'}
+.icon-bigger:before{content:'\f30a'}
+.icon-bill:before{content:'\f278'}
+.icon-binary:before{content:'\f087'}
+.icon-binoculars-searchalt:before{content:'\f2a0'}
+.icon-birdhouse:before{content:'\f390'}
+.icon-birthday:before{content:'\f36b'}
+.icon-bishop:before{content:'\f2f9'}
+.icon-blackberry:before{content:'\f421'}
+.icon-blankstare:before{content:'\f13e'}
+.icon-blogger-blog:before{content:'\f167'}
+.icon-bluetooth:before{content:'\f12b'}
+.icon-bluetoothconnected:before{content:'\f386'}
+.icon-boardgame:before{content:'\f2d9'}
+.icon-boat:before{content:'\f21a'}
+.icon-bold:before{content:'\f1f4'}
+.icon-bomb:before{content:'\f2dc'}
+.icon-bone:before{content:'\f35f'}
+.icon-book:before{content:'\f1ba'}
+.icon-bookmark:before{content:'\f143'}
+.icon-boombox:before{content:'\f195'}
+.icon-bottle:before{content:'\f361'}
+.icon-bow:before{content:'\f2ee'}
+.icon-bowling:before{content:'\f2f3'}
+.icon-bowlingpins:before{content:'\f3d2'}
+.icon-bowtie:before{content:'\f37f'}
+.icon-boxtrapper-mousetrap:before{content:'\f046'}
+.icon-braces:before{content:'\f0b4'}
+.icon-braille0:before{content:'\f44b'}
+.icon-braille1:before{content:'\f44c'}
+.icon-braille2:before{content:'\f44d'}
+.icon-braille3:before{content:'\f44e'}
+.icon-braille4:before{content:'\f44f'}
+.icon-braille5:before{content:'\f450'}
+.icon-braille6:before{content:'\f451'}
+.icon-braille7:before{content:'\f452'}
+.icon-braille8:before{content:'\f453'}
+.icon-braille9:before{content:'\f454'}
+.icon-braillea:before{content:'\f431'}
+.icon-brailleb:before{content:'\f432'}
+.icon-braillec:before{content:'\f433'}
+.icon-brailled:before{content:'\f434'}
+.icon-braillee:before{content:'\f435'}
+.icon-braillef:before{content:'\f436'}
+.icon-brailleg:before{content:'\f437'}
+.icon-brailleh:before{content:'\f438'}
+.icon-braillei:before{content:'\f439'}
+.icon-braillej:before{content:'\f43a'}
+.icon-braillek:before{content:'\f43b'}
+.icon-braillel:before{content:'\f43c'}
+.icon-braillem:before{content:'\f43d'}
+.icon-braillen:before{content:'\f43e'}
+.icon-brailleo:before{content:'\f43f'}
+.icon-braillep:before{content:'\f440'}
+.icon-brailleq:before{content:'\f441'}
+.icon-brailler:before{content:'\f442'}
+.icon-brailles:before{content:'\f443'}
+.icon-braillespace:before{content:'\f455'}
+.icon-braillet:before{content:'\f444'}
+.icon-brailleu:before{content:'\f445'}
+.icon-braillev:before{content:'\f446'}
+.icon-braillew:before{content:'\f447'}
+.icon-braillex:before{content:'\f448'}
+.icon-brailley:before{content:'\f449'}
+.icon-braillez:before{content:'\f44a'}
+.icon-brain:before{content:'\f3e3'}
+.icon-bread:before{content:'\f42f'}
+.icon-breakable:before{content:'\f41c'}
+.icon-briefcase:before{content:'\f25e'}
+.icon-briefcasethree:before{content:'\f25f'}
+.icon-briefcasetwo:before{content:'\f0a2'}
+.icon-brightness:before{content:'\f10a'}
+.icon-brightnessfull:before{content:'\f10b'}
+.icon-brightnesshalf:before{content:'\f10c'}
+.icon-broom:before{content:'\f40a'}
+.icon-browser:before{content:'\f159'}
+.icon-brush:before{content:'\f1b8'}
+.icon-bucket:before{content:'\f1b5'}
+.icon-bug:before{content:'\f0a7'}
+.icon-bullhorn:before{content:'\f287'}
+.icon-bus:before{content:'\f241'}
+.icon-businesscardalt:before{content:'\f137'}
+.icon-buttona:before{content:'\f2bf'}
+.icon-buttonb:before{content:'\f2c0'}
+.icon-buttonx:before{content:'\f2c1'}
+.icon-buttony:before{content:'\f2c2'}
+.icon-cactus-desert:before{content:'\f22c'}
+.icon-calculator:before{content:'\f258'}
+.icon-calculatoralt:before{content:'\f265'}
+.icon-calendar:before{content:'\f20f'}
+.icon-calendaralt-cronjobs:before{content:'\f0a1'}
+.icon-camera:before{content:'\f19b'}
+.icon-candle:before{content:'\f29a'}
+.icon-candy:before{content:'\f42d'}
+.icon-candycane:before{content:'\f37d'}
+.icon-cannon:before{content:'\f401'}
+.icon-canvas:before{content:'\f1c8'}
+.icon-canvasrulers:before{content:'\f205'}
+.icon-capacitator:before{content:'\f3e8'}
+.icon-capslock:before{content:'\21ea'}
+.icon-captainamerica:before{content:'\f341'}
+.icon-carrot:before{content:'\f3f2'}
+.icon-cashregister:before{content:'\f26e'}
+.icon-cassette:before{content:'\f377'}
+.icon-cd-dvd:before{content:'\f0cd'}
+.icon-certificate:before{content:'\f277'}
+.icon-certificatealt:before{content:'\f058'}
+.icon-certificatethree:before{content:'\f059'}
+.icon-cgi:before{content:'\f086'}
+.icon-cgicenter:before{content:'\f079'}
+.icon-chair:before{content:'\2441'}
+.icon-chat:before{content:'\f162'}
+.icon-check:before{content:'\f310'}
+.icon-checkboxalt:before{content:'\f311'}
+.icon-checkin:before{content:'\f223'}
+.icon-checkinalt:before{content:'\f227'}
+.icon-chef:before{content:'\f3ce'}
+.icon-cherry:before{content:'\f35d'}
+.icon-chevron-down:before{content:'\f48b'}
+.icon-chevron-left:before{content:'\f489'}
+.icon-chevron-right:before{content:'\f488'}
+.icon-chevron-up:before{content:'\f48a'}
+.icon-chevrons:before{content:'\f0b5'}
+.icon-chicken:before{content:'\f359'}
+.icon-chocolate:before{content:'\f367'}
+.icon-christiancross:before{content:'\f40f'}
+.icon-christmastree:before{content:'\f37b'}
+.icon-chrome:before{content:'\f14e'}
+.icon-cigarette:before{content:'\f229'}
+.icon-circle-arrow-down:before{content:'\f475'}
+.icon-circle-arrow-left:before{content:'\f472'}
+.icon-circle-arrow-right:before{content:'\f473'}
+.icon-circle-arrow-up:before{content:'\f474'}
+.icon-circleadd:before{content:'\f0d1'}
+.icon-circledelete:before{content:'\f0d2'}
+.icon-circledown:before{content:'\f3c7'}
+.icon-circleleft:before{content:'\f3c6'}
+.icon-circleright:before{content:'\f3c9'}
+.icon-circleselect:before{content:'\f0d3'}
+.icon-circleselection:before{content:'\f1b1'}
+.icon-circleup:before{content:'\f3c8'}
+.icon-clearformatting:before{content:'\f1e7'}
+.icon-clipboard-paste:before{content:'\f0cb'}
+.icon-clockalt-timealt:before{content:'\f22b'}
+.icon-closetab:before{content:'\f170'}
+.icon-closewindow:before{content:'\f16e'}
+.icon-cloud:before{content:'\f0b9'}
+.icon-clouddownload:before{content:'\f0bb'}
+.icon-cloudhosting:before{content:'\f007'}
+.icon-cloudsync:before{content:'\f0bc'}
+.icon-cloudupload:before{content:'\f0ba'}
+.icon-clubs:before{content:'\f2f6'}
+.icon-cmd:before{content:'\f33a'}
+.icon-cms:before{content:'\f036'}
+.icon-cmsmadesimple:before{content:'\f0b0'}
+.icon-codeigniter:before{content:'\f077'}
+.icon-coffee:before{content:'\f235'}
+.icon-coffeebean:before{content:'\f366'}
+.icon-cog:before{content:'\f00f'}
+.icon-colocation:before{content:'\f024'}
+.icon-colocationalt:before{content:'\f023'}
+.icon-colors:before{content:'\f1e6'}
+.icon-comment:before{content:'\f12c'}
+.icon-commentout:before{content:'\f080'}
+.icon-commentround:before{content:'\f155'}
+.icon-commentroundempty:before{content:'\f156'}
+.icon-commentroundtyping:before{content:'\f157'}
+.icon-commentroundtypingempty:before{content:'\f158'}
+.icon-commenttyping:before{content:'\f12d'}
+.icon-compass:before{content:'\263c'}
+.icon-concretefive:before{content:'\f0af'}
+.icon-contact-businesscard:before{content:'\f040'}
+.icon-controllernes:before{content:'\f2d2'}
+.icon-controllerps:before{content:'\f2d1'}
+.icon-controllersnes:before{content:'\f2d3'}
+.icon-controlpanel:before{content:'\f008'}
+.icon-controlpanelalt:before{content:'\f009'}
+.icon-cooling:before{content:'\f00a'}
+.icon-coppermine:before{content:'\f0a4'}
+.icon-copy:before{content:'\f0c9'}
+.icon-copyright:before{content:'\00a9'}
+.icon-coupon:before{content:'\f254'}
+.icon-cpanel:before{content:'\f072'}
+.icon-cplusplus:before{content:'\f0b1'}
+.icon-cpu-processor:before{content:'\f002'}
+.icon-cpualt-processoralt:before{content:'\f003'}
+.icon-crayon:before{content:'\f383'}
+.icon-createfile:before{content:'\f0c6'}
+.icon-createfolder:before{content:'\f0da'}
+.icon-creativecommons:before{content:'\f1fc'}
+.icon-creditcard:before{content:'\f279'}
+.icon-cricket:before{content:'\f418'}
+.icon-croisant:before{content:'\f29f'}
+.icon-crop:before{content:'\f1af'}
+.icon-crown:before{content:'\f28f'}
+.icon-csharp:before{content:'\f0b2'}
+.icon-cssthree:before{content:'\f06a'}
+.icon-cup-coffeealt:before{content:'\f24b'}
+.icon-cupcake:before{content:'\f35b'}
+.icon-curling:before{content:'\f3d7'}
+.icon-cursor:before{content:'\f0dc'}
+.icon-cut-scissors:before{content:'\f0ca'}
+.icon-dagger:before{content:'\2020'}
+.icon-danger:before{content:'\f415'}
+.icon-dart:before{content:'\f3d4'}
+.icon-darthvader:before{content:'\f34a'}
+.icon-database:before{content:'\f00b'}
+.icon-databaseadd:before{content:'\f00c'}
+.icon-databasedelete:before{content:'\f00d'}
+.icon-davidstar:before{content:'\f40e'}
+.icon-dcsource:before{content:'\f3e9'}
+.icon-dedicatedserver:before{content:'\f00e'}
+.icon-deletefile:before{content:'\f0c7'}
+.icon-deletefolder:before{content:'\f0db'}
+.icon-delicious:before{content:'\f152'}
+.icon-designcontest:before{content:'\f351'}
+.icon-desklamp:before{content:'\f412'}
+.icon-dialpad:before{content:'\f399'}
+.icon-diamond:before{content:'\2666'}
+.icon-diamonds:before{content:'\f2f7'}
+.icon-die-dice:before{content:'\f2d8'}
+.icon-diefive:before{content:'\f3fb'}
+.icon-diefour:before{content:'\f3fa'}
+.icon-dieone:before{content:'\f3f7'}
+.icon-diesix:before{content:'\f3fc'}
+.icon-diethree:before{content:'\f3f9'}
+.icon-dietwo:before{content:'\f3f8'}
+.icon-diode:before{content:'\f3e7'}
+.icon-director:before{content:'\f2ae'}
+.icon-diskspace:before{content:'\f096'}
+.icon-distributehorizontalcenters:before{content:'\f1dc'}
+.icon-distributeverticalcenters:before{content:'\f1db'}
+.icon-divide:before{content:'\00f7'}
+.icon-dna:before{content:'\f409'}
+.icon-dnszone:before{content:'\f07f'}
+.icon-document:before{content:'\f0c2'}
+.icon-doghouse:before{content:'\f38f'}
+.icon-dollar:before{content:'\24'}
+.icon-dollaralt:before{content:'\f259'}
+.icon-dolphinsoftware:before{content:'\f064'}
+.icon-domain:before{content:'\f01d'}
+.icon-domainaddon:before{content:'\f053'}
+.icon-domino:before{content:'\f3d5'}
+.icon-donut:before{content:'\f3ca'}
+.icon-downleft:before{content:'\f2ff'}
+.icon-download:before{content:'\f47b'}
+.icon-download-alt:before{content:'\f11a'}
+.icon-downright:before{content:'\f300'}
+.icon-draft:before{content:'\f172'}
+.icon-dreamweaver:before{content:'\f1d0'}
+.icon-dribbble:before{content:'\f14c'}
+.icon-dropmenu:before{content:'\f0a5'}
+.icon-drupal:before{content:'\f075'}
+.icon-drwho:before{content:'\f3c0'}
+.icon-edit:before{content:'\f47c'}
+.icon-editalt:before{content:'\f0f2'}
+.icon-egg:before{content:'\f407'}
+.icon-eightball:before{content:'\f36e'}
+.icon-eject:before{content:'\f199'}
+.icon-elipse:before{content:'\f1bc'}
+.icon-emailalt:before{content:'\f136'}
+.icon-emailexport:before{content:'\f176'}
+.icon-emailforward:before{content:'\f175'}
+.icon-emailforwarders:before{content:'\f049'}
+.icon-emailimport:before{content:'\f177'}
+.icon-emailrefresh:before{content:'\f174'}
+.icon-emailtrace:before{content:'\f091'}
+.icon-emergency:before{content:'\f246'}
+.icon-emptycart:before{content:'\f395'}
+.icon-enter:before{content:'\f323'}
+.icon-envelope:before{content:'\f028'}
+.icon-equalizer:before{content:'\f18e'}
+.icon-equalizeralt:before{content:'\f18f'}
+.icon-equals:before{content:'\f30c'}
+.icon-eraser:before{content:'\f1f1'}
+.icon-erroralt:before{content:'\f05a'}
+.icon-euro:before{content:'\20ac'}
+.icon-euroalt:before{content:'\f25a'}
+.icon-evernote:before{content:'\f17c'}
+.icon-exchange-currency:before{content:'\f26b'}
+.icon-exclamation-sign:before{content:'\f04a'}
+.icon-excludeshape:before{content:'\f200'}
+.icon-exit:before{content:'\f324'}
+.icon-explorerwindow:before{content:'\f0d9'}
+.icon-exportfile:before{content:'\f32f'}
+.icon-exposure:before{content:'\f1de'}
+.icon-extinguisher:before{content:'\f2b7'}
+.icon-eye-close:before{content:'\f481'}
+.icon-eye-open:before{content:'\f2b5'}
+.icon-eye-view:before{content:'\f280'}
+.icon-eyedropper:before{content:'\f1ad'}
+.icon-facebook:before{content:'\f140'}
+.icon-facebookalt:before{content:'\f14b'}
+.icon-facetime-video:before{content:'\f19c'}
+.icon-factory:before{content:'\f27a'}
+.icon-fantastico:before{content:'\f0ae'}
+.icon-faq:before{content:'\f099'}
+.icon-fast-backward:before{content:'\f47e'}
+.icon-fast-forward:before{content:'\f47f'}
+.icon-fastdown:before{content:'\f31d'}
+.icon-fastleft:before{content:'\f31a'}
+.icon-fastright:before{content:'\f31b'}
+.icon-fastup:before{content:'\f31c'}
+.icon-favoritefile:before{content:'\f381'}
+.icon-favoritefolder:before{content:'\f382'}
+.icon-featheralt-write:before{content:'\f1c5'}
+.icon-fedora:before{content:'\f3f1'}
+.icon-fence:before{content:'\f2af'}
+.icon-file:before{content:'\f0d6'}
+.icon-film:before{content:'\f19d'}
+.icon-filmstrip:before{content:'\f3ed'}
+.icon-filter:before{content:'\f05c'}
+.icon-finder:before{content:'\f398'}
+.icon-fire:before{content:'\f27f'}
+.icon-firefox:before{content:'\f420'}
+.icon-firewall:before{content:'\f021'}
+.icon-firewire:before{content:'\f0fc'}
+.icon-firstaid:before{content:'\f2ba'}
+.icon-fish:before{content:'\f35a'}
+.icon-fishbone:before{content:'\f42b'}
+.icon-flag:before{content:'\f487'}
+.icon-flagalt:before{content:'\f232'}
+.icon-flagtriangle:before{content:'\f20b'}
+.icon-flash:before{content:'\f1cf'}
+.icon-flashlight:before{content:'\f299'}
+.icon-flashplayer:before{content:'\f070'}
+.icon-flaskfull:before{content:'\f27e'}
+.icon-flickr:before{content:'\f146'}
+.icon-flower:before{content:'\f2a5'}
+.icon-flowernew:before{content:'\f3a8'}
+.icon-folder-close:before{content:'\f094'}
+.icon-folder-open:before{content:'\f483'}
+.icon-foldertree:before{content:'\f0f0'}
+.icon-font:before{content:'\f1ae'}
+.icon-foodtray:before{content:'\f3d0'}
+.icon-football-soccer:before{content:'\f2eb'}
+.icon-forbiddenalt:before{content:'\f314'}
+.icon-forest-tree:before{content:'\f217'}
+.icon-forestalt-treealt:before{content:'\f21c'}
+.icon-fork:before{content:'\22d4'}
+.icon-forklift:before{content:'\f29b'}
+.icon-form:before{content:'\f08c'}
+.icon-forrst:before{content:'\f14d'}
+.icon-fort:before{content:'\f400'}
+.icon-forward:before{content:'\f182'}
+.icon-fourohfour:before{content:'\f09d'}
+.icon-foursquare:before{content:'\f42a'}
+.icon-freeway:before{content:'\f24a'}
+.icon-fridge:before{content:'\f40d'}
+.icon-fries:before{content:'\f36a'}
+.icon-ftp:before{content:'\f029'}
+.icon-ftpaccounts:before{content:'\f07b'}
+.icon-ftpsession:before{content:'\f07c'}
+.icon-fullscreen:before{content:'\f485'}
+.icon-gameboy:before{content:'\f403'}
+.icon-gamecursor:before{content:'\f2d0'}
+.icon-gasstation:before{content:'\f216'}
+.icon-gearfour:before{content:'\f3a7'}
+.icon-ghost:before{content:'\f2da'}
+.icon-gift:before{content:'\f260'}
+.icon-github:before{content:'\f081'}
+.icon-glass:before{content:'\f236'}
+.icon-glasses:before{content:'\f295'}
+.icon-glassesalt:before{content:'\f39d'}
+.icon-globe:before{content:'\f01b'}
+.icon-globealt:before{content:'\f36c'}
+.icon-glue:before{content:'\f36d'}
+.icon-gmail:before{content:'\f150'}
+.icon-golf:before{content:'\f2f1'}
+.icon-googledrive:before{content:'\f163'}
+.icon-googleplus:before{content:'\f165'}
+.icon-googlewallet:before{content:'\f270'}
+.icon-gpsoff-gps:before{content:'\f21e'}
+.icon-gpson:before{content:'\f21f'}
+.icon-gpu-graphicscard:before{content:'\f108'}
+.icon-gradient:before{content:'\2207'}
+.icon-grails:before{content:'\f085'}
+.icon-greenlantern:before{content:'\f340'}
+.icon-greenlightbulb:before{content:'\f406'}
+.icon-grooveshark:before{content:'\f3a2'}
+.icon-groups-friends:before{content:'\f134'}
+.icon-guitar:before{content:'\f19a'}
+.icon-halflife:before{content:'\f3ba'}
+.icon-halo:before{content:'\f3bb'}
+.icon-hamburger:before{content:'\f2b3'}
+.icon-hammer:before{content:'\f291'}
+.icon-hand-down:before{content:'\f387'}
+.icon-hand-left:before{content:'\f389'}
+.icon-hand-right:before{content:'\f388'}
+.icon-hand-up:before{content:'\f0dd'}
+.icon-handcuffs:before{content:'\f393'}
+.icon-handdrag:before{content:'\f0de'}
+.icon-handtwofingers:before{content:'\f0df'}
+.icon-hanger:before{content:'\f2ab'}
+.icon-happy:before{content:'\f13c'}
+.icon-harrypotter:before{content:'\f38b'}
+.icon-hdd:before{content:'\f02a'}
+.icon-hdtv:before{content:'\f1a0'}
+.icon-headphones:before{content:'\f180'}
+.icon-headphonesalt:before{content:'\f1a3'}
+.icon-heart:before{content:'\f131'}
+.icon-heartempty-love:before{content:'\f132'}
+.icon-hearts:before{content:'\f2f4'}
+.icon-helicopter:before{content:'\f3e4'}
+.icon-hexagon-polygon:before{content:'\f1be'}
+.icon-hockey:before{content:'\f3d9'}
+.icon-home:before{content:'\21b8'}
+.icon-homealt:before{content:'\f02b'}
+.icon-hospital:before{content:'\f247'}
+.icon-hotdog:before{content:'\f3cc'}
+.icon-hotlinkprotection:before{content:'\f050'}
+.icon-hourglassalt:before{content:'\f122'}
+.icon-html:before{content:'\f068'}
+.icon-htmlfive:before{content:'\f069'}
+.icon-hydrant:before{content:'\f3ff'}
+.icon-icecream:before{content:'\f2a4'}
+.icon-icecreamalt:before{content:'\f289'}
+.icon-illustrator:before{content:'\f1ce'}
+.icon-imac:before{content:'\f0fb'}
+.icon-images-gallery:before{content:'\f09f'}
+.icon-importcontacts:before{content:'\f092'}
+.icon-importfile:before{content:'\f32e'}
+.icon-inbox:before{content:'\f17a'}
+.icon-inboxalt:before{content:'\f178'}
+.icon-incomingcall:before{content:'\f15d'}
+.icon-indent-left:before{content:'\f1f2'}
+.icon-indent-right:before{content:'\f1f3'}
+.icon-indexmanager:before{content:'\f09e'}
+.icon-infinity:before{content:'\221e'}
+.icon-info-sign:before{content:'\f315'}
+.icon-infographic:before{content:'\f336'}
+.icon-ink:before{content:'\f3f6'}
+.icon-inkpen:before{content:'\f1ac'}
+.icon-insertbarchart:before{content:'\f1e5'}
+.icon-insertpicture:before{content:'\f1e0'}
+.icon-insertpicturecenter:before{content:'\f1e3'}
+.icon-insertpictureleft:before{content:'\f1e1'}
+.icon-insertpictureright:before{content:'\f1e2'}
+.icon-insertpiechart:before{content:'\f1e4'}
+.icon-instagram:before{content:'\f14a'}
+.icon-install:before{content:'\f128'}
+.icon-intel:before{content:'\f01f'}
+.icon-intersection:before{content:'\2229'}
+.icon-intersectshape:before{content:'\f1ff'}
+.icon-invert:before{content:'\f1df'}
+.icon-invoice:before{content:'\f3e5'}
+.icon-ipcontrol:before{content:'\f08b'}
+.icon-iphone:before{content:'\f0e6'}
+.icon-ipod:before{content:'\f190'}
+.icon-ironman:before{content:'\f349'}
+.icon-islam:before{content:'\f410'}
+.icon-island:before{content:'\f392'}
+.icon-italic:before{content:'\f1f5'}
+.icon-jar:before{content:'\f2b6'}
+.icon-jason:before{content:'\f38c'}
+.icon-java:before{content:'\f083'}
+.icon-joomla:before{content:'\f073'}
+.icon-joystickarcade:before{content:'\f2d4'}
+.icon-joystickatari:before{content:'\f2d5'}
+.icon-jquery:before{content:'\f06b'}
+.icon-jqueryui:before{content:'\f06c'}
+.icon-kerning:before{content:'\f1e9'}
+.icon-key:before{content:'\f093'}
+.icon-keyboard:before{content:'\f119'}
+.icon-keyboardalt:before{content:'\f105'}
+.icon-keyboarddelete:before{content:'\f3a6'}
+.icon-kidney:before{content:'\f3e0'}
+.icon-king:before{content:'\f2fc'}
+.icon-knife:before{content:'\f214'}
+.icon-knight:before{content:'\f2fb'}
+.icon-knob:before{content:'\f376'}
+.icon-lab-flask:before{content:'\f27d'}
+.icon-lamp:before{content:'\f2b1'}
+.icon-lan:before{content:'\f0ee'}
+.icon-language:before{content:'\f042'}
+.icon-laptop:before{content:'\f0d8'}
+.icon-lasso:before{content:'\f396'}
+.icon-lastfm:before{content:'\f3a3'}
+.icon-laugh:before{content:'\f13f'}
+.icon-law:before{content:'\f263'}
+.icon-layers:before{content:'\f1ca'}
+.icon-layersalt:before{content:'\f1cb'}
+.icon-leaf:before{content:'\f039'}
+.icon-leechprotect:before{content:'\f07e'}
+.icon-legacyfilemanager:before{content:'\f095'}
+.icon-lego:before{content:'\f370'}
+.icon-lifeempty:before{content:'\f2e1'}
+.icon-lifefull:before{content:'\f2e3'}
+.icon-lifehacker:before{content:'\f380'}
+.icon-lifehalf:before{content:'\f2e2'}
+.icon-lifepreserver:before{content:'\f015'}
+.icon-lightbulb-idea:before{content:'\f338'}
+.icon-lighthouse:before{content:'\f3e6'}
+.icon-lightning:before{content:'\f231'}
+.icon-lightningalt:before{content:'\f2a8'}
+.icon-line:before{content:'\f1bf'}
+.icon-lineheight:before{content:'\f1c0'}
+.icon-link:before{content:'\f022'}
+.icon-linkalt:before{content:'\f333'}
+.icon-linkedin:before{content:'\f166'}
+.icon-linux:before{content:'\f01a'}
+.icon-list:before{content:'\f111'}
+.icon-list-alt:before{content:'\f480'}
+.icon-liver:before{content:'\f3e2'}
+.icon-loading-hourglass:before{content:'\f123'}
+.icon-loadingalt:before{content:'\f339'}
+.icon-lock:before{content:'\f0be'}
+.icon-lockalt-keyhole:before{content:'\f0eb'}
+.icon-lollypop:before{content:'\f3ee'}
+.icon-lungs:before{content:'\f3df'}
+.icon-macpro:before{content:'\f3a5'}
+.icon-macro-plant:before{content:'\f1c6'}
+.icon-magazine:before{content:'\f1ec'}
+.icon-magento:before{content:'\f06e'}
+.icon-magnet:before{content:'\f281'}
+.icon-mailbox:before{content:'\f044'}
+.icon-mailinglists:before{content:'\f090'}
+.icon-man-male:before{content:'\f2a1'}
+.icon-managedhosting:before{content:'\f038'}
+.icon-map:before{content:'\f209'}
+.icon-map-marker:before{content:'\f220'}
+.icon-marker:before{content:'\f204'}
+.icon-marvin:before{content:'\f3dd'}
+.icon-mastercard:before{content:'\f266'}
+.icon-maximize:before{content:'\f30f'}
+.icon-medal:before{content:'\f2e5'}
+.icon-medalbronze:before{content:'\f2e8'}
+.icon-medalgold:before{content:'\f2e6'}
+.icon-medalsilver:before{content:'\f2e7'}
+.icon-mediarepeat:before{content:'\f187'}
+.icon-men:before{content:'\f24c'}
+.icon-menu:before{content:'\f127'}
+.icon-merge:before{content:'\f334'}
+.icon-mergecells:before{content:'\f327'}
+.icon-mergeshapes:before{content:'\f201'}
+.icon-metro-subway:before{content:'\f24f'}
+.icon-metronome:before{content:'\f374'}
+.icon-mickeymouse:before{content:'\f37a'}
+.icon-microphone:before{content:'\f191'}
+.icon-microscope:before{content:'\f283'}
+.icon-microsd:before{content:'\f107'}
+.icon-microwave:before{content:'\f42e'}
+.icon-mimetype:before{content:'\f057'}
+.icon-minimize:before{content:'\f30e'}
+.icon-minus:before{content:'\2212'}
+.icon-minus-sign:before{content:'\f477'}
+.icon-missedcall:before{content:'\f15c'}
+.icon-mobile:before{content:'\f0e8'}
+.icon-moleskine:before{content:'\f1f0'}
+.icon-money-cash:before{content:'\f27b'}
+.icon-moneybag:before{content:'\f271'}
+.icon-monitor:before{content:'\f0d5'}
+.icon-monstersinc:before{content:'\f3bd'}
+.icon-moon-night:before{content:'\f207'}
+.icon-mouse:before{content:'\f0d4'}
+.icon-mousealt:before{content:'\f126'}
+.icon-move:before{content:'\f322'}
+.icon-movieclapper:before{content:'\f193'}
+.icon-moviereel:before{content:'\f17f'}
+.icon-muffin:before{content:'\f363'}
+.icon-mug:before{content:'\f24e'}
+.icon-mushroom:before{content:'\f35e'}
+.icon-music:before{content:'\f181'}
+.icon-musicalt:before{content:'\f18d'}
+.icon-mutealt:before{content:'\f0e5'}
+.icon-mxentry:before{content:'\f07a'}
+.icon-mybb:before{content:'\f065'}
+.icon-myspace:before{content:'\f153'}
+.icon-mysql-dolphin:before{content:'\f076'}
+.icon-nail:before{content:'\f428'}
+.icon-navigation:before{content:'\f23a'}
+.icon-network:before{content:'\f0a6'}
+.icon-networksignal:before{content:'\f3a9'}
+.icon-news:before{content:'\f256'}
+.icon-newtab:before{content:'\f16f'}
+.icon-newwindow:before{content:'\f16d'}
+.icon-next:before{content:'\f18a'}
+.icon-nexus:before{content:'\f0e7'}
+.icon-nintendods:before{content:'\f404'}
+.icon-nodejs:before{content:'\f084'}
+.icon-notes:before{content:'\f0d7'}
+.icon-notificationbottom:before{content:'\f144'}
+.icon-notificationtop:before{content:'\f145'}
+.icon-nut:before{content:'\f427'}
+.icon-off:before{content:'\f11d'}
+.icon-office-building:before{content:'\f245'}
+.icon-officechair:before{content:'\f26d'}
+.icon-ok:before{content:'\2713'}
+.icon-ok-circle:before{content:'\f471'}
+.icon-ok-sign:before{content:'\f479'}
+.icon-oneup:before{content:'\f3b7'}
+.icon-oneupalt:before{content:'\f3b6'}
+.icon-opencart:before{content:'\f060'}
+.icon-opennewwindow:before{content:'\f332'}
+.icon-orange:before{content:'\f29e'}
+.icon-outbox:before{content:'\f179'}
+.icon-outgoingcall:before{content:'\f15e'}
+.icon-oxwall:before{content:'\f06d'}
+.icon-pacman:before{content:'\f2db'}
+.icon-pageback:before{content:'\f31e'}
+.icon-pagebreak:before{content:'\f1cc'}
+.icon-pageforward:before{content:'\f31f'}
+.icon-pagesetup:before{content:'\f331'}
+.icon-paintbrush:before{content:'\f1e8'}
+.icon-paintroll:before{content:'\f1fa'}
+.icon-palette-painting:before{content:'\f1b9'}
+.icon-paperclip:before{content:'\f284'}
+.icon-paperclipalt:before{content:'\f285'}
+.icon-paperclipvertical:before{content:'\f286'}
+.icon-paperplane:before{content:'\f296'}
+.icon-parentheses:before{content:'\f3c4'}
+.icon-parkeddomain:before{content:'\f055'}
+.icon-password:before{content:'\f03e'}
+.icon-passwordalt:before{content:'\f03f'}
+.icon-pasta:before{content:'\f408'}
+.icon-patch:before{content:'\f2a3'}
+.icon-path:before{content:'\f169'}
+.icon-pause:before{content:'\f186'}
+.icon-paw-pet:before{content:'\f29d'}
+.icon-pawn:before{content:'\f2f8'}
+.icon-paypal:before{content:'\f267'}
+.icon-peace:before{content:'\f2a7'}
+.icon-pen:before{content:'\f1ee'}
+.icon-pencil:before{content:'\f1b7'}
+.icon-pepperoni:before{content:'\f364'}
+.icon-percent:before{content:'\25'}
+.icon-perl-camel:before{content:'\f0b6'}
+.icon-perlalt:before{content:'\f0b7'}
+.icon-phone-call:before{content:'\f14f'}
+.icon-phonealt:before{content:'\f15b'}
+.icon-phonebook:before{content:'\f149'}
+.icon-phonebookalt:before{content:'\f135'}
+.icon-phonemic:before{content:'\f391'}
+.icon-phoneold:before{content:'\f148'}
+.icon-photoshop:before{content:'\f1cd'}
+.icon-php:before{content:'\f09c'}
+.icon-phpbb:before{content:'\f063'}
+.icon-phppear:before{content:'\f09b'}
+.icon-piano:before{content:'\f19e'}
+.icon-picture:before{content:'\22b7'}
+.icon-pictureframe:before{content:'\f41e'}
+.icon-piggybank:before{content:'\f257'}
+.icon-pigpena:before{content:'\f456'}
+.icon-pigpenb:before{content:'\f457'}
+.icon-pigpenc:before{content:'\f458'}
+.icon-pigpend:before{content:'\f459'}
+.icon-pigpene:before{content:'\f45a'}
+.icon-pigpenf:before{content:'\f45b'}
+.icon-pigpeng:before{content:'\f45c'}
+.icon-pigpenh:before{content:'\f45d'}
+.icon-pigpeni:before{content:'\f45e'}
+.icon-pigpenj:before{content:'\f45f'}
+.icon-pigpenk:before{content:'\f460'}
+.icon-pigpenl:before{content:'\f461'}
+.icon-pigpenm:before{content:'\f462'}
+.icon-pigpenn:before{content:'\f463'}
+.icon-pigpeno:before{content:'\f464'}
+.icon-pigpenp:before{content:'\f465'}
+.icon-pigpenq:before{content:'\f466'}
+.icon-pigpenr:before{content:'\f467'}
+.icon-pigpens:before{content:'\f468'}
+.icon-pigpent:before{content:'\f469'}
+.icon-pigpenu:before{content:'\f46a'}
+.icon-pigpenv:before{content:'\f46b'}
+.icon-pigpenw:before{content:'\f46c'}
+.icon-pigpenx:before{content:'\f46d'}
+.icon-pigpeny:before{content:'\f46e'}
+.icon-pigpenz:before{content:'\f46f'}
+.icon-pilcrow:before{content:'\00b6'}
+.icon-pill-antivirusalt:before{content:'\f0aa'}
+.icon-pin:before{content:'\f20a'}
+.icon-pipe:before{content:'\01c0'}
+.icon-piwigo:before{content:'\f0ad'}
+.icon-pizza:before{content:'\f35c'}
+.icon-placeadd:before{content:'\f221'}
+.icon-placealt:before{content:'\f224'}
+.icon-placealtadd:before{content:'\f225'}
+.icon-placealtdelete:before{content:'\f226'}
+.icon-placedelete:before{content:'\f222'}
+.icon-placeios:before{content:'\f20c'}
+.icon-plane:before{content:'\f23e'}
+.icon-plaque:before{content:'\f2b8'}
+.icon-play:before{content:'\f184'}
+.icon-play-circle:before{content:'\f17e'}
+.icon-playstore:before{content:'\f255'}
+.icon-playvideo:before{content:'\f03d'}
+.icon-plug:before{content:'\f0ea'}
+.icon-pluginalt:before{content:'\f098'}
+.icon-plus:before{content:'\002b'}
+.icon-plus-sign:before{content:'\f476'}
+.icon-pocket:before{content:'\f16b'}
+.icon-podcast:before{content:'\f1a2'}
+.icon-podium-winner:before{content:'\f2d6'}
+.icon-pokemon:before{content:'\f354'}
+.icon-police:before{content:'\f2aa'}
+.icon-polygonlasso:before{content:'\f397'}
+.icon-post:before{content:'\f12e'}
+.icon-postalt:before{content:'\f130'}
+.icon-pound:before{content:'\f25b'}
+.icon-poundalt:before{content:'\f25c'}
+.icon-powerjack:before{content:'\f0fd'}
+.icon-powerplug:before{content:'\f0ed'}
+.icon-powerplugeu:before{content:'\f28b'}
+.icon-powerplugus:before{content:'\f28c'}
+.icon-presentation:before{content:'\f0c4'}
+.icon-prestashop:before{content:'\f061'}
+.icon-pretzel:before{content:'\f3cf'}
+.icon-preview:before{content:'\f330'}
+.icon-previous:before{content:'\f18b'}
+.icon-print:before{content:'\f125'}
+.icon-protecteddirectory:before{content:'\f04d'}
+.icon-pscircle:before{content:'\f2bb'}
+.icon-pscursor:before{content:'\f2c3'}
+.icon-psdown:before{content:'\f2c6'}
+.icon-psleft:before{content:'\f2c7'}
+.icon-pslone:before{content:'\f2cc'}
+.icon-psltwo:before{content:'\f2cd'}
+.icon-psright:before{content:'\f2c5'}
+.icon-psrone:before{content:'\f2ce'}
+.icon-psrtwo:before{content:'\f2cf'}
+.icon-pssquare:before{content:'\f2bc'}
+.icon-pstriangle:before{content:'\f2bd'}
+.icon-psup:before{content:'\f2c4'}
+.icon-psx:before{content:'\f2be'}
+.icon-pull:before{content:'\f089'}
+.icon-punisher:before{content:'\f343'}
+.icon-push:before{content:'\f088'}
+.icon-puzzle-plugin:before{content:'\f0a0'}
+.icon-python:before{content:'\f071'}
+.icon-qrcode:before{content:'\f275'}
+.icon-quake:before{content:'\f355'}
+.icon-queen:before{content:'\f2fd'}
+.icon-query:before{content:'\f08a'}
+.icon-question-sign:before{content:'\f0a3'}
+.icon-quote:before{content:'\f12f'}
+.icon-quotedown:before{content:'\f329'}
+.icon-quoteup:before{content:'\f328'}
+.icon-raceflag:before{content:'\f38e'}
+.icon-racquet:before{content:'\f2f2'}
+.icon-radio:before{content:'\f1a1'}
+.icon-radioactive:before{content:'\f282'}
+.icon-radiobutton:before{content:'\f312'}
+.icon-railroad:before{content:'\f248'}
+.icon-rain:before{content:'\f22f'}
+.icon-ram:before{content:'\f02c'}
+.icon-random:before{content:'\f188'}
+.icon-rar:before{content:'\f117'}
+.icon-raspberry:before{content:'\f368'}
+.icon-raspberrypi:before{content:'\f369'}
+.icon-rawaccesslogs:before{content:'\f0c1'}
+.icon-razor:before{content:'\f416'}
+.icon-reademail:before{content:'\f173'}
+.icon-record:before{content:'\f189'}
+.icon-rectangle:before{content:'\25ad'}
+.icon-recycle:before{content:'\f297'}
+.icon-reddit:before{content:'\f154'}
+.icon-redirect:before{content:'\f054'}
+.icon-refresh:before{content:'\f078'}
+.icon-reliability:before{content:'\f016'}
+.icon-remote:before{content:'\f298'}
+.icon-remove:before{content:'\00d7'}
+.icon-remove-circle:before{content:'\f470'}
+.icon-remove-sign:before{content:'\f478'}
+.icon-removefriend:before{content:'\f3db'}
+.icon-repeat:before{content:'\f32b'}
+.icon-repeatone:before{content:'\f196'}
+.icon-resellerhosting:before{content:'\f03a'}
+.icon-residentevil:before{content:'\f350'}
+.icon-resistor:before{content:'\f3eb'}
+.icon-resize:before{content:'\f1ed'}
+.icon-resize-full:before{content:'\f325'}
+.icon-resize-horizontal:before{content:'\f318'}
+.icon-resize-small:before{content:'\f326'}
+.icon-resize-vertical:before{content:'\f319'}
+.icon-restart:before{content:'\f11f'}
+.icon-restaurantmenu:before{content:'\f362'}
+.icon-restore:before{content:'\f30d'}
+.icon-restricted:before{content:'\f0ab'}
+.icon-retweet:before{content:'\f486'}
+.icon-rim:before{content:'\f36f'}
+.icon-ring:before{content:'\02da'}
+.icon-road:before{content:'\f249'}
+.icon-roadsign-roadsignright:before{content:'\f21b'}
+.icon-roadsignleft:before{content:'\f240'}
+.icon-robocop:before{content:'\f357'}
+.icon-rocket-launch:before{content:'\f29c'}
+.icon-rook:before{content:'\f2fa'}
+.icon-root:before{content:'\f33c'}
+.icon-rorschach:before{content:'\f358'}
+.icon-rotateclockwise:before{content:'\f202'}
+.icon-rotatecounterclockwise:before{content:'\f203'}
+.icon-roundrectangle:before{content:'\f1bd'}
+.icon-route:before{content:'\f402'}
+.icon-router:before{content:'\f0e9'}
+.icon-rss:before{content:'\f17b'}
+.icon-rubberstamp:before{content:'\f274'}
+.icon-ruby:before{content:'\f067'}
+.icon-ruler:before{content:'\f1ef'}
+.icon-sad:before{content:'\f13d'}
+.icon-safetypin:before{content:'\f417'}
+.icon-satellite:before{content:'\f38a'}
+.icon-satellitedish-remotemysql:before{content:'\f0c0'}
+.icon-save-floppy:before{content:'\f0c8'}
+.icon-scales:before{content:'\f3fd'}
+.icon-science-atom:before{content:'\f2b0'}
+.icon-scope-scan:before{content:'\f212'}
+.icon-scopealt:before{content:'\f237'}
+.icon-screenshot:before{content:'\f109'}
+.icon-screw:before{content:'\f426'}
+.icon-screwdriver:before{content:'\f292'}
+.icon-screwdriveralt:before{content:'\f293'}
+.icon-script:before{content:'\f08d'}
+.icon-sd:before{content:'\f106'}
+.icon-search:before{content:'\f0c5'}
+.icon-searchdocument:before{content:'\f419'}
+.icon-searchfolder:before{content:'\f41a'}
+.icon-security-shield:before{content:'\f02d'}
+.icon-securityalt-shieldalt:before{content:'\f02e'}
+.icon-selection-rectangleselection:before{content:'\f1b0'}
+.icon-selectionadd:before{content:'\f1b2'}
+.icon-selectionintersect:before{content:'\f1b4'}
+.icon-selectionremove:before{content:'\f1b3'}
+.icon-seo:before{content:'\f030'}
+.icon-server:before{content:'\f026'}
+.icon-servers:before{content:'\f027'}
+.icon-settingsandroid:before{content:'\f309'}
+.icon-settingsfour-gearsalt:before{content:'\f306'}
+.icon-settingsthree-gears:before{content:'\f307'}
+.icon-settingstwo-gearalt:before{content:'\f308'}
+.icon-shades-sunglasses:before{content:'\f294'}
+.icon-shapes:before{content:'\f1dd'}
+.icon-share:before{content:'\f47d'}
+.icon-share-alt:before{content:'\f16c'}
+.icon-sharealt:before{content:'\f147'}
+.icon-sharedfile:before{content:'\f0ef'}
+.icon-sharedhosting:before{content:'\f037'}
+.icon-sharethree:before{content:'\f414'}
+.icon-sheriff:before{content:'\f2a9'}
+.icon-shipping:before{content:'\f23f'}
+.icon-shopping:before{content:'\f010'}
+.icon-shopping-cart:before{content:'\f035'}
+.icon-shoppingbag:before{content:'\f273'}
+.icon-shortcut:before{content:'\f043'}
+.icon-shovel:before{content:'\f290'}
+.icon-shredder:before{content:'\f27c'}
+.icon-shutdown:before{content:'\f11e'}
+.icon-sidebar:before{content:'\f124'}
+.icon-signal:before{content:'\f100'}
+.icon-sim:before{content:'\f0e1'}
+.icon-simalt:before{content:'\f121'}
+.icon-skrill:before{content:'\f268'}
+.icon-skull:before{content:'\f38d'}
+.icon-skype:before{content:'\f141'}
+.icon-skypeaway:before{content:'\f39f'}
+.icon-skypebusy:before{content:'\f3a0'}
+.icon-skypeoffline:before{content:'\f3a1'}
+.icon-skypeonline:before{content:'\f39e'}
+.icon-smaller:before{content:'\f30b'}
+.icon-smf:before{content:'\f062'}
+.icon-smile:before{content:'\263a'}
+.icon-snow:before{content:'\f22e'}
+.icon-snowman:before{content:'\f37c'}
+.icon-socialnetwork:before{content:'\f03b'}
+.icon-software:before{content:'\f09a'}
+.icon-sortbynameascending-atoz:before{content:'\f1c2'}
+.icon-sortbynamedescending-ztoa:before{content:'\f1c1'}
+.icon-sortbysizeascending:before{content:'\f1c3'}
+.icon-sortbysizedescending:before{content:'\f1c4'}
+.icon-soundwave:before{content:'\f194'}
+.icon-soup:before{content:'\f3d1'}
+.icon-spaceinvaders:before{content:'\f352'}
+.icon-spades:before{content:'\f2f5'}
+.icon-spam:before{content:'\f047'}
+.icon-spamalt:before{content:'\f048'}
+.icon-spawn:before{content:'\f344'}
+.icon-speaker:before{content:'\f372'}
+.icon-speed:before{content:'\f40b'}
+.icon-spider:before{content:'\f346'}
+.icon-spiderman:before{content:'\f347'}
+.icon-split:before{content:'\f335'}
+.icon-spoon:before{content:'\f213'}
+.icon-spray:before{content:'\f1c7'}
+.icon-spreadsheet:before{content:'\f0c3'}
+.icon-squareapp:before{content:'\f26f'}
+.icon-squarebrackets:before{content:'\f0b3'}
+.icon-ssh:before{content:'\f04e'}
+.icon-sslmanager:before{content:'\f04f'}
+.icon-stadium:before{content:'\f3d6'}
+.icon-stamp:before{content:'\f242'}
+.icon-stampalt:before{content:'\f243'}
+.icon-star:before{content:'\f13a'}
+.icon-star-empty:before{content:'\f13b'}
+.icon-starempty:before{content:'\f2de'}
+.icon-starfull:before{content:'\f2e0'}
+.icon-starhalf:before{content:'\f2df'}
+.icon-steak:before{content:'\f360'}
+.icon-steam:before{content:'\f2dd'}
+.icon-step-backward:before{content:'\f198'}
+.icon-step-forward:before{content:'\f197'}
+.icon-sticker:before{content:'\f3f5'}
+.icon-stiletto:before{content:'\f429'}
+.icon-stockdown:before{content:'\f252'}
+.icon-stocks:before{content:'\f250'}
+.icon-stockup:before{content:'\f251'}
+.icon-stomach:before{content:'\f3e1'}
+.icon-stop:before{content:'\f185'}
+.icon-stopwatch:before{content:'\f219'}
+.icon-storage-box:before{content:'\f011'}
+.icon-storagealt-drawer:before{content:'\f012'}
+.icon-store:before{content:'\f272'}
+.icon-storm:before{content:'\f230'}
+.icon-stove:before{content:'\f371'}
+.icon-strawberry:before{content:'\f3f3'}
+.icon-strikethrough:before{content:'\f1f7'}
+.icon-student-school:before{content:'\f288'}
+.icon-stumbleupon:before{content:'\f40c'}
+.icon-subdomain:before{content:'\f052'}
+.icon-submarine:before{content:'\f373'}
+.icon-subscript:before{content:'\f1ea'}
+.icon-subtractshape:before{content:'\f1fe'}
+.icon-sum:before{content:'\f33b'}
+.icon-sun-day:before{content:'\f206'}
+.icon-sunnysideup:before{content:'\f365'}
+.icon-superman:before{content:'\f33f'}
+.icon-superscript:before{content:'\f1eb'}
+.icon-support:before{content:'\f013'}
+.icon-supportalt:before{content:'\f014'}
+.icon-switch:before{content:'\f28a'}
+.icon-switchoff:before{content:'\f32d'}
+.icon-switchoffalt:before{content:'\f28e'}
+.icon-switchon:before{content:'\f32c'}
+.icon-switchonalt:before{content:'\f28d'}
+.icon-sword:before{content:'\f2ed'}
+.icon-sync:before{content:'\f0bd'}
+.icon-syncalt:before{content:'\f11c'}
+.icon-synckeeplocal:before{content:'\f33e'}
+.icon-synckeepserver:before{content:'\f33d'}
+.icon-syringe-antivirus:before{content:'\f0a9'}
+.icon-tablet:before{content:'\f118'}
+.icon-tabletennis-pingpong:before{content:'\f2f0'}
+.icon-taco:before{content:'\f3cd'}
+.icon-tag:before{content:'\f032'}
+.icon-tagalt-pricealt:before{content:'\f264'}
+.icon-tags:before{content:'\f482'}
+.icon-tagvertical:before{content:'\f15f'}
+.icon-tank:before{content:'\f423'}
+.icon-target:before{content:'\f2a6'}
+.icon-taskmanager-logprograms:before{content:'\f04b'}
+.icon-tasks:before{content:'\f0e0'}
+.icon-taxi:before{content:'\f3a4'}
+.icon-tea:before{content:'\f3cb'}
+.icon-teapot:before{content:'\f42c'}
+.icon-telescope:before{content:'\f3ef'}
+.icon-temperature-thermometer:before{content:'\f20d'}
+.icon-temperaturealt-thermometeralt:before{content:'\f20e'}
+.icon-tennis:before{content:'\f2ea'}
+.icon-tent-camping:before{content:'\f215'}
+.icon-terminal:before{content:'\f114'}
+.icon-tethering:before{content:'\f0f1'}
+.icon-tetrisone:before{content:'\f34b'}
+.icon-tetristhree:before{content:'\f34d'}
+.icon-tetristwo:before{content:'\f34c'}
+.icon-text-height:before{content:'\f1f8'}
+.icon-text-width:before{content:'\f1f9'}
+.icon-th:before{content:'\f110'}
+.icon-th-large:before{content:'\f112'}
+.icon-th-list:before{content:'\f113'}
+.icon-theather:before{content:'\f39c'}
+.icon-theme-style:before{content:'\f041'}
+.icon-thissideup:before{content:'\f41d'}
+.icon-threecolumns:before{content:'\f1ab'}
+.icon-thumbs-down:before{content:'\f139'}
+.icon-thumbs-up:before{content:'\f138'}
+.icon-ticket:before{content:'\f3dc'}
+.icon-tictactoe:before{content:'\f39a'}
+.icon-tie-business:before{content:'\2040'}
+.icon-time:before{content:'\f210'}
+.icon-timeline:before{content:'\f253'}
+.icon-tint:before{content:'\f208'}
+.icon-toast:before{content:'\f2ad'}
+.icon-toiletpaper:before{content:'\f384'}
+.icon-tooth:before{content:'\f3de'}
+.icon-toothbrush:before{content:'\f385'}
+.icon-tophat:before{content:'\f3f0'}
+.icon-torigate:before{content:'\f411'}
+.icon-touchpad:before{content:'\f115'}
+.icon-trafficlight:before{content:'\f22a'}
+.icon-transform:before{content:'\f1a6'}
+.icon-trash:before{content:'\f0ce'}
+.icon-trashempty:before{content:'\f0cf'}
+.icon-trashfull:before{content:'\f0d0'}
+.icon-travel:before{content:'\f422'}
+.icon-treediagram:before{content:'\f0ec'}
+.icon-treeornament:before{content:'\f37e'}
+.icon-triangle:before{content:'\25b3'}
+.icon-tron:before{content:'\f34f'}
+.icon-trophy:before{content:'\f2d7'}
+.icon-truck:before{content:'\f211'}
+.icon-trumpet:before{content:'\f375'}
+.icon-tumblr:before{content:'\f164'}
+.icon-tv:before{content:'\f1a4'}
+.icon-twitter:before{content:'\f16a'}
+.icon-twocolumnsleft:before{content:'\f1a9'}
+.icon-twocolumnsleftalt:before{content:'\f1aa'}
+.icon-twocolumnsright:before{content:'\f1a7'}
+.icon-twocolumnsrightalt:before{content:'\f1a8'}
+.icon-ubuntu:before{content:'\f120'}
+.icon-umbrella:before{content:'\f218'}
+.icon-underline:before{content:'\f1f6'}
+.icon-undo:before{content:'\f32a'}
+.icon-unlock:before{content:'\f0bf'}
+.icon-upleft:before{content:'\f302'}
+.icon-upload:before{content:'\f47a'}
+.icon-uploadalt:before{content:'\f11b'}
+.icon-upright:before{content:'\f303'}
+.icon-uptime:before{content:'\f017'}
+.icon-usb:before{content:'\f10d'}
+.icon-usbalt:before{content:'\f10e'}
+.icon-usbplug:before{content:'\f10f'}
+.icon-user:before{content:'\f133'}
+.icon-userfilter:before{content:'\f05d'}
+.icon-usfootball:before{content:'\f2ec'}
+.icon-value-coins:before{content:'\f018'}
+.icon-vector:before{content:'\f1b6'}
+.icon-vendetta:before{content:'\f3c5'}
+.icon-video:before{content:'\f17d'}
+.icon-viking:before{content:'\f379'}
+.icon-vimeo:before{content:'\f168'}
+.icon-vinyl:before{content:'\f0cc'}
+.icon-violin:before{content:'\f1a5'}
+.icon-virus:before{content:'\f0a8'}
+.icon-visa:before{content:'\f3c2'}
+.icon-visitor:before{content:'\f097'}
+.icon-vlc-cone:before{content:'\f192'}
+.icon-voice:before{content:'\f18c'}
+.icon-volume-down:before{content:'\f0e3'}
+.icon-volume-off:before{content:'\f0e4'}
+.icon-volume-up:before{content:'\f0e2'}
+.icon-vps:before{content:'\f025'}
+.icon-wacom:before{content:'\f1bb'}
+.icon-walle:before{content:'\f3bc'}
+.icon-wallet:before{content:'\e000'}
+.icon-warcraft:before{content:'\f3bf'}
+.icon-warmedal:before{content:'\f2e4'}
+.icon-warning-sign:before{content:'\f316'}
+.icon-washer:before{content:'\f39b'}
+.icon-watch:before{content:'\f378'}
+.icon-watertap-plumbing:before{content:'\f22d'}
+.icon-wave-sea:before{content:'\f23c'}
+.icon-wavealt-seaalt:before{content:'\f23b'}
+.icon-webcam:before{content:'\f0fe'}
+.icon-webcamalt:before{content:'\f129'}
+.icon-webhostinghub:before{content:'\f031'}
+.icon-webmail:before{content:'\f045'}
+.icon-webpage:before{content:'\f033'}
+.icon-webplatform:before{content:'\f3c3'}
+.icon-websitealt:before{content:'\f01c'}
+.icon-websitebuilder:before{content:'\f034'}
+.icon-weight:before{content:'\f430'}
+.icon-westernunion:before{content:'\f26a'}
+.icon-wheel:before{content:'\f228'}
+.icon-wheelchair:before{content:'\f3fe'}
+.icon-whistle:before{content:'\f3d8'}
+.icon-whmcs:before{content:'\f066'}
+.icon-wifi:before{content:'\f0ff'}
+.icon-wind:before{content:'\f41b'}
+.icon-windleft:before{content:'\f424'}
+.icon-windows:before{content:'\f019'}
+.icon-windright:before{content:'\f425'}
+.icon-wine:before{content:'\f238'}
+.icon-wizard:before{content:'\f03c'}
+.icon-wizardalt:before{content:'\f1fb'}
+.icon-wizardhat:before{content:'\f337'}
+.icon-woman-female:before{content:'\f2a2'}
+.icon-women:before{content:'\f24d'}
+.icon-wordpress:before{content:'\f074'}
+.icon-wrench:before{content:'\f05b'}
+.icon-wrenchalt:before{content:'\f2b2'}
+.icon-xbox:before{content:'\f353'}
+.icon-xmen:before{content:'\f345'}
+.icon-yahoo:before{content:'\f151'}
+.icon-yen:before{content:'\00a5'}
+.icon-yenalt:before{content:'\f25d'}
+.icon-yinyang:before{content:'\262f'}
+.icon-youtube:before{content:'\f142'}
+.icon-zelda:before{content:'\f3b8'}
+.icon-zikula:before{content:'\f0ac'}
+.icon-zip:before{content:'\f116'}
+.icon-zodiac-aquarius:before{content:'\f3b4'}
+.icon-zodiac-aries:before{content:'\f3aa'}
+.icon-zodiac-cancer:before{content:'\f3ad'}
+.icon-zodiac-capricorn:before{content:'\f3b3'}
+.icon-zodiac-gemini:before{content:'\f3ac'}
+.icon-zodiac-leo:before{content:'\f3ae'}
+.icon-zodiac-libra:before{content:'\f3b0'}
+.icon-zodiac-pisces:before{content:'\f3b5'}
+.icon-zodiac-sagitarius:before{content:'\f3b2'}
+.icon-zodiac-scorpio:before{content:'\f3b1'}
+.icon-zodiac-taurus:before{content:'\f3ab'}
+.icon-zodiac-virgo:before{content:'\f3af'}
+.icon-zoom-in:before{content:'\f320'}
+.icon-zoom-out:before{content:'\f321'}
+.icon-vk:before{content:'\f34e'}
+.icon-bitcoin:before{content:'\f584'}
+.icon-rouble:before{content:'\f4ca'}
+.icon-phpnuke:before{content:'\f48c'}
+.icon-modx:before{content:'\f48d'}
+.icon-eoneohseven:before{content:'\f48e'}
+.icon-subrion:before{content:'\f48f'}
+.icon-typothree:before{content:'\f490'}
+.icon-tikiwiki:before{content:'\f491'}
+.icon-pligg:before{content:'\f492'}
+.icon-pyrocms:before{content:'\f493'}
+.icon-mambo:before{content:'\f494'}
+.icon-contao:before{content:'\f495'}
+.icon-crackedegg:before{content:'\f496'}
+.icon-coffeecupalt:before{content:'\f497'}
+.icon-reademailalt:before{content:'\f498'}
+.icon-train:before{content:'\f499'}
+.icon-shoebox:before{content:'\f49a'}
+.icon-bathtub:before{content:'\f49b'}
+.icon-ninegag:before{content:'\f49c'}
+.icon-pebble:before{content:'\f49d'}
+.icon-musicthree:before{content:'\f49e'}
+.icon-stairsup:before{content:'\f49f'}
+.icon-stairsdown:before{content:'\f4a0'}
+.icon-bookalt:before{content:'\f4a1'}
+.icon-programclose:before{content:'\f4a2'}
+.icon-programok:before{content:'\f4a3'}
+.icon-splitalt:before{content:'\f4a4'}
+.icon-solarsystem:before{content:'\f4a5'}
+.icon-honeycomb:before{content:'\f4a6'}
+.icon-tools:before{content:'\f4a7'}
+.icon-xoops:before{content:'\f4a8'}
+.icon-pixie:before{content:'\f4a9'}
+.icon-dotclear:before{content:'\f4aa'}
+.icon-impresscms:before{content:'\f4ab'}
+.icon-saurus:before{content:'\f4ac'}
+.icon-impresspages:before{content:'\f4ad'}
+.icon-monstra:before{content:'\f4ae'}
+.icon-snews:before{content:'\f4af'}
+.icon-jcore:before{content:'\f4b0'}
+.icon-silverstripe:before{content:'\f4b1'}
+.icon-btwoevolution:before{content:'\f4b2'}
+.icon-nucleus:before{content:'\f4b3'}
+.icon-symphony:before{content:'\f4b5'}
+.icon-vanillacms:before{content:'\f4b6'}
+.icon-bbpress:before{content:'\f4b7'}
+.icon-phpbbalt:before{content:'\f4b8'}
+.icon-chyrp:before{content:'\f4b9'}
+.icon-pivotx:before{content:'\f4ba'}
+.icon-pagecookery:before{content:'\f4bb'}
+.icon-moviereelalt:before{content:'\f4bc'}
+.icon-cassettealt:before{content:'\f4bd'}
+.icon-photobucket:before{content:'\f4be'}
+.icon-technorati:before{content:'\f4bf'}
+.icon-theverge:before{content:'\f4c0'}
+.icon-stacks:before{content:'\f4c1'}
+.icon-dotlist:before{content:'\f4c2'}
+.icon-numberlist:before{content:'\f4c3'}
+.icon-indentleft:before{content:'\f4c4'}
+.icon-indentright:before{content:'\f4c5'}
+.icon-fblike:before{content:'\f4c6'}
+.icon-fbdislike:before{content:'\f4c7'}
+.icon-sale:before{content:'\f4c8'}
+.icon-sharetronix:before{content:'\f4c9'}
+.icon-markerdown:before{content:'\f4cb'}
+.icon-markerup:before{content:'\f4cc'}
+.icon-markerleft:before{content:'\f4cd'}
+.icon-markerright:before{content:'\f4ce'}
+.icon-bookmarkalt:before{content:'\f4cf'}
+.icon-calendarthree:before{content:'\f4d0'}
+.icon-wineglass:before{content:'\f4d1'}
+.icon-slidersoff:before{content:'\f4d2'}
+.icon-slidersmiddle:before{content:'\f4d3'}
+.icon-slidersfull:before{content:'\f4d4'}
+.icon-slidersdesc:before{content:'\f4d5'}
+.icon-slidersasc:before{content:'\f4d6'}
+.icon-slideronefull:before{content:'\f4d7'}
+.icon-slidertwofull:before{content:'\f4d8'}
+.icon-sliderthreefull:before{content:'\f4d9'}
+.icon-noborders:before{content:'\f4da'}
+.icon-bottomborder:before{content:'\f4db'}
+.icon-topborder:before{content:'\f4dc'}
+.icon-leftborder:before{content:'\f4dd'}
+.icon-rightborder:before{content:'\f4de'}
+.icon-horizontalborder:before{content:'\f4df'}
+.icon-verticalborder:before{content:'\f4e0'}
+.icon-outerborders:before{content:'\f4e1'}
+.icon-innerborders:before{content:'\f4e2'}
+.icon-fullborders:before{content:'\f4e3'}
+.icon-networksignalalt:before{content:'\f4e4'}
+.icon-resizeverticalalt:before{content:'\f4e5'}
+.icon-resizehorizontalalt:before{content:'\f4e6'}
+.icon-moneyalt:before{content:'\f4e7'}
+.icon-fontcase:before{content:'\f4e8'}
+.icon-playstation:before{content:'\f4e9'}
+.icon-cube:before{content:'\f4ea'}
+.icon-sphere:before{content:'\f4eb'}
+.icon-ceilinglight:before{content:'\f4ec'}
+.icon-chandelier:before{content:'\f4ed'}
+.icon-details:before{content:'\f4ee'}
+.icon-detailsalt:before{content:'\f4ef'}
+.icon-bullet:before{content:'\f4f0'}
+.icon-gun:before{content:'\f4f1'}
+.icon-processorthree:before{content:'\f4f2'}
+.icon-world:before{content:'\f4f3'}
+.icon-statistics:before{content:'\f4f4'}
+.icon-shoppingcartalt:before{content:'\f4f5'}
+.icon-microphonealt:before{content:'\f4f6'}
+.icon-routeralt:before{content:'\f4f7'}
+.icon-shell:before{content:'\f4f8'}
+.icon-squareplay:before{content:'\f4f9'}
+.icon-squarestop:before{content:'\f4fa'}
+.icon-squarepause:before{content:'\f4fb'}
+.icon-squarerecord:before{content:'\f4fc'}
+.icon-squareforward:before{content:'\f4fd'}
+.icon-squareback:before{content:'\f4fe'}
+.icon-squarenext:before{content:'\f4ff'}
+.icon-squareprevious:before{content:'\f500'}
+.icon-mega:before{content:'\f501'}
+.icon-charliechaplin:before{content:'\f502'}
+.icon-popcorn:before{content:'\f503'}
+.icon-fatarrowright:before{content:'\f504'}
+.icon-fatarrowleft:before{content:'\f505'}
+.icon-fatarrowdown:before{content:'\f506'}
+.icon-fatarrowup:before{content:'\f507'}
+.icon-shirtbutton:before{content:'\f508'}
+.icon-shirtbuttonalt:before{content:'\f509'}
+.icon-cuckooclock:before{content:'\f50a'}
+.icon-lens:before{content:'\f50b'}
+.icon-voltage:before{content:'\f50c'}
+.icon-planealt:before{content:'\f50d'}
+.icon-busalt:before{content:'\f50e'}
+.icon-lipstick:before{content:'\f50f'}
+.icon-plantalt:before{content:'\f510'}
+.icon-paperboat:before{content:'\f511'}
+.icon-texture:before{content:'\f512'}
+.icon-dominoone:before{content:'\f513'}
+.icon-dominotwo:before{content:'\f514'}
+.icon-dominothree:before{content:'\f515'}
+.icon-dominofour:before{content:'\f516'}
+.icon-dominofive:before{content:'\f517'}
+.icon-dominosix:before{content:'\f518'}
+.icon-dominoseven:before{content:'\f519'}
+.icon-dominoeight:before{content:'\f51a'}
+.icon-dominonine:before{content:'\f51b'}
+.icon-connected:before{content:'\f51c'}
+.icon-connectedpc:before{content:'\f51d'}
+.icon-musicsheet:before{content:'\f51e'}
+.icon-rdio:before{content:'\f51f'}
+.icon-spotify:before{content:'\f520'}
+.icon-deviantart:before{content:'\f521'}
+.icon-yelp:before{content:'\f522'}
+.icon-behance:before{content:'\f523'}
+.icon-nfc:before{content:'\f524'}
+.icon-earbudsalt:before{content:'\f525'}
+.icon-earbuds:before{content:'\f526'}
+.icon-amazon:before{content:'\f527'}
+.icon-openid:before{content:'\f528'}
+.icon-digg:before{content:'\f529'}
+.icon-retweet:before{content:'\f52a'}
+.icon-moonnew:before{content:'\f52b'}
+.icon-moonwaxingcrescent:before{content:'\f52c'}
+.icon-moonfirstquarter:before{content:'\f52d'}
+.icon-moonwaxinggibbous:before{content:'\f52e'}
+.icon-moonfull:before{content:'\f52f'}
+.icon-moonwaninggibbous:before{content:'\f530'}
+.icon-moonthirdquarter:before{content:'\f531'}
+.icon-moonwaningcrescent:before{content:'\f532'}
+.icon-planet:before{content:'\f533'}
+.icon-sodacup:before{content:'\f534'}
+.icon-cocktail:before{content:'\f535'}
+.icon-church:before{content:'\f536'}
+.icon-mosque:before{content:'\f537'}
+.icon-comedy:before{content:'\f538'}
+.icon-tragedy:before{content:'\f539'}
+.icon-bacon:before{content:'\f53a'}
+.icon-trailor:before{content:'\f53b'}
+.icon-tshirt:before{content:'\f53c'}
+.icon-design:before{content:'\f53d'}
+.icon-spiderweb:before{content:'\f53e'}
+.icon-fireplace:before{content:'\f53f'}
+.icon-tallglass:before{content:'\f540'}
+.icon-grapes:before{content:'\f541'}
+.icon-biohazard:before{content:'\f542'}
+.icon-directions:before{content:'\f543'}
+.icon-equalizerthree:before{content:'\f544'}
+.icon-mountains:before{content:'\f545'}
+.icon-bing:before{content:'\f546'}
+.icon-windowseight:before{content:'\f547'}
+.icon-microsoftoffice:before{content:'\f548'}
+.icon-salealt:before{content:'\f549'}
+.icon-purse:before{content:'\f54a'}
+.icon-chickenalt:before{content:'\f54b'}
+.icon-podium:before{content:'\f54c'}
+.icon-findfriends:before{content:'\f54d'}
+.icon-microphonethree:before{content:'\f54e'}
+.icon-workshirt:before{content:'\f54f'}
+.icon-donotdisturb:before{content:'\f550'}
+.icon-addtags:before{content:'\f551'}
+.icon-removetags:before{content:'\f556'}
+.icon-carbattery:before{content:'\f553'}
+.icon-debug:before{content:'\f554'}
+.icon-trojan:before{content:'\f555'}
+.icon-molecule:before{content:'\f556'}
+.icon-safetygoggles:before{content:'\f557'}
+.icon-leather:before{content:'\f558'}
+.icon-teddybear:before{content:'\f559'}
+.icon-stroller:before{content:'\f55a'}
+.icon-circleplay:before{content:'\f55b'}
+.icon-circlestop:before{content:'\f55c'}
+.icon-circlepause:before{content:'\f55d'}
+.icon-circlerecord:before{content:'\f55e'}
+.icon-circleforward:before{content:'\f55f'}
+.icon-circlebackward:before{content:'\f560'}
+.icon-circlenext:before{content:'\f561'}
+.icon-circleprevious:before{content:'\f562'}
+.icon-circleplayempty:before{content:'\f563'}
+.icon-circlestopempty:before{content:'\f564'}
+.icon-circlepauseempty:before{content:'\f565'}
+.icon-circlerecordempty:before{content:'\f566'}
+.icon-circleforwardempty:before{content:'\f567'}
+.icon-circlebackwardempty:before{content:'\f568'}
+.icon-circlenextempty:before{content:'\f569'}
+.icon-circlepreviousempty:before{content:'\f56a'}
+.icon-belt:before{content:'\f56b'}
+.icon-bait:before{content:'\f56c'}
+.icon-manalt:before{content:'\f56d'}
+.icon-womanalt:before{content:'\f56e'}
+.icon-clover:before{content:'\f56f'}
+.icon-pacifier:before{content:'\f570'}
+.icon-calcplus:before{content:'\f571'}
+.icon-calcminus:before{content:'\f572'}
+.icon-calcmultiply:before{content:'\f573'}
+.icon-calcdivide:before{content:'\f574'}
+.icon-calcequals:before{content:'\f575'}
+.icon-city:before{content:'\f576'}
+.icon-hdvideo:before{content:'\f577'}
+.icon-horizontalexpand:before{content:'\f578'}
+.icon-horizontalcontract:before{content:'\f579'}
+.icon-radar:before{content:'\f57a'}
+.icon-threed:before{content:'\f57b'}
+.icon-flickralt:before{content:'\f57c'}
+.icon-pattern:before{content:'\f57d'}
+.icon-elevator:before{content:'\f57e'}
+.icon-escalator:before{content:'\f57f'}
+.icon-portrait:before{content:'\f580'}
+.icon-cigar:before{content:'\f581'}
+.icon-dropbox:before{content:'\f582'}
+.icon-origami:before{content:'\f583'}
+.icon-opensource:before{content:'\f585'}
+.icon-redaxscript:before{content:'\f586'}
+.icon-mahara:before{content:'\f587'}
+.icon-forkcms:before{content:'\f588'}
+.icon-pimcore:before{content:'\f589'}
+.icon-bigace:before{content:'\f58a'}
+.icon-aef:before{content:'\f58b'}
+.icon-punbb:before{content:'\f58c'}
+.icon-phorum:before{content:'\f58d'}
+.icon-fluxbb:before{content:'\f58e'}
+.icon-minibb:before{content:'\f58f'}
+.icon-zenphoto:before{content:'\f590'}
+.icon-fourimages:before{content:'\f591'}
+.icon-plogger:before{content:'\f592'}
+.icon-jcow:before{content:'\f593'}
+.icon-elgg:before{content:'\f594'}
+.icon-etano:before{content:'\f595'}
+.icon-openclassifieds:before{content:'\f596'}
+.icon-osclass:before{content:'\f597'}
+.icon-openx:before{content:'\f598'}
+.icon-phplist:before{content:'\f599'}
+.icon-roundcube:before{content:'\f59a'}
+.icon-pommo:before{content:'\f59b'}
+.icon-webinsta:before{content:'\f59c'}
+.icon-limesurvey:before{content:'\f59d'}
+.icon-fengoffice:before{content:'\f59e'}
+.icon-eyeos:before{content:'\f59f'}
+.icon-dotproject:before{content:'\f5a0'}
+.icon-collabtive:before{content:'\f5a1'}
+.icon-projectpier:before{content:'\f5a2'}
+.icon-taskfreak:before{content:'\f5a3'}
+.icon-eventum:before{content:'\f5a4'}
+.icon-traq:before{content:'\f5a5'}
+.icon-mantisbugtracker:before{content:'\f5a6'}
+.icon-oscommerce:before{content:'\f5a7'}
+.icon-zencart:before{content:'\f5a8'}
+.icon-tomatocart:before{content:'\f5a9'}
+.icon-boxbilling:before{content:'\f5aa'}
+.icon-zurmo:before{content:'\f5ab'}
+.icon-orangehrm:before{content:'\f5ac'}
+.icon-vtiger:before{content:'\f5ad'}
+.icon-mibew:before{content:'\f5ae'}
+.icon-phpmyfaq:before{content:'\f5af'}
+.icon-yiiframework:before{content:'\f5b0'}
+.icon-zendframework:before{content:'\f5b1'}
+.icon-fuelphp:before{content:'\f5b2'}
+.icon-kohana:before{content:'\f5b3'}
+.icon-smarty:before{content:'\f5b4'}
+.icon-sidu:before{content:'\f5b5'}
+.icon-simplepie:before{content:'\f5b6'}
+.icon-projectsend:before{content:'\f5b7'}
+.icon-extjs:before{content:'\f5b8'}
+.icon-raphael:before{content:'\f5b9'}
+.icon-sizzle:before{content:'\f5ba'}
+.icon-yui:before{content:'\f5bb'}
+.icon-scissorsalt:before{content:'\f5bc'}
+.icon-cuthere:before{content:'\f5bd'}
+.icon-coinsalt:before{content:'\f5be'}
+.icon-parkingmeter:before{content:'\f5bf'}
+.icon-treethree:before{content:'\f5c0'}
+.icon-packarchive:before{content:'\f5c1'}
+.icon-unpackarchive:before{content:'\f5c2'}
+.icon-terminalalt:before{content:'\f5c3'}
+.icon-jersey:before{content:'\f5c4'}
+.icon-vial:before{content:'\f5c5'}
+.icon-noteslist:before{content:'\f5c6'}
+.icon-notestasks:before{content:'\f5c7'}
+.icon-notesdate:before{content:'\f5c8'}
+.icon-noteslocation:before{content:'\f5c9'}
+.icon-noteslistalt:before{content:'\f5ca'}
+.icon-notestasksalt:before{content:'\f5cb'}
+.icon-notesdatealt:before{content:'\f5cc'}
+.icon-noteslocationalt:before{content:'\f5cd'}
+.icon-useralt:before{content:'\f5ce'}
+.icon-adduseralt:before{content:'\f5cf'}
+.icon-removeuseralt:before{content:'\f5d0'}
+.icon-banuseralt:before{content:'\f5d1'}
+.icon-banuser:before{content:'\f5d2'}
+.icon-paintrollalt:before{content:'\f5d3'}
+.icon-textcursor:before{content:'\f5d4'}
+.icon-textfield:before{content:'\f5d5'}
+.icon-precisecursor:before{content:'\f5d6'}
+.icon-brokenlink:before{content:'\f5d7'}
+.icon-bookmarkthree:before{content:'\f5d8'}
+.icon-bookmarkfour:before{content:'\f5d9'}
+.icon-warmedalalt:before{content:'\f5da'}
+.icon-thinking:before{content:'\f5db'}
+.icon-commentlove:before{content:'\f5dc'}
+.icon-commentsmiley:before{content:'\f5dd'}
+.icon-sharetwo:before{content:'\f147'}
+.icon-emptystar:before{content:'\f2de'}
+.icon-halfstar:before{content:'\f2df'}
+.icon-fullstar:before{content:'\f2e0'}
+.icon-forbidden:before{content:'\f314'}
+.icon-indentleftalt:before{content:'\f4c4'}
+.icon-indentrightalt:before{content:'\f4c5'}
+.icon-modxalt:before{content:'\f5de'}
+.icon-apple:before{content:'\f5df'}
+.icon-greekcolumn:before{content:'\f5e0'}
+.icon-walletalt:before{content:'\f5e1'}
+.icon-dollarsquare:before{content:'\f5e2'}
+.icon-poundsquare:before{content:'\f5e3'}
+.icon-yensquare:before{content:'\f5e4'}
+.icon-eurosquare:before{content:'\f5e5'}
+.icon-bitcoinsquare:before{content:'\f5e6'}
+.icon-roublesquare:before{content:'\f5e7'}
+.icon-roublealt:before{content:'\f5e8'}
+.icon-bitcoinalt:before{content:'\f5e9'}
+.icon-gavel:before{content:'\f5ea'}
+.icon-barchartasc:before{content:'\f5eb'}
+.icon-barchartdesc:before{content:'\f5ec'}
+.icon-house:before{content:'\f5ed'}
+.icon-garage:before{content:'\f5ee'}
+.icon-milk:before{content:'\f5ef'}
+.icon-hryvnia:before{content:'\f5f0'}
+.icon-hryvniasquare:before{content:'\f5f1'}
+.icon-hryvniaalt:before{content:'\f5f2'}
+.icon-beeralt:before{content:'\f5f3'}
+.icon-trolleyfull:before{content:'\f5f4'}
+.icon-trolleyload:before{content:'\f5f5'}
+.icon-trolleyunload:before{content:'\f5f6'}
+.icon-trolleyempty:before{content:'\f5f7'}
+.icon-mootools:before{content:'\f5f8'}
+.icon-mootoolstwo:before{content:'\f5f9'}
+.icon-mootoolsthree:before{content:'\f5fa'}
+.icon-mysqlthree:before{content:'\f5fb'}
+.icon-mysqlalt:before{content:'\f5fc'}
+.icon-pgsql:before{content:'\f5fd'}
+.icon-mongodb:before{content:'\f5fe'}
+.icon-neofourj:before{content:'\f5ff'}
+.icon-nosql:before{content:'\f600'}
+.icon-catface:before{content:'\f601'}
+.icon-polaroid:before{content:'\f602'}
+.icon-clouderror:before{content:'\f603'}
+.icon-camcorder:before{content:'\f604'}
+.icon-projector:before{content:'\f605'}
+.icon-sdvideo:before{content:'\f606'}
+.icon-fx:before{content:'\f607'}
+.icon-gramophone:before{content:'\f608'}
+.icon-speakeralt:before{content:'\f609'}
+.icon-hddalt:before{content:'\f60a'}
+.icon-usbflash:before{content:'\f60b'}
+.icon-manillaenvelope:before{content:'\f60c'}
+.icon-stickynote:before{content:'\f60d'}
+.icon-stickynotealt:before{content:'\f60e'}
+.icon-torch:before{content:'\f60f'}
+.icon-flashlightalt:before{content:'\f610'}
+.icon-campfire:before{content:'\f611'}
+.icon-cctv:before{content:'\f612'}
+.icon-drill:before{content:'\f613'}
+.icon-lampalt:before{content:'\f614'}
+.icon-flowerpot:before{content:'\f615'}
+.icon-defragment:before{content:'\f616'}
+.icon-panoramio:before{content:'\f617'}
+.icon-panorama:before{content:'\f618'}
+.icon-photosphere:before{content:'\f619'}
+.icon-panoramaalt:before{content:'\f61a'}
+.icon-timer:before{content:'\f61b'}
+.icon-burstmode:before{content:'\f61c'}
+.icon-cameraflash:before{content:'\f61d'}
+.icon-autoflash:before{content:'\f61e'}
+.icon-noflash:before{content:'\f61f'}
+.icon-threetofour:before{content:'\f620'}
+.icon-sixteentonine:before{content:'\f621'}
+.icon-cat:before{content:'\f622'}
+.icon-dog:before{content:'\f623'}
+.icon-rabbit:before{content:'\f624'}
+.icon-koala:before{content:'\f625'}
+.icon-butterflyalt:before{content:'\f626'}
+.icon-butterfly:before{content:'\f627'}
+.icon-wwf:before{content:'\f628'}
+.icon-poop:before{content:'\f629'}
+.icon-poopalt:before{content:'\f62a'}
+.icon-kiwi:before{content:'\f62b'}
+.icon-kiwifruit:before{content:'\f62c'}
+.icon-lemon:before{content:'\f62d'}
+.icon-pear:before{content:'\f62e'}
+.icon-watermelon:before{content:'\f62f'}
+.icon-onion:before{content:'\f630'}
+.icon-turnip:before{content:'\f631'}
+.icon-eggplant:before{content:'\f632'}
+.icon-avocado:before{content:'\f633'}
+.icon-perfume:before{content:'\f634'}
+.icon-arch:before{content:'\f635'}
+.icon-pluspages:before{content:'\f636'}
+.icon-community:before{content:'\f637'}
+.icon-pluscircles:before{content:'\f638'}
+.icon-googleplusold:before{content:'\f639'}
+.icon-plusgames:before{content:'\f63a'}
+.icon-event:before{content:'\f63b'}
+.icon-miui:before{content:'\f63c'}
+.icon-hot:before{content:'\f63d'}
+.icon-flowup:before{content:'\f63e'}
+.icon-flowdown:before{content:'\f63f'}
+.icon-moustache:before{content:'\f640'}
+.icon-angle:before{content:'\f641'}
+.icon-sleep:before{content:'\f642'}
+.icon-acorn:before{content:'\f643'}
+.icon-steamalt:before{content:'\f644'}
+.icon-resizeupleft:before{content:'\f645'}
+.icon-resizeupright:before{content:'\f646'}
+.icon-resizedownright:before{content:'\f647'}
+.icon-resizedownleft:before{content:'\f648'}
+.icon-hammeralt:before{content:'\f649'}
+.icon-bamboo:before{content:'\f64a'}
+.icon-mypictures:before{content:'\f64b'}
+.icon-mymusic:before{content:'\f64c'}
+.icon-myvideos:before{content:'\f64d'}
+.icon-systemfolder:before{content:'\f64e'}
+.icon-bookthree:before{content:'\f64f'}
+.icon-compile:before{content:'\f650'}
+.icon-report:before{content:'\f651'}
+.icon-fliphorizontal:before{content:'\f652'}
+.icon-flipvertical:before{content:'\f653'}
+.icon-construction:before{content:'\f654'}
+.icon-counteralt:before{content:'\f655'}
+.icon-counter:before{content:'\f656'}
+.icon-papercutter:before{content:'\f657'}
+.icon-snaptodot:before{content:'\f658'}
+.icon-snaptogrid:before{content:'\f659'}
+.icon-caligraphy:before{content:'\f65a'}
+.icon-icecreamthree:before{content:'\f65b'}
+.icon-skitch:before{content:'\f65c'}
+.icon-archlinux:before{content:'\f65d'}
+.icon-elementaryos:before{content:'\f65e'}
+.icon-loadingone:before{content:'\f65f'}
+.icon-loadingtwo:before{content:'\f660'}
+.icon-loadingthree:before{content:'\f661'}
+.icon-loadingfour:before{content:'\f662'}
+.icon-loadingfive:before{content:'\f663'}
+.icon-loadingsix:before{content:'\f664'}
+.icon-loadingseven:before{content:'\f665'}
+.icon-loadingeight:before{content:'\f666'}
+.icon-brokenheart:before{content:'\f667'}
+.icon-heartarrow:before{content:'\f668'}
+.icon-heartsparkle:before{content:'\f669'}
+.icon-cell:before{content:'\f66a'}
+.icon-panda:before{content:'\f66b'}
+.icon-refreshalt:before{content:'\f66c'}
+.icon-mirror:before{content:'\f66d'}
+.icon-headphonesthree:before{content:'\f66e'}
+.icon-fan:before{content:'\f66f'}
+.icon-tornado:before{content:'\f670'}
+.icon-hangout:before{content:'\f671'}
+.icon-beaker:before{content:'\f672'}
+.icon-beakeralt:before{content:'\f673'}
+.icon-phonescreensize:before{content:'\f674'}
+.icon-tabletscreensize:before{content:'\f675'}
+.icon-notification:before{content:'\f676'}
+.icon-googleglass:before{content:'\f677'}
+.icon-pinterest:before{content:'\f678'}
+.icon-soundcloud:before{content:'\f679'}
+.icon-alarmclock:before{content:'\f67a'}
+.icon-addalarm:before{content:'\f67b'}
+.icon-deletealarm:before{content:'\f67c'}
+.icon-turnoffalarm:before{content:'\f67d'}
+.icon-snooze:before{content:'\f67e'}
+.icon-bringforward:before{content:'\f67f'}
+.icon-sendbackward:before{content:'\f680'}
+.icon-bringtofront:before{content:'\f681'}
+.icon-sendtoback:before{content:'\f682'}
+.icon-tectile:before{content:'\f683'}
+.icon-grave:before{content:'\f684'}
+.icon-gravetwo:before{content:'\f685'}
+.icon-gravethree:before{content:'\f686'}
+.icon-gravefour:before{content:'\f687'}
+.icon-textlayer:before{content:'\f688'}
+.icon-vectoralt:before{content:'\f689'}
+.icon-drmanhattan:before{content:'\f68a'}
+.icon-foursquarealt:before{content:'\f68b'}
+.icon-hashtag:before{content:'\f68c'}
+.icon-enteralt:before{content:'\f68d'}
+.icon-exitalt:before{content:'\f68e'}
+.icon-cartalt:before{content:'\f68f'}
+.icon-vaultthree:before{content:'\f690'}
+.icon-fatundo:before{content:'\f691'}
+.icon-fatredo:before{content:'\f692'}
+.icon-feedly:before{content:'\f693'}
+.icon-feedlyalt:before{content:'\f694'}
+.icon-squareheart:before{content:'\f695'}
+.icon-squarestar:before{content:'\f696'}
+.icon-squarecomment:before{content:'\f697'}
+.icon-squarelike:before{content:'\f698'}
+.icon-squarebookmark:before{content:'\f699'}
+.icon-squaresearch:before{content:'\f69a'}
+.icon-squaresettings:before{content:'\f69b'}
+.icon-squarevoice:before{content:'\f69c'}
+.icon-google:before{content:'\f69d'}
+.icon-emojigrinalt:before{content:'\f69e'}
+.icon-emojigrin:before{content:'\f69f'}
+.icon-constellation:before{content:'\f6a0'}
+.icon-emojisurprise:before{content:'\f6a1'}
+.icon-emojidead:before{content:'\f6a2'}
+.icon-emojiangry:before{content:'\f6a3'}
+.icon-emojidevil:before{content:'\f6a4'}
+.icon-emojiwink:before{content:'\f6a5'}
+.icon-moonorbit:before{content:'\f6a6'}
+.icon-emojismile:before{content:'\f6a7'}
+.icon-emojisorry:before{content:'\f6a8'}
+.icon-emojiconfused:before{content:'\f6a9'}
+.icon-emojisleep:before{content:'\f6aa'}
+.icon-emojicry:before{content:'\f6ab'}
+.icon-circlefork:before{content:'\f6ac'}
+.icon-circlespoon:before{content:'\f6ad'}
+.icon-circleknife:before{content:'\f6ae'}
+.icon-circlepencil:before{content:'\f6af'}
+.icon-circlehammer:before{content:'\f6b0'}
+.icon-circlescrewdriver:before{content:'\f6b1'}
+.icon-middlefinger:before{content:'\f6b2'}
+.icon-heavymetal:before{content:'\f6b3'}
+.icon-turnright:before{content:'\f6b4'}
+.icon-turnleft:before{content:'\f6b5'}
+.icon-vineapp:before{content:'\f6b6'}
+.icon-vineappalt:before{content:'\f6b7'}
+.icon-finance:before{content:'\f6b8'}
+.icon-survey:before{content:'\f6b9'}
+.icon-hangouts:before{content:'\f6ba'}
+.icon-square0:before{content:'\f6bb'}
+.icon-square1:before{content:'\f6bc'}
+.icon-square2:before{content:'\f6bd'}
+.icon-square3:before{content:'\f6be'}
+.icon-square4:before{content:'\f6bf'}
+.icon-square5:before{content:'\f6c0'}
+.icon-square6:before{content:'\f6c1'}
+.icon-square7:before{content:'\f6c2'}
+.icon-square8:before{content:'\f6c3'}
+.icon-square9:before{content:'\f6c4'}
+.icon-squarea:before{content:'\f6c5'}
+.icon-squareb:before{content:'\f6c6'}
+.icon-squarec:before{content:'\f6c7'}
+.icon-squared:before{content:'\f6c8'}
+.icon-squaree:before{content:'\f6c9'}
+.icon-squaref:before{content:'\f6ca'}
+.icon-squareg:before{content:'\f6cb'}
+.icon-squareh:before{content:'\f6cc'}
+.icon-squarei:before{content:'\f6cd'}
+.icon-squarej:before{content:'\f6ce'}
+.icon-squarek:before{content:'\f6cf'}
+.icon-squarel:before{content:'\f6d0'}
+.icon-squarem:before{content:'\f6d1'}
+.icon-squaren:before{content:'\f6d2'}
+.icon-squareo:before{content:'\f6d3'}
+.icon-squarep:before{content:'\f6d4'}
+.icon-squareq:before{content:'\f6d5'}
+.icon-squarer:before{content:'\f6d6'}
+.icon-squares:before{content:'\f6d7'}
+.icon-squaret:before{content:'\f6d8'}
+.icon-squareu:before{content:'\f6d9'}
+.icon-squarev:before{content:'\f6da'}
+.icon-squarew:before{content:'\f6db'}
+.icon-squarex:before{content:'\f6dc'}
+.icon-squarey:before{content:'\f6dd'}
+.icon-squarez:before{content:'\f6de'}
+.icon-shuttle:before{content:'\f6df'}
+.icon-meteor:before{content:'\f6e0'}
+.icon-galaxy:before{content:'\f6e1'}
+.icon-observatory:before{content:'\f6e2'}
+.icon-astronaut:before{content:'\f6e3'}
+.icon-asteroid:before{content:'\f6e4'}
+.icon-sunrise:before{content:'\f6e5'}
+.icon-sunset:before{content:'\f6e6'}
+.icon-tiderise:before{content:'\f6e7'}
+.icon-tidefall:before{content:'\f6e8'}
+.icon-mushroomcloud:before{content:'\f6e9'}
+.icon-galaxyalt:before{content:'\f6ea'}
+.icon-sputnik:before{content:'\f6eb'}
+.icon-sextant:before{content:'\f6ec'}
+.icon-spock:before{content:'\f6ed'}
+.icon-meteorite:before{content:'\f6ee'}
+.icon-deathstar:before{content:'\f6ef'}
+.icon-deathstarbulding:before{content:'\f6f0'}
+.icon-fallingstar:before{content:'\f6f1'}
+.icon-windmill:before{content:'\f6f2'}
+.icon-windmillalt:before{content:'\f6f3'}
+.icon-pumpjack:before{content:'\f6f4'}
+.icon-nuclearplant:before{content:'\f6f5'}
+.icon-solarpanel:before{content:'\f6f6'}
+.icon-barrel:before{content:'\f6f7'}
+.icon-canister:before{content:'\f6f8'}
+.icon-railtunnel:before{content:'\f6f9'}
+.icon-roadtunnel:before{content:'\f6fa'}
+.icon-pickaxe:before{content:'\f6fb'}
+.icon-cow:before{content:'\f6fc'}
+.icon-sheep:before{content:'\f6fd'}
+.icon-fountain:before{content:'\f6fe'}
+.icon-circlezero:before{content:'\f6ff'}
+.icon-circleone:before{content:'\f700'}
+.icon-circletwo:before{content:'\f701'}
+.icon-circlethree:before{content:'\f702'}
+.icon-circlefour:before{content:'\f703'}
+.icon-circlefive:before{content:'\f704'}
+.icon-circlesix:before{content:'\f705'}
+.icon-circleseven:before{content:'\f706'}
+.icon-circleeight:before{content:'\f707'}
+.icon-circlenine:before{content:'\f708'}
+.icon-circlea:before{content:'\f709'}
+.icon-circleb:before{content:'\f70a'}
+.icon-circlec:before{content:'\f70b'}
+.icon-circled:before{content:'\f70c'}
+.icon-circlee:before{content:'\f70d'}
+.icon-circlef:before{content:'\f70e'}
+.icon-circleg:before{content:'\f70f'}
+.icon-circleh:before{content:'\f710'}
+.icon-circlei:before{content:'\f711'}
+.icon-circlej:before{content:'\f712'}
+.icon-circlek:before{content:'\f713'}
+.icon-circlel:before{content:'\f714'}
+.icon-circlem:before{content:'\f715'}
+.icon-circlen:before{content:'\f716'}
+.icon-circleo:before{content:'\f717'}
+.icon-circlep:before{content:'\f718'}
+.icon-circleq:before{content:'\f719'}
+.icon-circler:before{content:'\f71a'}
+.icon-circles:before{content:'\f71b'}
+.icon-circlet:before{content:'\f71c'}
+.icon-circleu:before{content:'\f71d'}
+.icon-circlev:before{content:'\f71e'}
+.icon-circlew:before{content:'\f71f'}
+.icon-circlex:before{content:'\f720'}
+.icon-circley:before{content:'\f721'}
+.icon-circlez:before{content:'\f722'}
+.icon-creeper:before{content:'\f723'}
+.icon-minecraft:before{content:'\f724'}
+.icon-minecraftalt:before{content:'\f725'}
+.icon-pixelsword:before{content:'\f726'}
+.icon-pixelbroadsword:before{content:'\f727'}
+.icon-pixelwand:before{content:'\f728'}
+.icon-pixelpotion:before{content:'\f729'}
+.icon-pixelpotionalt:before{content:'\f72a'}
+.icon-pixelpickaxe:before{content:'\f72b'}
+.icon-pixelbow:before{content:'\f72c'}
+.icon-pixelarrow:before{content:'\f72d'}
+.icon-pixelaxe:before{content:'\f72e'}
+.icon-pixeldagger:before{content:'\f72f'}
+.icon-pixelbastardsword:before{content:'\f730'}
+.icon-pixellance:before{content:'\f731'}
+.icon-pixelbattleaxe:before{content:'\f732'}
+.icon-pixelshovel:before{content:'\f733'}
+.icon-pixelsphere:before{content:'\f734'}
+.icon-pixelelixir:before{content:'\f735'}
+.icon-pixelchest:before{content:'\f736'}
+.icon-pixelshield:before{content:'\f737'}
+.icon-pixelheart:before{content:'\f738'}
+.icon-rudder:before{content:'\f739'}
+.icon-folderalt:before{content:'\f73a'}
+.icon-removefolderalt:before{content:'\f73b'}
+.icon-addfolderalt:before{content:'\f73c'}
+.icon-deletefolderalt:before{content:'\f73d'}
+.icon-openfolderalt:before{content:'\f73e'}
+.icon-clipboardalt:before{content:'\f73f'}
+.icon-pastealt:before{content:'\f740'}
+.icon-loadingflowccw:before{content:'\f741'}
+.icon-loadingflowcw:before{content:'\f742'}
+.icon-code:before{content:'\f743'}
+.icon-cloveralt:before{content:'\f744'}
+.icon-lips:before{content:'\f745'}
+.icon-kiss:before{content:'\f746'}
+.icon-manualshift:before{content:'\f747'}
+.icon-simcardthree:before{content:'\f748'}
+.icon-parthenon:before{content:'\f749'}
+.icon-addcomment:before{content:'\f74a'}
+.icon-deletecomment:before{content:'\f74b'}
+.icon-gender:before{content:'\f74c'}
+.icon-callalt:before{content:'\f74d'}
+.icon-outgoingcallalt:before{content:'\f74e'}
+.icon-incomingcallalt:before{content:'\f74f'}
+.icon-missedcallalt:before{content:'\f750'}
+.icon-export:before{content:'\f751'}
+.icon-import:before{content:'\f752'}
+.icon-cherryalt:before{content:'\f753'}
+.icon-panties:before{content:'\f754'}
+.icon-kimai:before{content:'\f755'}
+.icon-livejournal:before{content:'\f756'}
+.icon-livejournalalt:before{content:'\f757'}
+.icon-tagged:before{content:'\f758'}
+.icon-temple:before{content:'\f759'}
+.icon-mayanpyramid:before{content:'\f75a'}
+.icon-egyptpyramid:before{content:'\f75b'}
+.icon-tampermonkey:before{content:'\f75c'}
+.icon-pushbullet:before{content:'\f75d'}
+.icon-currents:before{content:'\f75e'}
+.icon-communitysmall:before{content:'\f75f'}
+.icon-squaregithub:before{content:'\f760'}
+.icon-projectfork:before{content:'\f761'}
+.icon-projectmerge:before{content:'\f762'}
+.icon-projectcompare:before{content:'\f763'}
+.icon-history:before{content:'\f764'}
+.icon-notebook:before{content:'\f765'}
+.icon-issue:before{content:'\f766'}
+.icon-issueclosed:before{content:'\f767'}
+.icon-issuereopened:before{content:'\f768'}
+.icon-rubyalt:before{content:'\f769'}
+.icon-lighton:before{content:'\f76a'}
+.icon-lightoff:before{content:'\f76b'}
+.icon-bellalt:before{content:'\f76c'}
+.icon-versions:before{content:'\f777'}
+.icon-twog:before{content:'\f76e'}
+.icon-threeg:before{content:'\f76f'}
+.icon-fourg:before{content:'\f770'}
+.icon-gpsalt:before{content:'\f771'}
+.icon-circleloaderfull:before{content:'\f772'}
+.icon-circleloaderseven:before{content:'\f773'}
+.icon-circleloadersix:before{content:'\f774'}
+.icon-circleloaderfive:before{content:'\f775'}
+.icon-circleloaderfour:before{content:'\f776'}
+.icon-circleloaderthree:before{content:'\f777'}
+.icon-circleloadertwo:before{content:'\f778'}
+.icon-circleloaderone:before{content:'\f779'}
+.icon-circleloaderempty:before{content:'\f77a'}
+.icon-whatsapp:before{content:'\f77b'}
+.icon-whatsappalt:before{content:'\f77c'}
+.icon-viber:before{content:'\f77d'}
+.icon-squareviber:before{content:'\f77e'}
+.icon-teamviewer:before{content:'\f77f'}
+.icon-tunein:before{content:'\f780'}
+.icon-tuneinalt:before{content:'\f781'}
+.icon-weightscale:before{content:'\f782'}
+.icon-boxing:before{content:'\f783'}
+.icon-speedalt:before{content:'\f784'}
+.icon-scriptalt:before{content:'\f785'}
+.icon-splitthree:before{content:'\f786'}
+.icon-mergethree:before{content:'\f787'}
+.icon-layersthree:before{content:'\f788'}
+.icon-mutemic:before{content:'\f789'}
+.icon-zerply:before{content:'\f78a'}
+.icon-circlegoogleplus:before{content:'\f78b'}
+.icon-circletwitter:before{content:'\f78c'}
+.icon-circlefacebook:before{content:'\f78d'}
+.icon-circleyahoo:before{content:'\f78e'}
+.icon-circlegithub:before{content:'\f78f'}
+.icon-forumsalt:before{content:'\f790'}
+.icon-circlepath:before{content:'\f791'}
+.icon-circlevimeo:before{content:'\f792'}
+.icon-circlevine:before{content:'\f793'}
+.icon-instagramtwo:before{content:'\f794'}
+.icon-instagramthree:before{content:'\f795'}
+.icon-flickrthree:before{content:'\f796'}
+.icon-quora:before{content:'\f797'}
+.icon-squarequora:before{content:'\f798'}
+.icon-circlequora:before{content:'\f799'}
+.icon-picasa:before{content:'\f79a'}
+.icon-branch:before{content:'\f79b'}
+.icon-ingress:before{content:'\f79c'}
+.icon-squarezerply:before{content:'\f79d'}
+.icon-circlezerply:before{content:'\f79e'}
+.icon-squarevimeo:before{content:'\f79f'}
+.icon-squaretwitter:before{content:'\f7a0'}
+.icon-brightnessalt:before{content:'\f7a1'}
+.icon-brightnessalthalf:before{content:'\f7a2'}
+.icon-brightnessaltfull:before{content:'\f7a3'}
+.icon-brightnessaltauto:before{content:'\f7a4'}
+.icon-shirtbuttonthree:before{content:'\f7a5'}
+.icon-openshare:before{content:'\f7a6'}
+.icon-copyapp:before{content:'\f7a7'}
+.icon-bowl:before{content:'\f7a8'}
+.icon-cloudalt:before{content:'\f7a9'}
+.icon-cloudaltdownload:before{content:'\f7aa'}
+.icon-cloudaltupload:before{content:'\f7ab'}
+.icon-cloudaltsync:before{content:'\f7ac'}
+.icon-cloudaltprivate:before{content:'\f7ad'}
+.icon-flipboard:before{content:'\f7ae'}
+.icon-octoloaderempty:before{content:'\f7af'}
+.icon-octoloaderone:before{content:'\f7b0'}
+.icon-octoloadertwo:before{content:'\f7b1'}
+.icon-octoloaderthree:before{content:'\f7b2'}
+.icon-octoloaderfour:before{content:'\f7b3'}
+.icon-octoloaderfive:before{content:'\f7b4'}
+.icon-octoloadersix:before{content:'\f7b5'}
+.icon-octoloaderseven:before{content:'\f7b6'}
+.icon-octoloaderfull:before{content:'\f7b7'}
+.icon-selectionsymbol:before{content:'\f7b8'}
+.icon-infinityalt:before{content:'\f7b9'}
+.icon-pullrequest:before{content:'\f7ba'}
+.icon-projectforkdelete:before{content:'\f7bb'}
+.icon-projectforkprivate:before{content:'\f7bc'}
+.icon-commit:before{content:'\f7bd'}
+.icon-htmlfile:before{content:'\f7be'}
+.icon-pushalt:before{content:'\f7bf'}
+.icon-pullalt:before{content:'\f7c0'}
+.icon-photonineframes:before{content:'\f7c1'}
+.icon-wetfloor:before{content:'\f7c2'}
+.icon-instagramfour:before{content:'\f7c3'}
+.icon-circleinstagram:before{content:'\f7c4'}
+.icon-videocamerathree:before{content:'\f7c5'}
+.icon-subtitles:before{content:'\f7c6'}
+.icon-subtitlesoff:before{content:'\f7c7'}
+.icon-compress:before{content:'\f7c8'}
+.icon-baby:before{content:'\f7c9'}
+.icon-ducky:before{content:'\f7ca'}
+.icon-handswipe:before{content:'\f7cb'}
+.icon-swipeup:before{content:'\f7cc'}
+.icon-swipedown:before{content:'\f7cd'}
+.icon-twofingerswipedown:before{content:'\f7ce'}
+.icon-twofingerswipeup:before{content:'\f7cf'}
+.icon-doubletap:before{content:'\f7d0'}
+.icon-dribbblealt:before{content:'\f7d1'}
+.icon-circlecallmissed:before{content:'\f7d2'}
+.icon-circlecallincoming:before{content:'\f7d3'}
+.icon-circlecalloutgoing:before{content:'\f7d4'}
+.icon-circledownload:before{content:'\f7d5'}
+.icon-circleupload:before{content:'\f7d6'}
+.icon-minismile:before{content:'\f7d7'}
+.icon-minisad:before{content:'\f7d8'}
+.icon-minilaugh:before{content:'\f7d9'}
+.icon-minigrin:before{content:'\f7da'}
+.icon-miniangry:before{content:'\f7db'}
+.icon-minitongue:before{content:'\f7dc'}
+.icon-minitonguealt:before{content:'\f7dd'}
+.icon-miniwink:before{content:'\f7de'}
+.icon-minitonguewink:before{content:'\f7df'}
+.icon-miniconfused:before{content:'\f7e0'}
+.icon-soundright:before{content:'\f7e1'}
+.icon-soundleft:before{content:'\f7e2'}
+.icon-savetodrive:before{content:'\f7e3'}
+.icon-layerorderup:before{content:'\f7e4'}
+.icon-layerorderdown:before{content:'\f7e5'}
+.icon-layerorder:before{content:'\f7e6'}
+.icon-circledribbble:before{content:'\f7e7'}
+.icon-squaredribbble:before{content:'\f7e8'}
+.icon-handexpand:before{content:'\f7e9'}
+.icon-handpinch:before{content:'\f7ea'}
+.icon-fontserif:before{content:'\f7eb'}
+.icon-fontsansserif:before{content:'\f7ec'}
+.icon-fontrounded:before{content:'\f7ed'}
+.icon-fonthandwriting:before{content:'\f7ee'}
+.icon-fonttypewriter:before{content:'\f7ef'}
+.icon-fontcomic:before{content:'\f7f0'}
+.icon-fontcaligraphy:before{content:'\f7f1'}
+.icon-fontgothic:before{content:'\f7f2'}
+.icon-fontstencil:before{content:'\f7f3'}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 8d77bcaa5..3a6292d51 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,13 @@
# yarn lockfile v1
+"@babel/runtime@^7.21.0":
+ version "7.22.10"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682"
+ integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
"@esbuild/linux-loong64@0.14.54":
version "0.14.54"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
@@ -38,9 +45,21 @@
integrity sha512-NvVBRnZNE+dugiXERFsET1JlKZfM5lJDEpSMilKW4bToYJ7pxf0Zne78xyXB2ny2c2aHfJ6WLnz1AaTNHAmQeQ==
"@rails/actioncable@^7.0":
- version "7.0.4"
- resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-7.0.4.tgz#70a3ca56809f7aaabb80af2f9c01ae51e1a8ed41"
- integrity sha512-tz4oM+Zn9CYsvtyicsa/AwzKZKL+ITHWkhiu7x+xF77clh2b4Rm+s6xnOgY/sGDWoFWZmtKsE95hxBPkgQQNnQ==
+ version "7.0.5"
+ resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-7.0.5.tgz#bbc11203e0d3d5084002abfcf01d621fdf5f3a9d"
+ integrity sha512-SOBA2heB9lTw0VYIx8M/ed7inSf4I9sR8OIlJprhgkfQ3WJtrxPJ6DDATR1Z3RYaIR7HlT2Olj08v1lfGIGuHA==
+
+date-fns@^2.29.3:
+ version "2.30.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0"
+ integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+
+debounce@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
+ integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
esbuild-android-64@0.14.54:
version "0.14.54"
@@ -174,6 +193,11 @@ flatpickr@^4.6.13:
resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.13.tgz#8a029548187fd6e0d670908471e43abe9ad18d94"
integrity sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==
+regenerator-runtime@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
+ integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
+
split.js@^1.6.5:
version "1.6.5"
resolved "https://registry.yarnpkg.com/split.js/-/split.js-1.6.5.tgz#f7f61da1044c9984cb42947df4de4fadb5a3f300"
@@ -196,6 +220,13 @@ stimulus-read-more@^4.1.0:
resolved "https://registry.yarnpkg.com/stimulus-read-more/-/stimulus-read-more-4.1.0.tgz#f34efb2dcb33fd091936d84c569937bc100506c8"
integrity sha512-SJyCJqZrhDSKpfrepnhStBaxtyv6Jnvr+b84GDg3l+/BzL5HaFLYmc6QkSNCeR6y0x+Zw7lwKuzv+XzyAm1KzQ==
+stimulus-timeago@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/stimulus-timeago/-/stimulus-timeago-4.1.0.tgz#5e4b712d9eadd7f0e2b3b142f35f334dba4b3857"
+ integrity sha512-CHcB2rko2ItmDMIhBTaxEMe7sKqI0DOMU8dmWuQ+gzDfoxcrA8DAW/BElHAAw26HVqLTA43RSUsfug8Q+2Ua+g==
+ dependencies:
+ date-fns "^2.29.3"
+
tom-select@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.2.2.tgz#8e5f9296e6d80254feccb57f0986bd6c44d126e2"
@@ -203,3 +234,18 @@ tom-select@^2.2.2:
dependencies:
"@orchidjs/sifter" "^1.0.3"
"@orchidjs/unicode-variants" "^1.0.4"
+
+vis-data@^7.1.6:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/vis-data/-/vis-data-7.1.6.tgz#81dcf4d024d23183cacb680ad605e644cdd6ee6c"
+ integrity sha512-lG7LJdkawlKSXsdcEkxe/zRDyW29a4r7N7PMwxCPxK12/QIdqxJwcMxwjVj9ozdisRhP5TyWDHZwsgjmj0g6Dg==
+
+vis-network@^9.1.6:
+ version "9.1.6"
+ resolved "https://registry.yarnpkg.com/vis-network/-/vis-network-9.1.6.tgz#943df07e829248943656a2f19a7ec87cc1b707de"
+ integrity sha512-Eiwx1JleAsUqfy4pzcsFngCVlCEdjAtRPB/OwCV7PHBm+o2jtE4IZPcPITAEGUlxvL4Fdw7/lZsfD32dL+IL6g==
+
+vis-util@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/vis-util/-/vis-util-5.0.3.tgz#6a9d67c6ed92f2bfa67e50c20166bb5f59ac07bf"
+ integrity sha512-Wf9STUcFrDzK4/Zr7B6epW2Kvm3ORNWF+WiwEz2dpf5RdWkLUXFSbLcuB88n1W6tCdFwVN+v3V4/Xmn9PeL39g==