From e5438193ff81b93b85e0bfe141a01a75d83b411d Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Wed, 2 Jan 2019 09:31:21 -0600 Subject: [PATCH 01/65] Add google-services.json to gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 18de017..0054ce8 100644 --- a/.gitignore +++ b/.gitignore @@ -64,3 +64,7 @@ app/fabric.properties # Allocation tracker /captures/* + +# Google services info +app/google-services.json + From 573ae1d1dd7634a8bcaee80f40c8f3ee1d7a8c13 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Wed, 2 Jan 2019 09:59:30 -0600 Subject: [PATCH 02/65] Update Gradle plugin version, navigation architecture components library version and Crsshlytics library version. --- app/build.gradle | 9 +++++++-- .../fragments/SendTransactionFragment.kt | 2 +- build.gradle | 6 +++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c6a5677..d45ce5c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,6 +34,11 @@ android { exclude 'lib/x86_64/freebsd/libscrypt.so' exclude 'lib/x86_64/linux/libscrypt.so' } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { @@ -47,7 +52,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" // AndroidX implementation 'androidx.appcompat:appcompat:1.0.2' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3' // Google implementation 'com.google.zxing:core:3.3.1' implementation 'com.google.code.gson:gson:2.8.5' @@ -73,7 +78,7 @@ dependencies { //Firebase implementation 'com.google.firebase:firebase-core:16.0.6' implementation 'com.google.firebase:firebase-crash:16.2.1' - implementation 'com.crashlytics.sdk.android:crashlytics:2.9.7' + implementation 'com.crashlytics.sdk.android:crashlytics:2.9.8' // Others implementation 'org.bitcoinj:bitcoinj-core:0.14.3' implementation 'com.moldedbits.r2d2:r2d2:1.0.1' diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt index 80db5b1..caf1374 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt @@ -122,7 +122,7 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv mUserAccount = UserAccount(userId) // Use Navigation SafeArgs to decide if we should activate or not the camera feed - val safeArgs = SendTransactionFragmentArgs.fromBundle(arguments) + val safeArgs = SendTransactionFragmentArgs.fromBundle(arguments!!) if (safeArgs.openCamera) verifyCameraPermission() diff --git a/build.gradle b/build.gradle index 41016e7..74d9ad6 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.0' + ext.kotlin_version = '1.3.11' repositories { google() jcenter() @@ -11,9 +11,9 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.3.0-rc02' + classpath 'com.android.tools.build:gradle:3.3.0-rc03' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha08" + classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha09" classpath 'com.google.gms:google-services:4.2.0' classpath 'io.fabric.tools:gradle:1.27.0' From 71f2a8b25b341ae0eba7eb1c1bfd7333cf5ae122 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Wed, 2 Jan 2019 14:11:44 -0600 Subject: [PATCH 03/65] Remove the eula from the strings and placed it instead as a file into the Assets folder. We found that using the loadUrl WebView's method instead of loadData renders the html page better, for that reason the eula is now saved as a fule in the assets folder and loaded using the WebView's loadUrl method. --- app/src/main/assets/eula.html | 1 + .../agorise/bitsybitshareswallet/activities/LicenseActivity.kt | 2 +- app/src/main/res/values/strings.xml | 3 --- 3 files changed, 2 insertions(+), 4 deletions(-) create mode 100644 app/src/main/assets/eula.html diff --git a/app/src/main/assets/eula.html b/app/src/main/assets/eula.html new file mode 100644 index 0000000..ba2d6b7 --- /dev/null +++ b/app/src/main/assets/eula.html @@ -0,0 +1 @@ +

                  

BiTSy Terms and Conditions of Use

 

BiTSy is a software Application (also known as an “App”) developed by the International Business Company “AGORISE, LTD.”, which has been established under Cypriot law. Any person wishing to use this App is obliged to accept the following Terms and Conditions of Use, before any such use:

 

Part I - Terminology

 

The following Terminology applies to these Terms and Conditions of Use (hereinafter referred to as “Terms”), the Privacy and Transparency Statement, and all other agreements between You and Us:

  • The terms “Client”, “Customer”, “Merchant”, “User”, “You” and “Your” refer to you, the person accessing the BiTSy software Application (hereinafter referred to as “App”) and hereby accepting our Terms.
  • The terms “Agorise”, “The Company”, “Our”, “Ourselves”, “We” and “Us” collectively refer to the App and to its owners, freelancers, developers, designers, contractors, directors, officers, employees, agents, insurers, suppliers, and attorneys.
  • The term “Party” refers to either You or Us.
  • In all the above-mentioned Terms, unless otherwise specified, words using the singular include the plural and vice versa and words using gender include all genders.
  • The terms “digital asset”, “asset”, “coin”, “cryptocurrency”, “ledger entry”, “altcoin” and “token” refer to blockchain-based software ledger data entries.
  • The term “Blockchain” refers to a chain of blocks, processed by hundreds of computers around the world. A blockchain (like “Bitshares”) is a decentralized network of computers, an immutable distributed ledger. As each block of transactions is confirmed every 3 (three) seconds, it is hashed together with the latest block in the chain, forming the next block in the chain. Hence the term blockchain.
  • The term “Ledger” refers to a digital version of the “big book” of blocks of transactions taking place on a blockchain. The Distributed ledger keeps track of all transactions on a blockchain network.
  • The name “Morphit” refers to the name chosen by our Company for the Bridge.
  • The term “Bridge” refers to a company or autonomous software (like the “Morphit” feature of our App) which converts/morphs one cryptocurrency into another by way of seeking the best possible price for the Customer by using various third-party exchanges.
  • The terms “Teller” or “Gateway” refers to a person or company (or autonomous software) that converts “fiat” (USD, EUR, CNY, etc) into cryptocurrencies, and vice-versa, whether by cash, card, Swift or SEPA, etc.
  • The term “Multisig” refers to Multiple Signatories. Multiple people or accounts that are assigned to validate a transaction before it can be allowed to be processed, and entered into a block on the chain. Typically, two or more people sign the transaction with their private key (Public Key Infrastructure (PKI)) which will approve the transaction to be sent.
  • For the term “Bitshares” more information can usually be found at the website: http://www.bitshares.org
  • The term “Coin” refers to a digital token. It is underlined that this term is still loosely defined in legislation. It’s a unit of value (if it has any value at all, as determined by the free market) which is running on a blockchain.
  • The term “BTS” refers to the core token that the Bitshares platform uses to determine fair-market values for tokens.

 

Part II - Terms and Conditions of Use

 

By using the App, you represent and warrant that you are:

  1. at least 18 (eighteen) years old and have full capacity to contract under the applicable law;
  2. only transacting with the App with legally-obtained funds that belong to you;
  3. not furthering, performing, undertaking, engaging in, aiding, or abetting any unlawful activity through your relationship with Us or through your use of the App (for example: money laundering, etc); and,
  4. comporting with and obeying all applicable laws.

 

We reserve the right to terminate your access to the App for any breach or our Terms, in our sole and absolute discretion, if the App ceases to exist and/or following a decision of the Company. Use of the App is void where prohibited by applicable law.

 

1. Terms

 

1.1 By accessing the App, you agree to be bound by our Terms, all applicable laws and regulations in Cyprus, and you agree that you are responsible for compliance with, and that you are compliant with applicable law.

 

1.2 If you do not agree with any of our Terms, you are prohibited from using or accessing the App. Your only recourse is to stop using the App. Any use of the App after accepting these Terms is considered to be a deemed acceptance of our Terms, as they may be modified and amended from time to time.

 

1.3 The materials contained in the App are protected by applicable copyright and trademark laws in Cyprus and EU and international treaties. The updates of our Terms, as they appear on our website, take into account the legislative modifications.

 

1.4 By accepting our Terms, you expressly accept that data of transactions made when accessing the App might be exported outside the jurisdiction in which you reside or are located when you access the App. This export is an inherent part of our App and is necessary for its functioning and does not include personal data of Users in any way.

 

1.5 By using any of the third-parties linked to within the App (such as Tellers or Gateways), it is not an endorsement of those third-parties, nor is it a guarantee of any kind that using those third-parties will not result in loss of funds or other damages. Use those third-parties at your own risk.

 

2. Limitations

 

The use of this App may carry financial risk for any User, and is to be used as an experimental software utility only. In no event shall We be liable or responsible for any damages, claims, applications, losses, injuries, delays, accidents, costs, business interruption costs, or other expenses (including, without limitation, attorneys’ fees or the costs of any claim or suit), nor for any incidental, direct, general, indirect, special, punitive, exemplary, or consequential damages, loss of goodwill or business profits, loss of cryptocurrency or digital assets, work stoppage, computer or device failure or malfunction, or any other commercial or other losses directly or indirectly arising out of or related to:

  1. our Terms;
  2. the Privacy and Transparency Statement;
  3. any service We provide;
  4. the use of the App;
  5. any use of your digital assets or cryptocurrency with the App by any other party not authorized by you (collectively, all of the foregoing items shall be referred to herein as “Losses”).

 

We are hereby released by You from liability for any kind of the above-mentioned Losses. We disclaim any and all warranties or guarantees, including any warranty of merchantability and warranty of fitness for any particular purpose.

 

The foregoing limitations of liability shall apply whether the alleged liability or Losses are based on contract, negligence, tort, strict liability, or any other basis, even if We have been advised of or should have known of the possibility of such losses and damages, and without regard to the success or effectiveness of other remedies. Notwithstanding anything else in our Terms, in no event shall the combined aggregate liability for any Loss hereunder exceed € 50.00 (fifty euros).

 

3. Prices, Exchange Rates, Confirmations and Network Fees

 

3.1 Users are hereby informed that Cryptocurrencies and digital assets in general are highly experimental and risky. Our App attempts to provide accurate price and exchange rate information, but this information is as well highly volatile and can change quickly without Users or Us necessarily being aware of these changes.

 

3.2 The exchange rate that the Customer pays (if applicable) is calculated at the moment the App presents an amount due. Our App will always seek out the best price.

3.3 Confirmations on the Bitshares blockchain are 3 seconds on average, but may fluctuate if there is a network issue.

 

3.4 The Bitshares blockchain charges a small fee for every transaction and must be paid to the Bitshares blockchain. Additionally, a fee of 0.01% is charged which covers the cost of App development, maintenance and improvements. Both of those fees (typically around 1 cent, USD) are charged automatically upon transaction execution and are subject to change.

 

4. Returns and Refund Policy

 

4.1 Cryptocurrencies, tokens, and digital assets are, by their nature, generally irreversible, and their exchange rates are highly volatile and transitory. Once the User’s asset has been transmitted to the User’s address, no refund is possible, even if the wrong address was provided to the App. All sales after transmission are final and the Company is not in position to reverse or correct the process already undertaken by the App.

 

4.2 Surety can be 100% refunded at any time from within the App itself. With no pre-funded bridge Surety however, only EOS or Graphene-based cryptocurrencies should be accepted (such as Steem and/or Bitshares tokens).

 

5. Governing Law

 

5.1 These Terms are governed by the laws of Cyprus, and any and all laws applicable therein.

 

5.2 Our Terms are to be treated in all respects as a Cypriot contract. We and You irrevocably and unconditionally attorn to the non-exclusive jurisdiction, venue and forum of the courts of Nicosia, Cyprus, and all courts competent to hear appeals therefrom.

 

6. Permissible Use 

 

The App and all its services may be used only as a mechanism of software ledger entry translation between the User and the Bitshares blockchain. You are prohibited from using the App for the purpose of translating ledger entries with other parties, with the exception of explicit payment for goods and services.

 

7. Terms of Use Modifications 

 

7.1 We may revise our Terms at any time and without notice to you or third parties. By using the App, you agree to be bound by the then-current version of our Terms. All modifications generally apply ex nunc, unless otherwise specified in special cases, if this is justified by the circumstances.

 

7.2 The Terms as they appear on the website of our App are always up-to-date. Therefore, Users are advised to visit the relevant part of the website regularly in order to be informed of the latest changes.

 

8. Costs 

 

8.1 From time to time, We may need to spend time dealing with issues brought to Us by customers, for example requests of information.

 

8.2 Where any customer issue is not caused by our negligence or oversight, We reserve the right to recover reasonable administrative costs spent addressing the customer issue. These costs will be calculated by the Company taking into account the relevant administrative burden caused to it and will be communicated to the Customer.

 

8.3 No response will be sent to the Customer if this entails a payment from his side, before the cost is communicated to him by the email provided by him for this specific purpose.

 

9. Transparency Statement 

 

9.1 No personal data whatsoever of Users is registered, stored or processed in any way; Users are solely liable for keeping the “key” which is necessary to access the interface and in case of loss renders this access impossible. Therefore, the Regulation (EU) No 2016/679 (GDPR) is not applicable within the framework of this App.

 

9.2 We also do not in any way obscure the information that it does request or obtain. Due to the inherent transparency of blockchains, transactions to and from the App are public and easily correlated. Utilizing the App to obscure transactions or assets in any way is futile. Law enforcement has full access to blockchain information that goes in or out of the Bitshares network.

 

9.3 You accept that We will comply willingly with all legal requests for information from it. We reserve the right to provide information to law enforcement personnel and other third parties to answer inquiries; to respond to legal process; to respond to the order of a court of competent jurisdiction and those exercising the court’s authority; and, to protect Ourselves and our users.

 

Copyright 2019 AGORISE, LTD.

An International Business Co.

Cyprus Reg# HE375959

 

IF YOU AGREE TO ALL OF THESE TERMS AND CONDITIONS, PLEASE TAP ON THE GREEN BUTTON BELOW

\ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/LicenseActivity.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/LicenseActivity.kt index 5bf6d61..418eebd 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/LicenseActivity.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/LicenseActivity.kt @@ -22,7 +22,7 @@ class LicenseActivity : AppCompatActivity() { if (agreedLicenseVersion == Constants.CURRENT_LICENSE_VERSION) { agree() } else { - wbLA.loadData(getString(R.string.licence_html), "text/html", "UTF-8") + wbLA.loadUrl("file:///android_asset/eula.html") btnDisagree.setOnClickListener { finish() } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 84af3e9..2a98296 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,9 +2,6 @@ BiTSy - -

                  

BiTSy Terms and Conditions of Use

 

BiTSy is a software Application (also known as an “App”) developed by the International Business Company “AGORISE, LTD.”, which has been established under Cypriot law. Any person wishing to use this App is obliged to accept the following Terms and Conditions of Use, before any such use:

 

Part I - Terminology

 

The following Terminology applies to these Terms and Conditions of Use (hereinafter referred to as “Terms”), the Privacy and Transparency Statement, and all other agreements between You and Us:

  • The terms “Client”, “Customer”, “Merchant”, “User”, “You” and “Your” refer to you, the person accessing the BiTSy software Application (hereinafter referred to as “App”) and hereby accepting our Terms.
  • The terms “Agorise”, “The Company”, “Our”, “Ourselves”, “We” and “Us” collectively refer to the App and to its owners, freelancers, developers, designers, contractors, directors, officers, employees, agents, insurers, suppliers, and attorneys.
  • The term “Party” refers to either You or Us.
  • In all the above-mentioned Terms, unless otherwise specified, words using the singular include the plural and vice versa and words using gender include all genders.
  • The terms “digital asset”, “asset”, “coin”, “cryptocurrency”, “ledger entry”, “altcoin” and “token” refer to blockchain-based software ledger data entries.
  • The term “Blockchain” refers to a chain of blocks, processed by hundreds of computers around the world. A blockchain (like “Bitshares”) is a decentralized network of computers, an immutable distributed ledger. As each block of transactions is confirmed every 3 (three) seconds, it is hashed together with the latest block in the chain, forming the next block in the chain. Hence the term blockchain.
  • The term “Ledger” refers to a digital version of the “big book” of blocks of transactions taking place on a blockchain. The Distributed ledger keeps track of all transactions on a blockchain network.
  • The name “Morphit” refers to the name chosen by our Company for the Bridge.
  • The term “Bridge” refers to a company or autonomous software (like the “Morphit” feature of our App) which converts/morphs one cryptocurrency into another by way of seeking the best possible price for the Customer by using various third-party exchanges.
  • The terms “Teller” or “Gateway” refers to a person or company (or autonomous software) that converts “fiat” (USD, EUR, CNY, etc) into cryptocurrencies, and vice-versa, whether by cash, card, Swift or SEPA, etc.
  • The term “Multisig” refers to Multiple Signatories. Multiple people or accounts that are assigned to validate a transaction before it can be allowed to be processed, and entered into a block on the chain. Typically, two or more people sign the transaction with their private key (Public Key Infrastructure (PKI)) which will approve the transaction to be sent.
  • For the term “Bitshares” more information can usually be found at the website: http://www.bitshares.org
  • The term “Coin” refers to a digital token. It is underlined that this term is still loosely defined in legislation. It’s a unit of value (if it has any value at all, as determined by the free market) which is running on a blockchain.
  • The term “BTS” refers to the core token that the Bitshares platform uses to determine fair-market values for tokens.

 

Part II - Terms and Conditions of Use

 

By using the App, you represent and warrant that you are:

  1. at least 18 (eighteen) years old and have full capacity to contract under the applicable law;
  2. only transacting with the App with legally-obtained funds that belong to you;
  3. not furthering, performing, undertaking, engaging in, aiding, or abetting any unlawful activity through your relationship with Us or through your use of the App (for example: money laundering, etc); and,
  4. comporting with and obeying all applicable laws.

 

We reserve the right to terminate your access to the App for any breach or our Terms, in our sole and absolute discretion, if the App ceases to exist and/or following a decision of the Company. Use of the App is void where prohibited by applicable law.

 

1. Terms

 

1.1 By accessing the App, you agree to be bound by our Terms, all applicable laws and regulations in Cyprus, and you agree that you are responsible for compliance with, and that you are compliant with applicable law.

 

1.2 If you do not agree with any of our Terms, you are prohibited from using or accessing the App. Your only recourse is to stop using the App. Any use of the App after accepting these Terms is considered to be a deemed acceptance of our Terms, as they may be modified and amended from time to time.

 

1.3 The materials contained in the App are protected by applicable copyright and trademark laws in Cyprus and EU and international treaties. The updates of our Terms, as they appear on our website, take into account the legislative modifications.

 

1.4 By accepting our Terms, you expressly accept that data of transactions made when accessing the App might be exported outside the jurisdiction in which you reside or are located when you access the App. This export is an inherent part of our App and is necessary for its functioning and does not include personal data of Users in any way.

 

1.5 By using any of the third-parties linked to within the App (such as Tellers or Gateways), it is not an endorsement of those third-parties, nor is it a guarantee of any kind that using those third-parties will not result in loss of funds or other damages. Use those third-parties at your own risk.

 

2. Limitations

 

The use of this App may carry financial risk for any User, and is to be used as an experimental software utility only. In no event shall We be liable or responsible for any damages, claims, applications, losses, injuries, delays, accidents, costs, business interruption costs, or other expenses (including, without limitation, attorneys’ fees or the costs of any claim or suit), nor for any incidental, direct, general, indirect, special, punitive, exemplary, or consequential damages, loss of goodwill or business profits, loss of cryptocurrency or digital assets, work stoppage, computer or device failure or malfunction, or any other commercial or other losses directly or indirectly arising out of or related to:

  1. our Terms;
  2. the Privacy and Transparency Statement;
  3. any service We provide;
  4. the use of the App;
  5. any use of your digital assets or cryptocurrency with the App by any other party not authorized by you (collectively, all of the foregoing items shall be referred to herein as “Losses”).

 

We are hereby released by You from liability for any kind of the above-mentioned Losses. We disclaim any and all warranties or guarantees, including any warranty of merchantability and warranty of fitness for any particular purpose.

 

The foregoing limitations of liability shall apply whether the alleged liability or Losses are based on contract, negligence, tort, strict liability, or any other basis, even if We have been advised of or should have known of the possibility of such losses and damages, and without regard to the success or effectiveness of other remedies. Notwithstanding anything else in our Terms, in no event shall the combined aggregate liability for any Loss hereunder exceed € 50.00 (fifty euros).

 

3. Prices, Exchange Rates, Surety and Confirmations

 

3.1 Users are hereby informed that Cryptocurrencies and digital assets in general are highly experimental and risky. Our App attempts to provide accurate price and exchange rate information, but this information is as well highly volatile and can change quickly without Users or Us necessarily being aware of these changes.

 

3.2 The exchange rate that the Customer pays (if applicable) is calculated at the moment the App presents the amount due to the customer (via the QR Code or NFC signal). Our App will always seek out the best price for the Customer.

3.3 The confirmation time of some cryptocurrencies can be very lengthy. For example, if a customer pays with a slow coin such as the Petro (Venezuela) but pays a minimal miner fee when sending their funds to the App, then that customer’s payment may not be processed by that network for many hours, if at all.

 

Due to this risk, the App offers a Surety feature, allowing You to voluntarily pre-fund a Multisig blockchain account (for example: joes-grocery-morphit) with some Bitshares (BTS) tokens, and then voluntarily share that account with the Morphit bridge algorithm in the App temporarily.

 

This way, the bridge can send the necessary BTS or smartcoins to the Merchant instantly, be protected from customer minimal miner fee or double-spend scams, and confirm the customers "completed" payment so that the customer doesn't have to stand there waiting for their (slow coin) payment to confirm. The customer can then theoretically pay with any supported coin and leave in as little as 3 seconds. Payments in a Bitshares token do not require use of a bridge or surety at all since that chain is so fast. Steem payments don't need surety either, but the bridge is used real quick to convert it to the merchants desired BTS or smartcoin. The merchant can empty their surety account any time they like, or add more funds to it for high volume (such as grocery chains) or larger transactions (such as homes or cars).

 

If however, the customer’s payment is never confirmed by their network, then that amount of Surety that was shared with the bridge will not be released back to You. The bridge will not assume any risk of Your customers payments not clearing.

 

Due to individual blockchain specifications, the Customer payment is typically considered “accepted” by the bridge at two block confirmations. If a bridge had to be used, the bridge will then automatically release the Surety back to you that was shared while the bridge was awaiting those two block confirmations. It is important to note that a payment being broadcast to a blockchain network does not constitute an acceptance by the App of that payment.

 

4. Returns and Refund Policy

 

4.1 Cryptocurrencies, tokens, and digital assets are, by their nature, generally irreversible, and their exchange rates are highly volatile and transitory. Once the User’s asset has been transmitted to the User’s address, no refund is possible, even if the wrong address was provided to the App. All sales after transmission are final and the Company is not in position to reverse or correct the process already undertaken by the App.

 

4.2 Surety can be 100% refunded at any time from within the App itself. With no pre-funded bridge Surety however, only EOS or Graphene-based cryptocurrencies should be accepted (such as Steem and/or Bitshares tokens).

 

5. Governing Law

 

5.1 These Terms are governed by the laws of Cyprus, and any and all laws applicable therein.

 

5.2 Our Terms are to be treated in all respects as a Cypriot contract. We and You irrevocably and unconditionally attorn to the non-exclusive jurisdiction, venue and forum of the courts of Nicosia, Cyprus, and all courts competent to hear appeals therefrom.

 

6. Permissible Use 

 

The App and all its services may be used only as a mechanism of software ledger entry translation between the User and the Bitshares blockchain. You are prohibited from using the App for the purpose of translating ledger entries with other parties, with the exception of explicit payment for goods and services.

 

7. Terms of Use Modifications 

 

7.1 We may revise our Terms at any time and without notice to you or third parties. By using the App, you agree to be bound by the then-current version of our Terms. All modifications generally apply ex nunc, unless otherwise specified in special cases, if this is justified by the circumstances.

 

7.2 The Terms as they appear on the website of our App are always up-to-date. Therefore, Users are advised to visit the relevant part of the website regularly in order to be informed of the latest changes.

 

8. Costs 

 

8.1 From time to time, We may need to spend time dealing with issues brought to Us by customers, for example requests of information.

 

8.2 Where any customer issue is not caused by our negligence or oversight, We reserve the right to recover reasonable administrative costs spent addressing the customer issue. These costs will be calculated by the Company taking into account the relevant administrative burden caused to it and will be communicated to the Customer.

 

8.3 No response will be sent to the Customer if this entails a payment from his side, before the cost is communicated to him by the email provided by him for this specific purpose.

 

9. Transparency Statement 

 

9.1 No personal data whatsoever of Users is registered, stored or processed in any way; Users are solely liable for keeping the “key” which is necessary to access the interface and in case of loss renders this access impossible. Therefore, the Regulation (EU) No 2016/679 (GDPR) is not applicable within the framework of this App.

 

9.2 We also do not in any way obscure the information that it does request or obtain. Due to the inherent transparency of blockchains, transactions to and from the App are public and easily correlated. Utilizing the App to obscure transactions or assets in any way is futile. Law enforcement has full access to blockchain information that goes in or out of the Bitshares network.

 

9.3 You accept that We will comply willingly with all legal requests for information from it. We reserve the right to provide information to law enforcement personnel and other third parties to answer inquiries; to respond to legal process; to respond to the order of a court of competent jurisdiction and those exercising the court’s authority; and, to protect Ourselves and our users.

 

Copyright 2018 AGORISE, LTD.

An International Business Co.

Cyprus Reg# HE375959

 

IF YOU AGREE TO ALL OF THESE TERMS AND CONDITIONS, PLEASE TAP ON THE GREEN BUTTON BELOW

]]>
- Agree Disagree From d4dbdc4aebc466619b9ff5fcc3ed3a8e63398ba0 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Wed, 2 Jan 2019 17:03:20 -0600 Subject: [PATCH 04/65] Change 'Please Pay' to 'Please Send' string in ReceiveTransactionFragment. Also, in the same Fragment, added an 'Any Amount' string when the user has not explicitly specified an amount to receive. --- .../fragments/ReceiveTransactionFragment.kt | 21 +++++++++++-------- app/src/main/res/values/strings.xml | 6 +++++- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt index 9b81fdb..624ae61 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt @@ -121,7 +121,7 @@ class ReceiveTransactionFragment : Fragment(), ServiceConnection { // Add an option at the end so the user can search for an asset other than the ones saved in the db val asset = cy.agorise.bitsybitshareswallet.database.entities.Asset( - OTHER_ASSET, "Other...", 0, "", "" + OTHER_ASSET, getString(R.string.text__other), 0, "", "" ) mAssets.add(asset) @@ -325,14 +325,18 @@ class ReceiveTransactionFragment : Fragment(), ServiceConnection { * @param account Account to pay total */ private fun updateAmountAddressUI(total: AssetAmount, account: String) { - val df = DecimalFormat("####."+("#".repeat(total.asset.precision))) - df.roundingMode = RoundingMode.CEILING - df.decimalFormatSymbols = DecimalFormatSymbols(Locale.getDefault()) + val txtAmount: String = if (total.amount.toLong() == 0L) { + getString(R.string.template__please_send, getString(R.string.text__any_amount), " ") + } else { + val df = DecimalFormat("####."+("#".repeat(total.asset.precision))) + df.roundingMode = RoundingMode.CEILING + df.decimalFormatSymbols = DecimalFormatSymbols(Locale.getDefault()) - val amount = total.amount.toDouble() / Math.pow(10.toDouble(), total.asset.precision.toDouble()) - val strAmount = df.format(amount) + val amount = total.amount.toDouble() / Math.pow(10.toDouble(), total.asset.precision.toDouble()) + val strAmount = df.format(amount) + getString(R.string.template__please_send, strAmount, total.asset.symbol) + } - val txtAmount = getString(R.string.template__please_pay, strAmount, total.asset.symbol) val txtAccount = getString(R.string.template__to, account) tvPleasePay.text = txtAmount @@ -370,8 +374,7 @@ class ReceiveTransactionFragment : Fragment(), ServiceConnection { if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) { shareQRScreenshot() } else { - // TODO extract string resource - Toast.makeText(context!!, "Storage permission is necessary to share QR codes.", Toast.LENGTH_SHORT).show() + Toast.makeText(context!!, getString(R.string.msg__storage__permission__necessary), Toast.LENGTH_SHORT).show() } return } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2a98296..970b144 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -55,11 +55,14 @@ Memo Scan QR Asset - Please Pay: %1$s %2$s + Other… + Please Send: %1$s %2$s + Any Amount To: %1$s BiTSy invoice from %1$s Share Share with + Storage permission is necessary to share images. Settings @@ -80,4 +83,5 @@ Block: %1$s +
From 1b4de3fb1e62ec49d346518cb89c6de350bd6348 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 08:26:21 -0600 Subject: [PATCH 05/65] Make camera and send buttons red in SendTransactionFragment. --- app/src/main/res/drawable/send_fab_background.xml | 2 +- app/src/main/res/layout/fragment_send_transaction.xml | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/drawable/send_fab_background.xml b/app/src/main/res/drawable/send_fab_background.xml index a8c2324..ea2a04d 100644 --- a/app/src/main/res/drawable/send_fab_background.xml +++ b/app/src/main/res/drawable/send_fab_background.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_send_transaction.xml b/app/src/main/res/layout/fragment_send_transaction.xml index 73f1b78..8528147 100644 --- a/app/src/main/res/layout/fragment_send_transaction.xml +++ b/app/src/main/res/layout/fragment_send_transaction.xml @@ -152,9 +152,10 @@ android:layout_height="wrap_content" app:fabCustomSize="32dp" app:maxImageSize="20dp" + app:srcCompat="@drawable/ic_camera" + android:backgroundTint="@color/colorSend" app:layout_constraintStart_toEndOf="@id/cameraVerticalGuideline" - app:layout_constraintTop_toBottomOf="@+id/tvScan" - app:srcCompat="@drawable/ic_camera" /> + app:layout_constraintTop_toBottomOf="@+id/tvScan"/> From 8eed991e0e6d916e87ac27ceb9ce371bfe8773b3 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 09:11:58 -0600 Subject: [PATCH 06/65] Created Kotlin etension functions to add a enabled/disabled functionality to FloatingActionButtons. This is used in the SendTransactionFragment to show the Send button as disabled when the information to send a transaction is not all correct. --- .../fragments/SendTransactionFragment.kt | 8 +++++--- .../bitsybitshareswallet/utils/Extensions.kt | 15 +++++++++++++++ .../main/res/layout/fragment_send_transaction.xml | 1 - app/src/main/res/layout/item_transaction.xml | 4 ++-- app/src/main/res/values/colors.xml | 3 ++- 5 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt index caf1374..afe5b9c 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt @@ -29,6 +29,8 @@ import cy.agorise.bitsybitshareswallet.database.joins.BalanceDetail import cy.agorise.bitsybitshareswallet.repositories.AuthorityRepository import cy.agorise.bitsybitshareswallet.utils.Constants import cy.agorise.bitsybitshareswallet.utils.CryptoUtils +import cy.agorise.bitsybitshareswallet.utils.disable +import cy.agorise.bitsybitshareswallet.utils.enable import cy.agorise.bitsybitshareswallet.viewmodels.BalanceDetailViewModel import cy.agorise.graphenej.* import cy.agorise.graphenej.api.ConnectionStatusUpdate @@ -160,7 +162,7 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv } fabSendTransaction.setOnClickListener { startSendTransferOperation() } - fabSendTransaction.hide() + fabSendTransaction.disable(R.color.lightGray) authorityRepository = AuthorityRepository(context!!) @@ -391,9 +393,9 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv private fun enableDisableSendFAB() { if (isToAccountCorrect && isAmountCorrect) - fabSendTransaction.show() + fabSendTransaction.enable(R.color.colorSend) else - fabSendTransaction.hide() + fabSendTransaction.disable(R.color.lightGray) } private fun startSendTransferOperation() { diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt new file mode 100644 index 0000000..4ab5fae --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt @@ -0,0 +1,15 @@ +package cy.agorise.bitsybitshareswallet.utils + +import android.content.res.ColorStateList +import androidx.core.content.ContextCompat +import com.google.android.material.floatingactionbutton.FloatingActionButton + +fun FloatingActionButton.enable(colorResource: Int) { + this.isEnabled = true + this.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(this.context, colorResource)) +} + +fun FloatingActionButton.disable(colorResource: Int) { + this.isEnabled = false + this.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(this.context, colorResource)) +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_send_transaction.xml b/app/src/main/res/layout/fragment_send_transaction.xml index 8528147..de4a86c 100644 --- a/app/src/main/res/layout/fragment_send_transaction.xml +++ b/app/src/main/res/layout/fragment_send_transaction.xml @@ -186,7 +186,6 @@ app:fabCustomSize="90dp" app:maxImageSize="70dp" app:srcCompat="@drawable/ic_arrow_forward" - android:backgroundTint="@color/colorSend" app:layout_constraintEnd_toEndOf="@id/vSend" app:layout_constraintTop_toTopOf="@+id/vSend" /> diff --git a/app/src/main/res/layout/item_transaction.xml b/app/src/main/res/layout/item_transaction.xml index 967998c..b6e5e7b 100644 --- a/app/src/main/res/layout/item_transaction.xml +++ b/app/src/main/res/layout/item_transaction.xml @@ -105,7 +105,7 @@ android:layout_width="0dp" android:layout_height="1dp" android:layout_marginTop="12dp" - android:background="@color/lightGray" + android:background="@color/superLightGray" app:layout_constraintTop_toBottomOf="@id/tvFrom" app:layout_constraintStart_toEndOf="@id/firstVerticalGuideline" app:layout_constraintEnd_toStartOf="@id/fourthVerticalGuideline" /> @@ -133,7 +133,7 @@ android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginTop="12dp" - android:background="@color/lightGray"/> + android:background="@color/superLightGray"/> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 41ef6c5..69942f8 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -10,7 +10,8 @@ #000 #888 #139657 - #e0e0e0 + #aaa + #e0e0e0 #616161 #669900 #DC473A From c068efa84c80c13e28d6c095a69bdd535f937768 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 09:45:47 -0600 Subject: [PATCH 07/65] Create a toast extension function to reduce the boilerplate code required to create Toasts. Extracted string resources fron SendTransactionFragment and used the new toast extension funcion. --- .../fragments/SendTransactionFragment.kt | 25 ++++++++----------- .../bitsybitshareswallet/utils/Extensions.kt | 15 +++++++++++ app/src/main/res/values/strings.xml | 10 ++++++-- 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt index afe5b9c..1b1c9bd 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt @@ -27,10 +27,7 @@ import cy.agorise.bitsybitshareswallet.R import cy.agorise.bitsybitshareswallet.adapters.BalancesDetailsAdapter import cy.agorise.bitsybitshareswallet.database.joins.BalanceDetail import cy.agorise.bitsybitshareswallet.repositories.AuthorityRepository -import cy.agorise.bitsybitshareswallet.utils.Constants -import cy.agorise.bitsybitshareswallet.utils.CryptoUtils -import cy.agorise.bitsybitshareswallet.utils.disable -import cy.agorise.bitsybitshareswallet.utils.enable +import cy.agorise.bitsybitshareswallet.utils.* import cy.agorise.bitsybitshareswallet.viewmodels.BalanceDetailViewModel import cy.agorise.graphenej.* import cy.agorise.graphenej.api.ConnectionStatusUpdate @@ -241,7 +238,7 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv } else { mSelectedUserAccount = null destinationPublicKey = null - tilTo.error = "Invalid account" + tilTo.error = getString(R.string.error__invalid_account) isToAccountCorrect = false } @@ -261,7 +258,7 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv val id = mNetworkService!!.sendMessage(GetRequiredFees(transaction!!, asset), GetRequiredFees.REQUIRED_API) responseMap[id] = RESPONSE_GET_REQUIRED_FEES } else { - // TODO unableToSendTransactionError() + context?.toast(getString(R.string.msg__transaction_not_sent)) } } @@ -273,14 +270,13 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv val id = mNetworkService!!.sendMessage(BroadcastTransaction(transaction), BroadcastTransaction.REQUIRED_API) responseMap[id] = RESPONSE_BROADCAST_TRANSACTION } else { - // TODO unableToSendTransactionError() + context?.toast(getString(R.string.msg__transaction_not_sent)) } } private fun handleBroadcastTransaction(message: JsonRpcResponse<*>) { if (message.result == null && message.error == null) { - // TODO extract string resources - Toast.makeText(context!!, "Transaction sent!", Toast.LENGTH_SHORT).show() + context?.toast(getString(R.string.text__transaction_sent)) // Remove information from the text fields and disable send button tietTo.setText("") @@ -289,9 +285,10 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv isToAccountCorrect = false isAmountCorrect = false enableDisableSendFAB() + + // TODO return to Main fragment ?? } else { - // TODO extract error messages to show a better explanation to the user - Toast.makeText(context!!, message.error.message, Toast.LENGTH_LONG).show() + context?.toast(message.error.message, Toast.LENGTH_LONG) } } @@ -313,8 +310,7 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) { startCameraPreview() } else { - // TODO extract string resource - Toast.makeText(context!!, "Camera permission is necessary to read QR codes.", Toast.LENGTH_SHORT).show() + context?.toast(getString(R.string.msg__camera_permission_necessary)) } return } @@ -380,8 +376,7 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv val currentAmount = balance.amount.toDouble() / Math.pow(10.0, balance.precision.toDouble()) if (currentAmount < amount) { - // TODO extract string resource - tilAmount.error = "Not enough funds" + tilAmount.error = getString(R.string.error__not_enough_funds) isAmountCorrect = false } else { tilAmount.isErrorEnabled = false diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt index 4ab5fae..bd533c2 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt @@ -1,15 +1,30 @@ package cy.agorise.bitsybitshareswallet.utils +import android.content.Context import android.content.res.ColorStateList +import android.widget.Toast import androidx.core.content.ContextCompat import com.google.android.material.floatingactionbutton.FloatingActionButton +/** + * Creates an enabled state, by enabling the button and using the given [colorResource] to color it. + */ fun FloatingActionButton.enable(colorResource: Int) { this.isEnabled = true this.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(this.context, colorResource)) } +/** + * Creates a disabled state, by disabling the button and using the given [colorResource] to color it. + */ fun FloatingActionButton.disable(colorResource: Int) { this.isEnabled = false this.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(this.context, colorResource)) +} + +/** + * Easily create a toast message with less boilerplate code + */ +fun Context.toast(message: CharSequence, duration: Int = Toast.LENGTH_LONG) { + Toast.makeText(this, message, duration).show() } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 970b144..30ff5ac 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -49,11 +49,18 @@ Filter Export - + To Amount Memo Scan QR + Invalid account + Not enough funds + Camera permission is necessary to read QR codes. + Transaction sent! + Unable to send transaction + + Asset Other… Please Send: %1$s %2$s @@ -83,5 +90,4 @@ Block: %1$s - From f0b959b4968c5da9f6e79278aec0f128a303f789 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 10:27:17 -0600 Subject: [PATCH 08/65] Fix error in SendTransactionFragment, when the user typed an amount larger than its current balance an error would appear, but if after that the user erased everything the error would still be there. Also solved a similar error with the To account field. --- .../fragments/SendTransactionFragment.kt | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt index 1b1c9bd..e453c46 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt @@ -180,9 +180,9 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv // Use RxJava Debounce to avoid making calls to the NetworkService on every text change event mDisposables.add( tietTo.textChanges() + .skipInitialValue() .debounce(500, TimeUnit.MILLISECONDS) .map { it.toString().trim() } - .filter { it.length > 1 } .subscribe { val id = mNetworkService!!.sendMessage(GetAccountByName(it!!), GetAccountByName.REQUIRED_API) responseMap[id] = RESPONSE_GET_ACCOUNT_BY_NAME @@ -192,9 +192,9 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv // Use RxJava Debounce to update the Amount error only after the user stops writing for > 500 ms mDisposables.add( tietAmount.textChanges() + .skipInitialValue() .debounce(500, TimeUnit.MILLISECONDS) - .filter { it.isNotEmpty() } - .map { it.toString().trim().toDouble() } + .map { it.toString().trim() } .observeOn(AndroidSchedulers.mainThread()) .subscribe { validateAmount(it!!) } ) @@ -370,17 +370,30 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv } } - private fun validateAmount(amount: Double) { + private fun validateAmount(txtAmount: String) { if (mBalancesDetailsAdapter?.isEmpty != false) return val balance = mBalancesDetailsAdapter?.getItem(spAsset.selectedItemPosition) ?: return val currentAmount = balance.amount.toDouble() / Math.pow(10.0, balance.precision.toDouble()) - if (currentAmount < amount) { - tilAmount.error = getString(R.string.error__not_enough_funds) - isAmountCorrect = false - } else { - tilAmount.isErrorEnabled = false - isAmountCorrect = true + val amount: Double = try { + txtAmount.toDouble() + } catch (e: Exception) { + 0.0 + } + + when { + currentAmount < amount -> { + tilAmount.error = getString(R.string.error__not_enough_funds) + isAmountCorrect = false + } + amount == 0.0 -> { + tilAmount.isErrorEnabled = false + isAmountCorrect = false + } + else -> { + tilAmount.isErrorEnabled = false + isAmountCorrect = true + } } enableDisableSendFAB() From 2643b0af4db3aa01868f3cd16a6ffd0ef25888fd Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 10:47:58 -0600 Subject: [PATCH 09/65] When the send button is disabled in SendTransactionFragment the background view is also 'disabled' changing its color to a lighter gray. --- .../fragments/SendTransactionFragment.kt | 7 +++++-- app/src/main/res/drawable/send_fab_background_disabled.xml | 7 +++++++ app/src/main/res/layout/fragment_send_transaction.xml | 2 +- app/src/main/res/values/colors.xml | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable/send_fab_background_disabled.xml diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt index e453c46..46a42cc 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt @@ -400,10 +400,13 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv } private fun enableDisableSendFAB() { - if (isToAccountCorrect && isAmountCorrect) + if (isToAccountCorrect && isAmountCorrect) { fabSendTransaction.enable(R.color.colorSend) - else + vSend.setBackgroundResource(R.drawable.send_fab_background) + } else { fabSendTransaction.disable(R.color.lightGray) + vSend.setBackgroundResource(R.drawable.send_fab_background_disabled) + } } private fun startSendTransferOperation() { diff --git a/app/src/main/res/drawable/send_fab_background_disabled.xml b/app/src/main/res/drawable/send_fab_background_disabled.xml new file mode 100644 index 0000000..a4b4821 --- /dev/null +++ b/app/src/main/res/drawable/send_fab_background_disabled.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_send_transaction.xml b/app/src/main/res/layout/fragment_send_transaction.xml index de4a86c..fcab76b 100644 --- a/app/src/main/res/layout/fragment_send_transaction.xml +++ b/app/src/main/res/layout/fragment_send_transaction.xml @@ -172,7 +172,7 @@ android:layout_width="120dp" android:layout_height="120dp" android:layout_marginEnd="0dp" - android:background="@drawable/send_fab_background" + android:background="@drawable/send_fab_background_disabled" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@id/viewCamera" app:layout_constraintBottom_toBottomOf="@id/viewCamera"/> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 69942f8..cb1f062 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -11,7 +11,7 @@ #888 #139657 #aaa - #e0e0e0 + #d0d0d0 #616161 #669900 #DC473A From bee79976b58d4758085f7cfb03627c15e209d77d Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 11:09:19 -0600 Subject: [PATCH 10/65] Create SendTransactionFragment menu, which consists of only an info icon. --- .../fragments/SendTransactionFragment.kt | 18 +++++++++++++++--- app/src/main/res/drawable/ic_info.xml | 5 +++++ .../main/res/menu/menu_send_transaction.xml | 11 +++++++++++ app/src/main/res/values/strings.xml | 11 +---------- 4 files changed, 32 insertions(+), 13 deletions(-) create mode 100644 app/src/main/res/drawable/ic_info.xml create mode 100644 app/src/main/res/menu/menu_send_transaction.xml diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt index 46a42cc..0bb762c 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt @@ -10,9 +10,7 @@ import android.os.Bundle import android.os.IBinder import android.preference.PreferenceManager import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup +import android.view.* import android.widget.AdapterView import android.widget.Toast import androidx.core.content.ContextCompat @@ -108,6 +106,8 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv private var destinationPublicKey: PublicKey? = null override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + setHasOptionsMenu(true) + return inflater.inflate(R.layout.fragment_send_transaction, container, false) } @@ -447,6 +447,18 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv Log.d(TAG, "Network Service is not connected") } + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + inflater.inflate(R.menu.menu_send_transaction, menu) + } + + override fun onOptionsItemSelected(item: MenuItem?): Boolean { + if (item?.itemId == R.id.menu_info) { + context?.toast("Info") + return true + } + return super.onOptionsItemSelected(item) + } + override fun onResume() { super.onResume() if (isCameraPreviewVisible) diff --git a/app/src/main/res/drawable/ic_info.xml b/app/src/main/res/drawable/ic_info.xml new file mode 100644 index 0000000..af0d4d0 --- /dev/null +++ b/app/src/main/res/drawable/ic_info.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/menu/menu_send_transaction.xml b/app/src/main/res/menu/menu_send_transaction.xml new file mode 100644 index 0000000..6703b30 --- /dev/null +++ b/app/src/main/res/menu/menu_send_transaction.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 30ff5ac..00959f1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,16 +6,6 @@ Agree Disagree - - Loading Assets… - Performing a series of requests in order to get the complete list of all - existing assets - - Loaded %1$d assets into the database - Assets Loaded - Next, please setup your account… - Next - 6+ digits PIN PIN too short @@ -50,6 +40,7 @@ Export + Info To Amount Memo From f32bfc567b0a155494c9c39fcb00175b66237097 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 12:45:28 -0600 Subject: [PATCH 11/65] Created info dialog in SendTransactionFragment using the MaterialDialog library, which shows an explanation of the fields on that screen. --- .../fragments/SendTransactionFragment.kt | 7 +- .../layout/dialog_send_transaction_info.xml | 79 +++++++++++++++++++ app/src/main/res/values/strings.xml | 22 ++++++ 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/layout/dialog_send_transaction_info.xml diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt index 0bb762c..bf402da 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt @@ -17,6 +17,8 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders +import com.afollestad.materialdialogs.MaterialDialog +import com.afollestad.materialdialogs.customview.customView import com.google.common.primitives.UnsignedLong import com.google.zxing.BarcodeFormat import com.google.zxing.Result @@ -453,7 +455,10 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv override fun onOptionsItemSelected(item: MenuItem?): Boolean { if (item?.itemId == R.id.menu_info) { - context?.toast("Info") + MaterialDialog(context!!).show { + customView(R.layout.dialog_send_transaction_info, scrollable = true) + positiveButton(android.R.string.ok) { dismiss() } + } return true } return super.onOptionsItemSelected(item) diff --git a/app/src/main/res/layout/dialog_send_transaction_info.xml b/app/src/main/res/layout/dialog_send_transaction_info.xml new file mode 100644 index 0000000..09e76e2 --- /dev/null +++ b/app/src/main/res/layout/dialog_send_transaction_info.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 00959f1..efbb6e1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -51,6 +51,28 @@ Transaction sent! Unable to send transaction + + Type in the Bitshares account name of the person you want to send funds + to.\nFor example: agorise-faucet + + Asset Balance + You can tap on the balance displayed to send all of that asset. Doing + so will fill in the Amount field for you. + + Entering a Memo is not required, but taking notes on why you sent the funds is + nice for future reference. Memos are only visible to you and the person whom you sent funds to. + + Network Fee + The Network fee is included in the amount that you want to send. For + example, if you want to send 50 BTS, BiTSy will actually send ~50.21 BTS. The added 0.21 in this example is the + Bitshares transaction fee plus 0.01% to the BiTSy Developer Team (typically ~1 cent). + + QR Code + You do not need to scan someone’s QR to send funds, but it does help you to + avoid mistakes. Once you send funds from your account, they are gone forever, so always make sure the account + name in the “To” field is correct. + + Asset Other… From 39ad3cca015f0066d9687ecbaf10b59ebd673ce6 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 16:36:20 -0600 Subject: [PATCH 12/65] Changed the colorSend and colorReceive colors and added their respective darker versions. Changed the toolbar and status bar color in both the Send and Receive Transaction Fragment to colorSend and colorReceive with their darker variants accordingly. --- .../bitsybitshareswallet/fragments/HomeFragment.kt | 8 +++++++- .../fragments/ReceiveTransactionFragment.kt | 9 +++++++++ .../fragments/SendTransactionFragment.kt | 9 +++++++++ app/src/main/res/values/colors.xml | 7 +++++-- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt index a531972..9cf3fea 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt @@ -3,9 +3,9 @@ package cy.agorise.bitsybitshareswallet.fragments import androidx.lifecycle.ViewModelProviders import android.os.Bundle import android.preference.PreferenceManager -import android.util.Log import android.view.* import androidx.appcompat.widget.Toolbar +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter @@ -29,8 +29,14 @@ class HomeFragment : Fragment() { ): View? { setHasOptionsMenu(true) + // Sets the toolbar background color to primaryColor and forces shows the Bitsy icon to the left val toolbar: Toolbar? = activity?.findViewById(R.id.toolbar) toolbar?.navigationIcon = resources.getDrawable(R.drawable.ic_bitsy_logo_2, null) + toolbar?.setBackgroundResource(R.color.colorPrimary) + + // Sets the status bar background color to a primaryColorDark + val window = activity?.window + window?.statusBarColor = ContextCompat.getColor(context!!, R.color.colorPrimaryDark) return inflater.inflate(R.layout.fragment_home, container, false) } diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt index 624ae61..b8a470b 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt @@ -15,6 +15,7 @@ import android.util.Log import android.view.* import android.widget.AdapterView import android.widget.Toast +import androidx.appcompat.widget.Toolbar import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.Observer @@ -94,6 +95,14 @@ class ReceiveTransactionFragment : Fragment(), ServiceConnection { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { setHasOptionsMenu(true) + // Sets the toolbar background color to green + val toolbar: Toolbar? = activity?.findViewById(R.id.toolbar) + toolbar?.setBackgroundResource(R.color.colorReceive) + + // Sets the status bar background color to a dark green + val window = activity?.window + window?.statusBarColor = ContextCompat.getColor(context!!, R.color.colorReceiveDark) + return inflater.inflate(R.layout.fragment_receive_transaction, container, false) } diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt index bf402da..231faf9 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt @@ -13,6 +13,7 @@ import android.util.Log import android.view.* import android.widget.AdapterView import android.widget.Toast +import androidx.appcompat.widget.Toolbar import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.Observer @@ -110,6 +111,14 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { setHasOptionsMenu(true) + // Sets the toolbar background color to red + val toolbar: Toolbar? = activity?.findViewById(R.id.toolbar) + toolbar?.setBackgroundResource(R.color.colorSend) + + // Sets the status bar background color to a dark red + val window = activity?.window + window?.statusBarColor = ContextCompat.getColor(context!!, R.color.colorSendDark) + return inflater.inflate(R.layout.fragment_send_transaction, container, false) } diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index cb1f062..e44bbef 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -13,7 +13,10 @@ #aaa #d0d0d0 #616161 - #669900 - #DC473A + #388E3C + #1B5E20 + #D32F2F + #B71C1C + #F44336 #2888 From 5cde97f1e7a03b68615ee7f97147346351b9484d Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 16:40:14 -0600 Subject: [PATCH 13/65] Speed up the slide in/slide out animations used in fragment transitions. --- app/src/main/res/anim/slide_in_left.xml | 2 +- app/src/main/res/anim/slide_in_right.xml | 2 +- app/src/main/res/anim/slide_out_left.xml | 2 +- app/src/main/res/anim/slide_out_right.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/anim/slide_in_left.xml b/app/src/main/res/anim/slide_in_left.xml index e65e525..62d678d 100644 --- a/app/src/main/res/anim/slide_in_left.xml +++ b/app/src/main/res/anim/slide_in_left.xml @@ -3,5 +3,5 @@ + android:duration="300"/> \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_right.xml b/app/src/main/res/anim/slide_in_right.xml index f387f84..33362c0 100644 --- a/app/src/main/res/anim/slide_in_right.xml +++ b/app/src/main/res/anim/slide_in_right.xml @@ -3,5 +3,5 @@ + android:duration="300"/> diff --git a/app/src/main/res/anim/slide_out_left.xml b/app/src/main/res/anim/slide_out_left.xml index 3dfd3b2..06b83ad 100644 --- a/app/src/main/res/anim/slide_out_left.xml +++ b/app/src/main/res/anim/slide_out_left.xml @@ -3,5 +3,5 @@ + android:duration="300"/> diff --git a/app/src/main/res/anim/slide_out_right.xml b/app/src/main/res/anim/slide_out_right.xml index 63a2226..a271820 100644 --- a/app/src/main/res/anim/slide_out_right.xml +++ b/app/src/main/res/anim/slide_out_right.xml @@ -3,5 +3,5 @@ + android:duration="300"/> \ No newline at end of file From 2db74516bb659f73d144fa16250b13645fcf2291 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 17:06:37 -0600 Subject: [PATCH 14/65] Create colorToolbarDark and colorStatusBar to color the toolbar and the status bar in the night mode theme and add the necessary methods to use them in the app accordingly. --- .../bitsybitshareswallet/fragments/HomeFragment.kt | 13 +++++++------ .../fragments/ReceiveTransactionFragment.kt | 8 ++++++-- .../fragments/SendTransactionFragment.kt | 8 ++++++-- app/src/main/res/values/colors.xml | 3 ++- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt index 9cf3fea..c158d5a 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt @@ -23,20 +23,21 @@ class HomeFragment : Fragment() { private lateinit var mUserAccountViewModel: UserAccountViewModel - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { setHasOptionsMenu(true) + val nightMode = PreferenceManager.getDefaultSharedPreferences(context) + .getBoolean(Constants.KEY_NIGHT_MODE_ACTIVATED, false) + // Sets the toolbar background color to primaryColor and forces shows the Bitsy icon to the left val toolbar: Toolbar? = activity?.findViewById(R.id.toolbar) toolbar?.navigationIcon = resources.getDrawable(R.drawable.ic_bitsy_logo_2, null) - toolbar?.setBackgroundResource(R.color.colorPrimary) + toolbar?.setBackgroundResource(if (!nightMode) R.color.colorPrimary else R.color.colorToolbarDark) // Sets the status bar background color to a primaryColorDark val window = activity?.window - window?.statusBarColor = ContextCompat.getColor(context!!, R.color.colorPrimaryDark) + window?.statusBarColor = ContextCompat.getColor(context!!, + if (!nightMode) R.color.colorPrimaryDark else R.color.colorStatusBarDark) return inflater.inflate(R.layout.fragment_home, container, false) } diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt index b8a470b..f2d6190 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ReceiveTransactionFragment.kt @@ -95,13 +95,17 @@ class ReceiveTransactionFragment : Fragment(), ServiceConnection { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { setHasOptionsMenu(true) + val nightMode = PreferenceManager.getDefaultSharedPreferences(context) + .getBoolean(Constants.KEY_NIGHT_MODE_ACTIVATED, false) + // Sets the toolbar background color to green val toolbar: Toolbar? = activity?.findViewById(R.id.toolbar) - toolbar?.setBackgroundResource(R.color.colorReceive) + toolbar?.setBackgroundResource(if (!nightMode) R.color.colorReceive else R.color.colorToolbarDark) // Sets the status bar background color to a dark green val window = activity?.window - window?.statusBarColor = ContextCompat.getColor(context!!, R.color.colorReceiveDark) + window?.statusBarColor = ContextCompat.getColor(context!!, + if (!nightMode) R.color.colorReceiveDark else R.color.colorStatusBarDark) return inflater.inflate(R.layout.fragment_receive_transaction, container, false) } diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt index 231faf9..f16bd24 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt @@ -111,13 +111,17 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { setHasOptionsMenu(true) + val nightMode = PreferenceManager.getDefaultSharedPreferences(context) + .getBoolean(Constants.KEY_NIGHT_MODE_ACTIVATED, false) + // Sets the toolbar background color to red val toolbar: Toolbar? = activity?.findViewById(R.id.toolbar) - toolbar?.setBackgroundResource(R.color.colorSend) + toolbar?.setBackgroundResource(if (!nightMode) R.color.colorSend else R.color.colorToolbarDark) // Sets the status bar background color to a dark red val window = activity?.window - window?.statusBarColor = ContextCompat.getColor(context!!, R.color.colorSendDark) + window?.statusBarColor = ContextCompat.getColor(context!!, + if (!nightMode) R.color.colorSendDark else R.color.colorStatusBarDark) return inflater.inflate(R.layout.fragment_send_transaction, container, false) } diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index e44bbef..91ec463 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -6,6 +6,8 @@ #424242 + #424242 + #212121 #000 #888 @@ -17,6 +19,5 @@ #1B5E20 #D32F2F #B71C1C - #F44336 #2888 From 10014263d7d9983f600946ccc52b36aff2402897 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Thu, 3 Jan 2019 17:11:58 -0600 Subject: [PATCH 15/65] Improve query to obtain user balances to avoid showing assets with a balance equal to zero. --- .../bitsybitshareswallet/database/joins/BalanceDetailDao.kt | 2 +- .../cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/BalanceDetailDao.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/BalanceDetailDao.kt index dd7ec5d..e7f1614 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/BalanceDetailDao.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/database/joins/BalanceDetailDao.kt @@ -7,6 +7,6 @@ import androidx.room.Query @Dao interface BalanceDetailDao { @Query("SELECT assets.id AS id, balances.asset_amount AS amount, assets.precision, assets.symbol " + - "FROM balances INNER JOIN assets on balances.asset_id = assets.id") + "FROM balances INNER JOIN assets on balances.asset_id = assets.id WHERE balances.asset_amount > 0") fun getAll(): LiveData> } \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt index c158d5a..c9b36d9 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt @@ -68,7 +68,7 @@ class HomeFragment : Fragment() { // Navigate to the Send Transaction Fragment using Navigation's SafeArgs to activate the camera fabSendTransactionCamera.setOnClickListener { val action = HomeFragmentDirections.sendActionCamera() - action.setOpenCamera(true) + action.openCamera = true findNavController().navigate(action) } From 4e64b1001446889caf8dd06ee737a694b63bd2be Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Fri, 4 Jan 2019 13:13:55 -0600 Subject: [PATCH 16/65] Created ConnectedFragment, that encapsulates the repeated code which encapsulates the repeated code Fragmets that connect to the NetworkService use. Simplified SendTransactionFragment by extending the newly created ConnectedFragment. --- .../activities/ImportBrainkeyActivity.kt | 1 - .../fragments/ConnectedFragment.kt | 106 ++++++++++++++++++ .../fragments/SendTransactionFragment.kt | 88 +++------------ 3 files changed, 124 insertions(+), 71 deletions(-) create mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ConnectedFragment.kt diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ImportBrainkeyActivity.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ImportBrainkeyActivity.kt index 135ef7b..58de264 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ImportBrainkeyActivity.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ImportBrainkeyActivity.kt @@ -27,7 +27,6 @@ import org.bitcoinj.core.ECKey import java.util.ArrayList import java.util.concurrent.TimeUnit -// TODO Add method to load the 20? most important assets // TODO add progress bar or something while the user waits for the import response from the node class ImportBrainkeyActivity : ConnectedActivity() { diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ConnectedFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ConnectedFragment.kt new file mode 100644 index 0000000..2452070 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ConnectedFragment.kt @@ -0,0 +1,106 @@ +package cy.agorise.bitsybitshareswallet.fragments + +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.ServiceConnection +import android.os.Bundle +import android.os.IBinder +import android.util.Log +import android.view.View +import androidx.fragment.app.Fragment +import cy.agorise.graphenej.api.ConnectionStatusUpdate +import cy.agorise.graphenej.api.android.NetworkService +import cy.agorise.graphenej.api.android.RxBus +import cy.agorise.graphenej.models.JsonRpcResponse +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.CompositeDisposable + +/** + * Base fragment that defines the methods and variables commonly used in all fragments that directly connect and + * talk to the BitShares nodes through graphenej's NetworkService + */ +abstract class ConnectedFragment: Fragment(), ServiceConnection { + + companion object { + private const val TAG = "ConnectedFragment" + } + + /** Network service connection */ + protected var mNetworkService: NetworkService? = null + + /** Flag used to keep track of the NetworkService binding state */ + private var mShouldUnbindNetwork: Boolean = false + + /** Keeps track of all RxJava disposables, to make sure they are all disposed when the fragment is destroyed */ + protected var mDisposables = CompositeDisposable() + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + // Connect to the RxBus, which receives events from the NetworkService + mDisposables.add( + RxBus.getBusInstance() + .asFlowable() + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { handleIncomingMessage(it) } + ) + } + + private fun handleIncomingMessage(message: Any?) { + if (message is JsonRpcResponse<*>) { + // Generic processing taken care by subclasses + handleJsonRpcResponse(message) + } else if (message is ConnectionStatusUpdate) { + // Generic processing taken care by subclasses + handleConnectionStatusUpdate(message) + } + } + + override fun onResume() { + super.onResume() + + val intent = Intent(context, NetworkService::class.java) + if (context?.bindService(intent, this, Context.BIND_AUTO_CREATE) == true) { + mShouldUnbindNetwork = true + } else { + Log.e(TAG, "Binding to the network service failed.") + } + } + + override fun onPause() { + super.onPause() + + // Unbinding from network service + if (mShouldUnbindNetwork) { + context?.unbindService(this) + mShouldUnbindNetwork = false + } + } + + override fun onDestroy() { + super.onDestroy() + + if (!mDisposables.isDisposed) mDisposables.dispose() + } + + override fun onServiceDisconnected(name: ComponentName?) { } + + override fun onServiceConnected(name: ComponentName?, service: IBinder?) { + // We've bound to LocalService, cast the IBinder and get LocalService instance + val binder = service as NetworkService.LocalBinder + mNetworkService = binder.service + } + + /** + * Method to be implemented by all subclasses in order to be notified of JSON-RPC responses. + * @param response + */ + abstract fun handleJsonRpcResponse(response: JsonRpcResponse<*>) + + /** + * Method to be implemented by all subclasses in order to be notified of connection status updates + * @param connectionStatusUpdate + */ + abstract fun handleConnectionStatusUpdate(connectionStatusUpdate: ConnectionStatusUpdate) +} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt index f16bd24..17387fe 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SendTransactionFragment.kt @@ -1,13 +1,8 @@ package cy.agorise.bitsybitshareswallet.fragments import android.Manifest -import android.content.ComponentName -import android.content.Context -import android.content.Intent -import android.content.ServiceConnection import android.content.pm.PackageManager import android.os.Bundle -import android.os.IBinder import android.preference.PreferenceManager import android.util.Log import android.view.* @@ -15,7 +10,6 @@ import android.widget.AdapterView import android.widget.Toast import androidx.appcompat.widget.Toolbar import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders import com.afollestad.materialdialogs.MaterialDialog @@ -32,8 +26,6 @@ import cy.agorise.bitsybitshareswallet.utils.* import cy.agorise.bitsybitshareswallet.viewmodels.BalanceDetailViewModel import cy.agorise.graphenej.* import cy.agorise.graphenej.api.ConnectionStatusUpdate -import cy.agorise.graphenej.api.android.NetworkService -import cy.agorise.graphenej.api.android.RxBus import cy.agorise.graphenej.api.calls.BroadcastTransaction import cy.agorise.graphenej.api.calls.GetAccountByName import cy.agorise.graphenej.api.calls.GetDynamicGlobalProperties @@ -43,7 +35,6 @@ import cy.agorise.graphenej.models.DynamicGlobalProperties import cy.agorise.graphenej.models.JsonRpcResponse import cy.agorise.graphenej.operations.TransferOperationBuilder import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.disposables.CompositeDisposable import io.reactivex.schedulers.Schedulers import kotlinx.android.synthetic.main.fragment_send_transaction.* import me.dm7.barcodescanner.zxing.ZXingScannerView @@ -57,7 +48,7 @@ import java.util.Locale import java.util.concurrent.TimeUnit import javax.crypto.AEADBadTagException -class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, ServiceConnection { +class SendTransactionFragment : ConnectedFragment(), ZXingScannerView.ResultHandler { private val TAG = this.javaClass.simpleName // Camera Permission @@ -86,14 +77,6 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv /** User account to which send the funds */ private var mSelectedUserAccount: UserAccount? = null - private var mDisposables = CompositeDisposable() - - /* Network service connection */ - private var mNetworkService: NetworkService? = null - - /** Flag used to keep track of the NetworkService binding state */ - private var mShouldUnbindNetwork: Boolean = false - // Map used to keep track of request and response id pairs private val responseMap = HashMap() @@ -213,34 +196,26 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv .observeOn(AndroidSchedulers.mainThread()) .subscribe { validateAmount(it!!) } ) - - // Connect to the RxBus, which receives events from the NetworkService - mDisposables.add( - RxBus.getBusInstance() - .asFlowable() - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { handleIncomingMessage(it) } - ) } - private fun handleIncomingMessage(message: Any?) { - if (message is JsonRpcResponse<*>) { - if (responseMap.containsKey(message.id)) { - val responseType = responseMap[message.id] - when (responseType) { - RESPONSE_GET_ACCOUNT_BY_NAME -> handleAccountName(message.result) - RESPONSE_GET_DYNAMIC_GLOBAL_PARAMETERS -> handleDynamicGlobalProperties(message.result) - RESPONSE_GET_REQUIRED_FEES -> handleRequiredFees(message.result) - RESPONSE_BROADCAST_TRANSACTION -> handleBroadcastTransaction(message) - } - responseMap.remove(message.id) - } - } else if (message is ConnectionStatusUpdate) { - if (message.updateCode == ConnectionStatusUpdate.DISCONNECTED) { - // If we got a disconnection notification, we should clear our response map, since - // all its stored request ids will now be reset - responseMap.clear() + override fun handleJsonRpcResponse(response: JsonRpcResponse<*>) { + if (responseMap.containsKey(response.id)) { + val responseType = responseMap[response.id] + when (responseType) { + RESPONSE_GET_ACCOUNT_BY_NAME -> handleAccountName(response.result) + RESPONSE_GET_DYNAMIC_GLOBAL_PARAMETERS -> handleDynamicGlobalProperties(response.result) + RESPONSE_GET_REQUIRED_FEES -> handleRequiredFees(response.result) + RESPONSE_BROADCAST_TRANSACTION -> handleBroadcastTransaction(response) } + responseMap.remove(response.id) + } + } + + override fun handleConnectionStatusUpdate(connectionStatusUpdate: ConnectionStatusUpdate) { + if (connectionStatusUpdate.updateCode == ConnectionStatusUpdate.DISCONNECTED) { + // If we got a disconnection notification, we should clear our response map, since + // all its stored request ids will now be reset + responseMap.clear() } } @@ -481,39 +456,12 @@ class SendTransactionFragment : Fragment(), ZXingScannerView.ResultHandler, Serv super.onResume() if (isCameraPreviewVisible) startCameraPreview() - - val intent = Intent(context, NetworkService::class.java) - if (context?.bindService(intent, this, Context.BIND_AUTO_CREATE) == true) { - mShouldUnbindNetwork = true - } else { - Log.e(TAG, "Binding to the network service failed.") - } } override fun onPause() { super.onPause() - // Unbinding from network service - if (mShouldUnbindNetwork) { - context?.unbindService(this) - mShouldUnbindNetwork = false - } - if (!isCameraPreviewVisible) stopCameraPreview() } - - override fun onDestroy() { - super.onDestroy() - - if (!mDisposables.isDisposed) mDisposables.dispose() - } - - override fun onServiceDisconnected(name: ComponentName?) { } - - override fun onServiceConnected(name: ComponentName?, service: IBinder?) { - // We've bound to LocalService, cast the IBinder and get LocalService instance - val binder = service as NetworkService.LocalBinder - mNetworkService = binder.service - } } From 58e1e0a5757d7918bdc88789d894d97ce431663d Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Fri, 4 Jan 2019 15:53:29 -0600 Subject: [PATCH 17/65] Removed LicenseActivity and created LicenseFragment instead, to comply with the proposed app architecture using the AAC Navigation component where there is only one Activity and all the views are represented by Fragments. --- app/src/main/AndroidManifest.xml | 1 - .../activities/LicenseActivity.kt | 55 ---------------- .../activities/SplashActivity.kt | 2 +- .../fragments/ConnectedFragment.kt | 2 +- .../fragments/HomeFragment.kt | 17 +++-- .../fragments/LicenseFragment.kt | 66 +++++++++++++++++++ .../bitsybitshareswallet/utils/Constants.kt | 3 - ...ivity_license.xml => fragment_license.xml} | 0 .../main/res/navigation/mobile_navigation.xml | 19 ++++++ 9 files changed, 100 insertions(+), 65 deletions(-) delete mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/activities/LicenseActivity.kt create mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/LicenseFragment.kt rename app/src/main/res/layout/{activity_license.xml => fragment_license.xml} (100%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b243968..6a60934 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -44,7 +44,6 @@ - { user -> + mUserAccountViewModel.getUserAccount(userId).observe(this, Observer{ user -> tvAccountName.text = user.name }) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/LicenseFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/LicenseFragment.kt new file mode 100644 index 0000000..385b7d1 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/LicenseFragment.kt @@ -0,0 +1,66 @@ +package cy.agorise.bitsybitshareswallet.fragments + +import android.os.Bundle +import android.preference.PreferenceManager +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.widget.Toolbar +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController +import cy.agorise.bitsybitshareswallet.R +import cy.agorise.bitsybitshareswallet.utils.Constants +import kotlinx.android.synthetic.main.fragment_license.* + +class LicenseFragment : Fragment() { + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + // Remove up navigation icon from the toolbar + val toolbar: Toolbar? = activity?.findViewById(R.id.toolbar) + toolbar?.navigationIcon = null + + return inflater.inflate(R.layout.fragment_license, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + // Get version number of the last agreed license version + val agreedLicenseVersion = PreferenceManager.getDefaultSharedPreferences(context) + .getInt(Constants.KEY_LAST_AGREED_LICENSE_VERSION, 0) + + // If the last agreed license version is the actual one then proceed to the following Activities + if (agreedLicenseVersion == Constants.CURRENT_LICENSE_VERSION) { + agree() + } else { + wbLA.loadUrl("file:///android_asset/eula.html") + + btnDisagree.setOnClickListener { activity?.finish() } + + btnAgree.setOnClickListener { agree() } + } + } + + /** + * This function stores the version of the current accepted license version into the Shared Preferences and + * sends the user to import/create account if there is no active account or to the MainActivity otherwise. + */ + private fun agree() { + PreferenceManager.getDefaultSharedPreferences(context).edit() + .putInt(Constants.KEY_LAST_AGREED_LICENSE_VERSION, Constants.CURRENT_LICENSE_VERSION).apply() + +// val intent : Intent? +// +// val initialSetupDone = PreferenceManager.getDefaultSharedPreferences(this) +// .getBoolean(Constants.KEY_INITIAL_SETUP_DONE, false) +// +// intent = if (!initialSetupDone) +// Intent(this, ImportBrainkeyActivity::class.java) +// else +// Intent(this, MainActivity::class.java) +// +// +// startActivity(intent) +// finish() + } +} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Constants.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Constants.kt index f404a82..7aa59cf 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Constants.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Constants.kt @@ -8,9 +8,6 @@ object Constants { /** Version of the currently used license */ const val CURRENT_LICENSE_VERSION = 1 - /** Key used to store if the initial setup is already done or not */ - const val KEY_INITIAL_SETUP_DONE = "key_initial_setup_done" - /** Key used to store the id value of the currently active account in the shared preferences */ const val KEY_CURRENT_ACCOUNT_ID = "key_current_account_id" diff --git a/app/src/main/res/layout/activity_license.xml b/app/src/main/res/layout/fragment_license.xml similarity index 100% rename from app/src/main/res/layout/activity_license.xml rename to app/src/main/res/layout/fragment_license.xml diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 1e2c596..3981905 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -35,6 +35,13 @@ app:exitAnim="@anim/slide_out_left" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right"/> + + + + + + + + + \ No newline at end of file From 2dd843fe91b96935f8524a8d8926b2c7c8918920 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Fri, 4 Jan 2019 16:50:56 -0600 Subject: [PATCH 18/65] Removed ImportBrainkeyActivity and created ImportBrainkeyFragment instead, with this the app is now using a single activity and all the content is divided in fragments. All the navigation inside the app is now controlled by the AAC Navigation component. --- app/src/main/AndroidManifest.xml | 1 - .../activities/MainActivity.kt | 9 ++ .../ImportBrainkeyFragment.kt} | 89 ++++++++----------- .../fragments/LicenseFragment.kt | 16 +--- ...inkey.xml => fragment_import_brainkey.xml} | 2 +- .../main/res/navigation/mobile_navigation.xml | 22 +++-- 6 files changed, 67 insertions(+), 72 deletions(-) rename app/src/main/java/cy/agorise/bitsybitshareswallet/{activities/ImportBrainkeyActivity.kt => fragments/ImportBrainkeyFragment.kt} (84%) rename app/src/main/res/layout/{activity_import_brainkey.xml => fragment_import_brainkey.xml} (98%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6a60934..1dd134f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -44,7 +44,6 @@ - finish() + else -> super.onBackPressed() + } + } } diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ImportBrainkeyActivity.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ImportBrainkeyFragment.kt similarity index 84% rename from app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ImportBrainkeyActivity.kt rename to app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ImportBrainkeyFragment.kt index 58de264..67a05dd 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ImportBrainkeyActivity.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ImportBrainkeyFragment.kt @@ -1,10 +1,13 @@ -package cy.agorise.bitsybitshareswallet.activities +package cy.agorise.bitsybitshareswallet.fragments -import android.content.Intent import android.os.Bundle import android.preference.PreferenceManager import android.util.Log -import android.widget.Toast +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.widget.Toolbar +import androidx.navigation.fragment.findNavController import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.list.listItemsSingleChoice import com.jakewharton.rxbinding3.widget.textChanges @@ -14,6 +17,7 @@ import cy.agorise.bitsybitshareswallet.repositories.AuthorityRepository import cy.agorise.bitsybitshareswallet.repositories.UserAccountRepository import cy.agorise.bitsybitshareswallet.utils.Constants import cy.agorise.bitsybitshareswallet.utils.CryptoUtils +import cy.agorise.bitsybitshareswallet.utils.toast import cy.agorise.graphenej.* import cy.agorise.graphenej.api.ConnectionStatusUpdate import cy.agorise.graphenej.api.calls.GetAccounts @@ -21,25 +25,20 @@ import cy.agorise.graphenej.api.calls.GetKeyReferences import cy.agorise.graphenej.models.AccountProperties import cy.agorise.graphenej.models.JsonRpcResponse import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.disposables.CompositeDisposable -import kotlinx.android.synthetic.main.activity_import_brainkey.* +import kotlinx.android.synthetic.main.fragment_import_brainkey.* import org.bitcoinj.core.ECKey import java.util.ArrayList import java.util.concurrent.TimeUnit -// TODO add progress bar or something while the user waits for the import response from the node +class ImportBrainkeyFragment : ConnectedFragment() { + companion object { + private const val TAG = "ImportBrainkeyActivity" + } -class ImportBrainkeyActivity : ConnectedActivity() { - private val TAG = "ImportBrainkeyActivity" - - /** - * Private variable that will hold an instance of the [BrainKey] class - */ + /** Private variable that will hold an instance of the [BrainKey] class */ private var mBrainKey: BrainKey? = null - /** - * User account associated with the key derived from the brainkey that the user just typed in - */ + /** User account associated with the key derived from the brainkey that the user just typed in */ private var mUserAccount: UserAccount? = null /** @@ -53,15 +52,20 @@ class ImportBrainkeyActivity : ConnectedActivity() { private var keyReferencesRequestId: Long = 0 private var getAccountsRequestId: Long = 0 - private var mDisposables = CompositeDisposable() - private var isPINValid = false private var isPINConfirmationValid = false private var isBrainKeyValid = false - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_import_brainkey) + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + // Remove up navigation icon from the toolbar + val toolbar: Toolbar? = activity?.findViewById(R.id.toolbar) + toolbar?.navigationIcon = null + + return inflater.inflate(R.layout.fragment_import_brainkey, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) // Use RxJava Debounce to update the PIN error only after the user stops writing for > 500 ms mDisposables.add( @@ -202,7 +206,7 @@ class ImportBrainkeyActivity : ConnectedActivity() { } else { if (accountList.isEmpty()) { //hideDialog() - Toast.makeText(applicationContext, R.string.error__invalid_brainkey, Toast.LENGTH_SHORT).show() + context?.toast(getString(R.string.error__invalid_brainkey)) } else { if (accountList.size == 1) { // If we only found one account linked to this key, then we just proceed @@ -231,7 +235,7 @@ class ImportBrainkeyActivity : ConnectedActivity() { candidates.add(accountProperties.name) } // hideDialog() - MaterialDialog(this) + MaterialDialog(context!!) .title(R.string.dialog__account_candidates_title) .message(R.string.dialog__account_candidates_content) .listItemsSingleChoice (items = candidates, initialSelection = -1) { _, index, _ -> @@ -251,7 +255,7 @@ class ImportBrainkeyActivity : ConnectedActivity() { } else if (accountPropertiesList.size == 1) { onAccountSelected(accountPropertiesList[0]) } else { - Toast.makeText(applicationContext, R.string.error__try_again, Toast.LENGTH_SHORT).show() + context?.toast(getString(R.string.error__try_again)) } } } @@ -273,10 +277,10 @@ class ImportBrainkeyActivity : ConnectedActivity() { private fun onAccountSelected(accountProperties: AccountProperties) { mUserAccount!!.name = accountProperties.name - val encryptedPIN = CryptoUtils.encrypt(this, tietPin.text!!.toString()) + val encryptedPIN = CryptoUtils.encrypt(context!!, tietPin.text!!.toString()) // Stores the user selected PIN encrypted - PreferenceManager.getDefaultSharedPreferences(this) + PreferenceManager.getDefaultSharedPreferences(context!!) .edit() .putString(Constants.KEY_ENCRYPTED_PIN, encryptedPIN) .apply() @@ -288,14 +292,12 @@ class ImportBrainkeyActivity : ConnectedActivity() { val userAccount = cy.agorise.bitsybitshareswallet.database.entities.UserAccount(id, name, isLTM) - val userAccountRepository = UserAccountRepository(application) + val userAccountRepository = UserAccountRepository(context!!.applicationContext) userAccountRepository.insert(userAccount) // Stores the id of the currently active user account - PreferenceManager.getDefaultSharedPreferences(this) - .edit() - .putString(Constants.KEY_CURRENT_ACCOUNT_ID, mUserAccount!!.objectId) - .apply() + PreferenceManager.getDefaultSharedPreferences(context!!).edit() + .putString(Constants.KEY_CURRENT_ACCOUNT_ID, mUserAccount!!.objectId).apply() // Trying to store all possible authorities (owner, active and memo) into the database val ownerAuthority = accountProperties.owner @@ -317,17 +319,8 @@ class ImportBrainkeyActivity : ConnectedActivity() { } } - // Stores a flag into the SharedPreferences to tell the app there is an active account and there is no need - // to show this activity again, until the account is removed. - PreferenceManager.getDefaultSharedPreferences(this) - .edit() - .putBoolean(Constants.KEY_INITIAL_SETUP_DONE, true) - .apply() - - // Send the user to the MainActivity - val intent = Intent(this, MainActivity::class.java) - startActivity(intent) - finish() + // Send the user back to HomeFragment + findNavController().popBackStack() } /** @@ -338,19 +331,13 @@ class ImportBrainkeyActivity : ConnectedActivity() { val wif = brainKey.walletImportFormat val sequenceNumber = brainKey.sequenceNumber - val encryptedBrainKey = CryptoUtils.encrypt(this, brainKeyWords) - val encryptedSequenceNumber = CryptoUtils.encrypt(this, sequenceNumber.toString()) - val encryptedWIF = CryptoUtils.encrypt(this, wif) + val encryptedBrainKey = CryptoUtils.encrypt(context!!, brainKeyWords) + val encryptedSequenceNumber = CryptoUtils.encrypt(context!!, sequenceNumber.toString()) + val encryptedWIF = CryptoUtils.encrypt(context!!, wif) val authority = Authority(0, userId, authorityType, encryptedWIF, encryptedBrainKey, encryptedSequenceNumber) - val authorityRepository = AuthorityRepository(this) + val authorityRepository = AuthorityRepository(context!!) authorityRepository.insert(authority) } - - override fun onDestroy() { - super.onDestroy() - - if (!mDisposables.isDisposed) mDisposables.dispose() - } } \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/LicenseFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/LicenseFragment.kt index 385b7d1..0d4a584 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/LicenseFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/LicenseFragment.kt @@ -43,24 +43,12 @@ class LicenseFragment : Fragment() { /** * This function stores the version of the current accepted license version into the Shared Preferences and - * sends the user to import/create account if there is no active account or to the MainActivity otherwise. + * sends the user to import/create account. */ private fun agree() { PreferenceManager.getDefaultSharedPreferences(context).edit() .putInt(Constants.KEY_LAST_AGREED_LICENSE_VERSION, Constants.CURRENT_LICENSE_VERSION).apply() -// val intent : Intent? -// -// val initialSetupDone = PreferenceManager.getDefaultSharedPreferences(this) -// .getBoolean(Constants.KEY_INITIAL_SETUP_DONE, false) -// -// intent = if (!initialSetupDone) -// Intent(this, ImportBrainkeyActivity::class.java) -// else -// Intent(this, MainActivity::class.java) -// -// -// startActivity(intent) -// finish() + findNavController().navigate(R.id.import_brainkey_action) } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_import_brainkey.xml b/app/src/main/res/layout/fragment_import_brainkey.xml similarity index 98% rename from app/src/main/res/layout/activity_import_brainkey.xml rename to app/src/main/res/layout/fragment_import_brainkey.xml index 87d1449..dfa914e 100644 --- a/app/src/main/res/layout/activity_import_brainkey.xml +++ b/app/src/main/res/layout/fragment_import_brainkey.xml @@ -6,7 +6,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:orientation="vertical" - tools:context=".activities.ImportBrainkeyActivity"> + tools:context=".fragments.ImportBrainkeyFragment"> + app:destination="@id/navigation_setup"/> @@ -87,8 +85,22 @@ + android:label="@string/app_name" + tools:layout="@layout/fragment_license"> + + + + + + From 0deecca8ed7c7a4cf1b2c646b582a0b1ff55172a Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Fri, 4 Jan 2019 17:01:06 -0600 Subject: [PATCH 19/65] Remove no longer needed code from ConnectedActivity and MainActivity and add a description to each of the Activities to describe their purpose. --- .../activities/ConnectedActivity.kt | 34 +++++++------------ .../activities/MainActivity.kt | 19 +++-------- 2 files changed, 16 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt index 9021743..1e43ab6 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt @@ -40,16 +40,21 @@ import kotlin.collections.ArrayList import kotlin.collections.HashMap /** - * Class in charge of managing the connection to graphenej's NetworkService + * The app uses the single Activity methodology, but this activity was created so that MainActivity can extend from it. + * This class manages everything related to keeping the information in the database updated using graphenej's + * NetworkService, leaving to MainActivity only the Navigation work and some other UI features. */ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { - private val TAG = this.javaClass.simpleName - private val RESPONSE_GET_FULL_ACCOUNTS = 1 - private val RESPONSE_GET_ACCOUNTS = 2 - private val RESPONSE_GET_ACCOUNT_BALANCES = 3 - private val RESPONSE_GET_ASSETS = 4 - private val RESPONSE_GET_BLOCK_HEADER = 5 + companion object { + private const val TAG = "ConnectedActivity" + + private const val RESPONSE_GET_FULL_ACCOUNTS = 1 + private const val RESPONSE_GET_ACCOUNTS = 2 + private const val RESPONSE_GET_ACCOUNT_BALANCES = 3 + private const val RESPONSE_GET_ASSETS = 4 + private const val RESPONSE_GET_BLOCK_HEADER = 5 + } private lateinit var mUserAccountViewModel: UserAccountViewModel private lateinit var mBalanceViewModel: BalanceViewModel @@ -141,8 +146,6 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { private fun handleIncomingMessage(message: Any?) { if (message is JsonRpcResponse<*>) { - // Generic processing taken care by subclasses - handleJsonRpcResponse(message) if (message.error == null) { if (responseMap.containsKey(message.id)) { @@ -178,7 +181,6 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { ).show() } } else if (message is ConnectionStatusUpdate) { - handleConnectionStatusUpdate(message) if (message.updateCode == ConnectionStatusUpdate.DISCONNECTED) { // If we got a disconnection notification, we should clear our response map, since // all its stored request ids will now be reset @@ -405,16 +407,4 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { super.onDestroy() if (!mDisposable!!.isDisposed) mDisposable!!.dispose() } - - /** - * Method to be implemented by all subclasses in order to be notified of JSON-RPC responses. - * @param response - */ - internal abstract fun handleJsonRpcResponse(response: JsonRpcResponse<*>) - - /** - * Method to be implemented by all subclasses in order to be notified of connection status updates - * @param connectionStatusUpdate - */ - internal abstract fun handleConnectionStatusUpdate(connectionStatusUpdate: ConnectionStatusUpdate) } \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/MainActivity.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/MainActivity.kt index 05b0425..21cf69c 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/MainActivity.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/MainActivity.kt @@ -12,12 +12,13 @@ import androidx.navigation.ui.onNavDestinationSelected import androidx.navigation.ui.setupActionBarWithNavController import cy.agorise.bitsybitshareswallet.R import cy.agorise.bitsybitshareswallet.utils.Constants -import cy.agorise.graphenej.api.ConnectionStatusUpdate -import cy.agorise.graphenej.models.JsonRpcResponse import kotlinx.android.synthetic.main.activity_main.* +/** + * Uses the AAC Navigation Component with a NavHostFragment which is the place where all Fragments are shown, + * following the philosophy of using a single Activity. + */ class MainActivity : ConnectedActivity() { - private val TAG = this.javaClass.simpleName private lateinit var appBarConfiguration : AppBarConfiguration @@ -100,18 +101,6 @@ class MainActivity : ConnectedActivity() { return findNavController(R.id.navHostFragment).navigateUp(appBarConfiguration) } - override fun handleJsonRpcResponse(response: JsonRpcResponse<*>) { - - } - - /** - * Private method called whenever there's an update to the connection status - * @param connectionStatusUpdate Connection status update. - */ - override fun handleConnectionStatusUpdate(connectionStatusUpdate: ConnectionStatusUpdate) { - - } - override fun onBackPressed() { // Trick used to avoid crashes when the user is in the License or ImportBrainkey and presses the back button val currentDestination=NavHostFragment.findNavController(navHostFragment).currentDestination From 991967cd7ddacef7babe26a196d98ef42420fa83 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Sat, 5 Jan 2019 15:23:42 -0600 Subject: [PATCH 20/65] Created CreateAccountFragment with its layout and the methods to show it when the user clicks the 'Create' button in the ImportBrainkeyFragment using Navigation AAC. --- .../fragments/CreateAccountFragment.kt | 26 ++++ .../fragments/ImportBrainkeyFragment.kt | 5 + .../res/drawable/outline_rounded_corners.xml | 6 + .../res/layout/fragment_create_account.xml | 115 ++++++++++++++++++ .../res/layout/fragment_import_brainkey.xml | 3 +- app/src/main/res/layout/fragment_settings.xml | 2 +- .../main/res/navigation/mobile_navigation.xml | 18 ++- app/src/main/res/values/strings.xml | 11 +- 8 files changed, 178 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt create mode 100644 app/src/main/res/drawable/outline_rounded_corners.xml create mode 100644 app/src/main/res/layout/fragment_create_account.xml diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt new file mode 100644 index 0000000..f5b226e --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt @@ -0,0 +1,26 @@ +package cy.agorise.bitsybitshareswallet.fragments + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import cy.agorise.bitsybitshareswallet.R +import cy.agorise.graphenej.api.ConnectionStatusUpdate +import cy.agorise.graphenej.models.JsonRpcResponse + +class CreateAccountFragment : ConnectedFragment() { + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + setHasOptionsMenu(true) + + return inflater.inflate(R.layout.fragment_create_account, container, false) + } + + override fun handleJsonRpcResponse(response: JsonRpcResponse<*>) { + // TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun handleConnectionStatusUpdate(connectionStatusUpdate: ConnectionStatusUpdate) { + // TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } +} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ImportBrainkeyFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ImportBrainkeyFragment.kt index 67a05dd..7af7150 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ImportBrainkeyFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ImportBrainkeyFragment.kt @@ -7,6 +7,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.appcompat.widget.Toolbar +import androidx.navigation.Navigation import androidx.navigation.fragment.findNavController import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.list.listItemsSingleChoice @@ -97,6 +98,10 @@ class ImportBrainkeyFragment : ConnectedFragment() { btnImport.isEnabled = false btnImport.setOnClickListener { verifyBrainKey(false) } + + btnCreate.setOnClickListener ( + Navigation.createNavigateOnClickListener(R.id.create_account_action) + ) } private fun validatePIN() { diff --git a/app/src/main/res/drawable/outline_rounded_corners.xml b/app/src/main/res/drawable/outline_rounded_corners.xml new file mode 100644 index 0000000..38a5c24 --- /dev/null +++ b/app/src/main/res/drawable/outline_rounded_corners.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_create_account.xml b/app/src/main/res/layout/fragment_create_account.xml new file mode 100644 index 0000000..a8adca7 --- /dev/null +++ b/app/src/main/res/layout/fragment_create_account.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_import_brainkey.xml b/app/src/main/res/layout/fragment_import_brainkey.xml index dfa914e..7ea75c3 100644 --- a/app/src/main/res/layout/fragment_import_brainkey.xml +++ b/app/src/main/res/layout/fragment_import_brainkey.xml @@ -95,7 +95,6 @@ android:layout_marginTop="@dimen/spacing_different_topic" android:layout_marginStart="@dimen/activity_horizontal_margin" android:layout_marginEnd="@dimen/activity_horizontal_margin" - android:text="@string/button__create" - android:enabled="false"/> + android:text="@string/button__create"/> diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 905d393..3f90287 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -83,7 +83,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/spacing_same_topic" - android:text="@string/btn__view_and_copy"/> + android:text="@string/button__view_and_copy"/> diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index 66ddf45..bded66c 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -100,7 +100,23 @@ android:id="@+id/import_brainkey_dest" android:name="cy.agorise.bitsybitshareswallet.fragments.ImportBrainkeyFragment" android:label="@string/app_name" - tools:layout="@layout/fragment_import_brainkey"/> + tools:layout="@layout/fragment_import_brainkey"> + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index efbb6e1..714e354 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,7 +6,7 @@ Agree Disagree - + 6+ digits PIN PIN too short Confirm PIN @@ -25,6 +25,9 @@ more than one account, please select which account you wish to import + + BitShares account name + Transactions Merchants @@ -93,10 +96,10 @@ BrainKey. Account recovery words that can be captured or copied, but not edited. - Print this out, or write it down. Anyone with access to your recovery key will - have access to funds within this wallet. + Write this down! Be sure you have 2 copies of this BrainKey in 2 secure locations + in case of fire or loss. Security First! Anyone with access to your BrainKey can access the funds in your account! - + Bugs or Ideas? Telegram chat: http://t.me/Agorise\nEmail: Agorise@protonmail.ch\nOpen Source: https://github.com/Agorise From 14a4f79cb2cd1993723e1f7c2c2ea9d81410dd7f Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Sat, 5 Jan 2019 16:30:57 -0600 Subject: [PATCH 21/65] Added the BrainKey Bitshares dictionary as a text file in the app assets and make use of it to automatically generate BrainKeys in CreateAccountActivity when the user is trying to create a new account. --- app/src/main/assets/brainkeydict.txt | 1 + .../fragments/CreateAccountFragment.kt | 58 +++++++++++++++++++ .../res/layout/fragment_create_account.xml | 8 ++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 app/src/main/assets/brainkeydict.txt diff --git a/app/src/main/assets/brainkeydict.txt b/app/src/main/assets/brainkeydict.txt new file mode 100644 index 0000000..d8b2fc9 --- /dev/null +++ b/app/src/main/assets/brainkeydict.txt @@ -0,0 +1 @@ +a,aa,aal,aalii,aam,aba,abac,abaca,abacate,abacay,abacist,aback,abactor,abacus,abaff,abaft,abaiser,abalone,abandon,abas,abase,abased,abaser,abash,abashed,abasia,abasic,abask,abate,abater,abatis,abaton,abator,abature,abave,abaxial,abaxile,abaze,abb,abbacy,abbas,abbasi,abbassi,abbess,abbey,abbot,abbotcy,abdal,abdat,abdest,abdomen,abduce,abduct,abeam,abear,abed,abeigh,abele,abelite,abet,abettal,abettor,abey,abeyant,abfarad,abhenry,abhor,abidal,abide,abider,abidi,abiding,abietic,abietin,abigail,abigeat,abigeus,abilao,ability,abilla,abilo,abiosis,abiotic,abir,abiston,abiuret,abject,abjoint,abjudge,abjure,abjurer,abkar,abkari,ablach,ablare,ablate,ablator,ablaut,ablaze,able,ableeze,abler,ablest,ablins,abloom,ablow,ablude,abluent,ablush,ably,abmho,abnet,aboard,abode,abody,abohm,aboil,abolish,abolla,aboma,abomine,aboon,aborad,aboral,abord,abort,aborted,abortin,abortus,abound,about,abouts,above,abox,abrade,abrader,abraid,abrasax,abrase,abrash,abraum,abraxas,abreact,abreast,abret,abrico,abridge,abrim,abrin,abroach,abroad,abrook,abrupt,abscess,abscind,abscise,absciss,abscond,absence,absent,absit,absmho,absohm,absolve,absorb,absorpt,abstain,absume,absurd,absvolt,abthain,abu,abucco,abulia,abulic,abuna,abura,aburban,aburst,aburton,abuse,abusee,abuser,abusion,abusive,abut,abuttal,abutter,abuzz,abvolt,abwab,aby,abysm,abysmal,abyss,abyssal,acaciin,acacin,academe,academy,acajou,acaleph,acana,acanth,acantha,acapnia,acapu,acara,acardia,acari,acarian,acarid,acarine,acaroid,acarol,acate,acatery,acaudal,acca,accede,acceder,accend,accent,accept,accerse,access,accidia,accidie,accinge,accite,acclaim,accloy,accoast,accoil,accolle,accompt,accord,accost,account,accoy,accrete,accrual,accrue,accruer,accurse,accusal,accuse,accused,accuser,ace,acedia,acedy,acephal,acerate,acerb,acerbic,acerdol,acerin,acerose,acerous,acerra,aceship,acetal,acetate,acetic,acetify,acetin,acetize,acetoin,acetol,acetone,acetose,acetous,acetum,acetyl,ach,achage,achar,achate,ache,achene,acher,achete,achieve,achigan,achill,achime,aching,achira,acholia,acholic,achor,achree,achroma,achtel,achy,achylia,achymia,acicula,acid,acider,acidic,acidify,acidite,acidity,acidize,acidly,acidoid,acidyl,acier,aciform,acinar,acinary,acinic,acinose,acinous,acinus,aciurgy,acker,ackey,ackman,acknow,acle,aclinal,aclinic,acloud,aclys,acmatic,acme,acmic,acmite,acne,acnemia,acnodal,acnode,acock,acocotl,acoin,acoine,acold,acology,acolous,acolyte,acoma,acomia,acomous,acone,aconic,aconin,aconine,aconite,acopic,acopon,acor,acorea,acoria,acorn,acorned,acosmic,acouasm,acouchi,acouchy,acoupa,acquest,acquire,acquist,acquit,acracy,acraein,acrasia,acratia,acrawl,acraze,acre,acreage,acreak,acream,acred,acreman,acrid,acridan,acridic,acridly,acridyl,acrinyl,acrisia,acritan,acrite,acritol,acroama,acrobat,acrogen,acron,acronyc,acronym,acronyx,acrook,acrose,across,acrotic,acryl,acrylic,acrylyl,act,acta,actable,actify,actin,actinal,actine,acting,actinic,actinon,action,active,activin,actless,acton,actor,actress,actu,actual,actuary,acture,acuate,acuity,aculea,aculeus,acumen,acushla,acutate,acute,acutely,acutish,acyclic,acyesis,acyetic,acyl,acylate,acyloin,acyloxy,acystia,ad,adactyl,adad,adage,adagial,adagio,adamant,adamas,adamine,adamite,adance,adangle,adapid,adapt,adapter,adaptor,adarme,adat,adati,adatom,adaunt,adaw,adawe,adawlut,adawn,adaxial,aday,adays,adazzle,adcraft,add,adda,addable,addax,added,addedly,addend,addenda,adder,addible,addict,addle,addlins,address,addrest,adduce,adducer,adduct,ade,adead,adeem,adeep,adeling,adelite,adenase,adenia,adenine,adenoid,adenoma,adenose,adenyl,adept,adermia,adermin,adet,adevism,adfix,adhaka,adharma,adhere,adherer,adhibit,adiate,adicity,adieu,adieux,adinole,adion,adipate,adipic,adipoid,adipoma,adipose,adipous,adipsia,adipsic,adipsy,adipyl,adit,adital,aditus,adjag,adject,adjiger,adjoin,adjoint,adjourn,adjudge,adjunct,adjure,adjurer,adjust,adlay,adless,adlet,adman,admi,admiral,admire,admired,admirer,admit,admix,adnate,adnex,adnexal,adnexed,adnoun,ado,adobe,adonin,adonite,adonize,adopt,adopted,adoptee,adopter,adoral,adorant,adore,adorer,adorn,adorner,adossed,adoulie,adown,adoxy,adoze,adpao,adpress,adread,adream,adreamt,adrenal,adrenin,adrift,adrip,adroit,adroop,adrop,adrowse,adrue,adry,adsbud,adsmith,adsorb,adtevac,adular,adulate,adult,adulter,adunc,adusk,adust,advance,advene,adverb,adverse,advert,advice,advisal,advise,advised,advisee,adviser,advisor,advowee,ady,adynamy,adyta,adyton,adytum,adz,adze,adzer,adzooks,ae,aecial,aecium,aedile,aedilic,aefald,aefaldy,aefauld,aegis,aenach,aenean,aeneous,aeolid,aeolina,aeoline,aeon,aeonial,aeonian,aeonist,aer,aerage,aerate,aerator,aerial,aeric,aerical,aerie,aeried,aerify,aero,aerobe,aerobic,aerobus,aerogel,aerogen,aerogun,aeronat,aeronef,aerose,aerosol,aerugo,aery,aes,aevia,aface,afaint,afar,afara,afear,afeard,afeared,afernan,afetal,affa,affable,affably,affair,affaite,affect,affeer,affeir,affiant,affinal,affine,affined,affirm,affix,affixal,affixer,afflict,afflux,afforce,afford,affray,affront,affuse,affy,afghani,afield,afire,aflame,aflare,aflat,aflaunt,aflight,afloat,aflow,aflower,aflush,afoam,afoot,afore,afoul,afraid,afreet,afresh,afret,afront,afrown,aft,aftaba,after,aftergo,aftmost,aftosa,aftward,aga,again,against,agal,agalaxy,agalite,agallop,agalma,agama,agamete,agami,agamian,agamic,agamid,agamoid,agamont,agamous,agamy,agape,agapeti,agar,agaric,agarita,agarwal,agasp,agate,agathin,agatine,agatize,agatoid,agaty,agavose,agaze,agazed,age,aged,agedly,agee,ageless,agelong,agen,agency,agenda,agendum,agent,agentry,ager,ageusia,ageusic,agger,aggrade,aggrate,aggress,aggroup,aggry,aggur,agha,aghanee,aghast,agile,agilely,agility,aging,agio,agist,agistor,agitant,agitate,agla,aglance,aglare,agleaf,agleam,aglet,agley,aglint,aglow,aglucon,agnail,agname,agnamed,agnate,agnatic,agnel,agnize,agnomen,agnosia,agnosis,agnosy,agnus,ago,agog,agoge,agogic,agogics,agoho,agoing,agon,agonal,agone,agonic,agonied,agonist,agonium,agonize,agony,agora,agouara,agouta,agouti,agpaite,agrah,agral,agre,agree,agreed,agreer,agrege,agria,agrin,agrise,agrito,agroan,agrom,agroof,agrope,aground,agrufe,agruif,agsam,agua,ague,aguey,aguish,agunah,agush,agust,agy,agynary,agynous,agyrate,agyria,ah,aha,ahaaina,ahaunch,ahead,aheap,ahem,ahey,ahimsa,ahind,ahint,ahmadi,aho,ahong,ahorse,ahoy,ahsan,ahu,ahuatle,ahull,ahum,ahungry,ahunt,ahura,ahush,ahwal,ahypnia,ai,aid,aidable,aidance,aidant,aide,aider,aidful,aidless,aiel,aiglet,ail,ailanto,aile,aileron,ailette,ailing,aillt,ailment,ailsyte,ailuro,ailweed,aim,aimara,aimer,aimful,aiming,aimless,ainaleh,ainhum,ainoi,ainsell,aint,aion,aionial,air,airable,airampo,airan,aircrew,airdock,airdrop,aire,airer,airfoil,airhead,airily,airing,airish,airless,airlift,airlike,airmail,airman,airmark,airpark,airport,airship,airsick,airt,airward,airway,airy,aisle,aisled,aisling,ait,aitch,aitesis,aition,aiwan,aizle,ajaja,ajangle,ajar,ajari,ajava,ajhar,ajivika,ajog,ajoint,ajowan,ak,aka,akala,akaroa,akasa,akazga,akcheh,ake,akeake,akebi,akee,akeki,akeley,akepiro,akerite,akey,akhoond,akhrot,akhyana,akia,akimbo,akin,akindle,akinete,akmudar,aknee,ako,akoasm,akoasma,akonge,akov,akpek,akra,aku,akule,akund,al,ala,alacha,alack,alada,alaihi,alaite,alala,alalite,alalus,alameda,alamo,alamoth,alan,aland,alangin,alani,alanine,alannah,alantic,alantin,alantol,alanyl,alar,alares,alarm,alarmed,alarum,alary,alas,alate,alated,alatern,alation,alb,alba,alban,albarco,albata,albe,albedo,albee,albeit,albetad,albify,albinal,albinic,albino,albite,albitic,albugo,album,albumen,albumin,alburn,albus,alcaide,alcalde,alcanna,alcazar,alchemy,alchera,alchimy,alchymy,alcine,alclad,alco,alcoate,alcogel,alcohol,alcosol,alcove,alcyon,aldane,aldazin,aldehol,alder,aldern,aldim,aldime,aldine,aldol,aldose,ale,aleak,alec,alecize,alecost,alecup,alee,alef,aleft,alegar,alehoof,alem,alemana,alembic,alemite,alemmal,alen,aleph,alephs,alepole,alepot,alerce,alerse,alert,alertly,alesan,aletap,alette,alevin,alewife,alexia,alexic,alexin,aleyard,alf,alfa,alfaje,alfalfa,alfaqui,alfet,alfiona,alfonso,alforja,alga,algae,algal,algalia,algate,algebra,algedo,algesia,algesic,algesis,algetic,algic,algid,algific,algin,algine,alginic,algist,algoid,algor,algosis,algous,algum,alhenna,alias,alibi,alible,alichel,alidade,alien,aliency,alienee,aliener,alienor,alif,aliform,alight,align,aligner,aliipoe,alike,alima,aliment,alimony,alin,aliofar,alipata,aliped,aliptes,aliptic,aliquot,alish,alisier,alismad,alismal,aliso,alison,alisp,alist,alit,alite,aliunde,alive,aliyah,alizari,aljoba,alk,alkali,alkalic,alkamin,alkane,alkanet,alkene,alkenna,alkenyl,alkide,alkine,alkool,alkoxy,alkoxyl,alky,alkyd,alkyl,alkylic,alkyne,all,allan,allay,allayer,allbone,allege,alleger,allegro,allele,allelic,allene,aller,allergy,alley,alleyed,allgood,allheal,allice,allied,allies,allness,allonym,alloquy,allose,allot,allotee,allover,allow,allower,alloxan,alloy,allseed,alltud,allude,allure,allurer,alluvia,allwork,ally,allyl,allylic,alma,almadia,almadie,almagra,almanac,alme,almemar,almique,almirah,almoign,almon,almond,almondy,almoner,almonry,almost,almous,alms,almsful,almsman,almuce,almud,almude,almug,almuten,aln,alnage,alnager,alnein,alnico,alnoite,alnuin,alo,alochia,alod,alodial,alodian,alodium,alody,aloe,aloed,aloesol,aloetic,aloft,alogia,alogism,alogy,aloid,aloin,aloma,alone,along,alongst,aloof,aloofly,aloose,alop,alopeke,alose,aloud,alow,alowe,alp,alpaca,alpeen,alpha,alphol,alphorn,alphos,alphyl,alpieu,alpine,alpist,alquier,alraun,already,alright,alroot,alruna,also,alsoon,alt,altaite,altar,altared,alter,alterer,altern,alterne,althea,althein,altho,althorn,altilik,altin,alto,altoun,altrose,altun,aludel,alula,alular,alulet,alum,alumic,alumina,alumine,alumish,alumite,alumium,alumna,alumnae,alumnal,alumni,alumnus,alunite,alupag,alure,aluta,alvar,alveary,alveloz,alveola,alveole,alveoli,alveus,alvine,alvite,alvus,alway,always,aly,alypin,alysson,am,ama,amaas,amadou,amaga,amah,amain,amakebe,amala,amalaka,amalgam,amaltas,amamau,amandin,amang,amani,amania,amanori,amanous,amapa,amar,amarin,amarine,amarity,amaroid,amass,amasser,amastia,amasty,amateur,amative,amatol,amatory,amaze,amazed,amazia,amazing,amba,ambage,ambalam,amban,ambar,ambaree,ambary,ambash,ambassy,ambatch,ambay,ambeer,amber,ambery,ambiens,ambient,ambier,ambit,ambital,ambitty,ambitus,amble,ambler,ambling,ambo,ambon,ambos,ambrain,ambrein,ambrite,ambroid,ambrose,ambry,ambsace,ambury,ambush,amchoor,ame,ameed,ameen,amelia,amellus,amelu,amelus,amen,amend,amende,amender,amends,amene,amenia,amenity,ament,amental,amentia,amentum,amerce,amercer,amerism,amesite,ametria,amgarn,amhar,amhran,ami,amiable,amiably,amianth,amic,amical,amice,amiced,amicron,amid,amidase,amidate,amide,amidic,amidid,amidide,amidin,amidine,amido,amidol,amidon,amidoxy,amidst,amil,amimia,amimide,amin,aminate,amine,amini,aminic,aminity,aminize,amino,aminoid,amir,amiray,amiss,amity,amixia,amla,amli,amlikar,amlong,amma,amman,ammelin,ammer,ammeter,ammine,ammo,ammonal,ammonia,ammonic,ammono,ammu,amnesia,amnesic,amnesty,amnia,amniac,amnic,amnion,amniote,amober,amobyr,amoeba,amoebae,amoeban,amoebic,amoebid,amok,amoke,amole,amomal,amomum,among,amongst,amor,amorado,amoraic,amoraim,amoral,amoret,amorism,amorist,amoroso,amorous,amorphy,amort,amotion,amotus,amount,amour,amove,ampalea,amper,ampere,ampery,amphid,amphide,amphora,amphore,ample,amplify,amply,ampoule,ampul,ampulla,amputee,ampyx,amra,amreeta,amrita,amsath,amsel,amt,amtman,amuck,amuguis,amula,amulet,amulla,amunam,amurca,amuse,amused,amusee,amuser,amusia,amusing,amusive,amutter,amuyon,amuyong,amuze,amvis,amy,amyelia,amyelic,amygdal,amyl,amylan,amylase,amylate,amylene,amylic,amylin,amylo,amyloid,amylom,amylon,amylose,amylum,amyous,amyrin,amyrol,amyroot,an,ana,anabata,anabo,anabong,anacara,anacard,anacid,anadem,anadrom,anaemia,anaemic,anagap,anagep,anagoge,anagogy,anagram,anagua,anahau,anal,analav,analgen,analgia,analgic,anally,analogy,analyse,analyst,analyze,anam,anama,anamite,anan,anana,ananas,ananda,ananym,anaphia,anapnea,anapsid,anaqua,anarch,anarchy,anareta,anarya,anatase,anatifa,anatine,anatomy,anatox,anatron,anaudia,anaxial,anaxon,anaxone,anay,anba,anbury,anchor,anchovy,ancient,ancile,ancilla,ancon,anconad,anconal,ancone,ancony,ancora,ancoral,and,anda,andante,andirin,andiron,andric,android,androl,andron,anear,aneath,anele,anemia,anemic,anemone,anemony,anend,anenst,anent,anepia,anergia,anergic,anergy,anerly,aneroid,anes,anesis,aneuria,aneuric,aneurin,anew,angaria,angary,angekok,angel,angelet,angelic,angelin,angelot,anger,angerly,angeyok,angico,angild,angili,angina,anginal,angioid,angioma,angle,angled,angler,angling,angloid,ango,angolar,angor,angrily,angrite,angry,angst,angster,anguid,anguine,anguis,anguish,angula,angular,anguria,anhang,anhima,anhinga,ani,anicut,anidian,aniente,anigh,anight,anights,anil,anilao,anilau,anile,anilic,anilid,anilide,aniline,anility,anilla,anima,animal,animate,anime,animi,animism,animist,animize,animous,animus,anion,anionic,anis,anisal,anisate,anise,aniseed,anisic,anisil,anisoin,anisole,anisoyl,anisum,anisyl,anither,anjan,ankee,anker,ankh,ankle,anklet,anklong,ankus,ankusha,anlace,anlaut,ann,anna,annal,annale,annals,annat,annates,annatto,anneal,annelid,annet,annex,annexa,annexal,annexer,annite,annona,annoy,annoyer,annual,annuary,annuent,annuity,annul,annular,annulet,annulus,anoa,anodal,anode,anodic,anodize,anodos,anodyne,anoesia,anoesis,anoetic,anoil,anoine,anoint,anole,anoli,anolian,anolyte,anomaly,anomite,anomy,anon,anonang,anonol,anonym,anonyma,anopia,anopsia,anorak,anorexy,anormal,anorth,anosmia,anosmic,another,anotia,anotta,anotto,anotus,anounou,anoxia,anoxic,ansa,ansar,ansate,ansu,answer,ant,anta,antacid,antal,antapex,antdom,ante,anteact,anteal,antefix,antenna,antes,antewar,anthela,anthem,anthema,anthemy,anther,anthill,anthine,anthoid,anthood,anthrax,anthrol,anthryl,anti,antiae,antiar,antic,antical,anticly,anticor,anticum,antifat,antigen,antigod,antihum,antiqua,antique,antired,antirun,antisun,antitax,antiwar,antiwit,antler,antlia,antling,antoeci,antonym,antra,antral,antre,antrin,antrum,antship,antu,antwise,anubing,anuloma,anuran,anuria,anuric,anurous,anury,anus,anusim,anvil,anxiety,anxious,any,anybody,anyhow,anyone,anyway,anyways,anywhen,anywhy,anywise,aogiri,aonach,aorist,aorta,aortal,aortic,aortism,aosmic,aoudad,apa,apace,apache,apadana,apagoge,apaid,apalit,apandry,apar,aparejo,apart,apasote,apatan,apathic,apathy,apatite,ape,apeak,apedom,apehood,apeiron,apelet,apelike,apeling,apepsia,apepsy,apeptic,aper,aperch,aperea,apert,apertly,apery,apetaly,apex,apexed,aphagia,aphakia,aphakic,aphasia,aphasic,aphemia,aphemic,aphesis,apheta,aphetic,aphid,aphides,aphidid,aphodal,aphodus,aphonia,aphonic,aphony,aphoria,aphotic,aphrite,aphtha,aphthic,aphylly,aphyric,apian,apiary,apiator,apicad,apical,apices,apicula,apiece,apieces,apii,apiin,apilary,apinch,aping,apinoid,apio,apioid,apiole,apiolin,apionol,apiose,apish,apishly,apism,apitong,apitpat,aplanat,aplasia,aplenty,aplite,aplitic,aplomb,aplome,apnea,apneal,apneic,apocarp,apocha,apocope,apod,apodal,apodan,apodema,apodeme,apodia,apodous,apogamy,apogeal,apogean,apogee,apogeic,apogeny,apohyal,apoise,apojove,apokrea,apolar,apology,aponia,aponic,apoop,apoplex,apopyle,aporia,aporose,aport,aposia,aposoro,apostil,apostle,apothem,apotome,apotype,apout,apozem,apozema,appall,apparel,appay,appeal,appear,appease,append,appet,appete,applaud,apple,applied,applier,applot,apply,appoint,apport,appose,apposer,apprend,apprise,apprize,approof,approve,appulse,apraxia,apraxic,apricot,apriori,apron,apropos,apse,apsidal,apsides,apsis,apt,apteral,apteran,aptly,aptness,aptote,aptotic,apulse,apyonin,apyrene,apyrexy,apyrous,aqua,aquabib,aquage,aquaria,aquatic,aquavit,aqueous,aquifer,aquiver,aquo,aquose,ar,ara,araba,araban,arabana,arabin,arabit,arable,araca,aracari,arachic,arachin,arad,arado,arain,arake,araliad,aralie,aralkyl,aramina,araneid,aranein,aranga,arango,arar,arara,ararao,arariba,araroba,arati,aration,aratory,arba,arbacin,arbalo,arbiter,arbor,arboral,arbored,arboret,arbute,arbutin,arbutus,arc,arca,arcade,arcana,arcanal,arcane,arcanum,arcate,arch,archae,archaic,arche,archeal,arched,archer,archery,arches,archeus,archfoe,archgod,archil,arching,archive,archly,archon,archont,archsee,archsin,archspy,archwag,archway,archy,arcing,arcked,arcking,arctian,arctic,arctiid,arctoid,arcual,arcuale,arcuate,arcula,ardeb,ardella,ardency,ardent,ardish,ardoise,ardor,ardri,ardu,arduous,are,area,areach,aread,areal,arear,areaway,arecain,ared,areek,areel,arefact,areito,arena,arenae,arend,areng,arenoid,arenose,arent,areola,areolar,areole,areolet,arete,argal,argala,argali,argans,argasid,argeers,argel,argenol,argent,arghan,arghel,arghool,argil,argo,argol,argolet,argon,argosy,argot,argotic,argue,arguer,argufy,argute,argyria,argyric,arhar,arhat,aria,aribine,aricine,arid,aridge,aridian,aridity,aridly,ariel,arienzo,arietta,aright,arigue,aril,ariled,arillus,ariose,arioso,ariot,aripple,arisard,arise,arisen,arist,arista,arite,arjun,ark,arkite,arkose,arkosic,arles,arm,armada,armbone,armed,armer,armet,armful,armhole,armhoop,armied,armiger,armil,armilla,arming,armless,armlet,armload,armoire,armor,armored,armorer,armory,armpit,armrack,armrest,arms,armscye,armure,army,arn,arna,arnee,arni,arnica,arnotta,arnotto,arnut,aroar,aroast,arock,aroeira,aroid,aroint,arolium,arolla,aroma,aroon,arose,around,arousal,arouse,arouser,arow,aroxyl,arpen,arpent,arrack,arrah,arraign,arrame,arrange,arrant,arras,arrased,arratel,arrau,array,arrayal,arrayer,arrear,arrect,arrent,arrest,arriage,arriba,arride,arridge,arrie,arriere,arrimby,arris,arrish,arrival,arrive,arriver,arroba,arrope,arrow,arrowed,arrowy,arroyo,arse,arsenal,arsenic,arseno,arsenyl,arses,arsheen,arshin,arshine,arsine,arsinic,arsino,arsis,arsle,arsoite,arson,arsonic,arsono,arsyl,art,artaba,artabe,artal,artar,artel,arterin,artery,artful,artha,arthel,arthral,artiad,article,artisan,artist,artiste,artless,artlet,artlike,artware,arty,aru,arui,aruke,arumin,arupa,arusa,arusha,arustle,arval,arvel,arx,ary,aryl,arylate,arzan,arzun,as,asaddle,asak,asale,asana,asaphia,asaphid,asaprol,asarite,asaron,asarone,asbest,asbolin,ascan,ascare,ascarid,ascaron,ascend,ascent,ascetic,ascham,asci,ascian,ascii,ascites,ascitic,asclent,ascoma,ascon,ascot,ascribe,ascript,ascry,ascula,ascus,asdic,ase,asearch,aseethe,aseity,asem,asemia,asepsis,aseptic,aseptol,asexual,ash,ashake,ashame,ashamed,ashamnu,ashcake,ashen,asherah,ashery,ashes,ashet,ashily,ashine,ashiver,ashkoko,ashlar,ashless,ashling,ashman,ashore,ashpan,ashpit,ashraf,ashrafi,ashur,ashweed,ashwort,ashy,asialia,aside,asideu,asiento,asilid,asimen,asimmer,asinego,asinine,asitia,ask,askable,askance,askant,askar,askari,asker,askew,askip,asklent,askos,aslant,aslaver,asleep,aslop,aslope,asmack,asmalte,asmear,asmile,asmoke,asnort,asoak,asocial,asok,asoka,asonant,asonia,asop,asor,asouth,asp,aspace,aspect,aspen,asper,asperge,asperse,asphalt,asphyxy,aspic,aspire,aspirer,aspirin,aspish,asport,aspout,asprawl,aspread,aspring,asprout,asquare,asquat,asqueal,asquint,asquirm,ass,assacu,assagai,assai,assail,assapan,assart,assary,assate,assault,assaut,assay,assayer,assbaa,asse,assegai,asself,assent,assert,assess,asset,assets,assever,asshead,assi,assify,assign,assilag,assis,assise,assish,assist,assize,assizer,assizes,asslike,assman,assoil,assort,assuade,assuage,assume,assumed,assumer,assure,assured,assurer,assurge,ast,asta,astalk,astare,astart,astasia,astatic,astay,asteam,asteep,asteer,asteism,astelic,astely,aster,asteria,asterin,astern,astheny,asthma,asthore,astilbe,astint,astir,astite,astomia,astony,astoop,astor,astound,astrain,astral,astrand,astray,astream,astrer,astrict,astride,astrier,astrild,astroid,astrut,astute,astylar,asudden,asunder,aswail,aswarm,asway,asweat,aswell,aswim,aswing,aswirl,aswoon,asyla,asylum,at,atabal,atabeg,atabek,atactic,atafter,ataman,atangle,atap,ataraxy,ataunt,atavi,atavic,atavism,atavist,atavus,ataxia,ataxic,ataxite,ataxy,atazir,atbash,ate,atebrin,atechny,ateeter,atef,atelets,atelier,atelo,ates,ateuchi,athanor,athar,atheism,atheist,atheize,athelia,athenee,athenor,atheous,athing,athirst,athlete,athodyd,athort,athrill,athrive,athrob,athrong,athwart,athymia,athymic,athymy,athyria,athyrid,atilt,atimon,atinga,atingle,atinkle,atip,atis,atlas,atlatl,atle,atlee,atloid,atma,atman,atmid,atmo,atmos,atocha,atocia,atokal,atoke,atokous,atoll,atom,atomerg,atomic,atomics,atomism,atomist,atomity,atomize,atomy,atonal,atone,atoner,atonia,atonic,atony,atop,atophan,atopic,atopite,atopy,atour,atoxic,atoxyl,atrail,atrepsy,atresia,atresic,atresy,atretic,atria,atrial,atrip,atrium,atrocha,atropal,atrophy,atropia,atropic,atrous,atry,atta,attacco,attach,attache,attack,attacus,attagen,attain,attaint,attaleh,attar,attask,attempt,attend,attent,atter,attern,attery,attest,attic,attid,attinge,attire,attired,attirer,attorn,attract,attrap,attrist,attrite,attune,atule,atumble,atune,atwain,atweel,atween,atwin,atwirl,atwist,atwitch,atwixt,atwo,atypic,atypy,auantic,aube,aubrite,auburn,auca,auchlet,auction,aucuba,audible,audibly,audient,audile,audio,audion,audit,auditor,auge,augen,augend,auger,augerer,augh,aught,augite,augitic,augment,augur,augural,augury,august,auh,auhuhu,auk,auklet,aula,aulae,auld,auletai,aulete,auletes,auletic,aulic,auloi,aulos,aulu,aum,aumaga,aumail,aumbry,aumery,aumil,aumous,aumrie,auncel,aune,aunt,auntie,auntish,auntly,aupaka,aura,aurae,aural,aurally,aurar,aurate,aurated,aureate,aureity,aurelia,aureola,aureole,aureous,auresca,aureus,auric,auricle,auride,aurific,aurify,aurigal,aurin,aurir,aurist,aurite,aurochs,auronal,aurora,aurorae,auroral,aurore,aurous,aurum,aurure,auryl,auscult,auslaut,auspex,auspice,auspicy,austere,austral,ausu,ausubo,autarch,autarky,aute,autecy,autem,author,autism,autist,auto,autobus,autocab,autocar,autoecy,autoist,automa,automat,autonym,autopsy,autumn,auxesis,auxetic,auxin,auxinic,auxotox,ava,avadana,avahi,avail,aval,avalent,avania,avarice,avast,avaunt,ave,avellan,aveloz,avenage,avener,avenge,avenger,avenin,avenous,avens,avenue,aver,avera,average,averah,averil,averin,averral,averse,avert,averted,averter,avian,aviary,aviate,aviatic,aviator,avichi,avicide,avick,avid,avidity,avidly,avidous,avidya,avigate,avijja,avine,aviso,avital,avitic,avives,avo,avocado,avocate,avocet,avodire,avoid,avoider,avolate,avouch,avow,avowal,avowant,avowed,avower,avowry,avoyer,avulse,aw,awa,awabi,awaft,awag,await,awaiter,awake,awaken,awald,awalim,awalt,awane,awapuhi,award,awarder,aware,awash,awaste,awat,awatch,awater,awave,away,awber,awd,awe,aweary,aweband,awee,aweek,aweel,aweigh,awesome,awest,aweto,awfu,awful,awfully,awheel,awheft,awhet,awhile,awhir,awhirl,awide,awiggle,awin,awing,awink,awiwi,awkward,awl,awless,awlwort,awmous,awn,awned,awner,awning,awnless,awnlike,awny,awoke,awork,awreck,awrist,awrong,awry,ax,axal,axe,axed,axenic,axes,axfetch,axhead,axial,axially,axiate,axiform,axil,axile,axilla,axillae,axillar,axine,axinite,axiom,axion,axis,axised,axite,axle,axled,axmaker,axman,axogamy,axoid,axolotl,axon,axonal,axonost,axseed,axstone,axtree,axunge,axweed,axwise,axwort,ay,ayah,aye,ayelp,ayin,ayless,aylet,ayllu,ayond,ayont,ayous,ayu,azafrin,azalea,azarole,azelaic,azelate,azide,azilut,azimene,azimide,azimine,azimino,azimuth,azine,aziola,azo,azoch,azofier,azofy,azoic,azole,azon,azonal,azonic,azonium,azophen,azorite,azotate,azote,azoted,azoth,azotic,azotine,azotite,azotize,azotous,azox,azoxime,azoxine,azoxy,azteca,azulene,azulite,azulmic,azumbre,azure,azurean,azured,azurine,azurite,azurous,azury,azygos,azygous,azyme,azymite,azymous,b,ba,baa,baal,baar,baba,babai,babasco,babassu,babbitt,babble,babbler,babbly,babby,babe,babelet,babery,babiche,babied,babish,bablah,babloh,baboen,baboo,baboon,baboot,babroot,babu,babudom,babuina,babuism,babul,baby,babydom,babyish,babyism,bac,bacaba,bacach,bacalao,bacao,bacca,baccae,baccara,baccate,bacchar,bacchic,bacchii,bach,bache,bachel,bacilli,back,backage,backcap,backed,backen,backer,backet,backie,backing,backjaw,backlet,backlog,backrun,backsaw,backset,backup,backway,baclin,bacon,baconer,bacony,bacula,bacule,baculi,baculum,baculus,bacury,bad,badan,baddish,baddock,bade,badge,badger,badiaga,badian,badious,badland,badly,badness,bae,baetuli,baetyl,bafaro,baff,baffeta,baffle,baffler,baffy,baft,bafta,bag,baga,bagani,bagasse,bagel,bagful,baggage,baggala,bagged,bagger,baggie,baggily,bagging,baggit,baggy,baglike,bagman,bagnio,bagnut,bago,bagonet,bagpipe,bagre,bagreef,bagroom,bagwig,bagworm,bagwyn,bah,bahan,bahar,bahay,bahera,bahisti,bahnung,baho,bahoe,bahoo,baht,bahur,bahut,baignet,baikie,bail,bailage,bailee,bailer,bailey,bailie,bailiff,bailor,bain,bainie,baioc,baiocco,bairagi,bairn,bairnie,bairnly,baister,bait,baiter,baith,baittle,baize,bajada,bajan,bajra,bajree,bajri,bajury,baka,bakal,bake,baked,baken,bakepan,baker,bakerly,bakery,bakie,baking,bakli,baktun,baku,bakula,bal,balafo,balagan,balai,balance,balanic,balanid,balao,balas,balata,balboa,balcony,bald,balden,balder,baldish,baldly,baldrib,baldric,baldy,bale,baleen,baleful,balei,baleise,baler,balete,bali,baline,balita,balk,balker,balky,ball,ballad,ballade,ballam,ballan,ballant,ballast,ballata,ballate,balldom,balled,baller,ballet,balli,ballist,ballium,balloon,ballot,ballow,ballup,bally,balm,balmily,balmony,balmy,balneal,balonea,baloney,baloo,balow,balsa,balsam,balsamo,balsamy,baltei,balter,balteus,balu,balut,balza,bam,bamban,bambini,bambino,bamboo,bamoth,ban,banaba,banago,banak,banal,banally,banana,banat,banc,banca,bancal,banchi,banco,bancus,band,banda,bandage,bandaka,bandala,bandar,bandbox,bande,bandeau,banded,bander,bandhu,bandi,bandie,banding,bandit,bandle,bandlet,bandman,bando,bandog,bandore,bandrol,bandy,bane,baneful,bang,banga,bange,banger,banghy,banging,bangkok,bangle,bangled,bani,banian,banig,banilad,banish,baniwa,baniya,banjo,banjore,banjuke,bank,banked,banker,bankera,banket,banking,bankman,banky,banner,bannet,banning,bannock,banns,bannut,banquet,banshee,bant,bantam,bantay,banteng,banter,bantery,banty,banuyo,banya,banyan,banzai,baobab,bap,baptism,baptize,bar,bara,barad,barauna,barb,barbal,barbary,barbas,barbate,barbe,barbed,barbel,barber,barbet,barbion,barblet,barbone,barbudo,barbule,bard,bardane,bardash,bardel,bardess,bardic,bardie,bardily,barding,bardish,bardism,bardlet,bardo,bardy,bare,bareca,barefit,barely,barer,baresma,baretta,barff,barfish,barfly,barful,bargain,barge,bargee,bargeer,barger,bargh,bargham,bari,baria,baric,barid,barie,barile,barilla,baring,baris,barish,barit,barite,barium,bark,barken,barker,barkery,barkey,barkhan,barking,barkle,barky,barless,barley,barling,barlock,barlow,barm,barmaid,barman,barmkin,barmote,barmy,barn,barnard,barney,barnful,barnman,barny,baroi,barolo,baron,baronet,barong,baronry,barony,baroque,baroto,barpost,barra,barrack,barrad,barrage,barras,barred,barrel,barren,barrer,barret,barrico,barrier,barring,barrio,barroom,barrow,barruly,barry,barse,barsom,barter,barth,barton,baru,baruria,barvel,barwal,barway,barways,barwise,barwood,barye,baryta,barytes,barytic,baryton,bas,basal,basale,basalia,basally,basalt,basaree,bascule,base,based,basely,baseman,basenji,bases,bash,bashaw,bashful,bashlyk,basial,basiate,basic,basidia,basify,basil,basilar,basilic,basin,basined,basinet,basion,basis,bask,basker,basket,basoid,bason,basos,basote,basque,basqued,bass,bassan,bassara,basset,bassie,bassine,bassist,basso,bassoon,bassus,bast,basta,bastard,baste,basten,baster,bastide,basting,bastion,bastite,basto,baston,bat,bataan,batad,batakan,batara,batata,batch,batcher,bate,batea,bateau,bateaux,bated,batel,bateman,bater,batfish,batfowl,bath,bathe,bather,bathic,bathing,bathman,bathmic,bathos,bathtub,bathyal,batik,batiker,bating,batino,batiste,batlan,batlike,batling,batlon,batman,batoid,baton,batonne,bats,batsman,batster,batt,batta,battel,batten,batter,battery,battik,batting,battish,battle,battled,battler,battue,batty,batule,batwing,batz,batzen,bauble,bauch,bauchle,bauckie,baud,baul,bauleah,baun,bauno,bauson,bausond,bauta,bauxite,bavaroy,bavary,bavian,baviere,bavin,bavoso,baw,bawbee,bawcock,bawd,bawdily,bawdry,bawl,bawler,bawley,bawn,bawtie,baxter,baxtone,bay,baya,bayal,bayamo,bayard,baybolt,baybush,baycuru,bayed,bayeta,baygall,bayhead,bayish,baylet,baylike,bayman,bayness,bayok,bayonet,bayou,baywood,bazaar,baze,bazoo,bazooka,bazzite,bdellid,be,beach,beached,beachy,beacon,bead,beaded,beader,beadily,beading,beadle,beadlet,beadman,beadrow,beady,beagle,beak,beaked,beaker,beakful,beaky,beal,beala,bealing,beam,beamage,beamed,beamer,beamful,beamily,beaming,beamish,beamlet,beamman,beamy,bean,beanbag,beancod,beanery,beanie,beano,beant,beany,bear,beard,bearded,bearder,beardie,beardom,beardy,bearer,bearess,bearing,bearish,bearlet,bearm,beast,beastie,beastly,beat,beata,beatae,beatee,beaten,beater,beath,beatify,beating,beatus,beau,beaufin,beauish,beauism,beauti,beauty,beaux,beaver,beavery,beback,bebait,bebang,bebar,bebaron,bebaste,bebat,bebathe,bebay,bebeast,bebed,bebeeru,bebilya,bebite,beblain,beblear,bebled,bebless,beblood,bebloom,bebog,bebop,beboss,bebotch,bebrave,bebrine,bebrush,bebump,bebusy,becall,becalm,becap,becard,becarve,becater,because,becense,bechalk,becharm,bechase,becheck,becher,bechern,bechirp,becivet,beck,becker,becket,beckon,beclad,beclang,beclart,beclasp,beclaw,becloak,beclog,becloud,beclout,beclown,becolme,becolor,become,becomes,becomma,becoom,becost,becovet,becram,becramp,becrawl,becreep,becrime,becroak,becross,becrowd,becrown,becrush,becrust,becry,becuiba,becuna,becurl,becurry,becurse,becut,bed,bedad,bedamn,bedamp,bedare,bedark,bedash,bedaub,bedawn,beday,bedaze,bedbug,bedcap,bedcase,bedcord,bedded,bedder,bedding,bedead,bedeaf,bedebt,bedeck,bedel,beden,bedene,bedevil,bedew,bedewer,bedfast,bedfoot,bedgery,bedgoer,bedgown,bedight,bedikah,bedim,bedin,bedip,bedirt,bedirty,bedizen,bedkey,bedlam,bedlar,bedless,bedlids,bedman,bedmate,bedog,bedolt,bedot,bedote,bedouse,bedown,bedoyo,bedpan,bedpost,bedrail,bedral,bedrape,bedress,bedrid,bedrift,bedrip,bedrock,bedroll,bedroom,bedrop,bedrown,bedrug,bedsick,bedside,bedsite,bedsock,bedsore,bedtick,bedtime,bedub,beduck,beduke,bedull,bedumb,bedunce,bedunch,bedung,bedur,bedusk,bedust,bedwarf,bedway,bedways,bedwell,bedye,bee,beearn,beech,beechen,beechy,beedged,beedom,beef,beefer,beefily,beefin,beefish,beefy,beehead,beeherd,beehive,beeish,beek,beekite,beelbow,beelike,beeline,beelol,beeman,been,beennut,beer,beerage,beerily,beerish,beery,bees,beest,beeswax,beet,beeth,beetle,beetled,beetler,beety,beeve,beevish,beeware,beeway,beeweed,beewise,beewort,befall,befame,befan,befancy,befavor,befilch,befile,befilth,befire,befist,befit,beflag,beflap,beflea,befleck,beflour,beflout,beflum,befoam,befog,befool,befop,before,befoul,befret,befrill,befriz,befume,beg,begad,begall,begani,begar,begari,begash,begat,begaud,begaudy,begay,begaze,begeck,begem,beget,beggar,beggary,begging,begift,begild,begin,begird,beglad,beglare,beglic,beglide,begloom,begloze,begluc,beglue,begnaw,bego,begob,begobs,begohm,begone,begonia,begorra,begorry,begoud,begowk,begrace,begrain,begrave,begray,begreen,begrett,begrim,begrime,begroan,begrown,beguard,beguess,beguile,beguine,begulf,begum,begun,begunk,begut,behale,behalf,behap,behave,behead,behear,behears,behedge,beheld,behelp,behen,behenic,behest,behind,behint,behn,behold,behoney,behoof,behoot,behoove,behorn,behowl,behung,behymn,beice,beige,being,beinked,beira,beisa,bejade,bejan,bejant,bejazz,bejel,bejewel,bejig,bekah,bekick,beking,bekiss,bekko,beknave,beknit,beknow,beknown,bel,bela,belabor,belaced,beladle,belady,belage,belah,belam,belanda,belar,belard,belash,belate,belated,belaud,belay,belayer,belch,belcher,beld,beldam,beleaf,beleap,beleave,belee,belfry,belga,belibel,belick,belie,belief,belier,believe,belight,beliked,belion,belite,belive,bell,bellboy,belle,belled,bellhop,bellied,belling,bellite,bellman,bellote,bellow,bellows,belly,bellyer,beloam,beloid,belong,belonid,belord,belout,belove,beloved,below,belsire,belt,belted,belter,beltie,beltine,belting,beltman,belton,beluga,belute,belve,bely,belying,bema,bemad,bemadam,bemail,bemaim,beman,bemar,bemask,bemat,bemata,bemaul,bemazed,bemeal,bemean,bemercy,bemire,bemist,bemix,bemoan,bemoat,bemock,bemoil,bemole,bemolt,bemoon,bemotto,bemoult,bemouth,bemuck,bemud,bemuddy,bemuse,bemused,bemusk,ben,bena,benab,bename,benami,benasty,benben,bench,bencher,benchy,bencite,bend,benda,bended,bender,bending,bendlet,bendy,bene,beneath,benefic,benefit,benempt,benet,beng,beni,benight,benign,benison,benj,benjy,benmost,benn,benne,bennel,bennet,benny,beno,benorth,benote,bensel,bensh,benshea,benshee,benshi,bent,bentang,benthal,benthic,benthon,benthos,benting,benty,benumb,benward,benweed,benzal,benzein,benzene,benzil,benzine,benzo,benzoic,benzoid,benzoin,benzol,benzole,benzoxy,benzoyl,benzyl,beode,bepaid,bepale,bepaper,beparch,beparse,bepart,bepaste,bepat,bepaw,bepearl,bepelt,bepen,bepewed,bepiece,bepile,bepill,bepinch,bepity,beprank,bepray,bepress,bepride,beprose,bepuff,bepun,bequalm,bequest,bequote,ber,berain,berakah,berake,berapt,berat,berate,beray,bere,bereave,bereft,berend,beret,berg,berger,berglet,bergut,bergy,bergylt,berhyme,beride,berinse,berith,berley,berlin,berline,berm,berne,berobed,beroll,beround,berret,berri,berried,berrier,berry,berseem,berserk,berth,berthed,berther,bertram,bertrum,berust,bervie,berycid,beryl,bes,besa,besagne,besaiel,besaint,besan,besauce,bescab,bescarf,bescent,bescorn,bescour,bescurf,beseam,besee,beseech,beseem,beseen,beset,beshade,beshag,beshake,beshame,beshear,beshell,beshine,beshlik,beshod,beshout,beshow,beshrew,beside,besides,besiege,besigh,besin,besing,besiren,besit,beslab,beslap,beslash,beslave,beslime,beslow,beslur,besmear,besmell,besmile,besmoke,besmut,besnare,besneer,besnow,besnuff,besogne,besoil,besom,besomer,besoot,besot,besoul,besour,bespate,bespawl,bespeak,besped,bespeed,bespell,bespend,bespete,bespew,bespice,bespill,bespin,bespit,besplit,bespoke,bespot,bespout,bespray,bespy,besquib,besra,best,bestab,bestain,bestamp,bestar,bestare,bestay,bestead,besteer,bester,bestial,bestick,bestill,bestink,bestir,bestock,bestore,bestorm,bestove,bestow,bestraw,bestrew,bestuck,bestud,besugar,besuit,besully,beswarm,beswim,bet,beta,betag,betail,betaine,betalk,betask,betaxed,betear,beteela,beteem,betel,beth,bethel,bethink,bethumb,bethump,betide,betimes,betinge,betire,betis,betitle,betoil,betoken,betone,betony,betoss,betowel,betrace,betrail,betrap,betray,betread,betrend,betrim,betroth,betrunk,betso,betted,better,betters,betting,bettong,bettor,betty,betulin,betutor,between,betwine,betwit,betwixt,beveil,bevel,beveled,beveler,bevenom,bever,beverse,beveto,bevined,bevomit,bevue,bevy,bewail,bewall,beware,bewash,bewaste,bewater,beweary,beweep,bewept,bewest,bewet,bewhig,bewhite,bewidow,bewig,bewired,bewitch,bewith,bework,beworm,beworn,beworry,bewrap,bewray,bewreck,bewrite,bey,beydom,beylic,beyond,beyship,bezant,bezanty,bezel,bezetta,bezique,bezoar,bezzi,bezzle,bezzo,bhabar,bhakta,bhakti,bhalu,bhandar,bhang,bhangi,bhara,bharal,bhat,bhava,bheesty,bhikku,bhikshu,bhoosa,bhoy,bhungi,bhut,biabo,biacid,biacuru,bialate,biallyl,bianco,biarchy,bias,biaxal,biaxial,bib,bibasic,bibb,bibber,bibble,bibbler,bibbons,bibcock,bibi,bibiri,bibless,biblus,bice,biceps,bicetyl,bichir,bichord,bichy,bick,bicker,bickern,bicolor,bicone,biconic,bicorn,bicorne,bicron,bicycle,bicyclo,bid,bidar,bidarka,bidcock,bidder,bidding,biddy,bide,bident,bider,bidet,biding,bidri,biduous,bield,bieldy,bien,bienly,biennia,bier,bietle,bifara,bifer,biff,biffin,bifid,bifidly,bifilar,biflex,bifocal,bifoil,bifold,bifolia,biform,bifront,big,biga,bigamic,bigamy,bigener,bigeye,bigg,biggah,biggen,bigger,biggest,biggin,biggish,bigha,bighead,bighorn,bight,biglot,bigness,bignou,bigot,bigoted,bigotry,bigotty,bigroot,bigwig,bija,bijasal,bijou,bijoux,bike,bikh,bikini,bilabe,bilalo,bilbie,bilbo,bilby,bilch,bilcock,bildar,bilders,bile,bilge,bilgy,biliary,biliate,bilic,bilify,bilimbi,bilio,bilious,bilith,bilk,bilker,bill,billa,billbug,billed,biller,billet,billety,billian,billing,billion,billman,billon,billot,billow,billowy,billy,billyer,bilo,bilobe,bilobed,bilsh,bilsted,biltong,bimalar,bimanal,bimane,bimasty,bimbil,bimeby,bimodal,bin,binal,binary,binate,bind,binder,bindery,binding,bindle,bindlet,bindweb,bine,bing,binge,bingey,binghi,bingle,bingo,bingy,binh,bink,binman,binna,binning,binnite,bino,binocle,binodal,binode,binotic,binous,bint,binukau,biod,biodyne,biogen,biogeny,bioherm,biolith,biology,biome,bion,bionomy,biopsic,biopsy,bioral,biorgan,bios,biose,biosis,biota,biotaxy,biotic,biotics,biotin,biotite,biotome,biotomy,biotope,biotype,bioxide,bipack,biparty,biped,bipedal,biphase,biplane,bipod,bipolar,biprism,biprong,birch,birchen,bird,birddom,birdeen,birder,birdie,birding,birdlet,birdman,birdy,bireme,biretta,biri,biriba,birk,birken,birkie,birl,birle,birler,birlie,birlinn,birma,birn,birny,birr,birse,birsle,birsy,birth,birthy,bis,bisabol,bisalt,biscuit,bisect,bisexed,bisext,bishop,bismar,bismite,bismuth,bisnaga,bison,bispore,bisque,bissext,bisson,bistate,bister,bisti,bistort,bistro,bit,bitable,bitch,bite,biter,biti,biting,bitless,bito,bitolyl,bitt,bitted,bitten,bitter,bittern,bitters,bittie,bittock,bitty,bitume,bitumed,bitumen,bitwise,bityite,bitypic,biune,biunial,biunity,biurate,biurea,biuret,bivalve,bivinyl,bivious,bivocal,bivouac,biwa,bixin,biz,bizarre,bizet,bizonal,bizone,bizz,blab,blabber,black,blacken,blacker,blackey,blackie,blackit,blackly,blacky,blad,bladder,blade,bladed,blader,blading,bladish,blady,blae,blaff,blaflum,blah,blain,blair,blake,blame,blamed,blamer,blaming,blan,blanc,blanca,blanch,blanco,bland,blanda,blandly,blank,blanked,blanket,blankly,blanky,blanque,blare,blarney,blarnid,blarny,blart,blas,blase,blash,blashy,blast,blasted,blaster,blastid,blastie,blasty,blat,blatant,blate,blately,blather,blatta,blatter,blatti,blattid,blaubok,blaver,blaw,blawort,blay,blaze,blazer,blazing,blazon,blazy,bleach,bleak,bleakly,bleaky,blear,bleared,bleary,bleat,bleater,bleaty,bleb,blebby,bleck,blee,bleed,bleeder,bleery,bleeze,bleezy,blellum,blemish,blench,blend,blende,blended,blender,blendor,blenny,blent,bleo,blesbok,bless,blessed,blesser,blest,blet,blewits,blibe,blick,blickey,blight,blighty,blimp,blimy,blind,blinded,blinder,blindly,blink,blinked,blinker,blinks,blinky,blinter,blintze,blip,bliss,blissom,blister,blite,blithe,blithen,blither,blitter,blitz,blizz,blo,bloat,bloated,bloater,blob,blobbed,blobber,blobby,bloc,block,blocked,blocker,blocky,blodite,bloke,blolly,blonde,blood,blooded,bloody,blooey,bloom,bloomer,bloomy,bloop,blooper,blore,blosmy,blossom,blot,blotch,blotchy,blotter,blotto,blotty,blouse,bloused,blout,blow,blowen,blower,blowfly,blowgun,blowing,blown,blowoff,blowout,blowth,blowup,blowy,blowze,blowzed,blowzy,blub,blubber,blucher,blue,bluecap,bluecup,blueing,blueleg,bluely,bluer,blues,bluet,bluetop,bluey,bluff,bluffer,bluffly,bluffy,bluggy,bluing,bluish,bluism,blunder,blunge,blunger,blunk,blunker,blunks,blunnen,blunt,blunter,bluntie,bluntly,blup,blur,blurb,blurred,blurrer,blurry,blurt,blush,blusher,blushy,bluster,blype,bo,boa,boagane,boar,board,boarder,boardly,boardy,boarish,boast,boaster,boat,boatage,boater,boatful,boatie,boating,boatlip,boatly,boatman,bob,boba,bobac,bobbed,bobber,bobbery,bobbin,bobbing,bobbish,bobble,bobby,bobcat,bobcoat,bobeche,bobfly,bobo,bobotie,bobsled,bobstay,bobtail,bobwood,bocal,bocardo,bocca,boccale,boccaro,bocce,boce,bocher,bock,bocking,bocoy,bod,bodach,bode,bodeful,bodega,boden,boder,bodge,bodger,bodgery,bodhi,bodice,bodiced,bodied,bodier,bodikin,bodily,boding,bodkin,bodle,bodock,body,bog,boga,bogan,bogard,bogart,bogey,boggart,boggin,boggish,boggle,boggler,boggy,boghole,bogie,bogier,bogland,bogle,boglet,bogman,bogmire,bogo,bogong,bogtrot,bogue,bogum,bogus,bogway,bogwood,bogwort,bogy,bogydom,bogyism,bohawn,bohea,boho,bohor,bohunk,boid,boil,boiled,boiler,boilery,boiling,boily,boist,bojite,bojo,bokadam,bokard,bokark,boke,bokom,bola,bolar,bold,bolden,boldine,boldly,boldo,bole,boled,boleite,bolero,bolete,bolide,bolimba,bolis,bolivar,bolivia,bolk,boll,bollard,bolled,boller,bolling,bollock,bolly,bolo,boloman,boloney,bolson,bolster,bolt,boltage,boltant,boltel,bolter,bolti,bolting,bolus,bom,boma,bomb,bombard,bombast,bombed,bomber,bombo,bombola,bombous,bon,bonaci,bonagh,bonaght,bonair,bonally,bonang,bonanza,bonasus,bonbon,bonce,bond,bondage,bondar,bonded,bonder,bonding,bondman,bonduc,bone,boned,bonedog,bonelet,boner,boneset,bonfire,bong,bongo,boniata,bonify,bonito,bonk,bonnaz,bonnet,bonnily,bonny,bonsai,bonus,bonxie,bony,bonze,bonzer,bonzery,bonzian,boo,boob,boobery,boobily,boobook,booby,bood,boodie,boodle,boodler,boody,boof,booger,boohoo,boojum,book,bookdom,booked,booker,bookery,bookful,bookie,booking,bookish,bookism,booklet,bookman,booky,bool,booly,boolya,boom,boomage,boomah,boomdas,boomer,booming,boomlet,boomy,boon,boonk,boopis,boor,boorish,boort,boose,boost,booster,boosy,boot,bootboy,booted,bootee,booter,bootery,bootful,booth,boother,bootied,booting,bootleg,boots,booty,booze,boozed,boozer,boozily,boozy,bop,bopeep,boppist,bopyrid,bor,bora,borable,boracic,borage,borak,boral,borasca,borate,borax,bord,bordage,bordar,bordel,border,bordure,bore,boread,boreal,borean,boredom,boree,boreen,boregat,boreism,borele,borer,borg,borgh,borh,boric,boride,borine,boring,borish,borism,bority,borize,borlase,born,borne,borneol,borning,bornite,bornyl,boro,boron,boronic,borough,borrel,borrow,borsch,borscht,borsht,bort,bortsch,borty,bortz,borwort,boryl,borzoi,boscage,bosch,bose,boser,bosh,bosher,bosk,bosker,bosket,bosky,bosn,bosom,bosomed,bosomer,bosomy,boss,bossage,bossdom,bossed,bosser,bosset,bossing,bossism,bosslet,bossy,boston,bostryx,bosun,bot,bota,botanic,botany,botargo,botch,botched,botcher,botchka,botchy,bote,botella,boterol,botfly,both,bother,bothros,bothway,bothy,botonee,botong,bott,bottine,bottle,bottled,bottler,bottom,botulin,bouchal,bouche,boucher,boud,boudoir,bougar,bouge,bouget,bough,boughed,bought,boughy,bougie,bouk,boukit,boulder,boule,boultel,boulter,boun,bounce,bouncer,bound,bounded,bounden,bounder,boundly,bounty,bouquet,bourbon,bourd,bourder,bourdon,bourg,bourn,bourock,bourse,bouse,bouser,bousy,bout,boutade,bouto,bouw,bovate,bovid,bovine,bovoid,bow,bowable,bowback,bowbent,bowboy,bowed,bowel,boweled,bowels,bower,bowery,bowet,bowfin,bowhead,bowie,bowing,bowk,bowkail,bowker,bowknot,bowl,bowla,bowleg,bowler,bowless,bowlful,bowlike,bowline,bowling,bowls,bowly,bowman,bowpin,bowshot,bowwood,bowwort,bowwow,bowyer,boxbush,boxcar,boxen,boxer,boxfish,boxful,boxhaul,boxhead,boxing,boxlike,boxman,boxty,boxwood,boxwork,boxy,boy,boyang,boyar,boyard,boycott,boydom,boyer,boyhood,boyish,boyism,boyla,boylike,boyship,boza,bozal,bozo,bozze,bra,brab,brabant,brabble,braca,braccia,braccio,brace,braced,bracer,bracero,braces,brach,brachet,bracing,brack,bracken,bracker,bracket,bracky,bract,bractea,bracted,brad,bradawl,bradsot,brae,braeman,brag,braggat,bragger,bragget,bragite,braid,braided,braider,brail,brain,brainer,brainge,brains,brainy,braird,brairo,braise,brake,braker,brakie,braky,bramble,brambly,bran,branch,branchi,branchy,brand,branded,brander,brandy,brangle,branial,brank,brankie,branle,branner,branny,bransle,brant,brash,brashy,brasque,brass,brasse,brasser,brasset,brassic,brassie,brassy,brat,brattie,brattle,brauna,bravade,bravado,brave,bravely,braver,bravery,braving,bravish,bravo,bravura,braw,brawl,brawler,brawly,brawlys,brawn,brawned,brawner,brawny,braws,braxy,bray,brayer,brayera,braza,braze,brazen,brazer,brazera,brazier,brazil,breach,breachy,bread,breaden,breadth,breaghe,break,breakax,breaker,breakup,bream,breards,breast,breath,breathe,breathy,breba,breccia,brecham,breck,brecken,bred,brede,bredi,bree,breech,breed,breeder,breedy,breek,breeze,breezy,bregma,brehon,brei,brekkle,brelaw,breme,bremely,brent,brephic,bret,breth,brett,breva,breve,brevet,brevier,brevit,brevity,brew,brewage,brewer,brewery,brewing,brewis,brewst,brey,briar,bribe,bribee,briber,bribery,brichen,brick,brickel,bricken,brickle,brickly,bricky,bricole,bridal,bridale,bride,bridely,bridge,bridged,bridger,bridle,bridled,bridler,bridoon,brief,briefly,briefs,brier,briered,briery,brieve,brig,brigade,brigand,bright,brill,brills,brim,brimful,briming,brimmed,brimmer,brin,brine,briner,bring,bringal,bringer,brinish,brinjal,brink,briny,brioche,brique,brisk,brisken,brisket,briskly,brisque,briss,bristle,bristly,brisure,brit,brith,brither,britska,britten,brittle,brizz,broach,broad,broadax,broaden,broadly,brob,brocade,brocard,broch,brochan,broche,brocho,brock,brocked,brocket,brockle,brod,brodder,brog,brogan,brogger,broggle,brogue,broguer,broider,broigne,broil,broiler,brokage,broke,broken,broker,broking,brolga,broll,brolly,broma,bromal,bromate,brome,bromic,bromide,bromine,bromism,bromite,bromize,bromoil,bromol,bromous,bronc,bronchi,bronco,bronk,bronze,bronzed,bronzen,bronzer,bronzy,broo,brooch,brood,brooder,broody,brook,brooked,brookie,brooky,brool,broom,broomer,broomy,broon,broose,brose,brosot,brosy,brot,brotan,brotany,broth,brothel,brother,brothy,brough,brought,brow,browden,browed,browis,browman,brown,browner,brownie,brownly,browny,browse,browser,browst,bruang,brucia,brucina,brucine,brucite,bruckle,brugh,bruin,bruise,bruiser,bruit,bruiter,bruke,brulee,brulyie,brumal,brumby,brume,brumous,brunch,brunet,brunt,bruscus,brush,brushed,brusher,brushes,brushet,brushy,brusque,brustle,brut,brutage,brutal,brute,brutely,brutify,bruting,brutish,brutism,brutter,bruzz,bryonin,bryony,bu,bual,buaze,bub,buba,bubal,bubalis,bubble,bubbler,bubbly,bubby,bubinga,bubo,buboed,bubonic,bubukle,bucare,bucca,buccal,buccan,buccate,buccina,buccula,buchite,buchu,buck,bucked,buckeen,bucker,bucket,buckety,buckeye,buckie,bucking,buckish,buckle,buckled,buckler,bucklum,bucko,buckpot,buckra,buckram,bucksaw,bucky,bucolic,bucrane,bud,buda,buddage,budder,buddhi,budding,buddle,buddler,buddy,budge,budger,budget,budless,budlet,budlike,budmash,budtime,budwood,budworm,budzat,bufagin,buff,buffalo,buffed,buffer,buffet,buffing,buffle,buffont,buffoon,buffy,bufidin,bufo,bug,bugaboo,bugan,bugbane,bugbear,bugbite,bugdom,bugfish,bugger,buggery,buggy,bughead,bugle,bugled,bugler,buglet,bugloss,bugre,bugseed,bugweed,bugwort,buhl,buhr,build,builder,buildup,built,buirdly,buisson,buist,bukh,bukshi,bulak,bulb,bulbar,bulbed,bulbil,bulblet,bulbose,bulbous,bulbul,bulbule,bulby,bulchin,bulge,bulger,bulgy,bulimia,bulimic,bulimy,bulk,bulked,bulker,bulkily,bulkish,bulky,bull,bulla,bullace,bullan,bullary,bullate,bullbat,bulldog,buller,bullet,bullety,bulling,bullion,bullish,bullism,bullit,bullnut,bullock,bullous,bullule,bully,bulrush,bulse,bult,bulter,bultey,bultong,bultow,bulwand,bulwark,bum,bumbaze,bumbee,bumble,bumbler,bumbo,bumboat,bumicky,bummalo,bummed,bummer,bummie,bumming,bummler,bummock,bump,bumpee,bumper,bumpily,bumping,bumpkin,bumpy,bumtrap,bumwood,bun,buna,buncal,bunce,bunch,buncher,bunchy,bund,bunder,bundle,bundler,bundlet,bundook,bundy,bung,bungee,bungey,bungfu,bungle,bungler,bungo,bungy,bunion,bunk,bunker,bunkery,bunkie,bunko,bunkum,bunnell,bunny,bunt,buntal,bunted,bunter,bunting,bunton,bunty,bunya,bunyah,bunyip,buoy,buoyage,buoyant,bur,buran,burao,burbank,burbark,burble,burbler,burbly,burbot,burbush,burd,burden,burdie,burdock,burdon,bure,bureau,bureaux,burel,burele,buret,burette,burfish,burg,burgage,burgall,burgee,burgeon,burgess,burgh,burghal,burgher,burglar,burgle,burgoo,burgul,burgus,burhead,buri,burial,burian,buried,burier,burin,burion,buriti,burka,burke,burker,burl,burlap,burled,burler,burlet,burlily,burly,burmite,burn,burned,burner,burnet,burnie,burning,burnish,burnous,burnout,burnt,burnut,burny,buro,burp,burr,burrah,burred,burrel,burrer,burring,burrish,burrito,burro,burrow,burry,bursa,bursal,bursar,bursary,bursate,burse,burseed,burst,burster,burt,burton,burucha,burweed,bury,burying,bus,busby,buscarl,bush,bushed,bushel,busher,bushful,bushi,bushily,bushing,bushlet,bushwa,bushy,busied,busily,busine,busk,busked,busker,busket,buskin,buskle,busky,busman,buss,busser,bussock,bussu,bust,bustard,busted,bustee,buster,bustic,bustle,bustled,bustler,busy,busying,busyish,but,butanal,butane,butanol,butch,butcher,butein,butene,butenyl,butic,butine,butler,butlery,butment,butoxy,butoxyl,butt,butte,butter,buttery,butting,buttle,buttock,button,buttons,buttony,butty,butyl,butylic,butyne,butyr,butyral,butyric,butyrin,butyryl,buxerry,buxom,buxomly,buy,buyable,buyer,buzane,buzz,buzzard,buzzer,buzzies,buzzing,buzzle,buzzwig,buzzy,by,bycoket,bye,byee,byeman,byepath,byerite,bygane,bygo,bygoing,bygone,byhand,bylaw,byname,byon,byous,byously,bypass,bypast,bypath,byplay,byre,byreman,byrlaw,byrnie,byroad,byrrus,bysen,byspell,byssal,byssin,byssine,byssoid,byssus,byth,bytime,bywalk,byway,bywoner,byword,bywork,c,ca,caam,caama,caaming,caapeba,cab,caba,cabaan,caback,cabaho,cabal,cabala,cabalic,caban,cabana,cabaret,cabas,cabbage,cabbagy,cabber,cabble,cabbler,cabby,cabda,caber,cabezon,cabin,cabinet,cabio,cable,cabled,cabler,cablet,cabling,cabman,cabob,cabocle,cabook,caboose,cabot,cabree,cabrit,cabuya,cacam,cacao,cachaza,cache,cachet,cachexy,cachou,cachrys,cacique,cack,cackle,cackler,cacodyl,cacoepy,caconym,cacoon,cacti,cactoid,cacur,cad,cadamba,cadaver,cadbait,cadbit,cadbote,caddice,caddie,caddis,caddish,caddle,caddow,caddy,cade,cadelle,cadence,cadency,cadent,cadenza,cader,caderas,cadet,cadetcy,cadette,cadew,cadge,cadger,cadgily,cadgy,cadi,cadism,cadjan,cadlock,cadmia,cadmic,cadmide,cadmium,cados,cadrans,cadre,cadua,caduac,caduca,cadus,cadweed,caeca,caecal,caecum,caeoma,caesura,cafeneh,cafenet,caffa,caffeic,caffeol,caffiso,caffle,caffoy,cafh,cafiz,caftan,cag,cage,caged,cageful,cageman,cager,cagey,caggy,cagily,cagit,cagmag,cahiz,cahoot,cahot,cahow,caickle,caid,caiman,caimito,cain,caique,caird,cairn,cairned,cairny,caisson,caitiff,cajeput,cajole,cajoler,cajuela,cajun,cajuput,cake,cakebox,caker,cakette,cakey,caky,cal,calaba,calaber,calade,calais,calalu,calamus,calash,calcar,calced,calcic,calcify,calcine,calcite,calcium,calculi,calden,caldron,calean,calends,calepin,calf,calfish,caliber,calibre,calices,calicle,calico,calid,caliga,caligo,calinda,calinut,calipee,caliper,caliph,caliver,calix,calk,calkage,calker,calkin,calking,call,callant,callboy,caller,callet,calli,callid,calling,callo,callose,callous,callow,callus,calm,calmant,calmer,calmly,calmy,calomba,calomel,calool,calor,caloric,calorie,caloris,calotte,caloyer,calp,calpac,calpack,caltrap,caltrop,calumba,calumet,calumny,calve,calved,calver,calves,calvish,calvity,calvous,calx,calyces,calycle,calymma,calypso,calyx,cam,camaca,camagon,camail,caman,camansi,camara,camass,camata,camb,cambaye,camber,cambial,cambism,cambist,cambium,cambrel,cambuca,came,cameist,camel,camelry,cameo,camera,cameral,camilla,camion,camise,camisia,camlet,cammed,cammock,camoodi,camp,campana,campane,camper,campho,camphol,camphor,campion,cample,campo,campody,campoo,campus,camus,camused,camwood,can,canaba,canada,canadol,canal,canamo,canape,canard,canari,canarin,canary,canasta,canaut,cancan,cancel,cancer,canch,cancrum,cand,candela,candent,candid,candied,candier,candify,candiru,candle,candler,candock,candor,candroy,candy,candys,cane,canel,canella,canelo,caner,canette,canful,cangan,cangia,cangle,cangler,cangue,canhoop,canid,canille,caninal,canine,caninus,canions,canjac,cank,canker,cankery,canman,canna,cannach,canned,cannel,canner,cannery,cannet,cannily,canning,cannon,cannot,cannula,canny,canoe,canon,canonic,canonry,canopic,canopy,canroy,canso,cant,cantala,cantar,cantara,cantaro,cantata,canted,canteen,canter,canthal,canthus,cantic,cantico,cantily,cantina,canting,cantion,cantish,cantle,cantlet,canto,canton,cantoon,cantor,cantred,cantref,cantrip,cantus,canty,canun,canvas,canvass,cany,canyon,canzon,caoba,cap,capable,capably,capanna,capanne,capax,capcase,cape,caped,capel,capelet,capelin,caper,caperer,capes,capful,caph,caphar,caphite,capias,capicha,capital,capitan,capivi,capkin,capless,caplin,capman,capmint,capomo,capon,caporal,capot,capote,capped,capper,cappie,capping,capple,cappy,caprate,capreol,capric,caprice,caprid,caprin,caprine,caproic,caproin,caprone,caproyl,capryl,capsa,capsid,capsize,capstan,capsula,capsule,captain,caption,captive,captor,capture,capuche,capulet,capulin,car,carabao,carabid,carabin,carabus,caracal,caracol,caract,carafe,caraibe,caraipi,caramba,caramel,caranda,carane,caranna,carapax,carapo,carat,caratch,caravan,caravel,caraway,carbarn,carbeen,carbene,carbide,carbine,carbo,carbon,carbona,carbora,carboxy,carboy,carbro,carbure,carbyl,carcake,carcass,carceag,carcel,carcoon,card,cardecu,carded,cardel,carder,cardia,cardiac,cardial,cardin,carding,cardo,cardol,cardon,cardona,cardoon,care,careen,career,careful,carene,carer,caress,carest,caret,carfare,carfax,carful,carga,cargo,carhop,cariama,caribou,carid,caries,carina,carinal,cariole,carious,cark,carking,carkled,carl,carless,carlet,carlie,carlin,carline,carling,carlish,carload,carlot,carls,carman,carmele,carmine,carmot,carnage,carnal,carnate,carneol,carney,carnic,carnify,carnose,carnous,caroa,carob,caroba,caroche,carol,caroler,caroli,carolin,carolus,carom,carone,caronic,caroome,caroon,carotic,carotid,carotin,carouse,carp,carpal,carpale,carpel,carpent,carper,carpet,carpid,carping,carpium,carport,carpos,carpus,carr,carrack,carrel,carrick,carried,carrier,carrion,carrizo,carroch,carrot,carroty,carrow,carry,carse,carshop,carsick,cart,cartage,carte,cartel,carter,cartful,cartman,carton,cartoon,cartway,carty,carua,carucal,carval,carve,carvel,carven,carvene,carver,carving,carvol,carvone,carvyl,caryl,casaba,casabe,casal,casalty,casate,casaun,casava,casave,casavi,casbah,cascade,cascado,cascara,casco,cascol,case,casease,caseate,casebox,cased,caseful,casefy,caseic,casein,caseose,caseous,caser,casern,caseum,cash,casha,cashaw,cashbox,cashboy,cashel,cashew,cashier,casing,casino,casiri,cask,casket,casking,casque,casqued,casquet,cass,cassady,casse,cassena,cassia,cassie,cassina,cassine,cassino,cassis,cassock,casson,cassoon,cast,caste,caster,castice,casting,castle,castled,castlet,castock,castoff,castor,castory,castra,castral,castrum,castuli,casual,casuary,casuist,casula,cat,catalpa,catan,catapan,cataria,catarrh,catasta,catbird,catboat,catcall,catch,catcher,catchup,catchy,catclaw,catdom,cate,catechu,catella,catena,catenae,cater,cateran,caterer,caterva,cateye,catface,catfall,catfish,catfoot,catgut,cathead,cathect,catheti,cathin,cathine,cathion,cathode,cathole,cathood,cathop,cathro,cation,cativo,catjang,catkin,catlap,catlike,catlin,catling,catmint,catnip,catpipe,catskin,catstep,catsup,cattabu,cattail,cattalo,cattery,cattily,catting,cattish,cattle,catty,catvine,catwalk,catwise,catwood,catwort,caubeen,cauboge,cauch,caucho,caucus,cauda,caudad,caudae,caudal,caudata,caudate,caudex,caudle,caught,cauk,caul,cauld,caules,cauline,caulis,caulome,caulote,caum,cauma,caunch,caup,caupo,caurale,causal,causate,cause,causer,causey,causing,causse,causson,caustic,cautel,cauter,cautery,caution,cautivo,cava,cavae,caval,cavalla,cavalry,cavate,cave,caveat,cavel,cavelet,cavern,cavetto,caviar,cavie,cavil,caviler,caving,cavings,cavish,cavity,caviya,cavort,cavus,cavy,caw,cawk,cawky,cawney,cawquaw,caxiri,caxon,cay,cayenne,cayman,caza,cazimi,ce,cearin,cease,ceasmic,cebell,cebian,cebid,cebil,cebine,ceboid,cebur,cecils,cecity,cedar,cedared,cedarn,cedary,cede,cedent,ceder,cedilla,cedrat,cedrate,cedre,cedrene,cedrin,cedrine,cedrium,cedrol,cedron,cedry,cedula,cee,ceibo,ceil,ceile,ceiler,ceilidh,ceiling,celadon,celemin,celery,celesta,celeste,celiac,celite,cell,cella,cellae,cellar,celled,cellist,cello,celloid,cellose,cellule,celsian,celt,celtium,celtuce,cembalo,cement,cenacle,cendre,cenoby,cense,censer,censive,censor,censual,censure,census,cent,centage,cental,centare,centaur,centavo,centena,center,centiar,centile,centime,centimo,centner,cento,centrad,central,centric,centrum,centry,centum,century,ceorl,cep,cepa,cepe,cephid,ceps,ceptor,cequi,cerago,ceral,ceramal,ceramic,ceras,cerasin,cerata,cerate,cerated,cercal,cerci,cercus,cere,cereal,cerebra,cered,cereous,cerer,ceresin,cerevis,ceria,ceric,ceride,cerillo,ceriman,cerin,cerine,ceriops,cerise,cerite,cerium,cermet,cern,cero,ceroma,cerote,cerotic,cerotin,cerous,cerrero,cerrial,cerris,certain,certie,certify,certis,certy,cerule,cerumen,ceruse,cervid,cervine,cervix,cervoid,ceryl,cesious,cesium,cess,cesser,cession,cessor,cesspit,cest,cestode,cestoid,cestrum,cestus,cetane,cetene,ceti,cetic,cetin,cetyl,cetylic,cevine,cha,chaa,chab,chabot,chabouk,chabuk,chacate,chack,chacker,chackle,chacma,chacona,chacte,chad,chaeta,chafe,chafer,chafery,chaff,chaffer,chaffy,chaft,chafted,chagan,chagrin,chaguar,chagul,chahar,chai,chain,chained,chainer,chainon,chair,chairer,chais,chaise,chaitya,chaja,chaka,chakar,chakari,chakazi,chakdar,chakobu,chakra,chakram,chaksi,chal,chalaco,chalana,chalaza,chalaze,chalcid,chalcon,chalcus,chalder,chalet,chalice,chalk,chalker,chalky,challah,challie,challis,chalmer,chalon,chalone,chalque,chalta,chalutz,cham,chamal,chamar,chamber,chambul,chamfer,chamiso,chamite,chamma,chamois,champ,champac,champer,champy,chance,chancel,chancer,chanche,chanco,chancre,chancy,chandam,chandi,chandoo,chandu,chandul,chang,changa,changar,change,changer,chank,channel,channer,chanson,chanst,chant,chanter,chantey,chantry,chao,chaos,chaotic,chap,chapah,chape,chapeau,chaped,chapel,chapin,chaplet,chapman,chapped,chapper,chappie,chappin,chappow,chappy,chaps,chapt,chapter,char,charac,charade,charas,charbon,chard,chare,charer,charet,charge,chargee,charger,charier,charily,chariot,charism,charity,chark,charka,charkha,charm,charmel,charmer,charnel,charpit,charpoy,charqui,charr,charry,chart,charter,charuk,chary,chase,chaser,chasing,chasm,chasma,chasmal,chasmed,chasmic,chasmy,chasse,chassis,chaste,chasten,chat,chataka,chateau,chati,chatta,chattel,chatter,chatty,chauk,chaus,chaute,chauth,chavish,chaw,chawan,chawer,chawk,chawl,chay,chaya,chayote,chazan,che,cheap,cheapen,cheaply,cheat,cheatee,cheater,chebec,chebel,chebog,chebule,check,checked,checker,checkup,checky,cheder,chee,cheecha,cheek,cheeker,cheeky,cheep,cheeper,cheepy,cheer,cheered,cheerer,cheerio,cheerly,cheery,cheese,cheeser,cheesy,cheet,cheetah,cheeter,cheetie,chef,chegoe,chegre,cheir,chekan,cheke,cheki,chekmak,chela,chelate,chelem,chelide,chello,chelone,chelp,chelys,chemic,chemis,chemise,chemism,chemist,chena,chende,cheng,chenica,cheque,cherem,cherish,cheroot,cherry,chert,cherte,cherty,cherub,chervil,cheson,chess,chessel,chesser,chest,chester,chesty,cheth,chettik,chetty,chevage,cheval,cheve,cheven,chevin,chevise,chevon,chevron,chevy,chew,chewer,chewink,chewy,cheyney,chhatri,chi,chia,chiasm,chiasma,chiaus,chibouk,chibrit,chic,chicane,chichi,chick,chicken,chicker,chicky,chicle,chico,chicory,chicot,chicote,chid,chidden,chide,chider,chiding,chidra,chief,chiefly,chield,chien,chiffer,chiffon,chiggak,chigger,chignon,chigoe,chih,chihfu,chikara,chil,child,childe,childed,childly,chile,chili,chiliad,chill,chilla,chilled,chiller,chillo,chillum,chilly,chiloma,chilver,chimble,chime,chimer,chimera,chimney,chin,china,chinar,chinch,chincha,chinche,chine,chined,ching,chingma,chinik,chinin,chink,chinker,chinkle,chinks,chinky,chinnam,chinned,chinny,chino,chinoa,chinol,chinse,chint,chintz,chip,chiplet,chipped,chipper,chippy,chips,chiral,chirata,chiripa,chirk,chirm,chiro,chirp,chirper,chirpy,chirr,chirrup,chisel,chit,chitak,chital,chitin,chiton,chitose,chitra,chitter,chitty,chive,chivey,chkalik,chlamyd,chlamys,chlor,chloral,chlore,chloric,chloryl,cho,choana,choate,choaty,chob,choca,chocard,chocho,chock,chocker,choel,choenix,choffer,choga,chogak,chogset,choice,choicy,choil,choiler,choir,chokage,choke,choker,choking,chokra,choky,chol,chola,cholane,cholate,chold,choleic,choler,cholera,choli,cholic,choline,cholla,choller,cholum,chomp,chondre,chonta,choop,choose,chooser,choosy,chop,chopa,chopin,chopine,chopped,chopper,choppy,choragy,choral,chord,chorda,chordal,chorded,chore,chorea,choreal,choree,choregy,choreic,choreus,chorial,choric,chorine,chorion,chorism,chorist,chorogi,choroid,chorook,chort,chorten,chortle,chorus,choryos,chose,chosen,chott,chough,chouka,choup,chous,chouse,chouser,chow,chowder,chowk,chowry,choya,chria,chrism,chrisma,chrisom,chroma,chrome,chromic,chromid,chromo,chromy,chromyl,chronal,chronic,chrotta,chrysal,chrysid,chrysin,chub,chubbed,chubby,chuck,chucker,chuckle,chucky,chuddar,chufa,chuff,chuffy,chug,chugger,chuhra,chukar,chukker,chukor,chulan,chullpa,chum,chummer,chummy,chump,chumpy,chun,chunari,chunga,chunk,chunky,chunner,chunnia,chunter,chupak,chupon,church,churchy,churel,churl,churled,churly,churm,churn,churr,churrus,chut,chute,chuter,chutney,chyack,chyak,chyle,chylify,chyloid,chylous,chymase,chyme,chymia,chymic,chymify,chymous,chypre,chytra,chytrid,cibol,cibory,ciboule,cicad,cicada,cicadid,cicala,cicely,cicer,cichlid,cidarid,cidaris,cider,cig,cigala,cigar,cigua,cilia,ciliary,ciliate,cilice,cilium,cimbia,cimelia,cimex,cimicid,cimline,cinch,cincher,cinclis,cinct,cinder,cindery,cine,cinel,cinema,cinene,cineole,cinerea,cingle,cinnyl,cinque,cinter,cinuran,cion,cipher,cipo,cipolin,cippus,circa,circle,circled,circler,circlet,circuit,circus,circusy,cirque,cirrate,cirri,cirrose,cirrous,cirrus,cirsoid,ciruela,cisco,cise,cisele,cissing,cissoid,cist,cista,cistae,cisted,cistern,cistic,cit,citable,citadel,citator,cite,citee,citer,citess,cithara,cither,citied,citify,citizen,citole,citral,citrate,citrean,citrene,citric,citril,citrin,citrine,citron,citrous,citrus,cittern,citua,city,citydom,cityful,cityish,cive,civet,civic,civics,civil,civilly,civism,civvy,cixiid,clabber,clachan,clack,clacker,clacket,clad,cladine,cladode,cladose,cladus,clag,claggum,claggy,claim,claimer,clairce,claith,claiver,clam,clamant,clamb,clamber,clame,clamer,clammed,clammer,clammy,clamor,clamp,clamper,clan,clang,clangor,clank,clanned,clap,clapnet,clapped,clapper,clapt,claque,claquer,clarain,claret,clarify,clarin,clarion,clarity,clark,claro,clart,clarty,clary,clash,clasher,clashy,clasp,clasper,claspt,class,classed,classer,classes,classic,classis,classy,clastic,clat,clatch,clatter,clatty,claught,clausal,clause,claut,clava,claval,clavate,clave,clavel,claver,clavial,clavier,claviol,clavis,clavola,clavus,clavy,claw,clawed,clawer,clawk,clawker,clay,clayen,clayer,clayey,clayish,clayman,claypan,cleach,clead,cleaded,cleam,cleamer,clean,cleaner,cleanly,cleanse,cleanup,clear,clearer,clearly,cleat,cleave,cleaver,cleche,cleck,cled,cledge,cledgy,clee,cleek,cleeked,cleeky,clef,cleft,clefted,cleg,clem,clement,clench,cleoid,clep,clergy,cleric,clerid,clerisy,clerk,clerkly,cleruch,cletch,cleuch,cleve,clever,clevis,clew,cliack,cliche,click,clicker,clicket,clicky,cliency,client,cliff,cliffed,cliffy,clift,clifty,clima,climata,climate,climath,climax,climb,climber,clime,clinal,clinch,cline,cling,clinger,clingy,clinia,clinic,clinium,clink,clinker,clinkum,clinoid,clint,clinty,clip,clipei,clipeus,clipped,clipper,clips,clipse,clipt,clique,cliquy,clisere,clit,clitch,clite,clites,clithe,clitia,clition,clitter,clival,clive,clivers,clivis,clivus,cloaca,cloacal,cloak,cloaked,cloam,cloamen,cloamer,clobber,clochan,cloche,clocher,clock,clocked,clocker,clod,clodder,cloddy,clodlet,cloff,clog,clogger,cloggy,cloghad,clogwyn,cloit,clomb,clomben,clonal,clone,clonic,clonism,clonus,cloof,cloop,cloot,clootie,clop,close,closed,closely,closen,closer,closet,closh,closish,closter,closure,clot,clotbur,clote,cloth,clothe,clothes,clothy,clotter,clotty,cloture,cloud,clouded,cloudy,clough,clour,clout,clouted,clouter,clouty,clove,cloven,clovene,clover,clovery,clow,clown,cloy,cloyer,cloying,club,clubbed,clubber,clubby,clubdom,clubman,cluck,clue,cluff,clump,clumpy,clumse,clumsy,clunch,clung,clunk,clupeid,cluster,clutch,cluther,clutter,cly,clyer,clype,clypeal,clypeus,clysis,clysma,clysmic,clyster,cnemial,cnemis,cnicin,cnida,coabode,coach,coachee,coacher,coachy,coact,coactor,coadapt,coadmit,coadore,coaged,coagent,coagula,coaid,coaita,coak,coakum,coal,coalbag,coalbin,coalbox,coaler,coalify,coalize,coalpit,coaly,coaming,coannex,coapt,coarb,coarse,coarsen,coast,coastal,coaster,coat,coated,coatee,coater,coati,coatie,coating,coax,coaxal,coaxer,coaxial,coaxing,coaxy,cob,cobaea,cobalt,cobang,cobbed,cobber,cobbing,cobble,cobbler,cobbly,cobbra,cobby,cobcab,cobego,cobhead,cobia,cobiron,coble,cobless,cobloaf,cobnut,cobola,cobourg,cobra,coburg,cobweb,cobwork,coca,cocaine,cocash,cocause,coccal,cocci,coccid,cocco,coccoid,coccous,coccule,coccus,coccyx,cochal,cochief,cochlea,cock,cockade,cockal,cocked,cocker,cocket,cockeye,cockily,cocking,cockish,cockle,cockled,cockler,cocklet,cockly,cockney,cockpit,cockshy,cockup,cocky,coco,cocoa,cocoach,coconut,cocoon,cocotte,coctile,coction,cocuisa,cocullo,cocuyo,cod,coda,codbank,codder,codding,coddle,coddler,code,codeine,coder,codex,codfish,codger,codhead,codical,codices,codicil,codify,codilla,codille,codist,codling,codman,codo,codol,codon,codworm,coe,coecal,coecum,coed,coelar,coelder,coelect,coelho,coelia,coeliac,coelian,coelin,coeline,coelom,coeloma,coempt,coenact,coenjoy,coenobe,coequal,coerce,coercer,coetus,coeval,coexert,coexist,coff,coffee,coffer,coffin,coffle,coffret,coft,cog,cogence,cogency,cogener,cogent,cogged,cogger,coggie,cogging,coggle,coggly,coghle,cogman,cognac,cognate,cognize,cogon,cogonal,cograil,cogroad,cogue,cogway,cogwood,cohabit,coheir,cohere,coherer,cohibit,coho,cohoba,cohol,cohort,cohosh,cohune,coif,coifed,coign,coigue,coil,coiled,coiler,coiling,coin,coinage,coiner,coinfer,coining,cointer,coiny,coir,coital,coition,coiture,coitus,cojudge,cojuror,coke,cokeman,coker,cokery,coking,coky,col,cola,colane,colarin,colate,colauxe,colback,cold,colder,coldish,coldly,cole,coletit,coleur,coli,colibri,colic,colical,colicky,colima,colin,coling,colitic,colitis,colk,coll,collage,collar,collard,collare,collate,collaud,collect,colleen,college,collery,collet,colley,collide,collie,collied,collier,collin,colline,colling,collins,collock,colloid,collop,collude,collum,colly,collyba,colmar,colobin,colon,colonel,colonic,colony,color,colored,colorer,colorin,colors,colory,coloss,colossi,colove,colp,colpeo,colport,colpus,colt,colter,coltish,colugo,columbo,column,colunar,colure,coly,colyone,colytic,colyum,colza,coma,comaker,comal,comamie,comanic,comart,comate,comb,combat,combed,comber,combine,combing,comble,comboy,combure,combust,comby,come,comedic,comedo,comedy,comely,comenic,comer,comes,comet,cometic,comfit,comfort,comfrey,comfy,comic,comical,comicry,coming,comino,comism,comital,comitia,comity,comma,command,commend,comment,commie,commit,commix,commixt,commode,common,commons,commot,commove,communa,commune,commute,comoid,comose,comourn,comous,compact,company,compare,compart,compass,compear,compeer,compel,compend,compete,compile,complex,complin,complot,comply,compo,compoer,compole,compone,compony,comport,compos,compose,compost,compote,compreg,compter,compute,comrade,con,conacre,conal,conamed,conatus,concave,conceal,concede,conceit,concent,concept,concern,concert,conch,concha,conchal,conche,conched,concher,conchy,concile,concise,concoct,concord,concupy,concur,concuss,cond,condemn,condign,condite,condole,condone,condor,conduce,conduct,conduit,condyle,cone,coned,coneen,coneine,conelet,coner,cones,confab,confact,confect,confess,confide,confine,confirm,confix,conflow,conflux,conform,confuse,confute,conga,congeal,congee,conger,congest,congius,congou,conic,conical,conicle,conics,conidia,conifer,conima,conin,conine,conject,conjoin,conjure,conjury,conk,conker,conkers,conky,conn,connach,connate,connect,conner,connex,conning,connive,connote,conoid,conopid,conquer,conred,consent,consign,consist,consol,console,consort,conspue,constat,consul,consult,consume,consute,contact,contain,conte,contect,contemn,content,conter,contest,context,contise,conto,contort,contour,contra,control,contund,contuse,conure,conus,conusee,conusor,conuzee,conuzor,convect,convene,convent,convert,conveth,convex,convey,convict,convive,convoke,convoy,cony,coo,cooba,coodle,cooee,cooer,coof,cooing,cooja,cook,cookdom,cookee,cooker,cookery,cooking,cookish,cookout,cooky,cool,coolant,coolen,cooler,coolie,cooling,coolish,coolly,coolth,coolung,cooly,coom,coomb,coomy,coon,cooncan,coonily,coontie,coony,coop,cooper,coopery,cooree,coorie,cooser,coost,coot,cooter,coothay,cootie,cop,copa,copable,copaene,copaiba,copaiye,copal,copalm,copart,coparty,cope,copei,copeman,copen,copepod,coper,coperta,copied,copier,copilot,coping,copious,copis,copist,copita,copolar,copped,copper,coppery,coppet,coppice,coppin,copping,copple,coppled,coppy,copr,copra,coprose,copse,copsing,copsy,copter,copula,copular,copus,copy,copycat,copyism,copyist,copyman,coque,coquet,coquina,coquita,coquito,cor,cora,corach,coracle,corah,coraise,coral,coraled,coram,coranto,corban,corbeau,corbeil,corbel,corbie,corbula,corcass,corcir,cord,cordage,cordant,cordate,cordax,corded,cordel,corder,cordial,cordies,cording,cordite,cordoba,cordon,cordy,cordyl,core,corebel,cored,coreid,coreign,corella,corer,corf,corge,corgi,corial,coriin,coring,corinne,corium,cork,corkage,corke,corked,corker,corking,corkish,corkite,corky,corm,cormel,cormoid,cormous,cormus,corn,cornage,cornbin,corncob,cornea,corneal,cornein,cornel,corner,cornet,corneum,cornic,cornice,cornin,corning,cornu,cornual,cornule,cornute,cornuto,corny,coroa,corody,corol,corolla,corona,coronad,coronae,coronal,coroner,coronet,corozo,corp,corpora,corps,corpse,corpus,corrade,corral,correal,correct,corrie,corrige,corrode,corrupt,corsac,corsage,corsair,corse,corset,corsie,corsite,corta,cortege,cortex,cortez,cortin,cortina,coruco,coruler,corupay,corver,corvina,corvine,corvoid,coryl,corylin,corymb,coryza,cos,cosaque,coscet,coseat,cosec,cosech,coseism,coset,cosh,cosher,coshery,cosily,cosine,cosmic,cosmism,cosmist,cosmos,coss,cossas,cosse,cosset,cossid,cost,costa,costal,costar,costard,costate,costean,coster,costing,costive,costly,costrel,costula,costume,cosy,cot,cotch,cote,coteful,coterie,coth,cothe,cothish,cothon,cothurn,cothy,cotidal,cotise,cotland,cotman,coto,cotoin,cotoro,cotrine,cotset,cotta,cottage,cotte,cotted,cotter,cottid,cottier,cottoid,cotton,cottony,cotty,cotuit,cotula,cotutor,cotwin,cotwist,cotyla,cotylar,cotype,couac,coucal,couch,couched,couchee,coucher,couchy,coude,coudee,coue,cougar,cough,cougher,cougnar,coul,could,coulee,coulomb,coulure,couma,coumara,council,counite,counsel,count,counter,countor,country,county,coup,coupage,coupe,couped,coupee,couper,couple,coupled,coupler,couplet,coupon,coupure,courage,courant,courap,courb,courge,courida,courier,couril,courlan,course,coursed,courser,court,courter,courtin,courtly,cousin,cousiny,coutel,couter,couth,couthie,coutil,couvade,couxia,covado,cove,coved,covent,cover,covered,coverer,covert,covet,coveter,covey,covid,covin,coving,covisit,covite,cow,cowal,coward,cowardy,cowbane,cowbell,cowbind,cowbird,cowboy,cowdie,coween,cower,cowfish,cowgate,cowgram,cowhage,cowheel,cowherb,cowherd,cowhide,cowhorn,cowish,cowitch,cowl,cowle,cowled,cowlick,cowlike,cowling,cowman,cowpath,cowpea,cowpen,cowpock,cowpox,cowrie,cowroid,cowshed,cowskin,cowslip,cowtail,cowweed,cowy,cowyard,cox,coxa,coxal,coxcomb,coxite,coxitis,coxy,coy,coyan,coydog,coyish,coyly,coyness,coynye,coyo,coyol,coyote,coypu,coyure,coz,coze,cozen,cozener,cozier,cozily,cozy,crab,crabbed,crabber,crabby,craber,crablet,crabman,crack,cracked,cracker,crackle,crackly,cracky,craddy,cradge,cradle,cradler,craft,crafty,crag,craggan,cragged,craggy,craichy,crain,craisey,craizey,crajuru,crake,crakow,cram,crambe,crambid,cramble,crambly,crambo,crammer,cramp,cramped,cramper,crampet,crampon,crampy,cran,cranage,crance,crane,craner,craney,crania,craniad,cranial,cranian,cranic,cranium,crank,cranked,cranker,crankle,crankly,crankum,cranky,crannog,cranny,crants,crap,crapaud,crape,crappie,crappin,crapple,crappo,craps,crapy,crare,crash,crasher,crasis,crass,crassly,cratch,crate,crater,craunch,cravat,crave,craven,craver,craving,cravo,craw,crawdad,crawful,crawl,crawler,crawley,crawly,crawm,crawtae,crayer,crayon,craze,crazed,crazily,crazy,crea,creagh,creaght,creak,creaker,creaky,cream,creamer,creamy,creance,creant,crease,creaser,creasy,creat,create,creatic,creator,creche,credent,credit,cree,creed,creedal,creeded,creek,creeker,creeky,creel,creeler,creem,creen,creep,creeper,creepie,creepy,creese,creesh,creeshy,cremate,cremone,cremor,cremule,crena,crenate,crenel,crenele,crenic,crenula,creole,creosol,crepe,crepine,crepon,crept,crepy,cresol,cresoxy,cress,cressed,cresset,cresson,cressy,crest,crested,cresyl,creta,cretic,cretify,cretin,cretion,crevice,crew,crewel,crewer,crewman,crib,cribber,cribble,cribo,cribral,cric,crick,cricket,crickey,crickle,cricoid,cried,crier,criey,crig,crile,crime,crimine,crimp,crimper,crimple,crimpy,crimson,crin,crinal,crine,crined,crinet,cringe,cringer,cringle,crinite,crink,crinkle,crinkly,crinoid,crinose,crinula,cripes,cripple,cripply,crises,crisic,crisis,crisp,crisped,crisper,crisply,crispy,criss,crissal,crissum,crista,critch,crith,critic,crizzle,cro,croak,croaker,croaky,croc,crocard,croceic,crocein,croche,crochet,croci,crocin,crock,crocker,crocket,crocky,crocus,croft,crofter,crome,crone,cronet,cronish,cronk,crony,crood,croodle,crook,crooked,crooken,crookle,crool,croon,crooner,crop,cropman,croppa,cropper,croppie,croppy,croquet,crore,crosa,crosier,crosnes,cross,crosse,crossed,crosser,crossly,crotal,crotalo,crotch,crotchy,crotin,crottle,crotyl,crouch,croup,croupal,croupe,croupy,crouse,crout,croute,crouton,crow,crowbar,crowd,crowded,crowder,crowdy,crower,crowhop,crowing,crowl,crown,crowned,crowner,crowtoe,croy,croyden,croydon,croze,crozer,crozzle,crozzly,crubeen,cruce,cruces,cruche,crucial,crucian,crucify,crucily,cruck,crude,crudely,crudity,cruel,cruelly,cruels,cruelty,cruent,cruet,cruety,cruise,cruiser,cruive,cruller,crum,crumb,crumber,crumble,crumbly,crumby,crumen,crumlet,crummie,crummy,crump,crumper,crumpet,crumple,crumply,crumpy,crunch,crunchy,crunk,crunkle,crunode,crunt,cruor,crupper,crural,crureus,crus,crusade,crusado,cruse,crush,crushed,crusher,crusie,crusily,crust,crusta,crustal,crusted,cruster,crusty,crutch,cruth,crutter,crux,cry,cryable,crybaby,crying,cryogen,cryosel,crypt,crypta,cryptal,crypted,cryptic,crystal,crystic,csardas,ctene,ctenoid,cuadra,cuarta,cub,cubage,cubbing,cubbish,cubby,cubdom,cube,cubeb,cubelet,cuber,cubhood,cubi,cubic,cubica,cubical,cubicle,cubicly,cubism,cubist,cubit,cubital,cubited,cubito,cubitus,cuboid,cuck,cuckold,cuckoo,cuculla,cud,cudava,cudbear,cudden,cuddle,cuddly,cuddy,cudgel,cudweed,cue,cueball,cueca,cueist,cueman,cuerda,cuesta,cuff,cuffer,cuffin,cuffy,cuinage,cuir,cuirass,cuisine,cuisse,cuissen,cuisten,cuke,culbut,culebra,culet,culeus,culgee,culicid,cull,culla,cullage,culler,cullet,culling,cullion,cullis,cully,culm,culmen,culmy,culotte,culpa,culpose,culprit,cult,cultch,cultic,cultish,cultism,cultist,cultual,culture,cultus,culver,culvert,cum,cumal,cumay,cumbent,cumber,cumbha,cumbly,cumbre,cumbu,cumene,cumenyl,cumhal,cumic,cumidin,cumin,cuminal,cuminic,cuminol,cuminyl,cummer,cummin,cumol,cump,cumshaw,cumular,cumuli,cumulus,cumyl,cuneal,cuneate,cunette,cuneus,cunila,cunjah,cunjer,cunner,cunning,cunye,cuorin,cup,cupay,cupcake,cupel,cupeler,cupful,cuphead,cupidon,cupless,cupman,cupmate,cupola,cupolar,cupped,cupper,cupping,cuppy,cuprene,cupric,cupride,cuprite,cuproid,cuprose,cuprous,cuprum,cupseed,cupula,cupule,cur,curable,curably,curacao,curacy,curare,curate,curatel,curatic,curator,curb,curber,curbing,curby,curcas,curch,curd,curdle,curdler,curdly,curdy,cure,curer,curette,curfew,curial,curiate,curie,curin,curine,curing,curio,curiosa,curioso,curious,curite,curium,curl,curled,curler,curlew,curlike,curlily,curling,curly,curn,curney,curnock,curple,curr,currach,currack,curragh,currant,current,curried,currier,currish,curry,cursal,curse,cursed,curser,curship,cursive,cursor,cursory,curst,curstly,cursus,curt,curtail,curtain,curtal,curtate,curtesy,curtly,curtsy,curua,curuba,curule,cururo,curvant,curvate,curve,curved,curver,curvet,curvity,curvous,curvy,cuscus,cusec,cush,cushag,cushat,cushaw,cushion,cushy,cusie,cusk,cusp,cuspal,cuspate,cusped,cuspid,cuspule,cuss,cussed,cusser,cusso,custard,custody,custom,customs,cut,cutaway,cutback,cutch,cutcher,cute,cutely,cutheal,cuticle,cutie,cutin,cutis,cutitis,cutlass,cutler,cutlery,cutlet,cutling,cutlips,cutoff,cutout,cutover,cuttage,cuttail,cutted,cutter,cutting,cuttle,cuttler,cuttoo,cutty,cutup,cutweed,cutwork,cutworm,cuvette,cuvy,cuya,cwierc,cwm,cyan,cyanate,cyanean,cyanic,cyanide,cyanin,cyanine,cyanite,cyanize,cyanol,cyanole,cyanose,cyanus,cyath,cyathos,cyathus,cycad,cyclane,cyclar,cyclas,cycle,cyclene,cycler,cyclian,cyclic,cyclide,cycling,cyclism,cyclist,cyclize,cycloid,cyclone,cyclope,cyclopy,cyclose,cyclus,cyesis,cygnet,cygnine,cyke,cylix,cyma,cymar,cymba,cymbal,cymbalo,cymbate,cyme,cymelet,cymene,cymling,cymoid,cymose,cymous,cymule,cynebot,cynic,cynical,cynipid,cynism,cynoid,cyp,cypre,cypres,cypress,cyprine,cypsela,cyrus,cyst,cystal,cysted,cystic,cystid,cystine,cystis,cystoid,cystoma,cystose,cystous,cytase,cytasic,cytitis,cytode,cytoid,cytoma,cyton,cytost,cytula,czar,czardas,czardom,czarian,czaric,czarina,czarish,czarism,czarist,d,da,daalder,dab,dabb,dabba,dabber,dabble,dabbler,dabby,dablet,daboia,daboya,dabster,dace,dacite,dacitic,dacker,dacoit,dacoity,dacryon,dactyl,dad,dada,dadap,dadder,daddle,daddock,daddy,dade,dado,dae,daedal,daemon,daemony,daer,daff,daffery,daffing,daffish,daffle,daffy,daft,daftly,dag,dagaba,dagame,dagassa,dagesh,dagga,dagger,daggers,daggle,daggly,daggy,daghesh,daglock,dagoba,dags,dah,dahoon,daidle,daidly,daiker,daikon,daily,daimen,daimio,daimon,dain,daincha,dainty,daira,dairi,dairy,dais,daisied,daisy,daitya,daiva,dak,daker,dakir,dal,dalar,dale,daleman,daler,daleth,dali,dalk,dallack,dalle,dalles,dallier,dally,dalt,dalteen,dalton,dam,dama,damage,damager,damages,daman,damask,damasse,dambose,dambrod,dame,damiana,damie,damier,damine,damlike,dammar,damme,dammer,dammish,damn,damned,damner,damnify,damning,damnous,damp,dampang,damped,dampen,damper,damping,dampish,damply,dampy,damsel,damson,dan,danaid,danaide,danaine,danaite,dance,dancer,dancery,dancing,dand,danda,dander,dandify,dandily,dandle,dandler,dandy,dang,danger,dangle,dangler,danglin,danio,dank,dankish,dankly,danli,danner,dannock,dansant,danta,danton,dao,daoine,dap,daphnin,dapicho,dapico,dapifer,dapper,dapple,dappled,dar,darac,daraf,darat,darbha,darby,dardaol,dare,dareall,dareful,darer,daresay,darg,dargah,darger,dargue,dari,daribah,daric,daring,dariole,dark,darken,darkful,darkish,darkle,darkly,darky,darling,darn,darned,darnel,darner,darnex,darning,daroga,daroo,darr,darrein,darst,dart,dartars,darter,darting,dartle,dartman,dartoic,dartoid,dartos,dartre,darts,darzee,das,dash,dashed,dashee,dasheen,dasher,dashing,dashpot,dashy,dasi,dasnt,dassie,dassy,dastard,dastur,dasturi,dasyure,data,datable,datably,dataria,datary,datch,datcha,date,dater,datil,dating,dation,datival,dative,dattock,datum,daturic,daub,daube,dauber,daubery,daubing,dauby,daud,daunch,dauncy,daunt,daunter,daunton,dauphin,daut,dautie,dauw,davach,daven,daver,daverdy,davit,davoch,davy,davyne,daw,dawdle,dawdler,dawdy,dawish,dawkin,dawn,dawning,dawny,dawtet,dawtit,dawut,day,dayal,daybeam,daybook,daydawn,dayfly,dayless,daylit,daylong,dayman,daymare,daymark,dayroom,days,daysman,daystar,daytale,daytide,daytime,dayward,daywork,daywrit,daze,dazed,dazedly,dazy,dazzle,dazzler,de,deacon,dead,deaden,deader,deadeye,deading,deadish,deadly,deadman,deadpan,deadpay,deaf,deafen,deafish,deafly,deair,deal,dealate,dealer,dealing,dealt,dean,deaner,deanery,deaness,dear,dearie,dearly,dearth,deary,deash,deasil,death,deathin,deathly,deathy,deave,deavely,deb,debacle,debadge,debar,debark,debase,debaser,debate,debater,debauch,debby,debeige,deben,debile,debind,debit,debord,debosh,debouch,debride,debrief,debris,debt,debtee,debtful,debtor,debunk,debus,debut,decad,decadal,decade,decadic,decafid,decagon,decal,decamp,decan,decanal,decane,decani,decant,decap,decapod,decarch,decare,decart,decast,decate,decator,decatyl,decay,decayed,decayer,decease,deceit,deceive,decence,decency,decene,decent,decenyl,decern,decess,deciare,decibel,decide,decided,decider,decidua,decil,decile,decima,decimal,deck,decke,decked,deckel,decker,deckie,decking,deckle,declaim,declare,declass,decline,declive,decoat,decoct,decode,decoic,decoke,decolor,decorum,decoy,decoyer,decream,decree,decreer,decreet,decrete,decrew,decrial,decried,decrier,decrown,decry,decuman,decuple,decuria,decurve,decury,decus,decyl,decylic,decyne,dedimus,dedo,deduce,deduct,dee,deed,deedbox,deedeed,deedful,deedily,deedy,deem,deemer,deemie,deep,deepen,deeping,deepish,deeply,deer,deerdog,deerlet,deevey,deface,defacer,defalk,defame,defamed,defamer,defassa,defat,default,defease,defeat,defect,defence,defend,defense,defer,defial,defiant,defiber,deficit,defier,defile,defiled,defiler,define,defined,definer,deflate,deflect,deflesh,deflex,defog,deforce,deform,defoul,defraud,defray,defrock,defrost,deft,deftly,defunct,defuse,defy,deg,degas,degauss,degerm,degged,degger,deglaze,degorge,degrade,degrain,degree,degu,degum,degust,dehair,dehisce,dehorn,dehors,dehort,dehull,dehusk,deice,deicer,deicide,deictic,deific,deifier,deiform,deify,deign,deink,deinos,deiseal,deism,deist,deistic,deity,deject,dejecta,dejeune,dekko,dekle,delaine,delapse,delate,delater,delator,delawn,delay,delayer,dele,delead,delenda,delete,delf,delft,delible,delict,delight,delime,delimit,delint,deliver,dell,deloul,delouse,delta,deltaic,deltal,deltic,deltoid,delude,deluder,deluge,deluxe,delve,delver,demagog,demal,demand,demarch,demark,demast,deme,demean,demency,dement,demerit,demesne,demi,demibob,demidog,demigod,demihag,demiman,demiowl,demiox,demiram,demirep,demise,demiss,demit,demivol,demob,demoded,demoid,demon,demonic,demonry,demos,demote,demotic,demount,demulce,demure,demy,den,denaro,denary,denat,denda,dendral,dendric,dendron,dene,dengue,denial,denier,denim,denizen,dennet,denote,dense,densely,densen,densher,densify,density,dent,dental,dentale,dentary,dentata,dentate,dentel,denter,dentex,dentil,dentile,dentin,dentine,dentist,dentoid,denture,denty,denude,denuder,deny,deodand,deodara,deota,depa,depaint,depark,depart,depas,depass,depend,depeter,dephase,depict,deplane,deplete,deplore,deploy,deplume,deplump,depoh,depone,deport,deposal,depose,deposer,deposit,depot,deprave,depress,deprint,deprive,depside,depth,depthen,depute,deputy,dequeen,derah,deraign,derail,derange,derat,derate,derater,deray,derby,dere,dereism,deric,deride,derider,derival,derive,derived,deriver,derm,derma,dermad,dermal,dermic,dermis,dermoid,dermol,dern,dernier,derout,derrick,derride,derries,derry,dertrum,derust,dervish,desalt,desand,descale,descant,descend,descent,descort,descry,deseed,deseret,desert,deserve,desex,desi,desight,design,desire,desired,desirer,desist,desize,desk,deslime,desma,desman,desmic,desmid,desmine,desmoid,desmoma,desmon,despair,despect,despise,despite,despoil,despond,despot,dess,dessa,dessert,dessil,destain,destine,destiny,destour,destroy,desuete,desugar,desyl,detach,detail,detain,detar,detax,detect,detent,deter,deterge,detest,detin,detinet,detinue,detour,detract,detrain,detrude,detune,detur,deuce,deuced,deul,deuton,dev,deva,devall,devalue,devance,devast,devata,develin,develop,devest,deviant,deviate,device,devil,deviled,deviler,devilet,devilry,devily,devious,devisal,devise,devisee,deviser,devisor,devoice,devoid,devoir,devolve,devote,devoted,devotee,devoter,devour,devout,devow,devvel,dew,dewan,dewanee,dewater,dewax,dewbeam,dewclaw,dewcup,dewdamp,dewdrop,dewer,dewfall,dewily,dewlap,dewless,dewlike,dewool,deworm,dewret,dewtry,dewworm,dewy,dexter,dextrad,dextral,dextran,dextrin,dextro,dey,deyship,dezinc,dha,dhabb,dhai,dhak,dhamnoo,dhan,dhangar,dhanuk,dhanush,dharana,dharani,dharma,dharna,dhaura,dhauri,dhava,dhaw,dheri,dhobi,dhole,dhoni,dhoon,dhoti,dhoul,dhow,dhu,dhunchi,dhurra,dhyal,dhyana,di,diabase,diacid,diacle,diacope,diact,diactin,diadem,diaderm,diaene,diagram,dial,dialect,dialer,dialin,dialing,dialist,dialkyl,diallel,diallyl,dialyze,diamb,diambic,diamide,diamine,diamond,dian,diander,dianite,diapase,diapasm,diaper,diaplex,diapsid,diarch,diarchy,diarial,diarian,diarist,diarize,diary,diastem,diaster,diasyrm,diatom,diaulic,diaulos,diaxial,diaxon,diazide,diazine,diazoic,diazole,diazoma,dib,dibase,dibasic,dibatag,dibber,dibble,dibbler,dibbuk,dibhole,dibrach,dibrom,dibs,dicast,dice,dicebox,dicecup,diceman,dicer,dicetyl,dich,dichas,dichord,dicing,dick,dickens,dicker,dickey,dicky,dicolic,dicolon,dicot,dicotyl,dicta,dictate,dictic,diction,dictum,dicycle,did,didder,diddle,diddler,diddy,didelph,didie,didine,didle,didna,didnt,didromy,didst,didym,didymia,didymus,die,dieb,dieback,diedral,diedric,diehard,dielike,diem,diene,dier,diesel,diesis,diet,dietal,dietary,dieter,diethyl,dietic,dietics,dietine,dietist,diewise,diffame,differ,diffide,difform,diffuse,dig,digamma,digamy,digenic,digeny,digest,digger,digging,dight,dighter,digit,digital,digitus,diglot,diglyph,digmeat,dignify,dignity,digram,digraph,digress,digs,dihalo,diiamb,diiodo,dika,dikage,dike,diker,diketo,dikkop,dilate,dilated,dilater,dilator,dildo,dilemma,dilker,dill,dilli,dillier,dilling,dillue,dilluer,dilly,dilo,dilogy,diluent,dilute,diluted,dilutee,diluter,dilutor,diluvia,dim,dimber,dimble,dime,dimer,dimeran,dimeric,dimeter,dimiss,dimit,dimity,dimly,dimmed,dimmer,dimmest,dimmet,dimmish,dimness,dimoric,dimorph,dimple,dimply,dimps,dimpsy,din,dinar,dinder,dindle,dine,diner,dineric,dinero,dinette,ding,dingar,dingbat,dinge,dingee,dinghee,dinghy,dingily,dingle,dingly,dingo,dingus,dingy,dinic,dinical,dining,dinitro,dink,dinkey,dinkum,dinky,dinmont,dinner,dinnery,dinomic,dinsome,dint,dinus,diobely,diobol,diocese,diode,diodont,dioecy,diol,dionise,dionym,diopter,dioptra,dioptry,diorama,diorite,diose,diosmin,diota,diotic,dioxane,dioxide,dioxime,dioxy,dip,dipetto,diphase,diphead,diplex,diploe,diploic,diploid,diplois,diploma,diplont,diplopy,dipnoan,dipnoid,dipode,dipodic,dipody,dipolar,dipole,diporpa,dipped,dipper,dipping,dipsas,dipsey,dipter,diptote,diptych,dipware,dipygus,dipylon,dipyre,dird,dirdum,dire,direct,direful,direly,dirempt,dirge,dirgler,dirhem,dirk,dirl,dirndl,dirt,dirten,dirtily,dirty,dis,disable,disagio,disally,disarm,disavow,disawa,disazo,disband,disbar,disbark,disbody,disbud,disbury,disc,discage,discal,discard,discase,discept,discern,discerp,discoid,discord,discous,discus,discuss,disdain,disdub,disease,disedge,diseme,disemic,disfame,disfen,disgig,disglut,disgood,disgown,disgulf,disgust,dish,dished,dishelm,disher,dishful,dishome,dishorn,dishpan,dishrag,disject,disjoin,disjune,disk,disleaf,dislike,dislimn,dislink,dislip,disload,dislove,dismain,dismal,disman,dismark,dismask,dismast,dismay,disme,dismiss,disna,disnest,disnew,disobey,disodic,disomic,disomus,disorb,disown,dispark,dispart,dispel,dispend,display,dispone,dispope,disport,dispose,dispost,dispulp,dispute,disrank,disrate,disring,disrobe,disroof,disroot,disrump,disrupt,diss,disseat,dissect,dissent,dissert,dissoul,dissuit,distad,distaff,distain,distal,distale,distant,distend,distent,distich,distill,distome,distort,distune,disturb,disturn,disuse,diswood,disyoke,dit,dita,dital,ditch,ditcher,dite,diter,dither,dithery,dithion,ditolyl,ditone,dittamy,dittany,dittay,dittied,ditto,ditty,diurnal,diurne,div,diva,divan,divata,dive,divel,diver,diverge,divers,diverse,divert,divest,divide,divided,divider,divine,diviner,diving,divinyl,divisor,divorce,divot,divoto,divulge,divulse,divus,divvy,diwata,dixie,dixit,dixy,dizain,dizen,dizoic,dizzard,dizzily,dizzy,djave,djehad,djerib,djersa,do,doab,doable,doarium,doat,doated,doater,doating,doatish,dob,dobbed,dobber,dobbin,dobbing,dobby,dobe,dobla,doblon,dobra,dobrao,dobson,doby,doc,docent,docible,docile,docity,dock,dockage,docken,docker,docket,dockize,dockman,docmac,doctor,doctrix,dod,dodd,doddart,dodded,dodder,doddery,doddie,dodding,doddle,doddy,dodecyl,dodge,dodger,dodgery,dodgily,dodgy,dodkin,dodlet,dodman,dodo,dodoism,dodrans,doe,doebird,doeglic,doer,does,doeskin,doesnt,doest,doff,doffer,dog,dogal,dogate,dogbane,dogbite,dogblow,dogboat,dogbolt,dogbush,dogcart,dogdom,doge,dogedom,dogface,dogfall,dogfish,dogfoot,dogged,dogger,doggery,doggess,doggish,doggo,doggone,doggrel,doggy,doghead,doghole,doghood,dogie,dogless,doglike,dogly,dogma,dogman,dogmata,dogs,dogship,dogskin,dogtail,dogtie,dogtrot,dogvane,dogwood,dogy,doigt,doiled,doily,doina,doing,doings,doit,doited,doitkin,doke,dokhma,dola,dolabra,dolcan,dolcian,dolcino,doldrum,dole,doleful,dolent,doless,doli,dolia,dolina,doline,dolium,doll,dollar,dolldom,dollier,dollish,dollop,dolly,dolman,dolmen,dolor,dolose,dolous,dolphin,dolt,doltish,dom,domain,domal,domba,dome,doment,domer,domett,domic,domical,domine,dominie,domino,dominus,domite,domitic,domn,domnei,domoid,dompt,domy,don,donable,donary,donate,donated,donatee,donator,donax,done,donee,doney,dong,donga,dongon,donjon,donkey,donna,donnert,donnish,donnism,donnot,donor,donship,donsie,dont,donum,doob,doocot,doodab,doodad,doodle,doodler,dooja,dook,dooket,dookit,dool,doolee,dooley,dooli,doolie,dooly,doom,doomage,doomer,doomful,dooms,doon,door,doorba,doorboy,doored,doorman,doorway,dop,dopa,dopatta,dope,doper,dopey,dopper,doppia,dor,dorab,dorad,dorado,doree,dorhawk,doria,dorje,dorlach,dorlot,dorm,dormant,dormer,dormie,dormy,dorn,dorneck,dornic,dornick,dornock,dorp,dorsad,dorsal,dorsale,dorsel,dorser,dorsum,dorter,dorts,dorty,doruck,dory,dos,dosa,dosadh,dosage,dose,doser,dosis,doss,dossal,dossel,dosser,dossier,dossil,dossman,dot,dotage,dotal,dotard,dotardy,dotate,dotchin,dote,doted,doter,doting,dotish,dotkin,dotless,dotlike,dotted,dotter,dottily,dotting,dottle,dottler,dotty,doty,douar,double,doubled,doubler,doublet,doubly,doubt,doubter,douc,douce,doucely,doucet,douche,doucin,doucine,doudle,dough,dought,doughty,doughy,doum,doup,douping,dour,dourine,dourly,douse,douser,dout,douter,doutous,dove,dovecot,dovekey,dovekie,dovelet,dover,dovish,dow,dowable,dowager,dowcet,dowd,dowdily,dowdy,dowed,dowel,dower,doweral,dowery,dowf,dowie,dowily,dowitch,dowl,dowlas,dowless,down,downby,downcry,downcut,downer,downily,downlie,downset,downway,downy,dowp,dowry,dowse,dowser,dowset,doxa,doxy,doze,dozed,dozen,dozener,dozenth,dozer,dozily,dozy,dozzled,drab,drabbet,drabble,drabby,drably,drachm,drachma,dracma,draff,draffy,draft,draftee,drafter,drafty,drag,dragade,dragbar,dragged,dragger,draggle,draggly,draggy,dragman,dragnet,drago,dragon,dragoon,dragsaw,drail,drain,draine,drained,drainer,drake,dram,drama,dramm,dramme,drammed,drammer,drang,drank,drant,drape,draper,drapery,drassid,drastic,drat,drate,dratted,draught,dravya,draw,drawarm,drawbar,drawboy,drawcut,drawee,drawer,drawers,drawing,drawk,drawl,drawler,drawly,drawn,drawnet,drawoff,drawout,drawrod,dray,drayage,drayman,drazel,dread,dreader,dreadly,dream,dreamer,dreamsy,dreamt,dreamy,drear,drearly,dreary,dredge,dredger,dree,dreep,dreepy,dreg,dreggy,dregs,drench,dreng,dress,dressed,dresser,dressy,drest,drew,drewite,drias,drib,dribble,driblet,driddle,dried,drier,driest,drift,drifter,drifty,drill,driller,drillet,dringle,drink,drinker,drinn,drip,dripper,dripple,drippy,drisk,drivage,drive,drivel,driven,driver,driving,drizzle,drizzly,droddum,drogh,drogher,drogue,droit,droll,drolly,drome,dromic,dromond,dromos,drona,dronage,drone,droner,drongo,dronish,drony,drool,droop,drooper,droopt,droopy,drop,droplet,dropman,dropout,dropper,droppy,dropsy,dropt,droshky,drosky,dross,drossel,drosser,drossy,drostdy,droud,drought,drouk,drove,drover,drovy,drow,drown,drowner,drowse,drowsy,drub,drubber,drubbly,drucken,drudge,drudger,druery,drug,drugger,drugget,druggy,drugman,druid,druidic,druidry,druith,drum,drumble,drumlin,drumly,drummer,drummy,drung,drungar,drunk,drunken,drupal,drupe,drupel,druse,drusy,druxy,dry,dryad,dryadic,dryas,drycoal,dryfoot,drying,dryish,dryly,dryness,dryster,dryth,duad,duadic,dual,duali,dualin,dualism,dualist,duality,dualize,dually,duarch,duarchy,dub,dubash,dubb,dubba,dubbah,dubber,dubbing,dubby,dubiety,dubious,dubs,ducal,ducally,ducape,ducat,ducato,ducdame,duces,duchess,duchy,duck,ducker,duckery,duckie,ducking,duckpin,duct,ducted,ductile,duction,ductor,ductule,dud,dudaim,dudder,duddery,duddies,dude,dudeen,dudgeon,dudine,dudish,dudism,dudler,dudley,dudman,due,duel,dueler,dueling,duelist,duello,dueness,duenna,duer,duet,duff,duffel,duffer,duffing,dufoil,dufter,duftery,dug,dugal,dugdug,duggler,dugong,dugout,dugway,duhat,duiker,duim,duit,dujan,duke,dukedom,dukely,dukery,dukhn,dukker,dulbert,dulcet,dulcian,dulcify,dulcose,duledge,duler,dulia,dull,dullard,duller,dullery,dullify,dullish,dullity,dully,dulosis,dulotic,dulse,dult,dultie,duly,dum,duma,dumaist,dumb,dumba,dumbcow,dumbly,dumdum,dummel,dummy,dumose,dump,dumpage,dumper,dumpily,dumping,dumpish,dumple,dumpoke,dumpy,dumsola,dun,dunair,dunal,dunbird,dunce,duncery,dunch,duncify,duncish,dunder,dune,dunfish,dung,dungeon,dunger,dungol,dungon,dungy,dunite,dunk,dunker,dunlin,dunnage,dunne,dunner,dunness,dunnish,dunnite,dunnock,dunny,dunst,dunt,duntle,duny,duo,duodena,duodene,duole,duopod,duopoly,duotone,duotype,dup,dupable,dupe,dupedom,duper,dupery,dupion,dupla,duple,duplet,duplex,duplify,duplone,duppy,dura,durable,durably,durain,dural,duramen,durance,durant,durax,durbar,dure,durene,durenol,duress,durgan,durian,during,durity,durmast,durn,duro,durra,durrie,durrin,durry,durst,durwaun,duryl,dusack,duscle,dush,dusio,dusk,dusken,duskily,duskish,duskly,dusky,dust,dustbin,dustbox,dustee,duster,dustily,dusting,dustman,dustpan,dustuck,dusty,dutch,duteous,dutied,dutiful,dutra,duty,duumvir,duvet,duvetyn,dux,duyker,dvaita,dvandva,dwale,dwalm,dwang,dwarf,dwarfy,dwell,dwelled,dweller,dwelt,dwindle,dwine,dyad,dyadic,dyarchy,dyaster,dyce,dye,dyeable,dyeing,dyer,dyester,dyeware,dyeweed,dyewood,dying,dyingly,dyke,dyker,dynamic,dynamis,dynamo,dynast,dynasty,dyne,dyphone,dyslogy,dysnomy,dyspnea,dystome,dysuria,dysuric,dzeren,e,ea,each,eager,eagerly,eagle,eagless,eaglet,eagre,ean,ear,earache,earbob,earcap,eardrop,eardrum,eared,earful,earhole,earing,earl,earlap,earldom,earless,earlet,earlike,earlish,earlock,early,earmark,earn,earner,earnest,earnful,earning,earpick,earplug,earring,earshot,earsore,eartab,earth,earthed,earthen,earthly,earthy,earwax,earwig,earworm,earwort,ease,easeful,easel,easer,easier,easiest,easily,easing,east,easter,eastern,easting,easy,eat,eatable,eatage,eaten,eater,eatery,eating,eats,eave,eaved,eaver,eaves,ebb,ebbman,eboe,ebon,ebonist,ebonite,ebonize,ebony,ebriate,ebriety,ebrious,ebulus,eburine,ecad,ecanda,ecarte,ecbatic,ecbole,ecbolic,ecdemic,ecderon,ecdysis,ecesic,ecesis,eche,echea,echelon,echidna,echinal,echinid,echinus,echo,echoer,echoic,echoism,echoist,echoize,ecize,ecklein,eclair,eclat,eclegm,eclegma,eclipse,eclogue,ecoid,ecole,ecology,economy,ecotone,ecotype,ecphore,ecru,ecstasy,ectad,ectal,ectally,ectasia,ectasis,ectatic,ectene,ecthyma,ectiris,ectopia,ectopic,ectopy,ectozoa,ectypal,ectype,eczema,edacity,edaphic,edaphon,edder,eddish,eddo,eddy,edea,edeagra,edeitis,edema,edemic,edenite,edental,edestan,edestin,edge,edged,edgeman,edger,edging,edgrew,edgy,edh,edible,edict,edictal,edicule,edifice,edifier,edify,edit,edital,edition,editor,educand,educate,educe,educive,educt,eductor,eegrass,eel,eelboat,eelbob,eelcake,eeler,eelery,eelfare,eelfish,eellike,eelpot,eelpout,eelshop,eelskin,eelware,eelworm,eely,eer,eerie,eerily,effable,efface,effacer,effect,effects,effendi,effete,effigy,efflate,efflux,efform,effort,effulge,effund,effuse,eft,eftest,egad,egality,egence,egeran,egest,egesta,egg,eggcup,egger,eggfish,egghead,egghot,egging,eggler,eggless,egglike,eggnog,eggy,egilops,egipto,egma,ego,egohood,egoism,egoist,egoity,egoize,egoizer,egol,egomism,egotism,egotist,egotize,egress,egret,eh,eheu,ehlite,ehuawa,eident,eider,eidetic,eidolic,eidolon,eight,eighth,eighty,eigne,eimer,einkorn,eisodic,either,eject,ejecta,ejector,ejoo,ekaha,eke,eker,ekerite,eking,ekka,ekphore,ektene,ektenes,el,elaidic,elaidin,elain,elaine,elance,eland,elanet,elapid,elapine,elapoid,elapse,elastic,elastin,elatcha,elate,elated,elater,elation,elative,elator,elb,elbow,elbowed,elbower,elbowy,elcaja,elchee,eld,elder,elderly,eldest,eldin,elding,eldress,elect,electee,electly,elector,electro,elegant,elegiac,elegist,elegit,elegize,elegy,eleidin,element,elemi,elemin,elench,elenchi,elenge,elevate,eleven,elevon,elf,elfhood,elfic,elfin,elfish,elfkin,elfland,elflike,elflock,elfship,elfwife,elfwort,elicit,elide,elision,elisor,elite,elixir,elk,elkhorn,elkslip,elkwood,ell,ellagic,elle,elleck,ellfish,ellipse,ellops,ellwand,elm,elmy,elocute,elod,eloge,elogium,eloign,elope,eloper,elops,els,else,elsehow,elsin,elt,eluate,elude,eluder,elusion,elusive,elusory,elute,elution,elutor,eluvial,eluvium,elvan,elver,elves,elvet,elvish,elysia,elytral,elytrin,elytron,elytrum,em,emanant,emanate,emanium,emarcid,emball,embalm,embank,embar,embargo,embark,embassy,embathe,embay,embed,embelic,ember,embind,embira,emblaze,emblem,emblema,emblic,embody,embog,embole,embolic,embolo,embolum,embolus,emboly,embosom,emboss,embound,embow,embowed,embowel,embower,embox,embrace,embrail,embroil,embrown,embryo,embryon,embuia,embus,embusk,emcee,eme,emeer,emend,emender,emerald,emerge,emerize,emerse,emersed,emery,emesis,emetic,emetine,emgalla,emigree,eminent,emir,emirate,emit,emitter,emma,emmenic,emmer,emmet,emodin,emoloa,emote,emotion,emotive,empall,empanel,empaper,empark,empasm,empathy,emperor,empery,empire,empiric,emplace,emplane,employ,emplume,emporia,empower,empress,emprise,empt,emptier,emptily,emptins,emption,emptor,empty,empyema,emu,emulant,emulate,emulous,emulsin,emulsor,emyd,emydian,en,enable,enabler,enact,enactor,enaena,enage,enalid,enam,enamber,enamdar,enamel,enamor,enapt,enarbor,enarch,enarm,enarme,enate,enatic,enation,enbrave,encage,encake,encamp,encase,encash,encauma,encave,encell,enchain,enchair,enchant,enchase,enchest,encina,encinal,encist,enclasp,enclave,encloak,enclose,encloud,encoach,encode,encoil,encolor,encomia,encomic,encoop,encore,encowl,encraal,encraty,encreel,encrisp,encrown,encrust,encrypt,encup,encurl,encyst,end,endable,endarch,endaze,endear,ended,endemic,ender,endere,enderon,endevil,endew,endgate,ending,endite,endive,endless,endlong,endmost,endogen,endome,endopod,endoral,endore,endorse,endoss,endotys,endow,endower,endozoa,endue,endura,endure,endurer,endways,endwise,endyma,endymal,endysis,enema,enemy,energic,energid,energy,eneuch,eneugh,enface,enfelon,enfeoff,enfever,enfile,enfiled,enflesh,enfoil,enfold,enforce,enfork,enfoul,enframe,enfree,engage,engaged,engager,engaol,engarb,engaud,engaze,engem,engild,engine,engird,engirt,englad,englobe,engloom,englory,englut,englyn,engobe,engold,engore,engorge,engrace,engraff,engraft,engrail,engrain,engram,engrasp,engrave,engreen,engross,enguard,engulf,enhalo,enhance,enhat,enhaunt,enheart,enhedge,enhelm,enherit,enhusk,eniac,enigma,enisle,enjail,enjamb,enjelly,enjewel,enjoin,enjoy,enjoyer,enkraal,enlace,enlard,enlarge,enleaf,enlief,enlife,enlight,enlink,enlist,enliven,enlock,enlodge,enmask,enmass,enmesh,enmist,enmity,enmoss,ennead,ennerve,enniche,ennoble,ennoic,ennomic,ennui,enocyte,enodal,enoil,enol,enolate,enolic,enolize,enomoty,enoplan,enorm,enough,enounce,enow,enplane,enquire,enquiry,enrace,enrage,enraged,enrange,enrank,enrapt,enray,enrib,enrich,enring,enrive,enrobe,enrober,enrol,enroll,enroot,enrough,enruin,enrut,ens,ensaint,ensand,ensate,enscene,ense,enseam,enseat,enseem,enserf,ensete,enshade,enshawl,enshell,ensign,ensile,ensky,enslave,ensmall,ensnare,ensnarl,ensnow,ensoul,enspell,enstamp,enstar,enstate,ensteel,enstool,enstore,ensuant,ensue,ensuer,ensure,ensurer,ensweep,entach,entad,entail,ental,entame,entasia,entasis,entelam,entente,enter,enteral,enterer,enteria,enteric,enteron,entheal,enthral,enthuse,entia,entice,enticer,entify,entire,entiris,entitle,entity,entoil,entomb,entomic,entone,entopic,entotic,entozoa,entrail,entrain,entrant,entrap,entreat,entree,entropy,entrust,entry,entwine,entwist,enure,enurny,envapor,envault,enveil,envelop,envenom,envied,envier,envious,environ,envoy,envy,envying,enwiden,enwind,enwisen,enwoman,enwomb,enwood,enwound,enwrap,enwrite,enzone,enzooty,enzym,enzyme,enzymic,eoan,eolith,eon,eonism,eophyte,eosate,eoside,eosin,eosinic,eozoon,epacme,epacrid,epact,epactal,epagoge,epanody,eparch,eparchy,epaule,epaulet,epaxial,epee,epeeist,epeiric,epeirid,epergne,epha,ephah,ephebe,ephebic,ephebos,ephebus,ephelis,ephetae,ephete,ephetic,ephod,ephor,ephoral,ephoric,ephorus,ephyra,epibole,epiboly,epic,epical,epicarp,epicede,epicele,epicene,epichil,epicism,epicist,epicly,epicure,epicyte,epidemy,epiderm,epidote,epigeal,epigean,epigeic,epigene,epigone,epigram,epigyne,epigyny,epihyal,epikeia,epilate,epilobe,epimer,epimere,epimyth,epinaos,epinine,epiotic,epipial,episode,epistle,epitaph,epitela,epithem,epithet,epitoke,epitome,epiural,epizoa,epizoal,epizoan,epizoic,epizoon,epoch,epocha,epochal,epode,epodic,eponym,eponymy,epopee,epopt,epoptes,epoptic,epos,epsilon,epulary,epulis,epulo,epuloid,epural,epurate,equable,equably,equal,equally,equant,equate,equator,equerry,equid,equine,equinia,equinox,equinus,equip,equiped,equison,equites,equity,equoid,er,era,erade,eral,eranist,erase,erased,eraser,erasion,erasure,erbia,erbium,erd,erdvark,ere,erect,erecter,erectly,erector,erelong,eremic,eremite,erenach,erenow,erepsin,erept,ereptic,erethic,erg,ergal,ergasia,ergates,ergodic,ergoism,ergon,ergot,ergoted,ergotic,ergotin,ergusia,eria,eric,ericad,erical,ericius,ericoid,erika,erikite,erineum,erinite,erinose,eristic,erizo,erlking,ermelin,ermine,ermined,erminee,ermines,erne,erode,eroded,erodent,erogeny,eros,erose,erosely,erosion,erosive,eroteme,erotic,erotica,erotism,err,errable,errancy,errand,errant,errata,erratic,erratum,errhine,erring,errite,error,ers,ersatz,erth,erthen,erthly,eruc,eruca,erucic,erucin,eruct,erudit,erudite,erugate,erupt,eryngo,es,esca,escalan,escalin,escalop,escape,escapee,escaper,escarp,eschar,eschara,escheat,eschew,escoba,escolar,escort,escribe,escrol,escrow,escudo,esculin,esere,eserine,esexual,eshin,esker,esne,esodic,esotery,espadon,esparto,espave,espial,espier,espinal,espino,esplees,espouse,espy,esquire,ess,essang,essay,essayer,essed,essence,essency,essling,essoin,estadal,estadio,estado,estamp,estate,esteem,ester,estevin,estival,estmark,estoc,estoile,estop,estrade,estray,estre,estreat,estrepe,estrin,estriol,estrone,estrous,estrual,estuary,estufa,estuous,estus,eta,etacism,etacist,etalon,etamine,etch,etcher,etching,eternal,etesian,ethal,ethanal,ethane,ethanol,ethel,ethene,ethenic,ethenol,ethenyl,ether,ethered,etheric,etherin,ethic,ethical,ethics,ethid,ethide,ethine,ethiops,ethmoid,ethnal,ethnic,ethnize,ethnos,ethos,ethoxyl,ethrog,ethyl,ethylic,ethylin,ethyne,ethynyl,etiolin,etna,ettle,etua,etude,etui,etym,etymic,etymon,etypic,eu,euaster,eucaine,euchre,euchred,euclase,eucone,euconic,eucrasy,eucrite,euge,eugenic,eugenol,eugeny,eulalia,eulogia,eulogic,eulogy,eumenid,eunicid,eunomy,eunuch,euonym,euonymy,euouae,eupad,eupathy,eupepsy,euphemy,euphon,euphone,euphony,euphory,euphroe,eupione,euploid,eupnea,eureka,euripus,eurite,eurobin,euryon,eusol,eustyle,eutaxic,eutaxy,eutexia,eutony,evacue,evacuee,evade,evader,evalue,evangel,evanish,evase,evasion,evasive,eve,evejar,evelong,even,evener,evening,evenly,evens,event,eveque,ever,evert,evertor,everwho,every,evestar,evetide,eveweed,evict,evictor,evident,evil,evilly,evince,evirate,evisite,evitate,evocate,evoe,evoke,evoker,evolute,evolve,evolver,evovae,evulse,evzone,ewder,ewe,ewer,ewerer,ewery,ewry,ex,exact,exacter,exactly,exactor,exalate,exalt,exalted,exalter,exam,examen,examine,example,exarate,exarch,exarchy,excamb,excave,exceed,excel,except,excerpt,excess,excide,exciple,excise,excisor,excite,excited,exciter,excitor,exclaim,exclave,exclude,excreta,excrete,excurse,excusal,excuse,excuser,excuss,excyst,exdie,exeat,execute,exedent,exedra,exegete,exempt,exequy,exergue,exert,exes,exeunt,exflect,exhale,exhaust,exhibit,exhort,exhume,exhumer,exigent,exile,exiler,exilian,exilic,exility,exist,exister,exit,exite,exition,exitus,exlex,exocarp,exocone,exode,exoderm,exodic,exodist,exodos,exodus,exody,exogamy,exogen,exogeny,exomion,exomis,exon,exoner,exopod,exordia,exormia,exosmic,exostra,exotic,exotism,expand,expanse,expect,expede,expel,expend,expense,expert,expiate,expire,expiree,expirer,expiry,explain,explant,explode,exploit,explore,expone,export,exposal,expose,exposed,exposer,exposit,expound,express,expugn,expulse,expunge,expurge,exradio,exscind,exsect,exsert,exship,exsurge,extant,extend,extense,extent,exter,extern,externe,extima,extinct,extine,extol,extoll,extort,extra,extract,extrait,extreme,extrude,extund,exudate,exude,exult,exultet,exuviae,exuvial,ey,eyah,eyalet,eyas,eye,eyeball,eyebalm,eyebar,eyebeam,eyebolt,eyebree,eyebrow,eyecup,eyed,eyedot,eyedrop,eyeflap,eyeful,eyehole,eyelash,eyeless,eyelet,eyelid,eyelike,eyeline,eyemark,eyen,eyepit,eyer,eyeroot,eyeseed,eyeshot,eyesome,eyesore,eyespot,eyewash,eyewear,eyewink,eyewort,eyey,eying,eyn,eyne,eyot,eyoty,eyra,eyre,eyrie,eyrir,ezba,f,fa,fabella,fabes,fable,fabled,fabler,fabliau,fabling,fabric,fabular,facadal,facade,face,faced,faceman,facer,facet,facete,faceted,facia,facial,faciend,facient,facies,facile,facing,fack,fackins,facks,fact,factful,faction,factish,factive,factor,factory,factrix,factual,factum,facture,facty,facula,facular,faculty,facund,facy,fad,fadable,faddish,faddism,faddist,faddle,faddy,fade,faded,fadedly,faden,fader,fadge,fading,fady,fae,faerie,faery,faff,faffle,faffy,fag,fagald,fage,fager,fagger,faggery,fagging,fagine,fagot,fagoter,fagoty,faham,fahlerz,fahlore,faience,fail,failing,faille,failure,fain,fainly,fains,faint,fainter,faintly,faints,fainty,faipule,fair,fairer,fairily,fairing,fairish,fairly,fairm,fairway,fairy,faith,faitour,fake,faker,fakery,fakir,faky,falbala,falcade,falcate,falcer,falces,falcial,falcon,falcula,faldage,faldfee,fall,fallace,fallacy,fallage,fallen,faller,falling,fallow,fallway,fally,falsary,false,falsely,falsen,falser,falsie,falsify,falsism,faltche,falter,falutin,falx,fam,famble,fame,fameful,familia,family,famine,famish,famous,famulus,fan,fana,fanal,fanam,fanatic,fanback,fancied,fancier,fancify,fancy,fand,fandom,fanega,fanfare,fanfoot,fang,fanged,fangle,fangled,fanglet,fangot,fangy,fanion,fanlike,fanman,fannel,fanner,fannier,fanning,fanon,fant,fantail,fantast,fantasy,fantod,fanweed,fanwise,fanwork,fanwort,faon,far,farad,faraday,faradic,faraway,farce,farcer,farcial,farcied,farcify,farcing,farcist,farcy,farde,fardel,fardh,fardo,fare,farer,farfara,farfel,fargood,farina,faring,farish,farl,farleu,farm,farmage,farmer,farmery,farming,farmost,farmy,farness,faro,farrago,farrand,farrier,farrow,farruca,farse,farseer,farset,farther,fasces,fascet,fascia,fascial,fascine,fascis,fascism,fascist,fash,fasher,fashery,fashion,fass,fast,fasten,faster,fasting,fastish,fastus,fat,fatal,fatally,fatbird,fate,fated,fateful,fathead,father,fathmur,fathom,fatidic,fatigue,fatiha,fatil,fatless,fatling,fatly,fatness,fatsia,fatten,fatter,fattily,fattish,fatty,fatuism,fatuity,fatuoid,fatuous,fatwood,faucal,fauces,faucet,faucial,faucre,faugh,fauld,fault,faulter,faulty,faun,faunal,faunish,faunist,faunule,fause,faust,fautor,fauve,favella,favilla,favism,favissa,favn,favor,favored,favorer,favose,favous,favus,fawn,fawner,fawnery,fawning,fawny,fay,fayles,faze,fazenda,fe,feague,feak,feal,fealty,fear,feared,fearer,fearful,feasor,feast,feasten,feaster,feat,feather,featly,featous,feature,featy,feaze,febrile,fecal,feces,feck,feckful,feckly,fecula,fecund,fed,feddan,federal,fee,feeable,feeble,feebly,feed,feedbin,feedbox,feeder,feeding,feedman,feedway,feedy,feel,feeler,feeless,feeling,feer,feere,feering,feetage,feeze,fegary,fei,feif,feigher,feign,feigned,feigner,feil,feint,feis,feist,feisty,felid,feline,fell,fellage,fellah,fellen,feller,fellic,felling,felloe,fellow,felly,feloid,felon,felonry,felony,fels,felsite,felt,felted,felter,felting,felty,felucca,felwort,female,feme,femic,feminal,feminie,feminin,femora,femoral,femur,fen,fenbank,fence,fencer,fenchyl,fencing,fend,fender,fendy,fenite,fenks,fenland,fenman,fennec,fennel,fennig,fennish,fenny,fensive,fent,fenter,feod,feodal,feodary,feoff,feoffee,feoffor,feower,feral,feralin,ferash,ferdwit,ferfet,feria,ferial,feridgi,ferie,ferine,ferity,ferk,ferling,ferly,fermail,ferme,ferment,fermery,fermila,fern,ferned,fernery,ferny,feroher,ferrado,ferrate,ferrean,ferret,ferrety,ferri,ferric,ferrier,ferrite,ferrous,ferrule,ferrum,ferry,fertile,feru,ferula,ferule,ferulic,fervent,fervid,fervor,fescue,fess,fessely,fest,festal,fester,festine,festive,festoon,festuca,fet,fetal,fetch,fetched,fetcher,fetial,fetid,fetidly,fetish,fetlock,fetlow,fetor,fetter,fettle,fettler,fetus,feu,feuage,feuar,feucht,feud,feudal,feudee,feudist,feued,feuille,fever,feveret,few,fewness,fewsome,fewter,fey,feyness,fez,fezzed,fezzy,fi,fiacre,fiance,fiancee,fiar,fiard,fiasco,fiat,fib,fibber,fibbery,fibdom,fiber,fibered,fibril,fibrin,fibrine,fibroid,fibroin,fibroma,fibrose,fibrous,fibry,fibster,fibula,fibulae,fibular,ficary,fice,ficelle,fiche,fichu,fickle,fickly,fico,ficoid,fictile,fiction,fictive,fid,fidalgo,fidate,fiddle,fiddler,fiddley,fide,fideism,fideist,fidfad,fidge,fidget,fidgety,fiducia,fie,fiefdom,field,fielded,fielder,fieldy,fiend,fiendly,fient,fierce,fiercen,fierily,fiery,fiesta,fife,fifer,fifie,fifish,fifo,fifteen,fifth,fifthly,fifty,fig,figaro,figbird,figent,figged,figgery,figging,figgle,figgy,fight,fighter,figless,figlike,figment,figural,figure,figured,figurer,figury,figworm,figwort,fike,fikie,filace,filacer,filao,filar,filaria,filasse,filate,filator,filbert,filch,filcher,file,filemot,filer,filet,filial,filiate,filibeg,filical,filicic,filicin,filiety,filing,filings,filippo,filite,fill,filled,filler,fillet,filleul,filling,fillip,fillock,filly,film,filmdom,filmet,filmic,filmily,filmish,filmist,filmize,filmy,filo,filose,fils,filter,filth,filthy,fimble,fimbria,fin,finable,finagle,final,finale,finally,finance,finback,finch,finched,find,findal,finder,finding,findjan,fine,fineish,finely,finer,finery,finesse,finetop,finfish,finfoot,fingent,finger,fingery,finial,finical,finick,finific,finify,finikin,fining,finis,finish,finite,finity,finjan,fink,finkel,finland,finless,finlet,finlike,finnac,finned,finner,finnip,finny,fiord,fiorded,fiorin,fiorite,fip,fipenny,fipple,fique,fir,firca,fire,firearm,firebox,fireboy,firebug,fired,firedog,firefly,firelit,fireman,firer,firetop,firing,firk,firker,firkin,firlot,firm,firman,firmer,firmly,firn,firring,firry,first,firstly,firth,fisc,fiscal,fise,fisetin,fish,fishbed,fished,fisher,fishery,fishet,fisheye,fishful,fishgig,fishify,fishily,fishing,fishlet,fishman,fishpot,fishway,fishy,fisnoga,fissate,fissile,fission,fissive,fissure,fissury,fist,fisted,fister,fistful,fistic,fistify,fisting,fistuca,fistula,fistule,fisty,fit,fitch,fitched,fitchee,fitcher,fitchet,fitchew,fitful,fitly,fitment,fitness,fitout,fitroot,fittage,fitted,fitten,fitter,fitters,fittily,fitting,fitty,fitweed,five,fivebar,fiver,fives,fix,fixable,fixage,fixate,fixatif,fixator,fixed,fixedly,fixer,fixing,fixity,fixture,fixure,fizgig,fizz,fizzer,fizzle,fizzy,fjeld,flabby,flabrum,flaccid,flack,flacked,flacker,flacket,flaff,flaffer,flag,flagger,flaggy,flaglet,flagman,flagon,flail,flair,flaith,flak,flakage,flake,flaker,flakily,flaky,flam,flamant,flamb,flame,flamed,flamen,flamer,flamfew,flaming,flamy,flan,flanch,flandan,flane,flange,flanger,flank,flanked,flanker,flanky,flannel,flanque,flap,flapper,flare,flaring,flary,flaser,flash,flasher,flashet,flashly,flashy,flask,flasker,flasket,flasque,flat,flatcap,flatcar,flatdom,flated,flathat,flatlet,flatly,flatman,flatten,flatter,flattie,flattop,flatus,flatway,flaught,flaunt,flaunty,flavedo,flavic,flavid,flavin,flavine,flavo,flavone,flavor,flavory,flavour,flaw,flawed,flawful,flawn,flawy,flax,flaxen,flaxman,flaxy,flay,flayer,flea,fleam,fleay,flebile,fleche,fleck,flecken,flecker,flecky,flector,fled,fledge,fledgy,flee,fleece,fleeced,fleecer,fleech,fleecy,fleer,fleerer,fleet,fleeter,fleetly,flemish,flench,flense,flenser,flerry,flesh,fleshed,fleshen,flesher,fleshly,fleshy,flet,fletch,flether,fleuret,fleury,flew,flewed,flewit,flews,flex,flexed,flexile,flexion,flexor,flexure,fley,flick,flicker,flicky,flidder,flier,fligger,flight,flighty,flimmer,flimp,flimsy,flinch,flinder,fling,flinger,flingy,flint,flinter,flinty,flioma,flip,flipe,flipper,flirt,flirter,flirty,flisk,flisky,flit,flitch,flite,fliting,flitter,flivver,flix,float,floater,floaty,flob,flobby,floc,floccus,flock,flocker,flocky,flocoon,flodge,floe,floey,flog,flogger,flokite,flong,flood,flooded,flooder,floody,floor,floorer,floozy,flop,flopper,floppy,flora,floral,floran,florate,floreal,florent,flores,floret,florid,florin,florist,floroon,florula,flory,flosh,floss,flosser,flossy,flot,flota,flotage,flotant,flotsam,flounce,flour,floury,flouse,flout,flouter,flow,flowage,flower,flowery,flowing,flown,flowoff,flu,fluate,fluavil,flub,flubdub,flucan,flue,flued,flueman,fluency,fluent,fluer,fluey,fluff,fluffer,fluffy,fluible,fluid,fluidal,fluidic,fluidly,fluke,fluked,flukily,fluking,fluky,flume,flummer,flummox,flump,flung,flunk,flunker,flunky,fluor,fluoran,fluoric,fluoryl,flurn,flurr,flurry,flush,flusher,flushy,flusk,flusker,fluster,flute,fluted,fluter,flutina,fluting,flutist,flutter,fluty,fluvial,flux,fluxer,fluxile,fluxion,fly,flyable,flyaway,flyback,flyball,flybane,flybelt,flyblow,flyboat,flyboy,flyer,flyflap,flying,flyleaf,flyless,flyman,flyness,flype,flytail,flytier,flytrap,flyway,flywort,foal,foaly,foam,foambow,foamer,foamily,foaming,foamy,fob,focal,focally,foci,focoids,focsle,focus,focuser,fod,fodda,fodder,foder,fodge,fodgel,fodient,foe,foehn,foeish,foeless,foelike,foeman,foeship,fog,fogbow,fogdog,fogdom,fogey,foggage,fogged,fogger,foggily,foggish,foggy,foghorn,fogle,fogless,fogman,fogo,fogon,fogou,fogram,fogus,fogy,fogydom,fogyish,fogyism,fohat,foible,foil,foiler,foiling,foining,foison,foist,foister,foisty,foiter,fold,foldage,folded,folden,folder,folding,foldure,foldy,fole,folia,foliage,folial,foliar,foliary,foliate,folie,folio,foliole,foliose,foliot,folious,folium,folk,folkmot,folksy,folkway,folky,folles,follis,follow,folly,foment,fomes,fomites,fondak,fondant,fondish,fondle,fondler,fondly,fondu,fondue,fonduk,fonly,fonnish,fono,fons,font,fontal,fonted,fontful,fontlet,foo,food,fooder,foodful,foody,fool,fooldom,foolery,fooless,fooling,foolish,fooner,fooster,foot,footage,footboy,footed,footer,footful,foothot,footing,footle,footler,footman,footpad,foots,footway,footy,foozle,foozler,fop,fopling,foppery,foppish,foppy,fopship,for,fora,forage,forager,foramen,forane,foray,forayer,forb,forbade,forbar,forbear,forbid,forbit,forbled,forblow,forbore,forbow,forby,force,forced,forceps,forcer,forche,forcing,ford,fordays,fording,fordo,fordone,fordy,fore,foreact,forearm,forebay,forecar,foreday,forefin,forefit,forego,foreign,forel,forelay,foreleg,foreman,forepad,forepaw,foreran,forerib,forerun,foresay,foresee,foreset,foresin,forest,foresty,foretop,foreuse,forever,forevow,forfar,forfare,forfars,forfeit,forfend,forge,forged,forger,forgery,forget,forgie,forging,forgive,forgo,forgoer,forgot,forgrow,forhoo,forhooy,forhow,forint,fork,forked,forker,forkful,forkman,forky,forleft,forlet,forlorn,form,formal,formant,format,formate,forme,formed,formee,formel,formene,former,formful,formic,formin,forming,formose,formula,formule,formy,formyl,fornent,fornix,forpet,forpine,forpit,forrad,forrard,forride,forrit,forrue,forsake,forset,forslow,fort,forte,forth,forthgo,forthy,forties,fortify,fortin,fortis,fortlet,fortune,forty,forum,forward,forwean,forwent,fosh,fosie,fossa,fossage,fossane,fosse,fossed,fossick,fossil,fossor,fossula,fossule,fostell,foster,fot,fotch,fother,fotmal,fotui,fou,foud,fouette,fougade,fought,foughty,foujdar,foul,foulage,foulard,fouler,fouling,foulish,foully,foumart,foun,found,founder,foundry,fount,four,fourble,fourche,fourer,fourre,fourth,foussa,foute,fouter,fouth,fovea,foveal,foveate,foveola,foveole,fow,fowk,fowl,fowler,fowlery,fowling,fox,foxbane,foxchop,foxer,foxery,foxfeet,foxfish,foxhole,foxily,foxing,foxish,foxlike,foxship,foxskin,foxtail,foxwood,foxy,foy,foyaite,foyboat,foyer,fozy,fra,frab,frabbit,frabous,fracas,frache,frack,fracted,frae,fraghan,fragile,fraid,fraik,frail,frailly,frailty,fraise,fraiser,frame,framea,framed,framer,framing,frammit,franc,franco,frank,franker,frankly,frantic,franzy,frap,frappe,frasco,frase,frasier,frass,frat,fratch,fratchy,frater,fratery,fratry,fraud,fraught,frawn,fraxin,fray,frayed,fraying,frayn,fraze,frazer,frazil,frazzle,freak,freaky,fream,freath,freck,frecken,frecket,freckle,freckly,free,freed,freedom,freeing,freeish,freely,freeman,freer,freet,freety,freeway,freeze,freezer,freight,freir,freit,freity,fremd,fremdly,frenal,frenate,frenum,frenzy,fresco,fresh,freshen,freshet,freshly,fresnel,fresno,fret,fretful,frett,frette,fretted,fretter,fretty,fretum,friable,friand,friar,friarly,friary,frib,fribble,fribby,fried,friend,frier,frieze,friezer,friezy,frig,frigate,friggle,fright,frighty,frigid,frijol,frike,frill,frilled,friller,frilly,frim,fringe,fringed,fringy,frisca,frisk,frisker,frisket,frisky,frison,frist,frisure,frit,frith,fritt,fritter,frivol,frixion,friz,frize,frizer,frizz,frizzer,frizzle,frizzly,frizzy,fro,frock,froe,frog,frogbit,frogeye,frogged,froggy,frogleg,froglet,frogman,froise,frolic,from,frond,fronded,front,frontad,frontal,fronted,fronter,froom,frore,frory,frosh,frost,frosted,froster,frosty,frot,froth,frother,frothy,frotton,frough,froughy,frounce,frow,froward,frower,frowl,frown,frowner,frowny,frowst,frowsty,frowy,frowze,frowzly,frowzy,froze,frozen,fructed,frugal,fruggan,fruit,fruited,fruiter,fruity,frump,frumple,frumpy,frush,frustum,frutify,fry,fryer,fu,fub,fubby,fubsy,fucate,fuchsin,fuci,fucoid,fucosan,fucose,fucous,fucus,fud,fuddle,fuddler,fuder,fudge,fudger,fudgy,fuel,fueler,fuerte,fuff,fuffy,fugal,fugally,fuggy,fugient,fugle,fugler,fugu,fugue,fuguist,fuidhir,fuji,fulcral,fulcrum,fulfill,fulgent,fulgid,fulgide,fulgor,fulham,fulk,full,fullam,fuller,fullery,fulling,fullish,fullom,fully,fulmar,fulmine,fulsome,fulth,fulvene,fulvid,fulvous,fulwa,fulyie,fulzie,fum,fumado,fumage,fumaric,fumaryl,fumble,fumbler,fume,fumer,fumet,fumette,fumily,fuming,fumose,fumous,fumy,fun,fund,fundal,funded,funder,fundi,fundic,funds,fundus,funeral,funest,fungal,fungate,fungi,fungian,fungic,fungin,fungo,fungoid,fungose,fungous,fungus,fungusy,funicle,funis,funk,funker,funky,funnel,funnily,funny,funori,funt,fur,fural,furan,furazan,furbish,furca,furcal,furcate,furcula,furdel,furfur,furiant,furied,furify,furil,furilic,furiosa,furioso,furious,furison,furl,furler,furless,furlong,furnace,furnage,furner,furnish,furoic,furoid,furoin,furole,furor,furore,furphy,furred,furrier,furrily,furring,furrow,furrowy,furry,further,furtive,fury,furyl,furze,furzed,furzery,furzy,fusain,fusate,fusc,fuscin,fuscous,fuse,fused,fusee,fusht,fusible,fusibly,fusil,fusilly,fusion,fusoid,fuss,fusser,fussify,fussily,fussock,fussy,fust,fustee,fustet,fustian,fustic,fustily,fustin,fustle,fusty,fusuma,fusure,fut,futchel,fute,futhorc,futile,futtock,futural,future,futuric,futwa,fuye,fuze,fuzz,fuzzily,fuzzy,fyke,fylfot,fyrd,g,ga,gab,gabbard,gabber,gabble,gabbler,gabbro,gabby,gabelle,gabgab,gabi,gabion,gable,gablet,gablock,gaby,gad,gadbee,gadbush,gadded,gadder,gaddi,gadding,gaddish,gade,gadfly,gadge,gadger,gadget,gadid,gadling,gadman,gadoid,gadroon,gadsman,gaduin,gadwall,gaen,gaet,gaff,gaffe,gaffer,gaffle,gag,gagate,gage,gagee,gageite,gager,gagger,gaggery,gaggle,gaggler,gagman,gagor,gagroot,gahnite,gaiassa,gaiety,gaily,gain,gainage,gaine,gainer,gainful,gaining,gainly,gains,gainsay,gainset,gainst,gair,gait,gaited,gaiter,gaiting,gaize,gaj,gal,gala,galah,galanas,galanga,galant,galany,galatea,galaxy,galban,gale,galea,galeage,galeate,galee,galeeny,galeid,galena,galenic,galeoid,galera,galerum,galerus,galet,galey,galgal,gali,galilee,galiot,galipot,gall,galla,gallah,gallant,gallate,galled,gallein,galleon,galler,gallery,gallet,galley,gallfly,gallic,galline,galling,gallium,gallnut,gallon,galloon,gallop,gallous,gallows,gally,galoot,galop,galore,galosh,galp,galt,galumph,galuth,galyac,galyak,gam,gamahe,gamasid,gamb,gamba,gambade,gambado,gambang,gambeer,gambet,gambia,gambier,gambist,gambit,gamble,gambler,gamboge,gambol,gambrel,game,gamebag,gameful,gamely,gamene,gametal,gamete,gametic,gamic,gamily,gamin,gaming,gamma,gammer,gammick,gammock,gammon,gammy,gamont,gamori,gamp,gamut,gamy,gan,ganam,ganch,gander,gandul,gandum,gane,ganef,gang,ganga,gangan,gangava,gangdom,gange,ganger,ganging,gangism,ganglia,gangly,gangman,gangrel,gangue,gangway,ganja,ganner,gannet,ganoid,ganoin,ganosis,gansel,gansey,gansy,gant,ganta,gantang,gantlet,ganton,gantry,gantsl,ganza,ganzie,gaol,gaoler,gap,gapa,gape,gaper,gapes,gaping,gapo,gappy,gapy,gar,gara,garad,garage,garance,garava,garawi,garb,garbage,garbel,garbell,garbill,garble,garbler,garboil,garbure,garce,gardant,gardeen,garden,gardeny,gardy,gare,gareh,garetta,garfish,garget,gargety,gargle,gargol,garial,gariba,garish,garland,garle,garlic,garment,garn,garnel,garner,garnet,garnets,garnett,garnetz,garnice,garniec,garnish,garoo,garrafa,garran,garret,garrot,garrote,garrupa,garse,garsil,garston,garten,garter,garth,garum,garvey,garvock,gas,gasbag,gaseity,gaseous,gash,gashes,gashful,gashly,gashy,gasify,gasket,gaskin,gasking,gaskins,gasless,gaslit,gaslock,gasman,gasp,gasper,gasping,gaspy,gasser,gassing,gassy,gast,gaster,gastral,gastric,gastrin,gat,gata,gatch,gate,gateado,gateage,gated,gateman,gater,gateway,gather,gating,gator,gatter,gau,gaub,gauby,gauche,gaud,gaudery,gaudful,gaudily,gaudy,gaufer,gauffer,gauffre,gaufre,gauge,gauger,gauging,gaulin,gault,gaulter,gaum,gaumish,gaumy,gaun,gaunt,gaunted,gauntly,gauntry,gaunty,gaup,gaupus,gaur,gaus,gauss,gauster,gaut,gauze,gauzily,gauzy,gavall,gave,gavel,gaveler,gavial,gavotte,gavyuti,gaw,gawby,gawcie,gawk,gawkily,gawkish,gawky,gawm,gawn,gawney,gawsie,gay,gayal,gayatri,gaybine,gaycat,gayish,gayment,gayness,gaysome,gayyou,gaz,gazabo,gaze,gazebo,gazee,gazel,gazelle,gazer,gazette,gazi,gazing,gazon,gazy,ge,geal,gean,gear,gearbox,geared,gearing,gearman,gearset,gease,geason,geat,gebang,gebanga,gebbie,gebur,geck,gecko,geckoid,ged,gedackt,gedder,gedeckt,gedrite,gee,geebong,geebung,geejee,geek,geelbec,geerah,geest,geet,geezer,gegg,geggee,gegger,geggery,gein,geira,geisha,geison,geitjie,gel,gelable,gelada,gelatin,geld,geldant,gelder,gelding,gelid,gelidly,gelilah,gell,gelly,gelong,gelose,gelosin,gelt,gem,gemauve,gemel,gemeled,gemless,gemlike,gemma,gemmae,gemmate,gemmer,gemmily,gemmoid,gemmula,gemmule,gemmy,gemot,gemsbok,gemul,gemuti,gemwork,gen,gena,genal,genapp,genarch,gender,gene,genear,geneat,geneki,genep,genera,general,generic,genesic,genesis,genet,genetic,geneva,genial,genian,genic,genie,genii,genin,genion,genip,genipa,genipap,genista,genital,genitor,genius,genizah,genoese,genom,genome,genomic,genos,genre,genro,gens,genson,gent,genteel,gentes,gentian,gentile,gentle,gently,gentman,gentry,genty,genu,genua,genual,genuine,genus,genys,geo,geobios,geodal,geode,geodesy,geodete,geodic,geodist,geoduck,geoform,geogeny,geogony,geoid,geoidal,geology,geomaly,geomant,geomyid,geonoma,geopony,georama,georgic,geosid,geoside,geotaxy,geotic,geoty,ger,gerah,geranic,geranyl,gerate,gerated,geratic,geraty,gerb,gerbe,gerbil,gercrow,gerefa,gerenda,gerent,gerenuk,gerim,gerip,germ,germal,german,germane,germen,germin,germina,germing,germon,germule,germy,gernitz,geront,geronto,gers,gersum,gerund,gerusia,gervao,gesith,gesning,gesso,gest,gestant,gestate,geste,gested,gesten,gestic,gestion,gesture,get,geta,getah,getaway,gether,getling,getter,getting,getup,geum,gewgaw,gewgawy,gey,geyan,geyser,gez,ghafir,ghaist,ghalva,gharial,gharnao,gharry,ghastly,ghat,ghatti,ghatwal,ghazi,ghazism,ghebeta,ghee,gheleem,gherkin,ghetti,ghetto,ghizite,ghoom,ghost,ghoster,ghostly,ghosty,ghoul,ghrush,ghurry,giant,giantly,giantry,giardia,giarra,giarre,gib,gibaro,gibbals,gibbed,gibber,gibbet,gibbles,gibbon,gibbose,gibbous,gibbus,gibby,gibe,gibel,giber,gibing,gibleh,giblet,giblets,gibus,gid,giddap,giddea,giddify,giddily,giddy,gidgee,gie,gied,gien,gif,gift,gifted,giftie,gig,gigback,gigeria,gigful,gigger,giggish,giggit,giggle,giggler,giggly,giglet,giglot,gigman,gignate,gigolo,gigot,gigsman,gigster,gigtree,gigunu,gilbert,gild,gilded,gilden,gilder,gilding,gilguy,gilia,gilim,gill,gilled,giller,gillie,gilling,gilly,gilo,gilpy,gilse,gilt,giltcup,gim,gimbal,gimble,gimel,gimlet,gimlety,gimmal,gimmer,gimmick,gimp,gimped,gimper,gimping,gin,ging,ginger,gingery,gingham,gingili,gingiva,gink,ginkgo,ginned,ginner,ginners,ginnery,ginney,ginning,ginnle,ginny,ginseng,ginward,gio,gip,gipon,gipper,gipser,gipsire,giraffe,girasol,girba,gird,girder,girding,girdle,girdler,girl,girleen,girlery,girlie,girling,girlish,girlism,girly,girn,girny,giro,girr,girse,girsh,girsle,girt,girth,gisarme,gish,gisla,gisler,gist,git,gitalin,gith,gitonin,gitoxin,gittern,gittith,give,given,giver,givey,giving,gizz,gizzard,gizzen,gizzern,glace,glaceed,glacial,glacier,glacis,glack,glad,gladden,gladdon,gladdy,glade,gladeye,gladful,gladify,gladii,gladius,gladly,glady,glaga,glaieul,glaik,glaiket,glair,glairy,glaive,glaived,glaked,glaky,glam,glamour,glance,glancer,gland,glandes,glans,glar,glare,glarily,glaring,glarry,glary,glashan,glass,glassen,glasser,glasses,glassie,glassy,glaucin,glaum,glaur,glaury,glaver,glaze,glazed,glazen,glazer,glazier,glazily,glazing,glazy,gleam,gleamy,glean,gleaner,gleary,gleba,glebal,glebe,glebous,glede,gledy,glee,gleed,gleeful,gleek,gleeman,gleet,gleety,gleg,glegly,glen,glenoid,glent,gleyde,glia,gliadin,glial,glib,glibly,glidder,glide,glider,gliding,gliff,glime,glimmer,glimpse,glink,glint,glioma,gliosa,gliosis,glirine,glisk,glisky,glisten,glister,glitter,gloam,gloat,gloater,global,globate,globe,globed,globin,globoid,globose,globous,globule,globy,glochid,glochis,gloea,gloeal,glom,glome,glommox,glomus,glonoin,gloom,gloomth,gloomy,glop,gloppen,glor,glore,glorify,glory,gloss,glossa,glossal,glossed,glosser,glossic,glossy,glost,glottal,glottic,glottid,glottis,glout,glove,glover,glovey,gloving,glow,glower,glowfly,glowing,gloy,gloze,glozing,glub,glucase,glucid,glucide,glucina,glucine,gluck,glucose,glue,glued,gluepot,gluer,gluey,glug,gluish,glum,gluma,glumal,glume,glumly,glummy,glumose,glump,glumpy,glunch,glusid,gluside,glut,glutch,gluteal,gluten,gluteus,glutin,glutoid,glutose,glutter,glutton,glycid,glycide,glycine,glycol,glycose,glycyl,glyoxal,glyoxim,glyoxyl,glyph,glyphic,glyptic,glyster,gnabble,gnar,gnarl,gnarled,gnarly,gnash,gnat,gnathal,gnathic,gnatter,gnatty,gnaw,gnawer,gnawing,gnawn,gneiss,gneissy,gnome,gnomed,gnomic,gnomide,gnomish,gnomist,gnomon,gnosis,gnostic,gnu,go,goa,goad,goaf,goal,goalage,goalee,goalie,goanna,goat,goatee,goateed,goatish,goatly,goaty,goave,gob,goback,goban,gobang,gobbe,gobber,gobbet,gobbin,gobbing,gobble,gobbler,gobby,gobelin,gobi,gobiid,gobioid,goblet,goblin,gobline,gobo,gobony,goburra,goby,gocart,god,goddard,godded,goddess,goddize,gode,godet,godhead,godhood,godkin,godless,godlet,godlike,godlily,godling,godly,godown,godpapa,godsend,godship,godson,godwit,goeduck,goel,goelism,goer,goes,goetia,goetic,goety,goff,goffer,goffle,gog,gogga,goggan,goggle,goggled,goggler,goggly,goglet,gogo,goi,going,goitcho,goiter,goitral,gol,gola,golach,goladar,gold,goldbug,goldcup,golden,golder,goldie,goldin,goldish,goldtit,goldy,golee,golem,golf,golfdom,golfer,goli,goliard,goliath,golland,gollar,golly,goloe,golpe,gomari,gomart,gomavel,gombay,gombeen,gomer,gomeral,gomlah,gomuti,gon,gonad,gonadal,gonadic,gonagra,gonakie,gonal,gonapod,gondang,gondite,gondola,gone,goner,gong,gongman,gonia,goniac,gonial,goniale,gonid,gonidia,gonidic,gonimic,gonion,gonitis,gonium,gonne,gony,gonys,goo,goober,good,gooding,goodish,goodly,goodman,goods,goody,goof,goofer,goofily,goofy,googly,googol,googul,gook,gool,goolah,gools,gooma,goon,goondie,goonie,goose,goosery,goosish,goosy,gopher,gopura,gor,gora,goracco,goral,goran,gorb,gorbal,gorbet,gorble,gorce,gorcock,gorcrow,gore,gorer,gorevan,gorfly,gorge,gorged,gorger,gorget,gorglin,gorhen,goric,gorilla,gorily,goring,gorlin,gorlois,gormaw,gormed,gorra,gorraf,gorry,gorse,gorsedd,gorsy,gory,gos,gosain,goschen,gosh,goshawk,goslet,gosling,gosmore,gospel,gosport,gossan,gossard,gossip,gossipy,gossoon,gossy,got,gotch,gote,gothite,gotra,gotraja,gotten,gouaree,gouge,gouger,goujon,goulash,goumi,goup,gourami,gourd,gourde,gourdy,gourmet,gousty,gout,goutify,goutily,goutish,goutte,gouty,gove,govern,gowan,gowdnie,gowf,gowfer,gowk,gowked,gowkit,gowl,gown,gownlet,gowpen,goy,goyim,goyin,goyle,gozell,gozzard,gra,grab,grabber,grabble,graben,grace,gracer,gracile,grackle,grad,gradal,gradate,graddan,grade,graded,gradely,grader,gradin,gradine,grading,gradual,gradus,graff,graffer,graft,grafted,grafter,graham,grail,grailer,grain,grained,grainer,grainy,graip,graisse,graith,grallic,gram,grama,grame,grammar,gramme,gramp,grampa,grampus,granada,granage,granary,granate,granch,grand,grandam,grandee,grandly,grandma,grandpa,grane,grange,granger,granite,grank,grannom,granny,grano,granose,grant,grantee,granter,grantor,granula,granule,granza,grape,graped,grapery,graph,graphic,graphy,graping,grapnel,grappa,grapple,grapy,grasp,grasper,grass,grassed,grasser,grasset,grassy,grat,grate,grater,grather,gratify,grating,gratis,gratten,graupel,grave,graved,gravel,gravely,graven,graver,gravic,gravid,graving,gravity,gravure,gravy,grawls,gray,grayfly,grayish,graylag,grayly,graze,grazer,grazier,grazing,grease,greaser,greasy,great,greaten,greater,greatly,greave,greaved,greaves,grebe,grece,gree,greed,greedy,green,greener,greeney,greenly,greenth,greenuk,greeny,greet,greeter,gregal,gregale,grege,greggle,grego,greige,grein,greisen,gremial,gremlin,grenade,greund,grew,grey,greyly,gribble,grice,grid,griddle,gride,griece,grieced,grief,grieve,grieved,griever,griff,griffe,griffin,griffon,grift,grifter,grig,grignet,grigri,grike,grill,grille,grilled,griller,grilse,grim,grimace,grime,grimful,grimily,grimly,grimme,grimp,grimy,grin,grinch,grind,grinder,grindle,gringo,grinner,grinny,grip,gripe,griper,griping,gripman,grippal,grippe,gripper,gripple,grippy,gripy,gris,grisard,griskin,grisly,grison,grist,grister,gristle,gristly,gristy,grit,grith,grits,gritten,gritter,grittle,gritty,grivet,grivna,grizzle,grizzly,groan,groaner,groat,groats,grobian,grocer,grocery,groff,grog,groggy,grogram,groin,groined,grommet,groom,groomer,groomy,groop,groose,groot,grooty,groove,groover,groovy,grope,groper,groping,gropple,gros,groser,groset,gross,grossen,grosser,grossly,grosso,grosz,groszy,grot,grotto,grouch,grouchy,grouf,grough,ground,grounds,groundy,group,grouped,grouper,grouse,grouser,grousy,grout,grouter,grouts,grouty,grouze,grove,groved,grovel,grovy,grow,growan,growed,grower,growing,growl,growler,growly,grown,grownup,growse,growth,growthy,grozart,grozet,grr,grub,grubbed,grubber,grubby,grubs,grudge,grudger,grue,gruel,grueler,gruelly,gruff,gruffly,gruffs,gruffy,grufted,grugru,gruine,grum,grumble,grumbly,grume,grumly,grummel,grummet,grumose,grumous,grump,grumph,grumphy,grumpy,grun,grundy,grunion,grunt,grunter,gruntle,grush,grushie,gruss,grutch,grutten,gryde,grylli,gryllid,gryllos,gryllus,grysbok,guaba,guacimo,guacin,guaco,guaiac,guaiol,guaka,guama,guan,guana,guanaco,guanase,guanay,guango,guanine,guanize,guano,guanyl,guao,guapena,guar,guara,guarabu,guarana,guarani,guard,guarded,guarder,guardo,guariba,guarri,guasa,guava,guavina,guayaba,guayabi,guayabo,guayule,guaza,gubbo,gucki,gud,gudame,guddle,gude,gudge,gudgeon,gudget,gudok,gue,guebucu,guemal,guenepe,guenon,guepard,guerdon,guereza,guess,guesser,guest,guesten,guester,gufa,guff,guffaw,guffer,guffin,guffy,gugal,guggle,gugglet,guglet,guglia,guglio,gugu,guhr,guib,guiba,guidage,guide,guider,guidman,guidon,guige,guignol,guijo,guild,guilder,guildic,guildry,guile,guilery,guilt,guilty,guily,guimpe,guinea,guipure,guisard,guise,guiser,guising,guitar,gul,gula,gulae,gulaman,gular,gularis,gulch,gulden,gule,gules,gulf,gulfy,gulgul,gulix,gull,gullery,gullet,gullion,gullish,gully,gulonic,gulose,gulp,gulper,gulpin,gulping,gulpy,gulsach,gum,gumbo,gumboil,gumby,gumdrop,gumihan,gumless,gumlike,gumly,gumma,gummage,gummata,gummed,gummer,gumming,gummite,gummose,gummous,gummy,gump,gumpus,gumshoe,gumweed,gumwood,gun,guna,gunate,gunboat,gundi,gundy,gunebo,gunfire,gunge,gunite,gunj,gunk,gunl,gunless,gunlock,gunman,gunnage,gunne,gunnel,gunner,gunnery,gunnies,gunning,gunnung,gunny,gunong,gunplay,gunrack,gunsel,gunshop,gunshot,gunsman,gunster,gunter,gunwale,gunyah,gunyang,gunyeh,gup,guppy,gur,gurdle,gurge,gurgeon,gurges,gurgle,gurglet,gurgly,gurjun,gurk,gurl,gurly,gurnard,gurnet,gurniad,gurr,gurrah,gurry,gurt,guru,gush,gusher,gushet,gushily,gushing,gushy,gusla,gusle,guss,gusset,gussie,gust,gustful,gustily,gusto,gusty,gut,gutless,gutlike,gutling,gutt,gutta,guttate,gutte,gutter,guttery,gutti,guttide,guttie,guttle,guttler,guttula,guttule,guttus,gutty,gutweed,gutwise,gutwort,guy,guydom,guyer,guz,guze,guzzle,guzzler,gwag,gweduc,gweed,gweeon,gwely,gwine,gwyniad,gyle,gym,gymel,gymnast,gymnic,gymnics,gymnite,gymnure,gympie,gyn,gyne,gynecic,gynic,gynics,gyp,gype,gypper,gyps,gypsine,gypsite,gypsous,gypster,gypsum,gypsy,gypsyfy,gypsyry,gyral,gyrally,gyrant,gyrate,gyrator,gyre,gyrene,gyri,gyric,gyrinid,gyro,gyrocar,gyroma,gyron,gyronny,gyrose,gyrous,gyrus,gyte,gytling,gyve,h,ha,haab,haaf,habble,habeas,habena,habenal,habenar,habile,habille,habit,habitan,habitat,habited,habitue,habitus,habnab,haboob,habu,habutai,hache,hachure,hack,hackbut,hacked,hackee,hacker,hackery,hackin,hacking,hackle,hackler,hacklog,hackly,hackman,hackney,hacksaw,hacky,had,hadbot,hadden,haddie,haddo,haddock,hade,hading,hadj,hadji,hadland,hadrome,haec,haem,haemony,haet,haff,haffet,haffle,hafiz,hafnium,hafnyl,haft,hafter,hag,hagboat,hagborn,hagbush,hagdon,hageen,hagfish,haggada,haggard,hagged,hagger,haggis,haggish,haggle,haggler,haggly,haggy,hagi,hagia,haglet,haglike,haglin,hagride,hagrope,hagseed,hagship,hagweed,hagworm,hah,haik,haikai,haikal,haikwan,hail,hailer,hailse,haily,hain,haine,hair,haircut,hairdo,haire,haired,hairen,hairif,hairlet,hairpin,hairup,hairy,haje,hajib,hajilij,hak,hakam,hakdar,hake,hakeem,hakim,hako,haku,hala,halakah,halakic,halal,halberd,halbert,halch,halcyon,hale,halebi,haler,halerz,half,halfer,halfman,halfway,halibiu,halibut,halide,halidom,halite,halitus,hall,hallage,hallah,hallan,hallel,hallex,halling,hallman,halloo,hallow,hallux,hallway,halma,halo,halogen,haloid,hals,halse,halsen,halt,halter,halting,halurgy,halutz,halvans,halve,halved,halver,halves,halyard,ham,hamal,hamald,hamate,hamated,hamatum,hamble,hame,hameil,hamel,hamfat,hami,hamlah,hamlet,hammada,hammam,hammer,hammock,hammy,hamose,hamous,hamper,hamsa,hamster,hamular,hamule,hamulus,hamus,hamza,han,hanaper,hanbury,hance,hanced,hanch,hand,handbag,handbow,handcar,handed,hander,handful,handgun,handily,handle,handled,handler,handout,handsaw,handsel,handset,handy,hangar,hangby,hangdog,hange,hangee,hanger,hangie,hanging,hangle,hangman,hangout,hangul,hanif,hank,hanker,hankie,hankle,hanky,hanna,hansa,hanse,hansel,hansom,hant,hantle,hao,haole,haoma,haori,hap,hapless,haplite,haploid,haploma,haplont,haply,happen,happier,happify,happily,happing,happy,hapten,haptene,haptere,haptic,haptics,hapu,hapuku,harass,haratch,harbi,harbor,hard,harden,harder,hardily,hardim,hardish,hardly,hardock,hardpan,hardy,hare,harebur,harelip,harem,harfang,haricot,harish,hark,harka,harl,harling,harlock,harlot,harm,harmal,harmala,harman,harmel,harmer,harmful,harmine,harmony,harmost,harn,harness,harnpan,harp,harpago,harper,harpier,harpist,harpoon,harpula,harr,harrier,harrow,harry,harsh,harshen,harshly,hart,hartal,hartin,hartite,harvest,hasan,hash,hashab,hasher,hashish,hashy,hask,hasky,haslet,haslock,hasp,hassar,hassel,hassle,hassock,hasta,hastate,hastati,haste,hasten,haster,hastily,hastish,hastler,hasty,hat,hatable,hatband,hatbox,hatbrim,hatch,hatchel,hatcher,hatchet,hate,hateful,hater,hatful,hath,hathi,hatless,hatlike,hatpin,hatrack,hatrail,hatred,hatress,hatt,hatted,hatter,hattery,hatting,hattock,hatty,hau,hauberk,haugh,haught,haughty,haul,haulage,hauld,hauler,haulier,haulm,haulmy,haunch,haunchy,haunt,haunter,haunty,hause,hausen,hausse,hautboy,hauteur,havage,have,haveage,havel,haven,havener,havenet,havent,haver,haverel,haverer,havers,havier,havoc,haw,hawbuck,hawer,hawk,hawkbit,hawked,hawker,hawkery,hawkie,hawking,hawkish,hawknut,hawky,hawm,hawok,hawse,hawser,hay,haya,hayband,haybird,haybote,haycap,haycart,haycock,hayey,hayfork,haylift,hayloft,haymow,hayrack,hayrake,hayrick,hayseed,haysel,haysuck,haytime,hayward,hayweed,haywire,hayz,hazard,haze,hazel,hazeled,hazelly,hazen,hazer,hazily,hazing,hazle,hazy,hazzan,he,head,headcap,headed,header,headful,headily,heading,headman,headset,headway,heady,heaf,heal,heald,healder,healer,healful,healing,health,healthy,heap,heaper,heaps,heapy,hear,hearer,hearing,hearken,hearsay,hearse,hearst,heart,hearted,hearten,hearth,heartly,hearts,hearty,heat,heater,heatful,heath,heathen,heather,heathy,heating,heaume,heaumer,heave,heaven,heavens,heaver,heavies,heavily,heaving,heavity,heavy,hebamic,hebenon,hebete,hebetic,hech,heck,heckle,heckler,hectare,hecte,hectic,hector,heddle,heddler,hedebo,heder,hederic,hederin,hedge,hedger,hedging,hedgy,hedonic,heed,heeder,heedful,heedily,heedy,heehaw,heel,heelcap,heeled,heeler,heeltap,heer,heeze,heezie,heezy,heft,hefter,heftily,hefty,hegari,hegemon,hegira,hegumen,hei,heiau,heifer,heigh,height,heii,heimin,heinous,heir,heirdom,heiress,heitiki,hekteus,helbeh,helcoid,helder,hele,helenin,heliast,helical,heliced,helices,helicin,helicon,helide,heling,helio,helioid,helium,helix,hell,hellbox,hellcat,helldog,heller,helleri,hellhag,hellier,hellion,hellish,hello,helluo,helly,helm,helmage,helmed,helmet,helodes,heloe,heloma,helonin,helosis,helotry,help,helper,helpful,helping,helply,helve,helvell,helver,helvite,hem,hemad,hemal,hemapod,hemase,hematal,hematic,hematid,hematin,heme,hemen,hemera,hemiamb,hemic,hemin,hemina,hemine,heminee,hemiope,hemipic,heml,hemlock,hemmel,hemmer,hemocry,hemoid,hemol,hemopod,hemp,hempen,hempy,hen,henad,henbane,henbill,henbit,hence,hencoop,hencote,hend,hendly,henfish,henism,henlike,henna,hennery,hennin,hennish,henny,henotic,henpeck,henpen,henry,hent,henter,henware,henwife,henwise,henyard,hep,hepar,heparin,hepatic,hepcat,heppen,hepper,heptace,heptad,heptal,heptane,heptene,heptine,heptite,heptoic,heptose,heptyl,heptyne,her,herald,herb,herbage,herbal,herbane,herbary,herbish,herbist,herblet,herbman,herbose,herbous,herby,herd,herdboy,herder,herdic,herding,here,hereat,hereby,herein,herem,hereof,hereon,heresy,heretic,hereto,herile,heriot,heritor,herl,herling,herma,hermaic,hermit,hern,hernani,hernant,herne,hernia,hernial,hero,heroess,heroic,heroid,heroify,heroin,heroine,heroism,heroize,heron,heroner,heronry,herpes,herring,hers,herse,hersed,herself,hership,hersir,hertz,hessite,hest,hestern,het,hetaera,hetaery,heteric,hetero,hething,hetman,hetter,heuau,heugh,heumite,hevi,hew,hewable,hewel,hewer,hewhall,hewn,hewt,hex,hexa,hexace,hexacid,hexact,hexad,hexadic,hexagon,hexagyn,hexane,hexaped,hexapla,hexapod,hexarch,hexene,hexer,hexerei,hexeris,hexine,hexis,hexitol,hexode,hexogen,hexoic,hexone,hexonic,hexosan,hexose,hexyl,hexylic,hexyne,hey,heyday,hi,hia,hiant,hiatal,hiate,hiation,hiatus,hibbin,hic,hicatee,hiccup,hick,hickey,hickory,hidable,hidage,hidalgo,hidated,hidden,hide,hided,hideous,hider,hidling,hie,hieder,hield,hiemal,hieron,hieros,higdon,higgle,higgler,high,highboy,higher,highest,highish,highly,highman,hight,hightop,highway,higuero,hijack,hike,hiker,hilch,hilding,hill,hiller,hillet,hillman,hillock,hilltop,hilly,hilsa,hilt,hilum,hilus,him,himp,himself,himward,hin,hinau,hinch,hind,hinder,hing,hinge,hinger,hingle,hinney,hinny,hinoid,hinoki,hint,hinter,hiodont,hip,hipbone,hipe,hiper,hiphalt,hipless,hipmold,hipped,hippen,hippian,hippic,hipping,hippish,hipple,hippo,hippoid,hippus,hippy,hipshot,hipwort,hirable,hircine,hire,hired,hireman,hirer,hirmos,hiro,hirple,hirse,hirsel,hirsle,hirsute,his,hish,hisn,hispid,hiss,hisser,hissing,hist,histie,histoid,histon,histone,history,histrio,hit,hitch,hitcher,hitchy,hithe,hither,hitless,hitter,hive,hiver,hives,hizz,ho,hoar,hoard,hoarder,hoarily,hoarish,hoarse,hoarsen,hoary,hoast,hoatzin,hoax,hoaxee,hoaxer,hob,hobber,hobbet,hobbil,hobble,hobbler,hobbly,hobby,hoblike,hobnail,hobnob,hobo,hoboism,hocco,hock,hocker,hocket,hockey,hocky,hocus,hod,hodden,hodder,hoddle,hoddy,hodful,hodman,hoe,hoecake,hoedown,hoeful,hoer,hog,hoga,hogan,hogback,hogbush,hogfish,hogged,hogger,hoggery,hogget,hoggie,hoggin,hoggish,hoggism,hoggy,hogherd,hoghide,hoghood,hoglike,hogling,hogmace,hognose,hognut,hogpen,hogship,hogskin,hogsty,hogward,hogwash,hogweed,hogwort,hogyard,hoi,hoick,hoin,hoise,hoist,hoister,hoit,hoju,hokey,hokum,holard,holcad,hold,holdall,holden,holder,holding,holdout,holdup,hole,holeman,holer,holey,holia,holiday,holily,holing,holism,holl,holla,holler,hollin,hollo,hollock,hollong,hollow,holly,holm,holmia,holmic,holmium,holmos,holour,holster,holt,holy,holyday,homage,homager,home,homelet,homely,homelyn,homeoid,homer,homey,homily,hominal,hominid,hominy,homish,homo,homodox,homogen,homonym,homrai,homy,honda,hondo,hone,honest,honesty,honey,honeyed,hong,honied,honily,honk,honker,honor,honoree,honorer,hontish,hontous,hooch,hood,hoodcap,hooded,hoodful,hoodie,hoodlum,hoodman,hoodoo,hoodshy,hooey,hoof,hoofed,hoofer,hoofish,hooflet,hoofrot,hoofs,hoofy,hook,hookah,hooked,hooker,hookers,hookish,hooklet,hookman,hooktip,hookum,hookup,hooky,hoolock,hooly,hoon,hoop,hooped,hooper,hooping,hoopla,hoople,hoopman,hoopoe,hoose,hoosh,hoot,hootay,hooter,hoove,hooven,hoovey,hop,hopbine,hopbush,hope,hoped,hopeful,hopeite,hoper,hopi,hoplite,hopoff,hopped,hopper,hoppers,hoppet,hoppity,hopple,hoppy,hoptoad,hopvine,hopyard,hora,horal,horary,hordary,horde,hordein,horizon,horme,hormic,hormigo,hormion,hormist,hormone,hormos,horn,horned,horner,hornet,hornety,hornful,hornify,hornily,horning,hornish,hornist,hornito,hornlet,horntip,horny,horrent,horreum,horrid,horrify,horror,horse,horser,horsify,horsily,horsing,horst,horsy,hortite,hory,hosanna,hose,hosed,hosel,hoseman,hosier,hosiery,hospice,host,hostage,hostel,hoster,hostess,hostie,hostile,hosting,hostler,hostly,hostry,hot,hotbed,hotbox,hotch,hotel,hotfoot,hothead,hoti,hotly,hotness,hotspur,hotter,hottery,hottish,houbara,hough,hougher,hounce,hound,hounder,houndy,hour,hourful,houri,hourly,housage,housal,house,housel,houser,housing,housty,housy,houtou,houvari,hove,hovel,hoveler,hoven,hover,hoverer,hoverly,how,howadji,howbeit,howdah,howder,howdie,howdy,howe,howel,however,howff,howish,howk,howkit,howl,howler,howlet,howling,howlite,howso,hox,hoy,hoyden,hoyle,hoyman,huaca,huaco,huarizo,hub,hubb,hubba,hubber,hubble,hubbly,hubbub,hubby,hubshi,huchen,hucho,huck,huckle,hud,huddle,huddler,huddock,huddup,hue,hued,hueful,hueless,huer,huff,huffier,huffily,huffish,huffle,huffler,huffy,hug,huge,hugely,hugeous,hugger,hugging,huggle,hugsome,huh,huia,huipil,huitain,huke,hula,huldee,hulk,hulkage,hulking,hulky,hull,huller,hullock,hulloo,hulsite,hulster,hulu,hulver,hum,human,humane,humanly,humate,humble,humbler,humblie,humbly,humbo,humbug,humbuzz,humdrum,humect,humeral,humeri,humerus,humet,humetty,humhum,humic,humid,humidly,humidor,humific,humify,humin,humite,humlie,hummel,hummer,hummie,humming,hummock,humor,humoral,humous,hump,humped,humph,humpty,humpy,humus,hunch,hunchet,hunchy,hundi,hundred,hung,hunger,hungry,hunh,hunk,hunker,hunkers,hunkies,hunks,hunky,hunt,hunting,hup,hura,hurdies,hurdis,hurdle,hurdler,hurds,hure,hureek,hurgila,hurkle,hurl,hurled,hurler,hurley,hurling,hurlock,hurly,huron,hurr,hurrah,hurried,hurrier,hurrock,hurroo,hurry,hurst,hurt,hurted,hurter,hurtful,hurting,hurtle,hurty,husband,huse,hush,hushaby,husheen,hushel,husher,hushful,hushing,hushion,husho,husk,husked,husker,huskily,husking,husky,huso,huspil,huss,hussar,hussy,husting,hustle,hustler,hut,hutch,hutcher,hutchet,huthold,hutia,hutlet,hutment,huvelyk,huzoor,huzz,huzza,huzzard,hyaena,hyaline,hyalite,hyaloid,hybosis,hybrid,hydatid,hydnoid,hydrant,hydrate,hydrazo,hydria,hydric,hydride,hydro,hydroa,hydroid,hydrol,hydrome,hydrone,hydrops,hydrous,hydroxy,hydrula,hyena,hyenic,hyenine,hyenoid,hyetal,hygeist,hygiene,hygric,hygrine,hygroma,hying,hyke,hyle,hyleg,hylic,hylism,hylist,hyloid,hymen,hymenal,hymenic,hymn,hymnal,hymnary,hymner,hymnic,hymnist,hymnode,hymnody,hynde,hyne,hyoid,hyoidal,hyoidan,hyoides,hyp,hypate,hypaton,hyper,hypha,hyphal,hyphema,hyphen,hypho,hypnody,hypnoid,hypnone,hypo,hypogee,hypoid,hyponym,hypopus,hyporit,hyppish,hypural,hyraces,hyracid,hyrax,hyson,hyssop,i,iamb,iambi,iambic,iambist,iambize,iambus,iao,iatric,iba,iberite,ibex,ibices,ibid,ibidine,ibis,ibolium,ibota,icaco,ice,iceberg,iceboat,icebone,icebox,icecap,iced,icefall,icefish,iceland,iceleaf,iceless,icelike,iceman,iceroot,icework,ich,ichnite,icho,ichor,ichthus,ichu,icica,icicle,icicled,icily,iciness,icing,icon,iconic,iconism,icosian,icotype,icteric,icterus,ictic,ictuate,ictus,icy,id,idalia,idant,iddat,ide,idea,ideaed,ideaful,ideal,ideally,ideate,ideist,identic,ides,idgah,idiasm,idic,idiocy,idiom,idiot,idiotcy,idiotic,idiotry,idite,iditol,idle,idleful,idleman,idler,idleset,idlety,idlish,idly,idol,idola,idolify,idolism,idolist,idolize,idolous,idolum,idoneal,idorgan,idose,idryl,idyl,idyler,idylism,idylist,idylize,idyllic,ie,if,ife,iffy,igloo,ignatia,ignavia,igneous,ignify,ignite,igniter,ignitor,ignoble,ignobly,ignore,ignorer,ignote,iguana,iguanid,ihi,ihleite,ihram,iiwi,ijma,ijolite,ikat,ikey,ikona,ikra,ileac,ileitis,ileon,ilesite,ileum,ileus,ilex,ilia,iliac,iliacus,iliahi,ilial,iliau,ilicic,ilicin,ilima,ilium,ilk,ilka,ilkane,ill,illapse,illeck,illegal,illeism,illeist,illess,illfare,illicit,illish,illium,illness,illocal,illogic,illoyal,illth,illude,illuder,illume,illumer,illupi,illure,illusor,illy,ilot,ilvaite,image,imager,imagery,imagine,imagism,imagist,imago,imam,imamah,imamate,imamic,imaret,imban,imband,imbarge,imbark,imbarn,imbased,imbat,imbauba,imbe,imbed,imber,imbibe,imbiber,imbondo,imbosom,imbower,imbrex,imbrue,imbrute,imbue,imburse,imi,imide,imidic,imine,imino,imitant,imitate,immane,immask,immense,immerd,immerge,immerit,immerse,immew,immi,immit,immix,immoral,immound,immund,immune,immure,immute,imonium,imp,impack,impact,impages,impaint,impair,impala,impale,impaler,impall,impalm,impalsy,impane,impanel,impar,impark,imparl,impart,impasse,impaste,impasto,impave,impavid,impawn,impeach,impearl,impede,impeder,impel,impen,impend,impent,imperia,imperil,impest,impetre,impetus,imphee,impi,impiety,impinge,impious,impish,implant,implate,implead,implete,implex,implial,impling,implode,implore,implume,imply,impofo,impone,impoor,import,imposal,impose,imposer,impost,impot,impound,impreg,impregn,impresa,imprese,impress,imprest,imprime,imprint,improof,improve,impship,impubic,impugn,impulse,impure,impute,imputer,impy,imshi,imsonic,imu,in,inachid,inadept,inagile,inaja,inane,inanely,inanga,inanity,inapt,inaptly,inarch,inarm,inaugur,inaxon,inbe,inbeing,inbent,inbirth,inblow,inblown,inboard,inbond,inborn,inbound,inbread,inbreak,inbred,inbreed,inbring,inbuilt,inburnt,inburst,inby,incarn,incase,incast,incense,incept,incest,inch,inched,inchpin,incide,incisal,incise,incisor,incite,inciter,incivic,incline,inclip,inclose,include,inclusa,incluse,incog,income,incomer,inconnu,incrash,increep,increst,incross,incrust,incubi,incubus,incudal,incudes,incult,incur,incurse,incurve,incus,incuse,incut,indaba,indan,indane,indart,indazin,indazol,inde,indebt,indeed,indeedy,indene,indent,index,indexed,indexer,indic,indican,indices,indicia,indict,indign,indigo,indite,inditer,indium,indogen,indole,indoles,indolyl,indoor,indoors,indorse,indoxyl,indraft,indrawn,indri,induce,induced,inducer,induct,indue,indulge,indult,indulto,induna,indwell,indy,indyl,indylic,inearth,inept,ineptly,inequal,inerm,inert,inertia,inertly,inesite,ineunt,inexact,inexist,inface,infall,infame,infamy,infancy,infand,infang,infant,infanta,infante,infarct,infare,infaust,infect,infeed,infeft,infelt,infer,infern,inferno,infest,infidel,infield,infill,infilm,infirm,infit,infix,inflame,inflate,inflect,inflex,inflict,inflood,inflow,influx,infold,inform,infra,infract,infula,infuse,infuser,ing,ingate,ingenit,ingenue,ingest,ingesta,ingiver,ingle,inglobe,ingoing,ingot,ingraft,ingrain,ingrate,ingress,ingross,ingrow,ingrown,inguen,ingulf,inhabit,inhale,inhaler,inhaul,inhaust,inhere,inherit,inhiate,inhibit,inhuman,inhume,inhumer,inial,iniome,inion,initial,initis,initive,inject,injelly,injunct,injure,injured,injurer,injury,ink,inkbush,inken,inker,inket,inkfish,inkhorn,inkish,inkle,inkless,inklike,inkling,inknot,inkosi,inkpot,inkroot,inks,inkshed,inkweed,inkwell,inkwood,inky,inlaid,inlaik,inlake,inland,inlaut,inlaw,inlawry,inlay,inlayer,inleak,inlet,inlier,inlook,inly,inlying,inmate,inmeats,inmost,inn,innate,inneity,inner,innerly,innerve,inness,innest,innet,inning,innless,innyard,inocyte,inogen,inoglia,inolith,inoma,inone,inopine,inorb,inosic,inosin,inosite,inower,inphase,inport,inpour,inpush,input,inquest,inquiet,inquire,inquiry,inring,inro,inroad,inroll,inrub,inrun,inrush,insack,insane,insculp,insea,inseam,insect,insee,inseer,insense,insert,inset,inshave,inshell,inship,inshoe,inshoot,inshore,inside,insider,insight,insigne,insipid,insist,insnare,insofar,insole,insolid,insooth,insorb,insoul,inspan,inspeak,inspect,inspire,inspoke,install,instant,instar,instate,instead,insteam,insteep,instep,instill,insula,insular,insulin,insulse,insult,insunk,insure,insured,insurer,insurge,inswamp,inswell,inswept,inswing,intact,intake,intaker,integer,inteind,intend,intense,intent,inter,interim,intern,intext,inthrow,intil,intima,intimal,intine,into,intoed,intone,intoner,intort,intown,intrada,intrait,intrant,intreat,intrine,introit,intrude,intruse,intrust,intube,intue,intuent,intuit,inturn,intwist,inula,inulase,inulin,inuloid,inunct,inure,inured,inurn,inutile,invade,invader,invalid,inveigh,inveil,invein,invent,inverse,invert,invest,invigor,invised,invital,invite,invitee,inviter,invivid,invoice,invoke,invoker,involve,inwale,inwall,inward,inwards,inweave,inweed,inwick,inwind,inwit,inwith,inwood,inwork,inworn,inwound,inwoven,inwrap,inwrit,inyoite,inyoke,io,iodate,iodic,iodide,iodine,iodism,iodite,iodize,iodizer,iodo,iodol,iodoso,iodous,iodoxy,iolite,ion,ionic,ionium,ionize,ionizer,ionogen,ionone,iota,iotize,ipecac,ipid,ipil,ipomea,ipseand,ipseity,iracund,irade,irate,irately,ire,ireful,ireless,irene,irenic,irenics,irian,irid,iridal,iridate,irides,iridial,iridian,iridic,iridin,iridine,iridite,iridium,iridize,iris,irised,irisin,iritic,iritis,irk,irksome,irok,iroko,iron,irone,ironer,ironice,ironish,ironism,ironist,ironize,ironly,ironman,irony,irrisor,irrupt,is,isagoge,isagon,isamine,isatate,isatic,isatide,isatin,isazoxy,isba,ischiac,ischial,ischium,ischury,iserine,iserite,isidium,isidoid,island,islandy,islay,isle,islet,isleted,islot,ism,ismal,ismatic,ismdom,ismy,iso,isoamyl,isobar,isobare,isobase,isobath,isochor,isocola,isocrat,isodont,isoflor,isogamy,isogen,isogeny,isogon,isogram,isohel,isohyet,isolate,isology,isomer,isomere,isomery,isoneph,isonomy,isonym,isonymy,isopag,isopod,isopoly,isoptic,isopyre,isotac,isotely,isotome,isotony,isotope,isotopy,isotron,isotype,isoxime,issei,issite,issuant,issue,issuer,issuing,ist,isthmi,isthmic,isthmus,istle,istoke,isuret,isuroid,it,itacism,itacist,italics,italite,itch,itching,itchy,itcze,item,iteming,itemize,itemy,iter,iterant,iterate,ither,itmo,itoubou,its,itself,iturite,itzebu,iva,ivied,ivin,ivoried,ivorine,ivorist,ivory,ivy,ivylike,ivyweed,ivywood,ivywort,iwa,iwaiwa,iwis,ixodian,ixodic,ixodid,iyo,izar,izard,izle,izote,iztle,izzard,j,jab,jabbed,jabber,jabbing,jabble,jabers,jabia,jabiru,jabot,jabul,jacal,jacamar,jacami,jacamin,jacana,jacare,jacate,jacchus,jacent,jacinth,jack,jackal,jackass,jackbox,jackboy,jackdaw,jackeen,jacker,jacket,jackety,jackleg,jackman,jacko,jackrod,jacksaw,jacktan,jacobus,jacoby,jaconet,jactant,jacu,jacuaru,jadder,jade,jaded,jadedly,jadeite,jadery,jadish,jady,jaeger,jag,jagat,jager,jagged,jagger,jaggery,jaggy,jagir,jagla,jagless,jagong,jagrata,jagua,jaguar,jail,jailage,jaildom,jailer,jailish,jajman,jake,jakes,jako,jalap,jalapa,jalapin,jalkar,jalopy,jalouse,jam,jama,jaman,jamb,jambeau,jambo,jambone,jambool,jambosa,jamdani,jami,jamlike,jammer,jammy,jampan,jampani,jamwood,janapa,janapan,jane,jangada,jangkar,jangle,jangler,jangly,janitor,jank,janker,jann,jannock,jantu,janua,jaob,jap,japan,jape,japer,japery,japing,japish,jaquima,jar,jara,jaragua,jarbird,jarble,jarbot,jarfly,jarful,jarg,jargon,jarkman,jarl,jarldom,jarless,jarnut,jarool,jarra,jarrah,jarring,jarry,jarvey,jasey,jaseyed,jasmine,jasmone,jasper,jaspery,jaspis,jaspoid,jass,jassid,jassoid,jatha,jati,jato,jaudie,jauk,jaun,jaunce,jaunder,jaunt,jauntie,jaunty,jaup,javali,javelin,javer,jaw,jawab,jawbone,jawed,jawfall,jawfish,jawfoot,jawless,jawy,jay,jayhawk,jaypie,jaywalk,jazz,jazzer,jazzily,jazzy,jealous,jean,jeans,jecoral,jecorin,jed,jedcock,jedding,jeddock,jeel,jeep,jeer,jeerer,jeering,jeery,jeff,jehu,jehup,jejunal,jejune,jejunum,jelab,jelick,jell,jellica,jellico,jellied,jellify,jellily,jelloid,jelly,jemadar,jemmily,jemmy,jenkin,jenna,jennet,jennier,jenny,jeofail,jeopard,jerboa,jereed,jerez,jerib,jerk,jerker,jerkily,jerkin,jerkish,jerky,jerl,jerm,jerque,jerquer,jerry,jersey,jert,jervia,jervina,jervine,jess,jessamy,jessant,jessed,jessur,jest,jestee,jester,jestful,jesting,jet,jetbead,jete,jetsam,jettage,jetted,jetter,jettied,jetton,jetty,jetware,jewbird,jewbush,jewel,jeweler,jewelry,jewely,jewfish,jezail,jeziah,jharal,jheel,jhool,jhow,jib,jibbah,jibber,jibby,jibe,jibhead,jibi,jibman,jiboa,jibstay,jicama,jicara,jiff,jiffle,jiffy,jig,jigger,jiggers,jigget,jiggety,jiggish,jiggle,jiggly,jiggy,jiglike,jigman,jihad,jikungu,jillet,jilt,jiltee,jilter,jiltish,jimbang,jimjam,jimmy,jimp,jimply,jina,jing,jingal,jingle,jingled,jingler,jinglet,jingly,jingo,jinja,jinjili,jink,jinker,jinket,jinkle,jinks,jinn,jinni,jinny,jinriki,jinx,jipper,jiqui,jirble,jirga,jiti,jitneur,jitney,jitro,jitter,jitters,jittery,jiva,jive,jixie,jo,job,jobade,jobarbe,jobber,jobbery,jobbet,jobbing,jobbish,jobble,jobless,jobman,jobo,joch,jock,jocker,jockey,jocko,jocoque,jocose,jocote,jocu,jocular,jocum,jocuma,jocund,jodel,jodelr,joe,joebush,joewood,joey,jog,jogger,joggle,joggler,joggly,johnin,join,joinant,joinder,joiner,joinery,joining,joint,jointed,jointer,jointly,jointy,joist,jojoba,joke,jokelet,joker,jokish,jokist,jokul,joky,joll,jollier,jollify,jollily,jollity,jollop,jolly,jolt,jolter,jolting,jolty,jonque,jonquil,joola,joom,jordan,joree,jorum,joseite,josh,josher,joshi,josie,joskin,joss,josser,jostle,jostler,jot,jota,jotisi,jotter,jotting,jotty,joubarb,joug,jough,jouk,joule,joulean,jounce,journal,journey,jours,joust,jouster,jovial,jow,jowar,jowari,jowel,jower,jowery,jowl,jowler,jowlish,jowlop,jowly,jowpy,jowser,jowter,joy,joyance,joyancy,joyant,joyful,joyhop,joyleaf,joyless,joylet,joyous,joysome,joyweed,juba,jubate,jubbah,jubbe,jube,jubilee,jubilus,juck,juckies,jud,judcock,judex,judge,judger,judices,judo,jufti,jug,jugal,jugale,jugate,jugated,juger,jugerum,jugful,jugger,juggins,juggle,juggler,juglone,jugular,jugulum,jugum,juice,juicily,juicy,jujitsu,juju,jujube,jujuism,jujuist,juke,jukebox,julep,julid,julidan,julio,juloid,julole,julolin,jumart,jumba,jumble,jumbler,jumbly,jumbo,jumbuck,jumby,jumelle,jument,jumfru,jumma,jump,jumper,jumpy,juncite,juncous,june,jungle,jungled,jungli,jungly,juniata,junior,juniper,junk,junker,junket,junking,junkman,junt,junta,junto,jupati,jupe,jupon,jural,jurally,jurant,jurara,jurat,jurator,jure,jurel,juridic,juring,jurist,juror,jury,juryman,jussel,jussion,jussive,jussory,just,justen,justice,justify,justly,justo,jut,jute,jutka,jutting,jutty,juvenal,juvia,juvite,jyngine,jynx,k,ka,kabaya,kabel,kaberu,kabiet,kabuki,kachin,kadaya,kadein,kados,kaffir,kafir,kafirin,kafiz,kafta,kago,kagu,kaha,kahar,kahau,kahili,kahu,kahuna,kai,kaid,kaik,kaikara,kail,kainga,kainite,kainsi,kainyn,kairine,kaiser,kaitaka,kaiwi,kajawah,kaka,kakapo,kakar,kaki,kakkak,kakke,kala,kalasie,kale,kalema,kalends,kali,kalian,kalium,kallah,kallege,kalo,kalon,kalong,kalpis,kamahi,kamala,kamansi,kamao,kamas,kamassi,kambal,kamboh,kame,kamerad,kamias,kamichi,kamik,kampong,kan,kana,kanae,kanagi,kanap,kanara,kanari,kanat,kanchil,kande,kandol,kaneh,kang,kanga,kangani,kankie,kannume,kanoon,kans,kantele,kanten,kaolin,kapa,kapai,kapeika,kapok,kapp,kappa,kappe,kapur,kaput,karagan,karaka,karakul,karamu,karaoke,karate,karaya,karbi,karch,kareao,kareeta,karela,karite,karma,karmic,karo,kaross,karou,karree,karri,karroo,karsha,karst,karstic,kartel,kartos,karwar,karyon,kasa,kasbah,kasbeke,kasher,kashga,kashi,kashima,kasida,kasm,kassu,kastura,kat,katar,katcina,kath,katha,kathal,katipo,katmon,katogle,katsup,katuka,katun,katurai,katydid,kauri,kava,kavaic,kavass,kawaka,kawika,kay,kayak,kayaker,kayles,kayo,kazi,kazoo,kea,keach,keacorn,keawe,keb,kebab,kebbie,kebbuck,kechel,keck,keckle,kecksy,kecky,ked,keddah,kedge,kedger,kedlock,keech,keek,keeker,keel,keelage,keeled,keeler,keelfat,keelie,keeling,keelman,keelson,keen,keena,keened,keener,keenly,keep,keeper,keeping,keest,keet,keeve,kef,keffel,kefir,kefiric,keg,kegler,kehaya,keita,keitloa,kekuna,kelchin,keld,kele,kelebe,keleh,kelek,kelep,kelk,kell,kella,kellion,kelly,keloid,kelp,kelper,kelpie,kelpy,kelt,kelter,kelty,kelvin,kemb,kemp,kempite,kemple,kempt,kempy,ken,kenaf,kenareh,kench,kend,kendir,kendyr,kenlore,kenmark,kennel,kenner,kenning,kenno,keno,kenosis,kenotic,kenspac,kent,kenyte,kep,kepi,kept,kerana,kerasin,kerat,keratin,keratto,kerchoo,kerchug,kerel,kerf,kerflap,kerflop,kermes,kermis,kern,kernel,kerner,kernish,kernite,kernos,kerogen,kerrie,kerril,kerrite,kerry,kersey,kerslam,kerugma,kerwham,kerygma,kestrel,ket,keta,ketal,ketch,ketchup,keten,ketene,ketipic,keto,ketogen,ketol,ketole,ketone,ketonic,ketose,ketosis,kette,ketting,kettle,kettler,ketty,ketuba,ketupa,ketyl,keup,kevalin,kevel,kewpie,kex,kexy,key,keyage,keyed,keyhole,keyless,keylet,keylock,keynote,keyway,khaddar,khadi,khahoon,khaiki,khair,khaja,khajur,khaki,khakied,khalifa,khalsa,khamsin,khan,khanate,khanda,khanjar,khanjee,khankah,khanum,khar,kharaj,kharua,khass,khat,khatib,khatri,khediva,khedive,khepesh,khet,khilat,khir,khirka,khoja,khoka,khot,khu,khubber,khula,khutbah,khvat,kiack,kiaki,kialee,kiang,kiaugh,kibber,kibble,kibbler,kibe,kibei,kibitka,kibitz,kiblah,kibosh,kiby,kick,kickee,kicker,kicking,kickish,kickoff,kickout,kickup,kidder,kiddier,kiddish,kiddush,kiddy,kidhood,kidlet,kidling,kidnap,kidney,kidskin,kidsman,kiekie,kiel,kier,kieye,kikar,kike,kiki,kiku,kikuel,kikumon,kil,kiladja,kilah,kilan,kildee,kileh,kilerg,kiley,kilhig,kiliare,kilim,kill,killas,killcu,killeen,killer,killick,killing,killy,kiln,kilneye,kilnman,kilnrib,kilo,kilobar,kiloton,kilovar,kilp,kilt,kilter,kiltie,kilting,kim,kimbang,kimnel,kimono,kin,kina,kinah,kinase,kinbote,kinch,kinchin,kincob,kind,kindle,kindler,kindly,kindred,kinepox,kinesic,kinesis,kinetic,king,kingcob,kingcup,kingdom,kinglet,kingly,kingpin,kingrow,kink,kinkhab,kinkily,kinkle,kinkled,kinkly,kinky,kinless,kino,kinship,kinsman,kintar,kioea,kiosk,kiotome,kip,kipage,kipe,kippeen,kipper,kippy,kipsey,kipskin,kiri,kirimon,kirk,kirker,kirkify,kirking,kirkman,kirmew,kirn,kirombo,kirsch,kirtle,kirtled,kirve,kirver,kischen,kish,kishen,kishon,kishy,kismet,kisra,kiss,kissage,kissar,kisser,kissing,kissy,kist,kistful,kiswa,kit,kitab,kitabis,kitar,kitcat,kitchen,kite,kith,kithe,kitish,kitling,kittel,kitten,kitter,kittle,kittles,kittly,kittock,kittul,kitty,kiva,kiver,kivu,kiwi,kiyas,kiyi,klafter,klam,klavern,klaxon,klepht,kleptic,klicket,klip,klipbok,klipdas,klippe,klippen,klister,klom,klop,klops,klosh,kmet,knab,knabble,knack,knacker,knacky,knag,knagged,knaggy,knap,knape,knappan,knapper,knar,knark,knarred,knarry,knave,knavery,knavess,knavish,knawel,knead,kneader,knee,kneecap,kneed,kneel,kneeler,kneelet,kneepad,kneepan,knell,knelt,knet,knew,knez,knezi,kniaz,kniazi,knick,knicker,knife,knifer,knight,knit,knitch,knitted,knitter,knittle,knived,knivey,knob,knobbed,knobber,knobble,knobbly,knobby,knock,knocker,knockup,knoll,knoller,knolly,knop,knopite,knopped,knopper,knoppy,knosp,knosped,knot,knotted,knotter,knotty,knout,know,knowe,knower,knowing,known,knub,knubbly,knubby,knublet,knuckle,knuckly,knur,knurl,knurled,knurly,knut,knutty,knyaz,knyazi,ko,koa,koae,koala,koali,kob,koban,kobi,kobird,kobold,kobong,kobu,koda,kodak,kodaker,kodakry,kodro,koel,koff,koft,koftgar,kohemp,kohl,kohua,koi,koil,koila,koilon,koine,koinon,kojang,kokako,kokam,kokan,kokil,kokio,koklas,koklass,koko,kokoon,kokowai,kokra,koku,kokum,kokumin,kola,kolach,kolea,kolhoz,kolkhos,kolkhoz,kollast,koller,kolo,kolobus,kolsun,komatik,kombu,kommos,kompeni,kon,kona,konak,kongoni,kongu,konini,konjak,kooka,kookery,kookri,koolah,koombar,koomkie,kootcha,kop,kopeck,koph,kopi,koppa,koppen,koppite,kor,kora,koradji,korait,korakan,korari,kore,korec,koreci,korero,kori,korin,korona,korova,korrel,koruna,korzec,kos,kosher,kosin,kosong,koswite,kotal,koto,kotuku,kotwal,kotyle,kotylos,kou,koulan,kouza,kovil,kowhai,kowtow,koyan,kozo,kra,kraal,kraft,krait,kraken,kral,krama,kran,kras,krasis,krausen,kraut,kreis,krelos,kremlin,krems,kreng,krieker,krimmer,krina,krocket,krome,krona,krone,kronen,kroner,kronor,kronur,kroon,krosa,krypsis,kryptic,kryptol,krypton,kuan,kuba,kubba,kuchen,kudize,kudos,kudu,kudzu,kuei,kuge,kugel,kuichua,kukri,kuku,kukui,kukupa,kula,kulack,kulah,kulaite,kulak,kulang,kulimit,kulm,kulmet,kumbi,kumhar,kumiss,kummel,kumquat,kumrah,kunai,kung,kunk,kunkur,kunzite,kuphar,kupper,kurbash,kurgan,kuruma,kurung,kurus,kurvey,kusa,kusam,kusha,kuskite,kuskos,kuskus,kusti,kusum,kutcha,kuttab,kuttar,kuttaur,kuvasz,kvass,kvint,kvinter,kwamme,kwan,kwarta,kwazoku,kyack,kyah,kyar,kyat,kyaung,kyl,kyle,kylite,kylix,kyrine,kyte,l,la,laager,laang,lab,labara,labarum,labba,labber,labefy,label,labeler,labella,labia,labial,labiate,labile,labiose,labis,labium,lablab,labor,labored,laborer,labour,labra,labral,labret,labroid,labrose,labrum,labrys,lac,lacca,laccaic,laccase,laccol,lace,laced,laceman,lacepod,lacer,lacery,lacet,lache,laches,lachsa,lacily,lacing,lacinia,lacis,lack,lacker,lackey,lackwit,lacmoid,lacmus,laconic,lacquer,lacrym,lactam,lactant,lactary,lactase,lactate,lacteal,lactean,lactic,lactid,lactide,lactify,lactim,lacto,lactoid,lactol,lactone,lactose,lactyl,lacuna,lacunae,lacunal,lacunar,lacune,lacwork,lacy,lad,ladakin,ladanum,ladder,laddery,laddess,laddie,laddish,laddock,lade,lademan,laden,lader,ladhood,ladies,ladify,lading,ladkin,ladle,ladler,ladrone,lady,ladybug,ladydom,ladyfly,ladyfy,ladyish,ladyism,ladykin,ladyly,laet,laeti,laetic,lag,lagan,lagarto,lagen,lagena,lagend,lager,lagetto,laggar,laggard,lagged,laggen,lagger,laggin,lagging,laglast,lagna,lagoon,lagwort,lai,laic,laical,laich,laicism,laicity,laicize,laid,laigh,lain,laine,laiose,lair,lairage,laird,lairdie,lairdly,lairman,lairy,laity,lak,lakatoi,lake,lakelet,laker,lakie,laking,lakish,lakism,lakist,laky,lalang,lall,lalling,lalo,lam,lama,lamaic,lamany,lamb,lamba,lambale,lambda,lambeau,lambent,lamber,lambert,lambie,lambish,lambkin,lambly,lamboys,lamby,lame,lamedh,lamel,lamella,lamely,lament,lameter,lametta,lamia,lamiger,lamiid,lamin,lamina,laminae,laminar,lamish,lamiter,lammas,lammer,lammock,lammy,lamnid,lamnoid,lamp,lampad,lampas,lamper,lampern,lampers,lampfly,lampful,lamping,lampion,lampist,lamplet,lamplit,lampman,lampoon,lamprey,lan,lanas,lanate,lanated,lanaz,lance,lanced,lancely,lancer,lances,lancet,lancha,land,landau,landed,lander,landing,landman,landmil,lane,lanete,laneway,laney,langaha,langca,langi,langite,langle,langoon,langsat,langued,languet,languid,languor,langur,laniary,laniate,lanific,lanioid,lanista,lank,lanket,lankily,lankish,lankly,lanky,lanner,lanolin,lanose,lansat,lanseh,lanson,lant,lantaca,lantern,lantum,lanugo,lanum,lanx,lanyard,lap,lapacho,lapcock,lapel,lapeler,lapful,lapillo,lapon,lappage,lapped,lapper,lappet,lapping,lapse,lapsed,lapser,lapsi,lapsing,lapwing,lapwork,laquear,laqueus,lar,larceny,larch,larchen,lard,larder,lardite,lardon,lardy,large,largely,largen,largess,largish,largo,lari,lariat,larick,larid,larigo,larigot,lariid,larin,larine,larixin,lark,larker,larking,larkish,larky,larmier,larnax,laroid,larrup,larry,larva,larvae,larval,larvate,larve,larvule,larynx,las,lasa,lascar,laser,lash,lasher,lask,lasket,lasque,lass,lasset,lassie,lasso,lassock,lassoer,last,lastage,laster,lasting,lastly,lastre,lasty,lat,lata,latah,latch,latcher,latchet,late,latebra,lated,lateen,lately,laten,latence,latency,latent,later,latera,laterad,lateral,latest,latex,lath,lathe,lathee,lathen,lather,lathery,lathing,lathy,latices,latigo,lation,latish,latitat,latite,latomy,latrant,latria,latrine,latro,latrobe,latron,latten,latter,lattice,latus,lauan,laud,lauder,laudist,laugh,laughee,laugher,laughy,lauia,laun,launce,launch,laund,launder,laundry,laur,laura,laurate,laurel,lauric,laurin,laurite,laurone,lauryl,lava,lavable,lavabo,lavacre,lavage,lavanga,lavant,lavaret,lavatic,lave,laveer,laver,lavic,lavish,lavolta,law,lawbook,lawful,lawing,lawish,lawk,lawless,lawlike,lawman,lawn,lawned,lawner,lawnlet,lawny,lawsuit,lawter,lawyer,lawyery,lawzy,lax,laxate,laxism,laxist,laxity,laxly,laxness,lay,layaway,layback,layboy,layer,layered,layery,layette,laying,layland,layman,layne,layoff,layout,layover,layship,laystow,lazar,lazaret,lazarly,laze,lazily,lazule,lazuli,lazy,lazyish,lea,leach,leacher,leachy,lead,leadage,leaded,leaden,leader,leadin,leading,leadman,leadoff,leadout,leadway,leady,leaf,leafage,leafboy,leafcup,leafdom,leafed,leafen,leafer,leafery,leafit,leaflet,leafy,league,leaguer,leak,leakage,leaker,leaky,leal,lealand,leally,lealty,leam,leamer,lean,leaner,leaning,leanish,leanly,leant,leap,leaper,leaping,leapt,lear,learn,learned,learner,learnt,lease,leaser,leash,leasing,leasow,least,leat,leath,leather,leatman,leave,leaved,leaven,leaver,leaves,leaving,leavy,leawill,leban,lebbek,lecama,lech,lecher,lechery,lechwe,leck,lecker,lectern,lection,lector,lectual,lecture,lecyth,led,lede,leden,ledge,ledged,ledger,ledging,ledgy,ledol,lee,leech,leecher,leeches,leed,leefang,leek,leekish,leeky,leep,leepit,leer,leerily,leerish,leery,lees,leet,leetman,leewan,leeward,leeway,leewill,left,leftish,leftism,leftist,leg,legacy,legal,legally,legate,legatee,legato,legator,legend,legenda,leger,leges,legged,legger,legging,leggy,leghorn,legible,legibly,legific,legion,legist,legit,legitim,leglen,legless,leglet,leglike,legman,legoa,legpull,legrope,legua,leguan,legume,legumen,legumin,lehr,lehrman,lehua,lei,leister,leisure,lek,lekach,lekane,lekha,leman,lemel,lemma,lemmata,lemming,lemnad,lemon,lemony,lempira,lemur,lemures,lemurid,lenad,lenard,lench,lend,lendee,lender,lene,length,lengthy,lenient,lenify,lenis,lenitic,lenity,lennow,leno,lens,lensed,lent,lenth,lentigo,lentil,lentisc,lentisk,lento,lentoid,lentor,lentous,lenvoi,lenvoy,leonine,leonite,leopard,leotard,lepa,leper,lepered,leporid,lepra,lepric,leproid,leproma,leprose,leprosy,leprous,leptid,leptite,leptome,lepton,leptus,lerot,lerp,lerret,lesche,lesion,lesiy,less,lessee,lessen,lesser,lessive,lessn,lesson,lessor,lest,lestrad,let,letch,letchy,letdown,lete,lethal,letoff,letten,letter,lettrin,lettuce,letup,leu,leuch,leucine,leucism,leucite,leuco,leucoid,leucoma,leucon,leucous,leucyl,leud,leuk,leuma,lev,levance,levant,levator,levee,level,leveler,levelly,lever,leverer,leveret,levers,levier,levin,levir,levity,levo,levulic,levulin,levy,levyist,lew,lewd,lewdly,lewis,lewth,lexia,lexical,lexicon,ley,leyland,leysing,li,liable,liaison,liana,liang,liar,liard,libant,libate,libber,libbet,libbra,libel,libelee,libeler,liber,liberal,liberty,libido,libken,libra,libral,library,librate,licca,license,lich,licham,lichen,licheny,lichi,licit,licitly,lick,licker,licking,licorn,licorne,lictor,lid,lidded,lidder,lidgate,lidless,lie,lied,lief,liege,liegely,lieger,lien,lienal,lienee,lienic,lienor,lier,lierne,lierre,liesh,lieu,lieue,lieve,life,lifeday,lifeful,lifelet,lifer,lifey,lifo,lift,lifter,lifting,liftman,ligable,ligas,ligate,ligator,ligger,light,lighten,lighter,lightly,ligne,lignify,lignin,lignite,lignone,lignose,lignum,ligula,ligular,ligule,ligulin,ligure,liin,lija,likable,like,likely,liken,liker,likin,liking,liknon,lilac,lilacin,lilacky,lile,lilied,lill,lilt,lily,lilyfy,lim,limacel,limacon,liman,limb,limbal,limbat,limbate,limbeck,limbed,limber,limbers,limbic,limbie,limbo,limbous,limbus,limby,lime,limeade,limeman,limen,limer,limes,limetta,limey,liminal,liming,limit,limital,limited,limiter,limma,limmer,limmock,limmu,limn,limner,limnery,limniad,limnite,limoid,limonin,limose,limous,limp,limper,limpet,limpid,limpily,limpin,limping,limpish,limpkin,limply,limpsy,limpy,limsy,limu,limulid,limy,lin,lina,linable,linaga,linage,linaloa,linalol,linch,linchet,linctus,lindane,linden,linder,lindo,line,linea,lineage,lineal,linear,lineate,linecut,lined,linelet,lineman,linen,liner,ling,linga,linge,lingel,linger,lingo,lingtow,lingua,lingual,linguet,lingula,lingy,linha,linhay,linie,linin,lining,linitis,liniya,linja,linje,link,linkage,linkboy,linked,linker,linking,linkman,links,linky,linn,linnet,lino,linolic,linolin,linon,linous,linoxin,linoxyn,linpin,linseed,linsey,lint,lintel,linten,linter,lintern,lintie,linty,linwood,liny,lion,lioncel,lionel,lioness,lionet,lionism,lionize,lionly,lip,lipa,liparid,lipase,lipemia,lipide,lipin,lipless,liplet,liplike,lipoid,lipoma,lipopod,liposis,lipped,lippen,lipper,lipping,lippy,lipuria,lipwork,liquate,liquefy,liqueur,liquid,liquidy,liquor,lira,lirate,lire,lirella,lis,lisere,lish,lisk,lisle,lisp,lisper,lispund,liss,lissom,lissome,list,listed,listel,listen,lister,listing,listred,lit,litany,litas,litch,litchi,lite,liter,literal,lith,lithe,lithely,lithi,lithia,lithic,lithify,lithite,lithium,litho,lithoid,lithous,lithy,litmus,litotes,litra,litster,litten,litter,littery,little,lituite,liturgy,litus,lituus,litz,livable,live,lived,livedo,lively,liven,liver,livered,livery,livid,lividly,livier,living,livor,livre,liwan,lixive,lizard,llama,llano,llautu,llyn,lo,loa,loach,load,loadage,loaded,loaden,loader,loading,loaf,loafer,loafing,loaflet,loam,loamily,loaming,loamy,loan,loaner,loanin,loath,loathe,loather,loathly,loave,lob,lobal,lobar,lobate,lobated,lobber,lobbish,lobby,lobbyer,lobcock,lobe,lobed,lobelet,lobelin,lobfig,lobing,lobiped,lobo,lobola,lobose,lobster,lobtail,lobular,lobule,lobworm,loca,locable,local,locale,locally,locanda,locate,locator,loch,lochage,lochan,lochia,lochial,lochus,lochy,loci,lock,lockage,lockbox,locked,locker,locket,lockful,locking,lockjaw,locklet,lockman,lockout,lockpin,lockram,lockup,locky,loco,locoism,locular,locule,loculus,locum,locus,locust,locusta,locutor,lod,lode,lodge,lodged,lodger,lodging,loess,loessal,loessic,lof,loft,lofter,loftily,lofting,loftman,lofty,log,loganin,logbook,logcock,loge,logeion,logeum,loggat,logged,logger,loggia,loggin,logging,loggish,loghead,logia,logic,logical,logie,login,logion,logium,loglet,loglike,logman,logoi,logos,logroll,logway,logwise,logwood,logwork,logy,lohan,lohoch,loimic,loin,loined,loir,loiter,loka,lokao,lokaose,loke,loket,lokiec,loll,loller,lollop,lollopy,lolly,loma,lombard,lomboy,loment,lomita,lommock,lone,lonely,long,longa,longan,longbow,longe,longear,longer,longfin,longful,longing,longish,longjaw,longly,longs,longue,longway,lontar,loo,looby,lood,loof,loofah,loofie,look,looker,looking,lookout,lookum,loom,loomer,loomery,looming,loon,loonery,looney,loony,loop,looper,loopful,looping,loopist,looplet,loopy,loose,loosely,loosen,looser,loosing,loosish,loot,looten,looter,lootie,lop,lope,loper,lophiid,lophine,loppard,lopper,loppet,lopping,loppy,lopseed,loquat,loquent,lora,loral,loran,lorate,lorcha,lord,lording,lordkin,lordlet,lordly,lordy,lore,loreal,lored,lori,loric,lorica,lorilet,lorimer,loriot,loris,lormery,lorn,loro,lorry,lors,lorum,lory,losable,lose,losel,loser,losh,losing,loss,lost,lot,lota,lotase,lote,lotic,lotion,lotment,lotrite,lots,lotter,lottery,lotto,lotus,lotusin,louch,loud,louden,loudish,loudly,louey,lough,louk,loukoum,loulu,lounder,lounge,lounger,loungy,loup,loupe,lour,lourdy,louse,lousily,louster,lousy,lout,louter,louther,loutish,louty,louvar,louver,lovable,lovably,lovage,love,loveful,lovely,loveman,lover,lovered,loverly,loving,low,lowa,lowan,lowbell,lowborn,lowboy,lowbred,lowdah,lowder,loweite,lower,lowerer,lowery,lowish,lowland,lowlily,lowly,lowmen,lowmost,lown,lowness,lownly,lowth,lowwood,lowy,lox,loxia,loxic,loxotic,loy,loyal,loyally,loyalty,lozenge,lozengy,lubber,lube,lubra,lubric,lubrify,lucanid,lucarne,lucban,luce,lucence,lucency,lucent,lucern,lucerne,lucet,lucible,lucid,lucida,lucidly,lucifee,lucific,lucigen,lucivee,luck,lucken,luckful,luckie,luckily,lucky,lucre,lucrify,lucule,lucumia,lucy,ludden,ludibry,ludo,lue,lues,luetic,lufbery,luff,lug,luge,luger,luggage,luggar,lugged,lugger,luggie,lugmark,lugsail,lugsome,lugworm,luhinga,luigino,luke,lukely,lulab,lull,lullaby,luller,lulu,lum,lumbago,lumbang,lumbar,lumber,lumen,luminal,lumine,lummox,lummy,lump,lumper,lumpet,lumpily,lumping,lumpish,lumpkin,lumpman,lumpy,luna,lunacy,lunar,lunare,lunary,lunate,lunatic,lunatum,lunch,luncher,lune,lunes,lunette,lung,lunge,lunged,lunger,lungful,lungi,lungie,lungis,lungy,lunn,lunoid,lunt,lunula,lunular,lunule,lunulet,lupe,lupeol,lupeose,lupine,lupinin,lupis,lupoid,lupous,lupulic,lupulin,lupulus,lupus,lura,lural,lurch,lurcher,lurdan,lure,lureful,lurer,lurg,lurid,luridly,lurk,lurker,lurky,lurrier,lurry,lush,lusher,lushly,lushy,lusk,lusky,lusory,lust,luster,lustful,lustily,lustra,lustral,lustrum,lusty,lut,lutany,lute,luteal,lutecia,lutein,lutelet,luteo,luteoma,luteous,luter,luteway,lutfisk,luthern,luthier,luting,lutist,lutose,lutrin,lutrine,lux,luxate,luxe,luxury,luxus,ly,lyam,lyard,lyceal,lyceum,lycid,lycopin,lycopod,lycosid,lyctid,lyddite,lydite,lye,lyery,lygaeid,lying,lyingly,lymph,lymphad,lymphy,lyncean,lynch,lyncher,lyncine,lynx,lyra,lyrate,lyrated,lyraway,lyre,lyreman,lyric,lyrical,lyrism,lyrist,lys,lysate,lyse,lysin,lysine,lysis,lysogen,lyssa,lyssic,lytic,lytta,lyxose,m,ma,maam,mabi,mabolo,mac,macabre,macaco,macadam,macan,macana,macao,macaque,macaw,macco,mace,maceman,macer,machan,machar,machete,machi,machila,machin,machine,machree,macies,mack,mackins,mackle,macle,macled,maco,macrame,macro,macron,macuca,macula,macular,macule,macuta,mad,madam,madame,madcap,madden,madder,madding,maddish,maddle,made,madefy,madhuca,madid,madling,madly,madman,madnep,madness,mado,madoqua,madrier,madrona,madship,maduro,madweed,madwort,mae,maenad,maestri,maestro,maffia,maffick,maffle,mafflin,mafic,mafoo,mafura,mag,magadis,magani,magas,mage,magenta,magged,maggle,maggot,maggoty,magi,magic,magical,magiric,magma,magnate,magnes,magnet,magneta,magneto,magnify,magnum,magot,magpie,magpied,magsman,maguari,maguey,maha,mahaleb,mahalla,mahant,mahar,maharao,mahatma,mahmal,mahmudi,mahoe,maholi,mahone,mahout,mahseer,mahua,mahuang,maid,maidan,maiden,maidish,maidism,maidkin,maidy,maiefic,maigre,maiid,mail,mailbag,mailbox,mailed,mailer,mailie,mailman,maim,maimed,maimer,maimon,main,mainly,mainour,mainpin,mains,maint,maintop,maioid,maire,maize,maizer,majagua,majesty,majo,majoon,major,makable,make,makedom,maker,makhzan,maki,making,makluk,mako,makuk,mal,mala,malacia,malacon,malady,malagma,malaise,malakin,malambo,malanga,malapi,malar,malaria,malarin,malate,malati,malax,malduck,male,malease,maleate,maleic,malella,maleo,malfed,mali,malic,malice,malicho,malign,malik,maline,malines,malism,malison,malist,malkin,mall,mallard,malleal,mallear,mallee,mallein,mallet,malleus,mallow,mallum,mallus,malm,malmsey,malmy,malo,malodor,malonic,malonyl,malouah,malpais,malt,maltase,malter,maltha,malting,maltman,maltose,malty,mamba,mambo,mamma,mammal,mammary,mammate,mammee,mammer,mammock,mammon,mammoth,mammula,mammy,mamo,man,mana,manacle,manage,managee,manager,manaism,manakin,manal,manas,manatee,manavel,manbird,manbot,manche,manchet,mancono,mancus,mand,mandala,mandant,mandate,mandil,mandola,mandom,mandora,mandore,mandra,mandrel,mandrin,mandua,mandyas,mane,maned,manege,manei,manent,manes,maness,maney,manful,mang,manga,mangal,mange,mangeao,mangel,manger,mangi,mangily,mangle,mangler,mango,mangona,mangue,mangy,manhead,manhole,manhood,mani,mania,maniac,manic,manid,manify,manikin,manila,manilla,manille,manioc,maniple,manism,manist,manito,maniu,manjak,mank,mankin,mankind,manless,manlet,manlike,manlily,manling,manly,manna,mannan,manner,manners,manness,mannide,mannie,mannify,manning,mannish,mannite,mannose,manny,mano,manoc,manomin,manor,manque,manred,manrent,manroot,manrope,mansard,manse,manship,mansion,manso,mant,manta,mantal,manteau,mantel,manter,mantes,mantic,mantid,mantis,mantle,mantled,mantlet,manto,mantoid,mantra,mantrap,mantua,manual,manuao,manuka,manul,manuma,manumea,manumit,manure,manurer,manus,manward,manway,manweed,manwise,many,manzana,manzil,mao,maomao,map,mapach,mapau,mapland,maple,mapo,mapper,mappist,mappy,mapwise,maqui,maquis,mar,marabou,maraca,maracan,marae,maral,marang,marara,mararie,marasca,maraud,marble,marbled,marbler,marbles,marbly,marc,marcel,march,marcher,marcid,marco,marconi,marcor,mardy,mare,maremma,marengo,marfire,margay,marge,margent,margin,margosa,marhala,maria,marid,marimba,marina,marine,mariner,mariola,maris,marish,marital,mark,marka,marked,marker,market,markhor,marking,markka,markman,markup,marl,marled,marler,marli,marlin,marline,marlite,marlock,marlpit,marly,marm,marmit,marmite,marmose,marmot,maro,marok,maroon,marplot,marque,marquee,marquis,marrano,marree,marrer,married,marrier,marron,marrot,marrow,marrowy,marry,marryer,marsh,marshal,marshy,marsoon,mart,martel,marten,martext,martial,martin,martite,martlet,martyr,martyry,maru,marvel,marver,mary,marybud,mas,masa,mascara,mascled,mascot,masculy,masdeu,mash,masha,mashal,masher,mashie,mashing,mashman,mashru,mashy,masjid,mask,masked,masker,maskoid,maslin,mason,masoned,masoner,masonic,masonry,masooka,masoola,masque,masquer,mass,massa,massage,masse,massel,masser,masseur,massier,massif,massily,massive,massoy,massula,massy,mast,mastaba,mastage,mastax,masted,master,mastery,mastful,mastic,mastiff,masting,mastman,mastoid,masty,masu,mat,mataco,matador,matai,matalan,matanza,matapan,matapi,matara,matax,match,matcher,matchy,mate,mately,mater,matey,math,mathes,matico,matin,matinal,matinee,mating,matins,matipo,matka,matless,matlow,matra,matral,matrass,matreed,matric,matris,matrix,matron,matross,matsu,matsuri,matta,mattaro,matte,matted,matter,mattery,matti,matting,mattock,mattoid,mattoir,mature,maturer,matweed,maty,matzo,matzoon,matzos,matzoth,mau,maud,maudle,maudlin,mauger,maugh,maul,mauler,mauley,mauling,maumet,maun,maund,maunder,maundy,maunge,mauther,mauve,mauvine,maux,mavis,maw,mawk,mawkish,mawky,mawp,maxilla,maxim,maxima,maximal,maximed,maximum,maximus,maxixe,maxwell,may,maya,maybe,maybush,maycock,mayday,mayfish,mayhap,mayhem,maynt,mayor,mayoral,maypop,maysin,mayten,mayweed,maza,mazame,mazard,maze,mazed,mazedly,mazeful,mazer,mazic,mazily,mazuca,mazuma,mazurka,mazut,mazy,mazzard,mbalolo,mbori,me,meable,mead,meader,meadow,meadowy,meager,meagre,meak,meal,mealer,mealies,mealily,mealman,mealy,mean,meander,meaned,meaner,meaning,meanish,meanly,meant,mease,measle,measled,measles,measly,measure,meat,meatal,meated,meatily,meatman,meatus,meaty,mecate,mecon,meconic,meconin,medal,medaled,medalet,meddle,meddler,media,mediacy,mediad,medial,median,mediant,mediate,medic,medical,medico,mediety,medimn,medimno,medino,medio,medium,medius,medlar,medley,medrick,medulla,medusal,medusan,meebos,meece,meed,meek,meeken,meekly,meered,meerkat,meese,meet,meeten,meeter,meeting,meetly,megabar,megaerg,megafog,megapod,megaron,megaton,megerg,megilp,megmho,megohm,megrim,mehalla,mehari,mehtar,meile,mein,meinie,meio,meiobar,meiosis,meiotic,meith,mel,mela,melada,melagra,melam,melamed,melange,melanic,melanin,melano,melasma,melch,meld,melder,meldrop,mele,melee,melena,melene,melenic,melic,melilot,meline,melisma,melitis,mell,mellate,mellay,meller,mellit,mellite,mellon,mellow,mellowy,melodia,melodic,melody,meloe,meloid,melon,melonry,melos,melosa,melt,meltage,melted,melter,melters,melting,melton,mem,member,membral,memento,meminna,memo,memoir,memoria,memory,men,menace,menacer,menacme,menage,menald,mend,mendee,mender,mending,mendole,mends,menfolk,meng,menhir,menial,meninx,menkind,mennom,mensa,mensal,mense,menses,mensk,mensual,mental,mentary,menthol,menthyl,mention,mentor,mentum,menu,meny,menyie,menzie,merbaby,mercal,mercer,mercery,merch,merchet,mercy,mere,merel,merely,merfold,merfolk,merge,merger,mergh,meriah,merice,meril,merism,merist,merit,merited,meriter,merk,merkhet,merkin,merl,merle,merlin,merlon,mermaid,merman,mero,merop,meropia,meros,merrily,merrow,merry,merse,mesa,mesad,mesail,mesal,mesally,mesange,mesarch,mescal,mese,mesem,mesenna,mesh,meshed,meshy,mesiad,mesial,mesian,mesic,mesilla,mesion,mesityl,mesne,meso,mesobar,mesode,mesodic,mesole,meson,mesonic,mesopic,mespil,mess,message,messan,messe,messer,messet,messily,messin,messing,messman,messor,messrs,messtin,messy,mestee,mester,mestiza,mestizo,mestome,met,meta,metad,metage,metal,metaler,metamer,metanym,metate,metayer,mete,metel,meteor,meter,methane,methene,mether,methid,methide,methine,method,methyl,metic,metier,metis,metochy,metonym,metope,metopic,metopon,metra,metreta,metrete,metria,metric,metrics,metrify,metrist,mettar,mettle,mettled,metusia,metze,meuse,meute,mew,meward,mewer,mewl,mewler,mezcal,mezuzah,mezzo,mho,mi,miamia,mian,miaow,miaower,mias,miasm,miasma,miasmal,miasmic,miaul,miauler,mib,mica,micate,mice,micelle,miche,micher,miching,micht,mick,mickle,mico,micrify,micro,microbe,microhm,micron,miction,mid,midday,midden,middle,middler,middy,mide,midge,midget,midgety,midgy,midiron,midland,midleg,midmain,midmorn,midmost,midnoon,midpit,midrash,midrib,midriff,mids,midship,midst,midtap,midvein,midward,midway,midweek,midwife,midwise,midyear,mien,miff,miffy,mig,might,mightnt,mighty,miglio,mignon,migrant,migrate,mihrab,mijl,mikado,mike,mikie,mil,mila,milady,milch,milcher,milchy,mild,milden,milder,mildew,mildewy,mildish,mildly,mile,mileage,miler,mileway,milfoil,milha,miliary,milieu,militia,milium,milk,milken,milker,milkily,milking,milkman,milksop,milky,mill,milla,millage,milldam,mille,milled,miller,millet,millful,milliad,millile,milline,milling,million,millman,milner,milo,milord,milpa,milreis,milsey,milsie,milt,milter,milty,milvine,mim,mima,mimbar,mimble,mime,mimeo,mimer,mimesis,mimetic,mimic,mimical,mimicry,mimine,mimly,mimmest,mimmock,mimmood,mimmoud,mimosis,mimp,mimsey,min,mina,minable,minar,minaret,minaway,mince,mincer,mincing,mind,minded,minder,mindful,minding,mine,miner,mineral,minery,mines,minette,ming,minge,mingle,mingler,mingy,minhag,minhah,miniate,minibus,minicam,minify,minikin,minim,minima,minimal,minimum,minimus,mining,minion,minish,minium,miniver,minivet,mink,minkery,minkish,minnie,minning,minnow,minny,mino,minoize,minor,minot,minster,mint,mintage,minter,mintman,minty,minuend,minuet,minus,minute,minuter,minutia,minx,minxish,miny,minyan,miqra,mir,mirach,miracle,mirador,mirage,miragy,mirate,mirbane,mird,mirdaha,mire,mirid,mirific,mirish,mirk,miro,mirror,mirrory,mirth,miry,mirza,misact,misadd,misaim,misally,misbias,misbill,misbind,misbode,misborn,misbusy,miscall,miscast,mischio,miscoin,miscook,miscrop,miscue,miscut,misdate,misdaub,misdeal,misdeed,misdeem,misdiet,misdo,misdoer,misdraw,mise,misease,misedit,miser,miserly,misery,misfare,misfile,misfire,misfit,misfond,misform,misgive,misgo,misgrow,mishap,mishmee,misjoin,miskeep,misken,miskill,misknow,misky,mislay,mislead,mislear,misled,mislest,mislike,mislive,mismade,mismake,mismate,mismove,misname,misobey,mispage,mispart,mispay,mispick,misplay,misput,misrate,misread,misrule,miss,missal,missay,misseem,missel,misset,missile,missing,mission,missis,missish,missive,misstay,misstep,missy,mist,mistake,mistbow,misted,mistell,mistend,mister,misterm,mistful,mistic,mistide,mistify,mistily,mistime,mistle,mistone,mistook,mistral,mistry,misturn,misty,misura,misuse,misuser,miswed,miswish,misword,misyoke,mite,miter,mitered,miterer,mitis,mitome,mitosis,mitotic,mitra,mitral,mitrate,mitre,mitrer,mitt,mitten,mitty,mity,miurus,mix,mixable,mixed,mixedly,mixen,mixer,mixhill,mixible,mixite,mixtion,mixture,mixy,mizmaze,mizzen,mizzle,mizzler,mizzly,mizzy,mneme,mnemic,mnesic,mnestic,mnioid,mo,moan,moanful,moaning,moat,mob,mobable,mobber,mobbish,mobbism,mobbist,mobby,mobcap,mobed,mobile,moble,moblike,mobship,mobsman,mobster,mocha,mochras,mock,mockado,mocker,mockery,mockful,mocmain,mocuck,modal,modally,mode,model,modeler,modena,modern,modest,modesty,modicum,modify,modish,modist,modiste,modius,modular,module,modulo,modulus,moellon,mofette,moff,mog,mogador,mogdad,moggan,moggy,mogo,moguey,moha,mohabat,mohair,mohar,mohel,moho,mohr,mohur,moider,moidore,moieter,moiety,moil,moiler,moiles,moiley,moiling,moineau,moio,moire,moise,moist,moisten,moistly,moisty,moit,moity,mojarra,mojo,moke,moki,moko,moksha,mokum,moky,mola,molal,molar,molary,molassy,molave,mold,molder,moldery,molding,moldy,mole,moleism,moler,molest,molimen,moline,molka,molland,molle,mollie,mollify,mollusk,molly,molman,moloid,moloker,molompi,molosse,molpe,molt,molten,molter,moly,mombin,momble,mome,moment,momenta,momism,momme,mommet,mommy,momo,mon,mona,monad,monadic,monaene,monal,monarch,monas,monase,monaxon,mone,monel,monepic,moner,moneral,moneran,moneric,moneron,monesia,money,moneyed,moneyer,mong,monger,mongery,mongler,mongrel,mongst,monial,moniker,monism,monist,monitor,monk,monkdom,monkery,monkess,monkey,monkish,monkism,monkly,monny,mono,monoazo,monocle,monocot,monodic,monody,monoid,monomer,mononch,monont,mononym,monose,monotic,monsoon,monster,montage,montana,montane,montant,monte,montem,month,monthly,monthon,montjoy,monton,monture,moo,mooch,moocha,moocher,mood,mooder,moodily,moodish,moodle,moody,mooing,mool,moolet,mools,moolum,moon,moonack,mooned,mooner,moonery,mooneye,moonily,mooning,moonish,moonite,moonja,moonjah,moonlet,moonlit,moonman,moonset,moonway,moony,moop,moor,moorage,mooring,moorish,moorman,moorn,moorpan,moors,moorup,moory,moosa,moose,moosey,moost,moot,mooter,mooth,mooting,mootman,mop,mopane,mope,moper,moph,mophead,moping,mopish,mopla,mopper,moppet,moppy,mopsy,mopus,mor,mora,moraine,moral,morale,morally,morals,morass,morassy,morat,morate,moray,morbid,morbify,mordant,mordent,mordore,more,moreen,moreish,morel,morella,morello,mores,morfrey,morg,morga,morgan,morgay,morgen,morglay,morgue,moric,moriche,morin,morinel,morion,morkin,morlop,mormaor,mormo,mormon,mormyr,mormyre,morn,morne,morned,morning,moro,moroc,morocco,moron,moroncy,morong,moronic,moronry,morose,morosis,morph,morphea,morphew,morphia,morphic,morphon,morris,morrow,morsal,morse,morsel,morsing,morsure,mort,mortal,mortar,mortary,morth,mortier,mortify,mortise,morula,morular,morule,morvin,morwong,mosaic,mosaist,mosette,mosey,mosker,mosque,moss,mossed,mosser,mossery,mossful,mossy,most,moste,mostly,mot,mote,moted,motel,moter,motet,motey,moth,mothed,mother,mothery,mothy,motif,motific,motile,motion,motive,motley,motmot,motor,motored,motoric,motory,mott,motte,mottle,mottled,mottler,motto,mottoed,motyka,mou,mouche,moud,moudie,moudy,mouflon,mouille,moujik,moul,mould,moulded,moule,moulin,mouls,moulter,mouly,mound,moundy,mount,mounted,mounter,moup,mourn,mourner,mouse,mouser,mousery,mousey,mousily,mousing,mousle,mousmee,mousse,moustoc,mousy,mout,moutan,mouth,mouthed,mouther,mouthy,mouton,mouzah,movable,movably,movant,move,mover,movie,moving,mow,mowable,mowana,mowburn,mowch,mowcht,mower,mowha,mowie,mowing,mowland,mown,mowra,mowrah,mowse,mowt,mowth,moxa,moy,moyen,moyenne,moyite,moyle,moyo,mozing,mpret,mu,muang,mubarat,mucago,mucaro,mucedin,much,muchly,mucic,mucid,mucific,mucigen,mucin,muck,mucker,mucket,muckite,muckle,muckman,muckna,mucksy,mucky,mucluc,mucoid,muconic,mucopus,mucor,mucosa,mucosal,mucose,mucous,mucro,mucus,mucusin,mud,mudar,mudbank,mudcap,mudd,mudde,mudden,muddify,muddily,mudding,muddish,muddle,muddler,muddy,mudee,mudfish,mudflow,mudhead,mudhole,mudir,mudiria,mudland,mudlark,mudless,mudra,mudsill,mudweed,mudwort,muermo,muezzin,muff,muffed,muffet,muffin,muffish,muffle,muffled,muffler,mufflin,muffy,mufti,mufty,mug,muga,mugful,mugg,mugger,mugget,muggily,muggins,muggish,muggles,muggy,mugient,mugweed,mugwort,mugwump,muid,muir,muist,mukluk,muktar,mukti,mulatta,mulatto,mulch,mulcher,mulct,mulder,mule,muleman,muleta,muletta,muley,mulga,mulier,mulish,mulism,mulita,mulk,mull,mulla,mullah,mullar,mullein,muller,mullet,mullets,mulley,mullid,mullion,mullite,mullock,mulloid,mulmul,mulse,mulsify,mult,multum,multure,mum,mumble,mumbler,mummer,mummery,mummick,mummied,mummify,mumming,mummy,mumness,mump,mumper,mumpish,mumps,mun,munch,muncher,munchet,mund,mundane,mundic,mundify,mundil,mundle,mung,munga,munge,mungey,mungo,mungofa,munguba,mungy,munific,munity,munj,munjeet,munnion,munshi,munt,muntin,muntjac,mura,murage,mural,muraled,murally,murchy,murder,murdrum,mure,murex,murexan,murga,murgavi,murgeon,muriate,muricid,murid,murine,murinus,muriti,murium,murk,murkily,murkish,murkly,murky,murlin,murly,murmur,murphy,murra,murrain,murre,murrey,murrina,murshid,muruxi,murva,murza,musal,musang,musar,muscade,muscat,muscid,muscle,muscled,muscly,muscoid,muscone,muscose,muscot,muscovy,muscule,muse,mused,museful,museist,muser,musery,musette,museum,mush,musha,mushaa,mushed,musher,mushily,mushla,mushru,mushy,music,musical,musico,musie,musily,musimon,musing,musk,muskat,muskeg,musket,muskie,muskish,muskrat,musky,muslin,musnud,musquaw,musrol,muss,mussal,mussel,mussily,mussuk,mussy,must,mustang,mustard,mustee,muster,mustify,mustily,mustnt,musty,muta,mutable,mutably,mutage,mutant,mutase,mutate,mutch,mute,mutedly,mutely,muth,mutic,mutiny,mutism,mutist,mutive,mutsje,mutt,mutter,mutton,muttony,mutual,mutuary,mutule,mutuum,mux,muyusa,muzhik,muzz,muzzily,muzzle,muzzler,muzzy,my,myal,myalgia,myalgic,myalism,myall,myarian,myatony,mycele,mycelia,mycoid,mycose,mycosin,mycosis,mycotic,mydine,myelic,myelin,myeloic,myeloid,myeloma,myelon,mygale,mygalid,myiasis,myiosis,myitis,mykiss,mymarid,myna,myocele,myocyte,myogen,myogram,myoid,myology,myoma,myomere,myoneme,myope,myophan,myopia,myopic,myops,myopy,myosin,myosis,myosote,myotic,myotome,myotomy,myotony,myowun,myoxine,myrcene,myrcia,myriad,myriare,myrica,myricin,myricyl,myringa,myron,myronic,myrosin,myrrh,myrrhed,myrrhic,myrrhol,myrrhy,myrtal,myrtle,myrtol,mysel,myself,mysell,mysid,mysoid,mysost,myst,mystax,mystery,mystes,mystic,mystify,myth,mythify,mythism,mythist,mythize,mythos,mythus,mytilid,myxa,myxemia,myxo,myxoid,myxoma,myxopod,myzont,n,na,naa,naam,nab,nabak,nabber,nabk,nabla,nable,nabob,nabobry,nabs,nacarat,nace,nacelle,nach,nachani,nacket,nacre,nacred,nacrine,nacrite,nacrous,nacry,nadder,nadir,nadiral,nae,naebody,naegate,nael,naether,nag,naga,nagaika,nagana,nagara,nagger,naggin,nagging,naggish,naggle,naggly,naggy,naght,nagmaal,nagman,nagnag,nagnail,nagor,nagsman,nagster,nagual,naiad,naiant,naid,naif,naifly,naig,naigie,naik,nail,nailbin,nailer,nailery,nailing,nailrod,naily,nain,nainsel,naio,naipkin,nairy,nais,naish,naither,naive,naively,naivete,naivety,nak,nake,naked,nakedly,naker,nakhod,nakhoda,nako,nakong,nakoo,nallah,nam,namable,namaqua,namaz,namda,name,namely,namer,naming,nammad,nan,nana,nancy,nandi,nandine,nandow,nandu,nane,nanes,nanga,nanism,nankeen,nankin,nanny,nanoid,nanpie,nant,nantle,naology,naos,nap,napa,napal,napalm,nape,napead,naperer,napery,naphtha,naphtho,naphtol,napkin,napless,napoo,nappe,napped,napper,napping,nappy,napron,napu,nar,narcism,narcist,narcoma,narcose,narcous,nard,nardine,nardoo,nares,nargil,narial,naric,narica,narine,nark,narky,narr,narra,narras,narrate,narrow,narrowy,narthex,narwhal,nary,nasab,nasal,nasalis,nasally,nasard,nascent,nasch,nash,nashgab,nashgob,nasi,nasial,nasion,nasitis,nasrol,nast,nastic,nastika,nastily,nasty,nasus,nasute,nasutus,nat,nataka,natal,natals,natant,natator,natch,nates,nathe,nather,nation,native,natr,natrium,natron,natter,nattily,nattle,natty,natuary,natural,nature,naucrar,nauger,naught,naughty,naumk,naunt,nauntle,nausea,naut,nautch,nauther,nautic,nautics,naval,navally,navar,navarch,nave,navel,naveled,navet,navette,navew,navite,navvy,navy,naw,nawab,nawt,nay,nayaur,naysay,nayward,nayword,naze,nazim,nazir,ne,nea,neal,neanic,neap,neaped,nearby,nearest,nearish,nearly,neat,neaten,neath,neatify,neatly,neb,neback,nebbed,nebbuck,nebbuk,nebby,nebel,nebris,nebula,nebulae,nebular,nebule,neck,neckar,necked,necker,neckful,necking,necklet,necktie,necrose,nectar,nectary,nedder,neddy,nee,neebor,neebour,need,needer,needful,needham,needily,needing,needle,needled,needler,needles,needly,needs,needy,neeger,neeld,neele,neem,neep,neepour,neer,neese,neet,neetup,neeze,nef,nefast,neffy,neftgil,negate,negator,neger,neglect,negrine,negro,negus,nei,neif,neigh,neigher,neiper,neist,neither,nekton,nelson,nema,nematic,nemeses,nemesic,nemoral,nenta,neo,neocyte,neogamy,neolith,neology,neon,neonate,neorama,neossin,neoteny,neotype,neoza,nep,neper,nephele,nephesh,nephew,nephria,nephric,nephron,nephros,nepman,nepotal,nepote,nepotic,nereite,nerine,neritic,nerval,nervate,nerve,nerver,nervid,nervily,nervine,nerving,nervish,nervism,nervose,nervous,nervule,nervure,nervy,nese,nesh,neshly,nesiote,ness,nest,nestage,nester,nestful,nestle,nestler,nesty,net,netball,netbush,netcha,nete,neter,netful,neth,nether,neti,netleaf,netlike,netman,netop,netsman,netsuke,netted,netter,netting,nettle,nettler,nettly,netty,netwise,network,neuma,neume,neumic,neurad,neural,neurale,neuric,neurin,neurine,neurism,neurite,neuroid,neuroma,neuron,neurone,neurula,neuter,neutral,neutron,neve,nevel,never,nevo,nevoid,nevoy,nevus,new,newcal,newcome,newel,newelty,newing,newings,newish,newly,newness,news,newsboy,newsful,newsman,newsy,newt,newtake,newton,nexal,next,nextly,nexum,nexus,neyanda,ngai,ngaio,ngapi,ni,niacin,niata,nib,nibbana,nibbed,nibber,nibble,nibbler,nibby,niblick,niblike,nibong,nibs,nibsome,nice,niceish,nicely,nicety,niche,nicher,nick,nickel,nicker,nickey,nicking,nickle,nicky,nicolo,nicotia,nicotic,nictate,nid,nidal,nidana,niddick,niddle,nide,nidge,nidget,nidgety,nidi,nidify,niding,nidor,nidulus,nidus,niece,nielled,niello,niepa,nieve,nieveta,nife,niffer,nific,nifle,nifling,nifty,nig,niggard,nigger,niggery,niggle,niggler,niggly,nigh,nighly,night,nighted,nightie,nightly,nights,nignay,nignye,nigori,nigre,nigrify,nigrine,nigrous,nigua,nikau,nil,nilgai,nim,nimb,nimbed,nimbi,nimble,nimbly,nimbose,nimbus,nimiety,niminy,nimious,nimmer,nimshi,nincom,nine,ninepin,nineted,ninety,ninny,ninon,ninth,ninthly,nintu,ninut,niobate,niobic,niobite,niobium,niobous,niog,niota,nip,nipa,nipper,nippers,nippily,nipping,nipple,nippy,nipter,nirles,nirvana,nisei,nishiki,nisnas,nispero,nisse,nisus,nit,nitch,nitency,niter,nitered,nither,nithing,nitid,nito,niton,nitrate,nitric,nitride,nitrify,nitrile,nitrite,nitro,nitrous,nitryl,nitter,nitty,nitwit,nival,niveous,nix,nixie,niyoga,nizam,nizamut,nizy,njave,no,noa,nob,nobber,nobbily,nobble,nobbler,nobbut,nobby,noble,nobley,nobly,nobody,nobs,nocake,nocent,nock,nocket,nocktat,noctuid,noctule,nocturn,nocuity,nocuous,nod,nodal,nodated,nodder,nodding,noddle,noddy,node,noded,nodi,nodiak,nodical,nodose,nodous,nodular,nodule,noduled,nodulus,nodus,noel,noetic,noetics,nog,nogada,nogal,noggen,noggin,nogging,noghead,nohow,noil,noilage,noiler,noily,noint,noir,noise,noisily,noisome,noisy,nokta,noll,nolle,nolo,noma,nomad,nomadic,nomancy,nomarch,nombril,nome,nomial,nomic,nomina,nominal,nominee,nominy,nomism,nomisma,nomos,non,nonacid,nonact,nonage,nonagon,nonaid,nonair,nonane,nonary,nonbase,nonce,noncock,noncom,noncome,noncon,nonda,nondo,none,nonego,nonene,nonent,nonepic,nones,nonet,nonevil,nonfact,nonfarm,nonfat,nonfood,nonform,nonfrat,nongas,nongod,nongold,nongray,nongrey,nonhero,nonic,nonion,nonius,nonjury,nonlife,nonly,nonnant,nonnat,nonoic,nonoily,nonomad,nonpaid,nonpar,nonpeak,nonplus,nonpoet,nonport,nonrun,nonsale,nonsane,nonself,nonsine,nonskid,nonslip,nonstop,nonsuit,nontan,nontax,nonterm,nonuple,nonuse,nonuser,nonwar,nonya,nonyl,nonylic,nonzero,noodle,nook,nooked,nookery,nooking,nooklet,nooky,noology,noon,noonday,nooning,noonlit,noop,noose,nooser,nopal,nopalry,nope,nor,norard,norate,noreast,norelin,norgine,nori,noria,norie,norimon,norite,norland,norm,norma,normal,norsel,north,norther,norward,norwest,nose,nosean,nosed,nosegay,noser,nosey,nosine,nosing,nosism,nostic,nostril,nostrum,nosy,not,notable,notably,notaeal,notaeum,notal,notan,notary,notate,notator,notch,notched,notchel,notcher,notchy,note,noted,notedly,notekin,notelet,noter,nother,nothing,nothous,notice,noticer,notify,notion,notitia,notour,notself,notum,nougat,nought,noun,nounal,nounize,noup,nourice,nourish,nous,nouther,nova,novalia,novate,novator,novcic,novel,novelet,novella,novelly,novelry,novelty,novem,novena,novene,novice,novity,now,nowaday,noway,noways,nowed,nowel,nowhat,nowhen,nowhere,nowhit,nowise,nowness,nowt,nowy,noxa,noxal,noxally,noxious,noy,noyade,noyau,nozzle,nozzler,nth,nu,nuance,nub,nubbin,nubble,nubbly,nubby,nubia,nubile,nucal,nucha,nuchal,nucin,nucleal,nuclear,nuclei,nuclein,nucleon,nucleus,nuclide,nucule,nuculid,nudate,nuddle,nude,nudely,nudge,nudger,nudiped,nudish,nudism,nudist,nudity,nugator,nuggar,nugget,nuggety,nugify,nuke,nul,null,nullah,nullify,nullism,nullity,nullo,numb,number,numbing,numble,numbles,numbly,numda,numdah,numen,numeral,numero,nummary,nummi,nummus,numud,nun,nunatak,nunbird,nunch,nuncio,nuncle,nundine,nunhood,nunky,nunlet,nunlike,nunnari,nunnery,nunni,nunnify,nunnish,nunship,nuptial,nuque,nuraghe,nurhag,nurly,nurse,nurser,nursery,nursing,nursle,nursy,nurture,nusfiah,nut,nutant,nutate,nutcake,nutgall,nuthook,nutlet,nutlike,nutmeg,nutpick,nutria,nutrice,nutrify,nutseed,nutted,nutter,nuttery,nuttily,nutting,nuttish,nutty,nuzzer,nuzzle,nyanza,nye,nylast,nylon,nymil,nymph,nympha,nymphae,nymphal,nymphet,nymphic,nymphid,nymphly,nyxis,o,oadal,oaf,oafdom,oafish,oak,oaken,oaklet,oaklike,oakling,oakum,oakweb,oakwood,oaky,oam,oar,oarage,oarcock,oared,oarfish,oarhole,oarial,oaric,oaritic,oaritis,oarium,oarless,oarlike,oarlock,oarlop,oarman,oarsman,oarweed,oary,oasal,oasean,oases,oasis,oasitic,oast,oat,oatbin,oatcake,oatear,oaten,oatfowl,oath,oathay,oathed,oathful,oathlet,oatland,oatlike,oatmeal,oatseed,oaty,oban,obclude,obe,obeah,obeche,obeism,obelia,obeliac,obelial,obelion,obelisk,obelism,obelize,obelus,obese,obesely,obesity,obex,obey,obeyer,obi,obispo,obit,obitual,object,objure,oblate,obley,oblige,obliged,obligee,obliger,obligor,oblique,oblong,obloquy,oboe,oboist,obol,obolary,obole,obolet,obolus,oboval,obovate,obovoid,obscene,obscure,obsede,obsequy,observe,obsess,obtain,obtect,obtest,obtrude,obtund,obtuse,obverse,obvert,obviate,obvious,obvolve,ocarina,occamy,occiput,occlude,occluse,occult,occupy,occur,ocean,oceaned,oceanet,oceanic,ocellar,ocelli,ocellus,oceloid,ocelot,och,ochava,ochavo,ocher,ochery,ochone,ochrea,ochro,ochroid,ochrous,ocht,ock,oclock,ocote,ocque,ocracy,ocrea,ocreate,octad,octadic,octagon,octan,octane,octant,octapla,octarch,octary,octaval,octave,octavic,octavo,octene,octet,octic,octine,octoad,octoate,octofid,octoic,octoid,octonal,octoon,octoped,octopi,octopod,octopus,octose,octoyl,octroi,octroy,octuor,octuple,octuply,octyl,octyne,ocuby,ocular,oculary,oculate,oculist,oculus,od,oda,odacoid,odal,odalisk,odaller,odalman,odd,oddish,oddity,oddlegs,oddly,oddman,oddment,oddness,odds,oddsman,ode,odel,odelet,odeon,odeum,odic,odinite,odious,odist,odium,odology,odontic,odoom,odor,odorant,odorate,odored,odorful,odorize,odorous,odso,odum,odyl,odylic,odylism,odylist,odylize,oe,oecist,oecus,oenin,oenolin,oenomel,oer,oersted,oes,oestrid,oestrin,oestrum,oestrus,of,off,offal,offbeat,offcast,offcome,offcut,offend,offense,offer,offeree,offerer,offeror,offhand,office,officer,offing,offish,offlet,offlook,offscum,offset,offtake,offtype,offward,oflete,oft,often,oftens,ofter,oftest,oftly,oftness,ofttime,ogaire,ogam,ogamic,ogdoad,ogdoas,ogee,ogeed,ogham,oghamic,ogival,ogive,ogived,ogle,ogler,ogmic,ogre,ogreish,ogreism,ogress,ogrish,ogrism,ogtiern,ogum,oh,ohelo,ohia,ohm,ohmage,ohmic,oho,ohoy,oidioid,oii,oil,oilbird,oilcan,oilcoat,oilcup,oildom,oiled,oiler,oilery,oilfish,oilhole,oilily,oilless,oillet,oillike,oilman,oilseed,oilskin,oilway,oily,oilyish,oime,oinomel,oint,oisin,oitava,oka,okapi,okee,okenite,oket,oki,okia,okonite,okra,okrug,olam,olamic,old,olden,older,oldish,oldland,oldness,oldster,oldwife,oleana,olease,oleate,olefin,olefine,oleic,olein,olena,olenid,olent,oleo,oleose,oleous,olfact,olfacty,oliban,olid,oligist,olio,olitory,oliva,olivary,olive,olived,olivet,olivil,olivile,olivine,olla,ollamh,ollapod,ollock,olm,ologist,ology,olomao,olona,oloroso,olpe,oltonde,oltunna,olycook,olykoek,om,omagra,omalgia,omao,omasum,omber,omega,omegoid,omelet,omen,omened,omental,omentum,omer,omicron,omina,ominous,omit,omitis,omitter,omlah,omneity,omniana,omnibus,omnific,omnify,omnist,omnium,on,ona,onager,onagra,onanism,onanist,onca,once,oncetta,oncia,oncin,oncome,oncosis,oncost,ondatra,ondine,ondy,one,onefold,onegite,onehow,oneiric,oneism,onement,oneness,oner,onerary,onerous,onery,oneself,onetime,oneyer,onfall,onflow,ongaro,ongoing,onicolo,onion,onionet,oniony,onium,onkos,onlay,onlepy,onliest,onlook,only,onmarch,onrush,ons,onset,onshore,onside,onsight,onstand,onstead,onsweep,ontal,onto,onus,onward,onwards,onycha,onychia,onychin,onym,onymal,onymity,onymize,onymous,onymy,onyx,onyxis,onza,ooblast,oocyst,oocyte,oodles,ooecial,ooecium,oofbird,ooftish,oofy,oogamy,oogeny,ooglea,oogone,oograph,ooid,ooidal,oolak,oolemma,oolite,oolitic,oolly,oologic,oology,oolong,oomancy,oometer,oometry,oons,oont,oopak,oophore,oophyte,ooplasm,ooplast,oopod,oopodal,oorali,oord,ooscope,ooscopy,oosperm,oospore,ootheca,ootid,ootype,ooze,oozily,oozooid,oozy,opacate,opacify,opacite,opacity,opacous,opah,opal,opaled,opaline,opalish,opalize,opaloid,opaque,ope,opelet,open,opener,opening,openly,opera,operae,operand,operant,operate,opercle,operose,ophic,ophioid,ophite,ophitic,ophryon,opianic,opianyl,opiate,opiatic,opiism,opinant,opine,opiner,opinion,opium,opossum,oppidan,oppose,opposed,opposer,opposit,oppress,oppugn,opsonic,opsonin,opsy,opt,optable,optably,optant,optate,optic,optical,opticon,optics,optimal,optime,optimum,option,optive,opulent,opulus,opus,oquassa,or,ora,orach,oracle,orad,orage,oral,oraler,oralism,oralist,orality,oralize,orally,oralogy,orang,orange,oranger,orangey,orant,orarian,orarion,orarium,orary,orate,oration,orator,oratory,oratrix,orb,orbed,orbic,orbical,orbicle,orbific,orbit,orbital,orbitar,orbite,orbless,orblet,orby,orc,orcanet,orcein,orchard,orchat,orchel,orchic,orchid,orchil,orcin,orcinol,ordain,ordeal,order,ordered,orderer,orderly,ordinal,ordinar,ordinee,ordines,ordu,ordure,ore,oread,orectic,orellin,oreman,orenda,oreweed,orewood,orexis,orf,orfgild,organ,organal,organdy,organer,organic,organon,organry,organum,orgasm,orgeat,orgia,orgiac,orgiacs,orgiasm,orgiast,orgic,orgue,orgy,orgyia,oribi,oriel,oriency,orient,orifice,oriform,origan,origin,orignal,orihon,orillon,oriole,orison,oristic,orle,orlean,orlet,orlo,orlop,ormer,ormolu,orna,ornate,ornery,ornis,ornoite,oroanal,orogen,orogeny,oroide,orology,oronoco,orotund,orphan,orpheon,orpheum,orphrey,orpine,orrery,orrhoid,orris,orsel,orselle,ort,ortalid,ortet,orthal,orthian,orthic,orthid,orthite,ortho,orthose,orthron,ortiga,ortive,ortolan,ortygan,ory,oryssid,os,osamin,osamine,osazone,oscella,oscheal,oscin,oscine,oscnode,oscular,oscule,osculum,ose,osela,oshac,oside,osier,osiered,osiery,osmate,osmatic,osmesis,osmetic,osmic,osmin,osmina,osmious,osmium,osmose,osmosis,osmotic,osmous,osmund,osone,osophy,osprey,ossal,osse,ossein,osselet,osseous,ossicle,ossific,ossify,ossuary,osteal,ostein,ostemia,ostent,osteoid,osteoma,ostial,ostiary,ostiate,ostiole,ostitis,ostium,ostmark,ostosis,ostrich,otalgia,otalgic,otalgy,otarian,otarine,otary,otate,other,othmany,otiant,otiatry,otic,otidine,otidium,otiose,otitic,otitis,otkon,otocyst,otolite,otolith,otology,otosis,ototomy,ottar,otter,otterer,otto,oturia,ouabain,ouabaio,ouabe,ouakari,ouch,ouenite,ouf,ough,ought,oughtnt,oukia,oulap,ounce,ounds,ouphe,ouphish,our,ourie,ouroub,ours,ourself,oust,ouster,out,outact,outage,outarde,outask,outawe,outback,outbake,outban,outbar,outbark,outbawl,outbeam,outbear,outbeg,outbent,outbid,outblot,outblow,outbond,outbook,outborn,outbow,outbowl,outbox,outbrag,outbray,outbred,outbud,outbulk,outburn,outbuy,outbuzz,outby,outcant,outcase,outcast,outcity,outcome,outcrop,outcrow,outcry,outcull,outcure,outcut,outdare,outdate,outdo,outdoer,outdoor,outdraw,outdure,outeat,outecho,outed,outedge,outen,outer,outerly,outeye,outeyed,outface,outfall,outfame,outfast,outfawn,outfeat,outfish,outfit,outflow,outflue,outflux,outfly,outfold,outfool,outfoot,outform,outfort,outgain,outgame,outgang,outgas,outgate,outgaze,outgive,outglad,outglow,outgnaw,outgo,outgoer,outgone,outgrin,outgrow,outgun,outgush,outhaul,outhear,outheel,outher,outhire,outhiss,outhit,outhold,outhowl,outhue,outhunt,outhurl,outhut,outhymn,outing,outish,outjazz,outjest,outjet,outjinx,outjump,outjut,outkick,outkill,outking,outkiss,outknee,outlaid,outland,outlash,outlast,outlaw,outlay,outlean,outleap,outler,outlet,outlie,outlier,outlimb,outlimn,outline,outlip,outlive,outlook,outlord,outlove,outlung,outly,outman,outmate,outmode,outmost,outmove,outname,outness,outnook,outoven,outpace,outpage,outpart,outpass,outpath,outpay,outpeal,outpeep,outpeer,outpick,outpipe,outpity,outplan,outplay,outplod,outplot,outpoll,outpomp,outpop,outport,outpost,outpour,outpray,outpry,outpull,outpurl,outpush,output,outrace,outrage,outrail,outrank,outrant,outrap,outrate,outrave,outray,outre,outread,outrede,outrick,outride,outrig,outring,outroar,outroll,outroot,outrove,outrow,outrun,outrush,outsail,outsay,outsea,outseam,outsee,outseek,outsell,outsert,outset,outshot,outshow,outshut,outside,outsift,outsigh,outsin,outsing,outsit,outsize,outskip,outsoar,outsole,outspan,outspin,outspit,outspue,outstay,outstep,outsuck,outsulk,outsum,outswim,outtalk,outtask,outtear,outtell,outtire,outtoil,outtop,outtrot,outturn,outvie,outvier,outvote,outwait,outwake,outwale,outwalk,outwall,outwar,outward,outwash,outwave,outwear,outweed,outweep,outwell,outwent,outwick,outwile,outwill,outwind,outwing,outwish,outwit,outwith,outwoe,outwood,outword,outwore,outwork,outworn,outyard,outyell,outyelp,outzany,ouzel,ova,oval,ovalish,ovalize,ovally,ovaloid,ovant,ovarial,ovarian,ovarin,ovarium,ovary,ovate,ovated,ovately,ovation,oven,ovenful,ovenly,ovenman,over,overact,overage,overall,overapt,overarm,overawe,overawn,overbet,overbid,overbig,overbit,overbow,overbuy,overby,overcap,overcow,overcoy,overcry,overcup,overcut,overdo,overdry,overdue,overdye,overeat,overegg,overeye,overfag,overfar,overfat,overfed,overfee,overfew,overfit,overfix,overfly,overget,overgo,overgod,overgun,overhit,overhot,overink,overjob,overjoy,overlap,overlax,overlay,overleg,overlie,overlip,overlow,overly,overman,overmix,overnet,overnew,overpay,overpet,overply,overpot,overrim,overrun,oversad,oversea,oversee,overset,oversew,oversot,oversow,overt,overtax,overtip,overtly,overtoe,overtop,overuse,overway,overweb,overwet,overwin,ovest,ovey,ovicell,ovicide,ovicyst,oviduct,oviform,ovigerm,ovile,ovine,ovinia,ovipara,ovisac,ovism,ovist,ovistic,ovocyte,ovoid,ovoidal,ovolo,ovology,ovular,ovulary,ovulate,ovule,ovulist,ovum,ow,owd,owe,owelty,ower,owerby,owght,owing,owk,owl,owldom,owler,owlery,owlet,owlhead,owling,owlish,owlism,owllike,owly,own,owner,ownhood,ownness,ownself,owrehip,owrelay,owse,owsen,owser,owtchah,ox,oxacid,oxalan,oxalate,oxalic,oxalite,oxalyl,oxamate,oxamic,oxamid,oxamide,oxan,oxanate,oxane,oxanic,oxazine,oxazole,oxbane,oxberry,oxbird,oxbiter,oxblood,oxbow,oxboy,oxbrake,oxcart,oxcheek,oxea,oxeate,oxen,oxeote,oxer,oxetone,oxeye,oxfly,oxgang,oxgoad,oxhead,oxheal,oxheart,oxhide,oxhoft,oxhorn,oxhouse,oxhuvud,oxidant,oxidase,oxidate,oxide,oxidic,oxidize,oximate,oxime,oxland,oxlike,oxlip,oxman,oxonic,oxonium,oxozone,oxphony,oxreim,oxshoe,oxskin,oxtail,oxter,oxwort,oxy,oxyacid,oxygas,oxygen,oxyl,oxymel,oxyntic,oxyopia,oxysalt,oxytone,oyapock,oyer,oyster,ozena,ozonate,ozone,ozoned,ozonic,ozonide,ozonify,ozonize,ozonous,ozophen,ozotype,p,pa,paal,paar,paauw,pabble,pablo,pabouch,pabular,pabulum,pac,paca,pacable,pacate,pacay,pacaya,pace,paced,pacer,pachak,pachisi,pacific,pacify,pack,package,packer,packery,packet,packly,packman,packway,paco,pact,paction,pad,padder,padding,paddle,paddled,paddler,paddock,paddy,padella,padfoot,padge,padle,padlike,padlock,padnag,padre,padtree,paean,paegel,paegle,paenula,paeon,paeonic,paga,pagan,paganic,paganly,paganry,page,pageant,pagedom,pageful,pager,pagina,paginal,pagoda,pagrus,pagurid,pagus,pah,paha,pahi,pahlavi,pahmi,paho,pahutan,paigle,paik,pail,pailful,pailou,pain,pained,painful,paining,paint,painted,painter,painty,paip,pair,paired,pairer,pais,paisa,paiwari,pajama,pajock,pakchoi,pakeha,paktong,pal,palace,palaced,paladin,palaite,palama,palame,palanka,palar,palas,palatal,palate,palated,palatic,palaver,palay,palazzi,palch,pale,palea,paleate,paled,palely,paleola,paler,palet,paletot,palette,paletz,palfrey,palgat,pali,palikar,palila,palinal,paling,palisfy,palish,palkee,pall,palla,pallae,pallah,pallall,palled,pallet,palli,pallial,pallid,pallion,pallium,pallone,pallor,pally,palm,palma,palmad,palmar,palmary,palmate,palmed,palmer,palmery,palmful,palmist,palmite,palmito,palmo,palmula,palmus,palmy,palmyra,palolo,palp,palpal,palpate,palped,palpi,palpon,palpus,palsied,palster,palsy,palt,palter,paltry,paludal,paludic,palule,palulus,palus,paly,pam,pament,pamment,pampas,pampean,pamper,pampero,pampre,pan,panace,panacea,panache,panada,panade,panama,panaris,panary,panax,pancake,pand,panda,pandal,pandan,pandect,pandemy,pander,pandita,pandle,pandora,pandour,pandrop,pandura,pandy,pane,paned,paneity,panel,panela,paneler,panfil,panfish,panful,pang,pangamy,pangane,pangen,pangene,pangful,pangi,panhead,panic,panical,panicky,panicle,panisc,panisca,panisic,pank,pankin,panman,panmixy,panmug,pannade,pannage,pannam,panne,pannel,panner,pannery,pannier,panning,pannose,pannum,pannus,panocha,panoche,panoply,panoram,panse,panside,pansied,pansy,pant,pantas,panter,panther,pantie,panties,pantile,panting,pantle,pantler,panto,pantod,panton,pantoon,pantoum,pantry,pants,pantun,panty,panung,panurgy,panyar,paolo,paon,pap,papa,papable,papabot,papacy,papain,papal,papally,papalty,papane,papaw,papaya,papboat,pape,paper,papered,paperer,papern,papery,papess,papey,papilla,papion,papish,papism,papist,papize,papless,papmeat,papoose,pappi,pappose,pappox,pappus,pappy,papreg,paprica,paprika,papula,papular,papule,papyr,papyral,papyri,papyrin,papyrus,paquet,par,para,parable,paracme,parade,parader,parado,parados,paradox,parafle,parage,paragon,parah,paraiba,parale,param,paramo,parang,parao,parapet,paraph,parapod,pararek,parasol,paraspy,parate,paraxon,parbake,parboil,parcel,parch,parcher,parchy,parcook,pard,pardao,parded,pardesi,pardine,pardner,pardo,pardon,pare,parel,parella,paren,parent,parer,paresis,paretic,parfait,pargana,parge,parget,pargo,pari,pariah,parial,parian,paries,parify,parilla,parine,paring,parish,parisis,parison,parity,park,parka,parkee,parker,parkin,parking,parkish,parkway,parky,parlay,parle,parley,parling,parlish,parlor,parlous,parly,parma,parmak,parnas,parnel,paroch,parode,parodic,parodos,parody,paroecy,parol,parole,parolee,paroli,paronym,parotic,parotid,parotis,parous,parpal,parquet,parr,parrel,parrier,parrock,parrot,parroty,parry,parse,parsec,parser,parsley,parsnip,parson,parsony,part,partake,partan,parted,parter,partial,partile,partite,partlet,partly,partner,parto,partook,parture,party,parulis,parure,paruria,parvenu,parvis,parvule,pasan,pasang,paschal,pascual,pash,pasha,pashm,pasi,pasmo,pasquil,pasquin,pass,passade,passado,passage,passant,passe,passee,passen,passer,passewa,passing,passion,passir,passive,passkey,passman,passo,passout,passus,passway,past,paste,pasted,pastel,paster,pastern,pasteur,pastil,pastile,pastime,pasting,pastor,pastose,pastry,pasture,pasty,pasul,pat,pata,pataca,patacao,pataco,patagon,pataka,patamar,patao,patapat,pataque,patas,patball,patch,patcher,patchy,pate,patefy,patel,patella,paten,patency,patener,patent,pater,patera,patesi,path,pathed,pathema,pathic,pathlet,pathos,pathway,pathy,patible,patient,patina,patine,patined,patio,patly,patness,pato,patois,patola,patonce,patria,patrial,patrice,patrico,patrin,patriot,patrist,patrix,patrol,patron,patroon,patta,patte,pattee,patten,patter,pattern,pattu,patty,patu,patwari,paty,pau,paucify,paucity,paughty,paukpan,paular,paulie,paulin,paunch,paunchy,paup,pauper,pausal,pause,pauser,paussid,paut,pauxi,pavage,pavan,pavane,pave,paver,pavid,pavier,paving,pavior,paviour,pavis,paviser,pavisor,pavy,paw,pawdite,pawer,pawing,pawk,pawkery,pawkily,pawkrie,pawky,pawl,pawn,pawnage,pawnee,pawner,pawnie,pawnor,pawpaw,pax,paxilla,paxiuba,paxwax,pay,payable,payably,payday,payed,payee,payeny,payer,paying,payment,paynim,payoff,payong,payor,payroll,pea,peace,peach,peachen,peacher,peachy,peacoat,peacock,peacod,peafowl,peag,peage,peahen,peai,peaiism,peak,peaked,peaker,peakily,peaking,peakish,peaky,peal,pealike,pean,peanut,pear,pearl,pearled,pearler,pearlet,pearlin,pearly,peart,pearten,peartly,peasant,peasen,peason,peasy,peat,peatery,peatman,peaty,peavey,peavy,peba,pebble,pebbled,pebbly,pebrine,pecan,peccant,peccary,peccavi,pech,pecht,pecite,peck,pecked,pecker,pecket,peckful,peckish,peckle,peckled,peckly,pecky,pectase,pectate,pecten,pectic,pectin,pectize,pectora,pectose,pectous,pectus,ped,peda,pedage,pedagog,pedal,pedaler,pedant,pedary,pedate,pedated,pedder,peddle,peddler,pedee,pedes,pedesis,pedicab,pedicel,pedicle,pedion,pedlar,pedlary,pedocal,pedrail,pedrero,pedro,pedule,pedum,pee,peed,peek,peel,peele,peeled,peeler,peeling,peelman,peen,peenge,peeoy,peep,peeper,peepeye,peepy,peer,peerage,peerdom,peeress,peerie,peerly,peery,peesash,peeve,peeved,peever,peevish,peewee,peg,pega,pegall,pegasid,pegbox,pegged,pegger,pegging,peggle,peggy,pegless,peglet,peglike,pegman,pegwood,peho,peine,peisage,peise,peiser,peixere,pekan,pekin,pekoe,peladic,pelage,pelagic,pelamyd,pelanos,pelean,pelecan,pelf,pelican,pelick,pelike,peliom,pelioma,pelisse,pelite,pelitic,pell,pellage,pellar,pellard,pellas,pellate,peller,pellet,pellety,pellile,pellock,pelmet,pelon,peloria,peloric,pelorus,pelota,peloton,pelt,pelta,peltast,peltate,pelter,pelting,peltry,pelu,peludo,pelves,pelvic,pelvis,pembina,pemican,pen,penal,penally,penalty,penance,penang,penates,penbard,pence,pencel,pencil,pend,penda,pendant,pendent,pending,pendle,pendom,pendule,penfold,penful,pengo,penguin,penhead,penial,penide,penile,penis,penk,penlike,penman,penna,pennae,pennage,pennant,pennate,penner,pennet,penni,pennia,pennied,pennill,penning,pennon,penny,penrack,penship,pensile,pension,pensive,penster,pensum,pensy,pent,penta,pentace,pentad,pentail,pentane,pentene,pentine,pentit,pentite,pentode,pentoic,pentol,pentose,pentrit,pentyl,pentyne,penuchi,penult,penury,peon,peonage,peonism,peony,people,peopler,peoplet,peotomy,pep,pepful,pepino,peplos,peplum,peplus,pepo,pepper,peppery,peppily,peppin,peppy,pepsin,pepsis,peptic,peptide,peptize,peptone,per,peracid,peract,perbend,percale,percent,percept,perch,percha,percher,percid,percoct,percoid,percur,percuss,perdu,perdure,pereion,pereira,peres,perfect,perfidy,perform,perfume,perfumy,perfuse,pergola,perhaps,peri,periapt,peridot,perigee,perigon,peril,perine,period,periost,perique,perish,perit,perite,periwig,perjink,perjure,perjury,perk,perkily,perkin,perking,perkish,perky,perle,perlid,perlite,perloir,perm,permit,permute,pern,pernine,pernor,pernyi,peroba,peropod,peropus,peroral,perosis,perotic,peroxy,peroxyl,perpend,perpera,perplex,perrier,perron,perry,persalt,perse,persico,persis,persist,person,persona,pert,pertain,perten,pertish,pertly,perturb,pertuse,perty,peruke,perula,perule,perusal,peruse,peruser,pervade,pervert,pes,pesa,pesade,pesage,peseta,peshkar,peshwa,peskily,pesky,peso,pess,pessary,pest,peste,pester,pestful,pestify,pestle,pet,petal,petaled,petalon,petaly,petard,petary,petasos,petasus,petcock,pete,peteca,peteman,peter,petful,petiole,petit,petite,petitor,petkin,petling,peto,petrary,petre,petrean,petrel,petrie,petrify,petrol,petrosa,petrous,petted,petter,pettily,pettish,pettle,petty,petune,petwood,petzite,peuhl,pew,pewage,pewdom,pewee,pewful,pewing,pewit,pewless,pewmate,pewter,pewtery,pewy,peyote,peyotl,peyton,peytrel,pfennig,pfui,pfund,phacoid,phaeism,phaeton,phage,phalanx,phalera,phallic,phallin,phallus,phanic,phano,phantom,phare,pharmic,pharos,pharynx,phase,phaseal,phasemy,phases,phasic,phasis,phasm,phasma,phasmid,pheal,phellem,phemic,phenate,phene,phenene,phenic,phenin,phenol,phenyl,pheon,phew,phi,phial,phiale,philter,philtra,phit,phiz,phizes,phizog,phlegm,phlegma,phlegmy,phloem,phloxin,pho,phobiac,phobic,phobism,phobist,phoby,phoca,phocal,phocid,phocine,phocoid,phoebe,phoenix,phoh,pholad,pholcid,pholido,phon,phonal,phonate,phone,phoneme,phonic,phonics,phonism,phono,phony,phoo,phoresy,phoria,phorid,phorone,phos,phose,phosis,phospho,phossy,phot,photal,photic,photics,photism,photo,photoma,photon,phragma,phrasal,phrase,phraser,phrasy,phrator,phratry,phrenic,phrynid,phrynin,phthor,phu,phugoid,phulwa,phut,phycite,phyla,phyle,phylic,phyllin,phylon,phylum,phyma,phymata,physic,physics,phytase,phytic,phytin,phytoid,phytol,phytoma,phytome,phyton,phytyl,pi,pia,piaba,piacaba,piacle,piaffe,piaffer,pial,pialyn,pian,pianic,pianino,pianism,pianist,piannet,piano,pianola,piaster,piastre,piation,piazine,piazza,pibcorn,pibroch,pic,pica,picador,pical,picamar,picara,picarel,picaro,picary,piccolo,pice,picene,piceous,pichi,picine,pick,pickage,pickax,picked,pickee,pickeer,picker,pickery,picket,pickle,pickler,pickman,pickmaw,pickup,picky,picnic,pico,picoid,picot,picotah,picotee,picra,picrate,picric,picrite,picrol,picryl,pict,picture,pictury,picuda,picudo,picul,piculet,pidan,piddle,piddler,piddock,pidgin,pie,piebald,piece,piecen,piecer,piecing,pied,piedly,pieless,pielet,pielum,piemag,pieman,pien,piend,piepan,pier,pierage,pierce,pierced,piercel,piercer,pierid,pierine,pierrot,pieshop,piet,pietas,pietic,pietism,pietist,pietose,piety,piewife,piewipe,piezo,piff,piffle,piffler,pifine,pig,pigdan,pigdom,pigeon,pigface,pigfish,pigfoot,pigful,piggery,piggin,pigging,piggish,piggle,piggy,pighead,pigherd,pightle,pigless,piglet,pigling,pigly,pigman,pigment,pignon,pignus,pignut,pigpen,pigroot,pigskin,pigsney,pigsty,pigtail,pigwash,pigweed,pigyard,piitis,pik,pika,pike,piked,pikel,pikelet,pikeman,piker,pikey,piki,piking,pikle,piky,pilage,pilapil,pilar,pilary,pilau,pilaued,pilch,pilcher,pilcorn,pilcrow,pile,pileata,pileate,piled,pileous,piler,piles,pileus,pilfer,pilger,pilgrim,pili,pilifer,piligan,pilikai,pilin,piline,piling,pilkins,pill,pillage,pillar,pillary,pillas,pillbox,pilled,pillet,pilleus,pillion,pillory,pillow,pillowy,pilm,pilmy,pilon,pilori,pilose,pilosis,pilot,pilotee,pilotry,pilous,pilpul,piltock,pilula,pilular,pilule,pilum,pilus,pily,pimaric,pimelic,pimento,pimlico,pimola,pimp,pimpery,pimping,pimpish,pimple,pimpled,pimplo,pimploe,pimply,pin,pina,pinaces,pinacle,pinacol,pinang,pinax,pinball,pinbone,pinbush,pincase,pincer,pincers,pinch,pinche,pinched,pinchem,pincher,pind,pinda,pinder,pindy,pine,pineal,pined,pinene,piner,pinery,pinesap,pinetum,piney,pinfall,pinfish,pinfold,ping,pingle,pingler,pingue,pinguid,pinguin,pinhead,pinhold,pinhole,pinhook,pinic,pining,pinion,pinite,pinitol,pinjane,pinjra,pink,pinked,pinkeen,pinken,pinker,pinkeye,pinkie,pinkify,pinkily,pinking,pinkish,pinkly,pinky,pinless,pinlock,pinna,pinnace,pinnae,pinnal,pinnate,pinned,pinnel,pinner,pinnet,pinning,pinnock,pinnula,pinnule,pinny,pino,pinole,pinolia,pinolin,pinon,pinonic,pinrail,pinsons,pint,pinta,pintado,pintail,pintano,pinte,pintle,pinto,pintura,pinulus,pinweed,pinwing,pinwork,pinworm,piny,pinyl,pinyon,pioneer,pioted,piotine,piotty,pioury,pious,piously,pip,pipa,pipage,pipal,pipe,pipeage,piped,pipeful,pipeman,piper,piperic,piperly,piperno,pipery,pipet,pipette,pipi,piping,pipiri,pipit,pipkin,pipless,pipped,pipper,pippin,pippy,piprine,piproid,pipy,piquant,pique,piquet,piquia,piqure,pir,piracy,piragua,piranha,pirate,piraty,pirl,pirn,pirner,pirnie,pirny,pirogue,pirol,pirr,pirrmaw,pisaca,pisang,pisay,piscary,piscian,piscina,piscine,pisco,pise,pish,pishaug,pishu,pisk,pisky,pismire,piso,piss,pissant,pist,pistic,pistil,pistle,pistol,pistole,piston,pistrix,pit,pita,pitanga,pitapat,pitarah,pitau,pitaya,pitch,pitcher,pitchi,pitchy,piteous,pitfall,pith,pithful,pithily,pithole,pithos,pithy,pitier,pitiful,pitless,pitlike,pitman,pitmark,pitmirk,pitpan,pitpit,pitside,pitted,pitter,pittine,pitting,pittite,pittoid,pituite,pituri,pitwood,pitwork,pity,pitying,piuri,pivalic,pivot,pivotal,pivoter,pix,pixie,pixy,pize,pizza,pizzle,placard,placate,place,placebo,placer,placet,placid,plack,placket,placode,placoid,placula,plaga,plagal,plagate,plage,plagium,plagose,plague,plagued,plaguer,plaguy,plaice,plaid,plaided,plaidie,plaidy,plain,plainer,plainly,plaint,plait,plaited,plaiter,plak,plakat,plan,planaea,planar,planate,planch,plandok,plane,planer,planet,planeta,planful,plang,plangor,planish,planity,plank,planker,planky,planner,plant,planta,plantad,plantal,plantar,planter,planula,planury,planxty,plap,plaque,plash,plasher,plashet,plashy,plasm,plasma,plasmic,plasome,plass,plasson,plaster,plastic,plastid,plastin,plat,platan,platane,platano,platch,plate,platea,plateau,plated,platen,plater,platery,platic,platina,plating,platode,platoid,platoon,platted,platten,platter,platty,platy,plaud,plaudit,play,playa,playbox,playboy,playday,player,playful,playlet,playman,playock,playpen,plaza,plea,pleach,plead,pleader,please,pleaser,pleat,pleater,pleb,plebe,plebify,plebs,pleck,plectre,pled,pledge,pledgee,pledger,pledget,pledgor,pleion,plenary,plenipo,plenish,plenism,plenist,plenty,plenum,pleny,pleon,pleonal,pleonic,pleopod,pleroma,plerome,plessor,pleura,pleural,pleuric,pleuron,pleurum,plew,plex,plexal,plexor,plexure,plexus,pliable,pliably,pliancy,pliant,plica,plical,plicate,plied,plier,plies,pliers,plight,plim,plinth,pliskie,plisky,ploat,ploce,plock,plod,plodder,plodge,plomb,plook,plop,plosion,plosive,plot,plote,plotful,plotted,plotter,plotty,plough,plouk,plouked,plouky,plounce,plout,plouter,plover,plovery,plow,plowboy,plower,plowing,plowman,ploy,pluck,plucked,plucker,plucky,plud,pluff,pluffer,pluffy,plug,plugged,plugger,pluggy,plugman,plum,pluma,plumach,plumade,plumage,plumate,plumb,plumber,plumbet,plumbic,plumbog,plumbum,plumcot,plume,plumed,plumer,plumery,plumet,plumier,plumify,plumist,plumlet,plummer,plummet,plummy,plumose,plumous,plump,plumpen,plumper,plumply,plumps,plumpy,plumula,plumule,plumy,plunder,plunge,plunger,plunk,plup,plural,pluries,plurify,plus,plush,plushed,plushy,pluteal,plutean,pluteus,pluvial,pluvian,pluvine,ply,plyer,plying,plywood,pneuma,po,poach,poacher,poachy,poalike,pob,pobby,pobs,pochade,pochard,pochay,poche,pock,pocket,pockety,pockily,pocky,poco,pocosin,pod,podagra,podal,podalic,podatus,podded,podder,poddish,poddle,poddy,podeon,podesta,podex,podge,podger,podgily,podgy,podial,podical,podices,podite,poditic,poditti,podium,podler,podley,podlike,podogyn,podsol,poduran,podurid,podware,podzol,poe,poem,poemet,poemlet,poesie,poesis,poesy,poet,poetdom,poetess,poetic,poetics,poetito,poetize,poetly,poetry,pogge,poggy,pogonip,pogrom,pogy,poh,poha,pohna,poi,poietic,poignet,poil,poilu,poind,poinder,point,pointed,pointel,pointer,pointy,poise,poised,poiser,poison,poitrel,pokable,poke,poked,pokeful,pokeout,poker,pokey,pokily,poking,pokomoo,pokunt,poky,pol,polacca,polack,polacre,polar,polaric,polarly,polaxis,poldavy,polder,pole,polearm,poleax,poleaxe,polecat,poleman,polemic,polenta,poler,poley,poliad,police,policed,policy,poligar,polio,polis,polish,polite,politic,polity,polk,polka,poll,pollack,polladz,pollage,pollam,pollan,pollard,polled,pollen,pollent,poller,pollex,polling,pollock,polloi,pollute,pollux,polo,poloist,polony,polos,polska,polt,poltina,poly,polyact,polyad,polygam,polygon,polygyn,polymer,polyose,polyp,polyped,polypi,polypod,polypus,pom,pomace,pomade,pomane,pomate,pomato,pomatum,pombe,pombo,pome,pomelo,pomey,pomfret,pomme,pommee,pommel,pommet,pommey,pommy,pomonal,pomonic,pomp,pompa,pompal,pompano,pompey,pomphus,pompier,pompion,pompist,pompon,pompous,pomster,pon,ponce,ponceau,poncho,pond,pondage,ponder,pondful,pondlet,pondman,pondok,pondus,pondy,pone,ponent,ponerid,poney,pong,ponga,pongee,poniard,ponica,ponier,ponja,pont,pontage,pontal,pontee,pontes,pontic,pontiff,pontify,pontil,pontile,pontin,pontine,pontist,ponto,ponton,pontoon,pony,ponzite,pooa,pooch,pooder,poodle,poof,poogye,pooh,pook,pooka,pookaun,pookoo,pool,pooler,pooli,pooly,poon,poonac,poonga,poop,pooped,poor,poorish,poorly,poot,pop,popadam,popal,popcorn,popdock,pope,popedom,popeism,popeler,popely,popery,popess,popeye,popeyed,popgun,popify,popinac,popish,popjoy,poplar,poplin,popover,poppa,poppean,poppel,popper,poppet,poppied,poppin,popple,popply,poppy,popshop,popular,populin,popweed,poral,porcate,porch,porched,porcine,pore,pored,porer,porge,porger,porgy,poring,porism,porite,pork,porker,porkery,porket,porkish,porkman,porkpie,porky,porogam,poroma,poros,porose,porosis,porotic,porous,porr,porrect,porret,porrigo,porry,port,porta,portage,portail,portal,portass,ported,portend,portent,porter,portia,portico,portify,portio,portion,portlet,portly,portman,porto,portray,portway,porty,porule,porus,pory,posca,pose,poser,poseur,posey,posh,posing,posit,positor,positum,posnet,posole,poss,posse,possess,posset,possum,post,postage,postal,postbag,postbox,postboy,posted,posteen,poster,postern,postfix,postic,postil,posting,postman,posture,postwar,posy,pot,potable,potamic,potash,potass,potassa,potate,potato,potator,potbank,potboil,potboy,potch,potcher,potdar,pote,poteen,potence,potency,potent,poter,poteye,potful,potgirl,potgun,pothead,potheen,pother,potherb,pothery,pothole,pothook,pothunt,potifer,potion,potleg,potlid,potlike,potluck,potman,potong,potoo,potoroo,potpie,potrack,pott,pottage,pottagy,pottah,potted,potter,pottery,potting,pottle,pottled,potto,potty,potware,potwork,potwort,pouce,poucer,poucey,pouch,pouched,pouchy,pouf,poulard,poulp,poulpe,poult,poulter,poultry,pounamu,pounce,pounced,pouncer,pouncet,pound,poundal,pounder,pour,pourer,pourie,pouring,pouser,pout,pouter,poutful,pouting,pouty,poverty,pow,powder,powdery,powdike,powdry,power,powered,powitch,pownie,powwow,pox,poxy,poy,poyou,praam,prabble,prabhu,practic,prad,praecox,praetor,prairie,praise,praiser,prajna,praline,pram,prana,prance,prancer,prancy,prank,pranked,pranker,prankle,pranky,prase,prasine,prasoid,prastha,prat,pratal,prate,prater,pratey,prating,prattle,prattly,prau,pravity,prawn,prawner,prawny,praxis,pray,praya,prayer,prayful,praying,preach,preachy,preacid,preact,preaged,preally,preanal,prearm,preaver,prebake,prebend,prebid,prebill,preboil,preborn,preburn,precant,precary,precast,precava,precede,precent,precept,preces,precess,precipe,precis,precise,precite,precoil,precook,precool,precopy,precox,precure,precut,precyst,predamn,predark,predata,predate,predawn,preday,predefy,predeny,predial,predict,prediet,predine,predoom,predraw,predry,predusk,preen,preener,preeze,prefab,preface,prefect,prefer,prefine,prefix,prefool,preform,pregain,pregust,prehaps,preheal,preheat,prehend,preidea,preknit,preknow,prelacy,prelate,prelect,prelim,preloan,preloss,prelude,premake,premate,premial,premier,premise,premiss,premium,premix,premold,premove,prename,prender,prendre,preomit,preopen,preoral,prep,prepare,prepave,prepay,prepink,preplan,preplot,prepose,prepuce,prepupa,prerent,prerich,prerupt,presage,presay,preseal,presee,presell,present,preses,preset,preship,preshow,preside,presift,presign,prespur,press,pressel,presser,pressor,prest,prester,presto,presume,pretan,pretell,pretend,pretest,pretext,pretire,pretone,pretry,pretty,pretzel,prevail,prevene,prevent,preverb,preveto,previde,preview,previse,prevoid,prevote,prevue,prewar,prewarn,prewash,prewhip,prewire,prewrap,prexy,prey,preyer,preyful,prezone,price,priced,pricer,prich,prick,pricked,pricker,pricket,prickle,prickly,pricks,pricky,pride,pridian,priding,pridy,pried,prier,priest,prig,prigdom,prigger,prigman,prill,prim,prima,primacy,primage,primal,primar,primary,primate,prime,primely,primer,primero,primine,priming,primly,primost,primp,primsie,primula,primus,primy,prince,princox,prine,pringle,prink,prinker,prinkle,prinky,print,printed,printer,prion,prionid,prior,prioral,priorly,priory,prisage,prisal,priscan,prism,prismal,prismed,prismy,prison,priss,prissy,pritch,prithee,prius,privacy,privant,private,privet,privily,privity,privy,prize,prizer,prizery,pro,proa,proal,proarmy,prob,probabl,probal,probang,probant,probate,probe,probeer,prober,probity,problem,procarp,proceed,process,proctal,proctor,procure,prod,prodder,proddle,prodigy,produce,product,proem,proetid,prof,profane,profert,profess,proffer,profile,profit,profuse,prog,progeny,progger,progne,program,project,proke,proker,prolan,prolate,proleg,prolify,proline,prolix,prolong,prolyl,promic,promise,promote,prompt,pronaos,pronate,pronavy,prone,pronely,proneur,prong,pronged,pronger,pronic,pronoun,pronpl,pronto,pronuba,proo,proof,proofer,proofy,prop,propago,propale,propane,propend,propene,proper,prophet,propine,proplex,propone,propons,propose,propoxy,propper,props,propupa,propyl,propyne,prorata,prorate,prore,prorean,prorsad,prorsal,prosaic,prosar,prose,prosect,proser,prosify,prosily,prosing,prosish,prosist,proso,prosode,prosody,prosoma,prosper,pross,prossy,prosy,protax,prote,protea,protead,protean,protect,protege,proteic,protein,protend,protest,protext,prothyl,protide,protist,protium,proto,protoma,protome,proton,protone,protore,protyl,protyle,protype,proudly,provand,provant,prove,provect,proved,proven,prover,proverb,provide,provine,proving,proviso,provoke,provost,prow,prowar,prowed,prowess,prowl,prowler,proxeny,proximo,proxy,proxysm,prozone,prude,prudely,prudent,prudery,prudish,prudist,prudity,pruh,prunase,prune,prunell,pruner,pruning,prunt,prunted,prurigo,prussic,prut,prutah,pry,pryer,prying,pryler,pryse,prytany,psalis,psalm,psalmic,psalmy,psaloid,psalter,psaltes,pschent,pseudo,psha,pshaw,psi,psiloi,psoadic,psoas,psoatic,psocid,psocine,psoitis,psora,psoric,psoroid,psorous,pst,psych,psychal,psyche,psychic,psychid,psychon,psykter,psylla,psyllid,ptarmic,ptereal,pteric,pterion,pteroid,pteroma,pteryla,ptinid,ptinoid,ptisan,ptomain,ptosis,ptotic,ptyalin,ptyxis,pu,pua,puan,pub,pubal,pubble,puberal,puberty,pubes,pubian,pubic,pubis,public,publish,puccoon,puce,pucelle,puchero,puck,pucka,pucker,puckery,puckish,puckle,puckrel,pud,puddee,pudder,pudding,puddle,puddled,puddler,puddly,puddock,puddy,pudency,pudenda,pudent,pudge,pudgily,pudgy,pudiano,pudic,pudical,pudsey,pudsy,pudu,pueblo,puerer,puerile,puerman,puff,puffed,puffer,puffery,puffily,puffin,puffing,pufflet,puffwig,puffy,pug,pugged,pugger,puggi,pugging,puggish,puggle,puggree,puggy,pugh,pugil,pugman,pugmill,puisne,puist,puistie,puja,puka,pukatea,puke,pukeko,puker,pukish,pukras,puku,puky,pul,pulahan,pulasan,pule,pulegol,puler,puli,pulicat,pulicid,puling,pulish,pulk,pulka,pull,pulldoo,pullen,puller,pullery,pullet,pulley,pulli,pullus,pulp,pulpal,pulper,pulpify,pulpily,pulpit,pulpous,pulpy,pulque,pulsant,pulsate,pulse,pulsion,pulsive,pulton,pulu,pulvic,pulvil,pulvino,pulwar,puly,puma,pumice,pumiced,pumicer,pummel,pummice,pump,pumpage,pumper,pumpkin,pumple,pumpman,pun,puna,punaise,punalua,punatoo,punch,puncher,punchy,punct,punctal,punctum,pundit,pundita,pundum,puneca,pung,punga,pungar,pungent,punger,pungey,pungi,pungle,pungled,punicin,punily,punish,punjum,punk,punkah,punkie,punky,punless,punlet,punnage,punner,punnet,punnic,punster,punt,punta,puntal,puntel,punter,punti,puntil,puntist,punto,puntout,punty,puny,punyish,punyism,pup,pupa,pupal,pupate,pupelo,pupil,pupilar,pupiled,pupoid,puppet,puppify,puppily,puppy,pupulo,pupunha,pur,purana,puranic,puraque,purdah,purdy,pure,pured,puree,purely,purer,purfle,purfled,purfler,purfly,purga,purge,purger,purgery,purging,purify,purine,puriri,purism,purist,purity,purl,purler,purlieu,purlin,purlman,purloin,purpart,purple,purply,purport,purpose,purpura,purpure,purr,purre,purree,purreic,purrel,purrer,purring,purrone,purry,purse,pursed,purser,pursily,purslet,pursley,pursual,pursue,pursuer,pursuit,pursy,purusha,purvey,purview,purvoe,pus,push,pusher,pushful,pushing,pushpin,puss,pusscat,pussley,pussy,pustule,put,putage,putamen,putback,putchen,putcher,puteal,putelee,puther,puthery,putid,putidly,putlog,putois,putrefy,putrid,putt,puttee,putter,puttier,puttock,putty,puture,puxy,puzzle,puzzled,puzzler,pya,pyal,pyche,pycnia,pycnial,pycnid,pycnite,pycnium,pyelic,pyemia,pyemic,pygal,pygarg,pygidid,pygmoid,pygmy,pygofer,pygopod,pyic,pyin,pyjama,pyke,pyknic,pyla,pylar,pylic,pylon,pyloric,pylorus,pyocele,pyocyst,pyocyte,pyoid,pyosis,pyr,pyral,pyralid,pyralis,pyramid,pyran,pyranyl,pyre,pyrena,pyrene,pyrenic,pyrenin,pyretic,pyrex,pyrexia,pyrexic,pyrgom,pyridic,pyridyl,pyrite,pyrites,pyritic,pyro,pyrogen,pyroid,pyrone,pyrope,pyropen,pyropus,pyrosis,pyrotic,pyrrhic,pyrrol,pyrrole,pyrroyl,pyrryl,pyruvic,pyruvil,pyruvyl,python,pyuria,pyvuril,pyx,pyxides,pyxie,pyxis,q,qasida,qere,qeri,qintar,qoph,qua,quab,quabird,quachil,quack,quackle,quacky,quad,quadded,quaddle,quadra,quadral,quadrat,quadric,quadrum,quaedam,quaff,quaffer,quag,quagga,quaggle,quaggy,quahog,quail,quaily,quaint,quake,quaker,quaking,quaky,quale,qualify,quality,qualm,qualmy,quan,quandy,quannet,quant,quanta,quantic,quantum,quar,quare,quark,quarl,quarle,quarred,quarrel,quarry,quart,quartan,quarter,quartet,quartic,quarto,quartz,quartzy,quash,quashey,quashy,quasi,quasky,quassin,quat,quata,quatch,quatern,quaters,quatral,quatre,quatrin,quattie,quatuor,quauk,quave,quaver,quavery,quaw,quawk,quay,quayage,quayful,quayman,qubba,queach,queachy,queak,queal,quean,queasom,queasy,quedful,queechy,queen,queenly,queer,queerer,queerly,queery,queest,queet,queeve,quegh,quei,quelch,quell,queller,quemado,queme,quemely,quench,quercic,quercin,querent,querier,querist,querken,querl,quern,quernal,query,quest,quester,questor,quet,quetch,quetzal,queue,quey,quiapo,quib,quibble,quiblet,quica,quick,quicken,quickie,quickly,quid,quidder,quiddit,quiddle,quiesce,quiet,quieten,quieter,quietly,quietus,quiff,quila,quiles,quilkin,quill,quillai,quilled,quiller,quillet,quilly,quilt,quilted,quilter,quin,quina,quinary,quinate,quince,quinch,quinia,quinic,quinin,quinina,quinine,quinism,quinite,quinize,quink,quinnat,quinnet,quinoa,quinoid,quinol,quinone,quinova,quinoyl,quinse,quinsy,quint,quintad,quintal,quintan,quinte,quintet,quintic,quintin,quinto,quinton,quintus,quinyl,quinze,quip,quipful,quipo,quipper,quippy,quipu,quira,quire,quirk,quirky,quirl,quirt,quis,quisby,quiscos,quisle,quit,quitch,quite,quits,quitted,quitter,quittor,quiver,quivery,quiz,quizzee,quizzer,quizzy,quo,quod,quoin,quoined,quoit,quoiter,quoits,quondam,quoniam,quop,quorum,quot,quota,quote,quotee,quoter,quoth,quotha,quotity,quotum,r,ra,raad,raash,rab,raband,rabanna,rabat,rabatte,rabbet,rabbi,rabbin,rabbit,rabbity,rabble,rabbler,rabboni,rabic,rabid,rabidly,rabies,rabific,rabinet,rabitic,raccoon,raccroc,race,raceme,racemed,racemic,racer,raceway,rach,rache,rachial,rachis,racial,racily,racing,racism,racist,rack,rackan,racker,racket,rackett,rackety,rackful,racking,rackle,rackway,racloir,racon,racoon,racy,rad,rada,radar,raddle,radial,radiale,radian,radiant,radiate,radical,radicel,radices,radicle,radii,radio,radiode,radish,radium,radius,radix,radman,radome,radon,radula,raff,raffe,raffee,raffery,raffia,raffing,raffish,raffle,raffler,raft,raftage,rafter,raftman,rafty,rag,raga,rage,rageful,rageous,rager,ragfish,ragged,raggedy,raggee,ragger,raggery,raggety,raggil,raggily,ragging,raggle,raggled,raggy,raging,raglan,raglet,raglin,ragman,ragout,ragshag,ragtag,ragtime,ragule,raguly,ragweed,ragwort,rah,rahdar,raia,raid,raider,rail,railage,railer,railing,railly,railman,railway,raiment,rain,rainbow,rainer,rainful,rainily,rainy,raioid,rais,raise,raised,raiser,raisin,raising,raisiny,raj,raja,rajah,rakan,rake,rakeage,rakeful,raker,rakery,rakh,raki,rakily,raking,rakish,rakit,raku,rallier,ralline,rally,ralph,ram,ramada,ramage,ramal,ramanas,ramass,ramate,rambeh,ramble,rambler,rambong,rame,rameal,ramed,ramekin,rament,rameous,ramet,ramex,ramhead,ramhood,rami,ramie,ramify,ramlike,ramline,rammack,rammel,rammer,rammish,rammy,ramose,ramous,ramp,rampage,rampant,rampart,ramped,ramper,rampick,rampike,ramping,rampion,rampire,rampler,ramplor,ramrace,ramrod,ramsch,ramson,ramstam,ramtil,ramular,ramule,ramulus,ramus,ran,rana,ranal,rance,rancel,rancer,ranch,ranche,rancher,rancho,rancid,rancor,rand,randan,randem,rander,randing,randir,randle,random,randy,rane,rang,range,ranged,ranger,rangey,ranging,rangle,rangler,rangy,rani,ranid,ranine,rank,ranked,ranker,rankish,rankle,rankly,rann,rannel,ranny,ransack,ransel,ransom,rant,rantan,ranter,ranting,rantock,ranty,ranula,ranular,rap,rape,rapeful,raper,raphany,raphe,raphide,raphis,rapic,rapid,rapidly,rapier,rapillo,rapine,rapiner,raping,rapinic,rapist,raploch,rappage,rappe,rappel,rapper,rapping,rappist,rapport,rapt,raptly,raptor,raptril,rapture,raptury,raptus,rare,rarebit,rarefy,rarely,rarish,rarity,ras,rasa,rasant,rascal,rasceta,rase,rasen,raser,rasgado,rash,rasher,rashful,rashing,rashly,rasion,rasp,rasped,rasper,rasping,raspish,raspite,raspy,rasse,rassle,raster,rastik,rastle,rasure,rat,rata,ratable,ratably,ratafee,ratafia,ratal,ratbite,ratch,ratchel,ratcher,ratchet,rate,rated,ratel,rater,ratfish,rath,rathe,rathed,rathely,rather,rathest,rathite,rathole,ratify,ratine,rating,ratio,ration,ratite,ratlike,ratline,ratoon,rattage,rattail,rattan,ratteen,ratten,ratter,rattery,ratti,rattish,rattle,rattled,rattler,rattles,rattly,ratton,rattrap,ratty,ratwa,ratwood,raucid,raucity,raucous,raught,rauk,raukle,rauli,raun,raunge,raupo,rauque,ravage,ravager,rave,ravel,raveler,ravelin,ravelly,raven,ravener,ravenry,ravens,raver,ravin,ravine,ravined,raviney,raving,ravioli,ravish,ravison,raw,rawhead,rawhide,rawish,rawness,rax,ray,raya,rayage,rayed,rayful,rayless,raylet,rayon,raze,razee,razer,razoo,razor,razz,razzia,razzly,re,rea,reaal,reabuse,reach,reacher,reachy,react,reactor,read,readapt,readd,reader,readily,reading,readmit,readopt,readorn,ready,reagent,reagin,reagree,reak,real,realarm,reales,realest,realgar,realign,realism,realist,reality,realive,realize,reallot,reallow,really,realm,realter,realtor,realty,ream,reamage,reamass,reamend,reamer,reamuse,reamy,reannex,reannoy,reanvil,reap,reaper,reapply,rear,rearer,reargue,rearise,rearm,rearray,reask,reason,reassay,reasty,reasy,reatus,reaudit,reavail,reave,reaver,reavoid,reavow,reawait,reawake,reaward,reaware,reb,rebab,reback,rebag,rebait,rebake,rebale,reban,rebar,rebase,rebasis,rebate,rebater,rebathe,rebato,rebawl,rebear,rebeat,rebec,rebeck,rebed,rebeg,rebeget,rebegin,rebel,rebelly,rebend,rebeset,rebia,rebias,rebid,rebill,rebind,rebirth,rebite,reblade,reblame,reblast,reblend,rebless,reblock,rebloom,reblot,reblow,reblue,rebluff,reboant,reboard,reboast,rebob,reboil,reboise,rebold,rebolt,rebone,rebook,rebop,rebore,reborn,rebound,rebox,rebrace,rebraid,rebrand,rebreed,rebrew,rebribe,rebrick,rebring,rebrown,rebrush,rebud,rebuff,rebuild,rebuilt,rebuke,rebuker,rebulk,rebunch,rebuoy,reburn,reburst,rebury,rebus,rebush,rebusy,rebut,rebute,rebuy,recable,recage,recalk,recall,recant,recap,recarry,recart,recarve,recase,recash,recast,recatch,recce,recco,reccy,recede,receder,receipt,receive,recency,recense,recent,recept,recess,rechafe,rechain,rechal,rechant,rechaos,rechar,rechase,rechaw,recheat,recheck,recheer,rechew,rechip,rechuck,rechurn,recipe,recital,recite,reciter,reck,reckla,reckon,reclaim,reclama,reclang,reclasp,reclass,reclean,reclear,reclimb,recline,reclose,recluse,recoach,recoal,recoast,recoat,recock,recoct,recode,recoil,recoin,recoke,recolor,recomb,recon,recook,recool,recopy,record,recork,recount,recoup,recover,recramp,recrank,recrate,recrew,recroon,recrop,recross,recrowd,recrown,recruit,recrush,rect,recta,rectal,recti,rectify,rection,recto,rector,rectory,rectrix,rectum,rectus,recur,recure,recurl,recurse,recurve,recuse,recut,recycle,red,redact,redan,redare,redarn,redart,redate,redaub,redawn,redback,redbait,redbill,redbird,redbone,redbuck,redbud,redcap,redcoat,redd,redden,redder,redding,reddish,reddock,reddy,rede,redeal,redebit,redeck,redeed,redeem,redefer,redefy,redeify,redelay,redeny,redeye,redfin,redfish,redfoot,redhead,redhoop,redia,redient,redig,redip,redive,redleg,redlegs,redly,redness,redo,redock,redoom,redoubt,redound,redowa,redox,redpoll,redraft,redrag,redrape,redraw,redream,redress,redrill,redrive,redroot,redry,redsear,redskin,redtab,redtail,redtop,redub,reduce,reduced,reducer,reduct,redue,redux,redward,redware,redweed,redwing,redwood,redye,ree,reechy,reed,reeded,reeden,reeder,reedily,reeding,reedish,reedman,reedy,reef,reefer,reefing,reefy,reek,reeker,reeky,reel,reeled,reeler,reem,reeming,reemish,reen,reenge,reeper,reese,reeshle,reesk,reesle,reest,reester,reestle,reesty,reet,reetam,reetle,reeve,ref,reface,refall,refan,refavor,refect,refeed,refeel,refeign,refel,refence,refer,referee,refetch,refight,refill,refilm,refind,refine,refined,refiner,refire,refit,refix,reflag,reflame,reflash,reflate,reflect,reflee,reflex,refling,refloat,reflog,reflood,refloor,reflow,reflush,reflux,refly,refocus,refold,refont,refool,refoot,reforce,reford,reforge,reform,refound,refract,refrain,reframe,refresh,refront,reft,refuel,refuge,refugee,refulge,refund,refurl,refusal,refuse,refuser,refutal,refute,refuter,reg,regain,regal,regale,regaler,regalia,regally,regard,regatta,regauge,regency,regent,reges,reget,regia,regift,regild,regill,regime,regimen,regin,reginal,region,regive,reglair,reglaze,regle,reglet,regloss,reglove,reglow,reglue,regma,regnal,regnant,regorge,regrade,regraft,regrant,regrasp,regrass,regrate,regrede,regreen,regreet,regress,regret,regrind,regrip,regroup,regrow,reguard,reguide,regula,regular,reguli,regulus,regur,regurge,regush,reh,rehair,rehale,rehang,reharm,rehash,rehaul,rehead,reheal,reheap,rehear,reheat,rehedge,reheel,rehoe,rehoist,rehonor,rehood,rehook,rehoop,rehouse,rehung,reif,reify,reign,reim,reimage,reimpel,reimply,rein,reina,reincur,reindue,reinfer,reins,reinter,reis,reissue,reit,reitbok,reiter,reiver,rejail,reject,rejerk,rejoice,rejoin,rejolt,rejudge,rekick,rekill,reking,rekiss,reknit,reknow,rel,relabel,relace,relade,reladen,relais,relamp,reland,relap,relapse,relast,relata,relatch,relate,related,relater,relator,relatum,relax,relaxed,relaxer,relay,relbun,relead,releap,relearn,release,relend,relent,relet,relevel,relevy,reliant,relic,relick,relict,relief,relier,relieve,relievo,relift,relight,relime,relimit,reline,reliner,relink,relish,relishy,relist,relive,reload,reloan,relock,relodge,relook,relose,relost,relot,relove,relower,reluct,relume,rely,remade,remail,remain,remains,remake,remaker,reman,remand,remanet,remap,remarch,remark,remarry,remask,remass,remast,rematch,remble,remeant,remede,remedy,remeet,remelt,remend,remerge,remetal,remex,remica,remicle,remiges,remill,remimic,remind,remint,remiped,remise,remiss,remit,remix,remnant,remock,remodel,remold,remop,remora,remord,remorse,remote,remould,remount,removal,remove,removed,remover,renable,renably,renail,renal,rename,rend,render,reneg,renege,reneger,renegue,renerve,renes,renet,renew,renewal,renewer,renin,renish,renk,renky,renne,rennet,rennin,renown,rent,rentage,rental,rented,rentee,renter,renvoi,renvoy,reoccur,reoffer,reoil,reomit,reopen,reorder,reown,rep,repace,repack,repage,repaint,repair,repale,repand,repanel,repaper,repark,repass,repast,repaste,repatch,repave,repawn,repay,repayal,repeal,repeat,repeg,repel,repen,repent,repew,rephase,repic,repick,repiece,repile,repin,repine,repiner,repipe,repique,repitch,repkie,replace,replait,replan,replane,replant,replate,replay,replead,repleat,replete,replevy,replica,replier,replod,replot,replow,replum,replume,reply,repoint,repoll,repolon,repone,repope,report,reposal,repose,reposed,reposer,reposit,repost,repot,repound,repour,repp,repped,repray,repress,reprice,reprime,reprint,reprise,reproof,reprove,reprune,reps,reptant,reptile,repuff,repugn,repulse,repump,repurge,repute,reputed,requeen,request,requiem,requin,require,requit,requite,requiz,requote,rerack,rerail,reraise,rerake,rerank,rerate,reread,reredos,reree,rereel,rereeve,rereign,rerent,rerig,rering,rerise,rerival,rerivet,rerob,rerobe,reroll,reroof,reroot,rerope,reroute,rerow,rerub,rerun,resaca,resack,resail,resale,resalt,resaw,resawer,resay,rescan,rescind,rescore,rescrub,rescue,rescuer,reseal,reseam,reseat,resect,reseda,resee,reseed,reseek,reseise,reseize,reself,resell,resend,resene,resent,reserve,reset,resever,resew,resex,resh,reshake,reshape,reshare,reshave,reshear,reshift,reshine,reship,reshoe,reshoot,reshun,reshunt,reshut,reside,resider,residua,residue,resift,resigh,resign,resile,resin,resina,resiner,resing,resinic,resink,resinol,resiny,resist,resize,resizer,reskin,reslash,reslate,reslay,reslide,reslot,resmell,resmelt,resmile,resnap,resnub,resoak,resoap,resoil,resole,resolve,resorb,resort,resound,resow,resp,respace,respade,respan,respeak,respect,respell,respin,respire,respite,resplit,respoke,respond,respot,respray,respue,ressala,ressaut,rest,restack,restaff,restain,restake,restamp,restant,restart,restate,restaur,resteal,resteel,resteep,restem,restep,rester,restes,restful,restiad,restiff,resting,restir,restis,restive,restock,restore,restow,restrap,restrip,restudy,restuff,resty,restyle,resuck,resue,resuing,resuit,result,resume,resumer,resun,resup,resurge,reswage,resward,reswarm,reswear,resweat,resweep,reswell,reswill,reswim,ret,retable,retack,retag,retail,retain,retake,retaker,retalk,retama,retame,retan,retape,retard,retare,retaste,retax,retch,reteach,retell,retem,retempt,retene,retent,retest,rethank,rethaw,rethe,rethink,rethrow,retia,retial,retiary,reticle,retie,retier,retile,retill,retime,retin,retina,retinal,retinol,retinue,retip,retiral,retire,retired,retirer,retoast,retold,retomb,retook,retool,retooth,retort,retoss,retotal,retouch,retour,retrace,retrack,retract,retrad,retrade,retrain,retral,retramp,retread,retreat,retree,retrial,retrim,retrip,retrot,retrude,retrue,retrust,retry,retted,retter,rettery,retting,rettory,retube,retuck,retune,returf,return,retuse,retwine,retwist,retying,retype,retzian,reune,reunify,reunion,reunite,reurge,reuse,reutter,rev,revalue,revamp,revary,reve,reveal,reveil,revel,reveler,revelly,revelry,revend,revenge,revent,revenue,rever,reverb,revere,revered,reverer,reverie,revers,reverse,reversi,reverso,revert,revery,revest,revet,revete,revie,review,revile,reviler,revisal,revise,revisee,reviser,revisit,revisor,revival,revive,reviver,revivor,revoice,revoke,revoker,revolt,revolve,revomit,revote,revue,revuist,rewade,rewager,rewake,rewaken,rewall,reward,rewarm,rewarn,rewash,rewater,rewave,rewax,rewayle,rewear,reweave,rewed,reweigh,reweld,rewend,rewet,rewhelp,rewhirl,rewiden,rewin,rewind,rewire,rewish,rewood,reword,rework,rewound,rewove,rewoven,rewrap,rewrite,rex,rexen,reyield,reyoke,reyouth,rhabdom,rhabdos,rhabdus,rhagite,rhagon,rhagose,rhamn,rhamnal,rhason,rhatany,rhe,rhea,rhebok,rheeboc,rheebok,rheen,rheic,rhein,rheinic,rhema,rheme,rhenium,rheotan,rhesian,rhesus,rhetor,rheum,rheumed,rheumic,rheumy,rhexis,rhinal,rhine,rhinion,rhino,rhizine,rhizoid,rhizoma,rhizome,rhizote,rho,rhodic,rhoding,rhodite,rhodium,rhomb,rhombic,rhombos,rhombus,rhubarb,rhumb,rhumba,rhyme,rhymer,rhymery,rhymic,rhymist,rhymy,rhyptic,rhythm,rhyton,ria,rial,riancy,riant,riantly,riata,rib,ribald,riband,ribat,ribband,ribbed,ribber,ribbet,ribbing,ribble,ribbon,ribbony,ribby,ribe,ribless,riblet,riblike,ribonic,ribose,ribskin,ribwork,ribwort,rice,ricer,ricey,rich,richdom,richen,riches,richly,richt,ricin,ricine,ricinic,ricinus,rick,ricker,rickets,rickety,rickey,rickle,ricksha,ricrac,rictal,rictus,rid,ridable,ridably,riddam,riddel,ridden,ridder,ridding,riddle,riddler,ride,rideau,riden,rident,rider,ridered,ridge,ridged,ridgel,ridger,ridgil,ridging,ridgy,riding,ridotto,rie,riem,riempie,rier,rife,rifely,riff,riffle,riffler,rifle,rifler,riflery,rifling,rift,rifter,rifty,rig,rigbane,riggald,rigger,rigging,riggish,riggite,riggot,right,righten,righter,rightle,rightly,righto,righty,rigid,rigidly,rigling,rignum,rigol,rigor,rigsby,rikisha,rikk,riksha,rikshaw,rilawa,rile,riley,rill,rillet,rillett,rillock,rilly,rim,rima,rimal,rimate,rimbase,rime,rimer,rimfire,rimland,rimless,rimmed,rimmer,rimose,rimous,rimpi,rimple,rimrock,rimu,rimula,rimy,rinceau,rinch,rincon,rind,rinded,rindle,rindy,rine,ring,ringe,ringed,ringent,ringer,ringeye,ringing,ringite,ringle,ringlet,ringman,ringtaw,ringy,rink,rinka,rinker,rinkite,rinner,rinse,rinser,rinsing,rio,riot,rioter,rioting,riotist,riotous,riotry,rip,ripa,ripal,ripcord,ripe,ripely,ripen,ripener,riper,ripgut,ripieno,ripier,ripost,riposte,ripper,rippet,rippier,ripping,rippit,ripple,rippler,ripplet,ripply,rippon,riprap,ripsack,ripsaw,ripup,risala,risberm,rise,risen,riser,rishi,risible,risibly,rising,risk,risker,riskful,riskily,riskish,risky,risp,risper,risque,risquee,rissel,risser,rissle,rissoid,rist,ristori,rit,rita,rite,ritling,ritual,ritzy,riva,rivage,rival,rivalry,rive,rivel,rivell,riven,river,rivered,riverly,rivery,rivet,riveter,riving,rivose,rivulet,rix,rixy,riyal,rizzar,rizzle,rizzom,roach,road,roadbed,roaded,roader,roading,roadite,roadman,roadway,roam,roamage,roamer,roaming,roan,roanoke,roar,roarer,roaring,roast,roaster,rob,robalo,roband,robber,robbery,robbin,robbing,robe,rober,roberd,robin,robinet,robing,robinin,roble,robomb,robot,robotry,robur,robust,roc,rocher,rochet,rock,rockaby,rocker,rockery,rocket,rockety,rocking,rockish,rocklay,rocklet,rockman,rocky,rococo,rocta,rod,rodd,roddin,rodding,rode,rodent,rodeo,rodge,rodham,roding,rodless,rodlet,rodlike,rodman,rodney,rodsman,rodster,rodwood,roe,roebuck,roed,roelike,roer,roey,rog,rogan,roger,roggle,rogue,roguery,roguing,roguish,rohan,rohob,rohun,rohuna,roi,roid,roil,roily,roister,roit,roka,roke,rokeage,rokee,rokelay,roker,rokey,roky,role,roleo,roll,rolled,roller,rolley,rollick,rolling,rollix,rollmop,rollock,rollway,roloway,romaika,romaine,romal,romance,romancy,romanza,romaunt,rombos,romeite,romero,rommack,romp,romper,romping,rompish,rompu,rompy,roncet,ronco,rond,ronde,rondeau,rondel,rondino,rondle,rondo,rondure,rone,rongeur,ronquil,rontgen,ronyon,rood,roodle,roof,roofage,roofer,roofing,rooflet,roofman,roofy,rooibok,rooinek,rook,rooker,rookery,rookie,rookish,rooklet,rooky,rool,room,roomage,roomed,roomer,roomful,roomie,roomily,roomlet,roomth,roomthy,roomy,roon,roosa,roost,roosted,rooster,root,rootage,rootcap,rooted,rooter,rootery,rootle,rootlet,rooty,roove,ropable,rope,ropeman,roper,ropery,ropes,ropeway,ropily,roping,ropish,ropp,ropy,roque,roquer,roquet,roquist,roral,roric,rorqual,rorty,rory,rosal,rosario,rosary,rosated,roscid,rose,roseal,roseate,rosebay,rosebud,rosed,roseine,rosel,roselet,rosella,roselle,roseola,roseous,rosery,roset,rosetan,rosette,rosetty,rosetum,rosety,rosied,rosier,rosilla,rosillo,rosily,rosin,rosiny,rosland,rosoli,rosolic,rosolio,ross,rosser,rossite,rostel,roster,rostra,rostral,rostrum,rosular,rosy,rot,rota,rotal,rotaman,rotan,rotang,rotary,rotate,rotated,rotator,rotch,rote,rotella,roter,rotge,rotgut,rother,rotifer,roto,rotor,rottan,rotten,rotter,rotting,rottle,rottock,rottolo,rotula,rotulad,rotular,rotulet,rotulus,rotund,rotunda,rotundo,roub,roucou,roud,roue,rouelle,rouge,rougeau,rougeot,rough,roughen,rougher,roughet,roughie,roughly,roughy,rougy,rouille,rouky,roulade,rouleau,roun,rounce,rouncy,round,rounded,roundel,rounder,roundly,roundup,roundy,roup,rouper,roupet,roupily,roupit,roupy,rouse,rouser,rousing,roust,rouster,rout,route,router,routh,routhie,routhy,routine,routing,routous,rove,rover,rovet,rovetto,roving,row,rowable,rowan,rowboat,rowdily,rowdy,rowed,rowel,rowen,rower,rowet,rowing,rowlet,rowlock,rowport,rowty,rowy,rox,roxy,royal,royale,royalet,royally,royalty,royet,royt,rozum,ruach,ruana,rub,rubasse,rubato,rubbed,rubber,rubbers,rubbery,rubbing,rubbish,rubble,rubbler,rubbly,rubdown,rubelet,rubella,rubelle,rubeola,rubiate,rubican,rubidic,rubied,rubific,rubify,rubine,rubious,ruble,rublis,rubor,rubric,rubrica,rubrify,ruby,ruche,ruching,ruck,rucker,ruckle,rucksey,ruckus,rucky,ruction,rud,rudas,rudd,rudder,ruddied,ruddily,ruddle,ruddock,ruddy,rude,rudely,ruderal,rudesby,rudge,rudish,rudity,rue,rueful,ruelike,ruelle,ruen,ruer,ruesome,ruewort,ruff,ruffed,ruffer,ruffian,ruffin,ruffle,ruffled,ruffler,ruffly,rufous,rufter,rufus,rug,ruga,rugate,rugged,rugging,ruggle,ruggy,ruglike,rugosa,rugose,rugous,ruin,ruinate,ruined,ruiner,ruing,ruinous,rukh,rulable,rule,ruledom,ruler,ruling,rull,ruller,rullion,rum,rumal,rumble,rumbler,rumbly,rumbo,rumen,ruminal,rumkin,rumless,rumly,rummage,rummagy,rummer,rummily,rummish,rummy,rumness,rumney,rumor,rumorer,rump,rumpad,rumpade,rumple,rumply,rumpus,rumshop,run,runaway,runback,runby,runch,rundale,rundle,rundlet,rune,runed,runer,runfish,rung,runic,runite,runkle,runkly,runless,runlet,runman,runnel,runner,runnet,running,runny,runoff,runout,runover,runrig,runt,runted,runtee,runtish,runty,runway,rupa,rupee,rupia,rupiah,rupial,rupie,rupitic,ruptile,ruption,ruptive,rupture,rural,rurally,rurban,ruru,ruse,rush,rushed,rushen,rusher,rushing,rushlit,rushy,rusine,rusk,ruskin,rusky,rusma,rusot,ruspone,russel,russet,russety,russia,russud,rust,rustful,rustic,rustily,rustle,rustler,rustly,rustre,rustred,rusty,ruswut,rut,rutate,rutch,ruth,ruther,ruthful,rutic,rutile,rutin,ruttee,rutter,ruttish,rutty,rutyl,ruvid,rux,ryal,ryania,rybat,ryder,rye,ryen,ryme,rynd,rynt,ryot,ryotwar,rype,rypeck,s,sa,saa,sab,sabalo,sabanut,sabbat,sabbath,sabe,sabeca,sabella,saber,sabered,sabicu,sabina,sabine,sabino,sable,sably,sabora,sabot,saboted,sabra,sabulum,saburra,sabutan,sabzi,sac,sacaton,sacatra,saccade,saccate,saccos,saccule,saccus,sachem,sachet,sack,sackage,sackbag,sackbut,sacked,sacken,sacker,sackful,sacking,sackman,saclike,saco,sacope,sacque,sacra,sacrad,sacral,sacred,sacring,sacrist,sacro,sacrum,sad,sadden,saddik,saddish,saddle,saddled,saddler,sade,sadh,sadhe,sadhu,sadic,sadiron,sadism,sadist,sadly,sadness,sado,sadr,saecula,saeter,saeume,safari,safe,safely,safen,safener,safety,saffian,safflor,safflow,saffron,safrole,saft,sag,saga,sagaie,sagaman,sagathy,sage,sagely,sagene,sagger,sagging,saggon,saggy,saging,sagitta,sagless,sago,sagoin,saguaro,sagum,saguran,sagwire,sagy,sah,sahh,sahib,sahme,sahukar,sai,saic,said,saiga,sail,sailage,sailed,sailer,sailing,sailor,saily,saim,saimiri,saimy,sain,saint,sainted,saintly,saip,sair,sairly,sairve,sairy,saithe,saj,sajou,sake,sakeber,sakeen,saker,sakeret,saki,sakieh,sakulya,sal,salaam,salable,salably,salacot,salad,salago,salal,salamo,salar,salary,salat,salay,sale,salele,salema,salep,salfern,salic,salicin,salicyl,salient,salify,saligot,salina,saline,salite,salited,saliva,salival,salix,salle,sallee,sallet,sallier,salloo,sallow,sallowy,sally,salma,salmiac,salmine,salmis,salmon,salol,salomon,salon,saloon,saloop,salp,salpa,salpian,salpinx,salpoid,salse,salsify,salt,salta,saltant,saltary,saltate,saltcat,salted,saltee,salten,salter,saltern,saltery,saltfat,saltier,saltine,salting,saltish,saltly,saltman,saltpan,saltus,salty,saluki,salung,salute,saluter,salvage,salve,salver,salviol,salvo,salvor,salvy,sam,samadh,samadhi,samaj,saman,samara,samaria,samarra,samba,sambal,sambar,sambo,sambuk,sambuke,same,samekh,samel,samely,samen,samh,samhita,samiel,samiri,samisen,samite,samkara,samlet,sammel,sammer,sammier,sammy,samovar,samp,sampan,sampi,sample,sampler,samsara,samshu,samson,samurai,san,sanable,sanai,sancho,sanct,sancta,sanctum,sand,sandak,sandal,sandan,sandbag,sandbin,sandbox,sandboy,sandbur,sanded,sander,sanders,sandhi,sanding,sandix,sandman,sandust,sandy,sane,sanely,sang,sanga,sangar,sangei,sanger,sangha,sangley,sangrel,sangsue,sanicle,sanies,sanify,sanious,sanity,sanjak,sank,sankha,sannup,sans,sansei,sansi,sant,santal,santene,santimi,santims,santir,santon,sao,sap,sapa,sapajou,sapan,sapbush,sapek,sapful,saphead,saphena,saphie,sapid,sapient,sapin,sapinda,saple,sapless,sapling,sapo,saponin,sapor,sapota,sapote,sappare,sapper,sapphic,sapping,sapples,sappy,saprine,sapsago,sapsuck,sapwood,sapwort,sar,saraad,saraf,sarangi,sarcasm,sarcast,sarcine,sarcle,sarcler,sarcode,sarcoid,sarcoma,sarcous,sard,sardel,sardine,sardius,sare,sargo,sargus,sari,sarif,sarigue,sarinda,sarip,sark,sarkar,sarkful,sarkine,sarking,sarkit,sarlak,sarlyk,sarment,sarna,sarod,saron,sarong,saronic,saros,sarpler,sarpo,sarra,sarraf,sarsa,sarsen,sart,sartage,sartain,sartor,sarus,sarwan,sasa,sasan,sasani,sash,sashay,sashery,sashing,sasin,sasine,sassaby,sassy,sat,satable,satan,satang,satanic,satara,satchel,sate,sateen,satiate,satient,satiety,satin,satine,satined,satiny,satire,satiric,satisfy,satlijk,satrap,satrapy,satron,sattle,sattva,satura,satyr,satyric,sauce,saucer,saucily,saucy,sauf,sauger,saugh,saughen,sauld,saulie,sault,saulter,saum,saumon,saumont,sauna,saunter,sauqui,saur,saurel,saurian,saury,sausage,saut,saute,sauteur,sauty,sauve,savable,savacu,savage,savanna,savant,savarin,save,saved,saveloy,saver,savin,saving,savior,savola,savor,savored,savorer,savory,savour,savoy,savoyed,savssat,savvy,saw,sawah,sawali,sawarra,sawback,sawbill,sawbuck,sawbwa,sawder,sawdust,sawed,sawer,sawfish,sawfly,sawing,sawish,sawlike,sawman,sawmill,sawmon,sawmont,sawn,sawney,sawt,sawway,sawwort,sawyer,sax,saxhorn,saxten,saxtie,saxtuba,say,saya,sayable,sayer,sayette,sayid,saying,sazen,sblood,scab,scabbed,scabble,scabby,scabid,scabies,scabish,scabrid,scad,scaddle,scads,scaff,scaffer,scaffie,scaffle,scaglia,scala,scalage,scalar,scalare,scald,scalded,scalder,scaldic,scaldy,scale,scaled,scalena,scalene,scaler,scales,scaling,scall,scalled,scallom,scallop,scalma,scaloni,scalp,scalpel,scalper,scalt,scaly,scam,scamble,scamell,scamler,scamles,scamp,scamper,scan,scandal,scandia,scandic,scanmag,scanner,scant,scantle,scantly,scanty,scap,scape,scapel,scapha,scapoid,scapose,scapple,scapula,scapus,scar,scarab,scarce,scarcen,scare,scarer,scarf,scarfed,scarfer,scarfy,scarid,scarify,scarily,scarlet,scarman,scarn,scaroid,scarp,scarred,scarrer,scarry,scart,scarth,scarus,scarved,scary,scase,scasely,scat,scatch,scathe,scatter,scatty,scatula,scaul,scaum,scaup,scauper,scaur,scaurie,scaut,scavage,scavel,scaw,scawd,scawl,scazon,sceat,scena,scenary,scend,scene,scenery,scenic,scenist,scenite,scent,scented,scenter,scepsis,scepter,sceptic,sceptry,scerne,schanz,schappe,scharf,schelly,schema,scheme,schemer,schemy,schene,schepel,schepen,scherm,scherzi,scherzo,schesis,schism,schisma,schist,schloop,schmelz,scho,schola,scholae,scholar,scholia,schone,school,schoon,schorl,schorly,schout,schtoff,schuh,schuhe,schuit,schule,schuss,schute,schwa,schwarz,sciapod,sciarid,sciatic,scibile,science,scient,scincid,scind,sciniph,scintle,scion,scious,scirrhi,scissel,scissor,sciurid,sclaff,sclate,sclater,sclaw,scler,sclera,scleral,sclere,scliff,sclim,sclimb,scoad,scob,scobby,scobs,scoff,scoffer,scog,scoggan,scogger,scoggin,scoke,scolb,scold,scolder,scolex,scolia,scoliid,scolion,scolite,scollop,scolog,sconce,sconcer,scone,scoon,scoop,scooped,scooper,scoot,scooter,scopa,scopate,scope,scopet,scopic,scopine,scopola,scops,scopula,scorch,score,scored,scorer,scoria,scoriac,scoriae,scorify,scoring,scorn,scorned,scorner,scorny,scorper,scorse,scot,scotale,scotch,scote,scoter,scotia,scotino,scotoma,scotomy,scouch,scouk,scoup,scour,scoured,scourer,scourge,scoury,scouse,scout,scouter,scouth,scove,scovel,scovy,scow,scowder,scowl,scowler,scowman,scrab,scrabe,scrae,scrag,scraggy,scraily,scram,scran,scranch,scrank,scranky,scranny,scrap,scrape,scraped,scraper,scrapie,scrappy,scrapy,scrat,scratch,scrath,scrauch,scraw,scrawk,scrawl,scrawly,scrawm,scrawny,scray,scraze,screak,screaky,scream,screamy,scree,screech,screed,screek,screel,screen,screeny,screet,screeve,screich,screigh,screve,screver,screw,screwed,screwer,screwy,scribal,scribe,scriber,scride,scrieve,scrike,scrim,scrime,scrimer,scrimp,scrimpy,scrin,scrinch,scrine,scringe,scrip,scripee,script,scritch,scrive,scriven,scriver,scrob,scrobe,scrobis,scrod,scroff,scrog,scroggy,scrolar,scroll,scrolly,scroo,scrooch,scrooge,scroop,scrota,scrotal,scrotum,scrouge,scrout,scrow,scroyle,scrub,scrubby,scruf,scruff,scruffy,scruft,scrum,scrump,scrunch,scrunge,scrunt,scruple,scrush,scruto,scruze,scry,scryer,scud,scudder,scuddle,scuddy,scudi,scudler,scudo,scuff,scuffed,scuffer,scuffle,scuffly,scuffy,scuft,scufter,scug,sculch,scull,sculler,scullog,sculp,sculper,sculpin,sculpt,sculsh,scum,scumber,scumble,scummed,scummer,scummy,scun,scunder,scunner,scup,scupful,scupper,scuppet,scur,scurdy,scurf,scurfer,scurfy,scurry,scurvy,scuse,scut,scuta,scutage,scutal,scutate,scutch,scute,scutel,scutter,scuttle,scutty,scutula,scutum,scybala,scye,scypha,scyphae,scyphi,scyphoi,scyphus,scyt,scytale,scythe,sdeath,se,sea,seadog,seafare,seafolk,seafowl,seagirt,seagoer,seah,seak,seal,sealant,sealch,sealed,sealer,sealery,sealess,sealet,sealike,sealine,sealing,seam,seaman,seamark,seamed,seamer,seaming,seamlet,seamost,seamrog,seamy,seance,seaport,sear,searce,searcer,search,seared,searer,searing,seary,seasick,seaside,season,seat,seatang,seated,seater,seathe,seating,seatron,seave,seavy,seawant,seaward,seaware,seaway,seaweed,seawife,seaworn,seax,sebacic,sebait,sebate,sebific,sebilla,sebkha,sebum,sebundy,sec,secable,secalin,secancy,secant,secede,seceder,secern,secesh,sech,seck,seclude,secluse,secohm,second,seconde,secos,secpar,secque,secre,secrecy,secret,secreta,secrete,secreto,sect,sectary,sectile,section,sectism,sectist,sective,sector,secular,secund,secure,securer,sedan,sedate,sedent,sedge,sedged,sedging,sedgy,sedile,sedilia,seduce,seducee,seducer,seduct,sedum,see,seeable,seech,seed,seedage,seedbed,seedbox,seeded,seeder,seedful,seedily,seedkin,seedlet,seedlip,seedman,seedy,seege,seeing,seek,seeker,seeking,seel,seelful,seely,seem,seemer,seeming,seemly,seen,seenie,seep,seepage,seeped,seepy,seer,seeress,seerpaw,seesaw,seesee,seethe,seg,seggar,seggard,segged,seggrom,segment,sego,segol,seiche,seidel,seine,seiner,seise,seism,seismal,seismic,seit,seity,seize,seizer,seizin,seizing,seizor,seizure,sejant,sejoin,sejunct,sekos,selah,selamin,seldom,seldor,sele,select,selenic,self,selfdom,selfful,selfish,selfism,selfist,selfly,selion,sell,sella,sellar,sellate,seller,sellie,selling,sellout,selly,selsyn,selt,selva,selvage,semarum,sematic,semball,semble,seme,semeed,semeia,semeion,semen,semence,semese,semi,semiape,semiarc,semibay,semic,semicup,semidry,semiegg,semifib,semifit,semify,semigod,semihot,seminal,seminar,semiorb,semiped,semipro,semiraw,semis,semita,semitae,semital,semiurn,semmet,semmit,semola,semsem,sen,senaite,senam,senary,senate,senator,sence,sencion,send,sendal,sendee,sender,sending,senega,senegin,senesce,senile,senior,senna,sennet,sennit,sennite,sensa,sensal,sensate,sense,sensed,sensify,sensile,sension,sensism,sensist,sensive,sensize,senso,sensor,sensory,sensual,sensum,sensyne,sent,sentry,sepad,sepal,sepaled,sephen,sepia,sepian,sepiary,sepic,sepioid,sepion,sepiost,sepium,sepone,sepoy,seppuku,seps,sepsine,sepsis,sept,septa,septal,septan,septane,septate,septave,septet,septic,septier,septile,septime,septoic,septole,septum,septuor,sequa,sequel,sequela,sequent,sequest,sequin,ser,sera,serab,seragli,serai,serail,seral,serang,serape,seraph,serau,seraw,sercial,serdab,sere,sereh,serene,serf,serfage,serfdom,serfish,serfism,serge,serger,serging,serial,seriary,seriate,sericea,sericin,seriema,series,serif,serific,serin,serine,seringa,serio,serious,serment,sermo,sermon,sero,serolin,seron,seroon,seroot,seropus,serosa,serous,serow,serpent,serphid,serpigo,serpula,serra,serrage,serran,serrana,serrano,serrate,serried,serry,sert,serta,sertule,sertum,serum,serumal,serut,servage,serval,servant,serve,server,servery,servet,service,servile,serving,servist,servo,sesame,sesma,sesqui,sess,sessile,session,sestet,sesti,sestiad,sestina,sestine,sestole,sestuor,set,seta,setae,setal,setback,setbolt,setdown,setfast,seth,sethead,setier,setline,setness,setoff,seton,setose,setous,setout,setover,setsman,sett,settee,setter,setting,settle,settled,settler,settlor,setula,setule,setup,setwall,setwise,setwork,seugh,seven,sevener,seventh,seventy,sever,several,severe,severer,severy,sew,sewable,sewage,sewan,sewed,sewen,sewer,sewered,sewery,sewing,sewless,sewn,sex,sexed,sexern,sexfid,sexfoil,sexhood,sexifid,sexiped,sexless,sexlike,sexly,sext,sextain,sextan,sextans,sextant,sextar,sextary,sextern,sextet,sextic,sextile,sexto,sextole,sexton,sextry,sextula,sexual,sexuale,sexuous,sexy,sey,sfoot,sh,sha,shab,shabash,shabbed,shabble,shabby,shachle,shachly,shack,shackle,shackly,shacky,shad,shade,shaded,shader,shadily,shadine,shading,shadkan,shadoof,shadow,shadowy,shady,shaffle,shaft,shafted,shafter,shafty,shag,shagbag,shagged,shaggy,shaglet,shagrag,shah,shahdom,shahi,shahin,shaikh,shaitan,shake,shaken,shaker,shakers,shakha,shakily,shaking,shako,shakti,shaku,shaky,shale,shall,shallal,shallon,shallop,shallot,shallow,shallu,shalom,shalt,shalwar,shaly,sham,shama,shamal,shamalo,shaman,shamba,shamble,shame,shamed,shamer,shamir,shammed,shammer,shammy,shampoo,shan,shandry,shandy,shangan,shank,shanked,shanker,shanna,shanny,shansa,shant,shanty,shap,shape,shaped,shapely,shapen,shaper,shaping,shaps,shapy,shard,sharded,shardy,share,sharer,shargar,shark,sharky,sharn,sharny,sharp,sharpen,sharper,sharpie,sharply,sharps,sharpy,sharrag,sharry,shaster,shastra,shastri,shat,shatan,shatter,shaugh,shaul,shaup,shauri,shauwe,shave,shaved,shavee,shaven,shaver,shavery,shaving,shaw,shawl,shawled,shawm,shawny,shawy,shay,she,shea,sheaf,sheafy,sheal,shear,sheard,shearer,shears,sheat,sheath,sheathe,sheathy,sheave,sheaved,shebang,shebeen,shed,shedded,shedder,sheder,shedman,shee,sheely,sheen,sheenly,sheeny,sheep,sheepy,sheer,sheered,sheerly,sheet,sheeted,sheeter,sheety,sheik,sheikly,shekel,shela,sheld,shelder,shelf,shelfy,shell,shellac,shelled,sheller,shellum,shelly,shelta,shelter,shelty,shelve,shelver,shelvy,shend,sheng,sheolic,sheppey,sher,sherbet,sheriat,sherif,sherifa,sheriff,sherifi,sherify,sherry,sheth,sheugh,sheva,shevel,shevri,shewa,shewel,sheyle,shi,shibah,shibar,shice,shicer,shicker,shide,shied,shiel,shield,shier,shies,shiest,shift,shifter,shifty,shigram,shih,shikar,shikara,shikari,shikimi,shikken,shiko,shikra,shilf,shilfa,shill,shilla,shillet,shilloo,shilpit,shim,shimal,shimmer,shimmy,shimose,shimper,shin,shindig,shindle,shindy,shine,shiner,shingle,shingly,shinily,shining,shinner,shinny,shinty,shiny,shinza,ship,shipboy,shipful,shiplap,shiplet,shipman,shipped,shipper,shippo,shippon,shippy,shipway,shire,shirk,shirker,shirky,shirl,shirpit,shirr,shirt,shirty,shish,shisham,shisn,shita,shither,shittah,shittim,shiv,shive,shiver,shivery,shivey,shivoo,shivy,sho,shoad,shoader,shoal,shoaler,shoaly,shoat,shock,shocker,shod,shodden,shoddy,shode,shoder,shoe,shoeboy,shoeing,shoeman,shoer,shoful,shog,shogaol,shoggie,shoggle,shoggly,shogi,shogun,shohet,shoji,shola,shole,shone,shoneen,shoo,shood,shoofa,shoofly,shooi,shook,shool,shooler,shoop,shoor,shoot,shootee,shooter,shop,shopboy,shopful,shophar,shoplet,shopman,shoppe,shopper,shoppy,shoq,shor,shoran,shore,shored,shorer,shoring,shorn,short,shorten,shorter,shortly,shorts,shot,shote,shotgun,shotman,shott,shotted,shotten,shotter,shotty,shou,should,shout,shouter,shoval,shove,shovel,shover,show,showdom,shower,showery,showily,showing,showish,showman,shown,showup,showy,shoya,shrab,shradh,shraf,shrag,shram,shrank,shrap,shrave,shravey,shred,shreddy,shree,shreeve,shrend,shrew,shrewd,shrewdy,shrewly,shriek,shrieky,shrift,shrike,shrill,shrilly,shrimp,shrimpi,shrimpy,shrinal,shrine,shrink,shrinky,shrip,shrite,shrive,shrivel,shriven,shriver,shroff,shrog,shroud,shroudy,shrove,shrover,shrub,shrubby,shruff,shrug,shrunk,shrups,shuba,shuck,shucker,shucks,shudder,shuff,shuffle,shug,shul,shuler,shumac,shun,shune,shunner,shunt,shunter,shure,shurf,shush,shusher,shut,shutoff,shutout,shutten,shutter,shuttle,shy,shyer,shyish,shyly,shyness,shyster,si,siak,sial,sialic,sialid,sialoid,siamang,sib,sibbed,sibbens,sibber,sibby,sibilus,sibling,sibness,sibrede,sibship,sibyl,sibylic,sibylla,sic,sicca,siccant,siccate,siccity,sice,sick,sickbed,sicken,sicker,sickish,sickle,sickled,sickler,sickly,sicsac,sicula,sicular,sidder,siddur,side,sideage,sidearm,sidecar,sided,sider,sideral,siderin,sides,sideway,sidhe,sidi,siding,sidle,sidler,sidling,sidth,sidy,sie,siege,sieger,sienna,sier,siering,sierra,sierran,siesta,sieve,siever,sievy,sifac,sifaka,sife,siffle,sifflet,sifflot,sift,siftage,sifted,sifter,sifting,sig,sigger,sigh,sigher,sighful,sighing,sight,sighted,sighten,sighter,sightly,sighty,sigil,sigla,siglos,sigma,sigmate,sigmoid,sign,signal,signary,signate,signee,signer,signet,signify,signior,signist,signman,signory,signum,sika,sikar,sikatch,sike,sikerly,siket,sikhara,sikhra,sil,silage,silane,sile,silen,silence,silency,sileni,silenic,silent,silenus,silesia,silex,silica,silicam,silicic,silicle,silico,silicon,silicyl,siliqua,silique,silk,silked,silken,silker,silkie,silkily,silkman,silky,sill,sillar,siller,sillily,sillock,sillon,silly,silo,siloist,silphid,silt,siltage,silting,silty,silurid,silva,silvan,silver,silvern,silvery,silvics,silyl,sima,simal,simar,simball,simbil,simblin,simblot,sime,simiad,simial,simian,similar,simile,similor,simioid,simious,simity,simkin,simlin,simling,simmer,simmon,simnel,simony,simool,simoom,simoon,simous,simp,simpai,simper,simple,simpler,simplex,simply,simsim,simson,simular,simuler,sin,sina,sinaite,sinal,sinamay,sinapic,sinapis,sinawa,since,sincere,sind,sinder,sindle,sindoc,sindon,sindry,sine,sinew,sinewed,sinewy,sinful,sing,singe,singed,singer,singey,singh,singing,single,singled,singler,singles,singlet,singly,singult,sinh,sink,sinkage,sinker,sinking,sinky,sinless,sinlike,sinnen,sinner,sinnet,sinopia,sinople,sinsion,sinsyne,sinter,sintoc,sinuate,sinuose,sinuous,sinus,sinusal,sinward,siol,sion,sip,sipage,sipe,siper,siphoid,siphon,sipid,siping,sipling,sipper,sippet,sippio,sir,sircar,sirdar,sire,siren,sirene,sirenic,sireny,siress,sirgang,sirian,siricid,sirih,siris,sirkeer,sirki,sirky,sirloin,siroc,sirocco,sirpea,sirple,sirpoon,sirrah,sirree,sirship,sirup,siruped,siruper,sirupy,sis,sisal,sise,sisel,sish,sisham,sisi,siskin,siss,sissify,sissoo,sissy,sist,sister,sistern,sistle,sistrum,sit,sitao,sitar,sitch,site,sitfast,sith,sithe,sithens,sitient,sitio,sittee,sitten,sitter,sittine,sitting,situal,situate,situla,situlae,situs,siva,siver,sivvens,siwash,six,sixain,sixer,sixfoil,sixfold,sixsome,sixte,sixteen,sixth,sixthet,sixthly,sixty,sizable,sizably,sizal,sizar,size,sized,sizeman,sizer,sizes,sizing,sizy,sizygia,sizz,sizzard,sizzing,sizzle,sjambok,skaddle,skaff,skaffie,skag,skair,skal,skance,skart,skasely,skat,skate,skater,skatiku,skating,skatist,skatole,skaw,skean,skedge,skee,skeed,skeeg,skeel,skeely,skeen,skeer,skeered,skeery,skeet,skeeter,skeezix,skeg,skegger,skeif,skeigh,skeily,skein,skeiner,skeipp,skel,skelder,skelf,skelic,skell,skellat,skeller,skellum,skelly,skelp,skelper,skelpin,skelter,skemmel,skemp,sken,skene,skeo,skeough,skep,skepful,skeptic,sker,skere,skerret,skerry,sketch,sketchy,skete,skevish,skew,skewed,skewer,skewl,skewly,skewy,skey,ski,skiapod,skibby,skice,skid,skidded,skidder,skiddoo,skiddy,skidpan,skidway,skied,skieppe,skier,skies,skiff,skift,skiing,skijore,skil,skilder,skill,skilled,skillet,skilly,skilpot,skilts,skim,skime,skimmed,skimmer,skimp,skimpy,skin,skinch,skinful,skink,skinker,skinkle,skinned,skinner,skinny,skip,skipman,skippel,skipper,skippet,skipple,skippy,skirl,skirp,skirr,skirreh,skirret,skirt,skirted,skirter,skirty,skit,skite,skiter,skither,skitter,skittle,skitty,skiv,skive,skiver,skiving,sklate,sklater,sklent,skoal,skoo,skookum,skoptsy,skout,skraigh,skrike,skrupul,skua,skulk,skulker,skull,skulled,skully,skulp,skun,skunk,skunky,skuse,sky,skybal,skyey,skyful,skyish,skylark,skyless,skylike,skylook,skyman,skyphoi,skyphos,skyre,skysail,skyugle,skyward,skyway,sla,slab,slabbed,slabber,slabby,slabman,slack,slacked,slacken,slacker,slackly,slad,sladang,slade,slae,slag,slagger,slaggy,slagman,slain,slainte,slait,slake,slaker,slaking,slaky,slam,slamp,slander,slane,slang,slangy,slank,slant,slantly,slap,slape,slapper,slare,slart,slarth,slash,slashed,slasher,slashy,slat,slatch,slate,slater,slath,slather,slatify,slating,slatish,slatted,slatter,slaty,slaum,slave,slaved,slaver,slavery,slavey,slaving,slavish,slaw,slay,slayer,slaying,sleathy,sleave,sleaved,sleazy,sleck,sled,sledded,sledder,sledful,sledge,sledger,slee,sleech,sleechy,sleek,sleeken,sleeker,sleekit,sleekly,sleeky,sleep,sleeper,sleepry,sleepy,sleer,sleet,sleety,sleeve,sleeved,sleever,sleigh,sleight,slender,slent,slepez,slept,slete,sleuth,slew,slewed,slewer,slewing,sley,sleyer,slice,sliced,slicer,slich,slicht,slicing,slick,slicken,slicker,slickly,slid,slidage,slidden,slidder,slide,slided,slider,sliding,slifter,slight,slighty,slim,slime,slimer,slimily,slimish,slimly,slimpsy,slimsy,slimy,sline,sling,slinge,slinger,slink,slinker,slinky,slip,slipe,slipman,slipped,slipper,slippy,slipway,slirt,slish,slit,slitch,slite,slither,slithy,slitted,slitter,slitty,slive,sliver,slivery,sliving,sloan,slob,slobber,slobby,slock,slocken,slod,slodder,slodge,slodger,sloe,slog,slogan,slogger,sloka,sloke,slon,slone,slonk,sloo,sloom,sloomy,sloop,sloosh,slop,slope,sloped,slopely,sloper,sloping,slopped,sloppy,slops,slopy,slorp,slosh,slosher,sloshy,slot,slote,sloted,sloth,slotted,slotter,slouch,slouchy,slough,sloughy,slour,sloush,sloven,slow,slowish,slowly,slowrie,slows,sloyd,slub,slubber,slubby,slud,sludder,sludge,sludged,sludger,sludgy,slue,sluer,slug,slugged,slugger,sluggy,sluice,sluicer,sluicy,sluig,sluit,slum,slumber,slumdom,slumgum,slummer,slummy,slump,slumpy,slung,slunge,slunk,slunken,slur,slurbow,slurp,slurry,slush,slusher,slushy,slut,slutch,slutchy,sluther,slutter,slutty,sly,slyish,slyly,slyness,slype,sma,smack,smackee,smacker,smaik,small,smallen,smaller,smalls,smally,smalm,smalt,smalter,smalts,smaragd,smarm,smarmy,smart,smarten,smartly,smarty,smash,smasher,smashup,smatter,smaze,smear,smeared,smearer,smeary,smectic,smectis,smeddum,smee,smeech,smeek,smeeky,smeer,smeeth,smegma,smell,smelled,smeller,smelly,smelt,smelter,smeth,smethe,smeuse,smew,smich,smicker,smicket,smiddie,smiddum,smidge,smidgen,smilax,smile,smiler,smilet,smiling,smily,smirch,smirchy,smiris,smirk,smirker,smirkle,smirkly,smirky,smirtle,smit,smitch,smite,smiter,smith,smitham,smither,smithy,smiting,smitten,smock,smocker,smog,smoke,smoked,smoker,smokery,smokily,smoking,smokish,smoky,smolder,smolt,smooch,smoochy,smoodge,smook,smoot,smooth,smopple,smore,smote,smother,smotter,smouch,smous,smouse,smouser,smout,smriti,smudge,smudged,smudger,smudgy,smug,smuggle,smugism,smugly,smuisty,smur,smurr,smurry,smuse,smush,smut,smutch,smutchy,smutted,smutter,smutty,smyth,smytrie,snab,snabbie,snabble,snack,snackle,snaff,snaffle,snafu,snag,snagged,snagger,snaggy,snagrel,snail,snails,snaily,snaith,snake,snaker,snakery,snakily,snaking,snakish,snaky,snap,snapbag,snape,snaper,snapped,snapper,snapps,snappy,snaps,snapy,snare,snarer,snark,snarl,snarler,snarly,snary,snaste,snatch,snatchy,snath,snathe,snavel,snavvle,snaw,snead,sneak,sneaker,sneaky,sneap,sneath,sneathe,sneb,sneck,snecker,snecket,sned,snee,sneer,sneerer,sneery,sneesh,sneest,sneesty,sneeze,sneezer,sneezy,snell,snelly,snerp,snew,snib,snibble,snibel,snicher,snick,snicker,snicket,snickey,snickle,sniddle,snide,sniff,sniffer,sniffle,sniffly,sniffy,snift,snifter,snifty,snig,snigger,sniggle,snip,snipe,sniper,sniping,snipish,snipper,snippet,snippy,snipy,snirl,snirt,snirtle,snitch,snite,snithe,snithy,snittle,snivel,snively,snivy,snob,snobber,snobby,snobdom,snocher,snock,snocker,snod,snodly,snoek,snog,snoga,snoke,snood,snooded,snook,snooker,snoop,snooper,snoopy,snoose,snoot,snooty,snoove,snooze,snoozer,snoozle,snoozy,snop,snore,snorer,snoring,snork,snorkel,snorker,snort,snorter,snortle,snorty,snot,snotter,snotty,snouch,snout,snouted,snouter,snouty,snow,snowcap,snowie,snowily,snowish,snowk,snowl,snowy,snozzle,snub,snubbed,snubbee,snubber,snubby,snuck,snudge,snuff,snuffer,snuffle,snuffly,snuffy,snug,snugger,snuggle,snugify,snugly,snum,snup,snupper,snur,snurl,snurly,snurp,snurt,snuzzle,sny,snying,so,soak,soakage,soaked,soaken,soaker,soaking,soakman,soaky,soally,soam,soap,soapbox,soaper,soapery,soapily,soapsud,soapy,soar,soarer,soaring,soary,sob,sobber,sobbing,sobby,sobeit,sober,soberer,soberly,sobful,soboles,soc,socage,socager,soccer,soce,socht,social,society,socii,socius,sock,socker,socket,sockeye,socky,socle,socman,soco,sod,soda,sodaic,sodded,sodden,sodding,soddite,soddy,sodic,sodio,sodium,sodless,sodoku,sodomic,sodomy,sodwork,sody,soe,soekoe,soever,sofa,sofane,sofar,soffit,soft,softa,soften,softish,softly,softner,softy,sog,soger,soget,soggily,sogging,soggy,soh,soho,soil,soilage,soiled,soiling,soilure,soily,soiree,soja,sojourn,sok,soka,soke,sokeman,soken,sol,sola,solace,solacer,solan,solanal,solanum,solar,solate,solatia,solay,sold,soldado,soldan,solder,soldi,soldier,soldo,sole,solea,soleas,soleil,solely,solemn,solen,solent,soler,soles,soleus,soleyn,soli,solicit,solid,solidi,solidly,solidum,solidus,solio,soliped,solist,sollar,solo,solod,solodi,soloist,solon,soloth,soluble,solubly,solum,solute,solvate,solve,solvend,solvent,solver,soma,somal,somata,somatic,somber,sombre,some,someday,somehow,someone,somers,someway,somewhy,somital,somite,somitic,somma,somnial,somnify,somnus,sompay,sompne,sompner,son,sonable,sonance,sonancy,sonant,sonar,sonata,sond,sondeli,soneri,song,songful,songish,songle,songlet,songman,songy,sonhood,sonic,soniou,sonk,sonless,sonlike,sonly,sonnet,sonny,sonoric,sons,sonship,sonsy,sontag,soodle,soodly,sook,sooky,sool,sooloos,soon,sooner,soonish,soonly,soorawn,soord,soorkee,soot,sooter,sooth,soothe,soother,sootily,sooty,sop,sope,soph,sophia,sophic,sophism,sophy,sopite,sopor,sopper,sopping,soppy,soprani,soprano,sora,sorage,soral,sorb,sorbate,sorbent,sorbic,sorbile,sorbin,sorbite,sorbose,sorbus,sorcer,sorcery,sorchin,sorda,sordes,sordid,sordine,sordino,sordor,sore,soredia,soree,sorehon,sorely,sorema,sorgho,sorghum,sorgo,sori,soricid,sorite,sorites,sorn,sornare,sornari,sorner,sorning,soroban,sororal,sorose,sorosis,sorra,sorrel,sorrily,sorroa,sorrow,sorrowy,sorry,sort,sortal,sorted,sorter,sortie,sortly,sorty,sorus,sorva,sory,sosh,soshed,soso,sosoish,soss,sossle,sot,sotie,sotnia,sotnik,sotol,sots,sottage,sotted,sotter,sottish,sou,souari,soubise,soucar,souchet,souchy,soud,souffle,sough,sougher,sought,soul,soulack,souled,soulful,soulish,souly,soum,sound,sounder,soundly,soup,soupcon,souper,souple,soupy,sour,source,soured,souren,sourer,souring,sourish,sourly,sourock,soursop,sourtop,soury,souse,souser,souslik,soutane,souter,south,souther,sov,soviet,sovite,sovkhoz,sovran,sow,sowable,sowan,sowans,sowar,sowarry,sowback,sowbane,sowel,sowens,sower,sowfoot,sowing,sowins,sowl,sowle,sowlike,sowlth,sown,sowse,sowt,sowte,soy,soya,soybean,sozin,sozolic,sozzle,sozzly,spa,space,spaced,spacer,spacing,spack,spacy,spad,spade,spaded,spader,spadger,spading,spadix,spadone,spae,spaedom,spaeman,spaer,spahi,spaid,spaik,spairge,spak,spald,spalder,spale,spall,spaller,spalt,span,spancel,spandle,spandy,spane,spanemy,spang,spangle,spangly,spaniel,spaning,spank,spanker,spanky,spann,spannel,spanner,spanule,spar,sparada,sparch,spare,sparely,sparer,sparge,sparger,sparid,sparing,spark,sparked,sparker,sparkle,sparkly,sparks,sparky,sparm,sparoid,sparred,sparrer,sparrow,sparry,sparse,spart,sparth,spartle,sparver,spary,spasm,spasmed,spasmic,spastic,spat,spate,spatha,spathal,spathe,spathed,spathic,spatial,spatted,spatter,spattle,spatula,spatule,spave,spaver,spavie,spavied,spaviet,spavin,spawn,spawner,spawny,spay,spayad,spayard,spaying,speak,speaker,speal,spean,spear,spearer,speary,spec,spece,special,specie,species,specify,speck,specked,speckle,speckly,specks,specky,specs,specter,spectra,spectry,specula,specus,sped,speech,speed,speeder,speedy,speel,speen,speer,speiss,spelder,spelk,spell,speller,spelt,spelter,speltz,spelunk,spence,spencer,spend,spender,spense,spent,speos,sperate,sperity,sperket,sperm,sperma,spermic,spermy,sperone,spet,spetch,spew,spewer,spewing,spewy,spex,sphacel,sphecid,spheges,sphegid,sphene,sphenic,spheral,sphere,spheric,sphery,sphinx,spica,spical,spicant,spicate,spice,spiced,spicer,spicery,spicily,spicing,spick,spicket,spickle,spicose,spicous,spicula,spicule,spicy,spider,spidery,spidger,spied,spiegel,spiel,spieler,spier,spiff,spiffed,spiffy,spig,spignet,spigot,spike,spiked,spiker,spikily,spiking,spiky,spile,spiler,spiling,spilite,spill,spiller,spillet,spilly,spiloma,spilt,spilth,spilus,spin,spina,spinach,spinae,spinage,spinal,spinate,spinder,spindle,spindly,spine,spined,spinel,spinet,spingel,spink,spinner,spinney,spinoid,spinose,spinous,spinule,spiny,spionid,spiral,spirale,spiran,spirant,spirate,spire,spirea,spired,spireme,spiring,spirit,spirity,spirket,spiro,spiroid,spirous,spirt,spiry,spise,spit,spital,spitbox,spite,spitful,spitish,spitted,spitten,spitter,spittle,spitz,spiv,spivery,splash,splashy,splat,splatch,splay,splayed,splayer,spleen,spleeny,spleet,splenic,splet,splice,splicer,spline,splint,splinty,split,splodge,splodgy,splore,splosh,splotch,splunge,splurge,splurgy,splurt,spoach,spode,spodium,spoffle,spoffy,spogel,spoil,spoiled,spoiler,spoilt,spoke,spoken,spoky,spole,spolia,spolium,spondee,spondyl,spong,sponge,sponged,sponger,spongin,spongy,sponsal,sponson,sponsor,spoof,spoofer,spook,spooky,spool,spooler,spoom,spoon,spooner,spoony,spoor,spoorer,spoot,spor,sporal,spore,spored,sporid,sporoid,sporont,sporous,sporran,sport,sporter,sportly,sports,sporty,sporule,sposh,sposhy,spot,spotted,spotter,spottle,spotty,spousal,spouse,spousy,spout,spouter,spouty,sprack,sprad,sprag,spraich,sprain,spraint,sprang,sprank,sprat,spratty,sprawl,sprawly,spray,sprayer,sprayey,spread,spready,spreath,spree,spreeuw,spreng,sprent,spret,sprew,sprewl,spried,sprier,spriest,sprig,spriggy,spring,springe,springy,sprink,sprint,sprit,sprite,spritty,sproat,sprod,sprogue,sproil,sprong,sprose,sprout,sprowsy,spruce,sprue,spruer,sprug,spruit,sprung,sprunny,sprunt,spry,spryly,spud,spudder,spuddle,spuddy,spuffle,spug,spuke,spume,spumone,spumose,spumous,spumy,spun,spung,spunk,spunkie,spunky,spunny,spur,spurge,spuriae,spurl,spurlet,spurn,spurner,spurred,spurrer,spurry,spurt,spurter,spurtle,spurway,sput,sputa,sputter,sputum,spy,spyboat,spydom,spyer,spyhole,spyism,spyship,squab,squabby,squacco,squad,squaddy,squail,squalid,squall,squally,squalm,squalor,squam,squama,squamae,squame,square,squared,squarer,squark,squary,squash,squashy,squat,squatly,squatty,squaw,squawk,squawky,squdge,squdgy,squeak,squeaky,squeal,squeald,squeam,squeamy,squeege,squeeze,squeezy,squelch,squench,squib,squid,squidge,squidgy,squiffy,squilla,squin,squinch,squinny,squinsy,squint,squinty,squire,squiret,squirk,squirm,squirmy,squirr,squirt,squirty,squish,squishy,squit,squitch,squoze,squush,squushy,sraddha,sramana,sri,sruti,ssu,st,staab,stab,stabber,stabile,stable,stabler,stably,staboy,stacher,stachys,stack,stacker,stacte,stadda,staddle,stade,stadia,stadic,stadion,stadium,staff,staffed,staffer,stag,stage,staged,stager,stagery,stagese,stagger,staggie,staggy,stagily,staging,stagnum,stagy,staia,staid,staidly,stain,stainer,staio,stair,staired,stairy,staith,staiver,stake,staker,stale,stalely,staling,stalk,stalked,stalker,stalko,stalky,stall,stallar,staller,stam,stambha,stamen,stamin,stamina,stammel,stammer,stamnos,stamp,stampee,stamper,stample,stance,stanch,stand,standee,standel,stander,stane,stang,stanine,stanjen,stank,stankie,stannel,stanner,stannic,stanno,stannum,stannyl,stanza,stanze,stap,stapes,staple,stapled,stapler,star,starch,starchy,stardom,stare,staree,starer,starets,starful,staring,stark,starken,starkly,starky,starlet,starlit,starn,starnel,starnie,starost,starred,starry,start,starter,startle,startly,startor,starty,starve,starved,starver,starvy,stary,stases,stash,stashie,stasis,statal,statant,state,stated,stately,stater,static,statics,station,statism,statist,stative,stator,statue,statued,stature,status,statute,stauk,staumer,staun,staunch,staup,stauter,stave,staver,stavers,staving,staw,stawn,staxis,stay,stayed,stayer,staynil,stays,stchi,stead,steady,steak,steal,stealed,stealer,stealth,stealy,steam,steamer,steamy,stean,stearic,stearin,stearyl,steatin,stech,steddle,steed,steek,steel,steeler,steely,steen,steenth,steep,steepen,steeper,steeple,steeply,steepy,steer,steerer,steeve,steever,steg,steid,steigh,stein,stekan,stela,stelae,stelai,stelar,stele,stell,stella,stellar,stem,stema,stemlet,stemma,stemmed,stemmer,stemmy,stemple,stemson,sten,stenar,stench,stenchy,stencil,stend,steng,stengah,stenion,steno,stenog,stent,stenter,stenton,step,steppe,stepped,stepper,stepson,stept,stepway,stere,stereo,steri,steric,sterics,steride,sterile,sterin,sterk,sterlet,stern,sterna,sternad,sternal,sterned,sternly,sternum,stero,steroid,sterol,stert,stertor,sterve,stet,stetch,stevel,steven,stevia,stew,steward,stewed,stewpan,stewpot,stewy,stey,sthenia,sthenic,stib,stibial,stibic,stibine,stibium,stich,stichic,stichid,stick,sticked,sticker,stickit,stickle,stickly,sticks,stickum,sticky,stid,stiddy,stife,stiff,stiffen,stiffly,stifle,stifler,stigma,stigmai,stigmal,stigme,stile,stilet,still,stiller,stilly,stilt,stilted,stilter,stilty,stim,stime,stimuli,stimy,stine,sting,stinge,stinger,stingo,stingy,stink,stinker,stint,stinted,stinter,stinty,stion,stionic,stipe,stiped,stipel,stipend,stipes,stippen,stipple,stipply,stipula,stipule,stir,stirk,stirp,stirps,stirra,stirrer,stirrup,stitch,stite,stith,stithy,stive,stiver,stivy,stoa,stoach,stoat,stoater,stob,stocah,stock,stocker,stocks,stocky,stod,stodge,stodger,stodgy,stoep,stof,stoff,stog,stoga,stogie,stogy,stoic,stoical,stoke,stoker,stola,stolae,stole,stoled,stolen,stolid,stolist,stollen,stolon,stoma,stomach,stomata,stomate,stomium,stomp,stomper,stond,stone,stoned,stonen,stoner,stong,stonied,stonify,stonily,stoning,stonish,stonker,stony,stood,stooded,stooden,stoof,stooge,stook,stooker,stookie,stool,stoon,stoond,stoop,stooper,stoory,stoot,stop,stopa,stope,stoper,stopgap,stoping,stopped,stopper,stoppit,stopple,storage,storax,store,storeen,storer,storge,storied,storier,storify,stork,storken,storm,stormer,stormy,story,stosh,stoss,stot,stotter,stoun,stound,stoup,stour,stoury,stoush,stout,stouten,stouth,stoutly,stouty,stove,stoven,stover,stow,stowage,stowce,stower,stowing,stra,strack,stract,strad,strade,stradl,stradld,strae,strafe,strafer,strag,straik,strain,straint,strait,strake,straked,straky,stram,stramp,strand,strang,strange,strany,strap,strass,strata,stratal,strath,strati,stratic,stratum,stratus,strave,straw,strawen,strawer,strawy,stray,strayer,stre,streak,streaky,stream,streamy,streck,stree,streek,streel,streen,streep,street,streets,streite,streke,stremma,streng,strent,strenth,strepen,strepor,stress,stret,stretch,strette,stretti,stretto,strew,strewer,strewn,strey,streyne,stria,striae,strial,striate,strich,striche,strick,strict,strid,stride,strider,stridor,strife,strig,striga,strigae,strigal,stright,strigil,strike,striker,strind,string,stringy,striola,strip,stripe,striped,striper,stript,stripy,strit,strive,strived,striven,striver,strix,stroam,strobic,strode,stroil,stroke,stroker,stroky,strold,stroll,strolld,strom,stroma,stromal,stromb,strome,strone,strong,strook,stroot,strop,strophe,stroth,stroud,stroup,strove,strow,strowd,strown,stroy,stroyer,strub,struck,strudel,strue,strum,struma,strumae,strung,strunt,strut,struth,struv,strych,stub,stubb,stubbed,stubber,stubble,stubbly,stubboy,stubby,stuber,stuboy,stucco,stuck,stud,studder,studdie,studdle,stude,student,studia,studied,studier,studio,studium,study,stue,stuff,stuffed,stuffer,stuffy,stug,stuggy,stuiver,stull,stuller,stulm,stum,stumble,stumbly,stumer,stummer,stummy,stump,stumper,stumpy,stun,stung,stunk,stunner,stunsle,stunt,stunted,stunter,stunty,stupa,stupe,stupefy,stupend,stupent,stupex,stupid,stupor,stupose,stupp,stuprum,sturdy,sturine,sturk,sturt,sturtan,sturtin,stuss,stut,stutter,sty,styan,styca,styful,stylar,stylate,style,styler,stylet,styline,styling,stylish,stylist,stylite,stylize,stylo,styloid,stylops,stylus,stymie,stypsis,styptic,styrax,styrene,styrol,styrone,styryl,stythe,styward,suable,suably,suade,suaharo,suant,suantly,suasion,suasive,suasory,suave,suavely,suavify,suavity,sub,subacid,subact,subage,subah,subaid,subanal,subarch,subarea,subatom,subaud,subband,subbank,subbase,subbass,subbeau,subbias,subbing,subcase,subcash,subcast,subcell,subcity,subclan,subcool,subdate,subdean,subdeb,subdial,subdie,subdual,subduce,subduct,subdue,subdued,subduer,subecho,subedit,suber,suberic,suberin,subface,subfeu,subfief,subfix,subform,subfusc,subfusk,subgape,subgens,subget,subgit,subgod,subgrin,subgyre,subhall,subhead,subherd,subhero,subicle,subidar,subidea,subitem,subjack,subject,subjee,subjoin,subking,sublate,sublet,sublid,sublime,sublong,sublot,submaid,submain,subman,submind,submiss,submit,subnect,subness,subnex,subnote,subnude,suboral,suborn,suboval,subpart,subpass,subpial,subpimp,subplat,subplot,subplow,subpool,subport,subrace,subrent,subroot,subrule,subsale,subsalt,subsea,subsect,subsept,subset,subside,subsidy,subsill,subsist,subsoil,subsult,subsume,subtack,subtend,subtext,subtile,subtill,subtle,subtly,subtone,subtype,subunit,suburb,subvein,subvene,subvert,subvola,subway,subwink,subzone,succade,succeed,succent,success,succi,succin,succise,succor,succory,succous,succub,succuba,succube,succula,succumb,succuss,such,suck,suckage,sucken,sucker,sucking,suckle,suckler,suclat,sucrate,sucre,sucrose,suction,sucuri,sucuriu,sud,sudamen,sudary,sudate,sudd,sudden,sudder,suddle,suddy,sudoral,sudoric,suds,sudsman,sudsy,sue,suede,suer,suet,suety,suff,suffect,suffer,suffete,suffice,suffix,sufflue,suffuse,sugamo,sugan,sugar,sugared,sugarer,sugary,sugent,suggest,sugh,sugi,suguaro,suhuaro,suicide,suid,suidian,suiform,suimate,suine,suing,suingly,suint,suist,suit,suite,suiting,suitor,suity,suji,sulcal,sulcar,sulcate,sulcus,suld,sulea,sulfa,sulfato,sulfion,sulfury,sulk,sulka,sulker,sulkily,sulky,sull,sulla,sullage,sullen,sullow,sully,sulpha,sulpho,sulphur,sultam,sultan,sultana,sultane,sultone,sultry,sulung,sum,sumac,sumatra,sumbul,sumless,summage,summand,summar,summary,summate,summed,summer,summery,summist,summit,summity,summon,summons,summula,summut,sumner,sump,sumpage,sumper,sumph,sumphy,sumpit,sumple,sumpman,sumpter,sun,sunbeam,sunbird,sunbow,sunburn,suncup,sundae,sundang,sundari,sundek,sunder,sundew,sundial,sundik,sundog,sundown,sundra,sundri,sundry,sune,sunfall,sunfast,sunfish,sung,sungha,sunglo,sunglow,sunk,sunken,sunket,sunlamp,sunland,sunless,sunlet,sunlike,sunlit,sunn,sunnily,sunnud,sunny,sunray,sunrise,sunroom,sunset,sunsmit,sunspot,sunt,sunup,sunward,sunway,sunways,sunweed,sunwise,sunyie,sup,supa,supari,supawn,supe,super,superb,supine,supper,supping,supple,supply,support,suppose,suppost,supreme,sur,sura,surah,surahi,sural,suranal,surat,surbase,surbate,surbed,surcoat,surcrue,surculi,surd,surdent,surdity,sure,surely,sures,surette,surety,surf,surface,surfacy,surfeit,surfer,surfle,surfman,surfuse,surfy,surge,surgent,surgeon,surgery,surging,surgy,suriga,surlily,surly,surma,surmark,surmise,surname,surnap,surnay,surpass,surplus,surra,surrey,surtax,surtout,survey,survive,suscept,susi,suslik,suspect,suspend,suspire,sustain,susu,susurr,suther,sutile,sutler,sutlery,sutor,sutra,suttee,sutten,suttin,suttle,sutural,suture,suum,suwarro,suwe,suz,svelte,swa,swab,swabber,swabble,swack,swacken,swad,swaddle,swaddy,swag,swage,swager,swagger,swaggie,swaggy,swagman,swain,swaird,swale,swaler,swaling,swallet,swallo,swallow,swam,swami,swamp,swamper,swampy,swan,swang,swangy,swank,swanker,swanky,swanner,swanny,swap,swape,swapper,swaraj,swarbie,sward,swardy,sware,swarf,swarfer,swarm,swarmer,swarmy,swarry,swart,swarth,swarthy,swartly,swarty,swarve,swash,swasher,swashy,swat,swatch,swath,swathe,swather,swathy,swatter,swattle,swaver,sway,swayed,swayer,swayful,swaying,sweal,swear,swearer,sweat,sweated,sweater,sweath,sweaty,swedge,sweeny,sweep,sweeper,sweepy,sweer,sweered,sweet,sweeten,sweetie,sweetly,sweety,swego,swell,swelled,sweller,swelly,swelp,swelt,swelter,swelth,sweltry,swelty,swep,swept,swerd,swerve,swerver,swick,swidge,swift,swiften,swifter,swifty,swig,swigger,swiggle,swile,swill,swiller,swim,swimmer,swimmy,swimy,swindle,swine,swinely,swinery,swiney,swing,swinge,swinger,swingle,swingy,swinish,swink,swinney,swipe,swiper,swipes,swiple,swipper,swipy,swird,swire,swirl,swirly,swish,swisher,swishy,swiss,switch,switchy,swith,swithe,swithen,swither,swivel,swivet,swiz,swizzle,swob,swollen,swom,swonken,swoon,swooned,swoony,swoop,swooper,swoosh,sword,swore,sworn,swosh,swot,swotter,swounds,swow,swum,swung,swungen,swure,syagush,sybotic,syce,sycee,sycock,sycoma,syconid,syconus,sycosis,sye,syenite,sylid,syllab,syllabe,syllabi,sylloge,sylph,sylphic,sylphid,sylphy,sylva,sylvae,sylvage,sylvan,sylvate,sylvic,sylvine,sylvite,symbion,symbiot,symbol,sympode,symptom,synacme,synacmy,synange,synapse,synapte,synaxar,synaxis,sync,syncarp,synch,synchro,syncope,syndic,syndoc,syne,synema,synergy,synesis,syngamy,synod,synodal,synoecy,synonym,synopsy,synovia,syntan,syntax,synthol,syntomy,syntone,syntony,syntype,synusia,sypher,syre,syringa,syringe,syrinx,syrma,syrphid,syrt,syrtic,syrup,syruped,syruper,syrupy,syssel,system,systole,systyle,syzygy,t,ta,taa,taar,tab,tabacin,tabacum,tabanid,tabard,tabaret,tabaxir,tabber,tabby,tabefy,tabella,taberna,tabes,tabet,tabetic,tabic,tabid,tabidly,tabific,tabinet,tabla,table,tableau,tabled,tabler,tables,tablet,tabling,tabloid,tabog,taboo,taboot,tabor,taborer,taboret,taborin,tabour,tabret,tabu,tabula,tabular,tabule,tabut,taccada,tach,tache,tachiol,tacit,tacitly,tack,tacker,tacket,tackety,tackey,tacking,tackle,tackled,tackler,tacky,tacnode,tacso,tact,tactful,tactic,tactics,tactile,taction,tactite,tactive,tactor,tactual,tactus,tad,tade,tadpole,tae,tael,taen,taenia,taenial,taenian,taenite,taennin,taffeta,taffety,taffle,taffy,tafia,taft,tafwiz,tag,tagetol,tagged,tagger,taggle,taggy,taglet,taglike,taglock,tagrag,tagsore,tagtail,tagua,taguan,tagwerk,taha,taheen,tahil,tahin,tahr,tahsil,tahua,tai,taiaha,taich,taiga,taigle,taihoa,tail,tailage,tailed,tailer,tailet,tailge,tailing,taille,taillie,tailor,tailory,tailpin,taily,tailzee,tailzie,taimen,tain,taint,taintor,taipan,taipo,tairge,tairger,tairn,taisch,taise,taissle,tait,taiver,taivers,taivert,taj,takable,takar,take,takeful,taken,taker,takin,taking,takings,takosis,takt,taky,takyr,tal,tala,talabon,talahib,talaje,talak,talao,talar,talari,talaria,talaric,talayot,talbot,talc,talcer,talcky,talcoid,talcose,talcous,talcum,tald,tale,taled,taleful,talent,taler,tales,tali,taliage,taliera,talion,talipat,taliped,talipes,talipot,talis,talisay,talite,talitol,talk,talker,talkful,talkie,talking,talky,tall,tallage,tallboy,taller,tallero,talles,tallet,talliar,tallier,tallis,tallish,tallit,tallith,talloel,tallote,tallow,tallowy,tally,tallyho,talma,talon,taloned,talonic,talonid,talose,talpid,talpify,talpine,talpoid,talthib,taluk,taluka,talus,taluto,talwar,talwood,tam,tamable,tamably,tamale,tamandu,tamanu,tamara,tamarao,tamarin,tamas,tamasha,tambac,tamber,tambo,tamboo,tambor,tambour,tame,tamein,tamely,tamer,tamis,tamise,tamlung,tammie,tammock,tammy,tamp,tampala,tampan,tampang,tamper,tampin,tamping,tampion,tampon,tampoon,tan,tana,tanach,tanager,tanaist,tanak,tanan,tanbark,tanbur,tancel,tandan,tandem,tandle,tandour,tane,tang,tanga,tanged,tangelo,tangent,tanger,tangham,tanghan,tanghin,tangi,tangie,tangka,tanglad,tangle,tangler,tangly,tango,tangram,tangs,tangue,tangum,tangun,tangy,tanh,tanha,tania,tanica,tanier,tanist,tanjib,tanjong,tank,tanka,tankage,tankah,tankard,tanked,tanker,tankert,tankful,tankle,tankman,tanling,tannage,tannaic,tannaim,tannase,tannate,tanned,tanner,tannery,tannic,tannide,tannin,tanning,tannoid,tannyl,tanoa,tanquam,tanquen,tanrec,tansy,tantara,tanti,tantivy,tantle,tantra,tantric,tantrik,tantrum,tantum,tanwood,tanyard,tanzeb,tanzib,tanzy,tao,taotai,taoyin,tap,tapa,tapalo,tapas,tapasvi,tape,tapeman,tapen,taper,tapered,taperer,taperly,tapet,tapetal,tapete,tapeti,tapetum,taphole,tapia,tapioca,tapir,tapis,tapism,tapist,taplash,taplet,tapmost,tapnet,tapoa,tapoun,tappa,tappall,tappaul,tappen,tapper,tappet,tapping,tappoon,taproom,taproot,taps,tapster,tapu,tapul,taqua,tar,tara,taraf,tarage,tarairi,tarand,taraph,tarapin,tarata,taratah,tarau,tarbet,tarboy,tarbush,tardily,tardive,tardle,tardy,tare,tarea,tarefa,tarente,tarfa,targe,targer,target,tarhood,tari,tarie,tariff,tarin,tariric,tarish,tarkhan,tarlike,tarmac,tarman,tarn,tarnal,tarnish,taro,taroc,tarocco,tarok,tarot,tarp,tarpan,tarpon,tarpot,tarpum,tarr,tarrack,tarras,tarrass,tarred,tarrer,tarri,tarrie,tarrier,tarrify,tarrily,tarrish,tarrock,tarrow,tarry,tars,tarsal,tarsale,tarse,tarsi,tarsia,tarsier,tarsome,tarsus,tart,tartago,tartan,tartana,tartane,tartar,tarten,tartish,tartle,tartlet,tartly,tartro,tartryl,tarve,tarweed,tarwood,taryard,tasajo,tascal,tasco,tash,tashie,tashlik,tashrif,task,taskage,tasker,taskit,taslet,tass,tassago,tassah,tassal,tassard,tasse,tassel,tassely,tasser,tasset,tassie,tassoo,taste,tasted,tasten,taster,tastily,tasting,tasty,tasu,tat,tataupa,tatbeb,tatchy,tate,tater,tath,tatie,tatinek,tatler,tatou,tatouay,tatsman,tatta,tatter,tattery,tatther,tattied,tatting,tattle,tattler,tattoo,tattva,tatty,tatu,tau,taught,taula,taum,taun,taunt,taunter,taupe,taupo,taupou,taur,taurean,taurian,tauric,taurine,taurite,tauryl,taut,tautaug,tauted,tauten,tautit,tautly,tautog,tav,tave,tavell,taver,tavern,tavers,tavert,tavola,taw,tawa,tawdry,tawer,tawery,tawie,tawite,tawkee,tawkin,tawn,tawney,tawnily,tawnle,tawny,tawpi,tawpie,taws,tawse,tawtie,tax,taxable,taxably,taxator,taxed,taxeme,taxemic,taxer,taxi,taxibus,taxicab,taximan,taxine,taxing,taxis,taxite,taxitic,taxless,taxman,taxon,taxor,taxpaid,taxwax,taxy,tay,tayer,tayir,tayra,taysaam,tazia,tch,tchai,tcharik,tchast,tche,tchick,tchu,tck,te,tea,teabox,teaboy,teacake,teacart,teach,teache,teacher,teachy,teacup,tead,teadish,teaer,teaey,teagle,teaish,teaism,teak,teal,tealery,tealess,team,teaman,teameo,teamer,teaming,teamman,tean,teanal,teap,teapot,teapoy,tear,tearage,tearcat,tearer,tearful,tearing,tearlet,tearoom,tearpit,teart,teary,tease,teasel,teaser,teashop,teasing,teasler,teasy,teat,teated,teathe,teather,teatime,teatman,teaty,teave,teaware,teaze,teazer,tebbet,tec,teca,tecali,tech,techily,technic,techous,techy,teck,tecomin,tecon,tectal,tectum,tecum,tecuma,ted,tedder,tedge,tedious,tedium,tee,teedle,teel,teem,teemer,teemful,teeming,teems,teen,teenage,teenet,teens,teensy,teenty,teeny,teer,teerer,teest,teet,teetan,teeter,teeth,teethe,teethy,teeting,teety,teevee,teff,teg,tegmen,tegmina,tegua,tegula,tegular,tegumen,tehseel,tehsil,teicher,teil,teind,teinder,teioid,tejon,teju,tekiah,tekke,tekken,tektite,tekya,telamon,telang,telar,telary,tele,teledu,telega,teleost,teleran,telergy,telesia,telesis,teleuto,televox,telfer,telford,teli,telial,telic,telical,telium,tell,tellach,tellee,teller,telling,tellt,telome,telomic,telpath,telpher,telson,telt,telurgy,telyn,temacha,teman,tembe,temblor,temenos,temiak,temin,temp,temper,tempera,tempery,tempest,tempi,templar,temple,templed,templet,tempo,tempora,tempre,tempt,tempter,temse,temser,ten,tenable,tenably,tenace,tenai,tenancy,tenant,tench,tend,tendant,tendent,tender,tending,tendon,tendour,tendril,tendron,tenebra,tenent,teneral,tenet,tenfold,teng,tengere,tengu,tenible,tenio,tenline,tenne,tenner,tennis,tennisy,tenon,tenoner,tenor,tenpin,tenrec,tense,tensely,tensify,tensile,tension,tensity,tensive,tenson,tensor,tent,tentage,tented,tenter,tentful,tenth,tenthly,tentigo,tention,tentlet,tenture,tenty,tenuate,tenues,tenuis,tenuity,tenuous,tenure,teopan,tepache,tepal,tepee,tepefy,tepid,tepidly,tepor,tequila,tera,terap,teras,terbia,terbic,terbium,tercel,tercer,tercet,tercia,tercine,tercio,terebic,terebra,teredo,terek,terete,tereu,terfez,tergal,tergant,tergite,tergum,term,terma,termage,termen,termer,termin,termine,termini,termino,termite,termly,termon,termor,tern,terna,ternal,ternar,ternary,ternate,terne,ternery,ternion,ternize,ternlet,terp,terpane,terpene,terpin,terpine,terrace,terrage,terrain,terral,terrane,terrar,terrene,terret,terrier,terrify,terrine,terron,terror,terry,terse,tersely,tersion,tertia,tertial,tertian,tertius,terton,tervee,terzina,terzo,tesack,teskere,tessara,tessel,tessera,test,testa,testacy,testar,testata,testate,teste,tested,testee,tester,testes,testify,testily,testing,testis,teston,testone,testoon,testor,testril,testudo,testy,tetanic,tetanus,tetany,tetard,tetch,tetchy,tete,tetel,teth,tether,tethery,tetra,tetract,tetrad,tetrane,tetrazo,tetric,tetrode,tetrole,tetrose,tetryl,tetter,tettery,tettix,teucrin,teufit,teuk,teviss,tew,tewel,tewer,tewit,tewly,tewsome,text,textile,textlet,textman,textual,texture,tez,tezkere,th,tha,thack,thacker,thakur,thalami,thaler,thalli,thallic,thallus,thameng,than,thana,thanage,thanan,thane,thank,thankee,thanker,thanks,thapes,thapsia,thar,tharf,tharm,that,thatch,thatchy,thatn,thats,thaught,thave,thaw,thawer,thawn,thawy,the,theah,theasum,theat,theater,theatry,theave,theb,theca,thecae,thecal,thecate,thecia,thecium,thecla,theclan,thecoid,thee,theek,theeker,theelin,theelol,theer,theet,theezan,theft,thegn,thegnly,theine,their,theirn,theirs,theism,theist,thelium,them,thema,themata,theme,themer,themis,themsel,then,thenal,thenar,thence,theody,theorbo,theorem,theoria,theoric,theorum,theory,theow,therapy,there,thereas,thereat,thereby,therein,thereof,thereon,theres,therese,thereto,thereup,theriac,therial,therm,thermae,thermal,thermic,thermit,thermo,thermos,theroid,these,theses,thesial,thesis,theta,thetch,thetic,thetics,thetin,thetine,theurgy,thew,thewed,thewy,they,theyll,theyre,thiamin,thiasi,thiasoi,thiasos,thiasus,thick,thicken,thicket,thickly,thief,thienyl,thieve,thiever,thig,thigger,thigh,thighed,thight,thilk,thill,thiller,thilly,thimber,thimble,thin,thine,thing,thingal,thingly,thingum,thingy,think,thinker,thinly,thinner,thio,thiol,thiolic,thionic,thionyl,thir,third,thirdly,thirl,thirst,thirsty,thirt,thirty,this,thishow,thisn,thissen,thistle,thistly,thither,thiuram,thivel,thixle,tho,thob,thocht,thof,thoft,thoke,thokish,thole,tholi,tholoi,tholos,tholus,thon,thonder,thone,thong,thonged,thongy,thoo,thooid,thoom,thoral,thorax,thore,thoria,thoric,thorina,thorite,thorium,thorn,thorned,thornen,thorny,thoro,thoron,thorp,thort,thorter,those,thou,though,thought,thouse,thow,thowel,thowt,thrack,thraep,thrail,thrain,thrall,thram,thrang,thrap,thrash,thrast,thrave,thraver,thraw,thrawn,thread,thready,threap,threat,three,threne,threnos,threose,thresh,threw,thrice,thrift,thrifty,thrill,thrilly,thrimp,thring,thrip,thripel,thrips,thrive,thriven,thriver,thro,throat,throaty,throb,throck,throddy,throe,thronal,throne,throng,throu,throuch,through,throve,throw,thrower,thrown,thrum,thrummy,thrush,thrushy,thrust,thrutch,thruv,thrymsa,thud,thug,thugdom,thuggee,thujene,thujin,thujone,thujyl,thulia,thulir,thulite,thulium,thulr,thuluth,thumb,thumbed,thumber,thumble,thumby,thump,thumper,thunder,thung,thunge,thuoc,thurify,thurl,thurm,thurmus,thurse,thurt,thus,thusly,thutter,thwack,thwaite,thwart,thwite,thy,thyine,thymate,thyme,thymele,thymene,thymic,thymine,thymol,thymoma,thymus,thymy,thymyl,thynnid,thyroid,thyrse,thyrsus,thysel,thyself,thysen,ti,tiang,tiao,tiar,tiara,tib,tibby,tibet,tibey,tibia,tibiad,tibiae,tibial,tibiale,tiburon,tic,tical,ticca,tice,ticer,tick,ticked,ticken,ticker,ticket,tickey,tickie,ticking,tickle,tickled,tickler,tickly,tickney,ticky,ticul,tid,tidal,tidally,tidbit,tiddle,tiddler,tiddley,tiddy,tide,tided,tideful,tidely,tideway,tidily,tiding,tidings,tidley,tidy,tidyism,tie,tieback,tied,tien,tiepin,tier,tierce,tierced,tiered,tierer,tietick,tiewig,tiff,tiffany,tiffie,tiffin,tiffish,tiffle,tiffy,tift,tifter,tig,tige,tigella,tigelle,tiger,tigerly,tigery,tigger,tight,tighten,tightly,tights,tiglic,tignum,tigress,tigrine,tigroid,tigtag,tikka,tikker,tiklin,tikor,tikur,til,tilaite,tilaka,tilbury,tilde,tile,tiled,tiler,tilery,tilikum,tiling,till,tillage,tiller,tilley,tillite,tillot,tilly,tilmus,tilpah,tilt,tilter,tilth,tilting,tiltup,tilty,tilyer,timable,timar,timarau,timawa,timbal,timbale,timbang,timbe,timber,timbern,timbery,timbo,timbre,timbrel,time,timed,timeful,timely,timeous,timer,times,timid,timidly,timing,timish,timist,timon,timor,timothy,timpani,timpano,tin,tinamou,tincal,tinchel,tinclad,tinct,tind,tindal,tindalo,tinder,tindery,tine,tinea,tineal,tinean,tined,tineid,tineine,tineman,tineoid,tinety,tinful,ting,tinge,tinged,tinger,tingi,tingid,tingle,tingler,tingly,tinguy,tinhorn,tinily,tining,tink,tinker,tinkle,tinkler,tinkly,tinlet,tinlike,tinman,tinned,tinner,tinnery,tinnet,tinnily,tinning,tinnock,tinny,tinosa,tinsel,tinsman,tint,tinta,tintage,tinted,tinter,tintie,tinting,tintist,tinty,tintype,tinwald,tinware,tinwork,tiny,tip,tipburn,tipcart,tipcat,tipe,tipful,tiphead,tipiti,tiple,tipless,tiplet,tipman,tipmost,tiponi,tipped,tippee,tipper,tippet,tipping,tipple,tippler,tipply,tippy,tipsify,tipsily,tipster,tipsy,tiptail,tiptilt,tiptoe,tiptop,tipulid,tipup,tirade,tiralee,tire,tired,tiredly,tiredom,tireman,tirer,tiriba,tiring,tirl,tirma,tirr,tirret,tirrlie,tirve,tirwit,tisane,tisar,tissual,tissue,tissued,tissuey,tiswin,tit,titania,titanic,titano,titanyl,titar,titbit,tite,titer,titfish,tithal,tithe,tither,tithing,titi,titian,titien,titlark,title,titled,titler,titlike,titling,titlist,titmal,titman,titoki,titrate,titre,titter,tittery,tittie,tittle,tittler,tittup,tittupy,titty,titular,titule,titulus,tiver,tivoli,tivy,tiza,tizeur,tizzy,tji,tjosite,tlaco,tmema,tmesis,to,toa,toad,toadeat,toader,toadery,toadess,toadier,toadish,toadlet,toady,toast,toastee,toaster,toasty,toat,toatoa,tobacco,tobe,tobine,tobira,toby,tobyman,toccata,tocher,tock,toco,tocome,tocsin,tocusso,tod,today,todder,toddick,toddite,toddle,toddler,toddy,tode,tody,toe,toecap,toed,toeless,toelike,toenail,toetoe,toff,toffee,toffing,toffish,toffy,toft,tofter,toftman,tofu,tog,toga,togaed,togata,togate,togated,toggel,toggery,toggle,toggler,togless,togs,togt,togue,toher,toheroa,toho,tohunga,toi,toil,toiled,toiler,toilet,toilful,toiling,toise,toit,toitish,toity,tokay,toke,token,tokened,toko,tokopat,tol,tolan,tolane,told,toldo,tole,tolite,toll,tollage,toller,tollery,tolling,tollman,tolly,tolsey,tolt,tolter,tolu,toluate,toluene,toluic,toluide,toluido,toluol,toluyl,tolyl,toman,tomato,tomb,tombac,tombal,tombe,tombic,tomblet,tombola,tombolo,tomboy,tomcat,tomcod,tome,tomeful,tomelet,toment,tomfool,tomial,tomin,tomish,tomium,tomjohn,tomkin,tommy,tomnoup,tomorn,tomosis,tompon,tomtate,tomtit,ton,tonal,tonally,tonant,tondino,tone,toned,toneme,toner,tonetic,tong,tonga,tonger,tongman,tongs,tongue,tongued,tonguer,tonguey,tonic,tonify,tonight,tonish,tonite,tonjon,tonk,tonkin,tonlet,tonnage,tonneau,tonner,tonnish,tonous,tonsil,tonsor,tonsure,tontine,tonus,tony,too,toodle,took,tooken,tool,toolbox,tooler,tooling,toolman,toom,toomly,toon,toop,toorie,toorock,tooroo,toosh,toot,tooter,tooth,toothed,toother,toothy,tootle,tootler,tootsy,toozle,toozoo,top,toparch,topass,topaz,topazy,topcap,topcast,topcoat,tope,topee,topeng,topepo,toper,topfull,toph,tophus,topi,topia,topiary,topic,topical,topknot,topless,toplike,topline,topman,topmast,topmost,topo,toponym,topped,topper,topping,topple,toppler,topply,toppy,toprail,toprope,tops,topsail,topside,topsl,topsman,topsoil,toptail,topwise,toque,tor,tora,torah,toral,toran,torc,torcel,torch,torcher,torchon,tore,tored,torero,torfel,torgoch,toric,torii,torma,tormen,torment,tormina,torn,tornade,tornado,tornal,tornese,torney,tornote,tornus,toro,toroid,torose,torous,torpedo,torpent,torpid,torpify,torpor,torque,torqued,torques,torrefy,torrent,torrid,torsade,torse,torsel,torsile,torsion,torsive,torsk,torso,tort,torta,torteau,tortile,tortive,tortula,torture,toru,torula,torulin,torulus,torus,torve,torvid,torvity,torvous,tory,tosh,tosher,toshery,toshly,toshy,tosily,toss,tosser,tossily,tossing,tosspot,tossup,tossy,tost,toston,tosy,tot,total,totally,totara,totchka,tote,totem,totemic,totemy,toter,tother,totient,toto,totora,totquot,totter,tottery,totting,tottle,totty,totuava,totum,toty,totyman,tou,toucan,touch,touched,toucher,touchy,toug,tough,toughen,toughly,tought,tould,toumnah,toup,toupee,toupeed,toupet,tour,touraco,tourer,touring,tourism,tourist,tourize,tourn,tournay,tournee,tourney,tourte,tousche,touse,touser,tousle,tously,tousy,tout,touter,tovar,tow,towable,towage,towai,towan,toward,towards,towboat,towcock,towd,towel,towelry,tower,towered,towery,towght,towhead,towhee,towing,towkay,towlike,towline,towmast,town,towned,townee,towner,townet,townful,townify,townish,townist,townlet,townly,townman,towny,towpath,towrope,towser,towy,tox,toxa,toxamin,toxcatl,toxemia,toxemic,toxic,toxical,toxicum,toxifer,toxin,toxity,toxoid,toxon,toxone,toxosis,toxotae,toy,toydom,toyer,toyful,toying,toyish,toyland,toyless,toylike,toyman,toyon,toyshop,toysome,toytown,toywort,toze,tozee,tozer,tra,trabal,trabant,trabea,trabeae,trabuch,trace,tracer,tracery,trachea,trachle,tracing,track,tracked,tracker,tract,tractor,tradal,trade,trader,trading,tradite,traduce,trady,traffic,trag,tragal,tragedy,tragi,tragic,tragus,trah,traheen,traik,trail,trailer,traily,train,trained,trainee,trainer,trainy,traipse,trait,traitor,traject,trajet,tralira,tram,trama,tramal,tramcar,trame,tramful,tramman,trammel,trammer,trammon,tramp,tramper,trample,trampot,tramway,trance,tranced,traneen,trank,tranka,tranker,trankum,tranky,transit,transom,trant,tranter,trap,trapes,trapeze,trapped,trapper,trappy,traps,trash,traship,trashy,trass,trasy,trauma,travail,travale,trave,travel,travis,travois,travoy,trawl,trawler,tray,trayful,treacle,treacly,tread,treader,treadle,treason,treat,treatee,treater,treator,treaty,treble,trebly,treddle,tree,treed,treeful,treeify,treelet,treeman,treen,treetop,treey,tref,trefle,trefoil,tregerg,tregohm,trehala,trek,trekker,trellis,tremble,trembly,tremie,tremolo,tremor,trenail,trench,trend,trendle,trental,trepan,trepang,trepid,tress,tressed,tresson,tressy,trest,trestle,tret,trevet,trews,trey,tri,triable,triace,triacid,triact,triad,triadic,triaene,triage,trial,triamid,triarch,triarii,triatic,triaxon,triazin,triazo,tribade,tribady,tribal,tribase,tribble,tribe,triblet,tribrac,tribual,tribuna,tribune,tribute,trica,tricae,tricar,trice,triceps,trichi,trichia,trichy,trick,tricker,trickle,trickly,tricksy,tricky,triclad,tricorn,tricot,trident,triduan,triduum,tried,triedly,triene,triens,trier,trifa,trifid,trifle,trifler,triflet,trifoil,trifold,trifoly,triform,trig,trigamy,trigger,triglid,triglot,trigly,trigon,trigone,trigram,trigyn,trikaya,trike,triker,triketo,trikir,trilabe,trilby,trilit,trilite,trilith,trill,trillet,trilli,trillo,trilobe,trilogy,trim,trimer,trimly,trimmer,trin,trinal,trinary,trindle,trine,trinely,tringle,trinity,trink,trinket,trinkle,trinode,trinol,trintle,trio,triobol,triode,triodia,triole,triolet,trionym,trior,triose,trip,tripal,tripara,tripart,tripe,tripel,tripery,triple,triplet,triplex,triplum,triply,tripod,tripody,tripoli,tripos,tripper,trippet,tripple,tripsis,tripy,trireme,trisalt,trisazo,trisect,triseme,trishna,trismic,trismus,trisome,trisomy,trist,trisul,trisula,tritaph,trite,tritely,tritish,tritium,tritolo,triton,tritone,tritor,trityl,triumph,triunal,triune,triurid,trivant,trivet,trivia,trivial,trivium,trivvet,trizoic,trizone,troat,troca,trocar,trochal,troche,trochee,trochi,trochid,trochus,trock,troco,trod,trodden,trode,troft,trog,trogger,troggin,trogon,trogs,trogue,troika,troke,troker,troll,troller,trolley,trollol,trollop,trolly,tromba,trombe,trommel,tromp,trompe,trompil,tromple,tron,trona,tronage,tronc,trone,troner,troolie,troop,trooper,troot,tropal,tropary,tropate,trope,tropeic,troper,trophal,trophi,trophic,trophy,tropic,tropine,tropism,tropist,tropoyl,tropyl,trot,troth,trotlet,trotol,trotter,trottie,trotty,trotyl,trouble,troubly,trough,troughy,trounce,troupe,trouper,trouse,trouser,trout,trouter,trouty,trove,trover,trow,trowel,trowing,trowman,trowth,troy,truancy,truant,trub,trubu,truce,trucial,truck,trucker,truckle,trucks,truddo,trudge,trudgen,trudger,true,truer,truff,truffle,trug,truish,truism,trull,truller,trullo,truly,trummel,trump,trumper,trumpet,trumph,trumpie,trun,truncal,trunch,trundle,trunk,trunked,trunnel,trush,trusion,truss,trussed,trusser,trust,trustee,trusten,truster,trustle,trusty,truth,truthy,truvat,try,trygon,trying,tryma,tryout,tryp,trypa,trypan,trypsin,tryptic,trysail,tryst,tryster,tryt,tsadik,tsamba,tsantsa,tsar,tsardom,tsarina,tsatlee,tsere,tsetse,tsia,tsine,tst,tsuba,tsubo,tsun,tsunami,tsungtu,tu,tua,tuan,tuarn,tuart,tuatara,tuatera,tuath,tub,tuba,tubae,tubage,tubal,tubar,tubate,tubba,tubbal,tubbeck,tubber,tubbie,tubbing,tubbish,tubboe,tubby,tube,tubeful,tubelet,tubeman,tuber,tuberin,tubfish,tubful,tubicen,tubifer,tubig,tubik,tubing,tublet,tublike,tubman,tubular,tubule,tubulet,tubuli,tubulus,tuchit,tuchun,tuck,tucker,tucket,tucking,tuckner,tucktoo,tucky,tucum,tucuma,tucuman,tudel,tue,tueiron,tufa,tufan,tuff,tuffet,tuffing,tuft,tufted,tufter,tuftily,tufting,tuftlet,tufty,tug,tugboat,tugger,tuggery,tugging,tughra,tugless,tuglike,tugman,tugrik,tugui,tui,tuik,tuille,tuilyie,tuism,tuition,tuitive,tuke,tukra,tula,tulare,tulasi,tulchan,tulchin,tule,tuliac,tulip,tulipy,tulisan,tulle,tulsi,tulwar,tum,tumasha,tumbak,tumble,tumbled,tumbler,tumbly,tumbrel,tume,tumefy,tumid,tumidly,tummals,tummel,tummer,tummock,tummy,tumor,tumored,tump,tumtum,tumular,tumuli,tumult,tumulus,tun,tuna,tunable,tunably,tunca,tund,tunder,tundish,tundra,tundun,tune,tuned,tuneful,tuner,tunful,tung,tungate,tungo,tunhoof,tunic,tunicin,tunicle,tuning,tunish,tunist,tunk,tunket,tunlike,tunmoot,tunna,tunnel,tunner,tunnery,tunnor,tunny,tuno,tunu,tuny,tup,tupara,tupek,tupelo,tupik,tupman,tupuna,tuque,tur,turacin,turb,turban,turbary,turbeh,turbid,turbine,turbit,turbith,turbo,turbot,turco,turd,turdine,turdoid,tureen,turf,turfage,turfdom,turfed,turfen,turfing,turfite,turfman,turfy,turgent,turgid,turgite,turgoid,turgor,turgy,turio,turion,turjite,turk,turken,turkey,turkis,turkle,turm,turma,turment,turmit,turmoil,turn,turncap,turndun,turned,turnel,turner,turnery,turney,turning,turnip,turnipy,turnix,turnkey,turnoff,turnout,turnpin,turnrow,turns,turnup,turp,turpeth,turpid,turps,turr,turret,turse,tursio,turtle,turtler,turtlet,turtosa,tururi,turus,turwar,tusche,tush,tushed,tusher,tushery,tusk,tuskar,tusked,tusker,tuskish,tusky,tussah,tussal,tusser,tussis,tussive,tussle,tussock,tussore,tussur,tut,tutania,tutball,tute,tutee,tutela,tutelar,tutenag,tuth,tutin,tutly,tutman,tutor,tutorer,tutorly,tutory,tutoyer,tutress,tutrice,tutrix,tuts,tutsan,tutster,tutti,tutty,tutu,tutulus,tutwork,tuwi,tux,tuxedo,tuyere,tuza,tuzzle,twa,twaddle,twaddly,twaddy,twae,twagger,twain,twaite,twal,twale,twalt,twang,twanger,twangle,twangy,twank,twanker,twankle,twanky,twant,twarly,twas,twasome,twat,twattle,tway,twazzy,tweag,tweak,tweaker,tweaky,twee,tweed,tweeded,tweedle,tweedy,tweeg,tweel,tween,tweeny,tweesh,tweesht,tweest,tweet,tweeter,tweeze,tweezer,tweil,twelfth,twelve,twenty,twere,twerp,twibil,twice,twicer,twicet,twick,twiddle,twiddly,twifoil,twifold,twig,twigful,twigged,twiggen,twigger,twiggy,twiglet,twilit,twill,twilled,twiller,twilly,twilt,twin,twindle,twine,twiner,twinge,twingle,twinism,twink,twinkle,twinkly,twinly,twinned,twinner,twinter,twiny,twire,twirk,twirl,twirler,twirly,twiscar,twisel,twist,twisted,twister,twistle,twisty,twit,twitch,twitchy,twite,twitten,twitter,twitty,twixt,twizzle,two,twofold,twoling,twoness,twosome,tychism,tychite,tycoon,tyddyn,tydie,tye,tyee,tyg,tying,tyke,tyken,tykhana,tyking,tylarus,tylion,tyloma,tylopod,tylose,tylosis,tylote,tylotic,tylotus,tylus,tymp,tympan,tympana,tympani,tympany,tynd,typal,type,typer,typeset,typhia,typhic,typhlon,typhoid,typhoon,typhose,typhous,typhus,typic,typica,typical,typicon,typicum,typify,typist,typo,typobar,typonym,typp,typy,tyranny,tyrant,tyre,tyro,tyroma,tyrone,tyronic,tyrosyl,tyste,tyt,tzolkin,tzontle,u,uang,uayeb,uberant,uberous,uberty,ubi,ubiety,ubiquit,ubussu,uckia,udal,udaler,udaller,udalman,udasi,udder,uddered,udell,udo,ug,ugh,uglify,uglily,ugly,ugsome,uhlan,uhllo,uhtsong,uily,uinal,uintjie,uitspan,uji,ukase,uke,ukiyoye,ukulele,ula,ulcer,ulcered,ulcery,ule,ulema,uletic,ulex,ulexine,ulexite,ulitis,ull,ulla,ullage,ullaged,uller,ulling,ulluco,ulmic,ulmin,ulminic,ulmo,ulmous,ulna,ulnad,ulnae,ulnar,ulnare,ulnaria,uloid,uloncus,ulster,ultima,ultimo,ultimum,ultra,ulu,ulua,uluhi,ululant,ululate,ululu,um,umbel,umbeled,umbella,umber,umbilic,umble,umbo,umbonal,umbone,umbones,umbonic,umbra,umbrae,umbrage,umbral,umbrel,umbril,umbrine,umbrose,umbrous,ume,umiak,umiri,umlaut,ump,umph,umpire,umpirer,umpteen,umpty,umu,un,unable,unably,unact,unacted,unacute,unadapt,unadd,unadded,unadopt,unadorn,unadult,unafire,unaflow,unaged,unagile,unaging,unaided,unaimed,unaired,unakin,unakite,unal,unalarm,unalert,unalike,unalist,unalive,unallow,unalone,unaloud,unamend,unamiss,unamo,unample,unamply,unangry,unannex,unapart,unapt,unaptly,unarch,unark,unarm,unarmed,unarray,unarted,unary,unasked,unau,unavian,unawake,unaware,unaway,unawed,unawful,unawned,unaxled,unbag,unbain,unbait,unbaked,unbale,unbank,unbar,unbarb,unbare,unbark,unbase,unbased,unbaste,unbated,unbay,unbe,unbear,unbeard,unbeast,unbed,unbefit,unbeget,unbegot,unbegun,unbeing,unbell,unbelt,unbench,unbend,unbent,unberth,unbeset,unbesot,unbet,unbias,unbid,unbind,unbit,unbitt,unblade,unbled,unblent,unbless,unblest,unblind,unbliss,unblock,unbloom,unblown,unblued,unblush,unboat,unbody,unbog,unboggy,unbokel,unbold,unbolt,unbone,unboned,unbonny,unboot,unbored,unborn,unborne,unbosom,unbound,unbow,unbowed,unbowel,unbox,unboxed,unboy,unbrace,unbraid,unbran,unbrand,unbrave,unbraze,unbred,unbrent,unbrick,unbrief,unbroad,unbroke,unbrown,unbrute,unbud,unbuild,unbuilt,unbulky,unbung,unburly,unburn,unburnt,unburst,unbury,unbush,unbusk,unbusy,unbuxom,unca,uncage,uncaged,uncake,uncalk,uncall,uncalm,uncaned,uncanny,uncap,uncart,uncase,uncased,uncask,uncast,uncaste,uncate,uncave,unceded,unchain,unchair,uncharm,unchary,uncheat,uncheck,unchid,unchild,unchurn,unci,uncia,uncial,uncinal,uncinch,uncinct,uncini,uncinus,uncite,uncited,uncity,uncivic,uncivil,unclad,unclamp,unclasp,unclay,uncle,unclead,unclean,unclear,uncleft,unclew,unclick,unclify,unclimb,uncling,unclip,uncloak,unclog,unclose,uncloud,unclout,unclub,unco,uncoach,uncoat,uncock,uncoded,uncoif,uncoil,uncoin,uncoked,uncolt,uncoly,uncome,uncomfy,uncomic,uncoop,uncope,uncord,uncore,uncored,uncork,uncost,uncouch,uncous,uncouth,uncover,uncowed,uncowl,uncoy,uncram,uncramp,uncream,uncrest,uncrib,uncried,uncrime,uncrisp,uncrook,uncropt,uncross,uncrown,uncrude,uncruel,unction,uncubic,uncular,uncurb,uncurd,uncured,uncurl,uncurse,uncurst,uncus,uncut,uncuth,undaily,undam,undamn,undared,undark,undate,undated,undaub,undazed,unde,undead,undeaf,undealt,undean,undear,undeck,undecyl,undeep,undeft,undeify,undelve,unden,under,underdo,underer,undergo,underly,undern,undevil,undewed,undewy,undid,undies,undig,undight,undiked,undim,undine,undined,undirk,undo,undock,undoer,undog,undoing,undomed,undon,undone,undoped,undose,undosed,undowny,undrab,undrag,undrape,undraw,undrawn,undress,undried,undrunk,undry,undub,unducal,undue,undug,unduke,undular,undull,unduly,unduped,undust,unduty,undwelt,undy,undye,undyed,undying,uneager,unearly,unearth,unease,uneasy,uneaten,uneath,unebbed,unedge,unedged,unelect,unempt,unempty,unended,unepic,unequal,unerect,unethic,uneven,unevil,unexact,uneye,uneyed,unface,unfaced,unfact,unfaded,unfain,unfaint,unfair,unfaith,unfaked,unfalse,unfamed,unfancy,unfar,unfast,unfeary,unfed,unfeed,unfele,unfelon,unfelt,unfence,unfeted,unfeued,unfew,unfiber,unfiend,unfiery,unfight,unfile,unfiled,unfill,unfilm,unfine,unfined,unfired,unfirm,unfit,unfitly,unfitty,unfix,unfixed,unflag,unflaky,unflank,unflat,unflead,unflesh,unflock,unfloor,unflown,unfluid,unflush,unfoggy,unfold,unfond,unfool,unfork,unform,unfoul,unfound,unfoxy,unfrail,unframe,unfrank,unfree,unfreed,unfret,unfried,unfrill,unfrizz,unfrock,unfrost,unfroze,unfull,unfully,unfumed,unfunny,unfur,unfurl,unfused,unfussy,ungag,ungaged,ungain,ungaite,ungaro,ungaudy,ungear,ungelt,unget,ungiant,ungiddy,ungild,ungill,ungilt,ungird,ungirt,ungirth,ungive,ungiven,ungka,unglad,unglaze,unglee,unglobe,ungloom,unglory,ungloss,unglove,unglue,unglued,ungnaw,ungnawn,ungod,ungodly,ungold,ungone,ungood,ungored,ungorge,ungot,ungouty,ungown,ungrace,ungraft,ungrain,ungrand,ungrasp,ungrave,ungreat,ungreen,ungrip,ungripe,ungross,ungrow,ungrown,ungruff,ungual,unguard,ungueal,unguent,ungues,unguis,ungula,ungulae,ungular,unguled,ungull,ungulp,ungum,unguyed,ungyve,ungyved,unhabit,unhad,unhaft,unhair,unhairy,unhand,unhandy,unhang,unhap,unhappy,unhard,unhardy,unharsh,unhasp,unhaste,unhasty,unhat,unhate,unhated,unhaunt,unhave,unhayed,unhazed,unhead,unheady,unheal,unheard,unheart,unheavy,unhedge,unheed,unheedy,unheld,unhele,unheler,unhelm,unherd,unhero,unhewed,unhewn,unhex,unhid,unhide,unhigh,unhinge,unhired,unhit,unhitch,unhive,unhoard,unhoary,unhoed,unhoist,unhold,unholy,unhome,unhoned,unhood,unhook,unhoop,unhoped,unhorny,unhorse,unhose,unhosed,unhot,unhouse,unhull,unhuman,unhumid,unhung,unhurt,unhusk,uniat,uniate,uniaxal,unible,unice,uniced,unicell,unicism,unicist,unicity,unicorn,unicum,unideal,unidle,unidly,unie,uniface,unific,unified,unifier,uniflow,uniform,unify,unilobe,unimped,uninked,uninn,unio,unioid,union,unioned,unionic,unionid,unioval,unipara,uniped,unipod,unique,unireme,unisoil,unison,unit,unitage,unital,unitary,unite,united,uniter,uniting,unition,unitism,unitive,unitize,unitude,unity,univied,unjaded,unjam,unjewel,unjoin,unjoint,unjolly,unjoyed,unjudge,unjuicy,unjust,unkamed,unked,unkempt,unken,unkept,unket,unkey,unkeyed,unkid,unkill,unkin,unkind,unking,unkink,unkirk,unkiss,unkist,unknave,unknew,unknit,unknot,unknow,unknown,unlace,unlaced,unlade,unladen,unlaid,unlame,unlamed,unland,unlap,unlarge,unlash,unlatch,unlath,unlaugh,unlaved,unlaw,unlawed,unlawly,unlay,unlead,unleaf,unleaky,unleal,unlean,unlearn,unleash,unleave,unled,unleft,unlegal,unlent,unless,unlet,unlevel,unlid,unlie,unlight,unlike,unliked,unliken,unlimb,unlime,unlimed,unlimp,unline,unlined,unlink,unlist,unlisty,unlit,unlive,unload,unloath,unlobed,unlocal,unlock,unlodge,unlofty,unlogic,unlook,unloop,unloose,unlord,unlost,unlousy,unlove,unloved,unlowly,unloyal,unlucid,unluck,unlucky,unlunar,unlured,unlust,unlusty,unlute,unluted,unlying,unmad,unmade,unmagic,unmaid,unmail,unmake,unmaker,unman,unmaned,unmanly,unmarch,unmarry,unmask,unmast,unmate,unmated,unmaze,unmeant,unmeek,unmeet,unmerge,unmerry,unmesh,unmet,unmeted,unmew,unmewed,unmind,unmined,unmired,unmiry,unmist,unmiter,unmix,unmixed,unmodel,unmoist,unmold,unmoldy,unmoor,unmoral,unmount,unmoved,unmowed,unmown,unmuddy,unmuted,unnail,unnaked,unname,unnamed,unneat,unneedy,unnegro,unnerve,unnest,unneth,unnethe,unnew,unnewly,unnice,unnigh,unnoble,unnobly,unnose,unnosed,unnoted,unnovel,unoared,unobese,unode,unoften,unogled,unoil,unoiled,unoily,unold,unoped,unopen,unorbed,unorder,unorn,unornly,unovert,unowed,unowing,unown,unowned,unpaced,unpack,unpagan,unpaged,unpaid,unpaint,unpale,unpaled,unpanel,unpapal,unpaper,unparch,unpared,unpark,unparty,unpass,unpaste,unpave,unpaved,unpawed,unpawn,unpeace,unpeel,unpeg,unpen,unpenal,unpent,unperch,unpetal,unpick,unpiece,unpiety,unpile,unpiled,unpin,unpious,unpiped,unplace,unplaid,unplain,unplait,unplan,unplank,unplant,unplat,unpleat,unplied,unplow,unplug,unplumb,unplume,unplump,unpoise,unpoled,unpope,unposed,unpot,unpower,unpray,unprim,unprime,unprint,unprop,unproud,unpure,unpurse,unput,unqueen,unquick,unquiet,unquit,unquote,unraced,unrack,unrainy,unrake,unraked,unram,unrank,unraped,unrare,unrash,unrated,unravel,unray,unrayed,unrazed,unread,unready,unreal,unreave,unrebel,unred,unreel,unreeve,unregal,unrein,unrent,unrest,unresty,unrhyme,unrich,unricht,unrid,unride,unrife,unrig,unright,unrigid,unrind,unring,unrip,unripe,unriped,unrisen,unrisky,unrived,unriven,unrivet,unroast,unrobe,unrobed,unroll,unroof,unroomy,unroost,unroot,unrope,unroped,unrosed,unroted,unrough,unround,unrove,unroved,unrow,unrowed,unroyal,unrule,unruled,unruly,unrun,unrung,unrural,unrust,unruth,unsack,unsad,unsafe,unsage,unsaid,unsaint,unsalt,unsane,unsappy,unsash,unsated,unsatin,unsaved,unsawed,unsawn,unsay,unscale,unscaly,unscarb,unscent,unscrew,unseal,unseam,unseat,unsee,unseen,unself,unsense,unsent,unset,unsew,unsewed,unsewn,unsex,unsexed,unshade,unshady,unshape,unsharp,unshawl,unsheaf,unshed,unsheet,unshell,unship,unshod,unshoe,unshoed,unshop,unshore,unshorn,unshort,unshot,unshown,unshowy,unshrew,unshut,unshy,unshyly,unsick,unsided,unsiege,unsight,unsilly,unsin,unsinew,unsing,unsized,unskin,unslack,unslain,unslate,unslave,unsleek,unslept,unsling,unslip,unslit,unslot,unslow,unslung,unsly,unsmart,unsmoky,unsmote,unsnaky,unsnap,unsnare,unsnarl,unsneck,unsnib,unsnow,unsober,unsoft,unsoggy,unsoil,unsolar,unsold,unsole,unsoled,unsolid,unsome,unson,unsonsy,unsooty,unsore,unsorry,unsort,unsoul,unsound,unsour,unsowed,unsown,unspan,unspar,unspeak,unsped,unspeed,unspell,unspelt,unspent,unspicy,unspied,unspike,unspin,unspit,unsplit,unspoil,unspot,unspun,unstack,unstagy,unstaid,unstain,unstar,unstate,unsteck,unsteel,unsteep,unstep,unstern,unstick,unstill,unsting,unstock,unstoic,unstone,unstony,unstop,unstore,unstout,unstow,unstrap,unstrip,unstuck,unstuff,unstung,unsty,unsued,unsuit,unsulky,unsun,unsung,unsunk,unsunny,unsure,unswear,unsweat,unsweet,unswell,unswept,unswing,unsworn,unswung,untack,untaint,untaken,untall,untame,untamed,untap,untaped,untar,untaste,untasty,untaut,untawed,untax,untaxed,unteach,unteam,unteem,untell,untense,untent,untenty,untewed,unthank,unthaw,unthick,unthink,unthorn,unthrid,unthrob,untidal,untidy,untie,untied,untight,until,untile,untiled,untill,untilt,untimed,untin,untinct,untine,untipt,untire,untired,unto,untold,untomb,untone,untoned,untooth,untop,untorn,untouch,untough,untown,untrace,untrain,untread,untreed,untress,untried,untrig,untrill,untrim,untripe,untrite,untrod,untruck,untrue,untruly,untruss,untrust,untruth,untuck,untumid,untune,untuned,unturf,unturn,untwine,untwirl,untwist,untying,untz,unugly,unultra,unupset,unurban,unurged,unurn,unurned,unuse,unused,unusual,unvain,unvalid,unvalue,unveil,unvenom,unvest,unvexed,unvicar,unvisor,unvital,unvivid,unvocal,unvoice,unvote,unvoted,unvowed,unwaded,unwaged,unwaked,unwall,unwan,unware,unwarm,unwarn,unwarp,unwary,unwater,unwaved,unwax,unwaxed,unwayed,unweal,unweary,unweave,unweb,unwed,unwedge,unweel,unweft,unweld,unwell,unwept,unwet,unwheel,unwhig,unwhip,unwhite,unwield,unwifed,unwig,unwild,unwill,unwily,unwind,unwindy,unwiped,unwire,unwired,unwise,unwish,unwist,unwitch,unwitty,unwive,unwived,unwoful,unwoman,unwomb,unwon,unwooed,unwoof,unwooly,unwordy,unwork,unworld,unwormy,unworn,unworth,unwound,unwoven,unwrap,unwrit,unwrite,unwrung,unyoke,unyoked,unyoung,unze,unzen,unzone,unzoned,up,upaisle,upalley,upalong,uparch,uparise,uparm,uparna,upas,upattic,upbank,upbar,upbay,upbear,upbeat,upbelch,upbelt,upbend,upbid,upbind,upblast,upblaze,upblow,upboil,upbolt,upboost,upborne,upbotch,upbound,upbrace,upbraid,upbray,upbreak,upbred,upbreed,upbrim,upbring,upbrook,upbrow,upbuild,upbuoy,upburn,upburst,upbuy,upcall,upcanal,upcarry,upcast,upcatch,upchoke,upchuck,upcity,upclimb,upclose,upcoast,upcock,upcoil,upcome,upcover,upcrane,upcrawl,upcreek,upcreep,upcrop,upcrowd,upcry,upcurl,upcurve,upcut,updart,update,updeck,updelve,updive,updo,updome,updraft,updrag,updraw,updrink,updry,upeat,upend,upeygan,upfeed,upfield,upfill,upflame,upflare,upflash,upflee,upfling,upfloat,upflood,upflow,upflung,upfly,upfold,upframe,upfurl,upgale,upgang,upgape,upgaze,upget,upgird,upgirt,upgive,upglean,upglide,upgo,upgorge,upgrade,upgrave,upgrow,upgully,upgush,uphand,uphang,uphasp,upheal,upheap,upheave,upheld,uphelm,uphelya,upher,uphill,uphoard,uphoist,uphold,uphung,uphurl,upjerk,upjet,upkeep,upknell,upknit,upla,uplaid,uplake,upland,uplane,uplay,uplead,upleap,upleg,uplick,uplift,uplight,uplimb,upline,uplock,uplong,uplook,uploom,uploop,uplying,upmast,upmix,upmost,upmount,upmove,upness,upo,upon,uppard,uppent,upper,upperch,upperer,uppers,uppile,upping,uppish,uppity,upplow,uppluck,uppoint,uppoise,uppop,uppour,uppowoc,upprick,upprop,uppuff,uppull,uppush,upraise,upreach,uprear,uprein,uprend,uprest,uprid,upridge,upright,uprip,uprisal,uprise,uprisen,upriser,uprist,uprive,upriver,uproad,uproar,uproom,uproot,uprose,uprouse,uproute,uprun,uprush,upscale,upscrew,upseal,upseek,upseize,upsend,upset,upsey,upshaft,upshear,upshoot,upshore,upshot,upshove,upshut,upside,upsides,upsilon,upsit,upslant,upslip,upslope,upsmite,upsoak,upsoar,upsolve,upspeak,upspear,upspeed,upspew,upspin,upspire,upspout,upspurt,upstaff,upstage,upstair,upstamp,upstand,upstare,upstart,upstate,upstay,upsteal,upsteam,upstem,upstep,upstick,upstir,upsuck,upsun,upsup,upsurge,upswarm,upsway,upsweep,upswell,upswing,uptable,uptake,uptaker,uptear,uptend,upthrow,uptide,uptie,uptill,uptilt,uptorn,uptoss,uptower,uptown,uptrace,uptrack,uptrail,uptrain,uptree,uptrend,uptrill,uptrunk,uptruss,uptube,uptuck,upturn,uptwist,upupoid,upvomit,upwaft,upwall,upward,upwards,upwarp,upwax,upway,upways,upwell,upwent,upwheel,upwhelm,upwhir,upwhirl,upwind,upwith,upwork,upwound,upwrap,upwring,upyard,upyoke,ur,ura,urachal,urachus,uracil,uraemic,uraeus,ural,urali,uraline,uralite,uralium,uramido,uramil,uramino,uran,uranate,uranic,uraniid,uranin,uranine,uranion,uranism,uranist,uranite,uranium,uranous,uranyl,urao,urare,urari,urase,urate,uratic,uratoma,urazine,urazole,urban,urbane,urbian,urbic,urbify,urceole,urceoli,urceus,urchin,urd,urde,urdee,ure,urea,ureal,urease,uredema,uredine,uredo,ureic,ureid,ureide,ureido,uremia,uremic,urent,uresis,uretal,ureter,urethan,urethra,uretic,urf,urge,urgence,urgency,urgent,urger,urging,urheen,urial,uric,urinal,urinant,urinary,urinate,urine,urinose,urinous,urite,urlar,urled,urling,urluch,urman,urn,urna,urnae,urnal,urnful,urning,urnism,urnlike,urocele,urocyst,urodele,urogram,urohyal,urolith,urology,uromere,uronic,uropod,urosis,urosome,urostea,urotoxy,uroxin,ursal,ursine,ursoid,ursolic,urson,ursone,ursuk,urtica,urtite,urubu,urucu,urucuri,uruisg,urunday,urus,urushi,urushic,urva,us,usable,usage,usager,usance,usar,usara,usaron,usation,use,used,usedly,usednt,usee,useful,usehold,useless,usent,user,ush,ushabti,usher,usherer,usings,usitate,usnea,usneoid,usnic,usninic,usque,usself,ussels,ust,uster,ustion,usual,usually,usuary,usucapt,usure,usurer,usuress,usurp,usurper,usurpor,usury,usward,uswards,ut,uta,utahite,utai,utas,utch,utchy,utees,utensil,uteri,uterine,uterus,utick,utile,utility,utilize,utinam,utmost,utopia,utopian,utopism,utopist,utricle,utricul,utrubi,utrum,utsuk,utter,utterer,utterly,utu,utum,uva,uval,uvalha,uvanite,uvate,uvea,uveal,uveitic,uveitis,uveous,uvic,uvid,uviol,uvitic,uvito,uvrou,uvula,uvulae,uvular,uvver,uxorial,uzan,uzara,uzarin,uzaron,v,vaagmer,vaalite,vacancy,vacant,vacate,vacatur,vaccary,vaccina,vaccine,vache,vacoa,vacona,vacoua,vacouf,vacual,vacuate,vacuefy,vacuist,vacuity,vacuole,vacuome,vacuous,vacuum,vacuuma,vade,vadium,vadose,vady,vag,vagal,vagary,vagas,vage,vagile,vagina,vaginal,vagitus,vagrant,vagrate,vagrom,vague,vaguely,vaguish,vaguity,vagus,vahine,vail,vain,vainful,vainly,vair,vairagi,vaire,vairy,vaivode,vajra,vakass,vakia,vakil,valance,vale,valence,valency,valent,valeral,valeric,valerin,valeryl,valet,valeta,valetry,valeur,valgoid,valgus,valhall,vali,valiant,valid,validly,valine,valise,vall,vallar,vallary,vallate,valley,vallis,vallum,valonia,valor,valse,valsoid,valuate,value,valued,valuer,valuta,valva,valval,valvate,valve,valved,valvula,valvule,valyl,vamfont,vamoose,vamp,vamped,vamper,vampire,van,vanadic,vanadyl,vane,vaned,vanfoss,vang,vangee,vangeli,vanglo,vanilla,vanille,vanish,vanity,vanman,vanmost,vanner,vannet,vansire,vantage,vanward,vapid,vapidly,vapor,vapored,vaporer,vapory,vara,varahan,varan,varanid,vardy,vare,varec,vareuse,vari,variant,variate,varical,varices,varied,varier,variety,variola,variole,various,varisse,varix,varlet,varment,varna,varnish,varsha,varsity,varus,varve,varved,vary,vas,vasa,vasal,vase,vaseful,vaselet,vassal,vast,vastate,vastily,vastity,vastly,vasty,vasu,vat,vatful,vatic,vatman,vatter,vau,vaudy,vault,vaulted,vaulter,vaulty,vaunt,vaunted,vaunter,vaunty,vauxite,vavasor,vaward,veal,vealer,vealy,vection,vectis,vector,vecture,vedana,vedette,vedika,vedro,veduis,vee,veen,veep,veer,veery,vegetal,vegete,vehicle,vei,veigle,veil,veiled,veiler,veiling,veily,vein,veinage,veinal,veined,veiner,veinery,veining,veinlet,veinous,veinule,veiny,vejoces,vela,velal,velamen,velar,velaric,velary,velate,velated,veldman,veldt,velic,veliger,vell,vellala,velleda,vellon,vellum,vellumy,velo,velours,velte,velum,velumen,velure,velvet,velvety,venada,venal,venally,venatic,venator,vencola,vend,vendace,vendee,vender,vending,vendor,vendue,veneer,venene,veneral,venerer,venery,venesia,venger,venial,venie,venin,venison,vennel,venner,venom,venomed,venomer,venomly,venomy,venosal,venose,venous,vent,ventage,ventail,venter,ventil,ventose,ventrad,ventral,ventric,venture,venue,venula,venular,venule,venust,vera,veranda,verb,verbal,verbate,verbena,verbene,verbid,verbify,verbile,verbose,verbous,verby,verchok,verd,verdant,verdea,verdet,verdict,verdin,verdoy,verdun,verdure,verek,verge,vergent,verger,vergery,vergi,verglas,veri,veridic,verify,verily,verine,verism,verist,verite,verity,vermeil,vermian,vermin,verminy,vermis,vermix,vernal,vernant,vernier,vernile,vernin,vernine,verre,verrel,verruca,verruga,versal,versant,versate,verse,versed,verser,verset,versify,versine,version,verso,versor,verst,versta,versual,versus,vert,vertex,vertigo,veruled,vervain,verve,vervel,vervet,very,vesania,vesanic,vesbite,vesicae,vesical,vesicle,veskit,vespal,vesper,vespers,vespery,vespid,vespine,vespoid,vessel,vest,vestal,vestee,vester,vestige,vesting,vestlet,vestral,vestry,vesture,vet,veta,vetanda,vetch,vetchy,veteran,vetiver,veto,vetoer,vetoism,vetoist,vetust,vetusty,veuve,vex,vexable,vexed,vexedly,vexer,vexful,vexil,vext,via,viable,viaduct,viagram,viajaca,vial,vialful,viand,viander,viatic,viatica,viator,vibex,vibgyor,vibix,vibrant,vibrate,vibrato,vibrion,vicar,vicarly,vice,viceroy,vicety,vicilin,vicinal,vicine,vicious,vicoite,victim,victor,victory,victrix,victual,vicuna,viddui,video,vidette,vidonia,vidry,viduage,vidual,viduate,viduine,viduity,viduous,vidya,vie,vielle,vier,viertel,view,viewer,viewly,viewy,vifda,viga,vigia,vigil,vignin,vigonia,vigor,vihara,vihuela,vijao,viking,vila,vilayet,vile,vilely,vilify,vility,vill,villa,village,villain,villar,villate,ville,villein,villoid,villose,villous,villus,vim,vimana,vimen,vimful,viminal,vina,vinage,vinal,vinasse,vinata,vincent,vindex,vine,vinea,vineal,vined,vinegar,vineity,vinelet,viner,vinery,vinic,vinny,vino,vinose,vinous,vint,vinta,vintage,vintem,vintner,vintry,viny,vinyl,vinylic,viol,viola,violal,violate,violent,violer,violet,violety,violin,violina,violine,violist,violon,violone,viper,viperan,viperid,vipery,viqueen,viragin,virago,viral,vire,virelay,viremia,viremic,virent,vireo,virga,virgal,virgate,virgin,virgula,virgule,virial,virid,virific,virify,virile,virl,virole,viroled,viron,virose,virosis,virous,virtu,virtual,virtue,virtued,viruela,virus,vis,visa,visage,visaged,visarga,viscera,viscid,viscin,viscose,viscous,viscus,vise,viseman,visible,visibly,visie,visile,vision,visit,visita,visite,visitee,visiter,visitor,visive,visne,vison,visor,vista,vistaed,vistal,visto,visual,vita,vital,vitalic,vitally,vitals,vitamer,vitamin,vitasti,vitiate,vitium,vitrage,vitrail,vitrain,vitraux,vitreal,vitrean,vitreum,vitric,vitrics,vitrify,vitrine,vitriol,vitrite,vitrous,vitta,vittate,vitular,viuva,viva,vivary,vivax,vive,vively,vivency,viver,vivers,vives,vivid,vividly,vivific,vivify,vixen,vixenly,vizard,vizier,vlei,voar,vocable,vocably,vocal,vocalic,vocally,vocate,vocular,vocule,vodka,voe,voet,voeten,vog,voglite,vogue,voguey,voguish,voice,voiced,voicer,voicing,void,voided,voidee,voider,voiding,voidly,voile,voivode,vol,volable,volage,volant,volar,volata,volatic,volcan,volcano,vole,volency,volent,volery,volet,volley,volost,volt,voltage,voltaic,voltize,voluble,volubly,volume,volumed,volupt,volupty,voluta,volute,voluted,volutin,volva,volvate,volvent,vomer,vomica,vomit,vomiter,vomito,vomitus,voodoo,vorago,vorant,vorhand,vorpal,vortex,vota,votable,votal,votally,votary,vote,voteen,voter,voting,votive,votress,vouch,vouchee,voucher,vouge,vow,vowed,vowel,vowely,vower,vowess,vowless,voyage,voyager,voyance,voyeur,vraic,vrbaite,vriddhi,vrother,vug,vuggy,vulgar,vulgare,vulgate,vulgus,vuln,vulnose,vulpic,vulpine,vulture,vulturn,vulva,vulval,vulvar,vulvate,vum,vying,vyingly,w,wa,waag,waapa,waar,wab,wabber,wabble,wabbly,wabby,wabe,wabeno,wabster,wacago,wace,wachna,wack,wacke,wacken,wacker,wacky,wad,waddent,wadder,wadding,waddler,waddly,waddy,wade,wader,wadi,wading,wadlike,wadmal,wadmeal,wadna,wadset,wae,waeg,waer,waesome,waesuck,wafer,waferer,wafery,waff,waffle,waffly,waft,waftage,wafter,wafture,wafty,wag,wagaun,wage,waged,wagedom,wager,wagerer,wages,waggel,wagger,waggery,waggie,waggish,waggle,waggly,waggy,waglike,wagling,wagon,wagoner,wagonry,wagsome,wagtail,wagwag,wagwit,wah,wahahe,wahine,wahoo,waiata,waif,waik,waikly,wail,wailer,wailful,waily,wain,wainage,wainer,wainful,wainman,waipiro,wairch,waird,wairepo,wairsh,waise,waist,waisted,waister,wait,waiter,waiting,waive,waiver,waivery,waivod,waiwode,wajang,waka,wakan,wake,wakeel,wakeful,waken,wakener,waker,wakes,wakf,wakif,wakiki,waking,wakiup,wakken,wakon,wakonda,waky,walahee,wale,waled,waler,wali,waling,walk,walker,walking,walkist,walkout,walkway,wall,wallaba,wallaby,wallah,walled,waller,wallet,walleye,wallful,walling,wallise,wallman,walloon,wallop,wallow,wally,walnut,walrus,walsh,walt,walter,walth,waltz,waltzer,wamara,wambais,wamble,wambly,wame,wamefou,wamel,wamp,wampee,wample,wampum,wampus,wamus,wan,wand,wander,wandery,wandle,wandoo,wandy,wane,waned,wang,wanga,wangala,wangan,wanghee,wangle,wangler,wanhope,wanhorn,wanigan,waning,wankle,wankly,wanle,wanly,wanner,wanness,wannish,wanny,wanrufe,want,wantage,wanter,wantful,wanting,wanton,wantwit,wanty,wany,wap,wapacut,wapatoo,wapiti,wapp,wapper,wapping,war,warabi,waratah,warble,warbled,warbler,warblet,warbly,warch,ward,wardage,warday,warded,warden,warder,warding,wardite,wardman,ware,warehou,wareman,warf,warfare,warful,warily,warish,warison,wark,warl,warless,warlike,warlock,warluck,warly,warm,warman,warmed,warmer,warmful,warming,warmish,warmly,warmth,warmus,warn,warnel,warner,warning,warnish,warnoth,warnt,warp,warpage,warped,warper,warping,warple,warran,warrand,warrant,warree,warren,warrer,warrin,warrior,warrok,warsaw,warse,warsel,warship,warsle,warsler,warst,wart,warted,wartern,warth,wartime,wartlet,warty,warve,warwolf,warworn,wary,was,wasabi,wase,wasel,wash,washday,washed,washen,washer,washery,washin,washing,washman,washoff,washout,washpot,washrag,washtub,washway,washy,wasnt,wasp,waspen,waspily,waspish,waspy,wassail,wassie,wast,wastage,waste,wasted,wastel,waster,wasting,wastrel,wasty,wat,watap,watch,watched,watcher,water,watered,waterer,waterie,watery,wath,watt,wattage,wattape,wattle,wattled,wattman,wauble,wauch,wauchle,waucht,wauf,waugh,waughy,wauken,waukit,waul,waumle,wauner,wauns,waup,waur,wauve,wavable,wavably,wave,waved,wavelet,waver,waverer,wavery,waveson,wavey,wavicle,wavily,waving,wavy,waw,wawa,wawah,wax,waxbill,waxbird,waxbush,waxen,waxer,waxily,waxing,waxlike,waxman,waxweed,waxwing,waxwork,waxy,way,wayaka,wayang,wayback,waybill,waybird,waybook,waybung,wayfare,waygang,waygate,waygone,waying,waylaid,waylay,wayless,wayman,waymark,waymate,waypost,ways,wayside,wayward,waywode,wayworn,waywort,we,weak,weaken,weakish,weakly,weaky,weal,weald,wealth,wealthy,weam,wean,weanel,weaner,weanyer,weapon,wear,wearer,wearied,wearier,wearily,wearing,wearish,weary,weasand,weasel,weaser,weason,weather,weave,weaved,weaver,weaving,weazen,weazeny,web,webbed,webber,webbing,webby,weber,webeye,webfoot,webless,weblike,webster,webwork,webworm,wecht,wed,wedana,wedbed,wedded,wedder,wedding,wede,wedge,wedged,wedger,wedging,wedgy,wedlock,wedset,wee,weeble,weed,weeda,weedage,weeded,weeder,weedery,weedful,weedish,weedow,weedy,week,weekday,weekend,weekly,weekwam,weel,weemen,ween,weeness,weening,weenong,weeny,weep,weeper,weepful,weeping,weeps,weepy,weesh,weeshy,weet,weever,weevil,weevily,weewow,weeze,weft,weftage,wefted,wefty,weigh,weighed,weigher,weighin,weight,weighty,weir,weird,weirdly,weiring,weism,wejack,weka,wekau,wekeen,weki,welcome,weld,welder,welding,weldor,welfare,welk,welkin,well,wellat,welling,wellish,wellman,welly,wels,welsh,welsher,welsium,welt,welted,welter,welting,wem,wemless,wen,wench,wencher,wend,wende,wene,wennish,wenny,went,wenzel,wept,wer,were,werefox,werent,werf,wergil,weri,wert,wervel,wese,weskit,west,weste,wester,western,westing,westy,wet,weta,wetback,wetbird,wetched,wetchet,wether,wetly,wetness,wetted,wetter,wetting,wettish,weve,wevet,wey,wha,whabby,whack,whacker,whacky,whale,whaler,whalery,whaling,whalish,whally,whalm,whalp,whaly,wham,whamble,whame,whammle,whamp,whampee,whample,whan,whand,whang,whangam,whangee,whank,whap,whappet,whapuka,whapuku,whar,whare,whareer,wharf,wharl,wharp,wharry,whart,wharve,whase,whasle,what,whata,whatkin,whatna,whatnot,whats,whatso,whatten,whau,whauk,whaup,whaur,whauve,wheal,whealy,wheam,wheat,wheaten,wheaty,whedder,whee,wheedle,wheel,wheeled,wheeler,wheely,wheem,wheen,wheenge,wheep,wheeple,wheer,wheesht,wheetle,wheeze,wheezer,wheezle,wheezy,wheft,whein,whekau,wheki,whelk,whelked,whelker,whelky,whelm,whelp,whelve,whemmel,when,whenas,whence,wheneer,whenso,where,whereas,whereat,whereby,whereer,wherein,whereof,whereon,whereso,whereto,whereup,wherret,wherrit,wherry,whet,whether,whetile,whetter,whew,whewer,whewl,whewt,whey,wheyey,wheyish,whiba,which,whick,whicken,whicker,whid,whidah,whidder,whiff,whiffer,whiffet,whiffle,whiffy,whift,whig,while,whileen,whilere,whiles,whilie,whilk,whill,whilly,whilock,whilom,whils,whilst,whilter,whim,whimble,whimmy,whimper,whimsey,whimsic,whin,whincow,whindle,whine,whiner,whing,whinge,whinger,whinnel,whinner,whinny,whiny,whip,whipcat,whipman,whippa,whipped,whipper,whippet,whippy,whipsaw,whipt,whir,whirken,whirl,whirled,whirler,whirley,whirly,whirret,whirrey,whirroo,whirry,whirtle,whish,whisk,whisker,whiskey,whisky,whisp,whisper,whissle,whist,whister,whistle,whistly,whit,white,whited,whitely,whiten,whites,whither,whiting,whitish,whitlow,whits,whittaw,whitten,whitter,whittle,whity,whiz,whizgig,whizzer,whizzle,who,whoa,whoever,whole,wholly,whom,whomble,whomso,whone,whoo,whoof,whoop,whoopee,whooper,whoops,whoosh,whop,whopper,whorage,whore,whorish,whorl,whorled,whorly,whort,whortle,whose,whosen,whud,whuff,whuffle,whulk,whulter,whummle,whun,whup,whush,whuskie,whussle,whute,whuther,whutter,whuz,why,whyever,whyfor,whyness,whyo,wi,wice,wicht,wichtje,wick,wicked,wicken,wicker,wicket,wicking,wickiup,wickup,wicky,wicopy,wid,widbin,widder,widdle,widdy,wide,widegab,widely,widen,widener,widgeon,widish,widow,widowed,widower,widowly,widowy,width,widu,wield,wielder,wieldy,wiener,wienie,wife,wifedom,wifeism,wifekin,wifelet,wifely,wifie,wifish,wifock,wig,wigan,wigdom,wigful,wigged,wiggen,wigger,wiggery,wigging,wiggish,wiggism,wiggle,wiggler,wiggly,wiggy,wight,wightly,wigless,wiglet,wiglike,wigtail,wigwag,wigwam,wiikite,wild,wildcat,wilded,wilder,wilding,wildish,wildly,wile,wileful,wilga,wilgers,wilily,wilk,wilkin,will,willawa,willed,willer,willet,willey,willful,willie,willier,willies,willing,willock,willow,willowy,willy,willyer,wilsome,wilt,wilter,wily,wim,wimble,wimbrel,wime,wimick,wimple,win,wince,wincer,wincey,winch,wincher,wincing,wind,windage,windbag,winddog,winded,winder,windigo,windily,winding,windle,windles,windlin,windock,windore,window,windowy,windrow,windup,windway,windy,wine,wined,winemay,winepot,winer,winery,winesop,winevat,winful,wing,wingcut,winged,winger,wingle,winglet,wingman,wingy,winish,wink,winkel,winker,winking,winkle,winklet,winly,winna,winnard,winnel,winner,winning,winnle,winnow,winrace,winrow,winsome,wint,winter,wintle,wintry,winy,winze,wipe,wiper,wippen,wips,wir,wirable,wirble,wird,wire,wirebar,wired,wireman,wirer,wireway,wirily,wiring,wirl,wirling,wirr,wirra,wirrah,wiry,wis,wisdom,wise,wisely,wiseman,wisen,wisent,wiser,wish,wisha,wished,wisher,wishful,wishing,wishly,wishmay,wisht,wisket,wisp,wispish,wispy,wiss,wisse,wissel,wist,wiste,wistful,wistit,wistiti,wit,witan,witch,witched,witchen,witchet,witchy,wite,witess,witful,with,withal,withe,withen,wither,withers,withery,within,without,withy,witjar,witless,witlet,witling,witloof,witness,witney,witship,wittal,witted,witter,wittily,witting,wittol,witty,witwall,wive,wiver,wivern,wiz,wizard,wizen,wizened,wizier,wizzen,wloka,wo,woad,woader,woadman,woady,woak,woald,woan,wob,wobble,wobbler,wobbly,wobster,wod,woddie,wode,wodge,wodgy,woe,woeful,woesome,woevine,woeworn,woffler,woft,wog,wogiet,woibe,wokas,woke,wokowi,wold,woldy,wolf,wolfdom,wolfen,wolfer,wolfish,wolfkin,wolfram,wollop,wolter,wolve,wolver,woman,womanly,womb,wombat,wombed,womble,womby,womera,won,wonder,wone,wonegan,wong,wonga,wongen,wongshy,wongsky,woning,wonky,wonna,wonned,wonner,wonning,wonnot,wont,wonted,wonting,woo,wooable,wood,woodbin,woodcut,wooded,wooden,woodeny,woodine,wooding,woodish,woodlet,woodly,woodman,woodrow,woodsy,woodwax,woody,wooer,woof,woofed,woofell,woofer,woofy,woohoo,wooing,wool,woold,woolder,wooled,woolen,wooler,woolert,woolly,woolman,woolsey,woom,woomer,woon,woons,woorali,woorari,woosh,wootz,woozle,woozy,wop,woppish,wops,worble,word,wordage,worded,worder,wordily,wording,wordish,wordle,wordman,wordy,wore,work,workbag,workbox,workday,worked,worker,working,workman,workout,workpan,works,worky,world,worlded,worldly,worldy,worm,wormed,wormer,wormil,worming,wormy,worn,wornil,worral,worried,worrier,worrit,worry,worse,worsen,worser,worset,worship,worst,worsted,wort,worth,worthy,wosbird,wot,wote,wots,wottest,wotteth,woubit,wouch,wouf,wough,would,wouldnt,wouldst,wound,wounded,wounder,wounds,woundy,wourali,wourari,wournil,wove,woven,wow,wowser,wowsery,wowt,woy,wrack,wracker,wraggle,wraith,wraithe,wraithy,wraitly,wramp,wran,wrang,wrangle,wranny,wrap,wrapped,wrapper,wrasse,wrastle,wrath,wrathy,wraw,wrawl,wrawler,wraxle,wreak,wreat,wreath,wreathe,wreathy,wreck,wrecker,wrecky,wren,wrench,wrenlet,wrest,wrester,wrestle,wretch,wricht,wrick,wride,wried,wrier,wriest,wrig,wriggle,wriggly,wright,wring,wringer,wrinkle,wrinkly,wrist,wristed,wrister,writ,write,writee,writer,writh,writhe,writhed,writhen,writher,writhy,writing,written,writter,wrive,wro,wrocht,wroke,wroken,wrong,wronged,wronger,wrongly,wrossle,wrote,wroth,wrothly,wrothy,wrought,wrox,wrung,wry,wrybill,wryly,wryneck,wryness,wrytail,wud,wuddie,wudge,wudu,wugg,wulk,wull,wullcat,wulliwa,wumble,wumman,wummel,wun,wungee,wunna,wunner,wunsome,wup,wur,wurley,wurmal,wurrus,wurset,wurzel,wush,wusp,wuss,wusser,wust,wut,wuther,wuzu,wuzzer,wuzzle,wuzzy,wy,wyde,wye,wyke,wyle,wymote,wyn,wynd,wyne,wynn,wype,wyson,wyss,wyve,wyver,x,xanthic,xanthin,xanthyl,xarque,xebec,xenia,xenial,xenian,xenium,xenon,xenyl,xerafin,xerarch,xerasia,xeric,xeriff,xerogel,xeroma,xeronic,xerosis,xerotes,xerotic,xi,xiphias,xiphiid,xiphoid,xoana,xoanon,xurel,xyla,xylan,xylate,xylem,xylene,xylenol,xylenyl,xyletic,xylic,xylidic,xylinid,xylite,xylitol,xylogen,xyloid,xylol,xyloma,xylon,xylonic,xylose,xyloyl,xylyl,xylylic,xyphoid,xyrid,xyst,xyster,xysti,xystos,xystum,xystus,y,ya,yaba,yabber,yabbi,yabble,yabby,yabu,yacal,yacca,yachan,yacht,yachter,yachty,yad,yade,yaff,yaffle,yagger,yagi,yagua,yaguaza,yah,yahan,yahoo,yair,yaird,yaje,yajeine,yak,yakalo,yakamik,yakin,yakka,yakman,yalb,yale,yali,yalla,yallaer,yallow,yam,yamamai,yamanai,yamen,yamilke,yammer,yamp,yampa,yamph,yamshik,yan,yander,yang,yangtao,yank,yanking,yanky,yaoort,yaourti,yap,yapa,yaply,yapness,yapok,yapp,yapped,yapper,yapping,yappish,yappy,yapster,yar,yarak,yaray,yarb,yard,yardage,yardang,yardarm,yarder,yardful,yarding,yardman,yare,yareta,yark,yarke,yarl,yarly,yarm,yarn,yarnen,yarner,yarpha,yarr,yarran,yarrow,yarth,yarthen,yarwhip,yas,yashiro,yashmak,yat,yate,yati,yatter,yaud,yauld,yaupon,yautia,yava,yaw,yawl,yawler,yawn,yawner,yawney,yawnful,yawnily,yawning,yawnups,yawny,yawp,yawper,yawroot,yaws,yawweed,yawy,yaxche,yaya,ycie,yday,ye,yea,yeah,yealing,yean,year,yeara,yeard,yearday,yearful,yearly,yearn,yearock,yearth,yeast,yeasty,yeat,yeather,yed,yede,yee,yeel,yees,yegg,yeggman,yeguita,yeld,yeldrin,yelk,yell,yeller,yelling,yelloch,yellow,yellows,yellowy,yelm,yelmer,yelp,yelper,yelt,yen,yender,yeni,yenite,yeo,yeoman,yep,yer,yerb,yerba,yercum,yerd,yere,yerga,yerk,yern,yerth,yes,yese,yeso,yesso,yest,yester,yestern,yesty,yet,yeta,yetapa,yeth,yether,yetlin,yeuk,yeuky,yeven,yew,yex,yez,yezzy,ygapo,yield,yielden,yielder,yieldy,yigh,yill,yilt,yin,yince,yinst,yip,yird,yirk,yirm,yirn,yirr,yirth,yis,yite,ym,yn,ynambu,yo,yobi,yocco,yochel,yock,yockel,yodel,yodeler,yodh,yoe,yoga,yogh,yoghurt,yogi,yogin,yogism,yogist,yogoite,yohimbe,yohimbi,yoi,yoick,yoicks,yojan,yojana,yok,yoke,yokeage,yokel,yokelry,yoker,yoking,yoky,yolden,yolk,yolked,yolky,yom,yomer,yon,yond,yonder,yonner,yonside,yont,yook,yoop,yor,yore,york,yorker,yot,yote,you,youd,youden,youdith,youff,youl,young,younger,youngly,youngun,younker,youp,your,yourn,yours,yoursel,youse,youth,youthen,youthy,youve,youward,youze,yoven,yow,yowie,yowl,yowler,yowley,yowt,yox,yoy,yperite,yr,yttria,yttric,yttrium,yuan,yuca,yucca,yuck,yuckel,yucker,yuckle,yucky,yuft,yugada,yuh,yukkel,yulan,yule,yummy,yungan,yurt,yurta,yus,yusdrum,yutu,yuzlik,yuzluk,z,za,zabeta,zabra,zabti,zabtie,zac,zacate,zacaton,zachun,zad,zadruga,zaffar,zaffer,zafree,zag,zagged,zain,zak,zakkeu,zaman,zamang,zamarra,zamarro,zambo,zamorin,zamouse,zander,zanella,zant,zante,zany,zanyish,zanyism,zanze,zapas,zaphara,zapota,zaptiah,zaptieh,zapupe,zaqqum,zar,zareba,zarf,zarnich,zarp,zat,zati,zattare,zax,zayat,zayin,zeal,zealful,zealot,zealous,zebra,zebraic,zebrass,zebrine,zebroid,zebrula,zebrule,zebu,zebub,zeburro,zechin,zed,zedoary,zee,zeed,zehner,zein,zeism,zeist,zel,zelator,zemeism,zemi,zemmi,zemni,zemstvo,zenana,zendik,zenick,zenith,zenu,zeolite,zephyr,zephyry,zequin,zer,zerda,zero,zeroize,zest,zestful,zesty,zeta,zetetic,zeugma,ziamet,ziara,ziarat,zibet,zibetum,ziega,zieger,ziffs,zig,ziganka,zigzag,zihar,zikurat,zillah,zimarra,zimb,zimbi,zimme,zimmi,zimmis,zimocca,zinc,zincate,zincic,zincide,zincify,zincing,zincite,zincize,zincke,zincky,zinco,zincous,zincum,zing,zingel,zink,zinsang,zip,ziphian,zipper,zipping,zippy,zira,zirai,zircite,zircon,zither,zizz,zloty,zo,zoa,zoacum,zoaria,zoarial,zoarium,zobo,zocco,zoccolo,zodiac,zoea,zoeal,zoeform,zoetic,zogan,zogo,zoic,zoid,zoisite,zoism,zoist,zoistic,zokor,zoll,zolle,zombi,zombie,zonal,zonally,zonar,zonary,zonate,zonated,zone,zoned,zonelet,zonic,zoning,zonite,zonitid,zonoid,zonular,zonule,zonulet,zonure,zonurid,zoo,zoocarp,zoocyst,zooecia,zoogamy,zoogene,zoogeny,zoogony,zooid,zooidal,zooks,zoolite,zoolith,zoology,zoom,zoon,zoonal,zoonic,zoonist,zoonite,zoonomy,zoons,zoonule,zoopery,zoopsia,zoosis,zootaxy,zooter,zootic,zootomy,zootype,zoozoo,zorgite,zoril,zorilla,zorillo,zorro,zoster,zounds,zowie,zudda,zuisin,zumatic,zunyite,zuza,zwitter,zyga,zygal,zygion,zygite,zygoma,zygon,zygose,zygosis,zygote,zygotic,zygous,zymase,zyme,zymic,zymin,zymite,zymogen,zymoid,zymome,zymomin,zymosis,zymotic,zymurgy,zythem,zythum diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt index f5b226e..c37a80b 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt @@ -1,21 +1,46 @@ package cy.agorise.bitsybitshareswallet.fragments import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import cy.agorise.bitsybitshareswallet.R +import cy.agorise.bitsybitshareswallet.utils.toast +import cy.agorise.graphenej.Address +import cy.agorise.graphenej.BrainKey import cy.agorise.graphenej.api.ConnectionStatusUpdate import cy.agorise.graphenej.models.JsonRpcResponse +import kotlinx.android.synthetic.main.fragment_create_account.* +import org.bitcoinj.core.ECKey +import java.io.BufferedReader +import java.io.IOException +import java.io.InputStreamReader class CreateAccountFragment : ConnectedFragment() { + companion object { + private const val TAG = "CreateAccountFragment" + + private const val BRAINKEY_FILE = "brainkeydict.txt" + } + + private lateinit var mBrainKey: BrainKey + private lateinit var mAddress: String + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { setHasOptionsMenu(true) return inflater.inflate(R.layout.fragment_create_account, container, false) } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + // Generating BrainKey + generateKeys() + } + override fun handleJsonRpcResponse(response: JsonRpcResponse<*>) { // TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } @@ -23,4 +48,37 @@ class CreateAccountFragment : ConnectedFragment() { override fun handleConnectionStatusUpdate(connectionStatusUpdate: ConnectionStatusUpdate) { // TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } + + /** + * Method that generates a fresh key that will be controlling the newly created account. + */ + private fun generateKeys() { + var reader: BufferedReader? = null + val dictionary: String + try { + reader = BufferedReader(InputStreamReader(context!!.assets.open(BRAINKEY_FILE), "UTF-8")) + dictionary = reader.readLine() + + val brainKeySuggestion = BrainKey.suggest(dictionary) + mBrainKey = BrainKey(brainKeySuggestion, 0) + val address = Address(ECKey.fromPublicOnly(mBrainKey.privateKey.pubKey)) + Log.d(TAG, "brain key: $brainKeySuggestion") + Log.d(TAG, "address would be: " + address.toString()) + mAddress = address.toString() + tvBrainKey.text = mBrainKey.brainKey + + } catch (e: IOException) { + Log.e(TAG, "IOException while trying to generate key. Msg: " + e.message) + context?.toast(getString(R.string.error__read_dict_file)) + } finally { + if (reader != null) { + try { + reader.close() + } catch (e: IOException) { + Log.e(TAG, "IOException while trying to close BufferedReader. Msg: " + e.message) + } + + } + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_create_account.xml b/app/src/main/res/layout/fragment_create_account.xml index a8adca7..0d74e3f 100644 --- a/app/src/main/res/layout/fragment_create_account.xml +++ b/app/src/main/res/layout/fragment_create_account.xml @@ -1,12 +1,14 @@ + android:paddingBottom="@dimen/activity_vertical_margin"> BitShares account name + Error reading dictionary file Transactions From 9236e374bc91139053d74dbc7ed825a3020f7545 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Sat, 5 Jan 2019 20:02:07 -0600 Subject: [PATCH 22/65] Add PIN and Pin Confirmation validations to CreateAccountFragment using RxBindings with debounce, also add functionality to the 'CANCEL' button. --- .../fragments/CreateAccountFragment.kt | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt index c37a80b..80fe6e8 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt @@ -5,17 +5,22 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.navigation.fragment.findNavController +import com.jakewharton.rxbinding3.widget.textChanges import cy.agorise.bitsybitshareswallet.R +import cy.agorise.bitsybitshareswallet.utils.Constants import cy.agorise.bitsybitshareswallet.utils.toast import cy.agorise.graphenej.Address import cy.agorise.graphenej.BrainKey import cy.agorise.graphenej.api.ConnectionStatusUpdate import cy.agorise.graphenej.models.JsonRpcResponse +import io.reactivex.android.schedulers.AndroidSchedulers import kotlinx.android.synthetic.main.fragment_create_account.* import org.bitcoinj.core.ECKey import java.io.BufferedReader import java.io.IOException import java.io.InputStreamReader +import java.util.concurrent.TimeUnit class CreateAccountFragment : ConnectedFragment() { @@ -28,6 +33,11 @@ class CreateAccountFragment : ConnectedFragment() { private lateinit var mBrainKey: BrainKey private lateinit var mAddress: String + /** Variables used to store the validation status of the form fields */ + private var isPINValid = false + private var isPINConfirmationValid = false + private var isAccountValid = true // TODO make false + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { setHasOptionsMenu(true) @@ -37,10 +47,64 @@ class CreateAccountFragment : ConnectedFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + // Use RxJava Debounce to update the PIN error only after the user stops writing for > 500 ms + mDisposables.add( + tietPin.textChanges() + .skipInitialValue() + .debounce(500, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { validatePIN() } + ) + + // Use RxJava Debounce to update the PIN Confirmation error only after the user stops writing for > 500 ms + mDisposables.add( + tietPinConfirmation.textChanges() + .skipInitialValue() + .debounce(500, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { validatePINConfirmation() } + ) + + btnCancel.setOnClickListener { findNavController().navigateUp() } + + btnCreate.isEnabled = false + // Generating BrainKey generateKeys() } + private fun validatePIN() { + val pin = tietPin.text.toString() + + if (pin.length < Constants.MIN_PIN_LENGTH) { + tilPin.error = getString(R.string.error__pin_too_short) + isPINValid = false + } else { + tilPin.isErrorEnabled = false + isPINValid = true + } + + validatePINConfirmation() + } + + private fun validatePINConfirmation() { + val pinConfirmation = tietPinConfirmation.text.toString() + + if (pinConfirmation != tietPin.text.toString()) { + tilPinConfirmation.error = getString(R.string.error__pin_mismatch) + isPINConfirmationValid = false + } else { + tilPinConfirmation.isErrorEnabled = false + isPINConfirmationValid = true + } + + enableDisableCreateButton() + } + + private fun enableDisableCreateButton() { + btnCreate.isEnabled = (isPINValid && isPINConfirmationValid && isAccountValid) + } + override fun handleJsonRpcResponse(response: JsonRpcResponse<*>) { // TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } From e530dc531e8dc904c086eb0161287087ac9b1cef Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Sat, 5 Jan 2019 20:47:04 -0600 Subject: [PATCH 23/65] Add account name validation to CreateAccountFragment using Kotlin extension functions and RxJava debounce operator. --- .../fragments/CreateAccountFragment.kt | 41 ++++++++++++++++++- .../bitsybitshareswallet/utils/Extensions.kt | 15 +++++++ app/src/main/res/values/strings.xml | 2 + 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt index 80fe6e8..d7993dd 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt @@ -9,6 +9,8 @@ import androidx.navigation.fragment.findNavController import com.jakewharton.rxbinding3.widget.textChanges import cy.agorise.bitsybitshareswallet.R import cy.agorise.bitsybitshareswallet.utils.Constants +import cy.agorise.bitsybitshareswallet.utils.containsDigits +import cy.agorise.bitsybitshareswallet.utils.containsVowels import cy.agorise.bitsybitshareswallet.utils.toast import cy.agorise.graphenej.Address import cy.agorise.graphenej.BrainKey @@ -28,6 +30,7 @@ class CreateAccountFragment : ConnectedFragment() { private const val TAG = "CreateAccountFragment" private const val BRAINKEY_FILE = "brainkeydict.txt" + private const val MIN_ACCOUNT_NAME_LENGTH = 8 } private lateinit var mBrainKey: BrainKey @@ -36,7 +39,7 @@ class CreateAccountFragment : ConnectedFragment() { /** Variables used to store the validation status of the form fields */ private var isPINValid = false private var isPINConfirmationValid = false - private var isAccountValid = true // TODO make false + private var isAccountValidAndAvailable = false override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { setHasOptionsMenu(true) @@ -47,6 +50,15 @@ class CreateAccountFragment : ConnectedFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + // Use RxJava Debounce to check the validity and availability of the user's proposed account name + mDisposables.add( + tietAccountName.textChanges() + .skipInitialValue() + .debounce(500, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { validateAccountName(it.toString()) } + ) + // Use RxJava Debounce to update the PIN error only after the user stops writing for > 500 ms mDisposables.add( tietPin.textChanges() @@ -73,6 +85,31 @@ class CreateAccountFragment : ConnectedFragment() { generateKeys() } + private fun validateAccountName(accountName: String) { + isAccountValidAndAvailable = false + + if ( !isAccountNameValid(accountName) ) { + tilAccountName.error = getString(R.string.error__invalid_account_name) + tilAccountName.helperText = "" + } else { + tilAccountName.isErrorEnabled = false + tilAccountName.helperText = getString(R.string.text__verifying_account_availability) + } + + enableDisableCreateButton() + } + + /** + * Method used to determine if the account name entered by the user is valid + * @param accountName The proposed account name + * @return True if the name is valid, false otherwise + */ + private fun isAccountNameValid(accountName: String): Boolean { + return accountName.length >= MIN_ACCOUNT_NAME_LENGTH && + (accountName.containsDigits() || !accountName.containsVowels()) && + !accountName.contains("_") + } + private fun validatePIN() { val pin = tietPin.text.toString() @@ -102,7 +139,7 @@ class CreateAccountFragment : ConnectedFragment() { } private fun enableDisableCreateButton() { - btnCreate.isEnabled = (isPINValid && isPINConfirmationValid && isAccountValid) + btnCreate.isEnabled = (isPINValid && isPINConfirmationValid && isAccountValidAndAvailable) } override fun handleJsonRpcResponse(response: JsonRpcResponse<*>) { diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt index bd533c2..d9faa1b 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Extensions.kt @@ -5,6 +5,7 @@ import android.content.res.ColorStateList import android.widget.Toast import androidx.core.content.ContextCompat import com.google.android.material.floatingactionbutton.FloatingActionButton +import java.util.regex.Pattern /** * Creates an enabled state, by enabling the button and using the given [colorResource] to color it. @@ -27,4 +28,18 @@ fun FloatingActionButton.disable(colorResource: Int) { */ fun Context.toast(message: CharSequence, duration: Int = Toast.LENGTH_LONG) { Toast.makeText(this, message, duration).show() +} + +/** + * Verifies that the current string contains at least one digit + */ +fun String.containsDigits(): Boolean { + return Pattern.matches("\\d", this) +} + +/** + * Verifies that the current string contains at least one vowel + */ +fun String.containsVowels(): Boolean { + return Pattern.matches("[aeiou]", this) } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 338f7bc..39f97d8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -28,6 +28,8 @@ BitShares account name Error reading dictionary file + The account name has to either have more than 8 characters, contain a number or have no vowels. The underscore character is also not allowed. + Verifying account availability… Transactions From 64d30f42ab43f2285a337622c59c6b5ad2c3e6ee Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Mon, 7 Jan 2019 20:35:29 -0600 Subject: [PATCH 24/65] Create method to validate if the suggested user account given by the user is an available account name or not and display a message to the user with the result, in CreateAccountFragment. --- .../fragments/CreateAccountFragment.kt | 41 +++++++++++++++++-- app/src/main/res/values/strings.xml | 2 + 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt index d7993dd..8c7a6ab 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt @@ -15,6 +15,8 @@ import cy.agorise.bitsybitshareswallet.utils.toast import cy.agorise.graphenej.Address import cy.agorise.graphenej.BrainKey import cy.agorise.graphenej.api.ConnectionStatusUpdate +import cy.agorise.graphenej.api.calls.GetAccountByName +import cy.agorise.graphenej.models.AccountProperties import cy.agorise.graphenej.models.JsonRpcResponse import io.reactivex.android.schedulers.AndroidSchedulers import kotlinx.android.synthetic.main.fragment_create_account.* @@ -31,6 +33,8 @@ class CreateAccountFragment : ConnectedFragment() { private const val BRAINKEY_FILE = "brainkeydict.txt" private const val MIN_ACCOUNT_NAME_LENGTH = 8 + + private const val RESPONSE_GET_ACCOUNT_BY_NAME = 1 } private lateinit var mBrainKey: BrainKey @@ -41,6 +45,9 @@ class CreateAccountFragment : ConnectedFragment() { private var isPINConfirmationValid = false private var isAccountValidAndAvailable = false + // Map used to keep track of request and response id pairs + private val responseMap = HashMap() + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { setHasOptionsMenu(true) @@ -54,7 +61,7 @@ class CreateAccountFragment : ConnectedFragment() { mDisposables.add( tietAccountName.textChanges() .skipInitialValue() - .debounce(500, TimeUnit.MILLISECONDS) + .debounce(800, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe { validateAccountName(it.toString()) } ) @@ -89,11 +96,15 @@ class CreateAccountFragment : ConnectedFragment() { isAccountValidAndAvailable = false if ( !isAccountNameValid(accountName) ) { - tilAccountName.error = getString(R.string.error__invalid_account_name) tilAccountName.helperText = "" + tilAccountName.error = getString(R.string.error__invalid_account_name) } else { tilAccountName.isErrorEnabled = false tilAccountName.helperText = getString(R.string.text__verifying_account_availability) + val id = mNetworkService?.sendMessage(GetAccountByName(accountName), GetAccountByName.REQUIRED_API) + + if (id != null) + responseMap[id] = RESPONSE_GET_ACCOUNT_BY_NAME } enableDisableCreateButton() @@ -143,13 +154,37 @@ class CreateAccountFragment : ConnectedFragment() { } override fun handleJsonRpcResponse(response: JsonRpcResponse<*>) { - // TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + if (responseMap.containsKey(response.id)) { + val responseType = responseMap[response.id] + when (responseType) { + RESPONSE_GET_ACCOUNT_BY_NAME -> handleAccountName(response.result) + } + responseMap.remove(response.id) + } } override fun handleConnectionStatusUpdate(connectionStatusUpdate: ConnectionStatusUpdate) { // TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } + /** + * Handles the response from the NetworkService's GetAccountByName call to decide if the user's suggested + * account is available or not. + */ + private fun handleAccountName(result: Any?) { + if (result is AccountProperties) { + tilAccountName.helperText = "" + tilAccountName.error = getString(R.string.error__account_not_available) + isAccountValidAndAvailable = false + } else { + tilAccountName.isErrorEnabled = false + tilAccountName.helperText = getString(R.string.text__account_is_available) + isAccountValidAndAvailable = true + } + + enableDisableCreateButton() + } + /** * Method that generates a fresh key that will be controlling the newly created account. */ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 39f97d8..50853ae 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -30,6 +30,8 @@ Error reading dictionary file The account name has to either have more than 8 characters, contain a number or have no vowels. The underscore character is also not allowed. Verifying account availability… + Account not available + Account is available Transactions From 860947b351d160c8f42eaf2642f00527ce35a37f Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Tue, 8 Jan 2019 13:27:18 -0600 Subject: [PATCH 25/65] Create BaseAccountFragment, which is an abstract class that encapsulates the code needed in both ImportBrainkeyFragment and CreateAccountFragment to store into the information of the created/imported user account into the database. --- .../fragments/BaseAccountFragment.kt | 95 +++++++++++++++++++ .../fragments/ImportBrainkeyFragment.kt | 92 +----------------- 2 files changed, 98 insertions(+), 89 deletions(-) create mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt new file mode 100644 index 0000000..56a3fa7 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt @@ -0,0 +1,95 @@ +package cy.agorise.bitsybitshareswallet.fragments + +import android.preference.PreferenceManager +import androidx.navigation.fragment.findNavController +import cy.agorise.bitsybitshareswallet.database.entities.Authority +import cy.agorise.bitsybitshareswallet.repositories.AuthorityRepository +import cy.agorise.bitsybitshareswallet.repositories.UserAccountRepository +import cy.agorise.bitsybitshareswallet.utils.Constants +import cy.agorise.bitsybitshareswallet.utils.CryptoUtils +import cy.agorise.graphenej.AuthorityType +import cy.agorise.graphenej.BrainKey +import cy.agorise.graphenej.PublicKey +import cy.agorise.graphenej.models.AccountProperties +import org.bitcoinj.core.ECKey + +abstract class BaseAccountFragment : ConnectedFragment() { + + /** Private variable that will hold an instance of the [BrainKey] class */ + protected var mBrainKey: BrainKey? = null + + /** + * Method called internally once an account has been detected. This method will store internally + * the following details: + * + * - Account name in the database + * - Account authorities in the database + * - The current account id in the shared preferences + * + * @param accountProperties Account properties object + */ + protected fun onAccountSelected(accountProperties: AccountProperties, pin: String) { + val encryptedPIN = CryptoUtils.encrypt(context!!, pin) + + // Stores the user selected PIN encrypted + PreferenceManager.getDefaultSharedPreferences(context!!) + .edit() + .putString(Constants.KEY_ENCRYPTED_PIN, encryptedPIN) + .apply() + + // Stores the accounts this key refers to + val id = accountProperties.id + val name = accountProperties.name + val isLTM = accountProperties.membership_expiration_date == Constants.LIFETIME_EXPIRATION_DATE + + val userAccount = cy.agorise.bitsybitshareswallet.database.entities.UserAccount(id, name, isLTM) + + val userAccountRepository = UserAccountRepository(context!!.applicationContext) + userAccountRepository.insert(userAccount) + + // Stores the id of the currently active user account + PreferenceManager.getDefaultSharedPreferences(context!!).edit() + .putString(Constants.KEY_CURRENT_ACCOUNT_ID, accountProperties.id).apply() + + // Trying to store all possible authorities (owner, active and memo) into the database + val ownerAuthority = accountProperties.owner + val activeAuthority = accountProperties.active + val options = accountProperties.options + + for (i in 0..2) { + mBrainKey!!.sequenceNumber = i + val publicKey = PublicKey(ECKey.fromPublicOnly(mBrainKey!!.privateKey.pubKey)) + + if (ownerAuthority.keyAuths.keys.contains(publicKey)) { + addAuthorityToDatabase(accountProperties.id, AuthorityType.OWNER.ordinal, mBrainKey!!) + } + if (activeAuthority.keyAuths.keys.contains(publicKey)) { + addAuthorityToDatabase(accountProperties.id, AuthorityType.ACTIVE.ordinal, mBrainKey!!) + } + if (options.memoKey == publicKey) { + addAuthorityToDatabase(accountProperties.id, AuthorityType.MEMO.ordinal, mBrainKey!!) + } + } + + // Send the user back to HomeFragment + findNavController().popBackStack() + } + + /** + * Adds the given BrainKey encrypted as AuthorityType of userId. + */ + private fun addAuthorityToDatabase(userId: String, authorityType: Int, brainKey: BrainKey) { + val brainKeyWords = brainKey.brainKey + val wif = brainKey.walletImportFormat + val sequenceNumber = brainKey.sequenceNumber + + val encryptedBrainKey = CryptoUtils.encrypt(context!!, brainKeyWords) + val encryptedSequenceNumber = CryptoUtils.encrypt(context!!, sequenceNumber.toString()) + val encryptedWIF = CryptoUtils.encrypt(context!!, wif) + + val authority = Authority(0, userId, authorityType, encryptedWIF, encryptedBrainKey, encryptedSequenceNumber) + + val authorityRepository = AuthorityRepository(context!!) + authorityRepository.insert(authority) + } +} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ImportBrainkeyFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ImportBrainkeyFragment.kt index 7af7150..bed18e5 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ImportBrainkeyFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/ImportBrainkeyFragment.kt @@ -1,23 +1,17 @@ package cy.agorise.bitsybitshareswallet.fragments import android.os.Bundle -import android.preference.PreferenceManager import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.appcompat.widget.Toolbar import androidx.navigation.Navigation -import androidx.navigation.fragment.findNavController import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.list.listItemsSingleChoice import com.jakewharton.rxbinding3.widget.textChanges import cy.agorise.bitsybitshareswallet.R -import cy.agorise.bitsybitshareswallet.database.entities.Authority -import cy.agorise.bitsybitshareswallet.repositories.AuthorityRepository -import cy.agorise.bitsybitshareswallet.repositories.UserAccountRepository import cy.agorise.bitsybitshareswallet.utils.Constants -import cy.agorise.bitsybitshareswallet.utils.CryptoUtils import cy.agorise.bitsybitshareswallet.utils.toast import cy.agorise.graphenej.* import cy.agorise.graphenej.api.ConnectionStatusUpdate @@ -31,14 +25,11 @@ import org.bitcoinj.core.ECKey import java.util.ArrayList import java.util.concurrent.TimeUnit -class ImportBrainkeyFragment : ConnectedFragment() { +class ImportBrainkeyFragment : BaseAccountFragment() { companion object { private const val TAG = "ImportBrainkeyActivity" } - /** Private variable that will hold an instance of the [BrainKey] class */ - private var mBrainKey: BrainKey? = null - /** User account associated with the key derived from the brainkey that the user just typed in */ private var mUserAccount: UserAccount? = null @@ -248,7 +239,7 @@ class ImportBrainkeyFragment : ConnectedFragment() { // If one account was selected, we keep a reference to it and // store the account properties mUserAccount = mUserAccountCandidates!![index] - onAccountSelected(accountPropertiesList[index]) + onAccountSelected(accountPropertiesList[index], tietPin.text.toString()) } } .positiveButton(android.R.string.ok) @@ -258,7 +249,7 @@ class ImportBrainkeyFragment : ConnectedFragment() { .cancelable(false) .show() } else if (accountPropertiesList.size == 1) { - onAccountSelected(accountPropertiesList[0]) + onAccountSelected(accountPropertiesList[0], tietPin.text.toString()) } else { context?.toast(getString(R.string.error__try_again)) } @@ -268,81 +259,4 @@ class ImportBrainkeyFragment : ConnectedFragment() { override fun handleConnectionStatusUpdate(connectionStatusUpdate: ConnectionStatusUpdate) { Log.d(TAG, "handleConnectionStatusUpdate. code: " + connectionStatusUpdate.updateCode) } - - /** - * Method called internally once an account has been detected. This method will store internally - * the following details: - * - * - Account name in the database - * - Account authorities in the database - * - The current account id in the shared preferences - * - * @param accountProperties Account properties object - */ - private fun onAccountSelected(accountProperties: AccountProperties) { - mUserAccount!!.name = accountProperties.name - - val encryptedPIN = CryptoUtils.encrypt(context!!, tietPin.text!!.toString()) - - // Stores the user selected PIN encrypted - PreferenceManager.getDefaultSharedPreferences(context!!) - .edit() - .putString(Constants.KEY_ENCRYPTED_PIN, encryptedPIN) - .apply() - - // Stores the accounts this key refers to - val id = accountProperties.id - val name = accountProperties.name - val isLTM = accountProperties.membership_expiration_date == Constants.LIFETIME_EXPIRATION_DATE - - val userAccount = cy.agorise.bitsybitshareswallet.database.entities.UserAccount(id, name, isLTM) - - val userAccountRepository = UserAccountRepository(context!!.applicationContext) - userAccountRepository.insert(userAccount) - - // Stores the id of the currently active user account - PreferenceManager.getDefaultSharedPreferences(context!!).edit() - .putString(Constants.KEY_CURRENT_ACCOUNT_ID, mUserAccount!!.objectId).apply() - - // Trying to store all possible authorities (owner, active and memo) into the database - val ownerAuthority = accountProperties.owner - val activeAuthority = accountProperties.active - val options = accountProperties.options - - for (i in 0..2) { - mBrainKey!!.sequenceNumber = i - val publicKey = PublicKey(ECKey.fromPublicOnly(mBrainKey!!.privateKey.pubKey)) - - if (ownerAuthority.keyAuths.keys.contains(publicKey)) { - addAuthorityToDatabase(accountProperties.id, AuthorityType.OWNER.ordinal, mBrainKey!!) - } - if (activeAuthority.keyAuths.keys.contains(publicKey)) { - addAuthorityToDatabase(accountProperties.id, AuthorityType.ACTIVE.ordinal, mBrainKey!!) - } - if (options.memoKey == publicKey) { - addAuthorityToDatabase(accountProperties.id, AuthorityType.MEMO.ordinal, mBrainKey!!) - } - } - - // Send the user back to HomeFragment - findNavController().popBackStack() - } - - /** - * Adds the given BrainKey encrypted as AuthorityType of userId. - */ - private fun addAuthorityToDatabase(userId: String, authorityType: Int, brainKey: BrainKey) { - val brainKeyWords = brainKey.brainKey - val wif = brainKey.walletImportFormat - val sequenceNumber = brainKey.sequenceNumber - - val encryptedBrainKey = CryptoUtils.encrypt(context!!, brainKeyWords) - val encryptedSequenceNumber = CryptoUtils.encrypt(context!!, sequenceNumber.toString()) - val encryptedWIF = CryptoUtils.encrypt(context!!, wif) - - val authority = Authority(0, userId, authorityType, encryptedWIF, encryptedBrainKey, encryptedSequenceNumber) - - val authorityRepository = AuthorityRepository(context!!) - authorityRepository.insert(authority) - } } \ No newline at end of file From 78909498c05a81d54ad15659e9afa25e649ec9c3 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Tue, 8 Jan 2019 16:35:14 -0600 Subject: [PATCH 26/65] Added method to create Account using the Agorise's faucet, and also making use of Retrofit's suggested ServiceGenerator. --- app/build.gradle | 5 +- .../fragments/CreateAccountFragment.kt | 94 +++++++++++++++++-- .../models/FaucetAccount.java | 73 ++++++++++++++ .../models/FaucetRequest.java | 13 +++ .../models/FaucetResponse.java | 10 ++ .../network/FaucetService.kt | 23 +++++ .../network/ServiceGenerator.java | 82 ++++++++++++++++ .../bitsybitshareswallet/utils/Constants.kt | 6 ++ app/src/main/res/values/strings.xml | 4 + 9 files changed, 301 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetAccount.java create mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetRequest.java create mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetResponse.java create mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/network/FaucetService.kt create mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/network/ServiceGenerator.java diff --git a/app/build.gradle b/app/build.gradle index d45ce5c..eafe733 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,9 +72,12 @@ dependencies { implementation "com.jakewharton.rxbinding3:rxbinding:$rx_bindings_version" implementation "com.jakewharton.rxbinding3:rxbinding-material:$rx_bindings_version" // Material Components widgets implementation "com.jakewharton.rxbinding3:rxbinding-appcompat:$rx_bindings_version" // AndroidX appcompat widgets - // Retrofit + // Retrofit & OkHttp implementation 'com.squareup.retrofit2:retrofit:2.5.0' implementation 'com.squareup.retrofit2:converter-gson:2.5.0' + implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0' + implementation 'com.squareup.okhttp3:okhttp:3.12.0' + implementation 'com.squareup.okhttp3:logging-interceptor:3.5.0' //Firebase implementation 'com.google.firebase:firebase-core:16.0.6' implementation 'com.google.firebase:firebase-crash:16.2.1' diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt index 8c7a6ab..dc25c73 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt @@ -8,6 +8,7 @@ import android.view.ViewGroup import androidx.navigation.fragment.findNavController import com.jakewharton.rxbinding3.widget.textChanges import cy.agorise.bitsybitshareswallet.R +import cy.agorise.bitsybitshareswallet.network.FaucetService import cy.agorise.bitsybitshareswallet.utils.Constants import cy.agorise.bitsybitshareswallet.utils.containsDigits import cy.agorise.bitsybitshareswallet.utils.containsVowels @@ -21,12 +22,20 @@ import cy.agorise.graphenej.models.JsonRpcResponse import io.reactivex.android.schedulers.AndroidSchedulers import kotlinx.android.synthetic.main.fragment_create_account.* import org.bitcoinj.core.ECKey +import retrofit2.Callback import java.io.BufferedReader import java.io.IOException import java.io.InputStreamReader import java.util.concurrent.TimeUnit +import com.afollestad.materialdialogs.MaterialDialog +import cy.agorise.bitsybitshareswallet.models.FaucetRequest +import cy.agorise.bitsybitshareswallet.models.FaucetResponse +import cy.agorise.bitsybitshareswallet.network.ServiceGenerator +import retrofit2.Call +import retrofit2.Response -class CreateAccountFragment : ConnectedFragment() { + +class CreateAccountFragment : BaseAccountFragment() { companion object { private const val TAG = "CreateAccountFragment" @@ -34,10 +43,12 @@ class CreateAccountFragment : ConnectedFragment() { private const val BRAINKEY_FILE = "brainkeydict.txt" private const val MIN_ACCOUNT_NAME_LENGTH = 8 - private const val RESPONSE_GET_ACCOUNT_BY_NAME = 1 + // Used when trying to validate that the account name is available + private const val RESPONSE_GET_ACCOUNT_BY_NAME_VALIDATION = 1 + // Used when trying to obtain the info of the newly created account + private const val RESPONSE_GET_ACCOUNT_BY_NAME_CREATED = 2 } - private lateinit var mBrainKey: BrainKey private lateinit var mAddress: String /** Variables used to store the validation status of the form fields */ @@ -87,6 +98,7 @@ class CreateAccountFragment : ConnectedFragment() { btnCancel.setOnClickListener { findNavController().navigateUp() } btnCreate.isEnabled = false + btnCreate.setOnClickListener { createAccount() } // Generating BrainKey generateKeys() @@ -104,7 +116,7 @@ class CreateAccountFragment : ConnectedFragment() { val id = mNetworkService?.sendMessage(GetAccountByName(accountName), GetAccountByName.REQUIRED_API) if (id != null) - responseMap[id] = RESPONSE_GET_ACCOUNT_BY_NAME + responseMap[id] = RESPONSE_GET_ACCOUNT_BY_NAME_VALIDATION } enableDisableCreateButton() @@ -157,7 +169,8 @@ class CreateAccountFragment : ConnectedFragment() { if (responseMap.containsKey(response.id)) { val responseType = responseMap[response.id] when (responseType) { - RESPONSE_GET_ACCOUNT_BY_NAME -> handleAccountName(response.result) + RESPONSE_GET_ACCOUNT_BY_NAME_VALIDATION -> handleAccountNameValidation(response.result) + RESPONSE_GET_ACCOUNT_BY_NAME_CREATED -> handleAccountNameCreated(response.result) } responseMap.remove(response.id) } @@ -171,7 +184,7 @@ class CreateAccountFragment : ConnectedFragment() { * Handles the response from the NetworkService's GetAccountByName call to decide if the user's suggested * account is available or not. */ - private fun handleAccountName(result: Any?) { + private fun handleAccountNameValidation(result: Any?) { if (result is AccountProperties) { tilAccountName.helperText = "" tilAccountName.error = getString(R.string.error__account_not_available) @@ -185,6 +198,71 @@ class CreateAccountFragment : ConnectedFragment() { enableDisableCreateButton() } + /** + * Handles the response from the NetworkService's GetAccountByName call and stores the information of the newly + * created account if the result is successful, shows a toast error otherwise + */ + private fun handleAccountNameCreated(result: Any?) { + if (result is AccountProperties) { + onAccountSelected(result, tietPin.text.toString()) + } else { + context?.toast(getString(R.string.error__created_account_not_found)) + } + } + + /** + * Sends the account-creation request to the faucet server. + * Only account name and public address is sent here. + */ + private fun createAccount() { + val accountName = tietAccountName.text.toString() + val faucetRequest = FaucetRequest(accountName, mAddress, Constants.FAUCET_REFERRER) + + val sg = ServiceGenerator(Constants.FAUCET_URL) + val faucetService = sg.getService(FaucetService::class.java) + + val call = faucetService.registerPrivateAccount(faucetRequest) + + // Execute the call asynchronously. Get a positive or negative callback. + call.enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { + // The network call was a success and we got a response + getCreatedAccountInfo(response.body()) + } + + override fun onFailure(call: Call, t: Throwable) { + // the network call was a failure + MaterialDialog(context!!) + .title(R.string.title_error) + .message(cy.agorise.bitsybitshareswallet.R.string.error__faucet) + .negativeButton(android.R.string.ok) + .show() + } + }) + } + + private fun getCreatedAccountInfo(faucetResponse: FaucetResponse?) { + if (faucetResponse?.account != null) { + val id = mNetworkService?.sendMessage(GetAccountByName(faucetResponse.account?.name), + GetAccountByName.REQUIRED_API) + + if (id != null) + responseMap[id] = RESPONSE_GET_ACCOUNT_BY_NAME_CREATED + } else { + Log.d(TAG, "Private account creation failed ") + val content = if (faucetResponse?.error?.base?.size ?: 0 > 0) { + getString(R.string.error__faucet_template, faucetResponse?.error?.base?.get(0)) + } else { + getString(R.string.error__faucet_template, "None") + } + + MaterialDialog(context!!) + .title(R.string.title_error) + .message(text = content) + .show() + } + } + /** * Method that generates a fresh key that will be controlling the newly created account. */ @@ -197,11 +275,11 @@ class CreateAccountFragment : ConnectedFragment() { val brainKeySuggestion = BrainKey.suggest(dictionary) mBrainKey = BrainKey(brainKeySuggestion, 0) - val address = Address(ECKey.fromPublicOnly(mBrainKey.privateKey.pubKey)) + val address = Address(ECKey.fromPublicOnly(mBrainKey?.privateKey?.pubKey)) Log.d(TAG, "brain key: $brainKeySuggestion") Log.d(TAG, "address would be: " + address.toString()) mAddress = address.toString() - tvBrainKey.text = mBrainKey.brainKey + tvBrainKey.text = mBrainKey?.brainKey } catch (e: IOException) { Log.e(TAG, "IOException while trying to generate key. Msg: " + e.message) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetAccount.java b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetAccount.java new file mode 100644 index 0000000..40d3ef4 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetAccount.java @@ -0,0 +1,73 @@ +package cy.agorise.bitsybitshareswallet.models; + +/** + * Class used to deserialize a the "account" object contained in the faucet response to the + * {@link cy.agorise.bitsybitshareswallet.network.FaucetService#registerPrivateAccount(FaucetRequest)} API call. + */ + +public class FaucetAccount { + public String name; + public String owner_key; + public String active_key; + public String memo_key; + public String referrer; + public String refcode; + + public FaucetAccount(String accountName, String address, String referrer){ + this.name = accountName; + this.owner_key = address; + this.active_key = address; + this.memo_key = address; + this.refcode = referrer; + this.referrer = referrer; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getOwnerKey() { + return owner_key; + } + + public void setOwnerKey(String owner_key) { + this.owner_key = owner_key; + } + + public String getActiveKey() { + return active_key; + } + + public void setActiveKey(String active_key) { + this.active_key = active_key; + } + + public String getMemoKey() { + return memo_key; + } + + public void setMemoKey(String memo_key) { + this.memo_key = memo_key; + } + + public String getRefcode() { + return refcode; + } + + public void setRefcode(String refcode) { + this.refcode = refcode; + } + + public String getReferrer() { + return referrer; + } + + public void setReferrer(String referrer) { + this.referrer = referrer; + } +} + diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetRequest.java b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetRequest.java new file mode 100644 index 0000000..0103ea9 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetRequest.java @@ -0,0 +1,13 @@ +package cy.agorise.bitsybitshareswallet.models; + +/** + * Class used to encapsulate a faucet account creation request + */ + +public class FaucetRequest { + private FaucetAccount account; + + public FaucetRequest(String accountName, String address, String referrer){ + account = new FaucetAccount(accountName, address, referrer); + } +} diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetResponse.java b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetResponse.java new file mode 100644 index 0000000..c7d7967 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetResponse.java @@ -0,0 +1,10 @@ +package cy.agorise.bitsybitshareswallet.models; + +public class FaucetResponse { + public FaucetAccount account; + public Error error; + + public class Error { + public String[] base; + } +} diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/network/FaucetService.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/network/FaucetService.kt new file mode 100644 index 0000000..c266eb0 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/network/FaucetService.kt @@ -0,0 +1,23 @@ +package cy.agorise.bitsybitshareswallet.network + +import cy.agorise.bitsybitshareswallet.models.FaucetRequest +import cy.agorise.bitsybitshareswallet.models.FaucetResponse +import okhttp3.ResponseBody +import retrofit2.Call +import retrofit2.http.Body +import retrofit2.http.GET +import retrofit2.http.Headers +import retrofit2.http.POST + +/** + * Interface to the faucet service. The faucet is used in order to register new BitShares accounts. + */ +interface FaucetService { + + @GET("/") + fun checkStatus(): Call + + @Headers("Content-Type: application/json") + @POST("/api/v1/accounts") + fun registerPrivateAccount(@Body faucetRequest: FaucetRequest): Call +} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/network/ServiceGenerator.java b/app/src/main/java/cy/agorise/bitsybitshareswallet/network/ServiceGenerator.java new file mode 100644 index 0000000..6554677 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/network/ServiceGenerator.java @@ -0,0 +1,82 @@ +package cy.agorise.bitsybitshareswallet.network; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; +import okhttp3.logging.HttpLoggingInterceptor; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + +import java.io.IOException; +import java.util.HashMap; +import java.util.concurrent.Executor; +import java.util.concurrent.TimeUnit; + +public class ServiceGenerator{ + public static String API_BASE_URL; + private static HttpLoggingInterceptor logging; + private static OkHttpClient.Builder httpClient; + private static Retrofit.Builder builder; + + private static HashMap, Object> Services; + + public ServiceGenerator(String apiBaseUrl) { + API_BASE_URL= apiBaseUrl; + logging = new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY); + httpClient = new OkHttpClient.Builder().addInterceptor(logging); + builder = new Retrofit.Builder() + .baseUrl(API_BASE_URL) + .addConverterFactory(GsonConverterFactory.create(getGson())) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()); + Services = new HashMap, Object>(); + } + + /** + * Customizes the Gson instance with specific de-serialization logic + */ + private Gson getGson(){ + GsonBuilder builder = new GsonBuilder(); + + return builder.create(); + } + + public void setCallbackExecutor(Executor executor){ + builder.callbackExecutor(executor); + } + + public static void setService(Class klass, T thing) { + Services.put(klass, thing); + } + + public T getService(Class serviceClass) { + + T service = serviceClass.cast(Services.get(serviceClass)); + if (service == null) { + service = createService(serviceClass); + setService(serviceClass, service); + } + return service; + } + + public static S createService(Class serviceClass) { + + httpClient.interceptors().add(new Interceptor() { + @Override + public okhttp3.Response intercept(Interceptor.Chain chain) throws IOException { + okhttp3.Request original = chain.request(); + // Request customization: add request headers + okhttp3.Request.Builder requestBuilder = original.newBuilder().method(original.method(), original.body()); + + okhttp3.Request request = requestBuilder.build(); + return chain.proceed(request); + } + }); + httpClient.readTimeout(5, TimeUnit.MINUTES); + httpClient.connectTimeout(5, TimeUnit.MINUTES); + OkHttpClient client = httpClient.build(); + Retrofit retrofit = builder.client(client).build(); + return retrofit.create(serviceClass); + } +} diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Constants.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Constants.kt index 7aa59cf..15eb98a 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Constants.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/utils/Constants.kt @@ -14,6 +14,12 @@ object Constants { /** The minimum required length for a PIN number */ const val MIN_PIN_LENGTH = 6 + /** Name of the account passed to the faucet as the referrer */ + const val FAUCET_REFERRER = "agorise" + + /** Faucet URL used to create new accounts */ + const val FAUCET_URL = "https://faucet.palmpay.io" + /** The user selected encrypted PIN */ const val KEY_ENCRYPTED_PIN = "key_encrypted_pin" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 50853ae..55833a4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -32,6 +32,10 @@ Verifying account availability… Account not available Account is available + Error + The server returned an error. This might be due to a limitation purposefully set in place to disallow frequent requests coming from the same IP address in a short time lapse. Please wait 5 minutes and try again, or switch to a different network, for example from wifi to cell. + The faucet returned an error. Msg: %1$s + The app could not retrieve information about the newly created account Transactions From 8894c48e5c3d405402cccf2ecac0dd50cd8d0afb Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Tue, 8 Jan 2019 20:18:42 -0600 Subject: [PATCH 27/65] Fix problem with Navigation from the ImportBrainkeyFragment and CreateAccountFragment when an account is imported/created and the user has to be taken back to the MainFragment. --- .../fragments/BaseAccountFragment.kt | 3 +- .../fragments/CreateAccountFragment.kt | 10 ++- .../fragments/HomeFragment.kt | 4 +- .../main/res/navigation/mobile_navigation.xml | 72 ++++++++++--------- 4 files changed, 49 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt index 56a3fa7..b45f613 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt @@ -2,6 +2,7 @@ package cy.agorise.bitsybitshareswallet.fragments import android.preference.PreferenceManager import androidx.navigation.fragment.findNavController +import cy.agorise.bitsybitshareswallet.R import cy.agorise.bitsybitshareswallet.database.entities.Authority import cy.agorise.bitsybitshareswallet.repositories.AuthorityRepository import cy.agorise.bitsybitshareswallet.repositories.UserAccountRepository @@ -72,7 +73,7 @@ abstract class BaseAccountFragment : ConnectedFragment() { } // Send the user back to HomeFragment - findNavController().popBackStack() + findNavController().navigate(R.id.home_action) } /** diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt index dc25c73..3cc2730 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt @@ -1,6 +1,7 @@ package cy.agorise.bitsybitshareswallet.fragments import android.os.Bundle +import android.preference.PreferenceManager import android.util.Log import android.view.LayoutInflater import android.view.View @@ -33,6 +34,8 @@ import cy.agorise.bitsybitshareswallet.models.FaucetResponse import cy.agorise.bitsybitshareswallet.network.ServiceGenerator import retrofit2.Call import retrofit2.Response +import java.util.* +import kotlin.concurrent.timerTask class CreateAccountFragment : BaseAccountFragment() { @@ -226,8 +229,11 @@ class CreateAccountFragment : BaseAccountFragment() { // Execute the call asynchronously. Get a positive or negative callback. call.enqueue(object : Callback { override fun onResponse(call: Call, response: Response) { - // The network call was a success and we got a response - getCreatedAccountInfo(response.body()) + // The network call was a success and we got a response, obtain the info of the newly created account + // with a delay to let the nodes update their information + Timer().schedule(timerTask { + getCreatedAccountInfo(response.body()) + }, 4000) } override fun onFailure(call: Call, t: Throwable) { diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt index e213fcc..be56fa5 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/HomeFragment.kt @@ -53,7 +53,7 @@ class HomeFragment : Fragment() { .getString(Constants.KEY_CURRENT_ACCOUNT_ID, "") ?: "" if (agreedLicenseVersion != Constants.CURRENT_LICENSE_VERSION || userId == "") { - findNavController().navigate(R.id.setup_action) + findNavController().navigate(R.id.license_action) return } @@ -61,7 +61,7 @@ class HomeFragment : Fragment() { mUserAccountViewModel = ViewModelProviders.of(this).get(UserAccountViewModel::class.java) mUserAccountViewModel.getUserAccount(userId).observe(this, Observer{ user -> - tvAccountName.text = user.name + tvAccountName.text = user?.name ?: "" }) // Navigate to the Receive Transaction Fragment diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index bded66c..aa1bb35 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -37,8 +37,8 @@ app:popExitAnim="@anim/slide_out_right"/> + android:id="@+id/license_action" + app:destination="@id/license_dest"/> @@ -78,46 +78,48 @@ android:defaultValue="false" /> - + - + - + - + - + - + - + - + - + + + \ No newline at end of file From e16d651a6355f01f1178ca92e6cfb78b9dd2b9e6 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Tue, 8 Jan 2019 20:53:57 -0600 Subject: [PATCH 28/65] Fix crash related to trying to create a Dialog from a thread other than the UI thread. Also, add the password toggle buttons to the PIN fields in CreateAccountFragment. --- .../fragments/CreateAccountFragment.kt | 7 ++++--- .../agorise/bitsybitshareswallet/models/FaucetAccount.java | 1 - app/src/main/res/layout/fragment_create_account.xml | 7 +++++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt index 3cc2730..467c7ed 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/CreateAccountFragment.kt @@ -1,7 +1,7 @@ package cy.agorise.bitsybitshareswallet.fragments import android.os.Bundle -import android.preference.PreferenceManager +import android.os.Handler import android.util.Log import android.view.LayoutInflater import android.view.View @@ -35,7 +35,6 @@ import cy.agorise.bitsybitshareswallet.network.ServiceGenerator import retrofit2.Call import retrofit2.Response import java.util.* -import kotlin.concurrent.timerTask class CreateAccountFragment : BaseAccountFragment() { @@ -231,7 +230,9 @@ class CreateAccountFragment : BaseAccountFragment() { override fun onResponse(call: Call, response: Response) { // The network call was a success and we got a response, obtain the info of the newly created account // with a delay to let the nodes update their information - Timer().schedule(timerTask { + val handler = Handler() + + handler.postDelayed({ getCreatedAccountInfo(response.body()) }, 4000) } diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetAccount.java b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetAccount.java index 40d3ef4..911a784 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetAccount.java +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/FaucetAccount.java @@ -4,7 +4,6 @@ package cy.agorise.bitsybitshareswallet.models; * Class used to deserialize a the "account" object contained in the faucet response to the * {@link cy.agorise.bitsybitshareswallet.network.FaucetService#registerPrivateAccount(FaucetRequest)} API call. */ - public class FaucetAccount { public String name; public String owner_key; diff --git a/app/src/main/res/layout/fragment_create_account.xml b/app/src/main/res/layout/fragment_create_account.xml index 0d74e3f..ff32d01 100644 --- a/app/src/main/res/layout/fragment_create_account.xml +++ b/app/src/main/res/layout/fragment_create_account.xml @@ -2,6 +2,7 @@ + android:hint="@string/text_field__6_digit_pin" + app:passwordToggleEnabled="true"> + android:hint="@string/text_field__confirm_pin" + app:passwordToggleEnabled="true"> Date: Wed, 9 Jan 2019 17:19:49 -0600 Subject: [PATCH 29/65] Force the app to start updating the account information just after it is imported/created. This wasn't happening automatically the first time the account was imported, the the user had to close and reopen the app for the transfers update to take place. The problem was that the account information was only fetched from the shared preferences when the app started, thus a method to force the fetch was introduced just after the user imports/creates his user account. --- .../activities/ConnectedActivity.kt | 29 ++++++++++++------- .../fragments/BaseAccountFragment.kt | 6 ++++ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt index 1e43ab6..c7f7c8e 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/activities/ConnectedActivity.kt @@ -94,10 +94,7 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val userId = PreferenceManager.getDefaultSharedPreferences(this) - .getString(Constants.KEY_CURRENT_ACCOUNT_ID, "") - if (userId != "") - mCurrentAccount = UserAccount(userId) + getUserAccount() mAssetRepository = AssetRepository(this) @@ -144,6 +141,17 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { .subscribe { handleIncomingMessage(it) } } + /** + * Obtains the userId from the shared preferences and creates a [UserAccount] instance. + * Created as a public function, so that it can be called from its Fragments. + */ + fun getUserAccount() { + val userId = PreferenceManager.getDefaultSharedPreferences(this) + .getString(Constants.KEY_CURRENT_ACCOUNT_ID, "") ?: "" + if (userId != "") + mCurrentAccount = UserAccount(userId) + } + private fun handleIncomingMessage(message: Any?) { if (message is JsonRpcResponse<*>) { @@ -200,7 +208,7 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { if (latestOpCount == 0L) { Log.d(TAG, "The node returned 0 total_ops for current account and may not have installed the history plugin. " + "\nAsk the NetworkService to remove the node from the list and connect to another one.") - mNetworkService!!.removeCurrentNodeAndReconnect() + mNetworkService?.removeCurrentNodeAndReconnect() } else if (storedOpCount == -1L) { // Initial case when the app starts storedOpCount = latestOpCount @@ -293,7 +301,7 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { } private fun updateBalances() { - if (mNetworkService!!.isConnected) { + if (mNetworkService?.isConnected == true) { val id = mNetworkService!!.sendMessage(GetAccountBalances(mCurrentAccount, ArrayList()), GetAccountBalances.REQUIRED_API) @@ -306,7 +314,7 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { */ private val mRequestMissingUserAccountsTask = object : Runnable { override fun run() { - if (mNetworkService!!.isConnected) { + if (mNetworkService?.isConnected == true) { val id = mNetworkService!!.sendMessage(GetAccounts(missingUserAccounts), GetAccounts.REQUIRED_API) responseMap[id] = RESPONSE_GET_ACCOUNTS @@ -321,7 +329,7 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { */ private val mRequestMissingAssetsTask = object : Runnable { override fun run() { - if (mNetworkService!!.isConnected) { + if (mNetworkService?.isConnected == true) { val id = mNetworkService!!.sendMessage(GetAssets(missingAssets), GetAssets.REQUIRED_API) responseMap[id] = RESPONSE_GET_ASSETS @@ -336,7 +344,7 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { */ private val mCheckMissingPaymentsTask = object : Runnable { override fun run() { - if (mNetworkService != null && mNetworkService!!.isConnected) { + if (mNetworkService?.isConnected == true) { if (mCurrentAccount != null) { val userAccounts = ArrayList() userAccounts.add(mCurrentAccount!!.objectId) @@ -359,7 +367,7 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { private val mRequestBlockMissingTimeTask = object : Runnable { override fun run() { - if (mNetworkService != null && mNetworkService!!.isConnected) { + if (mNetworkService?.isConnected == true) { val id = mNetworkService!!.sendMessage(GetBlockHeader(blockNumberWithMissingTime), GetBlockHeader.REQUIRED_API) @@ -389,6 +397,7 @@ abstract class ConnectedActivity : AppCompatActivity(), ServiceConnection { mHandler.removeCallbacks(mCheckMissingPaymentsTask) mHandler.removeCallbacks(mRequestMissingUserAccountsTask) mHandler.removeCallbacks(mRequestMissingAssetsTask) + mHandler.removeCallbacks(mRequestBlockMissingTimeTask) } override fun onResume() { diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt index b45f613..5a10ead 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/BaseAccountFragment.kt @@ -13,6 +13,8 @@ import cy.agorise.graphenej.BrainKey import cy.agorise.graphenej.PublicKey import cy.agorise.graphenej.models.AccountProperties import org.bitcoinj.core.ECKey +import cy.agorise.bitsybitshareswallet.activities.ConnectedActivity + abstract class BaseAccountFragment : ConnectedFragment() { @@ -72,6 +74,10 @@ abstract class BaseAccountFragment : ConnectedFragment() { } } + // Force [ConnectedActivity] to refresh the userId from the SharedPreferences, so that the app can immediately + // to fetch the account's transactions. + (activity as ConnectedActivity).getUserAccount() + // Send the user back to HomeFragment findNavController().navigate(R.id.home_action) } From 5075c59b7babb4eb75baa683fd8ca7e2b09c8936 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Wed, 9 Jan 2019 18:04:52 -0600 Subject: [PATCH 30/65] Remove border from FloatingActionButtons in HomeFragment and SendTransactionFragment. This was the blue border that appeared around the rounded buttons in the mentioned screens. --- app/build.gradle | 2 +- app/src/main/res/layout/fragment_home.xml | 3 +++ app/src/main/res/layout/fragment_send_transaction.xml | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index eafe733..be11cf8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -86,7 +86,7 @@ dependencies { implementation 'org.bitcoinj:bitcoinj-core:0.14.3' implementation 'com.moldedbits.r2d2:r2d2:1.0.1' implementation 'me.dm7.barcodescanner:zxing:1.9.8' - implementation 'com.afollestad.material-dialogs:core:2.0.0-rc3' + implementation 'com.afollestad.material-dialogs:core:2.0.0-rc7' // Android Debug Database debugImplementation 'com.amitshekhar.android:debug-db:1.0.4' diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index d26ae91..6356d06 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -42,6 +42,7 @@ app:fabSize="auto" app:fabCustomSize="120dp" app:maxImageSize="70dp" + app:borderWidth="0dp" android:backgroundTint="@color/colorReceive" android:src="@drawable/ic_receive" app:layout_constraintTop_toTopOf="parent" @@ -68,6 +69,7 @@ android:layout_height="wrap_content" app:fabSize="mini" android:src="@drawable/ic_camera" + app:borderWidth="0dp" android:backgroundTint="@color/colorSend" app:layout_constraintTop_toTopOf="@id/fabSendTransaction" app:layout_constraintBottom_toBottomOf="@id/fabSendTransaction" @@ -81,6 +83,7 @@ app:fabSize="auto" app:fabCustomSize="120dp" app:maxImageSize="70dp" + app:borderWidth="0dp" android:backgroundTint="@color/colorSend" android:src="@drawable/ic_send" app:layout_constraintTop_toTopOf="parent" diff --git a/app/src/main/res/layout/fragment_send_transaction.xml b/app/src/main/res/layout/fragment_send_transaction.xml index fcab76b..e0e8f58 100644 --- a/app/src/main/res/layout/fragment_send_transaction.xml +++ b/app/src/main/res/layout/fragment_send_transaction.xml @@ -153,6 +153,7 @@ app:fabCustomSize="32dp" app:maxImageSize="20dp" app:srcCompat="@drawable/ic_camera" + app:borderWidth="0dp" android:backgroundTint="@color/colorSend" app:layout_constraintStart_toEndOf="@id/cameraVerticalGuideline" app:layout_constraintTop_toBottomOf="@+id/tvScan"/> @@ -186,6 +187,7 @@ app:fabCustomSize="90dp" app:maxImageSize="70dp" app:srcCompat="@drawable/ic_arrow_forward" + app:borderWidth="0dp" app:layout_constraintEnd_toEndOf="@id/vSend" app:layout_constraintTop_toTopOf="@+id/vSend" /> From 5470ca15234c95df5c8f1594f3bb82f42b9a367f Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Wed, 9 Jan 2019 18:16:15 -0600 Subject: [PATCH 31/65] Chaged BrainKey modal in the Settings, it does not copu the BrainKey to the clipboard anymore, it just shows it so that the user writes it down. --- .../bitsybitshareswallet/fragments/SettingsFragment.kt | 10 +--------- app/src/main/res/values/strings.xml | 1 + 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SettingsFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SettingsFragment.kt index 5cd77c5..083515c 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SettingsFragment.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/SettingsFragment.kt @@ -1,7 +1,6 @@ package cy.agorise.bitsybitshareswallet.fragments import android.content.* -import android.content.Context.CLIPBOARD_SERVICE import android.os.Bundle import android.os.Handler import android.os.IBinder @@ -10,7 +9,6 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Toast import androidx.fragment.app.Fragment import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.customview.customView @@ -228,13 +226,7 @@ class SettingsFragment : Fragment(), ServiceConnection { message(text = brainKey.brainKey) customView(R.layout.dialog_copy_brainkey) cancelable(false) - positiveButton(android.R.string.copy) { - Toast.makeText(it.context, "Copied to clipboard", Toast.LENGTH_SHORT).show() - val clipboard = it.context.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText("label", brainKey.brainKey) - clipboard.primaryClip = clip - it.dismiss() - } + positiveButton(R.string.button__copied) { it.dismiss() } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 55833a4..d1f0b5c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -108,6 +108,7 @@ Write this down! Be sure you have 2 copies of this BrainKey in 2 secure locations in case of fire or loss. Security First! Anyone with access to your BrainKey can access the funds in your account! + Copied Bugs or Ideas? Telegram chat: http://t.me/Agorise\nEmail: Agorise@protonmail.ch\nOpen Source: From f62286747c81579dfb0de52144254a47ca3ad329 Mon Sep 17 00:00:00 2001 From: Severiano Jaramillo Date: Wed, 9 Jan 2019 20:39:42 -0600 Subject: [PATCH 32/65] Create DateFragmentPicker, which shows a dialog with a calendar where the user can select a date. This picker is used in TransactiondFragment's filter dialog to filter transactions by date. The picker looks nice in both day and night mode. --- .../fragments/FilterOptionsDialog.kt | 78 +++++++++--------- .../views/DatePickerFragment.kt | 79 +++++++++++++++++++ app/src/main/res/values/styles.xml | 2 +- 3 files changed, 120 insertions(+), 39 deletions(-) create mode 100644 app/src/main/java/cy/agorise/bitsybitshareswallet/views/DatePickerFragment.kt diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt index d7c3b94..73bfba2 100644 --- a/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/FilterOptionsDialog.kt @@ -6,11 +6,13 @@ import android.content.res.Resources import android.os.Bundle import android.os.Handler import android.os.Message +import android.view.View import androidx.fragment.app.DialogFragment import android.widget.* import androidx.appcompat.app.AlertDialog import androidx.fragment.app.Fragment import cy.agorise.bitsybitshareswallet.R +import cy.agorise.bitsybitshareswallet.views.DatePickerFragment import java.text.SimpleDateFormat import java.util.* import kotlin.ClassCastException @@ -39,7 +41,7 @@ class FilterOptionsDialog : DialogFragment() { private var mCallback: OnFilterOptionsSelectedListener? = null - private var mDatePickerHandler: DatePickerHandler? = null + private lateinit var mDatePickerHandler: DatePickerHandler private var dateFormat: SimpleDateFormat = SimpleDateFormat("d/MMM/yyyy", Resources.getSystem().configuration.locale) @@ -175,21 +177,21 @@ class FilterOptionsDialog : DialogFragment() { // Initialize Date range cbDateRange = view.findViewById(R.id.cbDateRange) -// llDateRange = view.findViewById(R.id.llDateRange) -// cbDateRange.setOnCheckedChangeListener { _, isChecked -> -// llDateRange.visibility = if(isChecked) View.GONE else View.VISIBLE } + llDateRange = view.findViewById(R.id.llDateRange) + cbDateRange.setOnCheckedChangeListener { _, isChecked -> + llDateRange.visibility = if(isChecked) View.GONE else View.VISIBLE } cbDateRange.isChecked = arguments!!.getBoolean(KEY_FILTER_DATE_RANGE_ALL, true) -// -// tvStartDate = view.findViewById(R.id.tvStartDate) -// tvEndDate = view.findViewById(R.id.tvEndDate) -// -// startDate = arguments!!.getLong(KEY_FILTER_START_DATE, 0) -// tvStartDate.setOnClickListener(mDateClickListener) -// -// endDate = arguments!!.getLong(KEY_FILTER_END_DATE, 0) -// tvEndDate.setOnClickListener(mDateClickListener) -// -// updateDateTextViews() + + tvStartDate = view.findViewById(R.id.tvStartDate) + tvEndDate = view.findViewById(R.id.tvEndDate) + + startDate = arguments!!.getLong(KEY_FILTER_START_DATE, 0) + tvStartDate.setOnClickListener(mDateClickListener) + + endDate = arguments!!.getLong(KEY_FILTER_END_DATE, 0) + tvEndDate.setOnClickListener(mDateClickListener) + + updateDateTextViews() // Initialize Cryptocurrency cbCryptocurrency = view.findViewById(R.id.cbCryptocurrency) @@ -257,29 +259,29 @@ class FilterOptionsDialog : DialogFragment() { // sCryptocurrency.setSelection(index) // } -// private val mDateClickListener = View.OnClickListener { v -> -// val calendar = Calendar.getInstance() -// -// // Variable used to select that date on the calendar -// var currentTime = calendar.timeInMillis -// var maxTime = currentTime -// -// var which = -1 -// if (v.id == R.id.tvStartDate) { -// which = START_DATE_PICKER -// currentTime = startDate -// calendar.timeInMillis = endDate -// calendar.add(Calendar.MONTH, -1) -// maxTime = calendar.timeInMillis -// } else if (v.id == R.id.tvEndDate) { -// which = END_DATE_PICKER -// currentTime = endDate -// } -// -// val datePickerFragment = DatePickerFragment.newInstance(which, currentTime, -// maxTime, mDatePickerHandler) -// datePickerFragment.show(activity!!.supportFragmentManager, "date-picker") -// } + private val mDateClickListener = View.OnClickListener { v -> + val calendar = Calendar.getInstance() + + // Variable used to select that date on the calendar + var currentTime = calendar.timeInMillis + var maxTime = currentTime + + var which = -1 + if (v.id == R.id.tvStartDate) { + which = START_DATE_PICKER + currentTime = startDate + calendar.timeInMillis = endDate + calendar.add(Calendar.MONTH, -1) + maxTime = calendar.timeInMillis + } else if (v.id == R.id.tvEndDate) { + which = END_DATE_PICKER + currentTime = endDate + } + + val datePickerFragment = DatePickerFragment.newInstance(which, currentTime, + maxTime, mDatePickerHandler) + datePickerFragment.show(activity!!.supportFragmentManager, "date-picker") + } private fun validateFields() { val filterTransactionsDirection = when { diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/views/DatePickerFragment.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/views/DatePickerFragment.kt new file mode 100644 index 0000000..312d3af --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/views/DatePickerFragment.kt @@ -0,0 +1,79 @@ +package cy.agorise.bitsybitshareswallet.views + +import android.app.DatePickerDialog +import android.app.Dialog +import android.os.Bundle +import android.os.Message +import android.widget.DatePicker +import androidx.fragment.app.DialogFragment +import cy.agorise.bitsybitshareswallet.fragments.FilterOptionsDialog +import java.util.* + +class DatePickerFragment : DialogFragment(), DatePickerDialog.OnDateSetListener { + + companion object { + const val TAG = "DatePickerFragment" + + const val KEY_WHICH = "key_which" + const val KEY_CURRENT = "key_current" + const val KEY_MAX = "key_max" + + fun newInstance( + which: Int, currentTime: Long, maxTime: Long, + handler: FilterOptionsDialog.DatePickerHandler + ): DatePickerFragment { + val f = DatePickerFragment() + val bundle = Bundle() + bundle.putInt(KEY_WHICH, which) + bundle.putLong(KEY_CURRENT, currentTime) + bundle.putLong(KEY_MAX, maxTime) + f.arguments = bundle + f.setHandler(handler) + return f + } + } + + private var which: Int = 0 + private var mHandler: FilterOptionsDialog.DatePickerHandler? = null + + fun setHandler(handler: FilterOptionsDialog.DatePickerHandler) { + mHandler = handler + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + which = arguments!!.getInt(KEY_WHICH) + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val currentTime = arguments!!.getLong(KEY_CURRENT) + val maxTime = arguments!!.getLong(KEY_MAX) + + // Use the current date as the default date in the picker + val calendar = Calendar.getInstance() + calendar.timeInMillis = currentTime + + val year = calendar.get(Calendar.YEAR) + val month = calendar.get(Calendar.MONTH) + val day = calendar.get(Calendar.DAY_OF_MONTH) + + // Create a new instance of DatePickerDialog and return it + val datePicker = DatePickerDialog(activity!!, this, year, month, day) + + // Set maximum date allowed to today + datePicker.datePicker.maxDate = maxTime + + return datePicker + } + + override fun onDateSet(view: DatePicker, year: Int, month: Int, day: Int) { + val msg = Message.obtain() + msg.arg1 = which + val calendar = GregorianCalendar() + calendar.set(year, month, day) + val bundle = Bundle() + bundle.putLong(FilterOptionsDialog.KEY_TIMESTAMP, calendar.time.time) + msg.data = bundle + mHandler!!.sendMessage(msg) + } +} \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index a6268bc..115e364 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -17,7 +17,7 @@