consul 1.3.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.8-0.lock ADDED
@@ -0,0 +1,174 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ consul (2.0.0)
5
+ activerecord (>= 6.0)
6
+ activesupport (>= 6.0)
7
+ edge_rider (>= 0.3.0)
8
+ memoized (>= 1.0.2)
9
+ railties (>= 6.0)
10
+
11
+ GEM
12
+ remote: https://rubygems.org/
13
+ specs:
14
+ actionpack (8.0.1)
15
+ actionview (= 8.0.1)
16
+ activesupport (= 8.0.1)
17
+ nokogiri (>= 1.8.5)
18
+ rack (>= 2.2.4)
19
+ rack-session (>= 1.0.1)
20
+ rack-test (>= 0.6.3)
21
+ rails-dom-testing (~> 2.2)
22
+ rails-html-sanitizer (~> 1.6)
23
+ useragent (~> 0.16)
24
+ actionview (8.0.1)
25
+ activesupport (= 8.0.1)
26
+ builder (~> 3.1)
27
+ erubi (~> 1.11)
28
+ rails-dom-testing (~> 2.2)
29
+ rails-html-sanitizer (~> 1.6)
30
+ activemodel (8.0.1)
31
+ activesupport (= 8.0.1)
32
+ activerecord (8.0.1)
33
+ activemodel (= 8.0.1)
34
+ activesupport (= 8.0.1)
35
+ timeout (>= 0.4.0)
36
+ activesupport (8.0.1)
37
+ base64
38
+ benchmark (>= 0.3)
39
+ bigdecimal
40
+ concurrent-ruby (~> 1.0, >= 1.3.1)
41
+ connection_pool (>= 2.2.5)
42
+ drb
43
+ i18n (>= 1.6, < 2)
44
+ logger (>= 1.4.2)
45
+ minitest (>= 5.1)
46
+ securerandom (>= 0.3)
47
+ tzinfo (~> 2.0, >= 2.0.5)
48
+ uri (>= 0.13.1)
49
+ assignable_values (1.0.0)
50
+ activerecord (>= 2.3)
51
+ base64 (0.2.0)
52
+ benchmark (0.4.0)
53
+ bigdecimal (3.1.8)
54
+ builder (3.3.0)
55
+ concurrent-ruby (1.3.3)
56
+ connection_pool (2.4.1)
57
+ crass (1.0.6)
58
+ database_cleaner (2.0.2)
59
+ database_cleaner-active_record (>= 2, < 3)
60
+ database_cleaner-active_record (2.2.0)
61
+ activerecord (>= 5.a)
62
+ database_cleaner-core (~> 2.0.0)
63
+ database_cleaner-core (2.0.1)
64
+ date (3.4.1)
65
+ diff-lcs (1.5.1)
66
+ drb (2.2.1)
67
+ edge_rider (2.3.0)
68
+ activerecord (>= 3.2)
69
+ erubi (1.13.0)
70
+ gemika (0.8.3)
71
+ i18n (1.14.5)
72
+ concurrent-ruby (~> 1.0)
73
+ io-console (0.8.0)
74
+ irb (1.14.3)
75
+ rdoc (>= 4.0.0)
76
+ reline (>= 0.4.2)
77
+ logger (1.6.1)
78
+ loofah (2.22.0)
79
+ crass (~> 1.0.2)
80
+ nokogiri (>= 1.12.0)
81
+ memoized (1.1.1)
82
+ mini_portile2 (2.8.8)
83
+ minitest (5.24.1)
84
+ nokogiri (1.16.6)
85
+ mini_portile2 (~> 2.8.2)
86
+ racc (~> 1.4)
87
+ psych (5.2.2)
88
+ date
89
+ stringio
90
+ racc (1.8.0)
91
+ rack (3.1.7)
92
+ rack-session (2.0.0)
93
+ rack (>= 3.0.0)
94
+ rack-test (2.1.0)
95
+ rack (>= 1.3)
96
+ rackup (2.2.1)
97
+ rack (>= 3)
98
+ rails-dom-testing (2.2.0)
99
+ activesupport (>= 5.0.0)
100
+ minitest
101
+ nokogiri (>= 1.6)
102
+ rails-html-sanitizer (1.6.0)
103
+ loofah (~> 2.21)
104
+ nokogiri (~> 1.14)
105
+ railties (8.0.1)
106
+ actionpack (= 8.0.1)
107
+ activesupport (= 8.0.1)
108
+ irb (~> 1.13)
109
+ rackup (>= 1.0.0)
110
+ rake (>= 12.2)
111
+ thor (~> 1.0, >= 1.2.2)
112
+ zeitwerk (~> 2.6)
113
+ rake (13.2.1)
114
+ rdoc (6.10.0)
115
+ psych (>= 4.0.0)
116
+ reline (0.6.0)
117
+ io-console (~> 0.5)
118
+ rspec (3.13.0)
119
+ rspec-core (~> 3.13.0)
120
+ rspec-expectations (~> 3.13.0)
121
+ rspec-mocks (~> 3.13.0)
122
+ rspec-core (3.13.0)
123
+ rspec-support (~> 3.13.0)
124
+ rspec-expectations (3.13.1)
125
+ diff-lcs (>= 1.2.0, < 2.0)
126
+ rspec-support (~> 3.13.0)
127
+ rspec-mocks (3.13.1)
128
+ diff-lcs (>= 1.2.0, < 2.0)
129
+ rspec-support (~> 3.13.0)
130
+ rspec-rails (6.1.3)
131
+ actionpack (>= 6.1)
132
+ activesupport (>= 6.1)
133
+ railties (>= 6.1)
134
+ rspec-core (~> 3.13)
135
+ rspec-expectations (~> 3.13)
136
+ rspec-mocks (~> 3.13)
137
+ rspec-support (~> 3.13)
138
+ rspec-support (3.13.1)
139
+ rspec_candy (0.5.1)
140
+ rspec
141
+ sneaky-save
142
+ securerandom (0.3.2)
143
+ shoulda-matchers (6.2.0)
144
+ activesupport (>= 5.2.0)
145
+ sneaky-save (0.1.3)
146
+ activerecord (>= 3.2.0)
147
+ sqlite3 (2.4.1)
148
+ mini_portile2 (~> 2.8.0)
149
+ stringio (3.1.2)
150
+ thor (1.3.2)
151
+ timeout (0.4.1)
152
+ tzinfo (2.0.6)
153
+ concurrent-ruby (~> 1.0)
154
+ uri (1.0.2)
155
+ useragent (0.16.10)
156
+ zeitwerk (2.7.1)
157
+
158
+ PLATFORMS
159
+ ruby
160
+
161
+ DEPENDENCIES
162
+ assignable_values
163
+ consul!
164
+ database_cleaner
165
+ gemika (>= 0.8.1)
166
+ railties (~> 8.0)
167
+ rspec
168
+ rspec-rails
169
+ rspec_candy
170
+ shoulda-matchers
171
+ sqlite3
172
+
173
+ BUNDLED WITH
174
+ 2.5.15
data/Gemfile.lock CHANGED
@@ -1 +1 @@
1
- Gemfile.7-1.lock
1
+ Gemfile.8-0.lock
data/README.md CHANGED
@@ -1,13 +1,27 @@
1
- # Consul — A next gen authorization solution
2
-
3
- [![Tests](https://github.com/makandra/consul/workflows/Tests/badge.svg)](https://github.com/makandra/consul/actions) [![Code Climate](https://codeclimate.com/github/makandra/consul.png)](https://codeclimate.com/github/makandra/consul)
1
+ <p>
2
+ <a href="https://makandra.de/">
3
+ <picture>
4
+ <source media="(prefers-color-scheme: light)" srcset="media/makandra-with-bottom-margin.light.svg">
5
+ <source media="(prefers-color-scheme: dark)" srcset="media/makandra-with-bottom-margin.dark.svg">
6
+ <img align="right" width="25%" alt="makandra" src="media/makandra-with-bottom-margin.light.svg">
7
+ </picture>
8
+ </a>
9
+
10
+ <picture>
11
+ <source media="(prefers-color-scheme: light)" srcset="media/logo.light.shapes.svg">
12
+ <source media="(prefers-color-scheme: dark)" srcset="media/logo.dark.shapes.svg">
13
+ <img width="155" alt="consul" role="heading" aria-level="1" src="media/logo.light.shapes.svg">
14
+ </picture>
15
+ </p>
16
+
17
+ [![Tests](https://github.com/makandra/consul/workflows/Tests/badge.svg)](https://github.com/makandra/consul/actions)
4
18
 
5
19
  Consul is an authorization solution for Ruby on Rails where you describe _sets of accessible things_ to control what a user can see or edit.
6
20
 
7
21
  We have used Consul in combination with [assignable_values](https://github.com/makandra/assignable_values) to solve a variety of authorization requirements ranging from boring to bizarre.
8
22
  Also see our crash course video: [Solving bizare authorization requirements with Rails](http://bizarre-authorization.talks.makandra.com/).
9
23
 
10
- Consul is tested with Rails 5.2, 6.1, 7.0, 7.1 on Ruby 2.5, 2.7, 3.2, 3.3 (only if supported, for each Ruby/Rails combination). If you need support for Rails 3.2, please use [v0.13.2](https://github.com/makandra/consul/tree/v0.13.2).
24
+ Consul is tested with Rails 6.1, 7.1, 7.2 and 8.0 on Ruby 2.5, 2.7, 3.2, 3.3 (only if supported, for each Ruby/Rails combination). If you need support for Rails 3.2, please use [v0.13.2](https://github.com/makandra/consul/tree/v0.13.2).
11
25
 
12
26
  ## Describing access to your application
13
27
 
@@ -820,11 +834,11 @@ Now run `bundle install` to lock the gem into your project.
820
834
 
821
835
  ## Development
822
836
 
823
- We currently develop using Ruby 2.5.3 (see `.ruby-version`) since that version works for current versions of ActiveRecord that we support. GitHub Actions will test additional Ruby versions (2.3.8, 2.4.5, and 3.0.1).
837
+ We currently develop using Ruby 3.4.1 (see `.ruby-version`) since that version works for current versions of ActiveRecord that we support. GitHub Actions will test additional Ruby versions (2.7.3, 3.2.0).
824
838
 
825
839
  There are tests in `spec`. We only accept PRs with tests. To run tests:
826
840
 
827
- - Install Ruby 2.5.3
841
+ - Install Ruby 3.4.1
828
842
  - run `bundle install`
829
843
  - Put your database credentials into `spec/support/database.yml`. There's a `database.sample.yml` you can use as a template.
830
844
  - There are gem bundles in the project root for each rails version that we support.
data/consul.gemspec CHANGED
@@ -26,8 +26,8 @@ Gem::Specification.new do |s|
26
26
  s.require_paths = ["lib"]
27
27
 
28
28
  s.add_dependency('memoized', '>=1.0.2')
29
- s.add_dependency('activerecord', '>= 3.2')
30
- s.add_dependency('activesupport', '>= 3.2')
31
- s.add_dependency('railties', '>= 3.2')
29
+ s.add_dependency('activerecord', '>= 6.0')
30
+ s.add_dependency('activesupport', '>= 6.0')
31
+ s.add_dependency('railties', '>= 6.0')
32
32
  s.add_dependency('edge_rider', '>= 0.3.0')
33
33
  end
data/lib/consul/util.rb CHANGED
@@ -3,11 +3,7 @@ module Consul
3
3
  extend self
4
4
 
5
5
  def scope_selects_all_records?(scope)
6
- if Rails.version.to_i < 3
7
- scope = scope.scoped({})
8
- else
9
- scope = scope.scoped
10
- end
6
+ scope = scope.scoped
11
7
  scope_sql = scope.to_sql
12
8
  quoted_table_name = Regexp.quote(scope.connection.quote_table_name(scope.table_name))
13
9
  all_sql_pattern = /\ASELECT (#{quoted_table_name}\.)?\* FROM #{quoted_table_name}\z/
@@ -23,26 +19,17 @@ module Consul
23
19
  end
24
20
 
25
21
  def define_scope(klass, name, lambda)
26
- if Rails.version.to_i < 4 # Rails 2/3
27
- scope_definition = Rails.version.to_i < 3 ? :named_scope : :scope
28
- klass.send scope_definition, name, lambda
29
- else
30
- klass.send :scope, name, lambda { |*args|
31
- options = lambda.call(*args)
32
- klass.scoped(options.slice *EdgeRider::Scoped::VALID_FIND_OPTIONS)
33
- }
34
- end
22
+ klass.send :scope, name, lambda { |*args|
23
+ options = lambda.call(*args)
24
+ klass.scoped(options.slice *EdgeRider::Scoped::VALID_FIND_OPTIONS)
25
+ }
35
26
  end
36
27
 
37
28
  # This method does not support dynamic default scopes via lambdas
38
29
  # (as does #define_scope), because it is currently not required.
39
30
  def define_default_scope(klass, conditions)
40
- if Rails.version.to_i < 4 # Rails 2/3
41
- klass.send :default_scope, conditions
42
- else
43
- klass.send :default_scope do
44
- klass.scoped(conditions)
45
- end
31
+ klass.send :default_scope do
32
+ klass.scoped(conditions)
46
33
  end
47
34
  end
48
35
 
@@ -58,33 +45,19 @@ module Consul
58
45
  end
59
46
 
60
47
  def skip_before_action(controller_class, name, options)
61
- if Rails.version.to_i < 4
62
- controller_class.skip_before_filter name, options
63
- elsif Rails.version.to_i < 5
64
- controller_class.skip_before_action name, options
65
- else
66
- # Every `power` in a controller will skip the power check filter. After the 1st time, Rails 5+ will raise
67
- # an error because there is no `unchecked_power` action to skip any more.
68
- # To avoid this, we add the following extra option. Note that it must not be added in Rails 4 to avoid errors.
69
- # See http://api.rubyonrails.org/classes/ActiveSupport/Callbacks/ClassMethods.html#method-i-skip_callback
70
- controller_class.skip_before_action name, { :raise => false }.merge!(options)
71
- end
48
+ # Every `power` in a controller will skip the power check filter. After the 1st time, Rails will raise
49
+ # an error because there is no `unchecked_power` action to skip any more.
50
+ # To avoid this, we add the following extra option.
51
+ # See http://api.rubyonrails.org/classes/ActiveSupport/Callbacks/ClassMethods.html#method-i-skip_callback
52
+ controller_class.skip_before_action name, { :raise => false }.merge!(options)
72
53
  end
73
54
 
74
55
  def before_action(controller_class, *args, &block)
75
- if Rails.version.to_i < 4
76
- controller_class.before_filter *args, &block
77
- else
78
- controller_class.before_action *args, &block
79
- end
56
+ controller_class.before_action *args, &block
80
57
  end
81
58
 
82
59
  def around_action(controller_class, *args, &block)
83
- if Rails.version.to_i < 4
84
- controller_class.around_filter *args, &block
85
- else
86
- controller_class.around_action *args, &block
87
- end
60
+ controller_class.around_action *args, &block
88
61
  end
89
62
 
90
63
  end
@@ -1,3 +1,3 @@
1
1
  module Consul
2
- VERSION = '1.3.2'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -0,0 +1,125 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:xlink="http://www.w3.org/1999/xlink"
11
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ width="39.306458mm"
14
+ height="14.056225mm"
15
+ viewBox="0 0 39.306457 14.056225"
16
+ version="1.1"
17
+ id="svg838"
18
+ inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
19
+ sodipodi:docname="logo.dark.shapes.svg"
20
+ inkscape:export-filename="/home/henning/Projects/capybara-lockstep/media/capybara-lockstep.dark.png"
21
+ inkscape:export-xdpi="196"
22
+ inkscape:export-ydpi="196">
23
+ <defs
24
+ id="defs832">
25
+ <linearGradient
26
+ inkscape:collect="always"
27
+ id="linearGradient1406">
28
+ <stop
29
+ style="stop-color:#ff0844;stop-opacity:1"
30
+ offset="0"
31
+ id="stop1402" />
32
+ <stop
33
+ style="stop-color:#ffb199;stop-opacity:1"
34
+ offset="1"
35
+ id="stop1404" />
36
+ </linearGradient>
37
+ <linearGradient
38
+ inkscape:collect="always"
39
+ xlink:href="#linearGradient1406"
40
+ id="linearGradient1408"
41
+ x1="22.054907"
42
+ y1="91.071762"
43
+ x2="88.956696"
44
+ y2="91.071762"
45
+ gradientUnits="userSpaceOnUse"
46
+ gradientTransform="matrix(0.58751979,0,0,0.08820435,-12.957695,57.908781)" />
47
+ </defs>
48
+ <sodipodi:namedview
49
+ id="base"
50
+ pagecolor="#ffffff"
51
+ bordercolor="#666666"
52
+ borderopacity="1.0"
53
+ inkscape:pageopacity="0.0"
54
+ inkscape:pageshadow="2"
55
+ inkscape:zoom="4"
56
+ inkscape:cx="17.132757"
57
+ inkscape:cy="-43.059445"
58
+ inkscape:document-units="mm"
59
+ inkscape:current-layer="layer1"
60
+ showgrid="false"
61
+ fit-margin-top="0"
62
+ fit-margin-left="0"
63
+ fit-margin-right="0"
64
+ fit-margin-bottom="0"
65
+ inkscape:window-width="2560"
66
+ inkscape:window-height="1391"
67
+ inkscape:window-x="1920"
68
+ inkscape:window-y="0"
69
+ inkscape:window-maximized="1"
70
+ inkscape:pagecheckerboard="true" />
71
+ <metadata
72
+ id="metadata835">
73
+ <rdf:RDF>
74
+ <cc:Work
75
+ rdf:about="">
76
+ <dc:format>image/svg+xml</dc:format>
77
+ <dc:type
78
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
79
+ <dc:title></dc:title>
80
+ </cc:Work>
81
+ </rdf:RDF>
82
+ </metadata>
83
+ <g
84
+ inkscape:label="Layer 1"
85
+ inkscape:groupmode="layer"
86
+ id="layer1"
87
+ transform="translate(0,-52.518951)">
88
+ <g
89
+ aria-label="CONSUL"
90
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332"
91
+ id="text1385">
92
+ <path
93
+ d="m 3.8629165,58.191618 q 0.4868334,0 0.8837084,-0.142875 0.4021666,-0.142875 0.5979583,-0.280459 l 0.6773333,1.344084 q -0.2487083,0.211666 -0.8519583,0.428625 -0.5979583,0.216958 -1.4234583,0.216958 -0.7725833,0 -1.4499166,-0.269875 Q 1.6192499,59.218201 1.1006666,58.731368 0.58737498,58.239243 0.29104166,57.583076 0,56.921618 0,56.149034 0,55.376451 0.29104166,54.714993 0.58208331,54.048243 1.095375,53.556118 q 0.5185833,-0.492125 1.1959166,-0.762 0.682625,-0.275167 1.4552083,-0.275167 0.8255,0 1.4234583,0.216958 0.60325,0.216959 0.8519583,0.428625 L 5.3445832,54.508618 Q 5.1487915,54.365743 4.7466249,54.228159 4.3497499,54.085284 3.8629165,54.085284 q -0.5397499,0 -0.9419166,0.169334 -0.4021666,0.164041 -0.6720416,0.455083 -0.269875,0.291042 -0.4021667,0.656167 -0.1322917,0.365125 -0.1322917,0.767291 0,0.407459 0.1322917,0.777875 0.1322917,0.365125 0.4021667,0.656167 0.269875,0.291042 0.6720416,0.460375 0.4021667,0.164042 0.9419166,0.164042 z"
94
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
95
+ id="path822" />
96
+ <path
97
+ d="m 8.4084457,56.133159 q 0,0.597959 0.2434166,1.084792 0.2487084,0.481542 0.682625,0.767292 0.4392083,0.28575 1.0159997,0.28575 0.576792,0 1.010709,-0.28575 0.439208,-0.28575 0.682625,-0.767292 0.248708,-0.486833 0.248708,-1.084792 0,-0.597958 -0.248708,-1.0795 -0.243417,-0.481541 -0.682625,-0.767291 -0.433917,-0.291042 -1.010709,-0.291042 -0.5767914,0 -1.0159997,0.291042 -0.4339166,0.28575 -0.682625,0.767291 -0.2434166,0.481542 -0.2434166,1.0795 z m -1.6457083,0 q 0,-0.762 0.269875,-1.418166 0.269875,-0.661459 0.7567083,-1.153584 0.4868333,-0.492125 1.143,-0.767291 0.6561666,-0.275167 1.4181663,-0.275167 0.772584,0 1.423459,0.275167 0.656166,0.275166 1.137708,0.767291 0.486833,0.492125 0.751417,1.153584 0.269875,0.656166 0.269875,1.418166 0,0.767292 -0.259292,1.42875 -0.259292,0.656167 -0.740833,1.153584 -0.481542,0.492125 -1.137709,0.767291 -0.656166,0.275167 -1.444625,0.275167 -0.804333,0 -1.4657913,-0.275167 Q 8.228529,59.207618 7.752279,58.715493 7.2760291,58.218076 7.0167374,57.561909 q -0.254,-0.661458 -0.254,-1.42875 z"
98
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
99
+ id="path824" />
100
+ <path
101
+ d="m 16.303598,54.095868 0.116417,0.02117 v 5.513917 h -1.582208 v -6.985 h 2.159 l 2.831041,5.503333 -0.116416,0.02117 v -5.5245 h 1.582208 v 6.985 h -2.169583 z"
102
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
103
+ id="path826" />
104
+ <path
105
+ d="m 25.034843,52.518951 q 0.650875,0 1.137709,0.142875 0.486833,0.142875 0.783166,0.301625 0.296334,0.15875 0.359834,0.211667 l -0.762,1.275291 q -0.08467,-0.0635 -0.291042,-0.185208 -0.201083,-0.121708 -0.481542,-0.216958 -0.275166,-0.09525 -0.576791,-0.09525 -0.407459,0 -0.661459,0.148166 -0.248708,0.142875 -0.248708,0.428625 0,0.195792 0.132292,0.354542 0.137583,0.153458 0.41275,0.296333 0.280458,0.137584 0.709083,0.301625 0.391583,0.142875 0.735542,0.338667 0.343958,0.195792 0.60325,0.465667 0.264583,0.264583 0.418041,0.613833 0.153459,0.34925 0.153459,0.79375 0,0.529167 -0.216959,0.92075 -0.216958,0.386292 -0.592666,0.640292 -0.370417,0.254 -0.846667,0.375708 -0.470958,0.127 -0.978958,0.127 -0.719667,0 -1.291167,-0.164042 -0.566208,-0.164041 -0.915458,-0.354541 -0.34925,-0.1905 -0.418042,-0.254 l 0.788458,-1.328209 q 0.0635,0.04762 0.243417,0.153459 0.185208,0.105833 0.449792,0.22225 0.264583,0.111125 0.560916,0.1905 0.301625,0.07937 0.592667,0.07937 0.486833,0 0.73025,-0.185209 0.243417,-0.1905 0.243417,-0.497416 0,-0.227542 -0.153459,-0.407459 -0.153458,-0.179916 -0.460375,-0.338666 -0.306916,-0.164042 -0.767291,-0.343959 -0.460375,-0.185208 -0.862542,-0.449791 -0.396875,-0.264584 -0.645583,-0.661459 -0.248709,-0.396875 -0.248709,-0.98425 0,-0.587375 0.328084,-1.016 0.333375,-0.433916 0.873125,-0.66675 0.545041,-0.232833 1.164166,-0.232833 z"
106
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
107
+ id="path828" />
108
+ <path
109
+ d="m 32.448465,52.645951 h 1.582208 v 4.291542 q 0,0.862541 -0.338667,1.497541 -0.338666,0.629709 -0.968375,0.978959 -0.629708,0.343958 -1.502833,0.343958 -0.878417,0 -1.513417,-0.343958 -0.635,-0.34925 -0.973666,-0.978959 -0.333375,-0.635 -0.333375,-1.497541 v -4.291542 h 1.576916 v 4.206875 q 0,0.47625 0.148167,0.804333 0.153458,0.328084 0.433917,0.497417 0.280458,0.164042 0.661458,0.164042 0.375708,0 0.650875,-0.164042 0.275167,-0.169333 0.423333,-0.497417 0.153459,-0.328083 0.153459,-0.804333 z"
110
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
111
+ id="path830" />
112
+ <path
113
+ d="m 35.189541,52.645951 h 1.582208 v 5.598583 h 2.534708 v 1.386417 h -4.116916 z"
114
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332"
115
+ id="path832" />
116
+ </g>
117
+ <rect
118
+ style="fill:url(#linearGradient1408);fill-opacity:1;stroke:none;stroke-width:0.02276438;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
119
+ id="rect1387"
120
+ width="39.306122"
121
+ height="1.2668874"
122
+ x="-3.5527137e-15"
123
+ y="65.308289" />
124
+ </g>
125
+ </svg>
@@ -0,0 +1,107 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:xlink="http://www.w3.org/1999/xlink"
11
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ width="39.306458mm"
14
+ height="14.056225mm"
15
+ viewBox="0 0 39.306457 14.056225"
16
+ version="1.1"
17
+ id="svg838"
18
+ inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
19
+ sodipodi:docname="logo.dark.text.svg"
20
+ inkscape:export-filename="/home/henning/Projects/capybara-lockstep/media/capybara-lockstep.dark.png"
21
+ inkscape:export-xdpi="196"
22
+ inkscape:export-ydpi="196">
23
+ <defs
24
+ id="defs832">
25
+ <linearGradient
26
+ inkscape:collect="always"
27
+ id="linearGradient1406">
28
+ <stop
29
+ style="stop-color:#ff0844;stop-opacity:1"
30
+ offset="0"
31
+ id="stop1402" />
32
+ <stop
33
+ style="stop-color:#ffb199;stop-opacity:1"
34
+ offset="1"
35
+ id="stop1404" />
36
+ </linearGradient>
37
+ <linearGradient
38
+ inkscape:collect="always"
39
+ xlink:href="#linearGradient1406"
40
+ id="linearGradient1408"
41
+ x1="22.054907"
42
+ y1="91.071762"
43
+ x2="88.956696"
44
+ y2="91.071762"
45
+ gradientUnits="userSpaceOnUse"
46
+ gradientTransform="matrix(0.58751979,0,0,0.08820435,-12.957695,57.908781)" />
47
+ </defs>
48
+ <sodipodi:namedview
49
+ id="base"
50
+ pagecolor="#ffffff"
51
+ bordercolor="#666666"
52
+ borderopacity="1.0"
53
+ inkscape:pageopacity="0.0"
54
+ inkscape:pageshadow="2"
55
+ inkscape:zoom="4"
56
+ inkscape:cx="17.132757"
57
+ inkscape:cy="-43.059445"
58
+ inkscape:document-units="mm"
59
+ inkscape:current-layer="layer1"
60
+ showgrid="false"
61
+ fit-margin-top="0"
62
+ fit-margin-left="0"
63
+ fit-margin-right="0"
64
+ fit-margin-bottom="0"
65
+ inkscape:window-width="2560"
66
+ inkscape:window-height="1391"
67
+ inkscape:window-x="1920"
68
+ inkscape:window-y="0"
69
+ inkscape:window-maximized="1"
70
+ inkscape:pagecheckerboard="true" />
71
+ <metadata
72
+ id="metadata835">
73
+ <rdf:RDF>
74
+ <cc:Work
75
+ rdf:about="">
76
+ <dc:format>image/svg+xml</dc:format>
77
+ <dc:type
78
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
79
+ <dc:title></dc:title>
80
+ </cc:Work>
81
+ </rdf:RDF>
82
+ </metadata>
83
+ <g
84
+ inkscape:label="Layer 1"
85
+ inkscape:groupmode="layer"
86
+ id="layer1"
87
+ transform="translate(0,-52.518951)">
88
+ <text
89
+ xml:space="preserve"
90
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332"
91
+ x="-0.27516666"
92
+ y="59.630951"
93
+ id="text1385"><tspan
94
+ sodipodi:role="line"
95
+ id="tspan1383"
96
+ x="-0.27516666"
97
+ y="59.630951"
98
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#ffffff;fill-opacity:1;stroke-width:0.26458332">CONSUL</tspan></text>
99
+ <rect
100
+ style="fill:url(#linearGradient1408);fill-opacity:1;stroke:none;stroke-width:0.02276438;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
101
+ id="rect1387"
102
+ width="39.306122"
103
+ height="1.2668874"
104
+ x="-3.5527137e-15"
105
+ y="65.308289" />
106
+ </g>
107
+ </svg>
@@ -0,0 +1,89 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
4
+ xmlns:cc="http://creativecommons.org/ns#"
5
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
+ xmlns:svg="http://www.w3.org/2000/svg"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:xlink="http://www.w3.org/1999/xlink"
9
+ id="svg838"
10
+ version="1.1"
11
+ viewBox="0 0 39.306457 14.056225"
12
+ height="14.056225mm"
13
+ width="39.306458mm">
14
+ <defs
15
+ id="defs832">
16
+ <linearGradient
17
+ id="linearGradient1406">
18
+ <stop
19
+ id="stop1402"
20
+ offset="0"
21
+ style="stop-color:#ff0844;stop-opacity:1" />
22
+ <stop
23
+ id="stop1404"
24
+ offset="1"
25
+ style="stop-color:#ffb199;stop-opacity:1" />
26
+ </linearGradient>
27
+ <linearGradient
28
+ gradientTransform="matrix(0.58755687,0,0,0.08820435,-12.958513,57.908781)"
29
+ gradientUnits="userSpaceOnUse"
30
+ y2="91.071762"
31
+ x2="88.956696"
32
+ y1="91.071762"
33
+ x1="22.054907"
34
+ id="linearGradient1408"
35
+ xlink:href="#linearGradient1406" />
36
+ </defs>
37
+ <metadata
38
+ id="metadata835">
39
+ <rdf:RDF>
40
+ <cc:Work
41
+ rdf:about="">
42
+ <dc:format>image/svg+xml</dc:format>
43
+ <dc:type
44
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
45
+ <dc:title></dc:title>
46
+ </cc:Work>
47
+ </rdf:RDF>
48
+ </metadata>
49
+ <g
50
+ transform="translate(0,-52.518951)"
51
+ id="layer1">
52
+ <g
53
+ id="text1385"
54
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';letter-spacing:0px;word-spacing:0px;fill:#141210;fill-opacity:1;stroke:none;stroke-width:0.26458332"
55
+ aria-label="CONSUL">
56
+ <path
57
+ id="path822"
58
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#141210;fill-opacity:1;stroke-width:0.26458332"
59
+ d="m 3.8629165,58.191618 q 0.4868334,0 0.8837084,-0.142875 0.4021666,-0.142875 0.5979583,-0.280459 l 0.6773333,1.344084 q -0.2487083,0.211666 -0.8519583,0.428625 -0.5979583,0.216958 -1.4234583,0.216958 -0.7725833,0 -1.4499166,-0.269875 Q 1.6192499,59.218201 1.1006666,58.731368 0.58737498,58.239243 0.29104166,57.583076 0,56.921618 0,56.149034 0,55.376451 0.29104166,54.714993 0.58208331,54.048243 1.095375,53.556118 q 0.5185833,-0.492125 1.1959166,-0.762 0.682625,-0.275167 1.4552083,-0.275167 0.8255,0 1.4234583,0.216958 0.60325,0.216959 0.8519583,0.428625 L 5.3445832,54.508618 Q 5.1487915,54.365743 4.7466249,54.228159 4.3497499,54.085284 3.8629165,54.085284 q -0.5397499,0 -0.9419166,0.169334 -0.4021666,0.164041 -0.6720416,0.455083 -0.269875,0.291042 -0.4021667,0.656167 -0.1322917,0.365125 -0.1322917,0.767291 0,0.407459 0.1322917,0.777875 0.1322917,0.365125 0.4021667,0.656167 0.269875,0.291042 0.6720416,0.460375 0.4021667,0.164042 0.9419166,0.164042 z" />
60
+ <path
61
+ id="path824"
62
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#141210;fill-opacity:1;stroke-width:0.26458332"
63
+ d="m 8.4084457,56.133159 q 0,0.597959 0.2434166,1.084792 0.2487084,0.481542 0.682625,0.767292 0.4392083,0.28575 1.0159997,0.28575 0.576792,0 1.010709,-0.28575 0.439208,-0.28575 0.682625,-0.767292 0.248708,-0.486833 0.248708,-1.084792 0,-0.597958 -0.248708,-1.0795 -0.243417,-0.481541 -0.682625,-0.767291 -0.433917,-0.291042 -1.010709,-0.291042 -0.5767914,0 -1.0159997,0.291042 -0.4339166,0.28575 -0.682625,0.767291 -0.2434166,0.481542 -0.2434166,1.0795 z m -1.6457083,0 q 0,-0.762 0.269875,-1.418166 0.269875,-0.661459 0.7567083,-1.153584 0.4868333,-0.492125 1.143,-0.767291 0.6561666,-0.275167 1.4181663,-0.275167 0.772584,0 1.423459,0.275167 0.656166,0.275166 1.137708,0.767291 0.486833,0.492125 0.751417,1.153584 0.269875,0.656166 0.269875,1.418166 0,0.767292 -0.259292,1.42875 -0.259292,0.656167 -0.740833,1.153584 -0.481542,0.492125 -1.137709,0.767291 -0.656166,0.275167 -1.444625,0.275167 -0.804333,0 -1.4657913,-0.275167 Q 8.228529,59.207618 7.752279,58.715493 7.2760291,58.218076 7.0167374,57.561909 q -0.254,-0.661458 -0.254,-1.42875 z" />
64
+ <path
65
+ id="path826"
66
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#141210;fill-opacity:1;stroke-width:0.26458332"
67
+ d="m 16.303598,54.095868 0.116417,0.02117 v 5.513917 h -1.582208 v -6.985 h 2.159 l 2.831041,5.503333 -0.116416,0.02117 v -5.5245 h 1.582208 v 6.985 h -2.169583 z" />
68
+ <path
69
+ id="path828"
70
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#141210;fill-opacity:1;stroke-width:0.26458332"
71
+ d="m 25.034843,52.518951 q 0.650875,0 1.137709,0.142875 0.486833,0.142875 0.783166,0.301625 0.296334,0.15875 0.359834,0.211667 l -0.762,1.275291 q -0.08467,-0.0635 -0.291042,-0.185208 -0.201083,-0.121708 -0.481542,-0.216958 -0.275166,-0.09525 -0.576791,-0.09525 -0.407459,0 -0.661459,0.148166 -0.248708,0.142875 -0.248708,0.428625 0,0.195792 0.132292,0.354542 0.137583,0.153458 0.41275,0.296333 0.280458,0.137584 0.709083,0.301625 0.391583,0.142875 0.735542,0.338667 0.343958,0.195792 0.60325,0.465667 0.264583,0.264583 0.418041,0.613833 0.153459,0.34925 0.153459,0.79375 0,0.529167 -0.216959,0.92075 -0.216958,0.386292 -0.592666,0.640292 -0.370417,0.254 -0.846667,0.375708 -0.470958,0.127 -0.978958,0.127 -0.719667,0 -1.291167,-0.164042 -0.566208,-0.164041 -0.915458,-0.354541 -0.34925,-0.1905 -0.418042,-0.254 l 0.788458,-1.328209 q 0.0635,0.04762 0.243417,0.153459 0.185208,0.105833 0.449792,0.22225 0.264583,0.111125 0.560916,0.1905 0.301625,0.07937 0.592667,0.07937 0.486833,0 0.73025,-0.185209 0.243417,-0.1905 0.243417,-0.497416 0,-0.227542 -0.153459,-0.407459 -0.153458,-0.179916 -0.460375,-0.338666 -0.306916,-0.164042 -0.767291,-0.343959 -0.460375,-0.185208 -0.862542,-0.449791 -0.396875,-0.264584 -0.645583,-0.661459 -0.248709,-0.396875 -0.248709,-0.98425 0,-0.587375 0.328084,-1.016 0.333375,-0.433916 0.873125,-0.66675 0.545041,-0.232833 1.164166,-0.232833 z" />
72
+ <path
73
+ id="path830"
74
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#141210;fill-opacity:1;stroke-width:0.26458332"
75
+ d="m 32.448465,52.645951 h 1.582208 v 4.291542 q 0,0.862541 -0.338667,1.497541 -0.338666,0.629709 -0.968375,0.978959 -0.629708,0.343958 -1.502833,0.343958 -0.878417,0 -1.513417,-0.343958 -0.635,-0.34925 -0.973666,-0.978959 -0.333375,-0.635 -0.333375,-1.497541 v -4.291542 h 1.576916 v 4.206875 q 0,0.47625 0.148167,0.804333 0.153458,0.328084 0.433917,0.497417 0.280458,0.164042 0.661458,0.164042 0.375708,0 0.650875,-0.164042 0.275167,-0.169333 0.423333,-0.497417 0.153459,-0.328083 0.153459,-0.804333 z" />
76
+ <path
77
+ id="path832"
78
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'League Spartan';-inkscape-font-specification:'League Spartan';fill:#141210;fill-opacity:1;stroke-width:0.26458332"
79
+ d="m 35.189541,52.645951 h 1.582208 v 5.598583 h 2.534708 v 1.386417 h -4.116916 z" />
80
+ </g>
81
+ <rect
82
+ y="65.308289"
83
+ x="-3.5527137e-15"
84
+ height="1.2668874"
85
+ width="39.308605"
86
+ id="rect1387"
87
+ style="fill:url(#linearGradient1408);fill-opacity:1;stroke:none;stroke-width:0.02276511;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
88
+ </g>
89
+ </svg>