story_key 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1233b236b5edf1cbec6d96eee8ace63be0c141402a9dadb6954c714b4311a8b0
4
- data.tar.gz: b49c36a26550ca611bcbdb55ff7c7fbc37534a797fb6cad34d1112fa6f0d4480
3
+ metadata.gz: be2facdf65cadfc79be9b3277589e6ee1b39eccb900e69f6f68925f773007422
4
+ data.tar.gz: 86611058f31408ed45947210e5d694fbb08a9323edbe4290b4d30fdbed0f662d
5
5
  SHA512:
6
- metadata.gz: 9022e3f8f6e2d19596ab98eaff22e229c8284a1a08a7069410b307711a6442cb242ed61ab4896245451db6670966b560e75bba9d224bcd96df462888152905ed
7
- data.tar.gz: 4ce3e4d9445922acba618a1ae402439b02d9420e47578526581ab701aa45c35aa9c9c9483aee47279f6c577756e4e85261730e6dad359fbe86a084a21d7aa39e
6
+ metadata.gz: a66c4b2d31b047c2de09900525c11dfbb66d186c11ad35bcdccff88b156ec07bec7afeb33789aeac394ed74fc309f143d0aac2d67c3a053f597b5e5cf1386860
7
+ data.tar.gz: 68e554476c0586267972deadaa8833d999747f4821604f9f95dc5aa18285d19a5e38b3090b008f50c601569975feb69a47ab5cfd9235183bdf2ee4ef08b445e4
data/.gitignore CHANGED
@@ -1,9 +1,12 @@
1
+ **/.DS_Store
2
+ .env
1
3
  .rspec_status
4
+ *.gem
2
5
  /_yardoc/
3
6
  /.bundle/
4
7
  /.yardoc
5
8
  /doc/
6
9
  /pkg/
7
10
  /spec/reports/
8
- /tmp/
9
- *.gem
11
+ /tmp/*
12
+ !/tmp/.keep
data/.rubocop.yml CHANGED
@@ -1,5 +1,9 @@
1
+ inherit_gem:
2
+ rubocop-rails-omakase: rubocop.yml
3
+
1
4
  require:
2
5
  - rubocop-performance
6
+ - rubocop-rake
3
7
  - rubocop-rspec
4
8
 
5
9
  AllCops:
@@ -8,7 +12,7 @@ AllCops:
8
12
  - vendor/**/*
9
13
  - lib/story_key/data.rb
10
14
  NewCops: enable
11
- TargetRubyVersion: 3.1.1
15
+ TargetRubyVersion: 3.2.0
12
16
  Gemspec/RequireMFA:
13
17
  Enabled: false
14
18
  Layout/EmptyLineAfterGuardClause:
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.1.1
1
+ 3.3.0
data/.travis.yml CHANGED
@@ -2,7 +2,7 @@ dist: focal
2
2
  language: ruby
3
3
  cache: bundler
4
4
  rvm:
5
- - 3.1.1
5
+ - 3.2.0
6
6
  notifications:
7
7
  email: false
8
8
  before_install:
data/Gemfile CHANGED
@@ -1,3 +1,2 @@
1
- # frozen_string_literal: true
2
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
3
2
  gemspec
data/Gemfile.lock CHANGED
@@ -1,100 +1,147 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- story_key (0.3.0)
5
- activesupport (~> 7.0.2)
4
+ story_key (0.5.0)
5
+ activesupport (~> 8.0.1)
6
6
  awesome_print (~> 1.9.2)
7
7
  base58 (~> 0.2.3)
8
+ dotenv (~> 3.1.6)
8
9
  dry-initializer (~> 3.1.1)
9
- indefinite_article (~> 0.2.4)
10
- pry (~> 0.14.1)
11
- remedy (~> 0.3.0)
12
- thor (~> 1.2.1)
13
- zeitwerk (~> 2.5.4)
10
+ indefinite_article (~> 0.2.5)
11
+ remedy (~> 0.4.0)
12
+ rmagick (~> 6.0.1)
13
+ thor (~> 1.3.2)
14
+ typhoeus (~> 1.4.1)
15
+ zeitwerk (~> 2.7.1)
14
16
 
15
17
  GEM
16
18
  remote: https://rubygems.org/
17
19
  specs:
18
- activesupport (7.0.2.3)
19
- concurrent-ruby (~> 1.0, >= 1.0.2)
20
+ activesupport (8.0.1)
21
+ base64
22
+ benchmark (>= 0.3)
23
+ bigdecimal
24
+ concurrent-ruby (~> 1.0, >= 1.3.1)
25
+ connection_pool (>= 2.2.5)
26
+ drb
20
27
  i18n (>= 1.6, < 2)
28
+ logger (>= 1.4.2)
21
29
  minitest (>= 5.1)
22
- tzinfo (~> 2.0)
30
+ securerandom (>= 0.3)
31
+ tzinfo (~> 2.0, >= 2.0.5)
32
+ uri (>= 0.13.1)
23
33
  ast (2.4.2)
24
34
  awesome_print (1.9.2)
25
35
  base58 (0.2.3)
26
- coderay (1.1.3)
27
- concurrent-ruby (1.1.10)
28
- diff-lcs (1.5.0)
36
+ base64 (0.2.0)
37
+ benchmark (0.4.0)
38
+ bigdecimal (3.1.8)
39
+ concurrent-ruby (1.3.4)
40
+ connection_pool (2.4.1)
41
+ diff-lcs (1.5.1)
42
+ dotenv (3.1.6)
43
+ drb (2.2.1)
29
44
  dry-initializer (3.1.1)
30
- i18n (1.10.0)
45
+ ethon (0.16.0)
46
+ ffi (>= 1.15.0)
47
+ ffi (1.17.0-arm64-darwin)
48
+ i18n (1.12.0)
31
49
  concurrent-ruby (~> 1.0)
32
- indefinite_article (0.2.4)
50
+ indefinite_article (0.2.5)
33
51
  activesupport
34
- method_source (1.0.0)
35
- minitest (5.15.0)
36
- parallel (1.22.1)
37
- parser (3.1.1.0)
52
+ json (2.9.0)
53
+ language_server-protocol (3.17.0.3)
54
+ logger (1.6.3)
55
+ minitest (5.16.3)
56
+ observer (0.1.2)
57
+ parallel (1.26.3)
58
+ parser (3.3.6.0)
38
59
  ast (~> 2.4.1)
39
- pry (0.14.1)
40
- coderay (~> 1.1)
41
- method_source (~> 1.0)
60
+ racc
61
+ pkg-config (1.5.1)
62
+ racc (1.8.1)
63
+ rack (3.1.8)
42
64
  rainbow (3.1.1)
43
- rake (13.0.6)
44
- regexp_parser (2.2.1)
45
- remedy (0.3.0)
46
- rexml (3.2.5)
47
- rspec (3.11.0)
48
- rspec-core (~> 3.11.0)
49
- rspec-expectations (~> 3.11.0)
50
- rspec-mocks (~> 3.11.0)
51
- rspec-core (3.11.0)
52
- rspec-support (~> 3.11.0)
53
- rspec-expectations (3.11.0)
65
+ rake (13.2.1)
66
+ regexp_parser (2.9.3)
67
+ remedy (0.4.0)
68
+ rmagick (6.0.1)
69
+ observer (~> 0.1)
70
+ pkg-config (~> 1.4)
71
+ rspec (3.13.0)
72
+ rspec-core (~> 3.13.0)
73
+ rspec-expectations (~> 3.13.0)
74
+ rspec-mocks (~> 3.13.0)
75
+ rspec-core (3.13.2)
76
+ rspec-support (~> 3.13.0)
77
+ rspec-expectations (3.13.3)
54
78
  diff-lcs (>= 1.2.0, < 2.0)
55
- rspec-support (~> 3.11.0)
56
- rspec-mocks (3.11.1)
79
+ rspec-support (~> 3.13.0)
80
+ rspec-mocks (3.13.2)
57
81
  diff-lcs (>= 1.2.0, < 2.0)
58
- rspec-support (~> 3.11.0)
59
- rspec-support (3.11.0)
60
- rubocop (1.26.1)
82
+ rspec-support (~> 3.13.0)
83
+ rspec-support (3.13.2)
84
+ rubocop (1.69.2)
85
+ json (~> 2.3)
86
+ language_server-protocol (>= 3.17.0)
61
87
  parallel (~> 1.10)
62
- parser (>= 3.1.0.0)
88
+ parser (>= 3.3.0.2)
63
89
  rainbow (>= 2.2.2, < 4.0)
64
- regexp_parser (>= 1.8, < 3.0)
65
- rexml
66
- rubocop-ast (>= 1.16.0, < 2.0)
90
+ regexp_parser (>= 2.9.3, < 3.0)
91
+ rubocop-ast (>= 1.36.2, < 2.0)
67
92
  ruby-progressbar (~> 1.7)
68
- unicode-display_width (>= 1.4.0, < 3.0)
69
- rubocop-ast (1.16.0)
70
- parser (>= 3.1.1.0)
71
- rubocop-performance (1.13.3)
72
- rubocop (>= 1.7.0, < 2.0)
73
- rubocop-ast (>= 0.4.0)
93
+ unicode-display_width (>= 2.4.0, < 4.0)
94
+ rubocop-ast (1.37.0)
95
+ parser (>= 3.3.1.0)
96
+ rubocop-minitest (0.34.5)
97
+ rubocop (>= 1.39, < 2.0)
98
+ rubocop-ast (>= 1.30.0, < 2.0)
99
+ rubocop-performance (1.23.0)
100
+ rubocop (>= 1.48.1, < 2.0)
101
+ rubocop-ast (>= 1.31.1, < 2.0)
102
+ rubocop-rails (2.25.1)
103
+ activesupport (>= 4.2.0)
104
+ rack (>= 1.1)
105
+ rubocop (>= 1.33.0, < 2.0)
106
+ rubocop-ast (>= 1.31.1, < 2.0)
107
+ rubocop-rails-omakase (1.0.0)
108
+ rubocop
109
+ rubocop-minitest
110
+ rubocop-performance
111
+ rubocop-rails
74
112
  rubocop-rake (0.6.0)
75
113
  rubocop (~> 1.0)
76
- rubocop-rspec (2.9.0)
77
- rubocop (~> 1.19)
78
- ruby-progressbar (1.11.0)
79
- thor (1.2.1)
80
- tzinfo (2.0.4)
114
+ rubocop-rspec (3.3.0)
115
+ rubocop (~> 1.61)
116
+ ruby-progressbar (1.13.0)
117
+ securerandom (0.4.0)
118
+ thor (1.3.2)
119
+ typhoeus (1.4.1)
120
+ ethon (>= 0.9.0)
121
+ tzinfo (2.0.5)
81
122
  concurrent-ruby (~> 1.0)
82
- unicode-display_width (2.1.0)
83
- zeitwerk (2.5.4)
123
+ unicode-display_width (3.1.2)
124
+ unicode-emoji (~> 4.0, >= 4.0.4)
125
+ unicode-emoji (4.0.4)
126
+ uri (1.0.2)
127
+ zeitwerk (2.7.1)
84
128
 
85
129
  PLATFORMS
86
130
  arm64-darwin-21
131
+ arm64-darwin-22
132
+ arm64-darwin-23
87
133
  x86_64-linux
88
134
 
89
135
  DEPENDENCIES
90
- bundler (~> 2.3.7)
91
- rake (~> 13.0.6)
92
- rspec (~> 3.11.0)
93
- rubocop (~> 1.26.1)
94
- rubocop-performance (~> 1.13.3)
136
+ bundler (~> 2.5.23)
137
+ rake (~> 13.2.1)
138
+ rspec (~> 3.13.0)
139
+ rubocop (~> 1.69.2)
140
+ rubocop-performance (~> 1.23.0)
141
+ rubocop-rails-omakase (~> 1.0.0)
95
142
  rubocop-rake (~> 0.6.0)
96
- rubocop-rspec (~> 2.9.0)
143
+ rubocop-rspec (~> 3.3.0)
97
144
  story_key!
98
145
 
99
146
  BUNDLED WITH
100
- 2.3.7
147
+ 2.5.23
data/README.md CHANGED
@@ -1,30 +1,31 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/story_key.svg)](https://badge.fury.io/rb/story_key)
2
- ![Gem Downloads](https://ruby-gem-downloads-badge.herokuapp.com/story_key?type=total)
3
- [![Build Status](https://travis-ci.org/jcraigk/story_key.svg?branch=main)](https://travis-ci.org/jcraigk/story_key)
4
- [![Maintainability](https://api.codeclimate.com/v1/badges/6046413814d7f6417ce9/maintainability)](https://codeclimate.com/github/jcraigk/story_key/maintainability)
5
2
 
6
3
 
7
- ![Story Key Logo](https://user-images.githubusercontent.com/104095/160752597-45ab3b7b-a3a3-43ef-b546-9c163f389927.png)
8
-
9
4
  | Gem Version | Locale | Lexicon SHA |
10
5
  |-------------|--------|-------------|
11
- | 0.3.0 | Miami | 4eea29f |
6
+ | 0.5.0 | Miami | 3bfbbf9 |
7
+
8
+ Locale will not change until v1.0 release
12
9
 
13
10
 
14
11
  # StoryKey
15
12
 
16
- StoryKey is a [Brainwallet](https://en.bitcoin.it/wiki/Brainwallet) inspired by [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) written in [Ruby](https://www.ruby-lang.org/en/). It converts an arbitrary string of data, such as a [cryptocurrency private key](https://en.bitcoin.it/wiki/Private_key), into an English paragraph intended for longterm human memory. It also assists in decoding the story back into its original form.
13
+ StoryKey is a proof of concept [Brainwallet](https://en.bitcoin.it/wiki/Brainwallet) inspired by [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) written in Ruby. It converts an arbitrary string of data, such as a [cryptocurrency private key](https://en.bitcoin.it/wiki/Private_key), into an English paragraph intended for longterm human memory. It also assists in decoding the story back into its original form. Optionally, a visual representation of the paragraph is also provided using [OpenAI DALL-E](https://openai.com/dall-e-3).
17
14
 
18
- Each story is provided in two formats:
19
- * Humanized
15
+ Each story is provided in multiple formats:
16
+ * Humanized Text
20
17
  * Version locale header ("In Miami I saw...")
21
18
  * Enumerated phrases
22
19
  * Colorized parts of speech (adjectives, verbs, nouns)
23
20
  * Grammatical filler (articles, prepositions, conjunctions, punctuation)
24
- * Tokenized
21
+ * Tokenized Text
25
22
  * Ordered list of unique tokens
26
23
  * Space-delimited lowercase alphanumeric/dash
27
24
  * Useful as a seed phrase for generating derivative keys
25
+ * Graphical
26
+ * AI-generated images via [DALL-E](https://openai.com/dall-e-3)
27
+ * Requires OpenAI key
28
+
28
29
 
29
30
  ## Features
30
31
 
@@ -33,7 +34,7 @@ Each story is provided in two formats:
33
34
  * Includes version slug to ensure accurate decoding
34
35
  * Uses a repeating English grammar to aid in mnemonics
35
36
  * Uses a lexicon curated for mental visualization
36
- * Avoids token repetition
37
+ * Avoids word repetition
37
38
  * Provides interactive command-line recovery
38
39
 
39
40
  Each token of the story, which may be a single word or short compound phrase, encodes 10 bits. The checksum length is variable based on the input size and space available in the last two tokens after accounting for a 4-bit footer. Here are a few example key sizes along with their respective story and checksum sizes.
@@ -47,24 +48,26 @@ Each token of the story, which may be a single word or short compound phrase, en
47
48
  | 384 | 40 | 12 |
48
49
  | 512 | 53 | 14 |
49
50
 
50
- An example key and its associated story and seed phrase are shown below.
51
+ An example key with its associated story, seed phrase, and image are shown below.
52
+
53
+ ![KeyStory Example Text](examples/cli.png)
51
54
 
52
- ![Key/Story Example](https://user-images.githubusercontent.com/104095/161372021-1edb5999-453d-453a-a7bb-d2fc2bcc3120.png)
55
+ ![KeyStory Example Image Card](examples/card.png)
53
56
 
54
57
  ```
55
58
  Key:
56
- CH8krjSZpGFmxnKo9QPqQEd9oMUkXnLcUhhEQFLrGCtg
59
+ CgCLLXvoch7sLaQWe5Y3Evtzety2Vr9XJGRmAq9YZUXY
57
60
  Story:
58
61
  In Miami I saw
59
- 1. a pensive Ellen Ripley surpass a musician,
60
- 2. an unhappy pug drink vodka with a dove,
61
- 3. an opulent Dante Alighieri diagnose Huckleberry Finn,
62
- 4. a frantic sister eat pretzels with Mozart,
63
- 5. a cunning meerkat trim a balloonist,
64
- 6. a rich ocelot step to John Wayne,
65
- 7. and a civilian convict a locust.
62
+ 1. a practical theorist eating toast with a shopkeeper,
63
+ 2. a jobless macaw disowning a scientist,
64
+ 3. a toothsome brother eating dumplings with Paul Cezanne,
65
+ 4. a rabid outsider leveling a vulture,
66
+ 5. a hysterical Marge Simpson threatening Moe Szyslak,
67
+ 6. a rancid cyborg demanding a jeweler,
68
+ 7. and a wife paging Jimi Hendrix.
66
69
  Seed Phrase:
67
- pensive ellen-ripley surpass musician unhappy pug drink-vodka dove opulent dante-alighieri diagnose huckleberry-finn frantic sister eat-pretzels mozart cunning meerkat trim balloonist rich ocelot step john-wayne civilian convict locust
70
+ miami practical theorist eating-toast shopkeeper jobless macaw disowning scientist toothsome brother eating-dumplings paul-cezanne rabid outsider leveling vulture hysterical marge-simpson threatening moe-szyslak rancid cyborg demanding jeweler wife paging jimi-hendrix
68
71
  ````
69
72
 
70
73
  This paragraph or seed phrase can be deterministically decoded back into its original form using the same version of StoryKey. The locale of the story (e.g. `Miami`) identifies that version. During key recovery, an exception will be raised if:
@@ -86,11 +89,6 @@ The lexicon was selected using the following criteria:
86
89
  * Balance brevity with clarity.
87
90
 
88
91
 
89
- ### Graphical Visualization
90
-
91
- When AI becomes more common, StoryKey stories may be converted to graphical panels similar to the [DALL-E Project](https://openai.com/blog/dall-e/). This will likely aid in mnemonics process for many users.
92
-
93
-
94
92
  ## Installation
95
93
 
96
94
  Add this line to your application's Gemfile:
@@ -113,7 +111,16 @@ $ gem install story_key
113
111
 
114
112
  ## Usage
115
113
 
116
- This library may be used by calling Ruby methods or directly from the command line.
114
+ This library may be used directly from the command line or by calling Ruby methods.
115
+
116
+ If you want to generate images of the story along with the text, create a file named `.env` in the project directory and add your [OpenAI key](https://beta.openai.com/account/api-keys) as an environment variable:
117
+
118
+ ```
119
+ # .env
120
+ OPENAI_KEY=<your-api-key>
121
+ ```
122
+
123
+ You must have [ImageMagick](https://imagemagick.org/index.php) installed locally.
117
124
 
118
125
 
119
126
  ### Command Line Usage
@@ -129,6 +136,8 @@ StoryKey commands:
129
136
  storykey recover # Decode a story interactively
130
137
  ```
131
138
 
139
+ To see help on a specific command, run `bin/storyke --help [command]`.
140
+
132
141
  The command line also features an interactive recovery tool to aid in converting a story back into its source key. Run `bin/storykey recover` to initiate the process:
133
142
 
134
143
  ![Key/Story Example](https://user-images.githubusercontent.com/104095/161376334-4a591100-e3fc-41ce-b931-4773bebc23fd.png)
@@ -141,10 +150,10 @@ After installing the gem, you may run `bin/console` or `require` the gem in your
141
150
 
142
151
  ### Generate new key/story
143
152
 
144
- Generate a new random key/story pair.
153
+ Generate a new random key and associated story.
145
154
 
146
155
  ```
147
- 3.1.1# StoryKey.generate
156
+ # StoryKey.generate
148
157
  =>
149
158
  ["4eqfoXzMDyqQW6p8zAQj7c8KkynK5K2BW6D5Vfp7xCaQ",
150
159
  #<struct StoryKey::Story
@@ -157,12 +166,12 @@ Generate a new random key/story pair.
157
166
  ```
158
167
 
159
168
 
160
- ### Encode key => story
169
+ ### Encode an existing key
161
170
 
162
171
  Produce an English paragraph given input data (e.g. a cryptocurrency private key):
163
172
 
164
173
  ```
165
- 3.1.1# StoryKey.encode(key: '4eqfoXzMDyqQW6p8zAQj7c8KkynK5K2BW6D5Vfp7xCaQ')
174
+ # StoryKey.encode(key: '4eqfoXzMDyqQW6p8zAQj7c8KkynK5K2BW6D5Vfp7xCaQ')
166
175
  =>
167
176
  #<struct StoryKey::Story
168
177
  text=
@@ -176,12 +185,12 @@ Produce an English paragraph given input data (e.g. a cryptocurrency private key
176
185
  `key` may be in the form of a hexidecimal (`ab29f3`), a binary string (`1001101`), a decimal (`230938`), or a base58 string (`uMBca`). If not in the default base58, `format` must be provided.
177
186
 
178
187
 
179
- ### Decode story => key
188
+ ### Decode an existing story
180
189
 
181
190
  Recover source data (e.g. a cryptocurrency private key) based on the English paragraph:
182
191
 
183
192
  ```
184
- 3.1.1# StoryKey.decode(story: 'In Miami I saw an official Benjamin Franklin transport Matt Damon')
193
+ # StoryKey.decode(story: 'In Miami I saw an official Benjamin Franklin transport Matt Damon')
185
194
  => "4NTM"
186
195
  ```
187
196
 
data/Rakefile CHANGED
@@ -1,4 +1,3 @@
1
- # frozen_string_literal: true
2
1
  require 'bundler/gem_tasks'
3
2
  require 'rspec/core/rake_task'
4
3
 
data/assets/error.png ADDED
Binary file
data/bin/console CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
2
  require 'bundler/setup'
4
3
  require 'story_key'
5
4
 
data/examples/card.png ADDED
Binary file
data/examples/cli.png ADDED
Binary file
@@ -46,13 +46,11 @@ clear
46
46
  cold
47
47
  colorful
48
48
  comical
49
- complex
50
49
  cosmic
51
50
  coy
52
51
  cynical
53
52
  dangerous
54
53
  dark
55
- dead
56
54
  decayed
57
55
  deficient
58
56
  delicate
@@ -152,7 +150,6 @@ late
152
150
  lewd
153
151
  liberal
154
152
  limpid
155
- limping
156
153
  little
157
154
  lively
158
155
  lofty
@@ -307,11 +304,11 @@ volatile
307
304
  wasteful
308
305
  wholesome
309
306
  wide
307
+ wide-eyed
310
308
  wild
311
309
  winged
312
310
  wintery
313
311
  wobbly
314
- wonderful
315
312
  woozy
316
313
  worried
317
314
  wrinkled
@@ -1,8 +1,8 @@
1
1
  adamant
2
- adroit
2
+ adament
3
3
  affable
4
4
  affluent
5
- ageless
5
+ aging
6
6
  albino
7
7
  alcoholic
8
8
  alluring
@@ -50,8 +50,8 @@ chaste
50
50
  cheap
51
51
  childish
52
52
  childlike
53
- choking
54
53
  chubby
54
+ churlish
55
55
  civilized
56
56
  clairvoyant
57
57
  clammy
@@ -91,6 +91,7 @@ dapper
91
91
  dashing
92
92
  dastardly
93
93
  dazed
94
+ dead
94
95
  deaf
95
96
  decadent
96
97
  decisive
@@ -107,6 +108,7 @@ difficult
107
108
  dignified
108
109
  diligent
109
110
  dim
111
+ disabled
110
112
  discreet
111
113
  diseased
112
114
  disguised
@@ -126,7 +128,6 @@ drunk
126
128
  dull
127
129
  dumb
128
130
  dutiful
129
- dying
130
131
  eager
131
132
  earnest
132
133
  elderly
@@ -358,6 +359,7 @@ purring
358
359
  pushy
359
360
  queasy
360
361
  quirky
362
+ quivering
361
363
  rambling
362
364
  rash
363
365
  reckless
@@ -465,6 +467,7 @@ trashy
465
467
  trembling
466
468
  trendy
467
469
  truthful
470
+ twitching
468
471
  unconscious
469
472
  undead
470
473
  unkempt