From 75593037fcd0c14ff41ab4d04ae999da9794e9e5 Mon Sep 17 00:00:00 2001 From: Andrew Tobilko Date: Mon, 26 Sep 2016 17:24:09 +0300 Subject: [PATCH 01/31] filter hierarchy --- .../security/filter/CustomHttpFilter.java | 32 +++++++++++++++++++ .../security/filter/FilterConfiguration.java | 28 ++++++++++++++++ .../security/filter/GenericCustomFilter.java | 16 ++++++++++ .../filter/GenericCustomHttpFilter.java | 22 +++++++++++++ 4 files changed, 98 insertions(+) create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java create mode 100644 spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java new file mode 100644 index 000000000000..00a17fbb3902 --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/CustomHttpFilter.java @@ -0,0 +1,32 @@ +package org.baeldung.security.filter; + +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Component +@Order(Ordered.LOWEST_PRECEDENCE) +public class CustomHttpFilter extends GenericCustomHttpFilter { + + @Override + public void init(FilterConfig config) throws ServletException { + System.out.println(config.getInitParameter("first-init-param") + + config.getInitParameter("second-init-param")); + } + + @Override + public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain + chain) throws IOException, ServletException { + System.out.println("CustomHttpFilter is in action [the request is going to the server]."); + chain.doFilter(request, response); + System.out.println("CustomHttpFilter is in action [the request has come from the server]."); + } + +} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java new file mode 100644 index 000000000000..12447a29af11 --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/FilterConfiguration.java @@ -0,0 +1,28 @@ +package org.baeldung.security.filter; + +import org.springframework.boot.context.embedded.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.HashMap; + +import static java.util.Collections.singletonList; + +@Configuration +public class FilterConfiguration { + + @Bean + public FilterRegistrationBean getCustomFilterRegistrationBean() { + FilterRegistrationBean registration = new FilterRegistrationBean(); + registration.setFilter(new CustomHttpFilter()); + + registration.setInitParameters(new HashMap() {{ + put("first-init-param", "Hello from "); + put("second-init-param", "Filter!"); + }}); + registration.setUrlPatterns(singletonList("/user/registration")); + + return registration; + } + +} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java new file mode 100644 index 000000000000..e808b1aa0c84 --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomFilter.java @@ -0,0 +1,16 @@ +package org.baeldung.security.filter; + + +import javax.servlet.Filter; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; + +public abstract class GenericCustomFilter implements Filter { + + @Override + public void init(FilterConfig filterConfig) throws ServletException {} + + @Override + public void destroy() {} + +} \ No newline at end of file diff --git a/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java new file mode 100644 index 000000000000..6fb024c377ca --- /dev/null +++ b/spring-security-rest-basic-auth/src/main/java/org/baeldung/security/filter/GenericCustomHttpFilter.java @@ -0,0 +1,22 @@ +package org.baeldung.security.filter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public abstract class GenericCustomHttpFilter extends GenericCustomFilter { + + @Override + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + doFilter((HttpServletRequest) request, (HttpServletResponse) response, chain); + } + + public abstract void doFilter(HttpServletRequest request, HttpServletResponse response, + FilterChain chain) throws IOException, ServletException; + +} From 31d72d7cfa41ee51b0d5995892eb4fcbdf9ab523 Mon Sep 17 00:00:00 2001 From: Andrew Tobilko Date: Mon, 26 Sep 2016 17:26:45 +0300 Subject: [PATCH 02/31] README --- spring-security-rest-basic-auth/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-security-rest-basic-auth/README.md b/spring-security-rest-basic-auth/README.md index 3bd46bdd2aef..f3afa116f0d0 100644 --- a/spring-security-rest-basic-auth/README.md +++ b/spring-security-rest-basic-auth/README.md @@ -8,4 +8,5 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: - [RestTemplate with Basic Authentication in Spring](http://www.baeldung.com/2012/04/16/how-to-use-resttemplate-with-basic-authentication-in-spring-3-1) - [HttpClient Timeout](http://www.baeldung.com/httpclient-timeout) +- [Writing a Custom Filter in Spring Security](http://www.baeldung.com/writing-custom-filter-spring-security) - [HttpClient with SSL](http://www.baeldung.com/httpclient-ssl) From d3979102f879b60792238426a3f59a259a6875f2 Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Mon, 3 Oct 2016 13:01:01 -0600 Subject: [PATCH 03/31] BAEL-315 adding configuration for security on the config and discovery servers. --- .../application-config/discovery.properties | 2 +- .../application-config/gateway.properties | 2 +- .../application-config/resource.properties | 2 +- .../spring-cloud-bootstrap/config/pom.xml | 4 +++ .../integration/config/SecurityConfig.java | 25 +++++++++++++++++ .../src/main/resources/application.properties | 2 +- .../spring-cloud-bootstrap/discovery/pom.xml | 4 +++ .../integration/discovery/SecurityConfig.java | 28 +++++++++++++++++++ .../src/main/resources/bootstrap.properties | 4 ++- .../src/main/resources/bootstrap.properties | 2 ++ .../src/main/resources/bootstrap.properties | 2 ++ 11 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java create mode 100644 spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties b/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties index 7f3df86c7e1e..0df7988f6911 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties @@ -3,6 +3,6 @@ server.port=8082 eureka.instance.hostname=localhost -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ +eureka.client.serviceUrl.defaultZone=http://disc_discUser:discPassword@localhost:8082/eureka/ eureka.client.register-with-eureka=false eureka.client.fetch-registry=false diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties index 77faec84214b..fc04c5fc23a8 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties @@ -3,7 +3,7 @@ server.port=8080 eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ +eureka.client.serviceUrl.defaultZone=http://disc_gatewayUser:gatewayPassword@localhost:8082/eureka/ zuul.routes.resource.path=/resource/** hystrix.command.resource.execution.isolation.thread.timeoutInMilliseconds: 5000 diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties index 4e6cf3817c46..8df874a104df 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties @@ -5,4 +5,4 @@ resource.returnString=hello cloud eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ +eureka.client.serviceUrl.defaultZone=http://disc_resourceUser:resourcePassword@localhost:8082/eureka/ diff --git a/spring-cloud/spring-cloud-bootstrap/config/pom.xml b/spring-cloud/spring-cloud-bootstrap/config/pom.xml index 0cb217acfb0d..9ba018733a26 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/config/pom.xml @@ -28,6 +28,10 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-security + diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java new file mode 100644 index 000000000000..5392709fc891 --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java @@ -0,0 +1,25 @@ +package com.baeldung.spring.cloud.integration.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ + auth.inMemoryAuthentication() + .withUser("config_discUser") + .password("discPassword") + .and() + .withUser("config_gatewayUser") + .password("gatewayPassword") + .and() + .withUser("config_resourceUser") + .password("resourcePassword"); + } +} diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties index 6f614d069019..ddbe33a3f448 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties @@ -5,4 +5,4 @@ spring.cloud.config.server.git.uri=file:///${user.home}/application-config eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka \ No newline at end of file +eureka.client.serviceUrl.defaultZone=disc_configUser:configPassword@http://localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml index ee7c589549fc..3b23adbf54f3 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml @@ -28,6 +28,10 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-security + diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java new file mode 100644 index 000000000000..7c245d3ad38c --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java @@ -0,0 +1,28 @@ +package com.baeldung.spring.cloud.integration.discovery; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ + auth.inMemoryAuthentication() + .withUser("disc_configUser") + .password("configPassword") + .and() + .withUser("disc_discUser") + .password("discPassword") + .and() + .withUser("disc_gatewayUser") + .password("gatewayPassword") + .and() + .withUser("disc_resourceUser") + .password("resourcePassword"); + } +} diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties index ca9d59c9edd2..2a8381a58d99 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties @@ -1,2 +1,4 @@ spring.cloud.config.name=discovery -spring.cloud.config.uri=http://localhost:8081 \ No newline at end of file +spring.cloud.config.uri=http://localhost:8081 +spring.cloud.config.username=config_discUser +spring.cloud.config.password=discPassword \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties index 9610d7267575..6c866f51f2fb 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties @@ -1,5 +1,7 @@ spring.cloud.config.name=gateway spring.cloud.config.discovery.service-id=config spring.cloud.config.discovery.enabled=true +spring.cloud.config.username=config_gatewayUser +spring.cloud.config.password=gatewayPassword eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties index 3c88a0b52045..b0238554328c 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties @@ -1,5 +1,7 @@ spring.cloud.config.name=resource spring.cloud.config.discovery.service-id=config spring.cloud.config.discovery.enabled=true +spring.cloud.config.username=config_resourceUser +spring.cloud.config.password=resourcePassword eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ \ No newline at end of file From d226ad2999e7f8ec87894630113929ab3c049e39 Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Mon, 3 Oct 2016 14:24:58 -0600 Subject: [PATCH 04/31] BAEL-315 added security to config and dsicovery servers. --- .../config/ConfigApplication.java | 2 +- .../config/SecurityConfig.java | 18 +++++++++++-- .../src/main/resources/application.properties | 2 +- .../discovery/DiscoveryApplication.java | 2 +- .../discovery/SecurityConfig.java | 26 +++++++++++++++++-- .../gateway}/GatewayApplication.java | 2 +- .../src/main/resources/bootstrap.properties | 2 +- .../resource/ResourceApplication.java | 2 +- .../src/main/resources/bootstrap.properties | 2 +- 9 files changed, 47 insertions(+), 11 deletions(-) rename spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/{integration => bootstrap}/config/ConfigApplication.java (89%) rename spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/{integration => bootstrap}/config/SecurityConfig.java (62%) rename spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/{integration => bootstrap}/discovery/DiscoveryApplication.java (87%) rename spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/{integration => bootstrap}/discovery/SecurityConfig.java (54%) rename spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/{integration/resource => bootstrap/gateway}/GatewayApplication.java (89%) rename spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/{integration => bootstrap}/resource/ResourceApplication.java (93%) diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/ConfigApplication.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/ConfigApplication.java similarity index 89% rename from spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/ConfigApplication.java rename to spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/ConfigApplication.java index ff6c093b8b6f..847c86f8817c 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/ConfigApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/ConfigApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.cloud.integration.config; +package com.baeldung.spring.cloud.bootstrap.config; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java similarity index 62% rename from spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java rename to spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java index 5392709fc891..122079c763d2 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java @@ -1,8 +1,9 @@ -package com.baeldung.spring.cloud.integration.config; +package com.baeldung.spring.cloud.bootstrap.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @@ -15,11 +16,24 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ auth.inMemoryAuthentication() .withUser("config_discUser") .password("discPassword") + .roles("SYSTEM") .and() .withUser("config_gatewayUser") .password("gatewayPassword") + .roles("SYSTEM") .and() .withUser("config_resourceUser") - .password("resourcePassword"); + .password("resourcePassword") + .roles("SYSTEM"); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .anyRequest().authenticated() + .and() + .httpBasic().and() + .csrf().disable(); } } diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties index ddbe33a3f448..dda755296048 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties @@ -5,4 +5,4 @@ spring.cloud.config.server.git.uri=file:///${user.home}/application-config eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=disc_configUser:configPassword@http://localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://disc_configUser:configPassword@localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/DiscoveryApplication.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/DiscoveryApplication.java similarity index 87% rename from spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/DiscoveryApplication.java rename to spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/DiscoveryApplication.java index a21c65312f1c..32bcdc90b69b 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/DiscoveryApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/DiscoveryApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.cloud.integration.discovery; +package com.baeldung.spring.cloud.bootstrap.discovery; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java similarity index 54% rename from spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java rename to spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index 7c245d3ad38c..f6bd0ca16729 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -1,8 +1,10 @@ -package com.baeldung.spring.cloud.integration.discovery; +package com.baeldung.spring.cloud.bootstrap.discovery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @@ -15,14 +17,34 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ auth.inMemoryAuthentication() .withUser("disc_configUser") .password("configPassword") + .roles("SYSTEM") .and() .withUser("disc_discUser") .password("discPassword") + .roles("SYSTEM") .and() .withUser("disc_gatewayUser") .password("gatewayPassword") + .roles("SYSTEM") .and() .withUser("disc_resourceUser") - .password("resourcePassword"); + .password("resourcePassword") + .roles("SYSTEM") + .and() + .withUser("admin") + .password("password") + .roles("ADMIN"); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .antMatchers(HttpMethod.GET, "/").hasRole("ADMIN") + .anyRequest().authenticated() + .and() + .httpBasic() + .and() + .csrf().disable(); } } diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/integration/resource/GatewayApplication.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java similarity index 89% rename from spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/integration/resource/GatewayApplication.java rename to spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java index 66e7c36f2a06..ecdd5e066f2c 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/integration/resource/GatewayApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.cloud.integration.resource; +package com.baeldung.spring.cloud.bootstrap.gateway; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties index 6c866f51f2fb..69d9155ce9dc 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties @@ -4,4 +4,4 @@ spring.cloud.config.discovery.enabled=true spring.cloud.config.username=config_gatewayUser spring.cloud.config.password=gatewayPassword -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://disc_gatewayUser:gatewayPassword@localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/integration/resource/ResourceApplication.java b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java similarity index 93% rename from spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/integration/resource/ResourceApplication.java rename to spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java index 107a9d199f19..c567f6744490 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/integration/resource/ResourceApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.cloud.integration.resource; +package com.baeldung.spring.cloud.bootstrap.resource; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties index b0238554328c..2917cd570db9 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties @@ -4,4 +4,4 @@ spring.cloud.config.discovery.enabled=true spring.cloud.config.username=config_resourceUser spring.cloud.config.password=resourcePassword -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://disc_resourceUser:resourcePassword@localhost:8082/eureka/ \ No newline at end of file From 4029a3f5475633dff3603675255eeef8e2f9d912 Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Mon, 3 Oct 2016 18:18:30 -0600 Subject: [PATCH 05/31] BAEL-315 really lock down the discovery server --- .../spring/cloud/bootstrap/discovery/SecurityConfig.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index f6bd0ca16729..20a7fdeda118 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -40,6 +40,8 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() + .antMatchers("/eureka/js/**","/eureka/css/**","/eureka/images/**","/eureka/fonts/**").authenticated() + .antMatchers("/eureka/**").hasRole("SYSTEM") .antMatchers(HttpMethod.GET, "/").hasRole("ADMIN") .anyRequest().authenticated() .and() From 95b967858ed5e43dd9c109ad73206032b2026903 Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Mon, 3 Oct 2016 23:15:54 -0600 Subject: [PATCH 06/31] BAEL-315 reformatting some code. --- .../spring/cloud/bootstrap/config/SecurityConfig.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java index 122079c763d2..13c84dad94e4 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java @@ -31,9 +31,10 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() - .anyRequest().authenticated() + .anyRequest().authenticated() .and() - .httpBasic().and() - .csrf().disable(); + .httpBasic() + .and() + .csrf().disable(); } } From 317b596dd95521bc40296b920d4aeef7507d1c1b Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Tue, 4 Oct 2016 10:05:49 -0600 Subject: [PATCH 07/31] BAEL-315 reducing the number of users to simplify the code. --- .../application-config/discovery.properties | 2 +- .../application-config/gateway.properties | 1 - .../application-config/resource.properties | 1 - .../cloud/bootstrap/config/SecurityConfig.java | 12 ++---------- .../src/main/resources/application.properties | 2 +- .../cloud/bootstrap/discovery/SecurityConfig.java | 14 +------------- .../src/main/resources/bootstrap.properties | 4 ++-- .../src/main/resources/bootstrap.properties | 6 +++--- .../src/main/resources/bootstrap.properties | 6 +++--- 9 files changed, 13 insertions(+), 35 deletions(-) diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties b/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties index 0df7988f6911..dd117e128cdf 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties @@ -3,6 +3,6 @@ server.port=8082 eureka.instance.hostname=localhost -eureka.client.serviceUrl.defaultZone=http://disc_discUser:discPassword@localhost:8082/eureka/ +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ eureka.client.register-with-eureka=false eureka.client.fetch-registry=false diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties index fc04c5fc23a8..b33f28f7a619 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties @@ -3,7 +3,6 @@ server.port=8080 eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://disc_gatewayUser:gatewayPassword@localhost:8082/eureka/ zuul.routes.resource.path=/resource/** hystrix.command.resource.execution.isolation.thread.timeoutInMilliseconds: 5000 diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties index 8df874a104df..e19715e9860f 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties @@ -5,4 +5,3 @@ resource.returnString=hello cloud eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://disc_resourceUser:resourcePassword@localhost:8082/eureka/ diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java index 13c84dad94e4..b0e5d1769853 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java @@ -14,16 +14,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ auth.inMemoryAuthentication() - .withUser("config_discUser") - .password("discPassword") - .roles("SYSTEM") - .and() - .withUser("config_gatewayUser") - .password("gatewayPassword") - .roles("SYSTEM") - .and() - .withUser("config_resourceUser") - .password("resourcePassword") + .withUser("configUser") + .password("configPassword") .roles("SYSTEM"); } diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties index dda755296048..6c47d001f4a4 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties @@ -5,4 +5,4 @@ spring.cloud.config.server.git.uri=file:///${user.home}/application-config eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://disc_configUser:configPassword@localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index 20a7fdeda118..22e0369cb1d4 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -15,21 +15,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ auth.inMemoryAuthentication() - .withUser("disc_configUser") - .password("configPassword") - .roles("SYSTEM") - .and() - .withUser("disc_discUser") + .withUser("discUser") .password("discPassword") .roles("SYSTEM") - .and() - .withUser("disc_gatewayUser") - .password("gatewayPassword") - .roles("SYSTEM") - .and() - .withUser("disc_resourceUser") - .password("resourcePassword") - .roles("SYSTEM") .and() .withUser("admin") .password("password") diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties index 2a8381a58d99..d31caf55b554 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties @@ -1,4 +1,4 @@ spring.cloud.config.name=discovery spring.cloud.config.uri=http://localhost:8081 -spring.cloud.config.username=config_discUser -spring.cloud.config.password=discPassword \ No newline at end of file +spring.cloud.config.username=configUser +spring.cloud.config.password=configPassword \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties index 69d9155ce9dc..43491ff36ba3 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties @@ -1,7 +1,7 @@ spring.cloud.config.name=gateway spring.cloud.config.discovery.service-id=config spring.cloud.config.discovery.enabled=true -spring.cloud.config.username=config_gatewayUser -spring.cloud.config.password=gatewayPassword +spring.cloud.config.username=configUser +spring.cloud.config.password=configPassword -eureka.client.serviceUrl.defaultZone=http://disc_gatewayUser:gatewayPassword@localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties index 2917cd570db9..f915426a3669 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties @@ -1,7 +1,7 @@ spring.cloud.config.name=resource spring.cloud.config.discovery.service-id=config spring.cloud.config.discovery.enabled=true -spring.cloud.config.username=config_resourceUser -spring.cloud.config.password=resourcePassword +spring.cloud.config.username=configUser +spring.cloud.config.password=configPassword -eureka.client.serviceUrl.defaultZone=http://disc_resourceUser:resourcePassword@localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ \ No newline at end of file From c6480e025bd235c4353bf37fd2eca34f6c765c42 Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Wed, 5 Oct 2016 07:18:23 -0600 Subject: [PATCH 08/31] BAEL-315 change access in the config server to only users with SYSTEM level access. --- .../baeldung/spring/cloud/bootstrap/config/SecurityConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java index b0e5d1769853..4c3bd905cc57 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java @@ -23,7 +23,7 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() - .anyRequest().authenticated() + .anyRequest().hasRole("SYSTEM") .and() .httpBasic() .and() From 798e72a121a7565de04abd648ff88c02465957a3 Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Mon, 3 Oct 2016 13:01:01 -0600 Subject: [PATCH 09/31] BAEL-315 adding configuration for security on the config and discovery servers. --- .../application-config/discovery.properties | 2 +- .../application-config/gateway.properties | 2 +- .../application-config/resource.properties | 2 +- .../spring-cloud-bootstrap/config/pom.xml | 4 +++ .../integration/config/SecurityConfig.java | 25 +++++++++++++++++ .../src/main/resources/application.properties | 2 +- .../spring-cloud-bootstrap/discovery/pom.xml | 4 +++ .../integration/discovery/SecurityConfig.java | 28 +++++++++++++++++++ .../src/main/resources/bootstrap.properties | 4 ++- .../src/main/resources/bootstrap.properties | 2 ++ .../src/main/resources/bootstrap.properties | 2 ++ 11 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java create mode 100644 spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties b/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties index 7f3df86c7e1e..0df7988f6911 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties @@ -3,6 +3,6 @@ server.port=8082 eureka.instance.hostname=localhost -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ +eureka.client.serviceUrl.defaultZone=http://disc_discUser:discPassword@localhost:8082/eureka/ eureka.client.register-with-eureka=false eureka.client.fetch-registry=false diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties index 77faec84214b..fc04c5fc23a8 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties @@ -3,7 +3,7 @@ server.port=8080 eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ +eureka.client.serviceUrl.defaultZone=http://disc_gatewayUser:gatewayPassword@localhost:8082/eureka/ zuul.routes.resource.path=/resource/** hystrix.command.resource.execution.isolation.thread.timeoutInMilliseconds: 5000 diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties index 4e6cf3817c46..8df874a104df 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties @@ -5,4 +5,4 @@ resource.returnString=hello cloud eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ +eureka.client.serviceUrl.defaultZone=http://disc_resourceUser:resourcePassword@localhost:8082/eureka/ diff --git a/spring-cloud/spring-cloud-bootstrap/config/pom.xml b/spring-cloud/spring-cloud-bootstrap/config/pom.xml index 0cb217acfb0d..9ba018733a26 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/config/pom.xml @@ -28,6 +28,10 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-security + diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java new file mode 100644 index 000000000000..5392709fc891 --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java @@ -0,0 +1,25 @@ +package com.baeldung.spring.cloud.integration.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ + auth.inMemoryAuthentication() + .withUser("config_discUser") + .password("discPassword") + .and() + .withUser("config_gatewayUser") + .password("gatewayPassword") + .and() + .withUser("config_resourceUser") + .password("resourcePassword"); + } +} diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties index 6f614d069019..ddbe33a3f448 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties @@ -5,4 +5,4 @@ spring.cloud.config.server.git.uri=file:///${user.home}/application-config eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka \ No newline at end of file +eureka.client.serviceUrl.defaultZone=disc_configUser:configPassword@http://localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml index ee7c589549fc..3b23adbf54f3 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml @@ -28,6 +28,10 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-security + diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java new file mode 100644 index 000000000000..7c245d3ad38c --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java @@ -0,0 +1,28 @@ +package com.baeldung.spring.cloud.integration.discovery; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ + auth.inMemoryAuthentication() + .withUser("disc_configUser") + .password("configPassword") + .and() + .withUser("disc_discUser") + .password("discPassword") + .and() + .withUser("disc_gatewayUser") + .password("gatewayPassword") + .and() + .withUser("disc_resourceUser") + .password("resourcePassword"); + } +} diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties index ca9d59c9edd2..2a8381a58d99 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties @@ -1,2 +1,4 @@ spring.cloud.config.name=discovery -spring.cloud.config.uri=http://localhost:8081 \ No newline at end of file +spring.cloud.config.uri=http://localhost:8081 +spring.cloud.config.username=config_discUser +spring.cloud.config.password=discPassword \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties index 9610d7267575..6c866f51f2fb 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties @@ -1,5 +1,7 @@ spring.cloud.config.name=gateway spring.cloud.config.discovery.service-id=config spring.cloud.config.discovery.enabled=true +spring.cloud.config.username=config_gatewayUser +spring.cloud.config.password=gatewayPassword eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties index 3c88a0b52045..b0238554328c 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties @@ -1,5 +1,7 @@ spring.cloud.config.name=resource spring.cloud.config.discovery.service-id=config spring.cloud.config.discovery.enabled=true +spring.cloud.config.username=config_resourceUser +spring.cloud.config.password=resourcePassword eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ \ No newline at end of file From b7ec6f3e4c7c13bfc447a30c7e351433db29736b Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Mon, 3 Oct 2016 14:24:58 -0600 Subject: [PATCH 10/31] BAEL-315 added security to config and dsicovery servers. --- .../config/ConfigApplication.java | 2 +- .../config/SecurityConfig.java | 18 +++++++++++-- .../src/main/resources/application.properties | 2 +- .../discovery/DiscoveryApplication.java | 2 +- .../discovery/SecurityConfig.java | 26 +++++++++++++++++-- .../gateway}/GatewayApplication.java | 2 +- .../src/main/resources/bootstrap.properties | 2 +- .../resource/ResourceApplication.java | 2 +- .../src/main/resources/bootstrap.properties | 2 +- 9 files changed, 47 insertions(+), 11 deletions(-) rename spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/{integration => bootstrap}/config/ConfigApplication.java (89%) rename spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/{integration => bootstrap}/config/SecurityConfig.java (62%) rename spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/{integration => bootstrap}/discovery/DiscoveryApplication.java (87%) rename spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/{integration => bootstrap}/discovery/SecurityConfig.java (54%) rename spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/{integration/resource => bootstrap/gateway}/GatewayApplication.java (89%) rename spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/{integration => bootstrap}/resource/ResourceApplication.java (93%) diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/ConfigApplication.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/ConfigApplication.java similarity index 89% rename from spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/ConfigApplication.java rename to spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/ConfigApplication.java index ff6c093b8b6f..847c86f8817c 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/ConfigApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/ConfigApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.cloud.integration.config; +package com.baeldung.spring.cloud.bootstrap.config; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java similarity index 62% rename from spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java rename to spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java index 5392709fc891..122079c763d2 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/integration/config/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java @@ -1,8 +1,9 @@ -package com.baeldung.spring.cloud.integration.config; +package com.baeldung.spring.cloud.bootstrap.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @@ -15,11 +16,24 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ auth.inMemoryAuthentication() .withUser("config_discUser") .password("discPassword") + .roles("SYSTEM") .and() .withUser("config_gatewayUser") .password("gatewayPassword") + .roles("SYSTEM") .and() .withUser("config_resourceUser") - .password("resourcePassword"); + .password("resourcePassword") + .roles("SYSTEM"); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .anyRequest().authenticated() + .and() + .httpBasic().and() + .csrf().disable(); } } diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties index ddbe33a3f448..dda755296048 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties @@ -5,4 +5,4 @@ spring.cloud.config.server.git.uri=file:///${user.home}/application-config eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=disc_configUser:configPassword@http://localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://disc_configUser:configPassword@localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/DiscoveryApplication.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/DiscoveryApplication.java similarity index 87% rename from spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/DiscoveryApplication.java rename to spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/DiscoveryApplication.java index a21c65312f1c..32bcdc90b69b 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/DiscoveryApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/DiscoveryApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.cloud.integration.discovery; +package com.baeldung.spring.cloud.bootstrap.discovery; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java similarity index 54% rename from spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java rename to spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index 7c245d3ad38c..f6bd0ca16729 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/integration/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -1,8 +1,10 @@ -package com.baeldung.spring.cloud.integration.discovery; +package com.baeldung.spring.cloud.bootstrap.discovery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @@ -15,14 +17,34 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ auth.inMemoryAuthentication() .withUser("disc_configUser") .password("configPassword") + .roles("SYSTEM") .and() .withUser("disc_discUser") .password("discPassword") + .roles("SYSTEM") .and() .withUser("disc_gatewayUser") .password("gatewayPassword") + .roles("SYSTEM") .and() .withUser("disc_resourceUser") - .password("resourcePassword"); + .password("resourcePassword") + .roles("SYSTEM") + .and() + .withUser("admin") + .password("password") + .roles("ADMIN"); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .antMatchers(HttpMethod.GET, "/").hasRole("ADMIN") + .anyRequest().authenticated() + .and() + .httpBasic() + .and() + .csrf().disable(); } } diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/integration/resource/GatewayApplication.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java similarity index 89% rename from spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/integration/resource/GatewayApplication.java rename to spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java index 66e7c36f2a06..ecdd5e066f2c 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/integration/resource/GatewayApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.cloud.integration.resource; +package com.baeldung.spring.cloud.bootstrap.gateway; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties index 6c866f51f2fb..69d9155ce9dc 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties @@ -4,4 +4,4 @@ spring.cloud.config.discovery.enabled=true spring.cloud.config.username=config_gatewayUser spring.cloud.config.password=gatewayPassword -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://disc_gatewayUser:gatewayPassword@localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/integration/resource/ResourceApplication.java b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java similarity index 93% rename from spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/integration/resource/ResourceApplication.java rename to spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java index 107a9d199f19..c567f6744490 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/integration/resource/ResourceApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.cloud.integration.resource; +package com.baeldung.spring.cloud.bootstrap.resource; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties index b0238554328c..2917cd570db9 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties @@ -4,4 +4,4 @@ spring.cloud.config.discovery.enabled=true spring.cloud.config.username=config_resourceUser spring.cloud.config.password=resourcePassword -eureka.client.serviceUrl.defaultZone=http://localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://disc_resourceUser:resourcePassword@localhost:8082/eureka/ \ No newline at end of file From 846006cb6a5276d82dfd889a45284ea320fc43e8 Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Mon, 3 Oct 2016 18:18:30 -0600 Subject: [PATCH 11/31] BAEL-315 really lock down the discovery server --- .../spring/cloud/bootstrap/discovery/SecurityConfig.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index f6bd0ca16729..20a7fdeda118 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -40,6 +40,8 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() + .antMatchers("/eureka/js/**","/eureka/css/**","/eureka/images/**","/eureka/fonts/**").authenticated() + .antMatchers("/eureka/**").hasRole("SYSTEM") .antMatchers(HttpMethod.GET, "/").hasRole("ADMIN") .anyRequest().authenticated() .and() From 61b51e1cf9ac14307e79719dcb7a9de47fe08271 Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Mon, 3 Oct 2016 23:15:54 -0600 Subject: [PATCH 12/31] BAEL-315 reformatting some code. --- .../spring/cloud/bootstrap/config/SecurityConfig.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java index 122079c763d2..13c84dad94e4 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java @@ -31,9 +31,10 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() - .anyRequest().authenticated() + .anyRequest().authenticated() .and() - .httpBasic().and() - .csrf().disable(); + .httpBasic() + .and() + .csrf().disable(); } } From 72c4fd84d47f5505013c514f9e55b1bb3d40cbff Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Tue, 4 Oct 2016 10:05:49 -0600 Subject: [PATCH 13/31] BAEL-315 reducing the number of users to simplify the code. --- .../application-config/discovery.properties | 2 +- .../application-config/gateway.properties | 1 - .../application-config/resource.properties | 1 - .../cloud/bootstrap/config/SecurityConfig.java | 12 ++---------- .../src/main/resources/application.properties | 2 +- .../cloud/bootstrap/discovery/SecurityConfig.java | 14 +------------- .../src/main/resources/bootstrap.properties | 4 ++-- .../src/main/resources/bootstrap.properties | 6 +++--- .../src/main/resources/bootstrap.properties | 6 +++--- 9 files changed, 13 insertions(+), 35 deletions(-) diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties b/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties index 0df7988f6911..dd117e128cdf 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties @@ -3,6 +3,6 @@ server.port=8082 eureka.instance.hostname=localhost -eureka.client.serviceUrl.defaultZone=http://disc_discUser:discPassword@localhost:8082/eureka/ +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ eureka.client.register-with-eureka=false eureka.client.fetch-registry=false diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties index fc04c5fc23a8..b33f28f7a619 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties @@ -3,7 +3,6 @@ server.port=8080 eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://disc_gatewayUser:gatewayPassword@localhost:8082/eureka/ zuul.routes.resource.path=/resource/** hystrix.command.resource.execution.isolation.thread.timeoutInMilliseconds: 5000 diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties index 8df874a104df..e19715e9860f 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties @@ -5,4 +5,3 @@ resource.returnString=hello cloud eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://disc_resourceUser:resourcePassword@localhost:8082/eureka/ diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java index 13c84dad94e4..b0e5d1769853 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java @@ -14,16 +14,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ auth.inMemoryAuthentication() - .withUser("config_discUser") - .password("discPassword") - .roles("SYSTEM") - .and() - .withUser("config_gatewayUser") - .password("gatewayPassword") - .roles("SYSTEM") - .and() - .withUser("config_resourceUser") - .password("resourcePassword") + .withUser("configUser") + .password("configPassword") .roles("SYSTEM"); } diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties index dda755296048..6c47d001f4a4 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/resources/application.properties @@ -5,4 +5,4 @@ spring.cloud.config.server.git.uri=file:///${user.home}/application-config eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 -eureka.client.serviceUrl.defaultZone=http://disc_configUser:configPassword@localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index 20a7fdeda118..22e0369cb1d4 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -15,21 +15,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ auth.inMemoryAuthentication() - .withUser("disc_configUser") - .password("configPassword") - .roles("SYSTEM") - .and() - .withUser("disc_discUser") + .withUser("discUser") .password("discPassword") .roles("SYSTEM") - .and() - .withUser("disc_gatewayUser") - .password("gatewayPassword") - .roles("SYSTEM") - .and() - .withUser("disc_resourceUser") - .password("resourcePassword") - .roles("SYSTEM") .and() .withUser("admin") .password("password") diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties index 2a8381a58d99..d31caf55b554 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/resources/bootstrap.properties @@ -1,4 +1,4 @@ spring.cloud.config.name=discovery spring.cloud.config.uri=http://localhost:8081 -spring.cloud.config.username=config_discUser -spring.cloud.config.password=discPassword \ No newline at end of file +spring.cloud.config.username=configUser +spring.cloud.config.password=configPassword \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties index 69d9155ce9dc..43491ff36ba3 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties @@ -1,7 +1,7 @@ spring.cloud.config.name=gateway spring.cloud.config.discovery.service-id=config spring.cloud.config.discovery.enabled=true -spring.cloud.config.username=config_gatewayUser -spring.cloud.config.password=gatewayPassword +spring.cloud.config.username=configUser +spring.cloud.config.password=configPassword -eureka.client.serviceUrl.defaultZone=http://disc_gatewayUser:gatewayPassword@localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties index 2917cd570db9..f915426a3669 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties @@ -1,7 +1,7 @@ spring.cloud.config.name=resource spring.cloud.config.discovery.service-id=config spring.cloud.config.discovery.enabled=true -spring.cloud.config.username=config_resourceUser -spring.cloud.config.password=resourcePassword +spring.cloud.config.username=configUser +spring.cloud.config.password=configPassword -eureka.client.serviceUrl.defaultZone=http://disc_resourceUser:resourcePassword@localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ \ No newline at end of file From a310184efa1af80857929b5a23aa0fb5adfa364f Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Wed, 5 Oct 2016 07:18:23 -0600 Subject: [PATCH 14/31] BAEL-315 change access in the config server to only users with SYSTEM level access. --- .../baeldung/spring/cloud/bootstrap/config/SecurityConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java index b0e5d1769853..4c3bd905cc57 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/config/src/main/java/com/baeldung/spring/cloud/bootstrap/config/SecurityConfig.java @@ -23,7 +23,7 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() - .anyRequest().authenticated() + .anyRequest().hasRole("SYSTEM") .and() .httpBasic() .and() From 2a7b598cf098cc250281ee6095bff4509c4ba655 Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Tue, 18 Oct 2016 18:44:43 -0600 Subject: [PATCH 15/31] BAEL-315 Adding spring session as mechanism for sharing authentication tokens created by the edge service. --- .../application-config/discovery.properties | 3 ++ .../application-config/gateway.properties | 4 ++ .../application-config/resource.properties | 5 ++ .../spring-cloud-bootstrap/config/pom.xml | 9 ++++ .../spring-cloud-bootstrap/discovery/pom.xml | 19 +++++++ .../bootstrap/discovery/SecurityConfig.java | 6 +-- .../bootstrap/discovery/SessionConfig.java | 8 +++ .../spring-cloud-bootstrap/gateway/pom.xml | 24 +++++++++ .../gateway/CustomAuthenticationHandler.java | 54 +++++++++++++++++++ .../bootstrap/gateway/GatewayApplication.java | 25 +++++++++ .../bootstrap/gateway/SecurityConfig.java | 37 +++++++++++++ .../bootstrap/gateway/SessionConfig.java | 11 ++++ .../gateway/SessionSavingZuulPreFilter.java | 47 ++++++++++++++++ .../src/main/resources/bootstrap.properties | 13 ++++- .../spring-cloud-bootstrap/resource/pom.xml | 24 +++++++++ .../resource/ResourceApplication.java | 16 ++++++ .../bootstrap/resource/SecurityConfig.java | 40 ++++++++++++++ .../bootstrap/resource/SessionConfig.java | 10 ++++ .../src/main/resources/bootstrap.properties | 7 ++- 19 files changed, 355 insertions(+), 7 deletions(-) create mode 100644 spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SessionConfig.java create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/CustomAuthenticationHandler.java create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SessionConfig.java create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SessionSavingZuulPreFilter.java create mode 100644 spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java create mode 100644 spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SessionConfig.java diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties b/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties index dd117e128cdf..46f475208b05 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/discovery.properties @@ -6,3 +6,6 @@ eureka.instance.hostname=localhost eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ eureka.client.register-with-eureka=false eureka.client.fetch-registry=false + +spring.redis.host=localhost +spring.redis.port=6379 diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties index b33f28f7a619..c2a9419fc896 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties @@ -5,5 +5,9 @@ eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 zuul.routes.resource.path=/resource/** +zuul.routes.resource.sensitiveHeaders=Set-Cookie,Authorization,Cookie hystrix.command.resource.execution.isolation.thread.timeoutInMilliseconds: 5000 +spring.redis.host=localhost +spring.redis.port=6379 + diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties index e19715e9860f..6cd94c59e3d3 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties @@ -2,6 +2,11 @@ spring.application.name=resource server.port=8083 resource.returnString=hello cloud +resource.user.returnString=hello cloud user +resource.admin.returnString=hello cloud admin eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 + +spring.redis.host=localhost +spring.redis.port=6379 diff --git a/spring-cloud/spring-cloud-bootstrap/config/pom.xml b/spring-cloud/spring-cloud-bootstrap/config/pom.xml index 9ba018733a26..bcb40ac06270 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/config/pom.xml @@ -52,6 +52,15 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml index 3b23adbf54f3..f3cb3be2afe3 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml @@ -32,6 +32,16 @@ org.springframework.boot spring-boot-starter-security + + + org.springframework.session + spring-session + 1.2.1.RELEASE + + + org.springframework.boot + spring-boot-starter-data-redis + @@ -52,6 +62,15 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index 22e0369cb1d4..780d20e57315 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -17,11 +17,7 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ auth.inMemoryAuthentication() .withUser("discUser") .password("discPassword") - .roles("SYSTEM") - .and() - .withUser("admin") - .password("password") - .roles("ADMIN"); + .roles("SYSTEM"); } @Override diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SessionConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SessionConfig.java new file mode 100644 index 000000000000..83e5f51c978a --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SessionConfig.java @@ -0,0 +1,8 @@ +package com.baeldung.spring.cloud.bootstrap.discovery; + +import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; +import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; + +@EnableRedisHttpSession +public class SessionConfig extends AbstractHttpSessionApplicationInitializer { +} diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml index 8e56d0fd35eb..add551ff952e 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml @@ -27,6 +27,21 @@ org.springframework.cloud spring-cloud-starter-zuul + + org.springframework.boot + spring-boot-starter-security + + + + org.springframework.session + spring-session + 1.2.1.RELEASE + + + org.springframework.boot + spring-boot-starter-data-redis + + org.springframework.boot spring-boot-starter-test @@ -52,6 +67,15 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/CustomAuthenticationHandler.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/CustomAuthenticationHandler.java new file mode 100644 index 000000000000..13c993ff35bb --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/CustomAuthenticationHandler.java @@ -0,0 +1,54 @@ +package com.baeldung.spring.cloud.bootstrap.gateway; + +import org.springframework.security.core.Authentication; +import org.springframework.security.web.WebAttributes; +import org.springframework.security.web.authentication.AbstractAuthenticationTargetUrlRequestHandler; +import org.springframework.security.web.authentication.AuthenticationSuccessHandler; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class CustomAuthenticationHandler extends AbstractAuthenticationTargetUrlRequestHandler implements AuthenticationSuccessHandler{ + + public CustomAuthenticationHandler() { + } + + /** + * Constructor which sets the defaultTargetUrl property of the base class. + * @param defaultTargetUrl the URL to which the user should be redirected on + * successful authentication. + */ + public CustomAuthenticationHandler(String defaultTargetUrl) { + setDefaultTargetUrl(defaultTargetUrl); + } + + /** + * Calls the parent class {@code handle()} method to forward or redirect to the target + * URL, and then calls {@code clearAuthenticationAttributes()} to remove any leftover + * session data. + */ + public void onAuthenticationSuccess(HttpServletRequest request, + HttpServletResponse response, Authentication authentication) + throws IOException, ServletException { + response.setStatus(303); + handle(request, response, authentication); + clearAuthenticationAttributes(request); + } + + /** + * Removes temporary authentication-related data which may have been stored in the + * session during the authentication process. + */ + protected final void clearAuthenticationAttributes(HttpServletRequest request) { + HttpSession session = request.getSession(false); + + if (session == null) { + return; + } + + session.removeAttribute(WebAttributes.AUTHENTICATION_EXCEPTION); + } +} diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java index ecdd5e066f2c..a3d2df535784 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/GatewayApplication.java @@ -1,9 +1,18 @@ package com.baeldung.spring.cloud.bootstrap.gateway; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.cloud.netflix.ribbon.RibbonClientSpecification; +import org.springframework.cloud.netflix.ribbon.SpringClientFactory; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; +import org.springframework.context.annotation.Bean; +import org.springframework.web.client.RestTemplate; + +import java.util.ArrayList; +import java.util.List; @SpringBootApplication @EnableZuulProxy @@ -12,4 +21,20 @@ public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } + + @Autowired(required = false) + private List configurations = new ArrayList<>(); + + @Bean + @LoadBalanced RestTemplate restTemplate(){ + return new RestTemplate(); + } + + + @Bean + public SpringClientFactory springClientFactory() { + SpringClientFactory factory = new SpringClientFactory(); + factory.setConfigurations(this.configurations); + return factory; + } } diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java new file mode 100644 index 000000000000..80ffcb019b36 --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java @@ -0,0 +1,37 @@ +package com.baeldung.spring.cloud.bootstrap.gateway; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@EnableWebSecurity +@Configuration +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication() + .withUser("user").password("password").roles("USER") + .and() + .withUser("admin").password("admin").roles("ADMIN"); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .antMatchers("/resource/hello/cloud").permitAll() + .anyRequest().authenticated() + .and() + .formLogin() + .successHandler(new CustomAuthenticationHandler("/resource/hello/user")) + .and() + .logout().permitAll() + .logoutSuccessUrl("/resource/hello/cloud").permitAll() + .and() + .csrf().disable(); + } +} diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SessionConfig.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SessionConfig.java new file mode 100644 index 000000000000..14f7deb770ff --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SessionConfig.java @@ -0,0 +1,11 @@ +package com.baeldung.spring.cloud.bootstrap.gateway; + +import org.springframework.context.annotation.Configuration; +import org.springframework.session.data.redis.RedisFlushMode; +import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; +import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; + +@Configuration +@EnableRedisHttpSession(redisFlushMode = RedisFlushMode.IMMEDIATE) +public class SessionConfig extends AbstractHttpSessionApplicationInitializer { +} diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SessionSavingZuulPreFilter.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SessionSavingZuulPreFilter.java new file mode 100644 index 000000000000..a1eecaa7a0eb --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SessionSavingZuulPreFilter.java @@ -0,0 +1,47 @@ +package com.baeldung.spring.cloud.bootstrap.gateway; + +import com.netflix.zuul.ZuulFilter; +import com.netflix.zuul.context.RequestContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.session.Session; +import org.springframework.session.SessionRepository; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpSession; + +@Component +public class SessionSavingZuulPreFilter extends ZuulFilter { + + private Logger log = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private SessionRepository repository; + + @Override public boolean shouldFilter() { + return true; + } + + @Override + public Object run() { + RequestContext context = RequestContext.getCurrentContext(); + + HttpSession httpSession = context.getRequest().getSession(); + Session session = repository.getSession(httpSession.getId()); + + context.addZuulRequestHeader("Cookie", "SESSION=" + httpSession.getId()); + + log.info("ZuulPreFilter session proxy: {}", session.getId()); + + return null; + } + + @Override public String filterType() { + return "pre"; + } + + @Override public int filterOrder() { + return 0; + } +} diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties index 43491ff36ba3..53101d1c57e2 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties @@ -4,4 +4,15 @@ spring.cloud.config.discovery.enabled=true spring.cloud.config.username=configUser spring.cloud.config.password=configPassword -eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ + +management.security.sessions=always + +zuul.routes.resource.path=/resource/** +zuul.routes.resource.sensitive-headers=Set-Cookie,Authorization +zuul.routes.resource.retryable=true +hystrix.command.resource.execution.isolation.thread.timeoutInMilliseconds=600000 + +logging.level.org.springframework.web.=debug +logging.level.org.springframework.security=debug +logging.level.org.springframework.cloud.netflix.zuul=debug \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/resource/pom.xml b/spring-cloud/spring-cloud-bootstrap/resource/pom.xml index 78112fa3e099..8940ca71da80 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/resource/pom.xml @@ -27,6 +27,21 @@ org.springframework.boot spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-security + + + + org.springframework.session + spring-session + 1.2.1.RELEASE + + + org.springframework.boot + spring-boot-starter-data-redis + + org.springframework.boot spring-boot-starter-test @@ -52,6 +67,15 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + 1.8 + 1.8 + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java index c567f6744490..e12d43f46bbc 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/ResourceApplication.java @@ -18,8 +18,24 @@ public static void main(String[] args) { @Value("${resource.returnString}") private String returnString; + @Value("${resource.user.returnString}") + private String userReturnString; + + @Value("${resource.admin.returnString}") + private String adminReturnString; + @RequestMapping("/hello/cloud") public String getString() { return returnString; } + + @RequestMapping("/hello/user") + public String getUserString() { + return userReturnString; + } + + @RequestMapping("/hello/admin") + public String getAdminString() { + return adminReturnString; + } } diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java new file mode 100644 index 000000000000..7351316e71d9 --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SecurityConfig.java @@ -0,0 +1,40 @@ +package com.baeldung.spring.cloud.bootstrap.resource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; + +@EnableWebSecurity +@Configuration +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + public void configureGlobal1(AuthenticationManagerBuilder auth) throws Exception { + //try in memory auth with no users to support the case that this will allow for users that are logged in to go anywhere + auth.inMemoryAuthentication(); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .httpBasic() + .disable() + .authorizeRequests() + .antMatchers("/hello/cloud").permitAll() + .antMatchers("/hello/user").hasAnyRole("USER", "ADMIN") + .antMatchers("/hello/admin").hasAnyRole("ADMIN") + .anyRequest().authenticated() + .and() + .csrf().disable(); + } + + @Bean + public BCryptPasswordEncoder encoder() { + return new BCryptPasswordEncoder(11); + } +} diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SessionConfig.java b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SessionConfig.java new file mode 100644 index 000000000000..f11f316826d2 --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/java/com/baeldung/spring/cloud/bootstrap/resource/SessionConfig.java @@ -0,0 +1,10 @@ +package com.baeldung.spring.cloud.bootstrap.resource; + +import org.springframework.context.annotation.Configuration; +import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; +import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; + +@Configuration +@EnableRedisHttpSession +public class SessionConfig extends AbstractHttpSessionApplicationInitializer { +} diff --git a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties index f915426a3669..dd9e34b0a510 100644 --- a/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/resource/src/main/resources/bootstrap.properties @@ -4,4 +4,9 @@ spring.cloud.config.discovery.enabled=true spring.cloud.config.username=configUser spring.cloud.config.password=configPassword -eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ + +management.security.sessions=never + +logging.level.org.springframework.web.=debug +logging.level.org.springframework.security=debug \ No newline at end of file From a66aeb11573a6b9c12f758175b9b61207d465338 Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Tue, 18 Oct 2016 21:07:52 -0600 Subject: [PATCH 16/31] BAEL-315 Change some security settings to allow discovery server operations. Copy static files from the eureka project to the zuul filter to display the discovery dashboard through the proxy. --- .../bootstrap/discovery/SecurityConfig.java | 42 ++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java index 780d20e57315..5bfd3a3b3845 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/discovery/src/main/java/com/baeldung/spring/cloud/bootstrap/discovery/SecurityConfig.java @@ -2,14 +2,17 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; import org.springframework.http.HttpMethod; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; @Configuration @EnableWebSecurity +@Order(1) public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired @@ -23,14 +26,43 @@ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ @Override protected void configure(HttpSecurity http) throws Exception { http + .sessionManagement() + .sessionCreationPolicy(SessionCreationPolicy.ALWAYS) + .and() + .requestMatchers() + .antMatchers("/eureka/**") + .and() .authorizeRequests() - .antMatchers("/eureka/js/**","/eureka/css/**","/eureka/images/**","/eureka/fonts/**").authenticated() .antMatchers("/eureka/**").hasRole("SYSTEM") - .antMatchers(HttpMethod.GET, "/").hasRole("ADMIN") - .anyRequest().authenticated() - .and() + .anyRequest().denyAll() + .and() + .httpBasic() + .and() + .csrf().disable(); + } + + @Configuration + //no order tag means this is the last security filter to be evaluated + public static class AdminSecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication(); + } + + @Override protected void configure(HttpSecurity http) throws Exception { + http + .sessionManagement() + .sessionCreationPolicy(SessionCreationPolicy.NEVER) + .and() .httpBasic() - .and() + .disable() + .authorizeRequests() + .antMatchers(HttpMethod.GET, "/").hasRole("ADMIN") + .antMatchers("/info","/health").authenticated() + .antMatchers("/eureka/js/**", "/eureka/css/**", "/eureka/images/**", "/eureka/fonts/**").authenticated() + .anyRequest().denyAll() + .and() .csrf().disable(); + } } } From 59d2f781264fa6dd9fb5300d31165feda7052bb3 Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Tue, 18 Oct 2016 21:08:14 -0600 Subject: [PATCH 17/31] BAEL-315 Adding spring session as mechanism for sharing authentication tokens created by the edge service. --- .../resources/static/eureka/images/404-icon.png | Bin 0 -> 4205 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/404-icon.png diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/404-icon.png b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/404-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..912f456bfc4d4fb11ff1b3d337e2338f3f642435 GIT binary patch literal 4205 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 DAC63h literal 0 HcmV?d00001 From 2777df61a96f285f788e283d7e67c90dbc13d42f Mon Sep 17 00:00:00 2001 From: Tim Schimandle Date: Tue, 18 Oct 2016 21:08:41 -0600 Subject: [PATCH 18/31] BAEL-315 Adding spring session as mechanism for sharing authentication tokens created by the edge service. --- .../application-config/gateway.properties | 17 +- .../application-config/resource.properties | 5 + .../bootstrap/gateway/SecurityConfig.java | 1 + .../src/main/resources/bootstrap.properties | 13 +- .../main/resources/static/eureka/css/wro.css | 6393 +++++++++++++ .../eureka/fonts/montserrat-webfont.eot | Bin 0 -> 20979 bytes .../eureka/fonts/montserrat-webfont.svg | 1283 +++ .../eureka/fonts/montserrat-webfont.ttf | Bin 0 -> 42692 bytes .../eureka/fonts/montserrat-webfont.woff | Bin 0 -> 24240 bytes .../eureka/fonts/varela_round-webfont.eot | Bin 0 -> 28963 bytes .../eureka/fonts/varela_round-webfont.svg | 7875 +++++++++++++++++ .../eureka/fonts/varela_round-webfont.ttf | Bin 0 -> 63044 bytes .../eureka/fonts/varela_round-webfont.woff | Bin 0 -> 32712 bytes .../static/eureka/images/homepage-bg.jpg | Bin 0 -> 111924 bytes .../static/eureka/images/platform-bg.png | Bin 0 -> 9162 bytes .../eureka/images/platform-spring-xd.png | Bin 0 -> 1426 bytes .../images/spring-logo-eureka-mobile.png | Bin 0 -> 3811 bytes .../eureka/images/spring-logo-eureka.png | Bin 0 -> 6290 bytes .../main/resources/static/eureka/js/wro.js | 2 + .../src/main/resources/bootstrap.properties | 5 - 20 files changed, 15573 insertions(+), 21 deletions(-) create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/css/wro.css create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/montserrat-webfont.eot create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/montserrat-webfont.svg create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/montserrat-webfont.ttf create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/montserrat-webfont.woff create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/varela_round-webfont.eot create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/varela_round-webfont.svg create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/varela_round-webfont.ttf create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/varela_round-webfont.woff create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/homepage-bg.jpg create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/platform-bg.png create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/platform-spring-xd.png create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/spring-logo-eureka-mobile.png create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/spring-logo-eureka.png create mode 100644 spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/js/wro.js diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties index c2a9419fc896..0781fe85e4a7 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/gateway.properties @@ -4,10 +4,19 @@ server.port=8080 eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 +management.security.sessions=always + zuul.routes.resource.path=/resource/** -zuul.routes.resource.sensitiveHeaders=Set-Cookie,Authorization,Cookie -hystrix.command.resource.execution.isolation.thread.timeoutInMilliseconds: 5000 +zuul.routes.resource.sensitive-headers=Set-Cookie,Authorization +hystrix.command.resource.execution.isolation.thread.timeoutInMilliseconds=600000 -spring.redis.host=localhost -spring.redis.port=6379 +zuul.routes.discovery.path=/discovery/** +zuul.routes.discovery.sensitive-headers=Set-Cookie,Authorization +hystrix.command.discovery.execution.isolation.thread.timeoutInMilliseconds=600000 +logging.level.org.springframework.web.=debug +logging.level.org.springframework.security=debug +logging.level.org.springframework.cloud.netflix.zuul=debug + +spring.redis.host=localhost +spring.redis.port=6379 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties index 6cd94c59e3d3..9fb610d65575 100644 --- a/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties +++ b/spring-cloud/spring-cloud-bootstrap/application-config/resource.properties @@ -8,5 +8,10 @@ resource.admin.returnString=hello cloud admin eureka.client.region = default eureka.client.registryFetchIntervalSeconds = 5 +management.security.sessions=never + +logging.level.org.springframework.web.=debug +logging.level.org.springframework.security=debug + spring.redis.host=localhost spring.redis.port=6379 diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java index 80ffcb019b36..9b780273b852 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/SecurityConfig.java @@ -24,6 +24,7 @@ protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/resource/hello/cloud").permitAll() + .antMatchers("/static/eureka/**").hasRole("ADMIN") .anyRequest().authenticated() .and() .formLogin() diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties index 53101d1c57e2..43491ff36ba3 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/bootstrap.properties @@ -4,15 +4,4 @@ spring.cloud.config.discovery.enabled=true spring.cloud.config.username=configUser spring.cloud.config.password=configPassword -eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ - -management.security.sessions=always - -zuul.routes.resource.path=/resource/** -zuul.routes.resource.sensitive-headers=Set-Cookie,Authorization -zuul.routes.resource.retryable=true -hystrix.command.resource.execution.isolation.thread.timeoutInMilliseconds=600000 - -logging.level.org.springframework.web.=debug -logging.level.org.springframework.security=debug -logging.level.org.springframework.cloud.netflix.zuul=debug \ No newline at end of file +eureka.client.serviceUrl.defaultZone=http://discUser:discPassword@localhost:8082/eureka/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/css/wro.css b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/css/wro.css new file mode 100644 index 000000000000..e023c0a145ce --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/css/wro.css @@ -0,0 +1,6393 @@ +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: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.428571429; + color: #f1f1f1; + background-color: #f1f1f1; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #5fa134; + text-decoration: none; +} +a:hover, +a:focus { + color: #5fa134; + 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: 0; +} +.img-thumbnail { + padding: 4px; + line-height: 1.428571429; + background-color: #f1f1f1; + border: 1px solid #ddd; + border-radius: 0; + -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: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} +.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: inherit; + font-weight: 500; + 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: #777777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +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: 10px; + margin-bottom: 10px; +} +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: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +cite { + font-style: normal; +} +mark, +.mark { + background-color: #fcf8e3; + 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: #777777; +} +.text-primary { + color: #428bca; +} +a.text-primary:hover { + color: #3071a9; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #428bca; +} +a.bg-primary:hover { + background-color: #3071a9; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +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: 20px; +} +dt, +dd { + line-height: 1.428571429; +} +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 #777777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eeeeee; +} +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.428571429; + color: #777777; +} +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 #eeeeee; + 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: 20px; + font-style: normal; + line-height: 1.428571429; +} +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: 0; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 0; + 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: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.428571429; + word-break: break-all; + word-wrap: break-word; + color: #333333; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 0; +} +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.66666666666666%; +} +.col-xs-10 { + width: 83.33333333333334%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666666666666%; +} +.col-xs-7 { + width: 58.333333333333336%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666666666667%; +} +.col-xs-4 { + width: 33.33333333333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.666666666666664%; +} +.col-xs-1 { + width: 8.333333333333332%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666666666666%; +} +.col-xs-pull-10 { + right: 83.33333333333334%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666666666666%; +} +.col-xs-pull-7 { + right: 58.333333333333336%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666666666667%; +} +.col-xs-pull-4 { + right: 33.33333333333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.666666666666664%; +} +.col-xs-pull-1 { + right: 8.333333333333332%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666666666666%; +} +.col-xs-push-10 { + left: 83.33333333333334%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666666666666%; +} +.col-xs-push-7 { + left: 58.333333333333336%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666666666667%; +} +.col-xs-push-4 { + left: 33.33333333333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.666666666666664%; +} +.col-xs-push-1 { + left: 8.333333333333332%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666666666666%; +} +.col-xs-offset-10 { + margin-left: 83.33333333333334%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666666666666%; +} +.col-xs-offset-7 { + margin-left: 58.333333333333336%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666666666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.666666666666664%; +} +.col-xs-offset-1 { + margin-left: 8.333333333333332%; +} +.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.66666666666666%; + } + .col-sm-10 { + width: 83.33333333333334%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666666666666%; + } + .col-sm-7 { + width: 58.333333333333336%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666666666667%; + } + .col-sm-4 { + width: 33.33333333333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.666666666666664%; + } + .col-sm-1 { + width: 8.333333333333332%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666666666666%; + } + .col-sm-pull-10 { + right: 83.33333333333334%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666666666666%; + } + .col-sm-pull-7 { + right: 58.333333333333336%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666666666667%; + } + .col-sm-pull-4 { + right: 33.33333333333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.666666666666664%; + } + .col-sm-pull-1 { + right: 8.333333333333332%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666666666666%; + } + .col-sm-push-10 { + left: 83.33333333333334%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666666666666%; + } + .col-sm-push-7 { + left: 58.333333333333336%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666666666667%; + } + .col-sm-push-4 { + left: 33.33333333333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.666666666666664%; + } + .col-sm-push-1 { + left: 8.333333333333332%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666666666666%; + } + .col-sm-offset-10 { + margin-left: 83.33333333333334%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666666666666%; + } + .col-sm-offset-7 { + margin-left: 58.333333333333336%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666666666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.666666666666664%; + } + .col-sm-offset-1 { + margin-left: 8.333333333333332%; + } + .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.66666666666666%; + } + .col-md-10 { + width: 83.33333333333334%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666666666666%; + } + .col-md-7 { + width: 58.333333333333336%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666666666667%; + } + .col-md-4 { + width: 33.33333333333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.666666666666664%; + } + .col-md-1 { + width: 8.333333333333332%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666666666666%; + } + .col-md-pull-10 { + right: 83.33333333333334%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666666666666%; + } + .col-md-pull-7 { + right: 58.333333333333336%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666666666667%; + } + .col-md-pull-4 { + right: 33.33333333333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.666666666666664%; + } + .col-md-pull-1 { + right: 8.333333333333332%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666666666666%; + } + .col-md-push-10 { + left: 83.33333333333334%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666666666666%; + } + .col-md-push-7 { + left: 58.333333333333336%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666666666667%; + } + .col-md-push-4 { + left: 33.33333333333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.666666666666664%; + } + .col-md-push-1 { + left: 8.333333333333332%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666666666666%; + } + .col-md-offset-10 { + margin-left: 83.33333333333334%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666666666666%; + } + .col-md-offset-7 { + margin-left: 58.333333333333336%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666666666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.666666666666664%; + } + .col-md-offset-1 { + margin-left: 8.333333333333332%; + } + .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.66666666666666%; + } + .col-lg-10 { + width: 83.33333333333334%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666666666666%; + } + .col-lg-7 { + width: 58.333333333333336%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666666666667%; + } + .col-lg-4 { + width: 33.33333333333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.666666666666664%; + } + .col-lg-1 { + width: 8.333333333333332%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666666666666%; + } + .col-lg-pull-10 { + right: 83.33333333333334%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666666666666%; + } + .col-lg-pull-7 { + right: 58.333333333333336%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666666666667%; + } + .col-lg-pull-4 { + right: 33.33333333333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.666666666666664%; + } + .col-lg-pull-1 { + right: 8.333333333333332%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666666666666%; + } + .col-lg-push-10 { + left: 83.33333333333334%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666666666666%; + } + .col-lg-push-7 { + left: 58.333333333333336%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666666666667%; + } + .col-lg-push-4 { + left: 33.33333333333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.666666666666664%; + } + .col-lg-push-1 { + left: 8.333333333333332%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666666666666%; + } + .col-lg-offset-10 { + margin-left: 83.33333333333334%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666666666666%; + } + .col-lg-offset-7 { + margin-left: 58.333333333333336%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666666666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.666666666666664%; + } + .col-lg-offset-1 { + margin-left: 8.333333333333332%; + } + .col-lg-offset-0 { + margin-left: 0%; + } +} +table { + background-color: transparent; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.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.428571429; + vertical-align: top; + border-top: 1px solid #34302D; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #34302D; +} +.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 #34302D; +} +.table .table { + background-color: #f1f1f1; +} +.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 #34302D; +} +.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 #34302D; +} +.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: #f5f5f5; +} +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: #f5f5f5; +} +.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: #e8e8e8; +} +.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: #dff0d8; +} +.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: #d0e9c6; +} +.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: #d9edf7; +} +.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: #c4e3f3; +} +.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: #fcf8e3; +} +.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: #faf2cc; +} +.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: #f2dede; +} +.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: #ebcccc; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + overflow-x: auto; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #34302D; + -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: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +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: 7px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 0; + -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: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); +} +.form-control::-moz-placeholder { + color: #777777; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #777777; +} +.form-control::-webkit-input-placeholder { + color: #777777; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eeeeee; + 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: 34px; + line-height: 1.428571429 \0; +} +input[type="date"].input-sm, +input[type="time"].input-sm, +input[type="datetime-local"].input-sm, +input[type="month"].input-sm { + line-height: 30px; +} +input[type="date"].input-lg, +input[type="time"].input-lg, +input[type="datetime-local"].input-lg, +input[type="month"].input-lg { + line-height: 46px; +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + min-height: 20px; + 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: 7px; + padding-bottom: 7px; + 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: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 0; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.input-lg, +.form-horizontal .form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 0; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 25px; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -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: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + border-color: #3c763d; + background-color: #dff0d8; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -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: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + border-color: #8a6d3b; + background-color: #fcf8e3; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -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: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + border-color: #a94442; + background-color: #f2dede; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #ffffff; +} +@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: 7px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.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: 7px; + } +} +.form-horizontal .has-feedback .form-control-feedback { + top: 0; + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.3px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.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: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + border-radius: 0; + -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: #f1f1f1; + 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: .65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-default { + color: #f1f1f1; + background-color: #34302D; + border-color: #6db33f; +} +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #f1f1f1; + background-color: #191715; + border-color: #51862f; +} +.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: #34302D; + border-color: #6db33f; +} +.btn-default .badge { + color: #34302D; + background-color: #f1f1f1; +} +.btn-primary { + color: #fff; + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #3071a9; + border-color: #285e8e; +} +.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: #428bca; + border-color: #357ebd; +} +.btn-primary .badge { + color: #428bca; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.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: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.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: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.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: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.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: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + color: #5fa134; + 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: #5fa134; + 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: #777777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 0; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 0; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 0; +} +.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 .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .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 .35s ease; + -o-transition: height .35s ease; + transition: height .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: 14px; + text-align: left; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0; + -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: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.428571429; + color: #333333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + text-decoration: none; + color: #262626; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + outline: 0; + background-color: #428bca; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777777; +} +.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: 12px; + line-height: 1.428571429; + color: #777777; + 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: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 0; + 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: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 0; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +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: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 0; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +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: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #ccc; + border-radius: 0; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 0; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 0; +} +.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: #eeeeee; +} +.nav > li.disabled > a { + color: #777777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777777; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eeeeee; + border-color: #5fa134; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #34302D; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.428571429; + border: 1px solid transparent; + border-radius: 0 0 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #34302D; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #f1f1f1; + background-color: #34302D; + border: 1px solid #34302D; + 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: 0; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 0 0 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: #f1f1f1; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 0; +} +.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: #fff; + background-color: #428bca; +} +.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: 0; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 0 0 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #f1f1f1; + } +} +.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: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 0; + } +} +@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: 15px 15px; + font-size: 18px; + line-height: 20px; + height: 50px; +} +.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: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 0; +} +.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: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@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: 20px; + } + .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: 15px; + padding-bottom: 15px; + } + .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: 8px; + margin-bottom: 8px; +} +@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: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@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: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #f1f1f1; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #d8d8d8; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #f1f1f1; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #f1f1f1; + background-color: #6db33f; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #f1f1f1; + background-color: #6db33f; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: transparent; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #f1f1f1; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + background-color: #6db33f; + color: #f1f1f1; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #f1f1f1; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #f1f1f1; + background-color: #6db33f; + } + .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: #f1f1f1; + background-color: #6db33f; + } + .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: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #f1f1f1; +} +.navbar-default .navbar-link:hover { + color: #f1f1f1; +} +.navbar-default .btn-link { + color: #f1f1f1; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #f1f1f1; +} +.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: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #777777; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #777777; +} +.navbar-inverse .navbar-nav > li > a { + color: #777777; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + background-color: #080808; + color: #fff; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + 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: #fff; + background-color: #080808; + } + .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: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #777777; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #777777; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.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: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 0; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + content: "/\00a0"; + padding: 0 5px; + color: #ccc; +} +.breadcrumb > .active { + color: #777777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 0; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + line-height: 1.428571429; + text-decoration: none; + color: #5fa134; + background-color: #fff; + border: 1px solid #ddd; + margin-left: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #5fa134; + background-color: #eeeeee; + border-color: #ddd; +} +.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: #fff; + background-color: #428bca; + border-color: #428bca; + 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: #777777; + background-color: #fff; + border-color: #ddd; + cursor: not-allowed; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.pager { + padding-left: 0; + margin: 20px 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: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} +.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: #777777; + background-color: #fff; + cursor: not-allowed; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #428bca; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #3071a9; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + color: #fff; + line-height: 1; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: #777777; + 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: #fff; + text-decoration: none; + cursor: pointer; +} +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #5fa134; + background-color: #fff; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eeeeee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron { + border-radius: 0; +} +.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: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.428571429; + background-color: #f1f1f1; + border: 1px solid #ddd; + border-radius: 0; + -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: #5fa134; +} +.thumbnail .caption { + padding: 9px; + color: #f1f1f1; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 0; +} +.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: #dff0d8; + border-color: #d6e9c6; + color: #3c763d; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #31708f; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + background-color: #fcf8e3; + border-color: #faebcc; + color: #8a6d3b; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + background-color: #f2dede; + border-color: #ebccd1; + color: #a94442; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-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: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 0; + -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: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #428bca; + -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 .6s ease; + -o-transition: width .6s ease; + transition: width .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: #777777; + min-width: 30px; + background-color: transparent; + background-image: none; + box-shadow: none; +} +.progress-bar-success { + background-color: #5cb85c; +} +.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: #5bc0de; +} +.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: #f0ad4e; +} +.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: #d9534f; +} +.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: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + color: #555; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + background-color: #eeeeee; + color: #777777; +} +.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: #777777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #428bca; + border-color: #428bca; +} +.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: #e1edf7; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 0; + -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: -1; + border-top-left-radius: -1; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: -1; + border-bottom-left-radius: -1; +} +.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: -1; + border-top-left-radius: -1; +} +.panel > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: -1; + border-bottom-left-radius: -1; +} +.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: -1; + border-top-left-radius: -1; +} +.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: -1; +} +.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: -1; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: -1; + border-bottom-left-radius: -1; +} +.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: -1; +} +.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: -1; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive { + border-top: 1px solid #34302D; +} +.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: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 0; +} +.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 #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #428bca; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #428bca; + border-color: #428bca; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #428bca; +} +.panel-primary > .panel-heading .badge { + color: #428bca; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #428bca; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.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: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 0; + -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: 0; +} +.well-sm { + padding: 9px; + border-radius: 0; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + opacity: .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 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.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: #fff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0; + -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: #000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: .5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; + min-height: 16.428571429px; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.428571429; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + 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: 12px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: .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: #fff; + text-align: center; + text-decoration: none; + background-color: #000; + border-radius: 0; +} +.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: #000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + right: 5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0; + -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: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: -1 -1 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: #fff; +} +.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: #fff; +} +.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: #fff; +} +.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: #fff; + 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: .5; + filter: alpha(opacity=50); + font-size: 20px; + color: #fff; + 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: #fff; + text-decoration: none; + opacity: .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 #fff; + 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: #fff; +} +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + 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; + } +} +@font-face { + font-family: 'varela_roundregular'; + src: url('../fonts/varela_round-webfont.eot'); + src: url('../fonts/varela_round-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/varela_round-webfont.woff') format('woff'), url('../fonts/varela_round-webfont.ttf') format('truetype'), url('../fonts/varela_round-webfont.svg#varela_roundregular') format('svg'); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: 'montserratregular'; + src: url('../fonts/montserrat-webfont.eot'); + src: url('../fonts/montserrat-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/montserrat-webfont.woff') format('woff'), url('../fonts/montserrat-webfont.ttf') format('truetype'), url('../fonts/montserrat-webfont.svg#montserratregular') format('svg'); + font-weight: normal; + font-style: normal; +} +body, +h1, +h2, +h3, +p, +input { + margin: 0; + font-weight: 400; + font-family: "varela_roundregular", sans-serif; + color: #34302d; +} +h1 { + font-size: 24px; + line-height: 30px; + font-family: "montserratregular", sans-serif; +} +h2 { + font-size: 18px; + font-weight: 700; + line-height: 24px; + margin-bottom: 10px; + font-family: "montserratregular", sans-serif; +} +h3 { + font-size: 16px; + line-height: 24px; + margin-bottom: 10px; + font-weight: 700; +} +strong { + font-weight: 700; + font-family: "montserratregular", sans-serif; +} +.navbar { + border-top: 4px solid #6db33f; + background-color: #34302d; + margin-bottom: 0px; + border-bottom: 0; + border-left: 0; + border-right: 0; +} +.navbar a.navbar-brand { + background: url("../images/spring-logo-eureka.png") -1px -1px no-repeat; + margin: 12px 0 6px; + width: 300px; + height: 46px; + display: inline-block; + text-decoration: none; + padding: 0; +} +.navbar a.navbar-brand span { + display: block; + width: 300px; + height: 46px; + background: url("../images/spring-logo-eureka.png") -1px -48px no-repeat; + opacity: 0; + -moz-transition: opacity 0.12s ease-in-out; + -webkit-transition: opacity 0.12s ease-in-out; + -o-transition: opacity 0.12s ease-in-out; +} +.navbar a:hover.navbar-brand span { + opacity: 1; +} +.navbar li > a, +.navbar-text { + font-family: "montserratregular", sans-serif; + text-shadow: none; + font-size: 14px; + padding: 28px 20px; + transition: all 0.15s; + -webkit-transition: all 0.15s; + -moz-transition: all 0.15s; + -o-transition: all 0.15s; + -ms-transition: all 0.15s; +} +.navbar li > a { + text-transform: uppercase; +} +.navbar .navbar-text { + margin-top: 0; + margin-bottom: 0; +} +.navbar li:hover > a { + color: #eeeeee; + background-color: #6db33f; +} +.navbar-toggle { + border-width: 0; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 3px; +} +.navbar-toggle .icon-bar { + width: 19px; + height: 3px; +} +@media (max-width: 768px) { + .navbar-toggle { + position: absolute; + z-index: 9999; + left: 0px; + top: 0px; + } + .navbar a.navbar-brand { + display: block; + margin: 0 auto 0 auto; + width: 200px; + height: 50px; + float: none; + background: url("../images/spring-logo-eureka-mobile.png") 0 center no-repeat; + } + .homepage-billboard .homepage-subtitle { + font-size: 21px; + line-height: 21px; + } + .navbar a.navbar-brand span { + display: none; + } + .navbar { + border-top-width: 0; + } + .xd-container { + margin-top: 20px; + margin-bottom: 30px; + } + .index-page--subtitle { + margin-top: 10px; + margin-bottom: 30px; + } +} +.table > thead > tr > th { + background-color: #3c3834; + color: #f1f1f1; +} +.table-filter { + background-color: #34302D; + padding: 9px 12px; +} +.nav > li > a { + color: #838789; +} +.btn-default { + border-width: 2px; + transition: border 0.15s; + -webkit-transition: border 0.15s; + -moz-transition: border 0.15s; + -o-transition: border 0.15s; + -ms-transition: border 0.15s; +} +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-color: #34302D; + border-color: #34302D; +} +.container .text-muted { + margin: 20px 0; +} +code { + font-size: 80%; +} +.xd-container { + margin-top: 40px; + margin-bottom: 100px; +} +h1 { + margin-bottom: 15px; +} +.index-page--subtitle { + font-size: 16px; + line-height: 24px; + margin: 0 0 30px; +} +.form-horizontal button.btn-inverse { + margin-left: 32px; +} +#job-params-modal .modal-dialog { + width: 90%; + margin-left: auto; + margin-right: auto; +} +[ng-cloak].splash { + display: block !important; +} +[ng-cloak] { + display: none; +} +.splash { + background: #6db33f; + color: #34302D; + display: none; +} +.error-page { + margin-top: 100px; + text-align: center; +} +.error-page .error-title { + font-size: 24px; + line-height: 24px; + margin: 30px 0 0; +} +table td { + vertical-align: middle !important; +} +table td .progress { + margin-bottom: 0; +} +table td.action-column { + width: 1px; +} +.help-block { + color: #f1f1f1; +} diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/montserrat-webfont.eot b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/montserrat-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..0caea9169a83c1707e3f3b849a685200a4f0d046 GIT binary patch literal 20979 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 y7G&oLkp@UW + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/montserrat-webfont.ttf b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/montserrat-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9953fe62e0002951d13e04023f534b504f158f5d GIT binary patch literal 42692 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 Lv@qdJ8`1v&;m2A} literal 0 HcmV?d00001 diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/montserrat-webfont.woff b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/montserrat-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..eb49333f716be52b58f29f6c866e40d73b891150 GIT binary patch literal 24240 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 literal 0 HcmV?d00001 diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/varela_round-webfont.eot b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/varela_round-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..dfee0c26e7bf8cd2e2d0712a6835f3b910b637c6 GIT binary patch literal 28963 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 BmVN*L literal 0 HcmV?d00001 diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/varela_round-webfont.svg b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/varela_round-webfont.svg new file mode 100644 index 000000000000..3280e2c43c0d --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/varela_round-webfont.svg @@ -0,0 +1,7875 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/varela_round-webfont.ttf b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/fonts/varela_round-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3ca0666937719a3b757dd792d770646fd8f8dba9 GIT binary patch literal 63044 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 }E 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�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

QK-H^J(i)RJ$m!fF z*rCy2_Vo@&biKoHUeri%jCUf>;xLj(Cq^dZ8jj)9;Dr-iu9aiWy$Eu0OV-Ue*7waW z){l96jP3-kTkcPnJnfSP7D@axHj*rc0kx~xd~4kG89CmQ@29Inuafso zgF-Q1U@GHvV3J0Cqw0>@k#3@{v2u)7g~7r!>Pgxwt!*hGUWJdh7zA?eBi!!H%p0*> zmx$$@X|t+Rk;XUou%00Q0JB<2q4{+fAMIfEb@e zOElaF9S;;;0Gg(EC_+XyAuae;XncQoW2 z+mg)XysAp2=jXUzlKSi}qo4^&KuS`O0#cNK5&!@I1#&WP&h*^o>nFsbcO2y8^=yqY z)UK6GP&Xa*)wb8xtR~^IcXg+K*8wJ0$)gM!SI-QVe}?Zp?uH93-o%TDcYr6t6O)dm6*+HX|= z5%cOVXz5Xbk4KDzqUWs?1R==EQm#5sXk&^&N0-K#447XV;`#ntnPUUSp+At#$ycWy z9440Y&MV-QHVTjAD(hBfc1kc!x5;YDVHYPwt28z{aof(?k6*iaFVuM=H5^lnzRRwq zL;EvwAUPeMni>wT!9fRF>ckqTFCIQ(yY6mImcvDgg*-5>E_>iY)hF9 zsx22{{k8O&)X9!GqwuV#%~B^IwYaUftJK1zSvyVJTn{3CcRTJFT6;~#klei2q_0ic zuDD2xjgG$ur7a~lA3_4$u?QlzVOWgYoc_q_`}-oh-?3HlG}(fGQ~OsRm!zZjJGeZr zo%5-@>oT;XAt^}>$Bds&JXq|YGafW{#)xH>l9t;@=#+s;dop(>=J>y7VqM8-g_ZeA zRc52wKju5`v$YVL#9(=R*D-AX+i`M5yn`r5O{hflx)MG~wRCa6QRP|EGj#9Q-&19- zrE(n2EB^rc(e9pHU9j@dqDxS*ksB3_4r}vUDj(5W<@&oSnl!x&;069;pX*g**|=nIk_2gyZ1Vk+-5;a)SBSj z)tOT-eZ1u?;btZ0zL8^HE}whLbv9YKw6XUSx|m$9JMG&8)U~v)Nq4BJMuw}I38N*S zITD;wo6r+nY2K-Va;XhAGm;mybgWk$O6ncP@U4B~R`}BT)tIqWF1N(B<{@L)h@VE= zfUd>eyG=5s2(&)Z87b*piAz$3$jPhTzm){aq&WeExGZ|r(I8^6&ZRrR^3j|?&=!+2b_vYw-%`COXx{U5GN z6>O5-2g|d)9Skh@XX$FOf3}C9GyeKLmgF&ic{ScxrCR?0r8gfNzjeN!Sx)WSeJ|GE zI`neu_>FO&hKFDC_FDcgVUu?s-ft53C4_g|>^M#E4%{i!N#m0K>DL=`AlXnz&A4<^ zPi`J?KXR}XcO)Bevii((7m}Bk9!|Xf0Gqk{A90HIYP`06tCx>|?V;!F#s@vb`4rA8 z%i=i)k->3M<-~khZLL3r!31guBoU}28uRnDD{^s?qem)Gacw;s62U?jWb~}F;uxHp z96B%KO2#2_n1no&r7}RNSIzNtyn+%dCHotOMN21ul?a;yZ;f)UVNflQ%1pML@fFIs ziKtT&yu6kbwBFTytYT1^!twwB-gT|^@kkYy&XuwIzO|uap{j_OoW4vY8(!6}80iSu zE=!qAnC9ABnCXpDJ>|=ucN^9j;vm%Qcv8{vrTnr5M_j~7k=LzLa}hEoJ&WUSdc$>M zo&p1rc;nnZ)j-@oZDgJzLhdXL@HoQCDY@~hvF#|a8$OYMVj4WD>0SF0NdRH6(ifz1sp zm>W4Z7Ub_ps??|}Bb1VrSk=|gRB=KZa zB`F$nuJ1}QTVS{^i|ucl_)!*Jy}L!CTo>)k$Ye45!aOUE%4%_@LrUH%nIWo6K%AtY z3)M~{)OqRT+#N+(5vmNP(COW3W(tDJgj_pX7e6XC^cLj5>(`4>79TKyjzivsHcd)c~qdVPmO7V3MDo zInY$c9M0miZlnTAn}a>MD@}&Fr36=JrDUr&p*Q?3KT|Z=xw2{YG=7VFlf#d zCK&Z`xf#!9;lA12+l*vY_oz}7G$Z$fTzo6v^(zfsl{vcl^*dP*YHX*s3nP#6I0&_H zZ#NQ#DOrbDAuH=y<9(qSHG$40NV2P|i=9p-OtkRq+k6wZz0&V|^XcNa=M%}qj_SUZ zWb)|y7%dWizT$|kt-PeI-Mh*#ez&4DW4*DQ`y%~sf%#u0#WwM=@vojWQ-(PjaZZXg zOrj8^IEfu$g_qzsJ|=t!!h!BScaNo)aG<`lyM z&5KAuW$BYJvkI-jt=P)uu6^j8tT)N(A(#U?rn6Hr&#X zaZUtiDTpCU-Jt7ML<41#O^sTZ1+>Mg$c~5oJBqS_8dE_k)};a!kBYf2hSTF#TeZ22 zqFEc@a+MSAw)t&(>BFWrs$1ofyghi#YyOn$TxqRzu&u@pj4^Z(&*tLgB&HRw@}%lJ z8qlt6&*ijGqj6qtQ7Zy+M$<`AYJA+IzT>S;)FnwMc^N?#N{Ancq2{zTOZRGc7ArFj zUvj&axJwluC&w7H(X!C%Ng#CBY@ZF6H~)rFXA8lB@p!g6u0rg{@aLg_WHw?deR2bT*?z z1E_?x>rgZuLtc+sU<(T*=}d@qOIQ|7KnU9EkCjd*d-}QB$9doPZ&8mC055ux))K|t~8xlc23w__Mn;7^=24yH0M4nPBgCD!|2s3$%T{cs<*m zI;RicAQXPFlyn42$t)Wks@fZ2CseeQ=oF>jZgt3{twZdOKG)7)1=zdlXumY681P=# z+w$%*d6APLM4pw&Y{=OcA_`k`N(^1Wc=pZ3QziX5-ZF#_THKLty*_g0Ed?U0IH%z zASiM)cFK1XV^&21fbyCFb|*?#pvYxNMYO2cC~6!tlj1wifQQ=NeJQwIz{j?jd_$8= zSZ%eoog2jDT~>jw2=6HV==l_VA`5*>H&#Sdxw=Vxum0EF*!ggJaMcMbt8BQg58(bC zo*XL~93FFw<|T3dMHSdt=uWOIxROw&-DTF*wMbf3VhAF+ms5nCWT@8?hZh$|#9{Z8 zn_j7MB}AG9v+0bU31tDbuJ^BJ&sqUIgu=xfDiMrf}w0a+KC7SWF3#GdMC9 zNw$;~l!x31c(2QKRILT56s|0dNE%Zq0;GEIXl>25sl=5Ig@|n_ z=}5!4B{N;s%s|mmzhI*SJs-K1y~Ctj+Jc$ zY~wZ#0aAccB>fiF#k^>-stl;*wQdzdVuVF_q>q(XCIV7Cguac2v#~&OFiH;O^s6H< zk?tWwN-TmvDPHdyRDz8ww0*RLox@1(PjY3shwR=p-?x`Nq@>HpOWGV5{A+G#hjmP-xB`C&#!qs&WrForw!UCOner2nzfJ#Kan(j1`+Zgamg88@2@nYV(=T1p* zU$?cCyp~Dlk!KE-Os=+8nGE4cRqCgx^*8`JTS``gxavtq(?OwXC=#P{O7sZ(3j;&r zO4$-5FpbAt^m^Y-#qUpURAFYh2aNH@IQQKvZ>hHb0MTBb8sudHCS+a1b_;S`Vl}ij z(z!WQQqW{k)Y81n}ova}&rL zPggM+Hdl?vpmo&6dB8q)r^CM+S7PP%@O}?R>|@!IgwuRE_&pgB+>RlY?LTsJUA@lO z<*;+*Vx%cQLe~}bGFFbaO19l6#2eQ;D;e3jC_XW5dWx<=!cH%cd_GqL^xsI^)U~R& zN)@z0OP-lB2_H{d!8qzfILt8k)2%INM#$bl6YbeItDz!Af%f(0lgS$OKApp_<4msY zWyt-2_LlMUc^AQ)Gp-;!0GL^9HZXz)Ys{+UR2Z zm8kIL6p}0raBkvlGH$6i+I|tryPwD#;`|yK=41_&^2e2!?fAO;hsuNxiTnl5l|`H@ zx2Lw+tM_<~Zq%+iBxgU&7u>%Dhr(m~MC^V=tgjEpN*O+5$l{x|n9R14*lIe#vZF`n z4@D>fFJPr*>pfBtip8?`MlQ0K;+J=F_WNBq*W#n)LDeoVwfv70PlDpyD?rn&aw9XE z2k1J5YAQ-q4Fci?ApGj71dwJ=mdd1{YB{~N9eUKDDmM8_MwBQ@fw>_`(w!g=Hz7Z4 z;qkEku~ySTs#vxu<8@bwq0Ajba0Nmg^sahTAY>S5I;*W3kdRDv)6=aam>8tpCaYva z&D~m3?Hvx-AYApSv^52lG^0fIr;G)t3yN|=wXG422rZm-^)%wJrlKXfARkJKMTbfR z8C#^PnII0dLAC10paizsRaPWHz{*Ejx+9>7(URhBYfNKNs1Gfap?09+G*JF3Q&8k3 z)$|7Ss~hQM(Jte;7}l`=0BxrIwy#Yb$S6> z_0cXbv-kE7cVoFp=F_5K`0Q0;`)hUDX zZ=BMK+X(3u+1~qG;@`m}3-`CQmXTZ+?alKmkuJM#u5)E5Az>*`&X$21P)d!@T4aDZ z9j(gOr7%NxG|DYSA?gg{iBb7giXsb+lsK)a>qlr(C7|I8sS7E(dfu#!w#${Xli;-+ zTH4df-34#~*n}I^R1$$uRdxKS8Dt5T9%v%oG_25=+=q}gqd{9DvRMwOL91efYyk^# z#az*7N|G4%7V5)j1gx6?0VI>*r3D&{jV=#m8sc!<&G)k-{4tJNL(F1BUvZt3g$>Cq z!Q78YDjgRgO{9%eyQOvE(|onM``EiU$^QU{myD_1Q)0&3t;e^!pR4CVGrQmXKNZ{; zWwGOnVjN1DeU1-m!`D<;6>|MNM{AJ6+G+nhL z$=ay}wR?SkDip-J6?H3B9Z5Y&u3|+iP|Zii!gWd8u^XxrS5PZ!dX@E&}274+P+pA@?=TYrdW z%hAOF>?hOz054^=_epw}@Ar6}30d;v-u;XB`;RYjW?w_9K}i<9c-*B&LzQ+kE6#3g z5PH`+voi*9uTb35N+;IZKrCk;lz-7Kd zZR1XeA__~615vS&I?dW*sgoX}Qu!d>nG7Z~iS>b`lLbfRJ~q=ukO?chm1VYKwgHFgK@1Q z02=Y@kgrXVb59FSOo#_9#^*&xs^er1x3y|`jUY70q@-M=jYVL&3JJJFji$sANfJ~7 zMlX7|fldRAvXmW%tt&*RS|OoHy|t>CQ1fjBr)i;3hTt4SQm(F)H_(+Qav4Sv*a$U( z{9Ksz5s1qE_-;B?Zq|Y+YD~;3$OfRmLZ6=clFJM-lD8ajWF;v|Q*ucrzz(#wt+y&J zCF@hs-rxOzcbTa1d0%$_08QaoDL_3LzEd^0(;jT=bi{9asXiNA2|p_OUq}5pc_k~U zK|a^7tLAiUbm{SxBjRoRhuOCh%V7*oHOz1>Wp>#qmh+KNwOgQCkfC$oUaDOd4mwF2 zo(gM8BgJ0u{k8Xtu^ALU&+tygf(4qiD-jC_lYz&9m=ruPx9(n77_UO%dIyO{2> zj-9-{XD=%nR=BMUBkesTdc6-?<4W0qqllfjdSvTVI0(Vyw!7Z?b)y)HE;zaf@up%> zVng17%BUnOLy+@`QvEe6S}qy}gsXcbH@!N8Sth7PhVALEr z%1zGY6d`>aTxhuYw_PB;a(#>9_%9kKqScj6)6zcv<@4l1_fNXnzU5`(yCs%!yi*v_ zgMq+f!jlIX4|ed=DN!mVMDB6LlD8B}lu0#CR%EZWT@ukH!7lHM;@+%F*Imchmj&2Y zQ0i7X>siw&8B)SH@TcX0F=5mE-UDh4Ii zKu(m&iBLtKHLBWzr&2)cQ4BL9aMX07LOM&U3%~8Ap#%rXMzpRZB=~$rr{vPx-$6b# zEX!=Q9xT6dUfW_7hZ38xRj>UO=@j887F4KX8i9y;O({acy#7K-i6cn&J1w4RgW)~x zh$XK0Xf#n@!(>;E$))ks8m{K0 zhoO5v?kh9H*k#xfR?F;^t+yLdN|2$=tL|+|>{Qo(A6e12)a2DBl$U=WSy|*? z&1c%3)iWK~1;3l>+9z{NlH#FW1fdauSos@O^ZiYX{{Z+k{-;lIcjqlH{y%Fn9{GPX zk8xe-<8OA;jWdqm9iMzD5;)%pjA1t^3fe6$LX@Z8Cf;kPC092|u5Nc+y^{@*q#*f6 zO8CAk%YQm^TUXM%5s603$&x{FM2hon+KGW8as$mRzur=B)U#;R-?JynZPlVKqR>N7 zij%!PD&3^oalz>e3R()#JFd8$Md_$PElgX7YWh;LG(Kac)LeC_m=W?IFVS7PSYP&v zwz>^M(3J$}E5;;qN0~~O_)@rld@*fpOF|DYN;DNHLEz$v)};wS_O81EXl)`yo~7FeOb1_KY4D~62GYva;ZO(8 zL_KNZ262`ZdbuD3p(O&WK}XIwq0+629G&6az3zWIO3wo0xlGzy(Pt3?T)>m_`*beV z(8tBSckG0v;G6dsTeCU+v2VcIVmS_>1dFPvlN4U!G)+|4 z7~>4BY6SGEq{zeAV#B3VCJL6W+V=Z7+@4C$7r+M4>XNw793Vn>OU$=r$jW; z0aBIu3z7kRTxsN7P>-d)2`(+ZNfz0(?n;aP9p#s~+}{Bw7aO&Gu-=Z>Vw^91%ZM#V z%+K5DuOlfvMa9y~X5psv)k<2GuQM(VD$TF$$JZzLpTTln?YDjFsjZOvSGD%Phhp@U zcVH^lJ!_n1px8-h?dd^~QBuA%s3*ubRgF3TN*0#Uan_w81HB-vR=$+!5Moq<+HRh; zY6&O7qB)nzp_OzbRn}p-nk>Ss^hXfvn>idPkZp3G^jECH=_+xl*oHM?Q2UqLh2WoF z&!kp9q0`l~4f|V6`RI#nWe3Ab^D|UtHi9Cu8&A%wVM>GOz5Z1a9BUyUr5i!kiUAI- z>vrntRwgN-@t(xx6N!(@dz&?`CBmd6Jr+hu3tail{9t3zXWj>(S=iP3xGSe?roF0n zUzZ2MykGRki}BHSnqiFTSv{-T{1@!I$@tyU~!8wXH_wN>Z*#C#f~gm1OGmY|iCTkGHn8yFe)@S48!zV{W5GfaHBZY&5G?wibPj z!bzFtNGJNMO}s}i#w~^9$Ol)r^xH6H?k_JOpR)VUOg`jjMY@tcGDH2K(iR^e62ik(LvHWpPF zjMzJBySi1xsJS=N)bRyDR+V0^Kseik8y~`~OqCNMNWIN9NIJq$;w?g>Bz19;gxx)A zw#X&3Wm=W8B0+?eq!CrIjZz<>?n@NMAIrFw{lG$PG4VMEloFms!%5oQDJxc=dW3+M zTtDWEHm@*2JvgrSMlXj)FyB}rDGgP{hwEi~xNjM95Y+xPkO#<5t|7b_(3+SGXHQ;sZwdnE`2od<<_ z4wr}LIwMVsd)*C|XY%9j0FI20ILqPqZXIKN^YZ|dq~6zVJaDxW@+2DX-u*QB1)RrvfSu7|7Zu37(hteP_}o7LD?0r@jJV&|x)0_j|=PZ<@LnoPfMM#?xq7g?e2)VmL=eybL51{^+8w2ky>nYC@1t?jJ#_fc)#tb{j*QU zLapvY+qXCD?j0kZ;9tkaa_zG}YF&ovyf#Q=sj^7a4cE7YKT*Y%i2YHgyVh5K8djIo zsCk}d82!?e$o<{x#@~fm%aYU@PCTQhTF(f8TX@ASpQPXLtxC;8krgi<;}2a!N~(6K zMuj%wQZ3vbQ{{TXN_djR9(c{@z@lE~j+55_?z0u^Eyt~|okxhPfazWnosctRTR(@((Cb~8! zCih9zk+$_^gALrgjzu4Cw+Ttpt#)nQs-Vi@ZQ;G;&G4wQINu|V-y-c6O(l%i70Uqp zDJ-n{$`arqw+B$9_|ue zXE%6WxKc+tq=G< zw4X4nS5-j7$tS3+%@v4@`Q5birDz0U| zg%S!$NgDN{(FUAN)u&2Uh&vsyMO7p+ANx|F(yJ{(R|tW6jRA}}$v#_tbYc|79BoL_ z+Es~&*vp9|TAHLlGSIXeie(}pge_h*YGWL6%bR#p3dWYhZURj*VHkQcK(MD|AHzK4 z2_e*IMzx+pB6Bm(at=WIRH)k4t7Cbj6v{-&xd)#s+;ugc+&^cTbGwzLZT}mOV_ICT8PC&SFK9W%(Zdo%Pas6wIYgS zb2p7!i6v&@w!nC@uP+dUxuB+KeaBJuoa?HYb&V)C|lliPK|2am63isw|$ZA{%72G@Nl6B zdAAj7!F*qFcI1BTd+nE6Vq-HdU~nvrkuiL6DaOQ%*yx7S7$sI8;!&>E&ZCnp6t=EP zIwk5hPcG}==(`qym``+l#+!{_74EWQ^RC>5jQ;!CJ-0(PqA$6Hgw zsNHLA+FXO;rLVV%Bbho#^XEh*rmTG+y4L}bx_kDV!cUNETU3e zUOr0hN`Xi!X=hTAVor)zn(KWY781Q?uGGD8eUIV$SDDl>m9(xy?0(1CVKFf)U(zeg zv~nmAygZbPl$%vlL=Gu=d3aTpg{ zuB_Mr;rNrF8l5RETAk^rK~_!CA+6hUl1WvwKs+Y16hL}v&=cjOCNzkNPK2BI(M2^9+V}PAQ6f}(U;|2Yf|%2Z+gj{)m_sy+uMq=(3h^~iPpGsolL?I(JQc^wHY9j45h8duUgct z=oX3IHQ6pr$uTJ9{Dt;7=Wf(gk)6&dY_jo3)QF8CDt=1GidaIe{i2brXtUENac`4Q zhvJtHLgOdkpM470Y8N8Jm9$m?pW$7tU{?r_KE=G^? zQ-#+DRH+9_(6a4g>0&jPmgs7jy))~%sB;_{Sd|TC-dqH7`6 z^0Sj|_VRGhqAV2qPJrP^I{65#d0itKYlDw}63OFPmYT=fV1D&59JjIDs};c{GKRZT z4j=yjCC-T8dNxWbh+FfEr~xW{=MMKrRQXaoi9xS3)@{ogN;LWs`g{9di|6v8&drRi zNiX5$-`;ueA>2Hq*9%R!c6={hHzzVxInunrUCK*+JDyP_{A&cSITbm!1pJ$u8m+Ng z9gL7h>Hr8~dsjk)OnK)^soFYIMj>or#Rik}tr0>D7wxI1p#hffsO30OErm|v4QHDk zB%GC4TJ(srpppnk`O{RcOm-ZA+j`Yafiam9ONu6~g9BnBId?Uy&{H0fAvdRpYA~n4 zHWgtiGWv>j2AKw+%W-QXT|P8O6%}PE7wbl)f$^;%gnVfdt05wI!o+X5PfFDB^r-3} zt*9`qp9;e@K|>gnmcUv~mYqQw5J%xv)`X$9_Q$q44}Fsyh=<$6cUJ<_Qh66Bn%jpR zI}(+Kl_qPAiy~`D*6JWgNF_uqB}?>pcu%W8!#MrYAbD z@k(|HlZcfKzgYl}8m4%SY9ydcaKCXp_khHEi_244uHDQ+qhz?&Z69@xlEU;_3r=5U z$BJ$9ze<+#E?W9tv3yh2FvBKL(~9hT3O~4?Yg{Li@QME7J*zV4;*h_8%Q!=;FHFI1 z7cwKL-A=@~CjC*@pdlRYqtf9xJJvWax;*3FyI1YunDS+II!XXE)ibK0|GZ9ZpX8@t9Qe(61ZxXq^HO)SUQ#xwp)7}YB4!& zxfSxs>J6*TI8^4zQH5i%(xzCYCf|ip?6H(fR~_O-{azOQYkiDO%TbaV<~X?c_6l1f z;;O%4KxT_)^8Wzsq;B#1$l#nOEP(C@^&izHw7;RoF>E=LTWkLS3d0*u<6Rzwg0JOU zPlamz8vG3y7L@Nrcl)(HBiuMS&hK|SGtct-miAg>vXQ>$V?|q8Y+u0*grt0hdRwrS z+p?SH&a|ZGCdEJ4<+TIu5T6UzM&2r*+e*3P?%=0vP_PE8l(sUas2e_NmlJ1=s*AaL z3fS*G!yfAU2ku`C$fP@v;WF`D=K!UPsjpH;>GRT+bqOpis>4EmZD+kNKMvyO2Bf{u z*b9;0VoS1(d`|^9+LK;Ax|{%rQwo1}sstxErwHb~$IZ3H_y#IwYm!L+044@1Gt#6l zP%ax`Dpi3Z=G6AA%IvnmHv6?25R}~#t2aI^{HZ)y9&AHzl5pYXt+$yFD8eea_bH+HY7?0jQ_BOxZ_qU!q#@leS zGm$>hiWEYV=4KOX7IprrAhzArxk%k-8W4w@d+p^Oa`{KK`WC!3TehON&xa-3`@8)_ z4?XUOC+>eEUn1o$Bi0B+Sa9OD8HWZVBWp2Yu#YQjww)4@_?wbR=jG&2B73Famn69) zxg=9|>$vL5?6eQ8R&-PdZlm(2LDWi%&qy)tt_z1DN@{V#hs}_5}T4qHUJH4L~KfY5hAOh=-w6ltv$u& zaIv{Zbf#fDbH`<*Jsn)zB#4sUY>udg!d-YP{4N9^m3Hj@m&lUcamLzziP8GCe&eeS zm2s-dkzMSttNB_YYd)6??+*^hX07FoIr*66EnnS3uC%n0dJBQATQAbPm(zL;_th4E zwRTQE<0kK~wC?=-XOhV7-UZlrIY(?9)K#KhHdV&q=}L}N-O6uSekY ze#Tv5YBN>g!T3EH2hMn2Z?)aP&35aMr)GZxI$k1bM^9QC>W;E6;8c=9_*NX7QnPYU zml(FaMOPr>CZ8j)CZS2P%}|)4*fohgK%1I#EJo|GCGZ|%}e&srNpQb!vtQBAxl zTm@m$C5bIq^{0cO5+S8RQkS?@u4ADHKyO3Vl}sYaO091iZNRA^hm4dwl{wJRXf-wd z-EeFtA%+XvcU#8Q)xd(65z?p!KH!*K1I0)qXx6gzTN`*5$3lmfpNnY)w(YolD}ima z!qE@*=#;JP^sa;^A@ZTEqo}Kt%Gw)wphn*sWidrJ82z)Kfc~*psc225oeZTFJMpjEd^T?M$5QnT)~-eV8v2hOaC|!xo=A~z&b%HywBDzjgf%Vsz9o!}3ww6m zYQHBQDHh5IqUCXkL!=;Sb8ABdd5MTCAW@!jAK$Izyw1VMkga7Q-bcQAVVwV?jXN zQn02J+TS9;nyI=LCKVDZiaXS5sYqlRf^D{nW1`c+dr!-`q$ha;2x}d}OsPCC8jQmZcI@qD{#p z^}TmGWNLIQ#-+cX_Rc}UspPk)Nk7qDtcyv+Yqqp8Ztih8z0~%3+)mnMnpB*>3rucp z#oZvOaf@<28SN)a>{|;_2^wxUuPM~=-RxVCd}H-5kFdvj8|=z2_;p_s^YwzxnV}2sC0JLgk4nwQAt@Uq5RjySay{oEj8BS zMUL3I-Fel9(1eeQlt2`awC5!it7F10PKfsBGUAMTeeGl)YJ3sh(;M{iockutw`4O9 zHkFwBlhv5w$w=`dT|vLn7BA&2tY~=6_RF)u9r;07g0{UrCTMtcw%y;f->ogHEi#>? zq&#G{k?GjiP76ZB9|jZ6Iux*a)zL(uHzG0}ghI!KYS@|#k(_e&5X6-fS066IMrp(^ zwB6L?J*MVSIhPz*G8iSfF^gJ+JJiv-{Hbi8F_wQnwrtm`j?i3$G@;EzFqi<%;PC7Slm^8 zL#V5UtGOyj!5VM%T*Z$?EB!Ui$By=MC95^=9ox98#ijC*y1>_A;i^=+5E#i|IRfYY zkHw(KpO#*YMS#nXy05_v1t|W?$w^j`Rei&3Z-Ez|_W9n@=c&)*!{N}nsPjyoKM43A z6vLkCCNJ=9l^>N+djj)+T_OEVFJsr(Kjo*-PZv+#Y+uW7AK57sPkPA;D2X~0mo zdOuZP4Hs^lT@Oo6S@`8Ze6wsaSri0VkO3u$GuarlbuDYin{FBSem~BrTXthZE`xha6Xt78h|oehCs(T#wRMJoNqSmQ_j!!`OH~fPm9ZubvqSFRitC2D_`EnQMJjrO|D4_uNl|6GR2ym zy=~7`-P)geIr+G%(@sBY;qpBH03pvwX7%S^4yA@ZXRqxvWiPSSx< zkWbvL2Hq5`f{`&R(N$EKP|SptD{?4Bv6%EC0rS;~fGNpnX%|OPR&D`5!uy4k#4BS9 zAbvG%td{|!Dg*QWZI{a=m8k1adne4|TNxClOv!IuWc+KM?V;R>s3~?bK|LtF1rBZ0 zJ}j=Zu3(^tqK>1bG-fRhA+zZ%9u^kZN^K zr6cD|kOmxCS<iO)ovG&A=ehcW_jEkx8mhuhbB`1mQm?@4_t@F)CF z`JeFiFRP6WEB^qltNd?=a_#YayEyh4la4KFF1n(pR7#Yk8l55Y(RcAf1vgsQ5 zQh-9=QRz~ksMggub)uOE8*6QiTNVMuD#`pR*sudSr6}oFCK``KVM{kXYRKv`4NL_Q z(wU*CckO~kqLHv1w%r9IkVy<|a_*<4R@r1rj|c5%GUuv!TxuopaR6RJCn?6_z=ng- zQe{XfWw3lVD(9dC=~m-l-N|oa(Q$7?yj#&4Em@TKFHa@uEDMp@p4Sie7SYam!ax3| zN?(n~<1Bx(WcqStka`zABz#b@TU7C}cz>%uN`mlOIeK=k=3b?4*AJ=tK5yCSDcs|^ zJlD9H7UuH#>y`HD^kK$IP|R43UjCG5%mlK^Kf>BT`BqGf+qo{Yb*BZvF65SpcO+AC z^sYL#M6&QM1e&HiO6pv=zaAMFyT`)4S5CxNB3~HP3z6WL1!l*kK2{dMwL-k5I+r%r zEyq&2k0L;7!1&d+_=PiA?56@_niR0G309Ttx;6^E#Oc_xxfgzU?K)&=3Y`s;YhOWL zivIxV^-82$JW3d6DdU+AA1Q3gK>;L0+l$Y(&m-kf zVr97EUQ$u({G92?cIia9VQzIsFZSb_kI4$z8m0jz3 zP5%IPPsO+IJm=?b{wM1ZGu;0Gchq*ye-%9V{;kIN-a`KXkKVy{{{Wp*`o;ckFUAml z_^^I*=Q=+WpTI;vaG9A)zGI5I3sl@r->- z;2k5qJQ3!9?M~Toc?vyN+W9m^510`0t)up&)t~Mb-y0U+`PaH=pO}w0N89rSYq=eX zn6LXow&-I0e@f3}*|*{MqF?mhj52ZM#?3q={xv6^Z}57X{o*EapKA}G{l^sK@SHtW z8s=f;g_v{;zxn)J0h}v_m<d#zZ5ckxbv9{ z-HOZcd8zOW^8PN`&*0pdtvG)q(fiej28Mou=BvmrUxevN6 zc&1eCNpVb#Va=BZsOx&GaDcO&-gN6)ZO8zKZADkBw-7{&r&H3cOblhWK~<_Y6cpE* z)UB2vw$PA^)of~?ZBa?vO%+m95$Q^dNmVk4YI+O#VR7hOr`(FU=3&2A2f*=p4r1~Z zZL4-712NOB_4S=fg|)hC)P9)7Qpn!;K{Ngg&{3~p63u6K^BfwP=+ZO)-qM75+ zjx+{yik8OWn^f|sBN0Cg8-S~QR;yB?A&+y`9%4%LHrBZrtfFYBGd)OuYK?HNBDReS znc~yk?_s>(iO2=q?*N+zo8b-4y70z5m9pNjBF_{u+SY;E_poP+3B_*_bUb{f&2Pm=!R;U7(3 zsym;owODKJl3tqostDRWs_WcKzMtSl2Mn`6ReF7e}8Pg<5ftmEq=%jSRAX{o3c` z^-I%K+|uk?FH)i<%&9d>>FW0$ddNyst6T0UmlR1P>vC(0He(3joVzE+IXq0>9zvsK zB0Suf&$eu)-DzQHT2Fxr0E%llF59YlqHuLb>o)}F*iUyIyNlm`3%B^$mKcxEa7_Rm zjXAc06*ZR9P1t*F?mBqt6>p&V>!@1ut^LdIU5~fH{@l+=39Iqn9z55?vGF*+Yh%Rvbo0_^p@%^p>2ef zHiZMN&rkt8Kh!z#q;YLJ!VazeDSVd%V(M4b6}a$T)_M2ZFSaJV%y-Q=K1lkYc8>tV zoQIj^fKUj-@~yq*C-856#@9w1jn&?q4$w4Uax_d={_3^j~|s zqUUw!L%`aQ;x+*ZZ>Q7wy1(!R70%U2e@#u_Q#;Wx&Y;;Z@vMsYI z0Qx8f;YEkZ^wf*^>0)j)*|xInynCD<+W!Cx`7=ejUXPV8L+odQ`L7h@ox0{3P6N!N zDjzDtN_!iSir^tlzQcvJje3iX4~W!PhRDa2skli|r$%|}v2c@%;)vGdru$82aViRq z{=;$7tCRwVCBBzY*IGn^1?pK^^s5p8hsaWC(h6j3l@^v&S3qi;pYr7GK0Cc$?|45H z%{CswBOo%f8eh=kIJQ@kS{3qGXKDOv(sUeEdm;(&t$kXX`gN}|^i%EkYI<|MIIcs_ zyO)^mHcxWoWo5f4Zn@aeR@R#r@IzrKA0b}aR@~&}+H`Nt%1!o+V>oLPplo!0^4>Li z#!^KUD|~~Dy@h>CKp`TzSvcEuMUizQVq_aKLLEBZxsF=uGe(uoad5kz>`S;DPEtd& zID7csWrivjEfv4^GeA8;ODZPa39EALtJqf}{{V)PUgzu{d0rD}BiX=q9k3}n*a(wQJoby8BH@}S~M3_RjfdRhj90r7i^ zNkk*f%T2YQkp=po{S^gh?&XnV(v3opb||5>+|o!X1Z4|vqSPYCBAWErdiK(+L8y3| z(~WKMsWMdgwe2@atnCJ&0zuj4=}MRdq1OE+pOF5sSMJax`hXvgjd0R9gLgOi(-2n0 zt6G&Hwj(WS*QFYOl8q1`UVv&kR+MNe0;6szOX)yiaiS?|x#>_Oq(;)v7o?DA6qgbO zSF|WThN~?s*4iTpV6=2Pwm{3rb~T7Dy{_*$G=J z0F=4V0tUT41bru>^*3d0dZVp}n(gVuK1Z`8_usJca?-f+xmq#Vcup=XxOoO0a5nR2 zYlutif`x5RDeJAP)_=KKtB&e4b=~Vt({&mk`G0-Ay>U1$WEYWNCCH!^GYTV1jU23M z1FpSex8t-Q!l}R1Y(-YJE1mmLRj%X4{^vc$X1mAB4p%(t6An6l-yZ@n+ZrPSqirJk ze9u$+0QpDio~bOEYV=$eByck_rFvC=@G(r(=1ZSzFHuN`B(hUP6?W=C2l+A$CB;ueaqVYB^No#b6l%AFOu>(PEF6xb;)xj$WdF5JnD+p zwJ7x@n&jTQE3$KwtedNS=1I-Xw)Jcjx(#M%Mud`A(v^aPti>u9G%89C{jT2%CZC2-J^w*Xg4y45OK62kU2GGgukZnbQj7Sh@(5Ho^X zaD>+~Z&H>>a9-W>KIG-jBZgz$pDnbPpDlovqqLu?*WPfYwwoR+aX}-*)tLCVawWFh zTYkmf-vqnfg|@89?^mrMbS}ug>1)t?^mRUHI{lprd;*B-& zPeY||slopMackPXMT?XF05XqhJSQ5bIK)0h%X3LdEJVuvrZxuqd3{wfrMh+M0&Htl z&(&CVm(r&<-$cG@jGumE_DvDa?rPjt9)OM>t?xtWr@>dGOM6pQ?8gI05xBgfQL$*E8sX-P*)D2H5G zcgFYWPZBeV9)o2^t!uRaA}b*!P931uw5SFS$tc!?6%R*HTblK$C!k4)DjR@JV!0y3 z!=x;wy=s&ifu-TPtVoH5LyV_<_R^}FVGoIs$zmP#ak3qb_xIRwO`qC=DIqyU=;#$D ziw-xv{prFsKSSmjxMeom_PJT@THp0<3fT^)kq@@ymxQ0pvN;zQ2|rsU6Yi7TdeQ#> z0L^mqhf8H9J2)T5?+cf$5$joRjoCjJUwunIId}0l?FV<<&vqOq^%Y^Kj~~@I#~7SX z;$^{b)~I!B&yLsQ2tRy4^5@;^Pv9VXhR8kt0OuS}ic9$a0P^$*cmDw4sgG~Uu3bsK zFoXX93SR0H^G}>(>R$>1%#C00mhb>u-&if6l+| z2j(Nr5%&DS<983RbC>@BXm;I9U$5yrhak5v;*W`YPDj#^rKen0%zdp=*?%rGEBAW&3B^ImlP(-PplLC!ot?Ia>$tygX!}KW(Yj zC6~hVeJWoFvUxE4Yt;Tnq<@z8Z!tVSfOms2hvj%qOEKJDCL$Nd-N+TP%ee)5zM?WQ zVyz)zAPWO~SFZg#jIF}!QjD}*E8E_Y)#>(>V>&eSTn|om(~Y*|2Ay>}5H+u1k8M!d zZU&1R0gn;KlnpC-f;Gk^Uzp%w0#w)+s;)&9%@j^S9WmQGMzxCTp+g{CZE~1XX&;qm zjOrssZO?eCuRgQ4tzgN8O59AtJ;x+LlW;6AT)UR&RV@uu+Rj@igya3zl?l&ELmj{5 zvm11!3k^LPrrl}VI1~v&#q|Vys>~+huG9YjT!+SVQ~s8CZ@3-d?zeN6m3Ir0WbYEbF(lalo}}+LuV-WR6^p;!w@2F_lRH-WoF(@ydyC#b z-6yp-<9d+JYGanTW>R4?pTSB($^C-5_PVYc;ko$G)f~G|w8FjHd+nH>DKCR|y_R_2 z5|)yQsK=_vJQ`!FAc!GOh>^C1RgnE3#yE#c2DbHCU&(Sb$n6cO-dA6!X=LPzL zYuj|pPa_RejmKBuxG!F(PaZyAI_;bGAXpql&s2G9OffYQq|5wmZNuBP+E+#vXopOw zPscqHbO;<%nxLiYfnUP+vAmR|DP z#;cMFESyWU-Pz}bBZTpMzGN@x{VN+XUhl*0+g0i9VqLrTLQ?Qemcq>C!8hnEkNZaV z1s~0yz^4KI@8YbEF9EmxZ`Pznx93{dO2}VycK-lVQU3s`qTk8f=BeXF@1V){_Y)i~ z%sYj{@dSNfWn|_E{{a1NHb5W9ns4^>zUz=)n*RXOq)*FJjH10Y_a+H9x1QQ@Xg|a~ z%9%Khql)o)62iX)W~JiK=11jLM#emN-EaD1Uwer>yGxAyOXktJe=OeOdtKl@@A!mX zDmf&)-bzcjNcjxgn7A=g?n*0=QNAQ($y&E9z>oxiVnNrT^t}T8h+m41>b*6hC5wF}Xub<^G7|p=~U-f23Ev$F`cIHPcp~BAd)R ze>07|R>}x#@S%F%(PwIfOE-Z|Vj`2a?tp6r*l$H~Mst+mlVMFN+CaTqz1=VGYVsbfnk@f)MwpJjRUyLAMe`$o%S13}xU*wGt){ zMpBN~yS>+PeM;W$5gFze7FC#+KQt@OnQ7 zp;70&GdtU^ZJ6LZmA^-k;O5H2PitQ!h;OPpqhEs3YaRP8)Z8V;EvM)NqTw0gK;|+@Re>}}JnDm}x@b^uJ@T&F@TQZg5 zL81mTBoVDv(FOhQq^&6!LRp-blVu%fpr0v*+&8AE4j9TtqM;9v@od=Av`T~rJycj4 zt7z38ZabfB;=V)r#a*{R*FwOzk4oaCaYZxdBJ~;}AsK|IYf1o=$3sH(0(DXlkzq!H z)M-jniqfD$V#g}gRRT!IVF^t@p=%p;@Ts(FjJYFjf{KX-R8--=g;=6NX-H{1k6L7^ zGDFyfrcCs-qtt<2EGr69MX^;q1KOV3$H`;R_RY#8;a^JWeI_nE4Ne7|R!V6F8e{avhGewDQtl#ka`F#BbPZzqm*wa+&kF9R0MN3+g zNm7ZqB%Y+2^4Geg)VP^d)=A6n25MAqOVw3~w_2)QW^GcVJFbOtS0bA=;_Ip;pPh2= z-gh{elb8(C@W=0zzECJQSXrL=++ z`=jVV0D07ad%ZuWMaRy%zJsADjitnMQ zsHH%nXN}@{UpULP#(0DY89eLv^rAs&Z#tkgCu#w(15!?aYHLlH+`lCVCnotK*g{iu zimNP+aL(3t)n2!B@*|OQz`#pJfA?JR$0c3A<&g^yH54inJ0gIZ;eV;fu2-!H=# zr}(9+^hUlYzsk33?{$5P;{H|fM1L&q?=0pRl<{^F#uvBEC_2X+!M0-K(xm+>bvu;f z?hp2lt!w`P6{{v!Qn`9NG>ktCbY7lq_sO^3S9c;)RN)@Q!}s{IywdiYS3IdOgu8J< zgB?H%I`pd)Mybgm2^8rNkA2V%m2_fCpGWmvK3dZXjEO8>F~^-raXMDZR@-AD#LNio zr6^XO6}?(TsBs-uNg&Eo}U{bNfCbIyUWH#F~p(N5<&45(aP&Egm{(Y zPA7-^r_Hh1XWjHHZcj^B&icn$jmo5O@-8D8snMi228o8aAU4fjak%Y_@>GU3FU3!~}6_aN4Xu zVG!Hfsika*1Sv_QQPA7=OJvX(i<2i(FIJ)=Cn(`lY66}tC#b)Zzb0k=>+`PAzOVO= zS;i)eb3;<@Lm28OGK+uJhfn2R)AX&?zHt0e_N`9WNq}K4f{vK zt*hT+%`|qcB+-97Y1Os+o|U~a^#TVw!e%@T!8DVNN@oUA`40h>8&OgXzY4{2(N~mJ zTjLJJkW!>+StD+Yt-yokoMp8juV%GILKaanUTJ`7B$AzLk9nDH9mh{=w!YMR)7TI;^6mcsFp2E7a$VH*pP#B)jd=GHfH=aH z(DkZk5TV7AQ)5)L5O)%tO-crWQlLiK&pikYCOBEK6<*tjI-$> zB|aYtSh|rS+Z#6IW-M1?2ga{V4?uQ%fs$fRpu@ypO$nv^)Sy`ljSTXfeoK+UG9Fn_ zBK=KY4EFh!xi*a9?l`uxUXS*#YUyK7do#%WH|AVXINk%=jx7~7$K!Y}AG$|E{DxHX z>;C|hqk8&;asG>IvIy*CDn<*kC=(HcjvNS5Me9|&NfgE;w7x9Dqm^4rRkF5=wwdQR z<83nGS_Y!Ixi-Wici6p+~$iU;`OPewqO@00ic?GPh0-JG3yLKrH z8tZz;)m#=La*pawoLb_m$kC9}#!afyRQ4WFh3;b&0RcQmw;VqZN77Y~pO_=&e~9K! zNk5goRpVutqxRc^^f&(iQ)eCI(}W_u75BCk{{Var{{Th*0O{<+d;tE>@UABff!qG6 z!$pioX=JGNt70WUxVI&p#Q9`A z_8Ij?%0hX$QKU3%ww-BVXj)H!3IK}NV*9lu*CN=}YLD4}Z$0ee9_aWSUik3xkK+U| z!yM}f*a67X(9lArG}=kK4{h8C>EozXzNyo?oN{62N00F?$J^k~QEF=;d6DD%OTV|k zy>jk3h2*$W>pM!yZ+$)$*H;wLuWD$*vv@W*_EBkkfYtnKB$7<$+=kWxkKuDWoynu| zP7@T&&B#3vJdL9EQ;sX5P@C#c_0}8E^B&mh%HauIbcu@l`S%0BmxRUpVeKT=@*ES2 zzU=(YVlu*+%V%6iqT{XGLfZ){Z3+ilo}dDJN9sEK z1!!oyr9w~|Kq}Nx9RsCqA$s(nFl#CfBo7~*LJQyN9chqI>vGVfl+}@y24EQo-lDfA zjHOT`N%uaV;?u;t=GU9}&j}fMRgVnj7yiV^??3GxG251}`tkTy&ZYJ2yZGa;^(`N+ zmGqjjKB`N#dsdI<=`uHxp{TB5K;N%z4J`=H6@#d#0V#E1R~;x+gp3*861pjnk#A$E z)2%f~F(x7FRk;uxE7Bw@LqLLrz;sEaXor1OE3H=0QWn$eLAW(r8i6e33TzZ=ZY2X* zo`+M`oiNZ*Z`L;z8xUF$wy8y^drzORba>c*&J^{~enk3X6?LvMIMoPZC5;Bi9Ks7? zkOE}Bpe!mNgE#6rs<8-3!Gcr*lqneKJrToV^a3d+#)=9!@{ZcEI*bjmOI0xkN>bPt zr-;fRvt^|SAR2Urpe7$GrZR|GI$T#n4(`b!+j=wDe%ABRGORNd;x0fIHTB=q`6_Wo zO4+<}&e}qsiTjpP2`RY!mFV*E6r)r<$e1rY;O@ha=EQWrg?L`0hT_bURV&^5z)9lV z2MOAU>DxDN@h*H0rflX%+On_uh?`B1(zhHH=laCmi&3@D?w5<;y$jmd`3q!JJuk)Z z^)GucIXp5*e5+}->&4D>W+tc)BMR(I6e$x0Mi9X(*ecknh}oicbF#n356R?Qq4ndt zX@>}ro5>*|PHkB}oLI?Li<0?COKIpeQmllij_*$CF8yUKAs#Q_yWcNc(Hbn--K)|o zi})_~O>^$xzsd5AAGAg@iQ}3OFj!U;r7;2;6jU1uR;yZ+O5AYjwUVRO)u%5dx5I2! ziFPlaHu=3ldiM9&mj&32^ODYDLxiTdIX4uUl1PU`iM_8}`3MlxL3-A95SE$=)5d^D zRPbzC^e760y7*bOSr~$%6rd{j#752ws;o#TI|+!&=WzT1Di_s=MyoJOOEan~4sC%AuNY@!^E z59SZ5=sFgMTIqg5-afe!*YHM;UYEi?*ZiixA~yd3xb^H@eJ_IczT!KU_rE`s!M(!x zTvj-@Zr-w9!{Ile%L(XbN^q(~qvK~5P!H0S^r~<5Im#~Gw5`LkJpTZx@t393u^}gv z+S?zdJ&WS_vY{2L>aMlPk(@o2t}Q@<)R2laA;daVZA_y=#K#N!MLG=uWy>U38nPg4 z6|K&%UX@}ZWt)oQqdwwN?X6urD8^4x`+AopVsTL81tQz6UWd!K6licrjb1g`u3kSu z($$$--t;S>2g+tm#~`q>ZCJB+TT}$3K;v>wHu!M|&wJcg77e#iVE+XB_awsq6q&syyqDih4=H$$B zn`Bl_XelK|tb!|SgmFoA!f44AvGx=jPLz};Js>SQnz*`8P?!S+(Eudq*mb)uvb;0<*;c5BAF8;g@QV_tUVq`4oc z*&cO_;oPSk+%5q5li8kV!Z{Zim;p+C85Ucy)RXkBm6DQ^s20Ap^p}#MB`Ck5YOCew zJsY^9>b}>iH(uQLn-7|X+Fo%x$QQY;#f-HhTrVbQP^RLtt%W5?Ap9$2ZYE!&8_V&W ze7Ne`0sWO4OfCqcWjHJ($WgHCRXb>+R>~J}`1}}+o7h^pxluFRfrWGEZAp?KpTsS2?%tfR)r^VAye!UR)K6Pg-bRJ7jY|G!61-G`+PYUN`lA+6pgJ1$tbA)S zMRg2?0YSu*(uCqVF5G@RcH`=GwPxKy$dO#9GN?-^X59wdR3LWr@iA0%;HNtn|caUfL=3|9b#CH)SEl)%7;(YXu8I@k)UnJw;iApLZ7GoE;d}uS(3fMbV!3;Xln^v^zCI2jY~P*L$yGrC+J~i)ERP{{R#99%lCk{MtL0 z+>SFZwS9`gM(wX?W{*mATuaVL%H$jK0-2d7LS0%)NChbgzMzr~tAU;Rf_Gx!ZETC| z;`~{MBRR@DV79LAKC{nJxu!--c5!6i<6c_iHynomc~jqzyPlO+$^|2>H@!Q&X(WOZ z9m{!5QzROXDK^w}q@ZdxR;%fyLLDA)uUZ74%gvM<)CB>Zb6W~v47sSe>rjWx$n=eg z(v1d4b=e!!?@-(HX7$nH+b5sgwfMK{Y zPs2tLiwaJ)T#(}`Qm<7Kqp@VT+J?GQCPvAK6VO1prm0&GORYL7 zSd2BM+WRL@_(%1MHPCKFwGp)GTzZ^#Jlh~p1xGdj+(0A0iiD`2vs1@Tl`25ESc@Bx zLCBOO*^Gvh(v`80)Rlyvl`;s*T?Ekx?UJ!pL?~@REdozkafs}WKqo|dIRmHB~pP!sM#>Em+oV zr!9CbU+wHM{_0|nBFfI>nS}>3b6#>>g`EL$)s?Elz+C7n#C4oK?aA?FH&*7`;>=@_ zF^q!h)25fNo@83u%#&0o+>UHT6$b5om6Dp7q${<3zsYwemHv|v*5TqJwz>Iyw7tSE zItwIvvR_g`J5z8H1=O_=l!B!IdVMGiTDJHl&A;1MqSTfxJCdg^Z?PLZuH*3R zwl+5l;q9s?Z1Ck{8pGi!kuBwbmuJh`NH4v#X>t&d5S<0jyvEG4D5ytBM~7?geec=8 z*LLcX+Z`gfeBXck48yrO7)AAcp%(d9oa+;fbTG}C{HNCP$h~=X%BprOb(5`EAw!x@ z!Bseg4+V>BLuo28A=7&bDj=xRcXdCqtw>sqMvW$0=#3c)a!ZN`ZL|WVDM~f~0jVVT z3cfL}h>E6+$7J!m4mxt3{mGs@N<)qDxNV|WA$$>V6%?r`h?D*4DoU-YTUgS%%cjQ8 zxf0p@t69HC@c#gckFhgi##Z&X>D|xO%hT#$**^SD$77%3-JHjxhw(?!Sd`>9RQ_Uf zM?#soB_$52Dj!p9rKXRHFRcrmNyaV~W97y1rm}uA6*GvW6g2TPM+Pjd)moWI6by@w zC{E%jw})tCSr0;9=FO_xcicvffiLnYjsTLPQ(8YeCO-B`;JI^98a}VpU2H7vyhe=5 z=QiX`zc+{?s`xYV+0 zg$E@dCg~=;-N|ZD$T^Y%Nh76K7>L;qK2qL00jtuXQ;@;|Y+TTgl@w*94z*JnqfSf| zg0U^W6lswvK3)MeWKb$GB2|-X)zL%6gC$B*uTC=zgrZH&B$%m$5L9ZHAk=k+uCPGR zRW~FRB1xqbw^^7Rst+Z^nqgSe2`W`elBAS00G((tlLpGWv&TVNEW|92k2NkkxBBZ- zfg(zz4?^OrQPi;!@402xh@ua$q=xTOfd+Z&xnWI0R3()F-H%&UO%Ow_05qa7!Kl;j49EZuO7%wX#8j4g z8}kX7M?UupE0oJlF9e4rWTYrG#CYjbjySbw5`-e^B%Xi@!Fwluh@$1%@GJe-?^X}k zzaK|1=iZJ>-G)**e~NJRkn4Cx-32MhWdcothNZTza(^<8eqH$BE%Mgu`&Vas_%GRI zzjJ?D{W z=~yFnq@W%jx0$|Y$l&n)I?t`0$v)gT&GZFsD{a(#0P0VG*0orKu1Q64V?x`LNpWYN zKb$W;V<+w=2V;2R9dCtpw-XnLL-m_ee{(G(?q^KeulBC2CgVi}0y@(5>$SV(t`^lj zJlRiDoo;MgBB}E{uZUsw8(O^H?MzXLul7gUkGW3!wfEhm;aPm{91??&i4nmFC=!yB zDc!8x5Jk7%x_F&B?nbbKYr{`jd@(0;?TciGdOf6joa`(knC_nl%i-{e7hXl^i*gb* z00l{7dm!9_Vyn>3>36Iu&J8Z!Ub4H`cP+1~Efh>vQ*%}|z!C6v$(ZIHW4d=|zPE z5QU=Stt%ih)LT_60it_a<#;|h-mFYcTIgqjXVWK%awk=)TgGQ&FBKu;4^qNj^^@>Y z0qQGnO}L?XZu@2QzX@plRj;7ajWnjK!RY-u6uxQ0GrR|vWjIeGXtBt!(&XZ&uzI&9 zBg$daYw%h~taq(Da&eaw+J1t$Cl=GdVfvp zpK_G|FtHXQsE|<8tbi_>t%PTO!>u5~(Je^SRHzty9EynmohWV-n=}?2M#ZlDIAbdDusT7O>L?NL-WHPxxX+;b$`7To;2yK-L zVTW(9QA~i7UQq-lok%2Nqd5DTi<9A2DG-=}zMZi<03N z>SghapC&ak5jz;aMF^>hZs}O4ISx(y~`Wjzu zd(o1`xP%u7NVko8Odh`|X;VeJ=b-Yv^!^I%CN2!OHu4@*{{U=0l6=kMBRHt>5`G@D z$#ud!Qj{Ksy^HIfU6|L5_4IIFw^!jqrta*vyJfGVm+jzXe9yk9nHgwpcP9Qd$IR-= zE(U zGl)u%to})>fZz%NLL&r}$8BA1Tu=&Cld~@-7UASsb&C6?_@DkO_*bRs^n3RdR>*MX z`(Md&^_1A0hIBM-ZA1>0mfl>VX5J4oFD7dL0C-6?Rol*dL~f_d$0||#WoaQ-Sk|V{8U`b=aqk13{)g2~dlwz^Y-Q@<}RJgcmqgn0U07kREYlvSJBy|2N1=)1!I z0OMXWg)+QXVKIk}Hl&uF93S-+g7r)=Jj3lBFq1Hzbp(B-bsv>dbsb64*h# z01E)CN`xL^y+tcT4`#?k=~^8NOoFA_k;Jkg4WS`7G)JJ7^|yr)geE$kSVBg$V;Zs| z#e?nq>CO7+LAT*udmS!QRiSdW#Afi$;(U%K#8ynaM{9_(R3V*oUc$M`LR4&>$-P|` zN|D(K4kqbItJ7!|0SIx!bFDRM3KIA%it#EAr$Q@kHSaB!MpPfBN?<}w%~+6)fH3M@UCk?HO^TACw@O-y2Cc6*GiFUgC+*} zNmT%`hm&MfLR61^1xvS$T@k7f#CK4TvC@cYdV|c_`}4V-js}8g?P|z`mDQu>32vV>b@-<125m z>b;tpp^=Ysn}hYD$Cu(=nwJ>6jqeW=YB3iI$W3-4?ejy3Bp;P@B^y-I>^&}qov{A^ z*%LkGIX`B6DP~u3d(75V#OiTeBNaCw^WPAOZUo0c{{ULDPWCOoy7haaoA&S$S8T(K z>)@(q+?)BAVEbb5#(O5=XuwJY2YH`04COP=qfn%wl$Az~7AzDHR0#MTYb^TwZRuh( z@0PFRjJGETLU%B*+^YGL$djSm!DM zv#UayHBRzWaSAIGvtX!GO!|#gJE#B&EUBk%D)>5(d54XK{3^;0nQraRDrXUtXsuQN zitKdUpDsZ??d=b}F5qNC%wwG%yEY{R`CLKKNLR^2O8S>f%}yxk;M{iPnmuXuoMV*Z z(akumoa4`%KFGHCZyv3<2SI*^r}S5T7ZcTRJF<*qw=N#zlK5-~nEQypUf0sCbYl5v zhLeF)&8i~Pe*rMfd0jVU{0oZY3NdxnI(z~xaC#~;QGt9y-OWCDjW z5)y6_`-!?*Nz@;R3Kh}4d34)#f8LVOeihpL`#<7aa_8k?{O^Zy?K~02ea-SL>{fUm zci=J4yKvRpjRTM^-@nJDM(6b0qet%JYHzS9Op~hGRdFGmExT?l@$cfi9~JKIIncc6 zNqtMd;Qs(*dUx5cvhQp>x=u&j_Fi1vpJDirLgjG0^9gSuBQWV7X904fff`J5Zl$<@ zg%AK!NlC4}H>cy=a=zPk;ruU+c`ER0)!vQRxc22){{RZ*-`V?mjW4==`tGkgbuiPB zULS`?9+o?f;7NguhQf41ZLu3_NJ#Nj&27KcE>E2oB(zAr=0v63yAc<_eaQElwR6MR zEX(q6%LTcZe5;F@j+D}d)wb++$xW1!K_bT82%&4L+_k~!*!5naE#yud8IF7S_RZU_ zKgVz$?0vt({VTMbzDwAg#~W`}upEJw%kD;LU+iCODaMm;C`srDNaXdL8*z+sEh<88 zjeZ$+cs?k@)G^|cxegDPV?50oU)#J2x{BjK4HDTzQUwpYHAEQ6_d zCdEB!$^an~iksR^CfWg!nKG5$^y5T~OCURR^r|My0?`RBkDXMcElwCoNwpa&Z1dYjT!)3kNGvA zKt)T~t!aQPNo~aZ=#UynB;7SCN{zPrh&xS6hNIhkVW(PB2~PG^@}&u`d!JHyj!TSp z&7U%P))p-MlK%kxZyHsG%5VPw8?VOuqCO7~jdZ$`-s5-i#W&)#ezvRWFUfUkUx|BG zkLT$!nGo(Pl;l)^T#2unr3WC4y&WMsQq(mD)he|bjZxO*1a;DtgeE+clSl?g!k$=A zT2D%3=pj27l05TalA~^xr+1kSxY}eU=dEXy>I#9#fD&#gDjI{WpfoiGK<`A|sG!49 zr9>&Ds46(ZHhHON6p2RVC_-@_Bmw;*nQ$70w8T=Ot#YbxDiX|4I*OGbWO&IUmZS+v zTWvo&gg~<0@Dyk=1KOo7{uId!63aIN{VFmB;cz*wN0ny-#^Jw^&Pi9N8Wa{>efL#j zcA>U{l%rvL0Z(S!?#V_8w)iEhErcAM601E0#6Op2YY!E!LGFW-!{9iV5*=?0fHGOv z({rGS8CzQlu=6QK*VI?C#r+*9B`mv&((L=D{R@HCx6&Hc?38=BzfpI>abINpv`Sjx zUB8jb^9|Sx$2*+0Axa%j*g@LCNj*1fZ_c{5?DWiU?b&x9Y~TH>LsV_!Tl-pU=kIwt*vn?OrE?NG{e(usq)9#(Z5sjlmY%iMvD0MY zr*Wu5we$X!#$Js(S~pw8ZElm>9@o#oabuGEv%@=Xzqaf?EVrCShnVsf*?%j$`_Q8e z@u7T*eMd)7=;==L?PKYW9e*6C<>*`^?SIS{ksE*8TK2v^g~5AYd7tDmIb8lp{LXeu zvvU$wUXw0ci*@H#qjIIV;VMx+B%0+;iINs$QXjGLR z^vZ^!qG74jwgoT;5Oy1y3>6SFbI%Q#scX8gJ)XAc97|->TvGRjCA1agd!zrbvMKCsN8Rnl%GtB*&Di ztHz>Y)Qx%4kV&l&6_B|pDsg*7TG*^pO0b~)p z3W<<@H*wIal6dMb1j)4MC&u04ZtZvyARZuXaw zCAgWiGM(pLVU^cTHy=IX?3HUg5Nwy<3QsvUIg9^yL!{OG|WesRTPAqh7J&5n*-X;*!t{V$@*Q@EhQ_Du1 zQ`&lmvVQn8{3|+)o(@WVCqQmgSH|`vH-DkT9;4O?3COQ?~mEE@Ozu9(an(_p# zSCNSKKev370ReoMxcMws1mMZsRhZ@37|>g?dWPF7E-8A8Cuq5_@vcryhf2w)uGZ*e zo-10qCEj^syuZxrupZwUlZW<@h4XIo*s?o^o{Q;X@ygs%wPP{wf~OZ@<#F8yUoa$B zpUCQ#asL3aw@>jt3&9w!Wx~()^_Oe-BfgSC-`5RGHZc&Z*bl zaavtUR=NNH9RSd1E681PoZRH<-xhKuCnr|w*%`zOk@DzMzY$f=dJ(hq>)PWCPX1i2 zqX+?Y9NqP0fwrXHc{m-Sn{!`Dt^LoBsgOT;*64VK?;q^t81|*?;YQweRw-t=Inm z@zby4jXZh#1-}0P`qHoBR6GLY!d^G{*PMp~go0UhRsWlc%i0VXYiD28MT#!(tJ{%Ulv}hU)Ji%8=02u*o zD&7?c6464_uUZu)1iaElqJTuQ=EYdhsRBw{cwAHosc|G8d+k?}@gwKW@GP8uX^tI8 z#pVk*Jg^=*NlraL4uf&7gg@2AlzGAKUJj9$w{Nu36}sDBh1byZe*-gZK|^Y*kWhvt z#=fGUKpkkOL(+vv4)Z`!2owIIRpp{GI>YNhx938HVNFd@(3%tgd^w6q1R4zzgv=bK zmQku?g=jFmm&M0Q6ciRrbzb72z^*u2HZ=xEQ?b!Pfj%+Kw4p(eOL5dvPheO?%r{wGLDB03eR2|ynk zB;LK0GVEYS%fpV|*}uMDCEUG-YBynJZL+D_`M;5$%*aj3%yT1?d2%PbqT|oLwK(F` zdZ|iTB$M$q$eqba)w;7YZSg*7K{Z=pNL!MSl-uD-|0qC0KbHmy-;Vtn*779e&O=W6gZUv9pexrH)5L|Q$6<8uZs0SS zy_e=3*A{tXrANW`>9v-gSM z=HGHn_ZHj6l+}1gwebD^2%Tq|cBi$!y6rwU_=lIHPvX8+8KpAP$M&FNR9s~?Jsgr< zCqfX}tN#EwV;lQ1-!H`_r}$&4^vb>nx6QX}>{WfQ;J$V6MN5+Mu2s!*PjWtCk&%?- z5)Iy$In})Ct)K-?5^M&5bOWVxFXc}3oTl8H=JhjNxhcBI)q$olUZ<^7xJGohvr0RN zBhyhL(Z3?<-GuZ<8LfE4S3fYC*U90mF}wzj9+ zQ%qn9I4y#2Rmo6~KqSv4(3{gmks5Dnla5*fUnB0qGR2;Lo=6=dTYeEN!P}_HT#Zi$0=0#qzi6UEFdV{f);kwv<(4YZMM_9#)@PF zdRkjaH>0=}A*asu+}aM5jg-lPya7Qbo*{`1mXMZ`K&>zYh_qlQt(7O_E3J)%DV9bxF5Q*wJZ?$NKl$I( zW49PK9nbQK4S80KY%-Fz+fnH3hZKnIf8`ua^sc@)O{~7JwQBqq&w}q}yEZpHcr9Ot z?V(-nZ#2&LL!MtjF7L&|@Ae%|%Y zKN$Dbb2eLkbap?vaQS?_T+D&+q$s7tl&LxpdV(txsxdJsN>(+h+<<%=0Nph=kSUd{ zr)fG>a+t^-L?Y_$nx}O}8fhjoyG>@g8WMm97$1dmOvjXop1n5WNy?}S-*g}wP_)v|;hpBSod6_VrN|LfI zZyMDL?G;J0TH$@)%i^O1F!2W72D_MjLC2V3eZ-WP?!US`NUBd7%*@BT)T$Jhm?Zpe z(t)kt?^hwgv}lHW*9St8$^QVESGs(DW*nd6Y~z^tk{OWfVU(G%+gUU{kK0FRVmxm5amt1vAhTQi=bp<#{+FII2 z$ktw`dR~0fd?fwg%DqX+cbVi)H1j|y!L4(=!wb1kIgYBfP+;qs~nA2NMx+JR304_zk+Q+xh^5JiF ztDoDS9_F||nY#ljFm5vYW$f=gQ_nrR^1M6*X87bqXZWO)hv4P#X;jGXvaM3T+-@nq z&&R~qODm$>hOt|s_%*50o-~%LRoaRiA8x(a<_qha3N+;f*cx^*DH-&*HLBRGamb<6`9{5H02xfW%Dz;i4t+`2twC7I z(c?j&p-eiYAC)U%H2(l09F%3cg`j!@jL8=ZO2p_p0N>c*-|B@e)1#~E zYD8yL%cwsztt3_puy*9*E-BIa3S}1-)8qz;2~gUuwNBtrL($UaqJxl78_`q`O(<^& z!lETYol2nxdMHMsjY&{-tJ6245%`ll38idgNHr*daB8LogJEU%ovJkjp(xy>K8h42 z1|&rFH5Dj8MIme&Wf0VPxgd)gjv%OOauN2fegpc&I);N(-Q6Jq#=Mee9)OQN2THyo zGzzCmm19>VEf2N@>S>Z8_J|ifDTheey`+0#YrZq5cLTW6*M#=>#)@3z8H5WvCDUSz zd>}=X`?ntufNpgu2hx6@=wF>~<=3{%KIhx~tG)X@M^6I>&Tdk4gm}M#?>4^ZcZ~B! zA@J@c1-?Jo{33qe0mk8ZS&rInJx6W+W6QZJTCQ$Rw0ZCSk&2{O1^aU;#bsu>lqpP7Q>Cg3zLPy}C^0v*LOQuJx!Q8f#a$>by6~wv!09U`=W=1;8Tcf4L z{{T1dJY4fn#(i;Qp-sqalr0MdDoT=UK?hJluba5FqdeS|7=<@|MFB=$bJG;SWrw%j zt><0FYDP~79Sm`3L?FDD5BHLCab5+4}dL`*BOXMAu?PrsVMn^m6NdExd*>+uH0Ucw;GzT`lD&7i{u^t7J z*0%ZB*uP@)XWG>uyd%b5GNS%c&DO1O`rm8e=v@6iqM^-s{{S`aMqFn(#zpLe^dK_F ztUzgoQ}ndMO@y}7Y4Ag72_6Eu*;$uzCA#FBe(vPBCET<#-McG}vUMZlp9;-Vu%^ZB z@Td{%gpFu!Acc9l(Wnk5ZS<%?_V%P)(L@m{Qb4e)Vt@?Xp}(y?NIK)Y#i}+i?mo?| zDAjI3iD-e8VG-=Ewx^Bi8lyc3Z0z(tvJs%Aoa$F85lta#a42-484@h8Vsr9wP5Bf> zY_pdr7OBu5E6L>KmuD4mM($LmE4fj)t|aPfJXJzG{Is^+fvb`r2%HMMcfO zyrnN`s^k$&>MkmV$izrlNwq);Z9wX10;e2MC*@HLg~z!xYC!fnP++Lzo>bnENQ@M@ zcP&;nL`-6n1 z{(y zcJcTgP~{wN9|9`FR@^VrydG?lXCCBIGxt&vDM>vqT)9rBMhQKk>RmM>BAE}uMu60t z078;depOOoK2FuFB>2>!3*QFd(&iR(7}r+DLOPQB53-_%8*vAERD~ph2qNH)hPya8 z)zrG&d7{_u6NJU?7aDiJxCW5lBW=dwbL@O{r73G5@!Hl^v?D~bH9+sMvLCq6EwNjA zo;sX-*zx`^9^VJ-ekjqC4e{Q%^YQKU`~3ze(;$lq^Kv=o%7)-OfYO2`1z5J5p0tx0 z306V20o`1y*&7(>jggWPB#pft)gy9@1)ajW5Fs425z?$+Y&RJxNFW}SO(+VMENrW!5^BWBT9df^ zjD|+!pD3+1?xcQUw&Op5 z;`zlZ`_d(G$ZD1QB?m|4T~4KTw-mn=V*PPd_SCyJRh@fMe#B;(3@dG10cz*(GsTee zArW+erCS*e*dus!t-wgugqb%N&fMo+<4>h+D!^K#F6|d_t>XRJcZYyPC${{XC4_NW ztvJcA$3oBe(At7k)5KNls@}Ezxw!Z{YgO=i8+Z{&Y+a+iyK;M~fc&$>;N7O?(~r>zAeGmuynCu!?hrinq+?rh(} zs%Qhu$QQL!BoXC;v|SZTAcj=1uQdh$yCH4c#*idz#!45sbf<^`WHIX^)Z?NLEsj{Z zqM2$THm#RzXzm>c#*m~~($ozSkmeyk1yL4(PNAn!an_q?09{I(RfkGeL^8EsN=6f{ zCvexLS0Ilx;X=MtjgZ!T)Fg7=L4fa*9%i}z8ZL5j#=rK|RVx#hEBGzhv7C`(uGdn0 zL9N|c@04!;0PKoy`j(RQwBMxDk*ibuOWVQwbuuT?rqyv=hRO$G$lc{tN{oV+9S)}A zfhqwmIcSn9$g%-C3a$-UfCVj;cy*^BJ3+)NTCJ8K#$=E!LV+G>@w(!oK%pfDaX|o` zDiM;5O+wNr&_j-;4r@%10VK3r1xcbo2$-P4)BU4w>lJ#B(n_9!kt+T=SB;IclGrkw z2V2$3A~rUsQYzID4X$87r=byP>i^3&v>WU<2xtW=EP3N@g)78 zEw;c($Vmfh`56T^-s8%-1o$5dkzVhpP}UGJQqdpp?|BSi>(k>TIoQW#3q zYn4MNa|~&%9ibic(gu`T2-=t`HWZsjL9lQxO6V_B^7Sl=BqMRhBe)8arDv8iOtO?N zyh*t1BnJg|x@wBzTLN<|^dlI7Zk5@}xecL_PL|UyN+1s!@t37pl?E|}Y4+|0wc5nT z-ibhISQIpGZ7Wo;Xbqr|a(ON*mXDvnKB&2vZYB87v}~j}gK$Uw4u+~xm6<6;(XImS zadliuuf6`%VLOAwTK9k3h^UP0htZGj9xgtJi(6XswzZ3k$Ng#gR2Qd7OVPD=v|81xU(Wvk<@vv2 z@hRN*y8P$4awCpcH-0Vvg@!ADwB1s*Iu!kcg

sF)+oQrj=P>@q3TW;wULt_s# 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 MH2%7ES_hH;+3D&pAOHXW literal 0 HcmV?d00001 diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/platform-bg.png b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/platform-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..512185839bdd94afc996e737d61041d9600e8eb9 GIT binary patch literal 9162 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 literal 0 HcmV?d00001 diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/spring-logo-eureka-mobile.png b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/spring-logo-eureka-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..fc59a236b11880018a423cab4f5fed1ef6cfa594 GIT binary patch literal 3811 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 Z7yvygrK1I32v-0A002ovPDHLkV1mLo1&ROw literal 0 HcmV?d00001 diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/spring-logo-eureka.png b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/images/spring-logo-eureka.png new file mode 100644 index 0000000000000000000000000000000000000000..b22de1f2a90d82bcbb0e7e9e07b0474682058393 GIT binary patch literal 6290 zcmV;D7;Wc?P)o>$(2fa zMREN;C9f)ZLCI&*6#{`E5rj2B$pcEpDrpv{di=kV|5mcd;e5K1?n<^wmk9(ySbor2 z$$d&DDru3R`n;s%P9;0F<71QzR`OfvGJ!w{%M0*J6(|`LLY+$4%$#r0t_oS3`w!_d zTR{74rKFe)pP@kTtwg$yG8d5HV;U4vow_KQqvRI;e}a;)$?%i)kuGb5dzEZavR=tN zCN6;>B{i(el)R{k-E1}dN7a_+(=CM#3Bx{kGnS*+~|>XAu}CqCMx5Lu0i^3pPPGo(7Q z*?Pj?NlH2-dxf0{>trT~=1p9`KPve@{=ASI^kyYb$+H##;@U97dLIA3SIO)YAgVm| zXD+{J(E@}uG{v8vJWCs99}5+>Bdj(|R&ATOZjULMZ2A9?k~K;?3r`&d?D>n8T)|{M zgA9M)w;iM6@Pg&Z<8$o6j<678bxIS~3B+`plBaFXE#sH-e(AcSs8RC2(hN}zh=OAb z`Yho|?LbzLCmGTDA1kR~b8WYh zB}yJ9?~n}mQ`RZjrQ}DJ3RIU7IGG?PTu{kRc_=YvC0gm<}9(}?B z$l?Wlu=n`91~0~&OaejCk-zW9K1Xi6ybCnK>~HyuHfzB|1)_7Cq`*S&KQZ~#*qjFu z4dc&fi>^w3#dTqXK+^bFF+3b_HSyYq&my3LoJI79{Wv z83Cd}Gd7f4Ucw;A*Z|E$I8KRa%j&5$oe* z`10(~&+^$C(5w3%t?h)28aFaodG&J(CWHzH^Bfa1Z!0<1&!EV^18wv@t?vDj^hF-S zT4s>gq&$9RK%j+DlpDp8$KN@bwRu1FG{Za0a1F0I#A5D`1n4exs88F*e#GY)X75;C25)js0`xh@ZhG zTN|6}o>THmi?(3JzsQJJi^lJA5jFJ3>G!T-)6EX=@yl;_U0Rg)w8MVZ#CB-+pY2mi z)$t*luoTOvo?s0tkLt6B6nki*))#pL|HX6PAwaooe#Ue+$7B}`cMSjj9FJ#gvIlVm z(Xg_)Y@Wr1;dJkDEM7CQXoK-e%PI(}VdX|iR)_(5nMd2w1TcC_*1)VU_72u;f&k{r zHQKS+tZ|fC%ACUu{S*ElFZ@4U?rSBhFW4{k0sERx;1_9vjsFS{%1vC}?YHZu)#pn7 zq2v!Sv?s8NwZ?Vaw$OCOveu|;QrELtYT`NvvMS+0;awh>+H-sUihXHhLsrR%Y)wP( zOLBhVne=ix3HZTt{EYfF_r|j(6Kk9Jt>-wdqu=|^R09x5D?bQfog456!0?<%iH{Z@ z%A>LspR#`^olQ(XfS=@e?bt+39Yr|Be3q_EMyq`MMi9wwcr>)uXAk?7rt)ZbyLKI} zndVdDL|hy)Wvq>{JwZ-bqxp=D_Vp0^*d}Plzh@z=4E9^;0Eu43=DJmTEnvYz{8wt4 z37urdObZEEO(Z9iYn(<_g0a_NNb*7!W!nY^0ibSBNawgfWbC|wNyzZYgr{e@6+DF546#tJhZsK`MmeN7W2do z2iX*@V$w0ul{J-@J;?CaOfd1lljIySQp;q9HXot+>a66YCu@9P$-&ZSM#WT1wmnedr#tPU6F3{P&%Q8 zeMf%{iL8F8WV^#TgbQ>J=wH+E3O9c180xr~{0AUDNXCqwuD!V7;W&~N`B2sCSj%!U zk-l%Ev5og2D-$5fj}r9K*9DYGNkUj z&8JgL(S>f1$34C9se={{X5^EOt%NkdU~gWCSXq0V#aS9YZ!i~+ZP0^ zgRWt?4HVB({5R=16Xn08$37X2J^%J0J=i|)b<6{F7l~0%Q4!V_hx2e0FA1SBp~);}E$J&pg`NmPVY*c0hepX-gPOTjA?XqzZyb99`bqZ*%W)0jZ{UUho&Ac z=&@b+Z1rDRo$*elpf&U&?#_CXu$)YyiUf87z8lfrZ!#gkZ}pCk>#m8y9E2t?oz+~g zaEK3Wj=7QJ-+hqQSnh1=S}hC&uZ8^Jw~X=n**2OV9_qV2u7gG}i<%%CKpf!54-*Cv zTeY1;#gUD-(d@=+ZQ&NnXC<@ZM3DyI6knC7Eu*lY6cN&o@Iwr(<}W_3gDE(SO*g+d zfi;<{mHb}GYBC(|cEp9cT&o@Xii~9@PC(4q>tw8_L>{Y7+^*f2sL-~rQsafyQ^`3n zHc^PRKe3qoPd3M4KD@E9M0tj(C4>H2$n?ALnOA zOIXmbcG#TnL-Aez1rq{GS+I!ryL=2Q{VlY?J$)ievlK0U*~_n%B+=zz!h zVZB1T-fij3e$C{2gA7OdVJ0IGmEDZa+5o0hvf=j*E(DnNOSoO(n?qKDZQQ@DELx=% zHA(6((zO}8J~S5>j|-_@`uaU5=eCv9CUHM}MzLjreM}?FDGqH?rkSlyZ8M7N6j(F0 zCh&XALA5`JVh{Mk0}KDugH*qyriOpe^Z@tygdh4Ki?!34NPZASy`fzpjg1*6r90#= zVY4oX=CY1W)NR^vw=^+ssHOUFi6hi7bV9#pCfUb)QNX$&Ms7a&TOnZr5%gG0euL%M zP6{3xp{JLL#l&)&s<)3RxpA{ z|3&qwje`I$G1evil>9Fv0T9JK(&Gh(&+R|S-%M&Px4|$QvLb32cNN6`U#)3wR_xY@ zvdZT@*IPc9JDeZRX1!l>K=zB%wBuWvP?H+tVHS?JAq#U&UXJGD2`h5Gkm^%R>)O;P zoBCPJx>z%-=>Dv18x5+A8i!Bh@!&FrHNG6}w?t(Unh&&{O$ncl-z=RlA2A#B1m6!M zD&m;T)Gp?FI{b()0@Sk~U$>66rDy;@(?EXFP``!LF!H*VM~A<&HU^W`Pf#e#=`)$Q zU{)fIY!B7vbpMD=-T~af-#94_Y);{t2?2iB&HUn**j#r5o2Iz$O#$vXna$m5a*jj$ znl)X#_=~9VtY#f+RhP3SgTYIWTl+i)?I>2KZoZH6qg}oypMOujMhJx-{vbc)yhv*( z_ffIW-!Pi&14o0_r@%r;PD`B3?{rH)GnwiW0Onhcd)7hUsva-&N@^UD{UtNEt{F6E z@)^m3m%OcuHgY#Phfp}78@~`RLy*Q~Rsu$@*5ogIBU-cVSVT()KNI@*GCuyA(Pp-)}iTurvRH?ra^jJ~>pM zw<}1y>85KWr#m*rReyceS0^lD6V7f_En&hr$mSe0m0S=14a|vGSvx9DHF)$JeUatF%cGk1;TJ7w<9CI=2lkirc=XRT1;$Z^8i7hiz&J&ZD=qf z*eCLHi{^$3T6eAy!fIL|4bKHJT#x>|j~eEQ7YJe^ECAU>;owH_pE=uvI4Coz9#-xn zDIP)%R@szJ5sL_e7GkR|VAvobKn(bt(4D zz~6`Um2mI}-BS>=m=nq0iUxro5Mcob2l&WBSXetZJH+}SxblG{YOlwsJ~tR5zVAro zXNQcLQN*GlR_|15oIVBv)<%AYX7FHFC$F6#QG^A+G1`*x|RrUlsz zdPZ?QqGS;Yf%SDur7HviK_Ut3=sm~?Nk9x0*3@C$AC_n!Zp&P&i1;Ne>%pSgLe{9T z&P*J#0)Ze@!V(As0wFAcKp;qjNr*g0Bgt5-jAcE&$yh^%*+hInIh%yY`mmf$LPW^d zN*4$Of-ndR*#?ns=}L+&m=u03EPh4ez|W*B1Oh=K2n#`^ST2L4Y|Y|S5A4W{4NVt0 zoQLxs*-E!cmk9(ySbl&-uLvB)TDleqs?SSG?xcp9KmlZMK-SaWN|y-)LRemaUkdrH z28B?kQZ_TqO*_-SE?<8*EiIi+XqS^FT_zBuF4BFJLGGi^LLw^wDQB>b@D~1m!oKR= zl-)YAxk?}DGJ!xeEGJ<3&5LB8rz#9gtvXmf;g28QMCavPMm^g1qZ6|Rik2l1h=$b& z7dA0jMYO9o);vwSs=lVrcPygJ7Fp6`0)Y@#Bfw`htBJ{q78K8VrdTUMNeJ;0t6WK}X3h6e1AT?pPkt%j%&S;9tlvZx0msU)n&HL8ap6`;`i+(e5 zI(C2VFI^`Pq#iPCw5!m`>OgH3E!gm?G6P?s+9S>xXLeRb0^PCS9Rf)Ur27Pd)Fmu9 z+Q)|Z<>fVd=%X#~(EA%-qpE}Dp5^O|Js&o3T?GO`3KQ1#6u*?m_JmV+gmzYKrLT4` zr`0<@p|!h~(viBrd#;uXVF?7O3DbuK=R4BBbc^;zWe0ZBj>^sIZz=6RR8IR3R#J6s zrTSb+2bAoq-bs7*@1TQ+t7EG0B?E4t3;JD+6gA(G?h^=7Q^U%QhOEBYy^IRC&!<(T zA5le3S^O)P-aMj#9jQBFF(dclPZ#Mrfgp7W>)aq0t=qGL-Y9z73^Pa=dSwlu;=QXH z9NV-HyPZ>4)(VeE7YYQaM_9xB6o$4lYxPuGyy*?o0iIBt&@QJDVQn!&9x7SODv>S} z2vU!*26z=jxIzBXduZ*haFT-#?s67=Q@zLO^lmZ|`UznP1SteF(%mz~@rx@S4UMc? zG;2lYpL97D?flfOSf+HJK#-b*b(~wFCEMPk<=Yp8R;eEj92X%gEYop71tl))sX!n| za>8=V&5kgH*NdJBtwN`DJ%@6;olEa;n(bB$@nW(Gt3Z&VgjMUTUCp7YgWrTw86@bt zI`>|B=gVnSQ@h`-Xa_O^NCg5x3KCX@Q-NjM=Z8{}&Y3;w*JnHt36=PG%iGSXRa&IV zNHMcpx=$cTO~Tq@cM<`cn~k`qgrfU#C(-T0r&4-avxsxwEo7pDk=q?6?AOwL0zqmL zR*~JwvI9Hl(BYbdR$x$<;dGlKt2WKs(e&ky(BAz!T+8=tAIU7Uk!06sfgoiGYlYp( z>e>Sd`(l`O7xcTDelhHK)H0)WB)cdUM0?@%9!NDW=Ab~3iZBC5=PG$jKiNDzF_8nu zw>g2X8gdWibQm1@|Gjn7Y2n7#yxCQeT(7K1qK0YGbpk=^5*9Qp*kWC+Cp)(38u2Sd zkpjjR&6~BPbNh@@n$=a2;85W0wJ*?|^)LCleqg85sa?zL$Ys)X0zv8$7QEckmE3JT z*(|*|^~pY!HthW(Hlk9R+Rz@O>Eiy^QTtZMM~-2s&x|jgpe5V><@-Jt^}m+Z@A;hi zbsQo~as+}DCM@6uC3lgQ#1B5BXbG!ZyWTXk`)C^8>k?|)qW#h1NOe4I*@Lvbe1q?M zoze3mY@&*fKa*|~2vQUJCKNNs*zNf!usr7RMdN6DMX~42U_L@48{G9Q8r!TZAbYKSX%{9-`j*3lzDtKJWj&$qrCr$E$b~Q`7 zO&}1$GV!RAd-Q|YFyhUkXQ@_cTqkCotTd@Xk)L4u?xk++`ZOwx z4JcNWyiY4j7gO=xl?`&R`vpwNz8z1aA>Bq&Uib5@nj0$kVfXL@#3yD0%v?SpT_q3*+;(|>R}sjM)ZaJF0|@*y0dj#K3z9%Q zBxEHJ2>fVRCUSna@Y)T>x9LV>2j5QFtwY&i3pV9#N}iG~5(orA2n!fcQn6_*0zpFn zmIz&|WR7%?Kp=>QumA*D-KS)dhbb8gUQu$Zl3mg@0)ZeF!ZOiU$-`ts#HYon9t)M+ zuVk@wi9jHTCt;a@efUcyS19Qj#r4?R9yw*6SF%*PLLd+%lCX~6L&*>&Bb1z}q@NN5 zc_I&txyEOol5I-XD=B1+3Y!kf&Nl*qAXLH<2n2#q@NWSI0C?w(=Z=4BI{*Lx07*qo IM6N<$g2*E5%K!iX literal 0 HcmV?d00001 diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/js/wro.js b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/js/wro.js new file mode 100644 index 000000000000..c3ae5c5f3725 --- /dev/null +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/resources/static/eureka/js/wro.js @@ -0,0 +1,2 @@ + +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="

",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="
","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("