() {
+ @Override
+ public SecretKeyFactory run() throws Exception {
+ return SecretKeyFactory.getInstance("PBKDF2WithHmacSHA512");
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/MnemonicGenerator.java b/app/src/main/java/io/github/novacrypto/bip39/MnemonicGenerator.java
new file mode 100644
index 0000000000..0ecc54db7b
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/MnemonicGenerator.java
@@ -0,0 +1,141 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39;
+
+import java.util.Arrays;
+
+import static io.github.novacrypto.bip39.ByteUtils.next11Bits;
+import static io.github.novacrypto.hashing.Sha256.sha256;
+
+/**
+ * Generates mnemonics from entropy.
+ */
+public final class MnemonicGenerator {
+
+ private final WordList wordList;
+
+ /**
+ * Create a generator using the given word list.
+ *
+ * @param wordList A known ordered list of 2048 words to select from.
+ */
+ public MnemonicGenerator(final WordList wordList) {
+ this.wordList = wordList;
+ }
+
+ public interface Target {
+ void append(final CharSequence string);
+ }
+
+ /**
+ * Create a mnemonic from the word list given the entropy.
+ *
+ * @param entropyHex 128-256 bits of hex entropy, number of bits must also be divisible by 32
+ * @param target Where to write the mnemonic to
+ */
+ public void createMnemonic(
+ final CharSequence entropyHex,
+ final Target target) {
+ final int length = entropyHex.length();
+ if (length % 2 != 0)
+ throw new RuntimeException("Length of hex chars must be divisible by 2");
+ final byte[] entropy = new byte[length / 2];
+ try {
+ for (int i = 0, j = 0; i < length; i += 2, j++) {
+ entropy[j] = (byte) (parseHex(entropyHex.charAt(i)) << 4 | parseHex(entropyHex.charAt(i + 1)));
+ }
+ createMnemonic(entropy, target);
+ } finally {
+ Arrays.fill(entropy, (byte) 0);
+ }
+ }
+
+ /**
+ * Create a mnemonic from the word list given the entropy.
+ *
+ * @param entropy 128-256 bits of entropy, number of bits must also be divisible by 32
+ * @param target Where to write the mnemonic to
+ */
+ public void createMnemonic(
+ final byte[] entropy,
+ final Target target) {
+ final int[] wordIndexes = wordIndexes(entropy);
+ try {
+ createMnemonic(wordIndexes, target);
+ } finally {
+ Arrays.fill(wordIndexes, 0);
+ }
+ }
+
+ private void createMnemonic(
+ final int[] wordIndexes,
+ final Target target) {
+ final String space = String.valueOf(wordList.getSpace());
+ for (int i = 0; i < wordIndexes.length; i++) {
+ if (i > 0) target.append(space);
+ target.append(wordList.getWord(wordIndexes[i]));
+ }
+ }
+
+ private static int[] wordIndexes(byte[] entropy) {
+ final int ent = entropy.length * 8;
+ entropyLengthPreChecks(ent);
+
+ final byte[] entropyWithChecksum = Arrays.copyOf(entropy, entropy.length + 1);
+ entropyWithChecksum[entropy.length] = firstByteOfSha256(entropy);
+
+ //checksum length
+ final int cs = ent / 32;
+ //mnemonic length
+ final int ms = (ent + cs) / 11;
+
+ //get the indexes into the word list
+ final int[] wordIndexes = new int[ms];
+ for (int i = 0, wi = 0; wi < ms; i += 11, wi++) {
+ wordIndexes[wi] = next11Bits(entropyWithChecksum, i);
+ }
+ return wordIndexes;
+ }
+
+ static byte firstByteOfSha256(final byte[] entropy) {
+ final byte[] hash = sha256(entropy);
+ final byte firstByte = hash[0];
+ Arrays.fill(hash, (byte) 0);
+ return firstByte;
+ }
+
+ private static void entropyLengthPreChecks(final int ent) {
+ if (ent < 128)
+ throw new RuntimeException("Entropy too low, 128-256 bits allowed");
+ if (ent > 256)
+ throw new RuntimeException("Entropy too high, 128-256 bits allowed");
+ if (ent % 32 > 0)
+ throw new RuntimeException("Number of entropy bits must be divisible by 32");
+ }
+
+ private static int parseHex(char c) {
+ if (c >= '0' && c <= '9') return c - '0';
+ if (c >= 'a' && c <= 'f') return (c - 'a') + 10;
+ if (c >= 'A' && c <= 'F') return (c - 'A') + 10;
+ throw new RuntimeException("Invalid hex char '" + c + '\'');
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/MnemonicValidator.java b/app/src/main/java/io/github/novacrypto/bip39/MnemonicValidator.java
new file mode 100644
index 0000000000..d015a89226
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/MnemonicValidator.java
@@ -0,0 +1,190 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39;
+
+import io.github.novacrypto.bip39.Validation.InvalidChecksumException;
+import io.github.novacrypto.bip39.Validation.InvalidWordCountException;
+import io.github.novacrypto.bip39.Validation.UnexpectedWhiteSpaceException;
+import io.github.novacrypto.bip39.Validation.WordNotFoundException;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Comparator;
+
+import static io.github.novacrypto.bip39.MnemonicGenerator.firstByteOfSha256;
+import static io.github.novacrypto.bip39.Normalization.normalizeNFKD;
+
+/**
+ * Contains function for validating Mnemonics against the BIP0039 spec.
+ */
+public final class MnemonicValidator {
+ private final WordAndIndex[] words;
+ private final CharSequenceSplitter charSequenceSplitter;
+ private final NFKDNormalizer normalizer;
+
+ private MnemonicValidator(final WordList wordList) {
+ normalizer = new WordListMapNormalization(wordList);
+ words = new WordAndIndex[1 << 11];
+ for (int i = 0; i < 1 << 11; i++) {
+ words[i] = new WordAndIndex(i, wordList.getWord(i));
+ }
+ charSequenceSplitter = new CharSequenceSplitter(wordList.getSpace(), normalizeNFKD(wordList.getSpace()));
+ Arrays.sort(words, wordListSortOrder);
+ }
+
+ /**
+ * Get a Mnemonic validator for the given word list.
+ * No normalization is currently performed, this is an open issue: https://github.com/NovaCrypto/BIP39/issues/13
+ *
+ * @param wordList A WordList implementation
+ * @return A validator
+ */
+ public static MnemonicValidator ofWordList(final WordList wordList) {
+ return new MnemonicValidator(wordList);
+ }
+
+ /**
+ * Check that the supplied mnemonic fits the BIP0039 spec.
+ *
+ * @param mnemonic The memorable list of words
+ * @throws InvalidChecksumException If the last bytes don't match the expected last bytes
+ * @throws InvalidWordCountException If the number of words is not a multiple of 3, 24 or fewer
+ * @throws WordNotFoundException If a word in the mnemonic is not present in the word list
+ * @throws UnexpectedWhiteSpaceException Occurs if one of the supplied words is empty, e.g. a double space
+ */
+ public void validate(final CharSequence mnemonic) throws
+ InvalidChecksumException,
+ InvalidWordCountException,
+ WordNotFoundException,
+ UnexpectedWhiteSpaceException {
+ validate(charSequenceSplitter.split(mnemonic));
+ }
+
+ /**
+ * Check that the supplied mnemonic fits the BIP0039 spec.
+ *
+ * The purpose of this method overload is to avoid constructing a mnemonic String if you have gathered a list of
+ * words from the user.
+ *
+ * @param mnemonic The memorable list of words
+ * @throws InvalidChecksumException If the last bytes don't match the expected last bytes
+ * @throws InvalidWordCountException If the number of words is not a multiple of 3, 24 or fewer
+ * @throws WordNotFoundException If a word in the mnemonic is not present in the word list
+ * @throws UnexpectedWhiteSpaceException Occurs if one of the supplied words is empty
+ */
+ public void validate(final Collection extends CharSequence> mnemonic) throws
+ InvalidChecksumException,
+ InvalidWordCountException,
+ WordNotFoundException,
+ UnexpectedWhiteSpaceException {
+ final int[] wordIndexes = findWordIndexes(mnemonic);
+ try {
+ validate(wordIndexes);
+ } finally {
+ Arrays.fill(wordIndexes, 0);
+ }
+ }
+
+ private static void validate(final int[] wordIndexes) throws
+ InvalidWordCountException,
+ InvalidChecksumException {
+ final int ms = wordIndexes.length;
+
+ final int entPlusCs = ms * 11;
+ final int ent = (entPlusCs * 32) / 33;
+ final int cs = ent / 32;
+ if (entPlusCs != ent + cs)
+ throw new InvalidWordCountException();
+ final byte[] entropyWithChecksum = new byte[(entPlusCs + 7) / 8];
+
+ wordIndexesToEntropyWithCheckSum(wordIndexes, entropyWithChecksum);
+ Arrays.fill(wordIndexes, 0);
+
+ final byte[] entropy = Arrays.copyOf(entropyWithChecksum, entropyWithChecksum.length - 1);
+ final byte lastByte = entropyWithChecksum[entropyWithChecksum.length - 1];
+ Arrays.fill(entropyWithChecksum, (byte) 0);
+
+ final byte sha = firstByteOfSha256(entropy);
+
+ final byte mask = maskOfFirstNBits(cs);
+
+ if (((sha ^ lastByte) & mask) != 0)
+ throw new InvalidChecksumException();
+ }
+
+ private int[] findWordIndexes(final Collection extends CharSequence> split) throws
+ UnexpectedWhiteSpaceException,
+ WordNotFoundException {
+ final int ms = split.size();
+ final int[] result = new int[ms];
+ int i = 0;
+ for (final CharSequence buffer : split) {
+ if (buffer.length() == 0) {
+ throw new UnexpectedWhiteSpaceException();
+ }
+ result[i++] = findWordIndex(buffer);
+ }
+ return result;
+ }
+
+ private int findWordIndex(final CharSequence buffer) throws WordNotFoundException {
+ final WordAndIndex key = new WordAndIndex(-1, buffer);
+ final int index = Arrays.binarySearch(words, key, wordListSortOrder);
+ if (index < 0) {
+ final int insertionPoint = -index - 1;
+ int suggestion = insertionPoint == 0 ? insertionPoint : insertionPoint - 1;
+ if (suggestion + 1 == words.length) suggestion--;
+ throw new WordNotFoundException(buffer, words[suggestion].word, words[suggestion + 1].word);
+
+ }
+ return words[index].index;
+ }
+
+ private static void wordIndexesToEntropyWithCheckSum(final int[] wordIndexes, final byte[] entropyWithChecksum) {
+ for (int i = 0, bi = 0; i < wordIndexes.length; i++, bi += 11) {
+ ByteUtils.writeNext11(entropyWithChecksum, wordIndexes[i], bi);
+ }
+ }
+
+ private static byte maskOfFirstNBits(final int n) {
+ return (byte) ~((1 << (8 - n)) - 1);
+ }
+
+ private static final Comparator wordListSortOrder = new Comparator() {
+ @Override
+ public int compare(final WordAndIndex o1, final WordAndIndex o2) {
+ return CharSequenceComparators.ALPHABETICAL.compare(o1.normalized, o2.normalized);
+ }
+ };
+
+ private class WordAndIndex {
+ final CharSequence word;
+ final String normalized;
+ final int index;
+
+ WordAndIndex(final int i, final CharSequence word) {
+ this.word = word;
+ normalized = normalizer.normalize(word);
+ index = i;
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/NFKDNormalizer.java b/app/src/main/java/io/github/novacrypto/bip39/NFKDNormalizer.java
new file mode 100644
index 0000000000..7fc6be32a4
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/NFKDNormalizer.java
@@ -0,0 +1,27 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39;
+
+public interface NFKDNormalizer {
+
+ String normalize(CharSequence charSequence);
+}
diff --git a/app/src/main/java/io/github/novacrypto/bip39/Normalization.java b/app/src/main/java/io/github/novacrypto/bip39/Normalization.java
new file mode 100644
index 0000000000..2b19485587
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/Normalization.java
@@ -0,0 +1,34 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39;
+
+import java.text.Normalizer;
+
+final class Normalization {
+ static String normalizeNFKD(final String string) {
+ return Normalizer.normalize(string, Normalizer.Form.NFKD);
+ }
+
+ static char normalizeNFKD(final char c) {
+ return normalizeNFKD("" + c).charAt(0);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/PBKDF2WithHmacSHA512.java b/app/src/main/java/io/github/novacrypto/bip39/PBKDF2WithHmacSHA512.java
new file mode 100644
index 0000000000..74c2302a99
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/PBKDF2WithHmacSHA512.java
@@ -0,0 +1,27 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39;
+
+public interface PBKDF2WithHmacSHA512 {
+
+ byte[] hash(final char[] chars, final byte[] salt);
+}
diff --git a/app/src/main/java/io/github/novacrypto/bip39/SeedCalculator.java b/app/src/main/java/io/github/novacrypto/bip39/SeedCalculator.java
new file mode 100644
index 0000000000..a54ecbab41
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/SeedCalculator.java
@@ -0,0 +1,111 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39;
+
+import io.github.novacrypto.toruntime.CheckedExceptionToRuntime;
+
+import java.util.Arrays;
+
+import static io.github.novacrypto.bip39.Normalization.normalizeNFKD;
+import static io.github.novacrypto.toruntime.CheckedExceptionToRuntime.toRuntime;
+
+/**
+ * Contains function for generating seeds from a Mnemonic and Passphrase.
+ */
+public final class SeedCalculator {
+
+ private final byte[] fixedSalt = getUtf8Bytes("mnemonic");
+ private final PBKDF2WithHmacSHA512 hashAlgorithm;
+
+ public SeedCalculator(final PBKDF2WithHmacSHA512 hashAlgorithm) {
+ this.hashAlgorithm = hashAlgorithm;
+ }
+
+ /**
+ * Creates a seed calculator using {@link SpongyCastlePBKDF2WithHmacSHA512} which is the most compatible.
+ * Use {@link SeedCalculator#SeedCalculator(PBKDF2WithHmacSHA512)} to supply another.
+ */
+ public SeedCalculator() {
+ this(SpongyCastlePBKDF2WithHmacSHA512.INSTANCE);
+ }
+
+ /**
+ * Calculate the seed given a mnemonic and corresponding passphrase.
+ * The phrase is not checked for validity here, for that use a {@link MnemonicValidator}.
+ *
+ * Due to normalization, these need to be {@link String}, and not {@link CharSequence}, this is an open issue:
+ * https://github.com/NovaCrypto/BIP39/issues/7
+ *
+ * If you have a list of words selected from a word list, you can use {@link #withWordsFromWordList} then
+ * {@link SeedCalculatorByWordListLookUp#calculateSeed}
+ *
+ * @param mnemonic The memorable list of words
+ * @param passphrase An optional passphrase, use "" if not required
+ * @return a seed for HD wallet generation
+ */
+ public byte[] calculateSeed(final String mnemonic, final String passphrase) {
+ final char[] chars = normalizeNFKD(mnemonic).toCharArray();
+ try {
+ return calculateSeed(chars, passphrase);
+ } finally {
+ Arrays.fill(chars, '\0');
+ }
+ }
+
+ byte[] calculateSeed(final char[] mnemonicChars, final String passphrase) {
+ final String normalizedPassphrase = normalizeNFKD(passphrase);
+ final byte[] salt2 = getUtf8Bytes(normalizedPassphrase);
+ final byte[] salt = combine(fixedSalt, salt2);
+ clear(salt2);
+ final byte[] encoded = hash(mnemonicChars, salt);
+ clear(salt);
+ return encoded;
+ }
+
+ public SeedCalculatorByWordListLookUp withWordsFromWordList(final WordList wordList) {
+ return new SeedCalculatorByWordListLookUp(this, wordList);
+ }
+
+ private static byte[] combine(final byte[] array1, final byte[] array2) {
+ final byte[] bytes = new byte[array1.length + array2.length];
+ System.arraycopy(array1, 0, bytes, 0, array1.length);
+ System.arraycopy(array2, 0, bytes, array1.length, bytes.length - array1.length);
+ return bytes;
+ }
+
+ private static void clear(final byte[] salt) {
+ Arrays.fill(salt, (byte) 0);
+ }
+
+ private byte[] hash(final char[] chars, final byte[] salt) {
+ return hashAlgorithm.hash(chars, salt);
+ }
+
+ private static byte[] getUtf8Bytes(final String string) {
+ return toRuntime(new CheckedExceptionToRuntime.Func() {
+ @Override
+ public byte[] run() throws Exception {
+ return string.getBytes("UTF-8");
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/SeedCalculatorByWordListLookUp.java b/app/src/main/java/io/github/novacrypto/bip39/SeedCalculatorByWordListLookUp.java
new file mode 100644
index 0000000000..4a26c899a8
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/SeedCalculatorByWordListLookUp.java
@@ -0,0 +1,89 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39;
+
+import java.util.*;
+
+public final class SeedCalculatorByWordListLookUp {
+ private final SeedCalculator seedCalculator;
+ private final Map map = new HashMap<>();
+ private final NFKDNormalizer normalizer;
+
+ SeedCalculatorByWordListLookUp(final SeedCalculator seedCalculator, final WordList wordList) {
+ this.seedCalculator = seedCalculator;
+ normalizer = new WordListMapNormalization(wordList);
+ for (int i = 0; i < 1 << 11; i++) {
+ final String word = normalizer.normalize(wordList.getWord(i));
+ map.put(word, word.toCharArray());
+ }
+ }
+
+ /**
+ * Calculate the seed given a mnemonic and corresponding passphrase.
+ * The phrase is not checked for validity here, for that use a {@link MnemonicValidator}.
+ *
+ * The purpose of this method is to avoid constructing a mnemonic String if you have gathered a list of
+ * words from the user and also to avoid having to normalize it, all words in the {@link WordList} are normalized
+ * instead.
+ *
+ * Due to normalization, the passphrase still needs to be {@link String}, and not {@link CharSequence}, this is an
+ * open issue: https://github.com/NovaCrypto/BIP39/issues/7
+ *
+ * @param mnemonic The memorable list of words, ideally selected from the word list that was supplied while creating this object.
+ * @param passphrase An optional passphrase, use "" if not required
+ * @return a seed for HD wallet generation
+ */
+ public byte[] calculateSeed(final Collection extends CharSequence> mnemonic, final String passphrase) {
+ final int words = mnemonic.size();
+ final char[][] chars = new char[words][];
+ final List toClear = new LinkedList<>();
+ int count = 0;
+ int wordIndex = 0;
+ for (final CharSequence word : mnemonic) {
+ char[] wordChars = map.get(normalizer.normalize(word));
+ if (wordChars == null) {
+ wordChars = normalizer.normalize(word).toCharArray();
+ toClear.add(wordChars);
+ }
+ chars[wordIndex++] = wordChars;
+ count += wordChars.length;
+ }
+ count += words - 1;
+ final char[] mnemonicChars = new char[count];
+ try {
+ int index = 0;
+ for (int i = 0; i < chars.length; i++) {
+ System.arraycopy(chars[i], 0, mnemonicChars, index, chars[i].length);
+ index += chars[i].length;
+ if (i < chars.length - 1) {
+ mnemonicChars[index++] = ' ';
+ }
+ }
+ return seedCalculator.calculateSeed(mnemonicChars, passphrase);
+ } finally {
+ Arrays.fill(mnemonicChars, '\0');
+ Arrays.fill(chars, null);
+ for (final char[] charsToClear : toClear)
+ Arrays.fill(charsToClear, '\0');
+ }
+ }
+}
diff --git a/app/src/main/java/io/github/novacrypto/bip39/SpongyCastlePBKDF2WithHmacSHA512.java b/app/src/main/java/io/github/novacrypto/bip39/SpongyCastlePBKDF2WithHmacSHA512.java
new file mode 100644
index 0000000000..4a9b34a591
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/SpongyCastlePBKDF2WithHmacSHA512.java
@@ -0,0 +1,42 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39;
+
+import org.bouncycastle.crypto.PBEParametersGenerator;
+import org.bouncycastle.crypto.digests.SHA512Digest;
+import org.bouncycastle.crypto.generators.PKCS5S2ParametersGenerator;
+import org.bouncycastle.crypto.params.KeyParameter;
+
+/**
+ * This implementation is useful for older Java implementations, for example it is suitable for all Android API levels.
+ */
+public enum SpongyCastlePBKDF2WithHmacSHA512 implements PBKDF2WithHmacSHA512 {
+ INSTANCE;
+
+ @Override
+ public byte[] hash(char[] chars, byte[] salt) {
+ PKCS5S2ParametersGenerator generator = new PKCS5S2ParametersGenerator(new SHA512Digest());
+ generator.init(PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(chars), salt, 2048);
+ KeyParameter key = (KeyParameter) generator.generateDerivedMacParameters(512);
+ return key.getKey();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/Validation/InvalidChecksumException.java b/app/src/main/java/io/github/novacrypto/bip39/Validation/InvalidChecksumException.java
new file mode 100644
index 0000000000..314c58e5c9
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/Validation/InvalidChecksumException.java
@@ -0,0 +1,28 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39.Validation;
+
+public final class InvalidChecksumException extends Exception {
+ public InvalidChecksumException() {
+ super("Invalid checksum");
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/Validation/InvalidWordCountException.java b/app/src/main/java/io/github/novacrypto/bip39/Validation/InvalidWordCountException.java
new file mode 100644
index 0000000000..c706124ceb
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/Validation/InvalidWordCountException.java
@@ -0,0 +1,28 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39.Validation;
+
+public final class InvalidWordCountException extends Exception {
+ public InvalidWordCountException() {
+ super("Not a correct number of words");
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/Validation/UnexpectedWhiteSpaceException.java b/app/src/main/java/io/github/novacrypto/bip39/Validation/UnexpectedWhiteSpaceException.java
new file mode 100644
index 0000000000..16f5b16e8f
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/Validation/UnexpectedWhiteSpaceException.java
@@ -0,0 +1,28 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39.Validation;
+
+public final class UnexpectedWhiteSpaceException extends Exception {
+ public UnexpectedWhiteSpaceException() {
+ super("Unexpected whitespace");
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/Validation/WordNotFoundException.java b/app/src/main/java/io/github/novacrypto/bip39/Validation/WordNotFoundException.java
new file mode 100644
index 0000000000..eb92eb830a
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/Validation/WordNotFoundException.java
@@ -0,0 +1,54 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39.Validation;
+
+public final class WordNotFoundException extends Exception {
+ private final CharSequence word;
+ private final CharSequence suggestion1;
+ private final CharSequence suggestion2;
+
+ public WordNotFoundException(
+ final CharSequence word,
+ final CharSequence suggestion1,
+ final CharSequence suggestion2) {
+ super(String.format(
+ "Word not found in word list \"%s\", suggestions \"%s\", \"%s\"",
+ word,
+ suggestion1,
+ suggestion2));
+ this.word = word;
+ this.suggestion1 = suggestion1;
+ this.suggestion2 = suggestion2;
+ }
+
+ public CharSequence getWord() {
+ return word;
+ }
+
+ public CharSequence getSuggestion1() {
+ return suggestion1;
+ }
+
+ public CharSequence getSuggestion2() {
+ return suggestion2;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/WordList.java b/app/src/main/java/io/github/novacrypto/bip39/WordList.java
new file mode 100644
index 0000000000..bc30a05151
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/WordList.java
@@ -0,0 +1,40 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39;
+
+public interface WordList {
+
+ /**
+ * Get a word in the word list.
+ *
+ * @param index Index of word in the word list [0..2047] inclusive.
+ * @return the word from the list.
+ */
+ String getWord(final int index);
+
+ /**
+ * Get the space character for this language.
+ *
+ * @return a whitespace character.
+ */
+ char getSpace();
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/WordListMapNormalization.java b/app/src/main/java/io/github/novacrypto/bip39/WordListMapNormalization.java
new file mode 100644
index 0000000000..75b68148a9
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/WordListMapNormalization.java
@@ -0,0 +1,48 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39;
+
+import java.text.Normalizer;
+import java.util.HashMap;
+import java.util.Map;
+
+class WordListMapNormalization implements NFKDNormalizer {
+ private final Map normalizedMap = new HashMap<>();
+
+ WordListMapNormalization(final WordList wordList) {
+ for (int i = 0; i < 1 << 11; i++) {
+ final String word = wordList.getWord(i);
+ final String normalized = Normalizer.normalize(word, Normalizer.Form.NFKD);
+ normalizedMap.put(word, normalized);
+ normalizedMap.put(normalized, normalized);
+ normalizedMap.put(Normalizer.normalize(word, Normalizer.Form.NFC), normalized);
+ }
+ }
+
+ @Override
+ public String normalize(final CharSequence charSequence) {
+ final String normalized = normalizedMap.get(charSequence);
+ if (normalized != null)
+ return normalized;
+ return Normalizer.normalize(charSequence, Normalizer.Form.NFKD);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/Words.java b/app/src/main/java/io/github/novacrypto/bip39/Words.java
new file mode 100644
index 0000000000..d77c97c3c2
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/Words.java
@@ -0,0 +1,44 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39;
+
+public enum Words {
+ TWELVE(128),
+ FIFTEEN(160),
+ EIGHTEEN(192),
+ TWENTY_ONE(224),
+ TWENTY_FOUR(256);
+
+ private final int bitLength;
+
+ Words(int bitLength) {
+ this.bitLength = bitLength;
+ }
+
+ public int bitLength() {
+ return bitLength;
+ }
+
+ public int byteLength() {
+ return bitLength / 8;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/wordlists/English.java b/app/src/main/java/io/github/novacrypto/bip39/wordlists/English.java
new file mode 100644
index 0000000000..fc7a5cacd0
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/wordlists/English.java
@@ -0,0 +1,2092 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39.wordlists;
+
+import io.github.novacrypto.bip39.WordList;
+
+/**
+ * Source: https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
+ */
+public enum English implements WordList {
+ INSTANCE;
+
+ @Override
+ public String getWord(final int index) {
+ return words[index];
+ }
+
+ @Override
+ public char getSpace() {
+ return ' ';
+ }
+
+ private final static String[] words = new String[]{
+ "abandon",
+ "ability",
+ "able",
+ "about",
+ "above",
+ "absent",
+ "absorb",
+ "abstract",
+ "absurd",
+ "abuse",
+ "access",
+ "accident",
+ "account",
+ "accuse",
+ "achieve",
+ "acid",
+ "acoustic",
+ "acquire",
+ "across",
+ "act",
+ "action",
+ "actor",
+ "actress",
+ "actual",
+ "adapt",
+ "add",
+ "addict",
+ "address",
+ "adjust",
+ "admit",
+ "adult",
+ "advance",
+ "advice",
+ "aerobic",
+ "affair",
+ "afford",
+ "afraid",
+ "again",
+ "age",
+ "agent",
+ "agree",
+ "ahead",
+ "aim",
+ "air",
+ "airport",
+ "aisle",
+ "alarm",
+ "album",
+ "alcohol",
+ "alert",
+ "alien",
+ "all",
+ "alley",
+ "allow",
+ "almost",
+ "alone",
+ "alpha",
+ "already",
+ "also",
+ "alter",
+ "always",
+ "amateur",
+ "amazing",
+ "among",
+ "amount",
+ "amused",
+ "analyst",
+ "anchor",
+ "ancient",
+ "anger",
+ "angle",
+ "angry",
+ "animal",
+ "ankle",
+ "announce",
+ "annual",
+ "another",
+ "answer",
+ "antenna",
+ "antique",
+ "anxiety",
+ "any",
+ "apart",
+ "apology",
+ "appear",
+ "apple",
+ "approve",
+ "april",
+ "arch",
+ "arctic",
+ "area",
+ "arena",
+ "argue",
+ "arm",
+ "armed",
+ "armor",
+ "army",
+ "around",
+ "arrange",
+ "arrest",
+ "arrive",
+ "arrow",
+ "art",
+ "artefact",
+ "artist",
+ "artwork",
+ "ask",
+ "aspect",
+ "assault",
+ "asset",
+ "assist",
+ "assume",
+ "asthma",
+ "athlete",
+ "atom",
+ "attack",
+ "attend",
+ "attitude",
+ "attract",
+ "auction",
+ "audit",
+ "august",
+ "aunt",
+ "author",
+ "auto",
+ "autumn",
+ "average",
+ "avocado",
+ "avoid",
+ "awake",
+ "aware",
+ "away",
+ "awesome",
+ "awful",
+ "awkward",
+ "axis",
+ "baby",
+ "bachelor",
+ "bacon",
+ "badge",
+ "bag",
+ "balance",
+ "balcony",
+ "ball",
+ "bamboo",
+ "banana",
+ "banner",
+ "bar",
+ "barely",
+ "bargain",
+ "barrel",
+ "base",
+ "basic",
+ "basket",
+ "battle",
+ "beach",
+ "bean",
+ "beauty",
+ "because",
+ "become",
+ "beef",
+ "before",
+ "begin",
+ "behave",
+ "behind",
+ "believe",
+ "below",
+ "belt",
+ "bench",
+ "benefit",
+ "best",
+ "betray",
+ "better",
+ "between",
+ "beyond",
+ "bicycle",
+ "bid",
+ "bike",
+ "bind",
+ "biology",
+ "bird",
+ "birth",
+ "bitter",
+ "black",
+ "blade",
+ "blame",
+ "blanket",
+ "blast",
+ "bleak",
+ "bless",
+ "blind",
+ "blood",
+ "blossom",
+ "blouse",
+ "blue",
+ "blur",
+ "blush",
+ "board",
+ "boat",
+ "body",
+ "boil",
+ "bomb",
+ "bone",
+ "bonus",
+ "book",
+ "boost",
+ "border",
+ "boring",
+ "borrow",
+ "boss",
+ "bottom",
+ "bounce",
+ "box",
+ "boy",
+ "bracket",
+ "brain",
+ "brand",
+ "brass",
+ "brave",
+ "bread",
+ "breeze",
+ "brick",
+ "bridge",
+ "brief",
+ "bright",
+ "bring",
+ "brisk",
+ "broccoli",
+ "broken",
+ "bronze",
+ "broom",
+ "brother",
+ "brown",
+ "brush",
+ "bubble",
+ "buddy",
+ "budget",
+ "buffalo",
+ "build",
+ "bulb",
+ "bulk",
+ "bullet",
+ "bundle",
+ "bunker",
+ "burden",
+ "burger",
+ "burst",
+ "bus",
+ "business",
+ "busy",
+ "butter",
+ "buyer",
+ "buzz",
+ "cabbage",
+ "cabin",
+ "cable",
+ "cactus",
+ "cage",
+ "cake",
+ "call",
+ "calm",
+ "camera",
+ "camp",
+ "can",
+ "canal",
+ "cancel",
+ "candy",
+ "cannon",
+ "canoe",
+ "canvas",
+ "canyon",
+ "capable",
+ "capital",
+ "captain",
+ "car",
+ "carbon",
+ "card",
+ "cargo",
+ "carpet",
+ "carry",
+ "cart",
+ "case",
+ "cash",
+ "casino",
+ "castle",
+ "casual",
+ "cat",
+ "catalog",
+ "catch",
+ "category",
+ "cattle",
+ "caught",
+ "cause",
+ "caution",
+ "cave",
+ "ceiling",
+ "celery",
+ "cement",
+ "census",
+ "century",
+ "cereal",
+ "certain",
+ "chair",
+ "chalk",
+ "champion",
+ "change",
+ "chaos",
+ "chapter",
+ "charge",
+ "chase",
+ "chat",
+ "cheap",
+ "check",
+ "cheese",
+ "chef",
+ "cherry",
+ "chest",
+ "chicken",
+ "chief",
+ "child",
+ "chimney",
+ "choice",
+ "choose",
+ "chronic",
+ "chuckle",
+ "chunk",
+ "churn",
+ "cigar",
+ "cinnamon",
+ "circle",
+ "citizen",
+ "city",
+ "civil",
+ "claim",
+ "clap",
+ "clarify",
+ "claw",
+ "clay",
+ "clean",
+ "clerk",
+ "clever",
+ "click",
+ "client",
+ "cliff",
+ "climb",
+ "clinic",
+ "clip",
+ "clock",
+ "clog",
+ "close",
+ "cloth",
+ "cloud",
+ "clown",
+ "club",
+ "clump",
+ "cluster",
+ "clutch",
+ "coach",
+ "coast",
+ "coconut",
+ "code",
+ "coffee",
+ "coil",
+ "coin",
+ "collect",
+ "color",
+ "column",
+ "combine",
+ "come",
+ "comfort",
+ "comic",
+ "common",
+ "company",
+ "concert",
+ "conduct",
+ "confirm",
+ "congress",
+ "connect",
+ "consider",
+ "control",
+ "convince",
+ "cook",
+ "cool",
+ "copper",
+ "copy",
+ "coral",
+ "core",
+ "corn",
+ "correct",
+ "cost",
+ "cotton",
+ "couch",
+ "country",
+ "couple",
+ "course",
+ "cousin",
+ "cover",
+ "coyote",
+ "crack",
+ "cradle",
+ "craft",
+ "cram",
+ "crane",
+ "crash",
+ "crater",
+ "crawl",
+ "crazy",
+ "cream",
+ "credit",
+ "creek",
+ "crew",
+ "cricket",
+ "crime",
+ "crisp",
+ "critic",
+ "crop",
+ "cross",
+ "crouch",
+ "crowd",
+ "crucial",
+ "cruel",
+ "cruise",
+ "crumble",
+ "crunch",
+ "crush",
+ "cry",
+ "crystal",
+ "cube",
+ "culture",
+ "cup",
+ "cupboard",
+ "curious",
+ "current",
+ "curtain",
+ "curve",
+ "cushion",
+ "custom",
+ "cute",
+ "cycle",
+ "dad",
+ "damage",
+ "damp",
+ "dance",
+ "danger",
+ "daring",
+ "dash",
+ "daughter",
+ "dawn",
+ "day",
+ "deal",
+ "debate",
+ "debris",
+ "decade",
+ "december",
+ "decide",
+ "decline",
+ "decorate",
+ "decrease",
+ "deer",
+ "defense",
+ "define",
+ "defy",
+ "degree",
+ "delay",
+ "deliver",
+ "demand",
+ "demise",
+ "denial",
+ "dentist",
+ "deny",
+ "depart",
+ "depend",
+ "deposit",
+ "depth",
+ "deputy",
+ "derive",
+ "describe",
+ "desert",
+ "design",
+ "desk",
+ "despair",
+ "destroy",
+ "detail",
+ "detect",
+ "develop",
+ "device",
+ "devote",
+ "diagram",
+ "dial",
+ "diamond",
+ "diary",
+ "dice",
+ "diesel",
+ "diet",
+ "differ",
+ "digital",
+ "dignity",
+ "dilemma",
+ "dinner",
+ "dinosaur",
+ "direct",
+ "dirt",
+ "disagree",
+ "discover",
+ "disease",
+ "dish",
+ "dismiss",
+ "disorder",
+ "display",
+ "distance",
+ "divert",
+ "divide",
+ "divorce",
+ "dizzy",
+ "doctor",
+ "document",
+ "dog",
+ "doll",
+ "dolphin",
+ "domain",
+ "donate",
+ "donkey",
+ "donor",
+ "door",
+ "dose",
+ "double",
+ "dove",
+ "draft",
+ "dragon",
+ "drama",
+ "drastic",
+ "draw",
+ "dream",
+ "dress",
+ "drift",
+ "drill",
+ "drink",
+ "drip",
+ "drive",
+ "drop",
+ "drum",
+ "dry",
+ "duck",
+ "dumb",
+ "dune",
+ "during",
+ "dust",
+ "dutch",
+ "duty",
+ "dwarf",
+ "dynamic",
+ "eager",
+ "eagle",
+ "early",
+ "earn",
+ "earth",
+ "easily",
+ "east",
+ "easy",
+ "echo",
+ "ecology",
+ "economy",
+ "edge",
+ "edit",
+ "educate",
+ "effort",
+ "egg",
+ "eight",
+ "either",
+ "elbow",
+ "elder",
+ "electric",
+ "elegant",
+ "element",
+ "elephant",
+ "elevator",
+ "elite",
+ "else",
+ "embark",
+ "embody",
+ "embrace",
+ "emerge",
+ "emotion",
+ "employ",
+ "empower",
+ "empty",
+ "enable",
+ "enact",
+ "end",
+ "endless",
+ "endorse",
+ "enemy",
+ "energy",
+ "enforce",
+ "engage",
+ "engine",
+ "enhance",
+ "enjoy",
+ "enlist",
+ "enough",
+ "enrich",
+ "enroll",
+ "ensure",
+ "enter",
+ "entire",
+ "entry",
+ "envelope",
+ "episode",
+ "equal",
+ "equip",
+ "era",
+ "erase",
+ "erode",
+ "erosion",
+ "error",
+ "erupt",
+ "escape",
+ "essay",
+ "essence",
+ "estate",
+ "eternal",
+ "ethics",
+ "evidence",
+ "evil",
+ "evoke",
+ "evolve",
+ "exact",
+ "example",
+ "excess",
+ "exchange",
+ "excite",
+ "exclude",
+ "excuse",
+ "execute",
+ "exercise",
+ "exhaust",
+ "exhibit",
+ "exile",
+ "exist",
+ "exit",
+ "exotic",
+ "expand",
+ "expect",
+ "expire",
+ "explain",
+ "expose",
+ "express",
+ "extend",
+ "extra",
+ "eye",
+ "eyebrow",
+ "fabric",
+ "face",
+ "faculty",
+ "fade",
+ "faint",
+ "faith",
+ "fall",
+ "false",
+ "fame",
+ "family",
+ "famous",
+ "fan",
+ "fancy",
+ "fantasy",
+ "farm",
+ "fashion",
+ "fat",
+ "fatal",
+ "father",
+ "fatigue",
+ "fault",
+ "favorite",
+ "feature",
+ "february",
+ "federal",
+ "fee",
+ "feed",
+ "feel",
+ "female",
+ "fence",
+ "festival",
+ "fetch",
+ "fever",
+ "few",
+ "fiber",
+ "fiction",
+ "field",
+ "figure",
+ "file",
+ "film",
+ "filter",
+ "final",
+ "find",
+ "fine",
+ "finger",
+ "finish",
+ "fire",
+ "firm",
+ "first",
+ "fiscal",
+ "fish",
+ "fit",
+ "fitness",
+ "fix",
+ "flag",
+ "flame",
+ "flash",
+ "flat",
+ "flavor",
+ "flee",
+ "flight",
+ "flip",
+ "float",
+ "flock",
+ "floor",
+ "flower",
+ "fluid",
+ "flush",
+ "fly",
+ "foam",
+ "focus",
+ "fog",
+ "foil",
+ "fold",
+ "follow",
+ "food",
+ "foot",
+ "force",
+ "forest",
+ "forget",
+ "fork",
+ "fortune",
+ "forum",
+ "forward",
+ "fossil",
+ "foster",
+ "found",
+ "fox",
+ "fragile",
+ "frame",
+ "frequent",
+ "fresh",
+ "friend",
+ "fringe",
+ "frog",
+ "front",
+ "frost",
+ "frown",
+ "frozen",
+ "fruit",
+ "fuel",
+ "fun",
+ "funny",
+ "furnace",
+ "fury",
+ "future",
+ "gadget",
+ "gain",
+ "galaxy",
+ "gallery",
+ "game",
+ "gap",
+ "garage",
+ "garbage",
+ "garden",
+ "garlic",
+ "garment",
+ "gas",
+ "gasp",
+ "gate",
+ "gather",
+ "gauge",
+ "gaze",
+ "general",
+ "genius",
+ "genre",
+ "gentle",
+ "genuine",
+ "gesture",
+ "ghost",
+ "giant",
+ "gift",
+ "giggle",
+ "ginger",
+ "giraffe",
+ "girl",
+ "give",
+ "glad",
+ "glance",
+ "glare",
+ "glass",
+ "glide",
+ "glimpse",
+ "globe",
+ "gloom",
+ "glory",
+ "glove",
+ "glow",
+ "glue",
+ "goat",
+ "goddess",
+ "gold",
+ "good",
+ "goose",
+ "gorilla",
+ "gospel",
+ "gossip",
+ "govern",
+ "gown",
+ "grab",
+ "grace",
+ "grain",
+ "grant",
+ "grape",
+ "grass",
+ "gravity",
+ "great",
+ "green",
+ "grid",
+ "grief",
+ "grit",
+ "grocery",
+ "group",
+ "grow",
+ "grunt",
+ "guard",
+ "guess",
+ "guide",
+ "guilt",
+ "guitar",
+ "gun",
+ "gym",
+ "habit",
+ "hair",
+ "half",
+ "hammer",
+ "hamster",
+ "hand",
+ "happy",
+ "harbor",
+ "hard",
+ "harsh",
+ "harvest",
+ "hat",
+ "have",
+ "hawk",
+ "hazard",
+ "head",
+ "health",
+ "heart",
+ "heavy",
+ "hedgehog",
+ "height",
+ "hello",
+ "helmet",
+ "help",
+ "hen",
+ "hero",
+ "hidden",
+ "high",
+ "hill",
+ "hint",
+ "hip",
+ "hire",
+ "history",
+ "hobby",
+ "hockey",
+ "hold",
+ "hole",
+ "holiday",
+ "hollow",
+ "home",
+ "honey",
+ "hood",
+ "hope",
+ "horn",
+ "horror",
+ "horse",
+ "hospital",
+ "host",
+ "hotel",
+ "hour",
+ "hover",
+ "hub",
+ "huge",
+ "human",
+ "humble",
+ "humor",
+ "hundred",
+ "hungry",
+ "hunt",
+ "hurdle",
+ "hurry",
+ "hurt",
+ "husband",
+ "hybrid",
+ "ice",
+ "icon",
+ "idea",
+ "identify",
+ "idle",
+ "ignore",
+ "ill",
+ "illegal",
+ "illness",
+ "image",
+ "imitate",
+ "immense",
+ "immune",
+ "impact",
+ "impose",
+ "improve",
+ "impulse",
+ "inch",
+ "include",
+ "income",
+ "increase",
+ "index",
+ "indicate",
+ "indoor",
+ "industry",
+ "infant",
+ "inflict",
+ "inform",
+ "inhale",
+ "inherit",
+ "initial",
+ "inject",
+ "injury",
+ "inmate",
+ "inner",
+ "innocent",
+ "input",
+ "inquiry",
+ "insane",
+ "insect",
+ "inside",
+ "inspire",
+ "install",
+ "intact",
+ "interest",
+ "into",
+ "invest",
+ "invite",
+ "involve",
+ "iron",
+ "island",
+ "isolate",
+ "issue",
+ "item",
+ "ivory",
+ "jacket",
+ "jaguar",
+ "jar",
+ "jazz",
+ "jealous",
+ "jeans",
+ "jelly",
+ "jewel",
+ "job",
+ "join",
+ "joke",
+ "journey",
+ "joy",
+ "judge",
+ "juice",
+ "jump",
+ "jungle",
+ "junior",
+ "junk",
+ "just",
+ "kangaroo",
+ "keen",
+ "keep",
+ "ketchup",
+ "key",
+ "kick",
+ "kid",
+ "kidney",
+ "kind",
+ "kingdom",
+ "kiss",
+ "kit",
+ "kitchen",
+ "kite",
+ "kitten",
+ "kiwi",
+ "knee",
+ "knife",
+ "knock",
+ "know",
+ "lab",
+ "label",
+ "labor",
+ "ladder",
+ "lady",
+ "lake",
+ "lamp",
+ "language",
+ "laptop",
+ "large",
+ "later",
+ "latin",
+ "laugh",
+ "laundry",
+ "lava",
+ "law",
+ "lawn",
+ "lawsuit",
+ "layer",
+ "lazy",
+ "leader",
+ "leaf",
+ "learn",
+ "leave",
+ "lecture",
+ "left",
+ "leg",
+ "legal",
+ "legend",
+ "leisure",
+ "lemon",
+ "lend",
+ "length",
+ "lens",
+ "leopard",
+ "lesson",
+ "letter",
+ "level",
+ "liar",
+ "liberty",
+ "library",
+ "license",
+ "life",
+ "lift",
+ "light",
+ "like",
+ "limb",
+ "limit",
+ "link",
+ "lion",
+ "liquid",
+ "list",
+ "little",
+ "live",
+ "lizard",
+ "load",
+ "loan",
+ "lobster",
+ "local",
+ "lock",
+ "logic",
+ "lonely",
+ "long",
+ "loop",
+ "lottery",
+ "loud",
+ "lounge",
+ "love",
+ "loyal",
+ "lucky",
+ "luggage",
+ "lumber",
+ "lunar",
+ "lunch",
+ "luxury",
+ "lyrics",
+ "machine",
+ "mad",
+ "magic",
+ "magnet",
+ "maid",
+ "mail",
+ "main",
+ "major",
+ "make",
+ "mammal",
+ "man",
+ "manage",
+ "mandate",
+ "mango",
+ "mansion",
+ "manual",
+ "maple",
+ "marble",
+ "march",
+ "margin",
+ "marine",
+ "market",
+ "marriage",
+ "mask",
+ "mass",
+ "master",
+ "match",
+ "material",
+ "math",
+ "matrix",
+ "matter",
+ "maximum",
+ "maze",
+ "meadow",
+ "mean",
+ "measure",
+ "meat",
+ "mechanic",
+ "medal",
+ "media",
+ "melody",
+ "melt",
+ "member",
+ "memory",
+ "mention",
+ "menu",
+ "mercy",
+ "merge",
+ "merit",
+ "merry",
+ "mesh",
+ "message",
+ "metal",
+ "method",
+ "middle",
+ "midnight",
+ "milk",
+ "million",
+ "mimic",
+ "mind",
+ "minimum",
+ "minor",
+ "minute",
+ "miracle",
+ "mirror",
+ "misery",
+ "miss",
+ "mistake",
+ "mix",
+ "mixed",
+ "mixture",
+ "mobile",
+ "model",
+ "modify",
+ "mom",
+ "moment",
+ "monitor",
+ "monkey",
+ "monster",
+ "month",
+ "moon",
+ "moral",
+ "more",
+ "morning",
+ "mosquito",
+ "mother",
+ "motion",
+ "motor",
+ "mountain",
+ "mouse",
+ "move",
+ "movie",
+ "much",
+ "muffin",
+ "mule",
+ "multiply",
+ "muscle",
+ "museum",
+ "mushroom",
+ "music",
+ "must",
+ "mutual",
+ "myself",
+ "mystery",
+ "myth",
+ "naive",
+ "name",
+ "napkin",
+ "narrow",
+ "nasty",
+ "nation",
+ "nature",
+ "near",
+ "neck",
+ "need",
+ "negative",
+ "neglect",
+ "neither",
+ "nephew",
+ "nerve",
+ "nest",
+ "net",
+ "network",
+ "neutral",
+ "never",
+ "news",
+ "next",
+ "nice",
+ "night",
+ "noble",
+ "noise",
+ "nominee",
+ "noodle",
+ "normal",
+ "north",
+ "nose",
+ "notable",
+ "note",
+ "nothing",
+ "notice",
+ "novel",
+ "now",
+ "nuclear",
+ "number",
+ "nurse",
+ "nut",
+ "oak",
+ "obey",
+ "object",
+ "oblige",
+ "obscure",
+ "observe",
+ "obtain",
+ "obvious",
+ "occur",
+ "ocean",
+ "october",
+ "odor",
+ "off",
+ "offer",
+ "office",
+ "often",
+ "oil",
+ "okay",
+ "old",
+ "olive",
+ "olympic",
+ "omit",
+ "once",
+ "one",
+ "onion",
+ "online",
+ "only",
+ "open",
+ "opera",
+ "opinion",
+ "oppose",
+ "option",
+ "orange",
+ "orbit",
+ "orchard",
+ "order",
+ "ordinary",
+ "organ",
+ "orient",
+ "original",
+ "orphan",
+ "ostrich",
+ "other",
+ "outdoor",
+ "outer",
+ "output",
+ "outside",
+ "oval",
+ "oven",
+ "over",
+ "own",
+ "owner",
+ "oxygen",
+ "oyster",
+ "ozone",
+ "pact",
+ "paddle",
+ "page",
+ "pair",
+ "palace",
+ "palm",
+ "panda",
+ "panel",
+ "panic",
+ "panther",
+ "paper",
+ "parade",
+ "parent",
+ "park",
+ "parrot",
+ "party",
+ "pass",
+ "patch",
+ "path",
+ "patient",
+ "patrol",
+ "pattern",
+ "pause",
+ "pave",
+ "payment",
+ "peace",
+ "peanut",
+ "pear",
+ "peasant",
+ "pelican",
+ "pen",
+ "penalty",
+ "pencil",
+ "people",
+ "pepper",
+ "perfect",
+ "permit",
+ "person",
+ "pet",
+ "phone",
+ "photo",
+ "phrase",
+ "physical",
+ "piano",
+ "picnic",
+ "picture",
+ "piece",
+ "pig",
+ "pigeon",
+ "pill",
+ "pilot",
+ "pink",
+ "pioneer",
+ "pipe",
+ "pistol",
+ "pitch",
+ "pizza",
+ "place",
+ "planet",
+ "plastic",
+ "plate",
+ "play",
+ "please",
+ "pledge",
+ "pluck",
+ "plug",
+ "plunge",
+ "poem",
+ "poet",
+ "point",
+ "polar",
+ "pole",
+ "police",
+ "pond",
+ "pony",
+ "pool",
+ "popular",
+ "portion",
+ "position",
+ "possible",
+ "post",
+ "potato",
+ "pottery",
+ "poverty",
+ "powder",
+ "power",
+ "practice",
+ "praise",
+ "predict",
+ "prefer",
+ "prepare",
+ "present",
+ "pretty",
+ "prevent",
+ "price",
+ "pride",
+ "primary",
+ "print",
+ "priority",
+ "prison",
+ "private",
+ "prize",
+ "problem",
+ "process",
+ "produce",
+ "profit",
+ "program",
+ "project",
+ "promote",
+ "proof",
+ "property",
+ "prosper",
+ "protect",
+ "proud",
+ "provide",
+ "public",
+ "pudding",
+ "pull",
+ "pulp",
+ "pulse",
+ "pumpkin",
+ "punch",
+ "pupil",
+ "puppy",
+ "purchase",
+ "purity",
+ "purpose",
+ "purse",
+ "push",
+ "put",
+ "puzzle",
+ "pyramid",
+ "quality",
+ "quantum",
+ "quarter",
+ "question",
+ "quick",
+ "quit",
+ "quiz",
+ "quote",
+ "rabbit",
+ "raccoon",
+ "race",
+ "rack",
+ "radar",
+ "radio",
+ "rail",
+ "rain",
+ "raise",
+ "rally",
+ "ramp",
+ "ranch",
+ "random",
+ "range",
+ "rapid",
+ "rare",
+ "rate",
+ "rather",
+ "raven",
+ "raw",
+ "razor",
+ "ready",
+ "real",
+ "reason",
+ "rebel",
+ "rebuild",
+ "recall",
+ "receive",
+ "recipe",
+ "record",
+ "recycle",
+ "reduce",
+ "reflect",
+ "reform",
+ "refuse",
+ "region",
+ "regret",
+ "regular",
+ "reject",
+ "relax",
+ "release",
+ "relief",
+ "rely",
+ "remain",
+ "remember",
+ "remind",
+ "remove",
+ "render",
+ "renew",
+ "rent",
+ "reopen",
+ "repair",
+ "repeat",
+ "replace",
+ "report",
+ "require",
+ "rescue",
+ "resemble",
+ "resist",
+ "resource",
+ "response",
+ "result",
+ "retire",
+ "retreat",
+ "return",
+ "reunion",
+ "reveal",
+ "review",
+ "reward",
+ "rhythm",
+ "rib",
+ "ribbon",
+ "rice",
+ "rich",
+ "ride",
+ "ridge",
+ "rifle",
+ "right",
+ "rigid",
+ "ring",
+ "riot",
+ "ripple",
+ "risk",
+ "ritual",
+ "rival",
+ "river",
+ "road",
+ "roast",
+ "robot",
+ "robust",
+ "rocket",
+ "romance",
+ "roof",
+ "rookie",
+ "room",
+ "rose",
+ "rotate",
+ "rough",
+ "round",
+ "route",
+ "royal",
+ "rubber",
+ "rude",
+ "rug",
+ "rule",
+ "run",
+ "runway",
+ "rural",
+ "sad",
+ "saddle",
+ "sadness",
+ "safe",
+ "sail",
+ "salad",
+ "salmon",
+ "salon",
+ "salt",
+ "salute",
+ "same",
+ "sample",
+ "sand",
+ "satisfy",
+ "satoshi",
+ "sauce",
+ "sausage",
+ "save",
+ "say",
+ "scale",
+ "scan",
+ "scare",
+ "scatter",
+ "scene",
+ "scheme",
+ "school",
+ "science",
+ "scissors",
+ "scorpion",
+ "scout",
+ "scrap",
+ "screen",
+ "script",
+ "scrub",
+ "sea",
+ "search",
+ "season",
+ "seat",
+ "second",
+ "secret",
+ "section",
+ "security",
+ "seed",
+ "seek",
+ "segment",
+ "select",
+ "sell",
+ "seminar",
+ "senior",
+ "sense",
+ "sentence",
+ "series",
+ "service",
+ "session",
+ "settle",
+ "setup",
+ "seven",
+ "shadow",
+ "shaft",
+ "shallow",
+ "share",
+ "shed",
+ "shell",
+ "sheriff",
+ "shield",
+ "shift",
+ "shine",
+ "ship",
+ "shiver",
+ "shock",
+ "shoe",
+ "shoot",
+ "shop",
+ "short",
+ "shoulder",
+ "shove",
+ "shrimp",
+ "shrug",
+ "shuffle",
+ "shy",
+ "sibling",
+ "sick",
+ "side",
+ "siege",
+ "sight",
+ "sign",
+ "silent",
+ "silk",
+ "silly",
+ "silver",
+ "similar",
+ "simple",
+ "since",
+ "sing",
+ "siren",
+ "sister",
+ "situate",
+ "six",
+ "size",
+ "skate",
+ "sketch",
+ "ski",
+ "skill",
+ "skin",
+ "skirt",
+ "skull",
+ "slab",
+ "slam",
+ "sleep",
+ "slender",
+ "slice",
+ "slide",
+ "slight",
+ "slim",
+ "slogan",
+ "slot",
+ "slow",
+ "slush",
+ "small",
+ "smart",
+ "smile",
+ "smoke",
+ "smooth",
+ "snack",
+ "snake",
+ "snap",
+ "sniff",
+ "snow",
+ "soap",
+ "soccer",
+ "social",
+ "sock",
+ "soda",
+ "soft",
+ "solar",
+ "soldier",
+ "solid",
+ "solution",
+ "solve",
+ "someone",
+ "song",
+ "soon",
+ "sorry",
+ "sort",
+ "soul",
+ "sound",
+ "soup",
+ "source",
+ "south",
+ "space",
+ "spare",
+ "spatial",
+ "spawn",
+ "speak",
+ "special",
+ "speed",
+ "spell",
+ "spend",
+ "sphere",
+ "spice",
+ "spider",
+ "spike",
+ "spin",
+ "spirit",
+ "split",
+ "spoil",
+ "sponsor",
+ "spoon",
+ "sport",
+ "spot",
+ "spray",
+ "spread",
+ "spring",
+ "spy",
+ "square",
+ "squeeze",
+ "squirrel",
+ "stable",
+ "stadium",
+ "staff",
+ "stage",
+ "stairs",
+ "stamp",
+ "stand",
+ "start",
+ "state",
+ "stay",
+ "steak",
+ "steel",
+ "stem",
+ "step",
+ "stereo",
+ "stick",
+ "still",
+ "sting",
+ "stock",
+ "stomach",
+ "stone",
+ "stool",
+ "story",
+ "stove",
+ "strategy",
+ "street",
+ "strike",
+ "strong",
+ "struggle",
+ "student",
+ "stuff",
+ "stumble",
+ "style",
+ "subject",
+ "submit",
+ "subway",
+ "success",
+ "such",
+ "sudden",
+ "suffer",
+ "sugar",
+ "suggest",
+ "suit",
+ "summer",
+ "sun",
+ "sunny",
+ "sunset",
+ "super",
+ "supply",
+ "supreme",
+ "sure",
+ "surface",
+ "surge",
+ "surprise",
+ "surround",
+ "survey",
+ "suspect",
+ "sustain",
+ "swallow",
+ "swamp",
+ "swap",
+ "swarm",
+ "swear",
+ "sweet",
+ "swift",
+ "swim",
+ "swing",
+ "switch",
+ "sword",
+ "symbol",
+ "symptom",
+ "syrup",
+ "system",
+ "table",
+ "tackle",
+ "tag",
+ "tail",
+ "talent",
+ "talk",
+ "tank",
+ "tape",
+ "target",
+ "task",
+ "taste",
+ "tattoo",
+ "taxi",
+ "teach",
+ "team",
+ "tell",
+ "ten",
+ "tenant",
+ "tennis",
+ "tent",
+ "term",
+ "test",
+ "text",
+ "thank",
+ "that",
+ "theme",
+ "then",
+ "theory",
+ "there",
+ "they",
+ "thing",
+ "this",
+ "thought",
+ "three",
+ "thrive",
+ "throw",
+ "thumb",
+ "thunder",
+ "ticket",
+ "tide",
+ "tiger",
+ "tilt",
+ "timber",
+ "time",
+ "tiny",
+ "tip",
+ "tired",
+ "tissue",
+ "title",
+ "toast",
+ "tobacco",
+ "today",
+ "toddler",
+ "toe",
+ "together",
+ "toilet",
+ "token",
+ "tomato",
+ "tomorrow",
+ "tone",
+ "tongue",
+ "tonight",
+ "tool",
+ "tooth",
+ "top",
+ "topic",
+ "topple",
+ "torch",
+ "tornado",
+ "tortoise",
+ "toss",
+ "total",
+ "tourist",
+ "toward",
+ "tower",
+ "town",
+ "toy",
+ "track",
+ "trade",
+ "traffic",
+ "tragic",
+ "train",
+ "transfer",
+ "trap",
+ "trash",
+ "travel",
+ "tray",
+ "treat",
+ "tree",
+ "trend",
+ "trial",
+ "tribe",
+ "trick",
+ "trigger",
+ "trim",
+ "trip",
+ "trophy",
+ "trouble",
+ "truck",
+ "true",
+ "truly",
+ "trumpet",
+ "trust",
+ "truth",
+ "try",
+ "tube",
+ "tuition",
+ "tumble",
+ "tuna",
+ "tunnel",
+ "turkey",
+ "turn",
+ "turtle",
+ "twelve",
+ "twenty",
+ "twice",
+ "twin",
+ "twist",
+ "two",
+ "type",
+ "typical",
+ "ugly",
+ "umbrella",
+ "unable",
+ "unaware",
+ "uncle",
+ "uncover",
+ "under",
+ "undo",
+ "unfair",
+ "unfold",
+ "unhappy",
+ "uniform",
+ "unique",
+ "unit",
+ "universe",
+ "unknown",
+ "unlock",
+ "until",
+ "unusual",
+ "unveil",
+ "update",
+ "upgrade",
+ "uphold",
+ "upon",
+ "upper",
+ "upset",
+ "urban",
+ "urge",
+ "usage",
+ "use",
+ "used",
+ "useful",
+ "useless",
+ "usual",
+ "utility",
+ "vacant",
+ "vacuum",
+ "vague",
+ "valid",
+ "valley",
+ "valve",
+ "van",
+ "vanish",
+ "vapor",
+ "various",
+ "vast",
+ "vault",
+ "vehicle",
+ "velvet",
+ "vendor",
+ "venture",
+ "venue",
+ "verb",
+ "verify",
+ "version",
+ "very",
+ "vessel",
+ "veteran",
+ "viable",
+ "vibrant",
+ "vicious",
+ "victory",
+ "video",
+ "view",
+ "village",
+ "vintage",
+ "violin",
+ "virtual",
+ "virus",
+ "visa",
+ "visit",
+ "visual",
+ "vital",
+ "vivid",
+ "vocal",
+ "voice",
+ "void",
+ "volcano",
+ "volume",
+ "vote",
+ "voyage",
+ "wage",
+ "wagon",
+ "wait",
+ "walk",
+ "wall",
+ "walnut",
+ "want",
+ "warfare",
+ "warm",
+ "warrior",
+ "wash",
+ "wasp",
+ "waste",
+ "water",
+ "wave",
+ "way",
+ "wealth",
+ "weapon",
+ "wear",
+ "weasel",
+ "weather",
+ "web",
+ "wedding",
+ "weekend",
+ "weird",
+ "welcome",
+ "west",
+ "wet",
+ "whale",
+ "what",
+ "wheat",
+ "wheel",
+ "when",
+ "where",
+ "whip",
+ "whisper",
+ "wide",
+ "width",
+ "wife",
+ "wild",
+ "will",
+ "win",
+ "window",
+ "wine",
+ "wing",
+ "wink",
+ "winner",
+ "winter",
+ "wire",
+ "wisdom",
+ "wise",
+ "wish",
+ "witness",
+ "wolf",
+ "woman",
+ "wonder",
+ "wood",
+ "wool",
+ "word",
+ "work",
+ "world",
+ "worry",
+ "worth",
+ "wrap",
+ "wreck",
+ "wrestle",
+ "wrist",
+ "write",
+ "wrong",
+ "yard",
+ "year",
+ "yellow",
+ "you",
+ "young",
+ "youth",
+ "zebra",
+ "zero",
+ "zone",
+ "zoo"
+ };
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/wordlists/French.java b/app/src/main/java/io/github/novacrypto/bip39/wordlists/French.java
new file mode 100644
index 0000000000..0eafe0be28
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/wordlists/French.java
@@ -0,0 +1,2092 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39.wordlists;
+
+import io.github.novacrypto.bip39.WordList;
+
+/**
+ * Source: https://github.com/bitcoin/bips/blob/master/bip-0039/french.txt
+ */
+public enum French implements WordList {
+ INSTANCE;
+
+ @Override
+ public String getWord(final int index) {
+ return words[index];
+ }
+
+ @Override
+ public char getSpace() {
+ return ' ';
+ }
+
+ private final static String[] words = new String[]{
+ "abaisser",
+ "abandon",
+ "abdiquer",
+ "abeille",
+ "abolir",
+ "aborder",
+ "aboutir",
+ "aboyer",
+ "abrasif",
+ "abreuver",
+ "abriter",
+ "abroger",
+ "abrupt",
+ "absence",
+ "absolu",
+ "absurde",
+ "abusif",
+ "abyssal",
+ "académie",
+ "acajou",
+ "acarien",
+ "accabler",
+ "accepter",
+ "acclamer",
+ "accolade",
+ "accroche",
+ "accuser",
+ "acerbe",
+ "achat",
+ "acheter",
+ "aciduler",
+ "acier",
+ "acompte",
+ "acquérir",
+ "acronyme",
+ "acteur",
+ "actif",
+ "actuel",
+ "adepte",
+ "adéquat",
+ "adhésif",
+ "adjectif",
+ "adjuger",
+ "admettre",
+ "admirer",
+ "adopter",
+ "adorer",
+ "adoucir",
+ "adresse",
+ "adroit",
+ "adulte",
+ "adverbe",
+ "aérer",
+ "aéronef",
+ "affaire",
+ "affecter",
+ "affiche",
+ "affreux",
+ "affubler",
+ "agacer",
+ "agencer",
+ "agile",
+ "agiter",
+ "agrafer",
+ "agréable",
+ "agrume",
+ "aider",
+ "aiguille",
+ "ailier",
+ "aimable",
+ "aisance",
+ "ajouter",
+ "ajuster",
+ "alarmer",
+ "alchimie",
+ "alerte",
+ "algèbre",
+ "algue",
+ "aliéner",
+ "aliment",
+ "alléger",
+ "alliage",
+ "allouer",
+ "allumer",
+ "alourdir",
+ "alpaga",
+ "altesse",
+ "alvéole",
+ "amateur",
+ "ambigu",
+ "ambre",
+ "aménager",
+ "amertume",
+ "amidon",
+ "amiral",
+ "amorcer",
+ "amour",
+ "amovible",
+ "amphibie",
+ "ampleur",
+ "amusant",
+ "analyse",
+ "anaphore",
+ "anarchie",
+ "anatomie",
+ "ancien",
+ "anéantir",
+ "angle",
+ "angoisse",
+ "anguleux",
+ "animal",
+ "annexer",
+ "annonce",
+ "annuel",
+ "anodin",
+ "anomalie",
+ "anonyme",
+ "anormal",
+ "antenne",
+ "antidote",
+ "anxieux",
+ "apaiser",
+ "apéritif",
+ "aplanir",
+ "apologie",
+ "appareil",
+ "appeler",
+ "apporter",
+ "appuyer",
+ "aquarium",
+ "aqueduc",
+ "arbitre",
+ "arbuste",
+ "ardeur",
+ "ardoise",
+ "argent",
+ "arlequin",
+ "armature",
+ "armement",
+ "armoire",
+ "armure",
+ "arpenter",
+ "arracher",
+ "arriver",
+ "arroser",
+ "arsenic",
+ "artériel",
+ "article",
+ "aspect",
+ "asphalte",
+ "aspirer",
+ "assaut",
+ "asservir",
+ "assiette",
+ "associer",
+ "assurer",
+ "asticot",
+ "astre",
+ "astuce",
+ "atelier",
+ "atome",
+ "atrium",
+ "atroce",
+ "attaque",
+ "attentif",
+ "attirer",
+ "attraper",
+ "aubaine",
+ "auberge",
+ "audace",
+ "audible",
+ "augurer",
+ "aurore",
+ "automne",
+ "autruche",
+ "avaler",
+ "avancer",
+ "avarice",
+ "avenir",
+ "averse",
+ "aveugle",
+ "aviateur",
+ "avide",
+ "avion",
+ "aviser",
+ "avoine",
+ "avouer",
+ "avril",
+ "axial",
+ "axiome",
+ "badge",
+ "bafouer",
+ "bagage",
+ "baguette",
+ "baignade",
+ "balancer",
+ "balcon",
+ "baleine",
+ "balisage",
+ "bambin",
+ "bancaire",
+ "bandage",
+ "banlieue",
+ "bannière",
+ "banquier",
+ "barbier",
+ "baril",
+ "baron",
+ "barque",
+ "barrage",
+ "bassin",
+ "bastion",
+ "bataille",
+ "bateau",
+ "batterie",
+ "baudrier",
+ "bavarder",
+ "belette",
+ "bélier",
+ "belote",
+ "bénéfice",
+ "berceau",
+ "berger",
+ "berline",
+ "bermuda",
+ "besace",
+ "besogne",
+ "bétail",
+ "beurre",
+ "biberon",
+ "bicycle",
+ "bidule",
+ "bijou",
+ "bilan",
+ "bilingue",
+ "billard",
+ "binaire",
+ "biologie",
+ "biopsie",
+ "biotype",
+ "biscuit",
+ "bison",
+ "bistouri",
+ "bitume",
+ "bizarre",
+ "blafard",
+ "blague",
+ "blanchir",
+ "blessant",
+ "blinder",
+ "blond",
+ "bloquer",
+ "blouson",
+ "bobard",
+ "bobine",
+ "boire",
+ "boiser",
+ "bolide",
+ "bonbon",
+ "bondir",
+ "bonheur",
+ "bonifier",
+ "bonus",
+ "bordure",
+ "borne",
+ "botte",
+ "boucle",
+ "boueux",
+ "bougie",
+ "boulon",
+ "bouquin",
+ "bourse",
+ "boussole",
+ "boutique",
+ "boxeur",
+ "branche",
+ "brasier",
+ "brave",
+ "brebis",
+ "brèche",
+ "breuvage",
+ "bricoler",
+ "brigade",
+ "brillant",
+ "brioche",
+ "brique",
+ "brochure",
+ "broder",
+ "bronzer",
+ "brousse",
+ "broyeur",
+ "brume",
+ "brusque",
+ "brutal",
+ "bruyant",
+ "buffle",
+ "buisson",
+ "bulletin",
+ "bureau",
+ "burin",
+ "bustier",
+ "butiner",
+ "butoir",
+ "buvable",
+ "buvette",
+ "cabanon",
+ "cabine",
+ "cachette",
+ "cadeau",
+ "cadre",
+ "caféine",
+ "caillou",
+ "caisson",
+ "calculer",
+ "calepin",
+ "calibre",
+ "calmer",
+ "calomnie",
+ "calvaire",
+ "camarade",
+ "caméra",
+ "camion",
+ "campagne",
+ "canal",
+ "caneton",
+ "canon",
+ "cantine",
+ "canular",
+ "capable",
+ "caporal",
+ "caprice",
+ "capsule",
+ "capter",
+ "capuche",
+ "carabine",
+ "carbone",
+ "caresser",
+ "caribou",
+ "carnage",
+ "carotte",
+ "carreau",
+ "carton",
+ "cascade",
+ "casier",
+ "casque",
+ "cassure",
+ "causer",
+ "caution",
+ "cavalier",
+ "caverne",
+ "caviar",
+ "cédille",
+ "ceinture",
+ "céleste",
+ "cellule",
+ "cendrier",
+ "censurer",
+ "central",
+ "cercle",
+ "cérébral",
+ "cerise",
+ "cerner",
+ "cerveau",
+ "cesser",
+ "chagrin",
+ "chaise",
+ "chaleur",
+ "chambre",
+ "chance",
+ "chapitre",
+ "charbon",
+ "chasseur",
+ "chaton",
+ "chausson",
+ "chavirer",
+ "chemise",
+ "chenille",
+ "chéquier",
+ "chercher",
+ "cheval",
+ "chien",
+ "chiffre",
+ "chignon",
+ "chimère",
+ "chiot",
+ "chlorure",
+ "chocolat",
+ "choisir",
+ "chose",
+ "chouette",
+ "chrome",
+ "chute",
+ "cigare",
+ "cigogne",
+ "cimenter",
+ "cinéma",
+ "cintrer",
+ "circuler",
+ "cirer",
+ "cirque",
+ "citerne",
+ "citoyen",
+ "citron",
+ "civil",
+ "clairon",
+ "clameur",
+ "claquer",
+ "classe",
+ "clavier",
+ "client",
+ "cligner",
+ "climat",
+ "clivage",
+ "cloche",
+ "clonage",
+ "cloporte",
+ "cobalt",
+ "cobra",
+ "cocasse",
+ "cocotier",
+ "coder",
+ "codifier",
+ "coffre",
+ "cogner",
+ "cohésion",
+ "coiffer",
+ "coincer",
+ "colère",
+ "colibri",
+ "colline",
+ "colmater",
+ "colonel",
+ "combat",
+ "comédie",
+ "commande",
+ "compact",
+ "concert",
+ "conduire",
+ "confier",
+ "congeler",
+ "connoter",
+ "consonne",
+ "contact",
+ "convexe",
+ "copain",
+ "copie",
+ "corail",
+ "corbeau",
+ "cordage",
+ "corniche",
+ "corpus",
+ "correct",
+ "cortège",
+ "cosmique",
+ "costume",
+ "coton",
+ "coude",
+ "coupure",
+ "courage",
+ "couteau",
+ "couvrir",
+ "coyote",
+ "crabe",
+ "crainte",
+ "cravate",
+ "crayon",
+ "créature",
+ "créditer",
+ "crémeux",
+ "creuser",
+ "crevette",
+ "cribler",
+ "crier",
+ "cristal",
+ "critère",
+ "croire",
+ "croquer",
+ "crotale",
+ "crucial",
+ "cruel",
+ "crypter",
+ "cubique",
+ "cueillir",
+ "cuillère",
+ "cuisine",
+ "cuivre",
+ "culminer",
+ "cultiver",
+ "cumuler",
+ "cupide",
+ "curatif",
+ "curseur",
+ "cyanure",
+ "cycle",
+ "cylindre",
+ "cynique",
+ "daigner",
+ "damier",
+ "danger",
+ "danseur",
+ "dauphin",
+ "débattre",
+ "débiter",
+ "déborder",
+ "débrider",
+ "débutant",
+ "décaler",
+ "décembre",
+ "déchirer",
+ "décider",
+ "déclarer",
+ "décorer",
+ "décrire",
+ "décupler",
+ "dédale",
+ "déductif",
+ "déesse",
+ "défensif",
+ "défiler",
+ "défrayer",
+ "dégager",
+ "dégivrer",
+ "déglutir",
+ "dégrafer",
+ "déjeuner",
+ "délice",
+ "déloger",
+ "demander",
+ "demeurer",
+ "démolir",
+ "dénicher",
+ "dénouer",
+ "dentelle",
+ "dénuder",
+ "départ",
+ "dépenser",
+ "déphaser",
+ "déplacer",
+ "déposer",
+ "déranger",
+ "dérober",
+ "désastre",
+ "descente",
+ "désert",
+ "désigner",
+ "désobéir",
+ "dessiner",
+ "destrier",
+ "détacher",
+ "détester",
+ "détourer",
+ "détresse",
+ "devancer",
+ "devenir",
+ "deviner",
+ "devoir",
+ "diable",
+ "dialogue",
+ "diamant",
+ "dicter",
+ "différer",
+ "digérer",
+ "digital",
+ "digne",
+ "diluer",
+ "dimanche",
+ "diminuer",
+ "dioxyde",
+ "directif",
+ "diriger",
+ "discuter",
+ "disposer",
+ "dissiper",
+ "distance",
+ "divertir",
+ "diviser",
+ "docile",
+ "docteur",
+ "dogme",
+ "doigt",
+ "domaine",
+ "domicile",
+ "dompter",
+ "donateur",
+ "donjon",
+ "donner",
+ "dopamine",
+ "dortoir",
+ "dorure",
+ "dosage",
+ "doseur",
+ "dossier",
+ "dotation",
+ "douanier",
+ "double",
+ "douceur",
+ "douter",
+ "doyen",
+ "dragon",
+ "draper",
+ "dresser",
+ "dribbler",
+ "droiture",
+ "duperie",
+ "duplexe",
+ "durable",
+ "durcir",
+ "dynastie",
+ "éblouir",
+ "écarter",
+ "écharpe",
+ "échelle",
+ "éclairer",
+ "éclipse",
+ "éclore",
+ "écluse",
+ "école",
+ "économie",
+ "écorce",
+ "écouter",
+ "écraser",
+ "écrémer",
+ "écrivain",
+ "écrou",
+ "écume",
+ "écureuil",
+ "édifier",
+ "éduquer",
+ "effacer",
+ "effectif",
+ "effigie",
+ "effort",
+ "effrayer",
+ "effusion",
+ "égaliser",
+ "égarer",
+ "éjecter",
+ "élaborer",
+ "élargir",
+ "électron",
+ "élégant",
+ "éléphant",
+ "élève",
+ "éligible",
+ "élitisme",
+ "éloge",
+ "élucider",
+ "éluder",
+ "emballer",
+ "embellir",
+ "embryon",
+ "émeraude",
+ "émission",
+ "emmener",
+ "émotion",
+ "émouvoir",
+ "empereur",
+ "employer",
+ "emporter",
+ "emprise",
+ "émulsion",
+ "encadrer",
+ "enchère",
+ "enclave",
+ "encoche",
+ "endiguer",
+ "endosser",
+ "endroit",
+ "enduire",
+ "énergie",
+ "enfance",
+ "enfermer",
+ "enfouir",
+ "engager",
+ "engin",
+ "englober",
+ "énigme",
+ "enjamber",
+ "enjeu",
+ "enlever",
+ "ennemi",
+ "ennuyeux",
+ "enrichir",
+ "enrobage",
+ "enseigne",
+ "entasser",
+ "entendre",
+ "entier",
+ "entourer",
+ "entraver",
+ "énumérer",
+ "envahir",
+ "enviable",
+ "envoyer",
+ "enzyme",
+ "éolien",
+ "épaissir",
+ "épargne",
+ "épatant",
+ "épaule",
+ "épicerie",
+ "épidémie",
+ "épier",
+ "épilogue",
+ "épine",
+ "épisode",
+ "épitaphe",
+ "époque",
+ "épreuve",
+ "éprouver",
+ "épuisant",
+ "équerre",
+ "équipe",
+ "ériger",
+ "érosion",
+ "erreur",
+ "éruption",
+ "escalier",
+ "espadon",
+ "espèce",
+ "espiègle",
+ "espoir",
+ "esprit",
+ "esquiver",
+ "essayer",
+ "essence",
+ "essieu",
+ "essorer",
+ "estime",
+ "estomac",
+ "estrade",
+ "étagère",
+ "étaler",
+ "étanche",
+ "étatique",
+ "éteindre",
+ "étendoir",
+ "éternel",
+ "éthanol",
+ "éthique",
+ "ethnie",
+ "étirer",
+ "étoffer",
+ "étoile",
+ "étonnant",
+ "étourdir",
+ "étrange",
+ "étroit",
+ "étude",
+ "euphorie",
+ "évaluer",
+ "évasion",
+ "éventail",
+ "évidence",
+ "éviter",
+ "évolutif",
+ "évoquer",
+ "exact",
+ "exagérer",
+ "exaucer",
+ "exceller",
+ "excitant",
+ "exclusif",
+ "excuse",
+ "exécuter",
+ "exemple",
+ "exercer",
+ "exhaler",
+ "exhorter",
+ "exigence",
+ "exiler",
+ "exister",
+ "exotique",
+ "expédier",
+ "explorer",
+ "exposer",
+ "exprimer",
+ "exquis",
+ "extensif",
+ "extraire",
+ "exulter",
+ "fable",
+ "fabuleux",
+ "facette",
+ "facile",
+ "facture",
+ "faiblir",
+ "falaise",
+ "fameux",
+ "famille",
+ "farceur",
+ "farfelu",
+ "farine",
+ "farouche",
+ "fasciner",
+ "fatal",
+ "fatigue",
+ "faucon",
+ "fautif",
+ "faveur",
+ "favori",
+ "fébrile",
+ "féconder",
+ "fédérer",
+ "félin",
+ "femme",
+ "fémur",
+ "fendoir",
+ "féodal",
+ "fermer",
+ "féroce",
+ "ferveur",
+ "festival",
+ "feuille",
+ "feutre",
+ "février",
+ "fiasco",
+ "ficeler",
+ "fictif",
+ "fidèle",
+ "figure",
+ "filature",
+ "filetage",
+ "filière",
+ "filleul",
+ "filmer",
+ "filou",
+ "filtrer",
+ "financer",
+ "finir",
+ "fiole",
+ "firme",
+ "fissure",
+ "fixer",
+ "flairer",
+ "flamme",
+ "flasque",
+ "flatteur",
+ "fléau",
+ "flèche",
+ "fleur",
+ "flexion",
+ "flocon",
+ "flore",
+ "fluctuer",
+ "fluide",
+ "fluvial",
+ "folie",
+ "fonderie",
+ "fongible",
+ "fontaine",
+ "forcer",
+ "forgeron",
+ "formuler",
+ "fortune",
+ "fossile",
+ "foudre",
+ "fougère",
+ "fouiller",
+ "foulure",
+ "fourmi",
+ "fragile",
+ "fraise",
+ "franchir",
+ "frapper",
+ "frayeur",
+ "frégate",
+ "freiner",
+ "frelon",
+ "frémir",
+ "frénésie",
+ "frère",
+ "friable",
+ "friction",
+ "frisson",
+ "frivole",
+ "froid",
+ "fromage",
+ "frontal",
+ "frotter",
+ "fruit",
+ "fugitif",
+ "fuite",
+ "fureur",
+ "furieux",
+ "furtif",
+ "fusion",
+ "futur",
+ "gagner",
+ "galaxie",
+ "galerie",
+ "gambader",
+ "garantir",
+ "gardien",
+ "garnir",
+ "garrigue",
+ "gazelle",
+ "gazon",
+ "géant",
+ "gélatine",
+ "gélule",
+ "gendarme",
+ "général",
+ "génie",
+ "genou",
+ "gentil",
+ "géologie",
+ "géomètre",
+ "géranium",
+ "germe",
+ "gestuel",
+ "geyser",
+ "gibier",
+ "gicler",
+ "girafe",
+ "givre",
+ "glace",
+ "glaive",
+ "glisser",
+ "globe",
+ "gloire",
+ "glorieux",
+ "golfeur",
+ "gomme",
+ "gonfler",
+ "gorge",
+ "gorille",
+ "goudron",
+ "gouffre",
+ "goulot",
+ "goupille",
+ "gourmand",
+ "goutte",
+ "graduel",
+ "graffiti",
+ "graine",
+ "grand",
+ "grappin",
+ "gratuit",
+ "gravir",
+ "grenat",
+ "griffure",
+ "griller",
+ "grimper",
+ "grogner",
+ "gronder",
+ "grotte",
+ "groupe",
+ "gruger",
+ "grutier",
+ "gruyère",
+ "guépard",
+ "guerrier",
+ "guide",
+ "guimauve",
+ "guitare",
+ "gustatif",
+ "gymnaste",
+ "gyrostat",
+ "habitude",
+ "hachoir",
+ "halte",
+ "hameau",
+ "hangar",
+ "hanneton",
+ "haricot",
+ "harmonie",
+ "harpon",
+ "hasard",
+ "hélium",
+ "hématome",
+ "herbe",
+ "hérisson",
+ "hermine",
+ "héron",
+ "hésiter",
+ "heureux",
+ "hiberner",
+ "hibou",
+ "hilarant",
+ "histoire",
+ "hiver",
+ "homard",
+ "hommage",
+ "homogène",
+ "honneur",
+ "honorer",
+ "honteux",
+ "horde",
+ "horizon",
+ "horloge",
+ "hormone",
+ "horrible",
+ "houleux",
+ "housse",
+ "hublot",
+ "huileux",
+ "humain",
+ "humble",
+ "humide",
+ "humour",
+ "hurler",
+ "hydromel",
+ "hygiène",
+ "hymne",
+ "hypnose",
+ "idylle",
+ "ignorer",
+ "iguane",
+ "illicite",
+ "illusion",
+ "image",
+ "imbiber",
+ "imiter",
+ "immense",
+ "immobile",
+ "immuable",
+ "impact",
+ "impérial",
+ "implorer",
+ "imposer",
+ "imprimer",
+ "imputer",
+ "incarner",
+ "incendie",
+ "incident",
+ "incliner",
+ "incolore",
+ "indexer",
+ "indice",
+ "inductif",
+ "inédit",
+ "ineptie",
+ "inexact",
+ "infini",
+ "infliger",
+ "informer",
+ "infusion",
+ "ingérer",
+ "inhaler",
+ "inhiber",
+ "injecter",
+ "injure",
+ "innocent",
+ "inoculer",
+ "inonder",
+ "inscrire",
+ "insecte",
+ "insigne",
+ "insolite",
+ "inspirer",
+ "instinct",
+ "insulter",
+ "intact",
+ "intense",
+ "intime",
+ "intrigue",
+ "intuitif",
+ "inutile",
+ "invasion",
+ "inventer",
+ "inviter",
+ "invoquer",
+ "ironique",
+ "irradier",
+ "irréel",
+ "irriter",
+ "isoler",
+ "ivoire",
+ "ivresse",
+ "jaguar",
+ "jaillir",
+ "jambe",
+ "janvier",
+ "jardin",
+ "jauger",
+ "jaune",
+ "javelot",
+ "jetable",
+ "jeton",
+ "jeudi",
+ "jeunesse",
+ "joindre",
+ "joncher",
+ "jongler",
+ "joueur",
+ "jouissif",
+ "journal",
+ "jovial",
+ "joyau",
+ "joyeux",
+ "jubiler",
+ "jugement",
+ "junior",
+ "jupon",
+ "juriste",
+ "justice",
+ "juteux",
+ "juvénile",
+ "kayak",
+ "kimono",
+ "kiosque",
+ "label",
+ "labial",
+ "labourer",
+ "lacérer",
+ "lactose",
+ "lagune",
+ "laine",
+ "laisser",
+ "laitier",
+ "lambeau",
+ "lamelle",
+ "lampe",
+ "lanceur",
+ "langage",
+ "lanterne",
+ "lapin",
+ "largeur",
+ "larme",
+ "laurier",
+ "lavabo",
+ "lavoir",
+ "lecture",
+ "légal",
+ "léger",
+ "légume",
+ "lessive",
+ "lettre",
+ "levier",
+ "lexique",
+ "lézard",
+ "liasse",
+ "libérer",
+ "libre",
+ "licence",
+ "licorne",
+ "liège",
+ "lièvre",
+ "ligature",
+ "ligoter",
+ "ligue",
+ "limer",
+ "limite",
+ "limonade",
+ "limpide",
+ "linéaire",
+ "lingot",
+ "lionceau",
+ "liquide",
+ "lisière",
+ "lister",
+ "lithium",
+ "litige",
+ "littoral",
+ "livreur",
+ "logique",
+ "lointain",
+ "loisir",
+ "lombric",
+ "loterie",
+ "louer",
+ "lourd",
+ "loutre",
+ "louve",
+ "loyal",
+ "lubie",
+ "lucide",
+ "lucratif",
+ "lueur",
+ "lugubre",
+ "luisant",
+ "lumière",
+ "lunaire",
+ "lundi",
+ "luron",
+ "lutter",
+ "luxueux",
+ "machine",
+ "magasin",
+ "magenta",
+ "magique",
+ "maigre",
+ "maillon",
+ "maintien",
+ "mairie",
+ "maison",
+ "majorer",
+ "malaxer",
+ "maléfice",
+ "malheur",
+ "malice",
+ "mallette",
+ "mammouth",
+ "mandater",
+ "maniable",
+ "manquant",
+ "manteau",
+ "manuel",
+ "marathon",
+ "marbre",
+ "marchand",
+ "mardi",
+ "maritime",
+ "marqueur",
+ "marron",
+ "marteler",
+ "mascotte",
+ "massif",
+ "matériel",
+ "matière",
+ "matraque",
+ "maudire",
+ "maussade",
+ "mauve",
+ "maximal",
+ "méchant",
+ "méconnu",
+ "médaille",
+ "médecin",
+ "méditer",
+ "méduse",
+ "meilleur",
+ "mélange",
+ "mélodie",
+ "membre",
+ "mémoire",
+ "menacer",
+ "mener",
+ "menhir",
+ "mensonge",
+ "mentor",
+ "mercredi",
+ "mérite",
+ "merle",
+ "messager",
+ "mesure",
+ "métal",
+ "météore",
+ "méthode",
+ "métier",
+ "meuble",
+ "miauler",
+ "microbe",
+ "miette",
+ "mignon",
+ "migrer",
+ "milieu",
+ "million",
+ "mimique",
+ "mince",
+ "minéral",
+ "minimal",
+ "minorer",
+ "minute",
+ "miracle",
+ "miroiter",
+ "missile",
+ "mixte",
+ "mobile",
+ "moderne",
+ "moelleux",
+ "mondial",
+ "moniteur",
+ "monnaie",
+ "monotone",
+ "monstre",
+ "montagne",
+ "monument",
+ "moqueur",
+ "morceau",
+ "morsure",
+ "mortier",
+ "moteur",
+ "motif",
+ "mouche",
+ "moufle",
+ "moulin",
+ "mousson",
+ "mouton",
+ "mouvant",
+ "multiple",
+ "munition",
+ "muraille",
+ "murène",
+ "murmure",
+ "muscle",
+ "muséum",
+ "musicien",
+ "mutation",
+ "muter",
+ "mutuel",
+ "myriade",
+ "myrtille",
+ "mystère",
+ "mythique",
+ "nageur",
+ "nappe",
+ "narquois",
+ "narrer",
+ "natation",
+ "nation",
+ "nature",
+ "naufrage",
+ "nautique",
+ "navire",
+ "nébuleux",
+ "nectar",
+ "néfaste",
+ "négation",
+ "négliger",
+ "négocier",
+ "neige",
+ "nerveux",
+ "nettoyer",
+ "neurone",
+ "neutron",
+ "neveu",
+ "niche",
+ "nickel",
+ "nitrate",
+ "niveau",
+ "noble",
+ "nocif",
+ "nocturne",
+ "noirceur",
+ "noisette",
+ "nomade",
+ "nombreux",
+ "nommer",
+ "normatif",
+ "notable",
+ "notifier",
+ "notoire",
+ "nourrir",
+ "nouveau",
+ "novateur",
+ "novembre",
+ "novice",
+ "nuage",
+ "nuancer",
+ "nuire",
+ "nuisible",
+ "numéro",
+ "nuptial",
+ "nuque",
+ "nutritif",
+ "obéir",
+ "objectif",
+ "obliger",
+ "obscur",
+ "observer",
+ "obstacle",
+ "obtenir",
+ "obturer",
+ "occasion",
+ "occuper",
+ "océan",
+ "octobre",
+ "octroyer",
+ "octupler",
+ "oculaire",
+ "odeur",
+ "odorant",
+ "offenser",
+ "officier",
+ "offrir",
+ "ogive",
+ "oiseau",
+ "oisillon",
+ "olfactif",
+ "olivier",
+ "ombrage",
+ "omettre",
+ "onctueux",
+ "onduler",
+ "onéreux",
+ "onirique",
+ "opale",
+ "opaque",
+ "opérer",
+ "opinion",
+ "opportun",
+ "opprimer",
+ "opter",
+ "optique",
+ "orageux",
+ "orange",
+ "orbite",
+ "ordonner",
+ "oreille",
+ "organe",
+ "orgueil",
+ "orifice",
+ "ornement",
+ "orque",
+ "ortie",
+ "osciller",
+ "osmose",
+ "ossature",
+ "otarie",
+ "ouragan",
+ "ourson",
+ "outil",
+ "outrager",
+ "ouvrage",
+ "ovation",
+ "oxyde",
+ "oxygène",
+ "ozone",
+ "paisible",
+ "palace",
+ "palmarès",
+ "palourde",
+ "palper",
+ "panache",
+ "panda",
+ "pangolin",
+ "paniquer",
+ "panneau",
+ "panorama",
+ "pantalon",
+ "papaye",
+ "papier",
+ "papoter",
+ "papyrus",
+ "paradoxe",
+ "parcelle",
+ "paresse",
+ "parfumer",
+ "parler",
+ "parole",
+ "parrain",
+ "parsemer",
+ "partager",
+ "parure",
+ "parvenir",
+ "passion",
+ "pastèque",
+ "paternel",
+ "patience",
+ "patron",
+ "pavillon",
+ "pavoiser",
+ "payer",
+ "paysage",
+ "peigne",
+ "peintre",
+ "pelage",
+ "pélican",
+ "pelle",
+ "pelouse",
+ "peluche",
+ "pendule",
+ "pénétrer",
+ "pénible",
+ "pensif",
+ "pénurie",
+ "pépite",
+ "péplum",
+ "perdrix",
+ "perforer",
+ "période",
+ "permuter",
+ "perplexe",
+ "persil",
+ "perte",
+ "peser",
+ "pétale",
+ "petit",
+ "pétrir",
+ "peuple",
+ "pharaon",
+ "phobie",
+ "phoque",
+ "photon",
+ "phrase",
+ "physique",
+ "piano",
+ "pictural",
+ "pièce",
+ "pierre",
+ "pieuvre",
+ "pilote",
+ "pinceau",
+ "pipette",
+ "piquer",
+ "pirogue",
+ "piscine",
+ "piston",
+ "pivoter",
+ "pixel",
+ "pizza",
+ "placard",
+ "plafond",
+ "plaisir",
+ "planer",
+ "plaque",
+ "plastron",
+ "plateau",
+ "pleurer",
+ "plexus",
+ "pliage",
+ "plomb",
+ "plonger",
+ "pluie",
+ "plumage",
+ "pochette",
+ "poésie",
+ "poète",
+ "pointe",
+ "poirier",
+ "poisson",
+ "poivre",
+ "polaire",
+ "policier",
+ "pollen",
+ "polygone",
+ "pommade",
+ "pompier",
+ "ponctuel",
+ "pondérer",
+ "poney",
+ "portique",
+ "position",
+ "posséder",
+ "posture",
+ "potager",
+ "poteau",
+ "potion",
+ "pouce",
+ "poulain",
+ "poumon",
+ "pourpre",
+ "poussin",
+ "pouvoir",
+ "prairie",
+ "pratique",
+ "précieux",
+ "prédire",
+ "préfixe",
+ "prélude",
+ "prénom",
+ "présence",
+ "prétexte",
+ "prévoir",
+ "primitif",
+ "prince",
+ "prison",
+ "priver",
+ "problème",
+ "procéder",
+ "prodige",
+ "profond",
+ "progrès",
+ "proie",
+ "projeter",
+ "prologue",
+ "promener",
+ "propre",
+ "prospère",
+ "protéger",
+ "prouesse",
+ "proverbe",
+ "prudence",
+ "pruneau",
+ "psychose",
+ "public",
+ "puceron",
+ "puiser",
+ "pulpe",
+ "pulsar",
+ "punaise",
+ "punitif",
+ "pupitre",
+ "purifier",
+ "puzzle",
+ "pyramide",
+ "quasar",
+ "querelle",
+ "question",
+ "quiétude",
+ "quitter",
+ "quotient",
+ "racine",
+ "raconter",
+ "radieux",
+ "ragondin",
+ "raideur",
+ "raisin",
+ "ralentir",
+ "rallonge",
+ "ramasser",
+ "rapide",
+ "rasage",
+ "ratisser",
+ "ravager",
+ "ravin",
+ "rayonner",
+ "réactif",
+ "réagir",
+ "réaliser",
+ "réanimer",
+ "recevoir",
+ "réciter",
+ "réclamer",
+ "récolter",
+ "recruter",
+ "reculer",
+ "recycler",
+ "rédiger",
+ "redouter",
+ "refaire",
+ "réflexe",
+ "réformer",
+ "refrain",
+ "refuge",
+ "régalien",
+ "région",
+ "réglage",
+ "régulier",
+ "réitérer",
+ "rejeter",
+ "rejouer",
+ "relatif",
+ "relever",
+ "relief",
+ "remarque",
+ "remède",
+ "remise",
+ "remonter",
+ "remplir",
+ "remuer",
+ "renard",
+ "renfort",
+ "renifler",
+ "renoncer",
+ "rentrer",
+ "renvoi",
+ "replier",
+ "reporter",
+ "reprise",
+ "reptile",
+ "requin",
+ "réserve",
+ "résineux",
+ "résoudre",
+ "respect",
+ "rester",
+ "résultat",
+ "rétablir",
+ "retenir",
+ "réticule",
+ "retomber",
+ "retracer",
+ "réunion",
+ "réussir",
+ "revanche",
+ "revivre",
+ "révolte",
+ "révulsif",
+ "richesse",
+ "rideau",
+ "rieur",
+ "rigide",
+ "rigoler",
+ "rincer",
+ "riposter",
+ "risible",
+ "risque",
+ "rituel",
+ "rival",
+ "rivière",
+ "rocheux",
+ "romance",
+ "rompre",
+ "ronce",
+ "rondin",
+ "roseau",
+ "rosier",
+ "rotatif",
+ "rotor",
+ "rotule",
+ "rouge",
+ "rouille",
+ "rouleau",
+ "routine",
+ "royaume",
+ "ruban",
+ "rubis",
+ "ruche",
+ "ruelle",
+ "rugueux",
+ "ruiner",
+ "ruisseau",
+ "ruser",
+ "rustique",
+ "rythme",
+ "sabler",
+ "saboter",
+ "sabre",
+ "sacoche",
+ "safari",
+ "sagesse",
+ "saisir",
+ "salade",
+ "salive",
+ "salon",
+ "saluer",
+ "samedi",
+ "sanction",
+ "sanglier",
+ "sarcasme",
+ "sardine",
+ "saturer",
+ "saugrenu",
+ "saumon",
+ "sauter",
+ "sauvage",
+ "savant",
+ "savonner",
+ "scalpel",
+ "scandale",
+ "scélérat",
+ "scénario",
+ "sceptre",
+ "schéma",
+ "science",
+ "scinder",
+ "score",
+ "scrutin",
+ "sculpter",
+ "séance",
+ "sécable",
+ "sécher",
+ "secouer",
+ "sécréter",
+ "sédatif",
+ "séduire",
+ "seigneur",
+ "séjour",
+ "sélectif",
+ "semaine",
+ "sembler",
+ "semence",
+ "séminal",
+ "sénateur",
+ "sensible",
+ "sentence",
+ "séparer",
+ "séquence",
+ "serein",
+ "sergent",
+ "sérieux",
+ "serrure",
+ "sérum",
+ "service",
+ "sésame",
+ "sévir",
+ "sevrage",
+ "sextuple",
+ "sidéral",
+ "siècle",
+ "siéger",
+ "siffler",
+ "sigle",
+ "signal",
+ "silence",
+ "silicium",
+ "simple",
+ "sincère",
+ "sinistre",
+ "siphon",
+ "sirop",
+ "sismique",
+ "situer",
+ "skier",
+ "social",
+ "socle",
+ "sodium",
+ "soigneux",
+ "soldat",
+ "soleil",
+ "solitude",
+ "soluble",
+ "sombre",
+ "sommeil",
+ "somnoler",
+ "sonde",
+ "songeur",
+ "sonnette",
+ "sonore",
+ "sorcier",
+ "sortir",
+ "sosie",
+ "sottise",
+ "soucieux",
+ "soudure",
+ "souffle",
+ "soulever",
+ "soupape",
+ "source",
+ "soutirer",
+ "souvenir",
+ "spacieux",
+ "spatial",
+ "spécial",
+ "sphère",
+ "spiral",
+ "stable",
+ "station",
+ "sternum",
+ "stimulus",
+ "stipuler",
+ "strict",
+ "studieux",
+ "stupeur",
+ "styliste",
+ "sublime",
+ "substrat",
+ "subtil",
+ "subvenir",
+ "succès",
+ "sucre",
+ "suffixe",
+ "suggérer",
+ "suiveur",
+ "sulfate",
+ "superbe",
+ "supplier",
+ "surface",
+ "suricate",
+ "surmener",
+ "surprise",
+ "sursaut",
+ "survie",
+ "suspect",
+ "syllabe",
+ "symbole",
+ "symétrie",
+ "synapse",
+ "syntaxe",
+ "système",
+ "tabac",
+ "tablier",
+ "tactile",
+ "tailler",
+ "talent",
+ "talisman",
+ "talonner",
+ "tambour",
+ "tamiser",
+ "tangible",
+ "tapis",
+ "taquiner",
+ "tarder",
+ "tarif",
+ "tartine",
+ "tasse",
+ "tatami",
+ "tatouage",
+ "taupe",
+ "taureau",
+ "taxer",
+ "témoin",
+ "temporel",
+ "tenaille",
+ "tendre",
+ "teneur",
+ "tenir",
+ "tension",
+ "terminer",
+ "terne",
+ "terrible",
+ "tétine",
+ "texte",
+ "thème",
+ "théorie",
+ "thérapie",
+ "thorax",
+ "tibia",
+ "tiède",
+ "timide",
+ "tirelire",
+ "tiroir",
+ "tissu",
+ "titane",
+ "titre",
+ "tituber",
+ "toboggan",
+ "tolérant",
+ "tomate",
+ "tonique",
+ "tonneau",
+ "toponyme",
+ "torche",
+ "tordre",
+ "tornade",
+ "torpille",
+ "torrent",
+ "torse",
+ "tortue",
+ "totem",
+ "toucher",
+ "tournage",
+ "tousser",
+ "toxine",
+ "traction",
+ "trafic",
+ "tragique",
+ "trahir",
+ "train",
+ "trancher",
+ "travail",
+ "trèfle",
+ "tremper",
+ "trésor",
+ "treuil",
+ "triage",
+ "tribunal",
+ "tricoter",
+ "trilogie",
+ "triomphe",
+ "tripler",
+ "triturer",
+ "trivial",
+ "trombone",
+ "tronc",
+ "tropical",
+ "troupeau",
+ "tuile",
+ "tulipe",
+ "tumulte",
+ "tunnel",
+ "turbine",
+ "tuteur",
+ "tutoyer",
+ "tuyau",
+ "tympan",
+ "typhon",
+ "typique",
+ "tyran",
+ "ubuesque",
+ "ultime",
+ "ultrason",
+ "unanime",
+ "unifier",
+ "union",
+ "unique",
+ "unitaire",
+ "univers",
+ "uranium",
+ "urbain",
+ "urticant",
+ "usage",
+ "usine",
+ "usuel",
+ "usure",
+ "utile",
+ "utopie",
+ "vacarme",
+ "vaccin",
+ "vagabond",
+ "vague",
+ "vaillant",
+ "vaincre",
+ "vaisseau",
+ "valable",
+ "valise",
+ "vallon",
+ "valve",
+ "vampire",
+ "vanille",
+ "vapeur",
+ "varier",
+ "vaseux",
+ "vassal",
+ "vaste",
+ "vecteur",
+ "vedette",
+ "végétal",
+ "véhicule",
+ "veinard",
+ "véloce",
+ "vendredi",
+ "vénérer",
+ "venger",
+ "venimeux",
+ "ventouse",
+ "verdure",
+ "vérin",
+ "vernir",
+ "verrou",
+ "verser",
+ "vertu",
+ "veston",
+ "vétéran",
+ "vétuste",
+ "vexant",
+ "vexer",
+ "viaduc",
+ "viande",
+ "victoire",
+ "vidange",
+ "vidéo",
+ "vignette",
+ "vigueur",
+ "vilain",
+ "village",
+ "vinaigre",
+ "violon",
+ "vipère",
+ "virement",
+ "virtuose",
+ "virus",
+ "visage",
+ "viseur",
+ "vision",
+ "visqueux",
+ "visuel",
+ "vital",
+ "vitesse",
+ "viticole",
+ "vitrine",
+ "vivace",
+ "vivipare",
+ "vocation",
+ "voguer",
+ "voile",
+ "voisin",
+ "voiture",
+ "volaille",
+ "volcan",
+ "voltiger",
+ "volume",
+ "vorace",
+ "vortex",
+ "voter",
+ "vouloir",
+ "voyage",
+ "voyelle",
+ "wagon",
+ "xénon",
+ "yacht",
+ "zèbre",
+ "zénith",
+ "zeste",
+ "zoologie"
+ };
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/wordlists/Japanese.java b/app/src/main/java/io/github/novacrypto/bip39/wordlists/Japanese.java
new file mode 100644
index 0000000000..d6e75ac47a
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/wordlists/Japanese.java
@@ -0,0 +1,2092 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39.wordlists;
+
+import io.github.novacrypto.bip39.WordList;
+
+/**
+ * Source: https://github.com/bitcoin/bips/blob/master/bip-0039/japanese.txt
+ */
+public enum Japanese implements WordList {
+ INSTANCE;
+
+ @Override
+ public String getWord(final int index) {
+ return words[index];
+ }
+
+ @Override
+ public char getSpace() {
+ return '\u3000'; //IDEOGRAPHIC SPACE
+ }
+
+ private final static String[] words = new String[]{
+ "あいこくしん",
+ "あいさつ",
+ "あいだ",
+ "あおぞら",
+ "あかちゃん",
+ "あきる",
+ "あけがた",
+ "あける",
+ "あこがれる",
+ "あさい",
+ "あさひ",
+ "あしあと",
+ "あじわう",
+ "あずかる",
+ "あずき",
+ "あそぶ",
+ "あたえる",
+ "あたためる",
+ "あたりまえ",
+ "あたる",
+ "あつい",
+ "あつかう",
+ "あっしゅく",
+ "あつまり",
+ "あつめる",
+ "あてな",
+ "あてはまる",
+ "あひる",
+ "あぶら",
+ "あぶる",
+ "あふれる",
+ "あまい",
+ "あまど",
+ "あまやかす",
+ "あまり",
+ "あみもの",
+ "あめりか",
+ "あやまる",
+ "あゆむ",
+ "あらいぐま",
+ "あらし",
+ "あらすじ",
+ "あらためる",
+ "あらゆる",
+ "あらわす",
+ "ありがとう",
+ "あわせる",
+ "あわてる",
+ "あんい",
+ "あんがい",
+ "あんこ",
+ "あんぜん",
+ "あんてい",
+ "あんない",
+ "あんまり",
+ "いいだす",
+ "いおん",
+ "いがい",
+ "いがく",
+ "いきおい",
+ "いきなり",
+ "いきもの",
+ "いきる",
+ "いくじ",
+ "いくぶん",
+ "いけばな",
+ "いけん",
+ "いこう",
+ "いこく",
+ "いこつ",
+ "いさましい",
+ "いさん",
+ "いしき",
+ "いじゅう",
+ "いじょう",
+ "いじわる",
+ "いずみ",
+ "いずれ",
+ "いせい",
+ "いせえび",
+ "いせかい",
+ "いせき",
+ "いぜん",
+ "いそうろう",
+ "いそがしい",
+ "いだい",
+ "いだく",
+ "いたずら",
+ "いたみ",
+ "いたりあ",
+ "いちおう",
+ "いちじ",
+ "いちど",
+ "いちば",
+ "いちぶ",
+ "いちりゅう",
+ "いつか",
+ "いっしゅん",
+ "いっせい",
+ "いっそう",
+ "いったん",
+ "いっち",
+ "いってい",
+ "いっぽう",
+ "いてざ",
+ "いてん",
+ "いどう",
+ "いとこ",
+ "いない",
+ "いなか",
+ "いねむり",
+ "いのち",
+ "いのる",
+ "いはつ",
+ "いばる",
+ "いはん",
+ "いびき",
+ "いひん",
+ "いふく",
+ "いへん",
+ "いほう",
+ "いみん",
+ "いもうと",
+ "いもたれ",
+ "いもり",
+ "いやがる",
+ "いやす",
+ "いよかん",
+ "いよく",
+ "いらい",
+ "いらすと",
+ "いりぐち",
+ "いりょう",
+ "いれい",
+ "いれもの",
+ "いれる",
+ "いろえんぴつ",
+ "いわい",
+ "いわう",
+ "いわかん",
+ "いわば",
+ "いわゆる",
+ "いんげんまめ",
+ "いんさつ",
+ "いんしょう",
+ "いんよう",
+ "うえき",
+ "うえる",
+ "うおざ",
+ "うがい",
+ "うかぶ",
+ "うかべる",
+ "うきわ",
+ "うくらいな",
+ "うくれれ",
+ "うけたまわる",
+ "うけつけ",
+ "うけとる",
+ "うけもつ",
+ "うける",
+ "うごかす",
+ "うごく",
+ "うこん",
+ "うさぎ",
+ "うしなう",
+ "うしろがみ",
+ "うすい",
+ "うすぎ",
+ "うすぐらい",
+ "うすめる",
+ "うせつ",
+ "うちあわせ",
+ "うちがわ",
+ "うちき",
+ "うちゅう",
+ "うっかり",
+ "うつくしい",
+ "うったえる",
+ "うつる",
+ "うどん",
+ "うなぎ",
+ "うなじ",
+ "うなずく",
+ "うなる",
+ "うねる",
+ "うのう",
+ "うぶげ",
+ "うぶごえ",
+ "うまれる",
+ "うめる",
+ "うもう",
+ "うやまう",
+ "うよく",
+ "うらがえす",
+ "うらぐち",
+ "うらない",
+ "うりあげ",
+ "うりきれ",
+ "うるさい",
+ "うれしい",
+ "うれゆき",
+ "うれる",
+ "うろこ",
+ "うわき",
+ "うわさ",
+ "うんこう",
+ "うんちん",
+ "うんてん",
+ "うんどう",
+ "えいえん",
+ "えいが",
+ "えいきょう",
+ "えいご",
+ "えいせい",
+ "えいぶん",
+ "えいよう",
+ "えいわ",
+ "えおり",
+ "えがお",
+ "えがく",
+ "えきたい",
+ "えくせる",
+ "えしゃく",
+ "えすて",
+ "えつらん",
+ "えのぐ",
+ "えほうまき",
+ "えほん",
+ "えまき",
+ "えもじ",
+ "えもの",
+ "えらい",
+ "えらぶ",
+ "えりあ",
+ "えんえん",
+ "えんかい",
+ "えんぎ",
+ "えんげき",
+ "えんしゅう",
+ "えんぜつ",
+ "えんそく",
+ "えんちょう",
+ "えんとつ",
+ "おいかける",
+ "おいこす",
+ "おいしい",
+ "おいつく",
+ "おうえん",
+ "おうさま",
+ "おうじ",
+ "おうせつ",
+ "おうたい",
+ "おうふく",
+ "おうべい",
+ "おうよう",
+ "おえる",
+ "おおい",
+ "おおう",
+ "おおどおり",
+ "おおや",
+ "おおよそ",
+ "おかえり",
+ "おかず",
+ "おがむ",
+ "おかわり",
+ "おぎなう",
+ "おきる",
+ "おくさま",
+ "おくじょう",
+ "おくりがな",
+ "おくる",
+ "おくれる",
+ "おこす",
+ "おこなう",
+ "おこる",
+ "おさえる",
+ "おさない",
+ "おさめる",
+ "おしいれ",
+ "おしえる",
+ "おじぎ",
+ "おじさん",
+ "おしゃれ",
+ "おそらく",
+ "おそわる",
+ "おたがい",
+ "おたく",
+ "おだやか",
+ "おちつく",
+ "おっと",
+ "おつり",
+ "おでかけ",
+ "おとしもの",
+ "おとなしい",
+ "おどり",
+ "おどろかす",
+ "おばさん",
+ "おまいり",
+ "おめでとう",
+ "おもいで",
+ "おもう",
+ "おもたい",
+ "おもちゃ",
+ "おやつ",
+ "おやゆび",
+ "およぼす",
+ "おらんだ",
+ "おろす",
+ "おんがく",
+ "おんけい",
+ "おんしゃ",
+ "おんせん",
+ "おんだん",
+ "おんちゅう",
+ "おんどけい",
+ "かあつ",
+ "かいが",
+ "がいき",
+ "がいけん",
+ "がいこう",
+ "かいさつ",
+ "かいしゃ",
+ "かいすいよく",
+ "かいぜん",
+ "かいぞうど",
+ "かいつう",
+ "かいてん",
+ "かいとう",
+ "かいふく",
+ "がいへき",
+ "かいほう",
+ "かいよう",
+ "がいらい",
+ "かいわ",
+ "かえる",
+ "かおり",
+ "かかえる",
+ "かがく",
+ "かがし",
+ "かがみ",
+ "かくご",
+ "かくとく",
+ "かざる",
+ "がぞう",
+ "かたい",
+ "かたち",
+ "がちょう",
+ "がっきゅう",
+ "がっこう",
+ "がっさん",
+ "がっしょう",
+ "かなざわし",
+ "かのう",
+ "がはく",
+ "かぶか",
+ "かほう",
+ "かほご",
+ "かまう",
+ "かまぼこ",
+ "かめれおん",
+ "かゆい",
+ "かようび",
+ "からい",
+ "かるい",
+ "かろう",
+ "かわく",
+ "かわら",
+ "がんか",
+ "かんけい",
+ "かんこう",
+ "かんしゃ",
+ "かんそう",
+ "かんたん",
+ "かんち",
+ "がんばる",
+ "きあい",
+ "きあつ",
+ "きいろ",
+ "ぎいん",
+ "きうい",
+ "きうん",
+ "きえる",
+ "きおう",
+ "きおく",
+ "きおち",
+ "きおん",
+ "きかい",
+ "きかく",
+ "きかんしゃ",
+ "ききて",
+ "きくばり",
+ "きくらげ",
+ "きけんせい",
+ "きこう",
+ "きこえる",
+ "きこく",
+ "きさい",
+ "きさく",
+ "きさま",
+ "きさらぎ",
+ "ぎじかがく",
+ "ぎしき",
+ "ぎじたいけん",
+ "ぎじにってい",
+ "ぎじゅつしゃ",
+ "きすう",
+ "きせい",
+ "きせき",
+ "きせつ",
+ "きそう",
+ "きぞく",
+ "きぞん",
+ "きたえる",
+ "きちょう",
+ "きつえん",
+ "ぎっちり",
+ "きつつき",
+ "きつね",
+ "きてい",
+ "きどう",
+ "きどく",
+ "きない",
+ "きなが",
+ "きなこ",
+ "きぬごし",
+ "きねん",
+ "きのう",
+ "きのした",
+ "きはく",
+ "きびしい",
+ "きひん",
+ "きふく",
+ "きぶん",
+ "きぼう",
+ "きほん",
+ "きまる",
+ "きみつ",
+ "きむずかしい",
+ "きめる",
+ "きもだめし",
+ "きもち",
+ "きもの",
+ "きゃく",
+ "きやく",
+ "ぎゅうにく",
+ "きよう",
+ "きょうりゅう",
+ "きらい",
+ "きらく",
+ "きりん",
+ "きれい",
+ "きれつ",
+ "きろく",
+ "ぎろん",
+ "きわめる",
+ "ぎんいろ",
+ "きんかくじ",
+ "きんじょ",
+ "きんようび",
+ "ぐあい",
+ "くいず",
+ "くうかん",
+ "くうき",
+ "くうぐん",
+ "くうこう",
+ "ぐうせい",
+ "くうそう",
+ "ぐうたら",
+ "くうふく",
+ "くうぼ",
+ "くかん",
+ "くきょう",
+ "くげん",
+ "ぐこう",
+ "くさい",
+ "くさき",
+ "くさばな",
+ "くさる",
+ "くしゃみ",
+ "くしょう",
+ "くすのき",
+ "くすりゆび",
+ "くせげ",
+ "くせん",
+ "ぐたいてき",
+ "くださる",
+ "くたびれる",
+ "くちこみ",
+ "くちさき",
+ "くつした",
+ "ぐっすり",
+ "くつろぐ",
+ "くとうてん",
+ "くどく",
+ "くなん",
+ "くねくね",
+ "くのう",
+ "くふう",
+ "くみあわせ",
+ "くみたてる",
+ "くめる",
+ "くやくしょ",
+ "くらす",
+ "くらべる",
+ "くるま",
+ "くれる",
+ "くろう",
+ "くわしい",
+ "ぐんかん",
+ "ぐんしょく",
+ "ぐんたい",
+ "ぐんて",
+ "けあな",
+ "けいかく",
+ "けいけん",
+ "けいこ",
+ "けいさつ",
+ "げいじゅつ",
+ "けいたい",
+ "げいのうじん",
+ "けいれき",
+ "けいろ",
+ "けおとす",
+ "けおりもの",
+ "げきか",
+ "げきげん",
+ "げきだん",
+ "げきちん",
+ "げきとつ",
+ "げきは",
+ "げきやく",
+ "げこう",
+ "げこくじょう",
+ "げざい",
+ "けさき",
+ "げざん",
+ "けしき",
+ "けしごむ",
+ "けしょう",
+ "げすと",
+ "けたば",
+ "けちゃっぷ",
+ "けちらす",
+ "けつあつ",
+ "けつい",
+ "けつえき",
+ "けっこん",
+ "けつじょ",
+ "けっせき",
+ "けってい",
+ "けつまつ",
+ "げつようび",
+ "げつれい",
+ "けつろん",
+ "げどく",
+ "けとばす",
+ "けとる",
+ "けなげ",
+ "けなす",
+ "けなみ",
+ "けぬき",
+ "げねつ",
+ "けねん",
+ "けはい",
+ "げひん",
+ "けぶかい",
+ "げぼく",
+ "けまり",
+ "けみかる",
+ "けむし",
+ "けむり",
+ "けもの",
+ "けらい",
+ "けろけろ",
+ "けわしい",
+ "けんい",
+ "けんえつ",
+ "けんお",
+ "けんか",
+ "げんき",
+ "けんげん",
+ "けんこう",
+ "けんさく",
+ "けんしゅう",
+ "けんすう",
+ "げんそう",
+ "けんちく",
+ "けんてい",
+ "けんとう",
+ "けんない",
+ "けんにん",
+ "げんぶつ",
+ "けんま",
+ "けんみん",
+ "けんめい",
+ "けんらん",
+ "けんり",
+ "こあくま",
+ "こいぬ",
+ "こいびと",
+ "ごうい",
+ "こうえん",
+ "こうおん",
+ "こうかん",
+ "ごうきゅう",
+ "ごうけい",
+ "こうこう",
+ "こうさい",
+ "こうじ",
+ "こうすい",
+ "ごうせい",
+ "こうそく",
+ "こうたい",
+ "こうちゃ",
+ "こうつう",
+ "こうてい",
+ "こうどう",
+ "こうない",
+ "こうはい",
+ "ごうほう",
+ "ごうまん",
+ "こうもく",
+ "こうりつ",
+ "こえる",
+ "こおり",
+ "ごかい",
+ "ごがつ",
+ "ごかん",
+ "こくご",
+ "こくさい",
+ "こくとう",
+ "こくない",
+ "こくはく",
+ "こぐま",
+ "こけい",
+ "こける",
+ "ここのか",
+ "こころ",
+ "こさめ",
+ "こしつ",
+ "こすう",
+ "こせい",
+ "こせき",
+ "こぜん",
+ "こそだて",
+ "こたい",
+ "こたえる",
+ "こたつ",
+ "こちょう",
+ "こっか",
+ "こつこつ",
+ "こつばん",
+ "こつぶ",
+ "こてい",
+ "こてん",
+ "ことがら",
+ "ことし",
+ "ことば",
+ "ことり",
+ "こなごな",
+ "こねこね",
+ "このまま",
+ "このみ",
+ "このよ",
+ "ごはん",
+ "こひつじ",
+ "こふう",
+ "こふん",
+ "こぼれる",
+ "ごまあぶら",
+ "こまかい",
+ "ごますり",
+ "こまつな",
+ "こまる",
+ "こむぎこ",
+ "こもじ",
+ "こもち",
+ "こもの",
+ "こもん",
+ "こやく",
+ "こやま",
+ "こゆう",
+ "こゆび",
+ "こよい",
+ "こよう",
+ "こりる",
+ "これくしょん",
+ "ころっけ",
+ "こわもて",
+ "こわれる",
+ "こんいん",
+ "こんかい",
+ "こんき",
+ "こんしゅう",
+ "こんすい",
+ "こんだて",
+ "こんとん",
+ "こんなん",
+ "こんびに",
+ "こんぽん",
+ "こんまけ",
+ "こんや",
+ "こんれい",
+ "こんわく",
+ "ざいえき",
+ "さいかい",
+ "さいきん",
+ "ざいげん",
+ "ざいこ",
+ "さいしょ",
+ "さいせい",
+ "ざいたく",
+ "ざいちゅう",
+ "さいてき",
+ "ざいりょう",
+ "さうな",
+ "さかいし",
+ "さがす",
+ "さかな",
+ "さかみち",
+ "さがる",
+ "さぎょう",
+ "さくし",
+ "さくひん",
+ "さくら",
+ "さこく",
+ "さこつ",
+ "さずかる",
+ "ざせき",
+ "さたん",
+ "さつえい",
+ "ざつおん",
+ "ざっか",
+ "ざつがく",
+ "さっきょく",
+ "ざっし",
+ "さつじん",
+ "ざっそう",
+ "さつたば",
+ "さつまいも",
+ "さてい",
+ "さといも",
+ "さとう",
+ "さとおや",
+ "さとし",
+ "さとる",
+ "さのう",
+ "さばく",
+ "さびしい",
+ "さべつ",
+ "さほう",
+ "さほど",
+ "さます",
+ "さみしい",
+ "さみだれ",
+ "さむけ",
+ "さめる",
+ "さやえんどう",
+ "さゆう",
+ "さよう",
+ "さよく",
+ "さらだ",
+ "ざるそば",
+ "さわやか",
+ "さわる",
+ "さんいん",
+ "さんか",
+ "さんきゃく",
+ "さんこう",
+ "さんさい",
+ "ざんしょ",
+ "さんすう",
+ "さんせい",
+ "さんそ",
+ "さんち",
+ "さんま",
+ "さんみ",
+ "さんらん",
+ "しあい",
+ "しあげ",
+ "しあさって",
+ "しあわせ",
+ "しいく",
+ "しいん",
+ "しうち",
+ "しえい",
+ "しおけ",
+ "しかい",
+ "しかく",
+ "じかん",
+ "しごと",
+ "しすう",
+ "じだい",
+ "したうけ",
+ "したぎ",
+ "したて",
+ "したみ",
+ "しちょう",
+ "しちりん",
+ "しっかり",
+ "しつじ",
+ "しつもん",
+ "してい",
+ "してき",
+ "してつ",
+ "じてん",
+ "じどう",
+ "しなぎれ",
+ "しなもの",
+ "しなん",
+ "しねま",
+ "しねん",
+ "しのぐ",
+ "しのぶ",
+ "しはい",
+ "しばかり",
+ "しはつ",
+ "しはらい",
+ "しはん",
+ "しひょう",
+ "しふく",
+ "じぶん",
+ "しへい",
+ "しほう",
+ "しほん",
+ "しまう",
+ "しまる",
+ "しみん",
+ "しむける",
+ "じむしょ",
+ "しめい",
+ "しめる",
+ "しもん",
+ "しゃいん",
+ "しゃうん",
+ "しゃおん",
+ "じゃがいも",
+ "しやくしょ",
+ "しゃくほう",
+ "しゃけん",
+ "しゃこ",
+ "しゃざい",
+ "しゃしん",
+ "しゃせん",
+ "しゃそう",
+ "しゃたい",
+ "しゃちょう",
+ "しゃっきん",
+ "じゃま",
+ "しゃりん",
+ "しゃれい",
+ "じゆう",
+ "じゅうしょ",
+ "しゅくはく",
+ "じゅしん",
+ "しゅっせき",
+ "しゅみ",
+ "しゅらば",
+ "じゅんばん",
+ "しょうかい",
+ "しょくたく",
+ "しょっけん",
+ "しょどう",
+ "しょもつ",
+ "しらせる",
+ "しらべる",
+ "しんか",
+ "しんこう",
+ "じんじゃ",
+ "しんせいじ",
+ "しんちく",
+ "しんりん",
+ "すあげ",
+ "すあし",
+ "すあな",
+ "ずあん",
+ "すいえい",
+ "すいか",
+ "すいとう",
+ "ずいぶん",
+ "すいようび",
+ "すうがく",
+ "すうじつ",
+ "すうせん",
+ "すおどり",
+ "すきま",
+ "すくう",
+ "すくない",
+ "すける",
+ "すごい",
+ "すこし",
+ "ずさん",
+ "すずしい",
+ "すすむ",
+ "すすめる",
+ "すっかり",
+ "ずっしり",
+ "ずっと",
+ "すてき",
+ "すてる",
+ "すねる",
+ "すのこ",
+ "すはだ",
+ "すばらしい",
+ "ずひょう",
+ "ずぶぬれ",
+ "すぶり",
+ "すふれ",
+ "すべて",
+ "すべる",
+ "ずほう",
+ "すぼん",
+ "すまい",
+ "すめし",
+ "すもう",
+ "すやき",
+ "すらすら",
+ "するめ",
+ "すれちがう",
+ "すろっと",
+ "すわる",
+ "すんぜん",
+ "すんぽう",
+ "せあぶら",
+ "せいかつ",
+ "せいげん",
+ "せいじ",
+ "せいよう",
+ "せおう",
+ "せかいかん",
+ "せきにん",
+ "せきむ",
+ "せきゆ",
+ "せきらんうん",
+ "せけん",
+ "せこう",
+ "せすじ",
+ "せたい",
+ "せたけ",
+ "せっかく",
+ "せっきゃく",
+ "ぜっく",
+ "せっけん",
+ "せっこつ",
+ "せっさたくま",
+ "せつぞく",
+ "せつだん",
+ "せつでん",
+ "せっぱん",
+ "せつび",
+ "せつぶん",
+ "せつめい",
+ "せつりつ",
+ "せなか",
+ "せのび",
+ "せはば",
+ "せびろ",
+ "せぼね",
+ "せまい",
+ "せまる",
+ "せめる",
+ "せもたれ",
+ "せりふ",
+ "ぜんあく",
+ "せんい",
+ "せんえい",
+ "せんか",
+ "せんきょ",
+ "せんく",
+ "せんげん",
+ "ぜんご",
+ "せんさい",
+ "せんしゅ",
+ "せんすい",
+ "せんせい",
+ "せんぞ",
+ "せんたく",
+ "せんちょう",
+ "せんてい",
+ "せんとう",
+ "せんぬき",
+ "せんねん",
+ "せんぱい",
+ "ぜんぶ",
+ "ぜんぽう",
+ "せんむ",
+ "せんめんじょ",
+ "せんもん",
+ "せんやく",
+ "せんゆう",
+ "せんよう",
+ "ぜんら",
+ "ぜんりゃく",
+ "せんれい",
+ "せんろ",
+ "そあく",
+ "そいとげる",
+ "そいね",
+ "そうがんきょう",
+ "そうき",
+ "そうご",
+ "そうしん",
+ "そうだん",
+ "そうなん",
+ "そうび",
+ "そうめん",
+ "そうり",
+ "そえもの",
+ "そえん",
+ "そがい",
+ "そげき",
+ "そこう",
+ "そこそこ",
+ "そざい",
+ "そしな",
+ "そせい",
+ "そせん",
+ "そそぐ",
+ "そだてる",
+ "そつう",
+ "そつえん",
+ "そっかん",
+ "そつぎょう",
+ "そっけつ",
+ "そっこう",
+ "そっせん",
+ "そっと",
+ "そとがわ",
+ "そとづら",
+ "そなえる",
+ "そなた",
+ "そふぼ",
+ "そぼく",
+ "そぼろ",
+ "そまつ",
+ "そまる",
+ "そむく",
+ "そむりえ",
+ "そめる",
+ "そもそも",
+ "そよかぜ",
+ "そらまめ",
+ "そろう",
+ "そんかい",
+ "そんけい",
+ "そんざい",
+ "そんしつ",
+ "そんぞく",
+ "そんちょう",
+ "ぞんび",
+ "ぞんぶん",
+ "そんみん",
+ "たあい",
+ "たいいん",
+ "たいうん",
+ "たいえき",
+ "たいおう",
+ "だいがく",
+ "たいき",
+ "たいぐう",
+ "たいけん",
+ "たいこ",
+ "たいざい",
+ "だいじょうぶ",
+ "だいすき",
+ "たいせつ",
+ "たいそう",
+ "だいたい",
+ "たいちょう",
+ "たいてい",
+ "だいどころ",
+ "たいない",
+ "たいねつ",
+ "たいのう",
+ "たいはん",
+ "だいひょう",
+ "たいふう",
+ "たいへん",
+ "たいほ",
+ "たいまつばな",
+ "たいみんぐ",
+ "たいむ",
+ "たいめん",
+ "たいやき",
+ "たいよう",
+ "たいら",
+ "たいりょく",
+ "たいる",
+ "たいわん",
+ "たうえ",
+ "たえる",
+ "たおす",
+ "たおる",
+ "たおれる",
+ "たかい",
+ "たかね",
+ "たきび",
+ "たくさん",
+ "たこく",
+ "たこやき",
+ "たさい",
+ "たしざん",
+ "だじゃれ",
+ "たすける",
+ "たずさわる",
+ "たそがれ",
+ "たたかう",
+ "たたく",
+ "ただしい",
+ "たたみ",
+ "たちばな",
+ "だっかい",
+ "だっきゃく",
+ "だっこ",
+ "だっしゅつ",
+ "だったい",
+ "たてる",
+ "たとえる",
+ "たなばた",
+ "たにん",
+ "たぬき",
+ "たのしみ",
+ "たはつ",
+ "たぶん",
+ "たべる",
+ "たぼう",
+ "たまご",
+ "たまる",
+ "だむる",
+ "ためいき",
+ "ためす",
+ "ためる",
+ "たもつ",
+ "たやすい",
+ "たよる",
+ "たらす",
+ "たりきほんがん",
+ "たりょう",
+ "たりる",
+ "たると",
+ "たれる",
+ "たれんと",
+ "たろっと",
+ "たわむれる",
+ "だんあつ",
+ "たんい",
+ "たんおん",
+ "たんか",
+ "たんき",
+ "たんけん",
+ "たんご",
+ "たんさん",
+ "たんじょうび",
+ "だんせい",
+ "たんそく",
+ "たんたい",
+ "だんち",
+ "たんてい",
+ "たんとう",
+ "だんな",
+ "たんにん",
+ "だんねつ",
+ "たんのう",
+ "たんぴん",
+ "だんぼう",
+ "たんまつ",
+ "たんめい",
+ "だんれつ",
+ "だんろ",
+ "だんわ",
+ "ちあい",
+ "ちあん",
+ "ちいき",
+ "ちいさい",
+ "ちえん",
+ "ちかい",
+ "ちから",
+ "ちきゅう",
+ "ちきん",
+ "ちけいず",
+ "ちけん",
+ "ちこく",
+ "ちさい",
+ "ちしき",
+ "ちしりょう",
+ "ちせい",
+ "ちそう",
+ "ちたい",
+ "ちたん",
+ "ちちおや",
+ "ちつじょ",
+ "ちてき",
+ "ちてん",
+ "ちぬき",
+ "ちぬり",
+ "ちのう",
+ "ちひょう",
+ "ちへいせん",
+ "ちほう",
+ "ちまた",
+ "ちみつ",
+ "ちみどろ",
+ "ちめいど",
+ "ちゃんこなべ",
+ "ちゅうい",
+ "ちゆりょく",
+ "ちょうし",
+ "ちょさくけん",
+ "ちらし",
+ "ちらみ",
+ "ちりがみ",
+ "ちりょう",
+ "ちるど",
+ "ちわわ",
+ "ちんたい",
+ "ちんもく",
+ "ついか",
+ "ついたち",
+ "つうか",
+ "つうじょう",
+ "つうはん",
+ "つうわ",
+ "つかう",
+ "つかれる",
+ "つくね",
+ "つくる",
+ "つけね",
+ "つける",
+ "つごう",
+ "つたえる",
+ "つづく",
+ "つつじ",
+ "つつむ",
+ "つとめる",
+ "つながる",
+ "つなみ",
+ "つねづね",
+ "つのる",
+ "つぶす",
+ "つまらない",
+ "つまる",
+ "つみき",
+ "つめたい",
+ "つもり",
+ "つもる",
+ "つよい",
+ "つるぼ",
+ "つるみく",
+ "つわもの",
+ "つわり",
+ "てあし",
+ "てあて",
+ "てあみ",
+ "ていおん",
+ "ていか",
+ "ていき",
+ "ていけい",
+ "ていこく",
+ "ていさつ",
+ "ていし",
+ "ていせい",
+ "ていたい",
+ "ていど",
+ "ていねい",
+ "ていひょう",
+ "ていへん",
+ "ていぼう",
+ "てうち",
+ "ておくれ",
+ "てきとう",
+ "てくび",
+ "でこぼこ",
+ "てさぎょう",
+ "てさげ",
+ "てすり",
+ "てそう",
+ "てちがい",
+ "てちょう",
+ "てつがく",
+ "てつづき",
+ "でっぱ",
+ "てつぼう",
+ "てつや",
+ "でぬかえ",
+ "てぬき",
+ "てぬぐい",
+ "てのひら",
+ "てはい",
+ "てぶくろ",
+ "てふだ",
+ "てほどき",
+ "てほん",
+ "てまえ",
+ "てまきずし",
+ "てみじか",
+ "てみやげ",
+ "てらす",
+ "てれび",
+ "てわけ",
+ "てわたし",
+ "でんあつ",
+ "てんいん",
+ "てんかい",
+ "てんき",
+ "てんぐ",
+ "てんけん",
+ "てんごく",
+ "てんさい",
+ "てんし",
+ "てんすう",
+ "でんち",
+ "てんてき",
+ "てんとう",
+ "てんない",
+ "てんぷら",
+ "てんぼうだい",
+ "てんめつ",
+ "てんらんかい",
+ "でんりょく",
+ "でんわ",
+ "どあい",
+ "といれ",
+ "どうかん",
+ "とうきゅう",
+ "どうぐ",
+ "とうし",
+ "とうむぎ",
+ "とおい",
+ "とおか",
+ "とおく",
+ "とおす",
+ "とおる",
+ "とかい",
+ "とかす",
+ "ときおり",
+ "ときどき",
+ "とくい",
+ "とくしゅう",
+ "とくてん",
+ "とくに",
+ "とくべつ",
+ "とけい",
+ "とける",
+ "とこや",
+ "とさか",
+ "としょかん",
+ "とそう",
+ "とたん",
+ "とちゅう",
+ "とっきゅう",
+ "とっくん",
+ "とつぜん",
+ "とつにゅう",
+ "とどける",
+ "ととのえる",
+ "とない",
+ "となえる",
+ "となり",
+ "とのさま",
+ "とばす",
+ "どぶがわ",
+ "とほう",
+ "とまる",
+ "とめる",
+ "ともだち",
+ "ともる",
+ "どようび",
+ "とらえる",
+ "とんかつ",
+ "どんぶり",
+ "ないかく",
+ "ないこう",
+ "ないしょ",
+ "ないす",
+ "ないせん",
+ "ないそう",
+ "なおす",
+ "ながい",
+ "なくす",
+ "なげる",
+ "なこうど",
+ "なさけ",
+ "なたでここ",
+ "なっとう",
+ "なつやすみ",
+ "ななおし",
+ "なにごと",
+ "なにもの",
+ "なにわ",
+ "なのか",
+ "なふだ",
+ "なまいき",
+ "なまえ",
+ "なまみ",
+ "なみだ",
+ "なめらか",
+ "なめる",
+ "なやむ",
+ "ならう",
+ "ならび",
+ "ならぶ",
+ "なれる",
+ "なわとび",
+ "なわばり",
+ "にあう",
+ "にいがた",
+ "にうけ",
+ "におい",
+ "にかい",
+ "にがて",
+ "にきび",
+ "にくしみ",
+ "にくまん",
+ "にげる",
+ "にさんかたんそ",
+ "にしき",
+ "にせもの",
+ "にちじょう",
+ "にちようび",
+ "にっか",
+ "にっき",
+ "にっけい",
+ "にっこう",
+ "にっさん",
+ "にっしょく",
+ "にっすう",
+ "にっせき",
+ "にってい",
+ "になう",
+ "にほん",
+ "にまめ",
+ "にもつ",
+ "にやり",
+ "にゅういん",
+ "にりんしゃ",
+ "にわとり",
+ "にんい",
+ "にんか",
+ "にんき",
+ "にんげん",
+ "にんしき",
+ "にんずう",
+ "にんそう",
+ "にんたい",
+ "にんち",
+ "にんてい",
+ "にんにく",
+ "にんぷ",
+ "にんまり",
+ "にんむ",
+ "にんめい",
+ "にんよう",
+ "ぬいくぎ",
+ "ぬかす",
+ "ぬぐいとる",
+ "ぬぐう",
+ "ぬくもり",
+ "ぬすむ",
+ "ぬまえび",
+ "ぬめり",
+ "ぬらす",
+ "ぬんちゃく",
+ "ねあげ",
+ "ねいき",
+ "ねいる",
+ "ねいろ",
+ "ねぐせ",
+ "ねくたい",
+ "ねくら",
+ "ねこぜ",
+ "ねこむ",
+ "ねさげ",
+ "ねすごす",
+ "ねそべる",
+ "ねだん",
+ "ねつい",
+ "ねっしん",
+ "ねつぞう",
+ "ねったいぎょ",
+ "ねぶそく",
+ "ねふだ",
+ "ねぼう",
+ "ねほりはほり",
+ "ねまき",
+ "ねまわし",
+ "ねみみ",
+ "ねむい",
+ "ねむたい",
+ "ねもと",
+ "ねらう",
+ "ねわざ",
+ "ねんいり",
+ "ねんおし",
+ "ねんかん",
+ "ねんきん",
+ "ねんぐ",
+ "ねんざ",
+ "ねんし",
+ "ねんちゃく",
+ "ねんど",
+ "ねんぴ",
+ "ねんぶつ",
+ "ねんまつ",
+ "ねんりょう",
+ "ねんれい",
+ "のいず",
+ "のおづま",
+ "のがす",
+ "のきなみ",
+ "のこぎり",
+ "のこす",
+ "のこる",
+ "のせる",
+ "のぞく",
+ "のぞむ",
+ "のたまう",
+ "のちほど",
+ "のっく",
+ "のばす",
+ "のはら",
+ "のべる",
+ "のぼる",
+ "のみもの",
+ "のやま",
+ "のらいぬ",
+ "のらねこ",
+ "のりもの",
+ "のりゆき",
+ "のれん",
+ "のんき",
+ "ばあい",
+ "はあく",
+ "ばあさん",
+ "ばいか",
+ "ばいく",
+ "はいけん",
+ "はいご",
+ "はいしん",
+ "はいすい",
+ "はいせん",
+ "はいそう",
+ "はいち",
+ "ばいばい",
+ "はいれつ",
+ "はえる",
+ "はおる",
+ "はかい",
+ "ばかり",
+ "はかる",
+ "はくしゅ",
+ "はけん",
+ "はこぶ",
+ "はさみ",
+ "はさん",
+ "はしご",
+ "ばしょ",
+ "はしる",
+ "はせる",
+ "ぱそこん",
+ "はそん",
+ "はたん",
+ "はちみつ",
+ "はつおん",
+ "はっかく",
+ "はづき",
+ "はっきり",
+ "はっくつ",
+ "はっけん",
+ "はっこう",
+ "はっさん",
+ "はっしん",
+ "はったつ",
+ "はっちゅう",
+ "はってん",
+ "はっぴょう",
+ "はっぽう",
+ "はなす",
+ "はなび",
+ "はにかむ",
+ "はぶらし",
+ "はみがき",
+ "はむかう",
+ "はめつ",
+ "はやい",
+ "はやし",
+ "はらう",
+ "はろうぃん",
+ "はわい",
+ "はんい",
+ "はんえい",
+ "はんおん",
+ "はんかく",
+ "はんきょう",
+ "ばんぐみ",
+ "はんこ",
+ "はんしゃ",
+ "はんすう",
+ "はんだん",
+ "ぱんち",
+ "ぱんつ",
+ "はんてい",
+ "はんとし",
+ "はんのう",
+ "はんぱ",
+ "はんぶん",
+ "はんぺん",
+ "はんぼうき",
+ "はんめい",
+ "はんらん",
+ "はんろん",
+ "ひいき",
+ "ひうん",
+ "ひえる",
+ "ひかく",
+ "ひかり",
+ "ひかる",
+ "ひかん",
+ "ひくい",
+ "ひけつ",
+ "ひこうき",
+ "ひこく",
+ "ひさい",
+ "ひさしぶり",
+ "ひさん",
+ "びじゅつかん",
+ "ひしょ",
+ "ひそか",
+ "ひそむ",
+ "ひたむき",
+ "ひだり",
+ "ひたる",
+ "ひつぎ",
+ "ひっこし",
+ "ひっし",
+ "ひつじゅひん",
+ "ひっす",
+ "ひつぜん",
+ "ぴったり",
+ "ぴっちり",
+ "ひつよう",
+ "ひてい",
+ "ひとごみ",
+ "ひなまつり",
+ "ひなん",
+ "ひねる",
+ "ひはん",
+ "ひびく",
+ "ひひょう",
+ "ひほう",
+ "ひまわり",
+ "ひまん",
+ "ひみつ",
+ "ひめい",
+ "ひめじし",
+ "ひやけ",
+ "ひやす",
+ "ひよう",
+ "びょうき",
+ "ひらがな",
+ "ひらく",
+ "ひりつ",
+ "ひりょう",
+ "ひるま",
+ "ひるやすみ",
+ "ひれい",
+ "ひろい",
+ "ひろう",
+ "ひろき",
+ "ひろゆき",
+ "ひんかく",
+ "ひんけつ",
+ "ひんこん",
+ "ひんしゅ",
+ "ひんそう",
+ "ぴんち",
+ "ひんぱん",
+ "びんぼう",
+ "ふあん",
+ "ふいうち",
+ "ふうけい",
+ "ふうせん",
+ "ぷうたろう",
+ "ふうとう",
+ "ふうふ",
+ "ふえる",
+ "ふおん",
+ "ふかい",
+ "ふきん",
+ "ふくざつ",
+ "ふくぶくろ",
+ "ふこう",
+ "ふさい",
+ "ふしぎ",
+ "ふじみ",
+ "ふすま",
+ "ふせい",
+ "ふせぐ",
+ "ふそく",
+ "ぶたにく",
+ "ふたん",
+ "ふちょう",
+ "ふつう",
+ "ふつか",
+ "ふっかつ",
+ "ふっき",
+ "ふっこく",
+ "ぶどう",
+ "ふとる",
+ "ふとん",
+ "ふのう",
+ "ふはい",
+ "ふひょう",
+ "ふへん",
+ "ふまん",
+ "ふみん",
+ "ふめつ",
+ "ふめん",
+ "ふよう",
+ "ふりこ",
+ "ふりる",
+ "ふるい",
+ "ふんいき",
+ "ぶんがく",
+ "ぶんぐ",
+ "ふんしつ",
+ "ぶんせき",
+ "ふんそう",
+ "ぶんぽう",
+ "へいあん",
+ "へいおん",
+ "へいがい",
+ "へいき",
+ "へいげん",
+ "へいこう",
+ "へいさ",
+ "へいしゃ",
+ "へいせつ",
+ "へいそ",
+ "へいたく",
+ "へいてん",
+ "へいねつ",
+ "へいわ",
+ "へきが",
+ "へこむ",
+ "べにいろ",
+ "べにしょうが",
+ "へらす",
+ "へんかん",
+ "べんきょう",
+ "べんごし",
+ "へんさい",
+ "へんたい",
+ "べんり",
+ "ほあん",
+ "ほいく",
+ "ぼうぎょ",
+ "ほうこく",
+ "ほうそう",
+ "ほうほう",
+ "ほうもん",
+ "ほうりつ",
+ "ほえる",
+ "ほおん",
+ "ほかん",
+ "ほきょう",
+ "ぼきん",
+ "ほくろ",
+ "ほけつ",
+ "ほけん",
+ "ほこう",
+ "ほこる",
+ "ほしい",
+ "ほしつ",
+ "ほしゅ",
+ "ほしょう",
+ "ほせい",
+ "ほそい",
+ "ほそく",
+ "ほたて",
+ "ほたる",
+ "ぽちぶくろ",
+ "ほっきょく",
+ "ほっさ",
+ "ほったん",
+ "ほとんど",
+ "ほめる",
+ "ほんい",
+ "ほんき",
+ "ほんけ",
+ "ほんしつ",
+ "ほんやく",
+ "まいにち",
+ "まかい",
+ "まかせる",
+ "まがる",
+ "まける",
+ "まこと",
+ "まさつ",
+ "まじめ",
+ "ますく",
+ "まぜる",
+ "まつり",
+ "まとめ",
+ "まなぶ",
+ "まぬけ",
+ "まねく",
+ "まほう",
+ "まもる",
+ "まゆげ",
+ "まよう",
+ "まろやか",
+ "まわす",
+ "まわり",
+ "まわる",
+ "まんが",
+ "まんきつ",
+ "まんぞく",
+ "まんなか",
+ "みいら",
+ "みうち",
+ "みえる",
+ "みがく",
+ "みかた",
+ "みかん",
+ "みけん",
+ "みこん",
+ "みじかい",
+ "みすい",
+ "みすえる",
+ "みせる",
+ "みっか",
+ "みつかる",
+ "みつける",
+ "みてい",
+ "みとめる",
+ "みなと",
+ "みなみかさい",
+ "みねらる",
+ "みのう",
+ "みのがす",
+ "みほん",
+ "みもと",
+ "みやげ",
+ "みらい",
+ "みりょく",
+ "みわく",
+ "みんか",
+ "みんぞく",
+ "むいか",
+ "むえき",
+ "むえん",
+ "むかい",
+ "むかう",
+ "むかえ",
+ "むかし",
+ "むぎちゃ",
+ "むける",
+ "むげん",
+ "むさぼる",
+ "むしあつい",
+ "むしば",
+ "むじゅん",
+ "むしろ",
+ "むすう",
+ "むすこ",
+ "むすぶ",
+ "むすめ",
+ "むせる",
+ "むせん",
+ "むちゅう",
+ "むなしい",
+ "むのう",
+ "むやみ",
+ "むよう",
+ "むらさき",
+ "むりょう",
+ "むろん",
+ "めいあん",
+ "めいうん",
+ "めいえん",
+ "めいかく",
+ "めいきょく",
+ "めいさい",
+ "めいし",
+ "めいそう",
+ "めいぶつ",
+ "めいれい",
+ "めいわく",
+ "めぐまれる",
+ "めざす",
+ "めした",
+ "めずらしい",
+ "めだつ",
+ "めまい",
+ "めやす",
+ "めんきょ",
+ "めんせき",
+ "めんどう",
+ "もうしあげる",
+ "もうどうけん",
+ "もえる",
+ "もくし",
+ "もくてき",
+ "もくようび",
+ "もちろん",
+ "もどる",
+ "もらう",
+ "もんく",
+ "もんだい",
+ "やおや",
+ "やける",
+ "やさい",
+ "やさしい",
+ "やすい",
+ "やすたろう",
+ "やすみ",
+ "やせる",
+ "やそう",
+ "やたい",
+ "やちん",
+ "やっと",
+ "やっぱり",
+ "やぶる",
+ "やめる",
+ "ややこしい",
+ "やよい",
+ "やわらかい",
+ "ゆうき",
+ "ゆうびんきょく",
+ "ゆうべ",
+ "ゆうめい",
+ "ゆけつ",
+ "ゆしゅつ",
+ "ゆせん",
+ "ゆそう",
+ "ゆたか",
+ "ゆちゃく",
+ "ゆでる",
+ "ゆにゅう",
+ "ゆびわ",
+ "ゆらい",
+ "ゆれる",
+ "ようい",
+ "ようか",
+ "ようきゅう",
+ "ようじ",
+ "ようす",
+ "ようちえん",
+ "よかぜ",
+ "よかん",
+ "よきん",
+ "よくせい",
+ "よくぼう",
+ "よけい",
+ "よごれる",
+ "よさん",
+ "よしゅう",
+ "よそう",
+ "よそく",
+ "よっか",
+ "よてい",
+ "よどがわく",
+ "よねつ",
+ "よやく",
+ "よゆう",
+ "よろこぶ",
+ "よろしい",
+ "らいう",
+ "らくがき",
+ "らくご",
+ "らくさつ",
+ "らくだ",
+ "らしんばん",
+ "らせん",
+ "らぞく",
+ "らたい",
+ "らっか",
+ "られつ",
+ "りえき",
+ "りかい",
+ "りきさく",
+ "りきせつ",
+ "りくぐん",
+ "りくつ",
+ "りけん",
+ "りこう",
+ "りせい",
+ "りそう",
+ "りそく",
+ "りてん",
+ "りねん",
+ "りゆう",
+ "りゅうがく",
+ "りよう",
+ "りょうり",
+ "りょかん",
+ "りょくちゃ",
+ "りょこう",
+ "りりく",
+ "りれき",
+ "りろん",
+ "りんご",
+ "るいけい",
+ "るいさい",
+ "るいじ",
+ "るいせき",
+ "るすばん",
+ "るりがわら",
+ "れいかん",
+ "れいぎ",
+ "れいせい",
+ "れいぞうこ",
+ "れいとう",
+ "れいぼう",
+ "れきし",
+ "れきだい",
+ "れんあい",
+ "れんけい",
+ "れんこん",
+ "れんさい",
+ "れんしゅう",
+ "れんぞく",
+ "れんらく",
+ "ろうか",
+ "ろうご",
+ "ろうじん",
+ "ろうそく",
+ "ろくが",
+ "ろこつ",
+ "ろじうら",
+ "ろしゅつ",
+ "ろせん",
+ "ろてん",
+ "ろめん",
+ "ろれつ",
+ "ろんぎ",
+ "ろんぱ",
+ "ろんぶん",
+ "ろんり",
+ "わかす",
+ "わかめ",
+ "わかやま",
+ "わかれる",
+ "わしつ",
+ "わじまし",
+ "わすれもの",
+ "わらう",
+ "われる"
+ };
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/bip39/wordlists/Spanish.java b/app/src/main/java/io/github/novacrypto/bip39/wordlists/Spanish.java
new file mode 100644
index 0000000000..2e84ebd9d4
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/bip39/wordlists/Spanish.java
@@ -0,0 +1,2092 @@
+/*
+ * BIP39 library, a Java implementation of BIP39
+ * Copyright (C) 2017-2019 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/BIP39
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.bip39.wordlists;
+
+import io.github.novacrypto.bip39.WordList;
+
+/**
+ * Source: https://github.com/bitcoin/bips/blob/master/bip-0039/spanish.txt
+ */
+public enum Spanish implements WordList {
+ INSTANCE;
+
+ @Override
+ public String getWord(final int index) {
+ return words[index];
+ }
+
+ @Override
+ public char getSpace() {
+ return ' ';
+ }
+
+ private final static String[] words = new String[]{
+ "ábaco",
+ "abdomen",
+ "abeja",
+ "abierto",
+ "abogado",
+ "abono",
+ "aborto",
+ "abrazo",
+ "abrir",
+ "abuelo",
+ "abuso",
+ "acabar",
+ "academia",
+ "acceso",
+ "acción",
+ "aceite",
+ "acelga",
+ "acento",
+ "aceptar",
+ "ácido",
+ "aclarar",
+ "acné",
+ "acoger",
+ "acoso",
+ "activo",
+ "acto",
+ "actriz",
+ "actuar",
+ "acudir",
+ "acuerdo",
+ "acusar",
+ "adicto",
+ "admitir",
+ "adoptar",
+ "adorno",
+ "aduana",
+ "adulto",
+ "aéreo",
+ "afectar",
+ "afición",
+ "afinar",
+ "afirmar",
+ "ágil",
+ "agitar",
+ "agonía",
+ "agosto",
+ "agotar",
+ "agregar",
+ "agrio",
+ "agua",
+ "agudo",
+ "águila",
+ "aguja",
+ "ahogo",
+ "ahorro",
+ "aire",
+ "aislar",
+ "ajedrez",
+ "ajeno",
+ "ajuste",
+ "alacrán",
+ "alambre",
+ "alarma",
+ "alba",
+ "álbum",
+ "alcalde",
+ "aldea",
+ "alegre",
+ "alejar",
+ "alerta",
+ "aleta",
+ "alfiler",
+ "alga",
+ "algodón",
+ "aliado",
+ "aliento",
+ "alivio",
+ "alma",
+ "almeja",
+ "almíbar",
+ "altar",
+ "alteza",
+ "altivo",
+ "alto",
+ "altura",
+ "alumno",
+ "alzar",
+ "amable",
+ "amante",
+ "amapola",
+ "amargo",
+ "amasar",
+ "ámbar",
+ "ámbito",
+ "ameno",
+ "amigo",
+ "amistad",
+ "amor",
+ "amparo",
+ "amplio",
+ "ancho",
+ "anciano",
+ "ancla",
+ "andar",
+ "andén",
+ "anemia",
+ "ángulo",
+ "anillo",
+ "ánimo",
+ "anís",
+ "anotar",
+ "antena",
+ "antiguo",
+ "antojo",
+ "anual",
+ "anular",
+ "anuncio",
+ "añadir",
+ "añejo",
+ "año",
+ "apagar",
+ "aparato",
+ "apetito",
+ "apio",
+ "aplicar",
+ "apodo",
+ "aporte",
+ "apoyo",
+ "aprender",
+ "aprobar",
+ "apuesta",
+ "apuro",
+ "arado",
+ "araña",
+ "arar",
+ "árbitro",
+ "árbol",
+ "arbusto",
+ "archivo",
+ "arco",
+ "arder",
+ "ardilla",
+ "arduo",
+ "área",
+ "árido",
+ "aries",
+ "armonía",
+ "arnés",
+ "aroma",
+ "arpa",
+ "arpón",
+ "arreglo",
+ "arroz",
+ "arruga",
+ "arte",
+ "artista",
+ "asa",
+ "asado",
+ "asalto",
+ "ascenso",
+ "asegurar",
+ "aseo",
+ "asesor",
+ "asiento",
+ "asilo",
+ "asistir",
+ "asno",
+ "asombro",
+ "áspero",
+ "astilla",
+ "astro",
+ "astuto",
+ "asumir",
+ "asunto",
+ "atajo",
+ "ataque",
+ "atar",
+ "atento",
+ "ateo",
+ "ático",
+ "atleta",
+ "átomo",
+ "atraer",
+ "atroz",
+ "atún",
+ "audaz",
+ "audio",
+ "auge",
+ "aula",
+ "aumento",
+ "ausente",
+ "autor",
+ "aval",
+ "avance",
+ "avaro",
+ "ave",
+ "avellana",
+ "avena",
+ "avestruz",
+ "avión",
+ "aviso",
+ "ayer",
+ "ayuda",
+ "ayuno",
+ "azafrán",
+ "azar",
+ "azote",
+ "azúcar",
+ "azufre",
+ "azul",
+ "baba",
+ "babor",
+ "bache",
+ "bahía",
+ "baile",
+ "bajar",
+ "balanza",
+ "balcón",
+ "balde",
+ "bambú",
+ "banco",
+ "banda",
+ "baño",
+ "barba",
+ "barco",
+ "barniz",
+ "barro",
+ "báscula",
+ "bastón",
+ "basura",
+ "batalla",
+ "batería",
+ "batir",
+ "batuta",
+ "baúl",
+ "bazar",
+ "bebé",
+ "bebida",
+ "bello",
+ "besar",
+ "beso",
+ "bestia",
+ "bicho",
+ "bien",
+ "bingo",
+ "blanco",
+ "bloque",
+ "blusa",
+ "boa",
+ "bobina",
+ "bobo",
+ "boca",
+ "bocina",
+ "boda",
+ "bodega",
+ "boina",
+ "bola",
+ "bolero",
+ "bolsa",
+ "bomba",
+ "bondad",
+ "bonito",
+ "bono",
+ "bonsái",
+ "borde",
+ "borrar",
+ "bosque",
+ "bote",
+ "botín",
+ "bóveda",
+ "bozal",
+ "bravo",
+ "brazo",
+ "brecha",
+ "breve",
+ "brillo",
+ "brinco",
+ "brisa",
+ "broca",
+ "broma",
+ "bronce",
+ "brote",
+ "bruja",
+ "brusco",
+ "bruto",
+ "buceo",
+ "bucle",
+ "bueno",
+ "buey",
+ "bufanda",
+ "bufón",
+ "búho",
+ "buitre",
+ "bulto",
+ "burbuja",
+ "burla",
+ "burro",
+ "buscar",
+ "butaca",
+ "buzón",
+ "caballo",
+ "cabeza",
+ "cabina",
+ "cabra",
+ "cacao",
+ "cadáver",
+ "cadena",
+ "caer",
+ "café",
+ "caída",
+ "caimán",
+ "caja",
+ "cajón",
+ "cal",
+ "calamar",
+ "calcio",
+ "caldo",
+ "calidad",
+ "calle",
+ "calma",
+ "calor",
+ "calvo",
+ "cama",
+ "cambio",
+ "camello",
+ "camino",
+ "campo",
+ "cáncer",
+ "candil",
+ "canela",
+ "canguro",
+ "canica",
+ "canto",
+ "caña",
+ "cañón",
+ "caoba",
+ "caos",
+ "capaz",
+ "capitán",
+ "capote",
+ "captar",
+ "capucha",
+ "cara",
+ "carbón",
+ "cárcel",
+ "careta",
+ "carga",
+ "cariño",
+ "carne",
+ "carpeta",
+ "carro",
+ "carta",
+ "casa",
+ "casco",
+ "casero",
+ "caspa",
+ "castor",
+ "catorce",
+ "catre",
+ "caudal",
+ "causa",
+ "cazo",
+ "cebolla",
+ "ceder",
+ "cedro",
+ "celda",
+ "célebre",
+ "celoso",
+ "célula",
+ "cemento",
+ "ceniza",
+ "centro",
+ "cerca",
+ "cerdo",
+ "cereza",
+ "cero",
+ "cerrar",
+ "certeza",
+ "césped",
+ "cetro",
+ "chacal",
+ "chaleco",
+ "champú",
+ "chancla",
+ "chapa",
+ "charla",
+ "chico",
+ "chiste",
+ "chivo",
+ "choque",
+ "choza",
+ "chuleta",
+ "chupar",
+ "ciclón",
+ "ciego",
+ "cielo",
+ "cien",
+ "cierto",
+ "cifra",
+ "cigarro",
+ "cima",
+ "cinco",
+ "cine",
+ "cinta",
+ "ciprés",
+ "circo",
+ "ciruela",
+ "cisne",
+ "cita",
+ "ciudad",
+ "clamor",
+ "clan",
+ "claro",
+ "clase",
+ "clave",
+ "cliente",
+ "clima",
+ "clínica",
+ "cobre",
+ "cocción",
+ "cochino",
+ "cocina",
+ "coco",
+ "código",
+ "codo",
+ "cofre",
+ "coger",
+ "cohete",
+ "cojín",
+ "cojo",
+ "cola",
+ "colcha",
+ "colegio",
+ "colgar",
+ "colina",
+ "collar",
+ "colmo",
+ "columna",
+ "combate",
+ "comer",
+ "comida",
+ "cómodo",
+ "compra",
+ "conde",
+ "conejo",
+ "conga",
+ "conocer",
+ "consejo",
+ "contar",
+ "copa",
+ "copia",
+ "corazón",
+ "corbata",
+ "corcho",
+ "cordón",
+ "corona",
+ "correr",
+ "coser",
+ "cosmos",
+ "costa",
+ "cráneo",
+ "cráter",
+ "crear",
+ "crecer",
+ "creído",
+ "crema",
+ "cría",
+ "crimen",
+ "cripta",
+ "crisis",
+ "cromo",
+ "crónica",
+ "croqueta",
+ "crudo",
+ "cruz",
+ "cuadro",
+ "cuarto",
+ "cuatro",
+ "cubo",
+ "cubrir",
+ "cuchara",
+ "cuello",
+ "cuento",
+ "cuerda",
+ "cuesta",
+ "cueva",
+ "cuidar",
+ "culebra",
+ "culpa",
+ "culto",
+ "cumbre",
+ "cumplir",
+ "cuna",
+ "cuneta",
+ "cuota",
+ "cupón",
+ "cúpula",
+ "curar",
+ "curioso",
+ "curso",
+ "curva",
+ "cutis",
+ "dama",
+ "danza",
+ "dar",
+ "dardo",
+ "dátil",
+ "deber",
+ "débil",
+ "década",
+ "decir",
+ "dedo",
+ "defensa",
+ "definir",
+ "dejar",
+ "delfín",
+ "delgado",
+ "delito",
+ "demora",
+ "denso",
+ "dental",
+ "deporte",
+ "derecho",
+ "derrota",
+ "desayuno",
+ "deseo",
+ "desfile",
+ "desnudo",
+ "destino",
+ "desvío",
+ "detalle",
+ "detener",
+ "deuda",
+ "día",
+ "diablo",
+ "diadema",
+ "diamante",
+ "diana",
+ "diario",
+ "dibujo",
+ "dictar",
+ "diente",
+ "dieta",
+ "diez",
+ "difícil",
+ "digno",
+ "dilema",
+ "diluir",
+ "dinero",
+ "directo",
+ "dirigir",
+ "disco",
+ "diseño",
+ "disfraz",
+ "diva",
+ "divino",
+ "doble",
+ "doce",
+ "dolor",
+ "domingo",
+ "don",
+ "donar",
+ "dorado",
+ "dormir",
+ "dorso",
+ "dos",
+ "dosis",
+ "dragón",
+ "droga",
+ "ducha",
+ "duda",
+ "duelo",
+ "dueño",
+ "dulce",
+ "dúo",
+ "duque",
+ "durar",
+ "dureza",
+ "duro",
+ "ébano",
+ "ebrio",
+ "echar",
+ "eco",
+ "ecuador",
+ "edad",
+ "edición",
+ "edificio",
+ "editor",
+ "educar",
+ "efecto",
+ "eficaz",
+ "eje",
+ "ejemplo",
+ "elefante",
+ "elegir",
+ "elemento",
+ "elevar",
+ "elipse",
+ "élite",
+ "elixir",
+ "elogio",
+ "eludir",
+ "embudo",
+ "emitir",
+ "emoción",
+ "empate",
+ "empeño",
+ "empleo",
+ "empresa",
+ "enano",
+ "encargo",
+ "enchufe",
+ "encía",
+ "enemigo",
+ "enero",
+ "enfado",
+ "enfermo",
+ "engaño",
+ "enigma",
+ "enlace",
+ "enorme",
+ "enredo",
+ "ensayo",
+ "enseñar",
+ "entero",
+ "entrar",
+ "envase",
+ "envío",
+ "época",
+ "equipo",
+ "erizo",
+ "escala",
+ "escena",
+ "escolar",
+ "escribir",
+ "escudo",
+ "esencia",
+ "esfera",
+ "esfuerzo",
+ "espada",
+ "espejo",
+ "espía",
+ "esposa",
+ "espuma",
+ "esquí",
+ "estar",
+ "este",
+ "estilo",
+ "estufa",
+ "etapa",
+ "eterno",
+ "ética",
+ "etnia",
+ "evadir",
+ "evaluar",
+ "evento",
+ "evitar",
+ "exacto",
+ "examen",
+ "exceso",
+ "excusa",
+ "exento",
+ "exigir",
+ "exilio",
+ "existir",
+ "éxito",
+ "experto",
+ "explicar",
+ "exponer",
+ "extremo",
+ "fábrica",
+ "fábula",
+ "fachada",
+ "fácil",
+ "factor",
+ "faena",
+ "faja",
+ "falda",
+ "fallo",
+ "falso",
+ "faltar",
+ "fama",
+ "familia",
+ "famoso",
+ "faraón",
+ "farmacia",
+ "farol",
+ "farsa",
+ "fase",
+ "fatiga",
+ "fauna",
+ "favor",
+ "fax",
+ "febrero",
+ "fecha",
+ "feliz",
+ "feo",
+ "feria",
+ "feroz",
+ "fértil",
+ "fervor",
+ "festín",
+ "fiable",
+ "fianza",
+ "fiar",
+ "fibra",
+ "ficción",
+ "ficha",
+ "fideo",
+ "fiebre",
+ "fiel",
+ "fiera",
+ "fiesta",
+ "figura",
+ "fijar",
+ "fijo",
+ "fila",
+ "filete",
+ "filial",
+ "filtro",
+ "fin",
+ "finca",
+ "fingir",
+ "finito",
+ "firma",
+ "flaco",
+ "flauta",
+ "flecha",
+ "flor",
+ "flota",
+ "fluir",
+ "flujo",
+ "flúor",
+ "fobia",
+ "foca",
+ "fogata",
+ "fogón",
+ "folio",
+ "folleto",
+ "fondo",
+ "forma",
+ "forro",
+ "fortuna",
+ "forzar",
+ "fosa",
+ "foto",
+ "fracaso",
+ "frágil",
+ "franja",
+ "frase",
+ "fraude",
+ "freír",
+ "freno",
+ "fresa",
+ "frío",
+ "frito",
+ "fruta",
+ "fuego",
+ "fuente",
+ "fuerza",
+ "fuga",
+ "fumar",
+ "función",
+ "funda",
+ "furgón",
+ "furia",
+ "fusil",
+ "fútbol",
+ "futuro",
+ "gacela",
+ "gafas",
+ "gaita",
+ "gajo",
+ "gala",
+ "galería",
+ "gallo",
+ "gamba",
+ "ganar",
+ "gancho",
+ "ganga",
+ "ganso",
+ "garaje",
+ "garza",
+ "gasolina",
+ "gastar",
+ "gato",
+ "gavilán",
+ "gemelo",
+ "gemir",
+ "gen",
+ "género",
+ "genio",
+ "gente",
+ "geranio",
+ "gerente",
+ "germen",
+ "gesto",
+ "gigante",
+ "gimnasio",
+ "girar",
+ "giro",
+ "glaciar",
+ "globo",
+ "gloria",
+ "gol",
+ "golfo",
+ "goloso",
+ "golpe",
+ "goma",
+ "gordo",
+ "gorila",
+ "gorra",
+ "gota",
+ "goteo",
+ "gozar",
+ "grada",
+ "gráfico",
+ "grano",
+ "grasa",
+ "gratis",
+ "grave",
+ "grieta",
+ "grillo",
+ "gripe",
+ "gris",
+ "grito",
+ "grosor",
+ "grúa",
+ "grueso",
+ "grumo",
+ "grupo",
+ "guante",
+ "guapo",
+ "guardia",
+ "guerra",
+ "guía",
+ "guiño",
+ "guion",
+ "guiso",
+ "guitarra",
+ "gusano",
+ "gustar",
+ "haber",
+ "hábil",
+ "hablar",
+ "hacer",
+ "hacha",
+ "hada",
+ "hallar",
+ "hamaca",
+ "harina",
+ "haz",
+ "hazaña",
+ "hebilla",
+ "hebra",
+ "hecho",
+ "helado",
+ "helio",
+ "hembra",
+ "herir",
+ "hermano",
+ "héroe",
+ "hervir",
+ "hielo",
+ "hierro",
+ "hígado",
+ "higiene",
+ "hijo",
+ "himno",
+ "historia",
+ "hocico",
+ "hogar",
+ "hoguera",
+ "hoja",
+ "hombre",
+ "hongo",
+ "honor",
+ "honra",
+ "hora",
+ "hormiga",
+ "horno",
+ "hostil",
+ "hoyo",
+ "hueco",
+ "huelga",
+ "huerta",
+ "hueso",
+ "huevo",
+ "huida",
+ "huir",
+ "humano",
+ "húmedo",
+ "humilde",
+ "humo",
+ "hundir",
+ "huracán",
+ "hurto",
+ "icono",
+ "ideal",
+ "idioma",
+ "ídolo",
+ "iglesia",
+ "iglú",
+ "igual",
+ "ilegal",
+ "ilusión",
+ "imagen",
+ "imán",
+ "imitar",
+ "impar",
+ "imperio",
+ "imponer",
+ "impulso",
+ "incapaz",
+ "índice",
+ "inerte",
+ "infiel",
+ "informe",
+ "ingenio",
+ "inicio",
+ "inmenso",
+ "inmune",
+ "innato",
+ "insecto",
+ "instante",
+ "interés",
+ "íntimo",
+ "intuir",
+ "inútil",
+ "invierno",
+ "ira",
+ "iris",
+ "ironía",
+ "isla",
+ "islote",
+ "jabalí",
+ "jabón",
+ "jamón",
+ "jarabe",
+ "jardín",
+ "jarra",
+ "jaula",
+ "jazmín",
+ "jefe",
+ "jeringa",
+ "jinete",
+ "jornada",
+ "joroba",
+ "joven",
+ "joya",
+ "juerga",
+ "jueves",
+ "juez",
+ "jugador",
+ "jugo",
+ "juguete",
+ "juicio",
+ "junco",
+ "jungla",
+ "junio",
+ "juntar",
+ "júpiter",
+ "jurar",
+ "justo",
+ "juvenil",
+ "juzgar",
+ "kilo",
+ "koala",
+ "labio",
+ "lacio",
+ "lacra",
+ "lado",
+ "ladrón",
+ "lagarto",
+ "lágrima",
+ "laguna",
+ "laico",
+ "lamer",
+ "lámina",
+ "lámpara",
+ "lana",
+ "lancha",
+ "langosta",
+ "lanza",
+ "lápiz",
+ "largo",
+ "larva",
+ "lástima",
+ "lata",
+ "látex",
+ "latir",
+ "laurel",
+ "lavar",
+ "lazo",
+ "leal",
+ "lección",
+ "leche",
+ "lector",
+ "leer",
+ "legión",
+ "legumbre",
+ "lejano",
+ "lengua",
+ "lento",
+ "leña",
+ "león",
+ "leopardo",
+ "lesión",
+ "letal",
+ "letra",
+ "leve",
+ "leyenda",
+ "libertad",
+ "libro",
+ "licor",
+ "líder",
+ "lidiar",
+ "lienzo",
+ "liga",
+ "ligero",
+ "lima",
+ "límite",
+ "limón",
+ "limpio",
+ "lince",
+ "lindo",
+ "línea",
+ "lingote",
+ "lino",
+ "linterna",
+ "líquido",
+ "liso",
+ "lista",
+ "litera",
+ "litio",
+ "litro",
+ "llaga",
+ "llama",
+ "llanto",
+ "llave",
+ "llegar",
+ "llenar",
+ "llevar",
+ "llorar",
+ "llover",
+ "lluvia",
+ "lobo",
+ "loción",
+ "loco",
+ "locura",
+ "lógica",
+ "logro",
+ "lombriz",
+ "lomo",
+ "lonja",
+ "lote",
+ "lucha",
+ "lucir",
+ "lugar",
+ "lujo",
+ "luna",
+ "lunes",
+ "lupa",
+ "lustro",
+ "luto",
+ "luz",
+ "maceta",
+ "macho",
+ "madera",
+ "madre",
+ "maduro",
+ "maestro",
+ "mafia",
+ "magia",
+ "mago",
+ "maíz",
+ "maldad",
+ "maleta",
+ "malla",
+ "malo",
+ "mamá",
+ "mambo",
+ "mamut",
+ "manco",
+ "mando",
+ "manejar",
+ "manga",
+ "maniquí",
+ "manjar",
+ "mano",
+ "manso",
+ "manta",
+ "mañana",
+ "mapa",
+ "máquina",
+ "mar",
+ "marco",
+ "marea",
+ "marfil",
+ "margen",
+ "marido",
+ "mármol",
+ "marrón",
+ "martes",
+ "marzo",
+ "masa",
+ "máscara",
+ "masivo",
+ "matar",
+ "materia",
+ "matiz",
+ "matriz",
+ "máximo",
+ "mayor",
+ "mazorca",
+ "mecha",
+ "medalla",
+ "medio",
+ "médula",
+ "mejilla",
+ "mejor",
+ "melena",
+ "melón",
+ "memoria",
+ "menor",
+ "mensaje",
+ "mente",
+ "menú",
+ "mercado",
+ "merengue",
+ "mérito",
+ "mes",
+ "mesón",
+ "meta",
+ "meter",
+ "método",
+ "metro",
+ "mezcla",
+ "miedo",
+ "miel",
+ "miembro",
+ "miga",
+ "mil",
+ "milagro",
+ "militar",
+ "millón",
+ "mimo",
+ "mina",
+ "minero",
+ "mínimo",
+ "minuto",
+ "miope",
+ "mirar",
+ "misa",
+ "miseria",
+ "misil",
+ "mismo",
+ "mitad",
+ "mito",
+ "mochila",
+ "moción",
+ "moda",
+ "modelo",
+ "moho",
+ "mojar",
+ "molde",
+ "moler",
+ "molino",
+ "momento",
+ "momia",
+ "monarca",
+ "moneda",
+ "monja",
+ "monto",
+ "moño",
+ "morada",
+ "morder",
+ "moreno",
+ "morir",
+ "morro",
+ "morsa",
+ "mortal",
+ "mosca",
+ "mostrar",
+ "motivo",
+ "mover",
+ "móvil",
+ "mozo",
+ "mucho",
+ "mudar",
+ "mueble",
+ "muela",
+ "muerte",
+ "muestra",
+ "mugre",
+ "mujer",
+ "mula",
+ "muleta",
+ "multa",
+ "mundo",
+ "muñeca",
+ "mural",
+ "muro",
+ "músculo",
+ "museo",
+ "musgo",
+ "música",
+ "muslo",
+ "nácar",
+ "nación",
+ "nadar",
+ "naipe",
+ "naranja",
+ "nariz",
+ "narrar",
+ "nasal",
+ "natal",
+ "nativo",
+ "natural",
+ "náusea",
+ "naval",
+ "nave",
+ "navidad",
+ "necio",
+ "néctar",
+ "negar",
+ "negocio",
+ "negro",
+ "neón",
+ "nervio",
+ "neto",
+ "neutro",
+ "nevar",
+ "nevera",
+ "nicho",
+ "nido",
+ "niebla",
+ "nieto",
+ "niñez",
+ "niño",
+ "nítido",
+ "nivel",
+ "nobleza",
+ "noche",
+ "nómina",
+ "noria",
+ "norma",
+ "norte",
+ "nota",
+ "noticia",
+ "novato",
+ "novela",
+ "novio",
+ "nube",
+ "nuca",
+ "núcleo",
+ "nudillo",
+ "nudo",
+ "nuera",
+ "nueve",
+ "nuez",
+ "nulo",
+ "número",
+ "nutria",
+ "oasis",
+ "obeso",
+ "obispo",
+ "objeto",
+ "obra",
+ "obrero",
+ "observar",
+ "obtener",
+ "obvio",
+ "oca",
+ "ocaso",
+ "océano",
+ "ochenta",
+ "ocho",
+ "ocio",
+ "ocre",
+ "octavo",
+ "octubre",
+ "oculto",
+ "ocupar",
+ "ocurrir",
+ "odiar",
+ "odio",
+ "odisea",
+ "oeste",
+ "ofensa",
+ "oferta",
+ "oficio",
+ "ofrecer",
+ "ogro",
+ "oído",
+ "oír",
+ "ojo",
+ "ola",
+ "oleada",
+ "olfato",
+ "olivo",
+ "olla",
+ "olmo",
+ "olor",
+ "olvido",
+ "ombligo",
+ "onda",
+ "onza",
+ "opaco",
+ "opción",
+ "ópera",
+ "opinar",
+ "oponer",
+ "optar",
+ "óptica",
+ "opuesto",
+ "oración",
+ "orador",
+ "oral",
+ "órbita",
+ "orca",
+ "orden",
+ "oreja",
+ "órgano",
+ "orgía",
+ "orgullo",
+ "oriente",
+ "origen",
+ "orilla",
+ "oro",
+ "orquesta",
+ "oruga",
+ "osadía",
+ "oscuro",
+ "osezno",
+ "oso",
+ "ostra",
+ "otoño",
+ "otro",
+ "oveja",
+ "óvulo",
+ "óxido",
+ "oxígeno",
+ "oyente",
+ "ozono",
+ "pacto",
+ "padre",
+ "paella",
+ "página",
+ "pago",
+ "país",
+ "pájaro",
+ "palabra",
+ "palco",
+ "paleta",
+ "pálido",
+ "palma",
+ "paloma",
+ "palpar",
+ "pan",
+ "panal",
+ "pánico",
+ "pantera",
+ "pañuelo",
+ "papá",
+ "papel",
+ "papilla",
+ "paquete",
+ "parar",
+ "parcela",
+ "pared",
+ "parir",
+ "paro",
+ "párpado",
+ "parque",
+ "párrafo",
+ "parte",
+ "pasar",
+ "paseo",
+ "pasión",
+ "paso",
+ "pasta",
+ "pata",
+ "patio",
+ "patria",
+ "pausa",
+ "pauta",
+ "pavo",
+ "payaso",
+ "peatón",
+ "pecado",
+ "pecera",
+ "pecho",
+ "pedal",
+ "pedir",
+ "pegar",
+ "peine",
+ "pelar",
+ "peldaño",
+ "pelea",
+ "peligro",
+ "pellejo",
+ "pelo",
+ "peluca",
+ "pena",
+ "pensar",
+ "peñón",
+ "peón",
+ "peor",
+ "pepino",
+ "pequeño",
+ "pera",
+ "percha",
+ "perder",
+ "pereza",
+ "perfil",
+ "perico",
+ "perla",
+ "permiso",
+ "perro",
+ "persona",
+ "pesa",
+ "pesca",
+ "pésimo",
+ "pestaña",
+ "pétalo",
+ "petróleo",
+ "pez",
+ "pezuña",
+ "picar",
+ "pichón",
+ "pie",
+ "piedra",
+ "pierna",
+ "pieza",
+ "pijama",
+ "pilar",
+ "piloto",
+ "pimienta",
+ "pino",
+ "pintor",
+ "pinza",
+ "piña",
+ "piojo",
+ "pipa",
+ "pirata",
+ "pisar",
+ "piscina",
+ "piso",
+ "pista",
+ "pitón",
+ "pizca",
+ "placa",
+ "plan",
+ "plata",
+ "playa",
+ "plaza",
+ "pleito",
+ "pleno",
+ "plomo",
+ "pluma",
+ "plural",
+ "pobre",
+ "poco",
+ "poder",
+ "podio",
+ "poema",
+ "poesía",
+ "poeta",
+ "polen",
+ "policía",
+ "pollo",
+ "polvo",
+ "pomada",
+ "pomelo",
+ "pomo",
+ "pompa",
+ "poner",
+ "porción",
+ "portal",
+ "posada",
+ "poseer",
+ "posible",
+ "poste",
+ "potencia",
+ "potro",
+ "pozo",
+ "prado",
+ "precoz",
+ "pregunta",
+ "premio",
+ "prensa",
+ "preso",
+ "previo",
+ "primo",
+ "príncipe",
+ "prisión",
+ "privar",
+ "proa",
+ "probar",
+ "proceso",
+ "producto",
+ "proeza",
+ "profesor",
+ "programa",
+ "prole",
+ "promesa",
+ "pronto",
+ "propio",
+ "próximo",
+ "prueba",
+ "público",
+ "puchero",
+ "pudor",
+ "pueblo",
+ "puerta",
+ "puesto",
+ "pulga",
+ "pulir",
+ "pulmón",
+ "pulpo",
+ "pulso",
+ "puma",
+ "punto",
+ "puñal",
+ "puño",
+ "pupa",
+ "pupila",
+ "puré",
+ "quedar",
+ "queja",
+ "quemar",
+ "querer",
+ "queso",
+ "quieto",
+ "química",
+ "quince",
+ "quitar",
+ "rábano",
+ "rabia",
+ "rabo",
+ "ración",
+ "radical",
+ "raíz",
+ "rama",
+ "rampa",
+ "rancho",
+ "rango",
+ "rapaz",
+ "rápido",
+ "rapto",
+ "rasgo",
+ "raspa",
+ "rato",
+ "rayo",
+ "raza",
+ "razón",
+ "reacción",
+ "realidad",
+ "rebaño",
+ "rebote",
+ "recaer",
+ "receta",
+ "rechazo",
+ "recoger",
+ "recreo",
+ "recto",
+ "recurso",
+ "red",
+ "redondo",
+ "reducir",
+ "reflejo",
+ "reforma",
+ "refrán",
+ "refugio",
+ "regalo",
+ "regir",
+ "regla",
+ "regreso",
+ "rehén",
+ "reino",
+ "reír",
+ "reja",
+ "relato",
+ "relevo",
+ "relieve",
+ "relleno",
+ "reloj",
+ "remar",
+ "remedio",
+ "remo",
+ "rencor",
+ "rendir",
+ "renta",
+ "reparto",
+ "repetir",
+ "reposo",
+ "reptil",
+ "res",
+ "rescate",
+ "resina",
+ "respeto",
+ "resto",
+ "resumen",
+ "retiro",
+ "retorno",
+ "retrato",
+ "reunir",
+ "revés",
+ "revista",
+ "rey",
+ "rezar",
+ "rico",
+ "riego",
+ "rienda",
+ "riesgo",
+ "rifa",
+ "rígido",
+ "rigor",
+ "rincón",
+ "riñón",
+ "río",
+ "riqueza",
+ "risa",
+ "ritmo",
+ "rito",
+ "rizo",
+ "roble",
+ "roce",
+ "rociar",
+ "rodar",
+ "rodeo",
+ "rodilla",
+ "roer",
+ "rojizo",
+ "rojo",
+ "romero",
+ "romper",
+ "ron",
+ "ronco",
+ "ronda",
+ "ropa",
+ "ropero",
+ "rosa",
+ "rosca",
+ "rostro",
+ "rotar",
+ "rubí",
+ "rubor",
+ "rudo",
+ "rueda",
+ "rugir",
+ "ruido",
+ "ruina",
+ "ruleta",
+ "rulo",
+ "rumbo",
+ "rumor",
+ "ruptura",
+ "ruta",
+ "rutina",
+ "sábado",
+ "saber",
+ "sabio",
+ "sable",
+ "sacar",
+ "sagaz",
+ "sagrado",
+ "sala",
+ "saldo",
+ "salero",
+ "salir",
+ "salmón",
+ "salón",
+ "salsa",
+ "salto",
+ "salud",
+ "salvar",
+ "samba",
+ "sanción",
+ "sandía",
+ "sanear",
+ "sangre",
+ "sanidad",
+ "sano",
+ "santo",
+ "sapo",
+ "saque",
+ "sardina",
+ "sartén",
+ "sastre",
+ "satán",
+ "sauna",
+ "saxofón",
+ "sección",
+ "seco",
+ "secreto",
+ "secta",
+ "sed",
+ "seguir",
+ "seis",
+ "sello",
+ "selva",
+ "semana",
+ "semilla",
+ "senda",
+ "sensor",
+ "señal",
+ "señor",
+ "separar",
+ "sepia",
+ "sequía",
+ "ser",
+ "serie",
+ "sermón",
+ "servir",
+ "sesenta",
+ "sesión",
+ "seta",
+ "setenta",
+ "severo",
+ "sexo",
+ "sexto",
+ "sidra",
+ "siesta",
+ "siete",
+ "siglo",
+ "signo",
+ "sílaba",
+ "silbar",
+ "silencio",
+ "silla",
+ "símbolo",
+ "simio",
+ "sirena",
+ "sistema",
+ "sitio",
+ "situar",
+ "sobre",
+ "socio",
+ "sodio",
+ "sol",
+ "solapa",
+ "soldado",
+ "soledad",
+ "sólido",
+ "soltar",
+ "solución",
+ "sombra",
+ "sondeo",
+ "sonido",
+ "sonoro",
+ "sonrisa",
+ "sopa",
+ "soplar",
+ "soporte",
+ "sordo",
+ "sorpresa",
+ "sorteo",
+ "sostén",
+ "sótano",
+ "suave",
+ "subir",
+ "suceso",
+ "sudor",
+ "suegra",
+ "suelo",
+ "sueño",
+ "suerte",
+ "sufrir",
+ "sujeto",
+ "sultán",
+ "sumar",
+ "superar",
+ "suplir",
+ "suponer",
+ "supremo",
+ "sur",
+ "surco",
+ "sureño",
+ "surgir",
+ "susto",
+ "sutil",
+ "tabaco",
+ "tabique",
+ "tabla",
+ "tabú",
+ "taco",
+ "tacto",
+ "tajo",
+ "talar",
+ "talco",
+ "talento",
+ "talla",
+ "talón",
+ "tamaño",
+ "tambor",
+ "tango",
+ "tanque",
+ "tapa",
+ "tapete",
+ "tapia",
+ "tapón",
+ "taquilla",
+ "tarde",
+ "tarea",
+ "tarifa",
+ "tarjeta",
+ "tarot",
+ "tarro",
+ "tarta",
+ "tatuaje",
+ "tauro",
+ "taza",
+ "tazón",
+ "teatro",
+ "techo",
+ "tecla",
+ "técnica",
+ "tejado",
+ "tejer",
+ "tejido",
+ "tela",
+ "teléfono",
+ "tema",
+ "temor",
+ "templo",
+ "tenaz",
+ "tender",
+ "tener",
+ "tenis",
+ "tenso",
+ "teoría",
+ "terapia",
+ "terco",
+ "término",
+ "ternura",
+ "terror",
+ "tesis",
+ "tesoro",
+ "testigo",
+ "tetera",
+ "texto",
+ "tez",
+ "tibio",
+ "tiburón",
+ "tiempo",
+ "tienda",
+ "tierra",
+ "tieso",
+ "tigre",
+ "tijera",
+ "tilde",
+ "timbre",
+ "tímido",
+ "timo",
+ "tinta",
+ "tío",
+ "típico",
+ "tipo",
+ "tira",
+ "tirón",
+ "titán",
+ "títere",
+ "título",
+ "tiza",
+ "toalla",
+ "tobillo",
+ "tocar",
+ "tocino",
+ "todo",
+ "toga",
+ "toldo",
+ "tomar",
+ "tono",
+ "tonto",
+ "topar",
+ "tope",
+ "toque",
+ "tórax",
+ "torero",
+ "tormenta",
+ "torneo",
+ "toro",
+ "torpedo",
+ "torre",
+ "torso",
+ "tortuga",
+ "tos",
+ "tosco",
+ "toser",
+ "tóxico",
+ "trabajo",
+ "tractor",
+ "traer",
+ "tráfico",
+ "trago",
+ "traje",
+ "tramo",
+ "trance",
+ "trato",
+ "trauma",
+ "trazar",
+ "trébol",
+ "tregua",
+ "treinta",
+ "tren",
+ "trepar",
+ "tres",
+ "tribu",
+ "trigo",
+ "tripa",
+ "triste",
+ "triunfo",
+ "trofeo",
+ "trompa",
+ "tronco",
+ "tropa",
+ "trote",
+ "trozo",
+ "truco",
+ "trueno",
+ "trufa",
+ "tubería",
+ "tubo",
+ "tuerto",
+ "tumba",
+ "tumor",
+ "túnel",
+ "túnica",
+ "turbina",
+ "turismo",
+ "turno",
+ "tutor",
+ "ubicar",
+ "úlcera",
+ "umbral",
+ "unidad",
+ "unir",
+ "universo",
+ "uno",
+ "untar",
+ "uña",
+ "urbano",
+ "urbe",
+ "urgente",
+ "urna",
+ "usar",
+ "usuario",
+ "útil",
+ "utopía",
+ "uva",
+ "vaca",
+ "vacío",
+ "vacuna",
+ "vagar",
+ "vago",
+ "vaina",
+ "vajilla",
+ "vale",
+ "válido",
+ "valle",
+ "valor",
+ "válvula",
+ "vampiro",
+ "vara",
+ "variar",
+ "varón",
+ "vaso",
+ "vecino",
+ "vector",
+ "vehículo",
+ "veinte",
+ "vejez",
+ "vela",
+ "velero",
+ "veloz",
+ "vena",
+ "vencer",
+ "venda",
+ "veneno",
+ "vengar",
+ "venir",
+ "venta",
+ "venus",
+ "ver",
+ "verano",
+ "verbo",
+ "verde",
+ "vereda",
+ "verja",
+ "verso",
+ "verter",
+ "vía",
+ "viaje",
+ "vibrar",
+ "vicio",
+ "víctima",
+ "vida",
+ "vídeo",
+ "vidrio",
+ "viejo",
+ "viernes",
+ "vigor",
+ "vil",
+ "villa",
+ "vinagre",
+ "vino",
+ "viñedo",
+ "violín",
+ "viral",
+ "virgo",
+ "virtud",
+ "visor",
+ "víspera",
+ "vista",
+ "vitamina",
+ "viudo",
+ "vivaz",
+ "vivero",
+ "vivir",
+ "vivo",
+ "volcán",
+ "volumen",
+ "volver",
+ "voraz",
+ "votar",
+ "voto",
+ "voz",
+ "vuelo",
+ "vulgar",
+ "yacer",
+ "yate",
+ "yegua",
+ "yema",
+ "yerno",
+ "yeso",
+ "yodo",
+ "yoga",
+ "yogur",
+ "zafiro",
+ "zanja",
+ "zapato",
+ "zarza",
+ "zona",
+ "zorro",
+ "zumo",
+ "zurdo"
+ };
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/hashing/Sha256.java b/app/src/main/java/io/github/novacrypto/hashing/Sha256.java
new file mode 100644
index 0000000000..ca582773b1
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/hashing/Sha256.java
@@ -0,0 +1,65 @@
+/*
+ * SHA-256 library
+ *
+ * Copyright (C) 2017-2022 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/SHA256
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.hashing;
+
+import io.github.novacrypto.toruntime.CheckedExceptionToRuntime;
+
+import java.security.MessageDigest;
+
+import static io.github.novacrypto.toruntime.CheckedExceptionToRuntime.toRuntime;
+
+public final class Sha256 {
+
+ Sha256() {
+ }
+
+ public static byte[] sha256(final byte[] bytes) {
+ return sha256(bytes, 0, bytes.length);
+ }
+
+ public static byte[] sha256(final byte[] bytes, final int offset, final int length) {
+ final MessageDigest digest = sha256();
+ digest.update(bytes, offset, length);
+ return digest.digest();
+ }
+
+ public static byte[] sha256Twice(final byte[] bytes) {
+ return sha256Twice(bytes, 0, bytes.length);
+ }
+
+ public static byte[] sha256Twice(final byte[] bytes, final int offset, final int length) {
+ final MessageDigest digest = sha256();
+ digest.update(bytes, offset, length);
+ digest.update(digest.digest());
+ return digest.digest();
+ }
+
+ private static MessageDigest sha256() {
+ return toRuntime(new CheckedExceptionToRuntime.Func() {
+ @Override
+ public MessageDigest run() throws Exception {
+ return MessageDigest.getInstance("SHA-256");
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/novacrypto/toruntime/CheckedExceptionToRuntime.java b/app/src/main/java/io/github/novacrypto/toruntime/CheckedExceptionToRuntime.java
new file mode 100644
index 0000000000..0d9fb4d55e
--- /dev/null
+++ b/app/src/main/java/io/github/novacrypto/toruntime/CheckedExceptionToRuntime.java
@@ -0,0 +1,64 @@
+/*
+ * ToRuntime library, Java promotions of checked exceptions to runtime exceptions
+ * Copyright (C) 2017-2022 Alan Evans, NovaCrypto
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ * Original source: https://github.com/NovaCrypto/ToRuntime
+ * You can contact the authors via github issues.
+ */
+
+package io.github.novacrypto.toruntime;
+
+/**
+ * Promotes any exceptions thrown to {@link RuntimeException}
+ */
+public final class CheckedExceptionToRuntime {
+
+ public interface Func {
+ T run() throws Exception;
+ }
+
+ public interface Action {
+ void run() throws Exception;
+ }
+
+ /**
+ * Promotes any exceptions thrown to {@link RuntimeException}
+ *
+ * @param function Function to run
+ * @param Return type
+ * @return returns the result of the function
+ */
+ public static T toRuntime(final Func function) {
+ try {
+ return function.run();
+ } catch (final Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Promotes any exceptions thrown to {@link RuntimeException}
+ *
+ * @param function Function to run
+ */
+ public static void toRuntime(final Action function) {
+ try {
+ function.run();
+ } catch (final Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_options_privacy.xml b/app/src/main/res/layout/fragment_options_privacy.xml
index d683cf563c..4e22ff8a12 100644
--- a/app/src/main/res/layout/fragment_options_privacy.xml
+++ b/app/src/main/res/layout/fragment_options_privacy.xml
@@ -646,6 +646,43 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swDisconnectImages" />
+
+
+
+
+
+
Automatically update lists weekly
Use lists to warn about tracking links
Use lists to recognize tracking images
+ Delete data remotely
+ Any email received with the below words in the subject line will automatically and immediately delete all app data on this device
Delete all data
All app data will be irreversibly deleted!