From 96828178c1efdd4be2e8de533fe2ac2994784c7c Mon Sep 17 00:00:00 2001 From: Jason Lee Date: Thu, 21 Aug 2025 14:10:18 -0500 Subject: [PATCH] Roq Migration Add pom.xml Remove Gemfile* Move files to roq locations Convert liquid to qute Add template extensions Create models for typesafe site data access Update GH workflows --- .github/workflows/github-pages.yml | 43 +++++ .github/workflows/jekyll.yml | 58 ------ .github/workflows/testsite.yml | 23 +++ .gitignore | 24 ++- Gemfile | 37 ---- Gemfile.lock | 91 ---------- README.MD | 8 +- _includes/default.html | 21 --- _includes/head.html | 29 --- _includes/news-list.html | 22 --- _includes/share-page.html | 17 -- _layouts/default.html | 10 -- _layouts/doc-listing.html | 41 ----- _layouts/downloads.html | 44 ----- _layouts/main.html | 10 -- _layouts/post.html | 10 -- blogs/index.html | 33 ---- content/blogs/index.html | 34 ++++ books.html => content/books.html | 6 +- build.html => content/build.html | 0 content/docs.html | 64 +++++++ {docs => content/docs}/all-docs.md | 2 +- {docs => content/docs}/grpc/grpc-bridge.adoc | 124 +++++++++++-- downloads.md => content/downloads.md | 0 index.md => content/index.md | 0 .../mailinglists.html | 0 .../posts}/2016-09-13-new-resteasy-blog.md | 17 +- ...-13-on-the-road-to-resteasy-310-release.md | 17 +- .../2016-10-03-resteasy-310cr1-is-out.md | 17 +- .../2016-10-05-resteasy-310cr2-is-out.md | 19 +- ...-another-resteasy-310-candidate-release.md | 17 +- .../2016-12-14-resteasy-310final-is-out.md | 17 +- .../2017-02-27-resteasy-311final-is-out.md | 17 +- ...resteasy-312final-and-3022final-are-out.md | 17 +- ...26-summer-releases-and-now-on-jax-rs-21.md | 17 +- ...e-resteasy-in-a-spring-boot-application.md | 7 +- .../posts}/2017-11-13-resteasy-400beta1.md | 17 +- ...18-02-22-resteasy-350final-and-400beta2.md | 17 +- ...8-time-for-a-couple-of-bug-fix-releases.md | 17 +- ...-resteasy-spring-boot-starter-has-moved.md | 17 +- .../posts}/2018-05-29-new-blog.md | 4 +- ...asynchronous-reactive-rxjava-and-beyond.md | 4 +- ...duction-to-the-resteasy-tracing-feature.md | 17 +- ...6-18-new-asynchronous-container-filters.md | 17 +- ...18-07-02-resteasy-360final-and-400beta4.md | 17 +- ...7-19-asynchronous-injection-in-resteasy.md | 17 +- ...1-resteasy-spring-boot-starter-200final.md | 17 +- .../2018-08-09-resteasy-release-week.md | 17 +- ...now-supports-json-formatted-information.md | 17 +- ...018-10-31-resteasy-wadl-grammar-support.md | 8 +- ...tison-has-been-removed-on-master-branch.md | 17 +- ...019-03-13-the-undertowjaxrsspringserver.md | 17 +- .../2019-03-28-resteasy-4-is-coming-soon.md | 17 +- .../2019-05-07-resteasy-400final-is-here.md | 17 +- ...y-spring-boot-starter-310final-released.md | 17 +- ...19-resteasy-380final-and-microprofile-3.md | 17 +- ...19-06-27-resteasy-410final-is-available.md | 17 +- ...y-spring-boot-starter-400final-released.md | 18 +- ...rformance-enhancements-and-new-features.md | 17 +- ...-starter-410final-and-320final-released.md | 17 +- ...resteasy-430final-and-390final-released.md | 27 +-- .../2019-10-08-looking-to-the-future.md | 18 +- ...y-spring-boot-starter-411final-released.md | 17 +- ...ving-to-jakarta-artifacts-and-much-more.md | 17 +- .../2020-01-15-resteasy-3100final-jakarta.md | 18 +- ...easy-jackson-polymorphic-type-validator.md | 3 +- ...02-20-resteasy-3110final-mp-rest-client.md | 4 +- .../posts}/2020-04-10-spring.md | 2 +- .../posts}/2020-04-27-wildfly-deploy.md | 5 +- .../posts}/2020-05-18-MicroProfile-config.md | 4 +- .../posts}/2020-05-22-swagger.md | 4 +- ...r-application-with-microprofile-metrics.md | 8 +- ...020-06-01-blog-microprofile-rest-client.md | 3 +- ...-06-19-create-jaxrs-server-with-galleon.md | 15 +- ...07-14-blog-microprofile-config-outOfBox.md | 2 +- .../posts}/2020-07-30-resteasy-456-3130.md | 18 +- .../2020-09-24-resteasy-4.5.8-3.13.1.md | 20 +-- ...09-run-restful-service-with-bootablejar.md | 19 +- ...-11-23-blog-Untangling-Reactive-Streams.md | 12 +- .../posts}/2020-12-07-resteasy-reactive.md | 2 +- .../posts}/2021-01-14-resteasy-4.6.0.Final.md | 5 +- ...1-01-19-deploy-resteasy-wadl-to-wildfly.md | 7 +- .../2021-02-18-resteasy-3.15.0.Final.md | 5 +- ...-04-05-blog-ParamConverter-with-Quarkus.md | 5 +- .../posts}/2021-07-06-resteasy-4.6.2.Final.md | 3 +- .../posts}/2021-07-08-resteasy-4.7.0.Final.md | 5 +- ...-07-29-separate-spring-and-microprofile.md | 2 +- .../2021-09-23-announcements-and-releases.md | 4 +- ...-10-13-resteasy-spring-wildfly-and-more.md | 2 +- .../posts}/2021-11-03-http-engine.md | 7 +- .../2021-11-04-resteasy-5.0.0-release.md | 5 +- .../posts}/2021-11-22-feature-pack.md | 3 +- .../posts}/2021-12-02-resteasy-releases.md | 10 +- .../posts}/2021-12-13-tracing-feature.md | 1 - .../posts}/2021-12-24-bootstrap-jaxrs31.md | 9 +- .../2022-01-13-resteasy-6.0.0-release.md | 9 +- ...04-14-resteasy-spring-6-wildfly-example.md | 0 .../posts}/2022-04-19-resteasy-releases.md | 8 +- .../posts}/2022-04-26-resteasy-6.1.0.Beta2.md | 5 +- .../posts}/2022-07-21-resteasy-releases.md | 14 +- .../2022-08-02-resteasy-6.1.0-release.md | 7 +- ...2022-09-08-resteasy-6.2.0.Beta1-release.md | 7 +- ...2022-09-23-resteasy-6.2.0.Final-release.md | 5 +- ...2022-10-10-resteasy-6.2.1.Final-release.md | 5 +- .../posts}/2022-11-01-sebootstrap-usage.md | 1 - .../posts}/2022-12-13-resteasy-releases.md | 6 +- ...023-02-20-resteasy-microprofile-openapi.md | 2 +- .../posts}/2023-03-01-resteasy-releases.md | 8 +- .../2023-04-12-tracing-feature-in-wildfly.md | 3 +- .../posts/2023-05-16-resteasy-releases.md | 6 +- .../posts}/2023-05-30-grpc-in-wildfly-pt2.md | 0 .../posts}/2023-08-21-resteasy-releases.md | 6 +- .../posts}/2023-09-12-resteasy-grpc.md | 1 - .../posts}/2023-11-02-resteasy-releases.md | 6 +- .../posts}/2023-12-06-overview-and-roadmap.md | 8 +- .../posts}/2024-01-12-resteasy-releases.md | 4 +- .../2024-01-23-grpc-jakarta-rs-arrays.md | 0 .../posts}/2024-01-31-resteasy-glow.md | 4 +- .../posts/2024-03-22-6.2.8-release.md | 7 +- .../posts}/2024-05-21-releases.md | 6 +- .../posts}/2024-08-19-releases.md | 6 +- .../posts}/2024-11-11-releases.md | 6 +- ...-15-resteasy-spring-boot-with-springdoc.md | 2 - .../2025-02-14-resteasy-grpc-collections.md | 0 .../2025-02-19-resteasy-to-foundation.md | 2 +- .../posts}/2025-03-10-releases.md | 6 +- .../posts}/2025-03-19-red-hat-ibm.md | 6 +- content/rss.xml | 5 + content/sitemap.xml | 1 + .../releases.yaml => data/grpcreleases.yaml | 0 {_data => data}/releases.yaml | 0 docs.html | 63 ------- feed.xml | 30 ---- jbang/fixdate.java | 99 +++++++++++ jbang/out/production/jbang/fixdate.class | Bin 0 -> 4815 bytes pom.xml | 167 ++++++++++++++++++ CNAME => public/CNAME | 0 {css => public/css}/background.png | Bin {css => public/css}/bg.png | Bin {css => public/css}/bootstrap.min.css | 2 +- {css => public/css}/clearspace_common.css | 0 {css => public/css}/jbossdeveloper-thin.css | 0 {css => public/css}/jquery-ui.css | 0 {css => public/css}/main.css | 0 {css => public/css}/org_common.css | 0 {css => public/css}/project.css | 0 {css => public/css}/rhbar.css | 0 {css => public/css}/stkdefault-styles.css | 0 {css => public/css}/styles.css | 0 {css => public/css}/wide.css | 0 {img => public/img}/blog/20200522/1.png | Bin {img => public/img}/blog/20200522/2.png | Bin {img => public/img}/blog/20200522/3.png | Bin {img => public/img}/blog/20200530/grafana.png | Bin .../img}/blog/20200530/microprofile.jpeg | Bin .../img}/blog/20200530/prometheus.png | Bin {img => public/img}/blog/Class+Diagram22.png | Bin {img => public/img}/blog/callback-hell.jpg | Bin {img => public/img}/blog/feed-icon.png | Bin {img => public/img}/blog/good-news.jpg | Bin .../0/imageBinary/restful_java.gif | Bin .../00/imageBinary/rest.gif | Bin .../01/imageBinary/cookbook.gif | Bin {img => public/img}/css/bg.png | Bin .../img}/css/jbossdeveloper-thin.css | 0 .../icons/favicons/resteasy_icon_16x.png | Bin .../img}/logo/resteasy_logo_600x.png | Bin .../favicon/resteasy_icon_16x.png | Bin .../orgLayoutBody/resteasy-banner-1180px.png | Bin {img => public/img}/rhbar/redhatlogo.png | Bin .../img}/rhbar/redhatlogo_reverse.png | Bin {img => public/img}/rhbar/rhd_reverse.png | Bin .../resteasy_coolstuff_makerfile.png | Bin .../0/imageBinary/yklogo.png | Bin {img => public/img}/social/envelope-solid.svg | 0 {img => public/img}/social/facebook.svg | 0 {img => public/img}/social/linkedin.svg | 0 {img => public/img}/social/reddit.svg | 0 {img => public/img}/social/twitter.svg | 0 .../java/org/resteasy/site/Extensions.java | 35 ++++ .../resteasy/site/model/Documentation.java | 14 ++ .../org/resteasy/site/model/GrpcReleases.java | 9 + .../java/org/resteasy/site/model/Release.java | 10 ++ .../resteasy/site/model/ReleaseDetail.java | 21 +++ .../org/resteasy/site/model/Releases.java | 11 ++ .../java/org/resteasy/site/model/Spec.java | 11 ++ src/main/resources/application.properties | 3 + .../java/dev/resteasy/site/RoqSiteTest.java | 14 ++ templates/layouts/default.html | 10 ++ templates/layouts/doc-listing.html | 41 +++++ templates/layouts/downloads.html | 44 +++++ templates/layouts/main.html | 10 ++ templates/layouts/post.html | 14 ++ templates/partials/default.html | 18 ++ {_includes => templates/partials}/footer.html | 16 +- templates/partials/head.html | 25 +++ {_includes => templates/partials}/main.html | 4 +- {_includes => templates/partials}/nav.html | 19 +- templates/partials/news-list.html | 29 +++ {_includes => templates/partials}/post.html | 13 +- {_includes => templates/partials}/right.html | 22 +-- templates/partials/share-page.html | 17 ++ 202 files changed, 1102 insertions(+), 1409 deletions(-) create mode 100644 .github/workflows/github-pages.yml delete mode 100644 .github/workflows/jekyll.yml create mode 100644 .github/workflows/testsite.yml delete mode 100644 Gemfile delete mode 100644 Gemfile.lock delete mode 100644 _includes/default.html delete mode 100644 _includes/head.html delete mode 100644 _includes/news-list.html delete mode 100644 _includes/share-page.html delete mode 100644 _layouts/default.html delete mode 100644 _layouts/doc-listing.html delete mode 100644 _layouts/downloads.html delete mode 100644 _layouts/main.html delete mode 100644 _layouts/post.html delete mode 100644 blogs/index.html create mode 100644 content/blogs/index.html rename books.html => content/books.html (87%) rename build.html => content/build.html (100%) create mode 100644 content/docs.html rename {docs => content/docs}/all-docs.md (69%) rename {docs => content/docs}/grpc/grpc-bridge.adoc (96%) rename downloads.md => content/downloads.md (100%) rename index.md => content/index.md (100%) rename mailinglists.html => content/mailinglists.html (100%) rename {_posts => content/posts}/2016-09-13-new-resteasy-blog.md (70%) rename {_posts => content/posts}/2016-09-13-on-the-road-to-resteasy-310-release.md (93%) rename {_posts => content/posts}/2016-10-03-resteasy-310cr1-is-out.md (84%) rename {_posts => content/posts}/2016-10-05-resteasy-310cr2-is-out.md (84%) rename {_posts => content/posts}/2016-11-05-yet-another-resteasy-310-candidate-release.md (92%) rename {_posts => content/posts}/2016-12-14-resteasy-310final-is-out.md (92%) rename {_posts => content/posts}/2017-02-27-resteasy-311final-is-out.md (89%) rename {_posts => content/posts}/2017-03-31-resteasy-312final-and-3022final-are-out.md (84%) rename {_posts => content/posts}/2017-07-26-summer-releases-and-now-on-jax-rs-21.md (84%) rename {_posts => content/posts}/2017-08-09-how-to-use-resteasy-in-a-spring-boot-application.md (98%) rename {_posts => content/posts}/2017-11-13-resteasy-400beta1.md (92%) rename {_posts => content/posts}/2018-02-22-resteasy-350final-and-400beta2.md (95%) rename {_posts => content/posts}/2018-04-18-time-for-a-couple-of-bug-fix-releases.md (91%) rename {_posts => content/posts}/2018-05-23-resteasy-spring-boot-starter-has-moved.md (92%) rename {_posts => content/posts}/2018-05-29-new-blog.md (99%) rename {_posts => content/posts}/2018-06-04-asynchronous-reactive-rxjava-and-beyond.md (99%) rename {_posts => content/posts}/2018-06-11-a-brief-introduction-to-the-resteasy-tracing-feature.md (98%) rename {_posts => content/posts}/2018-06-18-new-asynchronous-container-filters.md (98%) rename {_posts => content/posts}/2018-07-02-resteasy-360final-and-400beta4.md (94%) rename {_posts => content/posts}/2018-07-19-asynchronous-injection-in-resteasy.md (98%) rename {_posts => content/posts}/2018-07-31-resteasy-spring-boot-starter-200final.md (87%) rename {_posts => content/posts}/2018-08-09-resteasy-release-week.md (88%) rename {_posts => content/posts}/2018-09-05-resteasy-tracing-feature-now-supports-json-formatted-information.md (97%) rename {_posts => content/posts}/2018-10-31-resteasy-wadl-grammar-support.md (98%) rename {_posts => content/posts}/2019-02-12-jettison-has-been-removed-on-master-branch.md (90%) rename {_posts => content/posts}/2019-03-13-the-undertowjaxrsspringserver.md (96%) rename {_posts => content/posts}/2019-03-28-resteasy-4-is-coming-soon.md (97%) rename {_posts => content/posts}/2019-05-07-resteasy-400final-is-here.md (92%) rename {_posts => content/posts}/2019-06-03-resteasy-spring-boot-starter-310final-released.md (84%) rename {_posts => content/posts}/2019-06-19-resteasy-380final-and-microprofile-3.md (91%) rename {_posts => content/posts}/2019-06-27-resteasy-410final-is-available.md (90%) rename {_posts => content/posts}/2019-07-16-resteasy-spring-boot-starter-400final-released.md (88%) rename {_posts => content/posts}/2019-08-05-resteasy-420final-performance-enhancements-and-new-features.md (93%) rename {_posts => content/posts}/2019-09-04-resteasy-spring-boot-starter-410final-and-320final-released.md (79%) rename {_posts => content/posts}/2019-09-23-resteasy-430final-and-390final-released.md (80%) rename {_posts => content/posts}/2019-10-08-looking-to-the-future.md (96%) rename {_posts => content/posts}/2019-10-08-resteasy-spring-boot-starter-411final-released.md (69%) rename {_posts => content/posts}/2019-10-30-resteasy-440final-moving-to-jakarta-artifacts-and-much-more.md (92%) rename _posts/2019-10-30-resteasy-3100final-jakarta.md => content/posts/2020-01-15-resteasy-3100final-jakarta.md (95%) rename {_posts => content/posts}/2020-02-11-resteasy-jackson-polymorphic-type-validator.md (97%) rename {_posts => content/posts}/2020-02-20-resteasy-3110final-mp-rest-client.md (94%) rename {_posts => content/posts}/2020-04-10-spring.md (99%) rename {_posts => content/posts}/2020-04-27-wildfly-deploy.md (99%) rename {_posts => content/posts}/2020-05-18-MicroProfile-config.md (96%) rename {_posts => content/posts}/2020-05-22-swagger.md (99%) rename {_posts => content/posts}/2020-05-30-monitor-your-application-with-microprofile-metrics.md (99%) rename {_posts => content/posts}/2020-06-01-blog-microprofile-rest-client.md (99%) rename {_posts => content/posts}/2020-06-19-create-jaxrs-server-with-galleon.md (99%) rename {_posts => content/posts}/2020-07-14-blog-microprofile-config-outOfBox.md (99%) rename {_posts => content/posts}/2020-07-30-resteasy-456-3130.md (89%) rename {_posts => content/posts}/2020-09-24-resteasy-4.5.8-3.13.1.md (76%) rename {_posts => content/posts}/2020-10-09-run-restful-service-with-bootablejar.md (99%) rename {_posts => content/posts}/2020-11-23-blog-Untangling-Reactive-Streams.md (99%) rename {_posts => content/posts}/2020-12-07-resteasy-reactive.md (98%) rename {_posts => content/posts}/2021-01-14-resteasy-4.6.0.Final.md (95%) rename {_posts => content/posts}/2021-01-19-deploy-resteasy-wadl-to-wildfly.md (99%) rename {_posts => content/posts}/2021-02-18-resteasy-3.15.0.Final.md (84%) rename {_posts => content/posts}/2021-04-05-blog-ParamConverter-with-Quarkus.md (98%) rename {_posts => content/posts}/2021-07-06-resteasy-4.6.2.Final.md (94%) rename {_posts => content/posts}/2021-07-08-resteasy-4.7.0.Final.md (94%) rename {_posts => content/posts}/2021-07-29-separate-spring-and-microprofile.md (99%) rename {_posts => content/posts}/2021-09-23-announcements-and-releases.md (97%) rename {_posts => content/posts}/2021-10-13-resteasy-spring-wildfly-and-more.md (99%) rename {_posts => content/posts}/2021-11-03-http-engine.md (98%) rename {_posts => content/posts}/2021-11-04-resteasy-5.0.0-release.md (96%) rename {_posts => content/posts}/2021-11-22-feature-pack.md (99%) rename {_posts => content/posts}/2021-12-02-resteasy-releases.md (63%) rename {_posts => content/posts}/2021-12-13-tracing-feature.md (99%) rename {_posts => content/posts}/2021-12-24-bootstrap-jaxrs31.md (99%) rename {_posts => content/posts}/2022-01-13-resteasy-6.0.0-release.md (63%) rename {_posts => content/posts}/2022-04-14-resteasy-spring-6-wildfly-example.md (100%) rename {_posts => content/posts}/2022-04-19-resteasy-releases.md (93%) rename {_posts => content/posts}/2022-04-26-resteasy-6.1.0.Beta2.md (83%) rename {_posts => content/posts}/2022-07-21-resteasy-releases.md (92%) rename {_posts => content/posts}/2022-08-02-resteasy-6.1.0-release.md (94%) rename {_posts => content/posts}/2022-09-08-resteasy-6.2.0.Beta1-release.md (81%) rename {_posts => content/posts}/2022-09-23-resteasy-6.2.0.Final-release.md (91%) rename {_posts => content/posts}/2022-10-10-resteasy-6.2.1.Final-release.md (83%) rename {_posts => content/posts}/2022-11-01-sebootstrap-usage.md (99%) rename {_posts => content/posts}/2022-12-13-resteasy-releases.md (84%) rename {_posts => content/posts}/2023-02-20-resteasy-microprofile-openapi.md (99%) rename {_posts => content/posts}/2023-03-01-resteasy-releases.md (94%) rename {_posts => content/posts}/2023-04-12-tracing-feature-in-wildfly.md (99%) rename _posts/2023-05-15-resteasy-releases.md => content/posts/2023-05-16-resteasy-releases.md (91%) rename {_posts => content/posts}/2023-05-30-grpc-in-wildfly-pt2.md (100%) rename {_posts => content/posts}/2023-08-21-resteasy-releases.md (87%) rename {_posts => content/posts}/2023-09-12-resteasy-grpc.md (99%) rename {_posts => content/posts}/2023-11-02-resteasy-releases.md (89%) rename {_posts => content/posts}/2023-12-06-overview-and-roadmap.md (95%) rename {_posts => content/posts}/2024-01-12-resteasy-releases.md (93%) rename {_posts => content/posts}/2024-01-23-grpc-jakarta-rs-arrays.md (100%) rename {_posts => content/posts}/2024-01-31-resteasy-glow.md (98%) rename _posts/2024-03-22-6.2.8-releas.md => content/posts/2024-03-22-6.2.8-release.md (93%) rename {_posts => content/posts}/2024-05-21-releases.md (98%) rename {_posts => content/posts}/2024-08-19-releases.md (94%) rename {_posts => content/posts}/2024-11-11-releases.md (96%) rename {_posts => content/posts}/2024-11-15-resteasy-spring-boot-with-springdoc.md (99%) rename {_posts => content/posts}/2025-02-14-resteasy-grpc-collections.md (100%) rename {_posts => content/posts}/2025-02-19-resteasy-to-foundation.md (98%) rename {_posts => content/posts}/2025-03-10-releases.md (96%) rename {_posts => content/posts}/2025-03-19-red-hat-ibm.md (93%) create mode 100644 content/rss.xml create mode 100644 content/sitemap.xml rename _data/grpc/releases.yaml => data/grpcreleases.yaml (100%) rename {_data => data}/releases.yaml (100%) delete mode 100644 docs.html delete mode 100644 feed.xml create mode 100755 jbang/fixdate.java create mode 100644 jbang/out/production/jbang/fixdate.class create mode 100644 pom.xml rename CNAME => public/CNAME (100%) rename {css => public/css}/background.png (100%) rename {css => public/css}/bg.png (100%) rename {css => public/css}/bootstrap.min.css (91%) rename {css => public/css}/clearspace_common.css (100%) rename {css => public/css}/jbossdeveloper-thin.css (100%) rename {css => public/css}/jquery-ui.css (100%) rename {css => public/css}/main.css (100%) rename {css => public/css}/org_common.css (100%) rename {css => public/css}/project.css (100%) rename {css => public/css}/rhbar.css (100%) rename {css => public/css}/stkdefault-styles.css (100%) rename {css => public/css}/styles.css (100%) rename {css => public/css}/wide.css (100%) rename {img => public/img}/blog/20200522/1.png (100%) rename {img => public/img}/blog/20200522/2.png (100%) rename {img => public/img}/blog/20200522/3.png (100%) rename {img => public/img}/blog/20200530/grafana.png (100%) rename {img => public/img}/blog/20200530/microprofile.jpeg (100%) rename {img => public/img}/blog/20200530/prometheus.png (100%) rename {img => public/img}/blog/Class+Diagram22.png (100%) rename {img => public/img}/blog/callback-hell.jpg (100%) rename {img => public/img}/blog/feed-icon.png (100%) rename {img => public/img}/blog/good-news.jpg (100%) rename {img => public/img}/books/mainColumnParagraphs/0/imageBinary/restful_java.gif (100%) rename {img => public/img}/books/mainColumnParagraphs/00/imageBinary/rest.gif (100%) rename {img => public/img}/books/mainColumnParagraphs/01/imageBinary/cookbook.gif (100%) rename {img => public/img}/css/bg.png (100%) rename {img => public/img}/css/jbossdeveloper-thin.css (100%) rename {img => public/img}/dms/content/common/icons/favicons/resteasy_icon_16x.png (100%) rename {img => public/img}/logo/resteasy_logo_600x.png (100%) rename {img => public/img}/orgLayoutBody/favicon/resteasy_icon_16x.png (100%) rename {img => public/img}/orgLayoutBody/resteasy-banner-1180px.png (100%) rename {img => public/img}/rhbar/redhatlogo.png (100%) rename {img => public/img}/rhbar/redhatlogo_reverse.png (100%) rename {img => public/img}/rhbar/rhd_reverse.png (100%) rename {img => public/img}/rightColumnParagraphs/0/imageBinary/resteasy_coolstuff_makerfile.png (100%) rename {img => public/img}/rightColumnParagraphs/0/imageBinary/yklogo.png (100%) rename {img => public/img}/social/envelope-solid.svg (100%) rename {img => public/img}/social/facebook.svg (100%) rename {img => public/img}/social/linkedin.svg (100%) rename {img => public/img}/social/reddit.svg (100%) rename {img => public/img}/social/twitter.svg (100%) create mode 100644 src/main/java/org/resteasy/site/Extensions.java create mode 100644 src/main/java/org/resteasy/site/model/Documentation.java create mode 100644 src/main/java/org/resteasy/site/model/GrpcReleases.java create mode 100644 src/main/java/org/resteasy/site/model/Release.java create mode 100644 src/main/java/org/resteasy/site/model/ReleaseDetail.java create mode 100644 src/main/java/org/resteasy/site/model/Releases.java create mode 100644 src/main/java/org/resteasy/site/model/Spec.java create mode 100644 src/main/resources/application.properties create mode 100644 src/test/java/dev/resteasy/site/RoqSiteTest.java create mode 100644 templates/layouts/default.html create mode 100644 templates/layouts/doc-listing.html create mode 100644 templates/layouts/downloads.html create mode 100644 templates/layouts/main.html create mode 100644 templates/layouts/post.html create mode 100644 templates/partials/default.html rename {_includes => templates/partials}/footer.html (75%) create mode 100644 templates/partials/head.html rename {_includes => templates/partials}/main.html (97%) rename {_includes => templates/partials}/nav.html (74%) create mode 100644 templates/partials/news-list.html rename {_includes => templates/partials}/post.html (55%) rename {_includes => templates/partials}/right.html (92%) create mode 100644 templates/partials/share-page.html diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml new file mode 100644 index 0000000..bd817ae --- /dev/null +++ b/.github/workflows/github-pages.yml @@ -0,0 +1,43 @@ +name: Build and deploy Roq site to GitHub Pages + +on: + push: + branches: + - main + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - name: Generate Roq Site + uses: quarkiverse/quarkus-roq@v1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} # Used to automatically get the GitHub Pages url + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml deleted file mode 100644 index 3863d52..0000000 --- a/.github/workflows/jekyll.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: Deploy Jekyll site to Pages - -on: - # Runs on pushes targeting the default branch - push: - branches: ["main"] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. -concurrency: - group: "pages" - cancel-in-progress: false - -jobs: - # Build job - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.1' - bundler-cache: true # runs 'bundle install' and caches installed gems automatically - cache-version: 0 # Increment this number if you need to re-download cached gems - - name: Setup Pages - id: pages - uses: actions/configure-pages@v5 - - name: Build with Jekyll - # Outputs to the './_site' directory by default - run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" - env: - JEKYLL_ENV: production - - name: Upload artifact - # Automatically uploads an artifact from the './_site' directory by default - uses: actions/upload-pages-artifact@v3 - - # Deployment job - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.github/workflows/testsite.yml b/.github/workflows/testsite.yml new file mode 100644 index 0000000..f132047 --- /dev/null +++ b/.github/workflows/testsite.yml @@ -0,0 +1,23 @@ +name: Test site build + +on: + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + - name: Build with Maven + run: mvn --batch-mode clean test + - name: Archive generated site + uses: actions/upload-artifact@v4 + with: + name: generated-site + path: ./target/roq/ diff --git a/.gitignore b/.gitignore index 55d34d3..fc56ab2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,12 @@ -# IDEA files -.idea - -# Jekyll directories -/.jekyll-cache/ -/_site/ +target -# Used for bundler -.bundle -vendor/ - -# rbenv will use this file if "rbenv local" is used -.ruby-version +## IDE +.settings +.project +.buildpath +.idea +*.iml +.vscode -# macOS files -.DS_Store +## OS related +*.DS_Store diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 2d440ff..0000000 --- a/Gemfile +++ /dev/null @@ -1,37 +0,0 @@ -source "https://rubygems.org" - -# Hello! This is where you manage which Jekyll version is used to run. -# When you want to use a different version, change it below, save the -# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: -# -# bundle exec jekyll serve -# -# This will help ensure the proper Jekyll version is running. -# Happy Jekylling! -gem "jekyll", "~> 4.2.0" -gem "liquid", "~> 4.0.4" - -# This is the default theme for new Jekyll sites. You may change this to anything you like. -gem "minima", "~> 2.5" - -# If you want to use GitHub Pages, remove the "gem "jekyll"" above and -# uncomment the line below. To upgrade, run `bundle update github-pages`. -# gem "github-pages", group: :jekyll_plugins - -# If you have any plugins, put them here! -group :jekyll_plugins do - gem 'jekyll-asciidoc', "~> 3.0.0" - gem "jekyll-feed", "~> 0.6" - #gem 'jekyll-paginate-v2' - gem 'jekyll-paginate', "~> 1.1.0" -end - -# Windows does not include zoneinfo files, so bundle the tzinfo-data gem -gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] - -# Performance-booster for watching directories on Windows -gem "wdm", "~> 0.1.0" if Gem.win_platform? - -# Presently required for Ruby 3 - https://github.com/jekyll/jekyll/issues/8523 -# Looks to be addressed in jekyll 4.3 -gem "webrick" \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 0097906..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,91 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.4) - public_suffix (>= 2.0.2, < 6.0) - asciidoctor (2.0.20) - colorator (1.1.0) - concurrent-ruby (1.2.2) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - eventmachine (1.2.7) - ffi (1.15.5) - forwardable-extended (2.6.0) - http_parser.rb (0.8.0) - i18n (1.13.0) - concurrent-ruby (~> 1.0) - jekyll (4.2.2) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (~> 1.0) - jekyll-sass-converter (~> 2.0) - jekyll-watch (~> 2.0) - kramdown (~> 2.3) - kramdown-parser-gfm (~> 1.0) - liquid (~> 4.0) - mercenary (~> 0.4.0) - pathutil (~> 0.9) - rouge (~> 3.0) - safe_yaml (~> 1.0) - terminal-table (~> 2.0) - jekyll-asciidoc (3.0.0) - asciidoctor (>= 1.5.0) - jekyll (>= 3.0.0) - jekyll-feed (0.17.0) - jekyll (>= 3.7, < 5.0) - jekyll-paginate (1.1.0) - jekyll-sass-converter (2.2.0) - sassc (> 2.0.1, < 3.0) - jekyll-seo-tag (2.8.0) - jekyll (>= 3.8, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - kramdown (2.4.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.4) - listen (3.8.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.4.0) - minima (2.5.1) - jekyll (>= 3.5, < 5.0) - jekyll-feed (~> 0.9) - jekyll-seo-tag (~> 2.1) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (5.0.1) - rb-fsevent (0.11.2) - rb-inotify (0.10.1) - ffi (~> 1.0) - rexml (3.2.8) - strscan (>= 3.0.9) - rouge (3.30.0) - safe_yaml (1.0.5) - sassc (2.4.0) - ffi (~> 1.9) - strscan (3.1.0) - terminal-table (2.0.0) - unicode-display_width (~> 1.1, >= 1.1.1) - unicode-display_width (1.8.0) - webrick (1.8.1) - -PLATFORMS - x86_64-darwin-21 - x86_64-linux - -DEPENDENCIES - jekyll (~> 4.2.0) - jekyll-asciidoc (~> 3.0.0) - jekyll-feed (~> 0.6) - jekyll-paginate (~> 1.1.0) - liquid (~> 4.0.4) - minima (~> 2.5) - tzinfo-data - webrick - -BUNDLED WITH - 2.2.26 diff --git a/README.MD b/README.MD index b96b250..76f8842 100644 --- a/README.MD +++ b/README.MD @@ -6,7 +6,7 @@ These instructions will get you a copy of the RESTEasy website up and running on ### Installation -Follow this instructions from [github-pages](https://help.github.com/en/github/working-with-github-pages/testing-your-github-pages-site-locally-with-jekyll) +Follow these instructions from [github-pages](https://help.github.com/en/github/working-with-github-pages/testing-your-github-pages-site-locally-with-jekyll) to start local server and test your change before submit ## Writing blog @@ -21,7 +21,7 @@ Add a blog entry: layout: post title: "Blog Title" subtitle: "" -date: 2019-10-30 8:07:00 +date: 2019-10-30 08:07:00 author: "Java Robot" --- Blog content line 1 @@ -33,7 +33,3 @@ To announce a release you may need update these content: - Add news update in [index.md](https://github.com/jimma/resteasy-website/blob/master/index.md) - Link the download in [downloads.html](https://github.com/jimma/resteasy-website/blob/master/downloads.html) and documentation in [docs.html](https://github.com/jimma/resteasy-website/blob/master/docs.html) - - - - diff --git a/_includes/default.html b/_includes/default.html deleted file mode 100644 index 681a905..0000000 --- a/_includes/default.html +++ /dev/null @@ -1,21 +0,0 @@ -
-
-
-
-
- - {{content}} - -
-
- diff --git a/_includes/head.html b/_includes/head.html deleted file mode 100644 index 3aeae8b..0000000 --- a/_includes/head.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - RESTEasy - JBoss Community - - - - - - - - - - - diff --git a/_includes/news-list.html b/_includes/news-list.html deleted file mode 100644 index 8762497..0000000 --- a/_includes/news-list.html +++ /dev/null @@ -1,22 +0,0 @@ -
-
-

Latest News

-
- {% for post in site.posts %} - {% assign author = site.data.authors[post.author] %} - {% if forloop.index <= 10 %} -
- - - {% if post.synopsis %} -

{{ post.synopsis | strip_html }}

- {% else %} -

{{ post.content | strip_html | truncatewords: 75 }}

- {% endif %} - {% if post.link contains 'youtube' %}Watch Video >{% else %}Read More >{% endif %} -
- {% endif %} - {% endfor %} -
diff --git a/_includes/share-page.html b/_includes/share-page.html deleted file mode 100644 index ab8c41b..0000000 --- a/_includes/share-page.html +++ /dev/null @@ -1,17 +0,0 @@ - diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index 6e140e1..0000000 --- a/_layouts/default.html +++ /dev/null @@ -1,10 +0,0 @@ - - - {% include head.html %} - - {% include nav.html %} - {% include default.html %} - {% include right.html %} - {% include footer.html %} - - diff --git a/_layouts/doc-listing.html b/_layouts/doc-listing.html deleted file mode 100644 index 4ac4ff2..0000000 --- a/_layouts/doc-listing.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: default -title: "Documentation" -selflink: "docs" ---- - -

RESTEasy Documentation

- -

The documentation below is a combination of DocBook and Javadoc.  The docbook is a Maven - module in our source tree.  If you download or check out our source code from GitHub, you - will find it under the 'docbook' directory.  Javadocs are generated automatically from the - maven build.

-

In release 3.1.0.Final, most of the classes deprecated in the 3.0.x generation of releases are - deleted or moved to an optional module. For some guidance in upgrading, see Upgrading from RESTEasy - 2 to RESTEasy 3.

- - - - - - {% for release in site.data.releases %} - {% for detail in release.detail %} - {% if detail.documentation %} - {% capture rowClass %}{% cycle 'oddRow', '' %}{% endcapture %} - - - - - - - - - {% endif %} - {% endfor %} - {% endfor %} - -
Version
-

{{ detail.version }}

-
{% if detail.documentation.examples %} examples{% endif %}{% if detail.documentation.single_page %}HTML - (single page){% endif %}{% if detail.documentation.link %}HTML{% endif %}{% if detail.documentation.pdf %}PDF{% endif %}{% if detail.documentation.java_doc %}Javadocs{% endif %}
diff --git a/_layouts/downloads.html b/_layouts/downloads.html deleted file mode 100644 index 4141361..0000000 --- a/_layouts/downloads.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: default -title: "Downloads" -selflink: "downloads" ---- - -{% for release in site.data.releases %} -{% if release.detail and release.detail[0].download_link %} -

RESTEasy {{ release.group }}

- - - - - - - - - - - - - - {% for detail in release.detail %} - {% if detail.download_link %} - {% capture rowClass %}{% cycle 'oddRow', '' %}{% endcapture %} - - - - - - - - - - {% endif %} - {% endfor %} - -
NameSource CodeSizeRelease dateLicenseRelease notesDownload
{{ detail.version }}{% if detail.source %}Source Code {% endif %}{{ detail.size }}{{ detail.date }}{{ detail.license }} - {% if detail.release_notes %}Release Notes{% endif %} - - {% if detail.download_link %}{{ detail.download_text }}{% endif %} -
-{% endif %} -{% endfor %} diff --git a/_layouts/main.html b/_layouts/main.html deleted file mode 100644 index ba92511..0000000 --- a/_layouts/main.html +++ /dev/null @@ -1,10 +0,0 @@ - - - {% include head.html %} - - {% include nav.html %} - {% include main.html %} - {% include right.html %} - {% include footer.html %} - - diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100644 index b1b31fc..0000000 --- a/_layouts/post.html +++ /dev/null @@ -1,10 +0,0 @@ - - - {% include head.html %} - - {% include nav.html %} - {% include post.html %} - {% include right.html %} - {% include footer.html %} - - diff --git a/blogs/index.html b/blogs/index.html deleted file mode 100644 index 6e599c2..0000000 --- a/blogs/index.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: default -title: Blogs -selflink: blogs ---- - -{% for post in paginator.posts %} -
- -

{{ post.title }} -

- {% if post.subtitle %} -
- {{ post.subtitle }} -
- {% endif %} -
- -
-
-{% endfor %} - - -

-{% if paginator.total_pages > 1 %} - {% if paginator.previous_page %} - ← Newer Posts - {% endif %} -          - {% if paginator.next_page %} - Older Posts → - {% endif %} -{% endif %} diff --git a/content/blogs/index.html b/content/blogs/index.html new file mode 100644 index 0000000..0158368 --- /dev/null +++ b/content/blogs/index.html @@ -0,0 +1,34 @@ +--- +layout: default +title: Blogs +#link: blogs +paginate: + collection: posts + size: 15 + link: blogs/page:page +--- + +{#for post in site.collections.posts.paginated(page.paginator)} +

+ +

{post.title}

+ {#if post.data.containsKey('subtitle')} +
{post.data.subtitle}
+ {/if} +
+ +
+
+{/for} + + +

+{#if page.paginator.total > 1} + {#if page.paginator.previous} + ← Newer Posts + {/if} +          + {#if page.paginator.next} + Older Posts → + {/if} +{/if} diff --git a/books.html b/content/books.html similarity index 87% rename from books.html rename to content/books.html index 998d6d7..dced313 100644 --- a/books.html +++ b/content/books.html @@ -7,7 +7,7 @@ + src="{site.url('/img/books/mainColumnParagraphs/0/imageBinary/restful_java.gif').absolute}"/>

RESTful Java with JAX-RS by @@ -27,7 +27,7 @@ + src="{site.url('/img/books/mainColumnParagraphs/00/imageBinary/rest.gif').absolute}"/>

RESTful Web Services by Leonard @@ -42,7 +42,7 @@ + src="{site.url('/img/books/mainColumnParagraphs/01/imageBinary/cookbook.gif').absolute}"/>

RESTful Web Services Cookbook diff --git a/build.html b/content/build.html similarity index 100% rename from build.html rename to content/build.html diff --git a/content/docs.html b/content/docs.html new file mode 100644 index 0000000..b321698 --- /dev/null +++ b/content/docs.html @@ -0,0 +1,64 @@ +--- +layout: default +title: Documentation +selflink: docs +link: /docs/ +--- +

RESTEasy Documentation (Latest)

+ + +
+ {#for release in cdi:releases.list} + {#if release.supported} + {#let detail = release.detail[0]} +
+
+

RESTEasy {detail.version} ({detail.date})

+ {#if detail.spec} + + {/if} +
    + {#if detail.documentation.link} +
  • Documentation
  • + {/if} + {#if detail.documentation.javadoc} +
  • JavaDoc
  • + {/if} + {#if detail.downloadLink} +
  • Download
  • + {/if} + {#if detail.releaseNotes} +
  • Release Notes
  • + {/if} +
+
+ +
+ {/if} + {/for} + + {#for release in cdi:grpcreleases.list} + {#if release.supported} + {#let detail = release.detail[0]} +
+
+

RESTEasy gRPC {detail.version} ({detail.date})

+ +
+
+ {/if} + {/for} +
diff --git a/docs/all-docs.md b/content/docs/all-docs.md similarity index 69% rename from docs/all-docs.md rename to content/docs/all-docs.md index 2ef2647..39c662c 100644 --- a/docs/all-docs.md +++ b/content/docs/all-docs.md @@ -1,5 +1,5 @@ --- layout: doc-listing title: Documentation -permalink: /docs/all/ +link: /docs/all/ --- diff --git a/docs/grpc/grpc-bridge.adoc b/content/docs/grpc/grpc-bridge.adoc similarity index 96% rename from docs/grpc/grpc-bridge.adoc rename to content/docs/grpc/grpc-bridge.adoc index 425748a..6c0acbf 100644 --- a/docs/grpc/grpc-bridge.adoc +++ b/content/docs/grpc/grpc-bridge.adoc @@ -1,10 +1,12 @@ -= gRPC Bridge Project: User Guide -:page-layout: default -:page-permalink: /docs/grpc/ +--- +title: "gRPC Bridge Project: User Guide" +layout: default +link: /docs/grpc +--- :toc: :sectanchors: - +{| The RESTEasy *gRPC Bridge Project* (aka *resteasy-grpc*) project (https://github.com/resteasy/resteasy-grpc) has been developed to enable communication between gRPC clients and Jakarta REST servers. The @@ -35,6 +37,7 @@ https://developers.google.com/protocol-buffers[protobuf], a data definition framework, also from Google, which has an IDL and a precisely defined wire format. For example, +[source,protobuf] ---- syntax = "proto3"; package org.greet; @@ -52,6 +55,7 @@ distinct integer; e.g., `s` is associated with 1, which supports the translation to and from the wire format. When it is compiled by the protobuf compiler (**protoc**), the output is a several hundred line class called `org.greet.Greet_proto`: +[source,java] ---- package org.greet; @@ -78,6 +82,7 @@ the output is a several hundred line class called `org.greet.Greet_proto`: The `Builder` class supports creating a `Greeting` +[source,java] ---- org.greet.Greet_proto.Greeting.Builder builder = org.greet.Greet_proto.Greeting.newBuilder(); Greeting greeting = builder.setS("foo").build(); @@ -88,6 +93,7 @@ and the `getS()` method supports retrieving the contents of the `Greeting`. gRPC extends the protobuf IDL with a syntax for defining methods. For example, +[source,protobuf] ---- syntax = "proto3"; package org.greet; @@ -111,6 +117,7 @@ extended file is compiled by protoc together with its gRPC plugin, the result, i addition to `org.greet.Greet_proto`, is the class `org.greet.GreetServiceGrpc`, also with hundreds of lines: +[source,java] ---- public final class GreetServiceGrpc { ... @@ -140,6 +147,7 @@ the client side to invoke the methods defined in the IDL file. In this case, there is only one, `greet()`, and an invocation would look something like: +[source,java] ---- private static String target = "localhost:8082"; private static ManagedChannel channel; @@ -172,6 +180,7 @@ the method is not implemented. The idea is that the developer should create a class extending `GreetServiceImplBase` with implementing methods. A simple example is +[source,java] ---- @Override public void greet(org.greet.Greet_proto.gString request, StreamObserver responseObserver) { @@ -188,6 +197,7 @@ message cannot be determined until runtime, and protobuf has a general purpose type, `google.protobuf.Any`, which can hold any type of message. The definition of `Any` is +[source,protobuf] ---- message Any { string type_url = 1; @@ -201,6 +211,7 @@ https://developers.google.com/protocol-buffers/docs/proto3. The type of the message stored in the `value` is described by the URL in the `type_url` field. Consider, for example, +[source,java] ---- gString gs = gString.newBuilder().setValue("abc").build(); Message m = Any.pack(gs); @@ -209,6 +220,7 @@ of the message stored in the `value` is described by the URL in the The output is +[source,protobuf] ---- type_url: "type.googleapis.com/org.greet.gString" value: "\272\001\003abc" @@ -224,6 +236,7 @@ the `value` field. The advantage of the `type_url` field is that it can be used to retrieve the value of the `Any`. Consider, for example, the code +[source,java] ---- Any any = null; if (/* some predicate */) { @@ -238,6 +251,7 @@ the value of the `Any`. Consider, for example, the code Then, the `Any` can be unpacked as follows: +[source,java] ---- /* get any */ if (any.getTypeUrl().endsWith("org.greet.gString")) { @@ -282,6 +296,7 @@ additional classes, which we will discuss in <>. Given `org.greet.Greeting` +[source,java] ---- package org.greet; @@ -296,6 +311,7 @@ Given `org.greet.Greeting` and `org.greet.Greeter` +[source,java] ---- package org.greet; @@ -315,6 +331,7 @@ and `org.greet.Greeter` `JavaToProtobufGenerator` will generate the IDL file Greet.proto: +[source,protobuf] ---- syntax = "proto3"; package org.greet; @@ -436,6 +453,7 @@ entity parameter itself, things like headers, cookies, query parameters, etc. `GeneralEntityMessage` can accomodate all of those. Also, consider the element +[source,protobuf] ---- oneof messageType { gString gString_field = 5; @@ -449,12 +467,14 @@ value whose type is one of the types listed in the in the list (other than the `FormMap` field for form data, which isn't used here). But suppose there were another rpc method with the comment +[source,protobuf] ---- // /float gFloat gInteger GET sync ---- Then the `oneof` field would look like +[source,protobuf] ---- oneof messageType { gString gString_field = 5; @@ -490,6 +510,7 @@ structure being derived from another structure. accumulating the fields in a single class. Let's define the class `GeneralGreeting` +[source,java] ---- package org.greet; @@ -505,6 +526,7 @@ accumulating the fields in a single class. Let's define the class and extend `Greeter`: +[source,java] ---- @Path("") public class Greeter { @@ -525,6 +547,7 @@ and extend `Greeter`: Then `JavaToProtobufGenerator` will make the following adjustments to Greet.proto: +[source,protobuf] ---- ... service GreetService { @@ -577,6 +600,7 @@ uses two devices to bridge the gap. For example, consider +[source,java] ---- package x.y; @@ -607,6 +631,8 @@ For example, consider ---- where `x.y.Grimble` is + +[source,java] ---- public class Grimble { T t; @@ -614,6 +640,7 @@ where `x.y.Grimble` is ---- This leads to the following elements in the .proto file: +[source,protobuf] ---- // p/grimble/raw x_y___Grimble google.protobuf.Empty GET sync rpc gr_raw (GeneralEntityMessage) returns (GeneralReturnMessage); @@ -680,6 +707,8 @@ class `KeySet`, but non-static inner classes are not currently supported by resteasy-grpc. Instead, each protobuf translation of a java `Set` looks like + +[source,protobuf] ---- // Set: java.util.HashSet message java_util___HashSet3 { @@ -700,6 +729,8 @@ appropriate type, in this case, `java.lang.String`, as indicated by the immediately preceding comment. A somewhat more complex example is + +[source,protobuf] ---- // Set: java.util.Set> message java_util___Set112 { @@ -711,6 +742,8 @@ message java_util___Set112 { Note that the `data` field has type `java_util___HashSet3`, defined above. Implementations of `java.util.List` look similar. For example, + +[source,protobuf] ---- // List: java.util.List message java_util___List31 { @@ -729,6 +762,8 @@ message java_util___List30 { Everything discussed in the section about generic types applies to variants of `List` and `Set`. For example, + +[source,java] ---- package x.y; @@ -763,6 +798,8 @@ Everything discussed in the section about generic types applies to variants of } ---- turns into + +[source,protobuf] ---- // arraylist/variable java_util___ArrayList17 java_util___ArrayList17 POST sync rpc arrayListTest1 (GeneralEntityMessage) returns (GeneralReturnMessage); @@ -811,6 +848,8 @@ but it is currently under reconsideration. Stay tuned for further discussion. ==== Interfaces Consider + +[source,java] ---- @GET @Path("list/string") @@ -823,6 +862,7 @@ Given that actual types of the entity `l` or the return value cannot be determin they are handled as instances of `google.protobuf.Any`. In the .proto file, the method would be represented as +[source,protobuf] ---- // list/string google.protobuf.Any google.protobuf.Any POST sync rpc listTest (GeneralEntityMessage) returns (GeneralReturnMessage); @@ -831,6 +871,7 @@ method would be represented as ==== Response Consider the resource method +[source,java] ---- public Response m() { if (test()) { @@ -843,6 +884,7 @@ Consider the resource method Will it return an `X` or a `Y`? If `test()` is +[source,java] ---- public boolean test() { return true; @@ -861,6 +903,7 @@ an `Object`. This is another case in which the protobuf type Suppose we add the resource method +[source,java] ---- @GET @Path("greet/response") @@ -870,6 +913,8 @@ Suppose we add the resource method ---- to `org.greet.Greeter`. Then there is a new rpc entry + +[source,protobuf] ---- // greet/response gString google.protobuf.Any GET sync rpc response (GeneralEntityMessage) returns (GeneralReturnMessage); @@ -877,6 +922,7 @@ to `org.greet.Greeter`. Then there is a new rpc entry and the oneof field of `GeneralReturnMessage` becomes +[source,protobuf] ---- oneof messageType { org_greet___Greeting org_greet___Greeting_field = 4; @@ -893,6 +939,7 @@ Another case in which we can't statically determine the return type is when an asynchronous resource method uses the `@Suspended` annotation. Consider the following method: +[source,java] ---- @GET @Path("suspend") @@ -913,6 +960,7 @@ Consider the following method: This results in the rpc +[source,protobuf] ---- // .../suspend gEmpty google.protobuf.Any GET suspended rpc suspend (GeneralEntityMessage) returns (GeneralReturnMessage); @@ -940,12 +988,14 @@ methods. Given the updated version of `org.greet.Greeter`, there will be two methods in `GreetServiceGrpc` that need to be overridden. For example, +[source,java] ---- public void greet(org.greet.Greet_proto.GeneralEntityMessage param, StreamObserver responseObserver); ---- will be overridden by +[source,java] ---- @java.lang.Override public void greet(org.greet.Greet_proto.GeneralEntityMessage param, StreamObserver responseObserver) { @@ -994,6 +1044,7 @@ into too much detail, the following steps occur: Note that the sequence +[source] ---- org.greet.Greeting (Java class) -> (translated by JavaToProtobufGenerator) -> @@ -1014,6 +1065,7 @@ The grpc-bridge class generates a class like `org.greet.GreetJavabufTranslator` (where the `Greet` prefix will change), which has three methods +[source,java] ---- Message translateToJavabuf(Object o); Message translateToJavabuf(Object o, GenericType genericType); @@ -1024,6 +1076,7 @@ which do the translations. Without going too deeply into the details, `GreetJavabufTranslator` has two classes for each message type; for example, +[source,java] ---- static class org_greet___Greeting_ToJavabuf implements TranslateToJavabuf { ... } static class org_greet___Greeting_FromJavabuf implements TranslateFromJavabuf { ... } @@ -1051,6 +1104,7 @@ highest priority. One strategy available in RESTEasy is to eliminate *all* built-in providers and then add back any that are necessary. For example, that can be accomplished in a web.xml file as follows: +[source,xml] ---- GreetServlet @@ -1129,6 +1183,8 @@ B. create a Java entity and translate it to javabuf with the `JavabufTranslator` For example, to create an instance of `java_util___HashSet3`, defined in <>, one option would be + +[source,java] ---- java.util.HashSet set = new java.util.HashSet(); set.add("abc"); @@ -1137,6 +1193,8 @@ GenericType> type java_util___HashSet3 hashSet3 = (java_util___HashSet3) translator.translateToJavabuf(set, type); ---- and the other would be + +[source,java] ---- java_util___HashSet3.Builder builder = java_util___HashSet3.newBuilder(); builder.addData("abc"); @@ -1145,6 +1203,8 @@ java_util___HashSet3 hashSet3 = builder.build(); *Note.* How did we know which javabuf type to use for a given invocation? It's easy. First, look at the resource method. Suppose we're going to call + +[source,java] ---- @Path("hashset/string") @POST @@ -1155,6 +1215,8 @@ It's easy. First, look at the resource method. Suppose we're going to call It's expecting an instance of `HashSet`. Now, we have to figure out which javabuf type represents `HashSet`. Go to `Greet.proto` and search on `java.util.HashSet`, which will (eventually) land on + +[source,protobuf] ---- // Set: java.util.HashSet message java_util___HashSet3 { @@ -1169,33 +1231,41 @@ can see that we need to use a `GenericType>`. By the way, if the entity has a raw type, we would use the `JavabufTranslator` method + +[source,protobuf] ---- Message translateToJavabuf(Object o); ---- [start=2] 2. The next step would look like + +[source,java] ---- GeneralEntityMessage.Builder messageBuilder = GeneralEntityMessage.newBuilder(); GeneralEntityMessage gem = messageBuilder.setJavaUtilHashSet3Field(hashSet3).build(); ---- [start=3] 3. Then there would be a call to the gRPC stub +[source,java] ---- GeneralReturnMessage grm = blockingStub.hashSetTest3(gem); ---- [start=4] 4. and finally, the result is extracted +[source,java] ---- java_util___HashSet3 response = grm.getJavaUtilHashSet3Field(); ---- [start=5] 5. and translated back to the Java +[source,java] ---- HashSet result = (org.greet.Greeting) translator.translateFromJavabuf(response); ---- A variation of the client code occurs when the entity and/or result type is an interface, since they need to be transmitted as `Any` messages. For example, +[source,java] ---- java.util.List list = new java.util.ArrayList(); list.add("abc"); @@ -1224,6 +1294,7 @@ The examples so far have demonstrated simple call / response semantics. A few changes are necessary to support SSE streaming. Suppose `org.greet.Greeter` is extended with method `sseGreet`: +[source,java] ---- private ArrayList names = new ArrayList(); @@ -1249,6 +1320,7 @@ A couple of additions appear in Greet.proto: * A new message type is added: +[source,protobuf] ---- message org_jboss_resteasy_grpc_runtime_sse___SseEvent { string comment = 1; @@ -1261,6 +1333,7 @@ message org_jboss_resteasy_grpc_runtime_sse___SseEvent { * a new rpc entry is added: +[source,protobuf] ---- // stream gEmpty org_jboss_resteasy_grpc_runtime_sse___SseEvent GET sse rpc sseGreet (GeneralEntityMessage) returns (stream org_jboss_resteasy_grpc_runtime_sse___SseEvent); @@ -1272,6 +1345,7 @@ Note that `returns (stream org_jboss_resteasy_grpc_runtime_sse\___SseEvent)` ind The overriding method in `GreetServiceGrpcImpl` changes to handle multiple return messages: +[source,java] ---- @java.lang.Override public void sseGreet(org.greet.Greet_proto.GeneralEntityMessage param, StreamObserver responseObserver) { @@ -1321,6 +1395,7 @@ These changes are generated automatically, so no intervention is required. However, the application code on the client side needs to be adjusted. It could look, for example, something like this: +[source,java] ---- Iterator response = blockingStub.sseGreet(gem); while (response.hasNext()) { @@ -1338,6 +1413,7 @@ Note, in particular, the treatment of the `data` field. The class `google.protobuf.Any`, which translates to `com.google.protobuf.Any` in `Greet_proto`. Note that the method `Any.pack()` has signature +[source,java] ---- public static Any pack(T message, java.lang.String typeUrlPrefix); ---- @@ -1373,6 +1449,7 @@ project's source JAR is available in an accessible repository. In this example, we assume the existence of org.greet:greet:0.0.1. To generate the initial state of the bridge project, run +[source,bash] ---- mvn archetype:generate -B \ -DarchetypeGroupId=dev.resteasy.grpc \ @@ -1406,6 +1483,7 @@ org.greet:greet:0.0.1 we will get bridge project org.greet:greet.grpc:0.0.1. At this point, the layout of the new project is +[source] ---- +- pom.xml +- src/main/webapp @@ -1433,6 +1511,7 @@ Once the new project is created, the pom.xml can be used to copy the Java classes from the target project and generate the intermediary classes: +[source,bash] ---- mvn clean install ---- @@ -1447,6 +1526,7 @@ There are also some optional parameters: The syntax for the "classes" parameter is +[source] ---- (DIR ":" CLASSNAME) ("," DIR ":" CLASSNAME)* ---- @@ -1458,12 +1538,14 @@ where For example, +[source,bash] ---- mvn -Dclasses=/home/bob/greet/src/java/main:org.greet.Extra clean install ---- When the project is built, the layout is as follows: +[source] ---- +- pom.xml +- src/main/java @@ -1514,12 +1596,13 @@ Going a step further, mvn deploy can deploy the WAR and JAR (where the deployjar bash script manages the latter) to a remote repository. Note that deployjar hard codes the JBoss repositories as follows: +[source,basgh] ---- - if [ ${RELEASE_TYPE} == "snapshot" ]; then - URL=https://repository.jboss.org/nexus/content/repositories/snapshots/ - else - URL=https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/ - fi +if [ ${RELEASE_TYPE} == "snapshot" ]; then + URL=https://repository.jboss.org/nexus/content/repositories/snapshots/ +else + URL=https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/ +fi ---- These presumably need to be modified. Maven repository configuration is @@ -1556,15 +1639,17 @@ will accomplish the other initial requirement, which is storing a reference to the servlet's `jakarta.servlet.ServletContext`. For example, +[source,bash] ---- - curl http://localhost:8080/greet.grpc-0.0.1/grpcToJakartaRest/grpcserver/context +curl http://localhost:8080/greet.grpc-0.0.1/grpcToJakartaRest/grpcserver/context ---- Alternatively, if the generated WAR is not running in an instance of WildFly with the grpc subsystem, +[source,bash] ---- - curl http://localhost:8080/greet.grpc-0.0.1/grpcToJakartaRest/grpcserver/start +curl http://localhost:8080/greet.grpc-0.0.1/grpcToJakartaRest/grpcserver/start ---- will initiate the gRPC server runtime. @@ -1572,6 +1657,7 @@ will initiate the gRPC server runtime. The step can also be done programmatically, as in `org.jboss.restesy.test.grpc.AbstractGrpcToJakartaRESTTest` in the resteasy-grpc-testsuite in resteasy-grpc: +[source,java] ---- try ( Client client = ClientBuilder.newClient(); @@ -1630,12 +1716,12 @@ servlet container is a common environment for running Jakarta REST applications, and, in that case, the spec mandates the availability by injection of certain servlet related types: ----- - The @Context annotation can be used to indicate a dependency on a Servlet-defined - resource. A Servlet-based implementation MUST support injection of the following - Servlet-defined types: ServletConfig, ServletContext, HttpServletRequest, and - HttpServletResponse. ----- +_____ +The @Context annotation can be used to indicate a dependency on a Servlet-defined +resource. A Servlet-based implementation MUST support injection of the following +Servlet-defined types: ServletConfig, ServletContext, HttpServletRequest, and +HttpServletResponse. +_____ RESTEasy supports servlets, and, accordingly, grpc-bridge creates a servlet environment for Jakarta REST resources to execute in, including @@ -1659,6 +1745,7 @@ many cases, though, `HttpServletRequest` relies on the client to spell out any information needed for a given computation. Recall that `GeneralEntityMessage` has slots for all kinds of information: +[source,protobuf] ---- message GeneralEntityMessage { ServletInfo servletInfo = 1; @@ -1675,6 +1762,7 @@ out any information needed for a given computation. Recall that Some of these fields, e.g., cookies and headers, are naturally supplied by the client. On the other hand, the information in +[source,protobuf] ---- message ServletInfo { string characterEncoding = 1; @@ -1686,4 +1774,4 @@ by the client. On the other hand, the information in which would normally come from the network connection, must be supplied explicitly as part of the invocation. - +|} diff --git a/downloads.md b/content/downloads.md similarity index 100% rename from downloads.md rename to content/downloads.md diff --git a/index.md b/content/index.md similarity index 100% rename from index.md rename to content/index.md diff --git a/mailinglists.html b/content/mailinglists.html similarity index 100% rename from mailinglists.html rename to content/mailinglists.html diff --git a/_posts/2016-09-13-new-resteasy-blog.md b/content/posts/2016-09-13-new-resteasy-blog.md similarity index 70% rename from _posts/2016-09-13-new-resteasy-blog.md rename to content/posts/2016-09-13-new-resteasy-blog.md index 291e28d..048d65a 100644 --- a/_posts/2016-09-13-new-resteasy-blog.md +++ b/content/posts/2016-09-13-new-resteasy-blog.md @@ -2,25 +2,10 @@ layout: post title: "New RESTEasy blog" subtitle: "" -date: Sep 13, 2016 9:16:00 AM +date: 2016-09-13 09:16:00 author: Alessio Soldano --- With Bill Burke having moved to different projects and me now leading RESTEasy, it's time to open up a new project blog area... so here we are :-) Stay tuned for updates here! - - - - - - - - - - - - - - - diff --git a/_posts/2016-09-13-on-the-road-to-resteasy-310-release.md b/content/posts/2016-09-13-on-the-road-to-resteasy-310-release.md similarity index 93% rename from _posts/2016-09-13-on-the-road-to-resteasy-310-release.md rename to content/posts/2016-09-13-on-the-road-to-resteasy-310-release.md index 351882f..3db1aa9 100644 --- a/_posts/2016-09-13-on-the-road-to-resteasy-310-release.md +++ b/content/posts/2016-09-13-on-the-road-to-resteasy-310-release.md @@ -2,7 +2,7 @@ layout: post title: "On the road to RESTEasy 3.1.0 release..." subtitle: "" -date: Sep 13, 2016 12:06:00 P +date: 2016-09-13 12:06:00 author: Alessio Soldano --- @@ -17,18 +17,3 @@ We've tagged two 3.1.0 Beta releases so far, both available as artifacts on If you have some time, consider early checking your projects with the new 3.1.0 and feel free to report back any issue (btw, as a reminder, note we have [new mailing lists](https://resteasy.jboss.org/mailinglists) since some months!). We plan to go CR soon and hopefully release at before the end of October. Stay tuned :-) - - - - - - - - - - - - - - - diff --git a/_posts/2016-10-03-resteasy-310cr1-is-out.md b/content/posts/2016-10-03-resteasy-310cr1-is-out.md similarity index 84% rename from _posts/2016-10-03-resteasy-310cr1-is-out.md rename to content/posts/2016-10-03-resteasy-310cr1-is-out.md index bb10cd9..c463614 100644 --- a/_posts/2016-10-03-resteasy-310cr1-is-out.md +++ b/content/posts/2016-10-03-resteasy-310cr1-is-out.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 3.1.0.CR1 is out" subtitle: "" -date: Oct 3, 2016 8:53:00 AM +date: 2016-10-03 08:53:00 author: Alessio Soldano --- @@ -19,18 +19,3 @@ author: Alessio Soldano Just a note to tell you that [the first CR](https://issues.redhat.com/secure/ReleaseNote.jspa?version=12331470&styleName=Text&projectId=12310560) version of RESTEasy 3.1 has been [tagged](https://github.com/resteasy/resteasy/tree/3.1.0.CR1) last Friday. The artifacts are available on the [Maven repository](https://repository.jboss.org/nexus/content/groups/public/org/jboss/resteasy/). It's still a good time to have a look at and try the new 3.1, any feedback is welcome. We hope to go Final by the end of this month :-) - - - - - - - - - - - - - - - diff --git a/_posts/2016-10-05-resteasy-310cr2-is-out.md b/content/posts/2016-10-05-resteasy-310cr2-is-out.md similarity index 84% rename from _posts/2016-10-05-resteasy-310cr2-is-out.md rename to content/posts/2016-10-05-resteasy-310cr2-is-out.md index 7f58b1c..31e1889 100644 --- a/_posts/2016-10-05-resteasy-310cr2-is-out.md +++ b/content/posts/2016-10-05-resteasy-310cr2-is-out.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 3.1.0.CR2 is out" subtitle: "" -date: Oct 5, 2016 9:46:00 AM +date: 2016-10-05 09:46:00 author: Alessio Soldano --- @@ -16,25 +16,10 @@ author: Alessio Soldano -Just few days after CR1, here we are again with [another candidate release](https://github.com/resteasy/resteasy/tree/3.1.0.CR2) version of RESTEasy 3.1.0. A couple of regressions (actually compared to 3.1.0.Beta1) have been spotted and fixed and we've gone through a bunch of dependencies upgrades. Full release notes available [here](https://issues.redhat.com/secure/ReleaseNote.jspa?version=12331750&styleName=Text&projectId=12310560&Create=Create). +Just few days after CR1, here we are again with [another candidate release](https://github.com/resteasy/resteasy/tree/3.1.0.CR2) version of RESTEasy 3.1.0. A couple of regressions (actually compared to 3.1.0.Beta1) have been spotted and fixed and we've gone through a bunch of dependencies upgrades. Full release notes available [here](https://issues.redhat.com/secure/ReleaseNote.jspa?version=12331750&styleName=Text&projectId=12310560&p;Create=Create). The new artifacts are available on the Maven repository as usual; please keep on trying the latest bits and report any issue you find, thanks a lot! Final release is coming soon :-) Cheers Alessio - - - - - - - - - - - - - - - diff --git a/_posts/2016-11-05-yet-another-resteasy-310-candidate-release.md b/content/posts/2016-11-05-yet-another-resteasy-310-candidate-release.md similarity index 92% rename from _posts/2016-11-05-yet-another-resteasy-310-candidate-release.md rename to content/posts/2016-11-05-yet-another-resteasy-310-candidate-release.md index 494fbf9..fc9eb76 100644 --- a/_posts/2016-11-05-yet-another-resteasy-310-candidate-release.md +++ b/content/posts/2016-11-05-yet-another-resteasy-310-candidate-release.md @@ -2,7 +2,7 @@ layout: post title: "Yet another RESTEasy 3.1.0 candidate release..." subtitle: "" -date: Nov 5, 2016 9:56:00 AM +date: 2016-11-05 09:56:00 author: Alessio Soldano --- @@ -23,18 +23,3 @@ The actual release notes are [here](https://issues.redhat.com/secure/ReleaseNote Cheers Alessio - - - - - - - - - - - - - - - diff --git a/_posts/2016-12-14-resteasy-310final-is-out.md b/content/posts/2016-12-14-resteasy-310final-is-out.md similarity index 92% rename from _posts/2016-12-14-resteasy-310final-is-out.md rename to content/posts/2016-12-14-resteasy-310final-is-out.md index 3b0a226..ff24a25 100644 --- a/_posts/2016-12-14-resteasy-310final-is-out.md +++ b/content/posts/2016-12-14-resteasy-310final-is-out.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 3.1.0.Final is out" subtitle: "" -date: Dec 14, 2016 10:17:00 A +date: 2016-12-14 10:17:00 author: Alessio Soldano --- @@ -71,18 +71,3 @@ Cheers   - - - - - - - - - - - - - - - diff --git a/_posts/2017-02-27-resteasy-311final-is-out.md b/content/posts/2017-02-27-resteasy-311final-is-out.md similarity index 89% rename from _posts/2017-02-27-resteasy-311final-is-out.md rename to content/posts/2017-02-27-resteasy-311final-is-out.md index 60d3fd3..d6c1597 100644 --- a/_posts/2017-02-27-resteasy-311final-is-out.md +++ b/content/posts/2017-02-27-resteasy-311final-is-out.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 3.1.1.Final is out" subtitle: "" -date: Feb 27, 2017 5:52:00 AM +date: 2017-02-27 05:52:00 author: Alessio Soldano --- @@ -21,18 +21,3 @@ Here we are a couple of months later with the first bug fix release of RESTEasy Those monitoring the website and/or the development on GithHub might have noticed that during the past weeks we've also continued merging fixes into the 3.0 branch. The result of that effort is in the 3.0.20.Final and 3.0.21.Final releases which are also available for users that still need some time before switching to 3.1. We are likely going on actively working on 3.0 for some more time, but we really encourage you to migrate to 3.1 as soon as possible. Enjoy the [new releases](https://resteasy.jboss.org/downloads) and please provide feedback! - - - - - - - - - - - - - - - diff --git a/_posts/2017-03-31-resteasy-312final-and-3022final-are-out.md b/content/posts/2017-03-31-resteasy-312final-and-3022final-are-out.md similarity index 84% rename from _posts/2017-03-31-resteasy-312final-and-3022final-are-out.md rename to content/posts/2017-03-31-resteasy-312final-and-3022final-are-out.md index de3bf51..faa9b6f 100644 --- a/_posts/2017-03-31-resteasy-312final-and-3022final-are-out.md +++ b/content/posts/2017-03-31-resteasy-312final-and-3022final-are-out.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 3.1.2.Final and 3.0.22.Final are out" subtitle: "" -date: Mar 31, 2017 4:27:00 AM +date: 2017-03-31 04:27:00 author: Alessio Soldano --- @@ -21,18 +21,3 @@ Yesterday we pushed a new couple of releases (3.1.2.Final and 3.0.22.Final) out The new versions are mainly bug fix ones. Something interesting is that we started testing against JDK 9. RESTEasy 3.1.2.Final contains some changes / fixes and workarounds to allow building the project with the current latest early access version of JDK 9. The testsuite is also mostly passing. As usual, any feedback or issue... just let us know! - - - - - - - - - - - - - - - diff --git a/_posts/2017-07-26-summer-releases-and-now-on-jax-rs-21.md b/content/posts/2017-07-26-summer-releases-and-now-on-jax-rs-21.md similarity index 84% rename from _posts/2017-07-26-summer-releases-and-now-on-jax-rs-21.md rename to content/posts/2017-07-26-summer-releases-and-now-on-jax-rs-21.md index 04fa418..f1a43f5 100644 --- a/_posts/2017-07-26-summer-releases-and-now-on-jax-rs-21.md +++ b/content/posts/2017-07-26-summer-releases-and-now-on-jax-rs-21.md @@ -2,7 +2,7 @@ layout: post title: "Summer releases and now on JAX-RS 2.1!" subtitle: "" -date: Jul 26, 2017 8:10:00 AM +date: 2017-07-26 08:10:00 author: Alessio Soldano --- @@ -21,18 +21,3 @@ author: Alessio Soldano Now it's really time for the team to focus on implementing **JSR 370 (JAX-RS 2.1)**, which will be one of the features marking next minor (or major, maybe) of RESTEasy. Stay tuned! - - - - - - - - - - - - - - - diff --git a/_posts/2017-08-09-how-to-use-resteasy-in-a-spring-boot-application.md b/content/posts/2017-08-09-how-to-use-resteasy-in-a-spring-boot-application.md similarity index 98% rename from _posts/2017-08-09-how-to-use-resteasy-in-a-spring-boot-application.md rename to content/posts/2017-08-09-how-to-use-resteasy-in-a-spring-boot-application.md index da171c3..9b53469 100644 --- a/_posts/2017-08-09-how-to-use-resteasy-in-a-spring-boot-application.md +++ b/content/posts/2017-08-09-how-to-use-resteasy-in-a-spring-boot-application.md @@ -2,7 +2,7 @@ layout: post title: "How to use RESTEasy in a Spring Boot application" subtitle: "" -date: Aug 9, 2017 2:01:33 PM +date: 2017-08-09 14:01:33 author: Fábio Carvalho --- @@ -40,8 +40,3 @@ See this [RESTEasy Spring Boot sample application](https://github.com/paypal/res 4. [Spring Boot Reference Guide](https://docs.spring.io/spring-boot/docs/1.5.3.RELEASE/reference/htmlsingle/#using-boot-starter) 5. [Spring Initializr](https://start.spring.io/) 6. [Microservices in a Nutshell](https://www.thoughtworks.com/insights/blog/microservices-nutshell) - - - - - diff --git a/_posts/2017-11-13-resteasy-400beta1.md b/content/posts/2017-11-13-resteasy-400beta1.md similarity index 92% rename from _posts/2017-11-13-resteasy-400beta1.md rename to content/posts/2017-11-13-resteasy-400beta1.md index d5b9c06..ed8036f 100644 --- a/_posts/2017-11-13-resteasy-400beta1.md +++ b/content/posts/2017-11-13-resteasy-400beta1.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 4.0.0.Beta1, JAX-RS 2.1 and more" subtitle: "" -date: Nov 13, 2017 5:50:00 AM +date: 2017-11-13 05:50:00 author: Alessio Soldano --- @@ -30,18 +30,3 @@ The full release notes are [available on jira](https://issues.redhat.com/secure/ Please consider trying the latest release and providing feedback! Thanks - - - - - - - - - - - - - - - diff --git a/_posts/2018-02-22-resteasy-350final-and-400beta2.md b/content/posts/2018-02-22-resteasy-350final-and-400beta2.md similarity index 95% rename from _posts/2018-02-22-resteasy-350final-and-400beta2.md rename to content/posts/2018-02-22-resteasy-350final-and-400beta2.md index bf3bee2..4e132d7 100644 --- a/_posts/2018-02-22-resteasy-350final-and-400beta2.md +++ b/content/posts/2018-02-22-resteasy-350final-and-400beta2.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 3.5.0.Final and 4.0.0.Beta2" subtitle: "" -date: Feb 22, 2018 5:44:00 PM +date: 2018-02-22 17:44:00 author: Alessio Soldano --- @@ -40,18 +40,3 @@ RESTEasy 3.5.0.Final binaries and sources are available on [resteasy.jboss.org]( Please consider trying the latest release and providing feedback! Enjoy :-) - - - - - - - - - - - - - - - diff --git a/_posts/2018-04-18-time-for-a-couple-of-bug-fix-releases.md b/content/posts/2018-04-18-time-for-a-couple-of-bug-fix-releases.md similarity index 91% rename from _posts/2018-04-18-time-for-a-couple-of-bug-fix-releases.md rename to content/posts/2018-04-18-time-for-a-couple-of-bug-fix-releases.md index 70b66ca..ecb5dec 100644 --- a/_posts/2018-04-18-time-for-a-couple-of-bug-fix-releases.md +++ b/content/posts/2018-04-18-time-for-a-couple-of-bug-fix-releases.md @@ -2,7 +2,7 @@ layout: post title: "Time for a couple of bug fix releases" subtitle: "" -date: Apr 18, 2018 4:29:00 PM +date: 2018-04-18 16:29:00 author: Alessio Soldano --- @@ -25,18 +25,3 @@ On top of that, with **JDK 10** having been officially released, we had to ensur The full release notes are available [here](https://issues.redhat.com/secure/ReleaseNote.jspa?version=12336861&styleName=Text&projectId=12310560&Create=Create). The Maven artifacts are available  for both releases on the usual repository. Next round of releases will most likely include few new and interesting features, stay tuned... ;-) - - - - - - - - - - - - - - - diff --git a/_posts/2018-05-23-resteasy-spring-boot-starter-has-moved.md b/content/posts/2018-05-23-resteasy-spring-boot-starter-has-moved.md similarity index 92% rename from _posts/2018-05-23-resteasy-spring-boot-starter-has-moved.md rename to content/posts/2018-05-23-resteasy-spring-boot-starter-has-moved.md index c0faf2e..785d22d 100644 --- a/_posts/2018-05-23-resteasy-spring-boot-starter-has-moved.md +++ b/content/posts/2018-05-23-resteasy-spring-boot-starter-has-moved.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy Spring Boot starter has moved" subtitle: "" -date: May 23, 2018 9:10:00 AM +date: 2018-05-23 09:10:00 author: Alessio Soldano --- @@ -29,18 +29,3 @@ Compared to the latest release from PayPal repository, the first Red Hat release In the next future, the plan is to move forward embracing Spring Boot 2 and integrating more recent versions of the core RESTEasy (3.5 / 3.6 streams). _So please stay tuned, play with the latest release and feel free to contribute!_ - - - - - - - - - - - - - - - diff --git a/_posts/2018-05-29-new-blog.md b/content/posts/2018-05-29-new-blog.md similarity index 99% rename from _posts/2018-05-29-new-blog.md rename to content/posts/2018-05-29-new-blog.md index cf2131a..06a0c0c 100644 --- a/_posts/2018-05-29-new-blog.md +++ b/content/posts/2018-05-29-new-blog.md @@ -2,7 +2,7 @@ layout: post title: "New DRY-er annotations for parameters" subtitle: "" -date: May 29, 2018 9:13:19 AM +date: 2018-05-29 09:13:19 author: Stephane Epardaud --- @@ -88,5 +88,3 @@ Build, Execution, Deployment > Compiler > Java Compiler > Additional command lin Note that you will need to use the 4.0.0-SNAPSHOT or 3.6.0-SNAPSHOT versions of RESTEasy to try this, because the [feature](https://issues.redhat.com/browse/RESTEASY-1880) hasn't been included in a release yet. - - diff --git a/_posts/2018-06-04-asynchronous-reactive-rxjava-and-beyond.md b/content/posts/2018-06-04-asynchronous-reactive-rxjava-and-beyond.md similarity index 99% rename from _posts/2018-06-04-asynchronous-reactive-rxjava-and-beyond.md rename to content/posts/2018-06-04-asynchronous-reactive-rxjava-and-beyond.md index 3301d88..99c499c 100644 --- a/_posts/2018-06-04-asynchronous-reactive-rxjava-and-beyond.md +++ b/content/posts/2018-06-04-asynchronous-reactive-rxjava-and-beyond.md @@ -2,7 +2,7 @@ layout: post title: "Asynchronous, reactive, rxjava and beyond!" subtitle: "" -date: Jun 4, 2018 9:02:51 AM +date: 2018-06-04 09:02:51 author: Stephane Epardaud --- ## JAX-RS 1.0: The blocking origins @@ -248,5 +248,3 @@ RxInvoker implementations are only available in the latest 4.0.0-SNAPSHOT snapshots (they're likely being added to 3.6 branch soon, though). - - diff --git a/_posts/2018-06-11-a-brief-introduction-to-the-resteasy-tracing-feature.md b/content/posts/2018-06-11-a-brief-introduction-to-the-resteasy-tracing-feature.md similarity index 98% rename from _posts/2018-06-11-a-brief-introduction-to-the-resteasy-tracing-feature.md rename to content/posts/2018-06-11-a-brief-introduction-to-the-resteasy-tracing-feature.md index f4ca352..d53cbdb 100644 --- a/_posts/2018-06-11-a-brief-introduction-to-the-resteasy-tracing-feature.md +++ b/content/posts/2018-06-11-a-brief-introduction-to-the-resteasy-tracing-feature.md @@ -2,7 +2,7 @@ layout: post title: "A brief introduction to the RESTEasy Tracing Feature" subtitle: "" -date: Jun 11, 2018 11:53:00 P +date: 2018-06-11 23:53:00 author: Weinan Li --- Tracing feature is a way for the users of the RESTEasy to understand what's going on internally in the container when a request is processed. It's different from the pure logging system or profiling feature, which provide more general information about the request/response info, etc. @@ -130,18 +130,3 @@ If you’d like to have a look at the tracing feature in action, you can current [https://github.com/resteasy/resteasy/blob/master/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/tracing/BasicTracingTest.java](https://github.com/resteasy/resteasy/blob/master/testsuite/integration-tests/src/test/java/org/jboss/resteasy/test/tracing/BasicTracingTest.java) In above is the brief description of the RESTEasy document. - - - - - - - - - - - - - - - diff --git a/_posts/2018-06-18-new-asynchronous-container-filters.md b/content/posts/2018-06-18-new-asynchronous-container-filters.md similarity index 98% rename from _posts/2018-06-18-new-asynchronous-container-filters.md rename to content/posts/2018-06-18-new-asynchronous-container-filters.md index f10aeb5..ae5e9fc 100644 --- a/_posts/2018-06-18-new-asynchronous-container-filters.md +++ b/content/posts/2018-06-18-new-asynchronous-container-filters.md @@ -2,7 +2,7 @@ layout: post title: "New: Asynchronous container filters" subtitle: "" -date: Jun 18, 2018 12:03:55 A +date: 2018-06-18 00:03:55 author: Stephane Epardaud --- @@ -218,18 +218,3 @@ If you have the need for [asynchronous request or response filters](https://docs or 4.0.0.Beta2 a try. - - - - - - - - - - - - - - - diff --git a/_posts/2018-07-02-resteasy-360final-and-400beta4.md b/content/posts/2018-07-02-resteasy-360final-and-400beta4.md similarity index 94% rename from _posts/2018-07-02-resteasy-360final-and-400beta4.md rename to content/posts/2018-07-02-resteasy-360final-and-400beta4.md index c38463b..e883b47 100644 --- a/_posts/2018-07-02-resteasy-360final-and-400beta4.md +++ b/content/posts/2018-07-02-resteasy-360final-and-400beta4.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 3.6.0.Final and 4.0.0.Beta4" subtitle: "" -date: Jul 2, 2018 8:56:00 AM +date: 2018-07-02 08:56:00 author: Alessio Soldano --- @@ -52,18 +52,3 @@ Enjoy! [7] [A brief introduction to the RESTEasy Tracing Feature](https://developer.jboss.org/community/resteasy/blog/2018/06/11/a-brief-introduction-to-the-resteasy-tracing-feature) [8] [New: Asynchronous container filters](https://developer.jboss.org/community/resteasy/blog/2018/06/18/new-asynchronous-container-filters) - - - - - - - - - - - - - - - diff --git a/_posts/2018-07-19-asynchronous-injection-in-resteasy.md b/content/posts/2018-07-19-asynchronous-injection-in-resteasy.md similarity index 98% rename from _posts/2018-07-19-asynchronous-injection-in-resteasy.md rename to content/posts/2018-07-19-asynchronous-injection-in-resteasy.md index 9865bb9..3b7d720 100644 --- a/_posts/2018-07-19-asynchronous-injection-in-resteasy.md +++ b/content/posts/2018-07-19-asynchronous-injection-in-resteasy.md @@ -2,7 +2,7 @@ layout: post title: "Asynchronous injection in RESTEasy" subtitle: "" -date: Jul 19, 2018 5:05:10 AM +date: 2018-07-19 05:05:10 author: Stephane Epardaud --- @@ -223,18 +223,3 @@ resteasy-rxjava2 We've removed yet another common cause of boilerplate: rejoice!  Async injection was added in the latest [4.0.0.Beta4](https://developer.jboss.org/community/resteasy/blog/2018/07/02/resteasy-360final-and-400beta4) release ([RESTEASY-1905](https://issues.redhat.com/projects/RESTEASY/issues/RESTEASY-1905?filter=allopenissues)). Go ahead and try it out while it's fresh! - - - - - - - - - - - - - - - diff --git a/_posts/2018-07-31-resteasy-spring-boot-starter-200final.md b/content/posts/2018-07-31-resteasy-spring-boot-starter-200final.md similarity index 87% rename from _posts/2018-07-31-resteasy-spring-boot-starter-200final.md rename to content/posts/2018-07-31-resteasy-spring-boot-starter-200final.md index d85b1a3..31871ec 100644 --- a/_posts/2018-07-31-resteasy-spring-boot-starter-200final.md +++ b/content/posts/2018-07-31-resteasy-spring-boot-starter-200final.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy Spring Boot starter 2.0.0.Final" subtitle: "" -date: Jul 31, 2018 10:18:00 A +date: 2018-07-31 10:18:00 author: Alessio Soldano --- A couple of months ago, we [announced](https://developer.jboss.org/community/resteasy/blog/2018/05/23/resteasy-spring-boot-starter-has-moved) the move of the **RESTEasy Spring Boot starter** to [RESTEasy organization on GitHub](https://github.com/resteasy/resteasy-spring-boot). We also mentioned that soon a new version of the starter would have been available... and here we are today, presenting [release 2.0.0.Final](https://github.com/resteasy/resteasy-spring-boot/tree/2.0.0.Final), which @@ -15,18 +15,3 @@ Feel free to pull them and give them a try. Enjoy! - - - - - - - - - - - - - - - diff --git a/_posts/2018-08-09-resteasy-release-week.md b/content/posts/2018-08-09-resteasy-release-week.md similarity index 88% rename from _posts/2018-08-09-resteasy-release-week.md rename to content/posts/2018-08-09-resteasy-release-week.md index b7102a6..6cd70bb 100644 --- a/_posts/2018-08-09-resteasy-release-week.md +++ b/content/posts/2018-08-09-resteasy-release-week.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy release week" subtitle: "" -date: Aug 9, 2018 6:48:00 PM +date: 2018-08-09 18:48:00 author: Alessio Soldano --- @@ -25,18 +25,3 @@ It's been a busy week... but before leaving for the week-end I owe you an up   As usual, give them a try while they're hot, feedback is welcome! - - - - - - - - - - - - - - - diff --git a/_posts/2018-09-05-resteasy-tracing-feature-now-supports-json-formatted-information.md b/content/posts/2018-09-05-resteasy-tracing-feature-now-supports-json-formatted-information.md similarity index 97% rename from _posts/2018-09-05-resteasy-tracing-feature-now-supports-json-formatted-information.md rename to content/posts/2018-09-05-resteasy-tracing-feature-now-supports-json-formatted-information.md index bd20876..33cab0f 100644 --- a/_posts/2018-09-05-resteasy-tracing-feature-now-supports-json-formatted-information.md +++ b/content/posts/2018-09-05-resteasy-tracing-feature-now-supports-json-formatted-information.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy Tracing Feature Now Supports JSON formatted information" subtitle: "" -date: Sep 5, 2018 5:01:00 AM +date: 2018-09-05 05:01:00 author: Weinan Li --- @@ -125,18 +125,3 @@ The `timestamp` is the event start time, and the other fields are quite straight The JSON formatted data should be more suitable to be parsed by code. This feature is currently just in `4.0.0-SNAPSHOT`, and haven’t been officially released yet. - - - - - - - - - - - - - - - diff --git a/_posts/2018-10-31-resteasy-wadl-grammar-support.md b/content/posts/2018-10-31-resteasy-wadl-grammar-support.md similarity index 98% rename from _posts/2018-10-31-resteasy-wadl-grammar-support.md rename to content/posts/2018-10-31-resteasy-wadl-grammar-support.md index 9f9e99e..a6e6e64 100644 --- a/_posts/2018-10-31-resteasy-wadl-grammar-support.md +++ b/content/posts/2018-10-31-resteasy-wadl-grammar-support.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy WADL Grammar Support" subtitle: "" -date: Oct 31, 2018 4:42:00 AM +date: 2018-10-31 04:42:00 author: Weinan Li --- @@ -12,7 +12,7 @@ RESTEasy has added WADL grammar support by this PR: The major change is that `ResteasyWadlGrammar` is added into `ResteasyWadlWriter`: -![Class+Diagram22](/img/blog/Class+Diagram22.png) +![Class+Diagram22](/img/blog/Class-Diagram22.png) In addition, the `ResteasyWadlWriter` is rewritten now, and all the static methods are now instance methods. It means users need to create an instance of `ResteasyWadlWriter` and put it into per-deployment scope. @@ -280,7 +280,3 @@ Transfer-encoding: chunked Above is the description about the RESTEasy WADL Grammar feature. The other change is that `ResteasyWadlServlet` and `ResteasyWadlServletWriter` is now deprecated, because it doesn’t support the grammar feature, and these two classes will be removed from master branch in the future. Using `ResteasyWadlDefaultResource` is recommended to enable the WADL feature. - - - - diff --git a/_posts/2019-02-12-jettison-has-been-removed-on-master-branch.md b/content/posts/2019-02-12-jettison-has-been-removed-on-master-branch.md similarity index 90% rename from _posts/2019-02-12-jettison-has-been-removed-on-master-branch.md rename to content/posts/2019-02-12-jettison-has-been-removed-on-master-branch.md index 43ca778..807e7b8 100644 --- a/_posts/2019-02-12-jettison-has-been-removed-on-master-branch.md +++ b/content/posts/2019-02-12-jettison-has-been-removed-on-master-branch.md @@ -2,7 +2,7 @@ layout: post title: "Jettison has been removed on master branch" subtitle: "" -date: Feb 12, 2019 9:01:00 AM +date: 2019-02-12 09:01:00 author: Weinan Li --- @@ -19,18 +19,3 @@ In addition, Jackson2 has some subtle differences on supporting JAXB annotations The above change shows the changes in JAXB annotations after changing the JAXB -> JSON provider to `resteasy-jackson2-provider` for `resteasy-link` module. Above is the summary of Jettison removal. - - - - - - - - - - - - - - - diff --git a/_posts/2019-03-13-the-undertowjaxrsspringserver.md b/content/posts/2019-03-13-the-undertowjaxrsspringserver.md similarity index 96% rename from _posts/2019-03-13-the-undertowjaxrsspringserver.md rename to content/posts/2019-03-13-the-undertowjaxrsspringserver.md index 35dee06..d264f75 100644 --- a/_posts/2019-03-13-the-undertowjaxrsspringserver.md +++ b/content/posts/2019-03-13-the-undertowjaxrsspringserver.md @@ -2,7 +2,7 @@ layout: post title: "The UndertowJaxrsSpringServer" subtitle: "" -date: Mar 13, 2019 12:48:00 A +date: 2019-03-13 12:48:00 author: Weinan Li --- @@ -62,18 +62,3 @@ The above code is part of the tests in `resteasy-undertow-spring`, and the tests And the tests shows more advanced spring configurations that can be used as reference. - - - - - - - - - - - - - - - diff --git a/_posts/2019-03-28-resteasy-4-is-coming-soon.md b/content/posts/2019-03-28-resteasy-4-is-coming-soon.md similarity index 97% rename from _posts/2019-03-28-resteasy-4-is-coming-soon.md rename to content/posts/2019-03-28-resteasy-4-is-coming-soon.md index 2d4da83..860f7cc 100644 --- a/_posts/2019-03-28-resteasy-4-is-coming-soon.md +++ b/content/posts/2019-03-28-resteasy-4-is-coming-soon.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 4 is coming soon" subtitle: "" -date: Mar 28, 2019 4:25:34 AM +date: 2019-03-28 04:25:34 author: Alessio Soldano --- @@ -62,18 +62,3 @@ So, it's definitely time to give RESTEasy 4 CR1 a try! There're multiple Hopefully, unless something critical is spotted or reported, we'll be releasing Final (including proper documentation) in few weeks from now. Stay tuned! - - - - - - - - - - - - - - - diff --git a/_posts/2019-05-07-resteasy-400final-is-here.md b/content/posts/2019-05-07-resteasy-400final-is-here.md similarity index 92% rename from _posts/2019-05-07-resteasy-400final-is-here.md rename to content/posts/2019-05-07-resteasy-400final-is-here.md index 9879602..8587566 100644 --- a/_posts/2019-05-07-resteasy-400final-is-here.md +++ b/content/posts/2019-05-07-resteasy-400final-is-here.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 4.0.0.Final is here!" subtitle: "" -date: May 7, 2019 5:07:06 PM +date: 2019-05-07 17:07:06 author: Alessio Soldano --- @@ -23,18 +23,3 @@ At the end of March I was [announcing RESTEasy 4 CR1](https://developer.jboss.or Going beyond new features, I believe this release sets the ground for future exciting developments in RESTEasy; the project got rid of old / deprecated pieces and is in a better position for accomodating the implementation of new and modern features, especially for Quarkus cloud-related scenarios. _Stay tuned and try RESTEasy 4... feedback is welcome!_ - - - - - - - - - - - - - - - diff --git a/_posts/2019-06-03-resteasy-spring-boot-starter-310final-released.md b/content/posts/2019-06-03-resteasy-spring-boot-starter-310final-released.md similarity index 84% rename from _posts/2019-06-03-resteasy-spring-boot-starter-310final-released.md rename to content/posts/2019-06-03-resteasy-spring-boot-starter-310final-released.md index 2f9d063..df51dd4 100644 --- a/_posts/2019-06-03-resteasy-spring-boot-starter-310final-released.md +++ b/content/posts/2019-06-03-resteasy-spring-boot-starter-310final-released.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy Spring Boot Starter 3.1.0.Final released" subtitle: "" -date: Jun 3, 2019 3:12:00 AM +date: 2019-06-03 03:12:00 author: Weinan Li --- @@ -22,18 +22,3 @@ Here is the maven dependency section to include the new release in your project: ``` The change in this release is that it adopts _RESTEasy 3.7.0.Final_ as dependency. - - - - - - - - - - - - - - - diff --git a/_posts/2019-06-19-resteasy-380final-and-microprofile-3.md b/content/posts/2019-06-19-resteasy-380final-and-microprofile-3.md similarity index 91% rename from _posts/2019-06-19-resteasy-380final-and-microprofile-3.md rename to content/posts/2019-06-19-resteasy-380final-and-microprofile-3.md index 37deeb9..cb624f1 100644 --- a/_posts/2019-06-19-resteasy-380final-and-microprofile-3.md +++ b/content/posts/2019-06-19-resteasy-380final-and-microprofile-3.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 3.8.0.Final and MicroProfile 3" subtitle: "" -date: Jun 19, 2019 11:13:00 A +date: 2019-06-19 11:13:00 author: Alessio Soldano --- @@ -16,18 +16,3 @@ So today I'm happy to announce the availability of **RESTEasy 3.8.0**.Final, A new release from the 4.x stream is also coming very soon and will of course include the same MP REST Client 1.3 implementation too. _Stay tuned and try RESTEasy 3.8... feedback is welcome!_ - - - - - - - - - - - - - - - diff --git a/_posts/2019-06-27-resteasy-410final-is-available.md b/content/posts/2019-06-27-resteasy-410final-is-available.md similarity index 90% rename from _posts/2019-06-27-resteasy-410final-is-available.md rename to content/posts/2019-06-27-resteasy-410final-is-available.md index 79ef05e..d3f78b1 100644 --- a/_posts/2019-06-27-resteasy-410final-is-available.md +++ b/content/posts/2019-06-27-resteasy-410final-is-available.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 4.1.0.Final is available!" subtitle: "" -date: Jun 27, 2019 5:16:00 PM +date: 2019-06-27 17:16:00 author: Alessio Soldano --- @@ -18,18 +18,3 @@ While 3.8.0.Final is soon landing in [WildFly](https://wildfly.org/) and [Thornt _Stay tuned and give the new versions a try!_ _Thanks!_ - - - - - - - - - - - - - - - diff --git a/_posts/2019-07-16-resteasy-spring-boot-starter-400final-released.md b/content/posts/2019-07-16-resteasy-spring-boot-starter-400final-released.md similarity index 88% rename from _posts/2019-07-16-resteasy-spring-boot-starter-400final-released.md rename to content/posts/2019-07-16-resteasy-spring-boot-starter-400final-released.md index fb40022..01c94a7 100644 --- a/_posts/2019-07-16-resteasy-spring-boot-starter-400final-released.md +++ b/content/posts/2019-07-16-resteasy-spring-boot-starter-400final-released.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy Spring Boot Starter 4.0.0.Final released" subtitle: "" -date: Jul 16, 2019 9:38:00 AM +date: 2019-07-16 09:38:00 author: Weinan Li --- @@ -28,19 +28,3 @@ From this release, the master branch is upgraded to use RESTEasy 4.x as dependen The future 3.x releases development will be continued in branch `3.x`: * [GitHub - resteasy/resteasy-spring-boot at 3.x](https://github.com/resteasy/resteasy-spring-boot/tree/3.x) - - - - - - - - - - - - - - - - diff --git a/_posts/2019-08-05-resteasy-420final-performance-enhancements-and-new-features.md b/content/posts/2019-08-05-resteasy-420final-performance-enhancements-and-new-features.md similarity index 93% rename from _posts/2019-08-05-resteasy-420final-performance-enhancements-and-new-features.md rename to content/posts/2019-08-05-resteasy-420final-performance-enhancements-and-new-features.md index 394e85f..e6e5300 100644 --- a/_posts/2019-08-05-resteasy-420final-performance-enhancements-and-new-features.md +++ b/content/posts/2019-08-05-resteasy-420final-performance-enhancements-and-new-features.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 4.2.0.Final: performance enhancements and new features" subtitle: "" -date: Aug 5, 2019 4:01:00 AM +date: 2019-08-05 04:01:00 author: Alessio Soldano --- @@ -17,18 +17,3 @@ thanks!! The latest artifacts are available on the JBoss Nexus repository as well as Maven Central repository. [Quarkus](https://quarkus.io/) is being upgraded as well to benefit from the latest additions mentioned above! Enjoy! - - - - - - - - - - - - - - - diff --git a/_posts/2019-09-04-resteasy-spring-boot-starter-410final-and-320final-released.md b/content/posts/2019-09-04-resteasy-spring-boot-starter-410final-and-320final-released.md similarity index 79% rename from _posts/2019-09-04-resteasy-spring-boot-starter-410final-and-320final-released.md rename to content/posts/2019-09-04-resteasy-spring-boot-starter-410final-and-320final-released.md index f01ce1e..ea0d907 100644 --- a/_posts/2019-09-04-resteasy-spring-boot-starter-410final-and-320final-released.md +++ b/content/posts/2019-09-04-resteasy-spring-boot-starter-410final-and-320final-released.md @@ -2,24 +2,9 @@ layout: post title: "RESTEasy Spring Boot Starter 4.1.0.Final and 3.2.0.Final released" subtitle: "" -date: Sep 4, 2019 2:04:00 AM +date: 2019-09-04 02:04:00 author: Weinan Li --- The RESTEasy Spring Boot Starter `4.1.0.Final` and `3.2.0.Final` are released, and the major change is that these two releases adopt the newest RESTEasy releases as dependencies (RESTEasy `4.3.0.Final` and `3.9.0.Final` respectively for each branches). The latest artifacts are available on the JBoss Nexus repository as well as Maven Central repository. - - - - - - - - - - - - - - - diff --git a/_posts/2019-09-23-resteasy-430final-and-390final-released.md b/content/posts/2019-09-23-resteasy-430final-and-390final-released.md similarity index 80% rename from _posts/2019-09-23-resteasy-430final-and-390final-released.md rename to content/posts/2019-09-23-resteasy-430final-and-390final-released.md index f8fc639..8d8be06 100644 --- a/_posts/2019-09-23-resteasy-430final-and-390final-released.md +++ b/content/posts/2019-09-23-resteasy-430final-and-390final-released.md @@ -2,33 +2,8 @@ layout: post title: "RESTEasy 4.3.0.Final and 3.9.0.Final released" subtitle: "" -date: Sep 23, 2019 7:10:00 PM +date: 2019-09-23 19:10:00 author: Ronald Sigal --- - - - - - - - - - - Two new RESTEasy releases appeared recently, 4.3.0.Final and 3.9.0.Final. Both of them introduce a new feature which allows resource method parameters to be java.util.Optional<T> types, allowing a cleaner coding style. Like the previous 4.2.0.Final release, 4.3.0.Final includes performance improvement contributions from the community, and, of course, they both have bug fixes (upgrade early and often!) and component upgrades. 3.9.0.Final is the latest in the succession of releases targeted towards Wildfly, and it will ship with the upcoming Wildfly 18. 4.3.0.Final is targeted towards the next Quarkus release. - - - - - - - - - - - - - - - diff --git a/_posts/2019-10-08-looking-to-the-future.md b/content/posts/2019-10-08-looking-to-the-future.md similarity index 96% rename from _posts/2019-10-08-looking-to-the-future.md rename to content/posts/2019-10-08-looking-to-the-future.md index 43e7a17..10aa217 100644 --- a/_posts/2019-10-08-looking-to-the-future.md +++ b/content/posts/2019-10-08-looking-to-the-future.md @@ -2,7 +2,7 @@ layout: post title: "Looking to the future..." subtitle: "" -date: Oct 8, 2019 7:43:00 PM +date: 2019-10-08 19:43:00 author: Alessio Soldano --- If you look at the [download page](https://resteasy.github.io/downloads.html), you might notice that so far 2019 has been a year rich of RESTEasy releases. We've made @@ -36,19 +36,3 @@ In addition to the JakartaEE and MicroProfile efforts mentioned above, we still That's it for now, I promise I will try to update you on the plans in the future! _Stay tuned ... and keep on contributing!_ - - - - - - - - - - - - - - - - diff --git a/_posts/2019-10-08-resteasy-spring-boot-starter-411final-released.md b/content/posts/2019-10-08-resteasy-spring-boot-starter-411final-released.md similarity index 69% rename from _posts/2019-10-08-resteasy-spring-boot-starter-411final-released.md rename to content/posts/2019-10-08-resteasy-spring-boot-starter-411final-released.md index 344cb2c..7857cc2 100644 --- a/_posts/2019-10-08-resteasy-spring-boot-starter-411final-released.md +++ b/content/posts/2019-10-08-resteasy-spring-boot-starter-411final-released.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy Spring Boot Starter 4.1.1.Final released" subtitle: "" -date: Oct 8, 2019 5:10:00 AM +date: 2019-10-08 05:10:00 author: Weinan Li --- @@ -10,18 +10,3 @@ In release, these dependencies are upgraded: * Spring Boot dependency is upgraded to 2.1.9.RELEASE * RESTEasy dependency is upgraded to version 4.3.1.Final - - - - - - - - - - - - - - - diff --git a/_posts/2019-10-30-resteasy-440final-moving-to-jakarta-artifacts-and-much-more.md b/content/posts/2019-10-30-resteasy-440final-moving-to-jakarta-artifacts-and-much-more.md similarity index 92% rename from _posts/2019-10-30-resteasy-440final-moving-to-jakarta-artifacts-and-much-more.md rename to content/posts/2019-10-30-resteasy-440final-moving-to-jakarta-artifacts-and-much-more.md index 0c36a9f..7d02389 100644 --- a/_posts/2019-10-30-resteasy-440final-moving-to-jakarta-artifacts-and-much-more.md +++ b/content/posts/2019-10-30-resteasy-440final-moving-to-jakarta-artifacts-and-much-more.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 4.4.0.Final: moving to Jakarta artifacts and much more" subtitle: "" -date: Oct 30, 2019 8:07:00 AM +date: 2019-10-30 08:07:00 author: Alessio Soldano --- Just before Halloween, here is another nice release of **RESTEasy**! @@ -23,18 +23,3 @@ Finally, [Quarkus 0.27 has just been released](https://quarkus.io/blog/quarkus-0 Feedback is welcome as usual! Enjoy! - - - - - - - - - - - - - - - diff --git a/_posts/2019-10-30-resteasy-3100final-jakarta.md b/content/posts/2020-01-15-resteasy-3100final-jakarta.md similarity index 95% rename from _posts/2019-10-30-resteasy-3100final-jakarta.md rename to content/posts/2020-01-15-resteasy-3100final-jakarta.md index 88b078c..20bd64d 100644 --- a/_posts/2019-10-30-resteasy-3100final-jakarta.md +++ b/content/posts/2020-01-15-resteasy-3100final-jakarta.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 3.10.0.Final: Jakarta artifacts, new configuration parameter" subtitle: "" -date: Jan 15, 2020 19:04:00 +date: 2020-01-15 19:04:00 author: Ron Sigal --- Here comes the first **RESTEasy** release of 2020! @@ -75,19 +75,3 @@ These values can be accessed from the Command Line Interface as well: } Stay tuned for Wildfly 19! - - - - - - - - - - - - - - - - diff --git a/_posts/2020-02-11-resteasy-jackson-polymorphic-type-validator.md b/content/posts/2020-02-11-resteasy-jackson-polymorphic-type-validator.md similarity index 97% rename from _posts/2020-02-11-resteasy-jackson-polymorphic-type-validator.md rename to content/posts/2020-02-11-resteasy-jackson-polymorphic-type-validator.md index 8ebaf95..f74313c 100644 --- a/_posts/2020-02-11-resteasy-jackson-polymorphic-type-validator.md +++ b/content/posts/2020-02-11-resteasy-jackson-polymorphic-type-validator.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy default white-list based PolymorphicTypeValidator extension" subtitle: "" -date: Feb 11, 2020 01:00:00 +date: 2020-02-11 01:00:00 author: Alessio Soldano --- I've been planning to write about the topic here since quite some time, apologize for the delay... @@ -13,4 +13,3 @@ The changes have to do with CVEs and aim at **making applications relying on RES Now, to be on the safe side, in RESTEasy we decided to **always enable Safe Default Typing**, by installing a **custom PolymorphicTypeValidator** instance that relies on system properties for creating a **white-list** of classes that are allowed to be deserialized. Most of the applications won't simply be affected by this; however, if your scenario is one of those allowing for the vulnerability to be exploited, you'll most likely have to provide a suitable white-list of classes to ensure our application keep on working properly. You can read more (including the actual system properties' names) in the [RESTEasy documentation](https://docs.jboss.org/resteasy/docs/4.4.2.Final/userguide/html/json.html#Polymorphic_Typing_deserialization). On RESTEasy 4 series, the properties can also be specified at deployment level using MicroProfile Config. - diff --git a/_posts/2020-02-20-resteasy-3110final-mp-rest-client.md b/content/posts/2020-02-20-resteasy-3110final-mp-rest-client.md similarity index 94% rename from _posts/2020-02-20-resteasy-3110final-mp-rest-client.md rename to content/posts/2020-02-20-resteasy-3110final-mp-rest-client.md index 2e4a92c..0523f87 100644 --- a/_posts/2020-02-20-resteasy-3110final-mp-rest-client.md +++ b/content/posts/2020-02-20-resteasy-3110final-mp-rest-client.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy 3.11.0.Final: MicroProfile REST Client 1.4; Client memory management" subtitle: "" -date: Feb 20, 2020 00:45:00 +date: 2020-02-20 00:45:00 author: Ron Sigal --- Originally, RESTEasy 3.10.0.Final was intended to ship with Wildfly 19, but WF 19, along with a number of upstream projects @@ -15,4 +15,4 @@ RESTEasy does that and passes the updated TCK. Release 3.11.0.Final also includes some memory management improvements in the client environment, as described in ["Reduce memory pressure while inheriting client configuration"](https://issues.redhat.com/browse/RESTEASY-2302), -For release notes, see [RESTEasy 3.11.0.Final](https://issues.redhat.com/secure/ReleaseNote.jspa?version=12343301&styleName=Html&projectId=12310560&Create=Create&atl_token=AQZJ-FV3A-N91S-UDEU_b298dd8ed3dced33c98f12b1739760bc1706034e_lin) \ No newline at end of file +For release notes, see [RESTEasy 3.11.0.Final](https://issues.redhat.com/secure/ReleaseNote.jspa?version=12343301&styleName=Html&projectId=12310560&Create=Create&atl_token=AQZJ-FV3A-N91S-UDEU_b298dd8ed3dced33c98f12b1739760bc1706034e_lin) diff --git a/_posts/2020-04-10-spring.md b/content/posts/2020-04-10-spring.md similarity index 99% rename from _posts/2020-04-10-spring.md rename to content/posts/2020-04-10-spring.md index 6346409..13a7e56 100644 --- a/_posts/2020-04-10-spring.md +++ b/content/posts/2020-04-10-spring.md @@ -2,7 +2,7 @@ layout: post title: "Deploy RESTEasy-Spring project into WildFly Servlet-Only Container" subtitle: "" -date: Apr 10, 2020 +date: 2020-04-10 author: Wei Nan Li --- diff --git a/_posts/2020-04-27-wildfly-deploy.md b/content/posts/2020-04-27-wildfly-deploy.md similarity index 99% rename from _posts/2020-04-27-wildfly-deploy.md rename to content/posts/2020-04-27-wildfly-deploy.md index 5a876f6..3564b53 100644 --- a/_posts/2020-04-27-wildfly-deploy.md +++ b/content/posts/2020-04-27-wildfly-deploy.md @@ -2,7 +2,7 @@ layout: post title: "Deploy resteasy-spring-boot project into WildFly Java EE Full & Web Distribution" subtitle: "" -date: Apr 27, 2020 +date: 2020-04-27 author: Wei Nan Li --- @@ -122,6 +122,3 @@ Hello, world! ``` From the above output, we can see the service is working. - - - diff --git a/_posts/2020-05-18-MicroProfile-config.md b/content/posts/2020-05-18-MicroProfile-config.md similarity index 96% rename from _posts/2020-05-18-MicroProfile-config.md rename to content/posts/2020-05-18-MicroProfile-config.md index f595dc5..0009234 100644 --- a/_posts/2020-05-18-MicroProfile-config.md +++ b/content/posts/2020-05-18-MicroProfile-config.md @@ -2,8 +2,8 @@ layout: post title: "RESTEasy 3.12.0.Final: MicroProfile Config" subtitle: "" -date: May 18, 2020 18:17:00 -author: Ron Sigal +date: 2020-05-18 18:17:00 +aliases: [2020/05/18/MicroProfile-config/] --- RESTEasy 3.12.0.Final, just released, will ship with the upcoming WildFly 20. Besides a number of bug fixes, it has one new feature, the incorporation of [MicroProfile Config](https://github.com/eclipse/microprofile-config). diff --git a/_posts/2020-05-22-swagger.md b/content/posts/2020-05-22-swagger.md similarity index 99% rename from _posts/2020-05-22-swagger.md rename to content/posts/2020-05-22-swagger.md index d5c0954..265ab6c 100644 --- a/_posts/2020-05-22-swagger.md +++ b/content/posts/2020-05-22-swagger.md @@ -2,7 +2,7 @@ layout: post title: "Sample Project For Swagger And JAX-RS Integration" subtitle: "" -date: May 22, 2020 +date: 2020-05-22 author: Wei Nan Li --- @@ -117,5 +117,3 @@ dummy ``` From above command and its output, we can see our service is invoked. - - diff --git a/_posts/2020-05-30-monitor-your-application-with-microprofile-metrics.md b/content/posts/2020-05-30-monitor-your-application-with-microprofile-metrics.md similarity index 99% rename from _posts/2020-05-30-monitor-your-application-with-microprofile-metrics.md rename to content/posts/2020-05-30-monitor-your-application-with-microprofile-metrics.md index aca712c..122175e 100644 --- a/_posts/2020-05-30-monitor-your-application-with-microprofile-metrics.md +++ b/content/posts/2020-05-30-monitor-your-application-with-microprofile-metrics.md @@ -2,7 +2,7 @@ layout: post title: "Monitor your application with MicroProfile Metrics" subtitle: "" -date: May 30, 2020 +date: 2020-05-30 author: Jim Ma --- ![MicroProfile](/img/blog/20200530/microprofile.jpeg) @@ -128,9 +128,3 @@ MicroProfile Metrics provides convenient annotation to easily expose metrics dat - https://microprofile.io/project/eclipse/microprofile-metrics/spec/src/main/asciidoc/app-programming-model.adoc - https://microprofile.io/project/eclipse/microprofile-metrics/spec/src/main/asciidoc/architecture.adoc - http://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/ - - - - - - diff --git a/_posts/2020-06-01-blog-microprofile-rest-client.md b/content/posts/2020-06-01-blog-microprofile-rest-client.md similarity index 99% rename from _posts/2020-06-01-blog-microprofile-rest-client.md rename to content/posts/2020-06-01-blog-microprofile-rest-client.md index ee3845d..b0e8964 100644 --- a/_posts/2020-06-01-blog-microprofile-rest-client.md +++ b/content/posts/2020-06-01-blog-microprofile-rest-client.md @@ -2,8 +2,9 @@ layout: post title: "MicroProfile REST Client 1.4; Examination of a MicroProfile REST Client Application" subtitle: "" -date: Jun 1, 2020 +date: 2020-06-01 author: Rebecca Searls +aliases: [/2020/06/14/blog-microprofile-config-outOfBox/] --- In this article I will create a simple MicroProfile Rest Client that calls a remote service. In the process I will discuss the nuances in creating the diff --git a/_posts/2020-06-19-create-jaxrs-server-with-galleon.md b/content/posts/2020-06-19-create-jaxrs-server-with-galleon.md similarity index 99% rename from _posts/2020-06-19-create-jaxrs-server-with-galleon.md rename to content/posts/2020-06-19-create-jaxrs-server-with-galleon.md index e50d516..9557866 100644 --- a/_posts/2020-06-19-create-jaxrs-server-with-galleon.md +++ b/content/posts/2020-06-19-create-jaxrs-server-with-galleon.md @@ -2,7 +2,7 @@ layout: post title: "Trim WildFly To Run Restful Service With WildFly Galleon " subtitle: "" -date: June 19, 2020 +date: 2020-06-19 author: Jim Ma --- When we deploy Restful web service to WildFly Server, you might find that WildFly includes several components/subsystem your application doesn't actually use. Even these subsystems are lazily loaded, it's still consumes some disk spaces. Especially when moving to the cloud native architecture, we need the application server small size and start fast. WildFly Galleon project is created to install, uninstall or patch product with a xml customization definition or command line flags. With this tool, we tell Gallon we only need JAX-RS functionality in my server and it will automatically install a trimmed WildFly version with only JAX-RS subsystem and all its dependencies. In this blog, we'll go through these steps to create a slimmed WildFly Server which only include RESTEasy/jaxrs subystem to run Restful web service. @@ -141,16 +141,3 @@ When your application needs other layers or subsystems after the first installat WildFly provides rich layers for different application and purpose.The full list of layers can be found [here](https://docs.wildfly.org/20/Admin_Guide.html#wildfly-galleon-layers) As you can see, Wildfly Galleon is a easy to use tool. Download and unzip are the two steps to get it ready. If you haven't, please give galleon a try to trim your RESTEasy/jaxrs installation. If you have any issues and questions about jaxrs galleon layer, please contact RESTEasy team. - - - - - - - - - - - - - diff --git a/_posts/2020-07-14-blog-microprofile-config-outOfBox.md b/content/posts/2020-07-14-blog-microprofile-config-outOfBox.md similarity index 99% rename from _posts/2020-07-14-blog-microprofile-config-outOfBox.md rename to content/posts/2020-07-14-blog-microprofile-config-outOfBox.md index e5b21e9..71001a3 100644 --- a/_posts/2020-07-14-blog-microprofile-config-outOfBox.md +++ b/content/posts/2020-07-14-blog-microprofile-config-outOfBox.md @@ -3,7 +3,7 @@ layout: post title: "MicroProfile Config 1.3; Examination of The Out-Of-The-Box ConfigSources for a RESTEasy Application" subtitle: "" -date: Jun 14, 2020 +date: 2020-06-14 author: Rebecca Searls --- diff --git a/_posts/2020-07-30-resteasy-456-3130.md b/content/posts/2020-07-30-resteasy-456-3130.md similarity index 89% rename from _posts/2020-07-30-resteasy-456-3130.md rename to content/posts/2020-07-30-resteasy-456-3130.md index e1e89ea..457e2c0 100644 --- a/_posts/2020-07-30-resteasy-456-3130.md +++ b/content/posts/2020-07-30-resteasy-456-3130.md @@ -2,7 +2,7 @@ layout: post title: "A couple of summer releases: RESTEasy 4.5.6.Final and 3.13.0.Final" subtitle: "" -date: Jul 30, 2020 11:01:00 AM +date: 2020-07-30 11:01:00 author: Alessio Soldano --- Users frequently scanning github for contributions and releases of **RESTEasy** might have noticed that during the past weeks we've tagged **4.5.6.Final** and **3.13.0.Final**. @@ -13,19 +13,3 @@ The main motivation for the new 4.5 micro version is fixing a nasty security iss RESTEasy 3.13.0.Final, instead, is a basically a bug fix release with the addition of a [feature](https://issues.redhat.com/browse/RESTEASY-2366) related to client side integration with [Elytron](https://wildfly-security.github.io/wildfly-elytron/); this is a required step to have REST clients eventually rely on WildFly security (SSL, authentication, etc) configuration when running in-container. Enjoy the summer, stay safe and see you soon here for next RESTEasy improvements! - - - - - - - - - - - - - - - - diff --git a/_posts/2020-09-24-resteasy-4.5.8-3.13.1.md b/content/posts/2020-09-24-resteasy-4.5.8-3.13.1.md similarity index 76% rename from _posts/2020-09-24-resteasy-4.5.8-3.13.1.md rename to content/posts/2020-09-24-resteasy-4.5.8-3.13.1.md index 23d9598..8cfdc83 100644 --- a/_posts/2020-09-24-resteasy-4.5.8-3.13.1.md +++ b/content/posts/2020-09-24-resteasy-4.5.8-3.13.1.md @@ -2,8 +2,8 @@ layout: post title: "RESTEasy 4.5.8.Final and 3.13.1.Final released" subtitle: "" -date: Sept 24, 2020 15:44:00 -author: Ron Sigal +date: 2020-09-24 15:44:00 +aliases: [/2020/09/24/resteasy-4.5.8-3.13.1/] --- Two new releases, **4.5.8.Final** and **3.13.1.Final** are now available. @@ -14,19 +14,3 @@ Note that we have skipped over 4.5.7.Final due to a glitch in the release proces 3.13.1.Final just has bug fixes and one upgrade. Stay safe! - - - - - - - - - - - - - - - - diff --git a/_posts/2020-10-09-run-restful-service-with-bootablejar.md b/content/posts/2020-10-09-run-restful-service-with-bootablejar.md similarity index 99% rename from _posts/2020-10-09-run-restful-service-with-bootablejar.md rename to content/posts/2020-10-09-run-restful-service-with-bootablejar.md index 17e8991..58bda32 100644 --- a/_posts/2020-10-09-run-restful-service-with-bootablejar.md +++ b/content/posts/2020-10-09-run-restful-service-with-bootablejar.md @@ -2,7 +2,7 @@ layout: post title: "Restful service with bootable jar" subtitle: "" -date: Oct 21, 2020 +date: 2020-10-21 author: Jim Ma --- @@ -193,20 +193,3 @@ wildfly-jar-plugin is the another good tool WildFly team created after galleon l * [wildfly-jar-plugin project](https://github.com/wildfly-extras/wildfly-jar-maven-plugin) * [wildfly-jar-plugin documentation](https://github.com/wildfly-extras/wildfly-jar-maven-plugin/releases/download/2.0.0.Alpha4/index.html) - - - - - - - - - - - - - - - - - diff --git a/_posts/2020-11-23-blog-Untangling-Reactive-Streams.md b/content/posts/2020-11-23-blog-Untangling-Reactive-Streams.md similarity index 99% rename from _posts/2020-11-23-blog-Untangling-Reactive-Streams.md rename to content/posts/2020-11-23-blog-Untangling-Reactive-Streams.md index 3385f75..9e77f91 100644 --- a/_posts/2020-11-23-blog-Untangling-Reactive-Streams.md +++ b/content/posts/2020-11-23-blog-Untangling-Reactive-Streams.md @@ -2,8 +2,9 @@ layout: post title: "Untangling Reactive Streams' Gordian Knot, Wiring Subscriber, Publisher and Subscription" subtitle: "" -date: Nov 23, 2020 +date: 2020-11-23 author: Rebecca Searls +aliases: [/2020/11/23/blog-Untangling-Reactive-Streams/] --- At first look the Reactive Streams 1.0 Specification and its four short interfaces @@ -686,12 +687,3 @@ I suggest using the github project for this article to walk through that code us * [RxJava Plugins](http://reactivex.io/documentation/plugins.html) * [RxJava 2.0](https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0) * [Flowable](https://www.programmersought.com/article/3415851924/) - - - - - - - - - diff --git a/_posts/2020-12-07-resteasy-reactive.md b/content/posts/2020-12-07-resteasy-reactive.md similarity index 98% rename from _posts/2020-12-07-resteasy-reactive.md rename to content/posts/2020-12-07-resteasy-reactive.md index 9637f19..6a10c49 100644 --- a/_posts/2020-12-07-resteasy-reactive.md +++ b/content/posts/2020-12-07-resteasy-reactive.md @@ -2,7 +2,7 @@ layout: post title: "Introducing RESTEasy Reactive" subtitle: "" -date: Dec 07, 2020 02:30:00 PM +date: 2020-12-07 14:30:00 author: Alessio Soldano --- The RESTEasy community has been very active during the last two years and the project has seen a lot of improvements and additions. In addition to the usual standalone and [WildFly](https://www.wildfly.org/) related usage scenarios, we've seen a lot of interest coming from the [Quarkus](https://quarkus.io/) community, due to RESTEasy providing the base REST engine in it. The result has been RESTEasy 4 series starting embracing reactive, with innovation going beyond the few additions mandated by the JAX-RS 2.1 specification. Quarkus has benefited from this and succeeded in continuing offering JAX-RS ([Jakarta RESTful Web Services](https://projects.eclipse.org/projects/ee4j.jaxrs) today) API for building its REST services. diff --git a/_posts/2021-01-14-resteasy-4.6.0.Final.md b/content/posts/2021-01-14-resteasy-4.6.0.Final.md similarity index 95% rename from _posts/2021-01-14-resteasy-4.6.0.Final.md rename to content/posts/2021-01-14-resteasy-4.6.0.Final.md index 4d4b732..8caac72 100644 --- a/_posts/2021-01-14-resteasy-4.6.0.Final.md +++ b/content/posts/2021-01-14-resteasy-4.6.0.Final.md @@ -2,8 +2,9 @@ layout: post title: "RESTEasy 4.6.0.Final is now available" subtitle: "" -date: January 14, 2021 14:49:00 EST +date: 2021-01-14 14:49:00 author: Ron Sigal +aliases: [/2021/01/14/resteasy-4.6.0.Final/] --- Version **4.6.0.Final** of RESTEasy is now available. Some notable enhancements are @@ -22,4 +23,4 @@ In response to a security concern about leakage of third party information, some Of course, there are upgrades and over twenty bug fixes. -As always, feedback is welcome. And, as Sgt. Esterhaus used to say on *Hill Street Blues*, "Let's be careful out there" [https://www.youtube.com/watch?v=Jmg86CRBBtw](https://www.youtube.com/watch?v=Jmg86CRBBtw). \ No newline at end of file +As always, feedback is welcome. And, as Sgt. Esterhaus used to say on *Hill Street Blues*, "Let's be careful out there" [https://www.youtube.com/watch?v=Jmg86CRBBtw](https://www.youtube.com/watch?v=Jmg86CRBBtw). diff --git a/_posts/2021-01-19-deploy-resteasy-wadl-to-wildfly.md b/content/posts/2021-01-19-deploy-resteasy-wadl-to-wildfly.md similarity index 99% rename from _posts/2021-01-19-deploy-resteasy-wadl-to-wildfly.md rename to content/posts/2021-01-19-deploy-resteasy-wadl-to-wildfly.md index f3e5509..fcc8bef 100644 --- a/_posts/2021-01-19-deploy-resteasy-wadl-to-wildfly.md +++ b/content/posts/2021-01-19-deploy-resteasy-wadl-to-wildfly.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy WADL module deployment on Wildfly" subtitle: "" -date: Jan 18th, 2021 +date: 2021-01-18 author: Wei Nan --- @@ -70,8 +70,3 @@ If you've met any problems during its usage, please feel free to submit issue re * [RESTEasy Issue Report](https://issues.redhat.com/projects/RESTEASY/summary) Enjoy! - - - - - diff --git a/_posts/2021-02-18-resteasy-3.15.0.Final.md b/content/posts/2021-02-18-resteasy-3.15.0.Final.md similarity index 84% rename from _posts/2021-02-18-resteasy-3.15.0.Final.md rename to content/posts/2021-02-18-resteasy-3.15.0.Final.md index 6bb17ac..f1204ba 100644 --- a/_posts/2021-02-18-resteasy-3.15.0.Final.md +++ b/content/posts/2021-02-18-resteasy-3.15.0.Final.md @@ -2,11 +2,12 @@ layout: post title: "RESTEasy 3.15.0.Final is now available" subtitle: "" -date: February 18, 2021 14:52:00 EST +date: 2021-02-18 14:52:00 author: Ron Sigal +aliases: [/2021/02/18/resteasy-3.15.0.Final/] --- Version **3.15.0.Final** of RESTEasy is now available. The notable new feature is support for MicroProfile REST Client 2.0. Note that MP REST Client 2.0, besides new features like incorporation of SSE and greater CDI integration, now depends on Jakarta EE 8 APIs instead of Java EE 7. See the [release notes](https://projects.eclipse.org/projects/technology.microprofile/releases/rest-client-2.0) for more information. There are also upgrades and bug fixes. -As always, feedback is welcome. Stay safe, and, depending on where you are, stay warm or be cool. \ No newline at end of file +As always, feedback is welcome. Stay safe, and, depending on where you are, stay warm or be cool. diff --git a/_posts/2021-04-05-blog-ParamConverter-with-Quarkus.md b/content/posts/2021-04-05-blog-ParamConverter-with-Quarkus.md similarity index 98% rename from _posts/2021-04-05-blog-ParamConverter-with-Quarkus.md rename to content/posts/2021-04-05-blog-ParamConverter-with-Quarkus.md index e08ac87..431c7c2 100644 --- a/_posts/2021-04-05-blog-ParamConverter-with-Quarkus.md +++ b/content/posts/2021-04-05-blog-ParamConverter-with-Quarkus.md @@ -2,8 +2,9 @@ layout: post title: "JAX-RS ParamConverter with Quarkus" subtitle: "" -date: Apr 5, 2021 +date: 2021-04-05 author: Rebecca Searls +aliases: [/2021/04/05/blog-ParamConverter-with-Quarkus/] --- Recently RESTEasy had a request by a user who was implementing their REST service with Quarkus for support of an endpoint input parameter type java.time.Instant. @@ -173,4 +174,4 @@ writing a RESTful service with Quarkus. References -[[1] Quarkus getting-started ](https://quarkus.io/guides/getting-started) \ No newline at end of file +[[1] Quarkus getting-started ](https://quarkus.io/guides/getting-started) diff --git a/_posts/2021-07-06-resteasy-4.6.2.Final.md b/content/posts/2021-07-06-resteasy-4.6.2.Final.md similarity index 94% rename from _posts/2021-07-06-resteasy-4.6.2.Final.md rename to content/posts/2021-07-06-resteasy-4.6.2.Final.md index 6e0386b..e842a81 100644 --- a/_posts/2021-07-06-resteasy-4.6.2.Final.md +++ b/content/posts/2021-07-06-resteasy-4.6.2.Final.md @@ -2,8 +2,9 @@ layout: post title: "Quarkus 2, RESTEasy 4.6 fixes and more" subtitle: "" -date: July 6, 2021 00:45:00 CEST +date: 2021-07-06 00:45:00 author: Alessio Soldano +aliases: [/2021/07/06/resteasy-4.6.2.Final/] --- I'm sure you heard [Quarkus 2.0 has been released](https://quarkus.io/blog/quarkus-2-0-0-final-released/) last week; one of the interesting additions of the second major of Quarkus is MicroProfile 4 support... and when it comes to MicroProfile REST Client 2.0 implementation that has been achieved my moving from the 4.5 to the 4.6 series of RESTEasy. diff --git a/_posts/2021-07-08-resteasy-4.7.0.Final.md b/content/posts/2021-07-08-resteasy-4.7.0.Final.md similarity index 94% rename from _posts/2021-07-08-resteasy-4.7.0.Final.md rename to content/posts/2021-07-08-resteasy-4.7.0.Final.md index 4cd10a2..4666507 100644 --- a/_posts/2021-07-08-resteasy-4.7.0.Final.md +++ b/content/posts/2021-07-08-resteasy-4.7.0.Final.md @@ -2,8 +2,9 @@ layout: post title: "RESTEasy 4.7.0.Final is now available" subtitle: "" -date: July 8, 2021 14:49:00 PDT +date: 2021-07-08 14:49:00 author: James R. Perkins +aliases: [/2021/07/08/resteasy-4.7.0.Final/] --- I'm pleased to announce that RESTEasy 4.7.0.Final has been released. @@ -28,4 +29,4 @@ As usual the documentation can be found on the [documentation site](https://docs ## Full Release Notes -The full release notes can be found on the [RESTEasy JIRA](https://issues.redhat.com/secure/ReleaseNote.jspa?projectId=12310560&version=12353153). \ No newline at end of file +The full release notes can be found on the [RESTEasy JIRA](https://issues.redhat.com/secure/ReleaseNote.jspa?projectId=12310560&version=12353153). diff --git a/_posts/2021-07-29-separate-spring-and-microprofile.md b/content/posts/2021-07-29-separate-spring-and-microprofile.md similarity index 99% rename from _posts/2021-07-29-separate-spring-and-microprofile.md rename to content/posts/2021-07-29-separate-spring-and-microprofile.md index 0c85528..cf2907e 100644 --- a/_posts/2021-07-29-separate-spring-and-microprofile.md +++ b/content/posts/2021-07-29-separate-spring-and-microprofile.md @@ -2,7 +2,7 @@ layout: post title: "Separating RESTEasy Spring And Microprofile Components Into Independent Subprojects." subtitle: "" -date: July 29, 2021 +date: 2021-07-29 author: Wei Nan Li --- diff --git a/_posts/2021-09-23-announcements-and-releases.md b/content/posts/2021-09-23-announcements-and-releases.md similarity index 97% rename from _posts/2021-09-23-announcements-and-releases.md rename to content/posts/2021-09-23-announcements-and-releases.md index 457e312..f16322d 100644 --- a/_posts/2021-09-23-announcements-and-releases.md +++ b/content/posts/2021-09-23-announcements-and-releases.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy Announcements and Plans" subtitle: "" -date: September 23, 2021 11:11:11 PDT +date: 2021-09-23 11:11:11 author: James R. Perkins --- @@ -55,4 +55,4 @@ specifications which are part of [Jakarta EE 9.1](https://jakarta.ee/specificati ## Other Announcements We have enabled [discussions on GitHub](https://github.com/resteasy/resteasy/discussions) for those that want something -other than mailing lists. \ No newline at end of file +other than mailing lists. diff --git a/_posts/2021-10-13-resteasy-spring-wildfly-and-more.md b/content/posts/2021-10-13-resteasy-spring-wildfly-and-more.md similarity index 99% rename from _posts/2021-10-13-resteasy-spring-wildfly-and-more.md rename to content/posts/2021-10-13-resteasy-spring-wildfly-and-more.md index 044c028..c5c7005 100644 --- a/_posts/2021-10-13-resteasy-spring-wildfly-and-more.md +++ b/content/posts/2021-10-13-resteasy-spring-wildfly-and-more.md @@ -2,7 +2,7 @@ layout: post title: "Deploying `resteasy-spring` based Project Into WildFly Full Distribution" subtitle: "" -date: Oct 13, 2021 +date: 2021-10-13 author: Wei Nan Li --- diff --git a/_posts/2021-11-03-http-engine.md b/content/posts/2021-11-03-http-engine.md similarity index 98% rename from _posts/2021-11-03-http-engine.md rename to content/posts/2021-11-03-http-engine.md index cacc5fb..e70db2f 100644 --- a/_posts/2021-11-03-http-engine.md +++ b/content/posts/2021-11-03-http-engine.md @@ -2,7 +2,7 @@ layout: post title: "Supporting HTTP Engine Registration In RESTEasy Client and RESTEasy MicroProfile Client" subtitle: "" -date: Nov 03, 2021 +date: 2021-11-03 author: Wei Nan Li --- @@ -68,8 +68,3 @@ public interface NgHTTP2 { With above interface we can make call to the URL address. Hope this new feature is useful to you :D - - - - - diff --git a/_posts/2021-11-04-resteasy-5.0.0-release.md b/content/posts/2021-11-04-resteasy-5.0.0-release.md similarity index 96% rename from _posts/2021-11-04-resteasy-5.0.0-release.md rename to content/posts/2021-11-04-resteasy-5.0.0-release.md index 8734eee..99211ca 100644 --- a/_posts/2021-11-04-resteasy-5.0.0-release.md +++ b/content/posts/2021-11-04-resteasy-5.0.0-release.md @@ -2,8 +2,9 @@ layout: post title: "RESTEasy 5.0.0 Released" subtitle: "" -date: November 4, 2021 11:11:11 PDT +date: 2021-11-04 11:11:11 author: James R. Perkins +aliases: [/2021/11/04/resteasy-5.0.0-release/] --- I'm pleased to announce the release of RESTEasy 5. This is the first major release in some time now. Along with this @@ -103,4 +104,4 @@ RESTEasy 5 is now tested and working with Java SE 17. RESTEasy is going to migrate to [Jakarta RESTful Web Services 3.0](https://jakarta.ee/specifications/restful-ws/3.0/). The only change in this release will be migrating from the `javax` namespace to `jakarta`. The plan is to make this -change immediately and move the version to RESTEasy 6. \ No newline at end of file +change immediately and move the version to RESTEasy 6. diff --git a/_posts/2021-11-22-feature-pack.md b/content/posts/2021-11-22-feature-pack.md similarity index 99% rename from _posts/2021-11-22-feature-pack.md rename to content/posts/2021-11-22-feature-pack.md index 95cb179..f9f0afd 100644 --- a/_posts/2021-11-22-feature-pack.md +++ b/content/posts/2021-11-22-feature-pack.md @@ -2,7 +2,7 @@ layout: post title: "Using The RESTEasy Galleon Feature Pack In WildFly" subtitle: "" -date: Nov 22, 2021 +date: 2021-11-22 author: Wei Nan Li --- @@ -147,4 +147,3 @@ Hello, world! From the above command output, we can see the service can be accessed by the `curl` command, and the sample service works, and it verifies that our installed galleon feature pack works properly. Above is a brief introduction to the new feature pack feature provided by RESTEasy, wish it’s useful to you :D - diff --git a/_posts/2021-12-02-resteasy-releases.md b/content/posts/2021-12-02-resteasy-releases.md similarity index 63% rename from _posts/2021-12-02-resteasy-releases.md rename to content/posts/2021-12-02-resteasy-releases.md index 16b0d2b..6d273d6 100644 --- a/_posts/2021-12-02-resteasy-releases.md +++ b/content/posts/2021-12-02-resteasy-releases.md @@ -2,17 +2,17 @@ layout: post title: "RESTEasy Releases" subtitle: "" -date: December 2, 2021 11:11:11 PDT +date: 2021-12-02 11:11:11 author: James R. Perkins --- It's been about a month since the initial [5.0.0 release]({% post_url 2021-11-04-resteasy-5.0.0-release %}) and now is -the time for some updates. Today [5.0.1.Final]({{ site.baseurl }}/downloads#501final) was released along with -[4.7.4.Final]({{ site.baseurl }}/downloads#474final). These are both bug fix releases. +the time for some updates. Today [5.0.1.Final](/downloads#501final) was released along with +[4.7.4.Final](/downloads#474final). These are both bug fix releases. -Along with the two bug fix releases comes [RESTEasy 6.0.0.Beta1]({{ site.baseurl }}/downloads#600beta1). This is the +Along with the two bug fix releases comes [RESTEasy 6.0.0.Beta1](/downloads#600beta1). This is the first official [Jakarta RESTful Web Services 3.0](https://jakarta.ee/specifications/restful-ws/3.0/) for RESTEasy. As previously stated there is no plan for new features in 6.0.0. This is simply the same as 5.0.0 with the `jakarta` namespace change. -As always if you try these new releases and find bugs please file a [JIRA](https://issues.redhat.com/browse/RESTEASY). \ No newline at end of file +As always if you try these new releases and find bugs please file a [JIRA](https://issues.redhat.com/browse/RESTEASY). diff --git a/_posts/2021-12-13-tracing-feature.md b/content/posts/2021-12-13-tracing-feature.md similarity index 99% rename from _posts/2021-12-13-tracing-feature.md rename to content/posts/2021-12-13-tracing-feature.md index 047947b..b86dd81 100644 --- a/_posts/2021-12-13-tracing-feature.md +++ b/content/posts/2021-12-13-tracing-feature.md @@ -92,4 +92,3 @@ As the above screenshot shows, the tracing information is output correctly. And Until now we have make the Tracing Feature working with the provisioned WildFly which has RESTEasy Feature Pack installed. - diff --git a/_posts/2021-12-24-bootstrap-jaxrs31.md b/content/posts/2021-12-24-bootstrap-jaxrs31.md similarity index 99% rename from _posts/2021-12-24-bootstrap-jaxrs31.md rename to content/posts/2021-12-24-bootstrap-jaxrs31.md index f240428..d8355e8 100644 --- a/_posts/2021-12-24-bootstrap-jaxrs31.md +++ b/content/posts/2021-12-24-bootstrap-jaxrs31.md @@ -2,7 +2,7 @@ layout: post title: "Java SE Bootstrap API In Jakarta REST 3.1" subtitle: "" -date: Dec 24, 2021 +date: 2021-12-24 author: Jim Ma --- After JavaEE was moved under Eclipse Foundation, we started seeing many changes on the specifications; @@ -181,10 +181,3 @@ All these changes are pushed to [ee10 branch](https://github.com/resteasy/restea This features is still in development phase and fixes / improvements might still be required. If you want to have a taste of what's coming with this new api, please check out this branch and play with this api a bit. When you get any issues or questions, please talk with us on [Github Discussions](https://github.com/resteasy/resteasy/discussions). - - - - - - - diff --git a/_posts/2022-01-13-resteasy-6.0.0-release.md b/content/posts/2022-01-13-resteasy-6.0.0-release.md similarity index 63% rename from _posts/2022-01-13-resteasy-6.0.0-release.md rename to content/posts/2022-01-13-resteasy-6.0.0-release.md index 443bc7f..e13cc64 100644 --- a/_posts/2022-01-13-resteasy-6.0.0-release.md +++ b/content/posts/2022-01-13-resteasy-6.0.0-release.md @@ -2,11 +2,12 @@ layout: post title: "RESTEasy 6.0.0 Released" subtitle: "" -date: January 13, 2022 11:11:11 PDT +date: 2022-01-13 11:11:11 author: James R. Perkins +aliases: [/2022/01/13/resteasy-6.0.0-release/] --- -I'm pleased to announce the release of [RESTEasy 6]({{ site.baseurl }}/downloads#600final). This is the first release of +I'm pleased to announce the release of [RESTEasy 6](/downloads#600final). This is the first release of RESTEasy that is [Jakarta RESTful Web Services 3.0](https://jakarta.ee/specifications/restful-ws/3.0/) compliant. Overall this release is equivalent to RESTEasy 5.0 with changes for the `jakarta` namespace changes. @@ -19,5 +20,5 @@ RESTEasy 6.1 will be targeting Jakarta RESTful Web Services 3.1 which should be ## Other Releases -With the release of RESTEasy 6, there have also been bug releases for [RESTEasy 5]({{ site.baseurl }}/downloads#502final) -and [RESTEasy 4.7]({{ site.baseurl }}/downloads#475final). See the [announcements](https://github.com/resteasy/resteasy/discussions/categories/announcements) for more details. \ No newline at end of file +With the release of RESTEasy 6, there have also been bug releases for [RESTEasy 5](/downloads#502final) +and [RESTEasy 4.7](/downloads#475final). See the [announcements](https://github.com/resteasy/resteasy/discussions/categories/announcements) for more details. diff --git a/_posts/2022-04-14-resteasy-spring-6-wildfly-example.md b/content/posts/2022-04-14-resteasy-spring-6-wildfly-example.md similarity index 100% rename from _posts/2022-04-14-resteasy-spring-6-wildfly-example.md rename to content/posts/2022-04-14-resteasy-spring-6-wildfly-example.md diff --git a/_posts/2022-04-19-resteasy-releases.md b/content/posts/2022-04-19-resteasy-releases.md similarity index 93% rename from _posts/2022-04-19-resteasy-releases.md rename to content/posts/2022-04-19-resteasy-releases.md index 328b327..1b4ed39 100644 --- a/_posts/2022-04-19-resteasy-releases.md +++ b/content/posts/2022-04-19-resteasy-releases.md @@ -2,16 +2,16 @@ layout: post title: "RESTEasy Releases" subtitle: "" -date: April 19, 2022 11:11:11 PDT +date: 2022-04-19 11:11:11 author: James R. Perkins --- It is time for the next quarterly releases of RESTEasy. With these releases I'm very pleased to announce the release -of [RESTEasy 6.1.0.Beta1]({{ site.basurl }}/downloads#610beta1). This is the first release which implements +of [RESTEasy 6.1.0.Beta1](/downloads#610beta1). This is the first release which implements [Jakarta RESTful Web Services 3.1](https://jakarta.ee/specifications/restful-ws/3.1/). -Along with the 6.1.0.Beta1 release, there have been three bug fix releases; [6.0.1.Final]({{ site.baseurl }}/downloads#601final), -[5.0.3.Final]({{ site.baseurl }}/downloads#503final) and [4.7.6.Final]({{ site.baseurl }}/downloads#476final). +Along with the 6.1.0.Beta1 release, there have been three bug fix releases; [6.0.1.Final](/downloads#601final), +[5.0.3.Final](/downloads#503final) and [4.7.6.Final](/downloads#476final). ## RESTEasy 6.1.0 diff --git a/_posts/2022-04-26-resteasy-6.1.0.Beta2.md b/content/posts/2022-04-26-resteasy-6.1.0.Beta2.md similarity index 83% rename from _posts/2022-04-26-resteasy-6.1.0.Beta2.md rename to content/posts/2022-04-26-resteasy-6.1.0.Beta2.md index 1a8ba8a..023f040 100644 --- a/_posts/2022-04-26-resteasy-6.1.0.Beta2.md +++ b/content/posts/2022-04-26-resteasy-6.1.0.Beta2.md @@ -2,12 +2,13 @@ layout: post title: "RESTEasy 6.1.0.Beta2 Release" subtitle: "" -date: April 26, 2022 11:11:11 PDT +date: 2022-04-26 11:11:11 author: James R. Perkins +aliases: [/2022/04/26/resteasy-6.1.0.Beta2/] --- The [Jakarta RESTful Web Services 3.1 specification](https://jakarta.ee/specifications/restful-ws/3.1/) is now final -and released to Maven Central. Given this, we have released [RESTEasy 6.1.0.Beta2]({{ site.basurl }}/downloads#610beta2). +and released to Maven Central. Given this, we have released [RESTEasy 6.1.0.Beta2](/downloads#610beta2). This release mostly contains component upgrades. However, you no longer need to add the JBoss Nexus Repository to use the `jakarta.ws.rs:jakarta.ws.rs-api` dependency. diff --git a/_posts/2022-07-21-resteasy-releases.md b/content/posts/2022-07-21-resteasy-releases.md similarity index 92% rename from _posts/2022-07-21-resteasy-releases.md rename to content/posts/2022-07-21-resteasy-releases.md index b3b8e4c..c895d37 100644 --- a/_posts/2022-07-21-resteasy-releases.md +++ b/content/posts/2022-07-21-resteasy-releases.md @@ -2,16 +2,16 @@ layout: post title: "RESTEasy Releases" subtitle: "" -date: July 21, 2022 11:11:11 PDT +date: 2022-07-21 11:11:11 author: James R. Perkins --- It is once again time for the next quarterly releases of RESTEasy. There have been releases of the following 4 streams: -* [6.1.0.Beta3](https://github.com/resteasy/resteasy/releases/tag/6.1.0.Beta3){:target="_blank"} -* [6.0.3.Final](https://github.com/resteasy/resteasy/releases/tag/6.0.3.Final){:target="_blank"} -* [5.0.4.Final](https://github.com/resteasy/resteasy/releases/tag/5.0.4.Final){:target="_blank"} -* [4.7.7.Final](https://github.com/resteasy/resteasy/releases/tag/4.7.7.Final){:target="_blank"} +* [6.1.0.Beta3](https://github.com/resteasy/resteasy/releases/tag/6.1.0.Beta3) +* [6.0.3.Final](https://github.com/resteasy/resteasy/releases/tag/6.0.3.Final) +* [5.0.4.Final](https://github.com/resteasy/resteasy/releases/tag/5.0.4.Final) +* [4.7.7.Final](https://github.com/resteasy/resteasy/releases/tag/4.7.7.Final) ### RESTEasy 6.1.0.Beta3 @@ -48,8 +48,8 @@ Full release notes for this release can be found [here](https://issues.redhat.co Like 5.0.4.Final, this release targets [Jakarta RESTful Web Services 2.1](https://jakarta.ee/specifications/restful-ws/2.1/). The difference is the 4.7 release stream still includes RESTEasy Spring and RESTEasy MicroProfile artifacts. These artifacts still exist under different projects. For RESTEasy MicroProfile the new project is -[resteasy-microprofile](https://github.com/resteasy/resteasy-microprofile){:target="_blank"}. For RESTEasy Spring the -new project is [resteasy-spring](https://github.com/resteasy/resteasy-spring){:target="_blank"}. +[resteasy-microprofile](https://github.com/resteasy/resteasy-microprofile). For RESTEasy Spring the +new project is [resteasy-spring](https://github.com/resteasy/resteasy-spring). This is likely the last release for this stream in favor of using 5.0 and the separate release streams for RESTEasy MicroProfile and RESTEasy Spring. diff --git a/_posts/2022-08-02-resteasy-6.1.0-release.md b/content/posts/2022-08-02-resteasy-6.1.0-release.md similarity index 94% rename from _posts/2022-08-02-resteasy-6.1.0-release.md rename to content/posts/2022-08-02-resteasy-6.1.0-release.md index e17efc6..f2bed4a 100644 --- a/_posts/2022-08-02-resteasy-6.1.0-release.md +++ b/content/posts/2022-08-02-resteasy-6.1.0-release.md @@ -2,11 +2,12 @@ layout: post title: "RESTEasy 6.1.0.Final Release" subtitle: "" -date: August 2, 2022 11:11:11 PDT +date: 2022-08-02 11:11:11 author: James R. Perkins +aliases: [/2022/08/02/resteasy-6.1.0-release/] --- -We are happy to announce the final version of [RESTEasy 6.1.0.Final]({{ site.baseurl }}/downloads#610final). This is our first final release implementing the +We are happy to announce the final version of [RESTEasy 6.1.0.Final](/downloads#610final). This is our first final release implementing the [Jakarta RESTful Web Services 3.1](https://jakarta.ee/specifications/restful-ws/3.1/) specification. ### What has changed in Jakarta RESTful Web Services 3.1 @@ -80,4 +81,4 @@ progress. ### New Features While there have not been many new features in RESTEasy itself, there has been one new [client utility](https://issues.redhat.com/browse/RESTEASY-2856) introduced. -Currently, this contains some client authentication filters. \ No newline at end of file +Currently, this contains some client authentication filters. diff --git a/_posts/2022-09-08-resteasy-6.2.0.Beta1-release.md b/content/posts/2022-09-08-resteasy-6.2.0.Beta1-release.md similarity index 81% rename from _posts/2022-09-08-resteasy-6.2.0.Beta1-release.md rename to content/posts/2022-09-08-resteasy-6.2.0.Beta1-release.md index 079850f..733ff7a 100644 --- a/_posts/2022-09-08-resteasy-6.2.0.Beta1-release.md +++ b/content/posts/2022-09-08-resteasy-6.2.0.Beta1-release.md @@ -2,11 +2,12 @@ layout: post title: "RESTEasy 6.2.0.Beta1 Release" subtitle: "" -date: September 8, 2022 11:11:11 PDT +date: 2022-09-08 11:11:11 author: James R. Perkins +aliases: [/2022/09/08/resteasy-6.2.0.Beta1-release/] --- -Today [RESTEasy 6.2.0.Beta1]({{ site.baseurl }}/downloads#final) was released. Except component +Today [RESTEasy 6.2.0.Beta1](/downloads#final) was released. Except component upgrades, there are two changes which resulted in a 6.2.0.Beta1 instead of a 6.1.1.Final. 1. [RESTEASY-3085](https://issues.redhat.com/browse/RESTEASY-3085) - Upgrade Jackson to 2.13 @@ -21,4 +22,4 @@ the `EntityPart.withName()` will work with RESTEasy 6.2. You can read the full release notes on the [tag](https://github.com/resteasy/resteasy/releases/tag/6.2.0.Beta1). -A 6.2.0.Final release is scheduled for 2022-09-22. \ No newline at end of file +A 6.2.0.Final release is scheduled for 2022-09-22. diff --git a/_posts/2022-09-23-resteasy-6.2.0.Final-release.md b/content/posts/2022-09-23-resteasy-6.2.0.Final-release.md similarity index 91% rename from _posts/2022-09-23-resteasy-6.2.0.Final-release.md rename to content/posts/2022-09-23-resteasy-6.2.0.Final-release.md index 9639717..d18a9a4 100644 --- a/_posts/2022-09-23-resteasy-6.2.0.Final-release.md +++ b/content/posts/2022-09-23-resteasy-6.2.0.Final-release.md @@ -2,11 +2,12 @@ layout: post title: "RESTEasy 6.2.0.Final Release" subtitle: "" -date: September 23, 2022 11:11:11 PDT +date: 2022-09-23 11:11:11 author: James R. Perkins +aliases: [/2022/09/23/resteasy-6.2.0.Final-release/] --- -We are happy to announce the release of [RESTEasy 6.2.0.Final]({{ site.baseurl }}/downloads#final) and +We are happy to announce the release of [RESTEasy 6.2.0.Final](/downloads#final) and [RESTEasy MicroProfile 2.0.0.Final](https://github.com/resteasy/resteasy-microprofile/releases/tag/2.0.0.Final). Both of these will end up in the up and coming [WildFly 27](https://wildfly.org) release. diff --git a/_posts/2022-10-10-resteasy-6.2.1.Final-release.md b/content/posts/2022-10-10-resteasy-6.2.1.Final-release.md similarity index 83% rename from _posts/2022-10-10-resteasy-6.2.1.Final-release.md rename to content/posts/2022-10-10-resteasy-6.2.1.Final-release.md index eb31176..33e49b1 100644 --- a/_posts/2022-10-10-resteasy-6.2.1.Final-release.md +++ b/content/posts/2022-10-10-resteasy-6.2.1.Final-release.md @@ -2,11 +2,12 @@ layout: post title: "RESTEasy 6.2.1.Final Release" subtitle: "" -date: October 10, 2022 11:11:11 PDT +date: 2022-10-10 11:11:11 author: James R. Perkins +aliases: [/2022/10/10/resteasy-6.2.1.Final-release/] --- -Today [RESTEasy 6.2.1.Final]({{ site.baseurl }}/downloads#621final) was released. This is a minor release mostly +Today [RESTEasy 6.2.1.Final](/downloads#621final) was released. This is a minor release mostly consisting of component upgrades and some fixes for running RESTEasy with the security manager enabled. This was done for the up and coming [WildFly 27.0.0.Final](https://www.wildfly.org/) release. diff --git a/_posts/2022-11-01-sebootstrap-usage.md b/content/posts/2022-11-01-sebootstrap-usage.md similarity index 99% rename from _posts/2022-11-01-sebootstrap-usage.md rename to content/posts/2022-11-01-sebootstrap-usage.md index f059076..d094002 100644 --- a/_posts/2022-11-01-sebootstrap-usage.md +++ b/content/posts/2022-11-01-sebootstrap-usage.md @@ -137,4 +137,3 @@ To understand the design of the `SeBootstrap` and its implementation inside REST - [An introduction to the SeBootstrap Spec and the RESTEasy Implementation](https://weinan.io/2022/10/26/resteasy-bootstrap.html) Enjoy! - diff --git a/_posts/2022-12-13-resteasy-releases.md b/content/posts/2022-12-13-resteasy-releases.md similarity index 84% rename from _posts/2022-12-13-resteasy-releases.md rename to content/posts/2022-12-13-resteasy-releases.md index 77540c7..64ca434 100644 --- a/_posts/2022-12-13-resteasy-releases.md +++ b/content/posts/2022-12-13-resteasy-releases.md @@ -2,12 +2,12 @@ layout: post title: "RESTEasy Releases" subtitle: "" -date: December 13, 2022 11:11:11 PDT +date: 2022-12-13 11:11:11 author: James R. Perkins --- -The time has come for two new RESTEasy releases; [6.2.2.Final]({{ site.baseurl }}/downloads#622final) -and [5.0.5.Final]({{ site.baseurl }}/downloads#505final). These are both bug fix releases. +The time has come for two new RESTEasy releases; [6.2.2.Final](/downloads#622final) +and [5.0.5.Final](/downloads#505final). These are both bug fix releases. RESTEasy [6.2.2.Final](https://github.com/resteasy/resteasy/discussions/3363) targets [Jakarta RESTful Web Services 3.1](https://jakarta.ee/specifications/restful-ws/3.1/). Full release notes for this diff --git a/_posts/2023-02-20-resteasy-microprofile-openapi.md b/content/posts/2023-02-20-resteasy-microprofile-openapi.md similarity index 99% rename from _posts/2023-02-20-resteasy-microprofile-openapi.md rename to content/posts/2023-02-20-resteasy-microprofile-openapi.md index 4db6637..09924a4 100644 --- a/_posts/2023-02-20-resteasy-microprofile-openapi.md +++ b/content/posts/2023-02-20-resteasy-microprofile-openapi.md @@ -198,4 +198,4 @@ It is recommended to use the feature in a container like Quarkus and WildFly. Bu The test case shows how to wrap the `smallrye-open-api/extension-jaxrs` as `com.sun.net.httpserver.HttpHandler` and use it in `com.sun.net.httpserver.HttpServer`. -Above is the brief introduction to the implementation of the OpenAPI feature in WildFly and Quarkus ecosystems. \ No newline at end of file +Above is the brief introduction to the implementation of the OpenAPI feature in WildFly and Quarkus ecosystems. diff --git a/_posts/2023-03-01-resteasy-releases.md b/content/posts/2023-03-01-resteasy-releases.md similarity index 94% rename from _posts/2023-03-01-resteasy-releases.md rename to content/posts/2023-03-01-resteasy-releases.md index 629d6c5..9a08985 100644 --- a/_posts/2023-03-01-resteasy-releases.md +++ b/content/posts/2023-03-01-resteasy-releases.md @@ -2,7 +2,7 @@ layout: post title: "Q1 2023 RESTEasy Quarterly Releases" subtitle: "" -date: March 01, 2023 11:11:11 PDT +date: 2023-03-01 11:11:11 author: James R. Perkins --- @@ -15,7 +15,7 @@ contain an `@OPTIONS` annotation. This will now simply return a valid response i old behavior can be enabled by setting the `dev.resteasy.throw.options.exception` configuration parameter to `true`. This change happened in all the releases listed below. -## [6.2.3.Final]({{ site.baseurl }}/downloads#623final) +## [6.2.3.Final](/downloads#623final) This is the latest release for the [Jakarta RESTful Web Services 3.1](https://jakarta.ee/specifications/restful-ws/3.1/) specification. The release consists mostly of bug fixes and component upgrades. @@ -27,7 +27,7 @@ Jackson components were upgraded from 2.13 to the latest 2.14. This was done as Full release notes for this release can be found [here](https://github.com/resteasy/resteasy/releases/tag/6.2.3.Final). -## [5.0.6.Final]({{ site.baseurl }}/downloads#506final) +## [5.0.6.Final](/downloads#506final) This is the latest, and preferred, release for the [Jakarta RESTful Web Services 2.1](https://jakarta.ee/specifications/restful-ws/2.1/) specification. Except the @@ -36,7 +36,7 @@ upgrades with a few bug fixes. Full release notes for this release can be found [here](https://github.com/resteasy/resteasy/releases/tag/5.0.6.Final). -## [4.7.9.Final]({{ site.baseurl }}/downloads#479final) +## [4.7.9.Final](/downloads#479final) This release targets the [Jakarta RESTful Web Services 2.1](https://jakarta.ee/specifications/restful-ws/2.1/) specification. This will likely be the final release from the 4.x stream. It was done primarily to resolve the CVE diff --git a/_posts/2023-04-12-tracing-feature-in-wildfly.md b/content/posts/2023-04-12-tracing-feature-in-wildfly.md similarity index 99% rename from _posts/2023-04-12-tracing-feature-in-wildfly.md rename to content/posts/2023-04-12-tracing-feature-in-wildfly.md index 63840ab..1ddd6a9 100644 --- a/_posts/2023-04-12-tracing-feature-in-wildfly.md +++ b/content/posts/2023-04-12-tracing-feature-in-wildfly.md @@ -186,7 +186,7 @@ HTTP/1.1 200 OK Connection: keep-alive Content-Type: application/octet-stream Content-Length: 7 -Date: Tue, 11 Apr 2023 18:43:04 GMT +Date: 2023-04-11 18:43:04 ... ``` @@ -203,4 +203,3 @@ From the above output, we can see the tracing feature is disabled. [^galleon]: [Galleon Provisioning](https://github.com/wildfly/galleon) [^wildflytracing]: [Using the Tracing Feature](https://github.com/wildfly/wildfly/pull/15198/files#diff-b1b3a12a4b68c3397dacaab84d50790141d87677f46552c5138f520312aa3782R155) - diff --git a/_posts/2023-05-15-resteasy-releases.md b/content/posts/2023-05-16-resteasy-releases.md similarity index 91% rename from _posts/2023-05-15-resteasy-releases.md rename to content/posts/2023-05-16-resteasy-releases.md index cd53ec7..7f3c5d5 100644 --- a/_posts/2023-05-15-resteasy-releases.md +++ b/content/posts/2023-05-16-resteasy-releases.md @@ -2,14 +2,14 @@ layout: post title: "Q2 2023 RESTEasy Quarterly Releases" subtitle: "" -date: May 15, 2023 21:11:11 PDT +date: 2023-05-16 21:11:11 author: James R. Perkins --- Today we announce some new RESTEasy releases. These are the 2023 Q2 releases. There have been two releases; 5.0.7.Final and 6.2.4.Final. -## [6.2.4.Final]({{ site.baseurl }}/downloads#624final) +## [6.2.4.Final](/downloads#624final) This is the latest release for the [Jakarta RESTful Web Services 3.1](https://jakarta.ee/specifications/restful-ws/3.1/) specification. The release consists mostly of bug fixes and component upgrades. @@ -21,7 +21,7 @@ which would work with Serlvlet 5.0. This required an upgrade to Servlet 6.0. Full release notes for this release can be found [here](https://github.com/resteasy/resteasy/releases/tag/6.2.4.Final). -## [5.0.7.Final]({{ site.baseurl }}/downloads#507final) +## [5.0.7.Final](/downloads#507final) This is the latest, and preferred, release for the [Jakarta RESTful Web Services 2.1](https://jakarta.ee/specifications/restful-ws/2.1/) specification. This release diff --git a/_posts/2023-05-30-grpc-in-wildfly-pt2.md b/content/posts/2023-05-30-grpc-in-wildfly-pt2.md similarity index 100% rename from _posts/2023-05-30-grpc-in-wildfly-pt2.md rename to content/posts/2023-05-30-grpc-in-wildfly-pt2.md diff --git a/_posts/2023-08-21-resteasy-releases.md b/content/posts/2023-08-21-resteasy-releases.md similarity index 87% rename from _posts/2023-08-21-resteasy-releases.md rename to content/posts/2023-08-21-resteasy-releases.md index 9b74bae..90b9d37 100644 --- a/_posts/2023-08-21-resteasy-releases.md +++ b/content/posts/2023-08-21-resteasy-releases.md @@ -2,21 +2,21 @@ layout: post title: "Q3 2023 RESTEasy Quarterly Releases" subtitle: "" -date: August 21, 2023 11:11:11 PDT +date: 2023-08-21 11:11:11 author: James R. Perkins --- Today we announce some new RESTEasy releases. These are the 2023 Q3 releases. There have been two releases; 5.0.8.Final and 6.2.5.Final. -## [6.2.5.Final]({{ site.baseurl }}/downloads#625final) +## [6.2.5.Final](/downloads#625final) This is the latest release for the [Jakarta RESTful Web Services 3.1](https://jakarta.ee/specifications/restful-ws/3.1/) specification. The release consists mostly of bug fixes and component upgrades. Full release notes for this release can be found [here](https://github.com/resteasy/resteasy/releases/tag/6.2.5.Final). -## [5.0.8.Final]({{ site.baseurl }}/downloads#508final) +## [5.0.8.Final](/downloads#508final) This is the latest, and preferred, release for the [Jakarta RESTful Web Services 2.1](https://jakarta.ee/specifications/restful-ws/2.1/) specification. This release diff --git a/_posts/2023-09-12-resteasy-grpc.md b/content/posts/2023-09-12-resteasy-grpc.md similarity index 99% rename from _posts/2023-09-12-resteasy-grpc.md rename to content/posts/2023-09-12-resteasy-grpc.md index fb79391..a564543 100644 --- a/_posts/2023-09-12-resteasy-grpc.md +++ b/content/posts/2023-09-12-resteasy-grpc.md @@ -379,4 +379,3 @@ Above is the overall introduction to the currently RESTEasy gRPC feature and the [^example-readme]: [grpc-bridge-example/README.md](https://github.com/resteasy/resteasy-examples/blob/main/grpc-bridge-example/README.md) [^galleon]: [wildfly/galleon](https://github.com/wildfly/galleon) - diff --git a/_posts/2023-11-02-resteasy-releases.md b/content/posts/2023-11-02-resteasy-releases.md similarity index 89% rename from _posts/2023-11-02-resteasy-releases.md rename to content/posts/2023-11-02-resteasy-releases.md index 742a7e5..8ae2ed6 100644 --- a/_posts/2023-11-02-resteasy-releases.md +++ b/content/posts/2023-11-02-resteasy-releases.md @@ -2,14 +2,14 @@ layout: post title: "Q4 2023 RESTEasy Quarterly Releases" subtitle: "" -date: November 2, 2023 11:11:11 PDT +date: 2023-11-02 11:11:11 author: James R. Perkins --- Today we announce some new RESTEasy releases. These are the 2023 Q4 releases. There have been two releases; 5.0.9.Final and 6.2.6.Final. -## [6.2.6.Final]({{ site.baseurl }}/downloads#626final) +## [6.2.6.Final](/downloads#626final) This is the latest release for the [Jakarta RESTful Web Services 3.1](https://jakarta.ee/specifications/restful-ws/3.1/) specification. The release consists mostly of bug fixes and component upgrades. This release includes upgrades to @@ -17,7 +17,7 @@ Netty and Undertow for [CVE-2023-44487](https://access.redhat.com/security/cve/c Full release notes for this release can be found [here](https://github.com/resteasy/resteasy/releases/tag/6.2.6.Final). -## [5.0.9.Final]({{ site.baseurl }}/downloads#509final) +## [5.0.9.Final](/downloads#509final) This is the latest, and preferred, release for the [Jakarta RESTful Web Services 2.1](https://jakarta.ee/specifications/restful-ws/2.1/) specification. This release diff --git a/_posts/2023-12-06-overview-and-roadmap.md b/content/posts/2023-12-06-overview-and-roadmap.md similarity index 95% rename from _posts/2023-12-06-overview-and-roadmap.md rename to content/posts/2023-12-06-overview-and-roadmap.md index 18ca3f3..9151983 100644 --- a/_posts/2023-12-06-overview-and-roadmap.md +++ b/content/posts/2023-12-06-overview-and-roadmap.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy Overview and Roadmap" subtitle: "" -date: December 6, 2023 11:11:11 PDT +date: 2023-12-06 11:11:11 author: James R. Perkins --- @@ -26,7 +26,7 @@ going final before we can do any final releases. ## Jakarta REST 4.0 -The current target for [Jakarta REST 4.0](https://jakarta.ee/specifications/restful-ws/4.0/){:target="_blank"} is Q1 of 2024. +The current target for [Jakarta REST 4.0](https://jakarta.ee/specifications/restful-ws/4.0/) is Q1 of 2024. Jakarta REST 4.0 will bring some significant and breaking changes to the API and implementation. The biggest change will be the removal of the `@Context` injection and `jakarta.ws.rs.ext.ContextResolver`. These were deprecated for removal in [Jakarta REST 3.1](https://jakarta.ee/specifications/restful-ws/3.1/jakarta-restful-ws-spec-3.1#context-injection). @@ -54,7 +54,7 @@ in Kubernetes. We will be introducing a [new default backing HTTP Client](https://issues.redhat.com/browse/RESTEASY-1694) with http/2 support. The backing client will be the JDK HTTP Client. This will have some minor caveats. One will be support -for the `ClientBuilder.hostnameVerifier()`. There is currently [no support](https://bugs.openjdk.org/browse/JDK-8213309){:target="_blank"} +for the `ClientBuilder.hostnameVerifier()`. There is currently [no support](https://bugs.openjdk.org/browse/JDK-8213309) for setting a `javax.net.ssl.HostnameVerifier` in the HTTP Client. ## Removal or Deprecations @@ -80,4 +80,4 @@ Below are the highlights of the road map in no specific order: * Remove BouncyCastle dependency, [RESTEASY-3431](https://issues.redhat.com/browse/RESTEASY-3431) * Migrate to JUnit 5, [RESTEASY-3388](https://issues.redhat.com/browse/RESTEASY-3388) * Keep the JS API or update to remove deprecated code, currently no issue filed. -* Deprecate/remove the feature pack, [RESTEASY-3432](https://issues.redhat.com/browse/RESTEASY-3432) \ No newline at end of file +* Deprecate/remove the feature pack, [RESTEASY-3432](https://issues.redhat.com/browse/RESTEASY-3432) diff --git a/_posts/2024-01-12-resteasy-releases.md b/content/posts/2024-01-12-resteasy-releases.md similarity index 93% rename from _posts/2024-01-12-resteasy-releases.md rename to content/posts/2024-01-12-resteasy-releases.md index 3571ae0..7449a3e 100644 --- a/_posts/2024-01-12-resteasy-releases.md +++ b/content/posts/2024-01-12-resteasy-releases.md @@ -2,14 +2,14 @@ layout: post title: "Q1 2024 RESTEasy Quarterly Releases" subtitle: "" -date: January 12, 2024 11:11:11 PDT +date: 2024-01-12 11:11:11 author: James R. Perkins --- Today we'd like to announce a new RESTEasy releases and a new RESTEasy MicroProfile release. -## [6.2.7.Final]({{ site.baseurl }}/downloads#627final) +## [6.2.7.Final](/downloads#627final) This is the latest release for the [Jakarta RESTful Web Services 3.1](https://jakarta.ee/specifications/restful-ws/3.1/) specification. The release consists mostly of bug fixes and component upgrades. diff --git a/_posts/2024-01-23-grpc-jakarta-rs-arrays.md b/content/posts/2024-01-23-grpc-jakarta-rs-arrays.md similarity index 100% rename from _posts/2024-01-23-grpc-jakarta-rs-arrays.md rename to content/posts/2024-01-23-grpc-jakarta-rs-arrays.md diff --git a/_posts/2024-01-31-resteasy-glow.md b/content/posts/2024-01-31-resteasy-glow.md similarity index 98% rename from _posts/2024-01-31-resteasy-glow.md rename to content/posts/2024-01-31-resteasy-glow.md index d06edcb..6fb6b9f 100644 --- a/_posts/2024-01-31-resteasy-glow.md +++ b/content/posts/2024-01-31-resteasy-glow.md @@ -6,7 +6,7 @@ date: 2024-01-31 author: Wei Nan Li --- -Recently I created a sample project showing the usage of the feature for deploying a RESTEasy based sample project[^sample-project]. The project contains a minimal REST based service and a test case, and it uses the `maven-wildfly-plugin` to produce a provisioned WildFly server for the integration testing. +Recently I created a sample project showing the usage of the feature for deploying a RESTEasy-based sample project[^sample-project]. The project contains a minimal REST based service and a test case, and it uses the `maven-wildfly-plugin` to produce a provisioned WildFly server for the integration testing. The `maven-wildfly-plugin` has integrated WildFly Glow[^glow] since `5.0.0.Alpha1`[^glow-integration]. I have created the PR to the sample project to enable the feature[^enable-glow]. @@ -115,5 +115,3 @@ Above is the brief usage of the Glow feature to automate the server provision pr [^sample-project]: [https://github.com/liweinan/resteasy-wildfly](https://github.com/liweinan/resteasy-wildfly) [^glow-integration]: [https://github.com/wildfly/wildfly-maven-plugin/pull/374](https://github.com/wildfly/wildfly-maven-plugin/pull/374) [^enable-glow]: [resteasy-wildfly / Use Glow #6](https://github.com/liweinan/resteasy-wildfly/pull/6) - - diff --git a/_posts/2024-03-22-6.2.8-releas.md b/content/posts/2024-03-22-6.2.8-release.md similarity index 93% rename from _posts/2024-03-22-6.2.8-releas.md rename to content/posts/2024-03-22-6.2.8-release.md index 19499f5..484c85b 100644 --- a/_posts/2024-03-22-6.2.8-releas.md +++ b/content/posts/2024-03-22-6.2.8-release.md @@ -2,11 +2,12 @@ layout: post title: "RESTEasy 6.2.8.Final Release" subtitle: "" -date: March 22, 2024 11:11:11 PDT +date: 2024-03-22 11:11:11 author: James R. Perkins +aliases: [/2024/03/22/6.2.8-releas/] --- -Today we'd like to announce the release of RESTEasy [6.2.8.Final]({{ site.baseurl }}/downloads#628final). This release +Today we'd like to announce the release of RESTEasy [6.2.8.Final](/downloads#628final). This release contains some bug fixes as well as some notable changes in behavior. ## Client Changes @@ -29,7 +30,7 @@ are only allowed to be invoked once. We've added the requirement of that restriction to RESTEasy. See [RESTEASY-3468](https://issues.redhat.com/browse/RESTEASY-3468) for details. Previously when using an `EntityPart` as a `@FormParam` it was required to register the `jakarta.ws.rs.core.Application` -as a servlet with a `multipart-config`. This was not user-friendly and not well document. In [RESTEASY-363](https://issues.redhat.com/browse/RESTEASY-3463) +as a servlet with a `multipart-config`. This was not user-friendly and not well-documented. In [RESTEASY-363](https://issues.redhat.com/browse/RESTEASY-3463) we solved this and now `@FormParam`'s can use the entity parts without the need to define a `multipart-config` on the servlet. diff --git a/_posts/2024-05-21-releases.md b/content/posts/2024-05-21-releases.md similarity index 98% rename from _posts/2024-05-21-releases.md rename to content/posts/2024-05-21-releases.md index 0a83877..54fc713 100644 --- a/_posts/2024-05-21-releases.md +++ b/content/posts/2024-05-21-releases.md @@ -2,12 +2,12 @@ layout: post title: "RESTEasy 6.2.9.Final and 7.0.0.Alpha2 Releases" subtitle: "" -date: May 21, 2024 11:11:11 PDT +date: 2024-05-21 11:11:11 author: James R. Perkins --- -Today we'd like to announce the release of RESTEasy [6.2.9.Final]({{ site.baseurl }}/downloads#629final) and RESTEasy -[7.0.0.Alpha2]({{ site.baseurl }}/downloads#700alpha2). +Today we'd like to announce the release of RESTEasy [6.2.9.Final](/downloads#629final) and RESTEasy +[7.0.0.Alpha2](/downloads#700alpha2). ## Introduction of Channels diff --git a/_posts/2024-08-19-releases.md b/content/posts/2024-08-19-releases.md similarity index 94% rename from _posts/2024-08-19-releases.md rename to content/posts/2024-08-19-releases.md index 9e5adb6..2d5d7d9 100644 --- a/_posts/2024-08-19-releases.md +++ b/content/posts/2024-08-19-releases.md @@ -2,12 +2,12 @@ layout: post title: "RESTEasy 6.2.10.Final and 7.0.0.Alpha3 Releases" subtitle: "" -date: Aug 19, 2024 11:11:11 PDT +date: 2024-08-19 11:11:11 author: James R. Perkins --- -Today we'd like to announce the release of RESTEasy [6.2.10.Final]({{ site.baseurl }}/downloads#6210final) and RESTEasy -[7.0.0.Alpha3]({{ site.baseurl }}/downloads#700alpha3). +Today we'd like to announce the release of RESTEasy [6.2.10.Final](/downloads#6210final) and RESTEasy +[7.0.0.Alpha3](/downloads#700alpha3). Both the 7.0.0.Alpha3 and 6.2.10.Final releases are bug fix and component upgrade releases. diff --git a/_posts/2024-11-11-releases.md b/content/posts/2024-11-11-releases.md similarity index 96% rename from _posts/2024-11-11-releases.md rename to content/posts/2024-11-11-releases.md index 71982b8..b24a99a 100644 --- a/_posts/2024-11-11-releases.md +++ b/content/posts/2024-11-11-releases.md @@ -2,12 +2,12 @@ layout: post title: "RESTEasy 6.2.11.Final and 7.0.0.Alpha4 Releases" subtitle: "" -date: Nov 11, 2024 11:11:11 PDT +date: 2024-11-11 11:11:11 author: James R. Perkins --- -Today we'd like to announce the release of RESTEasy [6.2.11.Final]({{ site.baseurl }}/downloads#6211final) and RESTEasy -[7.0.0.Alpha4]({{ site.baseurl }}/downloads#700alpha4). +Today we'd like to announce the release of RESTEasy [6.2.11.Final](/downloads#6211final) and RESTEasy +[7.0.0.Alpha4](/downloads#700alpha4). Both the 7.0.0.Alpha4 and 6.2.11.Final releases have two bug fixes, some component upgrades and two new enhancements. diff --git a/_posts/2024-11-15-resteasy-spring-boot-with-springdoc.md b/content/posts/2024-11-15-resteasy-spring-boot-with-springdoc.md similarity index 99% rename from _posts/2024-11-15-resteasy-spring-boot-with-springdoc.md rename to content/posts/2024-11-15-resteasy-spring-boot-with-springdoc.md index a626d65..707b8af 100644 --- a/_posts/2024-11-15-resteasy-spring-boot-with-springdoc.md +++ b/content/posts/2024-11-15-resteasy-spring-boot-with-springdoc.md @@ -54,5 +54,3 @@ Above are what I have learned during the working process of this task, and you c [^openapi_spec]: [OAI/OpenAPI-Specification: The OpenAPI Specification Repository](https://github.com/OAI/OpenAPI-Specification) [^swagger-maven-plugin]: [https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-maven-plugin](https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-maven-plugin) [^spring-boot]: [spring-projects/spring-boot: Spring Boot helps you to create Spring-powered, production-grade applications and services with absolute minimum fuss.](https://github.com/spring-projects/spring-boot) - - diff --git a/_posts/2025-02-14-resteasy-grpc-collections.md b/content/posts/2025-02-14-resteasy-grpc-collections.md similarity index 100% rename from _posts/2025-02-14-resteasy-grpc-collections.md rename to content/posts/2025-02-14-resteasy-grpc-collections.md diff --git a/_posts/2025-02-19-resteasy-to-foundation.md b/content/posts/2025-02-19-resteasy-to-foundation.md similarity index 98% rename from _posts/2025-02-19-resteasy-to-foundation.md rename to content/posts/2025-02-19-resteasy-to-foundation.md index adad8aa..3986d31 100644 --- a/_posts/2025-02-19-resteasy-to-foundation.md +++ b/content/posts/2025-02-19-resteasy-to-foundation.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy in a Foundation" subtitle: "" -date: Feb 19, 2025 11:11:11 PDT +date: 2025-02-19 11:11:11 author: James R. Perkins --- diff --git a/_posts/2025-03-10-releases.md b/content/posts/2025-03-10-releases.md similarity index 96% rename from _posts/2025-03-10-releases.md rename to content/posts/2025-03-10-releases.md index 1983bdc..1907918 100644 --- a/_posts/2025-03-10-releases.md +++ b/content/posts/2025-03-10-releases.md @@ -2,12 +2,12 @@ layout: post title: "RESTEasy 6.2.12.Final and 7.0.0.Beta1 Releases" subtitle: "" -date: Mar 10, 2025 11:11:11 PDT +date: 2025-03-10 11:11:11 author: James R. Perkins --- -Today we'd like to announce the release of RESTEasy [6.2.12.Final]({{ site.baseurl }}/downloads#6212final) and RESTEasy -[7.0.0.Beta1]({{ site.baseurl }}/downloads#700beta1). +Today we'd like to announce the release of RESTEasy [6.2.12.Final](/downloads#6212final) and RESTEasy +[7.0.0.Beta1](/downloads#700beta1). ## 7.0.0.Beta1 diff --git a/_posts/2025-03-19-red-hat-ibm.md b/content/posts/2025-03-19-red-hat-ibm.md similarity index 93% rename from _posts/2025-03-19-red-hat-ibm.md rename to content/posts/2025-03-19-red-hat-ibm.md index 8c9981d..411f677 100644 --- a/_posts/2025-03-19-red-hat-ibm.md +++ b/content/posts/2025-03-19-red-hat-ibm.md @@ -2,7 +2,7 @@ layout: post title: "RESTEasy and Red Hat's Middleware Strategy" subtitle: "" -date: Mar 19, 2025 11:11:11 PDT +date: 2025-03-19 11:11:11 author: James R. Perkins --- @@ -12,7 +12,7 @@ Red Hat announced a change in its middleware strategy last month and I wanted to The Red Hat announcement can be found on the Red Hat blog: -[Evolving our middleware strategy](https://www.redhat.com/en/blog/evolving-our-middleware-strategy){:target="_blank"} +[Evolving our middleware strategy](https://www.redhat.com/en/blog/evolving-our-middleware-strategy) Some key points there are: @@ -30,4 +30,4 @@ I’d like to say I’m personally a little sad to leave Red Hat. It has been a As always, feel free to reach out to us if you have further questions. -James R. Perkins \ No newline at end of file +James R. Perkins diff --git a/content/rss.xml b/content/rss.xml new file mode 100644 index 0000000..3198722 --- /dev/null +++ b/content/rss.xml @@ -0,0 +1,5 @@ +--- +aliases: [feed.xml] +--- + +{#include fm/rss.html} diff --git a/content/sitemap.xml b/content/sitemap.xml new file mode 100644 index 0000000..69c6523 --- /dev/null +++ b/content/sitemap.xml @@ -0,0 +1 @@ +{#include fm/sitemap.xml} diff --git a/_data/grpc/releases.yaml b/data/grpcreleases.yaml similarity index 100% rename from _data/grpc/releases.yaml rename to data/grpcreleases.yaml diff --git a/_data/releases.yaml b/data/releases.yaml similarity index 100% rename from _data/releases.yaml rename to data/releases.yaml diff --git a/docs.html b/docs.html deleted file mode 100644 index 13e9ac6..0000000 --- a/docs.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: default -title: Documentation -selflink: docs -permalink: /docs/ ---- -

RESTEasy Documentation (Latest)

- - -
- {% for release in site.data.releases %} - {% if release.supported %} - {% assign detail = release.detail[0] %} -
-
-

RESTEasy {{ detail.version }} ({{ detail.date }})

- {% if detail.jakarta_rest_spec %} - - {% endif %} -
    - {% if detail.documentation.link %} -
  • Documentation
  • - {% endif %} - {% if detail.documentation.java_doc %} -
  • JavaDoc
  • - {% endif %} - {% if detail.download_link %} -
  • Download
  • - {% endif %} - {% if detail.release_notes %} -
  • Release Notes
  • - {% endif %} -
-
- -
- {% endif %} - {% endfor %} - {% for release in site.data.grpc.releases %} - {% if release.supported %} - {% assign detail = release.detail[0] %} -
-
-

RESTEasy gRPC {{ detail.version }} ({{ detail.date }})

- -
-
- {% endif %} - {% endfor %} -
diff --git a/feed.xml b/feed.xml deleted file mode 100644 index 397e747..0000000 --- a/feed.xml +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: null ---- - - - - {{ site.title | xml_escape }} - {{ site.description | xml_escape }} - {{ site.url }}/ - - {{ site.time | date_to_rfc822 }} - {{ site.time | date_to_rfc822 }} - Jekyll v{{ jekyll.version }} - {% for post in site.posts limit:10 %} - - {{ post.title | xml_escape }} - {{ post.description | xml_escape }} - {{ post.date | date_to_rfc822 }} - {{ post.url | prepend: site.url }} - {{ post.url | prepend: site.url }} - {% for tag in post.tags %} - {{ tag | xml_escape }} - {% endfor %} - {% for cat in post.categories %} - {{ cat | xml_escape }} - {% endfor %} - - {% endfor %} - - diff --git a/jbang/fixdate.java b/jbang/fixdate.java new file mode 100755 index 0000000..1da4d0e --- /dev/null +++ b/jbang/fixdate.java @@ -0,0 +1,99 @@ +///usr/bin/env jbang "$0" "$@" ; exit $? +//JAVA 17 +//DEPS info.picocli:picocli:4.6.3 + + +import picocli.CommandLine; +import picocli.CommandLine.Command; +import picocli.CommandLine.Parameters; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.concurrent.Callable; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +@Command(name = "fixdate", mixinStandardHelpOptions = true, version = "fixdate 0.1", + description = "fixdate made with jbang") +class fixdate implements Callable { + + @Parameters(index = "0", description = "The greeting to print", defaultValue = "World!") + private String greeting; + + public static void main(String... args) { + int exitCode = new CommandLine(new fixdate()).execute(args); + System.exit(exitCode); + } + + @Override + public Integer call() throws Exception { // your business logic goes here... + try { + Files.walk(Paths.get("../content/posts")) + .filter(Files::isRegularFile) +// .filter(Files::)// Filter to process only regular files + .forEach(this::fixDate); // Print the path of each file + } catch (IOException e) { + e.printStackTrace(); + } + return 0; + } + + private void fixDate(Path path) { + Pattern pattern = Pattern.compile("date:\\s+([a-zA-Z].*)"); + + try { + String contents = Files.readString(path); +// blargh(contents); + Matcher matcher = pattern.matcher(contents); + if (matcher.find()) { + String dateLine = matcher.group(1); + System.out.println(dateLine); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public void blargh(String args) { + // The pattern to match strings like "date: 2018-05-29 09:13:19". + // Let's break down the regex: + // "date:" - Matches the literal string "date:". + // "\\s+" - Matches one or more whitespace characters. + // "([A-Z][a-z]+)" - Matches a month name. The parentheses create a capturing group. + // [A-Z] for the first capital letter, [a-z]+ for the rest. + // "\\s+" - Matches one or more whitespace. + // "(\\d{1,2})" - Matches the day (1 or 2 digits). Capturing group. + // "," - Matches the literal comma. + // "\\s+" - Matches one or more whitespace. + // "(\\d{4})" - Matches the year (exactly 4 digits). Capturing group. + // "\\s+" - Matches one or more whitespace. + // "(\\d{1,2}:\\d{2}:\\d{2})" - Matches the time in HH:mm:ss format. Capturing group. + // "\\s+" - Matches one or more whitespace. + // "(AM|PM)" - Matches either "AM" or "PM". Capturing group. + String regex = "date:\\s+([A-Z][a-z]+)\\s+(\\d{1,2}),\\s+(\\d{4})\\s+(\\d{1,2}:\\d{2}:\\d{2})\\s+(|PM)"; + + // Create a Pattern object from the regex string. + Pattern pattern = Pattern.compile(regex); + + // Create a Matcher object to find the pattern in the text. + Matcher matcher = pattern.matcher(args); + + // Use matcher.find() to search for the pattern. + if (matcher.find()) { + // If a match is found, print the entire matched string. + System.out.println("Match found!"); + System.out.println("Full matched string: " + matcher.group(0)); + + // You can also access the capturing groups to get specific parts of the date. + System.out.println("Month: " + matcher.group(1)); + System.out.println("Day: " + matcher.group(2)); + System.out.println("Year: " + matcher.group(3)); + System.out.println("Time: " + matcher.group(4)); + System.out.println("AM/PM: " + matcher.group(5)); + } else { + System.out.println("No match found."); + } + } +} diff --git a/jbang/out/production/jbang/fixdate.class b/jbang/out/production/jbang/fixdate.class new file mode 100644 index 0000000000000000000000000000000000000000..ecaeb40a410203b15028555519e583e678514afb GIT binary patch literal 4815 zcmcInX?PRY6+L6w9$5^rBf?@xKu|+0V_RS-0SnR^1I5KQ4t7m3OEZ?n_F!p78I6od zLer*O=o*?XN%x(!OAj1zI)F* z_q;bxJbn2w0K4$72&xcLQLUi{wF(+e>Qj0mqg&&NgQF*nl&he2r)in)%?d)z@nIEV z1xs>f%1&j>M7N#I>Q=hfvzLMfGTsxxby%umnTF+9Q5NXn>AY)X6;vD3CgZJc?uieF zv65rj+Y>3Mc9PRDmpZ5!Bz#!WpWFBlS72kH5>&y{HW!i3Lb+K&W}&QHVrpnJKgE2 zl#yeE&CR_&<;pUfbKGrP`9jukWTc%MlGrI&YCC)N)PzVd0LMZjL3i@rBLw--b8zpp zm{+dUE<9U9m#CTg94YD!x_WAI$k9_|e>e81*sEb5o}=K}67ze=#c=_HI;Cd{#=$Yc z_8vcHS#=mU^#9c=3jiiSIc%Ft~9A*?* z-Azr1oVNs{=$_D>LF2Z9VWo_s3&{yDmOjsjo{nHd#Ze8%aJ)jY{x~vr%(T){qDF+x z3pCscT|v#bV;6Elf67qyKj6!ySd|K-9fonbBt*I=H2*xp?!qjjQth_ls z1jaB?$$|`lFB3a|DnTVm)XEYU4izld%o+hkWnc@rWVkDWPz_Bu_9=ZdL!2mU1hT(G z3&9D&jpG~Rf+ok(cWiF$I1_L6U$&kJHg~eS+-REtZExYUY^im5Q} zV(s+XG06~b>UObnyja8CcnQ}urDrk%&PoNM;$_6CoR8dxCQCy43Jv$*tb)a6{*W6RqrrjjZ+j@Vba8KYPn1>teWFkEg{3Ze^P zP|)bFxX^nVbXk_|>OxD1WvsWtmfAF+J9^e&HRqG0G6`;QL6l7j7Nw1R$}y!95ul+7 zBUYR|=GrmIM6PMt7}EBI>_oKd0u&=9%jGpjMHREg`JTwiCx-@K%vGdjHFa`0flACi>0Ra z={Y}?$Xu~-C;vdP5GC2>dRU0u5%y3x$=!-89cP4LQ9>erK5{X|34sAO26lsT9b!&7 ziXA1{8&b|4QT#>KUFd`K5`xTpYDY=JaeAqd-s!E3+TMXndu%F##0o5K8nDEeET`;bdP>oKL3&&J!0sNeEBtBhPY$Pm*3K+t1mIo$2Tf% zk7XH7cSg_W4NB7=6s*3wp0m74;;!P)3RYDz@GFWF`%fzVreOVo)u_Z(75`uuS0Bn$ zJz^t922?@8EBUX&tMMA%U&|_8!TamDgWsFSIlTTTlsxXk8}fJ~cW{VLM)tpnPYK=? z(b94W%0)g@;my2?Zt#?KKd+iM01x0Td^?M`;%#gZ#zQYaEOJuBiA!9Fp=eY}eqI--rC zM?s%A@b-*ZtiOznz#~Xhq2)53DIRxJu@1t$8)xvW&@6UekWsHkGe4F?GN;ut^|e@v zb%d=6>v1D{*YlHY1HYb{=VFR8t9Ro)(!Rsb`n`-nMHLT|yQ=X%zErdO{S1wz$0rf$ zQ=F!j_wCXBvv_Xb##s#Xx3oSuOM@z z?GmiVFVasfS{O<(;1)#aua&I{EW&0)(Lo5eF#N3?x1A%mp`9OAH(`eiem_H8hcG@! z7SzyU4L-!D5baj*O#flV+)lQL)Wl+J_fr#358)$n_6~d$A7fS`-Ngv~8!ajh>}Jw+ z?7o0WFIA + + 4.0.0 + org.resteasy + resteast-dev-site + 1.0.0-SNAPSHOT + + + 17 + UTF-8 + UTF-8 + + quarkus-bom + io.quarkus.platform + true + + 3.14.0 + 1.9.0 + 3.25.0 + 3.5.3 + + + + + + ${quarkus.platform.group-id} + ${quarkus.platform.artifact-id} + ${version.quarkus.platform} + pom + import + + + + + + + io.quarkiverse.roq + quarkus-roq + ${version.quarkus-roq} + + + io.quarkiverse.roq + quarkus-roq-plugin-markdown + ${version.quarkus-roq} + + + io.quarkiverse.roq + quarkus-roq-plugin-aliases + ${version.quarkus-roq} + + + io.quarkiverse.roq + quarkus-roq-plugin-tagging + ${version.quarkus-roq} + + + + io.quarkus + quarkus-arc + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + + io.quarkiverse.roq + quarkus-roq-plugin-sitemap + ${version.quarkus-roq} + + + io.quarkus + quarkus-junit5 + test + + + io.quarkiverse.roq + quarkus-roq-testing + ${version.quarkus-roq} + test + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.6.1 + + + enforce-java + + enforce + + + + + [${maven.compiler.release},) + + + [3.6.3,) + + + + + + + + ${quarkus.platform.group-id} + quarkus-maven-plugin + ${version.quarkus.platform} + true + + + + build + generate-code + generate-code-tests + native-image-agent + + + + + + maven-compiler-plugin + ${version.compiler-plugin} + + true + + + + maven-surefire-plugin + ${version.surefire-plugin} + + + org.jboss.logmanager.LogManager + ${maven.home} + + + + + maven-failsafe-plugin + ${version.surefire-plugin} + + + + integration-test + verify + + + + + + ${project.build.directory}/${project.build.finalName}-runner + org.jboss.logmanager.LogManager + ${maven.home} + + + + + + diff --git a/CNAME b/public/CNAME similarity index 100% rename from CNAME rename to public/CNAME diff --git a/css/background.png b/public/css/background.png similarity index 100% rename from css/background.png rename to public/css/background.png diff --git a/css/bg.png b/public/css/bg.png similarity index 100% rename from css/bg.png rename to public/css/bg.png diff --git a/css/bootstrap.min.css b/public/css/bootstrap.min.css similarity index 91% rename from css/bootstrap.min.css rename to public/css/bootstrap.min.css index e1d3e83..5404eb2 100755 --- a/css/bootstrap.min.css +++ b/public/css/bootstrap.min.css @@ -4,4 +4,4 @@ * Copyright 2012-2014 Thomas Park * Licensed under MIT * Based on Bootstrap -*//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#{{ site.color.secondary }};background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#{{ site.color.primary }};text-decoration:none}a:hover,a:focus{color:#{{ site.color.primary }};text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #ecf0f1;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;width:100% \9;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #ecf0f1}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#b4bcc2}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}cite{font-style:normal}mark,.mark{background-color:#f39c12;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#b4bcc2}.text-primary{color:#{{ site.color.secondary }}}a.text-primary:hover{color:#1a242f}.text-success{color:#ffffff}a.text-success:hover{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover{color:#e6e6e6}.bg-primary{color:#fff;background-color:#{{ site.color.secondary }}}a.bg-primary:hover{background-color:#1a242f}.bg-success{background-color:#{{ site.color.primary }}}a.bg-success:hover{background-color:#128f76}.bg-info{background-color:#3498db}a.bg-info:hover{background-color:#217dbb}.bg-warning{background-color:#f39c12}a.bg-warning:hover{background-color:#c87f0a}.bg-danger{background-color:#e74c3c}a.bg-danger:hover{background-color:#d62c1a}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid transparent}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #b4bcc2}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #ecf0f1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#b4bcc2}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #ecf0f1;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#7b8a8b;background-color:#ecf0f1;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ecf0f1}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ecf0f1}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ecf0f1}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ecf0f1}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ecf0f1}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#ecf0f1}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#ecf0f1}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#dde4e6}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#{{ site.color.primary }}}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#15a589}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#3498db}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#258cd1}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#f39c12}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#e08e0b}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#e74c3c}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e43725}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ecf0f1;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#{{ site.color.secondary }};border:0;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#{{ site.color.secondary }}}.form-control{display:block;width:100%;height:43px;padding:10px 15px;font-size:15px;line-height:1.42857143;color:#{{ site.color.secondary }};background-color:#ffffff;background-image:none;border:1px solid #dce4ec;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#{{ site.color.secondary }};outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(44,62,80,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(44,62,80,0.6)}.form-control::-moz-placeholder{color:#acb6c0;opacity:1}.form-control:-ms-input-placeholder{color:#acb6c0}.form-control::-webkit-input-placeholder{color:#acb6c0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#ecf0f1;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:43px;line-height:1.42857143 \0}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm{line-height:33px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg{line-height:64px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:21px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:33px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-sm{height:33px;line-height:33px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:64px;padding:18px 27px;font-size:19px;line-height:1.33;border-radius:6px}select.input-lg{height:64px;line-height:64px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:53.75px}.form-control-feedback{position:absolute;top:26px;right:0;z-index:2;display:block;width:43px;height:43px;line-height:43px;text-align:center}.input-lg+.form-control-feedback{width:64px;height:64px;line-height:64px}.input-sm+.form-control-feedback{width:33px;height:33px;line-height:33px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#{{ site.color.primary }}}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#f39c12}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#e74c3c}.has-error .form-control-feedback{color:#ffffff}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#597ea2}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:24.94px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:7px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 15px;font-size:15px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#ffffff;background-color:#95a5a6;border-color:#95a5a6}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#798d8f;border-color:#74898a}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#95a5a6;border-color:#95a5a6}.btn-default .badge{color:#95a5a6;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#{{ site.color.secondary }};border-color:#{{ site.color.secondary }}}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1a242f;border-color:#161f29}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#{{ site.color.secondary }};border-color:#{{ site.color.secondary }}}.btn-primary .badge{color:#{{ site.color.secondary }};background-color:#ffffff}.btn-success{color:#ffffff;background-color:#{{ site.color.primary }};border-color:#{{ site.color.primary }}}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#128f76;border-color:#11866f}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#{{ site.color.primary }};border-color:#{{ site.color.primary }}}.btn-success .badge{color:#{{ site.color.primary }};background-color:#ffffff}.btn-info{color:#ffffff;background-color:#3498db;border-color:#3498db}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#217dbb;border-color:#2077b2}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#3498db;border-color:#3498db}.btn-info .badge{color:#3498db;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#c87f0a;border-color:#be780a}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f39c12;border-color:#f39c12}.btn-warning .badge{color:#f39c12;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#d62c1a;border-color:#cd2a19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#e74c3c;border-color:#e74c3c}.btn-danger .badge{color:#e74c3c;background-color:#ffffff}.btn-link{color:#{{ site.color.primary }};font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#{{ site.color.primary }};text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#b4bcc2;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 27px;font-size:19px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#7b8a8b;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#{{ site.color.secondary }}}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#{{ site.color.secondary }}}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#b4bcc2}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#b4bcc2;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{position:absolute;z-index:-1;opacity:0;filter:alpha(opacity=0)}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:64px;padding:18px 27px;font-size:19px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:64px;line-height:64px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:33px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:33px;line-height:33px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 15px;font-size:15px;font-weight:normal;line-height:1;color:#{{ site.color.secondary }};text-align:center;background-color:#ecf0f1;border:1px solid #dce4ec;border-radius:4px}.input-group-addon.input-sm{padding:6px 9px;font-size:13px;border-radius:3px}.input-group-addon.input-lg{padding:18px 27px;font-size:19px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#ecf0f1}.nav>li.disabled>a{color:#b4bcc2}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#b4bcc2;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#ecf0f1;border-color:#{{ site.color.primary }}}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ecf0f1}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#ecf0f1 #ecf0f1 #ecf0f1}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#{{ site.color.secondary }};background-color:#ffffff;border:1px solid #ecf0f1;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ecf0f1}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ecf0f1;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#{{ site.color.secondary }}}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ecf0f1}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ecf0f1;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:19.5px 15px;font-size:19px;line-height:21px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:9.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:19.5px;padding-bottom:19.5px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8.5px;margin-bottom:8.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8.5px;margin-bottom:8.5px}.navbar-btn.btn-sm{margin-top:13.5px;margin-bottom:13.5px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:19.5px;margin-bottom:19.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#{{ site.color.secondary }};border-color:transparent}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#{{ site.color.primary }};background-color:transparent}.navbar-default .navbar-text{color:#777777}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#{{ site.color.primary }};background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#1a242f}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#1a242f}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#1a242f}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#1a242f;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#{{ site.color.primary }};background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#1a242f}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#{{ site.color.primary }}}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#{{ site.color.primary }}}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#{{ site.color.primary }};border-color:transparent}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#{{ site.color.secondary }};background-color:transparent}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#{{ site.color.secondary }};background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#15a589}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#128f76}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#128f76}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#149c82}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#15a589;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#{{ site.color.secondary }};background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#15a589}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#{{ site.color.secondary }}}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#{{ site.color.secondary }}}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#ecf0f1;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#95a5a6}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 15px;line-height:1.42857143;text-decoration:none;color:#ffffff;background-color:#{{ site.color.primary }};border:1px solid transparent;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#ffffff;background-color:#0f7864;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ffffff;background-color:#0f7864;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#ecf0f1;background-color:#3be6c4;border-color:transparent;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 27px;font-size:19px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:6px 9px;font-size:13px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#{{ site.color.primary }};border:1px solid transparent;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#0f7864}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#ffffff;background-color:#{{ site.color.primary }};cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#95a5a6}.label-default[href]:hover,.label-default[href]:focus{background-color:#798d8f}.label-primary{background-color:#{{ site.color.secondary }}}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1a242f}.label-success{background-color:#{{ site.color.primary }}}.label-success[href]:hover,.label-success[href]:focus{background-color:#128f76}.label-info{background-color:#3498db}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb}.label-warning{background-color:#f39c12}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a}.label-danger{background-color:#e74c3c}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#{{ site.color.secondary }};border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#{{ site.color.secondary }};background-color:#ffffff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#ecf0f1}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#cfd9db}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:67.5px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #ecf0f1;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#{{ site.color.primary }}}.thumbnail .caption{padding:9px;color:#{{ site.color.secondary }}}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#{{ site.color.primary }};border-color:#{{ site.color.primary }};color:#ffffff}.alert-success hr{border-top-color:#15a589}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#3498db;border-color:#3498db;color:#ffffff}.alert-info hr{border-top-color:#258cd1}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f39c12;border-color:#f39c12;color:#ffffff}.alert-warning hr{border-top-color:#e08e0b}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#ffffff}.alert-danger hr{border-top-color:#e43725}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#ecf0f1;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#{{ site.color.secondary }};-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{color:#b4bcc2;min-width:30px;background-color:transparent;background-image:none;box-shadow:none}.progress-bar-success{background-color:#{{ site.color.primary }}}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#3498db}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#e74c3c}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #ecf0f1}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555555}a.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555555;background-color:#ecf0f1}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#ecf0f1;color:#b4bcc2}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#b4bcc2}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#{{ site.color.secondary }};border-color:#{{ site.color.secondary }}}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#8aa4be}.list-group-item-success{color:#ffffff;background-color:#{{ site.color.primary }}}a.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#ffffff;background-color:#15a589}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#3498db}a.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#ffffff;background-color:#258cd1}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#f39c12}a.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#ffffff;background-color:#e08e0b}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#e74c3c}a.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#ffffff;background-color:#e43725}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#ecf0f1;border-top:1px solid #ecf0f1;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ecf0f1}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ecf0f1}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ecf0f1}.panel-default{border-color:#ecf0f1}.panel-default>.panel-heading{color:#{{ site.color.secondary }};background-color:#ecf0f1;border-color:#ecf0f1}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ecf0f1}.panel-default>.panel-heading .badge{color:#ecf0f1;background-color:#{{ site.color.secondary }}}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ecf0f1}.panel-primary{border-color:#{{ site.color.secondary }}}.panel-primary>.panel-heading{color:#ffffff;background-color:#{{ site.color.secondary }};border-color:#{{ site.color.secondary }}}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#{{ site.color.secondary }}}.panel-primary>.panel-heading .badge{color:#{{ site.color.secondary }};background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#{{ site.color.secondary }}}.panel-success{border-color:#{{ site.color.primary }}}.panel-success>.panel-heading{color:#ffffff;background-color:#{{ site.color.primary }};border-color:#{{ site.color.primary }}}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#{{ site.color.primary }}}.panel-success>.panel-heading .badge{color:#{{ site.color.primary }};background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#{{ site.color.primary }}}.panel-info{border-color:#3498db}.panel-info>.panel-heading{color:#ffffff;background-color:#3498db;border-color:#3498db}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3498db}.panel-info>.panel-heading .badge{color:#3498db;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3498db}.panel-warning{border-color:#f39c12}.panel-warning>.panel-heading{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f39c12}.panel-warning>.panel-heading .badge{color:#f39c12;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f39c12}.panel-danger{border-color:#e74c3c}.panel-danger>.panel-heading{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e74c3c}.panel-danger>.panel-heading .badge{color:#e74c3c;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e74c3c}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#ecf0f1;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#000000;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate3d(0, -25%, 0);transform:translate3d(0, -25%, 0);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-size:13px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:rgba(0,0,0,0.9);border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:rgba(0,0,0,0.9)}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:rgba(0,0,0,0.9)}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;background-color:#ffffff;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border-width:0}.navbar-default .badge{background-color:#fff;color:#{{ site.color.secondary }}}.navbar-inverse .badge{background-color:#fff;color:#{{ site.color.primary }}}.navbar-brand{padding:18.5px 15px 20.5px}.btn:active{-webkit-box-shadow:none;box-shadow:none}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.text-primary,.text-primary:hover{color:#{{ site.color.secondary }}}.text-success,.text-success:hover{color:#{{ site.color.primary }}}.text-danger,.text-danger:hover{color:#e74c3c}.text-warning,.text-warning:hover{color:#f39c12}.text-info,.text-info:hover{color:#3498db}table a,.table a{text-decoration:underline}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success a,.table .success a,table .warning a,.table .warning a,table .danger a,.table .danger a,table .info a,.table .info a{color:#fff}table>thead>tr>th,.table>thead>tr>th,table>tbody>tr>th,.table>tbody>tr>th,table>tfoot>tr>th,.table>tfoot>tr>th,table>thead>tr>td,.table>thead>tr>td,table>tbody>tr>td,.table>tbody>tr>td,table>tfoot>tr>td,.table>tfoot>tr>td{border:none}table-bordered>thead>tr>th,.table-bordered>thead>tr>th,table-bordered>tbody>tr>th,.table-bordered>tbody>tr>th,table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>th,table-bordered>thead>tr>td,.table-bordered>thead>tr>td,table-bordered>tbody>tr>td,.table-bordered>tbody>tr>td,table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ecf0f1}.form-control,input{border-width:2px;-webkit-box-shadow:none;box-shadow:none}.form-control:focus,input:focus{-webkit-box-shadow:none;box-shadow:none}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning .form-control-feedback{color:#f39c12}.has-warning .form-control,.has-warning .form-control:focus{border:2px solid #f39c12}.has-warning .input-group-addon{border-color:#f39c12}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error .form-control-feedback{color:#e74c3c}.has-error .form-control,.has-error .form-control:focus{border:2px solid #e74c3c}.has-error .input-group-addon{border-color:#e74c3c}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success .form-control-feedback{color:#{{ site.color.primary }}}.has-success .form-control,.has-success .form-control:focus{border:2px solid #{{ site.color.primary }}}.has-success .input-group-addon{border-color:#{{ site.color.primary }}}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:transparent}.pager a,.pager a:hover{color:#fff}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{background-color:#3be6c4}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert .close{text-decoration:none}.close{color:#fff;text-decoration:none;opacity:0.4}.close:hover,.close:focus{color:#fff;opacity:1}.progress{height:10px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:10px;line-height:10px}.well{-webkit-box-shadow:none;box-shadow:none} \ No newline at end of file +*//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.table td,.table th{background-color:#fff !important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#{{ site.color.secondary }};background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#{{ site.color.primary }};text-decoration:none}a:hover,a:focus{color:#{{ site.color.primary }};text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #ecf0f1;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;width:100% \9;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #ecf0f1}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#b4bcc2}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}cite{font-style:normal}mark,.mark{background-color:#f39c12;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#b4bcc2}.text-primary{color:#{{ site.color.secondary }}}a.text-primary:hover{color:#1a242f}.text-success{color:#ffffff}a.text-success:hover{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover{color:#e6e6e6}.bg-primary{color:#fff;background-color:#{{ site.color.secondary }}}a.bg-primary:hover{background-color:#1a242f}.bg-success{background-color:#{{ site.color.primary }}}a.bg-success:hover{background-color:#128f76}.bg-info{background-color:#3498db}a.bg-info:hover{background-color:#217dbb}.bg-warning{background-color:#f39c12}a.bg-warning:hover{background-color:#c87f0a}.bg-danger{background-color:#e74c3c}a.bg-danger:hover{background-color:#d62c1a}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid transparent}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #b4bcc2}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #ecf0f1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#b4bcc2}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #ecf0f1;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#7b8a8b;background-color:#ecf0f1;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ecf0f1}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ecf0f1}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ecf0f1}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ecf0f1}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ecf0f1}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#ecf0f1}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#ecf0f1}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#dde4e6}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#{{ site.color.primary }}}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#15a589}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#3498db}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#258cd1}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#f39c12}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#e08e0b}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#e74c3c}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e43725}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ecf0f1;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#{{ site.color.secondary }};border:0;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#{{ site.color.secondary }}}.form-control{display:block;width:100%;height:43px;padding:10px 15px;font-size:15px;line-height:1.42857143;color:#{{ site.color.secondary }};background-color:#ffffff;background-image:none;border:1px solid #dce4ec;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#{{ site.color.secondary }};outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(44,62,80,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(44,62,80,0.6)}.form-control::-moz-placeholder{color:#acb6c0;opacity:1}.form-control:-ms-input-placeholder{color:#acb6c0}.form-control::-webkit-input-placeholder{color:#acb6c0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#ecf0f1;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:43px;line-height:1.42857143 \0}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm{line-height:33px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg{line-height:64px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:21px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:33px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-sm{height:33px;line-height:33px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:64px;padding:18px 27px;font-size:19px;line-height:1.33;border-radius:6px}select.input-lg{height:64px;line-height:64px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:53.75px}.form-control-feedback{position:absolute;top:26px;right:0;z-index:2;display:block;width:43px;height:43px;line-height:43px;text-align:center}.input-lg+.form-control-feedback{width:64px;height:64px;line-height:64px}.input-sm+.form-control-feedback{width:33px;height:33px;line-height:33px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#{{ site.color.primary }}}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#f39c12}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#e74c3c}.has-error .form-control-feedback{color:#ffffff}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#597ea2}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:24.94px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:7px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 15px;font-size:15px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#ffffff;background-color:#95a5a6;border-color:#95a5a6}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#798d8f;border-color:#74898a}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#95a5a6;border-color:#95a5a6}.btn-default .badge{color:#95a5a6;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#{{ site.color.secondary }};border-color:#{{ site.color.secondary }}}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1a242f;border-color:#161f29}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#{{ site.color.secondary }};border-color:#{{ site.color.secondary }}}.btn-primary .badge{color:#{{ site.color.secondary }};background-color:#ffffff}.btn-success{color:#ffffff;background-color:#{{ site.color.primary }};border-color:#{{ site.color.primary }}}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#128f76;border-color:#11866f}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#{{ site.color.primary }};border-color:#{{ site.color.primary }}}.btn-success .badge{color:#{{ site.color.primary }};background-color:#ffffff}.btn-info{color:#ffffff;background-color:#3498db;border-color:#3498db}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#217dbb;border-color:#2077b2}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#3498db;border-color:#3498db}.btn-info .badge{color:#3498db;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#c87f0a;border-color:#be780a}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f39c12;border-color:#f39c12}.btn-warning .badge{color:#f39c12;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#d62c1a;border-color:#cd2a19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#e74c3c;border-color:#e74c3c}.btn-danger .badge{color:#e74c3c;background-color:#ffffff}.btn-link{color:#{{ site.color.primary }};font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#{{ site.color.primary }};text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#b4bcc2;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 27px;font-size:19px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#7b8a8b;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#{{ site.color.secondary }}}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#{{ site.color.secondary }}}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#b4bcc2}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#b4bcc2;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{position:absolute;z-index:-1;opacity:0;filter:alpha(opacity=0)}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:64px;padding:18px 27px;font-size:19px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:64px;line-height:64px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:33px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:33px;line-height:33px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 15px;font-size:15px;font-weight:normal;line-height:1;color:#{{ site.color.secondary }};text-align:center;background-color:#ecf0f1;border:1px solid #dce4ec;border-radius:4px}.input-group-addon.input-sm{padding:6px 9px;font-size:13px;border-radius:3px}.input-group-addon.input-lg{padding:18px 27px;font-size:19px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#ecf0f1}.nav>li.disabled>a{color:#b4bcc2}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#b4bcc2;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#ecf0f1;border-color:#{{ site.color.primary }}}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ecf0f1}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#ecf0f1 #ecf0f1 #ecf0f1}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#{{ site.color.secondary }};background-color:#ffffff;border:1px solid #ecf0f1;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ecf0f1}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ecf0f1;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#{{ site.color.secondary }}}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ecf0f1}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ecf0f1;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:19.5px 15px;font-size:19px;line-height:21px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:9.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:19.5px;padding-bottom:19.5px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8.5px;margin-bottom:8.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8.5px;margin-bottom:8.5px}.navbar-btn.btn-sm{margin-top:13.5px;margin-bottom:13.5px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:19.5px;margin-bottom:19.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#{{ site.color.secondary }};border-color:transparent}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#{{ site.color.primary }};background-color:transparent}.navbar-default .navbar-text{color:#777777}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#{{ site.color.primary }};background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#1a242f}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#1a242f}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#1a242f}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#1a242f;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#{{ site.color.primary }};background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#1a242f}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#{{ site.color.primary }}}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#{{ site.color.primary }}}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#{{ site.color.primary }};border-color:transparent}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#{{ site.color.secondary }};background-color:transparent}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#{{ site.color.secondary }};background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#15a589}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#128f76}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#128f76}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#149c82}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#15a589;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#{{ site.color.secondary }};background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#15a589}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#{{ site.color.secondary }}}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#{{ site.color.secondary }}}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#ecf0f1;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#95a5a6}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 15px;line-height:1.42857143;text-decoration:none;color:#ffffff;background-color:#{{ site.color.primary }};border:1px solid transparent;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#ffffff;background-color:#0f7864;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#ffffff;background-color:#0f7864;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#ecf0f1;background-color:#3be6c4;border-color:transparent;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 27px;font-size:19px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:6px 9px;font-size:13px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#{{ site.color.primary }};border:1px solid transparent;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#0f7864}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#ffffff;background-color:#{{ site.color.primary }};cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#95a5a6}.label-default[href]:hover,.label-default[href]:focus{background-color:#798d8f}.label-primary{background-color:#{{ site.color.secondary }}}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1a242f}.label-success{background-color:#{{ site.color.primary }}}.label-success[href]:hover,.label-success[href]:focus{background-color:#128f76}.label-info{background-color:#3498db}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb}.label-warning{background-color:#f39c12}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a}.label-danger{background-color:#e74c3c}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#{{ site.color.secondary }};border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#{{ site.color.secondary }};background-color:#ffffff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#ecf0f1}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#cfd9db}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:67.5px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #ecf0f1;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#{{ site.color.primary }}}.thumbnail .caption{padding:9px;color:#{{ site.color.secondary }}}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#{{ site.color.primary }};border-color:#{{ site.color.primary }};color:#ffffff}.alert-success hr{border-top-color:#15a589}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#3498db;border-color:#3498db;color:#ffffff}.alert-info hr{border-top-color:#258cd1}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f39c12;border-color:#f39c12;color:#ffffff}.alert-warning hr{border-top-color:#e08e0b}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#ffffff}.alert-danger hr{border-top-color:#e43725}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#ecf0f1;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#{{ site.color.secondary }};-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{color:#b4bcc2;min-width:30px;background-color:transparent;background-image:none;box-shadow:none}.progress-bar-success{background-color:#{{ site.color.primary }}}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#3498db}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#e74c3c}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #ecf0f1}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555555}a.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555555;background-color:#ecf0f1}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#ecf0f1;color:#b4bcc2}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#b4bcc2}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#{{ site.color.secondary }};border-color:#{{ site.color.secondary }}}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#8aa4be}.list-group-item-success{color:#ffffff;background-color:#{{ site.color.primary }}}a.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#ffffff;background-color:#15a589}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#3498db}a.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#ffffff;background-color:#258cd1}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#f39c12}a.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#ffffff;background-color:#e08e0b}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#e74c3c}a.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#ffffff;background-color:#e43725}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#ecf0f1;border-top:1px solid #ecf0f1;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ecf0f1}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ecf0f1}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ecf0f1}.panel-default{border-color:#ecf0f1}.panel-default>.panel-heading{color:#{{ site.color.secondary }};background-color:#ecf0f1;border-color:#ecf0f1}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ecf0f1}.panel-default>.panel-heading .badge{color:#ecf0f1;background-color:#{{ site.color.secondary }}}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ecf0f1}.panel-primary{border-color:#{{ site.color.secondary }}}.panel-primary>.panel-heading{color:#ffffff;background-color:#{{ site.color.secondary }};border-color:#{{ site.color.secondary }}}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#{{ site.color.secondary }}}.panel-primary>.panel-heading .badge{color:#{{ site.color.secondary }};background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#{{ site.color.secondary }}}.panel-success{border-color:#{{ site.color.primary }}}.panel-success>.panel-heading{color:#ffffff;background-color:#{{ site.color.primary }};border-color:#{{ site.color.primary }}}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#{{ site.color.primary }}}.panel-success>.panel-heading .badge{color:#{{ site.color.primary }};background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#{{ site.color.primary }}}.panel-info{border-color:#3498db}.panel-info>.panel-heading{color:#ffffff;background-color:#3498db;border-color:#3498db}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3498db}.panel-info>.panel-heading .badge{color:#3498db;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3498db}.panel-warning{border-color:#f39c12}.panel-warning>.panel-heading{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f39c12}.panel-warning>.panel-heading .badge{color:#f39c12;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f39c12}.panel-danger{border-color:#e74c3c}.panel-danger>.panel-heading{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e74c3c}.panel-danger>.panel-heading .badge{color:#e74c3c;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e74c3c}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#ecf0f1;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#000000;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate3d(0, -25%, 0);transform:translate3d(0, -25%, 0);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-size:13px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:rgba(0,0,0,0.9);border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,0.9)}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:rgba(0,0,0,0.9)}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:rgba(0,0,0,0.9)}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,0.9)}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;background-color:#ffffff;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-fily:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border-width:0}.navbar-default .badge{background-color:#fff;color:#{{ site.color.secondary }}}.navbar-inverse .badge{background-color:#fff;color:#{{ site.color.primary }}}.navbar-brand{padding:18.5px 15px 20.5px}.btn:active{-webkit-box-shadow:none;box-shadow:none}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.text-primary,.text-primary:hover{color:#{{ site.color.secondary }}}.text-success,.text-success:hover{color:#{{ site.color.primary }}}.text-danger,.text-danger:hover{color:#e74c3c}.text-warning,.text-warning:hover{color:#f39c12}.text-info,.text-info:hover{color:#3498db}table a,.table a{text-decoration:underline}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success a,.table .success a,table .warning a,.table .warning a,table .danger a,.table .danger a,table .info a,.table .info a{color:#fff}table>thead>tr>th,.table>thead>tr>th,table>tbody>tr>th,.table>tbody>tr>th,table>tfoot>tr>th,.table>tfoot>tr>th,table>thead>tr>td,.table>thead>tr>td,table>tbody>tr>td,.table>tbody>tr>td,table>tfoot>tr>td,.table>tfoot>tr>td{border:none}table-bordered>thead>tr>th,.table-bordered>thead>tr>th,table-bordered>tbody>tr>th,.table-bordered>tbody>tr>th,table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>th,table-bordered>thead>tr>td,.table-bordered>thead>tr>td,table-bordered>tbody>tr>td,.table-bordered>tbody>tr>td,table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ecf0f1}.form-control,input{border-width:2px;-webkit-box-shadow:none;box-shadow:none}.form-control:focus,input:focus{-webkit-box-shadow:none;box-shadow:none}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning .form-control-feedback{color:#f39c12}.has-warning .form-control,.has-warning .form-control:focus{border:2px solid #f39c12}.has-warning .input-group-addon{border-color:#f39c12}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error .form-control-feedback{color:#e74c3c}.has-error .form-control,.has-error .form-control:focus{border:2px solid #e74c3c}.has-error .input-group-addon{border-color:#e74c3c}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success .form-control-feedback{color:#{{ site.color.primary }}}.has-success .form-control,.has-success .form-control:focus{border:2px solid #{{ site.color.primary }}}.has-success .input-group-addon{border-color:#{{ site.color.primary }}}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:transparent}.pager a,.pager a:hover{color:#fff}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{background-color:#3be6c4}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert .close{text-decoration:none}.close{color:#fff;text-decoration:none;opacity:0.4}.close:hover,.close:focus{color:#fff;opacity:1}.progress{height:10px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:10px;line-height:10px}.well{-webkit-box-shadow:none;box-shadow:none} diff --git a/css/clearspace_common.css b/public/css/clearspace_common.css similarity index 100% rename from css/clearspace_common.css rename to public/css/clearspace_common.css diff --git a/css/jbossdeveloper-thin.css b/public/css/jbossdeveloper-thin.css similarity index 100% rename from css/jbossdeveloper-thin.css rename to public/css/jbossdeveloper-thin.css diff --git a/css/jquery-ui.css b/public/css/jquery-ui.css similarity index 100% rename from css/jquery-ui.css rename to public/css/jquery-ui.css diff --git a/css/main.css b/public/css/main.css similarity index 100% rename from css/main.css rename to public/css/main.css diff --git a/css/org_common.css b/public/css/org_common.css similarity index 100% rename from css/org_common.css rename to public/css/org_common.css diff --git a/css/project.css b/public/css/project.css similarity index 100% rename from css/project.css rename to public/css/project.css diff --git a/css/rhbar.css b/public/css/rhbar.css similarity index 100% rename from css/rhbar.css rename to public/css/rhbar.css diff --git a/css/stkdefault-styles.css b/public/css/stkdefault-styles.css similarity index 100% rename from css/stkdefault-styles.css rename to public/css/stkdefault-styles.css diff --git a/css/styles.css b/public/css/styles.css similarity index 100% rename from css/styles.css rename to public/css/styles.css diff --git a/css/wide.css b/public/css/wide.css similarity index 100% rename from css/wide.css rename to public/css/wide.css diff --git a/img/blog/20200522/1.png b/public/img/blog/20200522/1.png similarity index 100% rename from img/blog/20200522/1.png rename to public/img/blog/20200522/1.png diff --git a/img/blog/20200522/2.png b/public/img/blog/20200522/2.png similarity index 100% rename from img/blog/20200522/2.png rename to public/img/blog/20200522/2.png diff --git a/img/blog/20200522/3.png b/public/img/blog/20200522/3.png similarity index 100% rename from img/blog/20200522/3.png rename to public/img/blog/20200522/3.png diff --git a/img/blog/20200530/grafana.png b/public/img/blog/20200530/grafana.png similarity index 100% rename from img/blog/20200530/grafana.png rename to public/img/blog/20200530/grafana.png diff --git a/img/blog/20200530/microprofile.jpeg b/public/img/blog/20200530/microprofile.jpeg similarity index 100% rename from img/blog/20200530/microprofile.jpeg rename to public/img/blog/20200530/microprofile.jpeg diff --git a/img/blog/20200530/prometheus.png b/public/img/blog/20200530/prometheus.png similarity index 100% rename from img/blog/20200530/prometheus.png rename to public/img/blog/20200530/prometheus.png diff --git a/img/blog/Class+Diagram22.png b/public/img/blog/Class+Diagram22.png similarity index 100% rename from img/blog/Class+Diagram22.png rename to public/img/blog/Class+Diagram22.png diff --git a/img/blog/callback-hell.jpg b/public/img/blog/callback-hell.jpg similarity index 100% rename from img/blog/callback-hell.jpg rename to public/img/blog/callback-hell.jpg diff --git a/img/blog/feed-icon.png b/public/img/blog/feed-icon.png similarity index 100% rename from img/blog/feed-icon.png rename to public/img/blog/feed-icon.png diff --git a/img/blog/good-news.jpg b/public/img/blog/good-news.jpg similarity index 100% rename from img/blog/good-news.jpg rename to public/img/blog/good-news.jpg diff --git a/img/books/mainColumnParagraphs/0/imageBinary/restful_java.gif b/public/img/books/mainColumnParagraphs/0/imageBinary/restful_java.gif similarity index 100% rename from img/books/mainColumnParagraphs/0/imageBinary/restful_java.gif rename to public/img/books/mainColumnParagraphs/0/imageBinary/restful_java.gif diff --git a/img/books/mainColumnParagraphs/00/imageBinary/rest.gif b/public/img/books/mainColumnParagraphs/00/imageBinary/rest.gif similarity index 100% rename from img/books/mainColumnParagraphs/00/imageBinary/rest.gif rename to public/img/books/mainColumnParagraphs/00/imageBinary/rest.gif diff --git a/img/books/mainColumnParagraphs/01/imageBinary/cookbook.gif b/public/img/books/mainColumnParagraphs/01/imageBinary/cookbook.gif similarity index 100% rename from img/books/mainColumnParagraphs/01/imageBinary/cookbook.gif rename to public/img/books/mainColumnParagraphs/01/imageBinary/cookbook.gif diff --git a/img/css/bg.png b/public/img/css/bg.png similarity index 100% rename from img/css/bg.png rename to public/img/css/bg.png diff --git a/img/css/jbossdeveloper-thin.css b/public/img/css/jbossdeveloper-thin.css similarity index 100% rename from img/css/jbossdeveloper-thin.css rename to public/img/css/jbossdeveloper-thin.css diff --git a/img/dms/content/common/icons/favicons/resteasy_icon_16x.png b/public/img/dms/content/common/icons/favicons/resteasy_icon_16x.png similarity index 100% rename from img/dms/content/common/icons/favicons/resteasy_icon_16x.png rename to public/img/dms/content/common/icons/favicons/resteasy_icon_16x.png diff --git a/img/logo/resteasy_logo_600x.png b/public/img/logo/resteasy_logo_600x.png similarity index 100% rename from img/logo/resteasy_logo_600x.png rename to public/img/logo/resteasy_logo_600x.png diff --git a/img/orgLayoutBody/favicon/resteasy_icon_16x.png b/public/img/orgLayoutBody/favicon/resteasy_icon_16x.png similarity index 100% rename from img/orgLayoutBody/favicon/resteasy_icon_16x.png rename to public/img/orgLayoutBody/favicon/resteasy_icon_16x.png diff --git a/img/orgLayoutBody/resteasy-banner-1180px.png b/public/img/orgLayoutBody/resteasy-banner-1180px.png similarity index 100% rename from img/orgLayoutBody/resteasy-banner-1180px.png rename to public/img/orgLayoutBody/resteasy-banner-1180px.png diff --git a/img/rhbar/redhatlogo.png b/public/img/rhbar/redhatlogo.png similarity index 100% rename from img/rhbar/redhatlogo.png rename to public/img/rhbar/redhatlogo.png diff --git a/img/rhbar/redhatlogo_reverse.png b/public/img/rhbar/redhatlogo_reverse.png similarity index 100% rename from img/rhbar/redhatlogo_reverse.png rename to public/img/rhbar/redhatlogo_reverse.png diff --git a/img/rhbar/rhd_reverse.png b/public/img/rhbar/rhd_reverse.png similarity index 100% rename from img/rhbar/rhd_reverse.png rename to public/img/rhbar/rhd_reverse.png diff --git a/img/rightColumnParagraphs/0/imageBinary/resteasy_coolstuff_makerfile.png b/public/img/rightColumnParagraphs/0/imageBinary/resteasy_coolstuff_makerfile.png similarity index 100% rename from img/rightColumnParagraphs/0/imageBinary/resteasy_coolstuff_makerfile.png rename to public/img/rightColumnParagraphs/0/imageBinary/resteasy_coolstuff_makerfile.png diff --git a/img/rightColumnParagraphs/0/imageBinary/yklogo.png b/public/img/rightColumnParagraphs/0/imageBinary/yklogo.png similarity index 100% rename from img/rightColumnParagraphs/0/imageBinary/yklogo.png rename to public/img/rightColumnParagraphs/0/imageBinary/yklogo.png diff --git a/img/social/envelope-solid.svg b/public/img/social/envelope-solid.svg similarity index 100% rename from img/social/envelope-solid.svg rename to public/img/social/envelope-solid.svg diff --git a/img/social/facebook.svg b/public/img/social/facebook.svg similarity index 100% rename from img/social/facebook.svg rename to public/img/social/facebook.svg diff --git a/img/social/linkedin.svg b/public/img/social/linkedin.svg similarity index 100% rename from img/social/linkedin.svg rename to public/img/social/linkedin.svg diff --git a/img/social/reddit.svg b/public/img/social/reddit.svg similarity index 100% rename from img/social/reddit.svg rename to public/img/social/reddit.svg diff --git a/img/social/twitter.svg b/public/img/social/twitter.svg similarity index 100% rename from img/social/twitter.svg rename to public/img/social/twitter.svg diff --git a/src/main/java/org/resteasy/site/Extensions.java b/src/main/java/org/resteasy/site/Extensions.java new file mode 100644 index 0000000..db48e52 --- /dev/null +++ b/src/main/java/org/resteasy/site/Extensions.java @@ -0,0 +1,35 @@ +package org.resteasy.site; + +import io.quarkiverse.qute.web.markdown.runtime.MdConverter; +import io.quarkus.arc.Arc; +import io.quarkus.qute.TemplateExtension; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +@TemplateExtension +public class Extensions { + + public static String format(Date date, String format) { + return new SimpleDateFormat(format).format(date); + } + + public static String wordLimit(String text, int limit) { + String[] words = text.split("\\s+"); + if (words.length < limit) { + return text; + } + return String.join(" ", Arrays.copyOfRange(words, 0, limit)) + "..."; + } + + public static String join(List list, String separator) { + return String.join(separator, list.stream().map(Object::toString).toList()); + } + + public static String markdown(String rawText) { + MdConverter converter = Arc.container().beanInstanceSupplier(MdConverter.class).get().get(); + return converter.html(rawText); + } +} diff --git a/src/main/java/org/resteasy/site/model/Documentation.java b/src/main/java/org/resteasy/site/model/Documentation.java new file mode 100644 index 0000000..1a4fa71 --- /dev/null +++ b/src/main/java/org/resteasy/site/model/Documentation.java @@ -0,0 +1,14 @@ +package org.resteasy.site.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public record Documentation( + String examples, + @JsonProperty("single_page") + String singlePage, + String link, + String pdf, + @JsonProperty("java_doc") + String javadoc +) { +} diff --git a/src/main/java/org/resteasy/site/model/GrpcReleases.java b/src/main/java/org/resteasy/site/model/GrpcReleases.java new file mode 100644 index 0000000..6e5b667 --- /dev/null +++ b/src/main/java/org/resteasy/site/model/GrpcReleases.java @@ -0,0 +1,9 @@ +package org.resteasy.site.model; + +import io.quarkiverse.roq.data.runtime.annotations.DataMapping; + +import java.util.List; + +@DataMapping(value = "grpcreleases", parentArray = true) +public record GrpcReleases(List list) { +} diff --git a/src/main/java/org/resteasy/site/model/Release.java b/src/main/java/org/resteasy/site/model/Release.java new file mode 100644 index 0000000..24dd4db --- /dev/null +++ b/src/main/java/org/resteasy/site/model/Release.java @@ -0,0 +1,10 @@ +package org.resteasy.site.model; + +import java.util.List; + +public record Release( + String group, + boolean supported, + List detail +) { +} diff --git a/src/main/java/org/resteasy/site/model/ReleaseDetail.java b/src/main/java/org/resteasy/site/model/ReleaseDetail.java new file mode 100644 index 0000000..43d2ab0 --- /dev/null +++ b/src/main/java/org/resteasy/site/model/ReleaseDetail.java @@ -0,0 +1,21 @@ +package org.resteasy.site.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public record ReleaseDetail( + String version, + String date, + String license, + String source, + String size, + @JsonProperty("release_notes") + String releaseNotes, + @JsonProperty("download_link") + String downloadLink, + @JsonProperty("download_text") + String downloadText, + @JsonProperty("jakarta_rest_spec") + Spec spec, + Documentation documentation +) { +} diff --git a/src/main/java/org/resteasy/site/model/Releases.java b/src/main/java/org/resteasy/site/model/Releases.java new file mode 100644 index 0000000..5470484 --- /dev/null +++ b/src/main/java/org/resteasy/site/model/Releases.java @@ -0,0 +1,11 @@ +package org.resteasy.site.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.quarkiverse.roq.data.runtime.annotations.DataMapping; + +import java.util.List; + +@DataMapping(value = "releases", parentArray = true) +public record Releases(List list) { + +} diff --git a/src/main/java/org/resteasy/site/model/Spec.java b/src/main/java/org/resteasy/site/model/Spec.java new file mode 100644 index 0000000..814a1f9 --- /dev/null +++ b/src/main/java/org/resteasy/site/model/Spec.java @@ -0,0 +1,11 @@ +package org.resteasy.site.model; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public record Spec( + String version, + String link, + @JsonProperty("java_doc") + String javadoc +) { +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..a094ff9 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,3 @@ +site.escaped-pages=posts/*.md,docs/**.adoc + +quarkus.log.category."io.quarkiverse.roq.frontmatter.deployment".level=DEBUG diff --git a/src/test/java/dev/resteasy/site/RoqSiteTest.java b/src/test/java/dev/resteasy/site/RoqSiteTest.java new file mode 100644 index 0000000..348642f --- /dev/null +++ b/src/test/java/dev/resteasy/site/RoqSiteTest.java @@ -0,0 +1,14 @@ +package dev.resteasy.site; + +import io.quarkiverse.roq.testing.RoqAndRoll; +import io.quarkus.test.junit.QuarkusTest; +import org.junit.jupiter.api.Test; + +@QuarkusTest +@RoqAndRoll +public class RoqSiteTest { + @Test + public void testGen() { + // All pages will be generated/validated during test setup + } +} diff --git a/templates/layouts/default.html b/templates/layouts/default.html new file mode 100644 index 0000000..e5a9350 --- /dev/null +++ b/templates/layouts/default.html @@ -0,0 +1,10 @@ + + + {#include partials/head.html /} + + {#include partials/nav.html /} + {#include partials/default.html /} + {#include partials/right.html /} + {#include partials/footer.html /} + + diff --git a/templates/layouts/doc-listing.html b/templates/layouts/doc-listing.html new file mode 100644 index 0000000..72d488d --- /dev/null +++ b/templates/layouts/doc-listing.html @@ -0,0 +1,41 @@ +--- +layout: default +title: "Documentation" +selflink: "docs" +--- + +

RESTEasy Documentation

+ +

The documentation below is a combination of DocBook and Javadoc.  The docbook is a Maven + module in our source tree.  If you download or check out our source code from GitHub, you + will find it under the 'docbook' directory.  Javadocs are generated automatically from the + maven build.

+

In release 3.1.0.Final, most of the classes deprecated in the 3.0.x generation of releases are + deleted or moved to an optional module. For some guidance in upgrading, see Upgrading from RESTEasy + 2 to RESTEasy 3.

+ + + + + + {#for release in cdi:releases.list} + {#for detail in release.detail} + {#if detail.documentation} + {! % capture rowClass %}{% cycle 'oddRow', '' %}{% endcapture % !} + + + + + + + + + {/if} + {/for} + {/for} + +
Version
+

{detail.version}

+
{#if detail.documentation.examples} examples{/if}{#if detail.documentation.singlePage}HTML + (single page){/if}{#if detail.documentation.link}HTML{/if}{#if detail.documentation.pdf}PDF{/if}{#if detail.documentation.javadoc}Javadocs{/if}
diff --git a/templates/layouts/downloads.html b/templates/layouts/downloads.html new file mode 100644 index 0000000..6e47c54 --- /dev/null +++ b/templates/layouts/downloads.html @@ -0,0 +1,44 @@ +--- +layout: default +title: "Downloads" +selflink: "downloads" +--- + +{#for release in cdi:releases.list} +{#if release.detail and release.detail[0].downloadLink} +

RESTEasy {release.group}

+ + + + + + + + + + + + + + {#for detail in release.detail} + {#if detail.downloadLink} + {! % capture rowClass %}{% cycle 'oddRow', '' %}{% endcapture % !} + + + + + + + + + + {/if} + {/for} + +
NameSource CodeSizeRelease dateLicenseRelease notesDownload
{detail.version}{#if detail.source}Source Code{/if}{detail.size}{detail.date}{detail.license} + {#if detail.releaseNotes}Release Notes{/if} + + {#if detail.downloadLink}{detail.downloadText}{/if} +
+{/if} +{/for} diff --git a/templates/layouts/main.html b/templates/layouts/main.html new file mode 100644 index 0000000..28a6aca --- /dev/null +++ b/templates/layouts/main.html @@ -0,0 +1,10 @@ + + + {#include partials/head.html /} + + {#include partials/nav.html /} + {#include partials/main.html /} + {#include partials/right.html /} + {#include partials/footer.html /} + + diff --git a/templates/layouts/post.html b/templates/layouts/post.html new file mode 100644 index 0000000..0694809 --- /dev/null +++ b/templates/layouts/post.html @@ -0,0 +1,14 @@ +--- +link: :year/:month/:day/:name +--- + + + + {#include partials/head.html /} + + {#include partials/nav.html /} + {#include partials/post.html /} + {#include partials/right.html /} + {#include partials/footer.html /} + + diff --git a/templates/partials/default.html b/templates/partials/default.html new file mode 100644 index 0000000..0a2da42 --- /dev/null +++ b/templates/partials/default.html @@ -0,0 +1,18 @@ +
+
+
+
+
+ + {#insert /} +
+
diff --git a/_includes/footer.html b/templates/partials/footer.html similarity index 75% rename from _includes/footer.html rename to templates/partials/footer.html index 995882a..e07c406 100644 --- a/_includes/footer.html +++ b/templates/partials/footer.html @@ -1,32 +1,32 @@ @@ -51,7 +51,7 @@
diff --git a/templates/partials/head.html b/templates/partials/head.html new file mode 100644 index 0000000..2eb7b40 --- /dev/null +++ b/templates/partials/head.html @@ -0,0 +1,25 @@ + + + + + + {#seo page site /} + {#rss site /} + + + + + + + RESTEasy - JBoss Community + + + + + + + + + + diff --git a/_includes/main.html b/templates/partials/main.html similarity index 97% rename from _includes/main.html rename to templates/partials/main.html index a9e98c2..863ae31 100644 --- a/_includes/main.html +++ b/templates/partials/main.html @@ -43,10 +43,10 @@

RESTEasy

  • EJB, Seam, Guice, Spring, Spring MVC and Spring Boot integration
  • - {{content}} + {#insert /}

     

    - {% include news-list.html %} + {#include partials/news-list.html /}
    diff --git a/_includes/nav.html b/templates/partials/nav.html similarity index 74% rename from _includes/nav.html rename to templates/partials/nav.html index 0f59a87..24e9eb9 100644 --- a/_includes/nav.html +++ b/templates/partials/nav.html @@ -7,7 +7,7 @@
    - diff --git a/_includes/right.html b/templates/partials/right.html similarity index 92% rename from _includes/right.html rename to templates/partials/right.html index 834aec4..cc2ab9d 100644 --- a/_includes/right.html +++ b/templates/partials/right.html @@ -9,12 +9,12 @@ - +

    RESTEasy

    @@ -138,7 +139,8 @@

    RESTEasy

    resteasy
    -
    +
    + !}