flipflop 2.2.1 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.gitignore +0 -1
- data/.travis.yml +23 -27
- data/CHANGES.md +7 -0
- data/Gemfile +14 -8
- data/README.md +27 -1
- data/Rakefile +20 -8
- data/app/controllers/flipflop/features_controller.rb +20 -10
- data/app/controllers/flipflop/strategies_controller.rb +4 -4
- data/app/views/flipflop/features/index.html.erb +64 -41
- data/app/views/flipflop/stylesheets/_flipflop.css +1 -0
- data/app/views/layouts/flipflop.html.erb +8 -1
- data/config/features.rb +7 -0
- data/config/locales/en.yml +34 -0
- data/flipflop.gemspec +0 -5
- data/lib/flipflop/configurable.rb +10 -0
- data/lib/flipflop/engine.rb +10 -15
- data/lib/flipflop/feature_definition.rb +5 -6
- data/lib/flipflop/feature_loader.rb +40 -0
- data/lib/flipflop/feature_set.rb +7 -9
- data/lib/flipflop/group_definition.rb +11 -0
- data/lib/flipflop/strategies/abstract_strategy.rb +2 -1
- data/lib/flipflop/version.rb +1 -1
- data/lib/flipflop.rb +2 -0
- data/lib/test_engine/config/features.rb +3 -0
- data/lib/test_engine/test_engine.rb +7 -0
- data/src/stylesheets/_flipflop.scss +160 -0
- data/test/integration/app_test.rb +50 -21
- data/test/integration/dashboard_test.rb +395 -52
- data/test/templates/nl.yml +30 -0
- data/test/templates/test_app_features.rb +7 -0
- data/test/templates/test_engine.rb +7 -0
- data/test/templates/test_engine_features.rb +3 -0
- data/test/test_helper.rb +83 -10
- data/test/unit/configurable_test.rb +1 -1
- data/test/unit/feature_definition_test.rb +27 -2
- data/test/unit/feature_set_test.rb +7 -19
- data/test/unit/flipflop_test.rb +16 -11
- data/test/unit/group_definition_test.rb +21 -0
- data/test/unit/strategies/abstract_strategy_test.rb +14 -25
- data/test/unit/strategies/active_record_strategy_test.rb +4 -0
- data/test/unit/strategies/cookie_strategy_test.rb +4 -0
- data/test/unit/strategies/default_strategy_test.rb +10 -4
- data/test/unit/strategies/lambda_strategy_test.rb +11 -27
- data/test/unit/strategies/query_string_strategy_test.rb +4 -0
- data/test/unit/strategies/redis_strategy_test.rb +4 -0
- data/test/unit/strategies/session_strategy_test.rb +4 -0
- data/test/unit/strategies/test_strategy_test.rb +4 -0
- metadata +22 -9
- data/app/assets/stylesheets/flipflop.css +0 -1
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZDZkZjM2YTNhZDEwNjBjZDY3MDM0Y2FmZGQwNmIzMDY1MWRhOGE1OA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0a2273ae05773bcf363232d55a5220c8da41f39a
|
4
|
+
data.tar.gz: 8fd2d51b80011ef69c993b389e15170f29f9d5eb
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NTZlMzJhOWQ3MTliNTI3NjdiMjg1NDAwYzU0YWY2MzU1Mjc1YmQyZmQzNWZi
|
11
|
-
YWI5YTQ0Y2I3M2E4MTFiYjYwODE3NThmZTVjZjFkODZlZTNjMDA=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
Njc0NTFiMGEwNmEzMmQ1YjdlN2EzNjhjMWQyM2ZlNDJlY2E3MzI3Mjk0ZGMz
|
14
|
-
ZmU5MTg3NTU1MzRmMzkxM2Y2ODkxODhkNWFkNDIyMjM1MGE2NThmNDI0MmY1
|
15
|
-
MWNiZWNhZjdhZGM5MzRhYzRlNTlmNTMxNTI4NTFmZTdmNjFmNjE=
|
6
|
+
metadata.gz: 5aaab9397951347310618fce6c9e3223a4b0435f7bcbf9f34ce51785465d6d6bdbb0060c60563e4ef9bf6abf560c437551644a2eb9077c62b58746c451deac1d
|
7
|
+
data.tar.gz: c7c18fcb35fb1eb5adcd55ca6ae1c5c8fad679a1aa9a2612774f6ef27b969a2d784b0a3784cf9e1f6d5a3ac98f8d5013a0f860093afde5c1e7a911728bc2fc86
|
data/.travis.yml
CHANGED
@@ -1,39 +1,35 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.0
|
4
|
-
- 2.1
|
5
|
-
- 2.2
|
3
|
+
- 2.4.0
|
6
4
|
- 2.3.0
|
7
|
-
- jruby-9.
|
8
|
-
- rbx-head
|
5
|
+
- jruby-9.1.2.0
|
9
6
|
- ruby-head
|
10
7
|
- jruby-head
|
11
8
|
env:
|
12
|
-
- RAILS_VERSION=4.0
|
13
|
-
- RAILS_VERSION=4.1
|
14
|
-
- RAILS_VERSION=4.2
|
15
|
-
- RAILS_VERSION=5.0.0.beta3
|
16
9
|
- RAILS_VERSION=master
|
10
|
+
- RAILS_VERSION=master RAILS_API_ONLY=1
|
11
|
+
- RAILS_VERSION=5.0
|
12
|
+
- RAILS_VERSION=5.0 RAILS_API_ONLY=1
|
17
13
|
matrix:
|
18
|
-
|
19
|
-
- rvm: 2.0
|
20
|
-
env: RAILS_VERSION=
|
21
|
-
- rvm: 2.
|
22
|
-
env: RAILS_VERSION=
|
23
|
-
- rvm: 2.1
|
24
|
-
env: RAILS_VERSION=
|
25
|
-
- rvm: 2.
|
26
|
-
env: RAILS_VERSION=
|
27
|
-
- rvm: 2.
|
28
|
-
env: RAILS_VERSION=
|
29
|
-
- rvm: 2.2
|
30
|
-
env: RAILS_VERSION=
|
14
|
+
include:
|
15
|
+
- rvm: 2.3.0
|
16
|
+
env: RAILS_VERSION=4.2
|
17
|
+
- rvm: 2.2.6
|
18
|
+
env: RAILS_VERSION=4.2
|
19
|
+
- rvm: 2.1.9
|
20
|
+
env: RAILS_VERSION=4.2
|
21
|
+
- rvm: 2.0.0
|
22
|
+
env: RAILS_VERSION=4.2
|
23
|
+
- rvm: 2.3.0
|
24
|
+
env: RAILS_VERSION=4.1
|
25
|
+
- rvm: 2.2.6
|
26
|
+
env: RAILS_VERSION=4.1
|
27
|
+
- rvm: 2.1.9
|
28
|
+
env: RAILS_VERSION=4.1
|
29
|
+
- rvm: 2.0.0
|
30
|
+
env: RAILS_VERSION=4.1
|
31
31
|
allow_failures:
|
32
|
-
- rvm: jruby-9.
|
33
|
-
env: RAILS_VERSION=5.0.0.beta3
|
34
|
-
- rvm: jruby-9.0.5.0
|
35
|
-
env: RAILS_VERSION=master
|
36
|
-
- rvm: rbx-head
|
32
|
+
- rvm: jruby-9.1.2.0
|
37
33
|
- rvm: ruby-head
|
38
34
|
- rvm: jruby-head
|
39
35
|
notifications:
|
data/CHANGES.md
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
## 2.3.0
|
2
|
+
|
3
|
+
* Support for Rails API only apps.
|
4
|
+
* Features can now be grouped in the dashboard.
|
5
|
+
* Features can now be added to Rails engines and loaded with an initializer.
|
6
|
+
* The dashboard (including features and strategies) can be translated.
|
7
|
+
* Removed Rails asset pipeline dependency.
|
data/Gemfile
CHANGED
@@ -1,25 +1,31 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
gemspec
|
3
3
|
|
4
|
-
if ENV["CONTINUOUS_INTEGRATION"]
|
5
|
-
gem "bootstrap", "= 4.0.0.alpha3"
|
6
|
-
end
|
7
|
-
|
8
4
|
group :test do
|
9
5
|
version = ENV["RAILS_VERSION"] || "master"
|
10
6
|
if version == "master"
|
11
7
|
gem "rails", github: "rails/rails"
|
8
|
+
gem "arel", github: "rails/arel"
|
12
9
|
else
|
13
10
|
gem "rails", "~> #{version}.0"
|
14
11
|
end
|
15
12
|
|
13
|
+
gem "bootstrap", "= 4.0.0.alpha6", require: false
|
14
|
+
|
15
|
+
gem "fakeredis", require: false
|
16
16
|
gem "sqlite3", ">= 1.3", platform: :ruby
|
17
|
-
gem "
|
18
|
-
|
17
|
+
gem "activerecord-jdbcsqlite3-adapter", platform: :jruby,
|
18
|
+
github: "jruby/activerecord-jdbc-adapter", branch: "rails-5"
|
19
|
+
|
19
20
|
gem "minitest", ">= 4.2"
|
20
21
|
gem "capybara", ">= 2.6"
|
21
22
|
|
22
|
-
if
|
23
|
-
gem "
|
23
|
+
if Gem::Version.new(RUBY_VERSION) > Gem::Version.new("2.2.4")
|
24
|
+
gem "listen", ">= 3.0", require: false
|
25
|
+
end
|
26
|
+
|
27
|
+
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.1.0")
|
28
|
+
# Nokogiri 1.7+ requires Ruby 2.1+.
|
29
|
+
gem "nokogiri", "< 1.7"
|
24
30
|
end
|
25
31
|
end
|
data/README.md
CHANGED
@@ -14,6 +14,9 @@ application functionality at run-time. It is originally based on
|
|
14
14
|
* configuration in a fixed location (`config/features.rb`) that is usable even if you don't use the database strategy
|
15
15
|
* dashboard is inaccessible in production by default, for safety in case of misconfiguration
|
16
16
|
* removes controller filters and view helpers, to promote uniform semantics to check for features (facilitates project-wide searching)
|
17
|
+
* support for API only Rails apps
|
18
|
+
* support for loading features from Rails engines
|
19
|
+
* support for feature groups
|
17
20
|
|
18
21
|
You can configure strategy layers that will evaluate if a feature is currently
|
19
22
|
enabled or disabled. Available strategies are:
|
@@ -63,6 +66,12 @@ Flipflop.configure do
|
|
63
66
|
|
64
67
|
# Enable features by default:
|
65
68
|
feature :world_domination, default: true
|
69
|
+
|
70
|
+
# Group features together:
|
71
|
+
group :improved_design do
|
72
|
+
feature :improved_navigation
|
73
|
+
feature :improved_homepage
|
74
|
+
end
|
66
75
|
end
|
67
76
|
```
|
68
77
|
|
@@ -73,7 +82,7 @@ your server after making changes.
|
|
73
82
|
|
74
83
|
The following strategies are provided:
|
75
84
|
* `:active_record` – Save feature settings in the database.
|
76
|
-
* `:class` – Provide the feature model. `Flipflop::Feature` by default (which uses the table `
|
85
|
+
* `:class` – Provide the feature model. `Flipflop::Feature` by default (which uses the table `flipflop_features`). Honors `default_scope` when features are resolved or switched on/off.
|
77
86
|
* `:cookie` – Save feature settings in browser cookies for the current user.
|
78
87
|
* `:prefix` – String prefix for all cookie names. Defaults to no prefix.
|
79
88
|
* `:path` – The path for which the cookies apply. Defaults to the root of the application.
|
@@ -259,6 +268,23 @@ config.flipflop.dashboard_access_filter = -> {
|
|
259
268
|
}
|
260
269
|
```
|
261
270
|
|
271
|
+
## Features in Rails engines
|
272
|
+
|
273
|
+
You can use features in Rails engines. Simply tell Flipflop to load files from
|
274
|
+
an additional file in an initializer. You can define features and strategies.
|
275
|
+
Both will be merged with application features. You'll have to somewhat careful
|
276
|
+
with defining strategies in the engine to avoid conflicts.
|
277
|
+
|
278
|
+
```ruby
|
279
|
+
class MyEngine < Rails::Engine
|
280
|
+
initializer "load_features" do
|
281
|
+
# Features from config/features.rb in your engine are merged with
|
282
|
+
# any application features.
|
283
|
+
Flipflop::FeatureLoader.current.append(self)
|
284
|
+
end
|
285
|
+
end
|
286
|
+
```
|
287
|
+
|
262
288
|
## Testing
|
263
289
|
|
264
290
|
In your test environment, you typically want to keep your features. But to make
|
data/Rakefile
CHANGED
@@ -16,24 +16,36 @@ end
|
|
16
16
|
task default: :test
|
17
17
|
|
18
18
|
namespace :assets do
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
stylesheets_src_path = "src/stylesheets"
|
20
|
+
stylesheets_dst_path = "app/views/flipflop/stylesheets"
|
21
|
+
stylesheet_file = "_flipflop.css"
|
22
|
+
stylesheet_dst_path = stylesheets_dst_path + "/" + stylesheet_file
|
22
23
|
|
23
|
-
task :compile
|
24
|
+
task :compile do
|
24
25
|
require "bundler/setup"
|
25
26
|
require "flipflop"
|
26
27
|
require "sprockets"
|
27
28
|
require "bootstrap"
|
28
29
|
|
29
30
|
environment = Sprockets::Environment.new
|
30
|
-
environment.append_path
|
31
|
+
environment.append_path stylesheets_src_path
|
31
32
|
environment.append_path Bootstrap.stylesheets_path
|
32
33
|
environment.css_compressor = :scss
|
33
|
-
File.write(
|
34
|
+
File.write(stylesheet_dst_path, environment[stylesheet_file])
|
34
35
|
end
|
35
36
|
|
36
|
-
task :
|
37
|
-
|
37
|
+
task :watch do
|
38
|
+
require "listen"
|
39
|
+
|
40
|
+
listener = Listen.to(stylesheets_src_path, only: /\.scss$/) do
|
41
|
+
Rake::Task["assets:compile"].execute
|
42
|
+
end
|
43
|
+
|
44
|
+
$stderr.puts("Watching #{stylesheets_src_path} for changes...")
|
45
|
+
|
46
|
+
listener.start
|
47
|
+
|
48
|
+
Rake::Task["assets:compile"].execute
|
49
|
+
sleep
|
38
50
|
end
|
39
51
|
end
|
@@ -1,36 +1,46 @@
|
|
1
1
|
module Flipflop
|
2
2
|
class FeaturesController < ApplicationController
|
3
|
+
include ActionController::RequestForgeryProtection
|
4
|
+
include ActionController::Rendering
|
5
|
+
include ActionView::Rendering
|
6
|
+
include ActionView::Layouts
|
7
|
+
|
8
|
+
# Allows overriding layout by inheriting from this controller.
|
3
9
|
layout "flipflop"
|
4
10
|
|
5
11
|
def index
|
6
12
|
@feature_set = FeaturesPresenter.new(FeatureSet.current)
|
13
|
+
render
|
7
14
|
end
|
8
15
|
|
9
16
|
class FeaturesPresenter
|
10
17
|
include Flipflop::Engine.routes.url_helpers
|
11
18
|
|
19
|
+
attr_reader :strategies, :grouped_features, :application_name
|
20
|
+
|
12
21
|
def initialize(feature_set)
|
13
22
|
@cache = {}
|
14
23
|
@feature_set = feature_set
|
15
|
-
end
|
16
24
|
|
17
|
-
|
18
|
-
@feature_set.
|
25
|
+
@strategies = @feature_set.strategies.reject(&:hidden?)
|
26
|
+
@grouped_features = @feature_set.features.group_by(&:group)
|
27
|
+
|
28
|
+
@application_name = Rails.application.class.parent_name.underscore.titleize
|
19
29
|
end
|
20
30
|
|
21
|
-
def
|
22
|
-
|
31
|
+
def grouped?
|
32
|
+
grouped_features.keys != [nil]
|
23
33
|
end
|
24
34
|
|
25
35
|
def status(feature)
|
26
36
|
cache(nil, feature) do
|
27
|
-
|
37
|
+
status_to_sym(@feature_set.enabled?(feature.key))
|
28
38
|
end
|
29
39
|
end
|
30
40
|
|
31
41
|
def strategy_status(strategy, feature)
|
32
42
|
cache(strategy, feature) do
|
33
|
-
|
43
|
+
status_to_sym(strategy.enabled?(feature.key))
|
34
44
|
end
|
35
45
|
end
|
36
46
|
|
@@ -46,9 +56,9 @@ module Flipflop
|
|
46
56
|
@cache[key] = yield
|
47
57
|
end
|
48
58
|
|
49
|
-
def
|
50
|
-
return
|
51
|
-
return
|
59
|
+
def status_to_sym(status)
|
60
|
+
return :enabled if status == true
|
61
|
+
return :disabled if status == false
|
52
62
|
end
|
53
63
|
end
|
54
64
|
end
|
@@ -1,21 +1,21 @@
|
|
1
1
|
module Flipflop
|
2
2
|
class StrategiesController < ApplicationController
|
3
|
-
include
|
3
|
+
include ActionController::RequestForgeryProtection
|
4
4
|
|
5
5
|
def update
|
6
6
|
strategy.switch!(feature_key, enable?)
|
7
|
-
redirect_to(
|
7
|
+
redirect_to(features_url)
|
8
8
|
end
|
9
9
|
|
10
10
|
def destroy
|
11
11
|
strategy.clear!(feature_key)
|
12
|
-
redirect_to(
|
12
|
+
redirect_to(features_url)
|
13
13
|
end
|
14
14
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def enable?
|
18
|
-
params[:commit].to_s
|
18
|
+
params[:commit].to_s == "1"
|
19
19
|
end
|
20
20
|
|
21
21
|
def feature_key
|
@@ -1,60 +1,83 @@
|
|
1
|
+
<% provide(:title) { t(:title, scope: :flipflop, application: @feature_set.application_name) } -%>
|
1
2
|
<section class="flipflop">
|
2
|
-
<h1
|
3
|
+
<h1><%= t(:title, scope: :flipflop, application: @feature_set.application_name) -%></h1>
|
3
4
|
<table>
|
4
5
|
<thead>
|
5
6
|
<tr>
|
6
7
|
<th></th>
|
7
|
-
<th class="name"
|
8
|
-
<th class="description"
|
8
|
+
<th class="name"><%= t(:feature, scope: :flipflop) -%></th>
|
9
|
+
<th class="description"><%= t(:description, scope: :flipflop) -%></th>
|
9
10
|
<% @feature_set.strategies.each do |strategy| -%>
|
10
11
|
<th data-tooltip="<%= strategy.description -%>">
|
11
|
-
<%= strategy.name.
|
12
|
+
<%= t(strategy.name, scope: [:flipflop, :strategies], default: strategy.title) -%>
|
12
13
|
</th>
|
13
14
|
<% end -%>
|
14
15
|
</tr>
|
15
16
|
</thead>
|
16
17
|
<tbody>
|
17
|
-
<% @feature_set.
|
18
|
-
|
19
|
-
<
|
20
|
-
<
|
21
|
-
|
22
|
-
|
23
|
-
|
18
|
+
<% @feature_set.grouped_features.each do |group, features| -%>
|
19
|
+
<% if @feature_set.grouped? -%>
|
20
|
+
<tr class="group">
|
21
|
+
<td></td>
|
22
|
+
<td class="name" colspan="<%= 2 + @feature_set.strategies.size -%>">
|
23
|
+
<h2>
|
24
|
+
<%= t(group ? group.name : :default, scope: [:flipflop, :groups], default: group ? group.title : nil) -%>
|
25
|
+
</h2>
|
26
|
+
</td>
|
27
|
+
</tr>
|
28
|
+
<% end -%>
|
29
|
+
<% features.each do |feature| -%>
|
30
|
+
<tr data-feature="<%= feature.name.dasherize.parameterize -%>">
|
31
|
+
<td class="status">
|
32
|
+
<span class="<%= @feature_set.status(feature) -%>">
|
33
|
+
<span><%= t(@feature_set.status(feature), scope: [:flipflop, :feature_states]) -%></span>
|
34
|
+
</span>
|
35
|
+
</td>
|
36
|
+
<td class="name">
|
37
|
+
<%= title = t(feature.name, scope: [:flipflop, :features], default: feature.title) -%>
|
38
|
+
</td>
|
39
|
+
<td class="description">
|
40
|
+
<%= t(:"#{feature.name}_description", scope: [:flipflop, :features], default: feature.description || title + ".") -%>
|
41
|
+
</td>
|
24
42
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
43
|
+
<% @feature_set.strategies.each do |strategy| -%>
|
44
|
+
<td class="toggle" data-strategy="<%= strategy.name.dasherize.parameterize %>">
|
45
|
+
<div class="toolbar">
|
46
|
+
<%= form_tag(@feature_set.switch_url(strategy, feature), method: :put) do -%>
|
47
|
+
<div class="group">
|
48
|
+
<%= button_tag t(:enabled, scope: [:flipflop, :feature_states]),
|
49
|
+
type: "submit",
|
50
|
+
name: "commit",
|
51
|
+
value: "1",
|
52
|
+
class: @feature_set.strategy_status(strategy, feature) == :enabled ? "active" : nil,
|
53
|
+
disabled: !strategy.switchable?
|
54
|
+
-%>
|
35
55
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
56
|
+
<%= button_tag t(:disabled, scope: [:flipflop, :feature_states]),
|
57
|
+
type: "submit",
|
58
|
+
name: "commit",
|
59
|
+
value: "0",
|
60
|
+
class: @feature_set.strategy_status(strategy, feature) == :disabled ? "active" : nil,
|
61
|
+
disabled: !strategy.switchable?
|
62
|
+
-%>
|
63
|
+
</div>
|
64
|
+
<% end -%>
|
43
65
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
66
|
+
<% if strategy.switchable? -%>
|
67
|
+
<div class="group">
|
68
|
+
<% unless @feature_set.strategy_status(strategy, feature).blank? -%>
|
69
|
+
<%= form_tag(@feature_set.switch_url(strategy, feature), method: :delete) do -%>
|
70
|
+
<%= button_tag t(:clear, scope: :flipflop), type: "submit" -%>
|
71
|
+
<% end -%>
|
49
72
|
<% end -%>
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
</
|
54
|
-
|
55
|
-
|
56
|
-
|
73
|
+
</div>
|
74
|
+
<% end -%>
|
75
|
+
</div>
|
76
|
+
</td>
|
77
|
+
<% end -%>
|
78
|
+
</tr>
|
79
|
+
<% end -%>
|
57
80
|
<% end -%>
|
58
81
|
</tbody>
|
59
82
|
</table>
|
60
|
-
</
|
83
|
+
</section>
|
@@ -0,0 +1 @@
|
|
1
|
+
/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}@media print{*,*::before,*::after,p::first-letter,div::first-letter,blockquote::first-letter,li::first-letter,p::first-line,div::first-line,blockquote::first-line,li::first-line{text-shadow:none !important;box-shadow:none !important}a,a:visited{text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.badge,section.flipflop table tbody tr td.status span.enabled,section.flipflop table tbody tr td.status span.disabled{border:1px solid #000}.table,section.flipflop table{border-collapse:collapse !important}.table td,section.flipflop table td,.table th,section.flipflop table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}@-ms-viewport{width:device-width}html{-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-size:1rem;font-weight:normal;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:none !important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{cursor:help}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:bold}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#0275d8;text-decoration:none}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle}[role="button"]{cursor:pointer}a,area,button,[role="button"],input,label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse;background-color:transparent}caption{padding-top:0.75rem;padding-bottom:0.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,textarea{line-height:inherit}input[type="radio"]:disabled,input[type="checkbox"]:disabled{cursor:not-allowed}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type="search"]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:0.5rem;font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.1}.display-2{font-size:5.5rem;font-weight:300;line-height:1.1}.display-3{font-size:4.5rem;font-weight:300;line-height:1.1}.display-4{font-size:3.5rem;font-weight:300;line-height:1.1}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:normal}mark,.mark{padding:0.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:5px}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:0.5rem 1rem;margin-bottom:1rem;font-size:1.25rem;border-left:0.25rem solid #eceeef}.blockquote-footer{display:block;font-size:80%;color:#636c72}.blockquote-footer::before{content:"\2014 \00A0"}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:0.25rem solid #eceeef;border-left:0}.blockquote-reverse .blockquote-footer::before{content:""}.blockquote-reverse .blockquote-footer::after{content:"\00A0 \2014"}.table,section.flipflop table{width:100%;max-width:100%;margin-bottom:1rem}.table th,section.flipflop table th,.table td,section.flipflop table td{padding:0.75rem;vertical-align:top;border-top:1px solid #eceeef}.table thead th,section.flipflop table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody,section.flipflop table tbody+tbody{border-top:2px solid #eceeef}.table .table,section.flipflop table .table,.table section.flipflop table,section.flipflop .table table,section.flipflop table table{background-color:#fff}.table-sm th,.table-sm td{padding:0.3rem}.table-bordered{border:1px solid #eceeef}.table-bordered th,.table-bordered td{border:1px solid #eceeef}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table-success,.table-success>th,.table-success>td{background-color:#dff0d8}.table-hover .table-success:hover{background-color:#d0e9c6}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>th,.table-info>td{background-color:#d9edf7}.table-hover .table-info:hover{background-color:#c4e3f3}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>th,.table-warning>td{background-color:#fcf8e3}.table-hover .table-warning:hover{background-color:#faf2cc}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>th,.table-danger>td{background-color:#f2dede}.table-hover .table-danger:hover{background-color:#ebcccc}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.thead-inverse th,section.flipflop table thead th{color:#fff;background-color:#292b2c}.thead-default th{color:#464a4c;background-color:#eceeef}.table-inverse{color:#fff;background-color:#292b2c}.table-inverse th,.table-inverse td,.table-inverse thead th{border-color:#fff}.table-inverse.table-bordered{border:0}.table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive.table-bordered{border:0}.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group button{display:inline-block;font-weight:normal;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:0.5rem 1rem;font-size:1rem;border-radius:0.25rem;transition:all 0.2s ease-in-out}.btn:focus,section.flipflop table tbody tr td.toggle div.toolbar div.group button:focus,.btn:hover,section.flipflop table tbody tr td.toggle div.toolbar div.group button:hover{text-decoration:none}.btn:focus,section.flipflop table tbody tr td.toggle div.toolbar div.group button:focus,.btn.focus,section.flipflop table tbody tr td.toggle div.toolbar div.group button.focus{outline:0;box-shadow:0 0 0 2px rgba(2,117,216,0.25)}.btn.disabled,section.flipflop table tbody tr td.toggle div.toolbar div.group button.disabled,.btn:disabled,section.flipflop table tbody tr td.toggle div.toolbar div.group button:disabled{cursor:not-allowed;opacity:.65}.btn:active,section.flipflop table tbody tr td.toggle div.toolbar div.group button:active,.btn.active,section.flipflop table tbody tr td.toggle div.toolbar div.group button.active{background-image:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary,section.flipflop table tbody tr td.toggle div.toolbar div.group button.active{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-primary:hover,section.flipflop table tbody tr td.toggle div.toolbar div.group button.active:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.btn-primary:focus,section.flipflop table tbody tr td.toggle div.toolbar div.group button.active:focus,.btn-primary.focus,section.flipflop table tbody tr td.toggle div.toolbar div.group button.focus.active{box-shadow:0 0 0 2px rgba(2,117,216,0.5)}.btn-primary.disabled,section.flipflop table tbody tr td.toggle div.toolbar div.group button.disabled.active,.btn-primary:disabled,section.flipflop table tbody tr td.toggle div.toolbar div.group button.active:disabled{background-color:#0275d8;border-color:#0275d8}.btn-primary:active,section.flipflop table tbody tr td.toggle div.toolbar div.group button.active:active,.btn-primary.active,section.flipflop table tbody tr td.toggle div.toolbar div.group button.active,.show>.btn-primary.dropdown-toggle,section.flipflop table tbody tr td.toggle div.toolbar div.group .show>button.dropdown-toggle.active{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.btn-secondary,section.flipflop table tbody tr td.toggle div.toolbar div.group button:not(.active){color:#292b2c;background-color:#fff;border-color:#ccc}.btn-secondary:hover,section.flipflop table tbody tr td.toggle div.toolbar div.group button:hover:not(.active){color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary:focus,section.flipflop table tbody tr td.toggle div.toolbar div.group button:focus:not(.active),.btn-secondary.focus,section.flipflop table tbody tr td.toggle div.toolbar div.group button.focus:not(.active){box-shadow:0 0 0 2px rgba(204,204,204,0.5)}.btn-secondary.disabled,section.flipflop table tbody tr td.toggle div.toolbar div.group button.disabled:not(.active),.btn-secondary:disabled,section.flipflop table tbody tr td.toggle div.toolbar div.group button:disabled:not(.active){background-color:#fff;border-color:#ccc}.btn-secondary:active,section.flipflop table tbody tr td.toggle div.toolbar div.group button:active:not(.active),.btn-secondary.active,section.flipflop table tbody tr td.toggle div.toolbar div.group button.active:not(.active),.show>.btn-secondary.dropdown-toggle,section.flipflop table tbody tr td.toggle div.toolbar div.group .show>button.dropdown-toggle:not(.active){color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 2px rgba(91,192,222,0.5)}.btn-info.disabled,.btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 2px rgba(92,184,92,0.5)}.btn-success.disabled,.btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 2px rgba(240,173,78,0.5)}.btn-warning.disabled,.btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 2px rgba(217,83,79,0.5)}.btn-danger.disabled,.btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.btn-outline-primary{color:#0275d8;background-image:none;background-color:transparent;border-color:#0275d8}.btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 2px rgba(2,117,216,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.btn-outline-primary:active,.btn-outline-primary.active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 2px rgba(204,204,204,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.btn-outline-secondary:active,.btn-outline-secondary.active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 2px rgba(91,192,222,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.btn-outline-info:active,.btn-outline-info.active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 2px rgba(92,184,92,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.btn-outline-success:active,.btn-outline-success.active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 2px rgba(240,173,78,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.btn-outline-warning:active,.btn-outline-warning.active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-danger{color:#d9534f;background-image:none;background-color:transparent;border-color:#d9534f}.btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 2px rgba(217,83,79,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.btn-outline-danger:active,.btn-outline-danger.active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-link{font-weight:normal;color:#0275d8;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link:disabled{background-color:transparent}.btn-link,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.btn-link:disabled{color:#636c72}.btn-link:disabled:focus,.btn-link:disabled:hover{text-decoration:none}.btn-lg,.btn-group-lg>.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-lg>button{padding:0.75rem 1.5rem;font-size:1.25rem;border-radius:0.3rem}.btn-sm,.btn-group-sm>.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group button{padding:0.25rem 0.5rem;font-size:0.875rem;border-radius:0.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:0.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-group,section.flipflop table tbody tr td.toggle div.toolbar div.group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>button,section.flipflop table tbody tr td.toggle div.toolbar div.group>button,.btn-group-vertical>.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button{position:relative;flex:0 1 auto}.btn-group>.btn:hover,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn:hover,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>button:hover,section.flipflop table tbody tr td.toggle div.toolbar div.group>button:hover,.btn-group-vertical>.btn:hover,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button:hover{z-index:2}.btn-group>.btn:focus,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn:focus,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>button:focus,section.flipflop table tbody tr td.toggle div.toolbar div.group>button:focus,.btn-group>.btn:active,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn:active,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>button:active,section.flipflop table tbody tr td.toggle div.toolbar div.group>button:active,.btn-group>.btn.active,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn.active,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>button.active,section.flipflop table tbody tr td.toggle div.toolbar div.group>button.active,.btn-group-vertical>.btn:focus,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button:focus,.btn-group-vertical>.btn:active,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button:active,.btn-group-vertical>.btn.active,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button.active{z-index:2}.btn-group .btn+.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn+.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group button+.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group button+.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group .btn+button,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn+button,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group button+button,section.flipflop table tbody tr td.toggle div.toolbar div.group button+button,.btn-group .btn+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group button+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar div.group button+.btn-group,.btn-group section.flipflop table tbody tr td.toggle div.toolbar .btn+div.group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group .btn+div.group,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn+div.group,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group button+div.group,section.flipflop table tbody tr td.toggle div.toolbar div.group button+div.group,.btn-group .btn-group+.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group+.btn,.btn-group section.flipflop table tbody tr td.toggle div.toolbar div.group+.btn,section.flipflop table tbody tr td.toggle div.toolbar .btn-group div.group+.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group div.group+.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group .btn-group+button,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group+button,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group div.group+button,section.flipflop table tbody tr td.toggle div.toolbar div.group div.group+button,.btn-group .btn-group+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group+.btn-group,.btn-group section.flipflop table tbody tr td.toggle div.toolbar div.group+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group div.group+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar div.group div.group+.btn-group,.btn-group section.flipflop table tbody tr td.toggle div.toolbar .btn-group+div.group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group .btn-group+div.group,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group+div.group,.btn-group section.flipflop table tbody tr td.toggle div.toolbar div.group+div.group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group div.group+div.group,section.flipflop table tbody tr td.toggle div.toolbar div.group div.group+div.group,.btn-group-vertical .btn+.btn,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group button+.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical button+.btn,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group .btn+button,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical .btn+button,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group button+button,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical button+button,.btn-group-vertical .btn+.btn-group,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group button+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical button+.btn-group,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar .btn+div.group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical .btn+div.group,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group button+div.group,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical button+div.group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group+.btn,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical div.group+.btn,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group+button,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical .btn-group+button,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group div.group+button,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical div.group div.group+button,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical div.group+button,.btn-group-vertical .btn-group+.btn-group,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical div.group+.btn-group,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar .btn-group+div.group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical .btn-group+div.group,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group+div.group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical div.group+div.group{margin-left:-1px}.btn-toolbar,section.flipflop table tbody tr td.toggle div.toolbar{display:flex;justify-content:flex-start}.btn-toolbar .input-group,section.flipflop table tbody tr td.toggle div.toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>button:not(:first-child):not(:last-child):not(.dropdown-toggle),section.flipflop table tbody tr td.toggle div.toolbar div.group>button:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn:first-child,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>button:first-child,section.flipflop table tbody tr td.toggle div.toolbar div.group>button:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle),section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn:first-child:not(:last-child):not(.dropdown-toggle),section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>button:first-child:not(:last-child):not(.dropdown-toggle),section.flipflop table tbody tr td.toggle div.toolbar div.group>button: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),section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn:last-child:not(:first-child),section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>button:last-child:not(:first-child),section.flipflop table tbody tr td.toggle div.toolbar div.group>button:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child),section.flipflop table tbody tr td.toggle div.toolbar div.group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn-group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group>div.group,section.flipflop table tbody tr td.toggle div.toolbar div.group>div.group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn-group:not(:first-child):not(:last-child)>.btn,section.flipflop table tbody tr td.toggle div.toolbar .btn-group>div.group:not(:first-child):not(:last-child)>.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group>div.group:not(:first-child):not(:last-child)>.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>.btn-group:not(:first-child):not(:last-child)>button,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn-group:not(:first-child):not(:last-child)>button,section.flipflop table tbody tr td.toggle div.toolbar .btn-group>div.group:not(:first-child):not(:last-child)>button,section.flipflop table tbody tr td.toggle div.toolbar div.group>div.group:not(:first-child):not(:last-child)>button{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn-group:first-child:not(:last-child)>.btn:last-child,section.flipflop table tbody tr td.toggle div.toolbar .btn-group>div.group:first-child:not(:last-child)>.btn:last-child,section.flipflop table tbody tr td.toggle div.toolbar div.group>div.group:first-child:not(:last-child)>.btn:last-child,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>.btn-group:first-child:not(:last-child)>button:last-child,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn-group:first-child:not(:last-child)>button:last-child,section.flipflop table tbody tr td.toggle div.toolbar .btn-group>div.group:first-child:not(:last-child)>button:last-child,section.flipflop table tbody tr td.toggle div.toolbar div.group>div.group:first-child:not(:last-child)>button:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,section.flipflop table tbody tr td.toggle div.toolbar .btn-group>div.group:first-child:not(:last-child)>.dropdown-toggle,section.flipflop table tbody tr td.toggle div.toolbar div.group>div.group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn-group:last-child:not(:first-child)>.btn:first-child,section.flipflop table tbody tr td.toggle div.toolbar .btn-group>div.group:last-child:not(:first-child)>.btn:first-child,section.flipflop table tbody tr td.toggle div.toolbar div.group>div.group:last-child:not(:first-child)>.btn:first-child,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group>.btn-group:last-child:not(:first-child)>button:first-child,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn-group:last-child:not(:first-child)>button:first-child,section.flipflop table tbody tr td.toggle div.toolbar .btn-group>div.group:last-child:not(:first-child)>button:first-child,section.flipflop table tbody tr td.toggle div.toolbar div.group>div.group:last-child:not(:first-child)>button:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,section.flipflop table tbody tr td.toggle div.toolbar div.group .dropdown-toggle:active,.btn-group.open .dropdown-toggle,section.flipflop table tbody tr td.toggle div.toolbar div.open.group .dropdown-toggle{outline:0}.btn+.dropdown-toggle-split,section.flipflop table tbody tr td.toggle div.toolbar div.group button+.dropdown-toggle-split{padding-right:0.75rem;padding-left:0.75rem}.btn+.dropdown-toggle-split::after,section.flipflop table tbody tr td.toggle div.toolbar div.group button+.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split,section.flipflop table tbody tr td.toggle div.toolbar div.group>.btn+.dropdown-toggle-split,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-sm>button+.dropdown-toggle-split,section.flipflop table tbody tr td.toggle div.toolbar div.group button+.dropdown-toggle-split{padding-right:0.375rem;padding-left:0.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-lg>button+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn-group-vertical{display:inline-flex;flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group button,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical button,.btn-group-vertical .btn-group,.btn-group-vertical section.flipflop table tbody tr td.toggle div.toolbar div.group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical div.group{width:100%}.btn-group-vertical>.btn+.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button+.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>.btn+button,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button+button,.btn-group-vertical>.btn+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>.btn+div.group,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button+div.group,.btn-group-vertical>.btn-group+.btn,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>div.group+.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>.btn-group+button,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>div.group+button,.btn-group-vertical>.btn-group+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>div.group+.btn-group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>.btn-group+div.group,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>div.group+div.group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child),section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child),section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>button:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>div.group:not(:first-child):not(:last-child)>.btn,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>button,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>div.group:not(:first-child):not(:last-child)>button{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>div.group:first-child:not(:last-child)>.btn:last-child,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>.btn-group:first-child:not(:last-child)>button:last-child,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>div.group:first-child:not(:last-child)>button:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>div.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,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>div.group:last-child:not(:first-child)>.btn:first-child,section.flipflop table tbody tr td.toggle div.toolbar div.group .btn-group-vertical>.btn-group:last-child:not(:first-child)>button:first-child,section.flipflop table tbody tr td.toggle div.toolbar .btn-group-vertical>div.group:last-child:not(:first-child)>button:first-child{border-top-right-radius:0;border-top-left-radius:0}[data-toggle="buttons"]>.btn input[type="radio"],section.flipflop table tbody tr td.toggle div.toolbar div.group [data-toggle="buttons"]>button input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],section.flipflop table tbody tr td.toggle div.toolbar div.group [data-toggle="buttons"]>button input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],section.flipflop table tbody tr td.toggle div.toolbar [data-toggle="buttons"]>div.group>.btn input[type="radio"],section.flipflop table tbody tr td.toggle div.toolbar div.group [data-toggle="buttons"]>.btn-group>button input[type="radio"],section.flipflop table tbody tr td.toggle div.toolbar [data-toggle="buttons"]>div.group>button input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"],section.flipflop table tbody tr td.toggle div.toolbar [data-toggle="buttons"]>div.group>.btn input[type="checkbox"],section.flipflop table tbody tr td.toggle div.toolbar div.group [data-toggle="buttons"]>.btn-group>button input[type="checkbox"],section.flipflop table tbody tr td.toggle div.toolbar [data-toggle="buttons"]>div.group>button input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.badge,section.flipflop table tbody tr td.status span.enabled,section.flipflop table tbody tr td.status span.disabled{display:inline-block;padding:0.25em 0.4em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0.25rem}.badge:empty,section.flipflop table tbody tr td.status span.enabled:empty,section.flipflop table tbody tr td.status span.disabled:empty{display:none}.btn .badge,section.flipflop table tbody tr td.toggle div.toolbar div.group button .badge,.btn section.flipflop table tbody tr td.status span.enabled,section.flipflop table tbody tr td.status .btn span.enabled,section.flipflop table tbody tr td.toggle div.toolbar div.group button td.status span.enabled,section.flipflop table tbody tr td.status td.toggle div.toolbar div.group button span.enabled,.btn section.flipflop table tbody tr td.status span.disabled,section.flipflop table tbody tr td.status .btn span.disabled,section.flipflop table tbody tr td.toggle div.toolbar div.group button td.status span.disabled,section.flipflop table tbody tr td.status td.toggle div.toolbar div.group button span.disabled{position:relative;top:-1px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.badge-pill,section.flipflop table tbody tr td.status span.enabled,section.flipflop table tbody tr td.status span.disabled{padding-right:0.6em;padding-left:0.6em;border-radius:10rem}.badge-default,section.flipflop table tbody tr td.status span.disabled{background-color:#636c72}.badge-default[href]:focus,section.flipflop table tbody tr td.status span[href].disabled:focus,.badge-default[href]:hover,section.flipflop table tbody tr td.status span[href].disabled:hover{background-color:#4b5257}.badge-primary{background-color:#0275d8}.badge-primary[href]:focus,.badge-primary[href]:hover{background-color:#025aa5}.badge-success,section.flipflop table tbody tr td.status span.enabled{background-color:#5cb85c}.badge-success[href]:focus,section.flipflop table tbody tr td.status span[href].enabled:focus,.badge-success[href]:hover,section.flipflop table tbody tr td.status span[href].enabled:hover{background-color:#449d44}.badge-info{background-color:#5bc0de}.badge-info[href]:focus,.badge-info[href]:hover{background-color:#31b0d5}.badge-warning{background-color:#f0ad4e}.badge-warning[href]:focus,.badge-warning[href]:hover{background-color:#ec971f}.badge-danger{background-color:#d9534f}.badge-danger[href]:focus,.badge-danger[href]:hover{background-color:#c9302c}.m-0{margin:0 0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:0.25rem 0.25rem !important}.mt-1{margin-top:0.25rem !important}.mr-1{margin-right:0.25rem !important}.mb-1{margin-bottom:0.25rem !important}.ml-1{margin-left:0.25rem !important}.mx-1{margin-right:0.25rem !important;margin-left:0.25rem !important}.my-1{margin-top:0.25rem !important;margin-bottom:0.25rem !important}.m-2{margin:0.5rem 0.5rem !important}.mt-2{margin-top:0.5rem !important}.mr-2,section.flipflop table tbody tr td.toggle div.toolbar div.group{margin-right:0.5rem !important}.mb-2{margin-bottom:0.5rem !important}.ml-2{margin-left:0.5rem !important}.mx-2{margin-right:0.5rem !important;margin-left:0.5rem !important}.my-2{margin-top:0.5rem !important;margin-bottom:0.5rem !important}.m-3{margin:1rem 1rem !important}.mt-3{margin-top:1rem !important}.mr-3{margin-right:1rem !important}.mb-3{margin-bottom:1rem !important}.ml-3{margin-left:1rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.m-4{margin:1.5rem 1.5rem !important}.mt-4{margin-top:1.5rem !important}.mr-4{margin-right:1.5rem !important}.mb-4{margin-bottom:1.5rem !important}.ml-4{margin-left:1.5rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-5{margin:3rem 3rem !important}.mt-5{margin-top:3rem !important}.mr-5{margin-right:3rem !important}.mb-5{margin-bottom:3rem !important}.ml-5{margin-left:3rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.p-0{padding:0 0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-right:0 !important;padding-left:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:0.25rem 0.25rem !important}.pt-1{padding-top:0.25rem !important}.pr-1{padding-right:0.25rem !important}.pb-1{padding-bottom:0.25rem !important}.pl-1{padding-left:0.25rem !important}.px-1{padding-right:0.25rem !important;padding-left:0.25rem !important}.py-1{padding-top:0.25rem !important;padding-bottom:0.25rem !important}.p-2{padding:0.5rem 0.5rem !important}.pt-2{padding-top:0.5rem !important}.pr-2{padding-right:0.5rem !important}.pb-2{padding-bottom:0.5rem !important}.pl-2{padding-left:0.5rem !important}.px-2{padding-right:0.5rem !important;padding-left:0.5rem !important}.py-2{padding-top:0.5rem !important;padding-bottom:0.5rem !important}.p-3{padding:1rem 1rem !important}.pt-3{padding-top:1rem !important}.pr-3{padding-right:1rem !important}.pb-3{padding-bottom:1rem !important}.pl-3{padding-left:1rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.p-4{padding:1.5rem 1.5rem !important}.pt-4{padding-top:1.5rem !important}.pr-4{padding-right:1.5rem !important}.pb-4{padding-bottom:1.5rem !important}.pl-4{padding-left:1.5rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-5{padding:3rem 3rem !important}.pt-5{padding-top:3rem !important}.pr-5{padding-right:3rem !important}.pb-5{padding-bottom:3rem !important}.pl-5{padding-left:3rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 0 !important}.mt-sm-0{margin-top:0 !important}.mr-sm-0{margin-right:0 !important}.mb-sm-0{margin-bottom:0 !important}.ml-sm-0{margin-left:0 !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.m-sm-1{margin:0.25rem 0.25rem !important}.mt-sm-1{margin-top:0.25rem !important}.mr-sm-1{margin-right:0.25rem !important}.mb-sm-1{margin-bottom:0.25rem !important}.ml-sm-1{margin-left:0.25rem !important}.mx-sm-1{margin-right:0.25rem !important;margin-left:0.25rem !important}.my-sm-1{margin-top:0.25rem !important;margin-bottom:0.25rem !important}.m-sm-2{margin:0.5rem 0.5rem !important}.mt-sm-2{margin-top:0.5rem !important}.mr-sm-2{margin-right:0.5rem !important}.mb-sm-2{margin-bottom:0.5rem !important}.ml-sm-2{margin-left:0.5rem !important}.mx-sm-2{margin-right:0.5rem !important;margin-left:0.5rem !important}.my-sm-2{margin-top:0.5rem !important;margin-bottom:0.5rem !important}.m-sm-3{margin:1rem 1rem !important}.mt-sm-3{margin-top:1rem !important}.mr-sm-3{margin-right:1rem !important}.mb-sm-3{margin-bottom:1rem !important}.ml-sm-3{margin-left:1rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.m-sm-4{margin:1.5rem 1.5rem !important}.mt-sm-4{margin-top:1.5rem !important}.mr-sm-4{margin-right:1.5rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.ml-sm-4{margin-left:1.5rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-sm-5{margin:3rem 3rem !important}.mt-sm-5{margin-top:3rem !important}.mr-sm-5{margin-right:3rem !important}.mb-sm-5{margin-bottom:3rem !important}.ml-sm-5{margin-left:3rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.p-sm-0{padding:0 0 !important}.pt-sm-0{padding-top:0 !important}.pr-sm-0{padding-right:0 !important}.pb-sm-0{padding-bottom:0 !important}.pl-sm-0{padding-left:0 !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.p-sm-1{padding:0.25rem 0.25rem !important}.pt-sm-1{padding-top:0.25rem !important}.pr-sm-1{padding-right:0.25rem !important}.pb-sm-1{padding-bottom:0.25rem !important}.pl-sm-1{padding-left:0.25rem !important}.px-sm-1{padding-right:0.25rem !important;padding-left:0.25rem !important}.py-sm-1{padding-top:0.25rem !important;padding-bottom:0.25rem !important}.p-sm-2{padding:0.5rem 0.5rem !important}.pt-sm-2{padding-top:0.5rem !important}.pr-sm-2{padding-right:0.5rem !important}.pb-sm-2{padding-bottom:0.5rem !important}.pl-sm-2{padding-left:0.5rem !important}.px-sm-2{padding-right:0.5rem !important;padding-left:0.5rem !important}.py-sm-2{padding-top:0.5rem !important;padding-bottom:0.5rem !important}.p-sm-3{padding:1rem 1rem !important}.pt-sm-3{padding-top:1rem !important}.pr-sm-3{padding-right:1rem !important}.pb-sm-3{padding-bottom:1rem !important}.pl-sm-3{padding-left:1rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.p-sm-4{padding:1.5rem 1.5rem !important}.pt-sm-4{padding-top:1.5rem !important}.pr-sm-4{padding-right:1.5rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pl-sm-4{padding-left:1.5rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-sm-5{padding:3rem 3rem !important}.pt-sm-5{padding-top:3rem !important}.pr-sm-5{padding-right:3rem !important}.pb-sm-5{padding-bottom:3rem !important}.pl-sm-5{padding-left:3rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto{margin-top:auto !important}.mr-sm-auto{margin-right:auto !important}.mb-sm-auto{margin-bottom:auto !important}.ml-sm-auto{margin-left:auto !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 0 !important}.mt-md-0{margin-top:0 !important}.mr-md-0{margin-right:0 !important}.mb-md-0{margin-bottom:0 !important}.ml-md-0{margin-left:0 !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.m-md-1{margin:0.25rem 0.25rem !important}.mt-md-1{margin-top:0.25rem !important}.mr-md-1{margin-right:0.25rem !important}.mb-md-1{margin-bottom:0.25rem !important}.ml-md-1{margin-left:0.25rem !important}.mx-md-1{margin-right:0.25rem !important;margin-left:0.25rem !important}.my-md-1{margin-top:0.25rem !important;margin-bottom:0.25rem !important}.m-md-2{margin:0.5rem 0.5rem !important}.mt-md-2{margin-top:0.5rem !important}.mr-md-2{margin-right:0.5rem !important}.mb-md-2{margin-bottom:0.5rem !important}.ml-md-2{margin-left:0.5rem !important}.mx-md-2{margin-right:0.5rem !important;margin-left:0.5rem !important}.my-md-2{margin-top:0.5rem !important;margin-bottom:0.5rem !important}.m-md-3{margin:1rem 1rem !important}.mt-md-3{margin-top:1rem !important}.mr-md-3{margin-right:1rem !important}.mb-md-3{margin-bottom:1rem !important}.ml-md-3{margin-left:1rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.m-md-4{margin:1.5rem 1.5rem !important}.mt-md-4{margin-top:1.5rem !important}.mr-md-4{margin-right:1.5rem !important}.mb-md-4{margin-bottom:1.5rem !important}.ml-md-4{margin-left:1.5rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-md-5{margin:3rem 3rem !important}.mt-md-5{margin-top:3rem !important}.mr-md-5{margin-right:3rem !important}.mb-md-5{margin-bottom:3rem !important}.ml-md-5{margin-left:3rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.p-md-0{padding:0 0 !important}.pt-md-0{padding-top:0 !important}.pr-md-0{padding-right:0 !important}.pb-md-0{padding-bottom:0 !important}.pl-md-0{padding-left:0 !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.p-md-1{padding:0.25rem 0.25rem !important}.pt-md-1{padding-top:0.25rem !important}.pr-md-1{padding-right:0.25rem !important}.pb-md-1{padding-bottom:0.25rem !important}.pl-md-1{padding-left:0.25rem !important}.px-md-1{padding-right:0.25rem !important;padding-left:0.25rem !important}.py-md-1{padding-top:0.25rem !important;padding-bottom:0.25rem !important}.p-md-2{padding:0.5rem 0.5rem !important}.pt-md-2{padding-top:0.5rem !important}.pr-md-2{padding-right:0.5rem !important}.pb-md-2{padding-bottom:0.5rem !important}.pl-md-2{padding-left:0.5rem !important}.px-md-2{padding-right:0.5rem !important;padding-left:0.5rem !important}.py-md-2{padding-top:0.5rem !important;padding-bottom:0.5rem !important}.p-md-3{padding:1rem 1rem !important}.pt-md-3{padding-top:1rem !important}.pr-md-3{padding-right:1rem !important}.pb-md-3{padding-bottom:1rem !important}.pl-md-3{padding-left:1rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.p-md-4{padding:1.5rem 1.5rem !important}.pt-md-4{padding-top:1.5rem !important}.pr-md-4{padding-right:1.5rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pl-md-4{padding-left:1.5rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-md-5{padding:3rem 3rem !important}.pt-md-5{padding-top:3rem !important}.pr-md-5{padding-right:3rem !important}.pb-md-5{padding-bottom:3rem !important}.pl-md-5{padding-left:3rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto{margin-top:auto !important}.mr-md-auto{margin-right:auto !important}.mb-md-auto{margin-bottom:auto !important}.ml-md-auto{margin-left:auto !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 0 !important}.mt-lg-0{margin-top:0 !important}.mr-lg-0{margin-right:0 !important}.mb-lg-0{margin-bottom:0 !important}.ml-lg-0{margin-left:0 !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.m-lg-1{margin:0.25rem 0.25rem !important}.mt-lg-1{margin-top:0.25rem !important}.mr-lg-1{margin-right:0.25rem !important}.mb-lg-1{margin-bottom:0.25rem !important}.ml-lg-1{margin-left:0.25rem !important}.mx-lg-1{margin-right:0.25rem !important;margin-left:0.25rem !important}.my-lg-1{margin-top:0.25rem !important;margin-bottom:0.25rem !important}.m-lg-2{margin:0.5rem 0.5rem !important}.mt-lg-2{margin-top:0.5rem !important}.mr-lg-2{margin-right:0.5rem !important}.mb-lg-2{margin-bottom:0.5rem !important}.ml-lg-2{margin-left:0.5rem !important}.mx-lg-2{margin-right:0.5rem !important;margin-left:0.5rem !important}.my-lg-2{margin-top:0.5rem !important;margin-bottom:0.5rem !important}.m-lg-3{margin:1rem 1rem !important}.mt-lg-3{margin-top:1rem !important}.mr-lg-3{margin-right:1rem !important}.mb-lg-3{margin-bottom:1rem !important}.ml-lg-3{margin-left:1rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.m-lg-4{margin:1.5rem 1.5rem !important}.mt-lg-4{margin-top:1.5rem !important}.mr-lg-4{margin-right:1.5rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.ml-lg-4{margin-left:1.5rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-lg-5{margin:3rem 3rem !important}.mt-lg-5{margin-top:3rem !important}.mr-lg-5{margin-right:3rem !important}.mb-lg-5{margin-bottom:3rem !important}.ml-lg-5{margin-left:3rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.p-lg-0{padding:0 0 !important}.pt-lg-0{padding-top:0 !important}.pr-lg-0{padding-right:0 !important}.pb-lg-0{padding-bottom:0 !important}.pl-lg-0{padding-left:0 !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.p-lg-1{padding:0.25rem 0.25rem !important}.pt-lg-1{padding-top:0.25rem !important}.pr-lg-1{padding-right:0.25rem !important}.pb-lg-1{padding-bottom:0.25rem !important}.pl-lg-1{padding-left:0.25rem !important}.px-lg-1{padding-right:0.25rem !important;padding-left:0.25rem !important}.py-lg-1{padding-top:0.25rem !important;padding-bottom:0.25rem !important}.p-lg-2{padding:0.5rem 0.5rem !important}.pt-lg-2{padding-top:0.5rem !important}.pr-lg-2{padding-right:0.5rem !important}.pb-lg-2{padding-bottom:0.5rem !important}.pl-lg-2{padding-left:0.5rem !important}.px-lg-2{padding-right:0.5rem !important;padding-left:0.5rem !important}.py-lg-2{padding-top:0.5rem !important;padding-bottom:0.5rem !important}.p-lg-3{padding:1rem 1rem !important}.pt-lg-3{padding-top:1rem !important}.pr-lg-3{padding-right:1rem !important}.pb-lg-3{padding-bottom:1rem !important}.pl-lg-3{padding-left:1rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.p-lg-4{padding:1.5rem 1.5rem !important}.pt-lg-4{padding-top:1.5rem !important}.pr-lg-4{padding-right:1.5rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pl-lg-4{padding-left:1.5rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-lg-5{padding:3rem 3rem !important}.pt-lg-5{padding-top:3rem !important}.pr-lg-5{padding-right:3rem !important}.pb-lg-5{padding-bottom:3rem !important}.pl-lg-5{padding-left:3rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto{margin-top:auto !important}.mr-lg-auto{margin-right:auto !important}.mb-lg-auto{margin-bottom:auto !important}.ml-lg-auto{margin-left:auto !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 0 !important}.mt-xl-0{margin-top:0 !important}.mr-xl-0{margin-right:0 !important}.mb-xl-0{margin-bottom:0 !important}.ml-xl-0{margin-left:0 !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.m-xl-1{margin:0.25rem 0.25rem !important}.mt-xl-1{margin-top:0.25rem !important}.mr-xl-1{margin-right:0.25rem !important}.mb-xl-1{margin-bottom:0.25rem !important}.ml-xl-1{margin-left:0.25rem !important}.mx-xl-1{margin-right:0.25rem !important;margin-left:0.25rem !important}.my-xl-1{margin-top:0.25rem !important;margin-bottom:0.25rem !important}.m-xl-2{margin:0.5rem 0.5rem !important}.mt-xl-2{margin-top:0.5rem !important}.mr-xl-2{margin-right:0.5rem !important}.mb-xl-2{margin-bottom:0.5rem !important}.ml-xl-2{margin-left:0.5rem !important}.mx-xl-2{margin-right:0.5rem !important;margin-left:0.5rem !important}.my-xl-2{margin-top:0.5rem !important;margin-bottom:0.5rem !important}.m-xl-3{margin:1rem 1rem !important}.mt-xl-3{margin-top:1rem !important}.mr-xl-3{margin-right:1rem !important}.mb-xl-3{margin-bottom:1rem !important}.ml-xl-3{margin-left:1rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.m-xl-4{margin:1.5rem 1.5rem !important}.mt-xl-4{margin-top:1.5rem !important}.mr-xl-4{margin-right:1.5rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.ml-xl-4{margin-left:1.5rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-xl-5{margin:3rem 3rem !important}.mt-xl-5{margin-top:3rem !important}.mr-xl-5{margin-right:3rem !important}.mb-xl-5{margin-bottom:3rem !important}.ml-xl-5{margin-left:3rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.p-xl-0{padding:0 0 !important}.pt-xl-0{padding-top:0 !important}.pr-xl-0{padding-right:0 !important}.pb-xl-0{padding-bottom:0 !important}.pl-xl-0{padding-left:0 !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.p-xl-1{padding:0.25rem 0.25rem !important}.pt-xl-1{padding-top:0.25rem !important}.pr-xl-1{padding-right:0.25rem !important}.pb-xl-1{padding-bottom:0.25rem !important}.pl-xl-1{padding-left:0.25rem !important}.px-xl-1{padding-right:0.25rem !important;padding-left:0.25rem !important}.py-xl-1{padding-top:0.25rem !important;padding-bottom:0.25rem !important}.p-xl-2{padding:0.5rem 0.5rem !important}.pt-xl-2{padding-top:0.5rem !important}.pr-xl-2{padding-right:0.5rem !important}.pb-xl-2{padding-bottom:0.5rem !important}.pl-xl-2{padding-left:0.5rem !important}.px-xl-2{padding-right:0.5rem !important;padding-left:0.5rem !important}.py-xl-2{padding-top:0.5rem !important;padding-bottom:0.5rem !important}.p-xl-3{padding:1rem 1rem !important}.pt-xl-3{padding-top:1rem !important}.pr-xl-3{padding-right:1rem !important}.pb-xl-3{padding-bottom:1rem !important}.pl-xl-3{padding-left:1rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.p-xl-4{padding:1.5rem 1.5rem !important}.pt-xl-4{padding-top:1.5rem !important}.pr-xl-4{padding-right:1.5rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pl-xl-4{padding-left:1.5rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-xl-5{padding:3rem 3rem !important}.pt-xl-5{padding-top:3rem !important}.pr-xl-5{padding-right:3rem !important}.pb-xl-5{padding-bottom:3rem !important}.pl-xl-5{padding-left:3rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto{margin-top:auto !important}.mr-xl-auto{margin-right:auto !important}.mb-xl-auto{margin-bottom:auto !important}.ml-xl-auto{margin-left:auto !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}}section.flipflop{position:relative;margin-left:auto;margin-right:auto;padding-right:0;padding-left:0;margin:5rem 0 0}@media (min-width: 576px){section.flipflop{padding-right:0;padding-left:0}}@media (min-width: 768px){section.flipflop{padding-right:0;padding-left:0}}@media (min-width: 992px){section.flipflop{padding-right:0;padding-left:0}}@media (min-width: 1200px){section.flipflop{padding-right:0;padding-left:0}}section.flipflop h1{padding:0 1.4rem}section.flipflop table td:first-child{padding-left:1.5rem}section.flipflop table td:last-child{padding-right:1.5rem}section.flipflop table thead tr th{position:relative;cursor:default}section.flipflop table thead tr th[data-tooltip]:before,section.flipflop table thead tr th[data-tooltip]:after{transition:all 0.2s ease-out;transform:translateY(0.2rem) translateZ(0);opacity:0;display:block;position:absolute}section.flipflop table thead tr th[data-tooltip]:before{content:attr(data-tooltip);width:98%;left:0;bottom:3.75rem;margin:0;padding:0.5rem 0.75rem;background:#464a4c;border-radius:0.2rem;font-size:0.875rem;font-weight:normal;pointer-events:none}section.flipflop table thead tr th[data-tooltip]:after{content:" ";width:0;height:0;left:1rem;bottom:3.25rem;border-left:solid transparent 0.5rem;border-right:solid transparent 0.5rem;border-top:solid #464a4c 0.5rem}section.flipflop table thead tr th:hover[data-tooltip]:before,section.flipflop table thead tr th:hover[data-tooltip]:after{transform:translateY(0) translateZ(0);opacity:1}section.flipflop table tbody tr td.status{width:2.2rem;font-size:1.1rem}section.flipflop table tbody tr td.status span.enabled,section.flipflop table tbody tr td.status span.disabled{width:2rem}section.flipflop table tbody tr td.status span.enabled span,section.flipflop table tbody tr td.status span.disabled span{width:auto;text-align:center;margin:0 -2rem}section.flipflop table tbody tr td.name{min-width:12rem;padding-top:0.9rem;font-weight:bold}section.flipflop table tbody tr td.description{min-width:12rem;padding-top:0.9rem}section.flipflop table tbody tr td.toggle{min-width:10rem}section.flipflop table tbody tr td.toggle div.toolbar{margin-left:0}section.flipflop table tbody tr td.toggle div.toolbar div.group button{cursor:pointer}section.flipflop table tbody tr.group{background-color:rgba(0,0,0,0.05)}section.flipflop table tbody tr.group td h2{margin:0;line-height:inherit;font-size:1.4rem;font-weight:bold}
|
@@ -1 +1,8 @@
|
|
1
|
-
<!
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%= yield :title -%></title>
|
5
|
+
<style><%= render partial: "flipflop/stylesheets/flipflop.css" %></style>
|
6
|
+
</head>
|
7
|
+
<body><%= yield -%></body>
|
8
|
+
</html>
|