diff --git a/.travis.yml b/.travis.yml index 3a953a2e7b..3d28a5cd76 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,8 @@ language: java before_install: - echo "MAVEN_OPTS='-Xmx2048M -Xss128M -XX:+CMSClassUnloadingEnabled -XX:+UseG1GC -XX:-UseGCOverheadLimit'" > ~/.mavenrc -install: travis_wait 60 mvn -q test -fae +install: skip +script: travis_wait 60 mvn -q test -fae sudo: required diff --git a/activejdbc/pom.xml b/activejdbc/pom.xml new file mode 100644 index 0000000000..7a49d37411 --- /dev/null +++ b/activejdbc/pom.xml @@ -0,0 +1,129 @@ + + 4.0.0 + com.baeldung + activejdbc + 1.0-SNAPSHOT + jar + activejdbc + http://maven.apache.org + + UTF-8 + 1.4.13 + development.test,development + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.0 + + 1.8 + 1.8 + UTF-8 + + + + org.javalite + activejdbc-instrumentation + ${activejdbc.version} + + + process-classes + + instrument + + + + + + org.javalite + db-migrator-maven-plugin + ${activejdbc.version} + + ${project.basedir}/src/main/resources/database.properties + ${environments} + + + + mysql + mysql-connector-java + 5.1.34 + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.18.1 + + brief + true + false + + **/*Spec*.java + **/*Test*.java + + + **/helpers/* + **/*$* + + + + + + + + junit + junit + 4.12 + test + + + org.javalite + activejdbc + ${activejdbc.version} + + + opensymphony + oscache + + + + + mysql + mysql-connector-java + 5.1.34 + + + org.slf4j + slf4j-simple + 1.7.9 + + + + + snapshots1 + JavaLite Snapshots1 + http://repo.javalite.io/ + + true + always + warn + + + + + + snapshots2 + JavaLite Snapshots2 + http://repo.javalite.io/ + + true + always + warn + + + + diff --git a/activejdbc/src/main/java/com/baeldung/ActiveJDBCApp.java b/activejdbc/src/main/java/com/baeldung/ActiveJDBCApp.java new file mode 100644 index 0000000000..8906d3e759 --- /dev/null +++ b/activejdbc/src/main/java/com/baeldung/ActiveJDBCApp.java @@ -0,0 +1,61 @@ +package com.baeldung; + + +import com.baeldung.model.Employee; +import com.baeldung.model.Role; +import org.javalite.activejdbc.Base; +import org.javalite.activejdbc.LazyList; +import org.javalite.activejdbc.Model; + +public class ActiveJDBCApp +{ + public static void main( String[] args ) + { + try { + Base.open(); + ActiveJDBCApp app = new ActiveJDBCApp(); + app.create(); + app.update(); + app.delete(); + app.deleteCascade(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + Base.close(); + } + } + + protected void create() { + Employee employee = new Employee("Hugo","C","M","BN"); + employee.saveIt(); + employee.add(new Role("Java Developer","BN")); + LazyList all = Employee.findAll(); + System.out.println(all.size()); + } + + protected void update() { + Employee employee = Employee.findFirst("first_name = ?","Hugo"); + employee.set("last_namea","Choi").saveIt(); + employee = Employee.findFirst("last_name = ?","Choi"); + System.out.println(employee.getString("first_name") + " " + employee.getString("last_name")); + } + + protected void delete() { + Employee employee = Employee.findFirst("first_name = ?","Hugo"); + employee.delete(); + employee = Employee.findFirst("last_name = ?","Choi"); + if(null == employee){ + System.out.println("No such Employee found!"); + } + } + + protected void deleteCascade() { + create(); + Employee employee = Employee.findFirst("first_name = ?","Hugo"); + employee.deleteCascade(); + employee = Employee.findFirst("last_name = ?","C"); + if(null == employee){ + System.out.println("No such Employee found!"); + } + } +} diff --git a/activejdbc/src/main/java/com/baeldung/model/Employee.java b/activejdbc/src/main/java/com/baeldung/model/Employee.java new file mode 100644 index 0000000000..b7fa8aaf1f --- /dev/null +++ b/activejdbc/src/main/java/com/baeldung/model/Employee.java @@ -0,0 +1,19 @@ +package com.baeldung.model; + + +import org.javalite.activejdbc.Model; + +public class Employee extends Model { + + public Employee(){ + + } + + public Employee(String firstName, String lastName, String gender, String createdBy) { + set("first_name1",firstName); + set("last_name",lastName); + set("gender",gender); + set("created_by",createdBy); + } + +} diff --git a/activejdbc/src/main/java/com/baeldung/model/Role.java b/activejdbc/src/main/java/com/baeldung/model/Role.java new file mode 100644 index 0000000000..3f425dbe6b --- /dev/null +++ b/activejdbc/src/main/java/com/baeldung/model/Role.java @@ -0,0 +1,18 @@ +package com.baeldung.model; + + +import org.javalite.activejdbc.Model; +import org.javalite.activejdbc.annotations.Table; + +@Table("EMP_ROLES") +public class Role extends Model { + + public Role(){ + + } + + public Role(String role,String createdBy){ + set("role_name",role); + set("created_by",createdBy); + } +} diff --git a/activejdbc/src/main/migration/_create_tables.sql b/activejdbc/src/main/migration/_create_tables.sql new file mode 100644 index 0000000000..19fc1e72d7 --- /dev/null +++ b/activejdbc/src/main/migration/_create_tables.sql @@ -0,0 +1,25 @@ +# noinspection SqlNoDataSourceInspectionForFile + +create table organisation.employees +( + id int not null auto_increment + primary key, + first_name varchar(100) not null, + last_name varchar(100) not null, + gender varchar(1) not null, + created_at datetime not null, + updated_at datetime null, + created_by varchar(100) not null, + updated_by varchar(100) null +)ENGINE = InnoDB DEFAULT CHARSET = utf8; + +create table organisation.emp_roles +( + id int not null auto_increment primary key, + employee_id int not null, + role_name varchar(100) not null, + created_at datetime not null, + updated_at datetime null, + created_by varchar(100) not null, + updated_by varchar(100) null +)ENGINE = InnoDB DEFAULT CHARSET = utf8; diff --git a/activejdbc/src/main/resources/database.properties b/activejdbc/src/main/resources/database.properties new file mode 100644 index 0000000000..7e665fe8a1 --- /dev/null +++ b/activejdbc/src/main/resources/database.properties @@ -0,0 +1,10 @@ +development.driver=com.mysql.jdbc.Driver +development.username=root +development.password=123456 +development.url=jdbc:mysql://localhost/organisation + + +development.test.driver=com.mysql.jdbc.Driver +development.test.username=root +development.test.password=123456 +development.test.url=jdbc:mysql://localhost/organisation_test \ No newline at end of file diff --git a/activejdbc/src/test/java/com/baeldung/ActiveJDBCAppTest.java b/activejdbc/src/test/java/com/baeldung/ActiveJDBCAppTest.java new file mode 100644 index 0000000000..316dc34712 --- /dev/null +++ b/activejdbc/src/test/java/com/baeldung/ActiveJDBCAppTest.java @@ -0,0 +1,51 @@ +package com.baeldung; + +import com.baeldung.model.Employee; +import com.baeldung.model.Role; +import org.javalite.activejdbc.test.DBSpec; +import org.junit.Test; + +import java.util.List; + +public class ActiveJDBCAppTest extends DBSpec +{ + @Test + public void ifEmployeeCreated_thenIsValid() { + Employee employee = new Employee("B", "N", "M", "BN"); + the(employee).shouldBe("valid"); + } + + @Test + public void ifEmployeeCreatedWithRoles_thenShouldPersist() { + Employee employee = new Employee("B", "N", "M", "BN"); + employee.saveIt(); + employee.add(new Role("Java Developer","BN")); + employee.add(new Role("Lead Java Developer","BN")); + a(Role.count()).shouldBeEqual(2); + List roles = employee.getAll(Role.class).orderBy("created_at"); + the(roles.get(0).getRoleName()).shouldBeEqual("Java Developer"); + the(roles.get(1).getRoleName()).shouldBeEqual("Lead Java Developer"); + } + + @Test + public void ifEmployeeCreatedWithRoles_whenNameUpdated_thenShouldShowNewName() { + Employee employee = new Employee("Binesh", "N", "M", "BN"); + employee.saveIt(); + employee.add(new Role("Java Developer","BN")); + employee.add(new Role("Lead Java Developer","BN")); + employee = Employee.findFirst("first_name = ?", "Binesh"); + employee.set("last_name","Narayanan").saveIt(); + Employee updated = Employee.findFirst("first_name = ?", "Binesh"); + the(updated.getLastName()).shouldBeEqual("Narayanan"); + } + + @Test + public void ifEmployeeCreatedWithRoles_whenDeleted_thenShouldNotBeFound() { + Employee employee = new Employee("Binesh", "N", "M", "BN"); + employee.saveIt(); + employee.add(new Role("Java Developer","BN")); + employee.delete(); + employee = Employee.findFirst("first_name = ?", "Binesh"); + the(employee).shouldBeNull(); + } +} diff --git a/algorithms/README.md b/algorithms/README.md index 5f101c296c..3401b6d935 100644 --- a/algorithms/README.md +++ b/algorithms/README.md @@ -15,3 +15,4 @@ - [Introduction to JGraphT](http://www.baeldung.com/jgrapht) - [Introduction to Minimax Algorithm](http://www.baeldung.com/java-minimax-algorithm) - [How to Calculate Levenshtein Distance in Java?](http://www.baeldung.com/java-levenshtein-distance) +- [How to Find the Kth Largest Element in Java](http://www.baeldung.com/java-kth-largest-element) diff --git a/algorithms/pom.xml b/algorithms/pom.xml index e972f39494..2eb8cd42b6 100644 --- a/algorithms/pom.xml +++ b/algorithms/pom.xml @@ -39,6 +39,12 @@ jgrapht-core 1.0.1 + + org.assertj + assertj-core + 3.9.0 + test + diff --git a/algorithms/src/main/java/com/baeldung/algorithms/kthlargest/FindKthLargest.java b/algorithms/src/main/java/com/baeldung/algorithms/kthlargest/FindKthLargest.java new file mode 100644 index 0000000000..822abdae02 --- /dev/null +++ b/algorithms/src/main/java/com/baeldung/algorithms/kthlargest/FindKthLargest.java @@ -0,0 +1,111 @@ +package com.baeldung.algorithms.kthlargest; + +import java.util.Arrays; +import java.util.Collections; +import java.util.stream.IntStream; + +public class FindKthLargest { + + public int findKthLargestBySorting(Integer[] arr, int k) { + Arrays.sort(arr); + int targetIndex = arr.length - k; + return arr[targetIndex]; + } + + public int findKthLargestBySortingDesc(Integer[] arr, int k) { + Arrays.sort(arr, Collections.reverseOrder()); + return arr[k - 1]; + } + + public int findKthElementByQuickSelect(Integer[] arr, int left, int right, int k) { + if (k >= 0 && k <= right - left + 1) { + int pos = partition(arr, left, right); + if (pos - left == k) { + return arr[pos]; + } + if (pos - left > k) { + return findKthElementByQuickSelect(arr, left, pos - 1, k); + } + return findKthElementByQuickSelect(arr, pos + 1, right, k - pos + left - 1); + } + return 0; + } + + public int findKthElementByQuickSelectWithIterativePartition(Integer[] arr, int left, int right, int k) { + if (k >= 0 && k <= right - left + 1) { + int pos = partitionIterative(arr, left, right); + if (pos - left == k) { + return arr[pos]; + } + if (pos - left > k) { + return findKthElementByQuickSelectWithIterativePartition(arr, left, pos - 1, k); + } + return findKthElementByQuickSelectWithIterativePartition(arr, pos + 1, right, k - pos + left - 1); + } + return 0; + } + + private int partition(Integer[] arr, int left, int right) { + int pivot = arr[right]; + Integer[] leftArr; + Integer[] rightArr; + + leftArr = IntStream.range(left, right) + .filter(i -> arr[i] < pivot) + .map(i -> arr[i]) + .boxed() + .toArray(Integer[]::new); + + rightArr = IntStream.range(left, right) + .filter(i -> arr[i] > pivot) + .map(i -> arr[i]) + .boxed() + .toArray(Integer[]::new); + + int leftArraySize = leftArr.length; + System.arraycopy(leftArr, 0, arr, left, leftArraySize); + arr[leftArraySize + left] = pivot; + System.arraycopy(rightArr, 0, arr, left + leftArraySize + 1, rightArr.length); + + return left + leftArraySize; + } + + private int partitionIterative(Integer[] arr, int left, int right) { + int pivot = arr[right], i = left; + for (int j = left; j <= right - 1; j++) { + if (arr[j] <= pivot) { + swap(arr, i, j); + i++; + } + } + swap(arr, i, right); + return i; + } + + public int findKthElementByRandomizedQuickSelect(Integer[] arr, int left, int right, int k) { + if (k >= 0 && k <= right - left + 1) { + int pos = randomPartition(arr, left, right); + if (pos - left == k) { + return arr[pos]; + } + if (pos - left > k) { + return findKthElementByRandomizedQuickSelect(arr, left, pos - 1, k); + } + return findKthElementByRandomizedQuickSelect(arr, pos + 1, right, k - pos + left - 1); + } + return 0; + } + + private int randomPartition(Integer arr[], int left, int right) { + int n = right - left + 1; + int pivot = (int) (Math.random()) % n; + swap(arr, left + pivot, right); + return partition(arr, left, right); + } + + private void swap(Integer[] arr, int n1, int n2) { + int temp = arr[n2]; + arr[n2] = arr[n1]; + arr[n1] = temp; + } +} diff --git a/algorithms/src/test/java/com/baeldung/algorithms/kthlargest/FindKthLargestUnitTest.java b/algorithms/src/test/java/com/baeldung/algorithms/kthlargest/FindKthLargestUnitTest.java new file mode 100644 index 0000000000..6fbb7c163a --- /dev/null +++ b/algorithms/src/test/java/com/baeldung/algorithms/kthlargest/FindKthLargestUnitTest.java @@ -0,0 +1,57 @@ +package com.baeldung.algorithms.kthlargest; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.Before; +import org.junit.Test; + +public class FindKthLargestUnitTest { + + private FindKthLargest findKthLargest; + private Integer[] arr = { 3, 7, 1, 2, 8, 10, 4, 5, 6, 9 }; + + @Before + public void setup() { + findKthLargest = new FindKthLargest(); + } + + @Test + public void givenIntArray_whenFindKthLargestBySorting_thenGetResult() { + int k = 3; + assertThat(findKthLargest.findKthLargestBySorting(arr, k)).isEqualTo(8); + } + + @Test + public void givenIntArray_whenFindKthLargestBySortingDesc_thenGetResult() { + int k = 3; + assertThat(findKthLargest.findKthLargestBySortingDesc(arr, k)).isEqualTo(8); + } + + @Test + public void givenIntArray_whenFindKthLargestByQuickSelect_thenGetResult() { + int k = 3; + int kthLargest = arr.length - k; + assertThat(findKthLargest.findKthElementByQuickSelect(arr, 0, arr.length - 1, kthLargest)).isEqualTo(8); + } + + @Test + public void givenIntArray_whenFindKthElementByQuickSelectIterative_thenGetResult() { + int k = 3; + int kthLargest = arr.length - k; + assertThat(findKthLargest.findKthElementByQuickSelectWithIterativePartition(arr, 0, arr.length - 1, kthLargest)).isEqualTo(8); + } + + @Test + public void givenIntArray_whenFindKthSmallestByQuickSelect_thenGetResult() { + int k = 3; + assertThat(findKthLargest.findKthElementByQuickSelect(arr, 0, arr.length - 1, k - 1)).isEqualTo(3); + } + + @Test + public void givenIntArray_whenFindKthLargestByRandomizedQuickSelect_thenGetResult() { + int k = 3; + int kthLargest = arr.length - k; + assertThat(findKthLargest.findKthElementByRandomizedQuickSelect(arr, 0, arr.length - 1, kthLargest)).isEqualTo(8); + } + +} diff --git a/animal-sniffer-mvn-plugin/pom.xml b/animal-sniffer-mvn-plugin/pom.xml index 3190950d9b..2356c7d5a2 100644 --- a/animal-sniffer-mvn-plugin/pom.xml +++ b/animal-sniffer-mvn-plugin/pom.xml @@ -9,7 +9,7 @@ http://maven.apache.org - 3.6.0 + 3.7.0 @@ -26,8 +26,8 @@ maven-compiler-plugin 3.7.0 - 1.6 - 1.6 + 1.8 + 1.8 diff --git a/annotations/annotation-processing/pom.xml b/annotations/annotation-processing/pom.xml index df6f9d44b7..b5219d57ba 100644 --- a/annotations/annotation-processing/pom.xml +++ b/annotations/annotation-processing/pom.xml @@ -15,7 +15,7 @@ 1.0-rc2 - 3.6.0 + 3.7.0 diff --git a/apache-poi/README.md b/apache-poi/README.md index 10fe8ba2e7..c052bc9bf6 100644 --- a/apache-poi/README.md +++ b/apache-poi/README.md @@ -1,3 +1,4 @@ ### Relevant Articles: - [Microsoft Word Processing in Java with Apache POI](http://www.baeldung.com/java-microsoft-word-with-apache-poi) - [Working with Microsoft Excel in Java](http://www.baeldung.com/java-microsoft-excel) +- [Creating a MS PowerPoint Presentation in Java](https://github.com/eugenp/tutorials/tree/master/apache-poi) diff --git a/apache-shiro/pom.xml b/apache-shiro/pom.xml index 711ddb5cee..2c5ef86837 100644 --- a/apache-shiro/pom.xml +++ b/apache-shiro/pom.xml @@ -65,7 +65,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.6.2 + 3.7.0 1.8 1.8 diff --git a/camel-api/pom.xml b/camel-api/pom.xml index 6db9f9bfd1..c342a73150 100644 --- a/camel-api/pom.xml +++ b/camel-api/pom.xml @@ -12,7 +12,7 @@ UTF-8 - 3.6.0 + 3.7.0 2.19.1 2.19.1 1.5.4.RELEASE diff --git a/cas/cas-secured-app/README.md b/cas/cas-secured-app/README.md new file mode 100644 index 0000000000..01c5f91988 --- /dev/null +++ b/cas/cas-secured-app/README.md @@ -0,0 +1,2 @@ +## Relevant articles: +- [CAS SSO With Spring Security](http://www.baeldung.com/spring-security-cas-sso) diff --git a/cas/cas-secured-app/pom.xml b/cas/cas-secured-app/pom.xml index 543354e8b3..d52597412e 100644 --- a/cas/cas-secured-app/pom.xml +++ b/cas/cas-secured-app/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 2.0.0.BUILD-SNAPSHOT + 2.0.0.M7 @@ -87,14 +87,6 @@ - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - spring-milestones Spring Milestones @@ -106,14 +98,6 @@ - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - spring-milestones Spring Milestones diff --git a/cas/cas-server/pom.xml b/cas/cas-server/pom.xml index e8625b48f7..9cae9c487b 100644 --- a/cas/cas-server/pom.xml +++ b/cas/cas-server/pom.xml @@ -52,7 +52,11 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + 3.7.0 + + 1.8 + 1.8 + cas diff --git a/core-java-8/README.md b/core-java-8/README.md index 540a32b0ba..9260e3d447 100644 --- a/core-java-8/README.md +++ b/core-java-8/README.md @@ -32,3 +32,11 @@ - [“Stream has already been operated upon or closed” Exception in Java](http://www.baeldung.com/java-stream-operated-upon-or-closed-exception) - [Display All Time Zones With GMT And UTC in Java](http://www.baeldung.com/java-time-zones) - [Copy a File with Java](http://www.baeldung.com/java-copy-file) +- [Generating Prime Numbers in Java](http://www.baeldung.com/java-generate-prime-numbers) +- [Static and Default Methods in Interfaces in Java](http://www.baeldung.com/java-static-default-methods) +- [Iterable to Stream in Java](http://www.baeldung.com/java-iterable-to-stream) +- [Converting String to Stream of chars](http://www.baeldung.com/java-string-to-stream) +- [How to Iterate Over a Stream With Indices](http://www.baeldung.com/java-stream-indices) +- [Efficient Word Frequency Calculator in Java](http://www.baeldung.com/java-word-frequency) +- [Primitive Type Streams in Java 8](http://www.baeldung.com/java-8-primitive-streams) +- [Fail-Safe Iterator vs Fail-Fast Iterator](http://www.baeldung.com/java-fail-safe-vs-fail-fast-iterator) diff --git a/core-java-8/pom.xml b/core-java-8/pom.xml index 17d330b3b8..75728ecd13 100644 --- a/core-java-8/pom.xml +++ b/core-java-8/pom.xml @@ -101,6 +101,23 @@ 1.19 + + com.codepoetics + protonpack + ${protonpack.version} + + + + io.vavr + vavr + ${vavr.version} + + + + one.util + streamex + ${streamex.version} + @@ -267,6 +284,9 @@ 4.01 1.10 1.16.12 + 0.9.0 + 1.13 + 0.6.5 3.6.1 diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java b/core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java index 31b45aab84..a842be8153 100644 --- a/core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java +++ b/core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java @@ -2,7 +2,6 @@ package com.baeldung.datetime; import java.time.Duration; import java.time.LocalTime; -import java.time.Period; public class UseDuration { diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java new file mode 100644 index 0000000000..438ecad140 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java @@ -0,0 +1,18 @@ +package com.baeldung.defaultstaticinterfacemethods.application; + +import com.baeldung.defaultstaticinterfacemethods.model.Car; +import com.baeldung.defaultstaticinterfacemethods.model.Vehicle; + +public class Application { + + public static void main(String[] args) { + + Vehicle car = new Car("BMW"); + System.out.println(car.getBrand()); + System.out.println(car.speedUp()); + System.out.println(car.slowDown()); + System.out.println(car.turnAlarmOn()); + System.out.println(car.turnAlarmOff()); + System.out.println(Vehicle.getHorsePower(2500, 480)); + } +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java new file mode 100644 index 0000000000..52ec2c3c15 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java @@ -0,0 +1,12 @@ +package com.baeldung.defaultstaticinterfacemethods.model; + +public interface Alarm { + + default String turnAlarmOn() { + return "Turning the alarm on."; + } + + default String turnAlarmOff() { + return "Turning the alarm off."; + } +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java new file mode 100644 index 0000000000..6ec6507e59 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java @@ -0,0 +1,25 @@ +package com.baeldung.defaultstaticinterfacemethods.model; + +public class Car implements Vehicle { + + private final String brand; + + public Car(String brand) { + this.brand = brand; + } + + @Override + public String getBrand() { + return brand; + } + + @Override + public String speedUp() { + return "The car is speeding up."; + } + + @Override + public String slowDown() { + return "The car is slowing down."; + } +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java new file mode 100644 index 0000000000..b1de93059a --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java @@ -0,0 +1,25 @@ +package com.baeldung.defaultstaticinterfacemethods.model; + +public class Motorbike implements Vehicle { + + private final String brand; + + public Motorbike(String brand) { + this.brand = brand; + } + + @Override + public String getBrand() { + return brand; + } + + @Override + public String speedUp() { + return "The motorbike is speeding up."; + } + + @Override + public String slowDown() { + return "The motorbike is slowing down."; + } +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java new file mode 100644 index 0000000000..abf329fafd --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java @@ -0,0 +1,35 @@ +package com.baeldung.defaultstaticinterfacemethods.model; + +public class MultiAlarmCar implements Vehicle, Alarm { + + private final String brand; + + public MultiAlarmCar(String brand) { + this.brand = brand; + } + + @Override + public String getBrand() { + return brand; + } + + @Override + public String speedUp() { + return "The motorbike is speeding up."; + } + + @Override + public String slowDown() { + return "The mootorbike is slowing down."; + } + + @Override + public String turnAlarmOn() { + return Vehicle.super.turnAlarmOn() + " " + Alarm.super.turnAlarmOn(); + } + + @Override + public String turnAlarmOff() { + return Vehicle.super.turnAlarmOff() + " " + Alarm.super.turnAlarmOff(); + } +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java new file mode 100644 index 0000000000..b0bdd63c2c --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java @@ -0,0 +1,22 @@ +package com.baeldung.defaultstaticinterfacemethods.model; + +public interface Vehicle { + + String getBrand(); + + String speedUp(); + + String slowDown(); + + default String turnAlarmOn() { + return "Turning the vehice alarm on."; + } + + default String turnAlarmOff() { + return "Turning the vehicle alarm off."; + } + + static int getHorsePower(int rpm, int torque) { + return (rpm * torque) / 5252; + } +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/iterators/Iterators.java b/core-java-8/src/main/java/com/baeldung/iterators/Iterators.java new file mode 100644 index 0000000000..5e7cfdb54f --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/iterators/Iterators.java @@ -0,0 +1,80 @@ +package com.baeldung.iterators; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.concurrent.ConcurrentHashMap; + +/** + * Source code https://github.com/eugenp/tutorials + * + * @author Santosh Thakur + */ + +public class Iterators { + + public static int failFast1() { + ArrayList numbers = new ArrayList<>(); + + numbers.add(10); + numbers.add(20); + numbers.add(30); + numbers.add(40); + + Iterator iterator = numbers.iterator(); + while (iterator.hasNext()) { + Integer number = iterator.next(); + numbers.add(50); + } + + return numbers.size(); + } + + public static int failFast2() { + ArrayList numbers = new ArrayList<>(); + numbers.add(10); + numbers.add(20); + numbers.add(30); + numbers.add(40); + + Iterator iterator = numbers.iterator(); + while (iterator.hasNext()) { + if (iterator.next() == 30) { + // will not throw Exception + iterator.remove(); + } + } + + System.out.println("using iterator's remove method = " + numbers); + + iterator = numbers.iterator(); + while (iterator.hasNext()) { + if (iterator.next() == 40) { + // will throw Exception on + // next call of next() method + numbers.remove(2); + } + } + + return numbers.size(); + } + + public static int failSafe1() { + ConcurrentHashMap map = new ConcurrentHashMap<>(); + + map.put("First", 10); + map.put("Second", 20); + map.put("Third", 30); + map.put("Fourth", 40); + + Iterator iterator = map.keySet() + .iterator(); + + while (iterator.hasNext()) { + String key = iterator.next(); + map.put("Fifth", 50); + } + + return map.size(); + } + +} diff --git a/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Article.java b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Article.java new file mode 100644 index 0000000000..402ec6ec5f --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Article.java @@ -0,0 +1,44 @@ +package com.baeldung.spliteratorAPI; + +import java.util.List; + +public class Article { + private List listOfAuthors; + private int id; + private String name; + + public Article(String name) { + this.name = name; + } + + public Article(List listOfAuthors, int id) { + super(); + this.listOfAuthors = listOfAuthors; + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public List getListOfAuthors() { + return listOfAuthors; + } + + public void setListOfAuthors(List listOfAuthors) { + this.listOfAuthors = listOfAuthors; + } + +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Author.java b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Author.java new file mode 100644 index 0000000000..40c381f4a6 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Author.java @@ -0,0 +1,33 @@ +package com.baeldung.spliteratorAPI; + +public class Author { + private String name; + private int relatedArticleId; + + public Author(String name, int relatedArticleId) { + this.name = name; + this.relatedArticleId = relatedArticleId; + } + + public int getRelatedArticleId() { + return relatedArticleId; + } + + public void setRelatedArticleId(int relatedArticleId) { + this.relatedArticleId = relatedArticleId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "[name: " + name + ", relatedId: " + relatedArticleId + "]"; + } +} + diff --git a/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Executor.java b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Executor.java new file mode 100644 index 0000000000..024d5dabdb --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Executor.java @@ -0,0 +1,19 @@ +package com.baeldung.spliteratorAPI; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class Executor { + + public static int countAutors(Stream stream) { + RelatedAuthorCounter wordCounter = stream.reduce(new RelatedAuthorCounter(0, true), + RelatedAuthorCounter::accumulate, RelatedAuthorCounter::combine); + return wordCounter.getCounter(); + } + + public static List
generateElements() { + return Stream.generate(() -> new Article("Java")).limit(35000).collect(Collectors.toList()); + } + +} \ No newline at end of file diff --git a/core-java-8/src/main/java/com/baeldung/spliteratorAPI/RelatedAuthorCounter.java b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/RelatedAuthorCounter.java new file mode 100644 index 0000000000..b7120b3af2 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/RelatedAuthorCounter.java @@ -0,0 +1,27 @@ +package com.baeldung.spliteratorAPI; + +public class RelatedAuthorCounter { + private final int counter; + private final boolean isRelated; + + public RelatedAuthorCounter(int counter, boolean isRelated) { + this.counter = counter; + this.isRelated = isRelated; + } + + public RelatedAuthorCounter accumulate(Author author) { + if (author.getRelatedArticleId() == 0) { + return isRelated ? this : new RelatedAuthorCounter(counter, true); + } else { + return isRelated ? new RelatedAuthorCounter(counter + 1, false) : this; + } + } + + public RelatedAuthorCounter combine(RelatedAuthorCounter RelatedAuthorCounter) { + return new RelatedAuthorCounter(counter + RelatedAuthorCounter.counter, RelatedAuthorCounter.isRelated); + } + + public int getCounter() { + return counter; + } +} diff --git a/core-java-8/src/main/java/com/baeldung/spliteratorAPI/RelatedAuthorSpliterator.java b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/RelatedAuthorSpliterator.java new file mode 100644 index 0000000000..0a7190964e --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/RelatedAuthorSpliterator.java @@ -0,0 +1,49 @@ +package com.baeldung.spliteratorAPI; + +import java.util.List; +import java.util.Spliterator; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Consumer; + +public class RelatedAuthorSpliterator implements Spliterator { + private final List list; + AtomicInteger current = new AtomicInteger(); + + public RelatedAuthorSpliterator(List list) { + this.list = list; + } + + @Override + public boolean tryAdvance(Consumer action) { + + action.accept(list.get(current.getAndIncrement())); + return current.get() < list.size(); + } + + @Override + public Spliterator trySplit() { + int currentSize = list.size() - current.get(); + if (currentSize < 10) { + return null; + } + for (int splitPos = currentSize / 2 + current.intValue(); splitPos < list.size(); splitPos++) { + if (list.get(splitPos).getRelatedArticleId() == 0) { + Spliterator spliterator = new RelatedAuthorSpliterator(list.subList(current.get(), splitPos)); + current.set(splitPos); + return spliterator; + } + } + return null; + } + + @Override + public long estimateSize() { + return list.size() - current.get(); + } + + @Override + public int characteristics() { + return CONCURRENT; + } + +} diff --git a/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Task.java b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Task.java new file mode 100644 index 0000000000..70435d1c75 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/spliteratorAPI/Task.java @@ -0,0 +1,27 @@ +package com.baeldung.spliteratorAPI; + +import java.util.Spliterator; +import java.util.concurrent.Callable; + +public class Task implements Callable { + private Spliterator
spliterator; + private final static String SUFFIX = "- published by Baeldung"; + + public Task(Spliterator
spliterator) { + this.spliterator = spliterator; + } + + @Override + public String call() { + int current = 0; + while (spliterator.tryAdvance(article -> { + article.setName(article.getName() + .concat(SUFFIX)); + })) { + current++; + } + ; + return Thread.currentThread() + .getName() + ":" + current; + } +} diff --git a/core-java-8/src/main/java/com/baeldung/stream/PrimitiveStreams.java b/core-java-8/src/main/java/com/baeldung/stream/PrimitiveStreams.java new file mode 100644 index 0000000000..b0afb65a35 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/stream/PrimitiveStreams.java @@ -0,0 +1,23 @@ +package com.baeldung.stream; + +import java.util.Arrays; +import java.util.stream.IntStream; + +class PrimitiveStreams { + + int min(int[] integers) { + return Arrays.stream(integers).min().getAsInt(); + } + + int max(int... integers) { + return IntStream.of(integers).max().getAsInt(); + } + + int sum(int... integers) { + return IntStream.of(integers).sum(); + } + + double avg(int... integers) { + return IntStream.of(integers).average().getAsDouble(); + } +} diff --git a/core-java-8/src/main/java/com/baeldung/streamApi/Product.java b/core-java-8/src/main/java/com/baeldung/stream/Product.java similarity index 89% rename from core-java-8/src/main/java/com/baeldung/streamApi/Product.java rename to core-java-8/src/main/java/com/baeldung/stream/Product.java index 26b8bd6fed..e99a969b81 100644 --- a/core-java-8/src/main/java/com/baeldung/streamApi/Product.java +++ b/core-java-8/src/main/java/com/baeldung/stream/Product.java @@ -1,8 +1,6 @@ -package com.baeldung.streamApi; +package com.baeldung.stream; import java.util.List; -import java.util.Optional; -import java.util.stream.IntStream; import java.util.stream.Stream; /** diff --git a/core-java-8/src/main/java/com/baeldung/stream/StreamApi.java b/core-java-8/src/main/java/com/baeldung/stream/StreamApi.java index 364fdeffbb..f0d5f1aa7e 100644 --- a/core-java-8/src/main/java/com/baeldung/stream/StreamApi.java +++ b/core-java-8/src/main/java/com/baeldung/stream/StreamApi.java @@ -16,7 +16,7 @@ public class StreamApi { } public static String getLastElementUsingSkip(List valueList) { - long count = valueList.stream().count(); + long count = (long) valueList.size(); Stream stream = valueList.stream(); return stream.skip(count - 1).findFirst().orElse(null); } diff --git a/core-java/src/main/java/com/baeldung/stream/StreamIndices.java b/core-java-8/src/main/java/com/baeldung/stream/StreamIndices.java similarity index 100% rename from core-java/src/main/java/com/baeldung/stream/StreamIndices.java rename to core-java-8/src/main/java/com/baeldung/stream/StreamIndices.java diff --git a/core-java-8/src/test/java/com/baeldung/counter/CounterStatistics.java b/core-java-8/src/test/java/com/baeldung/counter/CounterStatistics.java index 2a42a166fa..015ca3f942 100644 --- a/core-java-8/src/test/java/com/baeldung/counter/CounterStatistics.java +++ b/core-java-8/src/test/java/com/baeldung/counter/CounterStatistics.java @@ -2,6 +2,7 @@ package com.baeldung.counter; import java.util.HashMap; import java.util.Map; +import java.util.Random; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; @@ -18,8 +19,18 @@ public class CounterStatistics { private static final Map counterWithMutableIntMap = new HashMap<>(); private static final Map counterWithIntArrayMap = new HashMap<>(); private static final Map counterWithLongWrapperMap = new HashMap<>(); + private static final Map counterWithLongWrapperStreamMap = new HashMap<>(); + + static { + CounterUtil.COUNTRY_NAMES = new String[10000]; + final String prefix = "NewString"; + Random random = new Random(); + for (int i=0; i<10000; i++) { + CounterUtil.COUNTRY_NAMES[i] = new String(prefix + random.nextInt(1000)); + } + } - @Benchmark + @Benchmark public void wrapperAsCounter() { CounterUtil.counterWithWrapperObject(counterMap); } @@ -28,6 +39,11 @@ public class CounterStatistics { public void lambdaExpressionWithWrapper() { CounterUtil.counterWithLambdaAndWrapper(counterWithLongWrapperMap); } + + @Benchmark + public void parallelStreamWithWrapper() { + CounterUtil.counterWithParallelStreamAndWrapper(counterWithLongWrapperStreamMap); + } @Benchmark public void mutableIntegerAsCounter() { diff --git a/core-java-8/src/test/java/com/baeldung/counter/CounterUtil.java b/core-java-8/src/test/java/com/baeldung/counter/CounterUtil.java index 647fbfb0cc..c2bf47e213 100644 --- a/core-java-8/src/test/java/com/baeldung/counter/CounterUtil.java +++ b/core-java-8/src/test/java/com/baeldung/counter/CounterUtil.java @@ -6,7 +6,7 @@ import java.util.stream.Stream; public class CounterUtil { - private final static String[] COUNTRY_NAMES = { "China", "Australia", "India", "USA", "USSR", "UK", "China", "France", "Poland", "Austria", "India", "USA", "Egypt", "China" }; + public static String[] COUNTRY_NAMES = { "China", "Australia", "India", "USA", "USSR", "UK", "China", "France", "Poland", "Austria", "India", "USA", "Egypt", "China" }; public static void counterWithWrapperObject(Map counterMap) { for (String country : COUNTRY_NAMES) { @@ -15,9 +15,14 @@ public class CounterUtil { } public static void counterWithLambdaAndWrapper(Map counterMap) { - counterMap.putAll(Stream.of(COUNTRY_NAMES) + Stream.of(COUNTRY_NAMES) + .collect(Collectors.groupingBy(k -> k, () -> counterMap, Collectors.counting())); + } + + public static void counterWithParallelStreamAndWrapper(Map counterMap) { + Stream.of(COUNTRY_NAMES) .parallel() - .collect(Collectors.groupingBy(k -> k, Collectors.counting()))); + .collect(Collectors.groupingBy(k -> k, () -> counterMap, Collectors.counting())); } public static class MutableInteger { @@ -38,24 +43,15 @@ public class CounterUtil { public static void counterWithMutableInteger(Map counterMap) { for (String country : COUNTRY_NAMES) { - MutableInteger oldValue = counterMap.get(country); - if (oldValue != null) { - oldValue.increment(); - } else { - counterMap.put(country, new MutableInteger(1)); - } + counterMap.compute(country, (k, v) -> v == null ? new MutableInteger(0) : v) + .increment(); } } public static void counterWithPrimitiveArray(Map counterMap) { for (String country : COUNTRY_NAMES) { - int[] oldCounter = counterMap.get(country); - if (oldCounter != null) { - oldCounter[0] += 1; - } else { - counterMap.put(country, new int[] { 1 }); - } + counterMap.compute(country, (k, v) -> v == null ? new int[] { 0 } : v)[0]++; } } -} +} \ No newline at end of file diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java index e7a76d1ab9..6fb6d21b19 100644 --- a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java +++ b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java @@ -4,7 +4,6 @@ import java.time.LocalDate; import java.time.LocalTime; import java.time.Month; -import org.junit.Assert; import org.junit.Test; import static org.junit.Assert.assertEquals; diff --git a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java index 90e858f9ac..834179febd 100644 --- a/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java +++ b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java @@ -4,7 +4,6 @@ import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalDateTime; -import org.junit.Assert; import org.junit.Test; import static org.junit.Assert.assertEquals; diff --git a/core-java-8/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java b/core-java-8/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java new file mode 100644 index 0000000000..7d4b06908a --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java @@ -0,0 +1,79 @@ +package com.baeldung.defaultistaticinterfacemethods.test; + +import com.baeldung.defaultstaticinterfacemethods.model.Car; +import com.baeldung.defaultstaticinterfacemethods.model.Motorbike; +import com.baeldung.defaultstaticinterfacemethods.model.Vehicle; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.assertj.core.api.Assertions.*; + +public class StaticDefaulInterfaceMethodUnitTest { + + private static Car car; + private static Motorbike motorbike; + + @BeforeClass + public static void setUpCarInstance() { + car = new Car("BMW"); + } + + @BeforeClass + public static void setUpMotorbikeInstance() { + motorbike = new Motorbike("Yamaha"); + } + + @Test + public void givenCarInstace_whenBrandisBMW_thenOneAssertion() { + assertThat(car.getBrand()).isEqualTo("BMW"); + } + + @Test + public void givenCarInstance_whenCallingSpeedUp_thenOneAssertion() { + assertThat(car.speedUp()).isEqualTo("The car is speeding up."); + } + + @Test + public void givenCarInstance_whenCallingSlowDown_thenOneAssertion() { + assertThat(car.slowDown()).isEqualTo("The car is slowing down."); + } + + @Test + public void givenCarInstance_whenCallingTurnAlarmOn_thenOneAssertion() { + assertThat(car.turnAlarmOn()).isEqualTo("Turning the vehice alarm on."); + } + + @Test + public void givenCarInstance_whenCallingTurnAlarmOff_thenOneAssertion() { + assertThat(car.turnAlarmOff()).isEqualTo("Turning the vehicle alarm off."); + } + + @Test + public void givenVehicleInterface_whenCallinggetHorsePower_thenOneAssertion() { + assertThat(Vehicle.getHorsePower(2500, 480)).isEqualTo(228); + } + + @Test + public void givenMooorbikeInstace_whenBrandisYamaha_thenOneAssertion() { + assertThat(motorbike.getBrand()).isEqualTo("Yamaha"); + } + + @Test + public void givenMotorbikeInstance_whenCallingSpeedUp_thenOneAssertion() { + assertThat(motorbike.speedUp()).isEqualTo("The motorbike is speeding up."); + } + + @Test + public void givenMotorbikeInstance_whenCallingSlowDown_thenOneAssertion() { + assertThat(motorbike.slowDown()).isEqualTo("The motorbike is slowing down."); + } + + @Test + public void givenMotorbikeInstance_whenCallingTurnAlarmOn_thenOneAssertion() { + assertThat(motorbike.turnAlarmOn()).isEqualTo("Turning the vehice alarm on."); + } + + @Test + public void givenMotorbikeInstance_whenCallingTurnAlarmOff_thenOneAssertion() { + assertThat(motorbike.turnAlarmOff()).isEqualTo("Turning the vehicle alarm off."); + } +} \ No newline at end of file diff --git a/core-java-8/src/test/java/com/baeldung/iterators/IteratorsTest.java b/core-java-8/src/test/java/com/baeldung/iterators/IteratorsTest.java new file mode 100644 index 0000000000..73793da7ae --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/iterators/IteratorsTest.java @@ -0,0 +1,40 @@ +package com.baeldung.iterators; + +import static com.baeldung.iterators.Iterators.failFast1; +import static com.baeldung.iterators.Iterators.failFast2; +import static com.baeldung.iterators.Iterators.failSafe1; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import java.util.ConcurrentModificationException; + +import org.junit.Test; + +/** + * Source code https://github.com/eugenp/tutorials + * + * @author Santosh Thakur + */ + +public class IteratorsTest { + + @Test + public void whenFailFast_ThenThrowsException() { + assertThatThrownBy(() -> { + failFast1(); + }).isInstanceOf(ConcurrentModificationException.class); + } + + @Test + public void whenFailFast_ThenThrowsExceptionInSecondIteration() { + assertThatThrownBy(() -> { + failFast2(); + }).isInstanceOf(ConcurrentModificationException.class); + } + + @Test + public void whenFailSafe_ThenDoesNotThrowException() { + assertThat(failSafe1()).isGreaterThanOrEqualTo(0); + } + +} diff --git a/core-java/src/test/java/com/baeldung/java/conversion/IterableStreamConversionUnitTest.java b/core-java-8/src/test/java/com/baeldung/java/conversion/IterableStreamConversionUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/conversion/IterableStreamConversionUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java/conversion/IterableStreamConversionUnitTest.java diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java index 73a10a57f4..5005cf7f47 100644 --- a/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java +++ b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java @@ -1,6 +1,6 @@ package com.baeldung.java8; -import com.baeldung.streamApi.Product; +import com.baeldung.stream.Product; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; diff --git a/core-java-8/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java index 1cac428285..2475716554 100644 --- a/core-java-8/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java +++ b/core-java-8/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java @@ -6,7 +6,6 @@ import java.util.Comparator; import org.junit.Before; import org.junit.Test; -import lombok.Data; import static org.junit.Assert.assertTrue; public class Java8ComparatorUnitTest { @@ -134,8 +133,7 @@ public class Java8ComparatorUnitTest { @Test public void whenThenComparing_thenSortedByAgeName() { - Comparator employee_Age_Name_Comparator = Comparator.comparing(Employee::getAge) - .thenComparing(Employee::getName); + Comparator employee_Age_Name_Comparator = Comparator.comparing(Employee::getAge).thenComparing(Employee::getName); Arrays.sort(someMoreEmployees, employee_Age_Name_Comparator); // System.out.println(Arrays.toString(someMoreEmployees)); @@ -144,8 +142,7 @@ public class Java8ComparatorUnitTest { @Test public void whenThenComparing_thenSortedByNameAge() { - Comparator employee_Name_Age_Comparator = Comparator.comparing(Employee::getName) - .thenComparingInt(Employee::getAge); + Comparator employee_Name_Age_Comparator = Comparator.comparing(Employee::getName).thenComparingInt(Employee::getAge); Arrays.sort(someMoreEmployees, employee_Name_Age_Comparator); // System.out.println(Arrays.toString(someMoreEmployees)); diff --git a/core-java-8/src/test/java/com/baeldung/spliteratorAPI/ExecutorTest.java b/core-java-8/src/test/java/com/baeldung/spliteratorAPI/ExecutorTest.java new file mode 100644 index 0000000000..64dd65cf5e --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/spliteratorAPI/ExecutorTest.java @@ -0,0 +1,44 @@ +package com.baeldung.spliteratorAPI; + +import java.util.Arrays; +import java.util.Spliterator; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +import static org.assertj.core.api.Assertions.*; +import org.junit.Before; +import org.junit.Test; + +public class ExecutorTest { + Article article; + Stream stream; + Spliterator spliterator; + Spliterator
split1; + Spliterator
split2; + + @Before + public void init() { + article = new Article(Arrays.asList(new Author("Ahmad", 0), new Author("Eugen", 0), new Author("Alice", 1), + new Author("Alice", 1), new Author("Mike", 0), new Author("Alice", 1), new Author("Mike", 0), + new Author("Alice", 1), new Author("Mike", 0), new Author("Alice", 1), new Author("Mike", 0), + new Author("Mike", 0), new Author("Alice", 1), new Author("Mike", 0), new Author("Alice", 1), + new Author("Mike", 0), new Author("Alice", 1), new Author("Mike", 0), new Author("Alice", 1), + new Author("Mike", 0), new Author("Michał", 0), new Author("Loredana", 1)), 0); + stream = article.getListOfAuthors().stream(); + split1 = Executor.generateElements().spliterator(); + split2 = split1.trySplit(); + spliterator = new RelatedAuthorSpliterator(article.getListOfAuthors()); + } + + @Test + public void givenAstreamOfAuthors_whenProcessedInParallelWithCustomSpliterator_coubtProducessRightOutput() { + Stream stream2 = StreamSupport.stream(spliterator, true); + assertThat(Executor.countAutors(stream2.parallel())).isEqualTo(9); + } + + @Test + public void givenSpliterator_whenAppliedToAListOfArticle_thenSplittedInHalf() { + assertThat(new Task(split1).call()).containsSequence(Executor.generateElements().size() / 2 + ""); + assertThat(new Task(split2).call()).containsSequence(Executor.generateElements().size() / 2 + ""); + } +} diff --git a/core-java-8/src/test/java/com/baeldung/stream/PrimitiveStreamsUnitTest.java b/core-java-8/src/test/java/com/baeldung/stream/PrimitiveStreamsUnitTest.java new file mode 100644 index 0000000000..2c88dc5ec7 --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/stream/PrimitiveStreamsUnitTest.java @@ -0,0 +1,99 @@ +package com.baeldung.stream; + +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class PrimitiveStreamsUnitTest { + + private PrimitiveStreams streams = new PrimitiveStreams(); + + @Test + public void givenAnArrayOfIntegersWhenMinIsCalledThenCorrectMinIsReturned() { + int[] integers = new int[] {20, 98, 12, 7, 35}; + int min = streams.min(integers); // returns 7 + + assertEquals(7, min); + } + + @Test + public void givenAnArrayOfIntegersWhenMaxIsCalledThenCorrectMaxIsReturned() { + int max = streams.max(20, 98, 12, 7, 35); + + assertEquals(98, max); + } + + @Test + public void givenAnArrayOfIntegersWhenSumIsCalledThenCorrectSumIsReturned() { + int sum = streams.sum(20, 98, 12, 7, 35); + + assertEquals(172, sum); + } + + @Test + public void givenAnArrayOfIntegersWhenAvgIsCalledThenCorrectAvgIsReturned() { + double avg = streams.avg(20, 98, 12, 7, 35); + + assertTrue(34.4 == avg); + } + + @Test + public void givenARangeOfIntegersWhenIntStreamSumIsCalledThenCorrectSumIsReturned() { + int sum = IntStream.range(1, 10).sum(); + + assertEquals(45, sum); + } + + @Test + public void givenARangeClosedOfIntegersWhenIntStreamSumIsCalledThenCorrectSumIsReturned() { + int sum = IntStream.rangeClosed(1, 10).sum(); + + assertEquals(55, sum); + } + + @Test + public void givenARangeWhenForEachIsCalledThenTheIndicesWillBePrinted() { + IntStream.rangeClosed(1, 5).parallel().forEach(System.out::println); + } + + @Test + public void givenAnArrayWhenSumIsCalledThenTheCorrectSumIsReturned() { + + int sum = Stream.of(33,45) + .mapToInt(i -> i) + .sum(); + + assertEquals(78, sum); + } + + @Test + public void givenAnIntStreamThenGetTheEvenIntegers() { + List evenInts = IntStream.rangeClosed(1, 10) + .filter(i -> i % 2 == 0) + .boxed() + .collect(Collectors.toList()); + + List expected = IntStream.of(2, 4, 6, 8, 10).boxed().collect(Collectors.toList()); + + assertEquals(expected, evenInts); + } + + class Person { + private int age; + + Person(int age) { + this.age = age; + } + + int getAge() { + return age; + } + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java b/core-java-8/src/test/java/com/baeldung/stream/StreamIndicesTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java rename to core-java-8/src/test/java/com/baeldung/stream/StreamIndicesTest.java diff --git a/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java b/core-java-8/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java rename to core-java-8/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java diff --git a/core-java-8/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java b/core-java-8/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java new file mode 100644 index 0000000000..a72f811336 --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java @@ -0,0 +1,101 @@ +package com.baeldung.stringjoiner; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.StringJoiner; +import java.util.stream.Collectors; + +import org.junit.Test; + +public class StringJoinerUnitTest { + private final String DELIMITER_COMMA = ","; + private final String DELIMITER_HYPHEN = "-"; + private final String PREFIX = "["; + private final String SUFFIX = "]"; + private final String EMPTY_JOINER = "empty"; + + @Test + public void whenJoinerWithoutPrefixSuffixWithoutEmptyValue_thenReturnDefault() { + StringJoiner commaSeparatedJoiner = new StringJoiner(DELIMITER_COMMA); + assertEquals(0, commaSeparatedJoiner.toString().length()); + } + + @Test + public void whenJoinerWithPrefixSuffixWithoutEmptyValue_thenReturnDefault() { + StringJoiner commaSeparatedPrefixSuffixJoiner = new StringJoiner(DELIMITER_COMMA, PREFIX, SUFFIX); + assertEquals(commaSeparatedPrefixSuffixJoiner.toString(), PREFIX + SUFFIX); + } + + @Test + public void whenJoinerWithoutPrefixSuffixWithEmptyValue_thenReturnDefault() { + StringJoiner commaSeparatedJoiner = new StringJoiner(DELIMITER_COMMA); + commaSeparatedJoiner.setEmptyValue(EMPTY_JOINER); + + assertEquals(commaSeparatedJoiner.toString(), EMPTY_JOINER); + } + + @Test + public void whenJoinerWithPrefixSuffixWithEmptyValue_thenReturnDefault() { + StringJoiner commaSeparatedPrefixSuffixJoiner = new StringJoiner(DELIMITER_COMMA, PREFIX, SUFFIX); + commaSeparatedPrefixSuffixJoiner.setEmptyValue(EMPTY_JOINER); + + assertEquals(commaSeparatedPrefixSuffixJoiner.toString(), EMPTY_JOINER); + } + + @Test + public void whenAddElements_thenJoinElements() { + StringJoiner rgbJoiner = new StringJoiner(DELIMITER_COMMA, PREFIX, SUFFIX); + rgbJoiner.add("Red") + .add("Green") + .add("Blue"); + + assertEquals(rgbJoiner.toString(), "[Red,Green,Blue]"); + } + + @Test + public void whenAddListElements_thenJoinListElements() { + List rgbList = new ArrayList(); + rgbList.add("Red"); + rgbList.add("Green"); + rgbList.add("Blue"); + + StringJoiner rgbJoiner = new StringJoiner(DELIMITER_COMMA, PREFIX, SUFFIX); + + for (String color : rgbList) { + rgbJoiner.add(color); + } + + assertEquals(rgbJoiner.toString(), "[Red,Green,Blue]"); + } + + @Test + public void whenMergeJoiners_thenReturnMerged() { + StringJoiner rgbJoiner = new StringJoiner(DELIMITER_COMMA, PREFIX, SUFFIX); + StringJoiner cmybJoiner = new StringJoiner(DELIMITER_HYPHEN, PREFIX, SUFFIX); + + rgbJoiner.add("Red") + .add("Green") + .add("Blue"); + cmybJoiner.add("Cyan") + .add("Magenta") + .add("Yellow") + .add("Black"); + + rgbJoiner.merge(cmybJoiner); + + assertEquals(rgbJoiner.toString(), "[Red,Green,Blue,Cyan-Magenta-Yellow-Black]"); + } + + @Test + public void whenUsedWithinCollectors_thenJoin() { + List rgbList = Arrays.asList("Red", "Green", "Blue"); + String commaSeparatedRGB = rgbList.stream() + .map(color -> color.toString()) + .collect(Collectors.joining(",")); + + assertEquals(commaSeparatedRGB, "Red,Green,Blue"); + } +} diff --git a/core-java-8/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java b/core-java-8/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java index 7b5f781620..513f163da8 100644 --- a/core-java-8/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java +++ b/core-java-8/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java @@ -1,7 +1,6 @@ package com.baeldung.temporaladjusters; import com.baeldung.temporaladjuster.CustomTemporalAdjuster; -import org.junit.Assert; import org.junit.Test; import java.time.LocalDate; diff --git a/core-java-9/README.md b/core-java-9/README.md index 98c855caea..575376ccb7 100644 --- a/core-java-9/README.md +++ b/core-java-9/README.md @@ -18,3 +18,5 @@ - [How to Get All Dates Between Two Dates?](http://www.baeldung.com/java-between-dates) - [Java 9 java.util.Objects Additions](http://www.baeldung.com/java-9-objects-new) - [Compact Strings in Java 9](http://www.baeldung.com/java-9-compact-string) +- [Convert Date to LocalDate or LocalDateTime and Back](http://www.baeldung.com/java-date-to-localdate-and-localdatetime) +- [Java 9 Variable Handles Demistyfied](http://www.baeldung.com/java-variable-handles) diff --git a/core-java-9/pom.xml b/core-java-9/pom.xml index f6792fdbd9..0f43265916 100644 --- a/core-java-9/pom.xml +++ b/core-java-9/pom.xml @@ -2,10 +2,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung - core-java9 + core-java-9 0.2-SNAPSHOT - core-java9 + core-java-9 @@ -90,7 +90,7 @@ 1.7.21 1.2.1 - 3.6.0 + 3.7.0 2.19.1 diff --git a/core-java-9/src/test/java/com/baeldung/java9/varhandles/VariableHandlesTest.java b/core-java-9/src/test/java/com/baeldung/java9/varhandles/VariableHandlesTest.java new file mode 100644 index 0000000000..50766502ec --- /dev/null +++ b/core-java-9/src/test/java/com/baeldung/java9/varhandles/VariableHandlesTest.java @@ -0,0 +1,106 @@ +package com.baeldung.java9.varhandles; + +import org.junit.Test; + +import java.lang.invoke.MethodHandles; +import java.lang.invoke.VarHandle; + +import static org.assertj.core.api.Assertions.assertThat; + +public class VariableHandlesTest { + + public int publicTestVariable = 1; + private int privateTestVariable = 1; + public int variableToSet = 1; + public int variableToCompareAndSet = 1; + public int variableToGetAndAdd = 0; + public byte variableToBitwiseOr = 0; + + @Test + public void whenVariableHandleForPublicVariableIsCreated_ThenItIsInitializedProperly() throws NoSuchFieldException, IllegalAccessException { + VarHandle publicIntHandle = MethodHandles + .lookup() + .in(VariableHandlesTest.class) + .findVarHandle(VariableHandlesTest.class, "publicTestVariable", int.class); + + assertThat(publicIntHandle.coordinateTypes().size() == 1); + assertThat(publicIntHandle.coordinateTypes().get(0) == VariableHandles.class); + + } + + @Test + public void whenVariableHandleForPrivateVariableIsCreated_ThenItIsInitializedProperly() throws NoSuchFieldException, IllegalAccessException { + VarHandle privateIntHandle = MethodHandles + .privateLookupIn(VariableHandlesTest.class, MethodHandles.lookup()) + .findVarHandle(VariableHandlesTest.class, "privateTestVariable", int.class); + + assertThat(privateIntHandle.coordinateTypes().size() == 1); + assertThat(privateIntHandle.coordinateTypes().get(0) == VariableHandlesTest.class); + + } + + @Test + public void whenVariableHandleForArrayVariableIsCreated_ThenItIsInitializedProperly() throws NoSuchFieldException, IllegalAccessException { + VarHandle arrayVarHandle = MethodHandles + .arrayElementVarHandle(int[].class); + + assertThat(arrayVarHandle.coordinateTypes().size() == 2); + assertThat(arrayVarHandle.coordinateTypes().get(0) == int[].class); + } + + @Test + public void givenVarHandle_whenGetIsInvoked_ThenValueOfVariableIsReturned() throws NoSuchFieldException, IllegalAccessException { + VarHandle publicIntHandle = MethodHandles + .lookup() + .in(VariableHandlesTest.class) + .findVarHandle(VariableHandlesTest.class, "publicTestVariable", int.class); + + assertThat((int) publicIntHandle.get(this) == 1); + } + + @Test + public void givenVarHandle_whenSetIsInvoked_ThenValueOfVariableIsChanged() throws NoSuchFieldException, IllegalAccessException { + VarHandle publicIntHandle = MethodHandles + .lookup() + .in(VariableHandlesTest.class) + .findVarHandle(VariableHandlesTest.class, "variableToSet", int.class); + publicIntHandle.set(this, 15); + + assertThat((int) publicIntHandle.get(this) == 15); + } + + @Test + public void givenVarHandle_whenCompareAndSetIsInvoked_ThenValueOfVariableIsChanged() throws NoSuchFieldException, IllegalAccessException { + VarHandle publicIntHandle = MethodHandles + .lookup() + .in(VariableHandlesTest.class) + .findVarHandle(VariableHandlesTest.class, "variableToCompareAndSet", int.class); + publicIntHandle.compareAndSet(this, 1, 100); + + assertThat((int) publicIntHandle.get(this) == 100); + } + + @Test + public void givenVarHandle_whenGetAndAddIsInvoked_ThenValueOfVariableIsChanged() throws NoSuchFieldException, IllegalAccessException { + VarHandle publicIntHandle = MethodHandles + .lookup() + .in(VariableHandlesTest.class) + .findVarHandle(VariableHandlesTest.class, "variableToGetAndAdd", int.class); + int before = (int) publicIntHandle.getAndAdd(this, 200); + + assertThat(before == 0); + assertThat((int) publicIntHandle.get(this) == 200); + } + + @Test + public void givenVarHandle_whenGetAndBitwiseOrIsInvoked_ThenValueOfVariableIsChanged() throws NoSuchFieldException, IllegalAccessException { + VarHandle publicIntHandle = MethodHandles + .lookup() + .in(VariableHandlesTest.class) + .findVarHandle(VariableHandlesTest.class, "variableToBitwiseOr", byte.class); + byte before = (byte) publicIntHandle.getAndBitwiseOr(this, (byte) 127); + + assertThat(before == 0); + assertThat(variableToBitwiseOr == 127); + } +} diff --git a/core-java-concurrency/README.md b/core-java-concurrency/README.md index 48c5f2a50c..8122c71bcb 100644 --- a/core-java-concurrency/README.md +++ b/core-java-concurrency/README.md @@ -31,3 +31,6 @@ - [Overview of the java.util.concurrent](http://www.baeldung.com/java-util-concurrent) - [Semaphores in Java](http://www.baeldung.com/java-semaphore) - [Daemon Threads in Java](http://www.baeldung.com/java-daemon-thread) +- [Implementing a Runnable vs Extending a Thread](http://www.baeldung.com/java-runnable-vs-extending-thread) +- [How to Kill a Java Thread](http://www.baeldung.com/java-thread-stop) +- [ExecutorService - Waiting for Threads to Finish](http://www.baeldung.com/java-executor-wait-for-threads) diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/stopping/ControlSubThread.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/stopping/ControlSubThread.java index 0e72821a88..e6522168bb 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/concurrent/stopping/ControlSubThread.java +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/stopping/ControlSubThread.java @@ -43,8 +43,9 @@ public class ControlSubThread implements Runnable { try { Thread.sleep(interval); } catch (InterruptedException e) { - // no-op, just loop again - } + Thread.currentThread().interrupt(); + System.out.println("Thread was interrupted, Failed to complete operation"); + } // do something } stopped.set(true); diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java index 9b850c4153..d9e7434e0c 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Data.java @@ -1,5 +1,7 @@ package com.baeldung.concurrent.waitandnotify; +import org.slf4j.Logger; + public class Data { private String packet; @@ -11,7 +13,9 @@ public class Data { while (transfer) { try { wait(); - } catch (InterruptedException e) {} + } catch (InterruptedException e) { + System.out.println("Thread Interrupted"); + } } transfer = true; @@ -23,7 +27,9 @@ public class Data { while (!transfer) { try { wait(); - } catch (InterruptedException e) {} + } catch (InterruptedException e) { + System.out.println("Thread Interrupted"); + } } transfer = false; diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java index 63f48b8031..724e908a99 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Receiver.java @@ -19,7 +19,9 @@ public class Receiver implements Runnable { //Thread.sleep() to mimic heavy server-side processing try { Thread.sleep(ThreadLocalRandom.current().nextInt(1000, 5000)); - } catch (InterruptedException e) {} + } catch (InterruptedException e) { + System.out.println("Thread Interrupted"); + } } } } \ No newline at end of file diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java index b7d782c3f5..b4945b7b73 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/waitandnotify/Sender.java @@ -11,11 +11,11 @@ public class Sender implements Runnable { public void run() { String packets[] = { - "First packet", - "Second packet", - "Third packet", - "Fourth packet", - "End" + "First packet", + "Second packet", + "Third packet", + "Fourth packet", + "End" }; for (String packet : packets) { @@ -24,7 +24,9 @@ public class Sender implements Runnable { //Thread.sleep() to mimic heavy server-side processing try { Thread.sleep(ThreadLocalRandom.current().nextInt(1000, 5000)); - } catch (InterruptedException e) {} + } catch (InterruptedException e) { + System.out.println("Thread Interrupted"); + } } } } \ No newline at end of file diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/executorservice/WaitingForThreadsToFinishTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/executorservice/WaitingForThreadsToFinishManualTest.java similarity index 72% rename from core-java-concurrency/src/test/java/com/baeldung/concurrent/executorservice/WaitingForThreadsToFinishTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/executorservice/WaitingForThreadsToFinishManualTest.java index 7e2bf590fd..cd8b015be2 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/concurrent/executorservice/WaitingForThreadsToFinishTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/executorservice/WaitingForThreadsToFinishManualTest.java @@ -10,9 +10,9 @@ import java.util.concurrent.*; import static junit.framework.TestCase.assertTrue; -public class WaitingForThreadsToFinishTest { +public class WaitingForThreadsToFinishManualTest { - private static final Logger LOG = LoggerFactory.getLogger(WaitingForThreadsToFinishTest.class); + private static final Logger LOG = LoggerFactory.getLogger(WaitingForThreadsToFinishManualTest.class); private final static ExecutorService WORKER_THREAD_POOL = Executors.newFixedThreadPool(10); public void awaitTerminationAfterShutdown(ExecutorService threadPool) { @@ -142,66 +142,4 @@ public class WaitingForThreadsToFinishTest { awaitTerminationAfterShutdown(WORKER_THREAD_POOL); } } - - @Test - public void givenMultipleThreads_whenUsingCompletableFutures_thenMainThreadShouldWaitForAllToFinish() { - - CompletableFuture future1 = CompletableFuture.supplyAsync(() -> { - - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - return "Hello"; - }); - - CompletableFuture future2 = CompletableFuture.supplyAsync(() -> { - - try { - Thread.sleep(5000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - return "Beautiful"; - }); - - CompletableFuture future3 = CompletableFuture.supplyAsync(() -> { - - try { - Thread.sleep(3000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - return "World"; - }); - - long startProcessingTime = System.currentTimeMillis(); - CompletableFuture combinedFuture = CompletableFuture.allOf(future1, future2, future3); - combinedFuture.join(); - - long totalProcessingTime = System.currentTimeMillis() - startProcessingTime; - assertTrue(totalProcessingTime >= 5000 && totalProcessingTime < 6000); - - LOG.debug("Responses from all threads are available after " + totalProcessingTime + " milliseconds"); - - try { - String thread1Response = future1.get(); - assertTrue(thread1Response.equals("Hello")); - - String thread2Response = future2.get(); - assertTrue(thread2Response.equals("Beautiful")); - - String thread3Response = future3.get(); - assertTrue(thread3Response.equals("World")); - - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - - awaitTerminationAfterShutdown(WORKER_THREAD_POOL); - } } diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/stopping/StopThreadTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/stopping/StopThreadTest.java index 70854f013f..af54d6932e 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/concurrent/stopping/StopThreadTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/stopping/StopThreadTest.java @@ -1,20 +1,21 @@ package com.baeldung.concurrent.stopping; -import com.jayway.awaitility.Awaitility; -import org.junit.Test; - -import java.util.concurrent.TimeUnit; - import static com.jayway.awaitility.Awaitility.await; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.util.concurrent.TimeUnit; + +import org.junit.Test; + +import com.jayway.awaitility.Awaitility; + public class StopThreadTest { @Test public void whenStoppedThreadIsStopped() throws InterruptedException { - int interval = 100; + int interval = 5; ControlSubThread controlSubThread = new ControlSubThread(interval); controlSubThread.start(); @@ -33,13 +34,13 @@ public class StopThreadTest { @Test public void whenInterruptedThreadIsStopped() throws InterruptedException { - int interval = 5000; + int interval = 50; ControlSubThread controlSubThread = new ControlSubThread(interval); controlSubThread.start(); // Give things a chance to get set up - Thread.sleep(100); + Thread.sleep(interval); assertTrue(controlSubThread.isRunning()); assertFalse(controlSubThread.isStopped()); @@ -48,6 +49,7 @@ public class StopThreadTest { // Wait less than the time we would normally sleep, and make sure we exited. Awaitility.await() + .pollDelay(2, TimeUnit.MILLISECONDS) .atMost(interval/ 10, TimeUnit.MILLISECONDS) .until(controlSubThread::isStopped); } diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java index 49f4313e9d..8ecc92236e 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/waitandnotify/NetworkIntegrationTest.java @@ -13,38 +13,38 @@ import org.junit.Test; public class NetworkIntegrationTest { - private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); - private final ByteArrayOutputStream errContent = new ByteArrayOutputStream(); - private String expected; - - @Before - public void setUpStreams() { - System.setOut(new PrintStream(outContent)); - System.setErr(new PrintStream(errContent)); - } - - @Before - public void setUpExpectedOutput() { - StringWriter expectedStringWriter = new StringWriter(); - - PrintWriter printWriter = new PrintWriter(expectedStringWriter); - printWriter.println("First packet"); - printWriter.println("Second packet"); - printWriter.println("Third packet"); - printWriter.println("Fourth packet"); - printWriter.close(); - - expected = expectedStringWriter.toString(); - } + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + private final ByteArrayOutputStream errContent = new ByteArrayOutputStream(); + private String expected; + + @Before + public void setUpStreams() { + System.setOut(new PrintStream(outContent)); + System.setErr(new PrintStream(errContent)); + } + + @Before + public void setUpExpectedOutput() { + StringWriter expectedStringWriter = new StringWriter(); + + PrintWriter printWriter = new PrintWriter(expectedStringWriter); + printWriter.println("First packet"); + printWriter.println("Second packet"); + printWriter.println("Third packet"); + printWriter.println("Fourth packet"); + printWriter.close(); + + expected = expectedStringWriter.toString(); + } - @After - public void cleanUpStreams() { - System.setOut(null); - System.setErr(null); - } - - @Test - public void givenSenderAndReceiver_whenSendingPackets_thenNetworkSynchronized() { + @After + public void cleanUpStreams() { + System.setOut(null); + System.setErr(null); + } + + @Test + public void givenSenderAndReceiver_whenSendingPackets_thenNetworkSynchronized() { Data data = new Data(); Thread sender = new Thread(new Sender(data)); Thread receiver = new Thread(new Receiver(data)); @@ -54,12 +54,12 @@ public class NetworkIntegrationTest { //wait for sender and receiver to finish before we test against expected try { - sender.join(); - receiver.join(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - assertEquals(expected, outContent.toString()); - } + sender.join(); + receiver.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + assertEquals(expected, outContent.toString()); + } } diff --git a/core-java-io/.gitignore b/core-java-io/.gitignore new file mode 100644 index 0000000000..3de4cc647e --- /dev/null +++ b/core-java-io/.gitignore @@ -0,0 +1,26 @@ +*.class + +0.* + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* +.resourceCache + +# Packaged files # +*.jar +*.war +*.ear + +# Files generated by integration tests +*.txt +backup-pom.xml +/bin/ +/temp + +#IntelliJ specific +.idea/ +*.iml \ No newline at end of file diff --git a/core-java-io/README.md b/core-java-io/README.md new file mode 100644 index 0000000000..52485acfd5 --- /dev/null +++ b/core-java-io/README.md @@ -0,0 +1,25 @@ +========= + +## Core Java IO Cookbooks and Examples + +### Relevant Articles: +- [Java - Reading a Large File Efficiently](http://www.baeldung.com/java-read-lines-large-file) +- [Java InputStream to String](http://www.baeldung.com/convert-input-stream-to-string) +- [Java – Write to File](http://www.baeldung.com/java-write-to-file) +- [Java - Convert File to InputStream](http://www.baeldung.com/convert-file-to-input-stream) +- [Java Scanner](http://www.baeldung.com/java-scanner) +- [Java – Byte Array to Writer](http://www.baeldung.com/java-convert-byte-array-to-writer) +- [Java – Directory Size](http://www.baeldung.com/java-folder-size) +- [Differences Between the Java WatchService API and the Apache Commons IO Monitor Library](http://www.baeldung.com/java-watchservice-vs-apache-commons-io-monitor-library) +- [Calculate the Size of a File in Java](http://www.baeldung.com/java-file-size) +- [Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java](http://www.baeldung.com/java-path) +- [Using Java MappedByteBuffer](http://www.baeldung.com/java-mapped-byte-buffer) +- [Copy a File with Java](http://www.baeldung.com/java-copy-file) +- [Java – Append Data to a File](http://www.baeldung.com/java-append-to-file) +- [FileNotFoundException in Java](http://www.baeldung.com/java-filenotfound-exception) +- [How to Read a File in Java](http://www.baeldung.com/reading-file-in-java) +- [A Guide To NIO2 Asynchronous File Channel](http://www.baeldung.com/java-nio2-async-file-channel) +- [A Guide To NIO2 FileVisitor](http://www.baeldung.com/java-nio2-file-visitor) +- [A Guide To NIO2 File Attribute APIs](http://www.baeldung.com/java-nio2-file-attribute) +- [Introduction to the Java NIO2 File API](http://www.baeldung.com/java-nio-2-file-api) +- [Zipping and Unzipping in Java](http://www.baeldung.com/java-compress-and-uncompress) \ No newline at end of file diff --git a/core-java-io/pom.xml b/core-java-io/pom.xml new file mode 100644 index 0000000000..9aa8743aa6 --- /dev/null +++ b/core-java-io/pom.xml @@ -0,0 +1,505 @@ + + 4.0.0 + com.baeldung + core-java-io + 0.1.0-SNAPSHOT + jar + + core-java-io + + + + + + net.sourceforge.collections + collections-generic + ${collections-generic.version} + + + com.google.guava + guava + ${guava.version} + + + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + + commons-io + commons-io + ${commons-io.version} + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + org.apache.commons + commons-math3 + ${commons-math3.version} + + + + org.decimal4j + decimal4j + ${decimal4j.version} + + + + org.bouncycastle + bcprov-jdk15on + ${bouncycastle.version} + + + + org.unix4j + unix4j-command + ${unix4j.version} + + + + com.googlecode.grep4j + grep4j + ${grep4j.version} + + + + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + + log4j + log4j + 1.2.17 + + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + + + org.hamcrest + hamcrest-all + 1.3 + test + + + + junit + junit + ${junit.version} + test + + + + org.hamcrest + hamcrest-core + ${org.hamcrest.version} + test + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + org.mockito + mockito-core + ${mockito.version} + test + + + com.jayway.awaitility + awaitility + ${avaitility.version} + test + + + + commons-codec + commons-codec + ${commons-codec.version} + + + + org.javamoney + moneta + 1.1 + + + + org.owasp.esapi + esapi + 2.1.0.1 + + + + com.sun.messaging.mq + fscontext + ${fscontext.version} + + + com.codepoetics + protonpack + ${protonpack.version} + + + one.util + streamex + ${streamex.version} + + + io.vavr + vavr + ${vavr.version} + + + org.openjdk.jmh + jmh-core + 1.19 + + + org.openjdk.jmh + jmh-generator-annprocess + 1.19 + + + org.springframework + spring-web + 4.3.4.RELEASE + + + org.springframework.boot + spring-boot-starter + 1.5.8.RELEASE + + + org.hsqldb + hsqldb + 2.4.0 + runtime + + + + + core-java-io + + + src/main/resources + true + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*LiveTest.java + **/*IntegrationTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + + true + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + prepare-package + + copy-dependencies + + + ${project.build.directory}/libs + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + true + libs/ + org.baeldung.executable.ExecutableMavenJar + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + package + + single + + + ${project.basedir} + + + org.baeldung.executable.ExecutableMavenJar + + + + jar-with-dependencies + + + + + + + + org.apache.maven.plugins + maven-shade-plugin + + + + shade + + + true + + + org.baeldung.executable.ExecutableMavenJar + + + + + + + + + com.jolira + onejar-maven-plugin + + + + org.baeldung.executable.ExecutableMavenJar + true + ${project.build.finalName}-onejar.${project.packaging} + + + one-jar + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + spring-boot + org.baeldung.executable.ExecutableMavenJar + + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + java + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + -Xmx300m + -XX:+UseParallelGC + -classpath + + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.0.0-M1 + + 1.8 + 1.8 + + + + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*ManualTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + org.codehaus.mojo + exec-maven-plugin + + + + run-benchmarks + + none + + exec + + + test + java + + -classpath + + org.openjdk.jmh.Main + .* + + + + + + + + + + + + + 2.8.5 + + + 1.7.21 + 1.1.7 + + + 22.0 + 3.5 + 1.55 + 1.10 + 3.6.1 + 1.0.3 + 2.5 + 4.1 + 4.01 + 0.4 + 1.8.7 + 1.16.12 + 4.6-b01 + 1.13 + 0.6.5 + 0.9.0 + + + 1.3 + 4.12 + 2.8.9 + 3.6.1 + 1.7.0 + + + 3.7.0 + 2.19.1 + + \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java b/core-java-io/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java similarity index 100% rename from core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java rename to core-java-io/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java diff --git a/core-java-io/src/main/java/com/baeldung/filesystem/jndi/LookupFSJNDI.java b/core-java-io/src/main/java/com/baeldung/filesystem/jndi/LookupFSJNDI.java new file mode 100644 index 0000000000..7e6bb5d3b2 --- /dev/null +++ b/core-java-io/src/main/java/com/baeldung/filesystem/jndi/LookupFSJNDI.java @@ -0,0 +1,42 @@ +package com.baeldung.filesystem.jndi; + +import java.io.File; +import java.util.Hashtable; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +public class LookupFSJNDI { + private InitialContext ctx = null; + + public LookupFSJNDI() throws NamingException { + super(); + init(); + } + + private void init() throws NamingException { + Hashtable env = new Hashtable(); + + env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); + // URI to namespace (actual directory) + env.put(Context.PROVIDER_URL, "file:./src/test/resources"); + + ctx = new InitialContext(env); + } + + public InitialContext getCtx() { + return ctx; + } + + public File getFile(String fileName) { + File file; + try { + file = (File) getCtx().lookup(fileName); + } catch (NamingException e) { + file = null; + } + return file; + } + +} diff --git a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoClient.java b/core-java-io/src/main/java/com/baeldung/java/nio/selector/EchoClient.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/nio/selector/EchoClient.java rename to core-java-io/src/main/java/com/baeldung/java/nio/selector/EchoClient.java diff --git a/core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java b/core-java-io/src/main/java/com/baeldung/java/nio/selector/EchoServer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/nio/selector/EchoServer.java rename to core-java-io/src/main/java/com/baeldung/java/nio/selector/EchoServer.java diff --git a/core-java/src/main/java/com/baeldung/java/nio/selector/README.md b/core-java-io/src/main/java/com/baeldung/java/nio/selector/README.md similarity index 100% rename from core-java/src/main/java/com/baeldung/java/nio/selector/README.md rename to core-java-io/src/main/java/com/baeldung/java/nio/selector/README.md diff --git a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java b/core-java-io/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java rename to core-java-io/src/main/java/com/baeldung/java/nio2/visitor/FileSearchExample.java diff --git a/core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java b/core-java-io/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java rename to core-java-io/src/main/java/com/baeldung/java/nio2/visitor/FileVisitorImpl.java diff --git a/core-java/src/main/java/com/baeldung/java/nio2/watcher/DirectoryWatcherExample.java b/core-java-io/src/main/java/com/baeldung/java/nio2/watcher/DirectoryWatcherExample.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java/nio2/watcher/DirectoryWatcherExample.java rename to core-java-io/src/main/java/com/baeldung/java/nio2/watcher/DirectoryWatcherExample.java diff --git a/core-java-io/src/main/java/com/baeldung/stream/FileCopy.java b/core-java-io/src/main/java/com/baeldung/stream/FileCopy.java new file mode 100644 index 0000000000..ccc2066b36 --- /dev/null +++ b/core-java-io/src/main/java/com/baeldung/stream/FileCopy.java @@ -0,0 +1,48 @@ +package com.baeldung.stream; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.channels.FileChannel; +import java.nio.file.Files; + +import org.apache.commons.io.FileUtils; + +public class FileCopy { + + public static void copyFileUsingStream(File source, File dest) throws IOException { + InputStream is = null; + OutputStream os = null; + is = new FileInputStream(source); + os = new FileOutputStream(dest); + byte[] buffer = new byte[1024]; + int length; + while ((length = is.read(buffer)) > 0) { + os.write(buffer, 0, length); + } + is.close(); + os.close(); + } + + public static void copyFileUsingChannel(File source, File dest) throws IOException { + FileChannel sourceChannel = null; + FileChannel destChannel = null; + sourceChannel = new FileInputStream(source).getChannel(); + destChannel = new FileOutputStream(dest).getChannel(); + destChannel.transferFrom(sourceChannel, 0, sourceChannel.size()); + sourceChannel.close(); + destChannel.close(); + } + + public static void copyFileUsingApacheCommonsIO(File source, File dest) throws IOException { + FileUtils.copyFile(source, dest); + } + + public static void copyFileUsingJavaFiles(File source, File dest) throws IOException { + Files.copy(source.toPath(), dest.toPath()); + } + +} diff --git a/core-java/src/main/java/com/baeldung/unzip/UnzipFile.java b/core-java-io/src/main/java/com/baeldung/unzip/UnzipFile.java similarity index 100% rename from core-java/src/main/java/com/baeldung/unzip/UnzipFile.java rename to core-java-io/src/main/java/com/baeldung/unzip/UnzipFile.java diff --git a/core-java/src/main/java/com/baeldung/util/StreamUtils.java b/core-java-io/src/main/java/com/baeldung/util/StreamUtils.java similarity index 100% rename from core-java/src/main/java/com/baeldung/util/StreamUtils.java rename to core-java-io/src/main/java/com/baeldung/util/StreamUtils.java diff --git a/core-java/src/main/java/com/baeldung/zip/ZipDirectory.java b/core-java-io/src/main/java/com/baeldung/zip/ZipDirectory.java similarity index 100% rename from core-java/src/main/java/com/baeldung/zip/ZipDirectory.java rename to core-java-io/src/main/java/com/baeldung/zip/ZipDirectory.java diff --git a/core-java/src/main/java/com/baeldung/zip/ZipFile.java b/core-java-io/src/main/java/com/baeldung/zip/ZipFile.java similarity index 100% rename from core-java/src/main/java/com/baeldung/zip/ZipFile.java rename to core-java-io/src/main/java/com/baeldung/zip/ZipFile.java diff --git a/core-java/src/main/java/com/baeldung/zip/ZipMultipleFiles.java b/core-java-io/src/main/java/com/baeldung/zip/ZipMultipleFiles.java similarity index 100% rename from core-java/src/main/java/com/baeldung/zip/ZipMultipleFiles.java rename to core-java-io/src/main/java/com/baeldung/zip/ZipMultipleFiles.java diff --git a/core-java-io/src/main/resources/ESAPI.properties b/core-java-io/src/main/resources/ESAPI.properties new file mode 100644 index 0000000000..24dcaa9dfa --- /dev/null +++ b/core-java-io/src/main/resources/ESAPI.properties @@ -0,0 +1,453 @@ +# +# OWASP Enterprise Security API (ESAPI) Properties file -- PRODUCTION Version +# +# This file is part of the Open Web Application Security Project (OWASP) +# Enterprise Security API (ESAPI) project. For details, please see +# http://www.owasp.org/index.php/ESAPI. +# +# Copyright (c) 2008,2009 - The OWASP Foundation +# +# DISCUSS: This may cause a major backwards compatibility issue, etc. but +# from a name space perspective, we probably should have prefaced +# all the property names with ESAPI or at least OWASP. Otherwise +# there could be problems is someone loads this properties file into +# the System properties. We could also put this file into the +# esapi.jar file (perhaps as a ResourceBundle) and then allow an external +# ESAPI properties be defined that would overwrite these defaults. +# That keeps the application's properties relatively simple as usually +# they will only want to override a few properties. If looks like we +# already support multiple override levels of this in the +# DefaultSecurityConfiguration class, but I'm suggesting placing the +# defaults in the esapi.jar itself. That way, if the jar is signed, +# we could detect if those properties had been tampered with. (The +# code to check the jar signatures is pretty simple... maybe 70-90 LOC, +# but off course there is an execution penalty (similar to the way +# that the separate sunjce.jar used to be when a class from it was +# first loaded). Thoughts? +############################################################################### +# +# WARNING: Operating system protection should be used to lock down the .esapi +# resources directory and all the files inside and all the directories all the +# way up to the root directory of the file system. Note that if you are using +# file-based implementations, that some files may need to be read-write as they +# get updated dynamically. +# +# Before using, be sure to update the MasterKey and MasterSalt as described below. +# N.B.: If you had stored data that you have previously encrypted with ESAPI 1.4, +# you *must* FIRST decrypt it using ESAPI 1.4 and then (if so desired) +# re-encrypt it with ESAPI 2.0. If you fail to do this, you will NOT be +# able to decrypt your data with ESAPI 2.0. +# +# YOU HAVE BEEN WARNED!!! More details are in the ESAPI 2.0 Release Notes. +# +#=========================================================================== +# ESAPI Configuration +# +# If true, then print all the ESAPI properties set here when they are loaded. +# If false, they are not printed. Useful to reduce output when running JUnit tests. +# If you need to troubleshoot a properties related problem, turning this on may help. +# This is 'false' in the src/test/resources/.esapi version. It is 'true' by +# default for reasons of backward compatibility with earlier ESAPI versions. +ESAPI.printProperties=true + +# ESAPI is designed to be easily extensible. You can use the reference implementation +# or implement your own providers to take advantage of your enterprise's security +# infrastructure. The functions in ESAPI are referenced using the ESAPI locator, like: +# +# String ciphertext = +# ESAPI.encryptor().encrypt("Secret message"); // Deprecated in 2.0 +# CipherText cipherText = +# ESAPI.encryptor().encrypt(new PlainText("Secret message")); // Preferred +# +# Below you can specify the classname for the provider that you wish to use in your +# application. The only requirement is that it implement the appropriate ESAPI interface. +# This allows you to switch security implementations in the future without rewriting the +# entire application. +# +# ExperimentalAccessController requires ESAPI-AccessControlPolicy.xml in .esapi directory +ESAPI.AccessControl=org.owasp.esapi.reference.DefaultAccessController +# FileBasedAuthenticator requires users.txt file in .esapi directory +ESAPI.Authenticator=org.owasp.esapi.reference.FileBasedAuthenticator +ESAPI.Encoder=org.owasp.esapi.reference.DefaultEncoder +ESAPI.Encryptor=org.owasp.esapi.reference.crypto.JavaEncryptor + +ESAPI.Executor=org.owasp.esapi.reference.DefaultExecutor +ESAPI.HTTPUtilities=org.owasp.esapi.reference.DefaultHTTPUtilities +ESAPI.IntrusionDetector=org.owasp.esapi.reference.DefaultIntrusionDetector +# Log4JFactory Requires log4j.xml or log4j.properties in classpath - http://www.laliluna.de/log4j-tutorial.html +ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory +#ESAPI.Logger=org.owasp.esapi.reference.JavaLogFactory +ESAPI.Randomizer=org.owasp.esapi.reference.DefaultRandomizer +ESAPI.Validator=org.owasp.esapi.reference.DefaultValidator + +#=========================================================================== +# ESAPI Authenticator +# +Authenticator.AllowedLoginAttempts=3 +Authenticator.MaxOldPasswordHashes=13 +Authenticator.UsernameParameterName=username +Authenticator.PasswordParameterName=password +# RememberTokenDuration (in days) +Authenticator.RememberTokenDuration=14 +# Session Timeouts (in minutes) +Authenticator.IdleTimeoutDuration=20 +Authenticator.AbsoluteTimeoutDuration=120 + +#=========================================================================== +# ESAPI Encoder +# +# ESAPI canonicalizes input before validation to prevent bypassing filters with encoded attacks. +# Failure to canonicalize input is a very common mistake when implementing validation schemes. +# Canonicalization is automatic when using the ESAPI Validator, but you can also use the +# following code to canonicalize data. +# +# ESAPI.Encoder().canonicalize( "%22hello world"" ); +# +# Multiple encoding is when a single encoding format is applied multiple times. Allowing +# multiple encoding is strongly discouraged. +Encoder.AllowMultipleEncoding=false + +# Mixed encoding is when multiple different encoding formats are applied, or when +# multiple formats are nested. Allowing multiple encoding is strongly discouraged. +Encoder.AllowMixedEncoding=false + +# The default list of codecs to apply when canonicalizing untrusted data. The list should include the codecs +# for all downstream interpreters or decoders. For example, if the data is likely to end up in a URL, HTML, or +# inside JavaScript, then the list of codecs below is appropriate. The order of the list is not terribly important. +Encoder.DefaultCodecList=HTMLEntityCodec,PercentCodec,JavaScriptCodec + + +#=========================================================================== +# ESAPI Encryption +# +# The ESAPI Encryptor provides basic cryptographic functions with a simplified API. +# To get started, generate a new key using java -classpath esapi.jar org.owasp.esapi.reference.crypto.JavaEncryptor +# There is not currently any support for key rotation, so be careful when changing your key and salt as it +# will invalidate all signed, encrypted, and hashed data. +# +# WARNING: Not all combinations of algorithms and key lengths are supported. +# If you choose to use a key length greater than 128, you MUST download the +# unlimited strength policy files and install in the lib directory of your JRE/JDK. +# See http://java.sun.com/javase/downloads/index.jsp for more information. +# +# Backward compatibility with ESAPI Java 1.4 is supported by the two deprecated API +# methods, Encryptor.encrypt(String) and Encryptor.decrypt(String). However, whenever +# possible, these methods should be avoided as they use ECB cipher mode, which in almost +# all circumstances a poor choice because of it's weakness. CBC cipher mode is the default +# for the new Encryptor encrypt / decrypt methods for ESAPI Java 2.0. In general, you +# should only use this compatibility setting if you have persistent data encrypted with +# version 1.4 and even then, you should ONLY set this compatibility mode UNTIL +# you have decrypted all of your old encrypted data and then re-encrypted it with +# ESAPI 2.0 using CBC mode. If you have some reason to mix the deprecated 1.4 mode +# with the new 2.0 methods, make sure that you use the same cipher algorithm for both +# (256-bit AES was the default for 1.4; 128-bit is the default for 2.0; see below for +# more details.) Otherwise, you will have to use the new 2.0 encrypt / decrypt methods +# where you can specify a SecretKey. (Note that if you are using the 256-bit AES, +# that requires downloading the special jurisdiction policy files mentioned above.) +# +# ***** IMPORTANT: Do NOT forget to replace these with your own values! ***** +# To calculate these values, you can run: +# java -classpath esapi.jar org.owasp.esapi.reference.crypto.JavaEncryptor +# +Encryptor.MasterKey=tzfztf56ftv +Encryptor.MasterSalt=123456ztrewq + +# Provides the default JCE provider that ESAPI will "prefer" for its symmetric +# encryption and hashing. (That is it will look to this provider first, but it +# will defer to other providers if the requested algorithm is not implemented +# by this provider.) If left unset, ESAPI will just use your Java VM's current +# preferred JCE provider, which is generally set in the file +# "$JAVA_HOME/jre/lib/security/java.security". +# +# The main intent of this is to allow ESAPI symmetric encryption to be +# used with a FIPS 140-2 compliant crypto-module. For details, see the section +# "Using ESAPI Symmetric Encryption with FIPS 140-2 Cryptographic Modules" in +# the ESAPI 2.0 Symmetric Encryption User Guide, at: +# http://owasp-esapi-java.googlecode.com/svn/trunk/documentation/esapi4java-core-2.0-symmetric-crypto-user-guide.html +# However, this property also allows you to easily use an alternate JCE provider +# such as "Bouncy Castle" without having to make changes to "java.security". +# See Javadoc for SecurityProviderLoader for further details. If you wish to use +# a provider that is not known to SecurityProviderLoader, you may specify the +# fully-qualified class name of the JCE provider class that implements +# java.security.Provider. If the name contains a '.', this is interpreted as +# a fully-qualified class name that implements java.security.Provider. +# +# NOTE: Setting this property has the side-effect of changing it in your application +# as well, so if you are using JCE in your application directly rather than +# through ESAPI (you wouldn't do that, would you? ;-), it will change the +# preferred JCE provider there as well. +# +# Default: Keeps the JCE provider set to whatever JVM sets it to. +Encryptor.PreferredJCEProvider= + +# AES is the most widely used and strongest encryption algorithm. This +# should agree with your Encryptor.CipherTransformation property. +# By default, ESAPI Java 1.4 uses "PBEWithMD5AndDES" and which is +# very weak. It is essentially a password-based encryption key, hashed +# with MD5 around 1K times and then encrypted with the weak DES algorithm +# (56-bits) using ECB mode and an unspecified padding (it is +# JCE provider specific, but most likely "NoPadding"). However, 2.0 uses +# "AES/CBC/PKCSPadding". If you want to change these, change them here. +# Warning: This property does not control the default reference implementation for +# ESAPI 2.0 using JavaEncryptor. Also, this property will be dropped +# in the future. +# @deprecated +Encryptor.EncryptionAlgorithm=AES +# For ESAPI Java 2.0 - New encrypt / decrypt methods use this. +Encryptor.CipherTransformation=AES/CBC/PKCS5Padding + +# Applies to ESAPI 2.0 and later only! +# Comma-separated list of cipher modes that provide *BOTH* +# confidentiality *AND* message authenticity. (NIST refers to such cipher +# modes as "combined modes" so that's what we shall call them.) If any of these +# cipher modes are used then no MAC is calculated and stored +# in the CipherText upon encryption. Likewise, if one of these +# cipher modes is used with decryption, no attempt will be made +# to validate the MAC contained in the CipherText object regardless +# of whether it contains one or not. Since the expectation is that +# these cipher modes support support message authenticity already, +# injecting a MAC in the CipherText object would be at best redundant. +# +# Note that as of JDK 1.5, the SunJCE provider does not support *any* +# of these cipher modes. Of these listed, only GCM and CCM are currently +# NIST approved. YMMV for other JCE providers. E.g., Bouncy Castle supports +# GCM and CCM with "NoPadding" mode, but not with "PKCS5Padding" or other +# padding modes. +Encryptor.cipher_modes.combined_modes=GCM,CCM,IAPM,EAX,OCB,CWC + +# Applies to ESAPI 2.0 and later only! +# Additional cipher modes allowed for ESAPI 2.0 encryption. These +# cipher modes are in _addition_ to those specified by the property +# 'Encryptor.cipher_modes.combined_modes'. +# Note: We will add support for streaming modes like CFB & OFB once +# we add support for 'specified' to the property 'Encryptor.ChooseIVMethod' +# (probably in ESAPI 2.1). +# DISCUSS: Better name? +Encryptor.cipher_modes.additional_allowed=CBC + +# 128-bit is almost always sufficient and appears to be more resistant to +# related key attacks than is 256-bit AES. Use '_' to use default key size +# for cipher algorithms (where it makes sense because the algorithm supports +# a variable key size). Key length must agree to what's provided as the +# cipher transformation, otherwise this will be ignored after logging a +# warning. +# +# NOTE: This is what applies BOTH ESAPI 1.4 and 2.0. See warning above about mixing! +Encryptor.EncryptionKeyLength=128 + +# Because 2.0 uses CBC mode by default, it requires an initialization vector (IV). +# (All cipher modes except ECB require an IV.) There are two choices: we can either +# use a fixed IV known to both parties or allow ESAPI to choose a random IV. While +# the IV does not need to be hidden from adversaries, it is important that the +# adversary not be allowed to choose it. Also, random IVs are generally much more +# secure than fixed IVs. (In fact, it is essential that feed-back cipher modes +# such as CFB and OFB use a different IV for each encryption with a given key so +# in such cases, random IVs are much preferred. By default, ESAPI 2.0 uses random +# IVs. If you wish to use 'fixed' IVs, set 'Encryptor.ChooseIVMethod=fixed' and +# uncomment the Encryptor.fixedIV. +# +# Valid values: random|fixed|specified 'specified' not yet implemented; planned for 2.1 +Encryptor.ChooseIVMethod=random +# If you choose to use a fixed IV, then you must place a fixed IV here that +# is known to all others who are sharing your secret key. The format should +# be a hex string that is the same length as the cipher block size for the +# cipher algorithm that you are using. The following is an *example* for AES +# from an AES test vector for AES-128/CBC as described in: +# NIST Special Publication 800-38A (2001 Edition) +# "Recommendation for Block Cipher Modes of Operation". +# (Note that the block size for AES is 16 bytes == 128 bits.) +# +Encryptor.fixedIV=0x000102030405060708090a0b0c0d0e0f + +# Whether or not CipherText should use a message authentication code (MAC) with it. +# This prevents an adversary from altering the IV as well as allowing a more +# fool-proof way of determining the decryption failed because of an incorrect +# key being supplied. This refers to the "separate" MAC calculated and stored +# in CipherText, not part of any MAC that is calculated as a result of a +# "combined mode" cipher mode. +# +# If you are using ESAPI with a FIPS 140-2 cryptographic module, you *must* also +# set this property to false. +Encryptor.CipherText.useMAC=true + +# Whether or not the PlainText object may be overwritten and then marked +# eligible for garbage collection. If not set, this is still treated as 'true'. +Encryptor.PlainText.overwrite=true + +# Do not use DES except in a legacy situations. 56-bit is way too small key size. +#Encryptor.EncryptionKeyLength=56 +#Encryptor.EncryptionAlgorithm=DES + +# TripleDES is considered strong enough for most purposes. +# Note: There is also a 112-bit version of DESede. Using the 168-bit version +# requires downloading the special jurisdiction policy from Sun. +#Encryptor.EncryptionKeyLength=168 +#Encryptor.EncryptionAlgorithm=DESede + +Encryptor.HashAlgorithm=SHA-512 +Encryptor.HashIterations=1024 +Encryptor.DigitalSignatureAlgorithm=SHA1withDSA +Encryptor.DigitalSignatureKeyLength=1024 +Encryptor.RandomAlgorithm=SHA1PRNG +Encryptor.CharacterEncoding=UTF-8 + +# This is the Pseudo Random Function (PRF) that ESAPI's Key Derivation Function +# (KDF) normally uses. Note this is *only* the PRF used for ESAPI's KDF and +# *not* what is used for ESAPI's MAC. (Currently, HmacSHA1 is always used for +# the MAC, mostly to keep the overall size at a minimum.) +# +# Currently supported choices for JDK 1.5 and 1.6 are: +# HmacSHA1 (160 bits), HmacSHA256 (256 bits), HmacSHA384 (384 bits), and +# HmacSHA512 (512 bits). +# Note that HmacMD5 is *not* supported for the PRF used by the KDF even though +# the JDKs support it. See the ESAPI 2.0 Symmetric Encryption User Guide +# further details. +Encryptor.KDF.PRF=HmacSHA256 +#=========================================================================== +# ESAPI HttpUtilties +# +# The HttpUtilities provide basic protections to HTTP requests and responses. Primarily these methods +# protect against malicious data from attackers, such as unprintable characters, escaped characters, +# and other simple attacks. The HttpUtilities also provides utility methods for dealing with cookies, +# headers, and CSRF tokens. +# +# Default file upload location (remember to escape backslashes with \\) +HttpUtilities.UploadDir=C:\\ESAPI\\testUpload +HttpUtilities.UploadTempDir=C:\\temp +# Force flags on cookies, if you use HttpUtilities to set cookies +HttpUtilities.ForceHttpOnlySession=false +HttpUtilities.ForceSecureSession=false +HttpUtilities.ForceHttpOnlyCookies=true +HttpUtilities.ForceSecureCookies=true +# Maximum size of HTTP headers +HttpUtilities.MaxHeaderSize=4096 +# File upload configuration +HttpUtilities.ApprovedUploadExtensions=.zip,.pdf,.doc,.docx,.ppt,.pptx,.tar,.gz,.tgz,.rar,.war,.jar,.ear,.xls,.rtf,.properties,.java,.class,.txt,.xml,.jsp,.jsf,.exe,.dll +HttpUtilities.MaxUploadFileBytes=500000000 +# Using UTF-8 throughout your stack is highly recommended. That includes your database driver, +# container, and any other technologies you may be using. Failure to do this may expose you +# to Unicode transcoding injection attacks. Use of UTF-8 does not hinder internationalization. +HttpUtilities.ResponseContentType=text/html; charset=UTF-8 +# This is the name of the cookie used to represent the HTTP session +# Typically this will be the default "JSESSIONID" +HttpUtilities.HttpSessionIdName=JSESSIONID + + + +#=========================================================================== +# ESAPI Executor +# CHECKME - Not sure what this is used for, but surely it should be made OS independent. +Executor.WorkingDirectory=C:\\Windows\\Temp +Executor.ApprovedExecutables=C:\\Windows\\System32\\cmd.exe,C:\\Windows\\System32\\runas.exe + + +#=========================================================================== +# ESAPI Logging +# Set the application name if these logs are combined with other applications +Logger.ApplicationName=ExampleApplication +# If you use an HTML log viewer that does not properly HTML escape log data, you can set LogEncodingRequired to true +Logger.LogEncodingRequired=false +# Determines whether ESAPI should log the application name. This might be clutter in some single-server/single-app environments. +Logger.LogApplicationName=true +# Determines whether ESAPI should log the server IP and port. This might be clutter in some single-server environments. +Logger.LogServerIP=true +# LogFileName, the name of the logging file. Provide a full directory path (e.g., C:\\ESAPI\\ESAPI_logging_file) if you +# want to place it in a specific directory. +Logger.LogFileName=ESAPI_logging_file +# MaxLogFileSize, the max size (in bytes) of a single log file before it cuts over to a new one (default is 10,000,000) +Logger.MaxLogFileSize=10000000 + + +#=========================================================================== +# ESAPI Intrusion Detection +# +# Each event has a base to which .count, .interval, and .action are added +# The IntrusionException will fire if we receive "count" events within "interval" seconds +# The IntrusionDetector is configurable to take the following actions: log, logout, and disable +# (multiple actions separated by commas are allowed e.g. event.test.actions=log,disable +# +# Custom Events +# Names must start with "event." as the base +# Use IntrusionDetector.addEvent( "test" ) in your code to trigger "event.test" here +# You can also disable intrusion detection completely by changing +# the following parameter to true +# +IntrusionDetector.Disable=false +# +IntrusionDetector.event.test.count=2 +IntrusionDetector.event.test.interval=10 +IntrusionDetector.event.test.actions=disable,log + +# Exception Events +# All EnterpriseSecurityExceptions are registered automatically +# Call IntrusionDetector.getInstance().addException(e) for Exceptions that do not extend EnterpriseSecurityException +# Use the fully qualified classname of the exception as the base + +# any intrusion is an attack +IntrusionDetector.org.owasp.esapi.errors.IntrusionException.count=1 +IntrusionDetector.org.owasp.esapi.errors.IntrusionException.interval=1 +IntrusionDetector.org.owasp.esapi.errors.IntrusionException.actions=log,disable,logout + +# for test purposes +# CHECKME: Shouldn't there be something in the property name itself that designates +# that these are for testing??? +IntrusionDetector.org.owasp.esapi.errors.IntegrityException.count=10 +IntrusionDetector.org.owasp.esapi.errors.IntegrityException.interval=5 +IntrusionDetector.org.owasp.esapi.errors.IntegrityException.actions=log,disable,logout + +# rapid validation errors indicate scans or attacks in progress +# org.owasp.esapi.errors.ValidationException.count=10 +# org.owasp.esapi.errors.ValidationException.interval=10 +# org.owasp.esapi.errors.ValidationException.actions=log,logout + +# sessions jumping between hosts indicates session hijacking +IntrusionDetector.org.owasp.esapi.errors.AuthenticationHostException.count=2 +IntrusionDetector.org.owasp.esapi.errors.AuthenticationHostException.interval=10 +IntrusionDetector.org.owasp.esapi.errors.AuthenticationHostException.actions=log,logout + + +#=========================================================================== +# ESAPI Validation +# +# The ESAPI Validator works on regular expressions with defined names. You can define names +# either here, or you may define application specific patterns in a separate file defined below. +# This allows enterprises to specify both organizational standards as well as application specific +# validation rules. +# +Validator.ConfigurationFile=validation.properties + +# Validators used by ESAPI +Validator.AccountName=^[a-zA-Z0-9]{3,20}$ +Validator.SystemCommand=^[a-zA-Z\\-\\/]{1,64}$ +Validator.RoleName=^[a-z]{1,20}$ + +#the word TEST below should be changed to your application +#name - only relative URL's are supported +Validator.Redirect=^\\/test.*$ + +# Global HTTP Validation Rules +# Values with Base64 encoded data (e.g. encrypted state) will need at least [a-zA-Z0-9\/+=] +Validator.HTTPScheme=^(http|https)$ +Validator.HTTPServerName=^[a-zA-Z0-9_.\\-]*$ +Validator.HTTPParameterName=^[a-zA-Z0-9_]{1,32}$ +Validator.HTTPParameterValue=^[a-zA-Z0-9.\\-\\/+=@_ ]*$ +Validator.HTTPCookieName=^[a-zA-Z0-9\\-_]{1,32}$ +Validator.HTTPCookieValue=^[a-zA-Z0-9\\-\\/+=_ ]*$ +Validator.HTTPHeaderName=^[a-zA-Z0-9\\-_]{1,32}$ +Validator.HTTPHeaderValue=^[a-zA-Z0-9()\\-=\\*\\.\\?;,+\\/:&_ ]*$ +Validator.HTTPContextPath=^\\/?[a-zA-Z0-9.\\-\\/_]*$ +Validator.HTTPServletPath=^[a-zA-Z0-9.\\-\\/_]*$ +Validator.HTTPPath=^[a-zA-Z0-9.\\-_]*$ +Validator.HTTPQueryString=^[a-zA-Z0-9()\\-=\\*\\.\\?;,+\\/:&_ %]*$ +Validator.HTTPURI=^[a-zA-Z0-9()\\-=\\*\\.\\?;,+\\/:&_ ]*$ +Validator.HTTPURL=^.*$ +Validator.HTTPJSESSIONID=^[A-Z0-9]{10,30}$ + +# Validation of file related input +Validator.FileName=^[a-zA-Z0-9!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$ +Validator.DirectoryName=^[a-zA-Z0-9:/\\\\!@#$%^&{}\\[\\]()_+\\-=,.~'` ]{1,255}$ + +# Validation of dates. Controls whether or not 'lenient' dates are accepted. +# See DataFormat.setLenient(boolean flag) for further details. +Validator.AcceptLenientDates=false + diff --git a/spring-boot-actuator/README.MD b/core-java-io/src/main/resources/META-INF/BenchmarkList old mode 100644 new mode 100755 similarity index 100% rename from spring-boot-actuator/README.MD rename to core-java-io/src/main/resources/META-INF/BenchmarkList diff --git a/core-java-io/src/main/resources/META-INF/persistence.xml b/core-java-io/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000000..3966afdcda --- /dev/null +++ b/core-java-io/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + diff --git a/core-java-io/src/main/resources/META-INF/services/com.sun.source.util.Plugin b/core-java-io/src/main/resources/META-INF/services/com.sun.source.util.Plugin new file mode 100644 index 0000000000..91fb6eb3b0 --- /dev/null +++ b/core-java-io/src/main/resources/META-INF/services/com.sun.source.util.Plugin @@ -0,0 +1 @@ +com.baeldung.javac.SampleJavacPlugin \ No newline at end of file diff --git a/core-java-io/src/main/resources/countries.properties b/core-java-io/src/main/resources/countries.properties new file mode 100644 index 0000000000..e743b5a40b --- /dev/null +++ b/core-java-io/src/main/resources/countries.properties @@ -0,0 +1,3 @@ +UK +US +Germany diff --git a/core-java-io/src/main/resources/data.csv b/core-java-io/src/main/resources/data.csv new file mode 100644 index 0000000000..ec4ac10443 --- /dev/null +++ b/core-java-io/src/main/resources/data.csv @@ -0,0 +1,3 @@ +1|IND|India +2|MY|Malaysia +3|AU|Australia diff --git a/core-java-io/src/main/resources/datasource.properties b/core-java-io/src/main/resources/datasource.properties new file mode 100644 index 0000000000..61df0d45f7 --- /dev/null +++ b/core-java-io/src/main/resources/datasource.properties @@ -0,0 +1,6 @@ +dataSourceClassName=//TBD +dataSource.user=//TBD +dataSource.password=//TBD +dataSource.databaseName=//TBD +dataSource.portNumber=//TBD +dataSource.serverName=//TBD \ No newline at end of file diff --git a/core-java/src/main/resources/dirCompressed.zip b/core-java-io/src/main/resources/dirCompressed.zip similarity index 100% rename from core-java/src/main/resources/dirCompressed.zip rename to core-java-io/src/main/resources/dirCompressed.zip diff --git a/core-java-io/src/main/resources/js/bind.js b/core-java-io/src/main/resources/js/bind.js new file mode 100644 index 0000000000..652e646d0d --- /dev/null +++ b/core-java-io/src/main/resources/js/bind.js @@ -0,0 +1,15 @@ +var first = { + name: "Whiskey", + age: 5 +}; + +var second = { + volume: 100 +}; + +Object.bindProperties(first, second); + +print(first.volume); + +second.volume = 1000; +print(first.volume); diff --git a/core-java-io/src/main/resources/js/locations.js b/core-java-io/src/main/resources/js/locations.js new file mode 100644 index 0000000000..abfc944639 --- /dev/null +++ b/core-java-io/src/main/resources/js/locations.js @@ -0,0 +1 @@ +print(__FILE__, __LINE__, __DIR__); diff --git a/core-java-io/src/main/resources/js/math_module.js b/core-java-io/src/main/resources/js/math_module.js new file mode 100644 index 0000000000..267a100f36 --- /dev/null +++ b/core-java-io/src/main/resources/js/math_module.js @@ -0,0 +1,19 @@ +var math = { + increment: function (num) { + return ++num; + }, + + failFunc: function () { + try { + throw "BOOM"; + } catch (e if typeof e === 'string') { + print("String thrown: " + e); + } + catch (e) { + print("this shouldn't happen!"); + } + } +}; + + +math; diff --git a/core-java-io/src/main/resources/js/no_such.js b/core-java-io/src/main/resources/js/no_such.js new file mode 100644 index 0000000000..43b50c5cad --- /dev/null +++ b/core-java-io/src/main/resources/js/no_such.js @@ -0,0 +1,11 @@ +var demo = { + __noSuchProperty__: function (propName) { + print("Accessed non-existing property: " + propName); + }, + + __noSuchMethod__: function (methodName) { + print("Invoked non-existing method: " + methodName); + } +}; + +demo; diff --git a/core-java-io/src/main/resources/js/script.js b/core-java-io/src/main/resources/js/script.js new file mode 100644 index 0000000000..6f701ed59d --- /dev/null +++ b/core-java-io/src/main/resources/js/script.js @@ -0,0 +1 @@ +function increment(num) ++num; diff --git a/core-java-io/src/main/resources/js/trim.js b/core-java-io/src/main/resources/js/trim.js new file mode 100644 index 0000000000..81be009978 --- /dev/null +++ b/core-java-io/src/main/resources/js/trim.js @@ -0,0 +1,2 @@ +print(" hello world".trimLeft()); +print("hello world ".trimRight()); diff --git a/core-java-io/src/main/resources/js/typed_arrays.js b/core-java-io/src/main/resources/js/typed_arrays.js new file mode 100644 index 0000000000..6899b29373 --- /dev/null +++ b/core-java-io/src/main/resources/js/typed_arrays.js @@ -0,0 +1,9 @@ +function arrays(arr) { + + var javaIntArray = Java.to(arr, "int[]"); + print(javaIntArray[0]); + print(javaIntArray[1]); + print(javaIntArray[2]); +} + +arrays([100, "1654", true]); diff --git a/core-java-io/src/main/resources/log4j.properties b/core-java-io/src/main/resources/log4j.properties new file mode 100644 index 0000000000..621cf01735 --- /dev/null +++ b/core-java-io/src/main/resources/log4j.properties @@ -0,0 +1,6 @@ +log4j.rootLogger=DEBUG, A1 + +log4j.appender.A1=org.apache.log4j.ConsoleAppender + +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n \ No newline at end of file diff --git a/core-java-io/src/main/resources/log4jstructuraldp.properties b/core-java-io/src/main/resources/log4jstructuraldp.properties new file mode 100644 index 0000000000..5bc2bfe4b9 --- /dev/null +++ b/core-java-io/src/main/resources/log4jstructuraldp.properties @@ -0,0 +1,9 @@ + +# Root logger +log4j.rootLogger=INFO, file, stdout + +# Write to console +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/core-java-io/src/main/resources/logback.xml b/core-java-io/src/main/resources/logback.xml new file mode 100644 index 0000000000..ec0dc2469a --- /dev/null +++ b/core-java-io/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core-java/src/main/resources/multiCompressed.zip b/core-java-io/src/main/resources/multiCompressed.zip similarity index 100% rename from core-java/src/main/resources/multiCompressed.zip rename to core-java-io/src/main/resources/multiCompressed.zip diff --git a/core-java/src/main/resources/sample.txt b/core-java-io/src/main/resources/targetFile.tmp similarity index 100% rename from core-java/src/main/resources/sample.txt rename to core-java-io/src/main/resources/targetFile.tmp diff --git a/core-java/src/test/java/com/baeldung/copyfiles/FileCopierTest.java b/core-java-io/src/test/java/com/baeldung/copyfiles/FileCopierTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/copyfiles/FileCopierTest.java rename to core-java-io/src/test/java/com/baeldung/copyfiles/FileCopierTest.java diff --git a/core-java/src/test/java/com/baeldung/file/FileOperationsManualTest.java b/core-java-io/src/test/java/com/baeldung/file/FileOperationsManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/file/FileOperationsManualTest.java rename to core-java-io/src/test/java/com/baeldung/file/FileOperationsManualTest.java diff --git a/core-java/src/test/java/com/baeldung/file/FilesTest.java b/core-java-io/src/test/java/com/baeldung/file/FilesTest.java similarity index 99% rename from core-java/src/test/java/com/baeldung/file/FilesTest.java rename to core-java-io/src/test/java/com/baeldung/file/FilesTest.java index e17e8580aa..c5a5b8a3a1 100644 --- a/core-java/src/test/java/com/baeldung/file/FilesTest.java +++ b/core-java-io/src/test/java/com/baeldung/file/FilesTest.java @@ -91,4 +91,4 @@ public class FilesTest { new FileInputStream(fileName))) .isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\n"); } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/filesystem/jndi/test/LookupFSJNDIIntegrationTest.java b/core-java-io/src/test/java/com/baeldung/filesystem/jndi/test/LookupFSJNDIIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/filesystem/jndi/test/LookupFSJNDIIntegrationTest.java rename to core-java-io/src/test/java/com/baeldung/filesystem/jndi/test/LookupFSJNDIIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/java/nio/selector/NioEchoLiveTest.java b/core-java-io/src/test/java/com/baeldung/java/nio/selector/NioEchoLiveTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/nio/selector/NioEchoLiveTest.java rename to core-java-io/src/test/java/com/baeldung/java/nio/selector/NioEchoLiveTest.java diff --git a/core-java/src/test/java/com/baeldung/java/nio2/FileIntegrationTest.java b/core-java-io/src/test/java/com/baeldung/java/nio2/FileIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/nio2/FileIntegrationTest.java rename to core-java-io/src/test/java/com/baeldung/java/nio2/FileIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java b/core-java-io/src/test/java/com/baeldung/java/nio2/PathManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/nio2/PathManualTest.java rename to core-java-io/src/test/java/com/baeldung/java/nio2/PathManualTest.java diff --git a/core-java/src/test/java/com/baeldung/java/nio2/README.md b/core-java-io/src/test/java/com/baeldung/java/nio2/README.md similarity index 100% rename from core-java/src/test/java/com/baeldung/java/nio2/README.md rename to core-java-io/src/test/java/com/baeldung/java/nio2/README.md diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java b/core-java-io/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java rename to core-java-io/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoIntegrationTest.java b/core-java-io/src/test/java/com/baeldung/java/nio2/async/AsyncEchoIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoIntegrationTest.java rename to core-java-io/src/test/java/com/baeldung/java/nio2/async/AsyncEchoIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java b/core-java-io/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java rename to core-java-io/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer.java diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java b/core-java-io/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java rename to core-java-io/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileIntegrationTest.java b/core-java-io/src/test/java/com/baeldung/java/nio2/async/AsyncFileIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/nio2/async/AsyncFileIntegrationTest.java rename to core-java-io/src/test/java/com/baeldung/java/nio2/async/AsyncFileIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsIntegrationTest.java b/core-java-io/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsIntegrationTest.java rename to core-java-io/src/test/java/com/baeldung/java/nio2/attributes/BasicAttribsIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/JavaFileSizeUnitTest.java b/core-java-io/src/test/java/com/baeldung/java8/JavaFileSizeUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/JavaFileSizeUnitTest.java rename to core-java-io/src/test/java/com/baeldung/java8/JavaFileSizeUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java b/core-java-io/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java rename to core-java-io/src/test/java/com/baeldung/java8/JavaFolderSizeUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/mappedbytebuffer/MappedByteBufferUnitTest.java b/core-java-io/src/test/java/com/baeldung/mappedbytebuffer/MappedByteBufferUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/mappedbytebuffer/MappedByteBufferUnitTest.java rename to core-java-io/src/test/java/com/baeldung/mappedbytebuffer/MappedByteBufferUnitTest.java diff --git a/core-java-io/src/test/java/com/baeldung/stream/FileCopyTest.java b/core-java-io/src/test/java/com/baeldung/stream/FileCopyTest.java new file mode 100644 index 0000000000..3b915a3829 --- /dev/null +++ b/core-java-io/src/test/java/com/baeldung/stream/FileCopyTest.java @@ -0,0 +1,47 @@ +package com.baeldung.stream; + +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.IOException; + +import org.junit.Test; + +public class FileCopyTest { + + @Test + public void whenUsingStream_thenCopyFile() throws IOException { + File src = new File("src" + File.separator + "test" + File.separator + "resources" + File.separator + "copyTest" + File.separator + "src" + File.separator + "test_stream.txt"); + File dest = new File("src" + File.separator + "test" + File.separator + "resources" + File.separator + "copyTest" + File.separator + "dest" + File.separator + "test_stream.txt"); + FileCopy.copyFileUsingStream(src, dest); + assertTrue(dest.exists()); + dest.delete(); + } + + @Test + public void whenUsingFiles_thenCopyFile() throws IOException { + File src = new File("src" + File.separator + "test" + File.separator + "resources" + File.separator + "copyTest" + File.separator + "src" + File.separator + "test_files.txt"); + File dest = new File("src" + File.separator + "test" + File.separator + "resources" + File.separator + "copyTest" + File.separator + "dest" + File.separator + "test_files.txt"); + FileCopy.copyFileUsingJavaFiles(src, dest); + assertTrue(dest.exists()); + dest.delete(); + } + + @Test + public void whenUsingChannel_thenCopyFile() throws IOException { + File src = new File("src" + File.separator + "test" + File.separator + "resources" + File.separator + "copyTest" + File.separator + "src" + File.separator + "test_channel.txt"); + File dest = new File("src" + File.separator + "test" + File.separator + "resources" + File.separator + "copyTest" + File.separator + "dest" + File.separator + "test_channel.txt"); + FileCopy.copyFileUsingChannel(src, dest); + assertTrue(dest.exists()); + dest.delete(); + } + + @Test + public void whenUsingApache_thenCopyFile() throws IOException { + File src = new File("src" + File.separator + "test" + File.separator + "resources" + File.separator + "copyTest" + File.separator + "src" + File.separator + "test_apache.txt"); + File dest = new File("src" + File.separator + "test" + File.separator + "resources" + File.separator + "copyTest" + File.separator + "dest" + File.separator + "test_apache.txt"); + FileCopy.copyFileUsingApacheCommonsIO(src, dest); + assertTrue(dest.exists()); + dest.delete(); + } +} diff --git a/core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionUnitTest.java b/core-java-io/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionUnitTest.java rename to core-java-io/src/test/java/org/baeldung/core/exceptions/FileNotFoundExceptionUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaFilePathUnitTest.java b/core-java-io/src/test/java/org/baeldung/java/io/JavaFilePathUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/io/JavaFilePathUnitTest.java rename to core-java-io/src/test/java/org/baeldung/java/io/JavaFilePathUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java b/core-java-io/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java rename to core-java-io/src/test/java/org/baeldung/java/io/JavaFileUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaInputStreamToXUnitTest.java b/core-java-io/src/test/java/org/baeldung/java/io/JavaInputStreamToXUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/io/JavaInputStreamToXUnitTest.java rename to core-java-io/src/test/java/org/baeldung/java/io/JavaInputStreamToXUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java b/core-java-io/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java rename to core-java-io/src/test/java/org/baeldung/java/io/JavaReadFromFileUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaReaderToXUnitTest.java b/core-java-io/src/test/java/org/baeldung/java/io/JavaReaderToXUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/io/JavaReaderToXUnitTest.java rename to core-java-io/src/test/java/org/baeldung/java/io/JavaReaderToXUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaScannerUnitTest.java b/core-java-io/src/test/java/org/baeldung/java/io/JavaScannerUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/io/JavaScannerUnitTest.java rename to core-java-io/src/test/java/org/baeldung/java/io/JavaScannerUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileUnitTest.java b/core-java-io/src/test/java/org/baeldung/java/io/JavaWriteToFileUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/io/JavaWriteToFileUnitTest.java rename to core-java-io/src/test/java/org/baeldung/java/io/JavaWriteToFileUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaXToByteArrayUnitTest.java b/core-java-io/src/test/java/org/baeldung/java/io/JavaXToByteArrayUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/io/JavaXToByteArrayUnitTest.java rename to core-java-io/src/test/java/org/baeldung/java/io/JavaXToByteArrayUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaXToInputStreamUnitTest.java b/core-java-io/src/test/java/org/baeldung/java/io/JavaXToInputStreamUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/io/JavaXToInputStreamUnitTest.java rename to core-java-io/src/test/java/org/baeldung/java/io/JavaXToInputStreamUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaXToReaderUnitTest.java b/core-java-io/src/test/java/org/baeldung/java/io/JavaXToReaderUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/io/JavaXToReaderUnitTest.java rename to core-java-io/src/test/java/org/baeldung/java/io/JavaXToReaderUnitTest.java diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaXToWriterUnitTest.java b/core-java-io/src/test/java/org/baeldung/java/io/JavaXToWriterUnitTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/io/JavaXToWriterUnitTest.java rename to core-java-io/src/test/java/org/baeldung/java/io/JavaXToWriterUnitTest.java diff --git a/core-java-io/src/test/resources/.gitignore b/core-java-io/src/test/resources/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/core-java-io/src/test/resources/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/core-java-io/src/test/resources/configuration.properties b/core-java-io/src/test/resources/configuration.properties new file mode 100644 index 0000000000..338be84946 --- /dev/null +++ b/core-java-io/src/test/resources/configuration.properties @@ -0,0 +1,4 @@ +# this is sample property file for PropertiesLoaderTest configuration needs +! this is also a comment +sampleConfEntry = sample String value +colonSeparatedEntry : colon separated entry value diff --git a/core-java-io/src/test/resources/dictionary.in b/core-java-io/src/test/resources/dictionary.in new file mode 100644 index 0000000000..0cc22a20b0 --- /dev/null +++ b/core-java-io/src/test/resources/dictionary.in @@ -0,0 +1,178691 @@ +AA +AAH +AAHED +AAHING +AAHS +AAL +AALII +AALIIS +AALS +AARDVARK +AARDVARKS +AARDWOLF +AARDWOLVES +AARGH +AARRGH +AARRGHH +AAS +AASVOGEL +AASVOGELS +AB +ABA +ABACA +ABACAS +ABACI +ABACK +ABACTERIAL +ABACUS +ABACUSES +ABAFT +ABAKA +ABAKAS +ABALONE +ABALONES +ABAMP +ABAMPERE +ABAMPERES +ABAMPS +ABANDON +ABANDONED +ABANDONER +ABANDONERS +ABANDONING +ABANDONMENT +ABANDONMENTS +ABANDONS +ABAPICAL +ABAS +ABASE +ABASED +ABASEDLY +ABASEMENT +ABASEMENTS +ABASER +ABASERS +ABASES +ABASH +ABASHED +ABASHEDLY +ABASHES +ABASHING +ABASHMENT +ABASHMENTS +ABASIA +ABASIAS +ABASING +ABATABLE +ABATE +ABATED +ABATEMENT +ABATEMENTS +ABATER +ABATERS +ABATES +ABATING +ABATIS +ABATISES +ABATOR +ABATORS +ABATTIS +ABATTISES +ABATTOIR +ABATTOIRS +ABAXIAL +ABAXILE +ABAYA +ABAYAS +ABBA +ABBACIES +ABBACY +ABBAS +ABBATIAL +ABBE +ABBES +ABBESS +ABBESSES +ABBEY +ABBEYS +ABBOT +ABBOTCIES +ABBOTCY +ABBOTS +ABBOTSHIP +ABBOTSHIPS +ABBREVIATE +ABBREVIATED +ABBREVIATES +ABBREVIATING +ABBREVIATION +ABBREVIATIONS +ABBREVIATOR +ABBREVIATORS +ABCOULOMB +ABCOULOMBS +ABDICABLE +ABDICATE +ABDICATED +ABDICATES +ABDICATING +ABDICATION +ABDICATIONS +ABDICATOR +ABDICATORS +ABDOMEN +ABDOMENS +ABDOMINA +ABDOMINAL +ABDOMINALLY +ABDOMINALS +ABDUCE +ABDUCED +ABDUCENS +ABDUCENT +ABDUCENTES +ABDUCES +ABDUCING +ABDUCT +ABDUCTED +ABDUCTEE +ABDUCTEES +ABDUCTING +ABDUCTION +ABDUCTIONS +ABDUCTOR +ABDUCTORES +ABDUCTORS +ABDUCTS +ABEAM +ABECEDARIAN +ABECEDARIANS +ABED +ABEGGING +ABELE +ABELES +ABELIA +ABELIAN +ABELIAS +ABELMOSK +ABELMOSKS +ABERRANCE +ABERRANCES +ABERRANCIES +ABERRANCY +ABERRANT +ABERRANTLY +ABERRANTS +ABERRATED +ABERRATION +ABERRATIONAL +ABERRATIONS +ABET +ABETMENT +ABETMENTS +ABETS +ABETTAL +ABETTALS +ABETTED +ABETTER +ABETTERS +ABETTING +ABETTOR +ABETTORS +ABEYANCE +ABEYANCES +ABEYANCIES +ABEYANCY +ABEYANT +ABFARAD +ABFARADS +ABHENRIES +ABHENRY +ABHENRYS +ABHOR +ABHORRED +ABHORRENCE +ABHORRENCES +ABHORRENT +ABHORRENTLY +ABHORRER +ABHORRERS +ABHORRING +ABHORS +ABIDANCE +ABIDANCES +ABIDE +ABIDED +ABIDER +ABIDERS +ABIDES +ABIDING +ABIDINGLY +ABIGAIL +ABIGAILS +ABILITIES +ABILITY +ABIOGENESES +ABIOGENESIS +ABIOGENIC +ABIOGENICALLY +ABIOGENIST +ABIOGENISTS +ABIOLOGICAL +ABIOSES +ABIOSIS +ABIOTIC +ABIOTICALLY +ABJECT +ABJECTION +ABJECTIONS +ABJECTLY +ABJECTNESS +ABJECTNESSES +ABJURATION +ABJURATIONS +ABJURE +ABJURED +ABJURER +ABJURERS +ABJURES +ABJURING +ABLATE +ABLATED +ABLATES +ABLATING +ABLATION +ABLATIONS +ABLATIVE +ABLATIVELY +ABLATIVES +ABLATOR +ABLATORS +ABLAUT +ABLAUTS +ABLAZE +ABLE +ABLED +ABLEGATE +ABLEGATES +ABLEISM +ABLEISMS +ABLEIST +ABLEISTS +ABLER +ABLES +ABLEST +ABLINGS +ABLINS +ABLOOM +ABLUENT +ABLUENTS +ABLUSH +ABLUTED +ABLUTION +ABLUTIONARY +ABLUTIONS +ABLY +ABMHO +ABMHOS +ABNEGATE +ABNEGATED +ABNEGATES +ABNEGATING +ABNEGATION +ABNEGATIONS +ABNEGATOR +ABNEGATORS +ABNORMAL +ABNORMALITIES +ABNORMALITY +ABNORMALLY +ABNORMALS +ABNORMITIES +ABNORMITY +ABO +ABOARD +ABODE +ABODED +ABODES +ABODING +ABOHM +ABOHMS +ABOIDEAU +ABOIDEAUS +ABOIDEAUX +ABOIL +ABOITEAU +ABOITEAUS +ABOITEAUX +ABOLISH +ABOLISHABLE +ABOLISHED +ABOLISHER +ABOLISHERS +ABOLISHES +ABOLISHING +ABOLISHMENT +ABOLISHMENTS +ABOLITION +ABOLITIONARY +ABOLITIONISM +ABOLITIONISMS +ABOLITIONIST +ABOLITIONISTS +ABOLITIONS +ABOLLA +ABOLLAE +ABOMA +ABOMAS +ABOMASA +ABOMASAL +ABOMASI +ABOMASUM +ABOMASUS +ABOMINABLE +ABOMINABLY +ABOMINATE +ABOMINATED +ABOMINATES +ABOMINATING +ABOMINATION +ABOMINATIONS +ABOMINATOR +ABOMINATORS +ABOON +ABORAL +ABORALLY +ABORIGINAL +ABORIGINALLY +ABORIGINALS +ABORIGINE +ABORIGINES +ABORNING +ABORT +ABORTED +ABORTER +ABORTERS +ABORTIFACIENT +ABORTIFACIENTS +ABORTING +ABORTION +ABORTIONIST +ABORTIONISTS +ABORTIONS +ABORTIVE +ABORTIVELY +ABORTIVENESS +ABORTIVENESSES +ABORTS +ABORTUS +ABORTUSES +ABOS +ABOUGHT +ABOULIA +ABOULIAS +ABOULIC +ABOUND +ABOUNDED +ABOUNDING +ABOUNDS +ABOUT +ABOVE +ABOVEBOARD +ABOVEGROUND +ABOVES +ABRACADABRA +ABRACADABRAS +ABRACHIA +ABRACHIAS +ABRADABLE +ABRADANT +ABRADANTS +ABRADE +ABRADED +ABRADER +ABRADERS +ABRADES +ABRADING +ABRASION +ABRASIONS +ABRASIVE +ABRASIVELY +ABRASIVENESS +ABRASIVENESSES +ABRASIVES +ABREACT +ABREACTED +ABREACTING +ABREACTION +ABREACTIONS +ABREACTS +ABREAST +ABRI +ABRIDGE +ABRIDGED +ABRIDGEMENT +ABRIDGEMENTS +ABRIDGER +ABRIDGERS +ABRIDGES +ABRIDGING +ABRIDGMENT +ABRIDGMENTS +ABRIS +ABROACH +ABROAD +ABROGABLE +ABROGATE +ABROGATED +ABROGATES +ABROGATING +ABROGATION +ABROGATIONS +ABROGATOR +ABROGATORS +ABROSIA +ABROSIAS +ABRUPT +ABRUPTER +ABRUPTEST +ABRUPTION +ABRUPTIONS +ABRUPTLY +ABRUPTNESS +ABRUPTNESSES +ABS +ABSCESS +ABSCESSED +ABSCESSES +ABSCESSING +ABSCISE +ABSCISED +ABSCISES +ABSCISIN +ABSCISING +ABSCISINS +ABSCISSA +ABSCISSAE +ABSCISSAS +ABSCISSION +ABSCISSIONS +ABSCOND +ABSCONDED +ABSCONDER +ABSCONDERS +ABSCONDING +ABSCONDS +ABSEIL +ABSEILED +ABSEILING +ABSEILS +ABSENCE +ABSENCES +ABSENT +ABSENTED +ABSENTEE +ABSENTEEISM +ABSENTEEISMS +ABSENTEES +ABSENTER +ABSENTERS +ABSENTING +ABSENTLY +ABSENTMINDED +ABSENTMINDEDLY +ABSENTS +ABSINTH +ABSINTHE +ABSINTHES +ABSINTHS +ABSOLUTE +ABSOLUTELY +ABSOLUTENESS +ABSOLUTENESSES +ABSOLUTER +ABSOLUTES +ABSOLUTEST +ABSOLUTION +ABSOLUTIONS +ABSOLUTISM +ABSOLUTISMS +ABSOLUTIST +ABSOLUTISTIC +ABSOLUTISTS +ABSOLUTIVE +ABSOLUTIZE +ABSOLUTIZED +ABSOLUTIZES +ABSOLUTIZING +ABSOLVE +ABSOLVED +ABSOLVENT +ABSOLVENTS +ABSOLVER +ABSOLVERS +ABSOLVES +ABSOLVING +ABSONANT +ABSORB +ABSORBABILITIES +ABSORBABILITY +ABSORBABLE +ABSORBANCE +ABSORBANCES +ABSORBANCIES +ABSORBANCY +ABSORBANT +ABSORBANTS +ABSORBED +ABSORBENCIES +ABSORBENCY +ABSORBENT +ABSORBENTS +ABSORBER +ABSORBERS +ABSORBING +ABSORBINGLY +ABSORBS +ABSORPTANCE +ABSORPTANCES +ABSORPTION +ABSORPTIONS +ABSORPTIVE +ABSORPTIVITIES +ABSORPTIVITY +ABSTAIN +ABSTAINED +ABSTAINER +ABSTAINERS +ABSTAINING +ABSTAINS +ABSTEMIOUS +ABSTEMIOUSLY +ABSTEMIOUSNESS +ABSTENTION +ABSTENTIONS +ABSTENTIOUS +ABSTERGE +ABSTERGED +ABSTERGES +ABSTERGING +ABSTINENCE +ABSTINENCES +ABSTINENT +ABSTINENTLY +ABSTRACT +ABSTRACTABLE +ABSTRACTED +ABSTRACTEDLY +ABSTRACTEDNESS +ABSTRACTER +ABSTRACTERS +ABSTRACTEST +ABSTRACTING +ABSTRACTION +ABSTRACTIONAL +ABSTRACTIONISM +ABSTRACTIONISMS +ABSTRACTIONIST +ABSTRACTIONISTS +ABSTRACTIONS +ABSTRACTIVE +ABSTRACTLY +ABSTRACTNESS +ABSTRACTNESSES +ABSTRACTOR +ABSTRACTORS +ABSTRACTS +ABSTRICT +ABSTRICTED +ABSTRICTING +ABSTRICTS +ABSTRUSE +ABSTRUSELY +ABSTRUSENESS +ABSTRUSENESSES +ABSTRUSER +ABSTRUSEST +ABSTRUSITIES +ABSTRUSITY +ABSURD +ABSURDER +ABSURDEST +ABSURDISM +ABSURDISMS +ABSURDIST +ABSURDISTS +ABSURDITIES +ABSURDITY +ABSURDLY +ABSURDNESS +ABSURDNESSES +ABSURDS +ABUBBLE +ABUILDING +ABULIA +ABULIAS +ABULIC +ABUNDANCE +ABUNDANCES +ABUNDANT +ABUNDANTLY +ABUSABLE +ABUSE +ABUSED +ABUSER +ABUSERS +ABUSES +ABUSING +ABUSIVE +ABUSIVELY +ABUSIVENESS +ABUSIVENESSES +ABUT +ABUTILON +ABUTILONS +ABUTMENT +ABUTMENTS +ABUTS +ABUTTAL +ABUTTALS +ABUTTED +ABUTTER +ABUTTERS +ABUTTING +ABUZZ +ABVOLT +ABVOLTS +ABWATT +ABWATTS +ABY +ABYE +ABYES +ABYING +ABYS +ABYSM +ABYSMAL +ABYSMALLY +ABYSMS +ABYSS +ABYSSAL +ABYSSES +ACACIA +ACACIAS +ACADEME +ACADEMES +ACADEMIA +ACADEMIAS +ACADEMIC +ACADEMICAL +ACADEMICALLY +ACADEMICIAN +ACADEMICIANS +ACADEMICISM +ACADEMICISMS +ACADEMICS +ACADEMIES +ACADEMISM +ACADEMISMS +ACADEMY +ACAJOU +ACAJOUS +ACALEPH +ACALEPHAE +ACALEPHE +ACALEPHES +ACALEPHS +ACANTHA +ACANTHAE +ACANTHI +ACANTHINE +ACANTHOCEPHALAN +ACANTHOID +ACANTHOUS +ACANTHUS +ACANTHUSES +ACAPNIA +ACAPNIAS +ACARBOSE +ACARBOSES +ACARI +ACARIASES +ACARIASIS +ACARICIDAL +ACARICIDE +ACARICIDES +ACARID +ACARIDAN +ACARIDANS +ACARIDS +ACARINE +ACARINES +ACAROID +ACAROLOGIES +ACAROLOGY +ACARPOUS +ACARUS +ACATALECTIC +ACATALECTICS +ACAUDAL +ACAUDATE +ACAULESCENT +ACAULINE +ACAULOSE +ACAULOUS +ACCEDE +ACCEDED +ACCEDENCE +ACCEDENCES +ACCEDER +ACCEDERS +ACCEDES +ACCEDING +ACCELERANDO +ACCELERANDOS +ACCELERANT +ACCELERANTS +ACCELERATE +ACCELERATED +ACCELERATES +ACCELERATING +ACCELERATINGLY +ACCELERATION +ACCELERATIONS +ACCELERATIVE +ACCELERATOR +ACCELERATORS +ACCELEROMETER +ACCELEROMETERS +ACCENT +ACCENTED +ACCENTING +ACCENTLESS +ACCENTOR +ACCENTORS +ACCENTS +ACCENTUAL +ACCENTUALLY +ACCENTUATE +ACCENTUATED +ACCENTUATES +ACCENTUATING +ACCENTUATION +ACCENTUATIONS +ACCEPT +ACCEPTABILITIES +ACCEPTABILITY +ACCEPTABLE +ACCEPTABLENESS +ACCEPTABLY +ACCEPTANCE +ACCEPTANCES +ACCEPTANT +ACCEPTATION +ACCEPTATIONS +ACCEPTED +ACCEPTEDLY +ACCEPTEE +ACCEPTEES +ACCEPTER +ACCEPTERS +ACCEPTING +ACCEPTINGLY +ACCEPTINGNESS +ACCEPTINGNESSES +ACCEPTIVE +ACCEPTOR +ACCEPTORS +ACCEPTS +ACCESS +ACCESSARIES +ACCESSARY +ACCESSED +ACCESSES +ACCESSIBILITIES +ACCESSIBILITY +ACCESSIBLE +ACCESSIBLENESS +ACCESSIBLY +ACCESSING +ACCESSION +ACCESSIONAL +ACCESSIONED +ACCESSIONING +ACCESSIONS +ACCESSORIAL +ACCESSORIES +ACCESSORISE +ACCESSORISED +ACCESSORISES +ACCESSORISING +ACCESSORIZE +ACCESSORIZED +ACCESSORIZES +ACCESSORIZING +ACCESSORY +ACCIACCATURA +ACCIACCATURAS +ACCIDENCE +ACCIDENCES +ACCIDENT +ACCIDENTAL +ACCIDENTALLY +ACCIDENTALNESS +ACCIDENTALS +ACCIDENTLY +ACCIDENTS +ACCIDIA +ACCIDIAS +ACCIDIE +ACCIDIES +ACCIPITER +ACCIPITERS +ACCIPITRINE +ACCIPITRINES +ACCLAIM +ACCLAIMED +ACCLAIMER +ACCLAIMERS +ACCLAIMING +ACCLAIMS +ACCLAMATION +ACCLAMATIONS +ACCLIMATE +ACCLIMATED +ACCLIMATES +ACCLIMATING +ACCLIMATION +ACCLIMATIONS +ACCLIMATISE +ACCLIMATISED +ACCLIMATISES +ACCLIMATISING +ACCLIMATIZATION +ACCLIMATIZE +ACCLIMATIZED +ACCLIMATIZER +ACCLIMATIZERS +ACCLIMATIZES +ACCLIMATIZING +ACCLIVITIES +ACCLIVITY +ACCLIVOUS +ACCOLADE +ACCOLADED +ACCOLADES +ACCOLADING +ACCOMMODATE +ACCOMMODATED +ACCOMMODATES +ACCOMMODATING +ACCOMMODATINGLY +ACCOMMODATION +ACCOMMODATIONAL +ACCOMMODATIONS +ACCOMMODATIVE +ACCOMMODATOR +ACCOMMODATORS +ACCOMPANIED +ACCOMPANIES +ACCOMPANIMENT +ACCOMPANIMENTS +ACCOMPANIST +ACCOMPANISTS +ACCOMPANY +ACCOMPANYING +ACCOMPLICE +ACCOMPLICES +ACCOMPLISH +ACCOMPLISHABLE +ACCOMPLISHED +ACCOMPLISHER +ACCOMPLISHERS +ACCOMPLISHES +ACCOMPLISHING +ACCOMPLISHMENT +ACCOMPLISHMENTS +ACCORD +ACCORDANCE +ACCORDANCES +ACCORDANT +ACCORDANTLY +ACCORDED +ACCORDER +ACCORDERS +ACCORDING +ACCORDINGLY +ACCORDION +ACCORDIONIST +ACCORDIONISTS +ACCORDIONS +ACCORDS +ACCOST +ACCOSTED +ACCOSTING +ACCOSTS +ACCOUCHEMENT +ACCOUCHEMENTS +ACCOUCHEUR +ACCOUCHEURS +ACCOUNT +ACCOUNTABILITY +ACCOUNTABLE +ACCOUNTABLENESS +ACCOUNTABLY +ACCOUNTANCIES +ACCOUNTANCY +ACCOUNTANT +ACCOUNTANTS +ACCOUNTANTSHIP +ACCOUNTANTSHIPS +ACCOUNTED +ACCOUNTING +ACCOUNTINGS +ACCOUNTS +ACCOUTER +ACCOUTERED +ACCOUTERING +ACCOUTERMENT +ACCOUTERMENTS +ACCOUTERS +ACCOUTRE +ACCOUTRED +ACCOUTREMENT +ACCOUTREMENTS +ACCOUTRES +ACCOUTRING +ACCREDIT +ACCREDITABLE +ACCREDITATION +ACCREDITATIONS +ACCREDITED +ACCREDITING +ACCREDITS +ACCRETE +ACCRETED +ACCRETES +ACCRETING +ACCRETION +ACCRETIONARY +ACCRETIONS +ACCRETIVE +ACCRUABLE +ACCRUAL +ACCRUALS +ACCRUE +ACCRUED +ACCRUEMENT +ACCRUEMENTS +ACCRUES +ACCRUING +ACCULTURATE +ACCULTURATED +ACCULTURATES +ACCULTURATING +ACCULTURATION +ACCULTURATIONAL +ACCULTURATIONS +ACCULTURATIVE +ACCUMBENT +ACCUMULATE +ACCUMULATED +ACCUMULATES +ACCUMULATING +ACCUMULATION +ACCUMULATIONS +ACCUMULATIVE +ACCUMULATIVELY +ACCUMULATOR +ACCUMULATORS +ACCURACIES +ACCURACY +ACCURATE +ACCURATELY +ACCURATENESS +ACCURATENESSES +ACCURSED +ACCURSEDLY +ACCURSEDNESS +ACCURSEDNESSES +ACCURST +ACCUSABLE +ACCUSABLY +ACCUSAL +ACCUSALS +ACCUSANT +ACCUSANTS +ACCUSATION +ACCUSATIONS +ACCUSATIVE +ACCUSATIVES +ACCUSATORY +ACCUSE +ACCUSED +ACCUSER +ACCUSERS +ACCUSES +ACCUSING +ACCUSINGLY +ACCUSTOM +ACCUSTOMATION +ACCUSTOMATIONS +ACCUSTOMED +ACCUSTOMEDNESS +ACCUSTOMING +ACCUSTOMS +ACE +ACED +ACEDIA +ACEDIAS +ACELDAMA +ACELDAMAS +ACELLULAR +ACENTRIC +ACEPHALIC +ACEPHALOUS +ACEQUIA +ACEQUIAS +ACERATE +ACERATED +ACERB +ACERBATE +ACERBATED +ACERBATES +ACERBATING +ACERBER +ACERBEST +ACERBIC +ACERBICALLY +ACERBITIES +ACERBITY +ACEROLA +ACEROLAS +ACEROSE +ACEROUS +ACERVATE +ACERVULI +ACERVULUS +ACES +ACESCENT +ACESCENTS +ACETA +ACETABULA +ACETABULAR +ACETABULUM +ACETABULUMS +ACETAL +ACETALDEHYDE +ACETALDEHYDES +ACETALS +ACETAMID +ACETAMIDE +ACETAMIDES +ACETAMIDS +ACETAMINOPHEN +ACETAMINOPHENS +ACETANILID +ACETANILIDE +ACETANILIDES +ACETANILIDS +ACETATE +ACETATED +ACETATES +ACETAZOLAMIDE +ACETAZOLAMIDES +ACETIC +ACETIFICATION +ACETIFICATIONS +ACETIFIED +ACETIFIER +ACETIFIERS +ACETIFIES +ACETIFY +ACETIFYING +ACETIN +ACETINS +ACETONE +ACETONES +ACETONIC +ACETONITRILE +ACETONITRILES +ACETOPHENETIDIN +ACETOSE +ACETOUS +ACETOXYL +ACETOXYLS +ACETUM +ACETYL +ACETYLATE +ACETYLATED +ACETYLATES +ACETYLATING +ACETYLATION +ACETYLATIONS +ACETYLATIVE +ACETYLCHOLINE +ACETYLCHOLINES +ACETYLENE +ACETYLENES +ACETYLENIC +ACETYLIC +ACETYLS +ACHALASIA +ACHALASIAS +ACHE +ACHED +ACHENE +ACHENES +ACHENIAL +ACHES +ACHIER +ACHIEST +ACHIEVABLE +ACHIEVE +ACHIEVED +ACHIEVEMENT +ACHIEVEMENTS +ACHIEVER +ACHIEVERS +ACHIEVES +ACHIEVING +ACHILLEA +ACHILLEAS +ACHINESS +ACHINESSES +ACHING +ACHINGLY +ACHIOTE +ACHIOTES +ACHIRAL +ACHLORHYDRIA +ACHLORHYDRIAS +ACHLORHYDRIC +ACHOLIA +ACHOLIAS +ACHONDRITE +ACHONDRITES +ACHONDRITIC +ACHONDROPLASIA +ACHONDROPLASIAS +ACHONDROPLASTIC +ACHOO +ACHROMAT +ACHROMATIC +ACHROMATICALLY +ACHROMATISM +ACHROMATISMS +ACHROMATIZE +ACHROMATIZED +ACHROMATIZES +ACHROMATIZING +ACHROMATS +ACHROMIC +ACHROMOUS +ACHY +ACICULA +ACICULAE +ACICULAR +ACICULAS +ACICULATE +ACICULUM +ACICULUMS +ACID +ACIDEMIA +ACIDEMIAS +ACIDHEAD +ACIDHEADS +ACIDIC +ACIDIFICATION +ACIDIFICATIONS +ACIDIFIED +ACIDIFIER +ACIDIFIERS +ACIDIFIES +ACIDIFY +ACIDIFYING +ACIDIMETER +ACIDIMETERS +ACIDIMETRIC +ACIDIMETRIES +ACIDIMETRY +ACIDITIES +ACIDITY +ACIDLY +ACIDNESS +ACIDNESSES +ACIDOPHIL +ACIDOPHILE +ACIDOPHILES +ACIDOPHILIC +ACIDOPHILS +ACIDOSES +ACIDOSIS +ACIDOTIC +ACIDS +ACIDULATE +ACIDULATED +ACIDULATES +ACIDULATING +ACIDULATION +ACIDULATIONS +ACIDULENT +ACIDULOUS +ACIDURIA +ACIDURIAS +ACIDY +ACIERATE +ACIERATED +ACIERATES +ACIERATING +ACIFORM +ACINAR +ACING +ACINI +ACINIC +ACINIFORM +ACINOSE +ACINOUS +ACINUS +ACKEE +ACKEES +ACKNOWLEDGE +ACKNOWLEDGED +ACKNOWLEDGEDLY +ACKNOWLEDGEMENT +ACKNOWLEDGES +ACKNOWLEDGING +ACKNOWLEDGMENT +ACKNOWLEDGMENTS +ACLINIC +ACMATIC +ACME +ACMES +ACMIC +ACNE +ACNED +ACNES +ACNODE +ACNODES +ACOCK +ACOELOMATE +ACOELOMATES +ACOELOUS +ACOLD +ACOLYTE +ACOLYTES +ACONITE +ACONITES +ACONITIC +ACONITUM +ACONITUMS +ACORN +ACORNED +ACORNS +ACOUSTIC +ACOUSTICAL +ACOUSTICALLY +ACOUSTICIAN +ACOUSTICIANS +ACOUSTICS +ACQUAINT +ACQUAINTANCE +ACQUAINTANCES +ACQUAINTED +ACQUAINTING +ACQUAINTS +ACQUEST +ACQUESTS +ACQUIESCE +ACQUIESCED +ACQUIESCENCE +ACQUIESCENCES +ACQUIESCENT +ACQUIESCENTLY +ACQUIESCES +ACQUIESCING +ACQUIRABLE +ACQUIRE +ACQUIRED +ACQUIREE +ACQUIREES +ACQUIREMENT +ACQUIREMENTS +ACQUIRER +ACQUIRERS +ACQUIRES +ACQUIRING +ACQUISITION +ACQUISITIONAL +ACQUISITIONS +ACQUISITIVE +ACQUISITIVELY +ACQUISITIVENESS +ACQUISITOR +ACQUISITORS +ACQUIT +ACQUITS +ACQUITTAL +ACQUITTALS +ACQUITTANCE +ACQUITTANCES +ACQUITTED +ACQUITTER +ACQUITTERS +ACQUITTING +ACRASIA +ACRASIAS +ACRASIN +ACRASINS +ACRE +ACREAGE +ACREAGES +ACRED +ACRES +ACRID +ACRIDER +ACRIDEST +ACRIDINE +ACRIDINES +ACRIDITIES +ACRIDITY +ACRIDLY +ACRIDNESS +ACRIDNESSES +ACRIFLAVINE +ACRIFLAVINES +ACRIMONIES +ACRIMONIOUS +ACRIMONIOUSLY +ACRIMONIOUSNESS +ACRIMONY +ACRITARCH +ACRITARCHS +ACRITICAL +ACROBAT +ACROBATIC +ACROBATICALLY +ACROBATICS +ACROBATS +ACROCENTRIC +ACROCENTRICS +ACRODONT +ACRODONTS +ACROGEN +ACROGENIC +ACROGENS +ACROLECT +ACROLECTS +ACROLEIN +ACROLEINS +ACROLITH +ACROLITHS +ACROMEGALIC +ACROMEGALICS +ACROMEGALIES +ACROMEGALY +ACROMIA +ACROMIAL +ACROMION +ACRONIC +ACRONICAL +ACRONYCAL +ACRONYM +ACRONYMIC +ACRONYMICALLY +ACRONYMS +ACROPETAL +ACROPETALLY +ACROPHOBE +ACROPHOBES +ACROPHOBIA +ACROPHOBIAS +ACROPOLIS +ACROPOLISES +ACROSOMAL +ACROSOME +ACROSOMES +ACROSPIRE +ACROSPIRES +ACROSS +ACROSTIC +ACROSTICAL +ACROSTICALLY +ACROSTICS +ACROTIC +ACROTISM +ACROTISMS +ACRYLAMIDE +ACRYLAMIDES +ACRYLATE +ACRYLATES +ACRYLIC +ACRYLICS +ACRYLONITRILE +ACRYLONITRILES +ACT +ACTA +ACTABILITIES +ACTABILITY +ACTABLE +ACTED +ACTIN +ACTINAL +ACTINALLY +ACTING +ACTINGS +ACTINIA +ACTINIAE +ACTINIAN +ACTINIANS +ACTINIAS +ACTINIC +ACTINICALLY +ACTINIDE +ACTINIDES +ACTINISM +ACTINISMS +ACTINIUM +ACTINIUMS +ACTINOID +ACTINOIDS +ACTINOLITE +ACTINOLITES +ACTINOMETER +ACTINOMETERS +ACTINOMETRIC +ACTINOMETRIES +ACTINOMETRY +ACTINOMORPHIC +ACTINOMORPHIES +ACTINOMORPHY +ACTINOMYCES +ACTINOMYCETE +ACTINOMYCETES +ACTINOMYCETOUS +ACTINOMYCIN +ACTINOMYCINS +ACTINOMYCOSES +ACTINOMYCOSIS +ACTINOMYCOTIC +ACTINON +ACTINONS +ACTINS +ACTION +ACTIONABLE +ACTIONABLY +ACTIONER +ACTIONERS +ACTIONLESS +ACTIONS +ACTIVATE +ACTIVATED +ACTIVATES +ACTIVATING +ACTIVATION +ACTIVATIONS +ACTIVATOR +ACTIVATORS +ACTIVE +ACTIVELY +ACTIVENESS +ACTIVENESSES +ACTIVES +ACTIVISM +ACTIVISMS +ACTIVIST +ACTIVISTIC +ACTIVISTS +ACTIVITIES +ACTIVITY +ACTIVIZE +ACTIVIZED +ACTIVIZES +ACTIVIZING +ACTOMYOSIN +ACTOMYOSINS +ACTOR +ACTORISH +ACTORLY +ACTORS +ACTRESS +ACTRESSES +ACTRESSY +ACTS +ACTUAL +ACTUALITIES +ACTUALITY +ACTUALIZATION +ACTUALIZATIONS +ACTUALIZE +ACTUALIZED +ACTUALIZES +ACTUALIZING +ACTUALLY +ACTUARIAL +ACTUARIALLY +ACTUARIES +ACTUARY +ACTUATE +ACTUATED +ACTUATES +ACTUATING +ACTUATION +ACTUATIONS +ACTUATOR +ACTUATORS +ACUATE +ACUITIES +ACUITY +ACULEATE +ACULEATED +ACULEI +ACULEUS +ACUMEN +ACUMENS +ACUMINATE +ACUMINATED +ACUMINATES +ACUMINATING +ACUMINOUS +ACUPRESSURE +ACUPRESSURES +ACUPUNCTURE +ACUPUNCTURES +ACUPUNCTURIST +ACUPUNCTURISTS +ACUTANCE +ACUTANCES +ACUTE +ACUTELY +ACUTENESS +ACUTENESSES +ACUTER +ACUTES +ACUTEST +ACYCLIC +ACYCLOVIR +ACYCLOVIRS +ACYL +ACYLATE +ACYLATED +ACYLATES +ACYLATING +ACYLATION +ACYLATIONS +ACYLOIN +ACYLOINS +ACYLS +AD +ADAGE +ADAGES +ADAGIAL +ADAGIO +ADAGIOS +ADAMANCE +ADAMANCES +ADAMANCIES +ADAMANCY +ADAMANT +ADAMANTINE +ADAMANTLY +ADAMANTS +ADAMSITE +ADAMSITES +ADAPT +ADAPTABILITIES +ADAPTABILITY +ADAPTABLE +ADAPTATION +ADAPTATIONAL +ADAPTATIONALLY +ADAPTATIONS +ADAPTED +ADAPTEDNESS +ADAPTEDNESSES +ADAPTER +ADAPTERS +ADAPTING +ADAPTION +ADAPTIONS +ADAPTIVE +ADAPTIVELY +ADAPTIVENESS +ADAPTIVENESSES +ADAPTIVITIES +ADAPTIVITY +ADAPTOR +ADAPTORS +ADAPTS +ADAXIAL +ADD +ADDABLE +ADDAX +ADDAXES +ADDED +ADDEDLY +ADDEND +ADDENDA +ADDENDS +ADDENDUM +ADDENDUMS +ADDER +ADDERS +ADDIBLE +ADDICT +ADDICTED +ADDICTING +ADDICTION +ADDICTIONS +ADDICTIVE +ADDICTS +ADDING +ADDITION +ADDITIONAL +ADDITIONALLY +ADDITIONS +ADDITIVE +ADDITIVELY +ADDITIVES +ADDITIVITIES +ADDITIVITY +ADDITORY +ADDLE +ADDLED +ADDLEPATED +ADDLES +ADDLING +ADDRESS +ADDRESSABILITY +ADDRESSABLE +ADDRESSED +ADDRESSEE +ADDRESSEES +ADDRESSER +ADDRESSERS +ADDRESSES +ADDRESSING +ADDRESSOR +ADDRESSORS +ADDREST +ADDS +ADDUCE +ADDUCED +ADDUCENT +ADDUCER +ADDUCERS +ADDUCES +ADDUCIBLE +ADDUCING +ADDUCT +ADDUCTED +ADDUCTING +ADDUCTION +ADDUCTIONS +ADDUCTIVE +ADDUCTOR +ADDUCTORS +ADDUCTS +ADEEM +ADEEMED +ADEEMING +ADEEMS +ADEMPTION +ADEMPTIONS +ADENINE +ADENINES +ADENITIS +ADENITISES +ADENOCARCINOMA +ADENOCARCINOMAS +ADENOHYPOPHYSES +ADENOHYPOPHYSIS +ADENOID +ADENOIDAL +ADENOIDS +ADENOMA +ADENOMAS +ADENOMATA +ADENOMATOUS +ADENOSES +ADENOSINE +ADENOSINES +ADENOSIS +ADENOVIRAL +ADENOVIRUS +ADENOVIRUSES +ADENYL +ADENYLS +ADEPT +ADEPTER +ADEPTEST +ADEPTLY +ADEPTNESS +ADEPTNESSES +ADEPTS +ADEQUACIES +ADEQUACY +ADEQUATE +ADEQUATELY +ADEQUATENESS +ADEQUATENESSES +ADHERABLE +ADHERE +ADHERED +ADHERENCE +ADHERENCES +ADHEREND +ADHERENDS +ADHERENT +ADHERENTLY +ADHERENTS +ADHERER +ADHERERS +ADHERES +ADHERING +ADHESION +ADHESIONAL +ADHESIONS +ADHESIVE +ADHESIVELY +ADHESIVENESS +ADHESIVENESSES +ADHESIVES +ADHIBIT +ADHIBITED +ADHIBITING +ADHIBITS +ADIABATIC +ADIABATICALLY +ADIEU +ADIEUS +ADIEUX +ADIOS +ADIPIC +ADIPOCERE +ADIPOCERES +ADIPOCYTE +ADIPOCYTES +ADIPOSE +ADIPOSES +ADIPOSIS +ADIPOSITIES +ADIPOSITY +ADIPOUS +ADIT +ADITS +ADJACENCE +ADJACENCES +ADJACENCIES +ADJACENCY +ADJACENT +ADJACENTLY +ADJECTIVAL +ADJECTIVALLY +ADJECTIVE +ADJECTIVELY +ADJECTIVES +ADJOIN +ADJOINED +ADJOINING +ADJOINS +ADJOINT +ADJOINTS +ADJOURN +ADJOURNED +ADJOURNING +ADJOURNMENT +ADJOURNMENTS +ADJOURNS +ADJUDGE +ADJUDGED +ADJUDGES +ADJUDGING +ADJUDICATE +ADJUDICATED +ADJUDICATES +ADJUDICATING +ADJUDICATION +ADJUDICATIONS +ADJUDICATIVE +ADJUDICATOR +ADJUDICATORS +ADJUDICATORY +ADJUNCT +ADJUNCTION +ADJUNCTIONS +ADJUNCTIVE +ADJUNCTLY +ADJUNCTS +ADJURATION +ADJURATIONS +ADJURATORY +ADJURE +ADJURED +ADJURER +ADJURERS +ADJURES +ADJURING +ADJUROR +ADJURORS +ADJUST +ADJUSTABILITIES +ADJUSTABILITY +ADJUSTABLE +ADJUSTED +ADJUSTER +ADJUSTERS +ADJUSTING +ADJUSTIVE +ADJUSTMENT +ADJUSTMENTAL +ADJUSTMENTS +ADJUSTOR +ADJUSTORS +ADJUSTS +ADJUTANCIES +ADJUTANCY +ADJUTANT +ADJUTANTS +ADJUVANT +ADJUVANTS +ADMAN +ADMASS +ADMASSES +ADMEASURE +ADMEASURED +ADMEASUREMENT +ADMEASUREMENTS +ADMEASURES +ADMEASURING +ADMEN +ADMINISTER +ADMINISTERED +ADMINISTERING +ADMINISTERS +ADMINISTRABLE +ADMINISTRANT +ADMINISTRANTS +ADMINISTRATE +ADMINISTRATED +ADMINISTRATES +ADMINISTRATING +ADMINISTRATION +ADMINISTRATIONS +ADMINISTRATIVE +ADMINISTRATOR +ADMINISTRATORS +ADMINISTRATRIX +ADMIRABILITIES +ADMIRABILITY +ADMIRABLE +ADMIRABLENESS +ADMIRABLENESSES +ADMIRABLY +ADMIRAL +ADMIRALS +ADMIRALTIES +ADMIRALTY +ADMIRATION +ADMIRATIONS +ADMIRE +ADMIRED +ADMIRER +ADMIRERS +ADMIRES +ADMIRING +ADMIRINGLY +ADMISSIBILITIES +ADMISSIBILITY +ADMISSIBLE +ADMISSION +ADMISSIONS +ADMISSIVE +ADMIT +ADMITS +ADMITTANCE +ADMITTANCES +ADMITTED +ADMITTEDLY +ADMITTEE +ADMITTEES +ADMITTER +ADMITTERS +ADMITTING +ADMIX +ADMIXED +ADMIXES +ADMIXING +ADMIXT +ADMIXTURE +ADMIXTURES +ADMONISH +ADMONISHED +ADMONISHER +ADMONISHERS +ADMONISHES +ADMONISHING +ADMONISHINGLY +ADMONISHMENT +ADMONISHMENTS +ADMONITION +ADMONITIONS +ADMONITOR +ADMONITORILY +ADMONITORS +ADMONITORY +ADNATE +ADNATION +ADNATIONS +ADNEXA +ADNEXAL +ADNOUN +ADNOUNS +ADO +ADOBE +ADOBELIKE +ADOBES +ADOBO +ADOBOS +ADOLESCENCE +ADOLESCENCES +ADOLESCENT +ADOLESCENTLY +ADOLESCENTS +ADONIS +ADONISES +ADOPT +ADOPTABILITIES +ADOPTABILITY +ADOPTABLE +ADOPTED +ADOPTEE +ADOPTEES +ADOPTER +ADOPTERS +ADOPTIANISM +ADOPTIANISMS +ADOPTING +ADOPTION +ADOPTIONISM +ADOPTIONISMS +ADOPTIONIST +ADOPTIONISTS +ADOPTIONS +ADOPTIVE +ADOPTIVELY +ADOPTS +ADORABILITIES +ADORABILITY +ADORABLE +ADORABLENESS +ADORABLENESSES +ADORABLY +ADORATION +ADORATIONS +ADORE +ADORED +ADORER +ADORERS +ADORES +ADORING +ADORINGLY +ADORN +ADORNED +ADORNER +ADORNERS +ADORNING +ADORNMENT +ADORNMENTS +ADORNS +ADOS +ADOWN +ADOZE +ADRENAL +ADRENALECTOMIES +ADRENALECTOMY +ADRENALIN +ADRENALINE +ADRENALINES +ADRENALINS +ADRENALIZED +ADRENALLY +ADRENALS +ADRENERGIC +ADRENERGICALLY +ADRENOCHROME +ADRENOCHROMES +ADRENOCORTICAL +ADRIFT +ADROIT +ADROITER +ADROITEST +ADROITLY +ADROITNESS +ADROITNESSES +ADS +ADSCITITIOUS +ADSCRIPT +ADSCRIPTS +ADSORB +ADSORBABLE +ADSORBATE +ADSORBATES +ADSORBED +ADSORBENT +ADSORBENTS +ADSORBER +ADSORBERS +ADSORBING +ADSORBS +ADSORPTION +ADSORPTIONS +ADSORPTIVE +ADULARIA +ADULARIAS +ADULATE +ADULATED +ADULATES +ADULATING +ADULATION +ADULATIONS +ADULATOR +ADULATORS +ADULATORY +ADULT +ADULTERANT +ADULTERANTS +ADULTERATE +ADULTERATED +ADULTERATES +ADULTERATING +ADULTERATION +ADULTERATIONS +ADULTERATOR +ADULTERATORS +ADULTERER +ADULTERERS +ADULTERESS +ADULTERESSES +ADULTERIES +ADULTERINE +ADULTEROUS +ADULTEROUSLY +ADULTERY +ADULTHOOD +ADULTHOODS +ADULTLIKE +ADULTLY +ADULTNESS +ADULTNESSES +ADULTRESS +ADULTRESSES +ADULTS +ADUMBRAL +ADUMBRATE +ADUMBRATED +ADUMBRATES +ADUMBRATING +ADUMBRATION +ADUMBRATIONS +ADUMBRATIVE +ADUMBRATIVELY +ADUNC +ADUNCATE +ADUNCOUS +ADUST +ADVANCE +ADVANCED +ADVANCEMENT +ADVANCEMENTS +ADVANCER +ADVANCERS +ADVANCES +ADVANCING +ADVANTAGE +ADVANTAGED +ADVANTAGEOUS +ADVANTAGEOUSLY +ADVANTAGES +ADVANTAGING +ADVECT +ADVECTED +ADVECTING +ADVECTION +ADVECTIONS +ADVECTIVE +ADVECTS +ADVENT +ADVENTITIA +ADVENTITIAL +ADVENTITIAS +ADVENTITIOUS +ADVENTITIOUSLY +ADVENTIVE +ADVENTIVES +ADVENTS +ADVENTURE +ADVENTURED +ADVENTURER +ADVENTURERS +ADVENTURES +ADVENTURESOME +ADVENTURESS +ADVENTURESSES +ADVENTURING +ADVENTURISM +ADVENTURISMS +ADVENTURIST +ADVENTURISTIC +ADVENTURISTS +ADVENTUROUS +ADVENTUROUSLY +ADVENTUROUSNESS +ADVERB +ADVERBIAL +ADVERBIALLY +ADVERBIALS +ADVERBS +ADVERSARIAL +ADVERSARIES +ADVERSARINESS +ADVERSARINESSES +ADVERSARY +ADVERSATIVE +ADVERSATIVELY +ADVERSATIVES +ADVERSE +ADVERSELY +ADVERSENESS +ADVERSENESSES +ADVERSITIES +ADVERSITY +ADVERT +ADVERTED +ADVERTENCE +ADVERTENCES +ADVERTENCIES +ADVERTENCY +ADVERTENT +ADVERTENTLY +ADVERTING +ADVERTISE +ADVERTISED +ADVERTISEMENT +ADVERTISEMENTS +ADVERTISER +ADVERTISERS +ADVERTISES +ADVERTISING +ADVERTISINGS +ADVERTIZE +ADVERTIZED +ADVERTIZEMENT +ADVERTIZEMENTS +ADVERTIZES +ADVERTIZING +ADVERTORIAL +ADVERTORIALS +ADVERTS +ADVICE +ADVICES +ADVISABILITIES +ADVISABILITY +ADVISABLE +ADVISABLENESS +ADVISABLENESSES +ADVISABLY +ADVISE +ADVISED +ADVISEDLY +ADVISEE +ADVISEES +ADVISEMENT +ADVISEMENTS +ADVISER +ADVISERS +ADVISES +ADVISING +ADVISOR +ADVISORIES +ADVISORS +ADVISORY +ADVOCACIES +ADVOCACY +ADVOCATE +ADVOCATED +ADVOCATES +ADVOCATING +ADVOCATION +ADVOCATIONS +ADVOCATIVE +ADVOCATOR +ADVOCATORS +ADVOWSON +ADVOWSONS +ADWOMAN +ADWOMEN +ADYNAMIA +ADYNAMIAS +ADYNAMIC +ADYTA +ADYTUM +ADZ +ADZE +ADZED +ADZES +ADZING +ADZUKI +ADZUKIS +AE +AECIA +AECIAL +AECIDIA +AECIDIAL +AECIDIUM +AECIOSPORE +AECIOSPORES +AECIUM +AEDES +AEDILE +AEDILES +AEDINE +AEGIS +AEGISES +AENEOUS +AENEUS +AEOLIAN +AEON +AEONIAN +AEONIC +AEONS +AEPYORNIS +AEPYORNISES +AEQUORIN +AEQUORINS +AERATE +AERATED +AERATES +AERATING +AERATION +AERATIONS +AERATOR +AERATORS +AERENCHYMA +AERENCHYMAS +AERIAL +AERIALIST +AERIALISTS +AERIALLY +AERIALS +AERIE +AERIED +AERIER +AERIES +AERIEST +AERIFIED +AERIFIES +AERIFORM +AERIFY +AERIFYING +AERILY +AERO +AEROBAT +AEROBATIC +AEROBATICS +AEROBATS +AEROBE +AEROBES +AEROBIA +AEROBIC +AEROBICALLY +AEROBICIZE +AEROBICIZED +AEROBICIZES +AEROBICIZING +AEROBICS +AEROBIOLOGICAL +AEROBIOLOGIES +AEROBIOLOGY +AEROBIOSES +AEROBIOSIS +AEROBIUM +AEROBRAKE +AEROBRAKED +AEROBRAKES +AEROBRAKING +AERODROME +AERODROMES +AERODUCT +AERODUCTS +AERODYNAMIC +AERODYNAMICAL +AERODYNAMICALLY +AERODYNAMICIST +AERODYNAMICISTS +AERODYNAMICS +AERODYNE +AERODYNES +AEROELASTIC +AEROELASTICITY +AEROEMBOLISM +AEROEMBOLISMS +AEROFOIL +AEROFOILS +AEROGEL +AEROGELS +AEROGRAM +AEROGRAMME +AEROGRAMMES +AEROGRAMS +AEROLITE +AEROLITES +AEROLITH +AEROLITHS +AEROLITIC +AEROLOGIC +AEROLOGIES +AEROLOGY +AEROMAGNETIC +AEROMECHANICS +AEROMEDICAL +AEROMEDICINE +AEROMEDICINES +AEROMETER +AEROMETERS +AEROMETRIES +AEROMETRY +AERONAUT +AERONAUTIC +AERONAUTICAL +AERONAUTICALLY +AERONAUTICS +AERONAUTS +AERONOMER +AERONOMERS +AERONOMIC +AERONOMICAL +AERONOMIES +AERONOMIST +AERONOMISTS +AERONOMY +AEROPAUSE +AEROPAUSES +AEROPHOBE +AEROPHOBES +AEROPHORE +AEROPHORES +AEROPHYTE +AEROPHYTES +AEROPLANE +AEROPLANES +AEROPULSE +AEROPULSES +AEROSAT +AEROSATS +AEROSCOPE +AEROSCOPES +AEROSOL +AEROSOLIZATION +AEROSOLIZATIONS +AEROSOLIZE +AEROSOLIZED +AEROSOLIZES +AEROSOLIZING +AEROSOLS +AEROSPACE +AEROSPACES +AEROSTAT +AEROSTATICS +AEROSTATS +AERUGO +AERUGOS +AERY +AESTHESIA +AESTHESIAS +AESTHETE +AESTHETES +AESTHETIC +AESTHETICAL +AESTHETICALLY +AESTHETICIAN +AESTHETICIANS +AESTHETICISM +AESTHETICISMS +AESTHETICIZE +AESTHETICIZED +AESTHETICIZES +AESTHETICIZING +AESTHETICS +AESTIVAL +AESTIVATE +AESTIVATED +AESTIVATES +AESTIVATING +AESTIVATION +AESTIVATIONS +AETHER +AETHEREAL +AETHERIC +AETHERS +AETIOLOGIES +AETIOLOGY +AFAR +AFARS +AFEARD +AFEARED +AFEBRILE +AFF +AFFABILITIES +AFFABILITY +AFFABLE +AFFABLY +AFFAIR +AFFAIRE +AFFAIRES +AFFAIRS +AFFECT +AFFECTABILITIES +AFFECTABILITY +AFFECTABLE +AFFECTATION +AFFECTATIONS +AFFECTED +AFFECTEDLY +AFFECTEDNESS +AFFECTEDNESSES +AFFECTER +AFFECTERS +AFFECTING +AFFECTINGLY +AFFECTION +AFFECTIONAL +AFFECTIONALLY +AFFECTIONATE +AFFECTIONATELY +AFFECTIONED +AFFECTIONLESS +AFFECTIONS +AFFECTIVE +AFFECTIVELY +AFFECTIVITIES +AFFECTIVITY +AFFECTLESS +AFFECTLESSNESS +AFFECTS +AFFENPINSCHER +AFFENPINSCHERS +AFFERENT +AFFERENTLY +AFFERENTS +AFFIANCE +AFFIANCED +AFFIANCES +AFFIANCING +AFFIANT +AFFIANTS +AFFICHE +AFFICHES +AFFICIONADO +AFFICIONADOS +AFFIDAVIT +AFFIDAVITS +AFFILIATE +AFFILIATED +AFFILIATES +AFFILIATING +AFFILIATION +AFFILIATIONS +AFFINAL +AFFINE +AFFINED +AFFINELY +AFFINES +AFFINITIES +AFFINITY +AFFIRM +AFFIRMABLE +AFFIRMANCE +AFFIRMANCES +AFFIRMANT +AFFIRMANTS +AFFIRMATION +AFFIRMATIONS +AFFIRMATIVE +AFFIRMATIVELY +AFFIRMATIVES +AFFIRMED +AFFIRMER +AFFIRMERS +AFFIRMING +AFFIRMS +AFFIX +AFFIXABLE +AFFIXAL +AFFIXATION +AFFIXATIONS +AFFIXED +AFFIXER +AFFIXERS +AFFIXES +AFFIXIAL +AFFIXING +AFFIXMENT +AFFIXMENTS +AFFIXTURE +AFFIXTURES +AFFLATUS +AFFLATUSES +AFFLICT +AFFLICTED +AFFLICTER +AFFLICTERS +AFFLICTING +AFFLICTION +AFFLICTIONS +AFFLICTIVE +AFFLICTIVELY +AFFLICTS +AFFLUENCE +AFFLUENCES +AFFLUENCIES +AFFLUENCY +AFFLUENT +AFFLUENTLY +AFFLUENTS +AFFLUX +AFFLUXES +AFFORD +AFFORDABILITIES +AFFORDABILITY +AFFORDABLE +AFFORDABLY +AFFORDED +AFFORDING +AFFORDS +AFFOREST +AFFORESTATION +AFFORESTATIONS +AFFORESTED +AFFORESTING +AFFORESTS +AFFRAY +AFFRAYED +AFFRAYER +AFFRAYERS +AFFRAYING +AFFRAYS +AFFRICATE +AFFRICATED +AFFRICATES +AFFRICATING +AFFRICATIVE +AFFRICATIVES +AFFRIGHT +AFFRIGHTED +AFFRIGHTING +AFFRIGHTS +AFFRONT +AFFRONTED +AFFRONTING +AFFRONTS +AFFUSION +AFFUSIONS +AFGHAN +AFGHANI +AFGHANIS +AFGHANS +AFICIONADA +AFICIONADAS +AFICIONADO +AFICIONADOS +AFIELD +AFIRE +AFLAME +AFLATOXIN +AFLATOXINS +AFLOAT +AFLUTTER +AFOOT +AFORE +AFOREHAND +AFOREMENTIONED +AFORESAID +AFORETHOUGHT +AFORETIME +AFOUL +AFRAID +AFREET +AFREETS +AFRESH +AFRIT +AFRITS +AFT +AFTER +AFTERBIRTH +AFTERBIRTHS +AFTERBURNER +AFTERBURNERS +AFTERCARE +AFTERCARES +AFTERCLAP +AFTERCLAPS +AFTERDAMP +AFTERDAMPS +AFTERDECK +AFTERDECKS +AFTEREFFECT +AFTEREFFECTS +AFTERGLOW +AFTERGLOWS +AFTERIMAGE +AFTERIMAGES +AFTERLIFE +AFTERLIFES +AFTERLIVES +AFTERMARKET +AFTERMARKETS +AFTERMATH +AFTERMATHS +AFTERMOST +AFTERNOON +AFTERNOONS +AFTERPAIN +AFTERPAINS +AFTERPIECE +AFTERPIECES +AFTERS +AFTERSHAVE +AFTERSHAVES +AFTERSHOCK +AFTERSHOCKS +AFTERTASTE +AFTERTASTES +AFTERTAX +AFTERTHOUGHT +AFTERTHOUGHTS +AFTERTIME +AFTERTIMES +AFTERWARD +AFTERWARDS +AFTERWORD +AFTERWORDS +AFTERWORLD +AFTERWORLDS +AFTMOST +AFTOSA +AFTOSAS +AG +AGA +AGAIN +AGAINST +AGALACTIA +AGALACTIAS +AGALLOCH +AGALLOCHS +AGALWOOD +AGALWOODS +AGAMA +AGAMAS +AGAMETE +AGAMETES +AGAMIC +AGAMID +AGAMIDS +AGAMOSPERMIES +AGAMOSPERMY +AGAMOUS +AGAPAE +AGAPAI +AGAPANTHUS +AGAPANTHUSES +AGAPE +AGAPEIC +AGAPES +AGAR +AGARIC +AGARICS +AGAROSE +AGAROSES +AGARS +AGAS +AGATE +AGATES +AGATEWARE +AGATEWARES +AGATIZE +AGATIZED +AGATIZES +AGATIZING +AGATOID +AGAVE +AGAVES +AGAZE +AGE +AGED +AGEDLY +AGEDNESS +AGEDNESSES +AGEE +AGEING +AGEINGS +AGEISM +AGEISMS +AGEIST +AGEISTS +AGELESS +AGELESSLY +AGELESSNESS +AGELESSNESSES +AGELONG +AGEMATE +AGEMATES +AGENCIES +AGENCY +AGENDA +AGENDALESS +AGENDAS +AGENDUM +AGENDUMS +AGENE +AGENES +AGENESES +AGENESIA +AGENESIAS +AGENESIS +AGENETIC +AGENIZE +AGENIZED +AGENIZES +AGENIZING +AGENT +AGENTED +AGENTIAL +AGENTING +AGENTINGS +AGENTIVAL +AGENTIVE +AGENTIVES +AGENTRIES +AGENTRY +AGENTS +AGER +AGERATUM +AGERATUMS +AGERS +AGES +AGGADA +AGGADAH +AGGADAHS +AGGADAS +AGGADIC +AGGADOT +AGGADOTH +AGGER +AGGERS +AGGIE +AGGIES +AGGIORNAMENTO +AGGIORNAMENTOS +AGGLOMERATE +AGGLOMERATED +AGGLOMERATES +AGGLOMERATING +AGGLOMERATION +AGGLOMERATIONS +AGGLOMERATIVE +AGGLUTINABILITY +AGGLUTINABLE +AGGLUTINATE +AGGLUTINATED +AGGLUTINATES +AGGLUTINATING +AGGLUTINATION +AGGLUTINATIONS +AGGLUTINATIVE +AGGLUTININ +AGGLUTININS +AGGLUTINOGEN +AGGLUTINOGENIC +AGGLUTINOGENS +AGGRADATION +AGGRADATIONS +AGGRADE +AGGRADED +AGGRADES +AGGRADING +AGGRANDISE +AGGRANDISED +AGGRANDISES +AGGRANDISING +AGGRANDIZE +AGGRANDIZED +AGGRANDIZEMENT +AGGRANDIZEMENTS +AGGRANDIZER +AGGRANDIZERS +AGGRANDIZES +AGGRANDIZING +AGGRAVATE +AGGRAVATED +AGGRAVATES +AGGRAVATING +AGGRAVATION +AGGRAVATIONS +AGGREGATE +AGGREGATED +AGGREGATELY +AGGREGATENESS +AGGREGATENESSES +AGGREGATES +AGGREGATING +AGGREGATION +AGGREGATIONAL +AGGREGATIONS +AGGREGATIVE +AGGREGATIVELY +AGGRESS +AGGRESSED +AGGRESSES +AGGRESSING +AGGRESSION +AGGRESSIONS +AGGRESSIVE +AGGRESSIVELY +AGGRESSIVENESS +AGGRESSIVITIES +AGGRESSIVITY +AGGRESSOR +AGGRESSORS +AGGRIEVE +AGGRIEVED +AGGRIEVEDLY +AGGRIEVEMENT +AGGRIEVEMENTS +AGGRIEVES +AGGRIEVING +AGGRO +AGGROS +AGHA +AGHAS +AGHAST +AGILE +AGILELY +AGILENESS +AGILENESSES +AGILITIES +AGILITY +AGIN +AGING +AGINGS +AGINNER +AGINNERS +AGIO +AGIOS +AGIOTAGE +AGIOTAGES +AGISM +AGISMS +AGIST +AGISTED +AGISTING +AGISTS +AGITA +AGITABLE +AGITAS +AGITATE +AGITATED +AGITATEDLY +AGITATES +AGITATING +AGITATION +AGITATIONAL +AGITATIONS +AGITATIVE +AGITATO +AGITATOR +AGITATORS +AGITPROP +AGITPROPS +AGLARE +AGLEAM +AGLEE +AGLET +AGLETS +AGLEY +AGLIMMER +AGLITTER +AGLOW +AGLY +AGLYCON +AGLYCONE +AGLYCONES +AGLYCONS +AGMA +AGMAS +AGMINATE +AGNAIL +AGNAILS +AGNATE +AGNATES +AGNATIC +AGNATICAL +AGNATION +AGNATIONS +AGNIZE +AGNIZED +AGNIZES +AGNIZING +AGNOMEN +AGNOMENS +AGNOMINA +AGNOSIA +AGNOSIAS +AGNOSTIC +AGNOSTICISM +AGNOSTICISMS +AGNOSTICS +AGO +AGOG +AGON +AGONAL +AGONE +AGONES +AGONIC +AGONIES +AGONISE +AGONISED +AGONISES +AGONISING +AGONIST +AGONISTES +AGONISTIC +AGONISTICALLY +AGONISTS +AGONIZE +AGONIZED +AGONIZES +AGONIZING +AGONIZINGLY +AGONS +AGONY +AGORA +AGORAE +AGORAPHOBE +AGORAPHOBES +AGORAPHOBIA +AGORAPHOBIAS +AGORAPHOBIC +AGORAPHOBICS +AGORAS +AGOROT +AGOROTH +AGOUTI +AGOUTIES +AGOUTIS +AGOUTY +AGRAFE +AGRAFES +AGRAFFE +AGRAFFES +AGRANULOCYTE +AGRANULOCYTES +AGRANULOCYTOSES +AGRANULOCYTOSIS +AGRAPHA +AGRAPHIA +AGRAPHIAS +AGRAPHIC +AGRARIAN +AGRARIANISM +AGRARIANISMS +AGRARIANS +AGRAVIC +AGREE +AGREEABILITIES +AGREEABILITY +AGREEABLE +AGREEABLENESS +AGREEABLENESSES +AGREEABLY +AGREED +AGREEING +AGREEMENT +AGREEMENTS +AGREES +AGRESTAL +AGRESTIC +AGRIA +AGRIAS +AGRIBUSINESS +AGRIBUSINESSES +AGRIBUSINESSMAN +AGRIBUSINESSMEN +AGRICHEMICAL +AGRICHEMICALS +AGRICULTURAL +AGRICULTURALIST +AGRICULTURALLY +AGRICULTURE +AGRICULTURES +AGRICULTURIST +AGRICULTURISTS +AGRIMONIES +AGRIMONY +AGROCHEMICAL +AGROCHEMICALS +AGROFORESTER +AGROFORESTERS +AGROFORESTRIES +AGROFORESTRY +AGROLOGIC +AGROLOGIES +AGROLOGY +AGRONOMIC +AGRONOMICALLY +AGRONOMIES +AGRONOMIST +AGRONOMISTS +AGRONOMY +AGROUND +AGRYPNIA +AGRYPNIAS +AGS +AGUACATE +AGUACATES +AGUE +AGUELIKE +AGUES +AGUEWEED +AGUEWEEDS +AGUISH +AGUISHLY +AH +AHA +AHCHOO +AHEAD +AHED +AHEM +AHI +AHIMSA +AHIMSAS +AHING +AHIS +AHISTORIC +AHISTORICAL +AHOLD +AHOLDS +AHORSE +AHOY +AHS +AHULL +AI +AIBLINS +AID +AIDE +AIDED +AIDER +AIDERS +AIDES +AIDFUL +AIDING +AIDLESS +AIDMAN +AIDMEN +AIDS +AIGLET +AIGLETS +AIGRET +AIGRETS +AIGRETTE +AIGRETTES +AIGUILLE +AIGUILLES +AIGUILLETTE +AIGUILLETTES +AIKIDO +AIKIDOS +AIL +AILANTHIC +AILANTHUS +AILANTHUSES +AILED +AILERON +AILERONS +AILING +AILMENT +AILMENTS +AILS +AILUROPHILE +AILUROPHILES +AILUROPHOBE +AILUROPHOBES +AIM +AIMED +AIMER +AIMERS +AIMFUL +AIMFULLY +AIMING +AIMLESS +AIMLESSLY +AIMLESSNESS +AIMLESSNESSES +AIMS +AIN +AINS +AINSELL +AINSELLS +AIOLI +AIOLIS +AIR +AIRBAG +AIRBAGS +AIRBOAT +AIRBOATS +AIRBORNE +AIRBOUND +AIRBRUSH +AIRBRUSHED +AIRBRUSHES +AIRBRUSHING +AIRBURST +AIRBURSTS +AIRBUS +AIRBUSES +AIRBUSSES +AIRCHECK +AIRCHECKS +AIRCOACH +AIRCOACHES +AIRCRAFT +AIRCREW +AIRCREWS +AIRDATE +AIRDATES +AIRDROME +AIRDROMES +AIRDROP +AIRDROPPED +AIRDROPPING +AIRDROPS +AIRED +AIRER +AIRERS +AIREST +AIRFARE +AIRFARES +AIRFIELD +AIRFIELDS +AIRFLOW +AIRFLOWS +AIRFOIL +AIRFOILS +AIRFRAME +AIRFRAMES +AIRFREIGHT +AIRFREIGHTED +AIRFREIGHTING +AIRFREIGHTS +AIRGLOW +AIRGLOWS +AIRHEAD +AIRHEADED +AIRHEADS +AIRHOLE +AIRHOLES +AIRIER +AIRIEST +AIRILY +AIRINESS +AIRINESSES +AIRING +AIRINGS +AIRLESS +AIRLESSNESS +AIRLESSNESSES +AIRLIFT +AIRLIFTED +AIRLIFTING +AIRLIFTS +AIRLIKE +AIRLINE +AIRLINER +AIRLINERS +AIRLINES +AIRMAIL +AIRMAILED +AIRMAILING +AIRMAILS +AIRMAN +AIRMANSHIP +AIRMANSHIPS +AIRMEN +AIRMOBILE +AIRN +AIRNS +AIRPARK +AIRPARKS +AIRPLANE +AIRPLANES +AIRPLAY +AIRPLAYS +AIRPORT +AIRPORTS +AIRPOST +AIRPOSTS +AIRPOWER +AIRPOWERS +AIRPROOF +AIRPROOFED +AIRPROOFING +AIRPROOFS +AIRS +AIRSCAPE +AIRSCAPES +AIRSCREW +AIRSCREWS +AIRSHED +AIRSHEDS +AIRSHIP +AIRSHIPS +AIRSHOT +AIRSHOTS +AIRSHOW +AIRSHOWS +AIRSICK +AIRSICKNESS +AIRSICKNESSES +AIRSPACE +AIRSPACES +AIRSPEED +AIRSPEEDS +AIRSTREAM +AIRSTREAMS +AIRSTRIKE +AIRSTRIKES +AIRSTRIP +AIRSTRIPS +AIRT +AIRTED +AIRTH +AIRTHED +AIRTHING +AIRTHS +AIRTIGHT +AIRTIGHTNESS +AIRTIGHTNESSES +AIRTIME +AIRTIMES +AIRTING +AIRTS +AIRWARD +AIRWAVE +AIRWAVES +AIRWAY +AIRWAYS +AIRWISE +AIRWOMAN +AIRWOMEN +AIRWORTHIER +AIRWORTHIEST +AIRWORTHINESS +AIRWORTHINESSES +AIRWORTHY +AIRY +AIS +AISLE +AISLED +AISLES +AISLEWAY +AISLEWAYS +AIT +AITCH +AITCHBONE +AITCHBONES +AITCHES +AITS +AIVER +AIVERS +AJAR +AJEE +AJIVA +AJIVAS +AJOWAN +AJOWANS +AJUGA +AJUGAS +AKEE +AKEES +AKELA +AKELAS +AKENE +AKENES +AKIMBO +AKIN +AKINESIA +AKINESIAS +AKINETIC +AKVAVIT +AKVAVITS +AL +ALA +ALABASTER +ALABASTERS +ALABASTRINE +ALACHLOR +ALACHLORS +ALACK +ALACKADAY +ALACRITIES +ALACRITOUS +ALACRITY +ALAE +ALAMEDA +ALAMEDAS +ALAMO +ALAMODE +ALAMODES +ALAMOS +ALAN +ALAND +ALANDS +ALANE +ALANG +ALANIN +ALANINE +ALANINES +ALANINS +ALANS +ALANT +ALANTS +ALANYL +ALANYLS +ALAR +ALARM +ALARMABLE +ALARMED +ALARMEDLY +ALARMING +ALARMINGLY +ALARMISM +ALARMISMS +ALARMIST +ALARMISTS +ALARMS +ALARUM +ALARUMED +ALARUMING +ALARUMS +ALARY +ALAS +ALASKA +ALASKAS +ALASTOR +ALASTORS +ALATE +ALATED +ALATES +ALATION +ALATIONS +ALB +ALBA +ALBACORE +ALBACORES +ALBAS +ALBATA +ALBATAS +ALBATROSS +ALBATROSSES +ALBEDO +ALBEDOES +ALBEDOS +ALBEIT +ALBERTITE +ALBERTITES +ALBESCENT +ALBICORE +ALBICORES +ALBINAL +ALBINIC +ALBINISM +ALBINISMS +ALBINISTIC +ALBINO +ALBINOS +ALBINOTIC +ALBITE +ALBITES +ALBITIC +ALBITICAL +ALBIZIA +ALBIZIAS +ALBIZZIA +ALBIZZIAS +ALBS +ALBUM +ALBUMEN +ALBUMENS +ALBUMIN +ALBUMINOUS +ALBUMINS +ALBUMINURIA +ALBUMINURIAS +ALBUMINURIC +ALBUMOSE +ALBUMOSES +ALBUMS +ALBURNOUS +ALBURNUM +ALBURNUMS +ALBUTEROL +ALBUTEROLS +ALCADE +ALCADES +ALCAHEST +ALCAHESTS +ALCAIC +ALCAICS +ALCAIDE +ALCAIDES +ALCALDE +ALCALDES +ALCAYDE +ALCAYDES +ALCAZAR +ALCAZARS +ALCHEMIC +ALCHEMICAL +ALCHEMICALLY +ALCHEMIES +ALCHEMIST +ALCHEMISTIC +ALCHEMISTICAL +ALCHEMISTS +ALCHEMIZE +ALCHEMIZED +ALCHEMIZES +ALCHEMIZING +ALCHEMY +ALCHYMIES +ALCHYMY +ALCID +ALCIDINE +ALCIDS +ALCOHOL +ALCOHOLIC +ALCOHOLICALLY +ALCOHOLICS +ALCOHOLISM +ALCOHOLISMS +ALCOHOLS +ALCOVE +ALCOVED +ALCOVES +ALCYONARIAN +ALCYONARIANS +ALDEHYDE +ALDEHYDES +ALDEHYDIC +ALDER +ALDERFLIES +ALDERFLY +ALDERMAN +ALDERMANIC +ALDERMEN +ALDERS +ALDERWOMAN +ALDERWOMEN +ALDICARB +ALDICARBS +ALDOL +ALDOLASE +ALDOLASES +ALDOLIZATION +ALDOLIZATIONS +ALDOLS +ALDOSE +ALDOSES +ALDOSTERONE +ALDOSTERONES +ALDOSTERONISM +ALDOSTERONISMS +ALDRIN +ALDRINS +ALE +ALEATORIC +ALEATORY +ALEC +ALECITHAL +ALECS +ALEE +ALEF +ALEFS +ALEGAR +ALEGARS +ALEHOUSE +ALEHOUSES +ALEMBIC +ALEMBICS +ALENCON +ALENCONS +ALEPH +ALEPHS +ALERT +ALERTED +ALERTER +ALERTEST +ALERTING +ALERTLY +ALERTNESS +ALERTNESSES +ALERTS +ALES +ALEURON +ALEURONE +ALEURONES +ALEURONIC +ALEURONS +ALEVIN +ALEVINS +ALEWIFE +ALEWIVES +ALEXANDER +ALEXANDERS +ALEXANDRINE +ALEXANDRINES +ALEXANDRITE +ALEXANDRITES +ALEXIA +ALEXIAS +ALEXIN +ALEXINE +ALEXINES +ALEXINS +ALFA +ALFAKI +ALFAKIS +ALFALFA +ALFALFAS +ALFAQUI +ALFAQUIN +ALFAQUINS +ALFAQUIS +ALFAS +ALFILARIA +ALFILARIAS +ALFILERIA +ALFILERIAS +ALFORJA +ALFORJAS +ALFREDO +ALFRESCO +ALGA +ALGAE +ALGAECIDE +ALGAECIDES +ALGAL +ALGAROBA +ALGAROBAS +ALGARROBA +ALGARROBAS +ALGARROBO +ALGARROBOS +ALGAS +ALGEBRA +ALGEBRAIC +ALGEBRAICALLY +ALGEBRAIST +ALGEBRAISTS +ALGEBRAS +ALGERINE +ALGERINES +ALGICIDAL +ALGICIDE +ALGICIDES +ALGID +ALGIDITIES +ALGIDITY +ALGIDNESS +ALGIDNESSES +ALGIN +ALGINATE +ALGINATES +ALGINS +ALGOID +ALGOLAGNIA +ALGOLAGNIAC +ALGOLAGNIACS +ALGOLAGNIAS +ALGOLOGICAL +ALGOLOGIES +ALGOLOGIST +ALGOLOGISTS +ALGOLOGY +ALGOMETER +ALGOMETERS +ALGOMETRIES +ALGOMETRY +ALGOR +ALGORISM +ALGORISMS +ALGORITHM +ALGORITHMIC +ALGORITHMICALLY +ALGORITHMS +ALGORS +ALGUM +ALGUMS +ALIAS +ALIASES +ALIASING +ALIASINGS +ALIBI +ALIBIED +ALIBIES +ALIBIING +ALIBIS +ALIBLE +ALICYCLIC +ALIDAD +ALIDADE +ALIDADES +ALIDADS +ALIEN +ALIENABILITIES +ALIENABILITY +ALIENABLE +ALIENAGE +ALIENAGES +ALIENATE +ALIENATED +ALIENATES +ALIENATING +ALIENATION +ALIENATIONS +ALIENATOR +ALIENATORS +ALIENED +ALIENEE +ALIENEES +ALIENER +ALIENERS +ALIENING +ALIENISM +ALIENISMS +ALIENIST +ALIENISTS +ALIENLY +ALIENNESS +ALIENNESSES +ALIENOR +ALIENORS +ALIENS +ALIF +ALIFORM +ALIFS +ALIGHT +ALIGHTED +ALIGHTING +ALIGHTMENT +ALIGHTMENTS +ALIGHTS +ALIGN +ALIGNED +ALIGNER +ALIGNERS +ALIGNING +ALIGNMENT +ALIGNMENTS +ALIGNS +ALIKE +ALIKENESS +ALIKENESSES +ALIMENT +ALIMENTAL +ALIMENTARY +ALIMENTATION +ALIMENTATIONS +ALIMENTED +ALIMENTING +ALIMENTS +ALIMONIED +ALIMONIES +ALIMONY +ALINE +ALINED +ALINEMENT +ALINEMENTS +ALINER +ALINERS +ALINES +ALINING +ALIPED +ALIPEDS +ALIPHATIC +ALIQUANT +ALIQUOT +ALIQUOTS +ALIST +ALIT +ALITERACIES +ALITERACY +ALITERATE +ALITERATES +ALIUNDE +ALIVE +ALIVENESS +ALIVENESSES +ALIYA +ALIYAH +ALIYAHS +ALIYAS +ALIYOS +ALIYOT +ALIZARIN +ALIZARINE +ALIZARINES +ALIZARINS +ALKAHEST +ALKAHESTIC +ALKAHESTS +ALKALI +ALKALIC +ALKALIES +ALKALIFIED +ALKALIFIES +ALKALIFY +ALKALIFYING +ALKALIMETER +ALKALIMETERS +ALKALIMETRIES +ALKALIMETRY +ALKALIN +ALKALINE +ALKALINITIES +ALKALINITY +ALKALINIZATION +ALKALINIZATIONS +ALKALINIZE +ALKALINIZED +ALKALINIZES +ALKALINIZING +ALKALIS +ALKALISE +ALKALISED +ALKALISES +ALKALISING +ALKALIZE +ALKALIZED +ALKALIZER +ALKALIZERS +ALKALIZES +ALKALIZING +ALKALOID +ALKALOIDAL +ALKALOIDS +ALKALOSES +ALKALOSIS +ALKALOTIC +ALKANE +ALKANES +ALKANET +ALKANETS +ALKENE +ALKENES +ALKIE +ALKIES +ALKINE +ALKINES +ALKOXIDE +ALKOXIDES +ALKOXY +ALKY +ALKYD +ALKYDS +ALKYL +ALKYLATE +ALKYLATED +ALKYLATES +ALKYLATING +ALKYLATION +ALKYLATIONS +ALKYLIC +ALKYLS +ALKYNE +ALKYNES +ALL +ALLANITE +ALLANITES +ALLANTOIC +ALLANTOID +ALLANTOIDES +ALLANTOIDS +ALLANTOIN +ALLANTOINS +ALLANTOIS +ALLARGANDO +ALLAY +ALLAYED +ALLAYER +ALLAYERS +ALLAYING +ALLAYS +ALLEE +ALLEES +ALLEGATION +ALLEGATIONS +ALLEGE +ALLEGED +ALLEGEDLY +ALLEGER +ALLEGERS +ALLEGES +ALLEGIANCE +ALLEGIANCES +ALLEGIANT +ALLEGIANTS +ALLEGING +ALLEGORIC +ALLEGORICAL +ALLEGORICALLY +ALLEGORICALNESS +ALLEGORIES +ALLEGORISE +ALLEGORISED +ALLEGORISES +ALLEGORISING +ALLEGORIST +ALLEGORISTS +ALLEGORIZATION +ALLEGORIZATIONS +ALLEGORIZE +ALLEGORIZED +ALLEGORIZER +ALLEGORIZERS +ALLEGORIZES +ALLEGORIZING +ALLEGORY +ALLEGRETTO +ALLEGRETTOS +ALLEGRO +ALLEGROS +ALLELE +ALLELES +ALLELIC +ALLELISM +ALLELISMS +ALLELOMORPH +ALLELOMORPHIC +ALLELOMORPHISM +ALLELOMORPHISMS +ALLELOMORPHS +ALLELOPATHIC +ALLELOPATHIES +ALLELOPATHY +ALLELUIA +ALLELUIAS +ALLEMANDE +ALLEMANDES +ALLERGEN +ALLERGENIC +ALLERGENICITIES +ALLERGENICITY +ALLERGENS +ALLERGIC +ALLERGIES +ALLERGIN +ALLERGINS +ALLERGIST +ALLERGISTS +ALLERGY +ALLETHRIN +ALLETHRINS +ALLEVIANT +ALLEVIANTS +ALLEVIATE +ALLEVIATED +ALLEVIATES +ALLEVIATING +ALLEVIATION +ALLEVIATIONS +ALLEVIATOR +ALLEVIATORS +ALLEY +ALLEYS +ALLEYWAY +ALLEYWAYS +ALLHEAL +ALLHEALS +ALLIABLE +ALLIACEOUS +ALLIANCE +ALLIANCES +ALLICIN +ALLICINS +ALLIED +ALLIES +ALLIGATOR +ALLIGATORS +ALLITERATE +ALLITERATED +ALLITERATES +ALLITERATING +ALLITERATION +ALLITERATIONS +ALLITERATIVE +ALLITERATIVELY +ALLIUM +ALLIUMS +ALLOANTIBODIES +ALLOANTIBODY +ALLOANTIGEN +ALLOANTIGENS +ALLOBAR +ALLOBARS +ALLOCABLE +ALLOCATABLE +ALLOCATE +ALLOCATED +ALLOCATES +ALLOCATING +ALLOCATION +ALLOCATIONS +ALLOCATOR +ALLOCATORS +ALLOCUTION +ALLOCUTIONS +ALLOD +ALLODIA +ALLODIAL +ALLODIUM +ALLODS +ALLOGAMIES +ALLOGAMOUS +ALLOGAMY +ALLOGENEIC +ALLOGENIC +ALLOGRAFT +ALLOGRAFTED +ALLOGRAFTING +ALLOGRAFTS +ALLOGRAPH +ALLOGRAPHIC +ALLOGRAPHS +ALLOMETRIC +ALLOMETRIES +ALLOMETRY +ALLOMORPH +ALLOMORPHIC +ALLOMORPHISM +ALLOMORPHISMS +ALLOMORPHS +ALLONGE +ALLONGES +ALLONYM +ALLONYMS +ALLOPATH +ALLOPATHIES +ALLOPATHS +ALLOPATHY +ALLOPATRIC +ALLOPATRICALLY +ALLOPATRIES +ALLOPATRY +ALLOPHANE +ALLOPHANES +ALLOPHONE +ALLOPHONES +ALLOPHONIC +ALLOPLASM +ALLOPLASMS +ALLOPOLYPLOID +ALLOPOLYPLOIDS +ALLOPOLYPLOIDY +ALLOPURINOL +ALLOPURINOLS +ALLOSAUR +ALLOSAURS +ALLOSAURUS +ALLOSAURUSES +ALLOSTERIC +ALLOSTERICALLY +ALLOSTERIES +ALLOSTERY +ALLOT +ALLOTETRAPLOID +ALLOTETRAPLOIDS +ALLOTETRAPLOIDY +ALLOTMENT +ALLOTMENTS +ALLOTROPE +ALLOTROPES +ALLOTROPIC +ALLOTROPIES +ALLOTROPY +ALLOTS +ALLOTTED +ALLOTTEE +ALLOTTEES +ALLOTTER +ALLOTTERS +ALLOTTING +ALLOTYPE +ALLOTYPES +ALLOTYPIC +ALLOTYPICALLY +ALLOTYPIES +ALLOTYPY +ALLOVER +ALLOVERS +ALLOW +ALLOWABLE +ALLOWABLES +ALLOWABLY +ALLOWANCE +ALLOWANCED +ALLOWANCES +ALLOWANCING +ALLOWED +ALLOWEDLY +ALLOWING +ALLOWS +ALLOXAN +ALLOXANS +ALLOY +ALLOYED +ALLOYING +ALLOYS +ALLS +ALLSEED +ALLSEEDS +ALLSORTS +ALLSPICE +ALLSPICES +ALLUDE +ALLUDED +ALLUDES +ALLUDING +ALLURE +ALLURED +ALLUREMENT +ALLUREMENTS +ALLURER +ALLURERS +ALLURES +ALLURING +ALLURINGLY +ALLUSION +ALLUSIONS +ALLUSIVE +ALLUSIVELY +ALLUSIVENESS +ALLUSIVENESSES +ALLUVIA +ALLUVIAL +ALLUVIALS +ALLUVION +ALLUVIONS +ALLUVIUM +ALLUVIUMS +ALLY +ALLYING +ALLYL +ALLYLIC +ALLYLS +ALMA +ALMAGEST +ALMAGESTS +ALMAH +ALMAHS +ALMANAC +ALMANACK +ALMANACKS +ALMANACS +ALMANDINE +ALMANDINES +ALMANDITE +ALMANDITES +ALMAS +ALME +ALMEH +ALMEHS +ALMEMAR +ALMEMARS +ALMES +ALMIGHTINESS +ALMIGHTINESSES +ALMIGHTY +ALMNER +ALMNERS +ALMOND +ALMONDS +ALMONDY +ALMONER +ALMONERS +ALMONRIES +ALMONRY +ALMOST +ALMS +ALMSGIVER +ALMSGIVERS +ALMSGIVING +ALMSGIVINGS +ALMSHOUSE +ALMSHOUSES +ALMSMAN +ALMSMEN +ALMUCE +ALMUCES +ALMUD +ALMUDE +ALMUDES +ALMUDS +ALMUG +ALMUGS +ALNICO +ALNICOS +ALODIA +ALODIAL +ALODIUM +ALOE +ALOES +ALOETIC +ALOFT +ALOGICAL +ALOGICALLY +ALOHA +ALOHAS +ALOIN +ALOINS +ALONE +ALONENESS +ALONENESSES +ALONG +ALONGSHORE +ALONGSIDE +ALOOF +ALOOFLY +ALOOFNESS +ALOOFNESSES +ALOPECIA +ALOPECIAS +ALOPECIC +ALOUD +ALOW +ALP +ALPACA +ALPACAS +ALPENGLOW +ALPENGLOWS +ALPENHORN +ALPENHORNS +ALPENSTOCK +ALPENSTOCKS +ALPHA +ALPHABET +ALPHABETED +ALPHABETIC +ALPHABETICAL +ALPHABETICALLY +ALPHABETING +ALPHABETIZATION +ALPHABETIZE +ALPHABETIZED +ALPHABETIZER +ALPHABETIZERS +ALPHABETIZES +ALPHABETIZING +ALPHABETS +ALPHAMERIC +ALPHANUMERIC +ALPHANUMERICAL +ALPHANUMERICS +ALPHAS +ALPHORN +ALPHORNS +ALPHOSIS +ALPHOSISES +ALPHYL +ALPHYLS +ALPINE +ALPINELY +ALPINES +ALPINISM +ALPINISMS +ALPINIST +ALPINISTS +ALPS +ALREADY +ALRIGHT +ALS +ALSIKE +ALSIKES +ALSO +ALT +ALTAR +ALTARPIECE +ALTARPIECES +ALTARS +ALTAZIMUTH +ALTAZIMUTHS +ALTER +ALTERABILITIES +ALTERABILITY +ALTERABLE +ALTERABLY +ALTERANT +ALTERANTS +ALTERATION +ALTERATIONS +ALTERCATE +ALTERCATED +ALTERCATES +ALTERCATING +ALTERCATION +ALTERCATIONS +ALTERED +ALTERER +ALTERERS +ALTERING +ALTERITIES +ALTERITY +ALTERNANT +ALTERNANTS +ALTERNATE +ALTERNATED +ALTERNATELY +ALTERNATES +ALTERNATING +ALTERNATION +ALTERNATIONS +ALTERNATIVE +ALTERNATIVELY +ALTERNATIVENESS +ALTERNATIVES +ALTERNATOR +ALTERNATORS +ALTERS +ALTHAEA +ALTHAEAS +ALTHEA +ALTHEAS +ALTHO +ALTHORN +ALTHORNS +ALTHOUGH +ALTIGRAPH +ALTIGRAPHS +ALTIMETER +ALTIMETERS +ALTIMETRIES +ALTIMETRY +ALTIPLANO +ALTIPLANOS +ALTITUDE +ALTITUDES +ALTITUDINAL +ALTITUDINOUS +ALTO +ALTOCUMULI +ALTOCUMULUS +ALTOGETHER +ALTOGETHERS +ALTOIST +ALTOISTS +ALTOS +ALTOSTRATI +ALTOSTRATUS +ALTRICIAL +ALTRUISM +ALTRUISMS +ALTRUIST +ALTRUISTIC +ALTRUISTICALLY +ALTRUISTS +ALTS +ALUDEL +ALUDELS +ALULA +ALULAE +ALULAR +ALUM +ALUMIN +ALUMINA +ALUMINAS +ALUMINATE +ALUMINATES +ALUMINE +ALUMINES +ALUMINIC +ALUMINIUM +ALUMINIUMS +ALUMINIZE +ALUMINIZED +ALUMINIZES +ALUMINIZING +ALUMINOSILICATE +ALUMINOUS +ALUMINS +ALUMINUM +ALUMINUMS +ALUMNA +ALUMNAE +ALUMNI +ALUMNUS +ALUMROOT +ALUMROOTS +ALUMS +ALUMSTONE +ALUMSTONES +ALUNITE +ALUNITES +ALVEOLAR +ALVEOLARLY +ALVEOLARS +ALVEOLATE +ALVEOLI +ALVEOLUS +ALVINE +ALWAY +ALWAYS +ALYSSUM +ALYSSUMS +AM +AMA +AMADAVAT +AMADAVATS +AMADOU +AMADOUS +AMAH +AMAHS +AMAIN +AMALGAM +AMALGAMATE +AMALGAMATED +AMALGAMATES +AMALGAMATING +AMALGAMATION +AMALGAMATIONS +AMALGAMATOR +AMALGAMATORS +AMALGAMS +AMANDINE +AMANITA +AMANITAS +AMANITIN +AMANITINS +AMANTADINE +AMANTADINES +AMANUENSES +AMANUENSIS +AMARANTH +AMARANTHINE +AMARANTHS +AMARELLE +AMARELLES +AMARETTI +AMARETTO +AMARETTOS +AMARNA +AMARONE +AMARONES +AMARYLLIS +AMARYLLISES +AMAS +AMASS +AMASSABLE +AMASSED +AMASSER +AMASSERS +AMASSES +AMASSING +AMASSMENT +AMASSMENTS +AMATEUR +AMATEURISH +AMATEURISHLY +AMATEURISHNESS +AMATEURISM +AMATEURISMS +AMATEURS +AMATIVE +AMATIVELY +AMATIVENESS +AMATIVENESSES +AMATOL +AMATOLS +AMATORY +AMAUROSES +AMAUROSIS +AMAUROTIC +AMAZE +AMAZED +AMAZEDLY +AMAZEMENT +AMAZEMENTS +AMAZES +AMAZING +AMAZINGLY +AMAZON +AMAZONIAN +AMAZONIANS +AMAZONITE +AMAZONITES +AMAZONS +AMAZONSTONE +AMAZONSTONES +AMBAGE +AMBAGES +AMBAGIOUS +AMBARI +AMBARIES +AMBARIS +AMBARY +AMBASSADOR +AMBASSADORIAL +AMBASSADORS +AMBASSADORSHIP +AMBASSADORSHIPS +AMBASSADRESS +AMBASSADRESSES +AMBEER +AMBEERS +AMBER +AMBERGRIS +AMBERGRISES +AMBERIES +AMBERINA +AMBERINAS +AMBERJACK +AMBERJACKS +AMBEROID +AMBEROIDS +AMBERS +AMBERY +AMBIANCE +AMBIANCES +AMBIDEXTERITIES +AMBIDEXTERITY +AMBIDEXTROUS +AMBIDEXTROUSLY +AMBIENCE +AMBIENCES +AMBIENT +AMBIENTS +AMBIGUITIES +AMBIGUITY +AMBIGUOUS +AMBIGUOUSLY +AMBIGUOUSNESS +AMBIGUOUSNESSES +AMBIPOLAR +AMBISEXUAL +AMBISEXUALITIES +AMBISEXUALITY +AMBISEXUALS +AMBIT +AMBITION +AMBITIONED +AMBITIONING +AMBITIONLESS +AMBITIONS +AMBITIOUS +AMBITIOUSLY +AMBITIOUSNESS +AMBITIOUSNESSES +AMBITS +AMBIVALENCE +AMBIVALENCES +AMBIVALENT +AMBIVALENTLY +AMBIVERSION +AMBIVERSIONS +AMBIVERT +AMBIVERTS +AMBLE +AMBLED +AMBLER +AMBLERS +AMBLES +AMBLING +AMBLYGONITE +AMBLYGONITES +AMBLYOPIA +AMBLYOPIAS +AMBLYOPIC +AMBO +AMBOINA +AMBOINAS +AMBONES +AMBOS +AMBOYNA +AMBOYNAS +AMBRIES +AMBROID +AMBROIDS +AMBROSIA +AMBROSIAL +AMBROSIALLY +AMBROSIAN +AMBROSIAS +AMBROTYPE +AMBROTYPES +AMBRY +AMBSACE +AMBSACES +AMBULACRA +AMBULACRAL +AMBULACRUM +AMBULANCE +AMBULANCES +AMBULANT +AMBULATE +AMBULATED +AMBULATES +AMBULATING +AMBULATION +AMBULATIONS +AMBULATOR +AMBULATORIES +AMBULATORILY +AMBULATORS +AMBULATORY +AMBULETTE +AMBULETTES +AMBUSCADE +AMBUSCADED +AMBUSCADER +AMBUSCADERS +AMBUSCADES +AMBUSCADING +AMBUSH +AMBUSHED +AMBUSHER +AMBUSHERS +AMBUSHES +AMBUSHING +AMBUSHMENT +AMBUSHMENTS +AMEBA +AMEBAE +AMEBAN +AMEBAS +AMEBEAN +AMEBIASES +AMEBIASIS +AMEBIC +AMEBOCYTE +AMEBOCYTES +AMEBOID +AMEER +AMEERATE +AMEERATES +AMEERS +AMELCORN +AMELCORNS +AMELIORATE +AMELIORATED +AMELIORATES +AMELIORATING +AMELIORATION +AMELIORATIONS +AMELIORATIVE +AMELIORATOR +AMELIORATORS +AMELIORATORY +AMELOBLAST +AMELOBLASTS +AMEN +AMENABILITIES +AMENABILITY +AMENABLE +AMENABLY +AMEND +AMENDABLE +AMENDATORY +AMENDED +AMENDER +AMENDERS +AMENDING +AMENDMENT +AMENDMENTS +AMENDS +AMENITIES +AMENITY +AMENORRHEA +AMENORRHEAS +AMENORRHEIC +AMENS +AMENT +AMENTIA +AMENTIAS +AMENTIFEROUS +AMENTS +AMERCE +AMERCED +AMERCEMENT +AMERCEMENTS +AMERCER +AMERCERS +AMERCES +AMERCIABLE +AMERCING +AMERICIUM +AMERICIUMS +AMESACE +AMESACES +AMETHYST +AMETHYSTINE +AMETHYSTS +AMETROPIA +AMETROPIAS +AMETROPIC +AMI +AMIA +AMIABILITIES +AMIABILITY +AMIABLE +AMIABLENESS +AMIABLENESSES +AMIABLY +AMIANTHUS +AMIANTHUSES +AMIANTUS +AMIANTUSES +AMIAS +AMICABILITIES +AMICABILITY +AMICABLE +AMICABLENESS +AMICABLENESSES +AMICABLY +AMICE +AMICES +AMICI +AMICUS +AMID +AMIDASE +AMIDASES +AMIDE +AMIDES +AMIDIC +AMIDIN +AMIDINE +AMIDINES +AMIDINS +AMIDO +AMIDOGEN +AMIDOGENS +AMIDOL +AMIDOLS +AMIDONE +AMIDONES +AMIDS +AMIDSHIP +AMIDSHIPS +AMIDST +AMIE +AMIES +AMIGA +AMIGAS +AMIGO +AMIGOS +AMIN +AMINE +AMINES +AMINIC +AMINITIES +AMINITY +AMINO +AMINOACIDURIA +AMINOACIDURIAS +AMINOPEPTIDASE +AMINOPEPTIDASES +AMINOPHYLLINE +AMINOPHYLLINES +AMINOPTERIN +AMINOPTERINS +AMINOPYRINE +AMINOPYRINES +AMINS +AMIR +AMIRATE +AMIRATES +AMIRS +AMIS +AMISS +AMITIES +AMITOSES +AMITOSIS +AMITOTIC +AMITOTICALLY +AMITRIPTYLINE +AMITRIPTYLINES +AMITROLE +AMITROLES +AMITY +AMMETER +AMMETERS +AMMINE +AMMINES +AMMINO +AMMO +AMMOCETE +AMMOCETES +AMMONAL +AMMONALS +AMMONIA +AMMONIAC +AMMONIACAL +AMMONIACS +AMMONIAS +AMMONIATE +AMMONIATED +AMMONIATES +AMMONIATING +AMMONIATION +AMMONIATIONS +AMMONIC +AMMONIFICATION +AMMONIFICATIONS +AMMONIFIED +AMMONIFIES +AMMONIFY +AMMONIFYING +AMMONITE +AMMONITES +AMMONITIC +AMMONIUM +AMMONIUMS +AMMONO +AMMONOID +AMMONOIDS +AMMOS +AMMUNITION +AMMUNITIONS +AMNESIA +AMNESIAC +AMNESIACS +AMNESIAS +AMNESIC +AMNESICS +AMNESTIC +AMNESTIED +AMNESTIES +AMNESTY +AMNESTYING +AMNIA +AMNIC +AMNIO +AMNIOCENTESES +AMNIOCENTESIS +AMNION +AMNIONIC +AMNIONS +AMNIOS +AMNIOTE +AMNIOTES +AMNIOTIC +AMOBARBITAL +AMOBARBITALS +AMOEBA +AMOEBAE +AMOEBAEAN +AMOEBAN +AMOEBAS +AMOEBEAN +AMOEBIASES +AMOEBIASIS +AMOEBIC +AMOEBOCYTE +AMOEBOCYTES +AMOEBOID +AMOK +AMOKS +AMOLE +AMOLES +AMONG +AMONGST +AMONTILLADO +AMONTILLADOS +AMORAL +AMORALISM +AMORALISMS +AMORALITIES +AMORALITY +AMORALLY +AMORETTI +AMORETTO +AMORETTOS +AMORINI +AMORINO +AMORIST +AMORISTIC +AMORISTS +AMOROSO +AMOROUS +AMOROUSLY +AMOROUSNESS +AMOROUSNESSES +AMORPHISM +AMORPHISMS +AMORPHOUS +AMORPHOUSLY +AMORPHOUSNESS +AMORPHOUSNESSES +AMORT +AMORTISE +AMORTISED +AMORTISES +AMORTISING +AMORTIZABLE +AMORTIZATION +AMORTIZATIONS +AMORTIZE +AMORTIZED +AMORTIZES +AMORTIZING +AMOSITE +AMOSITES +AMOTION +AMOTIONS +AMOUNT +AMOUNTED +AMOUNTING +AMOUNTS +AMOUR +AMOURS +AMOXICILLIN +AMOXICILLINS +AMOXYCILLIN +AMOXYCILLINS +AMP +AMPED +AMPERAGE +AMPERAGES +AMPERE +AMPERES +AMPEROMETRIC +AMPERSAND +AMPERSANDS +AMPHETAMINE +AMPHETAMINES +AMPHIBIA +AMPHIBIAN +AMPHIBIANS +AMPHIBIOUS +AMPHIBIOUSLY +AMPHIBIOUSNESS +AMPHIBOLE +AMPHIBOLES +AMPHIBOLIES +AMPHIBOLITE +AMPHIBOLITES +AMPHIBOLOGIES +AMPHIBOLOGY +AMPHIBOLY +AMPHIBRACH +AMPHIBRACHIC +AMPHIBRACHS +AMPHICTYONIC +AMPHICTYONIES +AMPHICTYONY +AMPHIDIPLOID +AMPHIDIPLOIDIES +AMPHIDIPLOIDS +AMPHIDIPLOIDY +AMPHIGORIES +AMPHIGORY +AMPHIMACER +AMPHIMACERS +AMPHIMIXES +AMPHIMIXIS +AMPHIOXI +AMPHIOXUS +AMPHIOXUSES +AMPHIPATHIC +AMPHIPHILE +AMPHIPHILES +AMPHIPHILIC +AMPHIPLOID +AMPHIPLOIDIES +AMPHIPLOIDS +AMPHIPLOIDY +AMPHIPOD +AMPHIPODS +AMPHIPROSTYLE +AMPHIPROSTYLES +AMPHISBAENA +AMPHISBAENAS +AMPHISBAENIC +AMPHITHEATER +AMPHITHEATERS +AMPHITHEATRIC +AMPHITHEATRICAL +AMPHORA +AMPHORAE +AMPHORAL +AMPHORAS +AMPHOTERIC +AMPICILLIN +AMPICILLINS +AMPING +AMPLE +AMPLENESS +AMPLENESSES +AMPLER +AMPLEST +AMPLEXUS +AMPLEXUSES +AMPLIDYNE +AMPLIDYNES +AMPLIFICATION +AMPLIFICATIONS +AMPLIFIED +AMPLIFIER +AMPLIFIERS +AMPLIFIES +AMPLIFY +AMPLIFYING +AMPLITUDE +AMPLITUDES +AMPLY +AMPOULE +AMPOULES +AMPS +AMPUL +AMPULE +AMPULES +AMPULLA +AMPULLAE +AMPULLAR +AMPULLARY +AMPULS +AMPUTATE +AMPUTATED +AMPUTATES +AMPUTATING +AMPUTATION +AMPUTATIONS +AMPUTATOR +AMPUTATORS +AMPUTEE +AMPUTEES +AMREETA +AMREETAS +AMRITA +AMRITAS +AMSINCKIA +AMSINCKIAS +AMTRAC +AMTRACK +AMTRACKS +AMTRACS +AMU +AMUCK +AMUCKS +AMULET +AMULETS +AMUS +AMUSABLE +AMUSE +AMUSED +AMUSEDLY +AMUSEMENT +AMUSEMENTS +AMUSER +AMUSERS +AMUSES +AMUSIA +AMUSIAS +AMUSING +AMUSINGLY +AMUSINGNESS +AMUSINGNESSES +AMUSIVE +AMYGDALA +AMYGDALAE +AMYGDALE +AMYGDALES +AMYGDALIN +AMYGDALINS +AMYGDALOID +AMYGDALOIDAL +AMYGDALOIDS +AMYGDULE +AMYGDULES +AMYL +AMYLASE +AMYLASES +AMYLENE +AMYLENES +AMYLIC +AMYLOGEN +AMYLOGENS +AMYLOID +AMYLOIDOSES +AMYLOIDOSIS +AMYLOIDS +AMYLOLYTIC +AMYLOPECTIN +AMYLOPECTINS +AMYLOPLAST +AMYLOPLASTS +AMYLOPSIN +AMYLOPSINS +AMYLOSE +AMYLOSES +AMYLS +AMYLUM +AMYLUMS +AMYOTONIA +AMYOTONIAS +AN +ANA +ANABAENA +ANABAENAS +ANABAPTISM +ANABAPTISMS +ANABAS +ANABASES +ANABASIS +ANABATIC +ANABIOSES +ANABIOSIS +ANABIOTIC +ANABLEPS +ANABLEPSES +ANABOLIC +ANABOLISM +ANABOLISMS +ANABRANCH +ANABRANCHES +ANACHRONIC +ANACHRONISM +ANACHRONISMS +ANACHRONISTIC +ANACHRONOUS +ANACHRONOUSLY +ANACLISES +ANACLISIS +ANACLITIC +ANACOLUTHA +ANACOLUTHIC +ANACOLUTHICALLY +ANACOLUTHON +ANACOLUTHONS +ANACONDA +ANACONDAS +ANACREONTIC +ANACREONTICS +ANACRUSES +ANACRUSIS +ANADEM +ANADEMS +ANADIPLOSES +ANADIPLOSIS +ANADROMOUS +ANAEMIA +ANAEMIAS +ANAEMIC +ANAEROBE +ANAEROBES +ANAEROBIA +ANAEROBIC +ANAEROBICALLY +ANAEROBIOSES +ANAEROBIOSIS +ANAEROBIUM +ANAESTHESIA +ANAESTHESIAS +ANAESTHETIC +ANAESTHETICS +ANAGENESES +ANAGENESIS +ANAGLYPH +ANAGLYPHIC +ANAGLYPHS +ANAGNORISES +ANAGNORISIS +ANAGOGE +ANAGOGES +ANAGOGIC +ANAGOGICAL +ANAGOGICALLY +ANAGOGIES +ANAGOGY +ANAGRAM +ANAGRAMMATIC +ANAGRAMMATICAL +ANAGRAMMATIZE +ANAGRAMMATIZED +ANAGRAMMATIZES +ANAGRAMMATIZING +ANAGRAMMED +ANAGRAMMING +ANAGRAMS +ANAL +ANALCIME +ANALCIMES +ANALCIMIC +ANALCITE +ANALCITES +ANALECTA +ANALECTIC +ANALECTS +ANALEMMA +ANALEMMAS +ANALEMMATA +ANALEMMATIC +ANALEPTIC +ANALEPTICS +ANALGESIA +ANALGESIAS +ANALGESIC +ANALGESICS +ANALGETIC +ANALGETICS +ANALGIA +ANALGIAS +ANALITIES +ANALITY +ANALLY +ANALOG +ANALOGIC +ANALOGICAL +ANALOGICALLY +ANALOGIES +ANALOGISM +ANALOGISMS +ANALOGIST +ANALOGISTS +ANALOGIZE +ANALOGIZED +ANALOGIZES +ANALOGIZING +ANALOGOUS +ANALOGOUSLY +ANALOGOUSNESS +ANALOGOUSNESSES +ANALOGS +ANALOGUE +ANALOGUES +ANALOGY +ANALPHABET +ANALPHABETIC +ANALPHABETICS +ANALPHABETISM +ANALPHABETISMS +ANALPHABETS +ANALYSAND +ANALYSANDS +ANALYSE +ANALYSED +ANALYSER +ANALYSERS +ANALYSES +ANALYSING +ANALYSIS +ANALYST +ANALYSTS +ANALYTE +ANALYTES +ANALYTIC +ANALYTICAL +ANALYTICALLY +ANALYTICITIES +ANALYTICITY +ANALYTICS +ANALYZABILITIES +ANALYZABILITY +ANALYZABLE +ANALYZATION +ANALYZATIONS +ANALYZE +ANALYZED +ANALYZER +ANALYZERS +ANALYZES +ANALYZING +ANAMNESES +ANAMNESIS +ANAMNESTIC +ANAMORPHIC +ANANKE +ANANKES +ANAPAEST +ANAPAESTS +ANAPEST +ANAPESTIC +ANAPESTICS +ANAPESTS +ANAPHASE +ANAPHASES +ANAPHASIC +ANAPHOR +ANAPHORA +ANAPHORAL +ANAPHORAS +ANAPHORIC +ANAPHORICALLY +ANAPHORS +ANAPHRODISIAC +ANAPHRODISIACS +ANAPHYLACTIC +ANAPHYLACTOID +ANAPHYLAXES +ANAPHYLAXIS +ANAPLASIA +ANAPLASIAS +ANAPLASMOSES +ANAPLASMOSIS +ANAPLASTIC +ANAPTYXES +ANAPTYXIS +ANARCH +ANARCHIC +ANARCHICAL +ANARCHICALLY +ANARCHIES +ANARCHISM +ANARCHISMS +ANARCHIST +ANARCHISTIC +ANARCHISTS +ANARCHS +ANARCHY +ANARTHRIA +ANARTHRIAS +ANARTHRIC +ANAS +ANASARCA +ANASARCAS +ANASARCOUS +ANASTIGMAT +ANASTIGMATIC +ANASTIGMATS +ANASTOMOSE +ANASTOMOSED +ANASTOMOSES +ANASTOMOSING +ANASTOMOSIS +ANASTOMOTIC +ANASTROPHE +ANASTROPHES +ANATASE +ANATASES +ANATHEMA +ANATHEMAS +ANATHEMATA +ANATHEMATIZE +ANATHEMATIZED +ANATHEMATIZES +ANATHEMATIZING +ANATOMIC +ANATOMICAL +ANATOMICALLY +ANATOMIES +ANATOMISE +ANATOMISED +ANATOMISES +ANATOMISING +ANATOMIST +ANATOMISTS +ANATOMIZE +ANATOMIZED +ANATOMIZES +ANATOMIZING +ANATOMY +ANATOXIN +ANATOXINS +ANATROPOUS +ANATTO +ANATTOS +ANCESTOR +ANCESTORED +ANCESTORING +ANCESTORS +ANCESTRAL +ANCESTRALLY +ANCESTRESS +ANCESTRESSES +ANCESTRIES +ANCESTRY +ANCHO +ANCHOR +ANCHORAGE +ANCHORAGES +ANCHORED +ANCHORESS +ANCHORESSES +ANCHORET +ANCHORETS +ANCHORING +ANCHORITE +ANCHORITES +ANCHORITIC +ANCHORITICALLY +ANCHORLESS +ANCHORMAN +ANCHORMEN +ANCHORPEOPLE +ANCHORPERSON +ANCHORPERSONS +ANCHORS +ANCHORWOMAN +ANCHORWOMEN +ANCHOS +ANCHOVETA +ANCHOVETAS +ANCHOVETTA +ANCHOVETTAS +ANCHOVIES +ANCHOVY +ANCHUSA +ANCHUSAS +ANCHUSIN +ANCHUSINS +ANCHYLOSE +ANCHYLOSED +ANCHYLOSES +ANCHYLOSING +ANCIENT +ANCIENTER +ANCIENTEST +ANCIENTLY +ANCIENTNESS +ANCIENTNESSES +ANCIENTRIES +ANCIENTRY +ANCIENTS +ANCILLA +ANCILLAE +ANCILLARIES +ANCILLARY +ANCILLAS +ANCIPITAL +ANCON +ANCONAL +ANCONE +ANCONEAL +ANCONES +ANCONOID +ANCRESS +ANCRESSES +ANCYLOSTOMIASES +ANCYLOSTOMIASIS +AND +ANDALUSITE +ANDALUSITES +ANDANTE +ANDANTES +ANDANTINI +ANDANTINO +ANDANTINOS +ANDESITE +ANDESITES +ANDESITIC +ANDESYTE +ANDESYTES +ANDIRON +ANDIRONS +ANDOUILLE +ANDOUILLES +ANDOUILLETTE +ANDOUILLETTES +ANDRADITE +ANDRADITES +ANDRO +ANDROCENTRIC +ANDROECIA +ANDROECIUM +ANDROGEN +ANDROGENESES +ANDROGENESIS +ANDROGENETIC +ANDROGENIC +ANDROGENS +ANDROGYNE +ANDROGYNES +ANDROGYNIES +ANDROGYNOUS +ANDROGYNY +ANDROID +ANDROIDS +ANDROLOGIES +ANDROLOGY +ANDROMEDA +ANDROMEDAS +ANDROS +ANDROSTERONE +ANDROSTERONES +ANDS +ANE +ANEAR +ANEARED +ANEARING +ANEARS +ANECDOTA +ANECDOTAGE +ANECDOTAGES +ANECDOTAL +ANECDOTALISM +ANECDOTALISMS +ANECDOTALIST +ANECDOTALISTS +ANECDOTALLY +ANECDOTE +ANECDOTES +ANECDOTIC +ANECDOTICAL +ANECDOTICALLY +ANECDOTIST +ANECDOTISTS +ANECHOIC +ANELASTIC +ANELASTICITIES +ANELASTICITY +ANELE +ANELED +ANELES +ANELING +ANEMIA +ANEMIAS +ANEMIC +ANEMICALLY +ANEMOGRAPH +ANEMOGRAPHS +ANEMOLOGIES +ANEMOLOGY +ANEMOMETER +ANEMOMETERS +ANEMOMETRIES +ANEMOMETRY +ANEMONE +ANEMONES +ANEMOPHILOUS +ANEMOSES +ANEMOSIS +ANENCEPHALIC +ANENCEPHALIES +ANENCEPHALY +ANENST +ANENT +ANERGIA +ANERGIAS +ANERGIC +ANERGIES +ANERGY +ANEROID +ANEROIDS +ANES +ANESTHESIA +ANESTHESIAS +ANESTHESIOLOGY +ANESTHETIC +ANESTHETICALLY +ANESTHETICS +ANESTHETIST +ANESTHETISTS +ANESTHETIZE +ANESTHETIZED +ANESTHETIZES +ANESTHETIZING +ANESTRI +ANESTROUS +ANESTRUS +ANETHOL +ANETHOLE +ANETHOLES +ANETHOLS +ANEUPLOID +ANEUPLOIDIES +ANEUPLOIDS +ANEUPLOIDY +ANEURIN +ANEURINS +ANEURISM +ANEURISMS +ANEURYSM +ANEURYSMAL +ANEURYSMS +ANEW +ANFRACTUOSITIES +ANFRACTUOSITY +ANFRACTUOUS +ANGA +ANGAKOK +ANGAKOKS +ANGARIA +ANGARIAS +ANGARIES +ANGARY +ANGAS +ANGEL +ANGELED +ANGELFISH +ANGELFISHES +ANGELIC +ANGELICA +ANGELICAL +ANGELICALLY +ANGELICAS +ANGELING +ANGELOLOGIES +ANGELOLOGIST +ANGELOLOGISTS +ANGELOLOGY +ANGELS +ANGELUS +ANGELUSES +ANGER +ANGERED +ANGERING +ANGERLESS +ANGERLY +ANGERS +ANGINA +ANGINAL +ANGINAS +ANGINOSE +ANGINOUS +ANGIOGENESES +ANGIOGENESIS +ANGIOGENIC +ANGIOGRAM +ANGIOGRAMS +ANGIOGRAPHIC +ANGIOGRAPHIES +ANGIOGRAPHY +ANGIOLOGIES +ANGIOLOGY +ANGIOMA +ANGIOMAS +ANGIOMATA +ANGIOMATOUS +ANGIOPLASTIES +ANGIOPLASTY +ANGIOSPERM +ANGIOSPERMOUS +ANGIOSPERMS +ANGIOTENSIN +ANGIOTENSINS +ANGLE +ANGLED +ANGLEPOD +ANGLEPODS +ANGLER +ANGLERFISH +ANGLERFISHES +ANGLERS +ANGLES +ANGLESITE +ANGLESITES +ANGLEWORM +ANGLEWORMS +ANGLICE +ANGLICISE +ANGLICISED +ANGLICISES +ANGLICISING +ANGLICISM +ANGLICISMS +ANGLICIZATION +ANGLICIZATIONS +ANGLICIZE +ANGLICIZED +ANGLICIZES +ANGLICIZING +ANGLING +ANGLINGS +ANGLO +ANGLOPHONE +ANGLOS +ANGORA +ANGORAS +ANGOSTURA +ANGOSTURAS +ANGRIER +ANGRIEST +ANGRILY +ANGRINESS +ANGRINESSES +ANGRY +ANGST +ANGSTROM +ANGSTROMS +ANGSTS +ANGUINE +ANGUISH +ANGUISHED +ANGUISHES +ANGUISHING +ANGULAR +ANGULARITIES +ANGULARITY +ANGULARLY +ANGULATE +ANGULATED +ANGULATES +ANGULATING +ANGULATION +ANGULATIONS +ANGULOSE +ANGULOUS +ANHEDONIA +ANHEDONIAS +ANHEDONIC +ANHINGA +ANHINGAS +ANHYDRIDE +ANHYDRIDES +ANHYDRITE +ANHYDRITES +ANHYDROUS +ANI +ANIL +ANILE +ANILIN +ANILINCTUS +ANILINCTUSES +ANILINE +ANILINES +ANILINGUS +ANILINGUSES +ANILINS +ANILITIES +ANILITY +ANILS +ANIMA +ANIMACIES +ANIMACY +ANIMADVERSION +ANIMADVERSIONS +ANIMADVERT +ANIMADVERTED +ANIMADVERTING +ANIMADVERTS +ANIMAL +ANIMALCULA +ANIMALCULE +ANIMALCULES +ANIMALCULUM +ANIMALIAN +ANIMALIC +ANIMALIER +ANIMALIERS +ANIMALISM +ANIMALISMS +ANIMALIST +ANIMALISTIC +ANIMALISTS +ANIMALITIES +ANIMALITY +ANIMALIZATION +ANIMALIZATIONS +ANIMALIZE +ANIMALIZED +ANIMALIZES +ANIMALIZING +ANIMALLIKE +ANIMALLY +ANIMALS +ANIMAS +ANIMATE +ANIMATED +ANIMATEDLY +ANIMATELY +ANIMATENESS +ANIMATENESSES +ANIMATER +ANIMATERS +ANIMATES +ANIMATING +ANIMATION +ANIMATIONS +ANIMATISM +ANIMATISMS +ANIMATIST +ANIMATISTS +ANIMATO +ANIMATOR +ANIMATORS +ANIMATRONIC +ANIMATRONICALLY +ANIME +ANIMES +ANIMI +ANIMIS +ANIMISM +ANIMISMS +ANIMIST +ANIMISTIC +ANIMISTS +ANIMOSITIES +ANIMOSITY +ANIMUS +ANIMUSES +ANION +ANIONIC +ANIONS +ANIS +ANISE +ANISEED +ANISEEDS +ANISEIKONIA +ANISEIKONIAS +ANISEIKONIC +ANISES +ANISETTE +ANISETTES +ANISIC +ANISOGAMIES +ANISOGAMOUS +ANISOGAMY +ANISOLE +ANISOLES +ANISOMETROPIA +ANISOMETROPIAS +ANISOMETROPIC +ANISOTROPIC +ANISOTROPICALLY +ANISOTROPIES +ANISOTROPISM +ANISOTROPISMS +ANISOTROPY +ANKERITE +ANKERITES +ANKH +ANKHS +ANKLE +ANKLEBONE +ANKLEBONES +ANKLED +ANKLES +ANKLET +ANKLETS +ANKLING +ANKUS +ANKUSES +ANKUSH +ANKUSHES +ANKYLOSAUR +ANKYLOSAURS +ANKYLOSAURUS +ANKYLOSAURUSES +ANKYLOSE +ANKYLOSED +ANKYLOSES +ANKYLOSING +ANKYLOSIS +ANKYLOSTOMIASES +ANKYLOSTOMIASIS +ANKYLOTIC +ANLACE +ANLACES +ANLAGE +ANLAGEN +ANLAGES +ANLAS +ANLASES +ANNA +ANNAL +ANNALIST +ANNALISTIC +ANNALISTS +ANNALS +ANNAS +ANNATES +ANNATTO +ANNATTOS +ANNEAL +ANNEALED +ANNEALER +ANNEALERS +ANNEALING +ANNEALS +ANNELID +ANNELIDAN +ANNELIDANS +ANNELIDS +ANNEX +ANNEXATION +ANNEXATIONAL +ANNEXATIONIST +ANNEXATIONISTS +ANNEXATIONS +ANNEXE +ANNEXED +ANNEXES +ANNEXING +ANNIHILATE +ANNIHILATED +ANNIHILATES +ANNIHILATING +ANNIHILATION +ANNIHILATIONS +ANNIHILATOR +ANNIHILATORS +ANNIHILATORY +ANNIVERSARIES +ANNIVERSARY +ANNONA +ANNONAS +ANNOTATE +ANNOTATED +ANNOTATES +ANNOTATING +ANNOTATION +ANNOTATIONS +ANNOTATIVE +ANNOTATOR +ANNOTATORS +ANNOUNCE +ANNOUNCED +ANNOUNCEMENT +ANNOUNCEMENTS +ANNOUNCER +ANNOUNCERS +ANNOUNCES +ANNOUNCING +ANNOY +ANNOYANCE +ANNOYANCES +ANNOYED +ANNOYER +ANNOYERS +ANNOYING +ANNOYINGLY +ANNOYS +ANNUAL +ANNUALIZE +ANNUALIZED +ANNUALIZES +ANNUALIZING +ANNUALLY +ANNUALS +ANNUITANT +ANNUITANTS +ANNUITIES +ANNUITY +ANNUL +ANNULAR +ANNULARLY +ANNULATE +ANNULATED +ANNULATION +ANNULATIONS +ANNULET +ANNULETS +ANNULI +ANNULLED +ANNULLING +ANNULMENT +ANNULMENTS +ANNULOSE +ANNULS +ANNULUS +ANNULUSES +ANNUNCIATE +ANNUNCIATED +ANNUNCIATES +ANNUNCIATING +ANNUNCIATION +ANNUNCIATIONS +ANNUNCIATOR +ANNUNCIATORS +ANNUNCIATORY +ANOA +ANOAS +ANODAL +ANODALLY +ANODE +ANODES +ANODIC +ANODICALLY +ANODIZATION +ANODIZATIONS +ANODIZE +ANODIZED +ANODIZES +ANODIZING +ANODYNE +ANODYNES +ANODYNIC +ANOINT +ANOINTED +ANOINTER +ANOINTERS +ANOINTING +ANOINTMENT +ANOINTMENTS +ANOINTS +ANOLE +ANOLES +ANOLYTE +ANOLYTES +ANOMALIES +ANOMALOUS +ANOMALOUSLY +ANOMALOUSNESS +ANOMALOUSNESSES +ANOMALY +ANOMIC +ANOMIE +ANOMIES +ANOMY +ANON +ANONYM +ANONYMITIES +ANONYMITY +ANONYMOUS +ANONYMOUSLY +ANONYMOUSNESS +ANONYMOUSNESSES +ANONYMS +ANOOPSIA +ANOOPSIAS +ANOPHELES +ANOPHELINE +ANOPHELINES +ANOPIA +ANOPIAS +ANOPSIA +ANOPSIAS +ANORAK +ANORAKS +ANORECTIC +ANORECTICS +ANORETIC +ANORETICS +ANOREXIA +ANOREXIAS +ANOREXIC +ANOREXICS +ANOREXIES +ANOREXIGENIC +ANOREXY +ANORTHIC +ANORTHITE +ANORTHITES +ANORTHITIC +ANORTHOSITE +ANORTHOSITES +ANORTHOSITIC +ANOSMATIC +ANOSMIA +ANOSMIAS +ANOSMIC +ANOTHER +ANOVULANT +ANOVULANTS +ANOVULAR +ANOVULATORY +ANOXEMIA +ANOXEMIAS +ANOXEMIC +ANOXIA +ANOXIAS +ANOXIC +ANSA +ANSAE +ANSATE +ANSATED +ANSERINE +ANSERINES +ANSEROUS +ANSWER +ANSWERABLE +ANSWERED +ANSWERER +ANSWERERS +ANSWERING +ANSWERS +ANT +ANTA +ANTACID +ANTACIDS +ANTAE +ANTAGONISM +ANTAGONISMS +ANTAGONIST +ANTAGONISTIC +ANTAGONISTS +ANTAGONIZE +ANTAGONIZED +ANTAGONIZES +ANTAGONIZING +ANTALGIC +ANTALGICS +ANTALKALI +ANTALKALIES +ANTALKALIS +ANTARCTIC +ANTAS +ANTBEAR +ANTBEARS +ANTE +ANTEATER +ANTEATERS +ANTEBELLUM +ANTECEDE +ANTECEDED +ANTECEDENCE +ANTECEDENCES +ANTECEDENT +ANTECEDENTLY +ANTECEDENTS +ANTECEDES +ANTECEDING +ANTECESSOR +ANTECESSORS +ANTECHAMBER +ANTECHAMBERS +ANTECHAPEL +ANTECHAPELS +ANTECHOIR +ANTECHOIRS +ANTED +ANTEDATE +ANTEDATED +ANTEDATES +ANTEDATING +ANTEDILUVIAN +ANTEDILUVIANS +ANTEED +ANTEFIX +ANTEFIXA +ANTEFIXAE +ANTEFIXAL +ANTEFIXES +ANTEING +ANTELOPE +ANTELOPES +ANTEMORTEM +ANTENATAL +ANTENATALLY +ANTENNA +ANTENNAE +ANTENNAL +ANTENNAS +ANTENNULAR +ANTENNULE +ANTENNULES +ANTENUPTIAL +ANTEPAST +ANTEPASTS +ANTEPENDIA +ANTEPENDIUM +ANTEPENDIUMS +ANTEPENULT +ANTEPENULTIMA +ANTEPENULTIMAS +ANTEPENULTIMATE +ANTEPENULTS +ANTERIOR +ANTERIORLY +ANTEROOM +ANTEROOMS +ANTES +ANTETYPE +ANTETYPES +ANTEVERT +ANTEVERTED +ANTEVERTING +ANTEVERTS +ANTHELIA +ANTHELICES +ANTHELION +ANTHELIONS +ANTHELIX +ANTHELIXES +ANTHELMINTIC +ANTHELMINTICS +ANTHEM +ANTHEMED +ANTHEMIA +ANTHEMIC +ANTHEMING +ANTHEMION +ANTHEMS +ANTHER +ANTHERAL +ANTHERID +ANTHERIDIA +ANTHERIDIAL +ANTHERIDIUM +ANTHERIDS +ANTHERS +ANTHESES +ANTHESIS +ANTHILL +ANTHILLS +ANTHOCYAN +ANTHOCYANIN +ANTHOCYANINS +ANTHOCYANS +ANTHODIA +ANTHODIUM +ANTHOID +ANTHOLOGICAL +ANTHOLOGIES +ANTHOLOGIST +ANTHOLOGISTS +ANTHOLOGIZE +ANTHOLOGIZED +ANTHOLOGIZER +ANTHOLOGIZERS +ANTHOLOGIZES +ANTHOLOGIZING +ANTHOLOGY +ANTHOPHILOUS +ANTHOPHYLLITE +ANTHOPHYLLITES +ANTHOZOAN +ANTHOZOANS +ANTHOZOIC +ANTHRACENE +ANTHRACENES +ANTHRACES +ANTHRACITE +ANTHRACITES +ANTHRACITIC +ANTHRACNOSE +ANTHRACNOSES +ANTHRANILATE +ANTHRANILATES +ANTHRAQUINONE +ANTHRAQUINONES +ANTHRAX +ANTHROPIC +ANTHROPICAL +ANTHROPOCENTRIC +ANTHROPOGENIC +ANTHROPOID +ANTHROPOIDS +ANTHROPOLOGICAL +ANTHROPOLOGIES +ANTHROPOLOGIST +ANTHROPOLOGISTS +ANTHROPOLOGY +ANTHROPOMETRIC +ANTHROPOMETRIES +ANTHROPOMETRY +ANTHROPOMORPH +ANTHROPOMORPHIC +ANTHROPOMORPHS +ANTHROPOPATHISM +ANTHROPOPHAGI +ANTHROPOPHAGIES +ANTHROPOPHAGOUS +ANTHROPOPHAGUS +ANTHROPOPHAGY +ANTHROPOSOPHIES +ANTHROPOSOPHY +ANTHURIUM +ANTHURIUMS +ANTI +ANTIABORTION +ANTIABORTIONIST +ANTIABUSE +ANTIACADEMIC +ANTIACNE +ANTIAGGRESSION +ANTIAGING +ANTIAIR +ANTIAIRCRAFT +ANTIAIRCRAFTS +ANTIALCOHOL +ANTIALCOHOLISM +ANTIALIEN +ANTIALLERGENIC +ANTIANEMIA +ANTIANXIETY +ANTIAPARTHEID +ANTIAPHRODISIAC +ANTIAR +ANTIARIN +ANTIARINS +ANTIARMOR +ANTIARRHYTHMIC +ANTIARS +ANTIARTHRITIC +ANTIARTHRITICS +ANTIARTHRITIS +ANTIASTHMA +ANTIATOM +ANTIATOMS +ANTIAUTHORITY +ANTIAUXIN +ANTIAUXINS +ANTIBACKLASH +ANTIBACTERIAL +ANTIBACTERIALS +ANTIBIAS +ANTIBILLBOARD +ANTIBIOSES +ANTIBIOSIS +ANTIBIOTIC +ANTIBIOTICALLY +ANTIBIOTICS +ANTIBLACK +ANTIBLACKISM +ANTIBLACKISMS +ANTIBODIES +ANTIBODY +ANTIBOSS +ANTIBOURGEOIS +ANTIBOYCOTT +ANTIBUG +ANTIBURGLAR +ANTIBURGLARY +ANTIBUSER +ANTIBUSERS +ANTIBUSINESS +ANTIBUSING +ANTIC +ANTICAKING +ANTICALLY +ANTICANCER +ANTICAPITALISM +ANTICAPITALISMS +ANTICAPITALIST +ANTICAR +ANTICARCINOGEN +ANTICARCINOGENS +ANTICARIES +ANTICELLULITE +ANTICENSORSHIP +ANTICHLOR +ANTICHLORS +ANTICHOICE +ANTICHOICER +ANTICHOICERS +ANTICHOLESTEROL +ANTICHOLINERGIC +ANTICHURCH +ANTICIGARETTE +ANTICIPANT +ANTICIPANTS +ANTICIPATABLE +ANTICIPATE +ANTICIPATED +ANTICIPATES +ANTICIPATING +ANTICIPATION +ANTICIPATIONS +ANTICIPATOR +ANTICIPATORS +ANTICIPATORY +ANTICITY +ANTICIVIC +ANTICK +ANTICKED +ANTICKING +ANTICKS +ANTICLASSICAL +ANTICLERICAL +ANTICLERICALISM +ANTICLERICALS +ANTICLIMACTIC +ANTICLIMACTICAL +ANTICLIMAX +ANTICLIMAXES +ANTICLINAL +ANTICLINE +ANTICLINES +ANTICLING +ANTICLOCKWISE +ANTICLOTTING +ANTICLY +ANTICOAGULANT +ANTICOAGULANTS +ANTICODON +ANTICODONS +ANTICOLD +ANTICOLLISION +ANTICOLONIAL +ANTICOLONIALISM +ANTICOLONIALIST +ANTICOMMERCIAL +ANTICOMMUNISM +ANTICOMMUNISMS +ANTICOMMUNIST +ANTICOMMUNISTS +ANTICOMPETITIVE +ANTICONSUMER +ANTICONVULSANT +ANTICONVULSANTS +ANTICONVULSIVE +ANTICONVULSIVES +ANTICORPORATE +ANTICORROSION +ANTICORROSIVE +ANTICORROSIVES +ANTICORRUPTION +ANTICRACK +ANTICREATIVE +ANTICRIME +ANTICRUELTY +ANTICS +ANTICULT +ANTICULTS +ANTICULTURAL +ANTICYCLONE +ANTICYCLONES +ANTICYCLONIC +ANTIDANDRUFF +ANTIDEFAMATION +ANTIDEMOCRATIC +ANTIDEPRESSANT +ANTIDEPRESSANTS +ANTIDEPRESSION +ANTIDERIVATIVE +ANTIDERIVATIVES +ANTIDESICCANT +ANTIDEVELOPMENT +ANTIDIABETIC +ANTIDIARRHEAL +ANTIDIARRHEALS +ANTIDILUTION +ANTIDOGMATIC +ANTIDORA +ANTIDOTAL +ANTIDOTALLY +ANTIDOTE +ANTIDOTED +ANTIDOTES +ANTIDOTING +ANTIDRAFT +ANTIDROMIC +ANTIDROMICALLY +ANTIDRUG +ANTIDUMPING +ANTIECONOMIC +ANTIEDUCATIONAL +ANTIEGALITARIAN +ANTIELECTRON +ANTIELECTRONS +ANTIELITE +ANTIELITES +ANTIELITISM +ANTIELITISMS +ANTIELITIST +ANTIEMETIC +ANTIEMETICS +ANTIENTROPIC +ANTIEPILEPSY +ANTIEPILEPTIC +ANTIEPILEPTICS +ANTIEROTIC +ANTIESTROGEN +ANTIESTROGENS +ANTIEVOLUTION +ANTIFAMILY +ANTIFASCISM +ANTIFASCISMS +ANTIFASCIST +ANTIFASCISTS +ANTIFASHION +ANTIFASHIONABLE +ANTIFASHIONS +ANTIFAT +ANTIFATIGUE +ANTIFEMALE +ANTIFEMININE +ANTIFEMINISM +ANTIFEMINISMS +ANTIFEMINIST +ANTIFEMINISTS +ANTIFERROMAGNET +ANTIFERTILITY +ANTIFILIBUSTER +ANTIFLU +ANTIFOAM +ANTIFOAMING +ANTIFOG +ANTIFOGGING +ANTIFORECLOSURE +ANTIFOREIGN +ANTIFOREIGNER +ANTIFORMALIST +ANTIFOULING +ANTIFRAUD +ANTIFREEZE +ANTIFREEZES +ANTIFRICTION +ANTIFUNGAL +ANTIFUNGALS +ANTIFUR +ANTIGAMBLING +ANTIGANG +ANTIGAY +ANTIGEN +ANTIGENE +ANTIGENES +ANTIGENIC +ANTIGENICALLY +ANTIGENICITIES +ANTIGENICITY +ANTIGENS +ANTIGLARE +ANTIGLOBULIN +ANTIGLOBULINS +ANTIGOVERNMENT +ANTIGRAFT +ANTIGRAVITIES +ANTIGRAVITY +ANTIGROWTH +ANTIGUERRILLA +ANTIGUN +ANTIHELICES +ANTIHELIX +ANTIHELIXES +ANTIHERO +ANTIHEROES +ANTIHEROIC +ANTIHEROINE +ANTIHEROINES +ANTIHERPES +ANTIHIJACK +ANTIHISTAMINE +ANTIHISTAMINES +ANTIHISTAMINIC +ANTIHISTAMINICS +ANTIHISTORICAL +ANTIHOMOSEXUAL +ANTIHUMAN +ANTIHUMANISM +ANTIHUMANISMS +ANTIHUMANISTIC +ANTIHUNTER +ANTIHUNTING +ANTIHYSTERIC +ANTIHYSTERICS +ANTIJAM +ANTIJAMMING +ANTIKICKBACK +ANTIKING +ANTIKINGS +ANTIKNOCK +ANTIKNOCKS +ANTILABOR +ANTILEAK +ANTILEFT +ANTILEPROSY +ANTILEUKEMIC +ANTILIBERAL +ANTILIBERALISM +ANTILIBERALISMS +ANTILIBERALS +ANTILIBERTARIAN +ANTILIFE +ANTILIFER +ANTILIFERS +ANTILITERATE +ANTILITTER +ANTILITTERING +ANTILOCK +ANTILOG +ANTILOGARITHM +ANTILOGARITHMS +ANTILOGICAL +ANTILOGIES +ANTILOGS +ANTILOGY +ANTILYNCHING +ANTIMACASSAR +ANTIMACASSARS +ANTIMACHO +ANTIMAGNETIC +ANTIMALARIA +ANTIMALARIAL +ANTIMALARIALS +ANTIMALE +ANTIMAN +ANTIMANAGEMENT +ANTIMARIJUANA +ANTIMARKET +ANTIMASK +ANTIMASKS +ANTIMATERIALISM +ANTIMATERIALIST +ANTIMATTER +ANTIMATTERS +ANTIMECHANIST +ANTIMECHANISTS +ANTIMERE +ANTIMERES +ANTIMERGER +ANTIMERIC +ANTIMETABOLIC +ANTIMETABOLITE +ANTIMETABOLITES +ANTIMICROBIAL +ANTIMICROBIALS +ANTIMILITARISM +ANTIMILITARISMS +ANTIMILITARIST +ANTIMILITARISTS +ANTIMILITARY +ANTIMINE +ANTIMISSILE +ANTIMITOTIC +ANTIMITOTICS +ANTIMODERN +ANTIMODERNIST +ANTIMODERNISTS +ANTIMONARCHICAL +ANTIMONARCHIST +ANTIMONARCHISTS +ANTIMONIAL +ANTIMONIALS +ANTIMONIC +ANTIMONIDE +ANTIMONIDES +ANTIMONIES +ANTIMONOPOLIST +ANTIMONOPOLISTS +ANTIMONOPOLY +ANTIMONY +ANTIMONYL +ANTIMONYLS +ANTIMOSQUITO +ANTIMUSIC +ANTIMUSICAL +ANTIMUSICS +ANTIMYCIN +ANTIMYCINS +ANTINARRATIVE +ANTINARRATIVES +ANTINATIONAL +ANTINATIONALIST +ANTINATURAL +ANTINATURE +ANTINAUSEA +ANTINEOPLASTIC +ANTINEPOTISM +ANTINEUTRINO +ANTINEUTRINOS +ANTINEUTRON +ANTINEUTRONS +ANTING +ANTINGS +ANTINODAL +ANTINODE +ANTINODES +ANTINOISE +ANTINOME +ANTINOMES +ANTINOMIAN +ANTINOMIANISM +ANTINOMIANISMS +ANTINOMIANS +ANTINOMIC +ANTINOMIES +ANTINOMY +ANTINOVEL +ANTINOVELIST +ANTINOVELISTS +ANTINOVELS +ANTINUCLEAR +ANTINUCLEON +ANTINUCLEONS +ANTINUKE +ANTINUKER +ANTINUKERS +ANTINUKES +ANTIOBESITY +ANTIOBSCENITY +ANTIOXIDANT +ANTIOXIDANTS +ANTIOZONANT +ANTIOZONANTS +ANTIPAPAL +ANTIPARALLEL +ANTIPARASITIC +ANTIPARTICLE +ANTIPARTICLES +ANTIPARTIES +ANTIPARTY +ANTIPASTI +ANTIPASTO +ANTIPASTOS +ANTIPATHETIC +ANTIPATHIES +ANTIPATHY +ANTIPERSONNEL +ANTIPERSPIRANT +ANTIPERSPIRANTS +ANTIPESTICIDE +ANTIPHLOGISTIC +ANTIPHON +ANTIPHONAL +ANTIPHONALLY +ANTIPHONALS +ANTIPHONARIES +ANTIPHONARY +ANTIPHONIES +ANTIPHONS +ANTIPHONY +ANTIPHRASES +ANTIPHRASIS +ANTIPILL +ANTIPIRACY +ANTIPLAGUE +ANTIPLAQUE +ANTIPLEASURE +ANTIPOACHING +ANTIPODAL +ANTIPODALS +ANTIPODE +ANTIPODEAN +ANTIPODEANS +ANTIPODES +ANTIPOETIC +ANTIPOLAR +ANTIPOLE +ANTIPOLES +ANTIPOLICE +ANTIPOLITICAL +ANTIPOLITICS +ANTIPOLLUTION +ANTIPOLLUTIONS +ANTIPOPE +ANTIPOPES +ANTIPOPULAR +ANTIPORN +ANTIPORNOGRAPHY +ANTIPOT +ANTIPOVERTY +ANTIPREDATOR +ANTIPRESS +ANTIPROGRESSIVE +ANTIPROTON +ANTIPROTONS +ANTIPRURITIC +ANTIPRURITICS +ANTIPSYCHOTIC +ANTIPSYCHOTICS +ANTIPYIC +ANTIPYICS +ANTIPYRETIC +ANTIPYRETICS +ANTIPYRINE +ANTIPYRINES +ANTIQUARIAN +ANTIQUARIANISM +ANTIQUARIANISMS +ANTIQUARIANS +ANTIQUARIES +ANTIQUARK +ANTIQUARKS +ANTIQUARY +ANTIQUATE +ANTIQUATED +ANTIQUATES +ANTIQUATING +ANTIQUATION +ANTIQUATIONS +ANTIQUE +ANTIQUED +ANTIQUELY +ANTIQUER +ANTIQUERS +ANTIQUES +ANTIQUING +ANTIQUITIES +ANTIQUITY +ANTIRABIES +ANTIRACHITIC +ANTIRACISM +ANTIRACISMS +ANTIRACIST +ANTIRACISTS +ANTIRADAR +ANTIRADARS +ANTIRADICAL +ANTIRADICALISM +ANTIRADICALISMS +ANTIRAPE +ANTIRATIONAL +ANTIRATIONALISM +ANTIRATIONALIST +ANTIRATIONALITY +ANTIREALISM +ANTIREALISMS +ANTIREALIST +ANTIREALISTS +ANTIRECESSION +ANTIRED +ANTIREFLECTION +ANTIREFLECTIVE +ANTIREFORM +ANTIREGULATORY +ANTIREJECTION +ANTIRELIGION +ANTIRELIGIOUS +ANTIRHEUMATIC +ANTIRHEUMATICS +ANTIRIOT +ANTIRITUALISM +ANTIRITUALISMS +ANTIROCK +ANTIROLL +ANTIROMANTIC +ANTIROMANTICISM +ANTIROMANTICS +ANTIROYAL +ANTIROYALIST +ANTIROYALISTS +ANTIRRHINUM +ANTIRRHINUMS +ANTIRUST +ANTIRUSTS +ANTIS +ANTISAG +ANTISATELLITE +ANTISCIENCE +ANTISCIENCES +ANTISCIENTIFIC +ANTISCORBUTIC +ANTISCORBUTICS +ANTISECRECY +ANTISEGREGATION +ANTISEIZURE +ANTISENSE +ANTISENTIMENTAL +ANTISEPARATIST +ANTISEPARATISTS +ANTISEPSES +ANTISEPSIS +ANTISEPTIC +ANTISEPTICALLY +ANTISEPTICS +ANTISERA +ANTISERUM +ANTISERUMS +ANTISEX +ANTISEXIST +ANTISEXISTS +ANTISEXUAL +ANTISEXUALITIES +ANTISEXUALITY +ANTISHARK +ANTISHIP +ANTISHOCK +ANTISHOCKS +ANTISHOPLIFTING +ANTISKID +ANTISLAVERY +ANTISLEEP +ANTISLIP +ANTISMOG +ANTISMOKE +ANTISMOKER +ANTISMOKERS +ANTISMOKING +ANTISMUGGLING +ANTISMUT +ANTISNOB +ANTISNOBS +ANTISOCIAL +ANTISOCIALIST +ANTISOCIALISTS +ANTISOCIALLY +ANTISOLAR +ANTISPAM +ANTISPASMODIC +ANTISPASMODICS +ANTISPECULATION +ANTISPECULATIVE +ANTISPENDING +ANTISTAT +ANTISTATE +ANTISTATIC +ANTISTATS +ANTISTICK +ANTISTORIES +ANTISTORY +ANTISTRESS +ANTISTRIKE +ANTISTROPHE +ANTISTROPHES +ANTISTROPHIC +ANTISTUDENT +ANTISTYLE +ANTISTYLES +ANTISUBMARINE +ANTISUBSIDY +ANTISUBVERSION +ANTISUBVERSIVE +ANTISUICIDE +ANTISYMMETRIC +ANTISYPHILITIC +ANTISYPHILITICS +ANTITAKEOVER +ANTITANK +ANTITARNISH +ANTITAX +ANTITECHNOLOGY +ANTITERRORISM +ANTITERRORISMS +ANTITERRORIST +ANTITERRORISTS +ANTITHEFT +ANTITHEORETICAL +ANTITHESES +ANTITHESIS +ANTITHETIC +ANTITHETICAL +ANTITHETICALLY +ANTITHROMBIN +ANTITHROMBINS +ANTITHYROID +ANTITOBACCO +ANTITOXIC +ANTITOXIN +ANTITOXINS +ANTITRADE +ANTITRADES +ANTITRADITIONAL +ANTITRAGI +ANTITRAGUS +ANTITRUST +ANTITRUSTER +ANTITRUSTERS +ANTITUBERCULAR +ANTITUBERCULOUS +ANTITUMOR +ANTITUMORAL +ANTITUMORS +ANTITUSSIVE +ANTITUSSIVES +ANTITYPE +ANTITYPES +ANTITYPHOID +ANTITYPIC +ANTIULCER +ANTIUNION +ANTIUNIVERSITY +ANTIURBAN +ANTIVENIN +ANTIVENINS +ANTIVENOM +ANTIVENOMS +ANTIVIOLENCE +ANTIVIRAL +ANTIVIRUS +ANTIVIRUSES +ANTIVITAMIN +ANTIVITAMINS +ANTIVIVISECTION +ANTIWAR +ANTIWEAR +ANTIWEED +ANTIWELFARE +ANTIWHALING +ANTIWHITE +ANTIWOMAN +ANTIWRINKLE +ANTLER +ANTLERED +ANTLERS +ANTLIKE +ANTLION +ANTLIONS +ANTONOMASIA +ANTONOMASIAS +ANTONYM +ANTONYMIC +ANTONYMIES +ANTONYMOUS +ANTONYMS +ANTONYMY +ANTRA +ANTRAL +ANTRE +ANTRES +ANTRORSE +ANTRUM +ANTRUMS +ANTS +ANTSIER +ANTSIEST +ANTSINESS +ANTSINESSES +ANTSY +ANURAL +ANURAN +ANURANS +ANURESES +ANURESIS +ANURETIC +ANURIA +ANURIAS +ANURIC +ANUROUS +ANUS +ANUSES +ANVIL +ANVILED +ANVILING +ANVILLED +ANVILLING +ANVILS +ANVILTOP +ANVILTOPS +ANXIETIES +ANXIETY +ANXIOLYTIC +ANXIOLYTICS +ANXIOUS +ANXIOUSLY +ANXIOUSNESS +ANXIOUSNESSES +ANY +ANYBODIES +ANYBODY +ANYHOW +ANYMORE +ANYON +ANYONE +ANYONS +ANYPLACE +ANYTHING +ANYTHINGS +ANYTIME +ANYWAY +ANYWAYS +ANYWHERE +ANYWHERES +ANYWISE +AORIST +AORISTIC +AORISTICALLY +AORISTS +AORTA +AORTAE +AORTAL +AORTAS +AORTIC +AORTOGRAPHIC +AORTOGRAPHIES +AORTOGRAPHY +AOUDAD +AOUDADS +APACE +APACHE +APACHES +APAGOGE +APAGOGES +APAGOGIC +APANAGE +APANAGES +APAREJO +APAREJOS +APART +APARTHEID +APARTHEIDS +APARTMENT +APARTMENTAL +APARTMENTS +APARTNESS +APARTNESSES +APATETIC +APATHETIC +APATHETICALLY +APATHIES +APATHY +APATITE +APATITES +APATOSAUR +APATOSAURS +APATOSAURUS +APATOSAURUSES +APE +APEAK +APED +APEEK +APELIKE +APER +APERCU +APERCUS +APERIENT +APERIENTS +APERIES +APERIODIC +APERIODICALLY +APERIODICITIES +APERIODICITY +APERITIF +APERITIFS +APERS +APERTURAL +APERTURE +APERTURED +APERTURES +APERY +APES +APETALIES +APETALOUS +APETALY +APEX +APEXES +APHAERESES +APHAERESIS +APHAERETIC +APHAGIA +APHAGIAS +APHANITE +APHANITES +APHANITIC +APHASIA +APHASIAC +APHASIACS +APHASIAS +APHASIC +APHASICS +APHELIA +APHELIAN +APHELION +APHELIONS +APHERESES +APHERESIS +APHERETIC +APHESES +APHESIS +APHETIC +APHETICALLY +APHID +APHIDES +APHIDIAN +APHIDIANS +APHIDS +APHIS +APHOLATE +APHOLATES +APHONIA +APHONIAS +APHONIC +APHONICS +APHORISE +APHORISED +APHORISES +APHORISING +APHORISM +APHORISMS +APHORIST +APHORISTIC +APHORISTICALLY +APHORISTS +APHORIZE +APHORIZED +APHORIZER +APHORIZERS +APHORIZES +APHORIZING +APHOTIC +APHRODISIAC +APHRODISIACAL +APHRODISIACS +APHRODITE +APHRODITES +APHTHA +APHTHAE +APHTHOUS +APHYLLIES +APHYLLOUS +APHYLLY +APIACEOUS +APIAN +APIARIAN +APIARIANS +APIARIES +APIARIST +APIARISTS +APIARY +APICAL +APICALLY +APICALS +APICES +APICULATE +APICULI +APICULTURAL +APICULTURE +APICULTURES +APICULTURIST +APICULTURISTS +APICULUS +APIECE +APIMANIA +APIMANIAS +APING +APIOLOGIES +APIOLOGY +APISH +APISHLY +APISHNESS +APISHNESSES +APIVOROUS +APLANATIC +APLASIA +APLASIAS +APLASTIC +APLENTY +APLITE +APLITES +APLITIC +APLOMB +APLOMBS +APNEA +APNEAL +APNEAS +APNEIC +APNOEA +APNOEAL +APNOEAS +APNOEIC +APO +APOAPSES +APOAPSIDES +APOAPSIS +APOCALYPSE +APOCALYPSES +APOCALYPTIC +APOCALYPTICAL +APOCALYPTICALLY +APOCALYPTICISM +APOCALYPTICISMS +APOCALYPTISM +APOCALYPTISMS +APOCALYPTIST +APOCALYPTISTS +APOCARP +APOCARPIES +APOCARPS +APOCARPY +APOCHROMATIC +APOCOPATE +APOCOPATED +APOCOPATES +APOCOPATING +APOCOPE +APOCOPES +APOCOPIC +APOCRINE +APOCRYPHA +APOCRYPHAL +APOCRYPHALLY +APOCRYPHALNESS +APOD +APODAL +APODEICTIC +APODICTIC +APODICTICALLY +APODOSES +APODOSIS +APODOUS +APODS +APOENZYME +APOENZYMES +APOGAMIC +APOGAMIES +APOGAMOUS +APOGAMY +APOGEAL +APOGEAN +APOGEE +APOGEES +APOGEIC +APOLIPOPROTEIN +APOLIPOPROTEINS +APOLITICAL +APOLITICALLY +APOLLO +APOLLOS +APOLOG +APOLOGAL +APOLOGETIC +APOLOGETICALLY +APOLOGETICS +APOLOGIA +APOLOGIAE +APOLOGIAS +APOLOGIES +APOLOGISE +APOLOGISED +APOLOGISES +APOLOGISING +APOLOGIST +APOLOGISTS +APOLOGIZE +APOLOGIZED +APOLOGIZER +APOLOGIZERS +APOLOGIZES +APOLOGIZING +APOLOGS +APOLOGUE +APOLOGUES +APOLOGY +APOLUNE +APOLUNES +APOMICT +APOMICTIC +APOMICTICALLY +APOMICTS +APOMIXES +APOMIXIS +APOMORPHINE +APOMORPHINES +APONEUROSES +APONEUROSIS +APONEUROTIC +APOPHASES +APOPHASIS +APOPHONIES +APOPHONY +APOPHTHEGM +APOPHTHEGMS +APOPHYGE +APOPHYGES +APOPHYLLITE +APOPHYLLITES +APOPHYSEAL +APOPHYSES +APOPHYSIS +APOPLECTIC +APOPLECTICALLY +APOPLEXIES +APOPLEXY +APOPTOSES +APOPTOSIS +APOPTOTIC +APORIA +APORIAS +APORT +APOS +APOSEMATIC +APOSEMATICALLY +APOSIOPESES +APOSIOPESIS +APOSIOPETIC +APOSPORIC +APOSPORIES +APOSPOROUS +APOSPORY +APOSTACIES +APOSTACY +APOSTASIES +APOSTASY +APOSTATE +APOSTATES +APOSTATISE +APOSTATISED +APOSTATISES +APOSTATISING +APOSTATIZE +APOSTATIZED +APOSTATIZES +APOSTATIZING +APOSTIL +APOSTILLE +APOSTILLES +APOSTILS +APOSTLE +APOSTLES +APOSTLESHIP +APOSTLESHIPS +APOSTOLATE +APOSTOLATES +APOSTOLIC +APOSTOLICITIES +APOSTOLICITY +APOSTROPHE +APOSTROPHES +APOSTROPHIC +APOSTROPHISE +APOSTROPHISED +APOSTROPHISES +APOSTROPHISING +APOSTROPHIZE +APOSTROPHIZED +APOSTROPHIZES +APOSTROPHIZING +APOTHECARIES +APOTHECARY +APOTHECE +APOTHECES +APOTHECIA +APOTHECIAL +APOTHECIUM +APOTHEGM +APOTHEGMATIC +APOTHEGMS +APOTHEM +APOTHEMS +APOTHEOSES +APOTHEOSIS +APOTHEOSIZE +APOTHEOSIZED +APOTHEOSIZES +APOTHEOSIZING +APOTROPAIC +APOTROPAICALLY +APP +APPAL +APPALL +APPALLED +APPALLING +APPALLINGLY +APPALLS +APPALOOSA +APPALOOSAS +APPALS +APPANAGE +APPANAGES +APPARAT +APPARATCHIK +APPARATCHIKI +APPARATCHIKS +APPARATS +APPARATUS +APPARATUSES +APPAREL +APPARELED +APPARELING +APPARELLED +APPARELLING +APPARELS +APPARENT +APPARENTLY +APPARENTNESS +APPARENTNESSES +APPARITION +APPARITIONAL +APPARITIONS +APPARITOR +APPARITORS +APPEAL +APPEALABILITIES +APPEALABILITY +APPEALABLE +APPEALED +APPEALER +APPEALERS +APPEALING +APPEALINGLY +APPEALS +APPEAR +APPEARANCE +APPEARANCES +APPEARED +APPEARING +APPEARS +APPEASABLE +APPEASE +APPEASED +APPEASEMENT +APPEASEMENTS +APPEASER +APPEASERS +APPEASES +APPEASING +APPEL +APPELLANT +APPELLANTS +APPELLATE +APPELLATION +APPELLATIONS +APPELLATIVE +APPELLATIVELY +APPELLATIVES +APPELLEE +APPELLEES +APPELLOR +APPELLORS +APPELS +APPEND +APPENDAGE +APPENDAGES +APPENDANT +APPENDANTS +APPENDECTOMIES +APPENDECTOMY +APPENDED +APPENDENT +APPENDENTS +APPENDICECTOMY +APPENDICES +APPENDICITIS +APPENDICITISES +APPENDICULAR +APPENDING +APPENDIX +APPENDIXES +APPENDS +APPERCEIVE +APPERCEIVED +APPERCEIVES +APPERCEIVING +APPERCEPTION +APPERCEPTIONS +APPERCEPTIVE +APPERTAIN +APPERTAINED +APPERTAINING +APPERTAINS +APPESTAT +APPESTATS +APPETENCE +APPETENCES +APPETENCIES +APPETENCY +APPETENT +APPETISER +APPETISERS +APPETISING +APPETITE +APPETITES +APPETITIVE +APPETIZER +APPETIZERS +APPETIZING +APPETIZINGLY +APPLAUD +APPLAUDABLE +APPLAUDABLY +APPLAUDED +APPLAUDER +APPLAUDERS +APPLAUDING +APPLAUDS +APPLAUSE +APPLAUSES +APPLE +APPLECART +APPLECARTS +APPLEJACK +APPLEJACKS +APPLES +APPLESAUCE +APPLESAUCES +APPLET +APPLETS +APPLIABLE +APPLIANCE +APPLIANCES +APPLICABILITIES +APPLICABILITY +APPLICABLE +APPLICANT +APPLICANTS +APPLICATION +APPLICATIONS +APPLICATIVE +APPLICATIVELY +APPLICATOR +APPLICATORS +APPLICATORY +APPLIED +APPLIER +APPLIERS +APPLIES +APPLIQUE +APPLIQUED +APPLIQUEING +APPLIQUES +APPLY +APPLYING +APPOGGIATURA +APPOGGIATURAS +APPOINT +APPOINTED +APPOINTEE +APPOINTEES +APPOINTER +APPOINTERS +APPOINTING +APPOINTIVE +APPOINTMENT +APPOINTMENTS +APPOINTOR +APPOINTORS +APPOINTS +APPORTION +APPORTIONABLE +APPORTIONED +APPORTIONING +APPORTIONMENT +APPORTIONMENTS +APPORTIONS +APPOSABLE +APPOSE +APPOSED +APPOSER +APPOSERS +APPOSES +APPOSING +APPOSITE +APPOSITELY +APPOSITENESS +APPOSITENESSES +APPOSITION +APPOSITIONAL +APPOSITIONS +APPOSITIVE +APPOSITIVELY +APPOSITIVES +APPRAISAL +APPRAISALS +APPRAISE +APPRAISED +APPRAISEE +APPRAISEES +APPRAISEMENT +APPRAISEMENTS +APPRAISER +APPRAISERS +APPRAISES +APPRAISING +APPRAISINGLY +APPRAISIVE +APPRECIABLE +APPRECIABLY +APPRECIATE +APPRECIATED +APPRECIATES +APPRECIATING +APPRECIATION +APPRECIATIONS +APPRECIATIVE +APPRECIATIVELY +APPRECIATOR +APPRECIATORS +APPRECIATORY +APPREHEND +APPREHENDED +APPREHENDING +APPREHENDS +APPREHENSIBLE +APPREHENSIBLY +APPREHENSION +APPREHENSIONS +APPREHENSIVE +APPREHENSIVELY +APPRENTICE +APPRENTICED +APPRENTICES +APPRENTICESHIP +APPRENTICESHIPS +APPRENTICING +APPRESSED +APPRESSORIA +APPRESSORIUM +APPRISE +APPRISED +APPRISER +APPRISERS +APPRISES +APPRISING +APPRIZE +APPRIZED +APPRIZER +APPRIZERS +APPRIZES +APPRIZING +APPROACH +APPROACHABILITY +APPROACHABLE +APPROACHED +APPROACHES +APPROACHING +APPROBATE +APPROBATED +APPROBATES +APPROBATING +APPROBATION +APPROBATIONS +APPROBATORY +APPROPRIABLE +APPROPRIATE +APPROPRIATED +APPROPRIATELY +APPROPRIATENESS +APPROPRIATES +APPROPRIATING +APPROPRIATION +APPROPRIATIONS +APPROPRIATIVE +APPROPRIATOR +APPROPRIATORS +APPROVABLE +APPROVABLY +APPROVAL +APPROVALS +APPROVE +APPROVED +APPROVER +APPROVERS +APPROVES +APPROVING +APPROVINGLY +APPROXIMATE +APPROXIMATED +APPROXIMATELY +APPROXIMATES +APPROXIMATING +APPROXIMATION +APPROXIMATIONS +APPROXIMATIVE +APPS +APPULSE +APPULSES +APPURTENANCE +APPURTENANCES +APPURTENANT +APPURTENANTS +APRACTIC +APRAXIA +APRAXIAS +APRAXIC +APRES +APRICOT +APRICOTS +APRIORITIES +APRIORITY +APRON +APRONED +APRONING +APRONLIKE +APRONS +APROPOS +APROTIC +APSE +APSES +APSIDAL +APSIDES +APSIS +APT +APTER +APTERAL +APTERIA +APTERIUM +APTEROUS +APTERYX +APTERYXES +APTEST +APTITUDE +APTITUDES +APTITUDINAL +APTITUDINALLY +APTLY +APTNESS +APTNESSES +APYRASE +APYRASES +APYRETIC +AQUA +AQUACADE +AQUACADES +AQUACULTURAL +AQUACULTURE +AQUACULTURES +AQUACULTURIST +AQUACULTURISTS +AQUAE +AQUAFARM +AQUAFARMED +AQUAFARMING +AQUAFARMS +AQUALUNG +AQUALUNGS +AQUAMARINE +AQUAMARINES +AQUANAUT +AQUANAUTS +AQUAPLANE +AQUAPLANED +AQUAPLANER +AQUAPLANERS +AQUAPLANES +AQUAPLANING +AQUARELLE +AQUARELLES +AQUARELLIST +AQUARELLISTS +AQUARIA +AQUARIAL +AQUARIAN +AQUARIANS +AQUARIST +AQUARISTS +AQUARIUM +AQUARIUMS +AQUAS +AQUATIC +AQUATICALLY +AQUATICS +AQUATINT +AQUATINTED +AQUATINTER +AQUATINTERS +AQUATINTING +AQUATINTIST +AQUATINTISTS +AQUATINTS +AQUATONE +AQUATONES +AQUAVIT +AQUAVITS +AQUEDUCT +AQUEDUCTS +AQUEOUS +AQUEOUSLY +AQUICULTURE +AQUICULTURES +AQUIFER +AQUIFEROUS +AQUIFERS +AQUILEGIA +AQUILEGIAS +AQUILINE +AQUILINITIES +AQUILINITY +AQUIVER +AR +ARABESK +ARABESKS +ARABESQUE +ARABESQUES +ARABIC +ARABICA +ARABICAS +ARABICIZATION +ARABICIZATIONS +ARABICIZE +ARABICIZED +ARABICIZES +ARABICIZING +ARABILITIES +ARABILITY +ARABINOSE +ARABINOSES +ARABINOSIDE +ARABINOSIDES +ARABIZE +ARABIZED +ARABIZES +ARABIZING +ARABLE +ARABLES +ARACEOUS +ARACHNID +ARACHNIDS +ARACHNOID +ARACHNOIDS +ARAGONITE +ARAGONITES +ARAGONITIC +ARAK +ARAKS +ARAME +ARAMES +ARAMID +ARAMIDS +ARANEID +ARANEIDAN +ARANEIDS +ARAPAIMA +ARAPAIMAS +ARAROBA +ARAROBAS +ARAUCARIA +ARAUCARIAN +ARAUCARIAS +ARB +ARBALEST +ARBALESTS +ARBALIST +ARBALISTS +ARBELEST +ARBELESTS +ARBITER +ARBITERS +ARBITRABLE +ARBITRAGE +ARBITRAGED +ARBITRAGER +ARBITRAGERS +ARBITRAGES +ARBITRAGEUR +ARBITRAGEURS +ARBITRAGING +ARBITRAL +ARBITRAMENT +ARBITRAMENTS +ARBITRARILY +ARBITRARINESS +ARBITRARINESSES +ARBITRARY +ARBITRATE +ARBITRATED +ARBITRATES +ARBITRATING +ARBITRATION +ARBITRATIONAL +ARBITRATIONS +ARBITRATIVE +ARBITRATOR +ARBITRATORS +ARBITRESS +ARBITRESSES +ARBOR +ARBOREAL +ARBOREALLY +ARBORED +ARBOREOUS +ARBORES +ARBORESCENCE +ARBORESCENCES +ARBORESCENT +ARBORETA +ARBORETUM +ARBORETUMS +ARBORICULTURAL +ARBORICULTURE +ARBORICULTURES +ARBORIST +ARBORISTS +ARBORIZATION +ARBORIZATIONS +ARBORIZE +ARBORIZED +ARBORIZES +ARBORIZING +ARBOROUS +ARBORS +ARBORVITAE +ARBORVITAES +ARBOUR +ARBOURED +ARBOURS +ARBOVIRAL +ARBOVIRUS +ARBOVIRUSES +ARBS +ARBUSCLE +ARBUSCLES +ARBUTE +ARBUTEAN +ARBUTES +ARBUTUS +ARBUTUSES +ARC +ARCADE +ARCADED +ARCADES +ARCADIA +ARCADIAN +ARCADIANS +ARCADIAS +ARCADING +ARCADINGS +ARCANA +ARCANE +ARCANUM +ARCANUMS +ARCATURE +ARCATURES +ARCCOSINE +ARCCOSINES +ARCED +ARCH +ARCHAEA +ARCHAEAL +ARCHAEAN +ARCHAEANS +ARCHAEBACTERIA +ARCHAEBACTERIUM +ARCHAEOLOGICAL +ARCHAEOLOGIES +ARCHAEOLOGIST +ARCHAEOLOGISTS +ARCHAEOLOGY +ARCHAEON +ARCHAEOPTERYX +ARCHAEOPTERYXES +ARCHAIC +ARCHAICAL +ARCHAICALLY +ARCHAISE +ARCHAISED +ARCHAISES +ARCHAISING +ARCHAISM +ARCHAISMS +ARCHAIST +ARCHAISTIC +ARCHAISTS +ARCHAIZE +ARCHAIZED +ARCHAIZER +ARCHAIZERS +ARCHAIZES +ARCHAIZING +ARCHANGEL +ARCHANGELIC +ARCHANGELS +ARCHBISHOP +ARCHBISHOPRIC +ARCHBISHOPRICS +ARCHBISHOPS +ARCHDEACON +ARCHDEACONRIES +ARCHDEACONRY +ARCHDEACONS +ARCHDIOCESAN +ARCHDIOCESE +ARCHDIOCESES +ARCHDUCAL +ARCHDUCHESS +ARCHDUCHESSES +ARCHDUCHIES +ARCHDUCHY +ARCHDUKE +ARCHDUKEDOM +ARCHDUKEDOMS +ARCHDUKES +ARCHEAN +ARCHED +ARCHEGONIA +ARCHEGONIAL +ARCHEGONIATE +ARCHEGONIATES +ARCHEGONIUM +ARCHENEMIES +ARCHENEMY +ARCHENTERON +ARCHENTERONS +ARCHEOLOGIES +ARCHEOLOGY +ARCHER +ARCHERFISH +ARCHERFISHES +ARCHERIES +ARCHERS +ARCHERY +ARCHES +ARCHESPORIA +ARCHESPORIAL +ARCHESPORIUM +ARCHETYPAL +ARCHETYPALLY +ARCHETYPE +ARCHETYPES +ARCHETYPICAL +ARCHFIEND +ARCHFIENDS +ARCHFOE +ARCHFOES +ARCHICARP +ARCHICARPS +ARCHIDIACONAL +ARCHIEPISCOPAL +ARCHIEPISCOPATE +ARCHIL +ARCHILS +ARCHIMANDRITE +ARCHIMANDRITES +ARCHINE +ARCHINES +ARCHING +ARCHINGS +ARCHIPELAGIC +ARCHIPELAGO +ARCHIPELAGOES +ARCHIPELAGOS +ARCHITECT +ARCHITECTONIC +ARCHITECTONICS +ARCHITECTS +ARCHITECTURAL +ARCHITECTURALLY +ARCHITECTURE +ARCHITECTURES +ARCHITRAVE +ARCHITRAVES +ARCHIVAL +ARCHIVE +ARCHIVED +ARCHIVES +ARCHIVING +ARCHIVIST +ARCHIVISTS +ARCHIVOLT +ARCHIVOLTS +ARCHLY +ARCHNESS +ARCHNESSES +ARCHON +ARCHONS +ARCHOSAUR +ARCHOSAURIAN +ARCHOSAURS +ARCHPRIEST +ARCHPRIESTS +ARCHRIVAL +ARCHRIVALS +ARCHWAY +ARCHWAYS +ARCIFORM +ARCING +ARCKED +ARCKING +ARCO +ARCS +ARCSINE +ARCSINES +ARCTANGENT +ARCTANGENTS +ARCTIC +ARCTICALLY +ARCTICS +ARCUATE +ARCUATED +ARCUATELY +ARCUATION +ARCUATIONS +ARCUS +ARCUSES +ARDEB +ARDEBS +ARDENCIES +ARDENCY +ARDENT +ARDENTLY +ARDOR +ARDORS +ARDOUR +ARDOURS +ARDUOUS +ARDUOUSLY +ARDUOUSNESS +ARDUOUSNESSES +ARE +AREA +AREAE +AREAL +AREALLY +AREAS +AREAWAY +AREAWAYS +ARECA +ARECAS +ARECOLINE +ARECOLINES +AREIC +ARENA +ARENACEOUS +ARENAS +ARENE +ARENES +ARENICOLOUS +ARENITE +ARENITES +ARENOSE +ARENOUS +AREOCENTRIC +AREOLA +AREOLAE +AREOLAR +AREOLAS +AREOLATE +AREOLATED +AREOLE +AREOLES +AREOLOGIES +AREOLOGY +AREPA +AREPAS +ARES +ARETE +ARETES +ARETHUSA +ARETHUSAS +ARF +ARFS +ARGAL +ARGALA +ARGALAS +ARGALI +ARGALIS +ARGALS +ARGENT +ARGENTAL +ARGENTIC +ARGENTIFEROUS +ARGENTINE +ARGENTINES +ARGENTITE +ARGENTITES +ARGENTOUS +ARGENTS +ARGENTUM +ARGENTUMS +ARGIL +ARGILLACEOUS +ARGILLITE +ARGILLITES +ARGILS +ARGINASE +ARGINASES +ARGININE +ARGININES +ARGLE +ARGLED +ARGLES +ARGLING +ARGOL +ARGOLS +ARGON +ARGONAUT +ARGONAUTS +ARGONS +ARGOSIES +ARGOSY +ARGOT +ARGOTIC +ARGOTS +ARGUABLE +ARGUABLY +ARGUE +ARGUED +ARGUER +ARGUERS +ARGUES +ARGUFIED +ARGUFIER +ARGUFIERS +ARGUFIES +ARGUFY +ARGUFYING +ARGUING +ARGUMENT +ARGUMENTA +ARGUMENTATION +ARGUMENTATIONS +ARGUMENTATIVE +ARGUMENTATIVELY +ARGUMENTIVE +ARGUMENTS +ARGUMENTUM +ARGUS +ARGUSES +ARGYLE +ARGYLES +ARGYLL +ARGYLLS +ARHAT +ARHATS +ARHATSHIP +ARHATSHIPS +ARIA +ARIARY +ARIAS +ARIBOFLAVINOSES +ARIBOFLAVINOSIS +ARID +ARIDER +ARIDEST +ARIDITIES +ARIDITY +ARIDLY +ARIDNESS +ARIDNESSES +ARIEL +ARIELS +ARIETTA +ARIETTAS +ARIETTE +ARIETTES +ARIGHT +ARIL +ARILED +ARILLATE +ARILLODE +ARILLODES +ARILLOID +ARILS +ARIOSE +ARIOSI +ARIOSO +ARIOSOS +ARISE +ARISEN +ARISES +ARISING +ARISTA +ARISTAE +ARISTAS +ARISTATE +ARISTO +ARISTOCRACIES +ARISTOCRACY +ARISTOCRAT +ARISTOCRATIC +ARISTOCRATS +ARISTOS +ARITHMETIC +ARITHMETICAL +ARITHMETICALLY +ARITHMETICIAN +ARITHMETICIANS +ARITHMETICS +ARK +ARKOSE +ARKOSES +ARKOSIC +ARKS +ARLES +ARM +ARMADA +ARMADAS +ARMADILLO +ARMADILLOS +ARMAGNAC +ARMAGNACS +ARMAMENT +ARMAMENTARIA +ARMAMENTARIUM +ARMAMENTS +ARMATURE +ARMATURED +ARMATURES +ARMATURING +ARMBAND +ARMBANDS +ARMCHAIR +ARMCHAIRS +ARMED +ARMER +ARMERS +ARMET +ARMETS +ARMFUL +ARMFULS +ARMHOLE +ARMHOLES +ARMIES +ARMIGER +ARMIGERAL +ARMIGERO +ARMIGEROS +ARMIGEROUS +ARMIGERS +ARMILLA +ARMILLAE +ARMILLARY +ARMILLAS +ARMING +ARMINGS +ARMISTICE +ARMISTICES +ARMLESS +ARMLET +ARMLETS +ARMLIKE +ARMLOAD +ARMLOADS +ARMLOCK +ARMLOCKS +ARMOIRE +ARMOIRES +ARMONICA +ARMONICAS +ARMOR +ARMORED +ARMORER +ARMORERS +ARMORIAL +ARMORIALLY +ARMORIALS +ARMORIES +ARMORING +ARMORLESS +ARMORS +ARMORY +ARMOUR +ARMOURED +ARMOURER +ARMOURERS +ARMOURIES +ARMOURING +ARMOURS +ARMOURY +ARMPIT +ARMPITS +ARMREST +ARMRESTS +ARMS +ARMSFUL +ARMURE +ARMURES +ARMY +ARMYWORM +ARMYWORMS +ARNATTO +ARNATTOS +ARNICA +ARNICAS +ARNOTTO +ARNOTTOS +AROID +AROIDS +AROINT +AROINTED +AROINTING +AROINTS +AROMA +AROMAS +AROMATASE +AROMATASES +AROMATHERAPIES +AROMATHERAPIST +AROMATHERAPISTS +AROMATHERAPY +AROMATIC +AROMATICALLY +AROMATICITIES +AROMATICITY +AROMATICS +AROMATIZATION +AROMATIZATIONS +AROMATIZE +AROMATIZED +AROMATIZES +AROMATIZING +AROSE +AROUND +AROUSABLE +AROUSAL +AROUSALS +AROUSE +AROUSED +AROUSER +AROUSERS +AROUSES +AROUSING +AROYNT +AROYNTED +AROYNTING +AROYNTS +ARPEGGIATE +ARPEGGIATED +ARPEGGIATES +ARPEGGIATING +ARPEGGIO +ARPEGGIOS +ARPEN +ARPENS +ARPENT +ARPENTS +ARQUEBUS +ARQUEBUSES +ARRACK +ARRACKS +ARRAIGN +ARRAIGNED +ARRAIGNER +ARRAIGNERS +ARRAIGNING +ARRAIGNMENT +ARRAIGNMENTS +ARRAIGNS +ARRANGE +ARRANGED +ARRANGEMENT +ARRANGEMENTS +ARRANGER +ARRANGERS +ARRANGES +ARRANGING +ARRANT +ARRANTLY +ARRAS +ARRASED +ARRASES +ARRAY +ARRAYAL +ARRAYALS +ARRAYED +ARRAYER +ARRAYERS +ARRAYING +ARRAYS +ARREAR +ARREARAGE +ARREARAGES +ARREARS +ARREST +ARRESTANT +ARRESTANTS +ARRESTED +ARRESTEE +ARRESTEES +ARRESTER +ARRESTERS +ARRESTING +ARRESTINGLY +ARRESTIVE +ARRESTMENT +ARRESTMENTS +ARRESTOR +ARRESTORS +ARRESTS +ARRHIZAL +ARRHYTHMIA +ARRHYTHMIAS +ARRHYTHMIC +ARRIBA +ARRIS +ARRISES +ARRIVAL +ARRIVALS +ARRIVE +ARRIVED +ARRIVER +ARRIVERS +ARRIVES +ARRIVING +ARRIVISTE +ARRIVISTES +ARROBA +ARROBAS +ARROGANCE +ARROGANCES +ARROGANCIES +ARROGANCY +ARROGANT +ARROGANTLY +ARROGATE +ARROGATED +ARROGATES +ARROGATING +ARROGATION +ARROGATIONS +ARROGATOR +ARROGATORS +ARRONDISSEMENT +ARRONDISSEMENTS +ARROW +ARROWED +ARROWHEAD +ARROWHEADS +ARROWING +ARROWLESS +ARROWLIKE +ARROWROOT +ARROWROOTS +ARROWS +ARROWWOOD +ARROWWOODS +ARROWWORM +ARROWWORMS +ARROWY +ARROYO +ARROYOS +ARS +ARSE +ARSENAL +ARSENALS +ARSENATE +ARSENATES +ARSENIC +ARSENICAL +ARSENICALS +ARSENICS +ARSENIDE +ARSENIDES +ARSENIOUS +ARSENITE +ARSENITES +ARSENO +ARSENOPYRITE +ARSENOPYRITES +ARSENOUS +ARSES +ARSHIN +ARSHINS +ARSINE +ARSINES +ARSINO +ARSIS +ARSON +ARSONIST +ARSONISTS +ARSONOUS +ARSONS +ARSPHENAMINE +ARSPHENAMINES +ART +ARTAL +ARTEFACT +ARTEFACTS +ARTEL +ARTELS +ARTEMISIA +ARTEMISIAS +ARTERIAL +ARTERIALLY +ARTERIALS +ARTERIES +ARTERIOGRAM +ARTERIOGRAMS +ARTERIOGRAPHIC +ARTERIOGRAPHIES +ARTERIOGRAPHY +ARTERIOLAR +ARTERIOLE +ARTERIOLES +ARTERIOVENOUS +ARTERITIDES +ARTERITIS +ARTERY +ARTFUL +ARTFULLY +ARTFULNESS +ARTFULNESSES +ARTHRALGIA +ARTHRALGIAS +ARTHRALGIC +ARTHRITIC +ARTHRITICALLY +ARTHRITICS +ARTHRITIDES +ARTHRITIS +ARTHRODESES +ARTHRODESIS +ARTHROPATHIES +ARTHROPATHY +ARTHROPOD +ARTHROPODAN +ARTHROPODS +ARTHROSCOPE +ARTHROSCOPES +ARTHROSCOPIC +ARTHROSCOPIES +ARTHROSCOPY +ARTHROSES +ARTHROSIS +ARTHROSPORE +ARTHROSPORES +ARTICHOKE +ARTICHOKES +ARTICLE +ARTICLED +ARTICLES +ARTICLING +ARTICULABLE +ARTICULACIES +ARTICULACY +ARTICULAR +ARTICULATE +ARTICULATED +ARTICULATELY +ARTICULATENESS +ARTICULATES +ARTICULATING +ARTICULATION +ARTICULATIONS +ARTICULATIVE +ARTICULATOR +ARTICULATORS +ARTICULATORY +ARTIER +ARTIEST +ARTIFACT +ARTIFACTS +ARTIFACTUAL +ARTIFICE +ARTIFICER +ARTIFICERS +ARTIFICES +ARTIFICIAL +ARTIFICIALITIES +ARTIFICIALITY +ARTIFICIALLY +ARTIFICIALNESS +ARTILLERIES +ARTILLERIST +ARTILLERISTS +ARTILLERY +ARTILLERYMAN +ARTILLERYMEN +ARTILY +ARTINESS +ARTINESSES +ARTIODACTYL +ARTIODACTYLS +ARTISAN +ARTISANAL +ARTISANS +ARTISANSHIP +ARTISANSHIPS +ARTIST +ARTISTE +ARTISTES +ARTISTIC +ARTISTICALLY +ARTISTRIES +ARTISTRY +ARTISTS +ARTLESS +ARTLESSLY +ARTLESSNESS +ARTLESSNESSES +ARTS +ARTSIER +ARTSIEST +ARTSINESS +ARTSINESSES +ARTSY +ARTWORK +ARTWORKS +ARTY +ARUGOLA +ARUGOLAS +ARUGULA +ARUGULAS +ARUM +ARUMS +ARUSPEX +ARUSPICES +ARVAL +ARVO +ARVOS +ARYL +ARYLS +ARYTENOID +ARYTENOIDS +ARYTHMIA +ARYTHMIAS +ARYTHMIC +AS +ASAFETIDA +ASAFETIDAS +ASAFOETIDA +ASAFOETIDAS +ASANA +ASANAS +ASARUM +ASARUMS +ASBESTIC +ASBESTINE +ASBESTOS +ASBESTOSES +ASBESTOSIS +ASBESTOUS +ASBESTUS +ASBESTUSES +ASCARED +ASCARIASES +ASCARIASIS +ASCARID +ASCARIDES +ASCARIDS +ASCARIS +ASCEND +ASCENDABLE +ASCENDANCE +ASCENDANCES +ASCENDANCIES +ASCENDANCY +ASCENDANT +ASCENDANTLY +ASCENDANTS +ASCENDED +ASCENDENCE +ASCENDENCES +ASCENDENCIES +ASCENDENCY +ASCENDENT +ASCENDENTS +ASCENDER +ASCENDERS +ASCENDIBLE +ASCENDING +ASCENDS +ASCENSION +ASCENSIONAL +ASCENSIONS +ASCENSIVE +ASCENT +ASCENTS +ASCERTAIN +ASCERTAINABLE +ASCERTAINED +ASCERTAINING +ASCERTAINMENT +ASCERTAINMENTS +ASCERTAINS +ASCESES +ASCESIS +ASCETIC +ASCETICAL +ASCETICALLY +ASCETICISM +ASCETICISMS +ASCETICS +ASCI +ASCIDIA +ASCIDIAN +ASCIDIANS +ASCIDIATE +ASCIDIUM +ASCITES +ASCITIC +ASCLEPIAD +ASCLEPIADS +ASCOCARP +ASCOCARPIC +ASCOCARPS +ASCOGONIA +ASCOGONIUM +ASCOMYCETE +ASCOMYCETES +ASCOMYCETOUS +ASCORBATE +ASCORBATES +ASCORBIC +ASCOSPORE +ASCOSPORES +ASCOSPORIC +ASCOT +ASCOTS +ASCRIBABLE +ASCRIBE +ASCRIBED +ASCRIBES +ASCRIBING +ASCRIPTION +ASCRIPTIONS +ASCRIPTIVE +ASCUS +ASDIC +ASDICS +ASEA +ASEPSES +ASEPSIS +ASEPTIC +ASEPTICALLY +ASEXUAL +ASEXUALITIES +ASEXUALITY +ASEXUALLY +ASH +ASHAMED +ASHAMEDLY +ASHCAKE +ASHCAKES +ASHCAN +ASHCANS +ASHED +ASHEN +ASHES +ASHFALL +ASHFALLS +ASHIER +ASHIEST +ASHINESS +ASHINESSES +ASHING +ASHLAR +ASHLARED +ASHLARING +ASHLARS +ASHLER +ASHLERED +ASHLERING +ASHLERS +ASHLESS +ASHMAN +ASHMEN +ASHORE +ASHPLANT +ASHPLANTS +ASHRAM +ASHRAMS +ASHTRAY +ASHTRAYS +ASHY +ASIDE +ASIDES +ASININE +ASININELY +ASININITIES +ASININITY +ASK +ASKANCE +ASKANT +ASKED +ASKER +ASKERS +ASKESES +ASKESIS +ASKEW +ASKEWNESS +ASKEWNESSES +ASKING +ASKINGS +ASKOI +ASKOS +ASKS +ASLANT +ASLEEP +ASLOPE +ASLOSH +ASOCIAL +ASOCIALS +ASP +ASPARAGINE +ASPARAGINES +ASPARAGUS +ASPARAGUSES +ASPARKLE +ASPARTAME +ASPARTAMES +ASPARTATE +ASPARTATES +ASPECT +ASPECTS +ASPECTUAL +ASPEN +ASPENS +ASPER +ASPERATE +ASPERATED +ASPERATES +ASPERATING +ASPERGES +ASPERGILL +ASPERGILLA +ASPERGILLI +ASPERGILLOSES +ASPERGILLOSIS +ASPERGILLS +ASPERGILLUM +ASPERGILLUMS +ASPERGILLUS +ASPERITIES +ASPERITY +ASPERS +ASPERSE +ASPERSED +ASPERSER +ASPERSERS +ASPERSES +ASPERSING +ASPERSION +ASPERSIONS +ASPERSIVE +ASPERSOR +ASPERSORS +ASPHALT +ASPHALTED +ASPHALTIC +ASPHALTING +ASPHALTITE +ASPHALTITES +ASPHALTS +ASPHALTUM +ASPHALTUMS +ASPHERIC +ASPHERICAL +ASPHODEL +ASPHODELS +ASPHYXIA +ASPHYXIAL +ASPHYXIAS +ASPHYXIATE +ASPHYXIATED +ASPHYXIATES +ASPHYXIATING +ASPHYXIATION +ASPHYXIATIONS +ASPHYXIES +ASPHYXY +ASPIC +ASPICS +ASPIDISTRA +ASPIDISTRAS +ASPIRANT +ASPIRANTS +ASPIRATA +ASPIRATAE +ASPIRATE +ASPIRATED +ASPIRATES +ASPIRATING +ASPIRATION +ASPIRATIONAL +ASPIRATIONS +ASPIRATOR +ASPIRATORS +ASPIRE +ASPIRED +ASPIRER +ASPIRERS +ASPIRES +ASPIRIN +ASPIRING +ASPIRINS +ASPIS +ASPISES +ASPISH +ASPS +ASQUINT +ASRAMA +ASRAMAS +ASS +ASSAGAI +ASSAGAIED +ASSAGAIING +ASSAGAIS +ASSAI +ASSAIL +ASSAILABLE +ASSAILANT +ASSAILANTS +ASSAILED +ASSAILER +ASSAILERS +ASSAILING +ASSAILS +ASSAIS +ASSASSIN +ASSASSINATE +ASSASSINATED +ASSASSINATES +ASSASSINATING +ASSASSINATION +ASSASSINATIONS +ASSASSINATOR +ASSASSINATORS +ASSASSINS +ASSAULT +ASSAULTED +ASSAULTER +ASSAULTERS +ASSAULTING +ASSAULTIVE +ASSAULTIVELY +ASSAULTIVENESS +ASSAULTS +ASSAY +ASSAYABLE +ASSAYED +ASSAYER +ASSAYERS +ASSAYING +ASSAYS +ASSEGAI +ASSEGAIED +ASSEGAIING +ASSEGAIS +ASSEMBLAGE +ASSEMBLAGES +ASSEMBLAGIST +ASSEMBLAGISTS +ASSEMBLE +ASSEMBLED +ASSEMBLER +ASSEMBLERS +ASSEMBLES +ASSEMBLIES +ASSEMBLING +ASSEMBLY +ASSEMBLYMAN +ASSEMBLYMEN +ASSEMBLYWOMAN +ASSEMBLYWOMEN +ASSENT +ASSENTATION +ASSENTATIONS +ASSENTED +ASSENTER +ASSENTERS +ASSENTING +ASSENTIVE +ASSENTOR +ASSENTORS +ASSENTS +ASSERT +ASSERTED +ASSERTEDLY +ASSERTER +ASSERTERS +ASSERTING +ASSERTION +ASSERTIONS +ASSERTIVE +ASSERTIVELY +ASSERTIVENESS +ASSERTIVENESSES +ASSERTOR +ASSERTORS +ASSERTS +ASSES +ASSESS +ASSESSABLE +ASSESSED +ASSESSES +ASSESSING +ASSESSMENT +ASSESSMENTS +ASSESSOR +ASSESSORS +ASSET +ASSETLESS +ASSETS +ASSEVERATE +ASSEVERATED +ASSEVERATES +ASSEVERATING +ASSEVERATION +ASSEVERATIONS +ASSEVERATIVE +ASSHOLE +ASSHOLES +ASSIDUITIES +ASSIDUITY +ASSIDUOUS +ASSIDUOUSLY +ASSIDUOUSNESS +ASSIDUOUSNESSES +ASSIGN +ASSIGNABILITIES +ASSIGNABILITY +ASSIGNABLE +ASSIGNAT +ASSIGNATION +ASSIGNATIONS +ASSIGNATS +ASSIGNED +ASSIGNEE +ASSIGNEES +ASSIGNER +ASSIGNERS +ASSIGNING +ASSIGNMENT +ASSIGNMENTS +ASSIGNOR +ASSIGNORS +ASSIGNS +ASSIMILABILITY +ASSIMILABLE +ASSIMILATE +ASSIMILATED +ASSIMILATES +ASSIMILATING +ASSIMILATION +ASSIMILATIONISM +ASSIMILATIONIST +ASSIMILATIONS +ASSIMILATIVE +ASSIMILATOR +ASSIMILATORS +ASSIMILATORY +ASSIST +ASSISTANCE +ASSISTANCES +ASSISTANT +ASSISTANTS +ASSISTANTSHIP +ASSISTANTSHIPS +ASSISTED +ASSISTER +ASSISTERS +ASSISTING +ASSISTIVE +ASSISTOR +ASSISTORS +ASSISTS +ASSIZE +ASSIZES +ASSLIKE +ASSOCIATE +ASSOCIATED +ASSOCIATES +ASSOCIATESHIP +ASSOCIATESHIPS +ASSOCIATING +ASSOCIATION +ASSOCIATIONAL +ASSOCIATIONISM +ASSOCIATIONISMS +ASSOCIATIONIST +ASSOCIATIONISTS +ASSOCIATIONS +ASSOCIATIVE +ASSOCIATIVELY +ASSOCIATIVITIES +ASSOCIATIVITY +ASSOIL +ASSOILED +ASSOILING +ASSOILMENT +ASSOILMENTS +ASSOILS +ASSONANCE +ASSONANCES +ASSONANT +ASSONANTAL +ASSONANTS +ASSORT +ASSORTATIVE +ASSORTATIVELY +ASSORTED +ASSORTER +ASSORTERS +ASSORTING +ASSORTMENT +ASSORTMENTS +ASSORTS +ASSUAGE +ASSUAGED +ASSUAGEMENT +ASSUAGEMENTS +ASSUAGER +ASSUAGERS +ASSUAGES +ASSUAGING +ASSUASIVE +ASSUMABILITIES +ASSUMABILITY +ASSUMABLE +ASSUMABLY +ASSUME +ASSUMED +ASSUMEDLY +ASSUMER +ASSUMERS +ASSUMES +ASSUMING +ASSUMPSIT +ASSUMPSITS +ASSUMPTION +ASSUMPTIONS +ASSUMPTIVE +ASSURABLE +ASSURANCE +ASSURANCES +ASSURE +ASSURED +ASSUREDLY +ASSUREDNESS +ASSUREDNESSES +ASSUREDS +ASSURER +ASSURERS +ASSURES +ASSURGENT +ASSURING +ASSUROR +ASSURORS +ASSWAGE +ASSWAGED +ASSWAGES +ASSWAGING +ASTARBOARD +ASTASIA +ASTASIAS +ASTATIC +ASTATINE +ASTATINES +ASTER +ASTERIA +ASTERIAS +ASTERIATED +ASTERISK +ASTERISKED +ASTERISKING +ASTERISKLESS +ASTERISKS +ASTERISM +ASTERISMS +ASTERN +ASTERNAL +ASTEROID +ASTEROIDAL +ASTEROIDS +ASTERS +ASTHENIA +ASTHENIAS +ASTHENIC +ASTHENICS +ASTHENIES +ASTHENOSPHERE +ASTHENOSPHERES +ASTHENOSPHERIC +ASTHENY +ASTHMA +ASTHMAS +ASTHMATIC +ASTHMATICALLY +ASTHMATICS +ASTIGMATIC +ASTIGMATICS +ASTIGMATISM +ASTIGMATISMS +ASTIGMIA +ASTIGMIAS +ASTILBE +ASTILBES +ASTIR +ASTOMATAL +ASTOMOUS +ASTONIED +ASTONIES +ASTONISH +ASTONISHED +ASTONISHES +ASTONISHING +ASTONISHINGLY +ASTONISHMENT +ASTONISHMENTS +ASTONY +ASTONYING +ASTOUND +ASTOUNDED +ASTOUNDING +ASTOUNDINGLY +ASTOUNDS +ASTRACHAN +ASTRACHANS +ASTRADDLE +ASTRAGAL +ASTRAGALI +ASTRAGALS +ASTRAGALUS +ASTRAKHAN +ASTRAKHANS +ASTRAL +ASTRALLY +ASTRALS +ASTRAY +ASTRICT +ASTRICTED +ASTRICTING +ASTRICTS +ASTRIDE +ASTRINGE +ASTRINGED +ASTRINGENCIES +ASTRINGENCY +ASTRINGENT +ASTRINGENTLY +ASTRINGENTS +ASTRINGES +ASTRINGING +ASTROBIOLOGIES +ASTROBIOLOGIST +ASTROBIOLOGISTS +ASTROBIOLOGY +ASTROCYTE +ASTROCYTES +ASTROCYTIC +ASTROCYTOMA +ASTROCYTOMAS +ASTROCYTOMATA +ASTRODOME +ASTRODOMES +ASTROLABE +ASTROLABES +ASTROLOGER +ASTROLOGERS +ASTROLOGICAL +ASTROLOGICALLY +ASTROLOGIES +ASTROLOGY +ASTROMETRIC +ASTROMETRIES +ASTROMETRY +ASTRONAUT +ASTRONAUTIC +ASTRONAUTICAL +ASTRONAUTICALLY +ASTRONAUTICS +ASTRONAUTS +ASTRONOMER +ASTRONOMERS +ASTRONOMIC +ASTRONOMICAL +ASTRONOMICALLY +ASTRONOMIES +ASTRONOMY +ASTROPHOTOGRAPH +ASTROPHYSICAL +ASTROPHYSICALLY +ASTROPHYSICIST +ASTROPHYSICISTS +ASTROPHYSICS +ASTUTE +ASTUTELY +ASTUTENESS +ASTUTENESSES +ASTYLAR +ASUNDER +ASWARM +ASWIRL +ASWOON +ASYLA +ASYLLABIC +ASYLUM +ASYLUMS +ASYMMETRIC +ASYMMETRICAL +ASYMMETRICALLY +ASYMMETRIES +ASYMMETRY +ASYMPTOMATIC +ASYMPTOTE +ASYMPTOTES +ASYMPTOTIC +ASYMPTOTICALLY +ASYNAPSES +ASYNAPSIS +ASYNCHRONIES +ASYNCHRONISM +ASYNCHRONISMS +ASYNCHRONOUS +ASYNCHRONOUSLY +ASYNCHRONY +ASYNDETA +ASYNDETIC +ASYNDETICALLY +ASYNDETON +ASYNDETONS +AT +ATABAL +ATABALS +ATABRINE +ATABRINES +ATACTIC +ATAGHAN +ATAGHANS +ATALAYA +ATALAYAS +ATAMAN +ATAMANS +ATAMASCO +ATAMASCOS +ATAP +ATAPS +ATARACTIC +ATARACTICS +ATARAXIA +ATARAXIAS +ATARAXIC +ATARAXICS +ATARAXIES +ATARAXY +ATAVIC +ATAVISM +ATAVISMS +ATAVIST +ATAVISTIC +ATAVISTICALLY +ATAVISTS +ATAXIA +ATAXIAS +ATAXIC +ATAXICS +ATAXIES +ATAXY +ATE +ATECHNIC +ATELECTASES +ATELECTASIS +ATELIC +ATELIER +ATELIERS +ATEMOYA +ATEMOYAS +ATEMPORAL +ATENOLOL +ATENOLOLS +ATES +ATHANASIES +ATHANASY +ATHEISM +ATHEISMS +ATHEIST +ATHEISTIC +ATHEISTICAL +ATHEISTICALLY +ATHEISTS +ATHELING +ATHELINGS +ATHENAEUM +ATHENAEUMS +ATHENEUM +ATHENEUMS +ATHEORETICAL +ATHEROGENESES +ATHEROGENESIS +ATHEROGENIC +ATHEROMA +ATHEROMAS +ATHEROMATA +ATHEROMATOUS +ATHEROSCLEROSES +ATHEROSCLEROSIS +ATHEROSCLEROTIC +ATHETOID +ATHETOSES +ATHETOSIS +ATHETOTIC +ATHIRST +ATHLETE +ATHLETES +ATHLETIC +ATHLETICALLY +ATHLETICISM +ATHLETICISMS +ATHLETICS +ATHODYD +ATHODYDS +ATHROCYTE +ATHROCYTES +ATHWART +ATHWARTSHIP +ATHWARTSHIPS +ATILT +ATINGLE +ATLANTES +ATLAS +ATLASES +ATLATL +ATLATLS +ATMA +ATMAN +ATMANS +ATMAS +ATMOMETER +ATMOMETERS +ATMOSPHERE +ATMOSPHERED +ATMOSPHERES +ATMOSPHERIC +ATMOSPHERICALLY +ATMOSPHERICS +ATOLL +ATOLLS +ATOM +ATOMIC +ATOMICAL +ATOMICALLY +ATOMICITIES +ATOMICITY +ATOMICS +ATOMIES +ATOMISE +ATOMISED +ATOMISER +ATOMISERS +ATOMISES +ATOMISING +ATOMISM +ATOMISMS +ATOMIST +ATOMISTIC +ATOMISTICALLY +ATOMISTS +ATOMIZATION +ATOMIZATIONS +ATOMIZE +ATOMIZED +ATOMIZER +ATOMIZERS +ATOMIZES +ATOMIZING +ATOMS +ATOMY +ATONABLE +ATONAL +ATONALISM +ATONALISMS +ATONALIST +ATONALISTS +ATONALITIES +ATONALITY +ATONALLY +ATONE +ATONEABLE +ATONED +ATONEMENT +ATONEMENTS +ATONER +ATONERS +ATONES +ATONIA +ATONIAS +ATONIC +ATONICITIES +ATONICITY +ATONICS +ATONIES +ATONING +ATONINGLY +ATONY +ATOP +ATOPIC +ATOPIES +ATOPY +ATRABILIOUS +ATRABILIOUSNESS +ATRAZINE +ATRAZINES +ATREMBLE +ATRESIA +ATRESIAS +ATRESIC +ATRETIC +ATRIA +ATRIAL +ATRIP +ATRIUM +ATRIUMS +ATROCIOUS +ATROCIOUSLY +ATROCIOUSNESS +ATROCIOUSNESSES +ATROCITIES +ATROCITY +ATROPHIA +ATROPHIAS +ATROPHIC +ATROPHIED +ATROPHIES +ATROPHY +ATROPHYING +ATROPIN +ATROPINE +ATROPINES +ATROPINS +ATROPISM +ATROPISMS +ATT +ATTABOY +ATTACH +ATTACHABLE +ATTACHE +ATTACHED +ATTACHER +ATTACHERS +ATTACHES +ATTACHING +ATTACHMENT +ATTACHMENTS +ATTACK +ATTACKED +ATTACKER +ATTACKERS +ATTACKING +ATTACKMAN +ATTACKMEN +ATTACKS +ATTAGIRL +ATTAIN +ATTAINABILITIES +ATTAINABILITY +ATTAINABLE +ATTAINDER +ATTAINDERS +ATTAINED +ATTAINER +ATTAINERS +ATTAINING +ATTAINMENT +ATTAINMENTS +ATTAINS +ATTAINT +ATTAINTED +ATTAINTING +ATTAINTS +ATTAR +ATTARS +ATTEMPER +ATTEMPERED +ATTEMPERING +ATTEMPERS +ATTEMPT +ATTEMPTABLE +ATTEMPTED +ATTEMPTER +ATTEMPTERS +ATTEMPTING +ATTEMPTS +ATTEND +ATTENDANCE +ATTENDANCES +ATTENDANT +ATTENDANTS +ATTENDED +ATTENDEE +ATTENDEES +ATTENDER +ATTENDERS +ATTENDING +ATTENDINGS +ATTENDS +ATTENT +ATTENTION +ATTENTIONAL +ATTENTIONS +ATTENTIVE +ATTENTIVELY +ATTENTIVENESS +ATTENTIVENESSES +ATTENUATE +ATTENUATED +ATTENUATES +ATTENUATING +ATTENUATION +ATTENUATIONS +ATTENUATOR +ATTENUATORS +ATTEST +ATTESTANT +ATTESTANTS +ATTESTATION +ATTESTATIONS +ATTESTED +ATTESTER +ATTESTERS +ATTESTING +ATTESTOR +ATTESTORS +ATTESTS +ATTIC +ATTICISM +ATTICISMS +ATTICIST +ATTICISTS +ATTICIZE +ATTICIZED +ATTICIZES +ATTICIZING +ATTICS +ATTIRE +ATTIRED +ATTIRES +ATTIRING +ATTITUDE +ATTITUDES +ATTITUDINAL +ATTITUDINALLY +ATTITUDINISE +ATTITUDINISED +ATTITUDINISES +ATTITUDINISING +ATTITUDINIZE +ATTITUDINIZED +ATTITUDINIZES +ATTITUDINIZING +ATTORN +ATTORNED +ATTORNEY +ATTORNEYS +ATTORNEYSHIP +ATTORNEYSHIPS +ATTORNING +ATTORNMENT +ATTORNMENTS +ATTORNS +ATTRACT +ATTRACTANCE +ATTRACTANCES +ATTRACTANCIES +ATTRACTANCY +ATTRACTANT +ATTRACTANTS +ATTRACTED +ATTRACTER +ATTRACTERS +ATTRACTING +ATTRACTION +ATTRACTIONS +ATTRACTIVE +ATTRACTIVELY +ATTRACTIVENESS +ATTRACTOR +ATTRACTORS +ATTRACTS +ATTRIBUTABLE +ATTRIBUTE +ATTRIBUTED +ATTRIBUTES +ATTRIBUTING +ATTRIBUTION +ATTRIBUTIONAL +ATTRIBUTIONS +ATTRIBUTIVE +ATTRIBUTIVELY +ATTRIBUTIVES +ATTRIT +ATTRITE +ATTRITED +ATTRITES +ATTRITING +ATTRITION +ATTRITIONAL +ATTRITIONS +ATTRITIVE +ATTRITS +ATTRITTED +ATTRITTING +ATTUNE +ATTUNED +ATTUNEMENT +ATTUNEMENTS +ATTUNES +ATTUNING +ATWAIN +ATWEEN +ATWITTER +ATYPIC +ATYPICAL +ATYPICALITIES +ATYPICALITY +ATYPICALLY +AUBADE +AUBADES +AUBERGE +AUBERGES +AUBERGINE +AUBERGINES +AUBRETIA +AUBRETIAS +AUBRIETA +AUBRIETAS +AUBRIETIA +AUBRIETIAS +AUBURN +AUBURNS +AUCTION +AUCTIONED +AUCTIONEER +AUCTIONEERS +AUCTIONING +AUCTIONS +AUCTORIAL +AUCUBA +AUCUBAS +AUDACIOUS +AUDACIOUSLY +AUDACIOUSNESS +AUDACIOUSNESSES +AUDACITIES +AUDACITY +AUDAD +AUDADS +AUDIAL +AUDIBILITIES +AUDIBILITY +AUDIBLE +AUDIBLED +AUDIBLES +AUDIBLING +AUDIBLY +AUDIENCE +AUDIENCES +AUDIENT +AUDIENTS +AUDILE +AUDILES +AUDING +AUDINGS +AUDIO +AUDIOBOOK +AUDIOBOOKS +AUDIOCASSETTE +AUDIOCASSETTES +AUDIOGENIC +AUDIOGRAM +AUDIOGRAMS +AUDIOLOGIC +AUDIOLOGICAL +AUDIOLOGIES +AUDIOLOGIST +AUDIOLOGISTS +AUDIOLOGY +AUDIOMETER +AUDIOMETERS +AUDIOMETRIC +AUDIOMETRIES +AUDIOMETRY +AUDIOPHILE +AUDIOPHILES +AUDIOS +AUDIOTAPE +AUDIOTAPED +AUDIOTAPES +AUDIOTAPING +AUDIOVISUAL +AUDIOVISUALS +AUDIPHONE +AUDIPHONES +AUDIT +AUDITABLE +AUDITED +AUDITEE +AUDITEES +AUDITING +AUDITION +AUDITIONED +AUDITIONING +AUDITIONS +AUDITIVE +AUDITIVES +AUDITOR +AUDITORIA +AUDITORIES +AUDITORILY +AUDITORIUM +AUDITORIUMS +AUDITORS +AUDITORY +AUDITS +AUGEND +AUGENDS +AUGER +AUGERS +AUGHT +AUGHTS +AUGITE +AUGITES +AUGITIC +AUGMENT +AUGMENTATION +AUGMENTATIONS +AUGMENTATIVE +AUGMENTATIVES +AUGMENTED +AUGMENTER +AUGMENTERS +AUGMENTING +AUGMENTOR +AUGMENTORS +AUGMENTS +AUGUR +AUGURAL +AUGURED +AUGURER +AUGURERS +AUGURIES +AUGURING +AUGURS +AUGURY +AUGUST +AUGUSTER +AUGUSTEST +AUGUSTLY +AUGUSTNESS +AUGUSTNESSES +AUK +AUKLET +AUKLETS +AUKS +AULD +AULDER +AULDEST +AULIC +AUNT +AUNTHOOD +AUNTHOODS +AUNTIE +AUNTIES +AUNTLIER +AUNTLIEST +AUNTLIKE +AUNTLY +AUNTS +AUNTY +AURA +AURAE +AURAL +AURALITIES +AURALITY +AURALLY +AURAR +AURAS +AURATE +AURATED +AUREATE +AUREATELY +AUREI +AUREOLA +AUREOLAE +AUREOLAS +AUREOLE +AUREOLED +AUREOLES +AUREOLING +AURES +AUREUS +AURIC +AURICLE +AURICLED +AURICLES +AURICULA +AURICULAE +AURICULAR +AURICULARS +AURICULAS +AURICULATE +AURIFEROUS +AURIFORM +AURIS +AURIST +AURISTS +AUROCHS +AUROCHSES +AURORA +AURORAE +AURORAL +AURORALLY +AURORAS +AUROREAN +AUROUS +AURUM +AURUMS +AUSCULTATE +AUSCULTATED +AUSCULTATES +AUSCULTATING +AUSCULTATION +AUSCULTATIONS +AUSCULTATORY +AUSFORM +AUSFORMED +AUSFORMING +AUSFORMS +AUSLANDER +AUSLANDERS +AUSPEX +AUSPICATE +AUSPICATED +AUSPICATES +AUSPICATING +AUSPICE +AUSPICES +AUSPICIOUS +AUSPICIOUSLY +AUSPICIOUSNESS +AUSTENITE +AUSTENITES +AUSTENITIC +AUSTERE +AUSTERELY +AUSTERENESS +AUSTERENESSES +AUSTERER +AUSTEREST +AUSTERITIES +AUSTERITY +AUSTRAL +AUSTRALES +AUSTRALS +AUSUBO +AUSUBOS +AUTACOID +AUTACOIDS +AUTARCH +AUTARCHIC +AUTARCHICAL +AUTARCHIES +AUTARCHS +AUTARCHY +AUTARKIC +AUTARKICAL +AUTARKIES +AUTARKIST +AUTARKISTS +AUTARKY +AUTECIOUS +AUTECISM +AUTECISMS +AUTECOLOGICAL +AUTECOLOGIES +AUTECOLOGY +AUTEUR +AUTEURISM +AUTEURISMS +AUTEURIST +AUTEURISTS +AUTEURS +AUTHENTIC +AUTHENTICALLY +AUTHENTICATE +AUTHENTICATED +AUTHENTICATES +AUTHENTICATING +AUTHENTICATION +AUTHENTICATIONS +AUTHENTICATOR +AUTHENTICATORS +AUTHENTICITIES +AUTHENTICITY +AUTHOR +AUTHORED +AUTHORESS +AUTHORESSES +AUTHORIAL +AUTHORING +AUTHORISE +AUTHORISED +AUTHORISES +AUTHORISING +AUTHORITARIAN +AUTHORITARIANS +AUTHORITATIVE +AUTHORITATIVELY +AUTHORITIES +AUTHORITY +AUTHORIZATION +AUTHORIZATIONS +AUTHORIZE +AUTHORIZED +AUTHORIZER +AUTHORIZERS +AUTHORIZES +AUTHORIZING +AUTHORS +AUTHORSHIP +AUTHORSHIPS +AUTISM +AUTISMS +AUTIST +AUTISTIC +AUTISTICALLY +AUTISTICS +AUTISTS +AUTO +AUTOANTIBODIES +AUTOANTIBODY +AUTOBAHN +AUTOBAHNEN +AUTOBAHNS +AUTOBIOGRAPHER +AUTOBIOGRAPHERS +AUTOBIOGRAPHIC +AUTOBIOGRAPHIES +AUTOBIOGRAPHY +AUTOBUS +AUTOBUSES +AUTOBUSSES +AUTOCADE +AUTOCADES +AUTOCATALYSES +AUTOCATALYSIS +AUTOCATALYTIC +AUTOCEPHALIES +AUTOCEPHALOUS +AUTOCEPHALY +AUTOCHTHON +AUTOCHTHONES +AUTOCHTHONOUS +AUTOCHTHONOUSLY +AUTOCHTHONS +AUTOCLAVE +AUTOCLAVED +AUTOCLAVES +AUTOCLAVING +AUTOCOID +AUTOCOIDS +AUTOCORRELATION +AUTOCRACIES +AUTOCRACY +AUTOCRAT +AUTOCRATIC +AUTOCRATICAL +AUTOCRATICALLY +AUTOCRATS +AUTOCRINE +AUTOCROSS +AUTOCROSSES +AUTODIDACT +AUTODIDACTIC +AUTODIDACTS +AUTODYNE +AUTODYNES +AUTOECIOUS +AUTOECIOUSLY +AUTOECISM +AUTOECISMS +AUTOED +AUTOEROTIC +AUTOEROTICISM +AUTOEROTICISMS +AUTOEROTISM +AUTOEROTISMS +AUTOFOCUS +AUTOFOCUSES +AUTOGAMIC +AUTOGAMIES +AUTOGAMOUS +AUTOGAMY +AUTOGENIC +AUTOGENIES +AUTOGENOUS +AUTOGENOUSLY +AUTOGENY +AUTOGIRO +AUTOGIROS +AUTOGRAFT +AUTOGRAFTED +AUTOGRAFTING +AUTOGRAFTS +AUTOGRAPH +AUTOGRAPHED +AUTOGRAPHIC +AUTOGRAPHICALLY +AUTOGRAPHIES +AUTOGRAPHING +AUTOGRAPHS +AUTOGRAPHY +AUTOGYRO +AUTOGYROS +AUTOHARP +AUTOHARPS +AUTOHYPNOSES +AUTOHYPNOSIS +AUTOHYPNOTIC +AUTOIMMUNE +AUTOIMMUNITIES +AUTOIMMUNITY +AUTOINFECTION +AUTOINFECTIONS +AUTOING +AUTOLOADING +AUTOLOGOUS +AUTOLYSATE +AUTOLYSATES +AUTOLYSE +AUTOLYSED +AUTOLYSES +AUTOLYSIN +AUTOLYSING +AUTOLYSINS +AUTOLYSIS +AUTOLYTIC +AUTOLYZATE +AUTOLYZATES +AUTOLYZE +AUTOLYZED +AUTOLYZES +AUTOLYZING +AUTOMAKER +AUTOMAKERS +AUTOMAN +AUTOMAT +AUTOMATA +AUTOMATABLE +AUTOMATE +AUTOMATED +AUTOMATES +AUTOMATIC +AUTOMATICALLY +AUTOMATICITIES +AUTOMATICITY +AUTOMATICS +AUTOMATING +AUTOMATION +AUTOMATIONS +AUTOMATISM +AUTOMATISMS +AUTOMATIST +AUTOMATISTS +AUTOMATIZATION +AUTOMATIZATIONS +AUTOMATIZE +AUTOMATIZED +AUTOMATIZES +AUTOMATIZING +AUTOMATON +AUTOMATONS +AUTOMATS +AUTOMEN +AUTOMOBILE +AUTOMOBILED +AUTOMOBILES +AUTOMOBILING +AUTOMOBILIST +AUTOMOBILISTS +AUTOMOBILITIES +AUTOMOBILITY +AUTOMORPHISM +AUTOMORPHISMS +AUTOMOTIVE +AUTONOMIC +AUTONOMICALLY +AUTONOMIES +AUTONOMIST +AUTONOMISTS +AUTONOMOUS +AUTONOMOUSLY +AUTONOMY +AUTONYM +AUTONYMS +AUTOPEN +AUTOPENS +AUTOPHAGIES +AUTOPHAGY +AUTOPHYTE +AUTOPHYTES +AUTOPILOT +AUTOPILOTS +AUTOPOLYPLOID +AUTOPOLYPLOIDS +AUTOPOLYPLOIDY +AUTOPSIC +AUTOPSIED +AUTOPSIES +AUTOPSIST +AUTOPSISTS +AUTOPSY +AUTOPSYING +AUTORADIOGRAM +AUTORADIOGRAMS +AUTORADIOGRAPH +AUTORADIOGRAPHS +AUTORADIOGRAPHY +AUTOROTATE +AUTOROTATED +AUTOROTATES +AUTOROTATING +AUTOROTATION +AUTOROTATIONS +AUTOROUTE +AUTOROUTES +AUTOS +AUTOSEXING +AUTOSOMAL +AUTOSOMALLY +AUTOSOME +AUTOSOMES +AUTOSTRADA +AUTOSTRADAS +AUTOSTRADE +AUTOSUGGEST +AUTOSUGGESTED +AUTOSUGGESTING +AUTOSUGGESTION +AUTOSUGGESTIONS +AUTOSUGGESTS +AUTOTELIC +AUTOTETRAPLOID +AUTOTETRAPLOIDS +AUTOTETRAPLOIDY +AUTOTOMIC +AUTOTOMIES +AUTOTOMIZE +AUTOTOMIZED +AUTOTOMIZES +AUTOTOMIZING +AUTOTOMOUS +AUTOTOMY +AUTOTOXIC +AUTOTOXIN +AUTOTOXINS +AUTOTRANSFORMER +AUTOTRANSFUSION +AUTOTROPH +AUTOTROPHIC +AUTOTROPHICALLY +AUTOTROPHIES +AUTOTROPHS +AUTOTROPHY +AUTOTYPE +AUTOTYPES +AUTOTYPIES +AUTOTYPY +AUTOWORKER +AUTOWORKERS +AUTOXIDATION +AUTOXIDATIONS +AUTUMN +AUTUMNAL +AUTUMNALLY +AUTUMNS +AUTUNITE +AUTUNITES +AUXESES +AUXESIS +AUXETIC +AUXETICS +AUXILIARIES +AUXILIARY +AUXIN +AUXINIC +AUXINS +AUXOTROPH +AUXOTROPHIC +AUXOTROPHIES +AUXOTROPHS +AUXOTROPHY +AVA +AVADAVAT +AVADAVATS +AVAIL +AVAILABILITIES +AVAILABILITY +AVAILABLE +AVAILABLENESS +AVAILABLENESSES +AVAILABLY +AVAILED +AVAILING +AVAILS +AVALANCHE +AVALANCHED +AVALANCHES +AVALANCHING +AVANT +AVARICE +AVARICES +AVARICIOUS +AVARICIOUSLY +AVARICIOUSNESS +AVASCULAR +AVASCULARITIES +AVASCULARITY +AVAST +AVATAR +AVATARS +AVAUNT +AVE +AVELLAN +AVELLANE +AVENGE +AVENGED +AVENGEFUL +AVENGER +AVENGERS +AVENGES +AVENGING +AVENS +AVENSES +AVENTAIL +AVENTAILS +AVENTURIN +AVENTURINE +AVENTURINES +AVENTURINS +AVENUE +AVENUES +AVER +AVERAGE +AVERAGED +AVERAGELY +AVERAGENESS +AVERAGENESSES +AVERAGES +AVERAGING +AVERMENT +AVERMENTS +AVERRABLE +AVERRED +AVERRING +AVERS +AVERSE +AVERSELY +AVERSENESS +AVERSENESSES +AVERSION +AVERSIONS +AVERSIVE +AVERSIVELY +AVERSIVENESS +AVERSIVENESSES +AVERSIVES +AVERT +AVERTABLE +AVERTED +AVERTER +AVERTERS +AVERTIBLE +AVERTING +AVERTS +AVES +AVGAS +AVGASES +AVGASSES +AVGOLEMONO +AVGOLEMONOS +AVIAN +AVIANIZE +AVIANIZED +AVIANIZES +AVIANIZING +AVIANS +AVIARIES +AVIARIST +AVIARISTS +AVIARY +AVIATE +AVIATED +AVIATES +AVIATIC +AVIATING +AVIATION +AVIATIONS +AVIATOR +AVIATORS +AVIATRESS +AVIATRESSES +AVIATRICE +AVIATRICES +AVIATRIX +AVIATRIXES +AVICULAR +AVICULTURE +AVICULTURES +AVICULTURIST +AVICULTURISTS +AVID +AVIDIN +AVIDINS +AVIDITIES +AVIDITY +AVIDLY +AVIDNESS +AVIDNESSES +AVIFAUNA +AVIFAUNAE +AVIFAUNAL +AVIFAUNAS +AVIGATOR +AVIGATORS +AVION +AVIONIC +AVIONICS +AVIONS +AVIRULENT +AVISO +AVISOS +AVITAMINOSES +AVITAMINOSIS +AVITAMINOTIC +AVO +AVOCADO +AVOCADOES +AVOCADOS +AVOCATION +AVOCATIONAL +AVOCATIONALLY +AVOCATIONS +AVOCET +AVOCETS +AVODIRE +AVODIRES +AVOID +AVOIDABLE +AVOIDABLY +AVOIDANCE +AVOIDANCES +AVOIDED +AVOIDER +AVOIDERS +AVOIDING +AVOIDS +AVOIRDUPOIS +AVOS +AVOSET +AVOSETS +AVOUCH +AVOUCHED +AVOUCHER +AVOUCHERS +AVOUCHES +AVOUCHING +AVOUCHMENT +AVOUCHMENTS +AVOW +AVOWABLE +AVOWABLY +AVOWAL +AVOWALS +AVOWED +AVOWEDLY +AVOWER +AVOWERS +AVOWING +AVOWS +AVULSE +AVULSED +AVULSES +AVULSING +AVULSION +AVULSIONS +AVUNCULAR +AVUNCULARITIES +AVUNCULARITY +AVUNCULARLY +AW +AWA +AWAIT +AWAITED +AWAITER +AWAITERS +AWAITING +AWAITS +AWAKE +AWAKED +AWAKEN +AWAKENED +AWAKENER +AWAKENERS +AWAKENING +AWAKENINGS +AWAKENS +AWAKES +AWAKING +AWARD +AWARDABLE +AWARDED +AWARDEE +AWARDEES +AWARDER +AWARDERS +AWARDING +AWARDS +AWARE +AWARENESS +AWARENESSES +AWASH +AWAY +AWAYNESS +AWAYNESSES +AWE +AWEARY +AWEATHER +AWED +AWEE +AWEIGH +AWEING +AWELESS +AWES +AWESOME +AWESOMELY +AWESOMENESS +AWESOMENESSES +AWESTRICKEN +AWESTRUCK +AWFUL +AWFULLER +AWFULLEST +AWFULLY +AWFULNESS +AWFULNESSES +AWHILE +AWHIRL +AWING +AWKWARD +AWKWARDER +AWKWARDEST +AWKWARDLY +AWKWARDNESS +AWKWARDNESSES +AWL +AWLESS +AWLS +AWLWORT +AWLWORTS +AWMOUS +AWN +AWNED +AWNING +AWNINGED +AWNINGS +AWNLESS +AWNS +AWNY +AWOKE +AWOKEN +AWOL +AWOLS +AWRY +AX +AXAL +AXE +AXED +AXEL +AXELS +AXEMAN +AXEMEN +AXENIC +AXENICALLY +AXES +AXIAL +AXIALITIES +AXIALITY +AXIALLY +AXIL +AXILE +AXILLA +AXILLAE +AXILLAR +AXILLARIES +AXILLARS +AXILLARY +AXILLAS +AXILS +AXING +AXIOLOGICAL +AXIOLOGICALLY +AXIOLOGIES +AXIOLOGY +AXIOM +AXIOMATIC +AXIOMATICALLY +AXIOMATISATION +AXIOMATISATIONS +AXIOMATIZATION +AXIOMATIZATIONS +AXIOMATIZE +AXIOMATIZED +AXIOMATIZES +AXIOMATIZING +AXIOMS +AXION +AXIONS +AXIS +AXISED +AXISES +AXISYMMETRIC +AXISYMMETRICAL +AXISYMMETRIES +AXISYMMETRY +AXITE +AXITES +AXLE +AXLED +AXLES +AXLETREE +AXLETREES +AXLIKE +AXMAN +AXMEN +AXOLOTL +AXOLOTLS +AXON +AXONAL +AXONE +AXONEMAL +AXONEME +AXONEMES +AXONES +AXONIC +AXONOMETRIC +AXONS +AXOPLASM +AXOPLASMIC +AXOPLASMS +AXSEED +AXSEEDS +AY +AYAH +AYAHS +AYAHUASCA +AYAHUASCAS +AYATOLLAH +AYATOLLAHS +AYE +AYES +AYIN +AYINS +AYS +AYURVEDA +AYURVEDAS +AYURVEDIC +AYURVEDICS +AZALEA +AZALEAS +AZAN +AZANS +AZATHIOPRINE +AZATHIOPRINES +AZEDARACH +AZEDARACHS +AZEOTROPE +AZEOTROPES +AZEOTROPIES +AZEOTROPY +AZIDE +AZIDES +AZIDO +AZIDOTHYMIDINE +AZIDOTHYMIDINES +AZIMUTH +AZIMUTHAL +AZIMUTHALLY +AZIMUTHS +AZINE +AZINES +AZLON +AZLONS +AZO +AZOIC +AZOLE +AZOLES +AZON +AZONAL +AZONIC +AZONS +AZOOSPERMIA +AZOOSPERMIAS +AZOTE +AZOTED +AZOTEMIA +AZOTEMIAS +AZOTEMIC +AZOTES +AZOTH +AZOTHS +AZOTIC +AZOTISE +AZOTISED +AZOTISES +AZOTISING +AZOTIZE +AZOTIZED +AZOTIZES +AZOTIZING +AZOTOBACTER +AZOTOBACTERS +AZOTURIA +AZOTURIAS +AZUKI +AZUKIS +AZULEJO +AZULEJOS +AZURE +AZURES +AZURITE +AZURITES +AZYGOS +AZYGOSES +AZYGOUS +BA +BAA +BAAED +BAAING +BAAL +BAALIM +BAALISM +BAALISMS +BAALS +BAAS +BAASES +BAASKAAP +BAASKAAPS +BAASKAP +BAASKAPS +BAASSKAP +BAASSKAPS +BABA +BABAS +BABASSU +BABASSUS +BABBITRIES +BABBITRY +BABBITT +BABBITTED +BABBITTING +BABBITTRIES +BABBITTRY +BABBITTS +BABBLE +BABBLED +BABBLEMENT +BABBLEMENTS +BABBLER +BABBLERS +BABBLES +BABBLING +BABBLINGS +BABE +BABEL +BABELS +BABES +BABESIA +BABESIAS +BABESIOSES +BABESIOSIS +BABICHE +BABICHES +BABIED +BABIER +BABIES +BABIEST +BABIRUSA +BABIRUSAS +BABIRUSSA +BABIRUSSAS +BABKA +BABKAS +BABOO +BABOOL +BABOOLS +BABOON +BABOONERIES +BABOONERY +BABOONISH +BABOONS +BABOOS +BABU +BABUL +BABULS +BABUS +BABUSHKA +BABUSHKAS +BABY +BABYDOLL +BABYDOLLS +BABYHOOD +BABYHOODS +BABYING +BABYISH +BABYISHLY +BABYPROOF +BABYPROOFED +BABYPROOFING +BABYPROOFS +BABYSAT +BABYSIT +BABYSITS +BABYSITTING +BACALAO +BACALAOS +BACCA +BACCAE +BACCALAUREATE +BACCALAUREATES +BACCARA +BACCARAS +BACCARAT +BACCARATS +BACCATE +BACCATED +BACCHANAL +BACCHANALIA +BACCHANALIAN +BACCHANALIANS +BACCHANALS +BACCHANT +BACCHANTE +BACCHANTES +BACCHANTS +BACCHIC +BACCHII +BACCHIUS +BACCIFORM +BACH +BACHED +BACHELOR +BACHELORDOM +BACHELORDOMS +BACHELORETTE +BACHELORETTES +BACHELORHOOD +BACHELORHOODS +BACHELORS +BACHES +BACHING +BACILLAR +BACILLARY +BACILLI +BACILLUS +BACITRACIN +BACITRACINS +BACK +BACKACHE +BACKACHES +BACKBEAT +BACKBEATS +BACKBENCH +BACKBENCHER +BACKBENCHERS +BACKBENCHES +BACKBEND +BACKBENDS +BACKBIT +BACKBITE +BACKBITER +BACKBITERS +BACKBITES +BACKBITING +BACKBITINGS +BACKBITTEN +BACKBLOCK +BACKBLOCKS +BACKBOARD +BACKBOARDS +BACKBONE +BACKBONED +BACKBONES +BACKBREAKER +BACKBREAKERS +BACKBREAKING +BACKCAST +BACKCASTS +BACKCHAT +BACKCHATS +BACKCHECK +BACKCHECKED +BACKCHECKING +BACKCHECKS +BACKCLOTH +BACKCLOTHS +BACKCOUNTRIES +BACKCOUNTRY +BACKCOURT +BACKCOURTMAN +BACKCOURTMEN +BACKCOURTS +BACKCROSS +BACKCROSSED +BACKCROSSES +BACKCROSSING +BACKDATE +BACKDATED +BACKDATES +BACKDATING +BACKDOOR +BACKDRAFT +BACKDRAFTS +BACKDROP +BACKDROPPED +BACKDROPPING +BACKDROPS +BACKDROPT +BACKED +BACKER +BACKERS +BACKFIELD +BACKFIELDS +BACKFILL +BACKFILLED +BACKFILLING +BACKFILLS +BACKFIRE +BACKFIRED +BACKFIRES +BACKFIRING +BACKFIT +BACKFITS +BACKFITTED +BACKFITTING +BACKFLIP +BACKFLIPPED +BACKFLIPPING +BACKFLIPS +BACKFLOW +BACKFLOWS +BACKGAMMON +BACKGAMMONS +BACKGROUND +BACKGROUNDED +BACKGROUNDER +BACKGROUNDERS +BACKGROUNDING +BACKGROUNDS +BACKHAND +BACKHANDED +BACKHANDEDLY +BACKHANDER +BACKHANDERS +BACKHANDING +BACKHANDS +BACKHAUL +BACKHAULED +BACKHAULING +BACKHAULS +BACKHOE +BACKHOED +BACKHOEING +BACKHOES +BACKHOUSE +BACKHOUSES +BACKING +BACKINGS +BACKLAND +BACKLANDS +BACKLASH +BACKLASHED +BACKLASHER +BACKLASHERS +BACKLASHES +BACKLASHING +BACKLESS +BACKLIGHT +BACKLIGHTED +BACKLIGHTING +BACKLIGHTS +BACKLIST +BACKLISTED +BACKLISTING +BACKLISTS +BACKLIT +BACKLOAD +BACKLOADED +BACKLOADING +BACKLOADS +BACKLOG +BACKLOGGED +BACKLOGGING +BACKLOGS +BACKMOST +BACKOUT +BACKOUTS +BACKPACK +BACKPACKED +BACKPACKER +BACKPACKERS +BACKPACKING +BACKPACKS +BACKPEDAL +BACKPEDALED +BACKPEDALING +BACKPEDALLED +BACKPEDALLING +BACKPEDALS +BACKREST +BACKRESTS +BACKROOM +BACKROOMS +BACKRUSH +BACKRUSHES +BACKS +BACKSAW +BACKSAWS +BACKSCATTER +BACKSCATTERED +BACKSCATTERING +BACKSCATTERINGS +BACKSCATTERS +BACKSEAT +BACKSEATS +BACKSET +BACKSETS +BACKSHORE +BACKSHORES +BACKSIDE +BACKSIDES +BACKSLAP +BACKSLAPPED +BACKSLAPPER +BACKSLAPPERS +BACKSLAPPING +BACKSLAPS +BACKSLASH +BACKSLASHES +BACKSLID +BACKSLIDDEN +BACKSLIDE +BACKSLIDER +BACKSLIDERS +BACKSLIDES +BACKSLIDING +BACKSPACE +BACKSPACED +BACKSPACES +BACKSPACING +BACKSPIN +BACKSPINS +BACKSPLASH +BACKSPLASHES +BACKSTAB +BACKSTABBED +BACKSTABBER +BACKSTABBERS +BACKSTABBING +BACKSTABBINGS +BACKSTABS +BACKSTAGE +BACKSTAGES +BACKSTAIR +BACKSTAIRS +BACKSTAMP +BACKSTAMPED +BACKSTAMPING +BACKSTAMPS +BACKSTAY +BACKSTAYS +BACKSTITCH +BACKSTITCHED +BACKSTITCHES +BACKSTITCHING +BACKSTOP +BACKSTOPPED +BACKSTOPPING +BACKSTOPS +BACKSTORIES +BACKSTORY +BACKSTREET +BACKSTREETS +BACKSTRETCH +BACKSTRETCHES +BACKSTROKE +BACKSTROKES +BACKSWEPT +BACKSWING +BACKSWINGS +BACKSWORD +BACKSWORDS +BACKTRACK +BACKTRACKED +BACKTRACKING +BACKTRACKS +BACKUP +BACKUPS +BACKWARD +BACKWARDLY +BACKWARDNESS +BACKWARDNESSES +BACKWARDS +BACKWASH +BACKWASHED +BACKWASHES +BACKWASHING +BACKWATER +BACKWATERS +BACKWOOD +BACKWOODS +BACKWOODSMAN +BACKWOODSMEN +BACKWOODSY +BACKWRAP +BACKWRAPS +BACKYARD +BACKYARDS +BACLOFEN +BACLOFENS +BACON +BACONS +BACTEREMIA +BACTEREMIAS +BACTEREMIC +BACTERIA +BACTERIAL +BACTERIALLY +BACTERIALS +BACTERIAS +BACTERICIDAL +BACTERICIDALLY +BACTERICIDE +BACTERICIDES +BACTERIN +BACTERINS +BACTERIOCIN +BACTERIOCINS +BACTERIOLOGIC +BACTERIOLOGICAL +BACTERIOLOGIES +BACTERIOLOGIST +BACTERIOLOGISTS +BACTERIOLOGY +BACTERIOLYSES +BACTERIOLYSIS +BACTERIOLYTIC +BACTERIOPHAGE +BACTERIOPHAGES +BACTERIOPHAGIES +BACTERIOPHAGY +BACTERIOSTASES +BACTERIOSTASIS +BACTERIOSTAT +BACTERIOSTATIC +BACTERIOSTATS +BACTERIUM +BACTERIURIA +BACTERIURIAS +BACTERIZATION +BACTERIZATIONS +BACTERIZE +BACTERIZED +BACTERIZES +BACTERIZING +BACTEROID +BACTEROIDS +BACULA +BACULINE +BACULUM +BACULUMS +BAD +BADASS +BADASSED +BADASSES +BADDER +BADDEST +BADDIE +BADDIES +BADDY +BADE +BADGE +BADGED +BADGELESS +BADGER +BADGERED +BADGERING +BADGERLY +BADGERS +BADGES +BADGING +BADINAGE +BADINAGED +BADINAGES +BADINAGING +BADLAND +BADLANDS +BADLY +BADMAN +BADMEN +BADMINTON +BADMINTONS +BADMOUTH +BADMOUTHED +BADMOUTHING +BADMOUTHS +BADNESS +BADNESSES +BADS +BAFF +BAFFED +BAFFIES +BAFFING +BAFFLE +BAFFLED +BAFFLEGAB +BAFFLEGABS +BAFFLEMENT +BAFFLEMENTS +BAFFLER +BAFFLERS +BAFFLES +BAFFLING +BAFFLINGLY +BAFFS +BAFFY +BAG +BAGASS +BAGASSE +BAGASSES +BAGATELLE +BAGATELLES +BAGEL +BAGELS +BAGFUL +BAGFULS +BAGGAGE +BAGGAGES +BAGGED +BAGGER +BAGGERS +BAGGIE +BAGGIER +BAGGIES +BAGGIEST +BAGGILY +BAGGINESS +BAGGINESSES +BAGGING +BAGGINGS +BAGGY +BAGHOUSE +BAGHOUSES +BAGLIKE +BAGMAN +BAGMEN +BAGNIO +BAGNIOS +BAGPIPE +BAGPIPED +BAGPIPER +BAGPIPERS +BAGPIPES +BAGPIPING +BAGS +BAGSFUL +BAGUET +BAGUETS +BAGUETTE +BAGUETTES +BAGWIG +BAGWIGS +BAGWORM +BAGWORMS +BAH +BAHADUR +BAHADURS +BAHT +BAHTS +BAHUVRIHI +BAHUVRIHIS +BAIDARKA +BAIDARKAS +BAIL +BAILABLE +BAILED +BAILEE +BAILEES +BAILER +BAILERS +BAILEY +BAILEYS +BAILIE +BAILIES +BAILIFF +BAILIFFS +BAILIFFSHIP +BAILIFFSHIPS +BAILING +BAILIWICK +BAILIWICKS +BAILMENT +BAILMENTS +BAILOR +BAILORS +BAILOUT +BAILOUTS +BAILS +BAILSMAN +BAILSMEN +BAIRN +BAIRNISH +BAIRNLIER +BAIRNLIEST +BAIRNLY +BAIRNS +BAIT +BAITED +BAITER +BAITERS +BAITFISH +BAITFISHES +BAITH +BAITING +BAITS +BAIZA +BAIZAS +BAIZE +BAIZES +BAKE +BAKEAPPLE +BAKEAPPLES +BAKED +BAKEHOUSE +BAKEHOUSES +BAKELITE +BAKELITES +BAKEMEAT +BAKEMEATS +BAKER +BAKERIES +BAKERS +BAKERY +BAKES +BAKESHOP +BAKESHOPS +BAKEWARE +BAKEWARES +BAKING +BAKINGS +BAKLAVA +BAKLAVAS +BAKLAWA +BAKLAWAS +BAKSHEESH +BAKSHEESHES +BAKSHISH +BAKSHISHED +BAKSHISHES +BAKSHISHING +BAL +BALACLAVA +BALACLAVAS +BALALAIKA +BALALAIKAS +BALANCE +BALANCED +BALANCER +BALANCERS +BALANCES +BALANCING +BALAS +BALASES +BALATA +BALATAS +BALBOA +BALBOAS +BALBRIGGAN +BALBRIGGANS +BALCONIED +BALCONIES +BALCONY +BALD +BALDACHIN +BALDACHINO +BALDACHINOS +BALDACHINS +BALDAQUIN +BALDAQUINS +BALDED +BALDER +BALDERDASH +BALDERDASHES +BALDEST +BALDFACED +BALDHEAD +BALDHEADS +BALDIES +BALDING +BALDISH +BALDLY +BALDNESS +BALDNESSES +BALDPATE +BALDPATED +BALDPATES +BALDRIC +BALDRICK +BALDRICKS +BALDRICS +BALDS +BALDY +BALE +BALED +BALEEN +BALEENS +BALEFIRE +BALEFIRES +BALEFUL +BALEFULLY +BALEFULNESS +BALEFULNESSES +BALER +BALERS +BALES +BALING +BALISAUR +BALISAURS +BALK +BALKANIZATION +BALKANIZATIONS +BALKANIZE +BALKANIZED +BALKANIZES +BALKANIZING +BALKED +BALKER +BALKERS +BALKIER +BALKIEST +BALKILY +BALKINESS +BALKINESSES +BALKING +BALKLINE +BALKLINES +BALKS +BALKY +BALL +BALLAD +BALLADE +BALLADEER +BALLADEERS +BALLADES +BALLADIC +BALLADIST +BALLADISTS +BALLADRIES +BALLADRY +BALLADS +BALLAST +BALLASTED +BALLASTER +BALLASTERS +BALLASTING +BALLASTS +BALLCARRIER +BALLCARRIERS +BALLED +BALLER +BALLERINA +BALLERINAS +BALLERS +BALLET +BALLETIC +BALLETOMANE +BALLETOMANES +BALLETOMANIA +BALLETOMANIAS +BALLETS +BALLGAME +BALLGAMES +BALLHANDLING +BALLHANDLINGS +BALLHAWK +BALLHAWKS +BALLIES +BALLING +BALLISTA +BALLISTAE +BALLISTIC +BALLISTICALLY +BALLISTICS +BALLON +BALLONET +BALLONETS +BALLONNE +BALLONNES +BALLONS +BALLOON +BALLOONED +BALLOONING +BALLOONINGS +BALLOONIST +BALLOONISTS +BALLOONS +BALLOT +BALLOTED +BALLOTER +BALLOTERS +BALLOTING +BALLOTS +BALLPARK +BALLPARKS +BALLPLAYER +BALLPLAYERS +BALLPOINT +BALLPOINTS +BALLROOM +BALLROOMS +BALLS +BALLSIER +BALLSIEST +BALLSY +BALLUTE +BALLUTES +BALLY +BALLYARD +BALLYARDS +BALLYHOO +BALLYHOOED +BALLYHOOING +BALLYHOOS +BALLYRAG +BALLYRAGGED +BALLYRAGGING +BALLYRAGS +BALM +BALMACAAN +BALMACAANS +BALMIER +BALMIEST +BALMILY +BALMINESS +BALMINESSES +BALMLIKE +BALMORAL +BALMORALS +BALMS +BALMY +BALNEAL +BALNEOLOGIES +BALNEOLOGY +BALONEY +BALONEYS +BALS +BALSA +BALSAM +BALSAMED +BALSAMIC +BALSAMING +BALSAMS +BALSAS +BALUSTER +BALUSTERS +BALUSTRADE +BALUSTRADED +BALUSTRADES +BAM +BAMBINI +BAMBINO +BAMBINOS +BAMBOO +BAMBOOS +BAMBOOZLE +BAMBOOZLED +BAMBOOZLEMENT +BAMBOOZLEMENTS +BAMBOOZLES +BAMBOOZLING +BAMMED +BAMMING +BAMS +BAN +BANAL +BANALITIES +BANALITY +BANALIZE +BANALIZED +BANALIZES +BANALIZING +BANALLY +BANANA +BANANAS +BANAUSIC +BANCO +BANCOS +BAND +BANDA +BANDAGE +BANDAGED +BANDAGER +BANDAGERS +BANDAGES +BANDAGING +BANDAID +BANDANA +BANDANAS +BANDANNA +BANDANNAS +BANDAS +BANDBOX +BANDBOXES +BANDEAU +BANDEAUS +BANDEAUX +BANDED +BANDER +BANDERILLA +BANDERILLAS +BANDERILLERO +BANDERILLEROS +BANDEROL +BANDEROLE +BANDEROLES +BANDEROLS +BANDERS +BANDICOOT +BANDICOOTS +BANDIED +BANDIES +BANDINESS +BANDINESSES +BANDING +BANDIT +BANDITO +BANDITOS +BANDITRIES +BANDITRY +BANDITS +BANDITTI +BANDLEADER +BANDLEADERS +BANDMASTER +BANDMASTERS +BANDMATE +BANDMATES +BANDOG +BANDOGS +BANDOLEER +BANDOLEERS +BANDOLIER +BANDOLIERS +BANDONEON +BANDONEONS +BANDORA +BANDORAS +BANDORE +BANDORES +BANDS +BANDSAW +BANDSAWS +BANDSHELL +BANDSHELLS +BANDSMAN +BANDSMEN +BANDSTAND +BANDSTANDS +BANDWAGON +BANDWAGONS +BANDWIDTH +BANDWIDTHS +BANDY +BANDYING +BANE +BANEBERRIES +BANEBERRY +BANED +BANEFUL +BANEFULLY +BANES +BANG +BANGED +BANGER +BANGERS +BANGING +BANGKOK +BANGKOKS +BANGLE +BANGLES +BANGS +BANGTAIL +BANGTAILS +BANI +BANIAN +BANIANS +BANING +BANISH +BANISHED +BANISHER +BANISHERS +BANISHES +BANISHING +BANISHMENT +BANISHMENTS +BANISTER +BANISTERED +BANISTERS +BANJAX +BANJAXED +BANJAXES +BANJAXING +BANJO +BANJOES +BANJOIST +BANJOISTS +BANJOS +BANK +BANKABILITIES +BANKABILITY +BANKABLE +BANKBOOK +BANKBOOKS +BANKCARD +BANKCARDS +BANKED +BANKER +BANKERLY +BANKERS +BANKING +BANKINGS +BANKIT +BANKITS +BANKNOTE +BANKNOTES +BANKROLL +BANKROLLED +BANKROLLER +BANKROLLERS +BANKROLLING +BANKROLLS +BANKRUPT +BANKRUPTCIES +BANKRUPTCY +BANKRUPTED +BANKRUPTING +BANKRUPTS +BANKS +BANKSIA +BANKSIAS +BANKSIDE +BANKSIDES +BANNABLE +BANNED +BANNER +BANNERED +BANNERET +BANNERETS +BANNERETTE +BANNERETTES +BANNERING +BANNEROL +BANNEROLS +BANNERS +BANNET +BANNETS +BANNING +BANNISTER +BANNISTERS +BANNOCK +BANNOCKS +BANNS +BANQUET +BANQUETED +BANQUETER +BANQUETERS +BANQUETING +BANQUETS +BANQUETTE +BANQUETTES +BANS +BANSHEE +BANSHEES +BANSHIE +BANSHIES +BANTAM +BANTAMS +BANTAMWEIGHT +BANTAMWEIGHTS +BANTENG +BANTENGS +BANTER +BANTERED +BANTERER +BANTERERS +BANTERING +BANTERINGLY +BANTERS +BANTIES +BANTLING +BANTLINGS +BANTY +BANYAN +BANYANS +BANZAI +BANZAIS +BAOBAB +BAOBABS +BAP +BAPS +BAPTISE +BAPTISED +BAPTISES +BAPTISIA +BAPTISIAS +BAPTISING +BAPTISM +BAPTISMAL +BAPTISMALLY +BAPTISMS +BAPTIST +BAPTISTERIES +BAPTISTERY +BAPTISTRIES +BAPTISTRY +BAPTISTS +BAPTIZE +BAPTIZED +BAPTIZER +BAPTIZERS +BAPTIZES +BAPTIZING +BAR +BARATHEA +BARATHEAS +BARB +BARBAL +BARBARIAN +BARBARIANISM +BARBARIANISMS +BARBARIANS +BARBARIC +BARBARICALLY +BARBARISM +BARBARISMS +BARBARITIES +BARBARITY +BARBARIZATION +BARBARIZATIONS +BARBARIZE +BARBARIZED +BARBARIZES +BARBARIZING +BARBAROUS +BARBAROUSLY +BARBAROUSNESS +BARBAROUSNESSES +BARBASCO +BARBASCOES +BARBASCOS +BARBATE +BARBE +BARBECUE +BARBECUED +BARBECUER +BARBECUERS +BARBECUES +BARBECUING +BARBED +BARBEL +BARBELL +BARBELLS +BARBELS +BARBEQUE +BARBEQUED +BARBEQUES +BARBEQUING +BARBER +BARBERED +BARBERING +BARBERRIES +BARBERRY +BARBERS +BARBERSHOP +BARBERSHOPS +BARBES +BARBET +BARBETS +BARBETTE +BARBETTES +BARBICAN +BARBICANS +BARBICEL +BARBICELS +BARBIE +BARBIES +BARBING +BARBITAL +BARBITALS +BARBITONE +BARBITONES +BARBITURATE +BARBITURATES +BARBLESS +BARBS +BARBULE +BARBULES +BARBUT +BARBUTS +BARBWIRE +BARBWIRES +BARCA +BARCAROLE +BARCAROLES +BARCAROLLE +BARCAROLLES +BARCAS +BARCHAN +BARCHANS +BARD +BARDE +BARDED +BARDES +BARDIC +BARDING +BARDOLATER +BARDOLATERS +BARDOLATRIES +BARDOLATRY +BARDS +BARE +BAREBACK +BAREBACKED +BAREBOAT +BAREBOATS +BAREBONED +BARED +BAREFACED +BAREFACEDLY +BAREFACEDNESS +BAREFACEDNESSES +BAREFIT +BAREFOOT +BAREFOOTED +BAREGE +BAREGES +BAREHAND +BAREHANDED +BAREHANDING +BAREHANDS +BAREHEAD +BAREHEADED +BARELY +BARENESS +BARENESSES +BARER +BARES +BARESARK +BARESARKS +BAREST +BARF +BARFED +BARFING +BARFLIES +BARFLY +BARFS +BARGAIN +BARGAINED +BARGAINER +BARGAINERS +BARGAINING +BARGAINS +BARGE +BARGEBOARD +BARGEBOARDS +BARGED +BARGEE +BARGEES +BARGELLO +BARGELLOS +BARGEMAN +BARGEMEN +BARGES +BARGHEST +BARGHESTS +BARGING +BARGUEST +BARGUESTS +BARHOP +BARHOPPED +BARHOPPING +BARHOPS +BARIATRIC +BARIC +BARILLA +BARILLAS +BARING +BARISTA +BARISTAS +BARITE +BARITES +BARITONAL +BARITONE +BARITONES +BARIUM +BARIUMS +BARK +BARKED +BARKEEP +BARKEEPER +BARKEEPERS +BARKEEPS +BARKENTINE +BARKENTINES +BARKER +BARKERS +BARKIER +BARKIEST +BARKING +BARKLESS +BARKS +BARKY +BARLEDUC +BARLEDUCS +BARLESS +BARLEY +BARLEYCORN +BARLEYCORNS +BARLEYS +BARLOW +BARLOWS +BARM +BARMAID +BARMAIDS +BARMAN +BARMEN +BARMIE +BARMIER +BARMIEST +BARMS +BARMY +BARN +BARNACLE +BARNACLED +BARNACLES +BARNED +BARNEY +BARNEYS +BARNIER +BARNIEST +BARNING +BARNLIKE +BARNS +BARNSTORM +BARNSTORMED +BARNSTORMER +BARNSTORMERS +BARNSTORMING +BARNSTORMS +BARNY +BARNYARD +BARNYARDS +BAROCEPTOR +BAROCEPTORS +BAROGRAM +BAROGRAMS +BAROGRAPH +BAROGRAPHIC +BAROGRAPHS +BAROMETER +BAROMETERS +BAROMETRIC +BAROMETRICALLY +BAROMETRIES +BAROMETRY +BARON +BARONAGE +BARONAGES +BARONESS +BARONESSES +BARONET +BARONETAGE +BARONETAGES +BARONETCIES +BARONETCY +BARONETS +BARONG +BARONGS +BARONIAL +BARONIES +BARONNE +BARONNES +BARONS +BARONY +BAROQUE +BAROQUELY +BAROQUES +BARORECEPTOR +BARORECEPTORS +BAROSAUR +BAROSAURS +BAROSCOPE +BAROSCOPES +BAROUCHE +BAROUCHES +BARQUE +BARQUENTINE +BARQUENTINES +BARQUES +BARQUETTE +BARQUETTES +BARRABLE +BARRACK +BARRACKED +BARRACKER +BARRACKERS +BARRACKING +BARRACKS +BARRACOON +BARRACOONS +BARRACOUTA +BARRACOUTAS +BARRACUDA +BARRACUDAS +BARRAGE +BARRAGED +BARRAGES +BARRAGING +BARRAMUNDA +BARRAMUNDAS +BARRAMUNDI +BARRAMUNDIS +BARRANCA +BARRANCAS +BARRANCO +BARRANCOS +BARRATER +BARRATERS +BARRATOR +BARRATORS +BARRATRIES +BARRATRY +BARRE +BARRED +BARREL +BARRELAGE +BARRELAGES +BARRELED +BARRELFUL +BARRELFULS +BARRELHEAD +BARRELHEADS +BARRELHOUSE +BARRELHOUSES +BARRELING +BARRELLED +BARRELLING +BARRELS +BARRELSFUL +BARREN +BARRENER +BARRENEST +BARRENLY +BARRENNESS +BARRENNESSES +BARRENS +BARRES +BARRET +BARRETOR +BARRETORS +BARRETRIES +BARRETRY +BARRETS +BARRETTE +BARRETTES +BARRICADE +BARRICADED +BARRICADES +BARRICADING +BARRICADO +BARRICADOED +BARRICADOES +BARRICADOING +BARRICADOS +BARRIER +BARRIERS +BARRING +BARRIO +BARRIOS +BARRISTER +BARRISTERS +BARROOM +BARROOMS +BARROW +BARROWS +BARS +BARSTOOL +BARSTOOLS +BARTEND +BARTENDED +BARTENDER +BARTENDERS +BARTENDING +BARTENDS +BARTER +BARTERED +BARTERER +BARTERERS +BARTERING +BARTERS +BARTISAN +BARTISANS +BARTIZAN +BARTIZANS +BARWARE +BARWARES +BARYE +BARYES +BARYON +BARYONIC +BARYONS +BARYTA +BARYTAS +BARYTE +BARYTES +BARYTIC +BARYTON +BARYTONE +BARYTONES +BARYTONS +BAS +BASAL +BASALLY +BASALT +BASALTES +BASALTIC +BASALTINE +BASALTS +BASCULE +BASCULES +BASE +BASEBALL +BASEBALLS +BASEBOARD +BASEBOARDS +BASEBORN +BASED +BASELESS +BASELINE +BASELINER +BASELINERS +BASELINES +BASELY +BASEMAN +BASEMEN +BASEMENT +BASEMENTLESS +BASEMENTS +BASENESS +BASENESSES +BASENJI +BASENJIS +BASEPLATE +BASEPLATES +BASER +BASERUNNING +BASERUNNINGS +BASES +BASEST +BASH +BASHAW +BASHAWS +BASHED +BASHER +BASHERS +BASHES +BASHFUL +BASHFULLY +BASHFULNESS +BASHFULNESSES +BASHING +BASHINGS +BASHLYK +BASHLYKS +BASIC +BASICALLY +BASICITIES +BASICITY +BASICS +BASIDIA +BASIDIAL +BASIDIOMYCETE +BASIDIOMYCETES +BASIDIOMYCETOUS +BASIDIOSPORE +BASIDIOSPORES +BASIDIUM +BASIFICATION +BASIFICATIONS +BASIFIED +BASIFIER +BASIFIERS +BASIFIES +BASIFIXED +BASIFY +BASIFYING +BASIL +BASILAR +BASILARY +BASILECT +BASILECTS +BASILIC +BASILICA +BASILICAE +BASILICAL +BASILICAN +BASILICAS +BASILISK +BASILISKS +BASILS +BASIN +BASINAL +BASINED +BASINET +BASINETS +BASINFUL +BASINFULS +BASING +BASINLIKE +BASINS +BASION +BASIONS +BASIPETAL +BASIPETALLY +BASIS +BASK +BASKED +BASKET +BASKETBALL +BASKETBALLS +BASKETFUL +BASKETFULS +BASKETLIKE +BASKETRIES +BASKETRY +BASKETS +BASKETSFUL +BASKETWORK +BASKETWORKS +BASKING +BASKS +BASMATI +BASMATIS +BASOPHIL +BASOPHILE +BASOPHILES +BASOPHILIA +BASOPHILIAS +BASOPHILIC +BASOPHILS +BASQUE +BASQUES +BASS +BASSES +BASSET +BASSETED +BASSETING +BASSETS +BASSETT +BASSETTED +BASSETTING +BASSETTS +BASSI +BASSINET +BASSINETS +BASSIST +BASSISTS +BASSLY +BASSNESS +BASSNESSES +BASSO +BASSOON +BASSOONIST +BASSOONISTS +BASSOONS +BASSOS +BASSWOOD +BASSWOODS +BASSY +BAST +BASTARD +BASTARDIES +BASTARDISE +BASTARDISED +BASTARDISES +BASTARDISING +BASTARDIZATION +BASTARDIZATIONS +BASTARDIZE +BASTARDIZED +BASTARDIZES +BASTARDIZING +BASTARDLY +BASTARDS +BASTARDY +BASTE +BASTED +BASTER +BASTERS +BASTES +BASTILE +BASTILES +BASTILLE +BASTILLES +BASTINADE +BASTINADED +BASTINADES +BASTINADING +BASTINADO +BASTINADOED +BASTINADOES +BASTINADOING +BASTING +BASTINGS +BASTION +BASTIONED +BASTIONS +BASTS +BAT +BATBOY +BATBOYS +BATCH +BATCHED +BATCHER +BATCHERS +BATCHES +BATCHING +BATE +BATEAU +BATEAUX +BATED +BATES +BATFISH +BATFISHES +BATFOWL +BATFOWLED +BATFOWLER +BATFOWLERS +BATFOWLING +BATFOWLS +BATGIRL +BATGIRLS +BATH +BATHE +BATHED +BATHER +BATHERS +BATHES +BATHETIC +BATHETICALLY +BATHHOUSE +BATHHOUSES +BATHING +BATHLESS +BATHMAT +BATHMATS +BATHOLITH +BATHOLITHIC +BATHOLITHS +BATHOS +BATHOSES +BATHROBE +BATHROBES +BATHROOM +BATHROOMS +BATHS +BATHTUB +BATHTUBS +BATHWATER +BATHWATERS +BATHYAL +BATHYMETRIC +BATHYMETRICAL +BATHYMETRICALLY +BATHYMETRIES +BATHYMETRY +BATHYPELAGIC +BATHYSCAPH +BATHYSCAPHE +BATHYSCAPHES +BATHYSCAPHS +BATHYSPHERE +BATHYSPHERES +BATIK +BATIKED +BATIKING +BATIKS +BATING +BATISTE +BATISTES +BATLIKE +BATMAN +BATMEN +BATON +BATONS +BATRACHIAN +BATRACHIANS +BATS +BATSMAN +BATSMEN +BATT +BATTAILOUS +BATTALIA +BATTALIAS +BATTALION +BATTALIONS +BATTEAU +BATTEAUX +BATTED +BATTEMENT +BATTEMENTS +BATTEN +BATTENED +BATTENER +BATTENERS +BATTENING +BATTENS +BATTER +BATTERED +BATTERER +BATTERERS +BATTERIE +BATTERIES +BATTERING +BATTERS +BATTERY +BATTIER +BATTIEST +BATTIK +BATTIKS +BATTINESS +BATTINESSES +BATTING +BATTINGS +BATTLE +BATTLED +BATTLEFIELD +BATTLEFIELDS +BATTLEFRONT +BATTLEFRONTS +BATTLEGROUND +BATTLEGROUNDS +BATTLEMENT +BATTLEMENTED +BATTLEMENTS +BATTLER +BATTLERS +BATTLES +BATTLESHIP +BATTLESHIPS +BATTLEWAGON +BATTLEWAGONS +BATTLING +BATTS +BATTU +BATTUE +BATTUES +BATTY +BATWING +BAUBEE +BAUBEES +BAUBLE +BAUBLES +BAUD +BAUDEKIN +BAUDEKINS +BAUDRONS +BAUDRONSES +BAUDS +BAUHINIA +BAUHINIAS +BAULK +BAULKED +BAULKIER +BAULKIEST +BAULKING +BAULKS +BAULKY +BAUSOND +BAUXITE +BAUXITES +BAUXITIC +BAWBEE +BAWBEES +BAWCOCK +BAWCOCKS +BAWD +BAWDIER +BAWDIES +BAWDIEST +BAWDILY +BAWDINESS +BAWDINESSES +BAWDRIC +BAWDRICS +BAWDRIES +BAWDRY +BAWDS +BAWDY +BAWL +BAWLED +BAWLER +BAWLERS +BAWLING +BAWLS +BAWSUNT +BAWTIE +BAWTIES +BAWTY +BAY +BAYADEER +BAYADEERS +BAYADERE +BAYADERES +BAYAMO +BAYAMOS +BAYARD +BAYARDS +BAYBERRIES +BAYBERRY +BAYED +BAYING +BAYMAN +BAYMEN +BAYONET +BAYONETED +BAYONETING +BAYONETS +BAYONETTED +BAYONETTING +BAYOU +BAYOUS +BAYS +BAYWOOD +BAYWOODS +BAZAAR +BAZAARS +BAZAR +BAZARS +BAZILLION +BAZILLIONS +BAZOO +BAZOOKA +BAZOOKAS +BAZOOMS +BAZOOS +BDELLIUM +BDELLIUMS +BE +BEACH +BEACHBALL +BEACHBALLS +BEACHBOY +BEACHBOYS +BEACHCOMB +BEACHCOMBED +BEACHCOMBER +BEACHCOMBERS +BEACHCOMBING +BEACHCOMBS +BEACHED +BEACHES +BEACHFRONT +BEACHFRONTS +BEACHGOER +BEACHGOERS +BEACHHEAD +BEACHHEADS +BEACHIER +BEACHIEST +BEACHING +BEACHSIDE +BEACHWEAR +BEACHY +BEACON +BEACONED +BEACONING +BEACONS +BEAD +BEADED +BEADER +BEADERS +BEADHOUSE +BEADHOUSES +BEADIER +BEADIEST +BEADILY +BEADINESS +BEADINESSES +BEADING +BEADINGS +BEADLE +BEADLEDOM +BEADLEDOMS +BEADLES +BEADLIKE +BEADMAN +BEADMEN +BEADROLL +BEADROLLS +BEADS +BEADSMAN +BEADSMEN +BEADWORK +BEADWORKS +BEADY +BEAGLE +BEAGLES +BEAK +BEAKED +BEAKER +BEAKERS +BEAKIER +BEAKIEST +BEAKLESS +BEAKLIKE +BEAKS +BEAKY +BEAM +BEAMED +BEAMIER +BEAMIEST +BEAMILY +BEAMING +BEAMINGLY +BEAMISH +BEAMISHLY +BEAMLESS +BEAMLIKE +BEAMS +BEAMY +BEAN +BEANBAG +BEANBAGS +BEANBALL +BEANBALLS +BEANED +BEANERIES +BEANERY +BEANIE +BEANIES +BEANING +BEANLIKE +BEANO +BEANOS +BEANPOLE +BEANPOLES +BEANS +BEANSTALK +BEANSTALKS +BEAR +BEARABILITIES +BEARABILITY +BEARABLE +BEARABLY +BEARBAITING +BEARBAITINGS +BEARBERRIES +BEARBERRY +BEARCAT +BEARCATS +BEARD +BEARDED +BEARDEDNESS +BEARDEDNESSES +BEARDING +BEARDLESS +BEARDS +BEARDTONGUE +BEARDTONGUES +BEARER +BEARERS +BEARGRASS +BEARGRASSES +BEARHUG +BEARHUGS +BEARING +BEARINGS +BEARISH +BEARISHLY +BEARISHNESS +BEARISHNESSES +BEARLIKE +BEARS +BEARSKIN +BEARSKINS +BEARWOOD +BEARWOODS +BEAST +BEASTIE +BEASTIES +BEASTINGS +BEASTLIER +BEASTLIEST +BEASTLINESS +BEASTLINESSES +BEASTLY +BEASTS +BEAT +BEATABLE +BEATEN +BEATER +BEATERS +BEATIFIC +BEATIFICALLY +BEATIFICATION +BEATIFICATIONS +BEATIFIED +BEATIFIES +BEATIFY +BEATIFYING +BEATING +BEATINGS +BEATITUDE +BEATITUDES +BEATLESS +BEATNIK +BEATNIKS +BEATS +BEAU +BEAUCOUP +BEAUCOUPS +BEAUISH +BEAUS +BEAUT +BEAUTEOUS +BEAUTEOUSLY +BEAUTEOUSNESS +BEAUTEOUSNESSES +BEAUTICIAN +BEAUTICIANS +BEAUTIES +BEAUTIFICATION +BEAUTIFICATIONS +BEAUTIFIED +BEAUTIFIER +BEAUTIFIERS +BEAUTIFIES +BEAUTIFUL +BEAUTIFULLER +BEAUTIFULLEST +BEAUTIFULLY +BEAUTIFULNESS +BEAUTIFULNESSES +BEAUTIFY +BEAUTIFYING +BEAUTS +BEAUTY +BEAUX +BEAVER +BEAVERBOARD +BEAVERBOARDS +BEAVERED +BEAVERING +BEAVERS +BEBEERINE +BEBEERINES +BEBEERU +BEBEERUS +BEBLOOD +BEBLOODED +BEBLOODING +BEBLOODS +BEBOP +BEBOPPER +BEBOPPERS +BEBOPS +BECALM +BECALMED +BECALMING +BECALMS +BECAME +BECAP +BECAPPED +BECAPPING +BECAPS +BECARPET +BECARPETED +BECARPETING +BECARPETS +BECAUSE +BECCAFICO +BECCAFICOS +BECHALK +BECHALKED +BECHALKING +BECHALKS +BECHAMEL +BECHAMELS +BECHANCE +BECHANCED +BECHANCES +BECHANCING +BECHARM +BECHARMED +BECHARMING +BECHARMS +BECK +BECKED +BECKET +BECKETS +BECKING +BECKON +BECKONED +BECKONER +BECKONERS +BECKONING +BECKONS +BECKS +BECLAMOR +BECLAMORED +BECLAMORING +BECLAMORS +BECLASP +BECLASPED +BECLASPING +BECLASPS +BECLOAK +BECLOAKED +BECLOAKING +BECLOAKS +BECLOG +BECLOGGED +BECLOGGING +BECLOGS +BECLOTHE +BECLOTHED +BECLOTHES +BECLOTHING +BECLOUD +BECLOUDED +BECLOUDING +BECLOUDS +BECLOWN +BECLOWNED +BECLOWNING +BECLOWNS +BECOME +BECOMES +BECOMING +BECOMINGLY +BECOMINGS +BECOWARD +BECOWARDED +BECOWARDING +BECOWARDS +BECQUEREL +BECQUERELS +BECRAWL +BECRAWLED +BECRAWLING +BECRAWLS +BECRIME +BECRIMED +BECRIMES +BECRIMING +BECROWD +BECROWDED +BECROWDING +BECROWDS +BECRUST +BECRUSTED +BECRUSTING +BECRUSTS +BECUDGEL +BECUDGELED +BECUDGELING +BECUDGELLED +BECUDGELLING +BECUDGELS +BECURSE +BECURSED +BECURSES +BECURSING +BECURST +BED +BEDABBLE +BEDABBLED +BEDABBLES +BEDABBLING +BEDAMN +BEDAMNED +BEDAMNING +BEDAMNS +BEDARKEN +BEDARKENED +BEDARKENING +BEDARKENS +BEDAUB +BEDAUBED +BEDAUBING +BEDAUBS +BEDAZZLE +BEDAZZLED +BEDAZZLEMENT +BEDAZZLEMENTS +BEDAZZLES +BEDAZZLING +BEDBOARD +BEDBOARDS +BEDBUG +BEDBUGS +BEDCHAIR +BEDCHAIRS +BEDCHAMBER +BEDCHAMBERS +BEDCLOTHES +BEDCOVER +BEDCOVERING +BEDCOVERINGS +BEDCOVERS +BEDDABLE +BEDDED +BEDDER +BEDDERS +BEDDING +BEDDINGS +BEDEAFEN +BEDEAFENED +BEDEAFENING +BEDEAFENS +BEDECK +BEDECKED +BEDECKING +BEDECKS +BEDEHOUSE +BEDEHOUSES +BEDEL +BEDELL +BEDELLS +BEDELS +BEDEMAN +BEDEMEN +BEDESMAN +BEDESMEN +BEDEVIL +BEDEVILED +BEDEVILING +BEDEVILLED +BEDEVILLING +BEDEVILMENT +BEDEVILMENTS +BEDEVILS +BEDEW +BEDEWED +BEDEWING +BEDEWS +BEDFAST +BEDFELLOW +BEDFELLOWS +BEDFRAME +BEDFRAMES +BEDGOWN +BEDGOWNS +BEDIAPER +BEDIAPERED +BEDIAPERING +BEDIAPERS +BEDIGHT +BEDIGHTED +BEDIGHTING +BEDIGHTS +BEDIM +BEDIMMED +BEDIMMING +BEDIMPLE +BEDIMPLED +BEDIMPLES +BEDIMPLING +BEDIMS +BEDIRTIED +BEDIRTIES +BEDIRTY +BEDIRTYING +BEDIZEN +BEDIZENED +BEDIZENING +BEDIZENMENT +BEDIZENMENTS +BEDIZENS +BEDLAM +BEDLAMITE +BEDLAMITES +BEDLAMP +BEDLAMPS +BEDLAMS +BEDLESS +BEDLIKE +BEDMAKER +BEDMAKERS +BEDMATE +BEDMATES +BEDOTTED +BEDOUIN +BEDOUINS +BEDPAN +BEDPANS +BEDPLATE +BEDPLATES +BEDPOST +BEDPOSTS +BEDQUILT +BEDQUILTS +BEDRAGGLE +BEDRAGGLED +BEDRAGGLES +BEDRAGGLING +BEDRAIL +BEDRAILS +BEDRAPE +BEDRAPED +BEDRAPES +BEDRAPING +BEDRENCH +BEDRENCHED +BEDRENCHES +BEDRENCHING +BEDRID +BEDRIDDEN +BEDRIVEL +BEDRIVELED +BEDRIVELING +BEDRIVELLED +BEDRIVELLING +BEDRIVELS +BEDROCK +BEDROCKS +BEDROLL +BEDROLLS +BEDROOM +BEDROOMED +BEDROOMS +BEDRUG +BEDRUGGED +BEDRUGGING +BEDRUGS +BEDS +BEDSHEET +BEDSHEETS +BEDSIDE +BEDSIDES +BEDSIT +BEDSITS +BEDSONIA +BEDSONIAS +BEDSORE +BEDSORES +BEDSPREAD +BEDSPREADS +BEDSPRING +BEDSPRINGS +BEDSTAND +BEDSTANDS +BEDSTEAD +BEDSTEADS +BEDSTRAW +BEDSTRAWS +BEDTICK +BEDTICKS +BEDTIME +BEDTIMES +BEDU +BEDUIN +BEDUINS +BEDUMB +BEDUMBED +BEDUMBING +BEDUMBS +BEDUNCE +BEDUNCED +BEDUNCES +BEDUNCING +BEDWARD +BEDWARDS +BEDWARF +BEDWARFED +BEDWARFING +BEDWARFS +BEDWARMER +BEDWARMERS +BEDWETTER +BEDWETTERS +BEE +BEEBEE +BEEBEES +BEEBREAD +BEEBREADS +BEECH +BEECHDROPS +BEECHEN +BEECHES +BEECHIER +BEECHIEST +BEECHMAST +BEECHMASTS +BEECHNUT +BEECHNUTS +BEECHWOOD +BEECHWOODS +BEECHY +BEEDI +BEEDIES +BEEF +BEEFALO +BEEFALOES +BEEFALOS +BEEFCAKE +BEEFCAKES +BEEFEATER +BEEFEATERS +BEEFED +BEEFIER +BEEFIEST +BEEFILY +BEEFINESS +BEEFINESSES +BEEFING +BEEFLESS +BEEFS +BEEFSTEAK +BEEFSTEAKS +BEEFWOOD +BEEFWOODS +BEEFY +BEEHIVE +BEEHIVES +BEEKEEPER +BEEKEEPERS +BEEKEEPING +BEEKEEPINGS +BEELIKE +BEELINE +BEELINED +BEELINES +BEELINING +BEEN +BEEP +BEEPED +BEEPER +BEEPERS +BEEPING +BEEPS +BEER +BEERIER +BEERIEST +BEERINESS +BEERINESSES +BEERS +BEERY +BEES +BEESTINGS +BEESWAX +BEESWAXES +BEESWING +BEESWINGS +BEET +BEETLE +BEETLED +BEETLER +BEETLERS +BEETLES +BEETLING +BEETROOT +BEETROOTS +BEETS +BEEVES +BEEYARD +BEEYARDS +BEEZER +BEEZERS +BEFALL +BEFALLEN +BEFALLING +BEFALLS +BEFELL +BEFINGER +BEFINGERED +BEFINGERING +BEFINGERS +BEFIT +BEFITS +BEFITTED +BEFITTING +BEFITTINGLY +BEFLAG +BEFLAGGED +BEFLAGGING +BEFLAGS +BEFLEA +BEFLEAED +BEFLEAING +BEFLEAS +BEFLECK +BEFLECKED +BEFLECKING +BEFLECKS +BEFLOWER +BEFLOWERED +BEFLOWERING +BEFLOWERS +BEFOG +BEFOGGED +BEFOGGING +BEFOGS +BEFOOL +BEFOOLED +BEFOOLING +BEFOOLS +BEFORE +BEFOREHAND +BEFORETIME +BEFOUL +BEFOULED +BEFOULER +BEFOULERS +BEFOULING +BEFOULS +BEFRET +BEFRETS +BEFRETTED +BEFRETTING +BEFRIEND +BEFRIENDED +BEFRIENDING +BEFRIENDS +BEFRINGE +BEFRINGED +BEFRINGES +BEFRINGING +BEFUDDLE +BEFUDDLED +BEFUDDLEMENT +BEFUDDLEMENTS +BEFUDDLES +BEFUDDLING +BEG +BEGALL +BEGALLED +BEGALLING +BEGALLS +BEGAN +BEGAT +BEGAZE +BEGAZED +BEGAZES +BEGAZING +BEGET +BEGETS +BEGETTER +BEGETTERS +BEGETTING +BEGGAR +BEGGARDOM +BEGGARDOMS +BEGGARED +BEGGARIES +BEGGARING +BEGGARLINESS +BEGGARLINESSES +BEGGARLY +BEGGARS +BEGGARWEED +BEGGARWEEDS +BEGGARY +BEGGED +BEGGING +BEGIN +BEGINNER +BEGINNERS +BEGINNING +BEGINNINGS +BEGINS +BEGIRD +BEGIRDED +BEGIRDING +BEGIRDLE +BEGIRDLED +BEGIRDLES +BEGIRDLING +BEGIRDS +BEGIRT +BEGLAD +BEGLADDED +BEGLADDING +BEGLADS +BEGLAMOR +BEGLAMORED +BEGLAMORING +BEGLAMORS +BEGLAMOUR +BEGLAMOURED +BEGLAMOURING +BEGLAMOURS +BEGLOOM +BEGLOOMED +BEGLOOMING +BEGLOOMS +BEGOGGLED +BEGONE +BEGONIA +BEGONIAS +BEGORAH +BEGORRA +BEGORRAH +BEGOT +BEGOTTEN +BEGRIM +BEGRIME +BEGRIMED +BEGRIMES +BEGRIMING +BEGRIMMED +BEGRIMMING +BEGRIMS +BEGROAN +BEGROANED +BEGROANING +BEGROANS +BEGRUDGE +BEGRUDGED +BEGRUDGER +BEGRUDGERS +BEGRUDGES +BEGRUDGING +BEGRUDGINGLY +BEGS +BEGUILE +BEGUILED +BEGUILEMENT +BEGUILEMENTS +BEGUILER +BEGUILERS +BEGUILES +BEGUILING +BEGUILINGLY +BEGUINE +BEGUINES +BEGULF +BEGULFED +BEGULFING +BEGULFS +BEGUM +BEGUMS +BEGUN +BEHALF +BEHALVES +BEHAVE +BEHAVED +BEHAVER +BEHAVERS +BEHAVES +BEHAVING +BEHAVIOR +BEHAVIORAL +BEHAVIORALLY +BEHAVIORISM +BEHAVIORISMS +BEHAVIORIST +BEHAVIORISTIC +BEHAVIORISTS +BEHAVIORS +BEHAVIOUR +BEHAVIOURS +BEHEAD +BEHEADAL +BEHEADALS +BEHEADED +BEHEADER +BEHEADERS +BEHEADING +BEHEADS +BEHELD +BEHEMOTH +BEHEMOTHS +BEHEST +BEHESTS +BEHIND +BEHINDHAND +BEHINDS +BEHOLD +BEHOLDEN +BEHOLDER +BEHOLDERS +BEHOLDING +BEHOLDS +BEHOOF +BEHOOVE +BEHOOVED +BEHOOVES +BEHOOVING +BEHOVE +BEHOVED +BEHOVES +BEHOVING +BEHOWL +BEHOWLED +BEHOWLING +BEHOWLS +BEIGE +BEIGES +BEIGNE +BEIGNES +BEIGNET +BEIGNETS +BEIGY +BEING +BEINGS +BEJABBERS +BEJABERS +BEJEEBERS +BEJEEZUS +BEJESUS +BEJEWEL +BEJEWELED +BEJEWELING +BEJEWELLED +BEJEWELLING +BEJEWELS +BEJUMBLE +BEJUMBLED +BEJUMBLES +BEJUMBLING +BEKISS +BEKISSED +BEKISSES +BEKISSING +BEKNIGHT +BEKNIGHTED +BEKNIGHTING +BEKNIGHTS +BEKNOT +BEKNOTS +BEKNOTTED +BEKNOTTING +BEL +BELABOR +BELABORED +BELABORING +BELABORS +BELABOUR +BELABOURED +BELABOURING +BELABOURS +BELACED +BELADIED +BELADIES +BELADY +BELADYING +BELATED +BELATEDLY +BELATEDNESS +BELATEDNESSES +BELAUD +BELAUDED +BELAUDING +BELAUDS +BELAY +BELAYED +BELAYER +BELAYERS +BELAYING +BELAYS +BELCH +BELCHED +BELCHER +BELCHERS +BELCHES +BELCHING +BELDAM +BELDAME +BELDAMES +BELDAMS +BELEAGUER +BELEAGUERED +BELEAGUERING +BELEAGUERMENT +BELEAGUERMENTS +BELEAGUERS +BELEAP +BELEAPED +BELEAPING +BELEAPS +BELEAPT +BELEMNITE +BELEMNITES +BELFRIED +BELFRIES +BELFRY +BELGA +BELGAS +BELIE +BELIED +BELIEF +BELIEFS +BELIER +BELIERS +BELIES +BELIEVABILITIES +BELIEVABILITY +BELIEVABLE +BELIEVABLY +BELIEVE +BELIEVED +BELIEVER +BELIEVERS +BELIEVES +BELIEVING +BELIKE +BELIQUOR +BELIQUORED +BELIQUORING +BELIQUORS +BELITTLE +BELITTLED +BELITTLEMENT +BELITTLEMENTS +BELITTLER +BELITTLERS +BELITTLES +BELITTLING +BELIVE +BELL +BELLADONNA +BELLADONNAS +BELLBIRD +BELLBIRDS +BELLBOY +BELLBOYS +BELLE +BELLED +BELLEEK +BELLEEKS +BELLES +BELLETRIST +BELLETRISTIC +BELLETRISTS +BELLFLOWER +BELLFLOWERS +BELLHOP +BELLHOPS +BELLICOSE +BELLICOSITIES +BELLICOSITY +BELLIED +BELLIES +BELLIGERENCE +BELLIGERENCES +BELLIGERENCIES +BELLIGERENCY +BELLIGERENT +BELLIGERENTLY +BELLIGERENTS +BELLING +BELLINGS +BELLMAN +BELLMEN +BELLOW +BELLOWED +BELLOWER +BELLOWERS +BELLOWING +BELLOWS +BELLPULL +BELLPULLS +BELLS +BELLWETHER +BELLWETHERS +BELLWORT +BELLWORTS +BELLY +BELLYACHE +BELLYACHED +BELLYACHER +BELLYACHERS +BELLYACHES +BELLYACHING +BELLYBAND +BELLYBANDS +BELLYFUL +BELLYFULS +BELLYING +BELLYLIKE +BELON +BELONG +BELONGED +BELONGING +BELONGINGNESS +BELONGINGNESSES +BELONGINGS +BELONGS +BELONS +BELOVED +BELOVEDS +BELOW +BELOWDECKS +BELOWGROUND +BELOWS +BELS +BELT +BELTED +BELTER +BELTERS +BELTING +BELTINGS +BELTLESS +BELTLINE +BELTLINES +BELTS +BELTWAY +BELTWAYS +BELUGA +BELUGAS +BELVEDERE +BELVEDERES +BELYING +BEMA +BEMADAM +BEMADAMED +BEMADAMING +BEMADAMS +BEMADDEN +BEMADDENED +BEMADDENING +BEMADDENS +BEMAS +BEMATA +BEMEAN +BEMEANED +BEMEANING +BEMEANS +BEMEDALED +BEMEDALLED +BEMINGLE +BEMINGLED +BEMINGLES +BEMINGLING +BEMIRE +BEMIRED +BEMIRES +BEMIRING +BEMIST +BEMISTED +BEMISTING +BEMISTS +BEMIX +BEMIXED +BEMIXES +BEMIXING +BEMIXT +BEMOAN +BEMOANED +BEMOANING +BEMOANS +BEMOCK +BEMOCKED +BEMOCKING +BEMOCKS +BEMUDDLE +BEMUDDLED +BEMUDDLES +BEMUDDLING +BEMURMUR +BEMURMURED +BEMURMURING +BEMURMURS +BEMUSE +BEMUSED +BEMUSEDLY +BEMUSEMENT +BEMUSEMENTS +BEMUSES +BEMUSING +BEMUZZLE +BEMUZZLED +BEMUZZLES +BEMUZZLING +BEN +BENADRYL +BENADRYLS +BENAME +BENAMED +BENAMES +BENAMING +BENCH +BENCHED +BENCHER +BENCHERS +BENCHES +BENCHING +BENCHLAND +BENCHLANDS +BENCHLESS +BENCHMARK +BENCHMARKED +BENCHMARKING +BENCHMARKINGS +BENCHMARKS +BENCHTOP +BENCHWARMER +BENCHWARMERS +BEND +BENDABLE +BENDAY +BENDAYED +BENDAYING +BENDAYS +BENDED +BENDEE +BENDEES +BENDER +BENDERS +BENDIER +BENDIEST +BENDING +BENDS +BENDWAYS +BENDWISE +BENDY +BENDYS +BENE +BENEATH +BENEDICK +BENEDICKS +BENEDICT +BENEDICTION +BENEDICTIONS +BENEDICTORY +BENEDICTS +BENEFACTION +BENEFACTIONS +BENEFACTOR +BENEFACTORS +BENEFACTRESS +BENEFACTRESSES +BENEFIC +BENEFICE +BENEFICED +BENEFICENCE +BENEFICENCES +BENEFICENT +BENEFICENTLY +BENEFICES +BENEFICIAL +BENEFICIALLY +BENEFICIALNESS +BENEFICIARIES +BENEFICIARY +BENEFICIATE +BENEFICIATED +BENEFICIATES +BENEFICIATING +BENEFICIATION +BENEFICIATIONS +BENEFICING +BENEFIT +BENEFITED +BENEFITER +BENEFITERS +BENEFITING +BENEFITS +BENEFITTED +BENEFITTING +BENEMPT +BENEMPTED +BENES +BENEVOLENCE +BENEVOLENCES +BENEVOLENT +BENEVOLENTLY +BENEVOLENTNESS +BENGALINE +BENGALINES +BENIGHTED +BENIGHTEDLY +BENIGHTEDNESS +BENIGHTEDNESSES +BENIGN +BENIGNANCIES +BENIGNANCY +BENIGNANT +BENIGNANTLY +BENIGNITIES +BENIGNITY +BENIGNLY +BENISON +BENISONS +BENJAMIN +BENJAMINS +BENNE +BENNES +BENNET +BENNETS +BENNI +BENNIES +BENNIS +BENNY +BENOMYL +BENOMYLS +BENS +BENT +BENTGRASS +BENTGRASSES +BENTHAL +BENTHIC +BENTHON +BENTHONIC +BENTHONS +BENTHOS +BENTHOSES +BENTO +BENTONITE +BENTONITES +BENTONITIC +BENTOS +BENTS +BENTWOOD +BENTWOODS +BENUMB +BENUMBED +BENUMBING +BENUMBS +BENZAL +BENZALDEHYDE +BENZALDEHYDES +BENZANTHRACENE +BENZANTHRACENES +BENZENE +BENZENES +BENZENOID +BENZENOIDS +BENZIDIN +BENZIDINE +BENZIDINES +BENZIDINS +BENZIMIDAZOLE +BENZIMIDAZOLES +BENZIN +BENZINE +BENZINES +BENZINS +BENZOAPYRENE +BENZOAPYRENES +BENZOATE +BENZOATES +BENZOCAINE +BENZOCAINES +BENZODIAZEPINE +BENZODIAZEPINES +BENZOFURAN +BENZOFURANS +BENZOIC +BENZOIN +BENZOINS +BENZOL +BENZOLE +BENZOLES +BENZOLS +BENZOPHENONE +BENZOPHENONES +BENZOYL +BENZOYLS +BENZYL +BENZYLIC +BENZYLS +BEPAINT +BEPAINTED +BEPAINTING +BEPAINTS +BEPIMPLE +BEPIMPLED +BEPIMPLES +BEPIMPLING +BEQUEATH +BEQUEATHAL +BEQUEATHALS +BEQUEATHED +BEQUEATHING +BEQUEATHS +BEQUEST +BEQUESTS +BERAKE +BERAKED +BERAKES +BERAKING +BERASCAL +BERASCALED +BERASCALING +BERASCALS +BERATE +BERATED +BERATES +BERATING +BERBERIN +BERBERINE +BERBERINES +BERBERINS +BERBERIS +BERBERISES +BERCEUSE +BERCEUSES +BERDACHE +BERDACHES +BEREAVE +BEREAVED +BEREAVEMENT +BEREAVEMENTS +BEREAVER +BEREAVERS +BEREAVES +BEREAVING +BEREFT +BERET +BERETS +BERETTA +BERETTAS +BERG +BERGAMOT +BERGAMOTS +BERGERE +BERGERES +BERGS +BERHYME +BERHYMED +BERHYMES +BERHYMING +BERIBBONED +BERIBERI +BERIBERIS +BERIMBAU +BERIMBAUS +BERIME +BERIMED +BERIMES +BERIMING +BERINGED +BERK +BERKELIUM +BERKELIUMS +BERKS +BERLIN +BERLINE +BERLINES +BERLINS +BERM +BERME +BERMED +BERMES +BERMING +BERMS +BERMUDAS +BERNICLE +BERNICLES +BEROBED +BEROUGED +BERRETTA +BERRETTAS +BERRIED +BERRIES +BERRY +BERRYING +BERRYLESS +BERRYLIKE +BERSEEM +BERSEEMS +BERSERK +BERSERKER +BERSERKERS +BERSERKLY +BERSERKS +BERTH +BERTHA +BERTHAS +BERTHED +BERTHING +BERTHS +BERYL +BERYLINE +BERYLLIUM +BERYLLIUMS +BERYLS +BES +BESCORCH +BESCORCHED +BESCORCHES +BESCORCHING +BESCOUR +BESCOURED +BESCOURING +BESCOURS +BESCREEN +BESCREENED +BESCREENING +BESCREENS +BESEECH +BESEECHED +BESEECHER +BESEECHERS +BESEECHES +BESEECHING +BESEECHINGLY +BESEEM +BESEEMED +BESEEMING +BESEEMS +BESES +BESET +BESETMENT +BESETMENTS +BESETS +BESETTER +BESETTERS +BESETTING +BESHADOW +BESHADOWED +BESHADOWING +BESHADOWS +BESHAME +BESHAMED +BESHAMES +BESHAMING +BESHIVER +BESHIVERED +BESHIVERING +BESHIVERS +BESHOUT +BESHOUTED +BESHOUTING +BESHOUTS +BESHREW +BESHREWED +BESHREWING +BESHREWS +BESHROUD +BESHROUDED +BESHROUDING +BESHROUDS +BESIDE +BESIDES +BESIEGE +BESIEGED +BESIEGER +BESIEGERS +BESIEGES +BESIEGING +BESLAVED +BESLIME +BESLIMED +BESLIMES +BESLIMING +BESMEAR +BESMEARED +BESMEARER +BESMEARERS +BESMEARING +BESMEARS +BESMILE +BESMILED +BESMILES +BESMILING +BESMIRCH +BESMIRCHED +BESMIRCHES +BESMIRCHING +BESMOKE +BESMOKED +BESMOKES +BESMOKING +BESMOOTH +BESMOOTHED +BESMOOTHING +BESMOOTHS +BESMUDGE +BESMUDGED +BESMUDGES +BESMUDGING +BESMUT +BESMUTS +BESMUTTED +BESMUTTING +BESNOW +BESNOWED +BESNOWING +BESNOWS +BESOM +BESOMS +BESOOTHE +BESOOTHED +BESOOTHES +BESOOTHING +BESOT +BESOTS +BESOTTED +BESOTTING +BESOUGHT +BESPAKE +BESPANGLE +BESPANGLED +BESPANGLES +BESPANGLING +BESPATTER +BESPATTERED +BESPATTERING +BESPATTERS +BESPEAK +BESPEAKING +BESPEAKS +BESPECTACLED +BESPOKE +BESPOKEN +BESPOUSE +BESPOUSED +BESPOUSES +BESPOUSING +BESPREAD +BESPREADING +BESPREADS +BESPRENT +BESPRINKLE +BESPRINKLED +BESPRINKLES +BESPRINKLING +BEST +BESTEAD +BESTEADED +BESTEADING +BESTEADS +BESTED +BESTIAL +BESTIALITIES +BESTIALITY +BESTIALIZE +BESTIALIZED +BESTIALIZES +BESTIALIZING +BESTIALLY +BESTIARIES +BESTIARY +BESTING +BESTIR +BESTIRRED +BESTIRRING +BESTIRS +BESTOW +BESTOWAL +BESTOWALS +BESTOWED +BESTOWER +BESTOWERS +BESTOWING +BESTOWS +BESTREW +BESTREWED +BESTREWING +BESTREWN +BESTREWS +BESTRID +BESTRIDDEN +BESTRIDE +BESTRIDES +BESTRIDING +BESTRODE +BESTROW +BESTROWED +BESTROWING +BESTROWN +BESTROWS +BESTS +BESTSELLERDOM +BESTSELLERDOMS +BESTUD +BESTUDDED +BESTUDDING +BESTUDS +BESWARM +BESWARMED +BESWARMING +BESWARMS +BET +BETA +BETAINE +BETAINES +BETAKE +BETAKEN +BETAKES +BETAKING +BETAS +BETATRON +BETATRONS +BETATTER +BETATTERED +BETATTERING +BETATTERS +BETAXED +BETEL +BETELNUT +BETELNUTS +BETELS +BETH +BETHANK +BETHANKED +BETHANKING +BETHANKS +BETHEL +BETHELS +BETHESDA +BETHESDAS +BETHINK +BETHINKING +BETHINKS +BETHORN +BETHORNED +BETHORNING +BETHORNS +BETHOUGHT +BETHS +BETHUMP +BETHUMPED +BETHUMPING +BETHUMPS +BETIDE +BETIDED +BETIDES +BETIDING +BETIME +BETIMES +BETISE +BETISES +BETOKEN +BETOKENED +BETOKENING +BETOKENS +BETON +BETONIES +BETONS +BETONY +BETOOK +BETRAY +BETRAYAL +BETRAYALS +BETRAYED +BETRAYER +BETRAYERS +BETRAYING +BETRAYS +BETROTH +BETROTHAL +BETROTHALS +BETROTHED +BETROTHEDS +BETROTHING +BETROTHS +BETS +BETTA +BETTAS +BETTED +BETTER +BETTERED +BETTERING +BETTERMENT +BETTERMENTS +BETTERS +BETTING +BETTOR +BETTORS +BETWEEN +BETWEENBRAIN +BETWEENBRAINS +BETWEENNESS +BETWEENNESSES +BETWEENTIMES +BETWEENWHILES +BETWIXT +BEUNCLED +BEVATRON +BEVATRONS +BEVEL +BEVELED +BEVELER +BEVELERS +BEVELING +BEVELLED +BEVELLER +BEVELLERS +BEVELLING +BEVELS +BEVERAGE +BEVERAGES +BEVIES +BEVOMIT +BEVOMITED +BEVOMITING +BEVOMITS +BEVOR +BEVORS +BEVY +BEWAIL +BEWAILED +BEWAILER +BEWAILERS +BEWAILING +BEWAILS +BEWARE +BEWARED +BEWARES +BEWARING +BEWEARIED +BEWEARIES +BEWEARY +BEWEARYING +BEWEEP +BEWEEPING +BEWEEPS +BEWEPT +BEWHISKERED +BEWIG +BEWIGGED +BEWIGGING +BEWIGS +BEWILDER +BEWILDERED +BEWILDEREDLY +BEWILDEREDNESS +BEWILDERING +BEWILDERINGLY +BEWILDERMENT +BEWILDERMENTS +BEWILDERS +BEWINGED +BEWITCH +BEWITCHED +BEWITCHER +BEWITCHERIES +BEWITCHERS +BEWITCHERY +BEWITCHES +BEWITCHING +BEWITCHINGLY +BEWITCHMENT +BEWITCHMENTS +BEWORM +BEWORMED +BEWORMING +BEWORMS +BEWORRIED +BEWORRIES +BEWORRY +BEWORRYING +BEWRAP +BEWRAPPED +BEWRAPPING +BEWRAPS +BEWRAPT +BEWRAY +BEWRAYED +BEWRAYER +BEWRAYERS +BEWRAYING +BEWRAYS +BEY +BEYLIC +BEYLICS +BEYLIK +BEYLIKS +BEYOND +BEYONDS +BEYS +BEZANT +BEZANTS +BEZAZZ +BEZAZZES +BEZEL +BEZELS +BEZIL +BEZILS +BEZIQUE +BEZIQUES +BEZOAR +BEZOARS +BEZZANT +BEZZANTS +BHAKTA +BHAKTAS +BHAKTI +BHAKTIS +BHANG +BHANGRA +BHANGRAS +BHANGS +BHARAL +BHARALS +BHEESTIE +BHEESTIES +BHEESTY +BHISTIE +BHISTIES +BHOOT +BHOOTS +BHUT +BHUTS +BI +BIACETYL +BIACETYLS +BIALI +BIALIES +BIALIS +BIALY +BIALYS +BIANNUAL +BIANNUALLY +BIAS +BIASED +BIASEDLY +BIASES +BIASING +BIASNESS +BIASNESSES +BIASSED +BIASSEDLY +BIASSES +BIASSING +BIATHLETE +BIATHLETES +BIATHLON +BIATHLONS +BIAXAL +BIAXIAL +BIAXIALLY +BIB +BIBASIC +BIBB +BIBBED +BIBBER +BIBBERIES +BIBBERS +BIBBERY +BIBBING +BIBBS +BIBCOCK +BIBCOCKS +BIBELOT +BIBELOTS +BIBLE +BIBLES +BIBLESS +BIBLICAL +BIBLICALLY +BIBLICISM +BIBLICISMS +BIBLICIST +BIBLICISTS +BIBLIKE +BIBLIOGRAPHER +BIBLIOGRAPHERS +BIBLIOGRAPHIC +BIBLIOGRAPHICAL +BIBLIOGRAPHIES +BIBLIOGRAPHY +BIBLIOLATER +BIBLIOLATERS +BIBLIOLATRIES +BIBLIOLATROUS +BIBLIOLATRY +BIBLIOLOGIES +BIBLIOLOGY +BIBLIOMANIA +BIBLIOMANIAC +BIBLIOMANIACAL +BIBLIOMANIACS +BIBLIOMANIAS +BIBLIOPEGIC +BIBLIOPEGIES +BIBLIOPEGIST +BIBLIOPEGISTS +BIBLIOPEGY +BIBLIOPHILE +BIBLIOPHILES +BIBLIOPHILIC +BIBLIOPHILIES +BIBLIOPHILISM +BIBLIOPHILISMS +BIBLIOPHILY +BIBLIOPOLE +BIBLIOPOLES +BIBLIOPOLIST +BIBLIOPOLISTS +BIBLIOTHECA +BIBLIOTHECAE +BIBLIOTHECAL +BIBLIOTHECAS +BIBLIOTHERAPIES +BIBLIOTHERAPY +BIBLIOTIC +BIBLIOTICS +BIBLIOTIST +BIBLIOTISTS +BIBLIST +BIBLISTS +BIBS +BIBULOUS +BIBULOUSLY +BIBULOUSNESS +BIBULOUSNESSES +BICAMERAL +BICAMERALISM +BICAMERALISMS +BICARB +BICARBONATE +BICARBONATES +BICARBS +BICAUDAL +BICE +BICENTENARIES +BICENTENARY +BICENTENNIAL +BICENTENNIALS +BICENTRIC +BICEP +BICEPS +BICEPSES +BICES +BICHROMATE +BICHROMATED +BICHROMATES +BICHROME +BICIPITAL +BICKER +BICKERED +BICKERER +BICKERERS +BICKERING +BICKERS +BICOASTAL +BICOLOR +BICOLORED +BICOLORS +BICOLOUR +BICOLOURS +BICOMPONENT +BICONCAVE +BICONCAVITIES +BICONCAVITY +BICONDITIONAL +BICONDITIONALS +BICONVEX +BICONVEXITIES +BICONVEXITY +BICORN +BICORNE +BICORNES +BICORNS +BICRON +BICRONS +BICULTURAL +BICULTURALISM +BICULTURALISMS +BICUSPID +BICUSPIDS +BICYCLE +BICYCLED +BICYCLER +BICYCLERS +BICYCLES +BICYCLIC +BICYCLING +BICYCLIST +BICYCLISTS +BID +BIDARKA +BIDARKAS +BIDARKEE +BIDARKEES +BIDDABILITIES +BIDDABILITY +BIDDABLE +BIDDABLY +BIDDEN +BIDDER +BIDDERS +BIDDIES +BIDDING +BIDDINGS +BIDDY +BIDE +BIDED +BIDENTAL +BIDENTATE +BIDER +BIDERS +BIDES +BIDET +BIDETS +BIDI +BIDIALECTAL +BIDIALECTALISM +BIDIALECTALISMS +BIDING +BIDIRECTIONAL +BIDIRECTIONALLY +BIDIS +BIDONVILLE +BIDONVILLES +BIDS +BIELD +BIELDED +BIELDING +BIELDS +BIENNALE +BIENNALES +BIENNIA +BIENNIAL +BIENNIALLY +BIENNIALS +BIENNIUM +BIENNIUMS +BIER +BIERS +BIESTINGS +BIFACE +BIFACES +BIFACIAL +BIFACIALLY +BIFARIOUS +BIFF +BIFFED +BIFFIES +BIFFIN +BIFFING +BIFFINS +BIFFS +BIFFY +BIFID +BIFIDITIES +BIFIDITY +BIFIDLY +BIFILAR +BIFILARLY +BIFLAGELLATE +BIFLEX +BIFOCAL +BIFOCALED +BIFOCALS +BIFOLD +BIFOLIATE +BIFORATE +BIFORKED +BIFORM +BIFORMED +BIFUNCTIONAL +BIFURCATE +BIFURCATED +BIFURCATES +BIFURCATING +BIFURCATION +BIFURCATIONS +BIG +BIGAMIES +BIGAMIST +BIGAMISTS +BIGAMOUS +BIGAMOUSLY +BIGAMY +BIGARADE +BIGARADES +BIGAROON +BIGAROONS +BIGARREAU +BIGARREAUS +BIGEMINAL +BIGEMINIES +BIGEMINY +BIGENERIC +BIGEYE +BIGEYES +BIGFEET +BIGFOOT +BIGFOOTED +BIGFOOTING +BIGFOOTS +BIGGER +BIGGEST +BIGGETY +BIGGIE +BIGGIES +BIGGIN +BIGGING +BIGGINGS +BIGGINS +BIGGISH +BIGGITY +BIGGY +BIGHEAD +BIGHEADED +BIGHEADS +BIGHEARTED +BIGHEARTEDLY +BIGHEARTEDNESS +BIGHORN +BIGHORNS +BIGHT +BIGHTED +BIGHTING +BIGHTS +BIGLY +BIGMOUTH +BIGMOUTHED +BIGMOUTHS +BIGNESS +BIGNESSES +BIGNONIA +BIGNONIAS +BIGOS +BIGOSES +BIGOT +BIGOTED +BIGOTEDLY +BIGOTRIES +BIGOTRY +BIGOTS +BIGS +BIGSTICK +BIGTIME +BIGWIG +BIGWIGS +BIHOURLY +BIJECTION +BIJECTIONS +BIJECTIVE +BIJOU +BIJOUS +BIJOUTERIE +BIJOUTERIES +BIJOUX +BIJUGATE +BIJUGOUS +BIKE +BIKED +BIKER +BIKERS +BIKES +BIKEWAY +BIKEWAYS +BIKIE +BIKIES +BIKING +BIKINI +BIKINIED +BIKINIS +BILABIAL +BILABIALS +BILABIATE +BILANDER +BILANDERS +BILATERAL +BILATERALISM +BILATERALISMS +BILATERALLY +BILAYER +BILAYERS +BILBERRIES +BILBERRY +BILBIES +BILBO +BILBOA +BILBOAS +BILBOES +BILBOS +BILBY +BILDUNGSROMAN +BILDUNGSROMANS +BILE +BILECTION +BILECTIONS +BILES +BILEVEL +BILEVELS +BILGE +BILGED +BILGES +BILGEWATER +BILGEWATERS +BILGIER +BILGIEST +BILGING +BILGY +BILHARZIA +BILHARZIAL +BILHARZIAS +BILHARZIASES +BILHARZIASIS +BILIARY +BILINEAR +BILINGUAL +BILINGUALISM +BILINGUALISMS +BILINGUALLY +BILINGUALS +BILIOUS +BILIOUSLY +BILIOUSNESS +BILIOUSNESSES +BILIRUBIN +BILIRUBINS +BILIVERDIN +BILIVERDINS +BILK +BILKED +BILKER +BILKERS +BILKING +BILKS +BILL +BILLABLE +BILLABONG +BILLABONGS +BILLBOARD +BILLBOARDED +BILLBOARDING +BILLBOARDS +BILLBUG +BILLBUGS +BILLED +BILLER +BILLERS +BILLET +BILLETED +BILLETER +BILLETERS +BILLETING +BILLETS +BILLFISH +BILLFISHES +BILLFOLD +BILLFOLDS +BILLHEAD +BILLHEADS +BILLHOOK +BILLHOOKS +BILLIARD +BILLIARDS +BILLIE +BILLIES +BILLING +BILLINGS +BILLINGSGATE +BILLINGSGATES +BILLION +BILLIONAIRE +BILLIONAIRES +BILLIONS +BILLIONTH +BILLIONTHS +BILLON +BILLONS +BILLOW +BILLOWED +BILLOWIER +BILLOWIEST +BILLOWING +BILLOWS +BILLOWY +BILLS +BILLY +BILLYCAN +BILLYCANS +BILLYCOCK +BILLYCOCKS +BILOBATE +BILOBATED +BILOBED +BILOBULAR +BILOCATION +BILOCATIONS +BILOCULAR +BILSTED +BILSTEDS +BILTONG +BILTONGS +BIMA +BIMAH +BIMAHS +BIMANOUS +BIMANUAL +BIMANUALLY +BIMAS +BIMBETTE +BIMBETTES +BIMBO +BIMBOES +BIMBOS +BIMENSAL +BIMESTER +BIMESTERS +BIMETAL +BIMETALLIC +BIMETALLICS +BIMETALLISM +BIMETALLISMS +BIMETALLIST +BIMETALLISTIC +BIMETALLISTS +BIMETALS +BIMETHYL +BIMETHYLS +BIMILLENARIES +BIMILLENARY +BIMILLENNIAL +BIMILLENNIALS +BIMODAL +BIMODALITIES +BIMODALITY +BIMOLECULAR +BIMOLECULARLY +BIMONTHLIES +BIMONTHLY +BIMORPH +BIMORPHEMIC +BIMORPHS +BIN +BINAL +BINARIES +BINARISM +BINARISMS +BINARY +BINATE +BINATELY +BINATIONAL +BINAURAL +BINAURALLY +BIND +BINDABLE +BINDER +BINDERIES +BINDERS +BINDERY +BINDI +BINDING +BINDINGLY +BINDINGNESS +BINDINGNESSES +BINDINGS +BINDIS +BINDLE +BINDLES +BINDS +BINDWEED +BINDWEEDS +BINE +BINER +BINERS +BINES +BINGE +BINGED +BINGEING +BINGER +BINGERS +BINGES +BINGING +BINGO +BINGOES +BINGOS +BINIT +BINITS +BINNACLE +BINNACLES +BINNED +BINNING +BINOCLE +BINOCLES +BINOCS +BINOCULAR +BINOCULARITIES +BINOCULARITY +BINOCULARLY +BINOCULARS +BINOMIAL +BINOMIALLY +BINOMIALS +BINS +BINT +BINTS +BINTURONG +BINTURONGS +BINUCLEAR +BINUCLEATE +BINUCLEATED +BIO +BIOACOUSTICS +BIOACTIVE +BIOACTIVITIES +BIOACTIVITY +BIOASSAY +BIOASSAYED +BIOASSAYING +BIOASSAYS +BIOAVAILABILITY +BIOAVAILABLE +BIOCENOSE +BIOCENOSES +BIOCENOSIS +BIOCHEMIC +BIOCHEMICAL +BIOCHEMICALLY +BIOCHEMICALS +BIOCHEMIST +BIOCHEMISTRIES +BIOCHEMISTRY +BIOCHEMISTS +BIOCHIP +BIOCHIPS +BIOCIDAL +BIOCIDE +BIOCIDES +BIOCLEAN +BIOCLIMATIC +BIOCOENOSES +BIOCOENOSIS +BIOCOMPATIBLE +BIOCONTROL +BIOCONTROLS +BIOCONVERSION +BIOCONVERSIONS +BIOCYCLE +BIOCYCLES +BIODEGRADABLE +BIODEGRADATION +BIODEGRADATIONS +BIODEGRADE +BIODEGRADED +BIODEGRADES +BIODEGRADING +BIODIVERSITIES +BIODIVERSITY +BIODYNAMIC +BIOELECTRIC +BIOELECTRICAL +BIOELECTRICITY +BIOENERGETIC +BIOENERGETICS +BIOENGINEER +BIOENGINEERED +BIOENGINEERING +BIOENGINEERINGS +BIOENGINEERS +BIOETHIC +BIOETHICAL +BIOETHICIST +BIOETHICISTS +BIOETHICS +BIOFEEDBACK +BIOFEEDBACKS +BIOFILM +BIOFILMS +BIOFOULER +BIOFOULERS +BIOFOULING +BIOFOULINGS +BIOFUEL +BIOFUELED +BIOFUELS +BIOG +BIOGAS +BIOGASES +BIOGASSES +BIOGEN +BIOGENESES +BIOGENESIS +BIOGENETIC +BIOGENETICALLY +BIOGENIC +BIOGENIES +BIOGENOUS +BIOGENS +BIOGENY +BIOGEOCHEMICAL +BIOGEOCHEMICALS +BIOGEOCHEMISTRY +BIOGEOGRAPHER +BIOGEOGRAPHERS +BIOGEOGRAPHIC +BIOGEOGRAPHICAL +BIOGEOGRAPHIES +BIOGEOGRAPHY +BIOGRAPHEE +BIOGRAPHEES +BIOGRAPHER +BIOGRAPHERS +BIOGRAPHIC +BIOGRAPHICAL +BIOGRAPHICALLY +BIOGRAPHIES +BIOGRAPHY +BIOGS +BIOHAZARD +BIOHAZARDS +BIOHERM +BIOHERMS +BIOLOGIC +BIOLOGICAL +BIOLOGICALLY +BIOLOGICALS +BIOLOGICS +BIOLOGIES +BIOLOGISM +BIOLOGISMS +BIOLOGIST +BIOLOGISTIC +BIOLOGISTS +BIOLOGY +BIOLUMINESCENCE +BIOLUMINESCENT +BIOLYSES +BIOLYSIS +BIOLYTIC +BIOMARKER +BIOMARKERS +BIOMASS +BIOMASSES +BIOMATERIAL +BIOMATERIALS +BIOMATHEMATICAL +BIOMATHEMATICS +BIOME +BIOMECHANICAL +BIOMECHANICALLY +BIOMECHANICS +BIOMEDICAL +BIOMEDICINE +BIOMEDICINES +BIOMES +BIOMETEOROLOGY +BIOMETER +BIOMETERS +BIOMETRIC +BIOMETRICAL +BIOMETRICIAN +BIOMETRICIANS +BIOMETRICS +BIOMETRIES +BIOMETRY +BIOMIMETIC +BIOMIMETICS +BIOMOLECULAR +BIOMOLECULE +BIOMOLECULES +BIOMORPH +BIOMORPHIC +BIOMORPHS +BIONIC +BIONICS +BIONOMIC +BIONOMICS +BIONOMIES +BIONOMIST +BIONOMISTS +BIONOMY +BIONT +BIONTIC +BIONTS +BIOPHILIA +BIOPHILIAS +BIOPHYSICAL +BIOPHYSICIST +BIOPHYSICISTS +BIOPHYSICS +BIOPIC +BIOPICS +BIOPIRACIES +BIOPIRACY +BIOPIRATE +BIOPIRATES +BIOPLASM +BIOPLASMS +BIOPOLYMER +BIOPOLYMERS +BIOPSIC +BIOPSIED +BIOPSIES +BIOPSY +BIOPSYING +BIOPTIC +BIOREACTOR +BIOREACTORS +BIOREGION +BIOREGIONAL +BIOREGIONALISM +BIOREGIONALISMS +BIOREGIONALIST +BIOREGIONALISTS +BIOREGIONS +BIOREMEDIATION +BIOREMEDIATIONS +BIORHYTHM +BIORHYTHMIC +BIORHYTHMS +BIOS +BIOSAFETIES +BIOSAFETY +BIOSCIENCE +BIOSCIENCES +BIOSCIENTIFIC +BIOSCIENTIST +BIOSCIENTISTS +BIOSCOPE +BIOSCOPES +BIOSCOPIES +BIOSCOPY +BIOSENSOR +BIOSENSORS +BIOSOCIAL +BIOSOCIALLY +BIOSOLID +BIOSOLIDS +BIOSPHERE +BIOSPHERES +BIOSPHERIC +BIOSTATISTICAL +BIOSTATISTICIAN +BIOSTATISTICS +BIOSTRATIGRAPHY +BIOSTROME +BIOSTROMES +BIOSYNTHESES +BIOSYNTHESIS +BIOSYNTHETIC +BIOSYSTEMATIC +BIOSYSTEMATICS +BIOSYSTEMATIST +BIOSYSTEMATISTS +BIOTA +BIOTAS +BIOTECH +BIOTECHNICAL +BIOTECHNOLOGIES +BIOTECHNOLOGIST +BIOTECHNOLOGY +BIOTECHS +BIOTELEMETRIC +BIOTELEMETRIES +BIOTELEMETRY +BIOTERROR +BIOTERRORS +BIOTIC +BIOTICAL +BIOTICS +BIOTIN +BIOTINS +BIOTITE +BIOTITES +BIOTITIC +BIOTOPE +BIOTOPES +BIOTOXIN +BIOTOXINS +BIOTRON +BIOTRONS +BIOTURBED +BIOTYPE +BIOTYPES +BIOTYPIC +BIOVULAR +BIOWEAPON +BIOWEAPONS +BIPACK +BIPACKS +BIPARENTAL +BIPARENTALLY +BIPAROUS +BIPARTED +BIPARTISAN +BIPARTISANISM +BIPARTISANISMS +BIPARTISANSHIP +BIPARTISANSHIPS +BIPARTITE +BIPARTITELY +BIPARTITION +BIPARTITIONS +BIPARTY +BIPED +BIPEDAL +BIPEDALISM +BIPEDALISMS +BIPEDALITIES +BIPEDALITY +BIPEDALLY +BIPEDS +BIPHASIC +BIPHENYL +BIPHENYLS +BIPINNATE +BIPINNATELY +BIPLANE +BIPLANES +BIPOD +BIPODS +BIPOLAR +BIPOLARITIES +BIPOLARITY +BIPOLARIZATION +BIPOLARIZATIONS +BIPOLARIZE +BIPOLARIZED +BIPOLARIZES +BIPOLARIZING +BIPROPELLANT +BIPROPELLANTS +BIPYRAMID +BIPYRAMIDAL +BIPYRAMIDS +BIQUADRATIC +BIQUADRATICS +BIRACIAL +BIRACIALISM +BIRACIALISMS +BIRADIAL +BIRADICAL +BIRADICALS +BIRAMOSE +BIRAMOUS +BIRCH +BIRCHED +BIRCHEN +BIRCHES +BIRCHING +BIRD +BIRDBATH +BIRDBATHS +BIRDBRAIN +BIRDBRAINED +BIRDBRAINS +BIRDCAGE +BIRDCAGES +BIRDCALL +BIRDCALLS +BIRDDOG +BIRDDOGGED +BIRDDOGGING +BIRDDOGS +BIRDED +BIRDER +BIRDERS +BIRDFARM +BIRDFARMS +BIRDFEED +BIRDFEEDS +BIRDHOUSE +BIRDHOUSES +BIRDIE +BIRDIED +BIRDIEING +BIRDIES +BIRDING +BIRDINGS +BIRDLIFE +BIRDLIKE +BIRDLIME +BIRDLIMED +BIRDLIMES +BIRDLIMING +BIRDMAN +BIRDMEN +BIRDS +BIRDSEED +BIRDSEEDS +BIRDSEYE +BIRDSEYES +BIRDSHOT +BIRDSONG +BIRDSONGS +BIRDWATCH +BIRDWATCHED +BIRDWATCHES +BIRDWATCHING +BIREFRINGENCE +BIREFRINGENCES +BIREFRINGENT +BIREME +BIREMES +BIRETTA +BIRETTAS +BIRIANI +BIRIANIS +BIRK +BIRKIE +BIRKIES +BIRKS +BIRL +BIRLE +BIRLED +BIRLER +BIRLERS +BIRLES +BIRLING +BIRLINGS +BIRLS +BIRO +BIROS +BIRR +BIRRED +BIRRETTA +BIRRETTAS +BIRRING +BIRROTCH +BIRRS +BIRSE +BIRSES +BIRTH +BIRTHDAY +BIRTHDAYS +BIRTHED +BIRTHING +BIRTHINGS +BIRTHMARK +BIRTHMARKS +BIRTHNAME +BIRTHNAMES +BIRTHPLACE +BIRTHPLACES +BIRTHRATE +BIRTHRATES +BIRTHRIGHT +BIRTHRIGHTS +BIRTHROOT +BIRTHROOTS +BIRTHS +BIRTHSTONE +BIRTHSTONES +BIRTHWORT +BIRTHWORTS +BIRYANI +BIRYANIS +BIS +BISCOTTI +BISCOTTO +BISCUIT +BISCUITS +BISCUITY +BISE +BISECT +BISECTED +BISECTING +BISECTION +BISECTIONAL +BISECTIONALLY +BISECTIONS +BISECTOR +BISECTORS +BISECTRICES +BISECTRIX +BISECTS +BISERIATE +BISERRATE +BISES +BISEXUAL +BISEXUALITIES +BISEXUALITY +BISEXUALLY +BISEXUALS +BISHOP +BISHOPED +BISHOPING +BISHOPRIC +BISHOPRICS +BISHOPS +BISK +BISKS +BISMUTH +BISMUTHAL +BISMUTHIC +BISMUTHS +BISNAGA +BISNAGAS +BISON +BISONS +BISONTINE +BISQUE +BISQUES +BISTATE +BISTER +BISTERED +BISTERS +BISTORT +BISTORTS +BISTOURIES +BISTOURY +BISTRE +BISTRED +BISTRES +BISTRO +BISTROIC +BISTROS +BISULCATE +BISULFATE +BISULFATES +BISULFIDE +BISULFIDES +BISULFITE +BISULFITES +BIT +BITABLE +BITARTRATE +BITARTRATES +BITCH +BITCHED +BITCHEN +BITCHERIES +BITCHERY +BITCHES +BITCHIER +BITCHIEST +BITCHILY +BITCHINESS +BITCHINESSES +BITCHING +BITCHY +BITE +BITEABLE +BITEPLATE +BITEPLATES +BITER +BITERS +BITES +BITEWING +BITEWINGS +BITING +BITINGLY +BITMAP +BITMAPPED +BITMAPS +BITS +BITSIER +BITSIEST +BITSTOCK +BITSTOCKS +BITSTREAM +BITSTREAMS +BITSY +BITT +BITTED +BITTEN +BITTER +BITTERBRUSH +BITTERBRUSHES +BITTERED +BITTERER +BITTEREST +BITTERING +BITTERISH +BITTERLY +BITTERN +BITTERNESS +BITTERNESSES +BITTERNS +BITTERNUT +BITTERNUTS +BITTERROOT +BITTERROOTS +BITTERS +BITTERSWEET +BITTERSWEETLY +BITTERSWEETNESS +BITTERSWEETS +BITTERWEED +BITTERWEEDS +BITTIER +BITTIEST +BITTINESS +BITTINESSES +BITTING +BITTINGS +BITTOCK +BITTOCKS +BITTS +BITTY +BITUMEN +BITUMENS +BITUMINIZATION +BITUMINIZATIONS +BITUMINIZE +BITUMINIZED +BITUMINIZES +BITUMINIZING +BITUMINOUS +BIUNIQUE +BIUNIQUENESS +BIUNIQUENESSES +BIVALENCE +BIVALENCES +BIVALENCIES +BIVALENCY +BIVALENT +BIVALENTS +BIVALVE +BIVALVED +BIVALVES +BIVARIATE +BIVINYL +BIVINYLS +BIVOUAC +BIVOUACKED +BIVOUACKING +BIVOUACKS +BIVOUACS +BIWEEKLIES +BIWEEKLY +BIYEARLY +BIZ +BIZARRE +BIZARRELY +BIZARRENESS +BIZARRENESSES +BIZARRERIE +BIZARRERIES +BIZARRES +BIZARRO +BIZARROS +BIZE +BIZES +BIZNAGA +BIZNAGAS +BIZONAL +BIZONE +BIZONES +BIZZES +BLAB +BLABBED +BLABBER +BLABBERED +BLABBERING +BLABBERMOUTH +BLABBERMOUTHS +BLABBERS +BLABBING +BLABBY +BLABS +BLACK +BLACKAMOOR +BLACKAMOORS +BLACKBALL +BLACKBALLED +BLACKBALLING +BLACKBALLS +BLACKBERRIES +BLACKBERRY +BLACKBIRD +BLACKBIRDED +BLACKBIRDER +BLACKBIRDERS +BLACKBIRDING +BLACKBIRDS +BLACKBOARD +BLACKBOARDS +BLACKBODIES +BLACKBODY +BLACKBOY +BLACKBOYS +BLACKBUCK +BLACKBUCKS +BLACKCAP +BLACKCAPS +BLACKCOCK +BLACKCOCKS +BLACKDAMP +BLACKDAMPS +BLACKED +BLACKEN +BLACKENED +BLACKENER +BLACKENERS +BLACKENING +BLACKENINGS +BLACKENS +BLACKER +BLACKEST +BLACKFACE +BLACKFACES +BLACKFIN +BLACKFINS +BLACKFISH +BLACKFISHES +BLACKFLIES +BLACKFLY +BLACKGUARD +BLACKGUARDED +BLACKGUARDING +BLACKGUARDISM +BLACKGUARDISMS +BLACKGUARDLY +BLACKGUARDS +BLACKGUM +BLACKGUMS +BLACKHANDER +BLACKHANDERS +BLACKHEAD +BLACKHEADS +BLACKHEART +BLACKHEARTS +BLACKING +BLACKINGS +BLACKISH +BLACKJACK +BLACKJACKED +BLACKJACKING +BLACKJACKS +BLACKLAND +BLACKLANDS +BLACKLEAD +BLACKLEADS +BLACKLEG +BLACKLEGS +BLACKLIST +BLACKLISTED +BLACKLISTER +BLACKLISTERS +BLACKLISTING +BLACKLISTS +BLACKLY +BLACKMAIL +BLACKMAILED +BLACKMAILER +BLACKMAILERS +BLACKMAILING +BLACKMAILS +BLACKNESS +BLACKNESSES +BLACKOUT +BLACKOUTS +BLACKPOLL +BLACKPOLLS +BLACKS +BLACKSMITH +BLACKSMITHING +BLACKSMITHINGS +BLACKSMITHS +BLACKSNAKE +BLACKSNAKES +BLACKTAIL +BLACKTAILS +BLACKTHORN +BLACKTHORNS +BLACKTOP +BLACKTOPPED +BLACKTOPPING +BLACKTOPS +BLACKWATER +BLACKWATERS +BLACKWOOD +BLACKWOODS +BLADDER +BLADDERLIKE +BLADDERNUT +BLADDERNUTS +BLADDERS +BLADDERWORT +BLADDERWORTS +BLADDERY +BLADE +BLADED +BLADELESS +BLADELIKE +BLADER +BLADERS +BLADES +BLADING +BLADINGS +BLAE +BLAEBERRIES +BLAEBERRY +BLAFF +BLAFFS +BLAGGING +BLAGGINGS +BLAH +BLAHS +BLAIN +BLAINS +BLAM +BLAMABLE +BLAMABLY +BLAME +BLAMEABLE +BLAMED +BLAMEFUL +BLAMEFULLY +BLAMELESS +BLAMELESSLY +BLAMELESSNESS +BLAMELESSNESSES +BLAMER +BLAMERS +BLAMES +BLAMEWORTHINESS +BLAMEWORTHY +BLAMING +BLAMS +BLANCH +BLANCHED +BLANCHER +BLANCHERS +BLANCHES +BLANCHING +BLANCMANGE +BLANCMANGES +BLAND +BLANDER +BLANDEST +BLANDISH +BLANDISHED +BLANDISHER +BLANDISHERS +BLANDISHES +BLANDISHING +BLANDISHMENT +BLANDISHMENTS +BLANDLY +BLANDNESS +BLANDNESSES +BLANK +BLANKED +BLANKER +BLANKEST +BLANKET +BLANKETED +BLANKETFLOWER +BLANKETFLOWERS +BLANKETING +BLANKETLIKE +BLANKETS +BLANKING +BLANKLY +BLANKNESS +BLANKNESSES +BLANKS +BLANQUETTE +BLANQUETTES +BLARE +BLARED +BLARES +BLARING +BLARNEY +BLARNEYED +BLARNEYING +BLARNEYS +BLASE +BLASPHEME +BLASPHEMED +BLASPHEMER +BLASPHEMERS +BLASPHEMES +BLASPHEMIES +BLASPHEMING +BLASPHEMOUS +BLASPHEMOUSLY +BLASPHEMOUSNESS +BLASPHEMY +BLAST +BLASTED +BLASTEMA +BLASTEMAL +BLASTEMAS +BLASTEMATA +BLASTEMATIC +BLASTEMIC +BLASTER +BLASTERS +BLASTIE +BLASTIER +BLASTIES +BLASTIEST +BLASTING +BLASTINGS +BLASTMENT +BLASTMENTS +BLASTOCOEL +BLASTOCOELE +BLASTOCOELES +BLASTOCOELIC +BLASTOCOELS +BLASTOCYST +BLASTOCYSTS +BLASTODERM +BLASTODERMS +BLASTODISC +BLASTODISCS +BLASTOFF +BLASTOFFS +BLASTOMA +BLASTOMAS +BLASTOMATA +BLASTOMERE +BLASTOMERES +BLASTOMYCOSES +BLASTOMYCOSIS +BLASTOPORE +BLASTOPORES +BLASTOPORIC +BLASTOSPORE +BLASTOSPORES +BLASTS +BLASTULA +BLASTULAE +BLASTULAR +BLASTULAS +BLASTULATION +BLASTULATIONS +BLASTY +BLAT +BLATANCIES +BLATANCY +BLATANT +BLATANTLY +BLATE +BLATHER +BLATHERED +BLATHERER +BLATHERERS +BLATHERING +BLATHERS +BLATHERSKITE +BLATHERSKITES +BLATS +BLATTED +BLATTER +BLATTERED +BLATTERING +BLATTERS +BLATTING +BLAUBOK +BLAUBOKS +BLAW +BLAWED +BLAWING +BLAWN +BLAWS +BLAXPLOITATION +BLAXPLOITATIONS +BLAZE +BLAZED +BLAZER +BLAZERED +BLAZERS +BLAZES +BLAZING +BLAZINGLY +BLAZON +BLAZONED +BLAZONER +BLAZONERS +BLAZONING +BLAZONINGS +BLAZONRIES +BLAZONRY +BLAZONS +BLEACH +BLEACHABLE +BLEACHED +BLEACHER +BLEACHERITE +BLEACHERITES +BLEACHERS +BLEACHES +BLEACHING +BLEAK +BLEAKER +BLEAKEST +BLEAKISH +BLEAKLY +BLEAKNESS +BLEAKNESSES +BLEAKS +BLEAR +BLEARED +BLEAREYED +BLEARIER +BLEARIEST +BLEARILY +BLEARINESS +BLEARINESSES +BLEARING +BLEARS +BLEARY +BLEAT +BLEATED +BLEATER +BLEATERS +BLEATING +BLEATS +BLEB +BLEBBING +BLEBBINGS +BLEBBY +BLEBS +BLED +BLEED +BLEEDER +BLEEDERS +BLEEDING +BLEEDINGS +BLEEDS +BLEEP +BLEEPED +BLEEPER +BLEEPERS +BLEEPING +BLEEPS +BLELLUM +BLELLUMS +BLEMISH +BLEMISHED +BLEMISHER +BLEMISHERS +BLEMISHES +BLEMISHING +BLENCH +BLENCHED +BLENCHER +BLENCHERS +BLENCHES +BLENCHING +BLEND +BLENDE +BLENDED +BLENDER +BLENDERS +BLENDES +BLENDING +BLENDS +BLENNIES +BLENNIOID +BLENNY +BLENT +BLEPHAROPLAST +BLEPHAROPLASTS +BLEPHAROPLASTY +BLEPHAROSPASM +BLEPHAROSPASMS +BLESBOK +BLESBOKS +BLESBUCK +BLESBUCKS +BLESS +BLESSED +BLESSEDER +BLESSEDEST +BLESSEDLY +BLESSEDNESS +BLESSEDNESSES +BLESSER +BLESSERS +BLESSES +BLESSING +BLESSINGS +BLEST +BLET +BLETHER +BLETHERED +BLETHERING +BLETHERS +BLETS +BLEW +BLIGHT +BLIGHTED +BLIGHTER +BLIGHTERS +BLIGHTIES +BLIGHTING +BLIGHTS +BLIGHTY +BLIMEY +BLIMP +BLIMPISH +BLIMPISHLY +BLIMPISHNESS +BLIMPISHNESSES +BLIMPS +BLIMY +BLIN +BLIND +BLINDAGE +BLINDAGES +BLINDED +BLINDER +BLINDERS +BLINDEST +BLINDFISH +BLINDFISHES +BLINDFOLD +BLINDFOLDED +BLINDFOLDING +BLINDFOLDS +BLINDGUT +BLINDGUTS +BLINDING +BLINDINGLY +BLINDLY +BLINDNESS +BLINDNESSES +BLINDS +BLINDSIDE +BLINDSIDED +BLINDSIDES +BLINDSIDING +BLINDWORM +BLINDWORMS +BLINI +BLINIS +BLINK +BLINKARD +BLINKARDS +BLINKED +BLINKER +BLINKERED +BLINKERING +BLINKERS +BLINKING +BLINKS +BLINTZ +BLINTZE +BLINTZES +BLIP +BLIPPED +BLIPPING +BLIPS +BLISS +BLISSED +BLISSES +BLISSFUL +BLISSFULLY +BLISSFULNESS +BLISSFULNESSES +BLISSING +BLISSLESS +BLISTER +BLISTERED +BLISTERING +BLISTERINGLY +BLISTERS +BLISTERY +BLITE +BLITES +BLITHE +BLITHEFUL +BLITHELY +BLITHER +BLITHERED +BLITHERING +BLITHERS +BLITHESOME +BLITHESOMELY +BLITHEST +BLITZ +BLITZED +BLITZER +BLITZERS +BLITZES +BLITZING +BLITZKRIEG +BLITZKRIEGS +BLIZZARD +BLIZZARDLY +BLIZZARDS +BLIZZARDY +BLOAT +BLOATED +BLOATER +BLOATERS +BLOATING +BLOATS +BLOATWARE +BLOATWARES +BLOB +BLOBBED +BLOBBING +BLOBS +BLOC +BLOCK +BLOCKABLE +BLOCKADE +BLOCKADED +BLOCKADER +BLOCKADERS +BLOCKADES +BLOCKADING +BLOCKAGE +BLOCKAGES +BLOCKBUST +BLOCKBUSTED +BLOCKBUSTER +BLOCKBUSTERS +BLOCKBUSTING +BLOCKBUSTINGS +BLOCKBUSTS +BLOCKED +BLOCKER +BLOCKERS +BLOCKHEAD +BLOCKHEADS +BLOCKHOUSE +BLOCKHOUSES +BLOCKIER +BLOCKIEST +BLOCKING +BLOCKISH +BLOCKS +BLOCKY +BLOCS +BLOG +BLOGGER +BLOGGERS +BLOGGING +BLOGGINGS +BLOGS +BLOKE +BLOKES +BLOND +BLONDE +BLONDER +BLONDES +BLONDEST +BLONDINE +BLONDINED +BLONDINES +BLONDINING +BLONDISH +BLONDNESS +BLONDNESSES +BLONDS +BLOOD +BLOODBATH +BLOODBATHS +BLOODCURDLING +BLOODED +BLOODFIN +BLOODFINS +BLOODGUILT +BLOODGUILTINESS +BLOODGUILTS +BLOODGUILTY +BLOODHOUND +BLOODHOUNDS +BLOODIED +BLOODIER +BLOODIES +BLOODIEST +BLOODILY +BLOODINESS +BLOODINESSES +BLOODING +BLOODINGS +BLOODLESS +BLOODLESSLY +BLOODLESSNESS +BLOODLESSNESSES +BLOODLETTING +BLOODLETTINGS +BLOODLIKE +BLOODLINE +BLOODLINES +BLOODLUST +BLOODLUSTS +BLOODMOBILE +BLOODMOBILES +BLOODRED +BLOODROOT +BLOODROOTS +BLOODS +BLOODSHED +BLOODSHEDS +BLOODSHOT +BLOODSTAIN +BLOODSTAINED +BLOODSTAINS +BLOODSTOCK +BLOODSTOCKS +BLOODSTONE +BLOODSTONES +BLOODSTREAM +BLOODSTREAMS +BLOODSUCKER +BLOODSUCKERS +BLOODSUCKING +BLOODTHIRSTILY +BLOODTHIRSTY +BLOODWORM +BLOODWORMS +BLOODWORT +BLOODWORTS +BLOODY +BLOODYING +BLOOEY +BLOOIE +BLOOM +BLOOMED +BLOOMER +BLOOMERIES +BLOOMERS +BLOOMERY +BLOOMIER +BLOOMIEST +BLOOMING +BLOOMLESS +BLOOMS +BLOOMY +BLOOP +BLOOPED +BLOOPER +BLOOPERS +BLOOPING +BLOOPS +BLOSSOM +BLOSSOMED +BLOSSOMING +BLOSSOMS +BLOSSOMY +BLOT +BLOTCH +BLOTCHED +BLOTCHES +BLOTCHIER +BLOTCHIEST +BLOTCHILY +BLOTCHING +BLOTCHY +BLOTLESS +BLOTS +BLOTTED +BLOTTER +BLOTTERS +BLOTTIER +BLOTTIEST +BLOTTING +BLOTTO +BLOTTY +BLOUSE +BLOUSED +BLOUSES +BLOUSIER +BLOUSIEST +BLOUSILY +BLOUSING +BLOUSON +BLOUSONS +BLOUSY +BLOVIATE +BLOVIATED +BLOVIATES +BLOVIATING +BLOVIATION +BLOVIATIONS +BLOW +BLOWBACK +BLOWBACKS +BLOWBALL +BLOWBALLS +BLOWBY +BLOWBYS +BLOWDOWN +BLOWDOWNS +BLOWED +BLOWER +BLOWERS +BLOWFISH +BLOWFISHES +BLOWFLIES +BLOWFLY +BLOWGUN +BLOWGUNS +BLOWHARD +BLOWHARDS +BLOWHOLE +BLOWHOLES +BLOWIER +BLOWIEST +BLOWINESS +BLOWINESSES +BLOWING +BLOWJOB +BLOWJOBS +BLOWN +BLOWOFF +BLOWOFFS +BLOWOUT +BLOWOUTS +BLOWPIPE +BLOWPIPES +BLOWS +BLOWSED +BLOWSIER +BLOWSIEST +BLOWSILY +BLOWSY +BLOWTORCH +BLOWTORCHED +BLOWTORCHES +BLOWTORCHING +BLOWTUBE +BLOWTUBES +BLOWUP +BLOWUPS +BLOWY +BLOWZED +BLOWZIER +BLOWZIEST +BLOWZILY +BLOWZY +BLUB +BLUBBED +BLUBBER +BLUBBERED +BLUBBERER +BLUBBERERS +BLUBBERING +BLUBBERS +BLUBBERY +BLUBBING +BLUBS +BLUCHER +BLUCHERS +BLUDGE +BLUDGED +BLUDGEON +BLUDGEONED +BLUDGEONING +BLUDGEONS +BLUDGER +BLUDGERS +BLUDGES +BLUDGING +BLUE +BLUEBALL +BLUEBALLS +BLUEBEARD +BLUEBEARDS +BLUEBEAT +BLUEBEATS +BLUEBELL +BLUEBELLS +BLUEBERRIES +BLUEBERRY +BLUEBILL +BLUEBILLS +BLUEBIRD +BLUEBIRDS +BLUEBLOOD +BLUEBLOODS +BLUEBONNET +BLUEBONNETS +BLUEBOOK +BLUEBOOKS +BLUEBOTTLE +BLUEBOTTLES +BLUECAP +BLUECAPS +BLUECOAT +BLUECOATS +BLUECURLS +BLUED +BLUEFIN +BLUEFINS +BLUEFISH +BLUEFISHES +BLUEGILL +BLUEGILLS +BLUEGRASS +BLUEGRASSES +BLUEGUM +BLUEGUMS +BLUEHEAD +BLUEHEADS +BLUEING +BLUEINGS +BLUEISH +BLUEJACK +BLUEJACKET +BLUEJACKETS +BLUEJACKS +BLUEJAY +BLUEJAYS +BLUEJEANS +BLUELINE +BLUELINER +BLUELINERS +BLUELINES +BLUELY +BLUENESS +BLUENESSES +BLUENOSE +BLUENOSED +BLUENOSES +BLUEPOINT +BLUEPOINTS +BLUEPRINT +BLUEPRINTED +BLUEPRINTING +BLUEPRINTS +BLUER +BLUES +BLUESHIFT +BLUESHIFTED +BLUESHIFTS +BLUESIER +BLUESIEST +BLUESMAN +BLUESMEN +BLUEST +BLUESTEM +BLUESTEMS +BLUESTOCKING +BLUESTOCKINGS +BLUESTONE +BLUESTONES +BLUESY +BLUET +BLUETICK +BLUETICKS +BLUETONGUE +BLUETONGUES +BLUETS +BLUEWEED +BLUEWEEDS +BLUEWOOD +BLUEWOODS +BLUEY +BLUEYS +BLUFF +BLUFFABLE +BLUFFED +BLUFFER +BLUFFERS +BLUFFEST +BLUFFING +BLUFFLY +BLUFFNESS +BLUFFNESSES +BLUFFS +BLUING +BLUINGS +BLUISH +BLUISHNESS +BLUISHNESSES +BLUME +BLUMED +BLUMES +BLUMING +BLUNDER +BLUNDERBUSS +BLUNDERBUSSES +BLUNDERED +BLUNDERER +BLUNDERERS +BLUNDERING +BLUNDERINGLY +BLUNDERS +BLUNGE +BLUNGED +BLUNGER +BLUNGERS +BLUNGES +BLUNGING +BLUNT +BLUNTED +BLUNTER +BLUNTEST +BLUNTING +BLUNTLY +BLUNTNESS +BLUNTNESSES +BLUNTS +BLUR +BLURB +BLURBED +BLURBING +BLURBIST +BLURBISTS +BLURBS +BLURRED +BLURREDLY +BLURRIER +BLURRIEST +BLURRILY +BLURRINESS +BLURRINESSES +BLURRING +BLURRINGLY +BLURRY +BLURS +BLURT +BLURTED +BLURTER +BLURTERS +BLURTING +BLURTS +BLUSH +BLUSHED +BLUSHER +BLUSHERS +BLUSHES +BLUSHFUL +BLUSHING +BLUSHINGLY +BLUSTER +BLUSTERED +BLUSTERER +BLUSTERERS +BLUSTERING +BLUSTERINGLY +BLUSTEROUS +BLUSTERS +BLUSTERY +BLYPE +BLYPES +BO +BOA +BOAR +BOARD +BOARDABLE +BOARDED +BOARDER +BOARDERS +BOARDING +BOARDINGHOUSE +BOARDINGHOUSES +BOARDINGS +BOARDLIKE +BOARDMAN +BOARDMEN +BOARDROOM +BOARDROOMS +BOARDS +BOARDSAILING +BOARDSAILINGS +BOARDSAILOR +BOARDSAILORS +BOARDWALK +BOARDWALKS +BOARFISH +BOARFISHES +BOARHOUND +BOARHOUNDS +BOARISH +BOARS +BOART +BOARTS +BOAS +BOAST +BOASTED +BOASTER +BOASTERS +BOASTFUL +BOASTFULLY +BOASTFULNESS +BOASTFULNESSES +BOASTING +BOASTS +BOAT +BOATABLE +BOATBILL +BOATBILLS +BOATBUILDER +BOATBUILDERS +BOATBUILDING +BOATBUILDINGS +BOATED +BOATEL +BOATELS +BOATER +BOATERS +BOATFUL +BOATFULS +BOATHOOK +BOATHOOKS +BOATHOUSE +BOATHOUSES +BOATING +BOATINGS +BOATLIFT +BOATLIFTED +BOATLIFTING +BOATLIFTS +BOATLIKE +BOATLOAD +BOATLOADS +BOATMAN +BOATMEN +BOATNECK +BOATNECKS +BOATS +BOATSMAN +BOATSMEN +BOATSWAIN +BOATSWAINS +BOATYARD +BOATYARDS +BOB +BOBBED +BOBBER +BOBBERIES +BOBBERS +BOBBERY +BOBBIES +BOBBIN +BOBBINET +BOBBINETS +BOBBING +BOBBINS +BOBBLE +BOBBLED +BOBBLES +BOBBLING +BOBBY +BOBBYSOX +BOBCAT +BOBCATS +BOBECHE +BOBECHES +BOBOLINK +BOBOLINKS +BOBS +BOBSLED +BOBSLEDDED +BOBSLEDDER +BOBSLEDDERS +BOBSLEDDING +BOBSLEDDINGS +BOBSLEDS +BOBSLEIGH +BOBSLEIGHS +BOBSTAY +BOBSTAYS +BOBTAIL +BOBTAILED +BOBTAILING +BOBTAILS +BOBWHITE +BOBWHITES +BOCACCIO +BOCACCIOS +BOCCE +BOCCES +BOCCI +BOCCIA +BOCCIAS +BOCCIE +BOCCIES +BOCCIS +BOCHE +BOCHES +BOCK +BOCKS +BOD +BODACIOUS +BODACIOUSLY +BODDHISATTVA +BODDHISATTVAS +BODE +BODED +BODEGA +BODEGAS +BODEMENT +BODEMENTS +BODES +BODHISATTVA +BODHISATTVAS +BODHRAN +BODHRANS +BODICE +BODICES +BODIED +BODIES +BODILESS +BODILY +BODING +BODINGLY +BODINGS +BODKIN +BODKINS +BODS +BODY +BODYBOARD +BODYBOARDED +BODYBOARDING +BODYBOARDS +BODYBUILDER +BODYBUILDERS +BODYBUILDING +BODYBUILDINGS +BODYCHECK +BODYCHECKED +BODYCHECKING +BODYCHECKS +BODYGUARD +BODYGUARDED +BODYGUARDING +BODYGUARDS +BODYING +BODYSUIT +BODYSUITS +BODYSURF +BODYSURFED +BODYSURFER +BODYSURFERS +BODYSURFING +BODYSURFS +BODYWORK +BODYWORKS +BOEHMITE +BOEHMITES +BOFF +BOFFED +BOFFIN +BOFFING +BOFFINS +BOFFO +BOFFOLA +BOFFOLAS +BOFFOS +BOFFS +BOG +BOGAN +BOGANS +BOGART +BOGARTED +BOGARTING +BOGARTS +BOGBEAN +BOGBEANS +BOGEY +BOGEYED +BOGEYING +BOGEYMAN +BOGEYMEN +BOGEYS +BOGGED +BOGGIER +BOGGIEST +BOGGINESS +BOGGINESSES +BOGGING +BOGGISH +BOGGLE +BOGGLED +BOGGLER +BOGGLERS +BOGGLES +BOGGLING +BOGGY +BOGIE +BOGIES +BOGLE +BOGLES +BOGS +BOGUS +BOGUSLY +BOGUSNESS +BOGUSNESSES +BOGWOOD +BOGWOODS +BOGY +BOGYISM +BOGYISMS +BOGYMAN +BOGYMEN +BOHEA +BOHEAS +BOHEMIA +BOHEMIAN +BOHEMIANISM +BOHEMIANISMS +BOHEMIANS +BOHEMIAS +BOHO +BOHOS +BOHRIUM +BOHRIUMS +BOHUNK +BOHUNKS +BOIL +BOILABLE +BOILED +BOILER +BOILERMAKER +BOILERMAKERS +BOILERPLATE +BOILERPLATES +BOILERS +BOILERSUIT +BOILERSUITS +BOILING +BOILINGLY +BOILOFF +BOILOFFS +BOILOVER +BOILOVERS +BOILS +BOING +BOINGS +BOINK +BOINKED +BOINKING +BOINKS +BOISERIE +BOISERIES +BOISTEROUS +BOISTEROUSLY +BOISTEROUSNESS +BOITE +BOITES +BOLA +BOLAR +BOLAS +BOLASES +BOLD +BOLDER +BOLDEST +BOLDFACE +BOLDFACED +BOLDFACES +BOLDFACING +BOLDLY +BOLDNESS +BOLDNESSES +BOLDS +BOLE +BOLECTION +BOLECTIONS +BOLERO +BOLEROS +BOLES +BOLETE +BOLETES +BOLETI +BOLETUS +BOLETUSES +BOLIDE +BOLIDES +BOLIVAR +BOLIVARES +BOLIVARS +BOLIVIA +BOLIVIANO +BOLIVIANOS +BOLIVIAS +BOLL +BOLLARD +BOLLARDS +BOLLED +BOLLING +BOLLIX +BOLLIXED +BOLLIXES +BOLLIXING +BOLLOCKS +BOLLOX +BOLLOXED +BOLLOXES +BOLLOXING +BOLLS +BOLLWORM +BOLLWORMS +BOLO +BOLOGNA +BOLOGNAS +BOLOGRAPH +BOLOGRAPHS +BOLOMETER +BOLOMETERS +BOLOMETRIC +BOLOMETRICALLY +BOLONEY +BOLONEYS +BOLOS +BOLSHEVIK +BOLSHEVIKI +BOLSHEVIKS +BOLSHEVISM +BOLSHEVISMS +BOLSHEVIZE +BOLSHEVIZED +BOLSHEVIZES +BOLSHEVIZING +BOLSHIE +BOLSHIES +BOLSHY +BOLSON +BOLSONS +BOLSTER +BOLSTERED +BOLSTERER +BOLSTERERS +BOLSTERING +BOLSTERS +BOLT +BOLTED +BOLTER +BOLTERS +BOLTHEAD +BOLTHEADS +BOLTHOLE +BOLTHOLES +BOLTING +BOLTLESS +BOLTLIKE +BOLTONIA +BOLTONIAS +BOLTROPE +BOLTROPES +BOLTS +BOLUS +BOLUSES +BOMB +BOMBABLE +BOMBARD +BOMBARDED +BOMBARDER +BOMBARDERS +BOMBARDIER +BOMBARDIERS +BOMBARDING +BOMBARDMENT +BOMBARDMENTS +BOMBARDON +BOMBARDONS +BOMBARDS +BOMBAST +BOMBASTER +BOMBASTERS +BOMBASTIC +BOMBASTICALLY +BOMBASTS +BOMBAX +BOMBAZINE +BOMBAZINES +BOMBE +BOMBED +BOMBER +BOMBERS +BOMBES +BOMBESIN +BOMBESINS +BOMBINATE +BOMBINATED +BOMBINATES +BOMBINATING +BOMBINATION +BOMBINATIONS +BOMBING +BOMBINGS +BOMBLET +BOMBLETS +BOMBLOAD +BOMBLOADS +BOMBPROOF +BOMBPROOFED +BOMBPROOFING +BOMBPROOFS +BOMBS +BOMBSHELL +BOMBSHELLS +BOMBSIGHT +BOMBSIGHTS +BOMBYCID +BOMBYCIDS +BOMBYCOID +BOMBYX +BOMBYXES +BONACI +BONACIS +BONANZA +BONANZAS +BONBON +BONBONS +BOND +BONDABLE +BONDAGE +BONDAGES +BONDED +BONDER +BONDERS +BONDHOLDER +BONDHOLDERS +BONDING +BONDINGS +BONDLESS +BONDMAID +BONDMAIDS +BONDMAN +BONDMEN +BONDS +BONDSMAN +BONDSMEN +BONDSTONE +BONDSTONES +BONDUC +BONDUCS +BONDWOMAN +BONDWOMEN +BONE +BONEBLACK +BONEBLACKS +BONED +BONEFISH +BONEFISHES +BONEFISHING +BONEFISHINGS +BONEHEAD +BONEHEADED +BONEHEADEDNESS +BONEHEADS +BONELESS +BONEMEAL +BONEMEALS +BONER +BONERS +BONES +BONESET +BONESETS +BONESETTER +BONESETTERS +BONEY +BONEYARD +BONEYARDS +BONEYER +BONEYEST +BONFIRE +BONFIRES +BONG +BONGED +BONGING +BONGO +BONGOES +BONGOIST +BONGOISTS +BONGOS +BONGS +BONHOMIE +BONHOMIES +BONHOMOUS +BONIATO +BONIATOS +BONIER +BONIEST +BONIFACE +BONIFACES +BONINESS +BONINESSES +BONING +BONITA +BONITAS +BONITO +BONITOES +BONITOS +BONK +BONKED +BONKERS +BONKING +BONKS +BONNE +BONNES +BONNET +BONNETED +BONNETING +BONNETS +BONNIE +BONNIER +BONNIEST +BONNILY +BONNINESS +BONNINESSES +BONNOCK +BONNOCKS +BONNY +BONNYCLABBER +BONNYCLABBERS +BONOBO +BONOBOS +BONSAI +BONSPELL +BONSPELLS +BONSPIEL +BONSPIELS +BONTEBOK +BONTEBOKS +BONUS +BONUSES +BONY +BONZE +BONZER +BONZES +BOO +BOOB +BOOBED +BOOBIE +BOOBIES +BOOBING +BOOBIRD +BOOBIRDS +BOOBISH +BOOBOISIE +BOOBOISIES +BOOBOO +BOOBOOS +BOOBS +BOOBY +BOOCOO +BOOCOOS +BOODIES +BOODLE +BOODLED +BOODLER +BOODLERS +BOODLES +BOODLING +BOODY +BOOED +BOOGER +BOOGERMAN +BOOGERMEN +BOOGERS +BOOGEY +BOOGEYED +BOOGEYING +BOOGEYMAN +BOOGEYMEN +BOOGEYS +BOOGIE +BOOGIED +BOOGIEING +BOOGIEMAN +BOOGIEMEN +BOOGIES +BOOGY +BOOGYING +BOOGYMAN +BOOGYMEN +BOOHOO +BOOHOOED +BOOHOOING +BOOHOOS +BOOING +BOOJUM +BOOJUMS +BOOK +BOOKABLE +BOOKBINDER +BOOKBINDERIES +BOOKBINDERS +BOOKBINDERY +BOOKBINDING +BOOKBINDINGS +BOOKCASE +BOOKCASES +BOOKED +BOOKEND +BOOKENDS +BOOKER +BOOKERS +BOOKFUL +BOOKFULS +BOOKIE +BOOKIES +BOOKING +BOOKINGS +BOOKISH +BOOKISHLY +BOOKISHNESS +BOOKISHNESSES +BOOKKEEPER +BOOKKEEPERS +BOOKKEEPING +BOOKKEEPINGS +BOOKLET +BOOKLETS +BOOKLICE +BOOKLORE +BOOKLORES +BOOKLOUSE +BOOKMAKER +BOOKMAKERS +BOOKMAKING +BOOKMAKINGS +BOOKMAN +BOOKMARK +BOOKMARKED +BOOKMARKER +BOOKMARKERS +BOOKMARKING +BOOKMARKS +BOOKMEN +BOOKMOBILE +BOOKMOBILES +BOOKOO +BOOKOOS +BOOKPLATE +BOOKPLATES +BOOKRACK +BOOKRACKS +BOOKREST +BOOKRESTS +BOOKS +BOOKSELLER +BOOKSELLERS +BOOKSELLING +BOOKSELLINGS +BOOKSHELF +BOOKSHELVES +BOOKSHOP +BOOKSHOPS +BOOKSTALL +BOOKSTALLS +BOOKSTAND +BOOKSTANDS +BOOKSTORE +BOOKSTORES +BOOKWORM +BOOKWORMS +BOOM +BOOMBOX +BOOMBOXES +BOOMED +BOOMER +BOOMERANG +BOOMERANGED +BOOMERANGING +BOOMERANGS +BOOMERS +BOOMIER +BOOMIEST +BOOMING +BOOMINGLY +BOOMKIN +BOOMKINS +BOOMLET +BOOMLETS +BOOMS +BOOMTOWN +BOOMTOWNS +BOOMY +BOON +BOONDOCK +BOONDOCKS +BOONDOGGLE +BOONDOGGLED +BOONDOGGLER +BOONDOGGLERS +BOONDOGGLES +BOONDOGGLING +BOONIES +BOONLESS +BOONS +BOOR +BOORISH +BOORISHLY +BOORISHNESS +BOORISHNESSES +BOORS +BOOS +BOOST +BOOSTED +BOOSTER +BOOSTERISM +BOOSTERISMS +BOOSTERS +BOOSTING +BOOSTS +BOOT +BOOTABLE +BOOTBLACK +BOOTBLACKS +BOOTED +BOOTEE +BOOTEES +BOOTERIES +BOOTERY +BOOTH +BOOTHS +BOOTIE +BOOTIES +BOOTING +BOOTJACK +BOOTJACKS +BOOTLACE +BOOTLACES +BOOTLEG +BOOTLEGGED +BOOTLEGGER +BOOTLEGGERS +BOOTLEGGING +BOOTLEGS +BOOTLESS +BOOTLESSLY +BOOTLESSNESS +BOOTLESSNESSES +BOOTLICK +BOOTLICKED +BOOTLICKER +BOOTLICKERS +BOOTLICKING +BOOTLICKS +BOOTS +BOOTSTRAP +BOOTSTRAPPED +BOOTSTRAPPING +BOOTSTRAPS +BOOTY +BOOZE +BOOZED +BOOZER +BOOZERS +BOOZES +BOOZIER +BOOZIEST +BOOZILY +BOOZINESS +BOOZINESSES +BOOZING +BOOZY +BOP +BOPEEP +BOPEEPS +BOPPED +BOPPER +BOPPERS +BOPPING +BOPS +BORA +BORACES +BORACIC +BORACITE +BORACITES +BORAGE +BORAGES +BORAL +BORALS +BORANE +BORANES +BORAS +BORATE +BORATED +BORATES +BORATING +BORAX +BORAXES +BORBORYGMI +BORBORYGMUS +BORDEAUX +BORDEL +BORDELLO +BORDELLOS +BORDELS +BORDER +BORDEREAU +BORDEREAUX +BORDERED +BORDERER +BORDERERS +BORDERING +BORDERLAND +BORDERLANDS +BORDERLINE +BORDERLINES +BORDERS +BORDURE +BORDURES +BORE +BOREAL +BOREAS +BOREASES +BORECOLE +BORECOLES +BORED +BOREDOM +BOREDOMS +BOREEN +BOREENS +BOREHOLE +BOREHOLES +BORER +BORERS +BORES +BORESCOPE +BORESCOPES +BORESOME +BORIC +BORIDE +BORIDES +BORING +BORINGLY +BORINGNESS +BORINGNESSES +BORINGS +BORK +BORKED +BORKING +BORKS +BORN +BORNE +BORNEOL +BORNEOLS +BORNITE +BORNITES +BORNITIC +BOROHYDRIDE +BOROHYDRIDES +BORON +BORONIC +BORONS +BOROSILICATE +BOROSILICATES +BOROUGH +BOROUGHS +BORRELIA +BORRELIAS +BORROW +BORROWED +BORROWER +BORROWERS +BORROWING +BORROWINGS +BORROWS +BORSCH +BORSCHES +BORSCHT +BORSCHTS +BORSHT +BORSHTS +BORSTAL +BORSTALS +BORT +BORTS +BORTY +BORTZ +BORTZES +BORZOI +BORZOIS +BOS +BOSCAGE +BOSCAGES +BOSCHBOK +BOSCHBOKS +BOSCHVARK +BOSCHVARKS +BOSH +BOSHBOK +BOSHBOKS +BOSHES +BOSHVARK +BOSHVARKS +BOSK +BOSKAGE +BOSKAGES +BOSKER +BOSKET +BOSKETS +BOSKIER +BOSKIEST +BOSKINESS +BOSKINESSES +BOSKS +BOSKY +BOSOM +BOSOMED +BOSOMING +BOSOMS +BOSOMY +BOSON +BOSONIC +BOSONS +BOSQUE +BOSQUES +BOSQUET +BOSQUETS +BOSS +BOSSDOM +BOSSDOMS +BOSSED +BOSSES +BOSSIER +BOSSIES +BOSSIEST +BOSSILY +BOSSINESS +BOSSINESSES +BOSSING +BOSSISM +BOSSISMS +BOSSY +BOSTON +BOSTONS +BOSUN +BOSUNS +BOT +BOTA +BOTANIC +BOTANICA +BOTANICAL +BOTANICALLY +BOTANICALS +BOTANICAS +BOTANIES +BOTANISE +BOTANISED +BOTANISES +BOTANISING +BOTANIST +BOTANISTS +BOTANIZE +BOTANIZED +BOTANIZER +BOTANIZERS +BOTANIZES +BOTANIZING +BOTANY +BOTAS +BOTCH +BOTCHED +BOTCHEDLY +BOTCHER +BOTCHERIES +BOTCHERS +BOTCHERY +BOTCHES +BOTCHIER +BOTCHIEST +BOTCHILY +BOTCHING +BOTCHY +BOTEL +BOTELS +BOTFLIES +BOTFLY +BOTH +BOTHER +BOTHERATION +BOTHERATIONS +BOTHERED +BOTHERING +BOTHERS +BOTHERSOME +BOTHIES +BOTHRIA +BOTHRIUM +BOTHRIUMS +BOTHY +BOTONEE +BOTONNEE +BOTRYOID +BOTRYOIDAL +BOTRYOSE +BOTRYTIS +BOTRYTISES +BOTS +BOTT +BOTTLE +BOTTLEBRUSH +BOTTLEBRUSHES +BOTTLED +BOTTLEFUL +BOTTLEFULS +BOTTLENECK +BOTTLENECKED +BOTTLENECKING +BOTTLENECKS +BOTTLER +BOTTLERS +BOTTLES +BOTTLING +BOTTLINGS +BOTTOM +BOTTOMED +BOTTOMER +BOTTOMERS +BOTTOMING +BOTTOMLAND +BOTTOMLANDS +BOTTOMLESS +BOTTOMLESSLY +BOTTOMLESSNESS +BOTTOMMOST +BOTTOMRIES +BOTTOMRY +BOTTOMS +BOTTS +BOTULIN +BOTULINAL +BOTULINS +BOTULINUM +BOTULINUMS +BOTULINUS +BOTULINUSES +BOTULISM +BOTULISMS +BOUBOU +BOUBOUS +BOUCHEE +BOUCHEES +BOUCLE +BOUCLES +BOUDIN +BOUDINS +BOUDOIR +BOUDOIRS +BOUFFANT +BOUFFANTS +BOUFFE +BOUFFES +BOUGAINVILLAEA +BOUGAINVILLAEAS +BOUGAINVILLEA +BOUGAINVILLEAS +BOUGH +BOUGHED +BOUGHLESS +BOUGHPOT +BOUGHPOTS +BOUGHS +BOUGHT +BOUGHTEN +BOUGIE +BOUGIES +BOUILLABAISSE +BOUILLABAISSES +BOUILLON +BOUILLONS +BOULDER +BOULDERED +BOULDERER +BOULDERERS +BOULDERING +BOULDERS +BOULDERY +BOULE +BOULES +BOULEVARD +BOULEVARDIER +BOULEVARDIERS +BOULEVARDS +BOULEVERSEMENT +BOULEVERSEMENTS +BOULLE +BOULLES +BOUNCE +BOUNCED +BOUNCER +BOUNCERS +BOUNCES +BOUNCIER +BOUNCIEST +BOUNCILY +BOUNCING +BOUNCINGLY +BOUNCY +BOUND +BOUNDABLE +BOUNDARIES +BOUNDARY +BOUNDED +BOUNDEDNESS +BOUNDEDNESSES +BOUNDEN +BOUNDER +BOUNDERISH +BOUNDERS +BOUNDING +BOUNDLESS +BOUNDLESSLY +BOUNDLESSNESS +BOUNDLESSNESSES +BOUNDNESS +BOUNDNESSES +BOUNDS +BOUNTEOUS +BOUNTEOUSLY +BOUNTEOUSNESS +BOUNTEOUSNESSES +BOUNTIED +BOUNTIES +BOUNTIFUL +BOUNTIFULLY +BOUNTIFULNESS +BOUNTIFULNESSES +BOUNTY +BOUQUET +BOUQUETS +BOURBON +BOURBONISM +BOURBONISMS +BOURBONS +BOURDON +BOURDONS +BOURG +BOURGEOIS +BOURGEOISE +BOURGEOISES +BOURGEOISIE +BOURGEOISIES +BOURGEOISIFIED +BOURGEOISIFIES +BOURGEOISIFY +BOURGEOISIFYING +BOURGEON +BOURGEONED +BOURGEONING +BOURGEONS +BOURGS +BOURGUIGNON +BOURGUIGNONNE +BOURN +BOURNE +BOURNES +BOURNS +BOURREE +BOURREES +BOURRIDE +BOURRIDES +BOURSE +BOURSES +BOURSIN +BOURSINS +BOURTREE +BOURTREES +BOUSE +BOUSED +BOUSES +BOUSING +BOUSOUKI +BOUSOUKIA +BOUSOUKIS +BOUSTROPHEDON +BOUSTROPHEDONIC +BOUSTROPHEDONS +BOUSY +BOUT +BOUTIQUE +BOUTIQUES +BOUTIQUEY +BOUTON +BOUTONNIERE +BOUTONNIERES +BOUTONS +BOUTS +BOUVARDIA +BOUVARDIAS +BOUVIER +BOUVIERS +BOUZOUKI +BOUZOUKIA +BOUZOUKIS +BOVID +BOVIDS +BOVINE +BOVINELY +BOVINES +BOVINITIES +BOVINITY +BOW +BOWDLERISE +BOWDLERISED +BOWDLERISES +BOWDLERISING +BOWDLERIZATION +BOWDLERIZATIONS +BOWDLERIZE +BOWDLERIZED +BOWDLERIZER +BOWDLERIZERS +BOWDLERIZES +BOWDLERIZING +BOWED +BOWEL +BOWELED +BOWELING +BOWELLED +BOWELLESS +BOWELLING +BOWELS +BOWER +BOWERBIRD +BOWERBIRDS +BOWERED +BOWERIES +BOWERING +BOWERS +BOWERY +BOWFIN +BOWFINS +BOWFRONT +BOWHEAD +BOWHEADS +BOWHUNTER +BOWHUNTERS +BOWING +BOWINGLY +BOWINGS +BOWKNOT +BOWKNOTS +BOWL +BOWLDER +BOWLDERS +BOWLED +BOWLEG +BOWLEGGED +BOWLEGS +BOWLER +BOWLERS +BOWLESS +BOWLFUL +BOWLFULS +BOWLIKE +BOWLINE +BOWLINES +BOWLING +BOWLINGS +BOWLLIKE +BOWLS +BOWMAN +BOWMEN +BOWPOT +BOWPOTS +BOWS +BOWSE +BOWSED +BOWSES +BOWSHOT +BOWSHOTS +BOWSING +BOWSPRIT +BOWSPRITS +BOWSTRING +BOWSTRINGED +BOWSTRINGING +BOWSTRINGS +BOWSTRUNG +BOWWOW +BOWWOWED +BOWWOWING +BOWWOWS +BOWYER +BOWYERS +BOX +BOXBALL +BOXBALLS +BOXBERRIES +BOXBERRY +BOXBOARD +BOXBOARDS +BOXCAR +BOXCARS +BOXED +BOXER +BOXERS +BOXES +BOXFISH +BOXFISHES +BOXFUL +BOXFULS +BOXHAUL +BOXHAULED +BOXHAULING +BOXHAULS +BOXIER +BOXIEST +BOXILY +BOXINESS +BOXINESSES +BOXING +BOXINGS +BOXLIKE +BOXTHORN +BOXTHORNS +BOXWOOD +BOXWOODS +BOXY +BOY +BOYAR +BOYARD +BOYARDS +BOYARISM +BOYARISMS +BOYARS +BOYCHICK +BOYCHICKS +BOYCHIK +BOYCHIKS +BOYCOTT +BOYCOTTED +BOYCOTTER +BOYCOTTERS +BOYCOTTING +BOYCOTTS +BOYFRIEND +BOYFRIENDS +BOYHOOD +BOYHOODS +BOYISH +BOYISHLY +BOYISHNESS +BOYISHNESSES +BOYLA +BOYLAS +BOYO +BOYOS +BOYS +BOYSENBERRIES +BOYSENBERRY +BOZO +BOZOS +BRA +BRABBLE +BRABBLED +BRABBLER +BRABBLERS +BRABBLES +BRABBLING +BRACE +BRACED +BRACELET +BRACELETS +BRACER +BRACERO +BRACEROS +BRACERS +BRACES +BRACH +BRACHES +BRACHET +BRACHETS +BRACHIA +BRACHIAL +BRACHIALS +BRACHIATE +BRACHIATED +BRACHIATES +BRACHIATING +BRACHIATION +BRACHIATIONS +BRACHIATOR +BRACHIATORS +BRACHIOPOD +BRACHIOPODS +BRACHIUM +BRACHS +BRACHYCEPHALIC +BRACHYCEPHALIES +BRACHYCEPHALY +BRACHYPTEROUS +BRACING +BRACINGLY +BRACINGS +BRACIOLA +BRACIOLAS +BRACIOLE +BRACIOLES +BRACKEN +BRACKENS +BRACKET +BRACKETED +BRACKETING +BRACKETS +BRACKISH +BRACKISHNESS +BRACKISHNESSES +BRACONID +BRACONIDS +BRACT +BRACTEAL +BRACTEATE +BRACTED +BRACTEOLE +BRACTEOLES +BRACTLESS +BRACTLET +BRACTLETS +BRACTS +BRAD +BRADAWL +BRADAWLS +BRADDED +BRADDING +BRADOON +BRADOONS +BRADS +BRADYCARDIA +BRADYCARDIAS +BRADYKININ +BRADYKININS +BRAE +BRAES +BRAG +BRAGGADOCIO +BRAGGADOCIOS +BRAGGART +BRAGGARTS +BRAGGED +BRAGGER +BRAGGERS +BRAGGEST +BRAGGIER +BRAGGIEST +BRAGGING +BRAGGY +BRAGS +BRAHMA +BRAHMAS +BRAID +BRAIDED +BRAIDER +BRAIDERS +BRAIDING +BRAIDINGS +BRAIDS +BRAIL +BRAILED +BRAILING +BRAILLE +BRAILLED +BRAILLER +BRAILLERS +BRAILLES +BRAILLEWRITER +BRAILLEWRITERS +BRAILLING +BRAILLIST +BRAILLISTS +BRAILS +BRAIN +BRAINCASE +BRAINCASES +BRAINCHILD +BRAINCHILDREN +BRAINED +BRAINIAC +BRAINIACS +BRAINIER +BRAINIEST +BRAINILY +BRAININESS +BRAININESSES +BRAINING +BRAINISH +BRAINLESS +BRAINLESSLY +BRAINLESSNESS +BRAINLESSNESSES +BRAINPAN +BRAINPANS +BRAINPOWER +BRAINPOWERS +BRAINS +BRAINSICK +BRAINSICKLY +BRAINSTEM +BRAINSTEMS +BRAINSTORM +BRAINSTORMED +BRAINSTORMER +BRAINSTORMERS +BRAINSTORMING +BRAINSTORMINGS +BRAINSTORMS +BRAINTEASER +BRAINTEASERS +BRAINWASH +BRAINWASHED +BRAINWASHER +BRAINWASHERS +BRAINWASHES +BRAINWASHING +BRAINWASHINGS +BRAINY +BRAISE +BRAISED +BRAISES +BRAISING +BRAIZE +BRAIZES +BRAKE +BRAKEAGE +BRAKEAGES +BRAKED +BRAKELESS +BRAKEMAN +BRAKEMEN +BRAKES +BRAKIER +BRAKIEST +BRAKING +BRAKY +BRALESS +BRAMBLE +BRAMBLED +BRAMBLES +BRAMBLIER +BRAMBLIEST +BRAMBLING +BRAMBLINGS +BRAMBLY +BRAN +BRANCH +BRANCHED +BRANCHES +BRANCHIA +BRANCHIAE +BRANCHIAL +BRANCHIER +BRANCHIEST +BRANCHING +BRANCHIOPOD +BRANCHIOPODS +BRANCHLESS +BRANCHLET +BRANCHLETS +BRANCHLINE +BRANCHLINES +BRANCHY +BRAND +BRANDED +BRANDER +BRANDERS +BRANDIED +BRANDIES +BRANDING +BRANDINGS +BRANDISH +BRANDISHED +BRANDISHES +BRANDISHING +BRANDLESS +BRANDLING +BRANDLINGS +BRANDS +BRANDY +BRANDYING +BRANK +BRANKS +BRANNED +BRANNER +BRANNERS +BRANNIER +BRANNIEST +BRANNIGAN +BRANNIGANS +BRANNING +BRANNY +BRANS +BRANT +BRANTAIL +BRANTAILS +BRANTS +BRAS +BRASH +BRASHER +BRASHES +BRASHEST +BRASHIER +BRASHIEST +BRASHLY +BRASHNESS +BRASHNESSES +BRASHY +BRASIER +BRASIERS +BRASIL +BRASILEIN +BRASILEINS +BRASILIN +BRASILINS +BRASILS +BRASS +BRASSAGE +BRASSAGES +BRASSARD +BRASSARDS +BRASSART +BRASSARTS +BRASSBOUND +BRASSED +BRASSERIE +BRASSERIES +BRASSES +BRASSICA +BRASSICAS +BRASSIE +BRASSIER +BRASSIERE +BRASSIERES +BRASSIES +BRASSIEST +BRASSILY +BRASSINESS +BRASSINESSES +BRASSING +BRASSISH +BRASSWARE +BRASSWARES +BRASSY +BRAT +BRATS +BRATTICE +BRATTICED +BRATTICES +BRATTICING +BRATTIER +BRATTIEST +BRATTINESS +BRATTINESSES +BRATTISH +BRATTLE +BRATTLED +BRATTLES +BRATTLING +BRATTY +BRATWURST +BRATWURSTS +BRAUNITE +BRAUNITES +BRAUNSCHWEIGER +BRAUNSCHWEIGERS +BRAVA +BRAVADO +BRAVADOES +BRAVADOS +BRAVAS +BRAVE +BRAVED +BRAVELY +BRAVENESS +BRAVENESSES +BRAVER +BRAVERIES +BRAVERS +BRAVERY +BRAVES +BRAVEST +BRAVI +BRAVING +BRAVO +BRAVOED +BRAVOES +BRAVOING +BRAVOS +BRAVURA +BRAVURAS +BRAVURE +BRAW +BRAWER +BRAWEST +BRAWL +BRAWLED +BRAWLER +BRAWLERS +BRAWLIE +BRAWLIER +BRAWLIEST +BRAWLING +BRAWLS +BRAWLY +BRAWN +BRAWNIER +BRAWNIEST +BRAWNILY +BRAWNINESS +BRAWNINESSES +BRAWNS +BRAWNY +BRAWS +BRAXIES +BRAXY +BRAY +BRAYED +BRAYER +BRAYERS +BRAYING +BRAYS +BRAZA +BRAZAS +BRAZE +BRAZED +BRAZEN +BRAZENED +BRAZENING +BRAZENLY +BRAZENNESS +BRAZENNESSES +BRAZENS +BRAZER +BRAZERS +BRAZES +BRAZIER +BRAZIERS +BRAZIL +BRAZILEIN +BRAZILEINS +BRAZILIN +BRAZILINS +BRAZILS +BRAZILWOOD +BRAZILWOODS +BRAZING +BREACH +BREACHED +BREACHER +BREACHERS +BREACHES +BREACHING +BREAD +BREADBASKET +BREADBASKETS +BREADBOARD +BREADBOARDED +BREADBOARDING +BREADBOARDS +BREADBOX +BREADBOXES +BREADED +BREADFRUIT +BREADFRUITS +BREADING +BREADLESS +BREADLINE +BREADLINES +BREADNUT +BREADNUTS +BREADROOT +BREADROOTS +BREADS +BREADSTUFF +BREADSTUFFS +BREADTH +BREADTHS +BREADTHWISE +BREADWINNER +BREADWINNERS +BREADWINNING +BREADWINNINGS +BREADY +BREAK +BREAKABLE +BREAKABLES +BREAKAGE +BREAKAGES +BREAKAWAY +BREAKAWAYS +BREAKDOWN +BREAKDOWNS +BREAKER +BREAKERS +BREAKEVEN +BREAKEVENS +BREAKFAST +BREAKFASTED +BREAKFASTER +BREAKFASTERS +BREAKFASTING +BREAKFASTS +BREAKFRONT +BREAKFRONTS +BREAKING +BREAKINGS +BREAKNECK +BREAKOUT +BREAKOUTS +BREAKS +BREAKTHROUGH +BREAKTHROUGHS +BREAKUP +BREAKUPS +BREAKWALL +BREAKWALLS +BREAKWATER +BREAKWATERS +BREAM +BREAMED +BREAMING +BREAMS +BREAST +BREASTBONE +BREASTBONES +BREASTED +BREASTFED +BREASTFEED +BREASTFEEDING +BREASTFEEDS +BREASTING +BREASTPIN +BREASTPINS +BREASTPLATE +BREASTPLATES +BREASTS +BREASTSTROKE +BREASTSTROKER +BREASTSTROKERS +BREASTSTROKES +BREASTWORK +BREASTWORKS +BREATH +BREATHABILITIES +BREATHABILITY +BREATHABLE +BREATHE +BREATHED +BREATHER +BREATHERS +BREATHES +BREATHIER +BREATHIEST +BREATHILY +BREATHINESS +BREATHINESSES +BREATHING +BREATHINGS +BREATHLESS +BREATHLESSLY +BREATHLESSNESS +BREATHS +BREATHTAKING +BREATHTAKINGLY +BREATHY +BRECCIA +BRECCIAL +BRECCIAS +BRECCIATE +BRECCIATED +BRECCIATES +BRECCIATING +BRECCIATION +BRECCIATIONS +BRECHAM +BRECHAMS +BRECHAN +BRECHANS +BRED +BREDE +BREDES +BREE +BREECH +BREECHBLOCK +BREECHBLOCKS +BREECHCLOTH +BREECHCLOTHS +BREECHCLOUT +BREECHCLOUTS +BREECHED +BREECHES +BREECHING +BREECHINGS +BREECHLOADER +BREECHLOADERS +BREED +BREEDER +BREEDERS +BREEDING +BREEDINGS +BREEDS +BREEKS +BREES +BREEZE +BREEZED +BREEZELESS +BREEZES +BREEZEWAY +BREEZEWAYS +BREEZIER +BREEZIEST +BREEZILY +BREEZINESS +BREEZINESSES +BREEZING +BREEZY +BREGMA +BREGMATA +BREGMATE +BREGMATIC +BREMSSTRAHLUNG +BREMSSTRAHLUNGS +BREN +BRENS +BRENT +BRENTS +BRETHREN +BREVE +BREVES +BREVET +BREVETCIES +BREVETCY +BREVETED +BREVETING +BREVETS +BREVETTED +BREVETTING +BREVIARIES +BREVIARY +BREVIER +BREVIERS +BREVITIES +BREVITY +BREW +BREWAGE +BREWAGES +BREWED +BREWER +BREWERIES +BREWERS +BREWERY +BREWING +BREWINGS +BREWIS +BREWISES +BREWPUB +BREWPUBS +BREWS +BREWSKI +BREWSKIES +BREWSKIS +BRIAR +BRIARD +BRIARDS +BRIARROOT +BRIARROOTS +BRIARS +BRIARWOOD +BRIARWOODS +BRIARY +BRIBABLE +BRIBE +BRIBED +BRIBEE +BRIBEES +BRIBER +BRIBERIES +BRIBERS +BRIBERY +BRIBES +BRIBING +BRICK +BRICKBAT +BRICKBATS +BRICKED +BRICKFIELD +BRICKFIELDS +BRICKIER +BRICKIEST +BRICKING +BRICKKILN +BRICKKILNS +BRICKLAYER +BRICKLAYERS +BRICKLAYING +BRICKLAYINGS +BRICKLE +BRICKLES +BRICKLIKE +BRICKS +BRICKWORK +BRICKWORKS +BRICKY +BRICKYARD +BRICKYARDS +BRICOLAGE +BRICOLAGES +BRICOLE +BRICOLES +BRIDAL +BRIDALLY +BRIDALS +BRIDE +BRIDEGROOM +BRIDEGROOMS +BRIDES +BRIDESMAID +BRIDESMAIDS +BRIDEWELL +BRIDEWELLS +BRIDGE +BRIDGEABLE +BRIDGED +BRIDGEHEAD +BRIDGEHEADS +BRIDGELESS +BRIDGES +BRIDGEWORK +BRIDGEWORKS +BRIDGING +BRIDGINGS +BRIDLE +BRIDLED +BRIDLER +BRIDLERS +BRIDLES +BRIDLING +BRIDOON +BRIDOONS +BRIE +BRIEF +BRIEFCASE +BRIEFCASES +BRIEFED +BRIEFER +BRIEFERS +BRIEFEST +BRIEFING +BRIEFINGS +BRIEFLESS +BRIEFLY +BRIEFNESS +BRIEFNESSES +BRIEFS +BRIER +BRIERROOT +BRIERROOTS +BRIERS +BRIERWOOD +BRIERWOODS +BRIERY +BRIES +BRIG +BRIGADE +BRIGADED +BRIGADES +BRIGADIER +BRIGADIERS +BRIGADING +BRIGAND +BRIGANDAGE +BRIGANDAGES +BRIGANDINE +BRIGANDINES +BRIGANDS +BRIGANTINE +BRIGANTINES +BRIGHT +BRIGHTEN +BRIGHTENED +BRIGHTENER +BRIGHTENERS +BRIGHTENING +BRIGHTENS +BRIGHTER +BRIGHTEST +BRIGHTISH +BRIGHTLY +BRIGHTNESS +BRIGHTNESSES +BRIGHTS +BRIGHTWORK +BRIGHTWORKS +BRIGS +BRILL +BRILLIANCE +BRILLIANCES +BRILLIANCIES +BRILLIANCY +BRILLIANT +BRILLIANTINE +BRILLIANTINES +BRILLIANTLY +BRILLIANTS +BRILLO +BRILLOS +BRILLS +BRIM +BRIMFUL +BRIMFULL +BRIMFULLY +BRIMLESS +BRIMMED +BRIMMER +BRIMMERS +BRIMMING +BRIMS +BRIMSTONE +BRIMSTONES +BRIMSTONY +BRIN +BRINDED +BRINDLE +BRINDLED +BRINDLES +BRINE +BRINED +BRINELESS +BRINER +BRINERS +BRINES +BRING +BRINGDOWN +BRINGDOWNS +BRINGER +BRINGERS +BRINGING +BRINGS +BRINIER +BRINIES +BRINIEST +BRININESS +BRININESSES +BRINING +BRINISH +BRINK +BRINKMANSHIP +BRINKMANSHIPS +BRINKS +BRINKSMANSHIP +BRINKSMANSHIPS +BRINS +BRINY +BRIO +BRIOCHE +BRIOCHES +BRIOLETTE +BRIOLETTES +BRIONIES +BRIONY +BRIOS +BRIQUET +BRIQUETS +BRIQUETTE +BRIQUETTED +BRIQUETTES +BRIQUETTING +BRIS +BRISANCE +BRISANCES +BRISANT +BRISES +BRISK +BRISKED +BRISKER +BRISKEST +BRISKET +BRISKETS +BRISKING +BRISKLY +BRISKNESS +BRISKNESSES +BRISKS +BRISLING +BRISLINGS +BRISS +BRISSES +BRISTLE +BRISTLED +BRISTLELIKE +BRISTLES +BRISTLETAIL +BRISTLETAILS +BRISTLIER +BRISTLIEST +BRISTLING +BRISTLY +BRISTOL +BRISTOLS +BRIT +BRITANNIA +BRITANNIAS +BRITCHES +BRITH +BRITHS +BRITS +BRITSKA +BRITSKAS +BRITT +BRITTANIA +BRITTANIAS +BRITTLE +BRITTLED +BRITTLELY +BRITTLENESS +BRITTLENESSES +BRITTLER +BRITTLES +BRITTLEST +BRITTLING +BRITTLY +BRITTS +BRITZKA +BRITZKAS +BRITZSKA +BRITZSKAS +BRO +BROACH +BROACHED +BROACHER +BROACHERS +BROACHES +BROACHING +BROAD +BROADAX +BROADAXE +BROADAXES +BROADBAND +BROADBANDS +BROADBEAN +BROADBEANS +BROADBILL +BROADBILLS +BROADCAST +BROADCASTED +BROADCASTER +BROADCASTERS +BROADCASTING +BROADCASTS +BROADCLOTH +BROADCLOTHS +BROADEN +BROADENED +BROADENER +BROADENERS +BROADENING +BROADENS +BROADER +BROADEST +BROADISH +BROADLEAF +BROADLEAVES +BROADLOOM +BROADLOOMS +BROADLY +BROADNESS +BROADNESSES +BROADS +BROADSCALE +BROADSHEET +BROADSHEETS +BROADSIDE +BROADSIDED +BROADSIDES +BROADSIDING +BROADSWORD +BROADSWORDS +BROADTAIL +BROADTAILS +BROCADE +BROCADED +BROCADES +BROCADING +BROCATEL +BROCATELLE +BROCATELLES +BROCATELS +BROCCOLI +BROCCOLIS +BROCHE +BROCHETTE +BROCHETTES +BROCHURE +BROCHURES +BROCK +BROCKAGE +BROCKAGES +BROCKET +BROCKETS +BROCKS +BROCOLI +BROCOLIS +BROGAN +BROGANS +BROGUE +BROGUERIES +BROGUERY +BROGUES +BROGUISH +BROIDER +BROIDERED +BROIDERER +BROIDERERS +BROIDERIES +BROIDERING +BROIDERS +BROIDERY +BROIL +BROILED +BROILER +BROILERS +BROILING +BROILS +BROKAGE +BROKAGES +BROKE +BROKEN +BROKENHEARTED +BROKENLY +BROKENNESS +BROKENNESSES +BROKER +BROKERAGE +BROKERAGES +BROKERED +BROKERING +BROKERINGS +BROKERS +BROKING +BROKINGS +BROLLIES +BROLLY +BROMAL +BROMALS +BROMATE +BROMATED +BROMATES +BROMATING +BROME +BROMEGRASS +BROMEGRASSES +BROMELAIN +BROMELAINS +BROMELIAD +BROMELIADS +BROMELIN +BROMELINS +BROMES +BROMIC +BROMID +BROMIDE +BROMIDES +BROMIDIC +BROMIDS +BROMIN +BROMINATE +BROMINATED +BROMINATES +BROMINATING +BROMINATION +BROMINATIONS +BROMINE +BROMINES +BROMINISM +BROMINISMS +BROMINS +BROMISM +BROMISMS +BROMIZE +BROMIZED +BROMIZES +BROMIZING +BROMO +BROMOCRIPTINE +BROMOCRIPTINES +BROMOS +BROMOURACIL +BROMOURACILS +BRONC +BRONCHI +BRONCHIA +BRONCHIAL +BRONCHIALLY +BRONCHIECTASES +BRONCHIECTASIS +BRONCHIOLAR +BRONCHIOLE +BRONCHIOLES +BRONCHITIC +BRONCHITIS +BRONCHITISES +BRONCHIUM +BRONCHO +BRONCHODILATOR +BRONCHODILATORS +BRONCHOGENIC +BRONCHOS +BRONCHOSCOPE +BRONCHOSCOPES +BRONCHOSCOPIC +BRONCHOSCOPIES +BRONCHOSCOPIST +BRONCHOSCOPISTS +BRONCHOSCOPY +BRONCHOSPASM +BRONCHOSPASMS +BRONCHOSPASTIC +BRONCHUS +BRONCO +BRONCOBUSTER +BRONCOBUSTERS +BRONCOS +BRONCS +BRONTOSAUR +BRONTOSAURS +BRONTOSAURUS +BRONTOSAURUSES +BRONZE +BRONZED +BRONZER +BRONZERS +BRONZES +BRONZIER +BRONZIEST +BRONZING +BRONZINGS +BRONZY +BROO +BROOCH +BROOCHES +BROOD +BROODED +BROODER +BROODERS +BROODIER +BROODIEST +BROODILY +BROODINESS +BROODINESSES +BROODING +BROODINGLY +BROODLESS +BROODMARE +BROODMARES +BROODS +BROODY +BROOK +BROOKED +BROOKIE +BROOKIES +BROOKING +BROOKITE +BROOKITES +BROOKLET +BROOKLETS +BROOKLIKE +BROOKLIME +BROOKLIMES +BROOKS +BROOM +BROOMBALL +BROOMBALLER +BROOMBALLERS +BROOMBALLS +BROOMCORN +BROOMCORNS +BROOMED +BROOMIER +BROOMIEST +BROOMING +BROOMRAPE +BROOMRAPES +BROOMS +BROOMSTICK +BROOMSTICKS +BROOMY +BROOS +BROS +BROSE +BROSES +BROSY +BROTH +BROTHEL +BROTHELS +BROTHER +BROTHERED +BROTHERHOOD +BROTHERHOODS +BROTHERING +BROTHERLINESS +BROTHERLINESSES +BROTHERLY +BROTHERS +BROTHS +BROTHY +BROUGHAM +BROUGHAMS +BROUGHT +BROUHAHA +BROUHAHAS +BROW +BROWALLIA +BROWALLIAS +BROWBAND +BROWBANDS +BROWBEAT +BROWBEATEN +BROWBEATING +BROWBEATS +BROWED +BROWLESS +BROWN +BROWNED +BROWNER +BROWNEST +BROWNFIELD +BROWNFIELDS +BROWNIE +BROWNIER +BROWNIES +BROWNIEST +BROWNING +BROWNISH +BROWNNESS +BROWNNESSES +BROWNNOSE +BROWNNOSED +BROWNNOSER +BROWNNOSERS +BROWNNOSES +BROWNNOSING +BROWNOUT +BROWNOUTS +BROWNS +BROWNSHIRT +BROWNSHIRTS +BROWNSTONE +BROWNSTONES +BROWNY +BROWRIDGE +BROWRIDGES +BROWS +BROWSABLE +BROWSABLES +BROWSE +BROWSED +BROWSER +BROWSERS +BROWSES +BROWSING +BRR +BRRR +BRUCELLA +BRUCELLAE +BRUCELLAS +BRUCELLOSES +BRUCELLOSIS +BRUCIN +BRUCINE +BRUCINES +BRUCINS +BRUGH +BRUGHS +BRUIN +BRUINS +BRUISE +BRUISED +BRUISER +BRUISERS +BRUISES +BRUISING +BRUIT +BRUITED +BRUITER +BRUITERS +BRUITING +BRUITS +BRULOT +BRULOTS +BRULYIE +BRULYIES +BRULZIE +BRULZIES +BRUMAL +BRUMBIES +BRUMBY +BRUME +BRUMES +BRUMMAGEM +BRUMMAGEMS +BRUMOUS +BRUNCH +BRUNCHED +BRUNCHER +BRUNCHERS +BRUNCHES +BRUNCHING +BRUNET +BRUNETS +BRUNETTE +BRUNETTES +BRUNG +BRUNIZEM +BRUNIZEMS +BRUNT +BRUNTS +BRUSH +BRUSHABILITIES +BRUSHABILITY +BRUSHBACK +BRUSHBACKS +BRUSHED +BRUSHER +BRUSHERS +BRUSHES +BRUSHFIRE +BRUSHFIRES +BRUSHIER +BRUSHIEST +BRUSHING +BRUSHLAND +BRUSHLANDS +BRUSHLESS +BRUSHOFF +BRUSHOFFS +BRUSHUP +BRUSHUPS +BRUSHWOOD +BRUSHWOODS +BRUSHWORK +BRUSHWORKS +BRUSHY +BRUSK +BRUSKER +BRUSKEST +BRUSQUE +BRUSQUELY +BRUSQUENESS +BRUSQUENESSES +BRUSQUER +BRUSQUERIE +BRUSQUERIES +BRUSQUEST +BRUT +BRUTAL +BRUTALISE +BRUTALISED +BRUTALISES +BRUTALISING +BRUTALITIES +BRUTALITY +BRUTALIZATION +BRUTALIZATIONS +BRUTALIZE +BRUTALIZED +BRUTALIZES +BRUTALIZING +BRUTALLY +BRUTE +BRUTED +BRUTELY +BRUTES +BRUTIFIED +BRUTIFIES +BRUTIFY +BRUTIFYING +BRUTING +BRUTISH +BRUTISHLY +BRUTISHNESS +BRUTISHNESSES +BRUTISM +BRUTISMS +BRUTS +BRUX +BRUXED +BRUXES +BRUXING +BRUXISM +BRUXISMS +BRYOLOGICAL +BRYOLOGIES +BRYOLOGIST +BRYOLOGISTS +BRYOLOGY +BRYONIES +BRYONY +BRYOPHYLLUM +BRYOPHYLLUMS +BRYOPHYTE +BRYOPHYTES +BRYOPHYTIC +BRYOZOAN +BRYOZOANS +BUB +BUBAL +BUBALE +BUBALES +BUBALINE +BUBALIS +BUBALISES +BUBALS +BUBBA +BUBBAS +BUBBIES +BUBBLE +BUBBLED +BUBBLEGUM +BUBBLEGUMS +BUBBLEHEAD +BUBBLEHEADED +BUBBLEHEADS +BUBBLER +BUBBLERS +BUBBLES +BUBBLIER +BUBBLIES +BUBBLIEST +BUBBLING +BUBBLY +BUBBY +BUBINGA +BUBINGAS +BUBKES +BUBO +BUBOED +BUBOES +BUBONIC +BUBS +BUBU +BUBUS +BUCCAL +BUCCALLY +BUCCANEER +BUCCANEERED +BUCCANEERING +BUCCANEERISH +BUCCANEERS +BUCCINATOR +BUCCINATORS +BUCK +BUCKAROO +BUCKAROOS +BUCKAYRO +BUCKAYROS +BUCKBEAN +BUCKBEANS +BUCKBOARD +BUCKBOARDS +BUCKBRUSH +BUCKBRUSHES +BUCKED +BUCKEEN +BUCKEENS +BUCKER +BUCKEROO +BUCKEROOS +BUCKERS +BUCKET +BUCKETED +BUCKETFUL +BUCKETFULS +BUCKETING +BUCKETS +BUCKETSFUL +BUCKEYE +BUCKEYES +BUCKHOUND +BUCKHOUNDS +BUCKING +BUCKISH +BUCKLE +BUCKLED +BUCKLER +BUCKLERED +BUCKLERING +BUCKLERS +BUCKLES +BUCKLING +BUCKO +BUCKOES +BUCKOS +BUCKRA +BUCKRAM +BUCKRAMED +BUCKRAMING +BUCKRAMS +BUCKRAS +BUCKS +BUCKSAW +BUCKSAWS +BUCKSHEE +BUCKSHEES +BUCKSHOT +BUCKSKIN +BUCKSKINNED +BUCKSKINS +BUCKTAIL +BUCKTAILS +BUCKTEETH +BUCKTHORN +BUCKTHORNS +BUCKTOOTH +BUCKTOOTHED +BUCKWHEAT +BUCKWHEATS +BUCKYBALL +BUCKYBALLS +BUCKYTUBE +BUCKYTUBES +BUCOLIC +BUCOLICALLY +BUCOLICS +BUD +BUDDED +BUDDER +BUDDERS +BUDDHA +BUDDHAS +BUDDIED +BUDDIES +BUDDING +BUDDINGS +BUDDLE +BUDDLEIA +BUDDLEIAS +BUDDLES +BUDDY +BUDDYING +BUDGE +BUDGED +BUDGER +BUDGERIGAR +BUDGERIGARS +BUDGERS +BUDGES +BUDGET +BUDGETARY +BUDGETED +BUDGETEER +BUDGETEERS +BUDGETER +BUDGETERS +BUDGETING +BUDGETS +BUDGIE +BUDGIES +BUDGING +BUDLESS +BUDLIKE +BUDS +BUDWORM +BUDWORMS +BUFF +BUFFABLE +BUFFALO +BUFFALOBERRIES +BUFFALOBERRY +BUFFALOED +BUFFALOES +BUFFALOFISH +BUFFALOFISHES +BUFFALOING +BUFFALOS +BUFFED +BUFFER +BUFFERED +BUFFERING +BUFFERS +BUFFEST +BUFFET +BUFFETED +BUFFETER +BUFFETERS +BUFFETING +BUFFETS +BUFFI +BUFFIER +BUFFIEST +BUFFING +BUFFLEHEAD +BUFFLEHEADS +BUFFO +BUFFOON +BUFFOONERIES +BUFFOONERY +BUFFOONISH +BUFFOONS +BUFFOS +BUFFS +BUFFY +BUG +BUGABOO +BUGABOOS +BUGBANE +BUGBANES +BUGBEAR +BUGBEARS +BUGEYE +BUGEYES +BUGGED +BUGGER +BUGGERED +BUGGERIES +BUGGERING +BUGGERS +BUGGERY +BUGGIER +BUGGIES +BUGGIEST +BUGGINESS +BUGGINESSES +BUGGING +BUGGY +BUGHOUSE +BUGHOUSES +BUGLE +BUGLED +BUGLER +BUGLERS +BUGLES +BUGLEWEED +BUGLEWEEDS +BUGLING +BUGLOSS +BUGLOSSES +BUGOUT +BUGOUTS +BUGS +BUGSEED +BUGSEEDS +BUGSHA +BUGSHAS +BUHL +BUHLS +BUHLWORK +BUHLWORKS +BUHR +BUHRS +BUHRSTONE +BUHRSTONES +BUILD +BUILDABLE +BUILDDOWN +BUILDDOWNS +BUILDED +BUILDER +BUILDERS +BUILDING +BUILDINGS +BUILDS +BUILDUP +BUILDUPS +BUILT +BUIRDLY +BULB +BULBAR +BULBED +BULBEL +BULBELS +BULBIL +BULBILS +BULBLET +BULBLETS +BULBOUS +BULBOUSLY +BULBS +BULBUL +BULBULS +BULGE +BULGED +BULGER +BULGERS +BULGES +BULGHUR +BULGHURS +BULGIER +BULGIEST +BULGINESS +BULGINESSES +BULGING +BULGINGLY +BULGUR +BULGURS +BULGY +BULIMIA +BULIMIAC +BULIMIAS +BULIMIC +BULIMICS +BULK +BULKAGE +BULKAGES +BULKED +BULKHEAD +BULKHEADS +BULKIER +BULKIEST +BULKILY +BULKINESS +BULKINESSES +BULKING +BULKS +BULKY +BULL +BULLA +BULLACE +BULLACES +BULLAE +BULLATE +BULLBAITING +BULLBAITINGS +BULLBAT +BULLBATS +BULLBRIER +BULLBRIERS +BULLDOG +BULLDOGGED +BULLDOGGER +BULLDOGGERS +BULLDOGGING +BULLDOGGINGS +BULLDOGS +BULLDOZE +BULLDOZED +BULLDOZER +BULLDOZERS +BULLDOZES +BULLDOZING +BULLDYKE +BULLDYKES +BULLED +BULLET +BULLETED +BULLETIN +BULLETINED +BULLETING +BULLETINING +BULLETINS +BULLETPROOF +BULLETS +BULLFIGHT +BULLFIGHTER +BULLFIGHTERS +BULLFIGHTING +BULLFIGHTINGS +BULLFIGHTS +BULLFINCH +BULLFINCHES +BULLFROG +BULLFROGS +BULLHEAD +BULLHEADED +BULLHEADEDLY +BULLHEADEDNESS +BULLHEADS +BULLHORN +BULLHORNS +BULLIED +BULLIER +BULLIES +BULLIEST +BULLING +BULLION +BULLIONS +BULLISH +BULLISHLY +BULLISHNESS +BULLISHNESSES +BULLMASTIFF +BULLMASTIFFS +BULLNECK +BULLNECKED +BULLNECKS +BULLNOSE +BULLNOSES +BULLOCK +BULLOCKS +BULLOCKY +BULLOUS +BULLPEN +BULLPENS +BULLPOUT +BULLPOUTS +BULLRING +BULLRINGS +BULLRUSH +BULLRUSHES +BULLS +BULLSHAT +BULLSHIT +BULLSHITS +BULLSHITTED +BULLSHITTING +BULLSHOT +BULLSHOTS +BULLSNAKE +BULLSNAKES +BULLTERRIER +BULLTERRIERS +BULLWEED +BULLWEEDS +BULLWHIP +BULLWHIPPED +BULLWHIPPING +BULLWHIPS +BULLY +BULLYBOY +BULLYBOYS +BULLYING +BULLYRAG +BULLYRAGGED +BULLYRAGGING +BULLYRAGS +BULRUSH +BULRUSHES +BULWARK +BULWARKED +BULWARKING +BULWARKS +BUM +BUMBERSHOOT +BUMBERSHOOTS +BUMBLE +BUMBLEBEE +BUMBLEBEES +BUMBLED +BUMBLER +BUMBLERS +BUMBLES +BUMBLING +BUMBLINGLY +BUMBLINGS +BUMBOAT +BUMBOATS +BUMELIA +BUMELIAS +BUMF +BUMFS +BUMFUZZLE +BUMFUZZLED +BUMFUZZLES +BUMFUZZLING +BUMKIN +BUMKINS +BUMMALO +BUMMALOS +BUMMED +BUMMER +BUMMERS +BUMMEST +BUMMING +BUMP +BUMPED +BUMPER +BUMPERED +BUMPERING +BUMPERS +BUMPH +BUMPHS +BUMPIER +BUMPIEST +BUMPILY +BUMPINESS +BUMPINESSES +BUMPING +BUMPKIN +BUMPKINISH +BUMPKINLY +BUMPKINS +BUMPS +BUMPTIOUS +BUMPTIOUSLY +BUMPTIOUSNESS +BUMPTIOUSNESSES +BUMPY +BUMS +BUN +BUNA +BUNAS +BUNCH +BUNCHBERRIES +BUNCHBERRY +BUNCHED +BUNCHES +BUNCHGRASS +BUNCHGRASSES +BUNCHIER +BUNCHIEST +BUNCHILY +BUNCHING +BUNCHY +BUNCO +BUNCOED +BUNCOING +BUNCOMBE +BUNCOMBES +BUNCOS +BUND +BUNDIST +BUNDISTS +BUNDLE +BUNDLED +BUNDLER +BUNDLERS +BUNDLES +BUNDLING +BUNDLINGS +BUNDS +BUNDT +BUNDTS +BUNG +BUNGALOW +BUNGALOWS +BUNGED +BUNGEE +BUNGEES +BUNGHOLE +BUNGHOLES +BUNGING +BUNGLE +BUNGLED +BUNGLER +BUNGLERS +BUNGLES +BUNGLESOME +BUNGLING +BUNGLINGLY +BUNGLINGS +BUNGS +BUNION +BUNIONS +BUNK +BUNKED +BUNKER +BUNKERED +BUNKERING +BUNKERS +BUNKHOUSE +BUNKHOUSES +BUNKING +BUNKMATE +BUNKMATES +BUNKO +BUNKOED +BUNKOING +BUNKOS +BUNKS +BUNKUM +BUNKUMS +BUNN +BUNNIES +BUNNS +BUNNY +BUNRAKU +BUNRAKUS +BUNS +BUNT +BUNTED +BUNTER +BUNTERS +BUNTING +BUNTINGS +BUNTLINE +BUNTLINES +BUNTS +BUNYA +BUNYAS +BUOY +BUOYAGE +BUOYAGES +BUOYANCE +BUOYANCES +BUOYANCIES +BUOYANCY +BUOYANT +BUOYANTLY +BUOYED +BUOYING +BUOYS +BUPKES +BUPKUS +BUPPIE +BUPPIES +BUPPY +BUPRESTID +BUPRESTIDS +BUQSHA +BUQSHAS +BUR +BURA +BURAN +BURANS +BURAS +BURB +BURBLE +BURBLED +BURBLER +BURBLERS +BURBLES +BURBLIER +BURBLIEST +BURBLING +BURBLY +BURBOT +BURBOTS +BURBS +BURD +BURDEN +BURDENED +BURDENER +BURDENERS +BURDENING +BURDENS +BURDENSOME +BURDIE +BURDIES +BURDOCK +BURDOCKS +BURDS +BUREAU +BUREAUCRACIES +BUREAUCRACY +BUREAUCRAT +BUREAUCRATESE +BUREAUCRATESES +BUREAUCRATIC +BUREAUCRATISE +BUREAUCRATISED +BUREAUCRATISES +BUREAUCRATISING +BUREAUCRATISM +BUREAUCRATISMS +BUREAUCRATIZE +BUREAUCRATIZED +BUREAUCRATIZES +BUREAUCRATIZING +BUREAUCRATS +BUREAUS +BUREAUX +BURET +BURETS +BURETTE +BURETTES +BURG +BURGAGE +BURGAGES +BURGEE +BURGEES +BURGEON +BURGEONED +BURGEONING +BURGEONS +BURGER +BURGERS +BURGESS +BURGESSES +BURGH +BURGHAL +BURGHER +BURGHERS +BURGHS +BURGLAR +BURGLARIES +BURGLARIOUS +BURGLARIOUSLY +BURGLARIZE +BURGLARIZED +BURGLARIZES +BURGLARIZING +BURGLARPROOF +BURGLARS +BURGLARY +BURGLE +BURGLED +BURGLES +BURGLING +BURGOMASTER +BURGOMASTERS +BURGONET +BURGONETS +BURGOO +BURGOOS +BURGOUT +BURGOUTS +BURGRAVE +BURGRAVES +BURGS +BURGUNDIES +BURGUNDY +BURIAL +BURIALS +BURIED +BURIER +BURIERS +BURIES +BURIN +BURINS +BURKA +BURKAS +BURKE +BURKED +BURKER +BURKERS +BURKES +BURKING +BURKITE +BURKITES +BURL +BURLADERO +BURLADEROS +BURLAP +BURLAPS +BURLED +BURLER +BURLERS +BURLESK +BURLESKS +BURLESQUE +BURLESQUED +BURLESQUELY +BURLESQUER +BURLESQUERS +BURLESQUES +BURLESQUING +BURLEY +BURLEYS +BURLIER +BURLIEST +BURLILY +BURLINESS +BURLINESSES +BURLING +BURLS +BURLY +BURN +BURNABLE +BURNABLES +BURNED +BURNER +BURNERS +BURNET +BURNETS +BURNIE +BURNIES +BURNING +BURNINGLY +BURNINGS +BURNISH +BURNISHED +BURNISHER +BURNISHERS +BURNISHES +BURNISHING +BURNISHINGS +BURNOOSE +BURNOOSED +BURNOOSES +BURNOUS +BURNOUSES +BURNOUT +BURNOUTS +BURNS +BURNSIDES +BURNT +BURP +BURPED +BURPING +BURPS +BURQA +BURQAS +BURR +BURRED +BURRER +BURRERS +BURRIER +BURRIEST +BURRING +BURRITO +BURRITOS +BURRO +BURROS +BURROW +BURROWED +BURROWER +BURROWERS +BURROWING +BURROWS +BURRS +BURRSTONE +BURRSTONES +BURRY +BURS +BURSA +BURSAE +BURSAL +BURSAR +BURSARIAL +BURSARIES +BURSARS +BURSARY +BURSAS +BURSATE +BURSE +BURSEED +BURSEEDS +BURSERA +BURSES +BURSIFORM +BURSITIS +BURSITISES +BURST +BURSTED +BURSTER +BURSTERS +BURSTING +BURSTONE +BURSTONES +BURSTS +BURTHEN +BURTHENED +BURTHENING +BURTHENS +BURTON +BURTONS +BURWEED +BURWEEDS +BURY +BURYING +BUS +BUSBAR +BUSBARS +BUSBIES +BUSBOY +BUSBOYS +BUSBY +BUSED +BUSES +BUSGIRL +BUSGIRLS +BUSH +BUSHBUCK +BUSHBUCKS +BUSHED +BUSHEL +BUSHELED +BUSHELER +BUSHELERS +BUSHELING +BUSHELLED +BUSHELLER +BUSHELLERS +BUSHELLING +BUSHELMAN +BUSHELMEN +BUSHELS +BUSHER +BUSHERS +BUSHES +BUSHFIRE +BUSHFIRES +BUSHGOAT +BUSHGOATS +BUSHIDO +BUSHIDOS +BUSHIER +BUSHIEST +BUSHILY +BUSHINESS +BUSHINESSES +BUSHING +BUSHINGS +BUSHLAND +BUSHLANDS +BUSHLESS +BUSHLIKE +BUSHMAN +BUSHMASTER +BUSHMASTERS +BUSHMEN +BUSHPIG +BUSHPIGS +BUSHRANGER +BUSHRANGERS +BUSHRANGING +BUSHRANGINGS +BUSHTIT +BUSHTITS +BUSHVELD +BUSHVELDS +BUSHWA +BUSHWAH +BUSHWAHS +BUSHWAS +BUSHWHACK +BUSHWHACKED +BUSHWHACKER +BUSHWHACKERS +BUSHWHACKING +BUSHWHACKS +BUSHY +BUSIED +BUSIER +BUSIES +BUSIEST +BUSILY +BUSINESS +BUSINESSES +BUSINESSLIKE +BUSINESSMAN +BUSINESSMEN +BUSINESSPEOPLE +BUSINESSPERSON +BUSINESSPERSONS +BUSINESSWOMAN +BUSINESSWOMEN +BUSING +BUSINGS +BUSK +BUSKED +BUSKER +BUSKERS +BUSKIN +BUSKINED +BUSKING +BUSKINS +BUSKS +BUSLOAD +BUSLOADS +BUSMAN +BUSMEN +BUSS +BUSSED +BUSSES +BUSSING +BUSSINGS +BUST +BUSTARD +BUSTARDS +BUSTED +BUSTER +BUSTERS +BUSTIC +BUSTICATE +BUSTICATED +BUSTICATES +BUSTICATING +BUSTICS +BUSTIER +BUSTIERS +BUSTIEST +BUSTINESS +BUSTINESSES +BUSTING +BUSTLE +BUSTLED +BUSTLER +BUSTLERS +BUSTLES +BUSTLINE +BUSTLINES +BUSTLING +BUSTLINGLY +BUSTS +BUSTY +BUSULFAN +BUSULFANS +BUSY +BUSYBODIES +BUSYBODY +BUSYING +BUSYNESS +BUSYNESSES +BUSYWORK +BUSYWORKS +BUT +BUTADIENE +BUTADIENES +BUTANE +BUTANES +BUTANOL +BUTANOLS +BUTANONE +BUTANONES +BUTCH +BUTCHER +BUTCHERED +BUTCHERER +BUTCHERERS +BUTCHERIES +BUTCHERING +BUTCHERLY +BUTCHERS +BUTCHERY +BUTCHES +BUTCHNESS +BUTCHNESSES +BUTE +BUTENE +BUTENES +BUTEO +BUTEONINE +BUTEONINES +BUTEOS +BUTES +BUTLE +BUTLED +BUTLER +BUTLERIES +BUTLERS +BUTLERY +BUTLES +BUTLING +BUTS +BUTT +BUTTALS +BUTTE +BUTTED +BUTTER +BUTTERBALL +BUTTERBALLS +BUTTERBUR +BUTTERBURS +BUTTERCUP +BUTTERCUPS +BUTTERED +BUTTERFAT +BUTTERFATS +BUTTERFINGERED +BUTTERFINGERS +BUTTERFISH +BUTTERFISHES +BUTTERFLIED +BUTTERFLIES +BUTTERFLY +BUTTERFLYER +BUTTERFLYERS +BUTTERFLYING +BUTTERIER +BUTTERIES +BUTTERIEST +BUTTERING +BUTTERLESS +BUTTERMILK +BUTTERMILKS +BUTTERNUT +BUTTERNUTS +BUTTERS +BUTTERSCOTCH +BUTTERSCOTCHES +BUTTERWEED +BUTTERWEEDS +BUTTERWORT +BUTTERWORTS +BUTTERY +BUTTES +BUTTHEAD +BUTTHEADS +BUTTIES +BUTTING +BUTTINSKI +BUTTINSKIES +BUTTINSKIS +BUTTINSKY +BUTTOCK +BUTTOCKS +BUTTON +BUTTONBALL +BUTTONBALLS +BUTTONBUSH +BUTTONBUSHES +BUTTONED +BUTTONER +BUTTONERS +BUTTONHOLE +BUTTONHOLED +BUTTONHOLER +BUTTONHOLERS +BUTTONHOLES +BUTTONHOLING +BUTTONHOOK +BUTTONHOOKED +BUTTONHOOKING +BUTTONHOOKS +BUTTONING +BUTTONLESS +BUTTONS +BUTTONWOOD +BUTTONWOODS +BUTTONY +BUTTRESS +BUTTRESSED +BUTTRESSES +BUTTRESSING +BUTTS +BUTTSTOCK +BUTTSTOCKS +BUTTY +BUTUT +BUTUTS +BUTYL +BUTYLATE +BUTYLATED +BUTYLATES +BUTYLATING +BUTYLATION +BUTYLATIONS +BUTYLENE +BUTYLENES +BUTYLS +BUTYRAL +BUTYRALDEHYDE +BUTYRALDEHYDES +BUTYRALS +BUTYRATE +BUTYRATES +BUTYRIC +BUTYRIN +BUTYRINS +BUTYROPHENONE +BUTYROPHENONES +BUTYROUS +BUTYRYL +BUTYRYLS +BUXOM +BUXOMER +BUXOMEST +BUXOMLY +BUXOMNESS +BUXOMNESSES +BUY +BUYABLE +BUYBACK +BUYBACKS +BUYER +BUYERS +BUYING +BUYOFF +BUYOFFS +BUYOUT +BUYOUTS +BUYS +BUZUKI +BUZUKIA +BUZUKIS +BUZZ +BUZZARD +BUZZARDS +BUZZCUT +BUZZCUTS +BUZZED +BUZZER +BUZZERS +BUZZES +BUZZING +BUZZINGLY +BUZZWIG +BUZZWIGS +BUZZWORD +BUZZWORDS +BWANA +BWANAS +BY +BYCATCH +BYCATCHES +BYE +BYELAW +BYELAWS +BYES +BYGONE +BYGONES +BYLAW +BYLAWS +BYLINE +BYLINED +BYLINER +BYLINERS +BYLINES +BYLINING +BYNAME +BYNAMES +BYPASS +BYPASSED +BYPASSES +BYPASSING +BYPAST +BYPATH +BYPATHS +BYPLAY +BYPLAYS +BYPRODUCT +BYPRODUCTS +BYRE +BYRES +BYRL +BYRLED +BYRLING +BYRLS +BYRNIE +BYRNIES +BYROAD +BYROADS +BYS +BYSSAL +BYSSI +BYSSINOSES +BYSSINOSIS +BYSSUS +BYSSUSES +BYSTANDER +BYSTANDERS +BYSTREET +BYSTREETS +BYTALK +BYTALKS +BYTE +BYTES +BYWAY +BYWAYS +BYWORD +BYWORDS +BYWORK +BYWORKS +BYZANT +BYZANTINE +BYZANTS +CAB +CABAL +CABALA +CABALAS +CABALETTA +CABALETTAS +CABALETTE +CABALISM +CABALISMS +CABALIST +CABALISTIC +CABALISTS +CABALLED +CABALLERO +CABALLEROS +CABALLING +CABALS +CABANA +CABANAS +CABARET +CABARETS +CABBAGE +CABBAGED +CABBAGES +CABBAGEWORM +CABBAGEWORMS +CABBAGEY +CABBAGING +CABBAGY +CABBALA +CABBALAH +CABBALAHS +CABBALAS +CABBALISM +CABBALISMS +CABBALIST +CABBALISTS +CABBED +CABBIE +CABBIES +CABBING +CABBY +CABDRIVER +CABDRIVERS +CABER +CABERNET +CABERNETS +CABERS +CABESTRO +CABESTROS +CABEZON +CABEZONE +CABEZONES +CABEZONS +CABILDO +CABILDOS +CABIN +CABINED +CABINET +CABINETMAKER +CABINETMAKERS +CABINETMAKING +CABINETMAKINGS +CABINETRIES +CABINETRY +CABINETS +CABINETWORK +CABINETWORKS +CABINING +CABINMATE +CABINMATES +CABINS +CABLE +CABLECAST +CABLECASTED +CABLECASTING +CABLECASTS +CABLED +CABLEGRAM +CABLEGRAMS +CABLER +CABLERS +CABLES +CABLET +CABLETS +CABLEWAY +CABLEWAYS +CABLING +CABMAN +CABMEN +CABOB +CABOBS +CABOCHED +CABOCHON +CABOCHONS +CABOMBA +CABOMBAS +CABOODLE +CABOODLES +CABOOSE +CABOOSES +CABOSHED +CABOTAGE +CABOTAGES +CABRESTA +CABRESTAS +CABRESTO +CABRESTOS +CABRETTA +CABRETTAS +CABRILLA +CABRILLAS +CABRIOLE +CABRIOLES +CABRIOLET +CABRIOLETS +CABS +CABSTAND +CABSTANDS +CACA +CACAO +CACAOS +CACAS +CACCIATORE +CACHALOT +CACHALOTS +CACHE +CACHECTIC +CACHED +CACHEPOT +CACHEPOTS +CACHES +CACHET +CACHETED +CACHETING +CACHETS +CACHEXIA +CACHEXIAS +CACHEXIC +CACHEXIES +CACHEXY +CACHING +CACHINNATE +CACHINNATED +CACHINNATES +CACHINNATING +CACHINNATION +CACHINNATIONS +CACHOU +CACHOUS +CACHUCHA +CACHUCHAS +CACIQUE +CACIQUES +CACIQUISM +CACIQUISMS +CACKLE +CACKLED +CACKLER +CACKLERS +CACKLES +CACKLING +CACODEMON +CACODEMONIC +CACODEMONS +CACODYL +CACODYLIC +CACODYLS +CACOETHES +CACOGRAPHICAL +CACOGRAPHIES +CACOGRAPHY +CACOMISTLE +CACOMISTLES +CACOMIXL +CACOMIXLE +CACOMIXLES +CACOMIXLS +CACONYM +CACONYMIES +CACONYMS +CACONYMY +CACOPHONIES +CACOPHONOUS +CACOPHONOUSLY +CACOPHONY +CACTI +CACTOID +CACTUS +CACTUSES +CACUMINAL +CACUMINALS +CAD +CADASTER +CADASTERS +CADASTRAL +CADASTRALLY +CADASTRE +CADASTRES +CADAVER +CADAVERIC +CADAVERINE +CADAVERINES +CADAVEROUS +CADAVEROUSLY +CADAVERS +CADDICE +CADDICES +CADDIE +CADDIED +CADDIES +CADDIS +CADDISED +CADDISES +CADDISFLIES +CADDISFLY +CADDISH +CADDISHLY +CADDISHNESS +CADDISHNESSES +CADDISWORM +CADDISWORMS +CADDY +CADDYING +CADE +CADELLE +CADELLES +CADENCE +CADENCED +CADENCES +CADENCIES +CADENCING +CADENCY +CADENT +CADENTIAL +CADENZA +CADENZAS +CADES +CADET +CADETS +CADETSHIP +CADETSHIPS +CADGE +CADGED +CADGER +CADGERS +CADGES +CADGING +CADGY +CADI +CADIS +CADMIC +CADMIUM +CADMIUMS +CADRE +CADRES +CADS +CADUCEAN +CADUCEI +CADUCEUS +CADUCITIES +CADUCITY +CADUCOUS +CAECA +CAECAL +CAECALLY +CAECILIAN +CAECILIANS +CAECUM +CAEOMA +CAEOMAS +CAESAR +CAESAREAN +CAESAREANS +CAESARIAN +CAESARIANS +CAESARISM +CAESARISMS +CAESARS +CAESIUM +CAESIUMS +CAESPITOSE +CAESTUS +CAESTUSES +CAESURA +CAESURAE +CAESURAL +CAESURAS +CAESURIC +CAFE +CAFES +CAFETERIA +CAFETERIAS +CAFETORIA +CAFETORIUM +CAFETORIUMS +CAFF +CAFFEIN +CAFFEINATED +CAFFEINE +CAFFEINES +CAFFEINIC +CAFFEINS +CAFFS +CAFTAN +CAFTANED +CAFTANS +CAGE +CAGED +CAGEFUL +CAGEFULS +CAGELIKE +CAGELING +CAGELINGS +CAGER +CAGERS +CAGES +CAGEY +CAGEYNESS +CAGEYNESSES +CAGIER +CAGIEST +CAGILY +CAGINESS +CAGINESSES +CAGING +CAGY +CAHIER +CAHIERS +CAHOOT +CAHOOTS +CAHOW +CAHOWS +CAID +CAIDS +CAIMAN +CAIMANS +CAIN +CAINS +CAIQUE +CAIQUES +CAIRD +CAIRDS +CAIRN +CAIRNED +CAIRNGORM +CAIRNGORMS +CAIRNS +CAIRNY +CAISSON +CAISSONS +CAITIFF +CAITIFFS +CAJAPUT +CAJAPUTS +CAJEPUT +CAJEPUTS +CAJOLE +CAJOLED +CAJOLEMENT +CAJOLEMENTS +CAJOLER +CAJOLERIES +CAJOLERS +CAJOLERY +CAJOLES +CAJOLING +CAJON +CAJONES +CAJUPUT +CAJUPUTS +CAKE +CAKED +CAKES +CAKEWALK +CAKEWALKED +CAKEWALKER +CAKEWALKERS +CAKEWALKING +CAKEWALKS +CAKEY +CAKIER +CAKIEST +CAKINESS +CAKINESSES +CAKING +CAKY +CALABASH +CALABASHES +CALABAZA +CALABAZAS +CALABOOSE +CALABOOSES +CALADIUM +CALADIUMS +CALAMANCO +CALAMANCOES +CALAMANCOS +CALAMANDER +CALAMANDERS +CALAMAR +CALAMARI +CALAMARIES +CALAMARIS +CALAMARS +CALAMARY +CALAMATA +CALAMATAS +CALAMI +CALAMINE +CALAMINED +CALAMINES +CALAMINING +CALAMINT +CALAMINTS +CALAMITE +CALAMITES +CALAMITIES +CALAMITOUS +CALAMITOUSLY +CALAMITY +CALAMONDIN +CALAMONDINS +CALAMUS +CALANDO +CALASH +CALASHES +CALATHI +CALATHOS +CALATHUS +CALCANEA +CALCANEAL +CALCANEI +CALCANEUM +CALCANEUS +CALCAR +CALCARATE +CALCAREOUS +CALCAREOUSLY +CALCARIA +CALCARS +CALCEATE +CALCEDONIES +CALCEDONY +CALCES +CALCIC +CALCICOLE +CALCICOLES +CALCICOLOUS +CALCIFEROL +CALCIFEROLS +CALCIFEROUS +CALCIFIC +CALCIFICATION +CALCIFICATIONS +CALCIFIED +CALCIFIES +CALCIFUGE +CALCIFUGES +CALCIFUGOUS +CALCIFY +CALCIFYING +CALCIMINE +CALCIMINED +CALCIMINES +CALCIMINING +CALCINATION +CALCINATIONS +CALCINE +CALCINED +CALCINES +CALCINING +CALCINOSES +CALCINOSIS +CALCITE +CALCITES +CALCITIC +CALCITONIN +CALCITONINS +CALCIUM +CALCIUMS +CALCSPAR +CALCSPARS +CALCTUFA +CALCTUFAS +CALCTUFF +CALCTUFFS +CALCULABLE +CALCULATE +CALCULATED +CALCULATEDLY +CALCULATEDNESS +CALCULATES +CALCULATING +CALCULATINGLY +CALCULATION +CALCULATIONAL +CALCULATIONS +CALCULATOR +CALCULATORS +CALCULI +CALCULOUS +CALCULUS +CALCULUSES +CALDARIA +CALDARIUM +CALDERA +CALDERAS +CALDRON +CALDRONS +CALECHE +CALECHES +CALEFACTORIES +CALEFACTORY +CALENDAL +CALENDAR +CALENDARED +CALENDARING +CALENDARS +CALENDER +CALENDERED +CALENDERER +CALENDERERS +CALENDERING +CALENDERS +CALENDRIC +CALENDRICAL +CALENDS +CALENDULA +CALENDULAS +CALENTURE +CALENTURES +CALESA +CALESAS +CALESCENT +CALF +CALFLIKE +CALFS +CALFSKIN +CALFSKINS +CALIBER +CALIBERS +CALIBRATE +CALIBRATED +CALIBRATES +CALIBRATING +CALIBRATION +CALIBRATIONS +CALIBRATOR +CALIBRATORS +CALIBRE +CALIBRED +CALIBRES +CALICES +CALICHE +CALICHES +CALICLE +CALICLES +CALICO +CALICOES +CALICOS +CALIF +CALIFATE +CALIFATES +CALIFORNIUM +CALIFORNIUMS +CALIFS +CALIGINOUS +CALIPASH +CALIPASHES +CALIPEE +CALIPEES +CALIPER +CALIPERED +CALIPERING +CALIPERS +CALIPH +CALIPHAL +CALIPHATE +CALIPHATES +CALIPHS +CALISAYA +CALISAYAS +CALISTHENIC +CALISTHENICS +CALIX +CALK +CALKED +CALKER +CALKERS +CALKIN +CALKING +CALKINGS +CALKINS +CALKS +CALL +CALLA +CALLABLE +CALLALOO +CALLALOOS +CALLAN +CALLANS +CALLANT +CALLANTS +CALLAS +CALLBACK +CALLBACKS +CALLBOARD +CALLBOARDS +CALLBOY +CALLBOYS +CALLED +CALLEE +CALLEES +CALLER +CALLERS +CALLET +CALLETS +CALLIGRAPHER +CALLIGRAPHERS +CALLIGRAPHIC +CALLIGRAPHIES +CALLIGRAPHIST +CALLIGRAPHISTS +CALLIGRAPHY +CALLING +CALLINGS +CALLIOPE +CALLIOPES +CALLIPEE +CALLIPEES +CALLIPER +CALLIPERED +CALLIPERING +CALLIPERS +CALLIPYGIAN +CALLIPYGOUS +CALLITHUMP +CALLITHUMPIAN +CALLITHUMPS +CALLOSE +CALLOSES +CALLOSITIES +CALLOSITY +CALLOUS +CALLOUSED +CALLOUSES +CALLOUSING +CALLOUSLY +CALLOUSNESS +CALLOUSNESSES +CALLOW +CALLOWER +CALLOWEST +CALLOWNESS +CALLOWNESSES +CALLS +CALLUS +CALLUSED +CALLUSES +CALLUSING +CALM +CALMATIVE +CALMATIVES +CALMED +CALMER +CALMEST +CALMING +CALMINGLY +CALMLY +CALMNESS +CALMNESSES +CALMODULIN +CALMODULINS +CALMS +CALO +CALOMEL +CALOMELS +CALORIC +CALORICALLY +CALORICS +CALORIE +CALORIES +CALORIFIC +CALORIMETER +CALORIMETERS +CALORIMETRIC +CALORIMETRIES +CALORIMETRY +CALORIZE +CALORIZED +CALORIZES +CALORIZING +CALORY +CALOS +CALOTTE +CALOTTES +CALOTYPE +CALOTYPES +CALOYER +CALOYERS +CALPAC +CALPACK +CALPACKS +CALPACS +CALPAIN +CALPAINS +CALQUE +CALQUED +CALQUES +CALQUING +CALTHROP +CALTHROPS +CALTRAP +CALTRAPS +CALTROP +CALTROPS +CALUMET +CALUMETS +CALUMNIATE +CALUMNIATED +CALUMNIATES +CALUMNIATING +CALUMNIATION +CALUMNIATIONS +CALUMNIATOR +CALUMNIATORS +CALUMNIES +CALUMNIOUS +CALUMNIOUSLY +CALUMNY +CALUTRON +CALUTRONS +CALVADOS +CALVADOSES +CALVARIA +CALVARIAL +CALVARIAN +CALVARIAS +CALVARIES +CALVARIUM +CALVARIUMS +CALVARY +CALVE +CALVED +CALVES +CALVING +CALVITIES +CALX +CALXES +CALYCATE +CALYCEAL +CALYCES +CALYCINAL +CALYCINE +CALYCLE +CALYCLES +CALYCULAR +CALYCULI +CALYCULUS +CALYPSO +CALYPSOES +CALYPSONIAN +CALYPSONIANS +CALYPSOS +CALYPTER +CALYPTERS +CALYPTRA +CALYPTRAS +CALYX +CALYXES +CALZONE +CALZONES +CAM +CAMAIL +CAMAILED +CAMAILS +CAMARADERIE +CAMARADERIES +CAMARILLA +CAMARILLAS +CAMAS +CAMASES +CAMASS +CAMASSES +CAMBER +CAMBERED +CAMBERING +CAMBERS +CAMBIA +CAMBIAL +CAMBISM +CAMBISMS +CAMBIST +CAMBISTS +CAMBIUM +CAMBIUMS +CAMBOGIA +CAMBOGIAS +CAMBRIC +CAMBRICS +CAMCORDER +CAMCORDERS +CAME +CAMEL +CAMELBACK +CAMELBACKS +CAMELEER +CAMELEERS +CAMELHAIR +CAMELHAIRS +CAMELIA +CAMELIAS +CAMELID +CAMELIDS +CAMELLIA +CAMELLIAS +CAMELLIKE +CAMELOPARD +CAMELOPARDS +CAMELS +CAMEO +CAMEOED +CAMEOING +CAMEOS +CAMERA +CAMERAE +CAMERAL +CAMERAMAN +CAMERAMEN +CAMERAPERSON +CAMERAPERSONS +CAMERAS +CAMERAWOMAN +CAMERAWOMEN +CAMERLENGO +CAMERLENGOS +CAMES +CAMION +CAMIONS +CAMISA +CAMISADE +CAMISADES +CAMISADO +CAMISADOES +CAMISADOS +CAMISAS +CAMISE +CAMISES +CAMISIA +CAMISIAS +CAMISOLE +CAMISOLES +CAMLET +CAMLETS +CAMMIE +CAMMIES +CAMO +CAMOMILE +CAMOMILES +CAMORRA +CAMORRAS +CAMORRIST +CAMORRISTA +CAMORRISTI +CAMORRISTS +CAMOS +CAMOUFLAGE +CAMOUFLAGEABLE +CAMOUFLAGED +CAMOUFLAGES +CAMOUFLAGIC +CAMOUFLAGING +CAMP +CAMPAGNA +CAMPAGNE +CAMPAIGN +CAMPAIGNED +CAMPAIGNER +CAMPAIGNERS +CAMPAIGNING +CAMPAIGNS +CAMPANILE +CAMPANILES +CAMPANILI +CAMPANOLOGIES +CAMPANOLOGIST +CAMPANOLOGISTS +CAMPANOLOGY +CAMPANULA +CAMPANULAS +CAMPANULATE +CAMPCRAFT +CAMPCRAFTS +CAMPED +CAMPER +CAMPERS +CAMPESINO +CAMPESINOS +CAMPESTRAL +CAMPFIRE +CAMPFIRES +CAMPGROUND +CAMPGROUNDS +CAMPHENE +CAMPHENES +CAMPHINE +CAMPHINES +CAMPHIRE +CAMPHIRES +CAMPHOL +CAMPHOLS +CAMPHOR +CAMPHORACEOUS +CAMPHORATE +CAMPHORATED +CAMPHORATES +CAMPHORATING +CAMPHORIC +CAMPHORS +CAMPI +CAMPIER +CAMPIEST +CAMPILY +CAMPINESS +CAMPINESSES +CAMPING +CAMPINGS +CAMPION +CAMPIONS +CAMPO +CAMPONG +CAMPONGS +CAMPOREE +CAMPOREES +CAMPOS +CAMPOUT +CAMPOUTS +CAMPS +CAMPSHIRT +CAMPSHIRTS +CAMPSITE +CAMPSITES +CAMPSTOOL +CAMPSTOOLS +CAMPUS +CAMPUSED +CAMPUSES +CAMPUSING +CAMPY +CAMPYLOBACTER +CAMPYLOBACTERS +CAMPYLOTROPOUS +CAMS +CAMSHAFT +CAMSHAFTS +CAN +CANAILLE +CANAILLES +CANAKIN +CANAKINS +CANAL +CANALBOAT +CANALBOATS +CANALED +CANALICULAR +CANALICULI +CANALICULUS +CANALING +CANALISE +CANALISED +CANALISES +CANALISING +CANALIZATION +CANALIZATIONS +CANALIZE +CANALIZED +CANALIZES +CANALIZING +CANALLED +CANALLER +CANALLERS +CANALLING +CANALS +CANAPE +CANAPES +CANARD +CANARDS +CANARIES +CANARY +CANASTA +CANASTAS +CANCAN +CANCANS +CANCEL +CANCELABLE +CANCELATION +CANCELATIONS +CANCELED +CANCELER +CANCELERS +CANCELING +CANCELLABLE +CANCELLATION +CANCELLATIONS +CANCELLED +CANCELLER +CANCELLERS +CANCELLING +CANCELLOUS +CANCELS +CANCER +CANCERED +CANCEROUS +CANCEROUSLY +CANCERS +CANCHA +CANCHAS +CANCROID +CANCROIDS +CANDELA +CANDELABRA +CANDELABRAS +CANDELABRUM +CANDELABRUMS +CANDELAS +CANDENT +CANDESCENCE +CANDESCENCES +CANDESCENT +CANDID +CANDIDA +CANDIDACIES +CANDIDACY +CANDIDAL +CANDIDAS +CANDIDATE +CANDIDATES +CANDIDATURE +CANDIDATURES +CANDIDER +CANDIDEST +CANDIDIASES +CANDIDIASIS +CANDIDLY +CANDIDNESS +CANDIDNESSES +CANDIDS +CANDIED +CANDIES +CANDLE +CANDLEBERRIES +CANDLEBERRY +CANDLED +CANDLEFISH +CANDLEFISHES +CANDLEHOLDER +CANDLEHOLDERS +CANDLELIGHT +CANDLELIGHTED +CANDLELIGHTER +CANDLELIGHTERS +CANDLELIGHTS +CANDLELIT +CANDLENUT +CANDLENUTS +CANDLEPIN +CANDLEPINS +CANDLEPOWER +CANDLEPOWERS +CANDLER +CANDLERS +CANDLES +CANDLESNUFFER +CANDLESNUFFERS +CANDLESTICK +CANDLESTICKS +CANDLEWICK +CANDLEWICKS +CANDLEWOOD +CANDLEWOODS +CANDLING +CANDOR +CANDORS +CANDOUR +CANDOURS +CANDY +CANDYFLOSS +CANDYFLOSSES +CANDYGRAM +CANDYGRAMS +CANDYING +CANDYTUFT +CANDYTUFTS +CANE +CANEBRAKE +CANEBRAKES +CANED +CANELLA +CANELLAS +CANEPHOR +CANEPHORS +CANER +CANERS +CANES +CANESCENT +CANEWARE +CANEWARES +CANFIELD +CANFIELDS +CANFUL +CANFULS +CANGUE +CANGUES +CANICULAR +CANID +CANIDS +CANIKIN +CANIKINS +CANINE +CANINES +CANING +CANINITIES +CANINITY +CANISTEL +CANISTELS +CANISTER +CANISTERS +CANITIES +CANKER +CANKERED +CANKERING +CANKEROUS +CANKERS +CANKERWORM +CANKERWORMS +CANNA +CANNABIC +CANNABIN +CANNABINOID +CANNABINOIDS +CANNABINOL +CANNABINOLS +CANNABINS +CANNABIS +CANNABISES +CANNAS +CANNED +CANNEL +CANNELLONI +CANNELON +CANNELONS +CANNELS +CANNER +CANNERIES +CANNERS +CANNERY +CANNIBAL +CANNIBALISE +CANNIBALISED +CANNIBALISES +CANNIBALISING +CANNIBALISM +CANNIBALISMS +CANNIBALISTIC +CANNIBALIZATION +CANNIBALIZE +CANNIBALIZED +CANNIBALIZES +CANNIBALIZING +CANNIBALS +CANNIE +CANNIER +CANNIEST +CANNIKIN +CANNIKINS +CANNILY +CANNINESS +CANNINESSES +CANNING +CANNINGS +CANNISTER +CANNISTERS +CANNOLI +CANNOLIS +CANNON +CANNONADE +CANNONADED +CANNONADES +CANNONADING +CANNONBALL +CANNONBALLED +CANNONBALLING +CANNONBALLS +CANNONED +CANNONEER +CANNONEERS +CANNONING +CANNONRIES +CANNONRY +CANNONS +CANNOT +CANNULA +CANNULAE +CANNULAR +CANNULAS +CANNULATE +CANNULATED +CANNULATES +CANNULATING +CANNY +CANOE +CANOEABLE +CANOED +CANOEING +CANOEIST +CANOEISTS +CANOER +CANOERS +CANOES +CANOLA +CANOLAS +CANON +CANONESS +CANONESSES +CANONIC +CANONICAL +CANONICALLY +CANONICALS +CANONICITIES +CANONICITY +CANONISE +CANONISED +CANONISES +CANONISING +CANONIST +CANONISTS +CANONIZATION +CANONIZATIONS +CANONIZE +CANONIZED +CANONIZER +CANONIZERS +CANONIZES +CANONIZING +CANONRIES +CANONRY +CANONS +CANOODLE +CANOODLED +CANOODLES +CANOODLING +CANOPIC +CANOPIED +CANOPIES +CANOPY +CANOPYING +CANOROUS +CANOROUSLY +CANOROUSNESS +CANOROUSNESSES +CANS +CANSFUL +CANSO +CANSOS +CANST +CANT +CANTABILE +CANTABILES +CANTAL +CANTALA +CANTALAS +CANTALOUP +CANTALOUPE +CANTALOUPES +CANTALOUPS +CANTALS +CANTANKEROUS +CANTANKEROUSLY +CANTATA +CANTATAS +CANTATRICE +CANTATRICES +CANTATRICI +CANTDOG +CANTDOGS +CANTED +CANTEEN +CANTEENS +CANTER +CANTERED +CANTERING +CANTERS +CANTHAL +CANTHARIDES +CANTHARIDIN +CANTHARIDINS +CANTHARIS +CANTHAXANTHIN +CANTHAXANTHINS +CANTHI +CANTHITIS +CANTHITISES +CANTHUS +CANTIC +CANTICLE +CANTICLES +CANTILENA +CANTILENAS +CANTILEVER +CANTILEVERED +CANTILEVERING +CANTILEVERS +CANTILLATE +CANTILLATED +CANTILLATES +CANTILLATING +CANTILLATION +CANTILLATIONS +CANTINA +CANTINAS +CANTING +CANTLE +CANTLES +CANTO +CANTON +CANTONAL +CANTONED +CANTONING +CANTONMENT +CANTONMENTS +CANTONS +CANTOR +CANTORIAL +CANTORS +CANTOS +CANTRAIP +CANTRAIPS +CANTRAP +CANTRAPS +CANTRIP +CANTRIPS +CANTS +CANTUS +CANTY +CANULA +CANULAE +CANULAR +CANULAS +CANULATE +CANULATED +CANULATES +CANULATING +CANVAS +CANVASBACK +CANVASBACKS +CANVASED +CANVASER +CANVASERS +CANVASES +CANVASING +CANVASLIKE +CANVASS +CANVASSED +CANVASSER +CANVASSERS +CANVASSES +CANVASSING +CANYON +CANYONEER +CANYONEERS +CANYONING +CANYONINGS +CANYONS +CANZONA +CANZONAS +CANZONE +CANZONES +CANZONET +CANZONETS +CANZONI +CAOUTCHOUC +CAOUTCHOUCS +CAP +CAPABILITIES +CAPABILITY +CAPABLE +CAPABLENESS +CAPABLENESSES +CAPABLER +CAPABLEST +CAPABLY +CAPACIOUS +CAPACIOUSLY +CAPACIOUSNESS +CAPACIOUSNESSES +CAPACITANCE +CAPACITANCES +CAPACITATE +CAPACITATED +CAPACITATES +CAPACITATING +CAPACITATION +CAPACITATIONS +CAPACITIES +CAPACITIVE +CAPACITIVELY +CAPACITOR +CAPACITORS +CAPACITY +CAPARISON +CAPARISONED +CAPARISONING +CAPARISONS +CAPE +CAPED +CAPELAN +CAPELANS +CAPELET +CAPELETS +CAPELIN +CAPELINS +CAPELLINI +CAPER +CAPERCAILLIE +CAPERCAILLIES +CAPERCAILZIE +CAPERCAILZIES +CAPERED +CAPERER +CAPERERS +CAPERING +CAPERS +CAPES +CAPESKIN +CAPESKINS +CAPEWORK +CAPEWORKS +CAPFUL +CAPFULS +CAPH +CAPHS +CAPIAS +CAPIASES +CAPILLARIES +CAPILLARITIES +CAPILLARITY +CAPILLARY +CAPITA +CAPITAL +CAPITALISE +CAPITALISED +CAPITALISES +CAPITALISING +CAPITALISM +CAPITALISMS +CAPITALIST +CAPITALISTIC +CAPITALISTS +CAPITALIZATION +CAPITALIZATIONS +CAPITALIZE +CAPITALIZED +CAPITALIZES +CAPITALIZING +CAPITALLY +CAPITALS +CAPITATE +CAPITATED +CAPITATION +CAPITATIONS +CAPITELLA +CAPITELLUM +CAPITOL +CAPITOLS +CAPITULA +CAPITULAR +CAPITULARIES +CAPITULARY +CAPITULATE +CAPITULATED +CAPITULATES +CAPITULATING +CAPITULATION +CAPITULATIONS +CAPITULUM +CAPIZ +CAPIZES +CAPLESS +CAPLET +CAPLETS +CAPLIN +CAPLINS +CAPMAKER +CAPMAKERS +CAPO +CAPOEIRA +CAPOEIRAS +CAPON +CAPONATA +CAPONATAS +CAPONIER +CAPONIERS +CAPONIZE +CAPONIZED +CAPONIZES +CAPONIZING +CAPONS +CAPORAL +CAPORALS +CAPOS +CAPOTE +CAPOTES +CAPOUCH +CAPOUCHES +CAPPED +CAPPELLETTI +CAPPER +CAPPERS +CAPPING +CAPPINGS +CAPPUCCINO +CAPPUCCINOS +CAPRIC +CAPRICCI +CAPRICCIO +CAPRICCIOS +CAPRICE +CAPRICES +CAPRICIOUS +CAPRICIOUSLY +CAPRICIOUSNESS +CAPRIFICATION +CAPRIFICATIONS +CAPRIFIG +CAPRIFIGS +CAPRINE +CAPRIOLE +CAPRIOLED +CAPRIOLES +CAPRIOLING +CAPRIS +CAPROCK +CAPROCKS +CAPROLACTAM +CAPROLACTAMS +CAPS +CAPSAICIN +CAPSAICINS +CAPSICIN +CAPSICINS +CAPSICUM +CAPSICUMS +CAPSID +CAPSIDAL +CAPSIDS +CAPSIZE +CAPSIZED +CAPSIZES +CAPSIZING +CAPSOMER +CAPSOMERE +CAPSOMERES +CAPSOMERS +CAPSTAN +CAPSTANS +CAPSTONE +CAPSTONES +CAPSULAR +CAPSULATE +CAPSULATED +CAPSULE +CAPSULED +CAPSULES +CAPSULING +CAPSULIZE +CAPSULIZED +CAPSULIZES +CAPSULIZING +CAPTAIN +CAPTAINCIES +CAPTAINCY +CAPTAINED +CAPTAINING +CAPTAINS +CAPTAINSHIP +CAPTAINSHIPS +CAPTAN +CAPTANS +CAPTION +CAPTIONED +CAPTIONING +CAPTIONLESS +CAPTIONS +CAPTIOUS +CAPTIOUSLY +CAPTIOUSNESS +CAPTIOUSNESSES +CAPTIVATE +CAPTIVATED +CAPTIVATES +CAPTIVATING +CAPTIVATION +CAPTIVATIONS +CAPTIVATOR +CAPTIVATORS +CAPTIVE +CAPTIVES +CAPTIVITIES +CAPTIVITY +CAPTOPRIL +CAPTOPRILS +CAPTOR +CAPTORS +CAPTURE +CAPTURED +CAPTURER +CAPTURERS +CAPTURES +CAPTURING +CAPUCHE +CAPUCHED +CAPUCHES +CAPUCHIN +CAPUCHINS +CAPUT +CAPYBARA +CAPYBARAS +CAR +CARABAO +CARABAOS +CARABID +CARABIDS +CARABIN +CARABINE +CARABINEER +CARABINEERS +CARABINER +CARABINERO +CARABINEROS +CARABINERS +CARABINES +CARABINIER +CARABINIERE +CARABINIERI +CARABINIERS +CARABINS +CARACAL +CARACALS +CARACARA +CARACARAS +CARACK +CARACKS +CARACOL +CARACOLE +CARACOLED +CARACOLER +CARACOLERS +CARACOLES +CARACOLING +CARACOLLED +CARACOLLING +CARACOLS +CARACUL +CARACULS +CARAFE +CARAFES +CARAGANA +CARAGANAS +CARAGEEN +CARAGEENS +CARAMBA +CARAMBOLA +CARAMBOLAS +CARAMEL +CARAMELISE +CARAMELISED +CARAMELISES +CARAMELISING +CARAMELIZE +CARAMELIZED +CARAMELIZES +CARAMELIZING +CARAMELS +CARANGID +CARANGIDS +CARANGOID +CARAPACE +CARAPACED +CARAPACES +CARAPAX +CARAPAXES +CARASSOW +CARASSOWS +CARAT +CARATE +CARATES +CARATS +CARAVAN +CARAVANED +CARAVANER +CARAVANERS +CARAVANING +CARAVANNED +CARAVANNER +CARAVANNERS +CARAVANNING +CARAVANS +CARAVANSARIES +CARAVANSARY +CARAVANSERAI +CARAVANSERAIS +CARAVEL +CARAVELLE +CARAVELLES +CARAVELS +CARAWAY +CARAWAYS +CARB +CARBACHOL +CARBACHOLS +CARBAMATE +CARBAMATES +CARBAMIC +CARBAMIDE +CARBAMIDES +CARBAMINO +CARBAMOYL +CARBAMOYLS +CARBAMYL +CARBAMYLS +CARBANION +CARBANIONS +CARBARN +CARBARNS +CARBARYL +CARBARYLS +CARBAZOLE +CARBAZOLES +CARBIDE +CARBIDES +CARBINE +CARBINEER +CARBINEERS +CARBINES +CARBINOL +CARBINOLS +CARBO +CARBOCYCLIC +CARBOHYDRASE +CARBOHYDRASES +CARBOHYDRATE +CARBOHYDRATES +CARBOLIC +CARBOLICS +CARBOLIZE +CARBOLIZED +CARBOLIZES +CARBOLIZING +CARBON +CARBONACEOUS +CARBONADE +CARBONADES +CARBONADO +CARBONADOED +CARBONADOES +CARBONADOING +CARBONADOS +CARBONARA +CARBONARAS +CARBONATE +CARBONATED +CARBONATES +CARBONATING +CARBONATION +CARBONATIONS +CARBONIC +CARBONIFEROUS +CARBONIUM +CARBONIUMS +CARBONIZATION +CARBONIZATIONS +CARBONIZE +CARBONIZED +CARBONIZES +CARBONIZING +CARBONLESS +CARBONNADE +CARBONNADES +CARBONOUS +CARBONS +CARBONYL +CARBONYLATION +CARBONYLATIONS +CARBONYLIC +CARBONYLS +CARBORA +CARBORAS +CARBOS +CARBOXYL +CARBOXYLASE +CARBOXYLASES +CARBOXYLATE +CARBOXYLATED +CARBOXYLATES +CARBOXYLATING +CARBOXYLATION +CARBOXYLATIONS +CARBOXYLIC +CARBOXYLS +CARBOY +CARBOYED +CARBOYS +CARBS +CARBUNCLE +CARBUNCLED +CARBUNCLES +CARBUNCULAR +CARBURET +CARBURETED +CARBURETING +CARBURETION +CARBURETIONS +CARBURETOR +CARBURETORS +CARBURETS +CARBURETTED +CARBURETTER +CARBURETTERS +CARBURETTING +CARBURETTOR +CARBURETTORS +CARBURISE +CARBURISED +CARBURISES +CARBURISING +CARBURIZATION +CARBURIZATIONS +CARBURIZE +CARBURIZED +CARBURIZES +CARBURIZING +CARCAJOU +CARCAJOUS +CARCANET +CARCANETS +CARCASE +CARCASES +CARCASS +CARCASSES +CARCEL +CARCELS +CARCERAL +CARCINOGEN +CARCINOGENESES +CARCINOGENESIS +CARCINOGENIC +CARCINOGENICITY +CARCINOGENS +CARCINOID +CARCINOIDS +CARCINOMA +CARCINOMAS +CARCINOMATA +CARCINOMATOSES +CARCINOMATOSIS +CARCINOMATOUS +CARCINOSARCOMA +CARCINOSARCOMAS +CARD +CARDAMOM +CARDAMOMS +CARDAMON +CARDAMONS +CARDAMUM +CARDAMUMS +CARDBOARD +CARDBOARDS +CARDCASE +CARDCASES +CARDED +CARDER +CARDERS +CARDHOLDER +CARDHOLDERS +CARDIA +CARDIAC +CARDIACS +CARDIAE +CARDIAS +CARDIGAN +CARDIGANS +CARDINAL +CARDINALATE +CARDINALATES +CARDINALITIES +CARDINALITY +CARDINALLY +CARDINALS +CARDINALSHIP +CARDINALSHIPS +CARDING +CARDINGS +CARDIO +CARDIOGENIC +CARDIOGRAM +CARDIOGRAMS +CARDIOGRAPH +CARDIOGRAPHIC +CARDIOGRAPHIES +CARDIOGRAPHS +CARDIOGRAPHY +CARDIOID +CARDIOIDS +CARDIOLOGICAL +CARDIOLOGIES +CARDIOLOGIST +CARDIOLOGISTS +CARDIOLOGY +CARDIOMYOPATHY +CARDIOPATHIES +CARDIOPATHY +CARDIOPULMONARY +CARDIOTHORACIC +CARDIOTONIC +CARDIOTONICS +CARDIOVASCULAR +CARDITIC +CARDITIS +CARDITISES +CARDON +CARDONS +CARDOON +CARDOONS +CARDPLAYER +CARDPLAYERS +CARDS +CARDSHARP +CARDSHARPER +CARDSHARPERS +CARDSHARPS +CARE +CARED +CAREEN +CAREENED +CAREENER +CAREENERS +CAREENING +CAREENS +CAREER +CAREERED +CAREERER +CAREERERS +CAREERING +CAREERISM +CAREERISMS +CAREERIST +CAREERISTS +CAREERS +CAREFREE +CAREFUL +CAREFULLER +CAREFULLEST +CAREFULLY +CAREFULNESS +CAREFULNESSES +CAREGIVER +CAREGIVERS +CAREGIVING +CAREGIVINGS +CARELESS +CARELESSLY +CARELESSNESS +CARELESSNESSES +CARER +CARERS +CARES +CARESS +CARESSED +CARESSER +CARESSERS +CARESSES +CARESSING +CARESSINGLY +CARESSIVE +CARESSIVELY +CARET +CARETAKE +CARETAKEN +CARETAKER +CARETAKERS +CARETAKES +CARETAKING +CARETAKINGS +CARETOOK +CARETS +CAREWORN +CAREX +CARFARE +CARFARES +CARFUL +CARFULS +CARGO +CARGOES +CARGOS +CARHOP +CARHOPPED +CARHOPPING +CARHOPS +CARIBE +CARIBES +CARIBOU +CARIBOUS +CARICATURAL +CARICATURE +CARICATURED +CARICATURES +CARICATURING +CARICATURIST +CARICATURISTS +CARICES +CARIED +CARIES +CARILLON +CARILLONNED +CARILLONNEUR +CARILLONNEURS +CARILLONNING +CARILLONS +CARINA +CARINAE +CARINAL +CARINAS +CARINATE +CARINATED +CARING +CARIOCA +CARIOCAS +CARIOGENIC +CARIOLE +CARIOLES +CARIOSITIES +CARIOSITY +CARIOUS +CARITAS +CARITASES +CARJACK +CARJACKED +CARJACKER +CARJACKERS +CARJACKING +CARJACKINGS +CARJACKS +CARK +CARKED +CARKING +CARKS +CARL +CARLE +CARLES +CARLESS +CARLIN +CARLINE +CARLINES +CARLING +CARLINGS +CARLINS +CARLISH +CARLOAD +CARLOADS +CARLS +CARMAGNOLE +CARMAGNOLES +CARMAKER +CARMAKERS +CARMAN +CARMEN +CARMINATIVE +CARMINATIVES +CARMINE +CARMINES +CARN +CARNAGE +CARNAGES +CARNAL +CARNALITIES +CARNALITY +CARNALLITE +CARNALLITES +CARNALLY +CARNASSIAL +CARNASSIALS +CARNATION +CARNATIONS +CARNAUBA +CARNAUBAS +CARNELIAN +CARNELIANS +CARNET +CARNETS +CARNEY +CARNEYS +CARNIE +CARNIES +CARNIFIED +CARNIFIES +CARNIFY +CARNIFYING +CARNITINE +CARNITINES +CARNIVAL +CARNIVALS +CARNIVORA +CARNIVORE +CARNIVORES +CARNIVORIES +CARNIVOROUS +CARNIVOROUSLY +CARNIVOROUSNESS +CARNIVORY +CARNOSAUR +CARNOSAURS +CARNOTITE +CARNOTITES +CARNS +CARNY +CAROACH +CAROACHES +CAROB +CAROBS +CAROCH +CAROCHE +CAROCHES +CAROL +CAROLED +CAROLER +CAROLERS +CAROLI +CAROLING +CAROLLED +CAROLLER +CAROLLERS +CAROLLING +CAROLS +CAROLUS +CAROLUSES +CAROM +CAROMED +CAROMING +CAROMS +CAROTENE +CAROTENES +CAROTENOID +CAROTENOIDS +CAROTID +CAROTIDAL +CAROTIDS +CAROTIN +CAROTINOID +CAROTINOIDS +CAROTINS +CAROUSAL +CAROUSALS +CAROUSE +CAROUSED +CAROUSEL +CAROUSELS +CAROUSER +CAROUSERS +CAROUSES +CAROUSING +CARP +CARPACCIO +CARPACCIOS +CARPAL +CARPALE +CARPALIA +CARPALS +CARPED +CARPEL +CARPELLARY +CARPELLATE +CARPELS +CARPENTER +CARPENTERED +CARPENTERING +CARPENTERS +CARPENTRIES +CARPENTRY +CARPER +CARPERS +CARPET +CARPETBAG +CARPETBAGGED +CARPETBAGGER +CARPETBAGGERIES +CARPETBAGGERS +CARPETBAGGERY +CARPETBAGGING +CARPETBAGS +CARPETED +CARPETING +CARPETINGS +CARPETS +CARPETWEED +CARPETWEEDS +CARPI +CARPING +CARPINGLY +CARPINGS +CARPOGONIA +CARPOGONIAL +CARPOGONIUM +CARPOLOGIES +CARPOLOGY +CARPOOL +CARPOOLED +CARPOOLER +CARPOOLERS +CARPOOLING +CARPOOLS +CARPOPHORE +CARPOPHORES +CARPORT +CARPORTS +CARPOSPORE +CARPOSPORES +CARPS +CARPUS +CARR +CARRACK +CARRACKS +CARRAGEEN +CARRAGEENAN +CARRAGEENANS +CARRAGEENIN +CARRAGEENINS +CARRAGEENS +CARRAGHEEN +CARRAGHEENS +CARREFOUR +CARREFOURS +CARREL +CARRELL +CARRELLS +CARRELS +CARRIAGE +CARRIAGES +CARRIAGEWAY +CARRIAGEWAYS +CARRIED +CARRIER +CARRIERS +CARRIES +CARRIOLE +CARRIOLES +CARRION +CARRIONS +CARRITCH +CARRITCHES +CARROCH +CARROCHES +CARROM +CARROMED +CARROMING +CARROMS +CARRONADE +CARRONADES +CARROT +CARROTIER +CARROTIEST +CARROTIN +CARROTINS +CARROTS +CARROTTOP +CARROTTOPPED +CARROTTOPS +CARROTY +CARROUSEL +CARROUSELS +CARRS +CARRY +CARRYALL +CARRYALLS +CARRYBACK +CARRYBACKS +CARRYFORWARD +CARRYFORWARDS +CARRYING +CARRYON +CARRYONS +CARRYOUT +CARRYOUTS +CARRYOVER +CARRYOVERS +CARS +CARSE +CARSES +CARSICK +CART +CARTABLE +CARTAGE +CARTAGES +CARTE +CARTED +CARTEL +CARTELISE +CARTELISED +CARTELISES +CARTELISING +CARTELIZATION +CARTELIZATIONS +CARTELIZE +CARTELIZED +CARTELIZES +CARTELIZING +CARTELS +CARTER +CARTERS +CARTES +CARTHORSE +CARTHORSES +CARTILAGE +CARTILAGES +CARTILAGINOUS +CARTING +CARTLOAD +CARTLOADS +CARTOGRAM +CARTOGRAMS +CARTOGRAPHER +CARTOGRAPHERS +CARTOGRAPHIC +CARTOGRAPHICAL +CARTOGRAPHIES +CARTOGRAPHY +CARTON +CARTONED +CARTONING +CARTONS +CARTOON +CARTOONED +CARTOONING +CARTOONINGS +CARTOONISH +CARTOONISHLY +CARTOONIST +CARTOONISTS +CARTOONLIKE +CARTOONS +CARTOONY +CARTOP +CARTOPPER +CARTOPPERS +CARTOUCH +CARTOUCHE +CARTOUCHES +CARTRIDGE +CARTRIDGES +CARTS +CARTULARIES +CARTULARY +CARTWHEEL +CARTWHEELED +CARTWHEELER +CARTWHEELERS +CARTWHEELING +CARTWHEELS +CARUNCLE +CARUNCLES +CARVACROL +CARVACROLS +CARVE +CARVED +CARVEL +CARVELS +CARVEN +CARVER +CARVERS +CARVES +CARVING +CARVINGS +CARWASH +CARWASHES +CARYATIC +CARYATID +CARYATIDES +CARYATIDS +CARYOPSES +CARYOPSIDES +CARYOPSIS +CARYOTIN +CARYOTINS +CASA +CASABA +CASABAS +CASAS +CASAVA +CASAVAS +CASBAH +CASBAHS +CASCABEL +CASCABELS +CASCABLE +CASCABLES +CASCADE +CASCADED +CASCADES +CASCADING +CASCARA +CASCARAS +CASCARILLA +CASCARILLAS +CASE +CASEASE +CASEASES +CASEATE +CASEATED +CASEATES +CASEATING +CASEATION +CASEATIONS +CASEBEARER +CASEBEARERS +CASEBOOK +CASEBOOKS +CASED +CASEFIED +CASEFIES +CASEFY +CASEFYING +CASEIC +CASEIN +CASEINATE +CASEINATES +CASEINS +CASELOAD +CASELOADS +CASEMATE +CASEMATED +CASEMATES +CASEMENT +CASEMENTS +CASEOSE +CASEOSES +CASEOUS +CASERN +CASERNE +CASERNES +CASERNS +CASES +CASETTE +CASETTES +CASEWORK +CASEWORKER +CASEWORKERS +CASEWORKS +CASEWORM +CASEWORMS +CASH +CASHABLE +CASHAW +CASHAWS +CASHBOOK +CASHBOOKS +CASHBOX +CASHBOXES +CASHED +CASHES +CASHEW +CASHEWS +CASHIER +CASHIERED +CASHIERING +CASHIERS +CASHING +CASHLESS +CASHMERE +CASHMERES +CASHOO +CASHOOS +CASHPOINT +CASHPOINTS +CASIMERE +CASIMERES +CASIMIRE +CASIMIRES +CASING +CASINGS +CASINI +CASINO +CASINOS +CASITA +CASITAS +CASK +CASKED +CASKET +CASKETED +CASKETING +CASKETS +CASKING +CASKS +CASKY +CASQUE +CASQUED +CASQUES +CASSABA +CASSABAS +CASSATA +CASSATAS +CASSATION +CASSATIONS +CASSAVA +CASSAVAS +CASSENA +CASSENAS +CASSENE +CASSENES +CASSEROLE +CASSEROLES +CASSETTE +CASSETTES +CASSIA +CASSIAS +CASSIMERE +CASSIMERES +CASSINA +CASSINAS +CASSINE +CASSINES +CASSINGLE +CASSINGLES +CASSINO +CASSINOS +CASSIS +CASSISES +CASSITERITE +CASSITERITES +CASSOCK +CASSOCKS +CASSOULET +CASSOULETS +CASSOWARIES +CASSOWARY +CAST +CASTABILITIES +CASTABILITY +CASTABLE +CASTANET +CASTANETS +CASTAWAY +CASTAWAYS +CASTE +CASTEISM +CASTEISMS +CASTELLAN +CASTELLANS +CASTELLATED +CASTER +CASTERS +CASTES +CASTIGATE +CASTIGATED +CASTIGATES +CASTIGATING +CASTIGATION +CASTIGATIONS +CASTIGATOR +CASTIGATORS +CASTING +CASTINGS +CASTLE +CASTLED +CASTLES +CASTLING +CASTOFF +CASTOFFS +CASTOR +CASTOREUM +CASTOREUMS +CASTORS +CASTRATE +CASTRATED +CASTRATER +CASTRATERS +CASTRATES +CASTRATI +CASTRATING +CASTRATION +CASTRATIONS +CASTRATO +CASTRATOR +CASTRATORS +CASTRATORY +CASTRATOS +CASTS +CASUAL +CASUALLY +CASUALNESS +CASUALNESSES +CASUALS +CASUALTIES +CASUALTY +CASUARINA +CASUARINAS +CASUIST +CASUISTIC +CASUISTICAL +CASUISTRIES +CASUISTRY +CASUISTS +CASUS +CAT +CATABOLIC +CATABOLICALLY +CATABOLISM +CATABOLISMS +CATABOLITE +CATABOLITES +CATABOLIZE +CATABOLIZED +CATABOLIZES +CATABOLIZING +CATACHRESES +CATACHRESIS +CATACHRESTIC +CATACHRESTICAL +CATACLYSM +CATACLYSMAL +CATACLYSMIC +CATACLYSMICALLY +CATACLYSMS +CATACOMB +CATACOMBS +CATADIOPTRIC +CATADROMOUS +CATAFALQUE +CATAFALQUES +CATALASE +CATALASES +CATALATIC +CATALECTIC +CATALECTICS +CATALEPSIES +CATALEPSY +CATALEPTIC +CATALEPTICALLY +CATALEPTICS +CATALEXES +CATALEXIS +CATALO +CATALOES +CATALOG +CATALOGED +CATALOGER +CATALOGERS +CATALOGIC +CATALOGING +CATALOGS +CATALOGUE +CATALOGUED +CATALOGUER +CATALOGUERS +CATALOGUES +CATALOGUING +CATALOS +CATALPA +CATALPAS +CATALYSES +CATALYSIS +CATALYST +CATALYSTS +CATALYTIC +CATALYTICALLY +CATALYZE +CATALYZED +CATALYZER +CATALYZERS +CATALYZES +CATALYZING +CATAMARAN +CATAMARANS +CATAMENIA +CATAMENIAL +CATAMITE +CATAMITES +CATAMOUNT +CATAMOUNTS +CATAPHORA +CATAPHORAS +CATAPHORESES +CATAPHORESIS +CATAPHORETIC +CATAPHORIC +CATAPHYLL +CATAPHYLLS +CATAPLASM +CATAPLASMS +CATAPLEXIES +CATAPLEXY +CATAPULT +CATAPULTED +CATAPULTING +CATAPULTS +CATARACT +CATARACTOUS +CATARACTS +CATARRH +CATARRHAL +CATARRHALLY +CATARRHINE +CATARRHINES +CATARRHS +CATASTROPHE +CATASTROPHES +CATASTROPHIC +CATASTROPHISM +CATASTROPHISMS +CATASTROPHIST +CATASTROPHISTS +CATATONIA +CATATONIAS +CATATONIC +CATATONICALLY +CATATONICS +CATAWBA +CATAWBAS +CATBIRD +CATBIRDS +CATBOAT +CATBOATS +CATBRIER +CATBRIERS +CATCALL +CATCALLED +CATCALLER +CATCALLERS +CATCALLING +CATCALLS +CATCH +CATCHABLE +CATCHALL +CATCHALLS +CATCHER +CATCHERS +CATCHES +CATCHFLIES +CATCHFLY +CATCHIER +CATCHIEST +CATCHING +CATCHMENT +CATCHMENTS +CATCHPENNY +CATCHPHRASE +CATCHPHRASES +CATCHPOLE +CATCHPOLES +CATCHPOLL +CATCHPOLLS +CATCHUP +CATCHUPS +CATCHWORD +CATCHWORDS +CATCHY +CATCLAW +CATCLAWS +CATE +CATECHESES +CATECHESIS +CATECHETICAL +CATECHIN +CATECHINS +CATECHISE +CATECHISED +CATECHISES +CATECHISING +CATECHISM +CATECHISMAL +CATECHISMS +CATECHIST +CATECHISTIC +CATECHISTS +CATECHIZATION +CATECHIZATIONS +CATECHIZE +CATECHIZED +CATECHIZER +CATECHIZERS +CATECHIZES +CATECHIZING +CATECHOL +CATECHOLAMINE +CATECHOLAMINES +CATECHOLS +CATECHU +CATECHUMEN +CATECHUMENS +CATECHUS +CATEGORIC +CATEGORICAL +CATEGORICALLY +CATEGORIES +CATEGORISE +CATEGORISED +CATEGORISES +CATEGORISING +CATEGORIZATION +CATEGORIZATIONS +CATEGORIZE +CATEGORIZED +CATEGORIZES +CATEGORIZING +CATEGORY +CATENA +CATENAE +CATENARIES +CATENARY +CATENAS +CATENATE +CATENATED +CATENATES +CATENATING +CATENATION +CATENATIONS +CATENOID +CATENOIDS +CATER +CATERAN +CATERANS +CATERCORNER +CATERCORNERED +CATERED +CATERER +CATERERS +CATERESS +CATERESSES +CATERING +CATERPILLAR +CATERPILLARS +CATERS +CATERWAUL +CATERWAULED +CATERWAULING +CATERWAULS +CATES +CATFACE +CATFACES +CATFACING +CATFACINGS +CATFALL +CATFALLS +CATFIGHT +CATFIGHTS +CATFISH +CATFISHES +CATGUT +CATGUTS +CATHARSES +CATHARSIS +CATHARTIC +CATHARTICS +CATHEAD +CATHEADS +CATHECT +CATHECTED +CATHECTIC +CATHECTING +CATHECTS +CATHEDRA +CATHEDRAE +CATHEDRAL +CATHEDRALS +CATHEDRAS +CATHEPSIN +CATHEPSINS +CATHEPTIC +CATHETER +CATHETERIZATION +CATHETERIZE +CATHETERIZED +CATHETERIZES +CATHETERIZING +CATHETERS +CATHEXES +CATHEXIS +CATHODAL +CATHODALLY +CATHODE +CATHODES +CATHODIC +CATHODICALLY +CATHOLIC +CATHOLICALLY +CATHOLICATE +CATHOLICATES +CATHOLICITIES +CATHOLICITY +CATHOLICIZE +CATHOLICIZED +CATHOLICIZES +CATHOLICIZING +CATHOLICOI +CATHOLICON +CATHOLICONS +CATHOLICOS +CATHOLICOSES +CATHOLICS +CATHOUSE +CATHOUSES +CATION +CATIONIC +CATIONICALLY +CATIONS +CATJANG +CATJANGS +CATKIN +CATKINATE +CATKINS +CATLIKE +CATLIN +CATLING +CATLINGS +CATLINS +CATMINT +CATMINTS +CATNAP +CATNAPER +CATNAPERS +CATNAPPED +CATNAPPER +CATNAPPERS +CATNAPPING +CATNAPS +CATNIP +CATNIPS +CATOPTRIC +CATRIGGED +CATS +CATSPAW +CATSPAWS +CATSUIT +CATSUITS +CATSUP +CATSUPS +CATTAIL +CATTAILS +CATTALO +CATTALOES +CATTALOS +CATTED +CATTERIES +CATTERY +CATTIE +CATTIER +CATTIES +CATTIEST +CATTILY +CATTINESS +CATTINESSES +CATTING +CATTISH +CATTISHLY +CATTLE +CATTLEMAN +CATTLEMEN +CATTLEYA +CATTLEYAS +CATTY +CATWALK +CATWALKS +CAUCUS +CAUCUSED +CAUCUSES +CAUCUSING +CAUCUSSED +CAUCUSSES +CAUCUSSING +CAUDAD +CAUDAL +CAUDALLY +CAUDATE +CAUDATED +CAUDATES +CAUDATION +CAUDATIONS +CAUDEX +CAUDEXES +CAUDICES +CAUDILLISMO +CAUDILLISMOS +CAUDILLO +CAUDILLOS +CAUDLE +CAUDLES +CAUGHT +CAUL +CAULD +CAULDRON +CAULDRONS +CAULDS +CAULES +CAULICLE +CAULICLES +CAULIFLOWER +CAULIFLOWERET +CAULIFLOWERETS +CAULIFLOWERS +CAULINE +CAULIS +CAULK +CAULKED +CAULKER +CAULKERS +CAULKING +CAULKINGS +CAULKS +CAULS +CAUSABLE +CAUSAL +CAUSALGIA +CAUSALGIAS +CAUSALGIC +CAUSALITIES +CAUSALITY +CAUSALLY +CAUSALS +CAUSATION +CAUSATIONS +CAUSATIVE +CAUSATIVELY +CAUSATIVES +CAUSE +CAUSED +CAUSELESS +CAUSER +CAUSERIE +CAUSERIES +CAUSERS +CAUSES +CAUSEWAY +CAUSEWAYED +CAUSEWAYING +CAUSEWAYS +CAUSEY +CAUSEYS +CAUSING +CAUSTIC +CAUSTICALLY +CAUSTICITIES +CAUSTICITY +CAUSTICS +CAUTERANT +CAUTERANTS +CAUTERIES +CAUTERIZATION +CAUTERIZATIONS +CAUTERIZE +CAUTERIZED +CAUTERIZES +CAUTERIZING +CAUTERY +CAUTION +CAUTIONARY +CAUTIONED +CAUTIONER +CAUTIONERS +CAUTIONING +CAUTIONS +CAUTIOUS +CAUTIOUSLY +CAUTIOUSNESS +CAUTIOUSNESSES +CAVALCADE +CAVALCADES +CAVALERO +CAVALEROS +CAVALETTI +CAVALIER +CAVALIERED +CAVALIERING +CAVALIERISM +CAVALIERISMS +CAVALIERLY +CAVALIERS +CAVALLA +CAVALLAS +CAVALLETTI +CAVALLIES +CAVALLY +CAVALRIES +CAVALRY +CAVALRYMAN +CAVALRYMEN +CAVATINA +CAVATINAS +CAVATINE +CAVE +CAVEAT +CAVEATED +CAVEATING +CAVEATOR +CAVEATORS +CAVEATS +CAVED +CAVEFISH +CAVEFISHES +CAVELIKE +CAVEMAN +CAVEMEN +CAVENDISH +CAVENDISHES +CAVER +CAVERN +CAVERNED +CAVERNICOLOUS +CAVERNING +CAVERNOUS +CAVERNOUSLY +CAVERNS +CAVERS +CAVES +CAVETTI +CAVETTO +CAVETTOS +CAVIAR +CAVIARE +CAVIARES +CAVIARS +CAVICORN +CAVIE +CAVIES +CAVIL +CAVILED +CAVILER +CAVILERS +CAVILING +CAVILLED +CAVILLER +CAVILLERS +CAVILLING +CAVILS +CAVING +CAVINGS +CAVITARY +CAVITATE +CAVITATED +CAVITATES +CAVITATING +CAVITATION +CAVITATIONS +CAVITIED +CAVITIES +CAVITY +CAVORT +CAVORTED +CAVORTER +CAVORTERS +CAVORTING +CAVORTS +CAVY +CAW +CAWED +CAWING +CAWS +CAY +CAYENNE +CAYENNED +CAYENNES +CAYMAN +CAYMANS +CAYS +CAYUSE +CAYUSES +CAZIQUE +CAZIQUES +CEANOTHUS +CEANOTHUSES +CEASE +CEASED +CEASEFIRE +CEASEFIRES +CEASELESS +CEASELESSLY +CEASELESSNESS +CEASELESSNESSES +CEASES +CEASING +CEBID +CEBIDS +CEBOID +CEBOIDS +CECA +CECAL +CECALLY +CECITIES +CECITY +CECROPIA +CECROPIAS +CECUM +CEDAR +CEDARBIRD +CEDARBIRDS +CEDARN +CEDARS +CEDARWOOD +CEDARWOODS +CEDARY +CEDE +CEDED +CEDER +CEDERS +CEDES +CEDI +CEDILLA +CEDILLAS +CEDING +CEDIS +CEDULA +CEDULAS +CEE +CEES +CEIBA +CEIBAS +CEIL +CEILED +CEILER +CEILERS +CEILI +CEILIDH +CEILIDHS +CEILING +CEILINGED +CEILINGS +CEILIS +CEILOMETER +CEILOMETERS +CEILS +CEINTURE +CEINTURES +CEL +CELADON +CELADONS +CELANDINE +CELANDINES +CELEB +CELEBRANT +CELEBRANTS +CELEBRATE +CELEBRATED +CELEBRATEDNESS +CELEBRATES +CELEBRATING +CELEBRATION +CELEBRATIONS +CELEBRATOR +CELEBRATORS +CELEBRATORY +CELEBRITIES +CELEBRITY +CELEBS +CELERIAC +CELERIACS +CELERIES +CELERITIES +CELERITY +CELERY +CELESTA +CELESTAS +CELESTE +CELESTES +CELESTIAL +CELESTIALLY +CELESTIALS +CELESTINE +CELESTINES +CELESTITE +CELESTITES +CELIAC +CELIACS +CELIBACIES +CELIBACY +CELIBATE +CELIBATES +CELIBATIC +CELL +CELLA +CELLAE +CELLAR +CELLARAGE +CELLARAGES +CELLARED +CELLARER +CELLARERS +CELLARET +CELLARETS +CELLARETTE +CELLARETTES +CELLARING +CELLARS +CELLARWAY +CELLARWAYS +CELLBLOCK +CELLBLOCKS +CELLED +CELLI +CELLING +CELLIST +CELLISTS +CELLMATE +CELLMATES +CELLO +CELLOBIOSE +CELLOBIOSES +CELLOIDIN +CELLOIDINS +CELLOPHANE +CELLOPHANES +CELLOS +CELLPHONE +CELLPHONES +CELLS +CELLULAR +CELLULARITIES +CELLULARITY +CELLULARS +CELLULASE +CELLULASES +CELLULE +CELLULES +CELLULITE +CELLULITES +CELLULITIS +CELLULITISES +CELLULOID +CELLULOIDS +CELLULOLYTIC +CELLULOSE +CELLULOSES +CELLULOSIC +CELLULOSICS +CELLULOUS +CELOM +CELOMATA +CELOMS +CELOSIA +CELOSIAS +CELOTEX +CELOTEXES +CELS +CELT +CELTS +CEMBALI +CEMBALIST +CEMBALISTS +CEMBALO +CEMBALOS +CEMENT +CEMENTA +CEMENTATION +CEMENTATIONS +CEMENTED +CEMENTER +CEMENTERS +CEMENTING +CEMENTITE +CEMENTITES +CEMENTITIOUS +CEMENTS +CEMENTUM +CEMENTUMS +CEMETERIES +CEMETERY +CENACLE +CENACLES +CENOBITE +CENOBITES +CENOBITIC +CENOSPECIES +CENOTAPH +CENOTAPHS +CENOTE +CENOTES +CENOZOIC +CENSE +CENSED +CENSER +CENSERS +CENSES +CENSING +CENSOR +CENSORED +CENSORIAL +CENSORING +CENSORIOUS +CENSORIOUSLY +CENSORIOUSNESS +CENSORS +CENSORSHIP +CENSORSHIPS +CENSUAL +CENSURABLE +CENSURE +CENSURED +CENSURER +CENSURERS +CENSURES +CENSURING +CENSUS +CENSUSED +CENSUSES +CENSUSING +CENT +CENTAI +CENTAL +CENTALS +CENTARE +CENTARES +CENTAS +CENTAUR +CENTAUREA +CENTAUREAS +CENTAURIC +CENTAURIES +CENTAURS +CENTAURY +CENTAVO +CENTAVOS +CENTENARIAN +CENTENARIANS +CENTENARIES +CENTENARY +CENTENNIAL +CENTENNIALLY +CENTENNIALS +CENTER +CENTERBOARD +CENTERBOARDS +CENTERED +CENTEREDNESS +CENTEREDNESSES +CENTERFOLD +CENTERFOLDS +CENTERING +CENTERINGS +CENTERLESS +CENTERLINE +CENTERLINES +CENTERPIECE +CENTERPIECES +CENTERS +CENTESES +CENTESIMAL +CENTESIMI +CENTESIMO +CENTESIMOS +CENTESIS +CENTIARE +CENTIARES +CENTIGRADE +CENTIGRAM +CENTIGRAMS +CENTILE +CENTILES +CENTILITER +CENTILITERS +CENTILLION +CENTILLIONS +CENTIME +CENTIMES +CENTIMETER +CENTIMETERS +CENTIMO +CENTIMORGAN +CENTIMORGANS +CENTIMOS +CENTIPEDE +CENTIPEDES +CENTNER +CENTNERS +CENTO +CENTONES +CENTOS +CENTRA +CENTRAL +CENTRALER +CENTRALEST +CENTRALISE +CENTRALISED +CENTRALISES +CENTRALISING +CENTRALISM +CENTRALISMS +CENTRALIST +CENTRALISTIC +CENTRALISTS +CENTRALITIES +CENTRALITY +CENTRALIZATION +CENTRALIZATIONS +CENTRALIZE +CENTRALIZED +CENTRALIZER +CENTRALIZERS +CENTRALIZES +CENTRALIZING +CENTRALLY +CENTRALS +CENTRE +CENTRED +CENTRES +CENTRIC +CENTRICAL +CENTRICALLY +CENTRICITIES +CENTRICITY +CENTRIFUGAL +CENTRIFUGALLY +CENTRIFUGALS +CENTRIFUGATION +CENTRIFUGATIONS +CENTRIFUGE +CENTRIFUGED +CENTRIFUGES +CENTRIFUGING +CENTRING +CENTRINGS +CENTRIOLE +CENTRIOLES +CENTRIPETAL +CENTRIPETALLY +CENTRISM +CENTRISMS +CENTRIST +CENTRISTS +CENTROID +CENTROIDS +CENTROMERE +CENTROMERES +CENTROMERIC +CENTROSOME +CENTROSOMES +CENTROSYMMETRIC +CENTRUM +CENTRUMS +CENTS +CENTU +CENTUM +CENTUMS +CENTUPLE +CENTUPLED +CENTUPLES +CENTUPLING +CENTURIAL +CENTURIES +CENTURION +CENTURIONS +CENTURY +CEORL +CEORLISH +CEORLS +CEP +CEPE +CEPES +CEPHALAD +CEPHALEXIN +CEPHALEXINS +CEPHALIC +CEPHALICALLY +CEPHALIN +CEPHALINS +CEPHALIZATION +CEPHALIZATIONS +CEPHALOMETRIC +CEPHALOMETRIES +CEPHALOMETRY +CEPHALOPOD +CEPHALOPODS +CEPHALORIDINE +CEPHALORIDINES +CEPHALOSPORIN +CEPHALOSPORINS +CEPHALOTHIN +CEPHALOTHINS +CEPHALOTHORACES +CEPHALOTHORAX +CEPHALOTHORAXES +CEPHALOUS +CEPHEID +CEPHEIDS +CEPS +CERACEOUS +CERAMAL +CERAMALS +CERAMIC +CERAMICIST +CERAMICISTS +CERAMICS +CERAMIDE +CERAMIDES +CERAMIST +CERAMISTS +CERASTES +CERATE +CERATED +CERATES +CERATIN +CERATINS +CERATODUS +CERATODUSES +CERATOID +CERATOPSIAN +CERATOPSIANS +CERCAL +CERCARIA +CERCARIAE +CERCARIAL +CERCARIAN +CERCARIANS +CERCARIAS +CERCI +CERCIS +CERCISES +CERCUS +CERE +CEREAL +CEREALS +CEREBELLA +CEREBELLAR +CEREBELLUM +CEREBELLUMS +CEREBRA +CEREBRAL +CEREBRALLY +CEREBRALS +CEREBRATE +CEREBRATED +CEREBRATES +CEREBRATING +CEREBRATION +CEREBRATIONS +CEREBRIC +CEREBROSIDE +CEREBROSIDES +CEREBROSPINAL +CEREBROVASCULAR +CEREBRUM +CEREBRUMS +CERECLOTH +CERECLOTHS +CERED +CEREMENT +CEREMENTS +CEREMONIAL +CEREMONIALISM +CEREMONIALISMS +CEREMONIALIST +CEREMONIALISTS +CEREMONIALLY +CEREMONIALS +CEREMONIES +CEREMONIOUS +CEREMONIOUSLY +CEREMONIOUSNESS +CEREMONY +CERES +CEREUS +CEREUSES +CERIA +CERIAS +CERIC +CERING +CERIPH +CERIPHS +CERISE +CERISES +CERITE +CERITES +CERIUM +CERIUMS +CERMET +CERMETS +CERNUOUS +CERO +CEROS +CEROTIC +CEROTYPE +CEROTYPES +CEROUS +CERTAIN +CERTAINER +CERTAINEST +CERTAINLY +CERTAINTIES +CERTAINTY +CERTES +CERTIFIABLE +CERTIFIABLY +CERTIFICATE +CERTIFICATED +CERTIFICATES +CERTIFICATING +CERTIFICATION +CERTIFICATIONS +CERTIFICATORY +CERTIFIED +CERTIFIER +CERTIFIERS +CERTIFIES +CERTIFY +CERTIFYING +CERTIORARI +CERTIORARIS +CERTITUDE +CERTITUDES +CERULEAN +CERULEANS +CERULOPLASMIN +CERULOPLASMINS +CERUMEN +CERUMENS +CERUMINOUS +CERUSE +CERUSES +CERUSITE +CERUSITES +CERUSSITE +CERUSSITES +CERVELAS +CERVELASES +CERVELAT +CERVELATS +CERVEZA +CERVEZAS +CERVICAL +CERVICES +CERVICITIS +CERVICITISES +CERVID +CERVINE +CERVIX +CERVIXES +CESAREAN +CESAREANS +CESARIAN +CESARIANS +CESIUM +CESIUMS +CESPITOSE +CESS +CESSATION +CESSATIONS +CESSED +CESSES +CESSING +CESSION +CESSIONS +CESSPIT +CESSPITS +CESSPOOL +CESSPOOLS +CESTA +CESTAS +CESTI +CESTODE +CESTODES +CESTOI +CESTOID +CESTOIDS +CESTOS +CESTUS +CESTUSES +CESURA +CESURAE +CESURAS +CETACEAN +CETACEANS +CETACEOUS +CETANE +CETANES +CETE +CETES +CETOLOGIES +CETOLOGIST +CETOLOGISTS +CETOLOGY +CEVICHE +CEVICHES +CHABAZITE +CHABAZITES +CHABLIS +CHABOUK +CHABOUKS +CHABUK +CHABUKS +CHACHKA +CHACHKAS +CHACMA +CHACMAS +CHACONNE +CHACONNES +CHAD +CHADAR +CHADARIM +CHADARS +CHADLESS +CHADOR +CHADORS +CHADRI +CHADS +CHAEBOL +CHAEBOLS +CHAETA +CHAETAE +CHAETAL +CHAETOGNATH +CHAETOGNATHS +CHAETOPOD +CHAETOPODS +CHAFE +CHAFED +CHAFER +CHAFERS +CHAFES +CHAFF +CHAFFED +CHAFFER +CHAFFERED +CHAFFERER +CHAFFERERS +CHAFFERING +CHAFFERS +CHAFFIER +CHAFFIEST +CHAFFINCH +CHAFFINCHES +CHAFFING +CHAFFS +CHAFFY +CHAFING +CHAGRIN +CHAGRINED +CHAGRINING +CHAGRINNED +CHAGRINNING +CHAGRINS +CHAI +CHAIN +CHAINE +CHAINED +CHAINES +CHAINFALL +CHAINFALLS +CHAINING +CHAINMAN +CHAINMEN +CHAINS +CHAINSAW +CHAINSAWED +CHAINSAWING +CHAINSAWS +CHAINWHEEL +CHAINWHEELS +CHAIR +CHAIRED +CHAIRING +CHAIRLIFT +CHAIRLIFTS +CHAIRMAN +CHAIRMANED +CHAIRMANING +CHAIRMANNED +CHAIRMANNING +CHAIRMANS +CHAIRMANSHIP +CHAIRMANSHIPS +CHAIRMEN +CHAIRPERSON +CHAIRPERSONS +CHAIRS +CHAIRWOMAN +CHAIRWOMEN +CHAIS +CHAISE +CHAISES +CHAKRA +CHAKRAS +CHALAH +CHALAHS +CHALAZA +CHALAZAE +CHALAZAL +CHALAZAS +CHALAZIA +CHALAZION +CHALAZIONS +CHALCEDONIC +CHALCEDONIES +CHALCEDONY +CHALCID +CHALCIDS +CHALCOCITE +CHALCOCITES +CHALCOGEN +CHALCOGENIDE +CHALCOGENIDES +CHALCOGENS +CHALCOPYRITE +CHALCOPYRITES +CHALDRON +CHALDRONS +CHALEH +CHALEHS +CHALET +CHALETS +CHALICE +CHALICED +CHALICES +CHALK +CHALKBOARD +CHALKBOARDS +CHALKED +CHALKIER +CHALKIEST +CHALKING +CHALKS +CHALKY +CHALLA +CHALLAH +CHALLAHS +CHALLAS +CHALLENGE +CHALLENGED +CHALLENGER +CHALLENGERS +CHALLENGES +CHALLENGING +CHALLENGINGLY +CHALLIE +CHALLIES +CHALLIS +CHALLISES +CHALLOT +CHALLOTH +CHALLY +CHALONE +CHALONES +CHALOT +CHALOTH +CHALUMEAU +CHALUMEAUS +CHALUPA +CHALUPAS +CHALUTZ +CHALUTZIM +CHALYBEATE +CHALYBEATES +CHAM +CHAMADE +CHAMADES +CHAMAEPHYTE +CHAMAEPHYTES +CHAMBER +CHAMBERED +CHAMBERING +CHAMBERLAIN +CHAMBERLAINS +CHAMBERMAID +CHAMBERMAIDS +CHAMBERS +CHAMBRAY +CHAMBRAYS +CHAMELEON +CHAMELEONIC +CHAMELEONLIKE +CHAMELEONS +CHAMFER +CHAMFERED +CHAMFERER +CHAMFERERS +CHAMFERING +CHAMFERS +CHAMFRAIN +CHAMFRAINS +CHAMFRON +CHAMFRONS +CHAMISA +CHAMISAS +CHAMISE +CHAMISES +CHAMISO +CHAMISOS +CHAMMIED +CHAMMIES +CHAMMY +CHAMMYING +CHAMOIS +CHAMOISED +CHAMOISES +CHAMOISING +CHAMOIX +CHAMOMILE +CHAMOMILES +CHAMP +CHAMPAC +CHAMPACA +CHAMPACAS +CHAMPACS +CHAMPAGNE +CHAMPAGNES +CHAMPAIGN +CHAMPAIGNS +CHAMPAK +CHAMPAKS +CHAMPED +CHAMPER +CHAMPERS +CHAMPERTIES +CHAMPERTOUS +CHAMPERTY +CHAMPIGNON +CHAMPIGNONS +CHAMPING +CHAMPION +CHAMPIONED +CHAMPIONING +CHAMPIONS +CHAMPIONSHIP +CHAMPIONSHIPS +CHAMPLEVE +CHAMPLEVES +CHAMPS +CHAMPY +CHAMS +CHANCE +CHANCED +CHANCEFUL +CHANCEL +CHANCELLERIES +CHANCELLERY +CHANCELLOR +CHANCELLORIES +CHANCELLORS +CHANCELLORSHIP +CHANCELLORSHIPS +CHANCELLORY +CHANCELS +CHANCER +CHANCERIES +CHANCERS +CHANCERY +CHANCES +CHANCIER +CHANCIEST +CHANCILY +CHANCINESS +CHANCINESSES +CHANCING +CHANCRE +CHANCRES +CHANCROID +CHANCROIDAL +CHANCROIDS +CHANCROUS +CHANCY +CHANDELIER +CHANDELIERED +CHANDELIERS +CHANDELLE +CHANDELLED +CHANDELLES +CHANDELLING +CHANDLER +CHANDLERIES +CHANDLERS +CHANDLERY +CHANFRON +CHANFRONS +CHANG +CHANGE +CHANGEABILITIES +CHANGEABILITY +CHANGEABLE +CHANGEABLENESS +CHANGEABLY +CHANGED +CHANGEFUL +CHANGEFULLY +CHANGEFULNESS +CHANGEFULNESSES +CHANGELESS +CHANGELESSLY +CHANGELESSNESS +CHANGELING +CHANGELINGS +CHANGEOVER +CHANGEOVERS +CHANGER +CHANGERS +CHANGES +CHANGEUP +CHANGEUPS +CHANGING +CHANGS +CHANNEL +CHANNELED +CHANNELER +CHANNELERS +CHANNELING +CHANNELIZATION +CHANNELIZATIONS +CHANNELIZE +CHANNELIZED +CHANNELIZES +CHANNELIZING +CHANNELLED +CHANNELLING +CHANNELS +CHANOYU +CHANOYUS +CHANSON +CHANSONNIER +CHANSONNIERS +CHANSONS +CHANT +CHANTABLE +CHANTAGE +CHANTAGES +CHANTED +CHANTER +CHANTERELLE +CHANTERELLES +CHANTERS +CHANTEUSE +CHANTEUSES +CHANTEY +CHANTEYS +CHANTICLEER +CHANTICLEERS +CHANTIES +CHANTING +CHANTOR +CHANTORS +CHANTRIES +CHANTRY +CHANTS +CHANTY +CHAO +CHAOS +CHAOSES +CHAOTIC +CHAOTICALLY +CHAP +CHAPARAJOS +CHAPAREJOS +CHAPARRAL +CHAPARRALS +CHAPATI +CHAPATIS +CHAPATTI +CHAPATTIS +CHAPBOOK +CHAPBOOKS +CHAPE +CHAPEAU +CHAPEAUS +CHAPEAUX +CHAPEL +CHAPELS +CHAPERON +CHAPERONAGE +CHAPERONAGES +CHAPERONE +CHAPERONED +CHAPERONES +CHAPERONING +CHAPERONS +CHAPES +CHAPFALLEN +CHAPITER +CHAPITERS +CHAPLAIN +CHAPLAINCIES +CHAPLAINCY +CHAPLAINS +CHAPLET +CHAPLETED +CHAPLETS +CHAPMAN +CHAPMEN +CHAPPATI +CHAPPATIS +CHAPPED +CHAPPIE +CHAPPIES +CHAPPING +CHAPS +CHAPT +CHAPTER +CHAPTERAL +CHAPTERED +CHAPTERING +CHAPTERS +CHAQUETA +CHAQUETAS +CHAR +CHARABANC +CHARABANCS +CHARACID +CHARACIDS +CHARACIN +CHARACINS +CHARACTER +CHARACTERED +CHARACTERFUL +CHARACTERIES +CHARACTERING +CHARACTERISTIC +CHARACTERISTICS +CHARACTERIZE +CHARACTERIZED +CHARACTERIZES +CHARACTERIZING +CHARACTERLESS +CHARACTERS +CHARACTERY +CHARADE +CHARADES +CHARAS +CHARASES +CHARBROIL +CHARBROILED +CHARBROILER +CHARBROILERS +CHARBROILING +CHARBROILS +CHARCOAL +CHARCOALED +CHARCOALING +CHARCOALS +CHARCOALY +CHARCUTERIE +CHARCUTERIES +CHARD +CHARDONNAY +CHARDONNAYS +CHARDS +CHARE +CHARED +CHARES +CHARGE +CHARGEABLE +CHARGED +CHARGEHAND +CHARGEHANDS +CHARGER +CHARGERS +CHARGES +CHARGING +CHARGRILL +CHARGRILLED +CHARGRILLING +CHARGRILLS +CHARIER +CHARIEST +CHARILY +CHARINESS +CHARINESSES +CHARING +CHARIOT +CHARIOTED +CHARIOTEER +CHARIOTEERS +CHARIOTING +CHARIOTS +CHARISM +CHARISMA +CHARISMAS +CHARISMATA +CHARISMATIC +CHARISMATICS +CHARISMS +CHARITABLE +CHARITABLENESS +CHARITABLY +CHARITIES +CHARITY +CHARIVARI +CHARIVARIED +CHARIVARIING +CHARIVARIS +CHARK +CHARKA +CHARKAS +CHARKED +CHARKHA +CHARKHAS +CHARKING +CHARKS +CHARLADIES +CHARLADY +CHARLATAN +CHARLATANISM +CHARLATANISMS +CHARLATANRIES +CHARLATANRY +CHARLATANS +CHARLEY +CHARLEYS +CHARLIE +CHARLIES +CHARLOCK +CHARLOCKS +CHARLOTTE +CHARLOTTES +CHARM +CHARMED +CHARMER +CHARMERS +CHARMEUSE +CHARMEUSES +CHARMING +CHARMINGER +CHARMINGEST +CHARMINGLY +CHARMLESS +CHARMS +CHARNEL +CHARNELS +CHARPAI +CHARPAIS +CHARPOY +CHARPOYS +CHARQUI +CHARQUID +CHARQUIS +CHARR +CHARRED +CHARRIER +CHARRIEST +CHARRING +CHARRO +CHARROS +CHARRS +CHARRY +CHARS +CHART +CHARTABLE +CHARTED +CHARTER +CHARTERED +CHARTERER +CHARTERERS +CHARTERING +CHARTERS +CHARTING +CHARTIST +CHARTISTS +CHARTLESS +CHARTREUSE +CHARTREUSES +CHARTS +CHARTULARIES +CHARTULARY +CHARWOMAN +CHARWOMEN +CHARY +CHASE +CHASEABLE +CHASED +CHASER +CHASERS +CHASES +CHASING +CHASINGS +CHASM +CHASMAL +CHASMED +CHASMIC +CHASMS +CHASMY +CHASSE +CHASSED +CHASSEING +CHASSEPOT +CHASSEPOTS +CHASSES +CHASSEUR +CHASSEURS +CHASSIS +CHASTE +CHASTELY +CHASTEN +CHASTENED +CHASTENER +CHASTENERS +CHASTENESS +CHASTENESSES +CHASTENING +CHASTENS +CHASTER +CHASTEST +CHASTISE +CHASTISED +CHASTISEMENT +CHASTISEMENTS +CHASTISER +CHASTISERS +CHASTISES +CHASTISING +CHASTITIES +CHASTITY +CHASUBLE +CHASUBLES +CHAT +CHATCHKA +CHATCHKAS +CHATCHKE +CHATCHKES +CHATEAU +CHATEAUBRIAND +CHATEAUBRIANDS +CHATEAUS +CHATEAUX +CHATELAIN +CHATELAINE +CHATELAINES +CHATELAINS +CHATOYANCE +CHATOYANCES +CHATOYANCIES +CHATOYANCY +CHATOYANT +CHATOYANTS +CHATROOM +CHATROOMS +CHATS +CHATTED +CHATTEL +CHATTELS +CHATTER +CHATTERBOX +CHATTERBOXES +CHATTERED +CHATTERER +CHATTERERS +CHATTERING +CHATTERS +CHATTERY +CHATTIER +CHATTIEST +CHATTILY +CHATTINESS +CHATTINESSES +CHATTING +CHATTY +CHAUFER +CHAUFERS +CHAUFFER +CHAUFFERS +CHAUFFEUR +CHAUFFEURED +CHAUFFEURING +CHAUFFEURS +CHAULMOOGRA +CHAULMOOGRAS +CHAUNT +CHAUNTED +CHAUNTER +CHAUNTERS +CHAUNTING +CHAUNTS +CHAUSSES +CHAUSSURE +CHAUSSURES +CHAUTAUQUA +CHAUTAUQUAS +CHAUVINISM +CHAUVINISMS +CHAUVINIST +CHAUVINISTIC +CHAUVINISTS +CHAW +CHAWBACON +CHAWBACONS +CHAWED +CHAWER +CHAWERS +CHAWING +CHAWS +CHAY +CHAYOTE +CHAYOTES +CHAYS +CHAZAN +CHAZANIM +CHAZANS +CHAZZAN +CHAZZANIM +CHAZZANS +CHAZZEN +CHAZZENIM +CHAZZENS +CHEAP +CHEAPEN +CHEAPENED +CHEAPENER +CHEAPENERS +CHEAPENING +CHEAPENS +CHEAPER +CHEAPEST +CHEAPIE +CHEAPIES +CHEAPISH +CHEAPISHLY +CHEAPJACK +CHEAPJACKS +CHEAPLY +CHEAPNESS +CHEAPNESSES +CHEAPO +CHEAPOS +CHEAPS +CHEAPSKATE +CHEAPSKATES +CHEAT +CHEATABLE +CHEATED +CHEATER +CHEATERS +CHEATING +CHEATS +CHEBEC +CHEBECS +CHECHAKO +CHECHAKOS +CHECK +CHECKABLE +CHECKBOOK +CHECKBOOKS +CHECKED +CHECKER +CHECKERBERRIES +CHECKERBERRY +CHECKERBOARD +CHECKERBOARDS +CHECKERED +CHECKERING +CHECKERS +CHECKING +CHECKLESS +CHECKLIST +CHECKLISTED +CHECKLISTING +CHECKLISTS +CHECKMARK +CHECKMARKED +CHECKMARKING +CHECKMARKS +CHECKMATE +CHECKMATED +CHECKMATES +CHECKMATING +CHECKOFF +CHECKOFFS +CHECKOUT +CHECKOUTS +CHECKPOINT +CHECKPOINTS +CHECKREIN +CHECKREINS +CHECKROOM +CHECKROOMS +CHECKROW +CHECKROWED +CHECKROWING +CHECKROWS +CHECKS +CHECKSUM +CHECKSUMS +CHECKUP +CHECKUPS +CHEDDAR +CHEDDARS +CHEDDARY +CHEDDITE +CHEDDITES +CHEDER +CHEDERS +CHEDITE +CHEDITES +CHEECHAKO +CHEECHAKOS +CHEEK +CHEEKBONE +CHEEKBONES +CHEEKED +CHEEKFUL +CHEEKFULS +CHEEKIER +CHEEKIEST +CHEEKILY +CHEEKINESS +CHEEKINESSES +CHEEKING +CHEEKLESS +CHEEKS +CHEEKY +CHEEP +CHEEPED +CHEEPER +CHEEPERS +CHEEPING +CHEEPS +CHEER +CHEERED +CHEERER +CHEERERS +CHEERFUL +CHEERFULLER +CHEERFULLEST +CHEERFULLY +CHEERFULNESS +CHEERFULNESSES +CHEERIER +CHEERIEST +CHEERILY +CHEERINESS +CHEERINESSES +CHEERING +CHEERIO +CHEERIOS +CHEERLEAD +CHEERLEADER +CHEERLEADERS +CHEERLEADING +CHEERLEADS +CHEERLED +CHEERLESS +CHEERLESSLY +CHEERLESSNESS +CHEERLESSNESSES +CHEERLY +CHEERO +CHEEROS +CHEERS +CHEERY +CHEESE +CHEESEBURGER +CHEESEBURGERS +CHEESECAKE +CHEESECAKES +CHEESECLOTH +CHEESECLOTHS +CHEESED +CHEESEPARING +CHEESEPARINGS +CHEESES +CHEESIER +CHEESIEST +CHEESILY +CHEESINESS +CHEESINESSES +CHEESING +CHEESY +CHEETAH +CHEETAHS +CHEF +CHEFDOM +CHEFDOMS +CHEFED +CHEFFED +CHEFFING +CHEFING +CHEFS +CHEGOE +CHEGOES +CHELA +CHELAE +CHELAS +CHELASHIP +CHELASHIPS +CHELATABLE +CHELATE +CHELATED +CHELATES +CHELATING +CHELATION +CHELATIONS +CHELATOR +CHELATORS +CHELICERA +CHELICERAE +CHELICERAL +CHELIFORM +CHELIPED +CHELIPEDS +CHELOID +CHELOIDS +CHELONIAN +CHELONIANS +CHEMIC +CHEMICAL +CHEMICALLY +CHEMICALS +CHEMICS +CHEMIOSMOTIC +CHEMISE +CHEMISES +CHEMISETTE +CHEMISETTES +CHEMISM +CHEMISMS +CHEMISORB +CHEMISORBED +CHEMISORBING +CHEMISORBS +CHEMISORPTION +CHEMISORPTIONS +CHEMIST +CHEMISTRIES +CHEMISTRY +CHEMISTS +CHEMO +CHEMOAUTOTROPHY +CHEMOKINE +CHEMOKINES +CHEMORECEPTION +CHEMORECEPTIONS +CHEMORECEPTIVE +CHEMORECEPTOR +CHEMORECEPTORS +CHEMOS +CHEMOSORB +CHEMOSORBED +CHEMOSORBING +CHEMOSORBS +CHEMOSTAT +CHEMOSTATS +CHEMOSURGERIES +CHEMOSURGERY +CHEMOSURGICAL +CHEMOSYNTHESES +CHEMOSYNTHESIS +CHEMOSYNTHETIC +CHEMOTACTIC +CHEMOTACTICALLY +CHEMOTAXES +CHEMOTAXIS +CHEMOTAXONOMIC +CHEMOTAXONOMIES +CHEMOTAXONOMIST +CHEMOTAXONOMY +CHEMOTHERAPIES +CHEMOTHERAPIST +CHEMOTHERAPISTS +CHEMOTHERAPY +CHEMOTROPISM +CHEMOTROPISMS +CHEMURGIC +CHEMURGIES +CHEMURGY +CHENILLE +CHENILLES +CHENOPOD +CHENOPODS +CHEONGSAM +CHEONGSAMS +CHEQUE +CHEQUER +CHEQUERED +CHEQUERING +CHEQUERS +CHEQUES +CHERIMOYA +CHERIMOYAS +CHERISH +CHERISHABLE +CHERISHED +CHERISHER +CHERISHERS +CHERISHES +CHERISHING +CHERNOZEM +CHERNOZEMIC +CHERNOZEMS +CHEROOT +CHEROOTS +CHERRIES +CHERRY +CHERRYLIKE +CHERRYSTONE +CHERRYSTONES +CHERT +CHERTIER +CHERTIEST +CHERTS +CHERTY +CHERUB +CHERUBIC +CHERUBICALLY +CHERUBIM +CHERUBIMS +CHERUBLIKE +CHERUBS +CHERVIL +CHERVILS +CHESHIRE +CHESHIRES +CHESS +CHESSBOARD +CHESSBOARDS +CHESSES +CHESSMAN +CHESSMEN +CHEST +CHESTED +CHESTERFIELD +CHESTERFIELDS +CHESTFUL +CHESTFULS +CHESTIER +CHESTIEST +CHESTILY +CHESTNUT +CHESTNUTS +CHESTS +CHESTY +CHETAH +CHETAHS +CHETH +CHETHS +CHETRUM +CHETRUMS +CHEVALET +CHEVALETS +CHEVALIER +CHEVALIERS +CHEVELURE +CHEVELURES +CHEVERON +CHEVERONS +CHEVIED +CHEVIES +CHEVIOT +CHEVIOTS +CHEVRE +CHEVRES +CHEVRET +CHEVRETS +CHEVRON +CHEVRONS +CHEVY +CHEVYING +CHEW +CHEWABLE +CHEWED +CHEWER +CHEWERS +CHEWIER +CHEWIEST +CHEWINESS +CHEWINESSES +CHEWING +CHEWINK +CHEWINKS +CHEWS +CHEWY +CHEZ +CHI +CHIA +CHIANTI +CHIANTIS +CHIAO +CHIAROSCURIST +CHIAROSCURISTS +CHIAROSCURO +CHIAROSCUROS +CHIAS +CHIASM +CHIASMA +CHIASMAL +CHIASMAS +CHIASMATA +CHIASMATIC +CHIASMI +CHIASMIC +CHIASMS +CHIASMUS +CHIASTIC +CHIAUS +CHIAUSES +CHIBOUK +CHIBOUKS +CHIBOUQUE +CHIBOUQUES +CHIC +CHICA +CHICALOTE +CHICALOTES +CHICANE +CHICANED +CHICANER +CHICANERIES +CHICANERS +CHICANERY +CHICANES +CHICANING +CHICANO +CHICANOS +CHICAS +CHICCORIES +CHICCORY +CHICER +CHICEST +CHICHI +CHICHIER +CHICHIEST +CHICHIS +CHICK +CHICKADEE +CHICKADEES +CHICKAREE +CHICKAREES +CHICKEE +CHICKEES +CHICKEN +CHICKENED +CHICKENHEARTED +CHICKENING +CHICKENS +CHICKENSHIT +CHICKENSHITS +CHICKORIES +CHICKORY +CHICKPEA +CHICKPEAS +CHICKS +CHICKWEED +CHICKWEEDS +CHICLE +CHICLES +CHICLY +CHICNESS +CHICNESSES +CHICO +CHICORIES +CHICORY +CHICOS +CHICS +CHID +CHIDDEN +CHIDE +CHIDED +CHIDER +CHIDERS +CHIDES +CHIDING +CHIDINGLY +CHIEF +CHIEFDOM +CHIEFDOMS +CHIEFER +CHIEFEST +CHIEFLY +CHIEFS +CHIEFSHIP +CHIEFSHIPS +CHIEFTAIN +CHIEFTAINCIES +CHIEFTAINCY +CHIEFTAINS +CHIEFTAINSHIP +CHIEFTAINSHIPS +CHIEL +CHIELD +CHIELDS +CHIELS +CHIFFCHAFF +CHIFFCHAFFS +CHIFFON +CHIFFONADE +CHIFFONADES +CHIFFONIER +CHIFFONIERS +CHIFFONS +CHIFFOROBE +CHIFFOROBES +CHIGETAI +CHIGETAIS +CHIGGER +CHIGGERS +CHIGNON +CHIGNONED +CHIGNONS +CHIGOE +CHIGOES +CHILBLAIN +CHILBLAINS +CHILD +CHILDBEARING +CHILDBEARINGS +CHILDBED +CHILDBEDS +CHILDBIRTH +CHILDBIRTHS +CHILDCARE +CHILDCARES +CHILDE +CHILDES +CHILDHOOD +CHILDHOODS +CHILDING +CHILDISH +CHILDISHLY +CHILDISHNESS +CHILDISHNESSES +CHILDLESS +CHILDLESSNESS +CHILDLESSNESSES +CHILDLIER +CHILDLIEST +CHILDLIKE +CHILDLIKENESS +CHILDLIKENESSES +CHILDLY +CHILDPROOF +CHILDREN +CHILE +CHILES +CHILI +CHILIAD +CHILIADAL +CHILIADIC +CHILIADS +CHILIARCH +CHILIARCHS +CHILIASM +CHILIASMS +CHILIAST +CHILIASTIC +CHILIASTS +CHILIDOG +CHILIDOGS +CHILIES +CHILIS +CHILL +CHILLED +CHILLER +CHILLERS +CHILLEST +CHILLI +CHILLIER +CHILLIES +CHILLIEST +CHILLILY +CHILLINESS +CHILLINESSES +CHILLING +CHILLINGLY +CHILLIS +CHILLNESS +CHILLNESSES +CHILLS +CHILLUM +CHILLUMS +CHILLY +CHILOPOD +CHILOPODS +CHILTEPIN +CHILTEPINS +CHIMAERA +CHIMAERAS +CHIMAERIC +CHIMAERISM +CHIMAERISMS +CHIMAR +CHIMARS +CHIMB +CHIMBLEY +CHIMBLEYS +CHIMBLIES +CHIMBLY +CHIMBS +CHIME +CHIMED +CHIMER +CHIMERA +CHIMERAS +CHIMERE +CHIMERES +CHIMERIC +CHIMERICAL +CHIMERICALLY +CHIMERISM +CHIMERISMS +CHIMERS +CHIMES +CHIMICHANGA +CHIMICHANGAS +CHIMING +CHIMLA +CHIMLAS +CHIMLEY +CHIMLEYS +CHIMNEY +CHIMNEYLIKE +CHIMNEYPIECE +CHIMNEYPIECES +CHIMNEYS +CHIMP +CHIMPANZEE +CHIMPANZEES +CHIMPS +CHIN +CHINA +CHINABERRIES +CHINABERRY +CHINAS +CHINAWARE +CHINAWARES +CHINBONE +CHINBONES +CHINCAPIN +CHINCAPINS +CHINCH +CHINCHERINCHEE +CHINCHERINCHEES +CHINCHES +CHINCHIER +CHINCHIEST +CHINCHILLA +CHINCHILLAS +CHINCHY +CHINE +CHINED +CHINES +CHINING +CHINK +CHINKAPIN +CHINKAPINS +CHINKED +CHINKIER +CHINKIEST +CHINKING +CHINKS +CHINKY +CHINLESS +CHINNED +CHINNING +CHINO +CHINOISERIE +CHINOISERIES +CHINONE +CHINONES +CHINOOK +CHINOOKS +CHINOS +CHINQUAPIN +CHINQUAPINS +CHINS +CHINSTRAP +CHINSTRAPS +CHINTS +CHINTSES +CHINTZ +CHINTZES +CHINTZIER +CHINTZIEST +CHINTZY +CHINWAG +CHINWAGGED +CHINWAGGING +CHINWAGS +CHIONODOXA +CHIONODOXAS +CHIP +CHIPBOARD +CHIPBOARDS +CHIPMUCK +CHIPMUCKS +CHIPMUNK +CHIPMUNKS +CHIPOTLE +CHIPOTLES +CHIPPABLE +CHIPPED +CHIPPER +CHIPPERED +CHIPPERING +CHIPPERS +CHIPPIE +CHIPPIER +CHIPPIES +CHIPPIEST +CHIPPING +CHIPPY +CHIPS +CHIRAL +CHIRALITIES +CHIRALITY +CHIRIMOYA +CHIRIMOYAS +CHIRK +CHIRKED +CHIRKER +CHIRKEST +CHIRKING +CHIRKS +CHIRM +CHIRMED +CHIRMING +CHIRMS +CHIRO +CHIROGRAPHER +CHIROGRAPHERS +CHIROGRAPHIC +CHIROGRAPHICAL +CHIROGRAPHIES +CHIROGRAPHY +CHIROMANCER +CHIROMANCERS +CHIROMANCIES +CHIROMANCY +CHIRONOMID +CHIRONOMIDS +CHIROPODIES +CHIROPODIST +CHIROPODISTS +CHIROPODY +CHIROPRACTIC +CHIROPRACTICS +CHIROPRACTOR +CHIROPRACTORS +CHIROPTER +CHIROPTERAN +CHIROPTERANS +CHIROPTERS +CHIROS +CHIRP +CHIRPED +CHIRPER +CHIRPERS +CHIRPIER +CHIRPIEST +CHIRPILY +CHIRPING +CHIRPS +CHIRPY +CHIRR +CHIRRE +CHIRRED +CHIRREN +CHIRRES +CHIRRING +CHIRRS +CHIRRUP +CHIRRUPED +CHIRRUPING +CHIRRUPS +CHIRRUPY +CHIRU +CHIRURGEON +CHIRURGEONS +CHIRUS +CHIS +CHISEL +CHISELED +CHISELER +CHISELERS +CHISELING +CHISELLED +CHISELLER +CHISELLERS +CHISELLING +CHISELS +CHIT +CHITAL +CHITCHAT +CHITCHATS +CHITCHATTED +CHITCHATTING +CHITIN +CHITINOID +CHITINOUS +CHITINS +CHITLIN +CHITLING +CHITLINGS +CHITLINS +CHITON +CHITONS +CHITOSAN +CHITOSANS +CHITS +CHITTER +CHITTERED +CHITTERING +CHITTERLINGS +CHITTERS +CHITTIES +CHITTY +CHIVALRIC +CHIVALRIES +CHIVALROUS +CHIVALROUSLY +CHIVALROUSNESS +CHIVALRY +CHIVAREE +CHIVAREED +CHIVAREEING +CHIVAREES +CHIVARI +CHIVARIED +CHIVARIES +CHIVARIING +CHIVE +CHIVES +CHIVIED +CHIVIES +CHIVVIED +CHIVVIES +CHIVVY +CHIVVYING +CHIVY +CHIVYING +CHLAMYDES +CHLAMYDIA +CHLAMYDIAE +CHLAMYDIAL +CHLAMYDOSPORE +CHLAMYDOSPORES +CHLAMYS +CHLAMYSES +CHLOASMA +CHLOASMAS +CHLOASMATA +CHLORACNE +CHLORACNES +CHLORAL +CHLORALOSE +CHLORALOSED +CHLORALOSES +CHLORALS +CHLORAMINE +CHLORAMINES +CHLORAMPHENICOL +CHLORATE +CHLORATES +CHLORDAN +CHLORDANE +CHLORDANES +CHLORDANS +CHLORELLA +CHLORELLAS +CHLORENCHYMA +CHLORENCHYMAS +CHLORIC +CHLORID +CHLORIDE +CHLORIDES +CHLORIDIC +CHLORIDS +CHLORIN +CHLORINATE +CHLORINATED +CHLORINATES +CHLORINATING +CHLORINATION +CHLORINATIONS +CHLORINATOR +CHLORINATORS +CHLORINE +CHLORINES +CHLORINITIES +CHLORINITY +CHLORINS +CHLORITE +CHLORITES +CHLORITIC +CHLOROBENZENE +CHLOROBENZENES +CHLOROFORM +CHLOROFORMED +CHLOROFORMING +CHLOROFORMS +CHLOROHYDRIN +CHLOROHYDRINS +CHLOROPHYLL +CHLOROPHYLLOUS +CHLOROPHYLLS +CHLOROPICRIN +CHLOROPICRINS +CHLOROPLAST +CHLOROPLASTIC +CHLOROPLASTS +CHLOROPRENE +CHLOROPRENES +CHLOROQUINE +CHLOROQUINES +CHLOROSES +CHLOROSIS +CHLOROTHIAZIDE +CHLOROTHIAZIDES +CHLOROTIC +CHLOROUS +CHLORPROMAZINE +CHLORPROMAZINES +CHLORPROPAMIDE +CHLORPROPAMIDES +CHOANA +CHOANAE +CHOANOCYTE +CHOANOCYTES +CHOCK +CHOCKABLOCK +CHOCKED +CHOCKFUL +CHOCKFULL +CHOCKING +CHOCKS +CHOCOHOLIC +CHOCOHOLICS +CHOCOLATE +CHOCOLATES +CHOCOLATEY +CHOCOLATIER +CHOCOLATIERS +CHOCOLATY +CHOICE +CHOICELY +CHOICENESS +CHOICENESSES +CHOICER +CHOICES +CHOICEST +CHOIR +CHOIRBOY +CHOIRBOYS +CHOIRED +CHOIRGIRL +CHOIRGIRLS +CHOIRING +CHOIRMASTER +CHOIRMASTERS +CHOIRS +CHOKE +CHOKEABLE +CHOKEBERRIES +CHOKEBERRY +CHOKEBORE +CHOKEBORES +CHOKECHERRIES +CHOKECHERRY +CHOKED +CHOKEDAMP +CHOKEDAMPS +CHOKEHOLD +CHOKEHOLDS +CHOKER +CHOKERS +CHOKES +CHOKEY +CHOKIER +CHOKIEST +CHOKING +CHOKINGLY +CHOKY +CHOLA +CHOLANGIOGRAM +CHOLANGIOGRAMS +CHOLANGIOGRAPHY +CHOLAS +CHOLATE +CHOLATES +CHOLECALCIFEROL +CHOLECYST +CHOLECYSTECTOMY +CHOLECYSTITIS +CHOLECYSTITISES +CHOLECYSTOKININ +CHOLECYSTS +CHOLELITHIASES +CHOLELITHIASIS +CHOLENT +CHOLENTS +CHOLER +CHOLERA +CHOLERAIC +CHOLERAS +CHOLERIC +CHOLERICALLY +CHOLEROID +CHOLERS +CHOLESTASES +CHOLESTASIS +CHOLESTATIC +CHOLESTERIC +CHOLESTEROL +CHOLESTEROLS +CHOLESTYRAMINE +CHOLESTYRAMINES +CHOLINE +CHOLINERGIC +CHOLINERGICALLY +CHOLINES +CHOLINESTERASE +CHOLINESTERASES +CHOLLA +CHOLLAS +CHOLO +CHOLOS +CHOMP +CHOMPED +CHOMPER +CHOMPERS +CHOMPING +CHOMPS +CHON +CHONDRIOSOME +CHONDRIOSOMES +CHONDRITE +CHONDRITES +CHONDRITIC +CHONDROCRANIA +CHONDROCRANIUM +CHONDROCRANIUMS +CHONDROITIN +CHONDROITINS +CHONDROMA +CHONDROMAS +CHONDROMATA +CHONDRULE +CHONDRULES +CHOOK +CHOOKS +CHOOSE +CHOOSER +CHOOSERS +CHOOSES +CHOOSEY +CHOOSIER +CHOOSIEST +CHOOSING +CHOOSY +CHOP +CHOPFALLEN +CHOPHOUSE +CHOPHOUSES +CHOPIN +CHOPINE +CHOPINES +CHOPINS +CHOPLOGIC +CHOPLOGICS +CHOPPED +CHOPPER +CHOPPERED +CHOPPERING +CHOPPERS +CHOPPIER +CHOPPIEST +CHOPPILY +CHOPPINESS +CHOPPINESSES +CHOPPING +CHOPPY +CHOPS +CHOPSOCKIES +CHOPSOCKY +CHOPSTICK +CHOPSTICKS +CHORAGI +CHORAGIC +CHORAGUS +CHORAGUSES +CHORAL +CHORALE +CHORALES +CHORALLY +CHORALS +CHORD +CHORDAL +CHORDAMESODERM +CHORDAMESODERMS +CHORDATE +CHORDATES +CHORDED +CHORDING +CHORDS +CHORE +CHOREA +CHOREAL +CHOREAS +CHOREATIC +CHORED +CHOREGI +CHOREGUS +CHOREGUSES +CHOREIC +CHOREIFORM +CHOREMAN +CHOREMEN +CHOREOGRAPH +CHOREOGRAPHED +CHOREOGRAPHER +CHOREOGRAPHERS +CHOREOGRAPHIC +CHOREOGRAPHIES +CHOREOGRAPHING +CHOREOGRAPHS +CHOREOGRAPHY +CHOREOID +CHORES +CHORIAL +CHORIAMB +CHORIAMBS +CHORIC +CHORINE +CHORINES +CHORING +CHORIOALLANTOIC +CHORIOALLANTOIS +CHORIOCARCINOMA +CHORIOID +CHORIOIDS +CHORION +CHORIONIC +CHORIONS +CHORISTER +CHORISTERS +CHORIZO +CHORIZOS +CHOROGRAPHER +CHOROGRAPHERS +CHOROGRAPHIC +CHOROGRAPHIES +CHOROGRAPHY +CHOROID +CHOROIDAL +CHOROIDS +CHORTEN +CHORTENS +CHORTLE +CHORTLED +CHORTLER +CHORTLERS +CHORTLES +CHORTLING +CHORUS +CHORUSED +CHORUSES +CHORUSING +CHORUSSED +CHORUSSES +CHORUSSING +CHOSE +CHOSEN +CHOSES +CHOTT +CHOTTS +CHOUGH +CHOUGHS +CHOUSE +CHOUSED +CHOUSER +CHOUSERS +CHOUSES +CHOUSH +CHOUSHES +CHOUSING +CHOW +CHOWCHOW +CHOWCHOWS +CHOWDER +CHOWDERED +CHOWDERHEAD +CHOWDERHEADED +CHOWDERHEADS +CHOWDERING +CHOWDERS +CHOWED +CHOWHOUND +CHOWHOUNDS +CHOWING +CHOWS +CHOWSE +CHOWSED +CHOWSES +CHOWSING +CHOWTIME +CHOWTIMES +CHRESARD +CHRESARDS +CHRESTOMATHIES +CHRESTOMATHY +CHRISM +CHRISMA +CHRISMAL +CHRISMATION +CHRISMATIONS +CHRISMON +CHRISMONS +CHRISMS +CHRISOM +CHRISOMS +CHRISTEN +CHRISTENED +CHRISTENING +CHRISTENINGS +CHRISTENS +CHRISTIANIA +CHRISTIANIAS +CHRISTIE +CHRISTIES +CHRISTY +CHROMA +CHROMAFFIN +CHROMAS +CHROMATE +CHROMATES +CHROMATIC +CHROMATICALLY +CHROMATICISM +CHROMATICISMS +CHROMATICITIES +CHROMATICITY +CHROMATICS +CHROMATID +CHROMATIDS +CHROMATIN +CHROMATINIC +CHROMATINS +CHROMATOGRAM +CHROMATOGRAMS +CHROMATOGRAPH +CHROMATOGRAPHED +CHROMATOGRAPHER +CHROMATOGRAPHIC +CHROMATOGRAPHS +CHROMATOGRAPHY +CHROMATOLYSES +CHROMATOLYSIS +CHROMATOLYTIC +CHROMATOPHORE +CHROMATOPHORES +CHROME +CHROMED +CHROMES +CHROMIC +CHROMIDE +CHROMIDES +CHROMIER +CHROMIEST +CHROMINANCE +CHROMINANCES +CHROMING +CHROMINGS +CHROMITE +CHROMITES +CHROMIUM +CHROMIUMS +CHROMIZE +CHROMIZED +CHROMIZES +CHROMIZING +CHROMO +CHROMOCENTER +CHROMOCENTERS +CHROMODYNAMICS +CHROMOGEN +CHROMOGENIC +CHROMOGENS +CHROMOMERE +CHROMOMERES +CHROMOMERIC +CHROMONEMA +CHROMONEMATA +CHROMONEMATIC +CHROMOPHIL +CHROMOPHOBE +CHROMOPHORE +CHROMOPHORES +CHROMOPHORIC +CHROMOPLAST +CHROMOPLASTS +CHROMOPROTEIN +CHROMOPROTEINS +CHROMOS +CHROMOSOMAL +CHROMOSOMALLY +CHROMOSOME +CHROMOSOMES +CHROMOSPHERE +CHROMOSPHERES +CHROMOSPHERIC +CHROMOUS +CHROMY +CHROMYL +CHROMYLS +CHRONAXIE +CHRONAXIES +CHRONAXY +CHRONIC +CHRONICALLY +CHRONICITIES +CHRONICITY +CHRONICLE +CHRONICLED +CHRONICLER +CHRONICLERS +CHRONICLES +CHRONICLING +CHRONICS +CHRONOBIOLOGIC +CHRONOBIOLOGIES +CHRONOBIOLOGIST +CHRONOBIOLOGY +CHRONOGRAM +CHRONOGRAMS +CHRONOGRAPH +CHRONOGRAPHIC +CHRONOGRAPHIES +CHRONOGRAPHS +CHRONOGRAPHY +CHRONOLOGER +CHRONOLOGERS +CHRONOLOGIC +CHRONOLOGICAL +CHRONOLOGICALLY +CHRONOLOGIES +CHRONOLOGIST +CHRONOLOGISTS +CHRONOLOGY +CHRONOMETER +CHRONOMETERS +CHRONOMETRIC +CHRONOMETRICAL +CHRONOMETRIES +CHRONOMETRY +CHRONON +CHRONONS +CHRONOTHERAPIES +CHRONOTHERAPY +CHRYSALID +CHRYSALIDES +CHRYSALIDS +CHRYSALIS +CHRYSALISES +CHRYSANTHEMUM +CHRYSANTHEMUMS +CHRYSAROBIN +CHRYSAROBINS +CHRYSOBERYL +CHRYSOBERYLS +CHRYSOLITE +CHRYSOLITES +CHRYSOMELID +CHRYSOMELIDS +CHRYSOPHYTE +CHRYSOPHYTES +CHRYSOPRASE +CHRYSOPRASES +CHRYSOTILE +CHRYSOTILES +CHTHONIAN +CHTHONIC +CHUB +CHUBASCO +CHUBASCOS +CHUBBIER +CHUBBIEST +CHUBBILY +CHUBBINESS +CHUBBINESSES +CHUBBY +CHUBS +CHUCK +CHUCKAWALLA +CHUCKAWALLAS +CHUCKED +CHUCKHOLE +CHUCKHOLES +CHUCKIES +CHUCKING +CHUCKLE +CHUCKLED +CHUCKLEHEAD +CHUCKLEHEADED +CHUCKLEHEADS +CHUCKLER +CHUCKLERS +CHUCKLES +CHUCKLESOME +CHUCKLING +CHUCKLINGLY +CHUCKS +CHUCKWALLA +CHUCKWALLAS +CHUCKY +CHUDDAH +CHUDDAHS +CHUDDAR +CHUDDARS +CHUDDER +CHUDDERS +CHUFA +CHUFAS +CHUFF +CHUFFED +CHUFFER +CHUFFEST +CHUFFIER +CHUFFIEST +CHUFFING +CHUFFS +CHUFFY +CHUG +CHUGALUG +CHUGALUGGED +CHUGALUGGING +CHUGALUGS +CHUGGED +CHUGGER +CHUGGERS +CHUGGING +CHUGS +CHUKAR +CHUKARS +CHUKKA +CHUKKAR +CHUKKARS +CHUKKAS +CHUKKER +CHUKKERS +CHUM +CHUMMED +CHUMMIER +CHUMMIEST +CHUMMILY +CHUMMINESS +CHUMMINESSES +CHUMMING +CHUMMY +CHUMP +CHUMPED +CHUMPING +CHUMPS +CHUMS +CHUMSHIP +CHUMSHIPS +CHUNK +CHUNKED +CHUNKIER +CHUNKIEST +CHUNKILY +CHUNKING +CHUNKS +CHUNKY +CHUNNEL +CHUNNELS +CHUNTER +CHUNTERED +CHUNTERING +CHUNTERS +CHUPPA +CHUPPAH +CHUPPAHS +CHUPPAS +CHURCH +CHURCHED +CHURCHES +CHURCHGOER +CHURCHGOERS +CHURCHGOING +CHURCHGOINGS +CHURCHIANITIES +CHURCHIANITY +CHURCHIER +CHURCHIEST +CHURCHING +CHURCHINGS +CHURCHLESS +CHURCHLIER +CHURCHLIEST +CHURCHLINESS +CHURCHLINESSES +CHURCHLY +CHURCHMAN +CHURCHMANSHIP +CHURCHMANSHIPS +CHURCHMEN +CHURCHWARDEN +CHURCHWARDENS +CHURCHWOMAN +CHURCHWOMEN +CHURCHY +CHURCHYARD +CHURCHYARDS +CHURL +CHURLISH +CHURLISHLY +CHURLISHNESS +CHURLISHNESSES +CHURLS +CHURN +CHURNED +CHURNER +CHURNERS +CHURNING +CHURNINGS +CHURNS +CHURR +CHURRED +CHURRIGUERESQUE +CHURRING +CHURRO +CHURROS +CHURRS +CHUTE +CHUTED +CHUTES +CHUTING +CHUTIST +CHUTISTS +CHUTNEE +CHUTNEES +CHUTNEY +CHUTNEYS +CHUTZPA +CHUTZPAH +CHUTZPAHS +CHUTZPAS +CHYLE +CHYLES +CHYLOMICRON +CHYLOMICRONS +CHYLOUS +CHYME +CHYMES +CHYMIC +CHYMICS +CHYMIST +CHYMISTS +CHYMOSIN +CHYMOSINS +CHYMOTRYPSIN +CHYMOTRYPSINS +CHYMOTRYPTIC +CHYMOUS +CHYTRID +CHYTRIDS +CIAO +CIBOL +CIBOLS +CIBORIA +CIBORIUM +CIBOULE +CIBOULES +CICADA +CICADAE +CICADAS +CICALA +CICALAS +CICALE +CICATRICE +CICATRICES +CICATRICIAL +CICATRIX +CICATRIXES +CICATRIZATION +CICATRIZATIONS +CICATRIZE +CICATRIZED +CICATRIZES +CICATRIZING +CICELIES +CICELY +CICERO +CICERONE +CICERONES +CICERONI +CICEROS +CICHLID +CICHLIDAE +CICHLIDS +CICISBEI +CICISBEISM +CICISBEISMS +CICISBEO +CICISBEOS +CICOREE +CICOREES +CIDER +CIDERS +CIG +CIGAR +CIGARET +CIGARETS +CIGARETTE +CIGARETTES +CIGARILLO +CIGARILLOS +CIGARLIKE +CIGARS +CIGS +CIGUATERA +CIGUATERAS +CILANTRO +CILANTROS +CILIA +CILIARY +CILIATE +CILIATED +CILIATELY +CILIATES +CILIATION +CILIATIONS +CILICE +CILICES +CILIOLATE +CILIUM +CIMBALOM +CIMBALOMS +CIMETIDINE +CIMETIDINES +CIMEX +CIMICES +CINCH +CINCHED +CINCHES +CINCHING +CINCHONA +CINCHONAS +CINCHONIC +CINCHONINE +CINCHONINES +CINCHONISM +CINCHONISMS +CINCTURE +CINCTURED +CINCTURES +CINCTURING +CINDER +CINDERED +CINDERING +CINDEROUS +CINDERS +CINDERY +CINE +CINEAST +CINEASTE +CINEASTES +CINEASTS +CINEMA +CINEMAGOER +CINEMAGOERS +CINEMAS +CINEMATHEQUE +CINEMATHEQUES +CINEMATIC +CINEMATICALLY +CINEMATIZE +CINEMATIZED +CINEMATIZES +CINEMATIZING +CINEMATOGRAPH +CINEMATOGRAPHER +CINEMATOGRAPHIC +CINEMATOGRAPHS +CINEMATOGRAPHY +CINEOL +CINEOLE +CINEOLES +CINEOLS +CINEPHILE +CINEPHILES +CINERARIA +CINERARIAS +CINERARIUM +CINERARY +CINEREOUS +CINERIN +CINERINS +CINES +CINGULA +CINGULAR +CINGULATE +CINGULUM +CINNABAR +CINNABARINE +CINNABARS +CINNAMIC +CINNAMON +CINNAMONS +CINNAMONY +CINNAMYL +CINNAMYLS +CINQUAIN +CINQUAINS +CINQUE +CINQUECENTIST +CINQUECENTISTS +CINQUECENTO +CINQUECENTOS +CINQUEFOIL +CINQUEFOILS +CINQUES +CION +CIONS +CIOPPINO +CIOPPINOS +CIPHER +CIPHERED +CIPHERER +CIPHERERS +CIPHERING +CIPHERS +CIPHERTEXT +CIPHERTEXTS +CIPHONIES +CIPHONY +CIPOLIN +CIPOLINS +CIPOLLINO +CIPOLLINOS +CIRCA +CIRCADIAN +CIRCINATE +CIRCINATELY +CIRCLE +CIRCLED +CIRCLER +CIRCLERS +CIRCLES +CIRCLET +CIRCLETS +CIRCLING +CIRCUIT +CIRCUITAL +CIRCUITED +CIRCUITIES +CIRCUITING +CIRCUITOUS +CIRCUITOUSLY +CIRCUITOUSNESS +CIRCUITRIES +CIRCUITRY +CIRCUITS +CIRCUITY +CIRCULAR +CIRCULARISE +CIRCULARISED +CIRCULARISES +CIRCULARISING +CIRCULARITIES +CIRCULARITY +CIRCULARIZATION +CIRCULARIZE +CIRCULARIZED +CIRCULARIZES +CIRCULARIZING +CIRCULARLY +CIRCULARNESS +CIRCULARNESSES +CIRCULARS +CIRCULATABLE +CIRCULATE +CIRCULATED +CIRCULATES +CIRCULATING +CIRCULATION +CIRCULATIONS +CIRCULATIVE +CIRCULATOR +CIRCULATORS +CIRCULATORY +CIRCUMAMBIENT +CIRCUMAMBIENTLY +CIRCUMAMBULATE +CIRCUMAMBULATED +CIRCUMAMBULATES +CIRCUMCENTER +CIRCUMCENTERS +CIRCUMCIRCLE +CIRCUMCIRCLES +CIRCUMCISE +CIRCUMCISED +CIRCUMCISER +CIRCUMCISERS +CIRCUMCISES +CIRCUMCISING +CIRCUMCISION +CIRCUMCISIONS +CIRCUMFERENCE +CIRCUMFERENCES +CIRCUMFERENTIAL +CIRCUMFLEX +CIRCUMFLEXES +CIRCUMFLUENT +CIRCUMFLUOUS +CIRCUMFUSE +CIRCUMFUSED +CIRCUMFUSES +CIRCUMFUSING +CIRCUMFUSION +CIRCUMFUSIONS +CIRCUMJACENT +CIRCUMLOCUTION +CIRCUMLOCUTIONS +CIRCUMLOCUTORY +CIRCUMLUNAR +CIRCUMNAVIGATE +CIRCUMNAVIGATED +CIRCUMNAVIGATES +CIRCUMNAVIGATOR +CIRCUMPOLAR +CIRCUMSCISSILE +CIRCUMSCRIBE +CIRCUMSCRIBED +CIRCUMSCRIBES +CIRCUMSCRIBING +CIRCUMSCRIPTION +CIRCUMSPECT +CIRCUMSPECTION +CIRCUMSPECTIONS +CIRCUMSPECTLY +CIRCUMSTANCE +CIRCUMSTANCED +CIRCUMSTANCES +CIRCUMSTANTIAL +CIRCUMSTANTIATE +CIRCUMSTELLAR +CIRCUMVALLATE +CIRCUMVALLATED +CIRCUMVALLATES +CIRCUMVALLATING +CIRCUMVALLATION +CIRCUMVENT +CIRCUMVENTED +CIRCUMVENTING +CIRCUMVENTION +CIRCUMVENTIONS +CIRCUMVENTS +CIRCUMVOLUTION +CIRCUMVOLUTIONS +CIRCUS +CIRCUSES +CIRCUSY +CIRE +CIRES +CIRQUE +CIRQUES +CIRRATE +CIRRHOSED +CIRRHOSES +CIRRHOSIS +CIRRHOTIC +CIRRHOTICS +CIRRI +CIRRIFORM +CIRRIPED +CIRRIPEDE +CIRRIPEDES +CIRRIPEDS +CIRROCUMULI +CIRROCUMULUS +CIRROSE +CIRROSTRATI +CIRROSTRATUS +CIRROUS +CIRRUS +CIRSOID +CIS +CISALPINE +CISCO +CISCOES +CISCOS +CISLUNAR +CISPLATIN +CISPLATINS +CISSIES +CISSOID +CISSOIDS +CISSY +CIST +CISTED +CISTERN +CISTERNA +CISTERNAE +CISTERNAL +CISTERNS +CISTRON +CISTRONIC +CISTRONS +CISTS +CISTUS +CISTUSES +CITABLE +CITADEL +CITADELS +CITATION +CITATIONAL +CITATIONS +CITATOR +CITATORS +CITATORY +CITE +CITEABLE +CITED +CITER +CITERS +CITES +CITHARA +CITHARAS +CITHER +CITHERN +CITHERNS +CITHERS +CITHREN +CITHRENS +CITIED +CITIES +CITIFICATION +CITIFICATIONS +CITIFIED +CITIFIES +CITIFY +CITIFYING +CITING +CITIZEN +CITIZENESS +CITIZENESSES +CITIZENLY +CITIZENRIES +CITIZENRY +CITIZENS +CITIZENSHIP +CITIZENSHIPS +CITOLA +CITOLAS +CITOLE +CITOLES +CITRAL +CITRALS +CITRATE +CITRATED +CITRATES +CITREOUS +CITRIC +CITRICULTURE +CITRICULTURES +CITRICULTURIST +CITRICULTURISTS +CITRIN +CITRINE +CITRINES +CITRININ +CITRININS +CITRINS +CITRON +CITRONELLA +CITRONELLAL +CITRONELLALS +CITRONELLAS +CITRONELLOL +CITRONELLOLS +CITRONS +CITROUS +CITRULLINE +CITRULLINES +CITRUS +CITRUSES +CITRUSY +CITTERN +CITTERNS +CITY +CITYFIED +CITYSCAPE +CITYSCAPES +CITYWARD +CITYWIDE +CIVET +CIVETLIKE +CIVETS +CIVIC +CIVICALLY +CIVICISM +CIVICISMS +CIVICS +CIVIE +CIVIES +CIVIL +CIVILIAN +CIVILIANIZATION +CIVILIANIZE +CIVILIANIZED +CIVILIANIZES +CIVILIANIZING +CIVILIANS +CIVILISATION +CIVILISATIONS +CIVILISE +CIVILISED +CIVILISES +CIVILISING +CIVILITIES +CIVILITY +CIVILIZATION +CIVILIZATIONAL +CIVILIZATIONS +CIVILIZE +CIVILIZED +CIVILIZER +CIVILIZERS +CIVILIZES +CIVILIZING +CIVILLY +CIVILNESS +CIVILNESSES +CIVISM +CIVISMS +CIVVIES +CIVVY +CLABBER +CLABBERED +CLABBERING +CLABBERS +CLACH +CLACHAN +CLACHANS +CLACHS +CLACK +CLACKED +CLACKER +CLACKERS +CLACKING +CLACKS +CLAD +CLADDAGH +CLADDAGHS +CLADDED +CLADDING +CLADDINGS +CLADE +CLADES +CLADISM +CLADISMS +CLADIST +CLADISTIC +CLADISTICALLY +CLADISTICS +CLADISTS +CLADOCERAN +CLADOCERANS +CLADODE +CLADODES +CLADODIAL +CLADOGENESES +CLADOGENESIS +CLADOGENETIC +CLADOGRAM +CLADOGRAMS +CLADOPHYLL +CLADOPHYLLS +CLADS +CLAFOUTI +CLAFOUTIS +CLAG +CLAGGED +CLAGGING +CLAGS +CLAIM +CLAIMABLE +CLAIMANT +CLAIMANTS +CLAIMED +CLAIMER +CLAIMERS +CLAIMING +CLAIMS +CLAIRAUDIENCE +CLAIRAUDIENCES +CLAIRAUDIENT +CLAIRAUDIENTLY +CLAIRVOYANCE +CLAIRVOYANCES +CLAIRVOYANT +CLAIRVOYANTLY +CLAIRVOYANTS +CLAM +CLAMANT +CLAMANTLY +CLAMBAKE +CLAMBAKES +CLAMBER +CLAMBERED +CLAMBERER +CLAMBERERS +CLAMBERING +CLAMBERS +CLAMLIKE +CLAMMED +CLAMMER +CLAMMERS +CLAMMIER +CLAMMIEST +CLAMMILY +CLAMMINESS +CLAMMINESSES +CLAMMING +CLAMMY +CLAMOR +CLAMORED +CLAMORER +CLAMORERS +CLAMORING +CLAMOROUS +CLAMOROUSLY +CLAMOROUSNESS +CLAMOROUSNESSES +CLAMORS +CLAMOUR +CLAMOURED +CLAMOURING +CLAMOURS +CLAMP +CLAMPDOWN +CLAMPDOWNS +CLAMPED +CLAMPER +CLAMPERS +CLAMPING +CLAMPS +CLAMS +CLAMSHELL +CLAMSHELLS +CLAMWORM +CLAMWORMS +CLAN +CLANDESTINE +CLANDESTINELY +CLANDESTINENESS +CLANDESTINITIES +CLANDESTINITY +CLANG +CLANGED +CLANGER +CLANGERS +CLANGING +CLANGOR +CLANGORED +CLANGORING +CLANGOROUS +CLANGOROUSLY +CLANGORS +CLANGOUR +CLANGOURED +CLANGOURING +CLANGOURS +CLANGS +CLANK +CLANKED +CLANKIER +CLANKIEST +CLANKING +CLANKINGLY +CLANKS +CLANKY +CLANNISH +CLANNISHLY +CLANNISHNESS +CLANNISHNESSES +CLANS +CLANSMAN +CLANSMEN +CLAP +CLAPBOARD +CLAPBOARDED +CLAPBOARDING +CLAPBOARDS +CLAPPED +CLAPPER +CLAPPERCLAW +CLAPPERCLAWED +CLAPPERCLAWING +CLAPPERCLAWS +CLAPPERS +CLAPPING +CLAPS +CLAPT +CLAPTRAP +CLAPTRAPS +CLAQUE +CLAQUER +CLAQUERS +CLAQUES +CLAQUEUR +CLAQUEURS +CLARENCE +CLARENCES +CLARET +CLARETS +CLARIES +CLARIFICATION +CLARIFICATIONS +CLARIFIED +CLARIFIER +CLARIFIERS +CLARIFIES +CLARIFY +CLARIFYING +CLARINET +CLARINETIST +CLARINETISTS +CLARINETS +CLARINETTIST +CLARINETTISTS +CLARION +CLARIONED +CLARIONET +CLARIONETS +CLARIONING +CLARIONS +CLARITIES +CLARITY +CLARKIA +CLARKIAS +CLARO +CLAROES +CLAROS +CLARY +CLASH +CLASHED +CLASHER +CLASHERS +CLASHES +CLASHING +CLASP +CLASPED +CLASPER +CLASPERS +CLASPING +CLASPS +CLASPT +CLASS +CLASSABLE +CLASSED +CLASSER +CLASSERS +CLASSES +CLASSIC +CLASSICAL +CLASSICALITIES +CLASSICALITY +CLASSICALLY +CLASSICALS +CLASSICISM +CLASSICISMS +CLASSICIST +CLASSICISTIC +CLASSICISTS +CLASSICIZE +CLASSICIZED +CLASSICIZES +CLASSICIZING +CLASSICO +CLASSICS +CLASSIER +CLASSIEST +CLASSIFIABLE +CLASSIFICATION +CLASSIFICATIONS +CLASSIFICATORY +CLASSIFIED +CLASSIFIER +CLASSIFIERS +CLASSIFIES +CLASSIFY +CLASSIFYING +CLASSILY +CLASSINESS +CLASSINESSES +CLASSING +CLASSIS +CLASSISM +CLASSISMS +CLASSIST +CLASSISTS +CLASSLESS +CLASSLESSNESS +CLASSLESSNESSES +CLASSMATE +CLASSMATES +CLASSON +CLASSONS +CLASSROOM +CLASSROOMS +CLASSWORK +CLASSWORKS +CLASSY +CLAST +CLASTIC +CLASTICS +CLASTS +CLATHRATE +CLATHRATES +CLATTER +CLATTERED +CLATTERER +CLATTERERS +CLATTERING +CLATTERINGLY +CLATTERS +CLATTERY +CLAUCHT +CLAUDICATION +CLAUDICATIONS +CLAUGHT +CLAUGHTED +CLAUGHTING +CLAUGHTS +CLAUSAL +CLAUSE +CLAUSES +CLAUSTRA +CLAUSTRAL +CLAUSTROPHOBE +CLAUSTROPHOBES +CLAUSTROPHOBIA +CLAUSTROPHOBIAS +CLAUSTROPHOBIC +CLAUSTRUM +CLAVATE +CLAVATELY +CLAVATION +CLAVATIONS +CLAVE +CLAVER +CLAVERED +CLAVERING +CLAVERS +CLAVES +CLAVI +CLAVICHORD +CLAVICHORDIST +CLAVICHORDISTS +CLAVICHORDS +CLAVICLE +CLAVICLES +CLAVICORN +CLAVICULAR +CLAVIER +CLAVIERIST +CLAVIERISTIC +CLAVIERISTS +CLAVIERS +CLAVIFORM +CLAVUS +CLAW +CLAWBACK +CLAWBACKS +CLAWED +CLAWER +CLAWERS +CLAWHAMMER +CLAWING +CLAWLESS +CLAWLIKE +CLAWS +CLAXON +CLAXONS +CLAY +CLAYBANK +CLAYBANKS +CLAYED +CLAYEY +CLAYIER +CLAYIEST +CLAYING +CLAYISH +CLAYLIKE +CLAYMORE +CLAYMORES +CLAYPAN +CLAYPANS +CLAYS +CLAYSTONE +CLAYSTONES +CLAYTONIA +CLAYTONIAS +CLAYWARE +CLAYWARES +CLEAN +CLEANABILITIES +CLEANABILITY +CLEANABLE +CLEANED +CLEANER +CLEANERS +CLEANEST +CLEANHANDED +CLEANING +CLEANLIER +CLEANLIEST +CLEANLINESS +CLEANLINESSES +CLEANLY +CLEANNESS +CLEANNESSES +CLEANS +CLEANSE +CLEANSED +CLEANSER +CLEANSERS +CLEANSES +CLEANSING +CLEANUP +CLEANUPS +CLEAR +CLEARABLE +CLEARANCE +CLEARANCES +CLEARCUT +CLEARCUTS +CLEARCUTTING +CLEARED +CLEARER +CLEARERS +CLEAREST +CLEAREYED +CLEARHEADED +CLEARHEADEDLY +CLEARHEADEDNESS +CLEARING +CLEARINGHOUSE +CLEARINGHOUSES +CLEARINGS +CLEARLY +CLEARNESS +CLEARNESSES +CLEARS +CLEARSTORIES +CLEARSTORY +CLEARWEED +CLEARWEEDS +CLEARWING +CLEARWINGS +CLEAT +CLEATED +CLEATING +CLEATS +CLEAVABLE +CLEAVAGE +CLEAVAGES +CLEAVE +CLEAVED +CLEAVER +CLEAVERS +CLEAVES +CLEAVING +CLEEK +CLEEKED +CLEEKING +CLEEKS +CLEF +CLEFS +CLEFT +CLEFTED +CLEFTING +CLEFTS +CLEIDOIC +CLEISTOGAMIC +CLEISTOGAMIES +CLEISTOGAMOUS +CLEISTOGAMOUSLY +CLEISTOGAMY +CLEMATIS +CLEMATISES +CLEMENCIES +CLEMENCY +CLEMENT +CLEMENTLY +CLENCH +CLENCHED +CLENCHER +CLENCHERS +CLENCHES +CLENCHING +CLEOME +CLEOMES +CLEPE +CLEPED +CLEPES +CLEPING +CLEPSYDRA +CLEPSYDRAE +CLEPSYDRAS +CLEPT +CLERESTORIES +CLERESTORY +CLERGIES +CLERGY +CLERGYMAN +CLERGYMEN +CLERGYWOMAN +CLERGYWOMEN +CLERIC +CLERICAL +CLERICALISM +CLERICALISMS +CLERICALIST +CLERICALISTS +CLERICALLY +CLERICALS +CLERICS +CLERID +CLERIDS +CLERIHEW +CLERIHEWS +CLERISIES +CLERISY +CLERK +CLERKDOM +CLERKDOMS +CLERKED +CLERKING +CLERKISH +CLERKLIER +CLERKLIEST +CLERKLY +CLERKS +CLERKSHIP +CLERKSHIPS +CLEVEITE +CLEVEITES +CLEVER +CLEVERER +CLEVEREST +CLEVERISH +CLEVERLY +CLEVERNESS +CLEVERNESSES +CLEVIS +CLEVISES +CLEW +CLEWED +CLEWING +CLEWS +CLICHE +CLICHED +CLICHES +CLICK +CLICKABLE +CLICKED +CLICKER +CLICKERS +CLICKING +CLICKLESS +CLICKS +CLICKWRAP +CLIENT +CLIENTAGE +CLIENTAGES +CLIENTAL +CLIENTELE +CLIENTELES +CLIENTLESS +CLIENTS +CLIFF +CLIFFIER +CLIFFIEST +CLIFFLIKE +CLIFFS +CLIFFY +CLIFT +CLIFTS +CLIMACTERIC +CLIMACTERICS +CLIMACTIC +CLIMACTICALLY +CLIMATAL +CLIMATE +CLIMATES +CLIMATIC +CLIMATICALLY +CLIMATIZE +CLIMATIZED +CLIMATIZES +CLIMATIZING +CLIMATOLOGICAL +CLIMATOLOGIES +CLIMATOLOGIST +CLIMATOLOGISTS +CLIMATOLOGY +CLIMAX +CLIMAXED +CLIMAXES +CLIMAXING +CLIMAXLESS +CLIMB +CLIMBABLE +CLIMBDOWN +CLIMBDOWNS +CLIMBED +CLIMBER +CLIMBERS +CLIMBING +CLIMBS +CLIME +CLIMES +CLINAL +CLINALLY +CLINCH +CLINCHED +CLINCHER +CLINCHERS +CLINCHES +CLINCHING +CLINCHINGLY +CLINE +CLINES +CLING +CLINGED +CLINGER +CLINGERS +CLINGFISH +CLINGFISHES +CLINGIER +CLINGIEST +CLINGING +CLINGS +CLINGSTONE +CLINGSTONES +CLINGY +CLINIC +CLINICAL +CLINICALLY +CLINICIAN +CLINICIANS +CLINICS +CLINK +CLINKED +CLINKER +CLINKERED +CLINKERING +CLINKERS +CLINKING +CLINKS +CLINOMETER +CLINOMETERS +CLINQUANT +CLINQUANTS +CLINTONIA +CLINTONIAS +CLIOMETRIC +CLIOMETRICIAN +CLIOMETRICIANS +CLIOMETRICS +CLIP +CLIPBOARD +CLIPBOARDS +CLIPPABLE +CLIPPED +CLIPPER +CLIPPERS +CLIPPING +CLIPPINGS +CLIPS +CLIPSHEET +CLIPSHEETS +CLIPT +CLIQUE +CLIQUED +CLIQUES +CLIQUEY +CLIQUIER +CLIQUIEST +CLIQUING +CLIQUISH +CLIQUISHLY +CLIQUISHNESS +CLIQUISHNESSES +CLIQUY +CLITELLA +CLITELLUM +CLITIC +CLITICIZE +CLITICIZED +CLITICIZES +CLITICIZING +CLITICS +CLITORAL +CLITORECTOMIES +CLITORECTOMY +CLITORIC +CLITORIDECTOMY +CLITORIDES +CLITORIS +CLITORISES +CLIVERS +CLIVIA +CLIVIAS +CLOACA +CLOACAE +CLOACAL +CLOACAS +CLOAK +CLOAKED +CLOAKING +CLOAKROOM +CLOAKROOMS +CLOAKS +CLOBBER +CLOBBERED +CLOBBERING +CLOBBERS +CLOCHARD +CLOCHARDS +CLOCHE +CLOCHES +CLOCK +CLOCKED +CLOCKER +CLOCKERS +CLOCKING +CLOCKLIKE +CLOCKS +CLOCKWISE +CLOCKWORK +CLOCKWORKS +CLOD +CLODDIER +CLODDIEST +CLODDISH +CLODDISHNESS +CLODDISHNESSES +CLODDY +CLODHOPPER +CLODHOPPERS +CLODHOPPING +CLODPATE +CLODPATES +CLODPOLE +CLODPOLES +CLODPOLL +CLODPOLLS +CLODS +CLOFIBRATE +CLOFIBRATES +CLOG +CLOGGED +CLOGGER +CLOGGERS +CLOGGIER +CLOGGIEST +CLOGGILY +CLOGGING +CLOGGY +CLOGS +CLOISONNE +CLOISONNES +CLOISTER +CLOISTERED +CLOISTERING +CLOISTERS +CLOISTRAL +CLOISTRESS +CLOISTRESSES +CLOMB +CLOMIPHENE +CLOMIPHENES +CLOMP +CLOMPED +CLOMPING +CLOMPS +CLON +CLONAL +CLONALLY +CLONE +CLONED +CLONER +CLONERS +CLONES +CLONIC +CLONICITIES +CLONICITY +CLONIDINE +CLONIDINES +CLONING +CLONINGS +CLONISM +CLONISMS +CLONK +CLONKED +CLONKING +CLONKS +CLONS +CLONUS +CLONUSES +CLOOT +CLOOTS +CLOP +CLOPPED +CLOPPING +CLOPS +CLOQUE +CLOQUES +CLOSABLE +CLOSE +CLOSEABLE +CLOSED +CLOSEDOWN +CLOSEDOWNS +CLOSEFISTED +CLOSELY +CLOSEMOUTHED +CLOSENESS +CLOSENESSES +CLOSEOUT +CLOSEOUTS +CLOSER +CLOSERS +CLOSES +CLOSEST +CLOSESTOOL +CLOSESTOOLS +CLOSET +CLOSETED +CLOSETFUL +CLOSETFULS +CLOSETING +CLOSETS +CLOSEUP +CLOSEUPS +CLOSING +CLOSINGS +CLOSTRIDIA +CLOSTRIDIAL +CLOSTRIDIUM +CLOSURE +CLOSURED +CLOSURES +CLOSURING +CLOT +CLOTH +CLOTHBOUND +CLOTHE +CLOTHED +CLOTHES +CLOTHESHORSE +CLOTHESHORSES +CLOTHESLINE +CLOTHESLINED +CLOTHESLINES +CLOTHESLINING +CLOTHESPIN +CLOTHESPINS +CLOTHESPRESS +CLOTHESPRESSES +CLOTHIER +CLOTHIERS +CLOTHING +CLOTHINGS +CLOTHLIKE +CLOTHS +CLOTS +CLOTTED +CLOTTING +CLOTTY +CLOTURE +CLOTURED +CLOTURES +CLOTURING +CLOUD +CLOUDBERRIES +CLOUDBERRY +CLOUDBURST +CLOUDBURSTS +CLOUDED +CLOUDIER +CLOUDIEST +CLOUDILY +CLOUDINESS +CLOUDINESSES +CLOUDING +CLOUDLAND +CLOUDLANDS +CLOUDLESS +CLOUDLESSLY +CLOUDLESSNESS +CLOUDLESSNESSES +CLOUDLET +CLOUDLETS +CLOUDLIKE +CLOUDS +CLOUDSCAPE +CLOUDSCAPES +CLOUDY +CLOUGH +CLOUGHS +CLOUR +CLOURED +CLOURING +CLOURS +CLOUT +CLOUTED +CLOUTER +CLOUTERS +CLOUTING +CLOUTS +CLOVE +CLOVEN +CLOVER +CLOVERED +CLOVERLEAF +CLOVERLEAFS +CLOVERLEAVES +CLOVERS +CLOVERY +CLOVES +CLOWDER +CLOWDERS +CLOWN +CLOWNED +CLOWNERIES +CLOWNERY +CLOWNING +CLOWNISH +CLOWNISHLY +CLOWNISHNESS +CLOWNISHNESSES +CLOWNS +CLOXACILLIN +CLOXACILLINS +CLOY +CLOYED +CLOYING +CLOYINGLY +CLOYS +CLOZAPINE +CLOZAPINES +CLOZE +CLOZES +CLUB +CLUBABLE +CLUBBABLE +CLUBBED +CLUBBER +CLUBBERS +CLUBBIER +CLUBBIEST +CLUBBINESS +CLUBBINESSES +CLUBBING +CLUBBISH +CLUBBY +CLUBFACE +CLUBFACES +CLUBFEET +CLUBFOOT +CLUBFOOTED +CLUBHAND +CLUBHANDS +CLUBHAUL +CLUBHAULED +CLUBHAULING +CLUBHAULS +CLUBHEAD +CLUBHEADS +CLUBHOUSE +CLUBHOUSES +CLUBMAN +CLUBMEN +CLUBROOM +CLUBROOMS +CLUBROOT +CLUBROOTS +CLUBS +CLUBWOMAN +CLUBWOMEN +CLUCK +CLUCKED +CLUCKING +CLUCKS +CLUE +CLUED +CLUEING +CLUELESS +CLUES +CLUING +CLUMBER +CLUMBERS +CLUMP +CLUMPED +CLUMPIER +CLUMPIEST +CLUMPING +CLUMPISH +CLUMPLIKE +CLUMPS +CLUMPY +CLUMSIER +CLUMSIEST +CLUMSILY +CLUMSINESS +CLUMSINESSES +CLUMSY +CLUNG +CLUNK +CLUNKED +CLUNKER +CLUNKERS +CLUNKIER +CLUNKIEST +CLUNKING +CLUNKS +CLUNKY +CLUPEID +CLUPEIDS +CLUPEOID +CLUPEOIDS +CLUSTER +CLUSTERED +CLUSTERING +CLUSTERS +CLUSTERY +CLUTCH +CLUTCHED +CLUTCHES +CLUTCHING +CLUTCHY +CLUTTER +CLUTTERED +CLUTTERING +CLUTTERS +CLUTTERY +CLYPEAL +CLYPEATE +CLYPEI +CLYPEUS +CLYSTER +CLYSTERS +CNIDA +CNIDAE +CNIDARIAN +CNIDARIANS +COACERVATE +COACERVATES +COACERVATION +COACERVATIONS +COACH +COACHABLE +COACHED +COACHER +COACHERS +COACHES +COACHING +COACHMAN +COACHMEN +COACHWORK +COACHWORKS +COACT +COACTED +COACTING +COACTION +COACTIONS +COACTIVE +COACTOR +COACTORS +COACTS +COADAPTATION +COADAPTATIONS +COADAPTED +COADJUTOR +COADJUTORS +COADJUTRICES +COADJUTRIX +COADMIRE +COADMIRED +COADMIRES +COADMIRING +COADMIT +COADMITS +COADMITTED +COADMITTING +COADUNATE +COAEVAL +COAEVALS +COAGENCIES +COAGENCY +COAGENT +COAGENTS +COAGULA +COAGULABILITIES +COAGULABILITY +COAGULABLE +COAGULANT +COAGULANTS +COAGULASE +COAGULASES +COAGULATE +COAGULATED +COAGULATES +COAGULATING +COAGULATION +COAGULATIONS +COAGULUM +COAGULUMS +COAL +COALA +COALAS +COALBIN +COALBINS +COALBOX +COALBOXES +COALED +COALER +COALERS +COALESCE +COALESCED +COALESCENCE +COALESCENCES +COALESCENT +COALESCES +COALESCING +COALFIELD +COALFIELDS +COALFISH +COALFISHES +COALHOLE +COALHOLES +COALIER +COALIEST +COALIFICATION +COALIFICATIONS +COALIFIED +COALIFIES +COALIFY +COALIFYING +COALING +COALITION +COALITIONIST +COALITIONISTS +COALITIONS +COALLESS +COALPIT +COALPITS +COALS +COALSACK +COALSACKS +COALSHED +COALSHEDS +COALY +COALYARD +COALYARDS +COAMING +COAMINGS +COANCHOR +COANCHORED +COANCHORING +COANCHORS +COANNEX +COANNEXED +COANNEXES +COANNEXING +COAPPEAR +COAPPEARED +COAPPEARING +COAPPEARS +COAPT +COAPTATION +COAPTATIONS +COAPTED +COAPTING +COAPTS +COARCTATE +COARCTATION +COARCTATIONS +COARSE +COARSELY +COARSEN +COARSENED +COARSENESS +COARSENESSES +COARSENING +COARSENS +COARSER +COARSEST +COASSIST +COASSISTED +COASSISTING +COASSISTS +COASSUME +COASSUMED +COASSUMES +COASSUMING +COAST +COASTAL +COASTALLY +COASTED +COASTER +COASTERS +COASTGUARD +COASTGUARDMAN +COASTGUARDMEN +COASTGUARDS +COASTGUARDSMAN +COASTGUARDSMEN +COASTING +COASTINGS +COASTLAND +COASTLANDS +COASTLINE +COASTLINES +COASTS +COASTWARD +COASTWARDS +COASTWISE +COAT +COATDRESS +COATDRESSES +COATED +COATEE +COATEES +COATER +COATERS +COATI +COATIMUNDI +COATIMUNDIS +COATING +COATINGS +COATIS +COATLESS +COATRACK +COATRACKS +COATROOM +COATROOMS +COATS +COATTAIL +COATTAILS +COATTEND +COATTENDED +COATTENDING +COATTENDS +COATTEST +COATTESTED +COATTESTING +COATTESTS +COAUTHOR +COAUTHORED +COAUTHORING +COAUTHORS +COAUTHORSHIP +COAUTHORSHIPS +COAX +COAXAL +COAXED +COAXER +COAXERS +COAXES +COAXIAL +COAXIALLY +COAXING +COAXINGLY +COB +COBALAMIN +COBALAMINS +COBALT +COBALTIC +COBALTINE +COBALTINES +COBALTITE +COBALTITES +COBALTOUS +COBALTS +COBB +COBBER +COBBERS +COBBIER +COBBIEST +COBBLE +COBBLED +COBBLER +COBBLERS +COBBLES +COBBLESTONE +COBBLESTONED +COBBLESTONES +COBBLING +COBBS +COBBY +COBELLIGERENT +COBELLIGERENTS +COBIA +COBIAS +COBLE +COBLES +COBNUT +COBNUTS +COBRA +COBRAS +COBS +COBWEB +COBWEBBED +COBWEBBIER +COBWEBBIEST +COBWEBBING +COBWEBBY +COBWEBS +COCA +COCAIN +COCAINE +COCAINES +COCAINISM +COCAINISMS +COCAINIZATION +COCAINIZATIONS +COCAINIZE +COCAINIZED +COCAINIZES +COCAINIZING +COCAINS +COCAPTAIN +COCAPTAINED +COCAPTAINING +COCAPTAINS +COCARBOXYLASE +COCARBOXYLASES +COCARCINOGEN +COCARCINOGENIC +COCARCINOGENS +COCAS +COCATALYST +COCATALYSTS +COCCAL +COCCI +COCCIC +COCCID +COCCIDIA +COCCIDIOSES +COCCIDIOSIS +COCCIDIUM +COCCIDS +COCCOID +COCCOIDAL +COCCOIDS +COCCOLITH +COCCOLITHS +COCCOUS +COCCUS +COCCYGEAL +COCCYGES +COCCYX +COCCYXES +COCHAIR +COCHAIRED +COCHAIRING +COCHAIRMAN +COCHAIRMEN +COCHAIRPERSON +COCHAIRPERSONS +COCHAIRS +COCHAIRWOMAN +COCHAIRWOMEN +COCHAMPION +COCHAMPIONS +COCHIN +COCHINEAL +COCHINEALS +COCHINS +COCHLEA +COCHLEAE +COCHLEAR +COCHLEAS +COCHLEATE +COCINERA +COCINERAS +COCK +COCKADE +COCKADED +COCKADES +COCKALORUM +COCKALORUMS +COCKAMAMIE +COCKAMAMY +COCKAPOO +COCKAPOOS +COCKATEEL +COCKATEELS +COCKATIEL +COCKATIELS +COCKATOO +COCKATOOS +COCKATRICE +COCKATRICES +COCKBILL +COCKBILLED +COCKBILLING +COCKBILLS +COCKBOAT +COCKBOATS +COCKCHAFER +COCKCHAFERS +COCKCROW +COCKCROWS +COCKED +COCKER +COCKERED +COCKEREL +COCKERELS +COCKERING +COCKERS +COCKEYE +COCKEYED +COCKEYEDLY +COCKEYEDNESS +COCKEYEDNESSES +COCKEYES +COCKFIGHT +COCKFIGHTING +COCKFIGHTINGS +COCKFIGHTS +COCKHORSE +COCKHORSES +COCKIER +COCKIEST +COCKILY +COCKINESS +COCKINESSES +COCKING +COCKISH +COCKLE +COCKLEBUR +COCKLEBURS +COCKLED +COCKLES +COCKLESHELL +COCKLESHELLS +COCKLIKE +COCKLING +COCKLOFT +COCKLOFTS +COCKNEY +COCKNEYFIED +COCKNEYFIES +COCKNEYFY +COCKNEYFYING +COCKNEYISH +COCKNEYISM +COCKNEYISMS +COCKNEYS +COCKPIT +COCKPITS +COCKROACH +COCKROACHES +COCKS +COCKSCOMB +COCKSCOMBS +COCKSFOOT +COCKSFOOTS +COCKSHIES +COCKSHUT +COCKSHUTS +COCKSHY +COCKSPUR +COCKSPURS +COCKSUCKER +COCKSUCKERS +COCKSURE +COCKSURELY +COCKSURENESS +COCKSURENESSES +COCKSWAIN +COCKSWAINS +COCKTAIL +COCKTAILED +COCKTAILING +COCKTAILS +COCKUP +COCKUPS +COCKY +COCO +COCOA +COCOANUT +COCOANUTS +COCOAS +COCOBOLA +COCOBOLAS +COCOBOLO +COCOBOLOS +COCOMAT +COCOMATS +COCOMPOSER +COCOMPOSERS +COCONSPIRATOR +COCONSPIRATORS +COCONUT +COCONUTS +COCOON +COCOONED +COCOONING +COCOONINGS +COCOONS +COCOPLUM +COCOPLUMS +COCOS +COCOTTE +COCOTTES +COCOUNSEL +COCOUNSELED +COCOUNSELING +COCOUNSELLED +COCOUNSELLING +COCOUNSELS +COCOYAM +COCOYAMS +COCOZELLE +COCOZELLES +COCREATE +COCREATED +COCREATES +COCREATING +COCREATOR +COCREATORS +COCULTIVATE +COCULTIVATED +COCULTIVATES +COCULTIVATING +COCULTIVATION +COCULTIVATIONS +COCULTURE +COCULTURED +COCULTURES +COCULTURING +COCURATOR +COCURATORS +COCURRICULAR +COD +CODA +CODABLE +CODAS +CODDED +CODDER +CODDERS +CODDING +CODDLE +CODDLED +CODDLER +CODDLERS +CODDLES +CODDLING +CODE +CODEBOOK +CODEBOOKS +CODEBTOR +CODEBTORS +CODEC +CODECS +CODED +CODEFENDANT +CODEFENDANTS +CODEIA +CODEIAS +CODEIN +CODEINA +CODEINAS +CODEINE +CODEINES +CODEINS +CODELESS +CODEN +CODENS +CODEPENDENCE +CODEPENDENCES +CODEPENDENCIES +CODEPENDENCY +CODEPENDENT +CODEPENDENTS +CODER +CODERIVE +CODERIVED +CODERIVES +CODERIVING +CODERS +CODES +CODESIGN +CODESIGNED +CODESIGNING +CODESIGNS +CODETERMINATION +CODEVELOP +CODEVELOPED +CODEVELOPER +CODEVELOPERS +CODEVELOPING +CODEVELOPS +CODEX +CODFISH +CODFISHES +CODGER +CODGERS +CODICES +CODICIL +CODICILLARY +CODICILS +CODICOLOGICAL +CODICOLOGIES +CODICOLOGY +CODIFIABILITIES +CODIFIABILITY +CODIFICATION +CODIFICATIONS +CODIFIED +CODIFIER +CODIFIERS +CODIFIES +CODIFY +CODIFYING +CODING +CODIRECT +CODIRECTED +CODIRECTING +CODIRECTION +CODIRECTIONS +CODIRECTOR +CODIRECTORS +CODIRECTS +CODISCOVER +CODISCOVERED +CODISCOVERER +CODISCOVERERS +CODISCOVERING +CODISCOVERS +CODLIN +CODLING +CODLINGS +CODLINS +CODOMINANT +CODOMINANTS +CODON +CODONS +CODPIECE +CODPIECES +CODRIVE +CODRIVEN +CODRIVER +CODRIVERS +CODRIVES +CODRIVING +CODROVE +CODS +CODSWALLOP +CODSWALLOPS +COED +COEDIT +COEDITED +COEDITING +COEDITOR +COEDITORS +COEDITS +COEDS +COEDUCATION +COEDUCATIONAL +COEDUCATIONALLY +COEDUCATIONS +COEFFECT +COEFFECTS +COEFFICIENT +COEFFICIENTS +COELACANTH +COELACANTHS +COELENTERA +COELENTERATE +COELENTERATES +COELENTERON +COELIAC +COELOM +COELOMATA +COELOMATE +COELOMATES +COELOME +COELOMES +COELOMIC +COELOMS +COELOSTAT +COELOSTATS +COEMBODIED +COEMBODIES +COEMBODY +COEMBODYING +COEMPLOY +COEMPLOYED +COEMPLOYING +COEMPLOYS +COEMPT +COEMPTED +COEMPTING +COEMPTS +COENACT +COENACTED +COENACTING +COENACTS +COENAMOR +COENAMORED +COENAMORING +COENAMORS +COENDURE +COENDURED +COENDURES +COENDURING +COENOBITE +COENOBITES +COENOCYTE +COENOCYTES +COENOCYTIC +COENOSARC +COENOSARCS +COENURE +COENURES +COENURI +COENURUS +COENZYMATIC +COENZYMATICALLY +COENZYME +COENZYMES +COEQUAL +COEQUALITIES +COEQUALITY +COEQUALLY +COEQUALS +COEQUATE +COEQUATED +COEQUATES +COEQUATING +COERCE +COERCED +COERCER +COERCERS +COERCES +COERCIBLE +COERCIBLY +COERCING +COERCION +COERCIONS +COERCIVE +COERCIVELY +COERCIVENESS +COERCIVENESSES +COERCIVITIES +COERCIVITY +COERECT +COERECTED +COERECTING +COERECTS +COESITE +COESITES +COETANEOUS +COETERNAL +COEVAL +COEVALITIES +COEVALITY +COEVALLY +COEVALS +COEVOLUTION +COEVOLUTIONARY +COEVOLUTIONS +COEVOLVE +COEVOLVED +COEVOLVES +COEVOLVING +COEXECUTOR +COEXECUTORS +COEXERT +COEXERTED +COEXERTING +COEXERTS +COEXIST +COEXISTED +COEXISTENCE +COEXISTENCES +COEXISTENT +COEXISTING +COEXISTS +COEXTEND +COEXTENDED +COEXTENDING +COEXTENDS +COEXTENSIVE +COEXTENSIVELY +COFACTOR +COFACTORS +COFAVORITE +COFAVORITES +COFEATURE +COFEATURED +COFEATURES +COFEATURING +COFF +COFFEE +COFFEEHOUSE +COFFEEHOUSES +COFFEEMAKER +COFFEEMAKERS +COFFEEPOT +COFFEEPOTS +COFFEES +COFFER +COFFERDAM +COFFERDAMS +COFFERED +COFFERING +COFFERS +COFFIN +COFFINED +COFFING +COFFINING +COFFINS +COFFLE +COFFLED +COFFLES +COFFLING +COFFRET +COFFRETS +COFFS +COFINANCE +COFINANCED +COFINANCES +COFINANCING +COFOUND +COFOUNDED +COFOUNDER +COFOUNDERS +COFOUNDING +COFOUNDS +COFT +COFUNCTION +COFUNCTIONS +COG +COGENCIES +COGENCY +COGENERATION +COGENERATIONS +COGENERATOR +COGENERATORS +COGENT +COGENTLY +COGGED +COGGING +COGITABLE +COGITATE +COGITATED +COGITATES +COGITATING +COGITATION +COGITATIONS +COGITATIVE +COGITATOR +COGITATORS +COGITO +COGITOS +COGNAC +COGNACS +COGNATE +COGNATELY +COGNATES +COGNATION +COGNATIONS +COGNISE +COGNISED +COGNISES +COGNISING +COGNITION +COGNITIONAL +COGNITIONS +COGNITIVE +COGNITIVELY +COGNIZABLE +COGNIZABLY +COGNIZANCE +COGNIZANCES +COGNIZANT +COGNIZE +COGNIZED +COGNIZER +COGNIZERS +COGNIZES +COGNIZING +COGNOMEN +COGNOMENS +COGNOMINA +COGNOMINAL +COGNOSCENTE +COGNOSCENTI +COGNOSCIBLE +COGNOVIT +COGNOVITS +COGON +COGONS +COGS +COGWAY +COGWAYS +COGWHEEL +COGWHEELS +COHABIT +COHABITANT +COHABITANTS +COHABITATION +COHABITATIONS +COHABITED +COHABITER +COHABITERS +COHABITING +COHABITS +COHEAD +COHEADED +COHEADING +COHEADS +COHEIR +COHEIRESS +COHEIRESSES +COHEIRS +COHERE +COHERED +COHERENCE +COHERENCES +COHERENCIES +COHERENCY +COHERENT +COHERENTLY +COHERER +COHERERS +COHERES +COHERING +COHESION +COHESIONLESS +COHESIONS +COHESIVE +COHESIVELY +COHESIVENESS +COHESIVENESSES +COHO +COHOBATE +COHOBATED +COHOBATES +COHOBATING +COHOG +COHOGS +COHOLDER +COHOLDERS +COHOMOLOGICAL +COHOMOLOGIES +COHOMOLOGY +COHORT +COHORTS +COHOS +COHOSH +COHOSHES +COHOST +COHOSTED +COHOSTESS +COHOSTESSED +COHOSTESSES +COHOSTESSING +COHOSTING +COHOSTS +COHOUSING +COHOUSINGS +COHUNE +COHUNES +COIF +COIFED +COIFFE +COIFFED +COIFFES +COIFFEUR +COIFFEURS +COIFFEUSE +COIFFEUSES +COIFFING +COIFFURE +COIFFURED +COIFFURES +COIFFURING +COIFING +COIFS +COIGN +COIGNE +COIGNED +COIGNES +COIGNING +COIGNS +COIL +COILABILITIES +COILABILITY +COILED +COILER +COILERS +COILING +COILS +COIN +COINABLE +COINAGE +COINAGES +COINCIDE +COINCIDED +COINCIDENCE +COINCIDENCES +COINCIDENT +COINCIDENTAL +COINCIDENTALLY +COINCIDENTLY +COINCIDES +COINCIDING +COINED +COINER +COINERS +COINFECT +COINFECTED +COINFECTING +COINFECTS +COINFER +COINFERRED +COINFERRING +COINFERS +COINHERE +COINHERED +COINHERES +COINHERING +COINING +COINMATE +COINMATES +COINS +COINSURANCE +COINSURANCES +COINSURE +COINSURED +COINSURER +COINSURERS +COINSURES +COINSURING +COINTER +COINTERRED +COINTERRING +COINTERS +COINTREAU +COINTREAUS +COINVENT +COINVENTED +COINVENTING +COINVENTOR +COINVENTORS +COINVENTS +COINVESTIGATOR +COINVESTIGATORS +COINVESTOR +COINVESTORS +COIR +COIRS +COISTREL +COISTRELS +COISTRIL +COISTRILS +COITAL +COITALLY +COITION +COITIONAL +COITIONS +COITUS +COITUSES +COJOIN +COJOINED +COJOINING +COJOINS +COJONES +COKE +COKED +COKEHEAD +COKEHEADS +COKELIKE +COKES +COKING +COKY +COL +COLA +COLANDER +COLANDERS +COLAS +COLATITUDE +COLATITUDES +COLBY +COLBYS +COLCANNON +COLCANNONS +COLCHICINE +COLCHICINES +COLCHICUM +COLCHICUMS +COLCOTHAR +COLCOTHARS +COLD +COLDBLOOD +COLDCOCK +COLDCOCKED +COLDCOCKING +COLDCOCKS +COLDER +COLDEST +COLDHEARTED +COLDHEARTEDLY +COLDHEARTEDNESS +COLDISH +COLDLY +COLDNESS +COLDNESSES +COLDS +COLE +COLEAD +COLEADER +COLEADERS +COLEADING +COLEADS +COLECTOMIES +COLECTOMY +COLED +COLEMANITE +COLEMANITES +COLEOPTERA +COLEOPTERAN +COLEOPTERANS +COLEOPTERIST +COLEOPTERISTS +COLEOPTEROUS +COLEOPTILE +COLEOPTILES +COLEORHIZA +COLEORHIZAE +COLES +COLESEED +COLESEEDS +COLESLAW +COLESLAWS +COLESSEE +COLESSEES +COLESSOR +COLESSORS +COLEUS +COLEUSES +COLEWORT +COLEWORTS +COLIC +COLICIN +COLICINE +COLICINES +COLICINS +COLICKIER +COLICKIEST +COLICKY +COLICROOT +COLICROOTS +COLICS +COLICWEED +COLICWEEDS +COLIES +COLIFORM +COLIFORMS +COLIN +COLINEAR +COLINEARITIES +COLINEARITY +COLINS +COLIPHAGE +COLIPHAGES +COLISEUM +COLISEUMS +COLISTIN +COLISTINS +COLITIC +COLITIS +COLITISES +COLLABORATE +COLLABORATED +COLLABORATES +COLLABORATING +COLLABORATION +COLLABORATIONS +COLLABORATIVE +COLLABORATIVELY +COLLABORATIVES +COLLABORATOR +COLLABORATORS +COLLAGE +COLLAGED +COLLAGEN +COLLAGENASE +COLLAGENASES +COLLAGENOUS +COLLAGENS +COLLAGES +COLLAGING +COLLAGIST +COLLAGISTS +COLLAPSE +COLLAPSED +COLLAPSES +COLLAPSIBILITY +COLLAPSIBLE +COLLAPSING +COLLAR +COLLARBONE +COLLARBONES +COLLARD +COLLARDS +COLLARED +COLLARET +COLLARETS +COLLARING +COLLARLESS +COLLARS +COLLATE +COLLATED +COLLATERAL +COLLATERALITIES +COLLATERALITY +COLLATERALIZE +COLLATERALIZED +COLLATERALIZES +COLLATERALIZING +COLLATERALLY +COLLATERALS +COLLATES +COLLATING +COLLATION +COLLATIONS +COLLATOR +COLLATORS +COLLEAGUE +COLLEAGUES +COLLEAGUESHIP +COLLEAGUESHIPS +COLLECT +COLLECTABLE +COLLECTABLES +COLLECTANEA +COLLECTED +COLLECTEDLY +COLLECTEDNESS +COLLECTEDNESSES +COLLECTIBLE +COLLECTIBLES +COLLECTING +COLLECTION +COLLECTIONS +COLLECTIVE +COLLECTIVELY +COLLECTIVES +COLLECTIVISE +COLLECTIVISED +COLLECTIVISES +COLLECTIVISING +COLLECTIVISM +COLLECTIVISMS +COLLECTIVIST +COLLECTIVISTIC +COLLECTIVISTS +COLLECTIVITIES +COLLECTIVITY +COLLECTIVIZE +COLLECTIVIZED +COLLECTIVIZES +COLLECTIVIZING +COLLECTOR +COLLECTORS +COLLECTORSHIP +COLLECTORSHIPS +COLLECTS +COLLEEN +COLLEENS +COLLEGE +COLLEGER +COLLEGERS +COLLEGES +COLLEGIA +COLLEGIAL +COLLEGIALITIES +COLLEGIALITY +COLLEGIALLY +COLLEGIAN +COLLEGIANS +COLLEGIATE +COLLEGIATELY +COLLEGIUM +COLLEGIUMS +COLLEMBOLAN +COLLEMBOLANS +COLLEMBOLOUS +COLLENCHYMA +COLLENCHYMAS +COLLENCHYMATOUS +COLLET +COLLETED +COLLETING +COLLETS +COLLIDE +COLLIDED +COLLIDER +COLLIDERS +COLLIDES +COLLIDING +COLLIE +COLLIED +COLLIER +COLLIERIES +COLLIERS +COLLIERY +COLLIES +COLLIESHANGIE +COLLIESHANGIES +COLLIGATE +COLLIGATED +COLLIGATES +COLLIGATING +COLLIGATION +COLLIGATIONS +COLLIGATIVE +COLLIMATE +COLLIMATED +COLLIMATES +COLLIMATING +COLLIMATION +COLLIMATIONS +COLLIMATOR +COLLIMATORS +COLLINEAR +COLLINEARITIES +COLLINEARITY +COLLINS +COLLINSES +COLLINSIA +COLLINSIAS +COLLISION +COLLISIONAL +COLLISIONALLY +COLLISIONS +COLLOCATE +COLLOCATED +COLLOCATES +COLLOCATING +COLLOCATION +COLLOCATIONAL +COLLOCATIONS +COLLODION +COLLODIONS +COLLOGUE +COLLOGUED +COLLOGUES +COLLOGUING +COLLOID +COLLOIDAL +COLLOIDALLY +COLLOIDS +COLLOP +COLLOPS +COLLOQUIA +COLLOQUIAL +COLLOQUIALISM +COLLOQUIALISMS +COLLOQUIALITIES +COLLOQUIALITY +COLLOQUIALLY +COLLOQUIALS +COLLOQUIES +COLLOQUIST +COLLOQUISTS +COLLOQUIUM +COLLOQUIUMS +COLLOQUY +COLLOTYPE +COLLOTYPES +COLLOTYPIES +COLLOTYPY +COLLUDE +COLLUDED +COLLUDER +COLLUDERS +COLLUDES +COLLUDING +COLLUSION +COLLUSIONS +COLLUSIVE +COLLUSIVELY +COLLUVIA +COLLUVIAL +COLLUVIUM +COLLUVIUMS +COLLY +COLLYING +COLLYRIA +COLLYRIUM +COLLYRIUMS +COLLYWOBBLES +COLOBI +COLOBOMA +COLOBOMATA +COLOBUS +COLOBUSES +COLOCATE +COLOCATED +COLOCATES +COLOCATING +COLOCYNTH +COLOCYNTHS +COLOG +COLOGARITHM +COLOGARITHMS +COLOGNE +COLOGNED +COLOGNES +COLOGS +COLOMBARD +COLOMBARDS +COLON +COLONE +COLONEL +COLONELCIES +COLONELCY +COLONELS +COLONES +COLONI +COLONIAL +COLONIALISM +COLONIALISMS +COLONIALIST +COLONIALISTIC +COLONIALISTS +COLONIALIZE +COLONIALIZED +COLONIALIZES +COLONIALIZING +COLONIALLY +COLONIALNESS +COLONIALNESSES +COLONIALS +COLONIC +COLONICS +COLONIES +COLONISATION +COLONISATIONS +COLONISE +COLONISED +COLONISES +COLONISING +COLONIST +COLONISTS +COLONITIS +COLONITISES +COLONIZATION +COLONIZATIONIST +COLONIZATIONS +COLONIZE +COLONIZED +COLONIZER +COLONIZERS +COLONIZES +COLONIZING +COLONNADE +COLONNADED +COLONNADES +COLONS +COLONUS +COLONY +COLOPHON +COLOPHONIES +COLOPHONS +COLOPHONY +COLOR +COLORABLE +COLORABLY +COLORADO +COLORANT +COLORANTS +COLORATION +COLORATIONS +COLORATURA +COLORATURAS +COLORBRED +COLORBREED +COLORBREEDING +COLORBREEDS +COLORCAST +COLORCASTED +COLORCASTING +COLORCASTS +COLORECTAL +COLORED +COLOREDS +COLORER +COLORERS +COLORFAST +COLORFASTNESS +COLORFASTNESSES +COLORFUL +COLORFULLY +COLORFULNESS +COLORFULNESSES +COLORIFIC +COLORIMETER +COLORIMETERS +COLORIMETRIC +COLORIMETRIES +COLORIMETRY +COLORING +COLORINGS +COLORISM +COLORISMS +COLORIST +COLORISTIC +COLORISTICALLY +COLORISTS +COLORIZATION +COLORIZATIONS +COLORIZE +COLORIZED +COLORIZER +COLORIZERS +COLORIZES +COLORIZING +COLORLESS +COLORLESSLY +COLORLESSNESS +COLORLESSNESSES +COLORMAN +COLORMEN +COLORPOINT +COLORPOINTS +COLORS +COLORWAY +COLORWAYS +COLOSSAL +COLOSSALLY +COLOSSEUM +COLOSSEUMS +COLOSSI +COLOSSUS +COLOSSUSES +COLOSTOMIES +COLOSTOMY +COLOSTRAL +COLOSTRUM +COLOSTRUMS +COLOTOMIES +COLOTOMY +COLOUR +COLOURED +COLOURER +COLOURERS +COLOURING +COLOURS +COLPITIS +COLPITISES +COLPORTAGE +COLPORTAGES +COLPORTEUR +COLPORTEURS +COLS +COLT +COLTER +COLTERS +COLTISH +COLTISHLY +COLTISHNESS +COLTISHNESSES +COLTS +COLTSFOOT +COLTSFOOTS +COLUBRID +COLUBRIDS +COLUBRINE +COLUGO +COLUGOS +COLUMBARIA +COLUMBARIES +COLUMBARIUM +COLUMBARY +COLUMBIC +COLUMBINE +COLUMBINES +COLUMBITE +COLUMBITES +COLUMBIUM +COLUMBIUMS +COLUMEL +COLUMELLA +COLUMELLAE +COLUMELLAR +COLUMELS +COLUMN +COLUMNAL +COLUMNAR +COLUMNEA +COLUMNEAS +COLUMNED +COLUMNIATION +COLUMNIATIONS +COLUMNIST +COLUMNISTIC +COLUMNISTS +COLUMNS +COLURE +COLURES +COLY +COLZA +COLZAS +COMA +COMADE +COMAE +COMAKE +COMAKER +COMAKERS +COMAKES +COMAKING +COMAL +COMANAGE +COMANAGED +COMANAGEMENT +COMANAGEMENTS +COMANAGER +COMANAGERS +COMANAGES +COMANAGING +COMAS +COMATE +COMATES +COMATIC +COMATIK +COMATIKS +COMATOSE +COMATULA +COMATULAE +COMATULID +COMATULIDS +COMB +COMBAT +COMBATANT +COMBATANTS +COMBATED +COMBATER +COMBATERS +COMBATING +COMBATIVE +COMBATIVELY +COMBATIVENESS +COMBATIVENESSES +COMBATS +COMBATTED +COMBATTING +COMBE +COMBED +COMBER +COMBERS +COMBES +COMBINABLE +COMBINATION +COMBINATIONAL +COMBINATIONS +COMBINATIVE +COMBINATORIAL +COMBINATORIALLY +COMBINATORICS +COMBINATORY +COMBINE +COMBINED +COMBINEDS +COMBINER +COMBINERS +COMBINES +COMBING +COMBINGS +COMBINING +COMBLIKE +COMBO +COMBOS +COMBS +COMBUST +COMBUSTED +COMBUSTIBILITY +COMBUSTIBLE +COMBUSTIBLES +COMBUSTIBLY +COMBUSTING +COMBUSTION +COMBUSTIONS +COMBUSTIVE +COMBUSTOR +COMBUSTORS +COMBUSTS +COME +COMEBACK +COMEBACKS +COMEDIAN +COMEDIANS +COMEDIC +COMEDICALLY +COMEDIENNE +COMEDIENNES +COMEDIES +COMEDO +COMEDONES +COMEDOS +COMEDOWN +COMEDOWNS +COMEDY +COMELIER +COMELIEST +COMELILY +COMELINESS +COMELINESSES +COMELY +COMEMBER +COMEMBERS +COMER +COMERS +COMES +COMESTIBLE +COMESTIBLES +COMET +COMETARY +COMETH +COMETHER +COMETHERS +COMETIC +COMETS +COMEUPPANCE +COMEUPPANCES +COMFIER +COMFIEST +COMFINESS +COMFINESSES +COMFIT +COMFITS +COMFORT +COMFORTABLE +COMFORTABLENESS +COMFORTABLY +COMFORTED +COMFORTER +COMFORTERS +COMFORTING +COMFORTINGLY +COMFORTLESS +COMFORTS +COMFREY +COMFREYS +COMFY +COMIC +COMICAL +COMICALITIES +COMICALITY +COMICALLY +COMICS +COMING +COMINGLE +COMINGLED +COMINGLES +COMINGLING +COMINGS +COMITIA +COMITIAL +COMITIES +COMITY +COMIX +COMMA +COMMAND +COMMANDABLE +COMMANDANT +COMMANDANTS +COMMANDED +COMMANDEER +COMMANDEERED +COMMANDEERING +COMMANDEERS +COMMANDER +COMMANDERIES +COMMANDERS +COMMANDERSHIP +COMMANDERSHIPS +COMMANDERY +COMMANDING +COMMANDINGLY +COMMANDMENT +COMMANDMENTS +COMMANDO +COMMANDOES +COMMANDOS +COMMANDS +COMMAS +COMMATA +COMMEMORATE +COMMEMORATED +COMMEMORATES +COMMEMORATING +COMMEMORATION +COMMEMORATIONS +COMMEMORATIVE +COMMEMORATIVELY +COMMEMORATIVES +COMMEMORATOR +COMMEMORATORS +COMMENCE +COMMENCED +COMMENCEMENT +COMMENCEMENTS +COMMENCER +COMMENCERS +COMMENCES +COMMENCING +COMMEND +COMMENDABLE +COMMENDABLY +COMMENDAM +COMMENDAMS +COMMENDATION +COMMENDATIONS +COMMENDATORY +COMMENDED +COMMENDER +COMMENDERS +COMMENDING +COMMENDS +COMMENSAL +COMMENSALISM +COMMENSALISMS +COMMENSALLY +COMMENSALS +COMMENSURABLE +COMMENSURABLY +COMMENSURATE +COMMENSURATELY +COMMENSURATION +COMMENSURATIONS +COMMENT +COMMENTARIES +COMMENTARY +COMMENTATE +COMMENTATED +COMMENTATES +COMMENTATING +COMMENTATOR +COMMENTATORS +COMMENTED +COMMENTER +COMMENTERS +COMMENTING +COMMENTS +COMMERCE +COMMERCED +COMMERCES +COMMERCIAL +COMMERCIALISE +COMMERCIALISED +COMMERCIALISES +COMMERCIALISING +COMMERCIALISM +COMMERCIALISMS +COMMERCIALIST +COMMERCIALISTIC +COMMERCIALISTS +COMMERCIALITIES +COMMERCIALITY +COMMERCIALIZE +COMMERCIALIZED +COMMERCIALIZES +COMMERCIALIZING +COMMERCIALLY +COMMERCIALS +COMMERCING +COMMIE +COMMIES +COMMINATION +COMMINATIONS +COMMINATORY +COMMINGLE +COMMINGLED +COMMINGLES +COMMINGLING +COMMINUTE +COMMINUTED +COMMINUTES +COMMINUTING +COMMINUTION +COMMINUTIONS +COMMISERATE +COMMISERATED +COMMISERATES +COMMISERATING +COMMISERATINGLY +COMMISERATION +COMMISERATIONS +COMMISERATIVE +COMMISSAR +COMMISSARIAL +COMMISSARIAT +COMMISSARIATS +COMMISSARIES +COMMISSARS +COMMISSARY +COMMISSION +COMMISSIONAIRE +COMMISSIONAIRES +COMMISSIONED +COMMISSIONER +COMMISSIONERS +COMMISSIONING +COMMISSIONS +COMMISSURAL +COMMISSURE +COMMISSURES +COMMIT +COMMITMENT +COMMITMENTS +COMMITS +COMMITTABLE +COMMITTAL +COMMITTALS +COMMITTED +COMMITTEE +COMMITTEEMAN +COMMITTEEMEN +COMMITTEES +COMMITTEEWOMAN +COMMITTEEWOMEN +COMMITTING +COMMIX +COMMIXED +COMMIXES +COMMIXING +COMMIXT +COMMIXTURE +COMMIXTURES +COMMODE +COMMODES +COMMODIFICATION +COMMODIFIED +COMMODIFIES +COMMODIFY +COMMODIFYING +COMMODIOUS +COMMODIOUSLY +COMMODIOUSNESS +COMMODITIES +COMMODITY +COMMODORE +COMMODORES +COMMON +COMMONAGE +COMMONAGES +COMMONALITIES +COMMONALITY +COMMONALTIES +COMMONALTY +COMMONER +COMMONERS +COMMONEST +COMMONLY +COMMONNESS +COMMONNESSES +COMMONPLACE +COMMONPLACENESS +COMMONPLACES +COMMONS +COMMONSENSE +COMMONSENSIBLE +COMMONSENSICAL +COMMONWEAL +COMMONWEALS +COMMONWEALTH +COMMONWEALTHS +COMMOTION +COMMOTIONS +COMMOVE +COMMOVED +COMMOVES +COMMOVING +COMMUNAL +COMMUNALISM +COMMUNALISMS +COMMUNALIST +COMMUNALISTS +COMMUNALITIES +COMMUNALITY +COMMUNALIZE +COMMUNALIZED +COMMUNALIZES +COMMUNALIZING +COMMUNALLY +COMMUNARD +COMMUNARDS +COMMUNE +COMMUNED +COMMUNER +COMMUNERS +COMMUNES +COMMUNICABILITY +COMMUNICABLE +COMMUNICABLY +COMMUNICANT +COMMUNICANTS +COMMUNICATE +COMMUNICATED +COMMUNICATEE +COMMUNICATEES +COMMUNICATES +COMMUNICATING +COMMUNICATION +COMMUNICATIONAL +COMMUNICATIONS +COMMUNICATIVE +COMMUNICATIVELY +COMMUNICATOR +COMMUNICATORS +COMMUNICATORY +COMMUNING +COMMUNION +COMMUNIONS +COMMUNIQUE +COMMUNIQUES +COMMUNISE +COMMUNISED +COMMUNISES +COMMUNISING +COMMUNISM +COMMUNISMS +COMMUNIST +COMMUNISTIC +COMMUNISTICALLY +COMMUNISTS +COMMUNITARIAN +COMMUNITARIANS +COMMUNITIES +COMMUNITY +COMMUNIZATION +COMMUNIZATIONS +COMMUNIZE +COMMUNIZED +COMMUNIZES +COMMUNIZING +COMMUTABLE +COMMUTATE +COMMUTATED +COMMUTATES +COMMUTATING +COMMUTATION +COMMUTATIONS +COMMUTATIVE +COMMUTATIVITIES +COMMUTATIVITY +COMMUTATOR +COMMUTATORS +COMMUTE +COMMUTED +COMMUTER +COMMUTERS +COMMUTES +COMMUTING +COMMY +COMONOMER +COMONOMERS +COMORBID +COMOSE +COMOUS +COMP +COMPACT +COMPACTED +COMPACTER +COMPACTERS +COMPACTEST +COMPACTIBLE +COMPACTING +COMPACTION +COMPACTIONS +COMPACTLY +COMPACTNESS +COMPACTNESSES +COMPACTOR +COMPACTORS +COMPACTS +COMPADRE +COMPADRES +COMPANIED +COMPANIES +COMPANION +COMPANIONABLE +COMPANIONABLY +COMPANIONATE +COMPANIONED +COMPANIONING +COMPANIONS +COMPANIONSHIP +COMPANIONSHIPS +COMPANIONWAY +COMPANIONWAYS +COMPANY +COMPANYING +COMPARABILITIES +COMPARABILITY +COMPARABLE +COMPARABLENESS +COMPARABLY +COMPARATIST +COMPARATISTS +COMPARATIVE +COMPARATIVELY +COMPARATIVENESS +COMPARATIVES +COMPARATIVIST +COMPARATIVISTS +COMPARATOR +COMPARATORS +COMPARE +COMPARED +COMPARER +COMPARERS +COMPARES +COMPARING +COMPARISON +COMPARISONS +COMPART +COMPARTED +COMPARTING +COMPARTMENT +COMPARTMENTAL +COMPARTMENTED +COMPARTMENTING +COMPARTMENTS +COMPARTS +COMPAS +COMPASS +COMPASSABLE +COMPASSED +COMPASSES +COMPASSING +COMPASSION +COMPASSIONATE +COMPASSIONATED +COMPASSIONATELY +COMPASSIONATES +COMPASSIONATING +COMPASSIONLESS +COMPASSIONS +COMPATIBILITIES +COMPATIBILITY +COMPATIBLE +COMPATIBLENESS +COMPATIBLES +COMPATIBLY +COMPATRIOT +COMPATRIOTIC +COMPATRIOTS +COMPED +COMPEER +COMPEERED +COMPEERING +COMPEERS +COMPEL +COMPELLABLE +COMPELLATION +COMPELLATIONS +COMPELLED +COMPELLER +COMPELLERS +COMPELLING +COMPELLINGLY +COMPELS +COMPEND +COMPENDIA +COMPENDIOUS +COMPENDIOUSLY +COMPENDIOUSNESS +COMPENDIUM +COMPENDIUMS +COMPENDS +COMPENSABILITY +COMPENSABLE +COMPENSATE +COMPENSATED +COMPENSATES +COMPENSATING +COMPENSATION +COMPENSATIONAL +COMPENSATIONS +COMPENSATIVE +COMPENSATOR +COMPENSATORS +COMPENSATORY +COMPERE +COMPERED +COMPERES +COMPERING +COMPETE +COMPETED +COMPETENCE +COMPETENCES +COMPETENCIES +COMPETENCY +COMPETENT +COMPETENTLY +COMPETES +COMPETING +COMPETITION +COMPETITIONS +COMPETITIVE +COMPETITIVELY +COMPETITIVENESS +COMPETITOR +COMPETITORS +COMPILATION +COMPILATIONS +COMPILE +COMPILED +COMPILER +COMPILERS +COMPILES +COMPILING +COMPING +COMPLACENCE +COMPLACENCES +COMPLACENCIES +COMPLACENCY +COMPLACENT +COMPLACENTLY +COMPLAIN +COMPLAINANT +COMPLAINANTS +COMPLAINED +COMPLAINER +COMPLAINERS +COMPLAINING +COMPLAININGLY +COMPLAINS +COMPLAINT +COMPLAINTS +COMPLAISANCE +COMPLAISANCES +COMPLAISANT +COMPLAISANTLY +COMPLEAT +COMPLECT +COMPLECTED +COMPLECTING +COMPLECTS +COMPLEMENT +COMPLEMENTAL +COMPLEMENTARIES +COMPLEMENTARILY +COMPLEMENTARITY +COMPLEMENTARY +COMPLEMENTATION +COMPLEMENTED +COMPLEMENTING +COMPLEMENTIZER +COMPLEMENTIZERS +COMPLEMENTS +COMPLETE +COMPLETED +COMPLETELY +COMPLETENESS +COMPLETENESSES +COMPLETER +COMPLETERS +COMPLETES +COMPLETEST +COMPLETING +COMPLETION +COMPLETIONS +COMPLETIVE +COMPLEX +COMPLEXATION +COMPLEXATIONS +COMPLEXED +COMPLEXER +COMPLEXES +COMPLEXEST +COMPLEXIFIED +COMPLEXIFIES +COMPLEXIFY +COMPLEXIFYING +COMPLEXING +COMPLEXION +COMPLEXIONAL +COMPLEXIONED +COMPLEXIONS +COMPLEXITIES +COMPLEXITY +COMPLEXLY +COMPLEXNESS +COMPLEXNESSES +COMPLIANCE +COMPLIANCES +COMPLIANCIES +COMPLIANCY +COMPLIANT +COMPLIANTLY +COMPLICACIES +COMPLICACY +COMPLICATE +COMPLICATED +COMPLICATEDLY +COMPLICATEDNESS +COMPLICATES +COMPLICATING +COMPLICATION +COMPLICATIONS +COMPLICE +COMPLICES +COMPLICIT +COMPLICITIES +COMPLICITOUS +COMPLICITY +COMPLIED +COMPLIER +COMPLIERS +COMPLIES +COMPLIMENT +COMPLIMENTARILY +COMPLIMENTARY +COMPLIMENTED +COMPLIMENTING +COMPLIMENTS +COMPLIN +COMPLINE +COMPLINES +COMPLINS +COMPLOT +COMPLOTS +COMPLOTTED +COMPLOTTING +COMPLY +COMPLYING +COMPO +COMPONE +COMPONENT +COMPONENTIAL +COMPONENTS +COMPONY +COMPORT +COMPORTED +COMPORTING +COMPORTMENT +COMPORTMENTS +COMPORTS +COMPOS +COMPOSE +COMPOSED +COMPOSEDLY +COMPOSEDNESS +COMPOSEDNESSES +COMPOSER +COMPOSERS +COMPOSES +COMPOSING +COMPOSITE +COMPOSITED +COMPOSITELY +COMPOSITES +COMPOSITING +COMPOSITION +COMPOSITIONAL +COMPOSITIONALLY +COMPOSITIONS +COMPOSITOR +COMPOSITORS +COMPOST +COMPOSTED +COMPOSTER +COMPOSTERS +COMPOSTING +COMPOSTS +COMPOSURE +COMPOSURES +COMPOTE +COMPOTES +COMPOUND +COMPOUNDABLE +COMPOUNDED +COMPOUNDER +COMPOUNDERS +COMPOUNDING +COMPOUNDS +COMPRADOR +COMPRADORE +COMPRADORES +COMPRADORS +COMPREHEND +COMPREHENDED +COMPREHENDIBLE +COMPREHENDING +COMPREHENDS +COMPREHENSIBLE +COMPREHENSIBLY +COMPREHENSION +COMPREHENSIONS +COMPREHENSIVE +COMPREHENSIVELY +COMPRESS +COMPRESSED +COMPRESSEDLY +COMPRESSES +COMPRESSIBILITY +COMPRESSIBLE +COMPRESSING +COMPRESSION +COMPRESSIONAL +COMPRESSIONS +COMPRESSIVE +COMPRESSIVELY +COMPRESSOR +COMPRESSORS +COMPRISAL +COMPRISALS +COMPRISE +COMPRISED +COMPRISES +COMPRISING +COMPRIZE +COMPRIZED +COMPRIZES +COMPRIZING +COMPROMISE +COMPROMISED +COMPROMISER +COMPROMISERS +COMPROMISES +COMPROMISING +COMPS +COMPT +COMPTED +COMPTING +COMPTROLLER +COMPTROLLERS +COMPTROLLERSHIP +COMPTS +COMPULSION +COMPULSIONS +COMPULSIVE +COMPULSIVELY +COMPULSIVENESS +COMPULSIVITIES +COMPULSIVITY +COMPULSORILY +COMPULSORY +COMPUNCTION +COMPUNCTIONS +COMPUNCTIOUS +COMPURGATION +COMPURGATIONS +COMPURGATOR +COMPURGATORS +COMPUTABILITIES +COMPUTABILITY +COMPUTABLE +COMPUTATION +COMPUTATIONAL +COMPUTATIONALLY +COMPUTATIONS +COMPUTE +COMPUTED +COMPUTER +COMPUTERDOM +COMPUTERDOMS +COMPUTERESE +COMPUTERESES +COMPUTERISE +COMPUTERISED +COMPUTERISES +COMPUTERISING +COMPUTERIST +COMPUTERISTS +COMPUTERIZABLE +COMPUTERIZATION +COMPUTERIZE +COMPUTERIZED +COMPUTERIZES +COMPUTERIZING +COMPUTERLESS +COMPUTERLIKE +COMPUTERNIK +COMPUTERNIKS +COMPUTERPHOBE +COMPUTERPHOBES +COMPUTERPHOBIA +COMPUTERPHOBIAS +COMPUTERPHOBIC +COMPUTERS +COMPUTES +COMPUTING +COMPUTIST +COMPUTISTS +COMRADE +COMRADELINESS +COMRADELINESSES +COMRADELY +COMRADERIES +COMRADERY +COMRADES +COMRADESHIP +COMRADESHIPS +COMSYMP +COMSYMPS +COMTE +COMTES +CON +CONATION +CONATIONS +CONATIVE +CONATUS +CONCANAVALIN +CONCANAVALINS +CONCATENATE +CONCATENATED +CONCATENATES +CONCATENATING +CONCATENATION +CONCATENATIONS +CONCAVE +CONCAVED +CONCAVELY +CONCAVES +CONCAVING +CONCAVITIES +CONCAVITY +CONCEAL +CONCEALABLE +CONCEALED +CONCEALER +CONCEALERS +CONCEALING +CONCEALINGLY +CONCEALMENT +CONCEALMENTS +CONCEALS +CONCEDE +CONCEDED +CONCEDEDLY +CONCEDER +CONCEDERS +CONCEDES +CONCEDING +CONCEIT +CONCEITED +CONCEITEDLY +CONCEITEDNESS +CONCEITEDNESSES +CONCEITING +CONCEITS +CONCEIVABILITY +CONCEIVABLE +CONCEIVABLENESS +CONCEIVABLY +CONCEIVE +CONCEIVED +CONCEIVER +CONCEIVERS +CONCEIVES +CONCEIVING +CONCELEBRANT +CONCELEBRANTS +CONCELEBRATE +CONCELEBRATED +CONCELEBRATES +CONCELEBRATING +CONCELEBRATION +CONCELEBRATIONS +CONCENT +CONCENTER +CONCENTERED +CONCENTERING +CONCENTERS +CONCENTRATE +CONCENTRATED +CONCENTRATEDLY +CONCENTRATES +CONCENTRATING +CONCENTRATION +CONCENTRATIONS +CONCENTRATIVE +CONCENTRATOR +CONCENTRATORS +CONCENTRIC +CONCENTRICALLY +CONCENTRICITIES +CONCENTRICITY +CONCENTS +CONCEPT +CONCEPTACLE +CONCEPTACLES +CONCEPTI +CONCEPTION +CONCEPTIONAL +CONCEPTIONS +CONCEPTIVE +CONCEPTS +CONCEPTUAL +CONCEPTUALISE +CONCEPTUALISED +CONCEPTUALISES +CONCEPTUALISING +CONCEPTUALISM +CONCEPTUALISMS +CONCEPTUALIST +CONCEPTUALISTIC +CONCEPTUALISTS +CONCEPTUALITIES +CONCEPTUALITY +CONCEPTUALIZE +CONCEPTUALIZED +CONCEPTUALIZER +CONCEPTUALIZERS +CONCEPTUALIZES +CONCEPTUALIZING +CONCEPTUALLY +CONCEPTUS +CONCEPTUSES +CONCERN +CONCERNED +CONCERNING +CONCERNMENT +CONCERNMENTS +CONCERNS +CONCERT +CONCERTED +CONCERTEDLY +CONCERTEDNESS +CONCERTEDNESSES +CONCERTGOER +CONCERTGOERS +CONCERTGOING +CONCERTGOINGS +CONCERTI +CONCERTINA +CONCERTINAS +CONCERTING +CONCERTINO +CONCERTINOS +CONCERTIZE +CONCERTIZED +CONCERTIZES +CONCERTIZING +CONCERTMASTER +CONCERTMASTERS +CONCERTMEISTER +CONCERTMEISTERS +CONCERTO +CONCERTOS +CONCERTS +CONCESSION +CONCESSIONAIRE +CONCESSIONAIRES +CONCESSIONAL +CONCESSIONARY +CONCESSIONER +CONCESSIONERS +CONCESSIONS +CONCESSIVE +CONCESSIVELY +CONCH +CONCHA +CONCHAE +CONCHAL +CONCHAS +CONCHES +CONCHIE +CONCHIES +CONCHO +CONCHOID +CONCHOIDAL +CONCHOIDALLY +CONCHOIDS +CONCHOLOGIES +CONCHOLOGIST +CONCHOLOGISTS +CONCHOLOGY +CONCHOS +CONCHS +CONCHY +CONCIERGE +CONCIERGES +CONCILIAR +CONCILIARLY +CONCILIATE +CONCILIATED +CONCILIATES +CONCILIATING +CONCILIATION +CONCILIATIONS +CONCILIATIVE +CONCILIATOR +CONCILIATORS +CONCILIATORY +CONCINNITIES +CONCINNITY +CONCISE +CONCISELY +CONCISENESS +CONCISENESSES +CONCISER +CONCISEST +CONCISION +CONCISIONS +CONCLAVE +CONCLAVES +CONCLUDE +CONCLUDED +CONCLUDER +CONCLUDERS +CONCLUDES +CONCLUDING +CONCLUSION +CONCLUSIONARY +CONCLUSIONS +CONCLUSIVE +CONCLUSIVELY +CONCLUSIVENESS +CONCLUSORY +CONCOCT +CONCOCTED +CONCOCTER +CONCOCTERS +CONCOCTING +CONCOCTION +CONCOCTIONS +CONCOCTIVE +CONCOCTOR +CONCOCTORS +CONCOCTS +CONCOMITANCE +CONCOMITANCES +CONCOMITANT +CONCOMITANTLY +CONCOMITANTS +CONCORD +CONCORDAL +CONCORDANCE +CONCORDANCES +CONCORDANT +CONCORDANTLY +CONCORDAT +CONCORDATS +CONCORDS +CONCOURS +CONCOURSE +CONCOURSES +CONCRESCENCE +CONCRESCENCES +CONCRESCENT +CONCRETE +CONCRETED +CONCRETELY +CONCRETENESS +CONCRETENESSES +CONCRETES +CONCRETING +CONCRETION +CONCRETIONARY +CONCRETIONS +CONCRETISM +CONCRETISMS +CONCRETIST +CONCRETISTS +CONCRETIZATION +CONCRETIZATIONS +CONCRETIZE +CONCRETIZED +CONCRETIZES +CONCRETIZING +CONCUBINAGE +CONCUBINAGES +CONCUBINE +CONCUBINES +CONCUPISCENCE +CONCUPISCENCES +CONCUPISCENT +CONCUPISCIBLE +CONCUR +CONCURRED +CONCURRENCE +CONCURRENCES +CONCURRENCIES +CONCURRENCY +CONCURRENT +CONCURRENTLY +CONCURRENTS +CONCURRING +CONCURS +CONCUSS +CONCUSSED +CONCUSSES +CONCUSSING +CONCUSSION +CONCUSSIONS +CONCUSSIVE +CONDEMN +CONDEMNABLE +CONDEMNATION +CONDEMNATIONS +CONDEMNATORY +CONDEMNED +CONDEMNER +CONDEMNERS +CONDEMNING +CONDEMNOR +CONDEMNORS +CONDEMNS +CONDENSABLE +CONDENSATE +CONDENSATES +CONDENSATION +CONDENSATIONAL +CONDENSATIONS +CONDENSE +CONDENSED +CONDENSER +CONDENSERS +CONDENSES +CONDENSIBLE +CONDENSING +CONDESCEND +CONDESCENDED +CONDESCENDENCE +CONDESCENDENCES +CONDESCENDING +CONDESCENDINGLY +CONDESCENDS +CONDESCENSION +CONDESCENSIONS +CONDIGN +CONDIGNLY +CONDIMENT +CONDIMENTAL +CONDIMENTS +CONDITION +CONDITIONABLE +CONDITIONAL +CONDITIONALITY +CONDITIONALLY +CONDITIONALS +CONDITIONED +CONDITIONER +CONDITIONERS +CONDITIONING +CONDITIONS +CONDO +CONDOES +CONDOLATORY +CONDOLE +CONDOLED +CONDOLENCE +CONDOLENCES +CONDOLENT +CONDOLER +CONDOLERS +CONDOLES +CONDOLING +CONDOM +CONDOMINIUM +CONDOMINIUMS +CONDOMS +CONDONABLE +CONDONATION +CONDONATIONS +CONDONE +CONDONED +CONDONER +CONDONERS +CONDONES +CONDONING +CONDOR +CONDORES +CONDORS +CONDOS +CONDOTTIERE +CONDOTTIERI +CONDUCE +CONDUCED +CONDUCER +CONDUCERS +CONDUCES +CONDUCING +CONDUCIVE +CONDUCIVENESS +CONDUCIVENESSES +CONDUCT +CONDUCTANCE +CONDUCTANCES +CONDUCTED +CONDUCTIBILITY +CONDUCTIBLE +CONDUCTIMETRIC +CONDUCTING +CONDUCTION +CONDUCTIONS +CONDUCTIVE +CONDUCTIVITIES +CONDUCTIVITY +CONDUCTOMETRIC +CONDUCTOR +CONDUCTORIAL +CONDUCTORS +CONDUCTRESS +CONDUCTRESSES +CONDUCTS +CONDUIT +CONDUITS +CONDUPLICATE +CONDYLAR +CONDYLE +CONDYLES +CONDYLOID +CONDYLOMA +CONDYLOMAS +CONDYLOMATA +CONDYLOMATOUS +CONE +CONED +CONEFLOWER +CONEFLOWERS +CONELRAD +CONELRADS +CONENOSE +CONENOSES +CONEPATE +CONEPATES +CONEPATL +CONEPATLS +CONES +CONEY +CONEYS +CONFAB +CONFABBED +CONFABBING +CONFABS +CONFABULATE +CONFABULATED +CONFABULATES +CONFABULATING +CONFABULATION +CONFABULATIONS +CONFABULATOR +CONFABULATORS +CONFABULATORY +CONFECT +CONFECTED +CONFECTING +CONFECTION +CONFECTIONARIES +CONFECTIONARY +CONFECTIONER +CONFECTIONERIES +CONFECTIONERS +CONFECTIONERY +CONFECTIONS +CONFECTS +CONFEDERACIES +CONFEDERACY +CONFEDERAL +CONFEDERATE +CONFEDERATED +CONFEDERATES +CONFEDERATING +CONFEDERATION +CONFEDERATIONS +CONFEDERATIVE +CONFER +CONFEREE +CONFEREES +CONFERENCE +CONFERENCES +CONFERENCING +CONFERENCINGS +CONFERENTIAL +CONFERMENT +CONFERMENTS +CONFERRABLE +CONFERRAL +CONFERRALS +CONFERRED +CONFERREE +CONFERREES +CONFERRENCE +CONFERRENCES +CONFERRER +CONFERRERS +CONFERRING +CONFERS +CONFERVA +CONFERVAE +CONFERVAL +CONFERVAS +CONFESS +CONFESSABLE +CONFESSED +CONFESSEDLY +CONFESSES +CONFESSING +CONFESSION +CONFESSIONAL +CONFESSIONALISM +CONFESSIONALIST +CONFESSIONALLY +CONFESSIONALS +CONFESSIONS +CONFESSOR +CONFESSORS +CONFETTI +CONFETTO +CONFIDANT +CONFIDANTE +CONFIDANTES +CONFIDANTS +CONFIDE +CONFIDED +CONFIDENCE +CONFIDENCES +CONFIDENT +CONFIDENTIAL +CONFIDENTIALITY +CONFIDENTIALLY +CONFIDENTLY +CONFIDER +CONFIDERS +CONFIDES +CONFIDING +CONFIDINGLY +CONFIDINGNESS +CONFIDINGNESSES +CONFIGURATION +CONFIGURATIONAL +CONFIGURATIONS +CONFIGURATIVE +CONFIGURE +CONFIGURED +CONFIGURES +CONFIGURING +CONFINE +CONFINED +CONFINEMENT +CONFINEMENTS +CONFINER +CONFINERS +CONFINES +CONFINING +CONFIRM +CONFIRMABILITY +CONFIRMABLE +CONFIRMAND +CONFIRMANDS +CONFIRMATION +CONFIRMATIONAL +CONFIRMATIONS +CONFIRMATORY +CONFIRMED +CONFIRMEDLY +CONFIRMEDNESS +CONFIRMEDNESSES +CONFIRMER +CONFIRMERS +CONFIRMING +CONFIRMS +CONFISCABLE +CONFISCATABLE +CONFISCATE +CONFISCATED +CONFISCATES +CONFISCATING +CONFISCATION +CONFISCATIONS +CONFISCATOR +CONFISCATORS +CONFISCATORY +CONFIT +CONFITEOR +CONFITEORS +CONFITS +CONFITURE +CONFITURES +CONFLAGRANT +CONFLAGRATION +CONFLAGRATIONS +CONFLATE +CONFLATED +CONFLATES +CONFLATING +CONFLATION +CONFLATIONS +CONFLICT +CONFLICTED +CONFLICTFUL +CONFLICTING +CONFLICTINGLY +CONFLICTION +CONFLICTIONS +CONFLICTIVE +CONFLICTS +CONFLICTUAL +CONFLUENCE +CONFLUENCES +CONFLUENT +CONFLUENTS +CONFLUX +CONFLUXES +CONFOCAL +CONFOCALLY +CONFORM +CONFORMABLE +CONFORMABLY +CONFORMAL +CONFORMANCE +CONFORMANCES +CONFORMATION +CONFORMATIONAL +CONFORMATIONS +CONFORMED +CONFORMER +CONFORMERS +CONFORMING +CONFORMISM +CONFORMISMS +CONFORMIST +CONFORMISTS +CONFORMITIES +CONFORMITY +CONFORMS +CONFOUND +CONFOUNDED +CONFOUNDEDLY +CONFOUNDER +CONFOUNDERS +CONFOUNDING +CONFOUNDINGLY +CONFOUNDS +CONFRATERNITIES +CONFRATERNITY +CONFRERE +CONFRERES +CONFRONT +CONFRONTAL +CONFRONTALS +CONFRONTATION +CONFRONTATIONAL +CONFRONTATIONS +CONFRONTED +CONFRONTER +CONFRONTERS +CONFRONTING +CONFRONTS +CONFUSE +CONFUSED +CONFUSEDLY +CONFUSEDNESS +CONFUSEDNESSES +CONFUSES +CONFUSING +CONFUSINGLY +CONFUSION +CONFUSIONAL +CONFUSIONS +CONFUTATION +CONFUTATIONS +CONFUTATIVE +CONFUTE +CONFUTED +CONFUTER +CONFUTERS +CONFUTES +CONFUTING +CONGA +CONGAED +CONGAING +CONGAS +CONGE +CONGEAL +CONGEALED +CONGEALER +CONGEALERS +CONGEALING +CONGEALMENT +CONGEALMENTS +CONGEALS +CONGEE +CONGEED +CONGEEING +CONGEES +CONGELATION +CONGELATIONS +CONGENER +CONGENERIC +CONGENEROUS +CONGENERS +CONGENIAL +CONGENIALITIES +CONGENIALITY +CONGENIALLY +CONGENITAL +CONGENITALLY +CONGER +CONGERIES +CONGERS +CONGES +CONGEST +CONGESTED +CONGESTING +CONGESTION +CONGESTIONS +CONGESTIVE +CONGESTS +CONGII +CONGIUS +CONGLOBATE +CONGLOBATED +CONGLOBATES +CONGLOBATING +CONGLOBATION +CONGLOBATIONS +CONGLOBE +CONGLOBED +CONGLOBES +CONGLOBING +CONGLOMERATE +CONGLOMERATED +CONGLOMERATES +CONGLOMERATEUR +CONGLOMERATEURS +CONGLOMERATIC +CONGLOMERATING +CONGLOMERATION +CONGLOMERATIONS +CONGLOMERATIVE +CONGLOMERATOR +CONGLOMERATORS +CONGLUTINATE +CONGLUTINATED +CONGLUTINATES +CONGLUTINATING +CONGLUTINATION +CONGLUTINATIONS +CONGO +CONGOES +CONGOS +CONGOU +CONGOUS +CONGRATS +CONGRATULATE +CONGRATULATED +CONGRATULATES +CONGRATULATING +CONGRATULATION +CONGRATULATIONS +CONGRATULATOR +CONGRATULATORS +CONGRATULATORY +CONGREGANT +CONGREGANTS +CONGREGATE +CONGREGATED +CONGREGATES +CONGREGATING +CONGREGATION +CONGREGATIONAL +CONGREGATIONS +CONGREGATOR +CONGREGATORS +CONGRESS +CONGRESSED +CONGRESSES +CONGRESSING +CONGRESSIONAL +CONGRESSIONALLY +CONGRESSMAN +CONGRESSMEN +CONGRESSPEOPLE +CONGRESSPERSON +CONGRESSPERSONS +CONGRESSWOMAN +CONGRESSWOMEN +CONGRUENCE +CONGRUENCES +CONGRUENCIES +CONGRUENCY +CONGRUENT +CONGRUENTLY +CONGRUITIES +CONGRUITY +CONGRUOUS +CONGRUOUSLY +CONGRUOUSNESS +CONGRUOUSNESSES +CONI +CONIC +CONICAL +CONICALLY +CONICITIES +CONICITY +CONICS +CONIDIA +CONIDIAL +CONIDIAN +CONIDIOPHORE +CONIDIOPHORES +CONIDIUM +CONIES +CONIFER +CONIFEROUS +CONIFERS +CONIINE +CONIINES +CONIN +CONINE +CONINES +CONING +CONINS +CONIOSES +CONIOSIS +CONIUM +CONIUMS +CONJECTURAL +CONJECTURALLY +CONJECTURE +CONJECTURED +CONJECTURER +CONJECTURERS +CONJECTURES +CONJECTURING +CONJOIN +CONJOINED +CONJOINER +CONJOINERS +CONJOINING +CONJOINS +CONJOINT +CONJOINTLY +CONJUGAL +CONJUGALITIES +CONJUGALITY +CONJUGALLY +CONJUGANT +CONJUGANTS +CONJUGATE +CONJUGATED +CONJUGATELY +CONJUGATENESS +CONJUGATENESSES +CONJUGATES +CONJUGATING +CONJUGATION +CONJUGATIONAL +CONJUGATIONALLY +CONJUGATIONS +CONJUNCT +CONJUNCTION +CONJUNCTIONAL +CONJUNCTIONALLY +CONJUNCTIONS +CONJUNCTIVA +CONJUNCTIVAE +CONJUNCTIVAL +CONJUNCTIVAS +CONJUNCTIVE +CONJUNCTIVELY +CONJUNCTIVES +CONJUNCTIVITIS +CONJUNCTS +CONJUNCTURE +CONJUNCTURES +CONJUNTO +CONJUNTOS +CONJURATION +CONJURATIONS +CONJURE +CONJURED +CONJURER +CONJURERS +CONJURES +CONJURING +CONJUROR +CONJURORS +CONK +CONKED +CONKER +CONKERS +CONKING +CONKS +CONKY +CONN +CONNATE +CONNATELY +CONNATION +CONNATIONS +CONNATURAL +CONNATURALITIES +CONNATURALITY +CONNATURALLY +CONNECT +CONNECTABLE +CONNECTED +CONNECTEDLY +CONNECTEDNESS +CONNECTEDNESSES +CONNECTER +CONNECTERS +CONNECTIBLE +CONNECTING +CONNECTION +CONNECTIONAL +CONNECTIONS +CONNECTIVE +CONNECTIVELY +CONNECTIVES +CONNECTIVITIES +CONNECTIVITY +CONNECTOR +CONNECTORS +CONNECTS +CONNED +CONNER +CONNERS +CONNEXION +CONNEXIONS +CONNING +CONNIPTION +CONNIPTIONS +CONNIVANCE +CONNIVANCES +CONNIVE +CONNIVED +CONNIVENT +CONNIVER +CONNIVERIES +CONNIVERS +CONNIVERY +CONNIVES +CONNIVING +CONNOISSEUR +CONNOISSEURS +CONNOISSEURSHIP +CONNOTATION +CONNOTATIONAL +CONNOTATIONS +CONNOTATIVE +CONNOTATIVELY +CONNOTE +CONNOTED +CONNOTES +CONNOTING +CONNS +CONNUBIAL +CONNUBIALISM +CONNUBIALISMS +CONNUBIALITIES +CONNUBIALITY +CONNUBIALLY +CONODONT +CONODONTS +CONOID +CONOIDAL +CONOIDS +CONOMINEE +CONOMINEES +CONQUER +CONQUERED +CONQUERER +CONQUERERS +CONQUERING +CONQUEROR +CONQUERORS +CONQUERS +CONQUEST +CONQUESTS +CONQUIAN +CONQUIANS +CONQUISTADOR +CONQUISTADORES +CONQUISTADORS +CONS +CONSANGUINE +CONSANGUINEOUS +CONSANGUINITIES +CONSANGUINITY +CONSCIENCE +CONSCIENCELESS +CONSCIENCES +CONSCIENTIOUS +CONSCIENTIOUSLY +CONSCIONABLE +CONSCIOUS +CONSCIOUSES +CONSCIOUSLY +CONSCIOUSNESS +CONSCIOUSNESSES +CONSCRIBE +CONSCRIBED +CONSCRIBES +CONSCRIBING +CONSCRIPT +CONSCRIPTED +CONSCRIPTING +CONSCRIPTION +CONSCRIPTIONS +CONSCRIPTS +CONSECRATE +CONSECRATED +CONSECRATES +CONSECRATING +CONSECRATION +CONSECRATIONS +CONSECRATIVE +CONSECRATOR +CONSECRATORS +CONSECRATORY +CONSECUTION +CONSECUTIONS +CONSECUTIVE +CONSECUTIVELY +CONSECUTIVENESS +CONSENSUAL +CONSENSUALLY +CONSENSUS +CONSENSUSES +CONSENT +CONSENTANEOUS +CONSENTANEOUSLY +CONSENTED +CONSENTER +CONSENTERS +CONSENTING +CONSENTINGLY +CONSENTS +CONSEQUENCE +CONSEQUENCES +CONSEQUENT +CONSEQUENTIAL +CONSEQUENTIALLY +CONSEQUENTLY +CONSEQUENTS +CONSERVANCIES +CONSERVANCY +CONSERVATION +CONSERVATIONAL +CONSERVATIONIST +CONSERVATIONS +CONSERVATISM +CONSERVATISMS +CONSERVATIVE +CONSERVATIVELY +CONSERVATIVES +CONSERVATIZE +CONSERVATIZED +CONSERVATIZES +CONSERVATIZING +CONSERVATOIRE +CONSERVATOIRES +CONSERVATOR +CONSERVATORIAL +CONSERVATORIES +CONSERVATORS +CONSERVATORSHIP +CONSERVATORY +CONSERVE +CONSERVED +CONSERVER +CONSERVERS +CONSERVES +CONSERVING +CONSIDER +CONSIDERABLE +CONSIDERABLES +CONSIDERABLY +CONSIDERATE +CONSIDERATELY +CONSIDERATENESS +CONSIDERATION +CONSIDERATIONS +CONSIDERED +CONSIDERING +CONSIDERS +CONSIGLIERE +CONSIGLIERI +CONSIGN +CONSIGNABLE +CONSIGNATION +CONSIGNATIONS +CONSIGNED +CONSIGNEE +CONSIGNEES +CONSIGNER +CONSIGNERS +CONSIGNING +CONSIGNMENT +CONSIGNMENTS +CONSIGNOR +CONSIGNORS +CONSIGNS +CONSIST +CONSISTED +CONSISTENCE +CONSISTENCES +CONSISTENCIES +CONSISTENCY +CONSISTENT +CONSISTENTLY +CONSISTING +CONSISTORIAL +CONSISTORIES +CONSISTORY +CONSISTS +CONSOCIATE +CONSOCIATED +CONSOCIATES +CONSOCIATING +CONSOCIATION +CONSOCIATIONAL +CONSOCIATIONS +CONSOL +CONSOLATION +CONSOLATIONS +CONSOLATORY +CONSOLE +CONSOLED +CONSOLER +CONSOLERS +CONSOLES +CONSOLIDATE +CONSOLIDATED +CONSOLIDATES +CONSOLIDATING +CONSOLIDATION +CONSOLIDATIONS +CONSOLIDATOR +CONSOLIDATORS +CONSOLING +CONSOLINGLY +CONSOLS +CONSOMME +CONSOMMES +CONSONANCE +CONSONANCES +CONSONANCIES +CONSONANCY +CONSONANT +CONSONANTAL +CONSONANTLY +CONSONANTS +CONSORT +CONSORTED +CONSORTIA +CONSORTING +CONSORTIUM +CONSORTIUMS +CONSORTS +CONSPECIFIC +CONSPECIFICS +CONSPECTUS +CONSPECTUSES +CONSPICUITIES +CONSPICUITY +CONSPICUOUS +CONSPICUOUSLY +CONSPICUOUSNESS +CONSPIRACIES +CONSPIRACY +CONSPIRATION +CONSPIRATIONAL +CONSPIRATIONS +CONSPIRATOR +CONSPIRATORIAL +CONSPIRATORS +CONSPIRE +CONSPIRED +CONSPIRER +CONSPIRERS +CONSPIRES +CONSPIRING +CONSTABLE +CONSTABLES +CONSTABULARIES +CONSTABULARY +CONSTANCIES +CONSTANCY +CONSTANT +CONSTANTAN +CONSTANTANS +CONSTANTLY +CONSTANTS +CONSTATIVE +CONSTATIVES +CONSTELLATE +CONSTELLATED +CONSTELLATES +CONSTELLATING +CONSTELLATION +CONSTELLATIONS +CONSTELLATORY +CONSTERNATE +CONSTERNATED +CONSTERNATES +CONSTERNATING +CONSTERNATION +CONSTERNATIONS +CONSTIPATE +CONSTIPATED +CONSTIPATES +CONSTIPATING +CONSTIPATION +CONSTIPATIONS +CONSTITUENCIES +CONSTITUENCY +CONSTITUENT +CONSTITUENTLY +CONSTITUENTS +CONSTITUTE +CONSTITUTED +CONSTITUTES +CONSTITUTING +CONSTITUTION +CONSTITUTIONAL +CONSTITUTIONALS +CONSTITUTIONS +CONSTITUTIVE +CONSTITUTIVELY +CONSTRAIN +CONSTRAINED +CONSTRAINEDLY +CONSTRAINING +CONSTRAINS +CONSTRAINT +CONSTRAINTS +CONSTRICT +CONSTRICTED +CONSTRICTING +CONSTRICTION +CONSTRICTIONS +CONSTRICTIVE +CONSTRICTOR +CONSTRICTORS +CONSTRICTS +CONSTRINGE +CONSTRINGED +CONSTRINGENT +CONSTRINGES +CONSTRINGING +CONSTRUABLE +CONSTRUAL +CONSTRUALS +CONSTRUCT +CONSTRUCTED +CONSTRUCTIBLE +CONSTRUCTING +CONSTRUCTION +CONSTRUCTIONAL +CONSTRUCTIONIST +CONSTRUCTIONS +CONSTRUCTIVE +CONSTRUCTIVELY +CONSTRUCTIVISM +CONSTRUCTIVISMS +CONSTRUCTIVIST +CONSTRUCTIVISTS +CONSTRUCTOR +CONSTRUCTORS +CONSTRUCTS +CONSTRUE +CONSTRUED +CONSTRUER +CONSTRUERS +CONSTRUES +CONSTRUING +CONSUBSTANTIAL +CONSUETUDE +CONSUETUDES +CONSUETUDINARY +CONSUL +CONSULAR +CONSULATE +CONSULATES +CONSULS +CONSULSHIP +CONSULSHIPS +CONSULT +CONSULTANCIES +CONSULTANCY +CONSULTANT +CONSULTANTS +CONSULTANTSHIP +CONSULTANTSHIPS +CONSULTATION +CONSULTATIONS +CONSULTATIVE +CONSULTED +CONSULTER +CONSULTERS +CONSULTING +CONSULTIVE +CONSULTOR +CONSULTORS +CONSULTS +CONSUMABLE +CONSUMABLES +CONSUME +CONSUMED +CONSUMEDLY +CONSUMER +CONSUMERISM +CONSUMERISMS +CONSUMERIST +CONSUMERISTIC +CONSUMERISTS +CONSUMERS +CONSUMERSHIP +CONSUMERSHIPS +CONSUMES +CONSUMING +CONSUMMATE +CONSUMMATED +CONSUMMATELY +CONSUMMATES +CONSUMMATING +CONSUMMATION +CONSUMMATIONS +CONSUMMATIVE +CONSUMMATOR +CONSUMMATORS +CONSUMMATORY +CONSUMPTION +CONSUMPTIONS +CONSUMPTIVE +CONSUMPTIVELY +CONSUMPTIVES +CONTACT +CONTACTED +CONTACTEE +CONTACTEES +CONTACTING +CONTACTOR +CONTACTORS +CONTACTS +CONTAGIA +CONTAGION +CONTAGIONS +CONTAGIOUS +CONTAGIOUSLY +CONTAGIOUSNESS +CONTAGIUM +CONTAIN +CONTAINABLE +CONTAINED +CONTAINER +CONTAINERBOARD +CONTAINERBOARDS +CONTAINERISE +CONTAINERISED +CONTAINERISES +CONTAINERISING +CONTAINERIZE +CONTAINERIZED +CONTAINERIZES +CONTAINERIZING +CONTAINERLESS +CONTAINERPORT +CONTAINERPORTS +CONTAINERS +CONTAINERSHIP +CONTAINERSHIPS +CONTAINING +CONTAINMENT +CONTAINMENTS +CONTAINS +CONTAMINANT +CONTAMINANTS +CONTAMINATE +CONTAMINATED +CONTAMINATES +CONTAMINATING +CONTAMINATION +CONTAMINATIONS +CONTAMINATIVE +CONTAMINATOR +CONTAMINATORS +CONTE +CONTEMN +CONTEMNED +CONTEMNER +CONTEMNERS +CONTEMNING +CONTEMNOR +CONTEMNORS +CONTEMNS +CONTEMPLATE +CONTEMPLATED +CONTEMPLATES +CONTEMPLATING +CONTEMPLATION +CONTEMPLATIONS +CONTEMPLATIVE +CONTEMPLATIVELY +CONTEMPLATIVES +CONTEMPLATOR +CONTEMPLATORS +CONTEMPO +CONTEMPORANEITY +CONTEMPORANEOUS +CONTEMPORARIES +CONTEMPORARILY +CONTEMPORARY +CONTEMPORIZE +CONTEMPORIZED +CONTEMPORIZES +CONTEMPORIZING +CONTEMPT +CONTEMPTIBILITY +CONTEMPTIBLE +CONTEMPTIBLY +CONTEMPTS +CONTEMPTUOUS +CONTEMPTUOUSLY +CONTEND +CONTENDED +CONTENDER +CONTENDERS +CONTENDING +CONTENDS +CONTENT +CONTENTED +CONTENTEDLY +CONTENTEDNESS +CONTENTEDNESSES +CONTENTING +CONTENTION +CONTENTIONS +CONTENTIOUS +CONTENTIOUSLY +CONTENTIOUSNESS +CONTENTMENT +CONTENTMENTS +CONTENTS +CONTERMINOUS +CONTERMINOUSLY +CONTES +CONTESSA +CONTESSAS +CONTEST +CONTESTABLE +CONTESTANT +CONTESTANTS +CONTESTATION +CONTESTATIONS +CONTESTED +CONTESTER +CONTESTERS +CONTESTING +CONTESTS +CONTEXT +CONTEXTLESS +CONTEXTS +CONTEXTUAL +CONTEXTUALIZE +CONTEXTUALIZED +CONTEXTUALIZES +CONTEXTUALIZING +CONTEXTUALLY +CONTEXTURE +CONTEXTURES +CONTIGUITIES +CONTIGUITY +CONTIGUOUS +CONTIGUOUSLY +CONTIGUOUSNESS +CONTINENCE +CONTINENCES +CONTINENT +CONTINENTAL +CONTINENTALLY +CONTINENTALS +CONTINENTLY +CONTINENTS +CONTINGENCE +CONTINGENCES +CONTINGENCIES +CONTINGENCY +CONTINGENT +CONTINGENTLY +CONTINGENTS +CONTINUA +CONTINUAL +CONTINUALLY +CONTINUANCE +CONTINUANCES +CONTINUANT +CONTINUANTS +CONTINUATE +CONTINUATION +CONTINUATIONS +CONTINUATIVE +CONTINUATOR +CONTINUATORS +CONTINUE +CONTINUED +CONTINUER +CONTINUERS +CONTINUES +CONTINUING +CONTINUINGLY +CONTINUITIES +CONTINUITY +CONTINUO +CONTINUOS +CONTINUOUS +CONTINUOUSLY +CONTINUOUSNESS +CONTINUUM +CONTINUUMS +CONTO +CONTORT +CONTORTED +CONTORTING +CONTORTION +CONTORTIONIST +CONTORTIONISTIC +CONTORTIONISTS +CONTORTIONS +CONTORTIVE +CONTORTS +CONTOS +CONTOUR +CONTOURED +CONTOURING +CONTOURS +CONTRA +CONTRABAND +CONTRABANDIST +CONTRABANDISTS +CONTRABANDS +CONTRABASS +CONTRABASSES +CONTRABASSIST +CONTRABASSISTS +CONTRABASSOON +CONTRABASSOONS +CONTRACEPTION +CONTRACEPTIONS +CONTRACEPTIVE +CONTRACEPTIVES +CONTRACT +CONTRACTED +CONTRACTIBILITY +CONTRACTIBLE +CONTRACTILE +CONTRACTILITIES +CONTRACTILITY +CONTRACTING +CONTRACTION +CONTRACTIONAL +CONTRACTIONARY +CONTRACTIONS +CONTRACTIVE +CONTRACTOR +CONTRACTORS +CONTRACTS +CONTRACTUAL +CONTRACTUALLY +CONTRACTURE +CONTRACTURES +CONTRADICT +CONTRADICTABLE +CONTRADICTED +CONTRADICTING +CONTRADICTION +CONTRADICTIONS +CONTRADICTIOUS +CONTRADICTOR +CONTRADICTORIES +CONTRADICTORILY +CONTRADICTORS +CONTRADICTORY +CONTRADICTS +CONTRAIL +CONTRAILS +CONTRAINDICATE +CONTRAINDICATED +CONTRAINDICATES +CONTRALATERAL +CONTRALTI +CONTRALTO +CONTRALTOS +CONTRAOCTAVE +CONTRAOCTAVES +CONTRAPOSITION +CONTRAPOSITIONS +CONTRAPOSITIVE +CONTRAPOSITIVES +CONTRAPTION +CONTRAPTIONS +CONTRAPUNTAL +CONTRAPUNTALLY +CONTRAPUNTIST +CONTRAPUNTISTS +CONTRARIAN +CONTRARIANS +CONTRARIES +CONTRARIETIES +CONTRARIETY +CONTRARILY +CONTRARINESS +CONTRARINESSES +CONTRARIOUS +CONTRARIWISE +CONTRARY +CONTRAS +CONTRAST +CONTRASTABLE +CONTRASTED +CONTRASTING +CONTRASTIVE +CONTRASTIVELY +CONTRASTS +CONTRASTY +CONTRAVENE +CONTRAVENED +CONTRAVENER +CONTRAVENERS +CONTRAVENES +CONTRAVENING +CONTRAVENTION +CONTRAVENTIONS +CONTREDANSE +CONTREDANSES +CONTRETEMPS +CONTRIBUTE +CONTRIBUTED +CONTRIBUTES +CONTRIBUTING +CONTRIBUTION +CONTRIBUTIONS +CONTRIBUTIVE +CONTRIBUTIVELY +CONTRIBUTOR +CONTRIBUTORS +CONTRIBUTORY +CONTRITE +CONTRITELY +CONTRITENESS +CONTRITENESSES +CONTRITION +CONTRITIONS +CONTRIVANCE +CONTRIVANCES +CONTRIVE +CONTRIVED +CONTRIVER +CONTRIVERS +CONTRIVES +CONTRIVING +CONTROL +CONTROLLABILITY +CONTROLLABLE +CONTROLLED +CONTROLLER +CONTROLLERS +CONTROLLERSHIP +CONTROLLERSHIPS +CONTROLLING +CONTROLMENT +CONTROLMENTS +CONTROLS +CONTROVERSIAL +CONTROVERSIALLY +CONTROVERSIES +CONTROVERSY +CONTROVERT +CONTROVERTED +CONTROVERTER +CONTROVERTERS +CONTROVERTIBLE +CONTROVERTING +CONTROVERTS +CONTUMACIES +CONTUMACIOUS +CONTUMACIOUSLY +CONTUMACY +CONTUMELIES +CONTUMELIOUS +CONTUMELIOUSLY +CONTUMELY +CONTUSE +CONTUSED +CONTUSES +CONTUSING +CONTUSION +CONTUSIONS +CONTUSIVE +CONUNDRUM +CONUNDRUMS +CONURBATION +CONURBATIONS +CONUS +CONVALESCE +CONVALESCED +CONVALESCENCE +CONVALESCENCES +CONVALESCENT +CONVALESCENTS +CONVALESCES +CONVALESCING +CONVECT +CONVECTED +CONVECTING +CONVECTION +CONVECTIONAL +CONVECTIONS +CONVECTIVE +CONVECTOR +CONVECTORS +CONVECTS +CONVENE +CONVENED +CONVENER +CONVENERS +CONVENES +CONVENIENCE +CONVENIENCES +CONVENIENCIES +CONVENIENCY +CONVENIENT +CONVENIENTLY +CONVENING +CONVENOR +CONVENORS +CONVENT +CONVENTED +CONVENTICLE +CONVENTICLER +CONVENTICLERS +CONVENTICLES +CONVENTING +CONVENTION +CONVENTIONAL +CONVENTIONALISM +CONVENTIONALIST +CONVENTIONALITY +CONVENTIONALIZE +CONVENTIONALLY +CONVENTIONEER +CONVENTIONEERS +CONVENTIONS +CONVENTS +CONVENTUAL +CONVENTUALLY +CONVENTUALS +CONVERGE +CONVERGED +CONVERGENCE +CONVERGENCES +CONVERGENCIES +CONVERGENCY +CONVERGENT +CONVERGES +CONVERGING +CONVERSABLE +CONVERSANCE +CONVERSANCES +CONVERSANCIES +CONVERSANCY +CONVERSANT +CONVERSATION +CONVERSATIONAL +CONVERSATIONS +CONVERSAZIONE +CONVERSAZIONES +CONVERSAZIONI +CONVERSE +CONVERSED +CONVERSELY +CONVERSER +CONVERSERS +CONVERSES +CONVERSING +CONVERSION +CONVERSIONAL +CONVERSIONS +CONVERSO +CONVERSOS +CONVERT +CONVERTAPLANE +CONVERTAPLANES +CONVERTED +CONVERTER +CONVERTERS +CONVERTIBILITY +CONVERTIBLE +CONVERTIBLENESS +CONVERTIBLES +CONVERTIBLY +CONVERTING +CONVERTIPLANE +CONVERTIPLANES +CONVERTOR +CONVERTORS +CONVERTS +CONVEX +CONVEXES +CONVEXITIES +CONVEXITY +CONVEXLY +CONVEY +CONVEYANCE +CONVEYANCER +CONVEYANCERS +CONVEYANCES +CONVEYANCING +CONVEYANCINGS +CONVEYED +CONVEYER +CONVEYERS +CONVEYING +CONVEYOR +CONVEYORISE +CONVEYORISED +CONVEYORISES +CONVEYORISING +CONVEYORIZATION +CONVEYORIZE +CONVEYORIZED +CONVEYORIZES +CONVEYORIZING +CONVEYORS +CONVEYS +CONVICT +CONVICTED +CONVICTING +CONVICTION +CONVICTIONS +CONVICTS +CONVINCE +CONVINCED +CONVINCER +CONVINCERS +CONVINCES +CONVINCING +CONVINCINGLY +CONVINCINGNESS +CONVIVIAL +CONVIVIALITIES +CONVIVIALITY +CONVIVIALLY +CONVOCATION +CONVOCATIONAL +CONVOCATIONS +CONVOKE +CONVOKED +CONVOKER +CONVOKERS +CONVOKES +CONVOKING +CONVOLUTE +CONVOLUTED +CONVOLUTES +CONVOLUTING +CONVOLUTION +CONVOLUTIONS +CONVOLVE +CONVOLVED +CONVOLVES +CONVOLVING +CONVOLVULI +CONVOLVULUS +CONVOLVULUSES +CONVOY +CONVOYED +CONVOYING +CONVOYS +CONVULSANT +CONVULSANTS +CONVULSE +CONVULSED +CONVULSES +CONVULSING +CONVULSION +CONVULSIONARY +CONVULSIONS +CONVULSIVE +CONVULSIVELY +CONVULSIVENESS +CONY +COO +COOCH +COOCHES +COOCOO +COOED +COOEE +COOEED +COOEEING +COOEES +COOER +COOERS +COOEY +COOEYED +COOEYING +COOEYS +COOF +COOFS +COOING +COOINGLY +COOK +COOKABLE +COOKBOOK +COOKBOOKS +COOKED +COOKER +COOKERIES +COOKERS +COOKERY +COOKEY +COOKEYS +COOKHOUSE +COOKHOUSES +COOKIE +COOKIES +COOKING +COOKINGS +COOKLESS +COOKOFF +COOKOFFS +COOKOUT +COOKOUTS +COOKS +COOKSHACK +COOKSHACKS +COOKSHOP +COOKSHOPS +COOKSTOVE +COOKSTOVES +COOKTOP +COOKTOPS +COOKWARE +COOKWARES +COOKY +COOL +COOLANT +COOLANTS +COOLDOWN +COOLDOWNS +COOLED +COOLER +COOLERS +COOLEST +COOLHEADED +COOLIE +COOLIES +COOLING +COOLISH +COOLLY +COOLNESS +COOLNESSES +COOLS +COOLTH +COOLTHS +COOLY +COOMB +COOMBE +COOMBES +COOMBS +COON +COONCAN +COONCANS +COONHOUND +COONHOUNDS +COONS +COONSKIN +COONSKINS +COONTIE +COONTIES +COOP +COOPED +COOPER +COOPERAGE +COOPERAGES +COOPERATE +COOPERATED +COOPERATES +COOPERATING +COOPERATION +COOPERATIONIST +COOPERATIONISTS +COOPERATIONS +COOPERATIVE +COOPERATIVELY +COOPERATIVENESS +COOPERATIVES +COOPERATOR +COOPERATORS +COOPERED +COOPERIES +COOPERING +COOPERS +COOPERY +COOPING +COOPS +COOPT +COOPTED +COOPTING +COOPTION +COOPTIONS +COOPTS +COORDINATE +COORDINATED +COORDINATELY +COORDINATENESS +COORDINATES +COORDINATING +COORDINATION +COORDINATIONS +COORDINATIVE +COORDINATOR +COORDINATORS +COOS +COOT +COOTER +COOTERS +COOTIE +COOTIES +COOTS +COP +COPACETIC +COPAIBA +COPAIBAS +COPAL +COPALM +COPALMS +COPALS +COPARCENARIES +COPARCENARY +COPARCENER +COPARCENERS +COPARENT +COPARENTED +COPARENTING +COPARENTS +COPARTNER +COPARTNERED +COPARTNERING +COPARTNERS +COPARTNERSHIP +COPARTNERSHIPS +COPASETIC +COPASTOR +COPASTORS +COPATRON +COPATRONS +COPAY +COPAYMENT +COPAYMENTS +COPAYS +COPE +COPECK +COPECKS +COPED +COPEMATE +COPEMATES +COPEN +COPENS +COPEPOD +COPEPODS +COPER +COPERS +COPES +COPESETIC +COPESTONE +COPESTONES +COPIED +COPIER +COPIERS +COPIES +COPIHUE +COPIHUES +COPILOT +COPILOTS +COPING +COPINGS +COPINGSTONE +COPINGSTONES +COPIOUS +COPIOUSLY +COPIOUSNESS +COPIOUSNESSES +COPLANAR +COPLANARITIES +COPLANARITY +COPLOT +COPLOTS +COPLOTTED +COPLOTTING +COPOLYMER +COPOLYMERIC +COPOLYMERIZE +COPOLYMERIZED +COPOLYMERIZES +COPOLYMERIZING +COPOLYMERS +COPOUT +COPOUTS +COPPED +COPPER +COPPERAH +COPPERAHS +COPPERAS +COPPERASES +COPPERED +COPPERHEAD +COPPERHEADS +COPPERING +COPPERPLATE +COPPERPLATES +COPPERS +COPPERSMITH +COPPERSMITHS +COPPERY +COPPICE +COPPICED +COPPICES +COPPICING +COPPING +COPPRA +COPPRAS +COPRA +COPRAH +COPRAHS +COPRAS +COPREMIA +COPREMIAS +COPREMIC +COPRESENT +COPRESENTED +COPRESENTING +COPRESENTS +COPRESIDENT +COPRESIDENTS +COPRINCE +COPRINCES +COPRINCIPAL +COPRINCIPALS +COPRISONER +COPRISONERS +COPROCESSING +COPROCESSOR +COPROCESSORS +COPRODUCE +COPRODUCED +COPRODUCER +COPRODUCERS +COPRODUCES +COPRODUCING +COPRODUCT +COPRODUCTION +COPRODUCTIONS +COPRODUCTS +COPROLITE +COPROLITES +COPROLITIC +COPROLOGIES +COPROLOGY +COPROMOTER +COPROMOTERS +COPROPHAGIES +COPROPHAGOUS +COPROPHAGY +COPROPHILIA +COPROPHILIAC +COPROPHILIACS +COPROPHILIAS +COPROPHILOUS +COPROPRIETOR +COPROPRIETORS +COPROSPERITIES +COPROSPERITY +COPS +COPSE +COPSES +COPTER +COPTERS +COPUBLISH +COPUBLISHED +COPUBLISHER +COPUBLISHERS +COPUBLISHES +COPUBLISHING +COPULA +COPULAE +COPULAR +COPULAS +COPULATE +COPULATED +COPULATES +COPULATING +COPULATION +COPULATIONS +COPULATIVE +COPULATIVES +COPULATORY +COPURIFIED +COPURIFIES +COPURIFY +COPURIFYING +COPY +COPYABLE +COPYBOOK +COPYBOOKS +COPYBOY +COPYBOYS +COPYCAT +COPYCATS +COPYCATTED +COPYCATTING +COPYDESK +COPYDESKS +COPYEDIT +COPYEDITED +COPYEDITING +COPYEDITS +COPYGIRL +COPYGIRLS +COPYHOLD +COPYHOLDER +COPYHOLDERS +COPYHOLDS +COPYING +COPYIST +COPYISTS +COPYLEFT +COPYLEFTS +COPYREAD +COPYREADER +COPYREADERS +COPYREADING +COPYREADS +COPYRIGHT +COPYRIGHTABLE +COPYRIGHTED +COPYRIGHTING +COPYRIGHTS +COPYWRITER +COPYWRITERS +COQUET +COQUETRIES +COQUETRY +COQUETS +COQUETTE +COQUETTED +COQUETTES +COQUETTING +COQUETTISH +COQUETTISHLY +COQUETTISHNESS +COQUILLE +COQUILLES +COQUINA +COQUINAS +COQUITO +COQUITOS +COR +CORACLE +CORACLES +CORACOID +CORACOIDS +CORAL +CORALBELLS +CORALBERRIES +CORALBERRY +CORALLINE +CORALLINES +CORALLOID +CORALROOT +CORALROOTS +CORALS +CORANTO +CORANTOES +CORANTOS +CORBAN +CORBANS +CORBEIL +CORBEILLE +CORBEILLES +CORBEILS +CORBEL +CORBELED +CORBELING +CORBELINGS +CORBELLED +CORBELLING +CORBELS +CORBICULA +CORBICULAE +CORBIE +CORBIES +CORBINA +CORBINAS +CORBY +CORD +CORDAGE +CORDAGES +CORDATE +CORDATELY +CORDED +CORDELLE +CORDELLED +CORDELLES +CORDELLING +CORDER +CORDERS +CORDGRASS +CORDGRASSES +CORDIAL +CORDIALITIES +CORDIALITY +CORDIALLY +CORDIALNESS +CORDIALNESSES +CORDIALS +CORDIERITE +CORDIERITES +CORDIFORM +CORDILLERA +CORDILLERAN +CORDILLERAS +CORDING +CORDINGS +CORDITE +CORDITES +CORDLESS +CORDLESSES +CORDLIKE +CORDOBA +CORDOBAS +CORDON +CORDONED +CORDONING +CORDONNET +CORDONNETS +CORDONS +CORDOVAN +CORDOVANS +CORDS +CORDUROY +CORDUROYED +CORDUROYING +CORDUROYS +CORDWAIN +CORDWAINER +CORDWAINERIES +CORDWAINERS +CORDWAINERY +CORDWAINS +CORDWOOD +CORDWOODS +CORE +CORECIPIENT +CORECIPIENTS +CORED +COREDEEM +COREDEEMED +COREDEEMING +COREDEEMS +COREIGN +COREIGNS +CORELATE +CORELATED +CORELATES +CORELATING +CORELESS +CORELIGIONIST +CORELIGIONISTS +COREMIA +COREMIUM +COREOPSIS +COREPRESSOR +COREPRESSORS +COREQUISITE +COREQUISITES +CORER +CORERS +CORES +CORESEARCHER +CORESEARCHERS +CORESIDENT +CORESIDENTIAL +CORESIDENTS +CORESPONDENT +CORESPONDENTS +CORF +CORGI +CORGIS +CORIA +CORIACEOUS +CORIANDER +CORIANDERS +CORING +CORIUM +CORK +CORKAGE +CORKAGES +CORKBOARD +CORKBOARDS +CORKED +CORKER +CORKERS +CORKIER +CORKIEST +CORKINESS +CORKINESSES +CORKING +CORKLIKE +CORKS +CORKSCREW +CORKSCREWED +CORKSCREWING +CORKSCREWS +CORKWOOD +CORKWOODS +CORKY +CORM +CORMEL +CORMELS +CORMLIKE +CORMOID +CORMORANT +CORMORANTS +CORMOUS +CORMS +CORN +CORNBALL +CORNBALLS +CORNBRAID +CORNBRAIDED +CORNBRAIDING +CORNBRAIDS +CORNBREAD +CORNBREADS +CORNCAKE +CORNCAKES +CORNCOB +CORNCOBS +CORNCRAKE +CORNCRAKES +CORNCRIB +CORNCRIBS +CORNEA +CORNEAL +CORNEAS +CORNED +CORNEITIS +CORNEITISES +CORNEL +CORNELIAN +CORNELIANS +CORNELS +CORNEOUS +CORNER +CORNERBACK +CORNERBACKS +CORNERED +CORNERING +CORNERMAN +CORNERMEN +CORNERS +CORNERSTONE +CORNERSTONES +CORNERWAYS +CORNERWISE +CORNET +CORNETCIES +CORNETCY +CORNETIST +CORNETISTS +CORNETS +CORNETTIST +CORNETTISTS +CORNFED +CORNFIELD +CORNFIELDS +CORNFLAKES +CORNFLOWER +CORNFLOWERS +CORNHUSK +CORNHUSKING +CORNHUSKINGS +CORNHUSKS +CORNICE +CORNICED +CORNICES +CORNICHE +CORNICHES +CORNICHON +CORNICHONS +CORNICING +CORNICLE +CORNICLES +CORNIER +CORNIEST +CORNIFICATION +CORNIFICATIONS +CORNIFIED +CORNIFIES +CORNIFY +CORNIFYING +CORNILY +CORNINESS +CORNINESSES +CORNING +CORNMEAL +CORNMEALS +CORNPONE +CORNPONES +CORNROW +CORNROWED +CORNROWING +CORNROWS +CORNS +CORNSTALK +CORNSTALKS +CORNSTARCH +CORNSTARCHES +CORNU +CORNUA +CORNUAL +CORNUCOPIA +CORNUCOPIAN +CORNUCOPIAS +CORNUS +CORNUSES +CORNUTE +CORNUTED +CORNUTO +CORNUTOS +CORNY +CORODIES +CORODY +COROLLA +COROLLARIES +COROLLARY +COROLLAS +COROLLATE +COROMANDEL +COROMANDELS +CORONA +CORONACH +CORONACHS +CORONAE +CORONAGRAPH +CORONAGRAPHS +CORONAL +CORONALLY +CORONALS +CORONARIES +CORONARY +CORONAS +CORONATE +CORONATED +CORONATES +CORONATING +CORONATION +CORONATIONS +CORONEL +CORONELS +CORONER +CORONERS +CORONET +CORONETED +CORONETS +CORONOGRAPH +CORONOGRAPHS +CORONOID +COROTATE +COROTATED +COROTATES +COROTATING +COROTATION +COROTATIONS +CORPORA +CORPORAL +CORPORALITIES +CORPORALITY +CORPORALLY +CORPORALS +CORPORATE +CORPORATELY +CORPORATES +CORPORATION +CORPORATIONS +CORPORATISM +CORPORATISMS +CORPORATIST +CORPORATIVE +CORPORATIVISM +CORPORATIVISMS +CORPORATOR +CORPORATORS +CORPOREAL +CORPOREALITIES +CORPOREALITY +CORPOREALLY +CORPOREALNESS +CORPOREALNESSES +CORPOREITIES +CORPOREITY +CORPOSANT +CORPOSANTS +CORPS +CORPSE +CORPSES +CORPSMAN +CORPSMEN +CORPULENCE +CORPULENCES +CORPULENCIES +CORPULENCY +CORPULENT +CORPULENTLY +CORPUS +CORPUSCLE +CORPUSCLES +CORPUSCULAR +CORPUSES +CORRADE +CORRADED +CORRADES +CORRADING +CORRAL +CORRALLED +CORRALLING +CORRALS +CORRASION +CORRASIONS +CORRASIVE +CORRECT +CORRECTABLE +CORRECTED +CORRECTER +CORRECTEST +CORRECTING +CORRECTION +CORRECTIONAL +CORRECTIONS +CORRECTITUDE +CORRECTITUDES +CORRECTIVE +CORRECTIVELY +CORRECTIVES +CORRECTLY +CORRECTNESS +CORRECTNESSES +CORRECTOR +CORRECTORS +CORRECTS +CORRELATABLE +CORRELATE +CORRELATED +CORRELATES +CORRELATING +CORRELATION +CORRELATIONAL +CORRELATIONS +CORRELATIVE +CORRELATIVELY +CORRELATIVES +CORRELATOR +CORRELATORS +CORRESPOND +CORRESPONDED +CORRESPONDENCE +CORRESPONDENCES +CORRESPONDENCY +CORRESPONDENT +CORRESPONDENTS +CORRESPONDING +CORRESPONDINGLY +CORRESPONDS +CORRESPONSIVE +CORRIDA +CORRIDAS +CORRIDOR +CORRIDORS +CORRIE +CORRIES +CORRIGENDA +CORRIGENDUM +CORRIGIBILITIES +CORRIGIBILITY +CORRIGIBLE +CORRIVAL +CORRIVALS +CORROBORANT +CORROBORATE +CORROBORATED +CORROBORATES +CORROBORATING +CORROBORATION +CORROBORATIONS +CORROBORATIVE +CORROBORATOR +CORROBORATORS +CORROBORATORY +CORROBOREE +CORROBOREES +CORRODE +CORRODED +CORRODES +CORRODIBLE +CORRODIES +CORRODING +CORRODY +CORROSION +CORROSIONS +CORROSIVE +CORROSIVELY +CORROSIVENESS +CORROSIVENESSES +CORROSIVES +CORRUGATE +CORRUGATED +CORRUGATES +CORRUGATING +CORRUGATION +CORRUGATIONS +CORRUPT +CORRUPTED +CORRUPTER +CORRUPTERS +CORRUPTEST +CORRUPTIBILITY +CORRUPTIBLE +CORRUPTIBLY +CORRUPTING +CORRUPTION +CORRUPTIONIST +CORRUPTIONISTS +CORRUPTIONS +CORRUPTIVE +CORRUPTIVELY +CORRUPTLY +CORRUPTNESS +CORRUPTNESSES +CORRUPTOR +CORRUPTORS +CORRUPTS +CORS +CORSAC +CORSACS +CORSAGE +CORSAGES +CORSAIR +CORSAIRS +CORSE +CORSELET +CORSELETS +CORSELETTE +CORSELETTES +CORSES +CORSET +CORSETED +CORSETIERE +CORSETIERES +CORSETING +CORSETRIES +CORSETRY +CORSETS +CORSLET +CORSLETS +CORTEGE +CORTEGES +CORTEX +CORTEXES +CORTICAL +CORTICALLY +CORTICATE +CORTICES +CORTICOID +CORTICOIDS +CORTICOSE +CORTICOSTEROID +CORTICOSTEROIDS +CORTICOSTERONE +CORTICOSTERONES +CORTICOTROPHIN +CORTICOTROPHINS +CORTICOTROPIN +CORTICOTROPINS +CORTIN +CORTINA +CORTINAS +CORTINS +CORTISOL +CORTISOLS +CORTISONE +CORTISONES +CORULER +CORULERS +CORUNDUM +CORUNDUMS +CORUSCANT +CORUSCATE +CORUSCATED +CORUSCATES +CORUSCATING +CORUSCATION +CORUSCATIONS +CORVEE +CORVEES +CORVES +CORVET +CORVETS +CORVETTE +CORVETTES +CORVID +CORVIDS +CORVINA +CORVINAS +CORVINE +CORY +CORYBANT +CORYBANTES +CORYBANTIC +CORYBANTS +CORYDALIS +CORYDALISES +CORYMB +CORYMBED +CORYMBOSE +CORYMBOSELY +CORYMBOUS +CORYMBS +CORYNEBACTERIA +CORYNEBACTERIAL +CORYNEBACTERIUM +CORYNEFORM +CORYPHAEI +CORYPHAEUS +CORYPHEE +CORYPHEES +CORYZA +CORYZAL +CORYZAS +COS +COSCRIPT +COSCRIPTED +COSCRIPTING +COSCRIPTS +COSEC +COSECANT +COSECANTS +COSECS +COSEISMAL +COSEISMALS +COSEISMIC +COSEISMICS +COSES +COSET +COSETS +COSEY +COSEYS +COSH +COSHED +COSHER +COSHERED +COSHERING +COSHERS +COSHES +COSHING +COSIE +COSIED +COSIER +COSIES +COSIEST +COSIGN +COSIGNATORIES +COSIGNATORY +COSIGNED +COSIGNER +COSIGNERS +COSIGNING +COSIGNS +COSILY +COSINE +COSINES +COSINESS +COSINESSES +COSMETIC +COSMETICALLY +COSMETICIAN +COSMETICIANS +COSMETICIZE +COSMETICIZED +COSMETICIZES +COSMETICIZING +COSMETICS +COSMETOLOGIES +COSMETOLOGIST +COSMETOLOGISTS +COSMETOLOGY +COSMIC +COSMICAL +COSMICALLY +COSMID +COSMIDS +COSMISM +COSMISMS +COSMIST +COSMISTS +COSMOCHEMICAL +COSMOCHEMIST +COSMOCHEMISTRY +COSMOCHEMISTS +COSMOGENIC +COSMOGONIC +COSMOGONICAL +COSMOGONIES +COSMOGONIST +COSMOGONISTS +COSMOGONY +COSMOGRAPHER +COSMOGRAPHERS +COSMOGRAPHIC +COSMOGRAPHICAL +COSMOGRAPHIES +COSMOGRAPHY +COSMOLINE +COSMOLINED +COSMOLINES +COSMOLINING +COSMOLOGICAL +COSMOLOGICALLY +COSMOLOGIES +COSMOLOGIST +COSMOLOGISTS +COSMOLOGY +COSMONAUT +COSMONAUTS +COSMOPOLIS +COSMOPOLISES +COSMOPOLITAN +COSMOPOLITANISM +COSMOPOLITANS +COSMOPOLITE +COSMOPOLITES +COSMOPOLITISM +COSMOPOLITISMS +COSMOS +COSMOSES +COSMOTRON +COSMOTRONS +COSPONSOR +COSPONSORED +COSPONSORING +COSPONSORS +COSPONSORSHIP +COSPONSORSHIPS +COSS +COSSACK +COSSACKS +COSSET +COSSETED +COSSETING +COSSETS +COST +COSTA +COSTAE +COSTAL +COSTALLY +COSTAR +COSTARD +COSTARDS +COSTARRED +COSTARRING +COSTARS +COSTATE +COSTED +COSTER +COSTERMONGER +COSTERMONGERS +COSTERS +COSTING +COSTIVE +COSTIVELY +COSTIVENESS +COSTIVENESSES +COSTLESS +COSTLESSLY +COSTLIER +COSTLIEST +COSTLINESS +COSTLINESSES +COSTLY +COSTMARIES +COSTMARY +COSTREL +COSTRELS +COSTS +COSTUME +COSTUMED +COSTUMER +COSTUMERIES +COSTUMERS +COSTUMERY +COSTUMES +COSTUMEY +COSTUMIER +COSTUMIERS +COSTUMING +COSURFACTANT +COSURFACTANTS +COSY +COSYING +COT +COTAN +COTANGENT +COTANGENTS +COTANS +COTE +COTEAU +COTEAUX +COTED +COTENANCIES +COTENANCY +COTENANT +COTENANTS +COTERIE +COTERIES +COTERMINOUS +COTERMINOUSLY +COTES +COTHURN +COTHURNAL +COTHURNI +COTHURNS +COTHURNUS +COTIDAL +COTILLION +COTILLIONS +COTILLON +COTILLONS +COTING +COTINGA +COTINGAS +COTININE +COTININES +COTONEASTER +COTONEASTERS +COTQUEAN +COTQUEANS +COTRANSDUCE +COTRANSDUCED +COTRANSDUCES +COTRANSDUCING +COTRANSDUCTION +COTRANSDUCTIONS +COTRANSFER +COTRANSFERS +COTRANSPORT +COTRANSPORTED +COTRANSPORTING +COTRANSPORTS +COTRUSTEE +COTRUSTEES +COTS +COTTA +COTTAE +COTTAGE +COTTAGER +COTTAGERS +COTTAGES +COTTAGEY +COTTAR +COTTARS +COTTAS +COTTER +COTTERED +COTTERLESS +COTTERS +COTTIER +COTTIERS +COTTON +COTTONED +COTTONING +COTTONMOUTH +COTTONMOUTHS +COTTONS +COTTONSEED +COTTONSEEDS +COTTONTAIL +COTTONTAILS +COTTONWEED +COTTONWEEDS +COTTONWOOD +COTTONWOODS +COTTONY +COTURNIX +COTURNIXES +COTYLEDON +COTYLEDONARY +COTYLEDONS +COTYLOID +COTYLOSAUR +COTYLOSAURS +COTYPE +COTYPES +COUCH +COUCHANT +COUCHED +COUCHER +COUCHERS +COUCHES +COUCHETTE +COUCHETTES +COUCHING +COUCHINGS +COUDE +COUGAR +COUGARS +COUGH +COUGHED +COUGHER +COUGHERS +COUGHING +COUGHS +COULD +COULDEST +COULDST +COULEE +COULEES +COULIBIAC +COULIBIACS +COULIS +COULISSE +COULISSES +COULOIR +COULOIRS +COULOMB +COULOMBIC +COULOMBS +COULOMETER +COULOMETERS +COULOMETRIC +COULOMETRICALLY +COULOMETRIES +COULOMETRY +COULTER +COULTERS +COUMARIC +COUMARIN +COUMARINS +COUMARONE +COUMARONES +COUMAROU +COUMAROUS +COUNCIL +COUNCILLOR +COUNCILLORS +COUNCILLORSHIP +COUNCILLORSHIPS +COUNCILMAN +COUNCILMANIC +COUNCILMEN +COUNCILOR +COUNCILORS +COUNCILS +COUNCILWOMAN +COUNCILWOMEN +COUNSEL +COUNSELED +COUNSELEE +COUNSELEES +COUNSELING +COUNSELINGS +COUNSELLED +COUNSELLING +COUNSELLINGS +COUNSELLOR +COUNSELLORS +COUNSELOR +COUNSELORS +COUNSELORSHIP +COUNSELORSHIPS +COUNSELS +COUNT +COUNTABILITIES +COUNTABILITY +COUNTABLE +COUNTABLY +COUNTDOWN +COUNTDOWNS +COUNTED +COUNTENANCE +COUNTENANCED +COUNTENANCER +COUNTENANCERS +COUNTENANCES +COUNTENANCING +COUNTER +COUNTERACT +COUNTERACTED +COUNTERACTING +COUNTERACTION +COUNTERACTIONS +COUNTERACTIVE +COUNTERACTS +COUNTERAGENT +COUNTERAGENTS +COUNTERARGUE +COUNTERARGUED +COUNTERARGUES +COUNTERARGUING +COUNTERARGUMENT +COUNTERASSAULT +COUNTERASSAULTS +COUNTERATTACK +COUNTERATTACKED +COUNTERATTACKER +COUNTERATTACKS +COUNTERBALANCE +COUNTERBALANCED +COUNTERBALANCES +COUNTERBID +COUNTERBIDS +COUNTERBLAST +COUNTERBLASTS +COUNTERBLOCKADE +COUNTERBLOW +COUNTERBLOWS +COUNTERCAMPAIGN +COUNTERCHANGE +COUNTERCHANGED +COUNTERCHANGES +COUNTERCHANGING +COUNTERCHARGE +COUNTERCHARGED +COUNTERCHARGES +COUNTERCHARGING +COUNTERCHECK +COUNTERCHECKED +COUNTERCHECKING +COUNTERCHECKS +COUNTERCLAIM +COUNTERCLAIMED +COUNTERCLAIMING +COUNTERCLAIMS +COUNTERCOUP +COUNTERCOUPS +COUNTERCRIES +COUNTERCRY +COUNTERCULTURAL +COUNTERCULTURE +COUNTERCULTURES +COUNTERCURRENT +COUNTERCURRENTS +COUNTERCYCLICAL +COUNTERDEMAND +COUNTERDEMANDS +COUNTERED +COUNTEREFFORT +COUNTEREFFORTS +COUNTEREVIDENCE +COUNTEREXAMPLE +COUNTEREXAMPLES +COUNTERFACTUAL +COUNTERFEIT +COUNTERFEITED +COUNTERFEITER +COUNTERFEITERS +COUNTERFEITING +COUNTERFEITS +COUNTERFIRE +COUNTERFIRES +COUNTERFLOW +COUNTERFLOWS +COUNTERFOIL +COUNTERFOILS +COUNTERFORCE +COUNTERFORCES +COUNTERGUERILLA +COUNTERIMAGE +COUNTERIMAGES +COUNTERING +COUNTERINSTANCE +COUNTERION +COUNTERIONS +COUNTERIRRITANT +COUNTERMAN +COUNTERMAND +COUNTERMANDED +COUNTERMANDING +COUNTERMANDS +COUNTERMARCH +COUNTERMARCHED +COUNTERMARCHES +COUNTERMARCHING +COUNTERMEASURE +COUNTERMEASURES +COUNTERMELODIES +COUNTERMELODY +COUNTERMEMO +COUNTERMEMOS +COUNTERMEN +COUNTERMINE +COUNTERMINES +COUNTERMOVE +COUNTERMOVED +COUNTERMOVEMENT +COUNTERMOVES +COUNTERMOVING +COUNTERMYTH +COUNTERMYTHS +COUNTEROFFER +COUNTEROFFERS +COUNTERORDER +COUNTERORDERED +COUNTERORDERING +COUNTERORDERS +COUNTERPANE +COUNTERPANES +COUNTERPART +COUNTERPARTS +COUNTERPETITION +COUNTERPICKET +COUNTERPICKETED +COUNTERPICKETS +COUNTERPLAN +COUNTERPLANS +COUNTERPLAY +COUNTERPLAYER +COUNTERPLAYERS +COUNTERPLAYS +COUNTERPLEA +COUNTERPLEAS +COUNTERPLOT +COUNTERPLOTS +COUNTERPLOTTED +COUNTERPLOTTING +COUNTERPLOY +COUNTERPLOYS +COUNTERPOINT +COUNTERPOINTED +COUNTERPOINTING +COUNTERPOINTS +COUNTERPOISE +COUNTERPOISED +COUNTERPOISES +COUNTERPOISING +COUNTERPOSE +COUNTERPOSED +COUNTERPOSES +COUNTERPOSING +COUNTERPOWER +COUNTERPOWERS +COUNTERPRESSURE +COUNTERPROJECT +COUNTERPROJECTS +COUNTERPROPOSAL +COUNTERPROTEST +COUNTERPROTESTS +COUNTERPUNCH +COUNTERPUNCHED +COUNTERPUNCHER +COUNTERPUNCHERS +COUNTERPUNCHES +COUNTERPUNCHING +COUNTERQUESTION +COUNTERRAID +COUNTERRAIDS +COUNTERRALLIED +COUNTERRALLIES +COUNTERRALLY +COUNTERRALLYING +COUNTERREACTION +COUNTERREFORM +COUNTERREFORMER +COUNTERREFORMS +COUNTERRESPONSE +COUNTERS +COUNTERSHADING +COUNTERSHADINGS +COUNTERSHOT +COUNTERSHOTS +COUNTERSIGN +COUNTERSIGNED +COUNTERSIGNING +COUNTERSIGNS +COUNTERSINK +COUNTERSINKING +COUNTERSINKS +COUNTERSNIPER +COUNTERSNIPERS +COUNTERSPELL +COUNTERSPELLS +COUNTERSPIES +COUNTERSPY +COUNTERSTAIN +COUNTERSTAINED +COUNTERSTAINING +COUNTERSTAINS +COUNTERSTATE +COUNTERSTATED +COUNTERSTATES +COUNTERSTATING +COUNTERSTEP +COUNTERSTEPS +COUNTERSTRATEGY +COUNTERSTREAM +COUNTERSTREAMS +COUNTERSTRICKEN +COUNTERSTRIKE +COUNTERSTRIKES +COUNTERSTRIKING +COUNTERSTROKE +COUNTERSTROKES +COUNTERSTRUCK +COUNTERSTYLE +COUNTERSTYLES +COUNTERSUE +COUNTERSUED +COUNTERSUES +COUNTERSUING +COUNTERSUIT +COUNTERSUITS +COUNTERSUNK +COUNTERTACTIC +COUNTERTACTICS +COUNTERTENDENCY +COUNTERTENOR +COUNTERTENORS +COUNTERTERROR +COUNTERTERRORS +COUNTERTHREAT +COUNTERTHREATS +COUNTERTHRUST +COUNTERTHRUSTS +COUNTERTOP +COUNTERTOPS +COUNTERTRADE +COUNTERTRADES +COUNTERTREND +COUNTERTRENDS +COUNTERVAIL +COUNTERVAILED +COUNTERVAILING +COUNTERVAILS +COUNTERVIEW +COUNTERVIEWS +COUNTERVIOLENCE +COUNTERWEIGHT +COUNTERWEIGHTED +COUNTERWEIGHTS +COUNTERWORLD +COUNTERWORLDS +COUNTESS +COUNTESSES +COUNTIAN +COUNTIANS +COUNTIES +COUNTING +COUNTINGHOUSE +COUNTINGHOUSES +COUNTLESS +COUNTLESSLY +COUNTRIES +COUNTRIFIED +COUNTRY +COUNTRYFIED +COUNTRYISH +COUNTRYMAN +COUNTRYMEN +COUNTRYSEAT +COUNTRYSEATS +COUNTRYSIDE +COUNTRYSIDES +COUNTRYWIDE +COUNTRYWOMAN +COUNTRYWOMEN +COUNTS +COUNTY +COUP +COUPE +COUPED +COUPES +COUPING +COUPLE +COUPLED +COUPLEDOM +COUPLEDOMS +COUPLEMENT +COUPLEMENTS +COUPLER +COUPLERS +COUPLES +COUPLET +COUPLETS +COUPLING +COUPLINGS +COUPON +COUPONING +COUPONINGS +COUPONS +COUPS +COURAGE +COURAGEOUS +COURAGEOUSLY +COURAGEOUSNESS +COURAGES +COURANT +COURANTE +COURANTES +COURANTO +COURANTOES +COURANTOS +COURANTS +COURGETTE +COURGETTES +COURIER +COURIERS +COURLAN +COURLANS +COURSE +COURSED +COURSER +COURSERS +COURSES +COURSEWARE +COURSEWARES +COURSING +COURSINGS +COURT +COURTED +COURTEOUS +COURTEOUSLY +COURTEOUSNESS +COURTEOUSNESSES +COURTER +COURTERS +COURTESAN +COURTESANS +COURTESIED +COURTESIES +COURTESY +COURTESYING +COURTEZAN +COURTEZANS +COURTHOUSE +COURTHOUSES +COURTIER +COURTIERS +COURTING +COURTLIER +COURTLIEST +COURTLINESS +COURTLINESSES +COURTLY +COURTROOM +COURTROOMS +COURTS +COURTSHIP +COURTSHIPS +COURTSIDE +COURTSIDES +COURTYARD +COURTYARDS +COUSCOUS +COUSCOUSES +COUSIN +COUSINAGE +COUSINAGES +COUSINHOOD +COUSINHOODS +COUSINLY +COUSINRIES +COUSINRY +COUSINS +COUSINSHIP +COUSINSHIPS +COUTEAU +COUTEAUX +COUTER +COUTERS +COUTH +COUTHER +COUTHEST +COUTHIE +COUTHIER +COUTHIEST +COUTHS +COUTURE +COUTURES +COUTURIER +COUTURIERE +COUTURIERES +COUTURIERS +COUVADE +COUVADES +COVALENCE +COVALENCES +COVALENCIES +COVALENCY +COVALENT +COVALENTLY +COVARIANCE +COVARIANCES +COVARIANT +COVARIATE +COVARIATES +COVARIATION +COVARIATIONS +COVARIED +COVARIES +COVARY +COVARYING +COVE +COVED +COVELLINE +COVELLINES +COVELLITE +COVELLITES +COVEN +COVENANT +COVENANTAL +COVENANTED +COVENANTEE +COVENANTEES +COVENANTER +COVENANTERS +COVENANTING +COVENANTOR +COVENANTORS +COVENANTS +COVENS +COVER +COVERABLE +COVERAGE +COVERAGES +COVERALL +COVERALLED +COVERALLS +COVERED +COVERER +COVERERS +COVERING +COVERINGS +COVERLESS +COVERLET +COVERLETS +COVERLID +COVERLIDS +COVERS +COVERSINE +COVERSINES +COVERSLIP +COVERSLIPS +COVERT +COVERTLY +COVERTNESS +COVERTNESSES +COVERTS +COVERTURE +COVERTURES +COVERUP +COVERUPS +COVES +COVET +COVETABLE +COVETED +COVETER +COVETERS +COVETING +COVETINGLY +COVETOUS +COVETOUSLY +COVETOUSNESS +COVETOUSNESSES +COVETS +COVEY +COVEYS +COVIN +COVING +COVINGS +COVINS +COW +COWAGE +COWAGES +COWARD +COWARDICE +COWARDICES +COWARDLINESS +COWARDLINESSES +COWARDLY +COWARDS +COWBANE +COWBANES +COWBELL +COWBELLS +COWBERRIES +COWBERRY +COWBIND +COWBINDS +COWBIRD +COWBIRDS +COWBOY +COWBOYED +COWBOYING +COWBOYS +COWCATCHER +COWCATCHERS +COWED +COWEDLY +COWER +COWERED +COWERING +COWERS +COWFISH +COWFISHES +COWFLAP +COWFLAPS +COWFLOP +COWFLOPS +COWGIRL +COWGIRLS +COWHAGE +COWHAGES +COWHAND +COWHANDS +COWHERB +COWHERBS +COWHERD +COWHERDS +COWHIDE +COWHIDED +COWHIDES +COWHIDING +COWIER +COWIEST +COWING +COWINNER +COWINNERS +COWL +COWLED +COWLICK +COWLICKS +COWLING +COWLINGS +COWLS +COWLSTAFF +COWLSTAFFS +COWLSTAVES +COWMAN +COWMEN +COWORKER +COWORKERS +COWPAT +COWPATS +COWPEA +COWPEAS +COWPIE +COWPIES +COWPLOP +COWPLOPS +COWPOKE +COWPOKES +COWPOX +COWPOXES +COWPUNCHER +COWPUNCHERS +COWRIE +COWRIES +COWRITE +COWRITER +COWRITERS +COWRITES +COWRITING +COWRITTEN +COWROTE +COWRY +COWS +COWSHED +COWSHEDS +COWSKIN +COWSKINS +COWSLIP +COWSLIPS +COWY +COX +COXA +COXAE +COXAL +COXALGIA +COXALGIAS +COXALGIC +COXALGIES +COXALGY +COXCOMB +COXCOMBIC +COXCOMBICAL +COXCOMBRIES +COXCOMBRY +COXCOMBS +COXED +COXES +COXING +COXITIDES +COXITIS +COXLESS +COXSWAIN +COXSWAINED +COXSWAINING +COXSWAINS +COY +COYDOG +COYDOGS +COYED +COYER +COYEST +COYING +COYISH +COYLY +COYNESS +COYNESSES +COYOTE +COYOTES +COYOTILLO +COYOTILLOS +COYPOU +COYPOUS +COYPU +COYPUS +COYS +COZ +COZEN +COZENAGE +COZENAGES +COZENED +COZENER +COZENERS +COZENING +COZENS +COZES +COZEY +COZEYS +COZIE +COZIED +COZIER +COZIES +COZIEST +COZILY +COZINESS +COZINESSES +COZY +COZYING +COZZES +CRAAL +CRAALED +CRAALING +CRAALS +CRAB +CRABAPPLE +CRABAPPLES +CRABBED +CRABBEDLY +CRABBEDNESS +CRABBEDNESSES +CRABBER +CRABBERS +CRABBIER +CRABBIEST +CRABBILY +CRABBING +CRABBY +CRABEATER +CRABEATERS +CRABGRASS +CRABGRASSES +CRABLIKE +CRABMEAT +CRABMEATS +CRABS +CRABSTICK +CRABSTICKS +CRABWISE +CRACK +CRACKAJACK +CRACKAJACKS +CRACKBACK +CRACKBACKS +CRACKBRAIN +CRACKBRAINED +CRACKBRAINS +CRACKDOWN +CRACKDOWNS +CRACKED +CRACKER +CRACKERJACK +CRACKERJACKS +CRACKERS +CRACKHEAD +CRACKHEADS +CRACKING +CRACKINGS +CRACKLE +CRACKLED +CRACKLES +CRACKLEWARE +CRACKLEWARES +CRACKLIER +CRACKLIEST +CRACKLING +CRACKLINGS +CRACKLY +CRACKNEL +CRACKNELS +CRACKPOT +CRACKPOTS +CRACKS +CRACKSMAN +CRACKSMEN +CRACKUP +CRACKUPS +CRACKY +CRADLE +CRADLED +CRADLER +CRADLERS +CRADLES +CRADLESONG +CRADLESONGS +CRADLING +CRAFT +CRAFTED +CRAFTER +CRAFTERS +CRAFTIER +CRAFTIEST +CRAFTILY +CRAFTINESS +CRAFTINESSES +CRAFTING +CRAFTS +CRAFTSMAN +CRAFTSMANLIKE +CRAFTSMANLY +CRAFTSMANSHIP +CRAFTSMANSHIPS +CRAFTSMEN +CRAFTSPEOPLE +CRAFTSPERSON +CRAFTSPERSONS +CRAFTSWOMAN +CRAFTSWOMEN +CRAFTWORK +CRAFTWORKS +CRAFTY +CRAG +CRAGGED +CRAGGIER +CRAGGIEST +CRAGGILY +CRAGGINESS +CRAGGINESSES +CRAGGY +CRAGS +CRAGSMAN +CRAGSMEN +CRAKE +CRAKES +CRAM +CRAMBE +CRAMBES +CRAMBO +CRAMBOES +CRAMBOS +CRAMMED +CRAMMER +CRAMMERS +CRAMMING +CRAMOISIE +CRAMOISIES +CRAMOISY +CRAMP +CRAMPED +CRAMPFISH +CRAMPFISHES +CRAMPIER +CRAMPIEST +CRAMPING +CRAMPIT +CRAMPITS +CRAMPON +CRAMPONS +CRAMPOON +CRAMPOONS +CRAMPS +CRAMPY +CRAMS +CRANBERRIES +CRANBERRY +CRANCH +CRANCHED +CRANCHES +CRANCHING +CRANE +CRANED +CRANES +CRANESBILL +CRANESBILLS +CRANIA +CRANIAL +CRANIALLY +CRANIATE +CRANIATES +CRANING +CRANIOCEREBRAL +CRANIOFACIAL +CRANIOLOGIES +CRANIOLOGY +CRANIOMETRIES +CRANIOMETRY +CRANIOSACRAL +CRANIOTOMIES +CRANIOTOMY +CRANIUM +CRANIUMS +CRANK +CRANKCASE +CRANKCASES +CRANKED +CRANKER +CRANKEST +CRANKIER +CRANKIEST +CRANKILY +CRANKINESS +CRANKINESSES +CRANKING +CRANKISH +CRANKLE +CRANKLED +CRANKLES +CRANKLING +CRANKLY +CRANKOUS +CRANKPIN +CRANKPINS +CRANKS +CRANKSHAFT +CRANKSHAFTS +CRANKY +CRANNIED +CRANNIES +CRANNOG +CRANNOGE +CRANNOGES +CRANNOGS +CRANNY +CRANREUCH +CRANREUCHS +CRAP +CRAPE +CRAPED +CRAPELIKE +CRAPES +CRAPING +CRAPOLA +CRAPOLAS +CRAPPED +CRAPPER +CRAPPERS +CRAPPIE +CRAPPIER +CRAPPIES +CRAPPIEST +CRAPPING +CRAPPY +CRAPS +CRAPSHOOT +CRAPSHOOTER +CRAPSHOOTERS +CRAPSHOOTS +CRAPULENT +CRAPULOUS +CRASES +CRASH +CRASHED +CRASHER +CRASHERS +CRASHES +CRASHING +CRASHINGLY +CRASHWORTHINESS +CRASHWORTHY +CRASIS +CRASS +CRASSER +CRASSEST +CRASSITUDE +CRASSITUDES +CRASSLY +CRASSNESS +CRASSNESSES +CRATCH +CRATCHES +CRATE +CRATED +CRATER +CRATERED +CRATERING +CRATERINGS +CRATERLET +CRATERLETS +CRATERLIKE +CRATERS +CRATES +CRATING +CRATON +CRATONIC +CRATONS +CRAUNCH +CRAUNCHED +CRAUNCHES +CRAUNCHING +CRAVAT +CRAVATS +CRAVE +CRAVED +CRAVEN +CRAVENED +CRAVENING +CRAVENLY +CRAVENNESS +CRAVENNESSES +CRAVENS +CRAVER +CRAVERS +CRAVES +CRAVING +CRAVINGS +CRAW +CRAWDAD +CRAWDADDIES +CRAWDADDY +CRAWDADS +CRAWFISH +CRAWFISHED +CRAWFISHES +CRAWFISHING +CRAWL +CRAWLED +CRAWLER +CRAWLERS +CRAWLIER +CRAWLIEST +CRAWLING +CRAWLS +CRAWLWAY +CRAWLWAYS +CRAWLY +CRAWS +CRAYFISH +CRAYFISHES +CRAYON +CRAYONED +CRAYONER +CRAYONERS +CRAYONING +CRAYONIST +CRAYONISTS +CRAYONS +CRAZE +CRAZED +CRAZES +CRAZIER +CRAZIES +CRAZIEST +CRAZILY +CRAZINESS +CRAZINESSES +CRAZING +CRAZY +CRAZYWEED +CRAZYWEEDS +CREAK +CREAKED +CREAKIER +CREAKIEST +CREAKILY +CREAKINESS +CREAKINESSES +CREAKING +CREAKS +CREAKY +CREAM +CREAMCUPS +CREAMED +CREAMER +CREAMERIES +CREAMERS +CREAMERY +CREAMIER +CREAMIEST +CREAMILY +CREAMINESS +CREAMINESSES +CREAMING +CREAMPUFF +CREAMPUFFS +CREAMS +CREAMWARE +CREAMWARES +CREAMY +CREASE +CREASED +CREASELESS +CREASER +CREASERS +CREASES +CREASIER +CREASIEST +CREASING +CREASY +CREATABLE +CREATE +CREATED +CREATES +CREATIN +CREATINE +CREATINES +CREATING +CREATININE +CREATININES +CREATINS +CREATION +CREATIONISM +CREATIONISMS +CREATIONIST +CREATIONISTS +CREATIONS +CREATIVE +CREATIVELY +CREATIVENESS +CREATIVENESSES +CREATIVES +CREATIVITIES +CREATIVITY +CREATOR +CREATORS +CREATURAL +CREATURE +CREATUREHOOD +CREATUREHOODS +CREATURELINESS +CREATURELY +CREATURES +CRECHE +CRECHES +CRED +CREDAL +CREDENCE +CREDENCES +CREDENDA +CREDENDUM +CREDENT +CREDENTIAL +CREDENTIALED +CREDENTIALING +CREDENTIALISM +CREDENTIALISMS +CREDENTIALLED +CREDENTIALLING +CREDENTIALS +CREDENZA +CREDENZAS +CREDIBILITIES +CREDIBILITY +CREDIBLE +CREDIBLY +CREDIT +CREDITABILITIES +CREDITABILITY +CREDITABLE +CREDITABLENESS +CREDITABLY +CREDITED +CREDITING +CREDITOR +CREDITORS +CREDITS +CREDITWORTHY +CREDO +CREDOS +CREDS +CREDULITIES +CREDULITY +CREDULOUS +CREDULOUSLY +CREDULOUSNESS +CREDULOUSNESSES +CREED +CREEDAL +CREEDS +CREEK +CREEKS +CREEL +CREELED +CREELING +CREELS +CREEP +CREEPAGE +CREEPAGES +CREEPED +CREEPER +CREEPERS +CREEPIE +CREEPIER +CREEPIES +CREEPIEST +CREEPILY +CREEPINESS +CREEPINESSES +CREEPING +CREEPS +CREEPY +CREESE +CREESES +CREESH +CREESHED +CREESHES +CREESHING +CREMAINS +CREMATE +CREMATED +CREMATES +CREMATING +CREMATION +CREMATIONS +CREMATOR +CREMATORIA +CREMATORIES +CREMATORIUM +CREMATORIUMS +CREMATORS +CREMATORY +CREME +CREMES +CREMINI +CREMINIS +CRENATE +CRENATED +CRENATELY +CRENATION +CRENATIONS +CRENATURE +CRENATURES +CRENEL +CRENELATE +CRENELATED +CRENELATES +CRENELATING +CRENELATION +CRENELATIONS +CRENELED +CRENELING +CRENELLATED +CRENELLATION +CRENELLATIONS +CRENELLE +CRENELLED +CRENELLES +CRENELLING +CRENELS +CRENSHAW +CRENSHAWS +CRENULATE +CRENULATED +CRENULATION +CRENULATIONS +CREODONT +CREODONTS +CREOLE +CREOLES +CREOLISE +CREOLISED +CREOLISES +CREOLISING +CREOLIZATION +CREOLIZATIONS +CREOLIZE +CREOLIZED +CREOLIZES +CREOLIZING +CREOSOL +CREOSOLS +CREOSOTE +CREOSOTED +CREOSOTES +CREOSOTIC +CREOSOTING +CREPE +CREPED +CREPES +CREPEY +CREPIER +CREPIEST +CREPING +CREPITANT +CREPITATE +CREPITATED +CREPITATES +CREPITATING +CREPITATION +CREPITATIONS +CREPON +CREPONS +CREPT +CREPUSCLE +CREPUSCLES +CREPUSCULAR +CREPUSCULE +CREPUSCULES +CREPY +CRESCENDI +CRESCENDO +CRESCENDOED +CRESCENDOES +CRESCENDOING +CRESCENDOS +CRESCENT +CRESCENTIC +CRESCENTS +CRESCIVE +CRESCIVELY +CRESOL +CRESOLS +CRESS +CRESSES +CRESSET +CRESSETS +CRESSY +CREST +CRESTAL +CRESTED +CRESTFALLEN +CRESTFALLENLY +CRESTFALLENNESS +CRESTING +CRESTINGS +CRESTLESS +CRESTS +CRESYL +CRESYLIC +CRESYLS +CRETIC +CRETICS +CRETIN +CRETINISM +CRETINISMS +CRETINOID +CRETINOUS +CRETINS +CRETONNE +CRETONNES +CREVALLE +CREVALLES +CREVASSE +CREVASSED +CREVASSES +CREVASSING +CREVICE +CREVICED +CREVICES +CREW +CREWCUT +CREWCUTS +CREWED +CREWEL +CREWELS +CREWELWORK +CREWELWORKS +CREWING +CREWLESS +CREWMAN +CREWMATE +CREWMATES +CREWMEN +CREWNECK +CREWNECKS +CREWS +CRIB +CRIBBAGE +CRIBBAGES +CRIBBED +CRIBBER +CRIBBERS +CRIBBING +CRIBBINGS +CRIBBLED +CRIBRIFORM +CRIBROUS +CRIBS +CRIBWORK +CRIBWORKS +CRICETID +CRICETIDS +CRICK +CRICKED +CRICKET +CRICKETED +CRICKETER +CRICKETERS +CRICKETING +CRICKETS +CRICKEY +CRICKING +CRICKS +CRICOID +CRICOIDS +CRIED +CRIER +CRIERS +CRIES +CRIKEY +CRIME +CRIMELESS +CRIMES +CRIMINAL +CRIMINALISTICS +CRIMINALITIES +CRIMINALITY +CRIMINALIZATION +CRIMINALIZE +CRIMINALIZED +CRIMINALIZES +CRIMINALIZING +CRIMINALLY +CRIMINALS +CRIMINATE +CRIMINATED +CRIMINATES +CRIMINATING +CRIMINATION +CRIMINATIONS +CRIMINE +CRIMINI +CRIMINIS +CRIMINOLOGICAL +CRIMINOLOGIES +CRIMINOLOGIST +CRIMINOLOGISTS +CRIMINOLOGY +CRIMINOUS +CRIMINY +CRIMMER +CRIMMERS +CRIMP +CRIMPED +CRIMPER +CRIMPERS +CRIMPIER +CRIMPIEST +CRIMPING +CRIMPLE +CRIMPLED +CRIMPLES +CRIMPLING +CRIMPS +CRIMPY +CRIMSON +CRIMSONED +CRIMSONING +CRIMSONS +CRINGE +CRINGED +CRINGER +CRINGERS +CRINGES +CRINGING +CRINGLE +CRINGLES +CRINITE +CRINITES +CRINKLE +CRINKLED +CRINKLES +CRINKLIER +CRINKLIEST +CRINKLING +CRINKLY +CRINOID +CRINOIDAL +CRINOIDS +CRINOLINE +CRINOLINED +CRINOLINES +CRINUM +CRINUMS +CRIOLLO +CRIOLLOS +CRIPE +CRIPES +CRIPPLE +CRIPPLED +CRIPPLER +CRIPPLERS +CRIPPLES +CRIPPLING +CRIPPLINGLY +CRIS +CRISES +CRISIC +CRISIS +CRISP +CRISPATE +CRISPATED +CRISPBREAD +CRISPBREADS +CRISPED +CRISPEN +CRISPENED +CRISPENING +CRISPENS +CRISPER +CRISPERS +CRISPEST +CRISPHEAD +CRISPHEADS +CRISPIER +CRISPIEST +CRISPILY +CRISPINESS +CRISPINESSES +CRISPING +CRISPLY +CRISPNESS +CRISPNESSES +CRISPS +CRISPY +CRISSA +CRISSAL +CRISSCROSS +CRISSCROSSED +CRISSCROSSES +CRISSCROSSING +CRISSUM +CRISTA +CRISTAE +CRISTATE +CRISTATED +CRIT +CRITERIA +CRITERIAL +CRITERION +CRITERIONS +CRITERIUM +CRITERIUMS +CRITIC +CRITICAL +CRITICALITIES +CRITICALITY +CRITICALLY +CRITICALNESS +CRITICALNESSES +CRITICASTER +CRITICASTERS +CRITICISE +CRITICISED +CRITICISES +CRITICISING +CRITICISM +CRITICISMS +CRITICIZABLE +CRITICIZE +CRITICIZED +CRITICIZER +CRITICIZERS +CRITICIZES +CRITICIZING +CRITICS +CRITIQUE +CRITIQUED +CRITIQUES +CRITIQUING +CRITS +CRITTER +CRITTERS +CRITTUR +CRITTURS +CROAK +CROAKED +CROAKER +CROAKERS +CROAKIER +CROAKIEST +CROAKILY +CROAKING +CROAKS +CROAKY +CROC +CROCEIN +CROCEINE +CROCEINES +CROCEINS +CROCHET +CROCHETED +CROCHETER +CROCHETERS +CROCHETING +CROCHETS +CROCI +CROCIDOLITE +CROCIDOLITES +CROCINE +CROCK +CROCKED +CROCKERIES +CROCKERY +CROCKET +CROCKETED +CROCKETS +CROCKING +CROCKPOT +CROCKPOTS +CROCKS +CROCODILE +CROCODILES +CROCODILIAN +CROCODILIANS +CROCOITE +CROCOITES +CROCS +CROCUS +CROCUSES +CROFT +CROFTER +CROFTERS +CROFTS +CROISSANT +CROISSANTS +CROJIK +CROJIKS +CROMLECH +CROMLECHS +CRONE +CRONES +CRONIES +CRONISH +CRONY +CRONYISM +CRONYISMS +CROOK +CROOKBACK +CROOKBACKED +CROOKBACKS +CROOKED +CROOKEDER +CROOKEDEST +CROOKEDLY +CROOKEDNESS +CROOKEDNESSES +CROOKER +CROOKERIES +CROOKERY +CROOKEST +CROOKING +CROOKNECK +CROOKNECKS +CROOKS +CROON +CROONED +CROONER +CROONERS +CROONING +CROONS +CROP +CROPLAND +CROPLANDS +CROPLESS +CROPPED +CROPPER +CROPPERS +CROPPIE +CROPPIES +CROPPING +CROPS +CROQUET +CROQUETED +CROQUETING +CROQUETS +CROQUETTE +CROQUETTES +CROQUIGNOLE +CROQUIGNOLES +CROQUIS +CRORE +CRORES +CROSIER +CROSIERS +CROSS +CROSSABILITIES +CROSSABILITY +CROSSABLE +CROSSARM +CROSSARMS +CROSSBANDED +CROSSBANDING +CROSSBANDINGS +CROSSBAR +CROSSBARRED +CROSSBARRING +CROSSBARS +CROSSBEAM +CROSSBEAMS +CROSSBEARER +CROSSBEARERS +CROSSBILL +CROSSBILLS +CROSSBONES +CROSSBOW +CROSSBOWMAN +CROSSBOWMEN +CROSSBOWS +CROSSBRED +CROSSBREDS +CROSSBREED +CROSSBREEDING +CROSSBREEDS +CROSSBUCK +CROSSBUCKS +CROSSCOURT +CROSSCURRENT +CROSSCURRENTS +CROSSCUT +CROSSCUTS +CROSSCUTTING +CROSSCUTTINGS +CROSSE +CROSSED +CROSSER +CROSSERS +CROSSES +CROSSEST +CROSSFIRE +CROSSFIRES +CROSSHAIR +CROSSHAIRS +CROSSHATCH +CROSSHATCHED +CROSSHATCHES +CROSSHATCHING +CROSSHEAD +CROSSHEADS +CROSSING +CROSSINGS +CROSSJACK +CROSSJACKS +CROSSLET +CROSSLETS +CROSSLINGUISTIC +CROSSLY +CROSSNESS +CROSSNESSES +CROSSOPTERYGIAN +CROSSOVER +CROSSOVERS +CROSSPATCH +CROSSPATCHES +CROSSPIECE +CROSSPIECES +CROSSROAD +CROSSROADS +CROSSRUFF +CROSSRUFFED +CROSSRUFFING +CROSSRUFFS +CROSSTALK +CROSSTALKS +CROSSTIE +CROSSTIED +CROSSTIES +CROSSTOWN +CROSSTREE +CROSSTREES +CROSSWALK +CROSSWALKS +CROSSWAY +CROSSWAYS +CROSSWIND +CROSSWINDS +CROSSWISE +CROSSWORD +CROSSWORDS +CROSTINI +CROSTINO +CROTCH +CROTCHED +CROTCHES +CROTCHET +CROTCHETINESS +CROTCHETINESSES +CROTCHETS +CROTCHETY +CROTON +CROTONBUG +CROTONBUGS +CROTONS +CROUCH +CROUCHED +CROUCHES +CROUCHING +CROUP +CROUPE +CROUPES +CROUPIER +CROUPIERS +CROUPIEST +CROUPILY +CROUPOUS +CROUPS +CROUPY +CROUSE +CROUSELY +CROUSTADE +CROUSTADES +CROUTE +CROUTES +CROUTON +CROUTONS +CROW +CROWBAR +CROWBARRED +CROWBARRING +CROWBARS +CROWBERRIES +CROWBERRY +CROWD +CROWDED +CROWDEDLY +CROWDEDNESS +CROWDEDNESSES +CROWDER +CROWDERS +CROWDIE +CROWDIES +CROWDING +CROWDS +CROWDY +CROWED +CROWER +CROWERS +CROWFEET +CROWFOOT +CROWFOOTS +CROWING +CROWKEEPER +CROWKEEPERS +CROWN +CROWNED +CROWNER +CROWNERS +CROWNET +CROWNETS +CROWNING +CROWNLESS +CROWNS +CROWS +CROWSFEET +CROWSFOOT +CROWSTEP +CROWSTEPPED +CROWSTEPS +CROZE +CROZER +CROZERS +CROZES +CROZIER +CROZIERS +CRU +CRUCES +CRUCIAL +CRUCIALLY +CRUCIAN +CRUCIANS +CRUCIATE +CRUCIBLE +CRUCIBLES +CRUCIFER +CRUCIFEROUS +CRUCIFERS +CRUCIFIED +CRUCIFIER +CRUCIFIERS +CRUCIFIES +CRUCIFIX +CRUCIFIXES +CRUCIFIXION +CRUCIFIXIONS +CRUCIFORM +CRUCIFORMS +CRUCIFY +CRUCIFYING +CRUCK +CRUCKS +CRUD +CRUDDED +CRUDDIER +CRUDDIEST +CRUDDING +CRUDDY +CRUDE +CRUDELY +CRUDENESS +CRUDENESSES +CRUDER +CRUDES +CRUDEST +CRUDITES +CRUDITIES +CRUDITY +CRUDS +CRUEL +CRUELER +CRUELEST +CRUELLER +CRUELLEST +CRUELLY +CRUELNESS +CRUELNESSES +CRUELTIES +CRUELTY +CRUET +CRUETS +CRUISE +CRUISED +CRUISER +CRUISERS +CRUISES +CRUISING +CRUISINGS +CRULLER +CRULLERS +CRUMB +CRUMBED +CRUMBER +CRUMBERS +CRUMBIER +CRUMBIEST +CRUMBING +CRUMBLE +CRUMBLED +CRUMBLES +CRUMBLIER +CRUMBLIEST +CRUMBLINESS +CRUMBLINESSES +CRUMBLING +CRUMBLINGS +CRUMBLY +CRUMBS +CRUMBUM +CRUMBUMS +CRUMBY +CRUMHORN +CRUMHORNS +CRUMMIE +CRUMMIER +CRUMMIES +CRUMMIEST +CRUMMINESS +CRUMMINESSES +CRUMMY +CRUMP +CRUMPED +CRUMPET +CRUMPETS +CRUMPING +CRUMPLE +CRUMPLED +CRUMPLES +CRUMPLIER +CRUMPLIEST +CRUMPLING +CRUMPLY +CRUMPS +CRUNCH +CRUNCHABLE +CRUNCHED +CRUNCHER +CRUNCHERS +CRUNCHES +CRUNCHIER +CRUNCHIEST +CRUNCHILY +CRUNCHINESS +CRUNCHINESSES +CRUNCHING +CRUNCHY +CRUNODAL +CRUNODE +CRUNODES +CRUOR +CRUORS +CRUPPER +CRUPPERS +CRURA +CRURAL +CRUS +CRUSADE +CRUSADED +CRUSADER +CRUSADERS +CRUSADES +CRUSADING +CRUSADO +CRUSADOES +CRUSADOS +CRUSE +CRUSES +CRUSET +CRUSETS +CRUSH +CRUSHABLE +CRUSHED +CRUSHER +CRUSHERS +CRUSHES +CRUSHING +CRUSHINGLY +CRUSHPROOF +CRUSILY +CRUST +CRUSTACEA +CRUSTACEAN +CRUSTACEANS +CRUSTACEOUS +CRUSTAL +CRUSTED +CRUSTIER +CRUSTIEST +CRUSTILY +CRUSTINESS +CRUSTINESSES +CRUSTING +CRUSTLESS +CRUSTOSE +CRUSTS +CRUSTY +CRUTCH +CRUTCHED +CRUTCHES +CRUTCHING +CRUX +CRUXES +CRUZADO +CRUZADOES +CRUZADOS +CRUZEIRO +CRUZEIROS +CRWTH +CRWTHS +CRY +CRYBABIES +CRYBABY +CRYING +CRYINGLY +CRYOBANK +CRYOBANKS +CRYOBIOLOGICAL +CRYOBIOLOGIES +CRYOBIOLOGIST +CRYOBIOLOGISTS +CRYOBIOLOGY +CRYOGEN +CRYOGENIC +CRYOGENICALLY +CRYOGENICS +CRYOGENIES +CRYOGENS +CRYOGENY +CRYOLITE +CRYOLITES +CRYOMETER +CRYOMETERS +CRYONIC +CRYONICS +CRYOPHILIC +CRYOPHYTE +CRYOPHYTES +CRYOPRESERVE +CRYOPRESERVED +CRYOPRESERVES +CRYOPRESERVING +CRYOPROBE +CRYOPROBES +CRYOPROTECTANT +CRYOPROTECTANTS +CRYOPROTECTIVE +CRYOSCOPE +CRYOSCOPES +CRYOSCOPIC +CRYOSCOPIES +CRYOSCOPY +CRYOSTAT +CRYOSTATIC +CRYOSTATS +CRYOSURGEON +CRYOSURGEONS +CRYOSURGERIES +CRYOSURGERY +CRYOSURGICAL +CRYOTHERAPIES +CRYOTHERAPY +CRYOTRON +CRYOTRONS +CRYPT +CRYPTAL +CRYPTANALYSES +CRYPTANALYSIS +CRYPTANALYST +CRYPTANALYSTS +CRYPTANALYTIC +CRYPTANALYTICAL +CRYPTARITHM +CRYPTARITHMS +CRYPTIC +CRYPTICAL +CRYPTICALLY +CRYPTO +CRYPTOCOCCAL +CRYPTOCOCCI +CRYPTOCOCCOSES +CRYPTOCOCCOSIS +CRYPTOCOCCUS +CRYPTOGAM +CRYPTOGAMIC +CRYPTOGAMOUS +CRYPTOGAMS +CRYPTOGENIC +CRYPTOGRAM +CRYPTOGRAMS +CRYPTOGRAPH +CRYPTOGRAPHER +CRYPTOGRAPHERS +CRYPTOGRAPHIC +CRYPTOGRAPHIES +CRYPTOGRAPHS +CRYPTOGRAPHY +CRYPTOLOGIC +CRYPTOLOGICAL +CRYPTOLOGIES +CRYPTOLOGIST +CRYPTOLOGISTS +CRYPTOLOGY +CRYPTOMERIA +CRYPTOMERIAS +CRYPTONYM +CRYPTONYMS +CRYPTORCHID +CRYPTORCHIDISM +CRYPTORCHIDISMS +CRYPTORCHIDS +CRYPTORCHISM +CRYPTORCHISMS +CRYPTOS +CRYPTOSPORIDIA +CRYPTOSPORIDIUM +CRYPTOZOOLOGIES +CRYPTOZOOLOGIST +CRYPTOZOOLOGY +CRYPTS +CRYSTAL +CRYSTALIZE +CRYSTALIZED +CRYSTALIZES +CRYSTALIZING +CRYSTALLINE +CRYSTALLINITIES +CRYSTALLINITY +CRYSTALLISE +CRYSTALLISED +CRYSTALLISES +CRYSTALLISING +CRYSTALLITE +CRYSTALLITES +CRYSTALLIZABLE +CRYSTALLIZATION +CRYSTALLIZE +CRYSTALLIZED +CRYSTALLIZER +CRYSTALLIZERS +CRYSTALLIZES +CRYSTALLIZING +CRYSTALLOGRAPHY +CRYSTALLOID +CRYSTALLOIDAL +CRYSTALLOIDS +CRYSTALS +CTENIDIA +CTENIDIUM +CTENOID +CTENOPHORAN +CTENOPHORANS +CTENOPHORE +CTENOPHORES +CUADRILLA +CUADRILLAS +CUATRO +CUATROS +CUB +CUBAGE +CUBAGES +CUBANELLE +CUBANELLES +CUBATURE +CUBATURES +CUBBIES +CUBBISH +CUBBY +CUBBYHOLE +CUBBYHOLES +CUBE +CUBEB +CUBEBS +CUBED +CUBER +CUBERS +CUBES +CUBIC +CUBICAL +CUBICALLY +CUBICITIES +CUBICITY +CUBICLE +CUBICLES +CUBICLY +CUBICS +CUBICULA +CUBICULUM +CUBIFORM +CUBING +CUBISM +CUBISMS +CUBIST +CUBISTIC +CUBISTS +CUBIT +CUBITAL +CUBITI +CUBITS +CUBITUS +CUBOID +CUBOIDAL +CUBOIDS +CUBS +CUCKOLD +CUCKOLDED +CUCKOLDING +CUCKOLDRIES +CUCKOLDRY +CUCKOLDS +CUCKOO +CUCKOOED +CUCKOOFLOWER +CUCKOOFLOWERS +CUCKOOING +CUCKOOPINT +CUCKOOPINTS +CUCKOOS +CUCULLATE +CUCUMBER +CUCUMBERS +CUCURBIT +CUCURBITS +CUD +CUDBEAR +CUDBEARS +CUDDIE +CUDDIES +CUDDLE +CUDDLED +CUDDLER +CUDDLERS +CUDDLES +CUDDLESOME +CUDDLIER +CUDDLIEST +CUDDLING +CUDDLY +CUDDY +CUDGEL +CUDGELED +CUDGELER +CUDGELERS +CUDGELING +CUDGELLED +CUDGELLING +CUDGELS +CUDS +CUDWEED +CUDWEEDS +CUE +CUED +CUEING +CUES +CUESTA +CUESTAS +CUFF +CUFFED +CUFFING +CUFFLESS +CUFFLINK +CUFFLINKS +CUFFS +CUIF +CUIFS +CUING +CUIRASS +CUIRASSED +CUIRASSES +CUIRASSIER +CUIRASSIERS +CUIRASSING +CUISH +CUISHES +CUISINART +CUISINARTS +CUISINE +CUISINES +CUISSE +CUISSES +CUITTLE +CUITTLED +CUITTLES +CUITTLING +CUKE +CUKES +CULCH +CULCHES +CULET +CULETS +CULEX +CULEXES +CULICES +CULICID +CULICIDS +CULICINE +CULICINES +CULINARIAN +CULINARIANS +CULINARILY +CULINARY +CULL +CULLAY +CULLAYS +CULLED +CULLENDER +CULLENDERS +CULLER +CULLERS +CULLET +CULLETS +CULLIED +CULLIES +CULLING +CULLION +CULLIONS +CULLIS +CULLISES +CULLS +CULLY +CULLYING +CULM +CULMED +CULMINANT +CULMINATE +CULMINATED +CULMINATES +CULMINATING +CULMINATION +CULMINATIONS +CULMING +CULMS +CULOTTE +CULOTTES +CULPA +CULPABILITIES +CULPABILITY +CULPABLE +CULPABLENESS +CULPABLENESSES +CULPABLY +CULPAE +CULPRIT +CULPRITS +CULT +CULTCH +CULTCHES +CULTI +CULTIC +CULTIGEN +CULTIGENS +CULTISH +CULTISHLY +CULTISHNESS +CULTISHNESSES +CULTISM +CULTISMS +CULTIST +CULTISTS +CULTIVABILITIES +CULTIVABILITY +CULTIVABLE +CULTIVAR +CULTIVARS +CULTIVATABLE +CULTIVATE +CULTIVATED +CULTIVATES +CULTIVATING +CULTIVATION +CULTIVATIONS +CULTIVATOR +CULTIVATORS +CULTLIKE +CULTRATE +CULTRATED +CULTS +CULTURAL +CULTURALLY +CULTURATI +CULTURE +CULTURED +CULTURES +CULTURING +CULTURIST +CULTURISTS +CULTUS +CULTUSES +CULVER +CULVERIN +CULVERINS +CULVERS +CULVERT +CULVERTS +CUM +CUMARIN +CUMARINS +CUMBER +CUMBERBUND +CUMBERBUNDS +CUMBERED +CUMBERER +CUMBERERS +CUMBERING +CUMBERS +CUMBERSOME +CUMBERSOMELY +CUMBERSOMENESS +CUMBIA +CUMBIAS +CUMBRANCE +CUMBRANCES +CUMBROUS +CUMBROUSLY +CUMBROUSNESS +CUMBROUSNESSES +CUMIN +CUMINS +CUMMER +CUMMERBUND +CUMMERBUNDS +CUMMERS +CUMMIN +CUMMINS +CUMQUAT +CUMQUATS +CUMSHAW +CUMSHAWS +CUMULATE +CUMULATED +CUMULATES +CUMULATING +CUMULATION +CUMULATIONS +CUMULATIVE +CUMULATIVELY +CUMULATIVENESS +CUMULI +CUMULIFORM +CUMULONIMBI +CUMULONIMBUS +CUMULONIMBUSES +CUMULOUS +CUMULUS +CUNCTATION +CUNCTATIONS +CUNCTATIVE +CUNCTATOR +CUNCTATORS +CUNDUM +CUNDUMS +CUNEAL +CUNEATE +CUNEATED +CUNEATELY +CUNEATIC +CUNEIFORM +CUNEIFORMS +CUNIFORM +CUNIFORMS +CUNNER +CUNNERS +CUNNILINCTUS +CUNNILINCTUSES +CUNNILINGUS +CUNNILINGUSES +CUNNING +CUNNINGER +CUNNINGEST +CUNNINGLY +CUNNINGNESS +CUNNINGNESSES +CUNNINGS +CUNT +CUNTS +CUP +CUPBEARER +CUPBEARERS +CUPBOARD +CUPBOARDS +CUPCAKE +CUPCAKES +CUPEL +CUPELED +CUPELER +CUPELERS +CUPELING +CUPELLATION +CUPELLATIONS +CUPELLED +CUPELLER +CUPELLERS +CUPELLING +CUPELS +CUPFERRON +CUPFERRONS +CUPFUL +CUPFULS +CUPID +CUPIDITIES +CUPIDITY +CUPIDS +CUPLIKE +CUPOLA +CUPOLAED +CUPOLAING +CUPOLAS +CUPPA +CUPPAS +CUPPED +CUPPER +CUPPERS +CUPPIER +CUPPIEST +CUPPING +CUPPINGS +CUPPY +CUPREOUS +CUPRIC +CUPRIFEROUS +CUPRITE +CUPRITES +CUPRONICKEL +CUPRONICKELS +CUPROUS +CUPRUM +CUPRUMS +CUPS +CUPSFUL +CUPULA +CUPULAE +CUPULAR +CUPULATE +CUPULE +CUPULES +CUR +CURABILITIES +CURABILITY +CURABLE +CURABLENESS +CURABLENESSES +CURABLY +CURACAO +CURACAOS +CURACIES +CURACOA +CURACOAS +CURACY +CURAGH +CURAGHS +CURANDERA +CURANDERAS +CURANDERO +CURANDEROS +CURARA +CURARAS +CURARE +CURARES +CURARI +CURARINE +CURARINES +CURARIS +CURARIZATION +CURARIZATIONS +CURARIZE +CURARIZED +CURARIZES +CURARIZING +CURASSOW +CURASSOWS +CURATE +CURATED +CURATES +CURATING +CURATIVE +CURATIVELY +CURATIVES +CURATOR +CURATORIAL +CURATORS +CURATORSHIP +CURATORSHIPS +CURB +CURBABLE +CURBED +CURBER +CURBERS +CURBING +CURBINGS +CURBS +CURBSIDE +CURBSIDES +CURBSTONE +CURBSTONES +CURCH +CURCHES +CURCULIO +CURCULIOS +CURCUMA +CURCUMAS +CURD +CURDED +CURDIER +CURDIEST +CURDING +CURDLE +CURDLED +CURDLER +CURDLERS +CURDLES +CURDLING +CURDS +CURDY +CURE +CURED +CURELESS +CURER +CURERS +CURES +CURET +CURETS +CURETTAGE +CURETTAGES +CURETTE +CURETTED +CURETTEMENT +CURETTEMENTS +CURETTES +CURETTING +CURF +CURFEW +CURFEWS +CURFS +CURIA +CURIAE +CURIAL +CURIE +CURIES +CURING +CURIO +CURIOS +CURIOSA +CURIOSITIES +CURIOSITY +CURIOUS +CURIOUSER +CURIOUSEST +CURIOUSLY +CURIOUSNESS +CURIOUSNESSES +CURITE +CURITES +CURIUM +CURIUMS +CURL +CURLED +CURLER +CURLERS +CURLEW +CURLEWS +CURLICUE +CURLICUED +CURLICUES +CURLICUING +CURLIER +CURLIEST +CURLILY +CURLINESS +CURLINESSES +CURLING +CURLINGS +CURLPAPER +CURLPAPERS +CURLS +CURLY +CURLYCUE +CURLYCUES +CURMUDGEON +CURMUDGEONLY +CURMUDGEONS +CURN +CURNS +CURR +CURRACH +CURRACHS +CURRAGH +CURRAGHS +CURRAJONG +CURRAJONGS +CURRAN +CURRANS +CURRANT +CURRANTS +CURRED +CURREJONG +CURREJONGS +CURRENCIES +CURRENCY +CURRENT +CURRENTLY +CURRENTNESS +CURRENTNESSES +CURRENTS +CURRICLE +CURRICLES +CURRICULA +CURRICULAR +CURRICULUM +CURRICULUMS +CURRIE +CURRIED +CURRIER +CURRIERIES +CURRIERS +CURRIERY +CURRIES +CURRIJONG +CURRIJONGS +CURRING +CURRISH +CURRISHLY +CURRS +CURRY +CURRYCOMB +CURRYCOMBED +CURRYCOMBING +CURRYCOMBS +CURRYING +CURS +CURSE +CURSED +CURSEDER +CURSEDEST +CURSEDLY +CURSEDNESS +CURSEDNESSES +CURSER +CURSERS +CURSES +CURSING +CURSIVE +CURSIVELY +CURSIVENESS +CURSIVENESSES +CURSIVES +CURSOR +CURSORIAL +CURSORILY +CURSORINESS +CURSORINESSES +CURSORS +CURSORY +CURST +CURT +CURTAIL +CURTAILED +CURTAILER +CURTAILERS +CURTAILING +CURTAILMENT +CURTAILMENTS +CURTAILS +CURTAIN +CURTAINED +CURTAINING +CURTAINLESS +CURTAINS +CURTAL +CURTALAX +CURTALAXES +CURTALS +CURTATE +CURTER +CURTESIES +CURTEST +CURTESY +CURTILAGE +CURTILAGES +CURTLY +CURTNESS +CURTNESSES +CURTSEY +CURTSEYED +CURTSEYING +CURTSEYS +CURTSIED +CURTSIES +CURTSY +CURTSYING +CURULE +CURVACEOUS +CURVACIOUS +CURVATURE +CURVATURES +CURVE +CURVEBALL +CURVEBALLED +CURVEBALLING +CURVEBALLS +CURVED +CURVEDLY +CURVES +CURVET +CURVETED +CURVETING +CURVETS +CURVETTED +CURVETTING +CURVEY +CURVIER +CURVIEST +CURVILINEAR +CURVILINEARITY +CURVING +CURVY +CUSCUS +CUSCUSES +CUSEC +CUSECS +CUSHAT +CUSHATS +CUSHAW +CUSHAWS +CUSHIER +CUSHIEST +CUSHILY +CUSHINESS +CUSHINESSES +CUSHION +CUSHIONED +CUSHIONING +CUSHIONLESS +CUSHIONS +CUSHIONY +CUSHY +CUSK +CUSKS +CUSP +CUSPAL +CUSPATE +CUSPATED +CUSPED +CUSPID +CUSPIDAL +CUSPIDATE +CUSPIDATION +CUSPIDATIONS +CUSPIDES +CUSPIDOR +CUSPIDORS +CUSPIDS +CUSPIS +CUSPS +CUSS +CUSSED +CUSSEDLY +CUSSEDNESS +CUSSEDNESSES +CUSSER +CUSSERS +CUSSES +CUSSING +CUSSO +CUSSOS +CUSSWORD +CUSSWORDS +CUSTARD +CUSTARDS +CUSTARDY +CUSTODES +CUSTODIAL +CUSTODIAN +CUSTODIANS +CUSTODIANSHIP +CUSTODIANSHIPS +CUSTODIES +CUSTODY +CUSTOM +CUSTOMARIES +CUSTOMARILY +CUSTOMARINESS +CUSTOMARINESSES +CUSTOMARY +CUSTOMER +CUSTOMERS +CUSTOMHOUSE +CUSTOMHOUSES +CUSTOMISE +CUSTOMISED +CUSTOMISES +CUSTOMISING +CUSTOMIZE +CUSTOMIZED +CUSTOMIZER +CUSTOMIZERS +CUSTOMIZES +CUSTOMIZING +CUSTOMS +CUSTOMSHOUSE +CUSTOMSHOUSES +CUSTOS +CUSTUMAL +CUSTUMALS +CUT +CUTABILITIES +CUTABILITY +CUTANEOUS +CUTANEOUSLY +CUTAWAY +CUTAWAYS +CUTBACK +CUTBACKS +CUTBANK +CUTBANKS +CUTCH +CUTCHERIES +CUTCHERY +CUTCHES +CUTDOWN +CUTDOWNS +CUTE +CUTELY +CUTENESS +CUTENESSES +CUTER +CUTES +CUTESIE +CUTESIER +CUTESIEST +CUTEST +CUTESY +CUTEY +CUTEYS +CUTGRASS +CUTGRASSES +CUTICLE +CUTICLES +CUTICULA +CUTICULAE +CUTICULAR +CUTIE +CUTIES +CUTIN +CUTINISE +CUTINISED +CUTINISES +CUTINISING +CUTINIZE +CUTINIZED +CUTINIZES +CUTINIZING +CUTINS +CUTIS +CUTISES +CUTLAS +CUTLASES +CUTLASS +CUTLASSES +CUTLER +CUTLERIES +CUTLERS +CUTLERY +CUTLET +CUTLETS +CUTLINE +CUTLINES +CUTOFF +CUTOFFS +CUTOUT +CUTOUTS +CUTOVER +CUTOVERS +CUTPURSE +CUTPURSES +CUTS +CUTTABLE +CUTTAGE +CUTTAGES +CUTTER +CUTTERS +CUTTHROAT +CUTTHROATS +CUTTIES +CUTTING +CUTTINGLY +CUTTINGS +CUTTLE +CUTTLEBONE +CUTTLEBONES +CUTTLED +CUTTLEFISH +CUTTLEFISHES +CUTTLES +CUTTLING +CUTTY +CUTUP +CUTUPS +CUTWATER +CUTWATERS +CUTWORK +CUTWORKS +CUTWORM +CUTWORMS +CUVEE +CUVEES +CUVETTE +CUVETTES +CWM +CWMS +CYAN +CYANAMID +CYANAMIDE +CYANAMIDES +CYANAMIDS +CYANATE +CYANATES +CYANIC +CYANID +CYANIDE +CYANIDED +CYANIDES +CYANIDING +CYANIDS +CYANIN +CYANINE +CYANINES +CYANINS +CYANITE +CYANITES +CYANITIC +CYANO +CYANOACRYLATE +CYANOACRYLATES +CYANOBACTERIA +CYANOBACTERIUM +CYANOCOBALAMIN +CYANOCOBALAMINE +CYANOCOBALAMINS +CYANOETHYLATE +CYANOETHYLATED +CYANOETHYLATES +CYANOETHYLATING +CYANOETHYLATION +CYANOGEN +CYANOGENESES +CYANOGENESIS +CYANOGENETIC +CYANOGENIC +CYANOGENS +CYANOHYDRIN +CYANOHYDRINS +CYANOSED +CYANOSES +CYANOSIS +CYANOTIC +CYANOTYPE +CYANOTYPES +CYANS +CYANURATE +CYANURATES +CYBER +CYBERCAFE +CYBERCAFES +CYBERCAST +CYBERCASTS +CYBERNATE +CYBERNATED +CYBERNATES +CYBERNATING +CYBERNATION +CYBERNATIONS +CYBERNAUT +CYBERNAUTS +CYBERNETIC +CYBERNETICAL +CYBERNETICALLY +CYBERNETICIAN +CYBERNETICIANS +CYBERNETICIST +CYBERNETICISTS +CYBERNETICS +CYBERPORN +CYBERPORNS +CYBERPUNK +CYBERPUNKS +CYBERSEX +CYBERSEXES +CYBERSPACE +CYBERSPACES +CYBORG +CYBORGS +CYBRARIAN +CYBRARIANS +CYCAD +CYCADEOID +CYCADEOIDS +CYCADOPHYTE +CYCADOPHYTES +CYCADS +CYCAS +CYCASES +CYCASIN +CYCASINS +CYCLAMATE +CYCLAMATES +CYCLAMEN +CYCLAMENS +CYCLASE +CYCLASES +CYCLAZOCINE +CYCLAZOCINES +CYCLE +CYCLECAR +CYCLECARS +CYCLED +CYCLER +CYCLERIES +CYCLERS +CYCLERY +CYCLES +CYCLEWAY +CYCLEWAYS +CYCLIC +CYCLICAL +CYCLICALITIES +CYCLICALITY +CYCLICALLY +CYCLICALS +CYCLICITIES +CYCLICITY +CYCLICLY +CYCLIN +CYCLING +CYCLINGS +CYCLINS +CYCLIST +CYCLISTS +CYCLITOL +CYCLITOLS +CYCLIZATION +CYCLIZATIONS +CYCLIZE +CYCLIZED +CYCLIZES +CYCLIZINE +CYCLIZINES +CYCLIZING +CYCLO +CYCLOADDITION +CYCLOADDITIONS +CYCLOALIPHATIC +CYCLODEXTRIN +CYCLODEXTRINS +CYCLODIENE +CYCLODIENES +CYCLOGENESES +CYCLOGENESIS +CYCLOHEXANE +CYCLOHEXANES +CYCLOHEXANONE +CYCLOHEXANONES +CYCLOHEXIMIDE +CYCLOHEXIMIDES +CYCLOHEXYLAMINE +CYCLOID +CYCLOIDAL +CYCLOIDS +CYCLOMETER +CYCLOMETERS +CYCLONAL +CYCLONE +CYCLONES +CYCLONIC +CYCLONICALLY +CYCLONITE +CYCLONITES +CYCLOOLEFIN +CYCLOOLEFINIC +CYCLOOLEFINS +CYCLOPAEDIA +CYCLOPAEDIAS +CYCLOPARAFFIN +CYCLOPARAFFINS +CYCLOPEAN +CYCLOPEDIA +CYCLOPEDIAS +CYCLOPEDIC +CYCLOPES +CYCLOPROPANE +CYCLOPROPANES +CYCLOPS +CYCLORAMA +CYCLORAMAS +CYCLORAMIC +CYCLOS +CYCLOSERINE +CYCLOSERINES +CYCLOSES +CYCLOSIS +CYCLOSPORINE +CYCLOSPORINES +CYCLOSTOME +CYCLOSTOMES +CYCLOSTYLE +CYCLOSTYLED +CYCLOSTYLES +CYCLOSTYLING +CYCLOTHYMIA +CYCLOTHYMIAS +CYCLOTHYMIC +CYCLOTOMIC +CYCLOTRON +CYCLOTRONS +CYDER +CYDERS +CYESES +CYESIS +CYGNET +CYGNETS +CYLICES +CYLINDER +CYLINDERED +CYLINDERING +CYLINDERS +CYLINDRIC +CYLINDRICAL +CYLINDRICALLY +CYLIX +CYMA +CYMAE +CYMAR +CYMARS +CYMAS +CYMATIA +CYMATIUM +CYMBAL +CYMBALEER +CYMBALEERS +CYMBALER +CYMBALERS +CYMBALIST +CYMBALISTS +CYMBALOM +CYMBALOMS +CYMBALS +CYMBIDIA +CYMBIDIUM +CYMBIDIUMS +CYMBLING +CYMBLINGS +CYME +CYMENE +CYMENES +CYMES +CYMLIN +CYMLING +CYMLINGS +CYMLINS +CYMOGENE +CYMOGENES +CYMOGRAPH +CYMOGRAPHS +CYMOID +CYMOL +CYMOLS +CYMOPHANE +CYMOPHANES +CYMOSE +CYMOSELY +CYMOUS +CYNIC +CYNICAL +CYNICALLY +CYNICISM +CYNICISMS +CYNICS +CYNOSURAL +CYNOSURE +CYNOSURES +CYPHER +CYPHERED +CYPHERING +CYPHERS +CYPRES +CYPRESES +CYPRESS +CYPRESSES +CYPRIAN +CYPRIANS +CYPRINID +CYPRINIDS +CYPRINOID +CYPRINOIDS +CYPRIPEDIUM +CYPRIPEDIUMS +CYPROHEPTADINE +CYPROHEPTADINES +CYPROTERONE +CYPROTERONES +CYPRUS +CYPRUSES +CYPSELA +CYPSELAE +CYST +CYSTEAMINE +CYSTEAMINES +CYSTEIN +CYSTEINE +CYSTEINES +CYSTEINIC +CYSTEINS +CYSTIC +CYSTICERCI +CYSTICERCOID +CYSTICERCOIDS +CYSTICERCOSES +CYSTICERCOSIS +CYSTICERCUS +CYSTINE +CYSTINES +CYSTINURIA +CYSTINURIAS +CYSTITIDES +CYSTITIS +CYSTOCARP +CYSTOCARPS +CYSTOCELE +CYSTOCELES +CYSTOID +CYSTOIDS +CYSTOLITH +CYSTOLITHS +CYSTOSCOPE +CYSTOSCOPES +CYSTOSCOPIC +CYSTOSCOPIES +CYSTOSCOPY +CYSTOTOMIES +CYSTOTOMY +CYSTS +CYTASTER +CYTASTERS +CYTIDINE +CYTIDINES +CYTOCHALASIN +CYTOCHALASINS +CYTOCHEMICAL +CYTOCHEMISTRIES +CYTOCHEMISTRY +CYTOCHROME +CYTOCHROMES +CYTOGENETIC +CYTOGENETICAL +CYTOGENETICALLY +CYTOGENETICIST +CYTOGENETICISTS +CYTOGENETICS +CYTOGENIES +CYTOGENY +CYTOKINE +CYTOKINES +CYTOKINESES +CYTOKINESIS +CYTOKINETIC +CYTOKININ +CYTOKININS +CYTOLOGIC +CYTOLOGICAL +CYTOLOGICALLY +CYTOLOGIES +CYTOLOGIST +CYTOLOGISTS +CYTOLOGY +CYTOLYSES +CYTOLYSIN +CYTOLYSINS +CYTOLYSIS +CYTOLYTIC +CYTOMEGALIC +CYTOMEGALOVIRUS +CYTOMEMBRANE +CYTOMEMBRANES +CYTON +CYTONS +CYTOPATHIC +CYTOPATHOGENIC +CYTOPHILIC +CYTOPHOTOMETRIC +CYTOPHOTOMETRY +CYTOPLASM +CYTOPLASMIC +CYTOPLASMICALLY +CYTOPLASMS +CYTOPLAST +CYTOPLASTS +CYTOSINE +CYTOSINES +CYTOSKELETAL +CYTOSKELETON +CYTOSKELETONS +CYTOSOL +CYTOSOLIC +CYTOSOLS +CYTOSTATIC +CYTOSTATICALLY +CYTOSTATICS +CYTOTAXONOMIC +CYTOTAXONOMIES +CYTOTAXONOMY +CYTOTECHNOLOGY +CYTOTOXIC +CYTOTOXICITIES +CYTOTOXICITY +CYTOTOXIN +CYTOTOXINS +CZAR +CZARDAS +CZARDASES +CZARDOM +CZARDOMS +CZAREVITCH +CZAREVITCHES +CZAREVNA +CZAREVNAS +CZARINA +CZARINAS +CZARISM +CZARISMS +CZARIST +CZARISTS +CZARITZA +CZARITZAS +CZARS +DAB +DABBED +DABBER +DABBERS +DABBING +DABBLE +DABBLED +DABBLER +DABBLERS +DABBLES +DABBLING +DABBLINGS +DABCHICK +DABCHICKS +DABS +DABSTER +DABSTERS +DACE +DACES +DACHA +DACHAS +DACHSHUND +DACHSHUNDS +DACITE +DACITES +DACKER +DACKERED +DACKERING +DACKERS +DACOIT +DACOITIES +DACOITS +DACOITY +DACQUOISE +DACQUOISES +DACRON +DACRONS +DACTYL +DACTYLI +DACTYLIC +DACTYLICS +DACTYLOLOGIES +DACTYLOLOGY +DACTYLS +DACTYLUS +DAD +DADA +DADAISM +DADAISMS +DADAIST +DADAISTIC +DADAISTS +DADAS +DADDIES +DADDLE +DADDLED +DADDLES +DADDLING +DADDY +DADGUM +DADO +DADOED +DADOES +DADOING +DADOS +DADS +DAEDAL +DAEDALEAN +DAEDALIAN +DAEMON +DAEMONES +DAEMONIC +DAEMONS +DAFF +DAFFED +DAFFIER +DAFFIEST +DAFFILY +DAFFINESS +DAFFINESSES +DAFFING +DAFFODIL +DAFFODILS +DAFFS +DAFFY +DAFT +DAFTER +DAFTEST +DAFTLY +DAFTNESS +DAFTNESSES +DAG +DAGGA +DAGGAS +DAGGER +DAGGERED +DAGGERING +DAGGERLIKE +DAGGERS +DAGGLE +DAGGLED +DAGGLES +DAGGLING +DAGLOCK +DAGLOCKS +DAGO +DAGOBA +DAGOBAS +DAGOES +DAGOS +DAGS +DAGUERREOTYPE +DAGUERREOTYPED +DAGUERREOTYPES +DAGUERREOTYPIES +DAGUERREOTYPING +DAGUERREOTYPIST +DAGUERREOTYPY +DAGWOOD +DAGWOODS +DAH +DAHABEAH +DAHABEAHS +DAHABIAH +DAHABIAHS +DAHABIEH +DAHABIEHS +DAHABIYA +DAHABIYAS +DAHL +DAHLIA +DAHLIAS +DAHLS +DAHOON +DAHOONS +DAHS +DAIDZEIN +DAIDZEINS +DAIKER +DAIKERED +DAIKERING +DAIKERS +DAIKON +DAIKONS +DAILIES +DAILINESS +DAILINESSES +DAILY +DAILYNESS +DAILYNESSES +DAIMEN +DAIMIO +DAIMIOS +DAIMON +DAIMONES +DAIMONIC +DAIMONS +DAIMYO +DAIMYOS +DAINTIER +DAINTIES +DAINTIEST +DAINTILY +DAINTINESS +DAINTINESSES +DAINTY +DAIQUIRI +DAIQUIRIS +DAIRIES +DAIRY +DAIRYING +DAIRYINGS +DAIRYMAID +DAIRYMAIDS +DAIRYMAN +DAIRYMEN +DAIS +DAISES +DAISHIKI +DAISHIKIS +DAISIED +DAISIES +DAISY +DAK +DAKERHEN +DAKERHENS +DAKOIT +DAKOITIES +DAKOITS +DAKOITY +DAKS +DAL +DALAPON +DALAPONS +DALASI +DALASIS +DALE +DALEDH +DALEDHS +DALES +DALESMAN +DALESMEN +DALETH +DALETHS +DALLES +DALLIANCE +DALLIANCES +DALLIED +DALLIER +DALLIERS +DALLIES +DALLY +DALLYING +DALMATIAN +DALMATIANS +DALMATIC +DALMATICS +DALS +DALTON +DALTONIAN +DALTONIC +DALTONISM +DALTONISMS +DALTONS +DAM +DAMAGE +DAMAGEABILITIES +DAMAGEABILITY +DAMAGED +DAMAGER +DAMAGERS +DAMAGES +DAMAGING +DAMAGINGLY +DAMAN +DAMANS +DAMAR +DAMARS +DAMASCENE +DAMASCENED +DAMASCENES +DAMASCENING +DAMASK +DAMASKED +DAMASKEEN +DAMASKEENED +DAMASKEENING +DAMASKEENS +DAMASKING +DAMASKS +DAME +DAMES +DAMEWORT +DAMEWORTS +DAMIANA +DAMIANAS +DAMMAR +DAMMARS +DAMMED +DAMMER +DAMMERS +DAMMING +DAMMIT +DAMN +DAMNABLE +DAMNABLENESS +DAMNABLENESSES +DAMNABLY +DAMNATION +DAMNATIONS +DAMNATORY +DAMNDEST +DAMNDESTS +DAMNED +DAMNEDER +DAMNEDEST +DAMNEDESTS +DAMNER +DAMNERS +DAMNIFIED +DAMNIFIES +DAMNIFY +DAMNIFYING +DAMNING +DAMNINGLY +DAMNS +DAMOSEL +DAMOSELS +DAMOZEL +DAMOZELS +DAMP +DAMPED +DAMPEN +DAMPENED +DAMPENER +DAMPENERS +DAMPENING +DAMPENS +DAMPER +DAMPERS +DAMPEST +DAMPING +DAMPINGS +DAMPISH +DAMPLY +DAMPNESS +DAMPNESSES +DAMPS +DAMS +DAMSEL +DAMSELFISH +DAMSELFISHES +DAMSELFLIES +DAMSELFLY +DAMSELS +DAMSON +DAMSONS +DAN +DANAZOL +DANAZOLS +DANCE +DANCEABLE +DANCED +DANCER +DANCERS +DANCES +DANCING +DANDELION +DANDELIONS +DANDER +DANDERED +DANDERING +DANDERS +DANDIACAL +DANDIER +DANDIES +DANDIEST +DANDIFICATION +DANDIFICATIONS +DANDIFIED +DANDIFIES +DANDIFY +DANDIFYING +DANDILY +DANDLE +DANDLED +DANDLER +DANDLERS +DANDLES +DANDLING +DANDRIFF +DANDRIFFS +DANDRUFF +DANDRUFFS +DANDRUFFY +DANDY +DANDYISH +DANDYISHLY +DANDYISM +DANDYISMS +DANEGELD +DANEGELDS +DANEGELT +DANEGELTS +DANEWEED +DANEWEEDS +DANEWORT +DANEWORTS +DANG +DANGED +DANGER +DANGERED +DANGERING +DANGEROUS +DANGEROUSLY +DANGEROUSNESS +DANGEROUSNESSES +DANGERS +DANGING +DANGLE +DANGLED +DANGLER +DANGLERS +DANGLES +DANGLIER +DANGLIEST +DANGLING +DANGLY +DANGS +DANIO +DANIOS +DANISH +DANISHES +DANK +DANKER +DANKEST +DANKLY +DANKNESS +DANKNESSES +DANS +DANSEUR +DANSEURS +DANSEUSE +DANSEUSES +DAP +DAPHNE +DAPHNES +DAPHNIA +DAPHNIAS +DAPPED +DAPPER +DAPPERER +DAPPEREST +DAPPERLY +DAPPERNESS +DAPPERNESSES +DAPPING +DAPPLE +DAPPLED +DAPPLES +DAPPLING +DAPS +DAPSONE +DAPSONES +DARB +DARBAR +DARBARS +DARBIES +DARBS +DARE +DARED +DAREDEVIL +DAREDEVILRIES +DAREDEVILRY +DAREDEVILS +DAREDEVILTRIES +DAREDEVILTRY +DAREFUL +DARER +DARERS +DARES +DARESAY +DARIC +DARICS +DARING +DARINGLY +DARINGNESS +DARINGNESSES +DARINGS +DARIOLE +DARIOLES +DARK +DARKED +DARKEN +DARKENED +DARKENER +DARKENERS +DARKENING +DARKENS +DARKER +DARKEST +DARKEY +DARKEYS +DARKIE +DARKIES +DARKING +DARKISH +DARKLE +DARKLED +DARKLES +DARKLIER +DARKLIEST +DARKLING +DARKLINGS +DARKLY +DARKNESS +DARKNESSES +DARKROOM +DARKROOMS +DARKS +DARKSOME +DARKY +DARLING +DARLINGLY +DARLINGNESS +DARLINGNESSES +DARLINGS +DARN +DARNATION +DARNATIONS +DARNDEST +DARNDESTS +DARNED +DARNEDER +DARNEDEST +DARNEDESTS +DARNEL +DARNELS +DARNER +DARNERS +DARNING +DARNINGS +DARNS +DARSHAN +DARSHANS +DART +DARTBOARD +DARTBOARDS +DARTED +DARTER +DARTERS +DARTING +DARTINGLY +DARTLE +DARTLED +DARTLES +DARTLING +DARTS +DASH +DASHBOARD +DASHBOARDS +DASHED +DASHEEN +DASHEENS +DASHER +DASHERS +DASHES +DASHI +DASHIER +DASHIEST +DASHIKI +DASHIKIS +DASHING +DASHINGLY +DASHIS +DASHPOT +DASHPOTS +DASHY +DASSIE +DASSIES +DASTARD +DASTARDLINESS +DASTARDLINESSES +DASTARDLY +DASTARDS +DASYMETER +DASYMETERS +DASYURE +DASYURES +DATA +DATABANK +DATABANKS +DATABASE +DATABASED +DATABASES +DATABASING +DATABLE +DATARIES +DATARY +DATCHA +DATCHAS +DATE +DATEABLE +DATEBOOK +DATEBOOKS +DATED +DATEDLY +DATEDNESS +DATEDNESSES +DATELESS +DATELINE +DATELINED +DATELINES +DATELINING +DATER +DATERS +DATES +DATING +DATIVAL +DATIVE +DATIVELY +DATIVES +DATO +DATOS +DATTO +DATTOS +DATUM +DATUMS +DATURA +DATURAS +DATURIC +DAUB +DAUBE +DAUBED +DAUBER +DAUBERIES +DAUBERS +DAUBERY +DAUBES +DAUBIER +DAUBIEST +DAUBING +DAUBINGLY +DAUBRIES +DAUBRY +DAUBS +DAUBY +DAUGHTER +DAUGHTERLESS +DAUGHTERS +DAUNDER +DAUNDERED +DAUNDERING +DAUNDERS +DAUNOMYCIN +DAUNOMYCINS +DAUNORUBICIN +DAUNORUBICINS +DAUNT +DAUNTED +DAUNTER +DAUNTERS +DAUNTING +DAUNTINGLY +DAUNTLESS +DAUNTLESSLY +DAUNTLESSNESS +DAUNTLESSNESSES +DAUNTS +DAUPHIN +DAUPHINE +DAUPHINES +DAUPHINS +DAUT +DAUTED +DAUTIE +DAUTIES +DAUTING +DAUTS +DAVEN +DAVENED +DAVENING +DAVENPORT +DAVENPORTS +DAVENS +DAVIES +DAVIT +DAVITS +DAVY +DAW +DAWDLE +DAWDLED +DAWDLER +DAWDLERS +DAWDLES +DAWDLING +DAWED +DAWEN +DAWING +DAWK +DAWKS +DAWN +DAWNED +DAWNING +DAWNLIKE +DAWNS +DAWS +DAWSONITE +DAWSONITES +DAWT +DAWTED +DAWTIE +DAWTIES +DAWTING +DAWTS +DAY +DAYBED +DAYBEDS +DAYBOOK +DAYBOOKS +DAYBREAK +DAYBREAKS +DAYCARE +DAYCARES +DAYDREAM +DAYDREAMED +DAYDREAMER +DAYDREAMERS +DAYDREAMING +DAYDREAMLIKE +DAYDREAMS +DAYDREAMT +DAYDREAMY +DAYFLIES +DAYFLOWER +DAYFLOWERS +DAYFLY +DAYGLOW +DAYGLOWS +DAYLIGHT +DAYLIGHTED +DAYLIGHTING +DAYLIGHTINGS +DAYLIGHTS +DAYLILIES +DAYLILY +DAYLIT +DAYLONG +DAYMARE +DAYMARES +DAYROOM +DAYROOMS +DAYS +DAYSIDE +DAYSIDES +DAYSMAN +DAYSMEN +DAYSPRING +DAYSPRINGS +DAYSTAR +DAYSTARS +DAYTIME +DAYTIMES +DAYWORK +DAYWORKER +DAYWORKERS +DAYWORKS +DAZE +DAZED +DAZEDLY +DAZEDNESS +DAZEDNESSES +DAZES +DAZING +DAZZLE +DAZZLED +DAZZLER +DAZZLERS +DAZZLES +DAZZLING +DAZZLINGLY +DE +DEACIDIFICATION +DEACIDIFIED +DEACIDIFIES +DEACIDIFY +DEACIDIFYING +DEACON +DEACONED +DEACONESS +DEACONESSES +DEACONING +DEACONRIES +DEACONRY +DEACONS +DEACTIVATE +DEACTIVATED +DEACTIVATES +DEACTIVATING +DEACTIVATION +DEACTIVATIONS +DEACTIVATOR +DEACTIVATORS +DEAD +DEADBEAT +DEADBEATS +DEADBOLT +DEADBOLTS +DEADEN +DEADENED +DEADENER +DEADENERS +DEADENING +DEADENINGLY +DEADENINGS +DEADENS +DEADER +DEADEST +DEADEYE +DEADEYES +DEADFALL +DEADFALLS +DEADHEAD +DEADHEADED +DEADHEADING +DEADHEADS +DEADLIER +DEADLIEST +DEADLIFT +DEADLIFTED +DEADLIFTING +DEADLIFTS +DEADLIGHT +DEADLIGHTS +DEADLINE +DEADLINED +DEADLINES +DEADLINESS +DEADLINESSES +DEADLINING +DEADLOCK +DEADLOCKED +DEADLOCKING +DEADLOCKS +DEADLY +DEADMAN +DEADMEN +DEADNESS +DEADNESSES +DEADPAN +DEADPANNED +DEADPANNER +DEADPANNERS +DEADPANNING +DEADPANS +DEADS +DEADWEIGHT +DEADWEIGHTS +DEADWOOD +DEADWOODS +DEAERATE +DEAERATED +DEAERATES +DEAERATING +DEAERATION +DEAERATIONS +DEAERATOR +DEAERATORS +DEAF +DEAFEN +DEAFENED +DEAFENING +DEAFENINGLY +DEAFENINGS +DEAFENS +DEAFER +DEAFEST +DEAFISH +DEAFLY +DEAFNESS +DEAFNESSES +DEAIR +DEAIRED +DEAIRING +DEAIRS +DEAL +DEALATE +DEALATED +DEALATES +DEALATION +DEALATIONS +DEALER +DEALERS +DEALERSHIP +DEALERSHIPS +DEALFISH +DEALFISHES +DEALING +DEALINGS +DEALS +DEALT +DEAMINASE +DEAMINASES +DEAMINATE +DEAMINATED +DEAMINATES +DEAMINATING +DEAMINATION +DEAMINATIONS +DEAMINIZE +DEAMINIZED +DEAMINIZES +DEAMINIZING +DEAN +DEANED +DEANERIES +DEANERY +DEANING +DEANS +DEANSHIP +DEANSHIPS +DEAR +DEARER +DEAREST +DEARIE +DEARIES +DEARLY +DEARNESS +DEARNESSES +DEARS +DEARTH +DEARTHS +DEARY +DEASH +DEASHED +DEASHES +DEASHING +DEASIL +DEATH +DEATHBED +DEATHBEDS +DEATHBLOW +DEATHBLOWS +DEATHCUP +DEATHCUPS +DEATHFUL +DEATHLESS +DEATHLESSLY +DEATHLESSNESS +DEATHLESSNESSES +DEATHLIKE +DEATHLY +DEATHS +DEATHSMAN +DEATHSMEN +DEATHTRAP +DEATHTRAPS +DEATHWATCH +DEATHWATCHES +DEATHY +DEAVE +DEAVED +DEAVES +DEAVING +DEB +DEBACLE +DEBACLES +DEBAG +DEBAGGED +DEBAGGING +DEBAGS +DEBAR +DEBARK +DEBARKATION +DEBARKATIONS +DEBARKED +DEBARKER +DEBARKERS +DEBARKING +DEBARKS +DEBARMENT +DEBARMENTS +DEBARRED +DEBARRING +DEBARS +DEBASE +DEBASED +DEBASEMENT +DEBASEMENTS +DEBASER +DEBASERS +DEBASES +DEBASING +DEBATABLE +DEBATABLY +DEBATE +DEBATED +DEBATEMENT +DEBATEMENTS +DEBATER +DEBATERS +DEBATES +DEBATING +DEBAUCH +DEBAUCHED +DEBAUCHEE +DEBAUCHEES +DEBAUCHER +DEBAUCHERIES +DEBAUCHERS +DEBAUCHERY +DEBAUCHES +DEBAUCHING +DEBEAK +DEBEAKED +DEBEAKING +DEBEAKS +DEBEARD +DEBEARDED +DEBEARDING +DEBEARDS +DEBENTURE +DEBENTURES +DEBILITATE +DEBILITATED +DEBILITATES +DEBILITATING +DEBILITATION +DEBILITATIONS +DEBILITIES +DEBILITY +DEBIT +DEBITED +DEBITING +DEBITS +DEBONAIR +DEBONAIRE +DEBONAIRLY +DEBONAIRNESS +DEBONAIRNESSES +DEBONE +DEBONED +DEBONER +DEBONERS +DEBONES +DEBONING +DEBOUCH +DEBOUCHE +DEBOUCHED +DEBOUCHES +DEBOUCHING +DEBOUCHMENT +DEBOUCHMENTS +DEBRIDE +DEBRIDED +DEBRIDEMENT +DEBRIDEMENTS +DEBRIDES +DEBRIDING +DEBRIEF +DEBRIEFED +DEBRIEFER +DEBRIEFERS +DEBRIEFING +DEBRIEFS +DEBRIS +DEBRUISE +DEBRUISED +DEBRUISES +DEBRUISING +DEBS +DEBT +DEBTLESS +DEBTOR +DEBTORS +DEBTS +DEBUG +DEBUGGED +DEBUGGER +DEBUGGERS +DEBUGGING +DEBUGS +DEBUNK +DEBUNKED +DEBUNKER +DEBUNKERS +DEBUNKING +DEBUNKS +DEBUT +DEBUTANT +DEBUTANTE +DEBUTANTES +DEBUTANTS +DEBUTED +DEBUTING +DEBUTS +DEBYE +DEBYES +DECADAL +DECADE +DECADENCE +DECADENCES +DECADENCIES +DECADENCY +DECADENT +DECADENTLY +DECADENTS +DECADES +DECAF +DECAFFEINATED +DECAFS +DECAGON +DECAGONAL +DECAGONS +DECAGRAM +DECAGRAMS +DECAHEDRA +DECAHEDRON +DECAHEDRONS +DECAL +DECALCIFICATION +DECALCIFIED +DECALCIFIES +DECALCIFY +DECALCIFYING +DECALCOMANIA +DECALCOMANIAS +DECALITER +DECALITERS +DECALOG +DECALOGS +DECALOGUE +DECALOGUES +DECALS +DECAMETER +DECAMETERS +DECAMETHONIUM +DECAMETHONIUMS +DECAMETRIC +DECAMP +DECAMPED +DECAMPING +DECAMPMENT +DECAMPMENTS +DECAMPS +DECANAL +DECANE +DECANES +DECANT +DECANTATION +DECANTATIONS +DECANTED +DECANTER +DECANTERS +DECANTING +DECANTS +DECAPITATE +DECAPITATED +DECAPITATES +DECAPITATING +DECAPITATION +DECAPITATIONS +DECAPITATOR +DECAPITATORS +DECAPOD +DECAPODAL +DECAPODAN +DECAPODANS +DECAPODOUS +DECAPODS +DECARBONATE +DECARBONATED +DECARBONATES +DECARBONATING +DECARBONATION +DECARBONATIONS +DECARBONIZE +DECARBONIZED +DECARBONIZER +DECARBONIZERS +DECARBONIZES +DECARBONIZING +DECARBOXYLASE +DECARBOXYLASES +DECARBOXYLATE +DECARBOXYLATED +DECARBOXYLATES +DECARBOXYLATING +DECARBOXYLATION +DECARBURIZATION +DECARBURIZE +DECARBURIZED +DECARBURIZES +DECARBURIZING +DECARE +DECARES +DECASUALIZATION +DECASYLLABIC +DECASYLLABICS +DECASYLLABLE +DECASYLLABLES +DECATHLETE +DECATHLETES +DECATHLON +DECATHLONS +DECAY +DECAYABLE +DECAYED +DECAYER +DECAYERS +DECAYING +DECAYLESS +DECAYS +DECEASE +DECEASED +DECEASES +DECEASING +DECEDENT +DECEDENTS +DECEIT +DECEITFUL +DECEITFULLY +DECEITFULNESS +DECEITFULNESSES +DECEITS +DECEIVABLE +DECEIVE +DECEIVED +DECEIVER +DECEIVERS +DECEIVES +DECEIVING +DECEIVINGLY +DECELERATE +DECELERATED +DECELERATES +DECELERATING +DECELERATION +DECELERATIONS +DECELERATOR +DECELERATORS +DECELERON +DECELERONS +DECEMVIR +DECEMVIRAL +DECEMVIRATE +DECEMVIRATES +DECEMVIRI +DECEMVIRS +DECENARIES +DECENARY +DECENCIES +DECENCY +DECENNARIES +DECENNARY +DECENNIA +DECENNIAL +DECENNIALLY +DECENNIALS +DECENNIUM +DECENNIUMS +DECENT +DECENTER +DECENTERED +DECENTERING +DECENTERS +DECENTEST +DECENTLY +DECENTRALIZE +DECENTRALIZED +DECENTRALIZES +DECENTRALIZING +DECENTRE +DECENTRED +DECENTRES +DECENTRING +DECEPTION +DECEPTIONAL +DECEPTIONS +DECEPTIVE +DECEPTIVELY +DECEPTIVENESS +DECEPTIVENESSES +DECEREBRATE +DECEREBRATED +DECEREBRATES +DECEREBRATING +DECEREBRATION +DECEREBRATIONS +DECERN +DECERNED +DECERNING +DECERNS +DECERTIFICATION +DECERTIFIED +DECERTIFIES +DECERTIFY +DECERTIFYING +DECHLORINATE +DECHLORINATED +DECHLORINATES +DECHLORINATING +DECHLORINATION +DECHLORINATIONS +DECIARE +DECIARES +DECIBEL +DECIBELS +DECIDABILITIES +DECIDABILITY +DECIDABLE +DECIDE +DECIDED +DECIDEDLY +DECIDEDNESS +DECIDEDNESSES +DECIDER +DECIDERS +DECIDES +DECIDING +DECIDUA +DECIDUAE +DECIDUAL +DECIDUAS +DECIDUATE +DECIDUOUS +DECIDUOUSNESS +DECIDUOUSNESSES +DECIGRAM +DECIGRAMS +DECILE +DECILES +DECILITER +DECILITERS +DECILITRE +DECILITRES +DECILLION +DECILLIONS +DECIMAL +DECIMALIZATION +DECIMALIZATIONS +DECIMALIZE +DECIMALIZED +DECIMALIZES +DECIMALIZING +DECIMALLY +DECIMALS +DECIMATE +DECIMATED +DECIMATES +DECIMATING +DECIMATION +DECIMATIONS +DECIMATOR +DECIMATORS +DECIMETER +DECIMETERS +DECIMETRE +DECIMETRES +DECIPHER +DECIPHERABLE +DECIPHERED +DECIPHERER +DECIPHERERS +DECIPHERING +DECIPHERMENT +DECIPHERMENTS +DECIPHERS +DECISION +DECISIONAL +DECISIONED +DECISIONING +DECISIONS +DECISIVE +DECISIVELY +DECISIVENESS +DECISIVENESSES +DECK +DECKED +DECKEL +DECKELS +DECKER +DECKERS +DECKHAND +DECKHANDS +DECKHOUSE +DECKHOUSES +DECKING +DECKINGS +DECKLE +DECKLES +DECKS +DECLAIM +DECLAIMED +DECLAIMER +DECLAIMERS +DECLAIMING +DECLAIMS +DECLAMATION +DECLAMATIONS +DECLAMATORY +DECLARABLE +DECLARANT +DECLARANTS +DECLARATION +DECLARATIONS +DECLARATIVE +DECLARATIVELY +DECLARATORY +DECLARE +DECLARED +DECLARER +DECLARERS +DECLARES +DECLARING +DECLASS +DECLASSE +DECLASSED +DECLASSES +DECLASSIFIED +DECLASSIFIES +DECLASSIFY +DECLASSIFYING +DECLASSING +DECLAW +DECLAWED +DECLAWING +DECLAWS +DECLENSION +DECLENSIONAL +DECLENSIONS +DECLINABLE +DECLINATION +DECLINATIONAL +DECLINATIONS +DECLINE +DECLINED +DECLINER +DECLINERS +DECLINES +DECLINING +DECLINIST +DECLINISTS +DECLIVITIES +DECLIVITOUS +DECLIVITY +DECO +DECOCT +DECOCTED +DECOCTING +DECOCTION +DECOCTIONS +DECOCTIVE +DECOCTS +DECODE +DECODED +DECODER +DECODERS +DECODES +DECODING +DECOLLATE +DECOLLATED +DECOLLATES +DECOLLATING +DECOLLATION +DECOLLATIONS +DECOLLETAGE +DECOLLETAGES +DECOLLETE +DECOLLETES +DECOLONIZATION +DECOLONIZATIONS +DECOLONIZE +DECOLONIZED +DECOLONIZES +DECOLONIZING +DECOLOR +DECOLORED +DECOLORING +DECOLORIZATION +DECOLORIZATIONS +DECOLORIZE +DECOLORIZED +DECOLORIZER +DECOLORIZERS +DECOLORIZES +DECOLORIZING +DECOLORS +DECOLOUR +DECOLOURED +DECOLOURING +DECOLOURS +DECOMMISSION +DECOMMISSIONED +DECOMMISSIONING +DECOMMISSIONS +DECOMPENSATE +DECOMPENSATED +DECOMPENSATES +DECOMPENSATING +DECOMPENSATION +DECOMPENSATIONS +DECOMPOSABILITY +DECOMPOSABLE +DECOMPOSE +DECOMPOSED +DECOMPOSER +DECOMPOSERS +DECOMPOSES +DECOMPOSING +DECOMPOSITION +DECOMPOSITIONS +DECOMPOUND +DECOMPRESS +DECOMPRESSED +DECOMPRESSES +DECOMPRESSING +DECOMPRESSION +DECOMPRESSIONS +DECONCENTRATE +DECONCENTRATED +DECONCENTRATES +DECONCENTRATING +DECONCENTRATION +DECONDITION +DECONDITIONED +DECONDITIONING +DECONDITIONS +DECONGEST +DECONGESTANT +DECONGESTANTS +DECONGESTED +DECONGESTING +DECONGESTION +DECONGESTIONS +DECONGESTIVE +DECONGESTS +DECONSECRATE +DECONSECRATED +DECONSECRATES +DECONSECRATING +DECONSECRATION +DECONSECRATIONS +DECONSTRUCT +DECONSTRUCTED +DECONSTRUCTING +DECONSTRUCTION +DECONSTRUCTIONS +DECONSTRUCTIVE +DECONSTRUCTOR +DECONSTRUCTORS +DECONSTRUCTS +DECONTAMINATE +DECONTAMINATED +DECONTAMINATES +DECONTAMINATING +DECONTAMINATION +DECONTAMINATOR +DECONTAMINATORS +DECONTROL +DECONTROLLED +DECONTROLLING +DECONTROLS +DECOR +DECORATE +DECORATED +DECORATES +DECORATING +DECORATION +DECORATIONS +DECORATIVE +DECORATIVELY +DECORATIVENESS +DECORATOR +DECORATORS +DECOROUS +DECOROUSLY +DECOROUSNESS +DECOROUSNESSES +DECORS +DECORTICATE +DECORTICATED +DECORTICATES +DECORTICATING +DECORTICATION +DECORTICATIONS +DECORTICATOR +DECORTICATORS +DECORUM +DECORUMS +DECOS +DECOUPAGE +DECOUPAGED +DECOUPAGES +DECOUPAGING +DECOUPLE +DECOUPLED +DECOUPLER +DECOUPLERS +DECOUPLES +DECOUPLING +DECOY +DECOYED +DECOYER +DECOYERS +DECOYING +DECOYS +DECREASE +DECREASED +DECREASES +DECREASING +DECREASINGLY +DECREE +DECREED +DECREEING +DECREER +DECREERS +DECREES +DECREMENT +DECREMENTAL +DECREMENTS +DECREPIT +DECREPITATE +DECREPITATED +DECREPITATES +DECREPITATING +DECREPITATION +DECREPITATIONS +DECREPITLY +DECREPITUDE +DECREPITUDES +DECRESCENDO +DECRESCENDOS +DECRESCENT +DECRETAL +DECRETALS +DECRETIVE +DECRETORY +DECRIAL +DECRIALS +DECRIED +DECRIER +DECRIERS +DECRIES +DECRIMINALIZE +DECRIMINALIZED +DECRIMINALIZES +DECRIMINALIZING +DECROWN +DECROWNED +DECROWNING +DECROWNS +DECRY +DECRYING +DECRYPT +DECRYPTED +DECRYPTING +DECRYPTION +DECRYPTIONS +DECRYPTS +DECUMAN +DECUMBENT +DECUPLE +DECUPLED +DECUPLES +DECUPLING +DECURIES +DECURION +DECURIONS +DECURRENT +DECURVE +DECURVED +DECURVES +DECURVING +DECURY +DECUSSATE +DECUSSATED +DECUSSATES +DECUSSATING +DECUSSATION +DECUSSATIONS +DEDAL +DEDANS +DEDICATE +DEDICATED +DEDICATEDLY +DEDICATEE +DEDICATEES +DEDICATES +DEDICATING +DEDICATION +DEDICATIONS +DEDICATOR +DEDICATORS +DEDICATORY +DEDIFFERENTIATE +DEDUCE +DEDUCED +DEDUCES +DEDUCIBLE +DEDUCIBLY +DEDUCING +DEDUCT +DEDUCTED +DEDUCTIBILITIES +DEDUCTIBILITY +DEDUCTIBLE +DEDUCTIBLES +DEDUCTING +DEDUCTION +DEDUCTIONS +DEDUCTIVE +DEDUCTIVELY +DEDUCTS +DEE +DEED +DEEDED +DEEDIER +DEEDIEST +DEEDING +DEEDLESS +DEEDS +DEEDY +DEEJAY +DEEJAYED +DEEJAYING +DEEJAYS +DEEM +DEEMED +DEEMING +DEEMS +DEEMSTER +DEEMSTERS +DEEP +DEEPEN +DEEPENED +DEEPENER +DEEPENERS +DEEPENING +DEEPENS +DEEPER +DEEPEST +DEEPFREEZE +DEEPFREEZES +DEEPFREEZING +DEEPFROZE +DEEPFROZEN +DEEPLY +DEEPNESS +DEEPNESSES +DEEPS +DEEPWATER +DEER +DEERBERRIES +DEERBERRY +DEERFLIES +DEERFLY +DEERHOUND +DEERHOUNDS +DEERLIKE +DEERS +DEERSKIN +DEERSKINS +DEERSTALKER +DEERSTALKERS +DEERWEED +DEERWEEDS +DEERYARD +DEERYARDS +DEES +DEET +DEETS +DEEWAN +DEEWANS +DEF +DEFACE +DEFACED +DEFACEMENT +DEFACEMENTS +DEFACER +DEFACERS +DEFACES +DEFACING +DEFALCATE +DEFALCATED +DEFALCATES +DEFALCATING +DEFALCATION +DEFALCATIONS +DEFALCATOR +DEFALCATORS +DEFAMATION +DEFAMATIONS +DEFAMATORY +DEFAME +DEFAMED +DEFAMER +DEFAMERS +DEFAMES +DEFAMING +DEFANG +DEFANGED +DEFANGING +DEFANGS +DEFAT +DEFATS +DEFATTED +DEFATTING +DEFAULT +DEFAULTED +DEFAULTER +DEFAULTERS +DEFAULTING +DEFAULTS +DEFEASANCE +DEFEASANCES +DEFEASIBILITIES +DEFEASIBILITY +DEFEASIBLE +DEFEAT +DEFEATED +DEFEATER +DEFEATERS +DEFEATING +DEFEATISM +DEFEATISMS +DEFEATIST +DEFEATISTS +DEFEATS +DEFEATURE +DEFEATURES +DEFECATE +DEFECATED +DEFECATES +DEFECATING +DEFECATION +DEFECATIONS +DEFECATOR +DEFECATORS +DEFECT +DEFECTED +DEFECTING +DEFECTION +DEFECTIONS +DEFECTIVE +DEFECTIVELY +DEFECTIVENESS +DEFECTIVENESSES +DEFECTIVES +DEFECTOR +DEFECTORS +DEFECTS +DEFEMINIZATION +DEFEMINIZATIONS +DEFEMINIZE +DEFEMINIZED +DEFEMINIZES +DEFEMINIZING +DEFENCE +DEFENCED +DEFENCEMAN +DEFENCEMEN +DEFENCES +DEFENCING +DEFEND +DEFENDABLE +DEFENDANT +DEFENDANTS +DEFENDED +DEFENDER +DEFENDERS +DEFENDING +DEFENDS +DEFENESTRATE +DEFENESTRATED +DEFENESTRATES +DEFENESTRATING +DEFENESTRATION +DEFENESTRATIONS +DEFENSE +DEFENSED +DEFENSELESS +DEFENSELESSLY +DEFENSELESSNESS +DEFENSEMAN +DEFENSEMEN +DEFENSES +DEFENSIBILITIES +DEFENSIBILITY +DEFENSIBLE +DEFENSIBLY +DEFENSING +DEFENSIVE +DEFENSIVELY +DEFENSIVENESS +DEFENSIVENESSES +DEFENSIVES +DEFER +DEFERENCE +DEFERENCES +DEFERENT +DEFERENTIAL +DEFERENTIALLY +DEFERENTS +DEFERMENT +DEFERMENTS +DEFERRABLE +DEFERRABLES +DEFERRAL +DEFERRALS +DEFERRED +DEFERRER +DEFERRERS +DEFERRING +DEFERS +DEFERVESCENCE +DEFERVESCENCES +DEFFER +DEFFEST +DEFI +DEFIANCE +DEFIANCES +DEFIANT +DEFIANTLY +DEFIBRILLATE +DEFIBRILLATED +DEFIBRILLATES +DEFIBRILLATING +DEFIBRILLATION +DEFIBRILLATIONS +DEFIBRILLATOR +DEFIBRILLATORS +DEFIBRINATE +DEFIBRINATED +DEFIBRINATES +DEFIBRINATING +DEFIBRINATION +DEFIBRINATIONS +DEFICIENCIES +DEFICIENCY +DEFICIENT +DEFICIENTLY +DEFICIENTS +DEFICIT +DEFICITS +DEFIED +DEFIER +DEFIERS +DEFIES +DEFILADE +DEFILADED +DEFILADES +DEFILADING +DEFILE +DEFILED +DEFILEMENT +DEFILEMENTS +DEFILER +DEFILERS +DEFILES +DEFILING +DEFINABLE +DEFINABLY +DEFINE +DEFINED +DEFINEMENT +DEFINEMENTS +DEFINER +DEFINERS +DEFINES +DEFINIENDA +DEFINIENDUM +DEFINIENS +DEFINIENTIA +DEFINING +DEFINITE +DEFINITELY +DEFINITENESS +DEFINITENESSES +DEFINITION +DEFINITIONAL +DEFINITIONS +DEFINITIVE +DEFINITIVELY +DEFINITIVENESS +DEFINITIVES +DEFINITIZE +DEFINITIZED +DEFINITIZES +DEFINITIZING +DEFINITUDE +DEFINITUDES +DEFIS +DEFLAGRATE +DEFLAGRATED +DEFLAGRATES +DEFLAGRATING +DEFLAGRATION +DEFLAGRATIONS +DEFLATE +DEFLATED +DEFLATER +DEFLATERS +DEFLATES +DEFLATING +DEFLATION +DEFLATIONARY +DEFLATIONS +DEFLATOR +DEFLATORS +DEFLEA +DEFLEAED +DEFLEAING +DEFLEAS +DEFLECT +DEFLECTABLE +DEFLECTED +DEFLECTING +DEFLECTION +DEFLECTIONS +DEFLECTIVE +DEFLECTOR +DEFLECTORS +DEFLECTS +DEFLEXED +DEFLEXION +DEFLEXIONS +DEFLORATION +DEFLORATIONS +DEFLOWER +DEFLOWERED +DEFLOWERER +DEFLOWERERS +DEFLOWERING +DEFLOWERS +DEFOAM +DEFOAMED +DEFOAMER +DEFOAMERS +DEFOAMING +DEFOAMS +DEFOCUS +DEFOCUSED +DEFOCUSES +DEFOCUSING +DEFOCUSSED +DEFOCUSSES +DEFOCUSSING +DEFOG +DEFOGGED +DEFOGGER +DEFOGGERS +DEFOGGING +DEFOGS +DEFOLIANT +DEFOLIANTS +DEFOLIATE +DEFOLIATED +DEFOLIATES +DEFOLIATING +DEFOLIATION +DEFOLIATIONS +DEFOLIATOR +DEFOLIATORS +DEFORCE +DEFORCED +DEFORCEMENT +DEFORCEMENTS +DEFORCER +DEFORCERS +DEFORCES +DEFORCING +DEFOREST +DEFORESTATION +DEFORESTATIONS +DEFORESTED +DEFORESTING +DEFORESTS +DEFORM +DEFORMABLE +DEFORMALIZE +DEFORMALIZED +DEFORMALIZES +DEFORMALIZING +DEFORMATION +DEFORMATIONAL +DEFORMATIONS +DEFORMATIVE +DEFORMED +DEFORMER +DEFORMERS +DEFORMING +DEFORMITIES +DEFORMITY +DEFORMS +DEFRAG +DEFRAGGED +DEFRAGGER +DEFRAGGERS +DEFRAGGING +DEFRAGS +DEFRAUD +DEFRAUDED +DEFRAUDER +DEFRAUDERS +DEFRAUDING +DEFRAUDS +DEFRAY +DEFRAYABLE +DEFRAYAL +DEFRAYALS +DEFRAYED +DEFRAYER +DEFRAYERS +DEFRAYING +DEFRAYS +DEFROCK +DEFROCKED +DEFROCKING +DEFROCKS +DEFROST +DEFROSTED +DEFROSTER +DEFROSTERS +DEFROSTING +DEFROSTS +DEFT +DEFTER +DEFTEST +DEFTLY +DEFTNESS +DEFTNESSES +DEFUEL +DEFUELED +DEFUELING +DEFUELLED +DEFUELLING +DEFUELS +DEFUNCT +DEFUND +DEFUNDED +DEFUNDING +DEFUNDS +DEFUSE +DEFUSED +DEFUSER +DEFUSERS +DEFUSES +DEFUSING +DEFUZE +DEFUZED +DEFUZES +DEFUZING +DEFY +DEFYING +DEGAGE +DEGAME +DEGAMES +DEGAMI +DEGAMIS +DEGAS +DEGASES +DEGASSED +DEGASSER +DEGASSERS +DEGASSES +DEGASSING +DEGAUSS +DEGAUSSED +DEGAUSSER +DEGAUSSERS +DEGAUSSES +DEGAUSSING +DEGENDER +DEGENDERED +DEGENDERING +DEGENDERS +DEGENERACIES +DEGENERACY +DEGENERATE +DEGENERATED +DEGENERATELY +DEGENERATENESS +DEGENERATES +DEGENERATING +DEGENERATION +DEGENERATIONS +DEGENERATIVE +DEGERM +DEGERMED +DEGERMING +DEGERMS +DEGLACIATED +DEGLACIATION +DEGLACIATIONS +DEGLAMORIZATION +DEGLAMORIZE +DEGLAMORIZED +DEGLAMORIZES +DEGLAMORIZING +DEGLAZE +DEGLAZED +DEGLAZES +DEGLAZING +DEGLUTITION +DEGLUTITIONS +DEGRADABLE +DEGRADATION +DEGRADATIONS +DEGRADATIVE +DEGRADE +DEGRADED +DEGRADEDLY +DEGRADER +DEGRADERS +DEGRADES +DEGRADING +DEGRADINGLY +DEGRANULATION +DEGRANULATIONS +DEGREASE +DEGREASED +DEGREASER +DEGREASERS +DEGREASES +DEGREASING +DEGREE +DEGREED +DEGREES +DEGRESSIVE +DEGRESSIVELY +DEGRINGOLADE +DEGRINGOLADES +DEGUM +DEGUMMED +DEGUMMING +DEGUMS +DEGUST +DEGUSTATION +DEGUSTATIONS +DEGUSTED +DEGUSTING +DEGUSTS +DEHISCE +DEHISCED +DEHISCENCE +DEHISCENCES +DEHISCENT +DEHISCES +DEHISCING +DEHORN +DEHORNED +DEHORNER +DEHORNERS +DEHORNING +DEHORNS +DEHORT +DEHORTED +DEHORTING +DEHORTS +DEHUMANIZATION +DEHUMANIZATIONS +DEHUMANIZE +DEHUMANIZED +DEHUMANIZES +DEHUMANIZING +DEHUMIDIFIED +DEHUMIDIFIER +DEHUMIDIFIERS +DEHUMIDIFIES +DEHUMIDIFY +DEHUMIDIFYING +DEHYDRATE +DEHYDRATED +DEHYDRATES +DEHYDRATING +DEHYDRATION +DEHYDRATIONS +DEHYDRATOR +DEHYDRATORS +DEHYDROGENASE +DEHYDROGENASES +DEHYDROGENATE +DEHYDROGENATED +DEHYDROGENATES +DEHYDROGENATING +DEHYDROGENATION +DEICE +DEICED +DEICER +DEICERS +DEICES +DEICIDAL +DEICIDE +DEICIDES +DEICING +DEICTIC +DEICTICS +DEIFIC +DEIFICAL +DEIFICATION +DEIFICATIONS +DEIFIED +DEIFIER +DEIFIERS +DEIFIES +DEIFORM +DEIFY +DEIFYING +DEIGN +DEIGNED +DEIGNING +DEIGNS +DEIL +DEILS +DEINDUSTRIALIZE +DEINONYCHUS +DEINONYCHUSES +DEIONIZATION +DEIONIZATIONS +DEIONIZE +DEIONIZED +DEIONIZER +DEIONIZERS +DEIONIZES +DEIONIZING +DEISM +DEISMS +DEIST +DEISTIC +DEISTICAL +DEISTICALLY +DEISTS +DEITIES +DEITY +DEIXIS +DEIXISES +DEJECT +DEJECTA +DEJECTED +DEJECTEDLY +DEJECTEDNESS +DEJECTEDNESSES +DEJECTING +DEJECTION +DEJECTIONS +DEJECTS +DEJEUNER +DEJEUNERS +DEKAGRAM +DEKAGRAMS +DEKALITER +DEKALITERS +DEKALITRE +DEKALITRES +DEKAMETER +DEKAMETERS +DEKAMETRE +DEKAMETRES +DEKAMETRIC +DEKARE +DEKARES +DEKE +DEKED +DEKEING +DEKES +DEKING +DEKKO +DEKKOS +DEL +DELAINE +DELAINES +DELAMINATE +DELAMINATED +DELAMINATES +DELAMINATING +DELAMINATION +DELAMINATIONS +DELATE +DELATED +DELATES +DELATING +DELATION +DELATIONS +DELATOR +DELATORS +DELAY +DELAYABLE +DELAYED +DELAYER +DELAYERS +DELAYING +DELAYS +DELE +DELEAD +DELEADED +DELEADING +DELEADS +DELEAVE +DELEAVED +DELEAVES +DELEAVING +DELECTABILITIES +DELECTABILITY +DELECTABLE +DELECTABLES +DELECTABLY +DELECTATE +DELECTATED +DELECTATES +DELECTATING +DELECTATION +DELECTATIONS +DELED +DELEGABLE +DELEGACIES +DELEGACY +DELEGATE +DELEGATED +DELEGATEE +DELEGATEES +DELEGATES +DELEGATING +DELEGATION +DELEGATIONS +DELEGATOR +DELEGATORS +DELEGITIMATION +DELEGITIMATIONS +DELEING +DELES +DELETABLE +DELETE +DELETED +DELETERIOUS +DELETERIOUSLY +DELETERIOUSNESS +DELETES +DELETING +DELETION +DELETIONS +DELF +DELFS +DELFT +DELFTS +DELFTWARE +DELFTWARES +DELI +DELIBERATE +DELIBERATED +DELIBERATELY +DELIBERATENESS +DELIBERATES +DELIBERATING +DELIBERATION +DELIBERATIONS +DELIBERATIVE +DELIBERATIVELY +DELICACIES +DELICACY +DELICATE +DELICATELY +DELICATES +DELICATESSEN +DELICATESSENS +DELICIOUS +DELICIOUSLY +DELICIOUSNESS +DELICIOUSNESSES +DELICT +DELICTS +DELIGHT +DELIGHTED +DELIGHTEDLY +DELIGHTEDNESS +DELIGHTEDNESSES +DELIGHTER +DELIGHTERS +DELIGHTFUL +DELIGHTFULLY +DELIGHTFULNESS +DELIGHTING +DELIGHTS +DELIGHTSOME +DELIME +DELIMED +DELIMES +DELIMING +DELIMIT +DELIMITATION +DELIMITATIONS +DELIMITED +DELIMITER +DELIMITERS +DELIMITING +DELIMITS +DELINEATE +DELINEATED +DELINEATES +DELINEATING +DELINEATION +DELINEATIONS +DELINEATIVE +DELINEATOR +DELINEATORS +DELINQUENCIES +DELINQUENCY +DELINQUENT +DELINQUENTLY +DELINQUENTS +DELIQUESCE +DELIQUESCED +DELIQUESCENCE +DELIQUESCENCES +DELIQUESCENT +DELIQUESCES +DELIQUESCING +DELIRIA +DELIRIOUS +DELIRIOUSLY +DELIRIOUSNESS +DELIRIOUSNESSES +DELIRIUM +DELIRIUMS +DELIS +DELISH +DELIST +DELISTED +DELISTING +DELISTS +DELIVER +DELIVERABILITY +DELIVERABLE +DELIVERANCE +DELIVERANCES +DELIVERED +DELIVERER +DELIVERERS +DELIVERIES +DELIVERING +DELIVERS +DELIVERY +DELIVERYMAN +DELIVERYMEN +DELL +DELLIES +DELLS +DELLY +DELOCALIZATION +DELOCALIZATIONS +DELOCALIZE +DELOCALIZED +DELOCALIZES +DELOCALIZING +DELOUSE +DELOUSED +DELOUSER +DELOUSERS +DELOUSES +DELOUSING +DELPHIC +DELPHICALLY +DELPHINIA +DELPHINIUM +DELPHINIUMS +DELS +DELT +DELTA +DELTAIC +DELTAS +DELTIC +DELTOID +DELTOIDEI +DELTOIDEUS +DELTOIDS +DELTS +DELUDE +DELUDED +DELUDER +DELUDERS +DELUDES +DELUDING +DELUGE +DELUGED +DELUGES +DELUGING +DELUSION +DELUSIONAL +DELUSIONARY +DELUSIONS +DELUSIVE +DELUSIVELY +DELUSIVENESS +DELUSIVENESSES +DELUSORY +DELUSTER +DELUSTERED +DELUSTERING +DELUSTERS +DELUXE +DELVE +DELVED +DELVER +DELVERS +DELVES +DELVING +DEMAGNETIZATION +DEMAGNETIZE +DEMAGNETIZED +DEMAGNETIZER +DEMAGNETIZERS +DEMAGNETIZES +DEMAGNETIZING +DEMAGOG +DEMAGOGED +DEMAGOGIC +DEMAGOGICALLY +DEMAGOGIES +DEMAGOGING +DEMAGOGS +DEMAGOGUE +DEMAGOGUED +DEMAGOGUERIES +DEMAGOGUERY +DEMAGOGUES +DEMAGOGUING +DEMAGOGY +DEMAND +DEMANDABLE +DEMANDANT +DEMANDANTS +DEMANDED +DEMANDER +DEMANDERS +DEMANDING +DEMANDINGLY +DEMANDINGNESS +DEMANDINGNESSES +DEMANDS +DEMANTOID +DEMANTOIDS +DEMARCATE +DEMARCATED +DEMARCATES +DEMARCATING +DEMARCATION +DEMARCATIONS +DEMARCHE +DEMARCHES +DEMARK +DEMARKED +DEMARKING +DEMARKS +DEMAST +DEMASTED +DEMASTING +DEMASTS +DEMATERIALIZE +DEMATERIALIZED +DEMATERIALIZES +DEMATERIALIZING +DEME +DEMEAN +DEMEANED +DEMEANING +DEMEANOR +DEMEANORS +DEMEANOUR +DEMEANOURS +DEMEANS +DEMENT +DEMENTED +DEMENTEDLY +DEMENTEDNESS +DEMENTEDNESSES +DEMENTIA +DEMENTIAL +DEMENTIAS +DEMENTING +DEMENTS +DEMERARA +DEMERARAN +DEMERARAS +DEMERGE +DEMERGED +DEMERGER +DEMERGERED +DEMERGERING +DEMERGERS +DEMERGES +DEMERGING +DEMERIT +DEMERITED +DEMERITING +DEMERITS +DEMERSAL +DEMES +DEMESNE +DEMESNES +DEMETON +DEMETONS +DEMIC +DEMIES +DEMIGOD +DEMIGODDESS +DEMIGODDESSES +DEMIGODS +DEMIJOHN +DEMIJOHNS +DEMILITARIZE +DEMILITARIZED +DEMILITARIZES +DEMILITARIZING +DEMILUNE +DEMILUNES +DEMIMONDAINE +DEMIMONDAINES +DEMIMONDE +DEMIMONDES +DEMINERALIZE +DEMINERALIZED +DEMINERALIZER +DEMINERALIZERS +DEMINERALIZES +DEMINERALIZING +DEMIREP +DEMIREPS +DEMISABLE +DEMISE +DEMISED +DEMISEMIQUAVER +DEMISEMIQUAVERS +DEMISES +DEMISING +DEMISSION +DEMISSIONS +DEMISTER +DEMISTERS +DEMIT +DEMITASSE +DEMITASSES +DEMITS +DEMITTED +DEMITTING +DEMIURGE +DEMIURGES +DEMIURGIC +DEMIURGICAL +DEMIVOLT +DEMIVOLTE +DEMIVOLTES +DEMIVOLTS +DEMIWORLD +DEMIWORLDS +DEMO +DEMOB +DEMOBBED +DEMOBBING +DEMOBILIZATION +DEMOBILIZATIONS +DEMOBILIZE +DEMOBILIZED +DEMOBILIZES +DEMOBILIZING +DEMOBS +DEMOCRACIES +DEMOCRACY +DEMOCRAT +DEMOCRATIC +DEMOCRATICALLY +DEMOCRATIZATION +DEMOCRATIZE +DEMOCRATIZED +DEMOCRATIZER +DEMOCRATIZERS +DEMOCRATIZES +DEMOCRATIZING +DEMOCRATS +DEMODE +DEMODED +DEMODULATE +DEMODULATED +DEMODULATES +DEMODULATING +DEMODULATION +DEMODULATIONS +DEMODULATOR +DEMODULATORS +DEMOED +DEMOGRAPHER +DEMOGRAPHERS +DEMOGRAPHIC +DEMOGRAPHICAL +DEMOGRAPHICALLY +DEMOGRAPHICS +DEMOGRAPHIES +DEMOGRAPHY +DEMOING +DEMOISELLE +DEMOISELLES +DEMOLISH +DEMOLISHED +DEMOLISHER +DEMOLISHERS +DEMOLISHES +DEMOLISHING +DEMOLISHMENT +DEMOLISHMENTS +DEMOLITION +DEMOLITIONIST +DEMOLITIONISTS +DEMOLITIONS +DEMON +DEMONESS +DEMONESSES +DEMONETIZATION +DEMONETIZATIONS +DEMONETIZE +DEMONETIZED +DEMONETIZES +DEMONETIZING +DEMONIAC +DEMONIACAL +DEMONIACALLY +DEMONIACS +DEMONIAN +DEMONIC +DEMONICAL +DEMONICALLY +DEMONISE +DEMONISED +DEMONISES +DEMONISING +DEMONISM +DEMONISMS +DEMONIST +DEMONISTS +DEMONIZATION +DEMONIZATIONS +DEMONIZE +DEMONIZED +DEMONIZES +DEMONIZING +DEMONOLOGICAL +DEMONOLOGIES +DEMONOLOGIST +DEMONOLOGISTS +DEMONOLOGY +DEMONS +DEMONSTRABILITY +DEMONSTRABLE +DEMONSTRABLY +DEMONSTRATE +DEMONSTRATED +DEMONSTRATES +DEMONSTRATING +DEMONSTRATION +DEMONSTRATIONAL +DEMONSTRATIONS +DEMONSTRATIVE +DEMONSTRATIVELY +DEMONSTRATIVES +DEMONSTRATOR +DEMONSTRATORS +DEMORALIZATION +DEMORALIZATIONS +DEMORALIZE +DEMORALIZED +DEMORALIZER +DEMORALIZERS +DEMORALIZES +DEMORALIZING +DEMORALIZINGLY +DEMOS +DEMOSES +DEMOTE +DEMOTED +DEMOTES +DEMOTIC +DEMOTICS +DEMOTING +DEMOTION +DEMOTIONS +DEMOTIST +DEMOTISTS +DEMOUNT +DEMOUNTABLE +DEMOUNTED +DEMOUNTING +DEMOUNTS +DEMPSTER +DEMPSTERS +DEMULCENT +DEMULCENTS +DEMULSIFIED +DEMULSIFIES +DEMULSIFY +DEMULSIFYING +DEMULTIPLEXER +DEMULTIPLEXERS +DEMUR +DEMURE +DEMURELY +DEMURENESS +DEMURENESSES +DEMURER +DEMUREST +DEMURRAGE +DEMURRAGES +DEMURRAL +DEMURRALS +DEMURRED +DEMURRER +DEMURRERS +DEMURRING +DEMURS +DEMY +DEMYELINATING +DEMYELINATION +DEMYELINATIONS +DEMYSTIFICATION +DEMYSTIFIED +DEMYSTIFIES +DEMYSTIFY +DEMYSTIFYING +DEMYTHOLOGIZE +DEMYTHOLOGIZED +DEMYTHOLOGIZER +DEMYTHOLOGIZERS +DEMYTHOLOGIZES +DEMYTHOLOGIZING +DEN +DENAR +DENARI +DENARII +DENARIUS +DENARS +DENARY +DENATIONALIZE +DENATIONALIZED +DENATIONALIZES +DENATIONALIZING +DENATURALIZE +DENATURALIZED +DENATURALIZES +DENATURALIZING +DENATURANT +DENATURANTS +DENATURATION +DENATURATIONS +DENATURE +DENATURED +DENATURES +DENATURING +DENAZIFICATION +DENAZIFICATIONS +DENAZIFIED +DENAZIFIES +DENAZIFY +DENAZIFYING +DENDRIFORM +DENDRIMER +DENDRIMERS +DENDRITE +DENDRITES +DENDRITIC +DENDROGRAM +DENDROGRAMS +DENDROID +DENDROLOGIC +DENDROLOGICAL +DENDROLOGIES +DENDROLOGIST +DENDROLOGISTS +DENDROLOGY +DENDRON +DENDRONS +DENE +DENEGATION +DENEGATIONS +DENERVATE +DENERVATED +DENERVATES +DENERVATING +DENERVATION +DENERVATIONS +DENES +DENGUE +DENGUES +DENI +DENIABILITIES +DENIABILITY +DENIABLE +DENIABLY +DENIAL +DENIALS +DENIED +DENIER +DENIERS +DENIES +DENIGRATE +DENIGRATED +DENIGRATES +DENIGRATING +DENIGRATION +DENIGRATIONS +DENIGRATIVE +DENIGRATOR +DENIGRATORS +DENIGRATORY +DENIM +DENIMED +DENIMS +DENITRATE +DENITRATED +DENITRATES +DENITRATING +DENITRIFICATION +DENITRIFIED +DENITRIFIER +DENITRIFIERS +DENITRIFIES +DENITRIFY +DENITRIFYING +DENIZEN +DENIZENED +DENIZENING +DENIZENS +DENNED +DENNING +DENOMINAL +DENOMINATE +DENOMINATED +DENOMINATES +DENOMINATING +DENOMINATION +DENOMINATIONAL +DENOMINATIONS +DENOMINATIVE +DENOMINATIVES +DENOMINATOR +DENOMINATORS +DENOTABLE +DENOTATION +DENOTATIONS +DENOTATIVE +DENOTE +DENOTED +DENOTEMENT +DENOTEMENTS +DENOTES +DENOTING +DENOTIVE +DENOUEMENT +DENOUEMENTS +DENOUNCE +DENOUNCED +DENOUNCEMENT +DENOUNCEMENTS +DENOUNCER +DENOUNCERS +DENOUNCES +DENOUNCING +DENS +DENSE +DENSELY +DENSENESS +DENSENESSES +DENSER +DENSEST +DENSIFICATION +DENSIFICATIONS +DENSIFIED +DENSIFIES +DENSIFY +DENSIFYING +DENSITIES +DENSITOMETER +DENSITOMETERS +DENSITOMETRIC +DENSITOMETRIES +DENSITOMETRY +DENSITY +DENT +DENTAL +DENTALIA +DENTALITIES +DENTALITY +DENTALIUM +DENTALIUMS +DENTALLY +DENTALS +DENTATE +DENTATED +DENTATELY +DENTATION +DENTATIONS +DENTED +DENTICLE +DENTICLES +DENTICULATE +DENTICULATED +DENTICULATION +DENTICULATIONS +DENTIFORM +DENTIFRICE +DENTIFRICES +DENTIL +DENTILED +DENTILS +DENTIN +DENTINAL +DENTINE +DENTINES +DENTING +DENTINS +DENTIST +DENTISTRIES +DENTISTRY +DENTISTS +DENTITION +DENTITIONS +DENTOID +DENTS +DENTULOUS +DENTURAL +DENTURE +DENTURES +DENTURIST +DENTURISTS +DENUCLEARIZE +DENUCLEARIZED +DENUCLEARIZES +DENUCLEARIZING +DENUDATE +DENUDATED +DENUDATES +DENUDATING +DENUDATION +DENUDATIONS +DENUDE +DENUDED +DENUDEMENT +DENUDEMENTS +DENUDER +DENUDERS +DENUDES +DENUDING +DENUMERABILITY +DENUMERABLE +DENUMERABLY +DENUNCIATION +DENUNCIATIONS +DENUNCIATIVE +DENUNCIATORY +DENY +DENYING +DENYINGLY +DEODAND +DEODANDS +DEODAR +DEODARA +DEODARAS +DEODARS +DEODORANT +DEODORANTS +DEODORIZATION +DEODORIZATIONS +DEODORIZE +DEODORIZED +DEODORIZER +DEODORIZERS +DEODORIZES +DEODORIZING +DEONTIC +DEONTOLOGICAL +DEONTOLOGIES +DEONTOLOGIST +DEONTOLOGISTS +DEONTOLOGY +DEORBIT +DEORBITED +DEORBITING +DEORBITS +DEOXIDATION +DEOXIDATIONS +DEOXIDIZE +DEOXIDIZED +DEOXIDIZER +DEOXIDIZERS +DEOXIDIZES +DEOXIDIZING +DEOXY +DEOXYGENATE +DEOXYGENATED +DEOXYGENATES +DEOXYGENATING +DEOXYGENATION +DEOXYGENATIONS +DEOXYRIBOSE +DEOXYRIBOSES +DEPAINT +DEPAINTED +DEPAINTING +DEPAINTS +DEPART +DEPARTED +DEPARTEE +DEPARTEES +DEPARTING +DEPARTMENT +DEPARTMENTAL +DEPARTMENTALIZE +DEPARTMENTALLY +DEPARTMENTS +DEPARTS +DEPARTURE +DEPARTURES +DEPAUPERATE +DEPEND +DEPENDABILITIES +DEPENDABILITY +DEPENDABLE +DEPENDABLENESS +DEPENDABLY +DEPENDANCE +DEPENDANCES +DEPENDANT +DEPENDANTS +DEPENDED +DEPENDENCE +DEPENDENCES +DEPENDENCIES +DEPENDENCY +DEPENDENT +DEPENDENTLY +DEPENDENTS +DEPENDING +DEPENDS +DEPEOPLE +DEPEOPLED +DEPEOPLES +DEPEOPLING +DEPERM +DEPERMED +DEPERMING +DEPERMS +DEPERSONALIZE +DEPERSONALIZED +DEPERSONALIZES +DEPERSONALIZING +DEPHOSPHORYLATE +DEPICT +DEPICTED +DEPICTER +DEPICTERS +DEPICTING +DEPICTION +DEPICTIONS +DEPICTOR +DEPICTORS +DEPICTS +DEPIGMENTATION +DEPIGMENTATIONS +DEPILATE +DEPILATED +DEPILATES +DEPILATING +DEPILATION +DEPILATIONS +DEPILATOR +DEPILATORIES +DEPILATORS +DEPILATORY +DEPLANE +DEPLANED +DEPLANES +DEPLANING +DEPLETABLE +DEPLETE +DEPLETED +DEPLETER +DEPLETERS +DEPLETES +DEPLETING +DEPLETION +DEPLETIONS +DEPLETIVE +DEPLORABLE +DEPLORABLENESS +DEPLORABLY +DEPLORE +DEPLORED +DEPLORER +DEPLORERS +DEPLORES +DEPLORING +DEPLORINGLY +DEPLOY +DEPLOYABLE +DEPLOYED +DEPLOYER +DEPLOYERS +DEPLOYING +DEPLOYMENT +DEPLOYMENTS +DEPLOYS +DEPLUME +DEPLUMED +DEPLUMES +DEPLUMING +DEPOLARIZATION +DEPOLARIZATIONS +DEPOLARIZE +DEPOLARIZED +DEPOLARIZER +DEPOLARIZERS +DEPOLARIZES +DEPOLARIZING +DEPOLISH +DEPOLISHED +DEPOLISHES +DEPOLISHING +DEPOLITICIZE +DEPOLITICIZED +DEPOLITICIZES +DEPOLITICIZING +DEPOLYMERIZE +DEPOLYMERIZED +DEPOLYMERIZES +DEPOLYMERIZING +DEPONE +DEPONED +DEPONENT +DEPONENTS +DEPONES +DEPONING +DEPOPULATE +DEPOPULATED +DEPOPULATES +DEPOPULATING +DEPOPULATION +DEPOPULATIONS +DEPORT +DEPORTABLE +DEPORTATION +DEPORTATIONS +DEPORTED +DEPORTEE +DEPORTEES +DEPORTER +DEPORTERS +DEPORTING +DEPORTMENT +DEPORTMENTS +DEPORTS +DEPOSABLE +DEPOSAL +DEPOSALS +DEPOSE +DEPOSED +DEPOSER +DEPOSERS +DEPOSES +DEPOSING +DEPOSIT +DEPOSITARIES +DEPOSITARY +DEPOSITED +DEPOSITING +DEPOSITION +DEPOSITIONAL +DEPOSITIONS +DEPOSITOR +DEPOSITORIES +DEPOSITORS +DEPOSITORY +DEPOSITS +DEPOT +DEPOTS +DEPRAVATION +DEPRAVATIONS +DEPRAVE +DEPRAVED +DEPRAVEDLY +DEPRAVEDNESS +DEPRAVEDNESSES +DEPRAVEMENT +DEPRAVEMENTS +DEPRAVER +DEPRAVERS +DEPRAVES +DEPRAVING +DEPRAVITIES +DEPRAVITY +DEPRECATE +DEPRECATED +DEPRECATES +DEPRECATING +DEPRECATINGLY +DEPRECATION +DEPRECATIONS +DEPRECATORILY +DEPRECATORY +DEPRECIABLE +DEPRECIATE +DEPRECIATED +DEPRECIATES +DEPRECIATING +DEPRECIATINGLY +DEPRECIATION +DEPRECIATIONS +DEPRECIATIVE +DEPRECIATOR +DEPRECIATORS +DEPRECIATORY +DEPREDATE +DEPREDATED +DEPREDATES +DEPREDATING +DEPREDATION +DEPREDATIONS +DEPREDATOR +DEPREDATORS +DEPREDATORY +DEPRENYL +DEPRENYLS +DEPRESS +DEPRESSANT +DEPRESSANTS +DEPRESSED +DEPRESSES +DEPRESSIBLE +DEPRESSING +DEPRESSINGLY +DEPRESSION +DEPRESSIONS +DEPRESSIVE +DEPRESSIVELY +DEPRESSIVES +DEPRESSOR +DEPRESSORS +DEPRESSURIZE +DEPRESSURIZED +DEPRESSURIZES +DEPRESSURIZING +DEPRIVAL +DEPRIVALS +DEPRIVATION +DEPRIVATIONS +DEPRIVE +DEPRIVED +DEPRIVER +DEPRIVERS +DEPRIVES +DEPRIVING +DEPROGRAM +DEPROGRAMED +DEPROGRAMING +DEPROGRAMMED +DEPROGRAMMER +DEPROGRAMMERS +DEPROGRAMMING +DEPROGRAMS +DEPSIDE +DEPSIDES +DEPTH +DEPTHLESS +DEPTHS +DEPURATE +DEPURATED +DEPURATES +DEPURATING +DEPURATOR +DEPURATORS +DEPUTABLE +DEPUTATION +DEPUTATIONS +DEPUTE +DEPUTED +DEPUTES +DEPUTIES +DEPUTING +DEPUTIZATION +DEPUTIZATIONS +DEPUTIZE +DEPUTIZED +DEPUTIZES +DEPUTIZING +DEPUTY +DERACINATE +DERACINATED +DERACINATES +DERACINATING +DERACINATION +DERACINATIONS +DERAIGN +DERAIGNED +DERAIGNING +DERAIGNS +DERAIL +DERAILED +DERAILING +DERAILLEUR +DERAILLEURS +DERAILMENT +DERAILMENTS +DERAILS +DERANGE +DERANGED +DERANGEMENT +DERANGEMENTS +DERANGER +DERANGERS +DERANGES +DERANGING +DERAT +DERATE +DERATED +DERATES +DERATING +DERATS +DERATTED +DERATTING +DERAY +DERAYS +DERBIES +DERBY +DERE +DEREALIZATION +DEREALIZATIONS +DEREGULATE +DEREGULATED +DEREGULATES +DEREGULATING +DEREGULATION +DEREGULATIONS +DERELICT +DERELICTION +DERELICTIONS +DERELICTS +DEREPRESS +DEREPRESSED +DEREPRESSES +DEREPRESSING +DEREPRESSION +DEREPRESSIONS +DERIDE +DERIDED +DERIDER +DERIDERS +DERIDES +DERIDING +DERIDINGLY +DERINGER +DERINGERS +DERISIBLE +DERISION +DERISIONS +DERISIVE +DERISIVELY +DERISIVENESS +DERISIVENESSES +DERISORY +DERIVABLE +DERIVATE +DERIVATES +DERIVATION +DERIVATIONAL +DERIVATIONS +DERIVATIVE +DERIVATIVELY +DERIVATIVENESS +DERIVATIVES +DERIVATIZATION +DERIVATIZATIONS +DERIVATIZE +DERIVATIZED +DERIVATIZES +DERIVATIZING +DERIVE +DERIVED +DERIVER +DERIVERS +DERIVES +DERIVING +DERM +DERMA +DERMABRASION +DERMABRASIONS +DERMAL +DERMAS +DERMATITIS +DERMATITISES +DERMATOGEN +DERMATOGENS +DERMATOGLYPHIC +DERMATOGLYPHICS +DERMATOID +DERMATOLOGIC +DERMATOLOGICAL +DERMATOLOGIES +DERMATOLOGIST +DERMATOLOGISTS +DERMATOLOGY +DERMATOMAL +DERMATOME +DERMATOMES +DERMATOPHYTE +DERMATOPHYTES +DERMATOSES +DERMATOSIS +DERMESTID +DERMESTIDS +DERMIC +DERMIS +DERMISES +DERMOID +DERMOIDS +DERMS +DERNIER +DEROGATE +DEROGATED +DEROGATES +DEROGATING +DEROGATION +DEROGATIONS +DEROGATIVE +DEROGATORILY +DEROGATORY +DERRICK +DERRICKS +DERRIERE +DERRIERES +DERRIES +DERRINGER +DERRINGERS +DERRIS +DERRISES +DERRY +DERVISH +DERVISHES +DESACRALIZATION +DESACRALIZE +DESACRALIZED +DESACRALIZES +DESACRALIZING +DESALINATE +DESALINATED +DESALINATES +DESALINATING +DESALINATION +DESALINATIONS +DESALINATOR +DESALINATORS +DESALINIZATION +DESALINIZATIONS +DESALINIZE +DESALINIZED +DESALINIZES +DESALINIZING +DESALT +DESALTED +DESALTER +DESALTERS +DESALTING +DESALTS +DESAND +DESANDED +DESANDING +DESANDS +DESCANT +DESCANTED +DESCANTER +DESCANTERS +DESCANTING +DESCANTS +DESCEND +DESCENDANT +DESCENDANTS +DESCENDED +DESCENDENT +DESCENDENTS +DESCENDER +DESCENDERS +DESCENDIBLE +DESCENDING +DESCENDS +DESCENSION +DESCENSIONS +DESCENT +DESCENTS +DESCRIBABLE +DESCRIBE +DESCRIBED +DESCRIBER +DESCRIBERS +DESCRIBES +DESCRIBING +DESCRIED +DESCRIER +DESCRIERS +DESCRIES +DESCRIPTION +DESCRIPTIONS +DESCRIPTIVE +DESCRIPTIVELY +DESCRIPTIVENESS +DESCRIPTOR +DESCRIPTORS +DESCRY +DESCRYING +DESECRATE +DESECRATED +DESECRATER +DESECRATERS +DESECRATES +DESECRATING +DESECRATION +DESECRATIONS +DESECRATOR +DESECRATORS +DESEGREGATE +DESEGREGATED +DESEGREGATES +DESEGREGATING +DESEGREGATION +DESEGREGATIONS +DESELECT +DESELECTED +DESELECTING +DESELECTS +DESENSITIZATION +DESENSITIZE +DESENSITIZED +DESENSITIZER +DESENSITIZERS +DESENSITIZES +DESENSITIZING +DESERT +DESERTED +DESERTER +DESERTERS +DESERTIC +DESERTIFICATION +DESERTIFIED +DESERTIFIES +DESERTIFY +DESERTIFYING +DESERTING +DESERTION +DESERTIONS +DESERTS +DESERVE +DESERVED +DESERVEDLY +DESERVEDNESS +DESERVEDNESSES +DESERVER +DESERVERS +DESERVES +DESERVING +DESERVINGS +DESEX +DESEXED +DESEXES +DESEXING +DESEXUALIZATION +DESEXUALIZE +DESEXUALIZED +DESEXUALIZES +DESEXUALIZING +DESHABILLE +DESHABILLES +DESICCANT +DESICCANTS +DESICCATE +DESICCATED +DESICCATES +DESICCATING +DESICCATION +DESICCATIONS +DESICCATIVE +DESICCATOR +DESICCATORS +DESIDERATA +DESIDERATE +DESIDERATED +DESIDERATES +DESIDERATING +DESIDERATION +DESIDERATIONS +DESIDERATIVE +DESIDERATUM +DESIGN +DESIGNATE +DESIGNATED +DESIGNATES +DESIGNATING +DESIGNATION +DESIGNATIONS +DESIGNATIVE +DESIGNATOR +DESIGNATORS +DESIGNATORY +DESIGNED +DESIGNEDLY +DESIGNEE +DESIGNEES +DESIGNER +DESIGNERS +DESIGNING +DESIGNINGS +DESIGNMENT +DESIGNMENTS +DESIGNS +DESILVER +DESILVERED +DESILVERING +DESILVERS +DESINENCE +DESINENCES +DESINENT +DESIPRAMINE +DESIPRAMINES +DESIRABILITIES +DESIRABILITY +DESIRABLE +DESIRABLENESS +DESIRABLENESSES +DESIRABLES +DESIRABLY +DESIRE +DESIRED +DESIRER +DESIRERS +DESIRES +DESIRING +DESIROUS +DESIROUSLY +DESIROUSNESS +DESIROUSNESSES +DESIST +DESISTANCE +DESISTANCES +DESISTED +DESISTING +DESISTS +DESK +DESKBOUND +DESKMAN +DESKMEN +DESKS +DESKTOP +DESKTOPS +DESMAN +DESMANS +DESMID +DESMIDIAN +DESMIDS +DESMOID +DESMOIDS +DESMOSOMAL +DESMOSOME +DESMOSOMES +DESOLATE +DESOLATED +DESOLATELY +DESOLATENESS +DESOLATENESSES +DESOLATER +DESOLATERS +DESOLATES +DESOLATING +DESOLATINGLY +DESOLATION +DESOLATIONS +DESOLATOR +DESOLATORS +DESORB +DESORBED +DESORBING +DESORBS +DESORPTION +DESORPTIONS +DESOXY +DESPAIR +DESPAIRED +DESPAIRER +DESPAIRERS +DESPAIRING +DESPAIRINGLY +DESPAIRS +DESPATCH +DESPATCHED +DESPATCHES +DESPATCHING +DESPERADO +DESPERADOES +DESPERADOS +DESPERATE +DESPERATELY +DESPERATENESS +DESPERATENESSES +DESPERATION +DESPERATIONS +DESPICABLE +DESPICABLENESS +DESPICABLY +DESPIRITUALIZE +DESPIRITUALIZED +DESPIRITUALIZES +DESPISAL +DESPISALS +DESPISE +DESPISED +DESPISEMENT +DESPISEMENTS +DESPISER +DESPISERS +DESPISES +DESPISING +DESPITE +DESPITED +DESPITEFUL +DESPITEFULLY +DESPITEFULNESS +DESPITEOUS +DESPITEOUSLY +DESPITES +DESPITING +DESPOIL +DESPOILED +DESPOILER +DESPOILERS +DESPOILING +DESPOILMENT +DESPOILMENTS +DESPOILS +DESPOLIATION +DESPOLIATIONS +DESPOND +DESPONDED +DESPONDENCE +DESPONDENCES +DESPONDENCIES +DESPONDENCY +DESPONDENT +DESPONDENTLY +DESPONDING +DESPONDS +DESPOT +DESPOTIC +DESPOTICALLY +DESPOTISM +DESPOTISMS +DESPOTS +DESPUMATE +DESPUMATED +DESPUMATES +DESPUMATING +DESQUAMATE +DESQUAMATED +DESQUAMATES +DESQUAMATING +DESQUAMATION +DESQUAMATIONS +DESSERT +DESSERTS +DESSERTSPOON +DESSERTSPOONFUL +DESSERTSPOONS +DESTABILIZATION +DESTABILIZE +DESTABILIZED +DESTABILIZES +DESTABILIZING +DESTAIN +DESTAINED +DESTAINING +DESTAINS +DESTINATION +DESTINATIONS +DESTINE +DESTINED +DESTINES +DESTINIES +DESTINING +DESTINY +DESTITUTE +DESTITUTED +DESTITUTENESS +DESTITUTENESSES +DESTITUTES +DESTITUTING +DESTITUTION +DESTITUTIONS +DESTRIER +DESTRIERS +DESTROY +DESTROYED +DESTROYER +DESTROYERS +DESTROYING +DESTROYS +DESTRUCT +DESTRUCTED +DESTRUCTIBILITY +DESTRUCTIBLE +DESTRUCTING +DESTRUCTION +DESTRUCTIONIST +DESTRUCTIONISTS +DESTRUCTIONS +DESTRUCTIVE +DESTRUCTIVELY +DESTRUCTIVENESS +DESTRUCTIVITIES +DESTRUCTIVITY +DESTRUCTS +DESUETUDE +DESUETUDES +DESUGAR +DESUGARED +DESUGARING +DESUGARS +DESULFUR +DESULFURED +DESULFURING +DESULFURIZATION +DESULFURIZE +DESULFURIZED +DESULFURIZES +DESULFURIZING +DESULFURS +DESULTORILY +DESULTORINESS +DESULTORINESSES +DESULTORY +DETACH +DETACHABILITIES +DETACHABILITY +DETACHABLE +DETACHABLY +DETACHED +DETACHEDLY +DETACHEDNESS +DETACHEDNESSES +DETACHER +DETACHERS +DETACHES +DETACHING +DETACHMENT +DETACHMENTS +DETAIL +DETAILED +DETAILEDLY +DETAILEDNESS +DETAILEDNESSES +DETAILER +DETAILERS +DETAILING +DETAILINGS +DETAILS +DETAIN +DETAINED +DETAINEE +DETAINEES +DETAINER +DETAINERS +DETAINING +DETAINMENT +DETAINMENTS +DETAINS +DETASSEL +DETASSELED +DETASSELING +DETASSELLED +DETASSELLING +DETASSELS +DETECT +DETECTABILITIES +DETECTABILITY +DETECTABLE +DETECTED +DETECTER +DETECTERS +DETECTING +DETECTION +DETECTIONS +DETECTIVE +DETECTIVELIKE +DETECTIVES +DETECTOR +DETECTORS +DETECTS +DETENT +DETENTE +DETENTES +DETENTION +DETENTIONS +DETENTIST +DETENTISTS +DETENTS +DETER +DETERGE +DETERGED +DETERGENCIES +DETERGENCY +DETERGENT +DETERGENTS +DETERGER +DETERGERS +DETERGES +DETERGING +DETERIORATE +DETERIORATED +DETERIORATES +DETERIORATING +DETERIORATION +DETERIORATIONS +DETERIORATIVE +DETERMENT +DETERMENTS +DETERMINABLE +DETERMINABLY +DETERMINACIES +DETERMINACY +DETERMINANT +DETERMINANTAL +DETERMINANTS +DETERMINATE +DETERMINATELY +DETERMINATENESS +DETERMINATION +DETERMINATIONS +DETERMINATIVE +DETERMINATIVES +DETERMINATOR +DETERMINATORS +DETERMINE +DETERMINED +DETERMINEDLY +DETERMINEDNESS +DETERMINER +DETERMINERS +DETERMINES +DETERMINING +DETERMINISM +DETERMINISMS +DETERMINIST +DETERMINISTIC +DETERMINISTS +DETERRABILITIES +DETERRABILITY +DETERRABLE +DETERRED +DETERRENCE +DETERRENCES +DETERRENT +DETERRENTLY +DETERRENTS +DETERRER +DETERRERS +DETERRING +DETERS +DETERSIVE +DETERSIVES +DETEST +DETESTABLE +DETESTABLENESS +DETESTABLY +DETESTATION +DETESTATIONS +DETESTED +DETESTER +DETESTERS +DETESTING +DETESTS +DETHATCH +DETHATCHED +DETHATCHES +DETHATCHING +DETHRONE +DETHRONED +DETHRONEMENT +DETHRONEMENTS +DETHRONER +DETHRONERS +DETHRONES +DETHRONING +DETICK +DETICKED +DETICKER +DETICKERS +DETICKING +DETICKS +DETINUE +DETINUES +DETONABILITIES +DETONABILITY +DETONABLE +DETONATABLE +DETONATE +DETONATED +DETONATES +DETONATING +DETONATION +DETONATIONS +DETONATIVE +DETONATOR +DETONATORS +DETOUR +DETOURED +DETOURING +DETOURS +DETOX +DETOXED +DETOXES +DETOXICANT +DETOXICANTS +DETOXICATE +DETOXICATED +DETOXICATES +DETOXICATING +DETOXICATION +DETOXICATIONS +DETOXIFICATION +DETOXIFICATIONS +DETOXIFIED +DETOXIFIES +DETOXIFY +DETOXIFYING +DETOXING +DETRACT +DETRACTED +DETRACTING +DETRACTION +DETRACTIONS +DETRACTIVE +DETRACTIVELY +DETRACTOR +DETRACTORS +DETRACTS +DETRAIN +DETRAINED +DETRAINING +DETRAINMENT +DETRAINMENTS +DETRAINS +DETRIBALIZATION +DETRIBALIZE +DETRIBALIZED +DETRIBALIZES +DETRIBALIZING +DETRIMENT +DETRIMENTAL +DETRIMENTALLY +DETRIMENTALS +DETRIMENTS +DETRITAL +DETRITION +DETRITIONS +DETRITUS +DETRUDE +DETRUDED +DETRUDES +DETRUDING +DETRUSION +DETRUSIONS +DETUMESCENCE +DETUMESCENCES +DETUMESCENT +DEUCE +DEUCED +DEUCEDLY +DEUCES +DEUCING +DEUTERAGONIST +DEUTERAGONISTS +DEUTERANOMALIES +DEUTERANOMALOUS +DEUTERANOMALY +DEUTERANOPE +DEUTERANOPES +DEUTERANOPIA +DEUTERANOPIAS +DEUTERANOPIC +DEUTERATE +DEUTERATED +DEUTERATES +DEUTERATING +DEUTERATION +DEUTERATIONS +DEUTERIC +DEUTERIDE +DEUTERIDES +DEUTERIUM +DEUTERIUMS +DEUTERON +DEUTERONS +DEUTEROSTOME +DEUTEROSTOMES +DEUTOPLASM +DEUTOPLASMS +DEUTZIA +DEUTZIAS +DEV +DEVA +DEVALUATE +DEVALUATED +DEVALUATES +DEVALUATING +DEVALUATION +DEVALUATIONS +DEVALUE +DEVALUED +DEVALUES +DEVALUING +DEVAS +DEVASTATE +DEVASTATED +DEVASTATES +DEVASTATING +DEVASTATINGLY +DEVASTATION +DEVASTATIONS +DEVASTATIVE +DEVASTATOR +DEVASTATORS +DEVEIN +DEVEINED +DEVEINING +DEVEINS +DEVEL +DEVELED +DEVELING +DEVELOP +DEVELOPABLE +DEVELOPE +DEVELOPED +DEVELOPER +DEVELOPERS +DEVELOPES +DEVELOPING +DEVELOPMENT +DEVELOPMENTAL +DEVELOPMENTALLY +DEVELOPMENTS +DEVELOPPE +DEVELOPPES +DEVELOPS +DEVELS +DEVERBAL +DEVERBALS +DEVERBATIVE +DEVERBATIVES +DEVEST +DEVESTED +DEVESTING +DEVESTS +DEVIANCE +DEVIANCES +DEVIANCIES +DEVIANCY +DEVIANT +DEVIANTS +DEVIATE +DEVIATED +DEVIATES +DEVIATING +DEVIATION +DEVIATIONISM +DEVIATIONISMS +DEVIATIONIST +DEVIATIONISTS +DEVIATIONS +DEVIATIVE +DEVIATOR +DEVIATORS +DEVIATORY +DEVICE +DEVICES +DEVIL +DEVILED +DEVILFISH +DEVILFISHES +DEVILING +DEVILISH +DEVILISHLY +DEVILISHNESS +DEVILISHNESSES +DEVILKIN +DEVILKINS +DEVILLED +DEVILLING +DEVILMENT +DEVILMENTS +DEVILRIES +DEVILRY +DEVILS +DEVILTRIES +DEVILTRY +DEVILWOOD +DEVILWOODS +DEVIOUS +DEVIOUSLY +DEVIOUSNESS +DEVIOUSNESSES +DEVISABLE +DEVISAL +DEVISALS +DEVISE +DEVISED +DEVISEE +DEVISEES +DEVISER +DEVISERS +DEVISES +DEVISING +DEVISOR +DEVISORS +DEVITALIZE +DEVITALIZED +DEVITALIZES +DEVITALIZING +DEVITRIFICATION +DEVITRIFIED +DEVITRIFIES +DEVITRIFY +DEVITRIFYING +DEVOCALIZE +DEVOCALIZED +DEVOCALIZES +DEVOCALIZING +DEVOICE +DEVOICED +DEVOICES +DEVOICING +DEVOID +DEVOIR +DEVOIRS +DEVOLUTION +DEVOLUTIONARY +DEVOLUTIONIST +DEVOLUTIONISTS +DEVOLUTIONS +DEVOLVE +DEVOLVED +DEVOLVES +DEVOLVING +DEVON +DEVONIAN +DEVONS +DEVOTE +DEVOTED +DEVOTEDLY +DEVOTEDNESS +DEVOTEDNESSES +DEVOTEE +DEVOTEES +DEVOTEMENT +DEVOTEMENTS +DEVOTES +DEVOTING +DEVOTION +DEVOTIONAL +DEVOTIONALLY +DEVOTIONALS +DEVOTIONS +DEVOUR +DEVOURED +DEVOURER +DEVOURERS +DEVOURING +DEVOURS +DEVOUT +DEVOUTER +DEVOUTEST +DEVOUTLY +DEVOUTNESS +DEVOUTNESSES +DEVS +DEW +DEWAN +DEWANS +DEWAR +DEWARS +DEWATER +DEWATERED +DEWATERER +DEWATERERS +DEWATERING +DEWATERS +DEWAX +DEWAXED +DEWAXES +DEWAXING +DEWBERRIES +DEWBERRY +DEWCLAW +DEWCLAWED +DEWCLAWS +DEWDROP +DEWDROPS +DEWED +DEWFALL +DEWFALLS +DEWIER +DEWIEST +DEWILY +DEWINESS +DEWINESSES +DEWING +DEWLAP +DEWLAPPED +DEWLAPS +DEWLESS +DEWOOL +DEWOOLED +DEWOOLING +DEWOOLS +DEWORM +DEWORMED +DEWORMER +DEWORMERS +DEWORMING +DEWORMS +DEWS +DEWY +DEX +DEXAMETHASONE +DEXAMETHASONES +DEXES +DEXIE +DEXIES +DEXTER +DEXTERITIES +DEXTERITY +DEXTEROUS +DEXTEROUSLY +DEXTEROUSNESS +DEXTEROUSNESSES +DEXTRAL +DEXTRALLY +DEXTRAN +DEXTRANASE +DEXTRANASES +DEXTRANS +DEXTRIN +DEXTRINE +DEXTRINES +DEXTRINS +DEXTRO +DEXTROROTARY +DEXTROROTATORY +DEXTRORSE +DEXTROSE +DEXTROSES +DEXTROUS +DEXY +DEY +DEYS +DEZINC +DEZINCED +DEZINCING +DEZINCKED +DEZINCKING +DEZINCS +DHAK +DHAKS +DHAL +DHALS +DHARMA +DHARMAS +DHARMIC +DHARNA +DHARNAS +DHOBI +DHOBIS +DHOLE +DHOLES +DHOOLIES +DHOOLY +DHOORA +DHOORAS +DHOOTI +DHOOTIE +DHOOTIES +DHOOTIS +DHOTI +DHOTIS +DHOURRA +DHOURRAS +DHOW +DHOWS +DHURNA +DHURNAS +DHURRIE +DHURRIES +DHUTI +DHUTIS +DIABASE +DIABASES +DIABASIC +DIABETES +DIABETIC +DIABETICS +DIABETOGENIC +DIABETOLOGIST +DIABETOLOGISTS +DIABLERIE +DIABLERIES +DIABLERY +DIABOLIC +DIABOLICAL +DIABOLICALLY +DIABOLICALNESS +DIABOLISM +DIABOLISMS +DIABOLIST +DIABOLISTS +DIABOLIZE +DIABOLIZED +DIABOLIZES +DIABOLIZING +DIABOLO +DIABOLOS +DIACETYL +DIACETYLS +DIACHRONIC +DIACHRONICALLY +DIACHRONIES +DIACHRONY +DIACID +DIACIDIC +DIACIDS +DIACONAL +DIACONATE +DIACONATES +DIACRITIC +DIACRITICAL +DIACRITICS +DIACTINIC +DIADELPHOUS +DIADEM +DIADEMED +DIADEMING +DIADEMS +DIADROMOUS +DIAERESES +DIAERESIS +DIAERETIC +DIAGENESES +DIAGENESIS +DIAGENETIC +DIAGENETICALLY +DIAGEOTROPIC +DIAGNOSABLE +DIAGNOSE +DIAGNOSEABLE +DIAGNOSED +DIAGNOSES +DIAGNOSING +DIAGNOSIS +DIAGNOSTIC +DIAGNOSTICAL +DIAGNOSTICALLY +DIAGNOSTICIAN +DIAGNOSTICIANS +DIAGNOSTICS +DIAGONAL +DIAGONALIZABLE +DIAGONALIZATION +DIAGONALIZE +DIAGONALIZED +DIAGONALIZES +DIAGONALIZING +DIAGONALLY +DIAGONALS +DIAGRAM +DIAGRAMED +DIAGRAMING +DIAGRAMMABLE +DIAGRAMMATIC +DIAGRAMMATICAL +DIAGRAMMED +DIAGRAMMING +DIAGRAMS +DIAGRAPH +DIAGRAPHS +DIAKINESES +DIAKINESIS +DIAL +DIALECT +DIALECTAL +DIALECTALLY +DIALECTIC +DIALECTICAL +DIALECTICALLY +DIALECTICIAN +DIALECTICIANS +DIALECTICS +DIALECTOLOGICAL +DIALECTOLOGIES +DIALECTOLOGIST +DIALECTOLOGISTS +DIALECTOLOGY +DIALECTS +DIALED +DIALER +DIALERS +DIALING +DIALINGS +DIALIST +DIALISTS +DIALLAGE +DIALLAGES +DIALLED +DIALLEL +DIALLER +DIALLERS +DIALLING +DIALLINGS +DIALLIST +DIALLISTS +DIALOG +DIALOGED +DIALOGER +DIALOGERS +DIALOGIC +DIALOGICAL +DIALOGICALLY +DIALOGING +DIALOGIST +DIALOGISTIC +DIALOGISTS +DIALOGS +DIALOGUE +DIALOGUED +DIALOGUER +DIALOGUERS +DIALOGUES +DIALOGUING +DIALS +DIALYSATE +DIALYSATES +DIALYSE +DIALYSED +DIALYSER +DIALYSERS +DIALYSES +DIALYSING +DIALYSIS +DIALYTIC +DIALYZABLE +DIALYZATE +DIALYZATES +DIALYZE +DIALYZED +DIALYZER +DIALYZERS +DIALYZES +DIALYZING +DIAMAGNET +DIAMAGNETIC +DIAMAGNETISM +DIAMAGNETISMS +DIAMAGNETS +DIAMANTE +DIAMANTES +DIAMETER +DIAMETERS +DIAMETRAL +DIAMETRIC +DIAMETRICAL +DIAMETRICALLY +DIAMIDE +DIAMIDES +DIAMIN +DIAMINE +DIAMINES +DIAMINS +DIAMOND +DIAMONDBACK +DIAMONDBACKS +DIAMONDED +DIAMONDIFEROUS +DIAMONDING +DIAMONDS +DIANDROUS +DIANTHUS +DIANTHUSES +DIAPASON +DIAPASONS +DIAPAUSE +DIAPAUSED +DIAPAUSES +DIAPAUSING +DIAPEDESES +DIAPEDESIS +DIAPER +DIAPERED +DIAPERING +DIAPERS +DIAPHANEITIES +DIAPHANEITY +DIAPHANOUS +DIAPHANOUSLY +DIAPHANOUSNESS +DIAPHONE +DIAPHONES +DIAPHONIES +DIAPHONY +DIAPHORASE +DIAPHORASES +DIAPHORESES +DIAPHORESIS +DIAPHORETIC +DIAPHORETICS +DIAPHRAGM +DIAPHRAGMATIC +DIAPHRAGMED +DIAPHRAGMING +DIAPHRAGMS +DIAPHYSEAL +DIAPHYSES +DIAPHYSIAL +DIAPHYSIS +DIAPIR +DIAPIRIC +DIAPIRS +DIAPOSITIVE +DIAPOSITIVES +DIAPSID +DIAPSIDS +DIARCHIC +DIARCHIES +DIARCHY +DIARIES +DIARIST +DIARISTIC +DIARISTS +DIARRHEA +DIARRHEAL +DIARRHEAS +DIARRHEIC +DIARRHETIC +DIARRHOEA +DIARRHOEAS +DIARTHROSES +DIARTHROSIS +DIARY +DIASPORA +DIASPORAS +DIASPORE +DIASPORES +DIASPORIC +DIASTASE +DIASTASES +DIASTASIC +DIASTATIC +DIASTEM +DIASTEMA +DIASTEMAS +DIASTEMATA +DIASTEMS +DIASTER +DIASTEREOISOMER +DIASTEREOMER +DIASTEREOMERIC +DIASTEREOMERS +DIASTERS +DIASTOLE +DIASTOLES +DIASTOLIC +DIASTRAL +DIASTROPHIC +DIASTROPHICALLY +DIASTROPHISM +DIASTROPHISMS +DIATESSARON +DIATESSARONS +DIATHERMANOUS +DIATHERMIC +DIATHERMIES +DIATHERMY +DIATHESES +DIATHESIS +DIATHETIC +DIATOM +DIATOMACEOUS +DIATOMIC +DIATOMITE +DIATOMITES +DIATOMS +DIATONIC +DIATONICALLY +DIATRIBE +DIATRIBES +DIATRON +DIATRONS +DIATROPIC +DIAZEPAM +DIAZEPAMS +DIAZIN +DIAZINE +DIAZINES +DIAZINON +DIAZINONS +DIAZINS +DIAZO +DIAZOLE +DIAZOLES +DIAZONIUM +DIAZONIUMS +DIAZOTIZATION +DIAZOTIZATIONS +DIAZOTIZE +DIAZOTIZED +DIAZOTIZES +DIAZOTIZING +DIB +DIBASIC +DIBBED +DIBBER +DIBBERS +DIBBING +DIBBLE +DIBBLED +DIBBLER +DIBBLERS +DIBBLES +DIBBLING +DIBBUK +DIBBUKIM +DIBBUKS +DIBENZOFURAN +DIBENZOFURANS +DIBROMIDE +DIBROMIDES +DIBS +DICAMBA +DICAMBAS +DICARBOXYLIC +DICAST +DICASTIC +DICASTS +DICE +DICED +DICENTRA +DICENTRAS +DICENTRIC +DICENTRICS +DICER +DICERS +DICES +DICEY +DICHASIA +DICHASIAL +DICHASIUM +DICHLOROBENZENE +DICHLOROETHANE +DICHLOROETHANES +DICHLORVOS +DICHLORVOSES +DICHOGAMIES +DICHOGAMOUS +DICHOGAMY +DICHONDRA +DICHONDRAS +DICHOTIC +DICHOTICALLY +DICHOTOMIES +DICHOTOMIST +DICHOTOMISTS +DICHOTOMIZATION +DICHOTOMIZE +DICHOTOMIZED +DICHOTOMIZES +DICHOTOMIZING +DICHOTOMOUS +DICHOTOMOUSLY +DICHOTOMOUSNESS +DICHOTOMY +DICHROIC +DICHROISM +DICHROISMS +DICHROITE +DICHROITES +DICHROMAT +DICHROMATE +DICHROMATES +DICHROMATIC +DICHROMATISM +DICHROMATISMS +DICHROMATS +DICHROMIC +DICHROSCOPE +DICHROSCOPES +DICIER +DICIEST +DICING +DICK +DICKCISSEL +DICKCISSELS +DICKED +DICKENS +DICKENSES +DICKER +DICKERED +DICKERING +DICKERS +DICKEY +DICKEYS +DICKHEAD +DICKHEADS +DICKIE +DICKIER +DICKIES +DICKIEST +DICKING +DICKS +DICKY +DICLINIES +DICLINISM +DICLINISMS +DICLINOUS +DICLINY +DICOT +DICOTS +DICOTYL +DICOTYLEDON +DICOTYLEDONOUS +DICOTYLEDONS +DICOTYLS +DICOUMARIN +DICOUMARINS +DICOUMAROL +DICOUMAROLS +DICROTAL +DICROTIC +DICROTISM +DICROTISMS +DICTA +DICTATE +DICTATED +DICTATES +DICTATING +DICTATION +DICTATIONS +DICTATOR +DICTATORIAL +DICTATORIALLY +DICTATORIALNESS +DICTATORS +DICTATORSHIP +DICTATORSHIPS +DICTIER +DICTIEST +DICTION +DICTIONAL +DICTIONALLY +DICTIONARIES +DICTIONARY +DICTIONS +DICTUM +DICTUMS +DICTY +DICTYOSOME +DICTYOSOMES +DICTYOSTELE +DICTYOSTELES +DICUMAROL +DICUMAROLS +DICYCLIC +DICYCLIES +DICYCLY +DICYNODONT +DICYNODONTS +DID +DIDACT +DIDACTIC +DIDACTICAL +DIDACTICALLY +DIDACTICISM +DIDACTICISMS +DIDACTICS +DIDACTS +DIDACTYL +DIDAPPER +DIDAPPERS +DIDDLE +DIDDLED +DIDDLER +DIDDLERS +DIDDLES +DIDDLEY +DIDDLEYS +DIDDLIES +DIDDLING +DIDDLY +DIDGERIDOO +DIDGERIDOOS +DIDIE +DIDIES +DIDJERIDOO +DIDJERIDOOS +DIDJERIDU +DIDJERIDUS +DIDO +DIDOES +DIDOS +DIDST +DIDY +DIDYMIUM +DIDYMIUMS +DIDYMOUS +DIDYNAMIES +DIDYNAMY +DIE +DIEBACK +DIEBACKS +DIECIOUS +DIED +DIEFFENBACHIA +DIEFFENBACHIAS +DIEHARD +DIEHARDS +DIEING +DIEL +DIELDRIN +DIELDRINS +DIELECTRIC +DIELECTRICS +DIEMAKER +DIEMAKERS +DIENCEPHALA +DIENCEPHALIC +DIENCEPHALON +DIENE +DIENES +DIEOFF +DIEOFFS +DIERESES +DIERESIS +DIERETIC +DIES +DIESEL +DIESELED +DIESELING +DIESELINGS +DIESELIZATION +DIESELIZATIONS +DIESELIZE +DIESELIZED +DIESELIZES +DIESELIZING +DIESELS +DIESES +DIESINKER +DIESINKERS +DIESIS +DIESTER +DIESTERS +DIESTOCK +DIESTOCKS +DIESTROUS +DIESTRUM +DIESTRUMS +DIESTRUS +DIESTRUSES +DIET +DIETARIES +DIETARILY +DIETARY +DIETED +DIETER +DIETERS +DIETETIC +DIETETICALLY +DIETETICS +DIETHER +DIETHERS +DIETICIAN +DIETICIANS +DIETING +DIETITIAN +DIETITIANS +DIETS +DIF +DIFF +DIFFER +DIFFERED +DIFFERENCE +DIFFERENCED +DIFFERENCES +DIFFERENCING +DIFFERENT +DIFFERENTIA +DIFFERENTIABLE +DIFFERENTIAE +DIFFERENTIAL +DIFFERENTIALLY +DIFFERENTIALS +DIFFERENTIATE +DIFFERENTIATED +DIFFERENTIATES +DIFFERENTIATING +DIFFERENTIATION +DIFFERENTLY +DIFFERENTNESS +DIFFERENTNESSES +DIFFERING +DIFFERS +DIFFICILE +DIFFICULT +DIFFICULTIES +DIFFICULTLY +DIFFICULTY +DIFFIDENCE +DIFFIDENCES +DIFFIDENT +DIFFIDENTLY +DIFFRACT +DIFFRACTED +DIFFRACTING +DIFFRACTION +DIFFRACTIONS +DIFFRACTOMETER +DIFFRACTOMETERS +DIFFRACTOMETRIC +DIFFRACTOMETRY +DIFFRACTS +DIFFS +DIFFUSE +DIFFUSED +DIFFUSELY +DIFFUSENESS +DIFFUSENESSES +DIFFUSER +DIFFUSERS +DIFFUSES +DIFFUSIBLE +DIFFUSING +DIFFUSION +DIFFUSIONAL +DIFFUSIONISM +DIFFUSIONISMS +DIFFUSIONIST +DIFFUSIONISTS +DIFFUSIONS +DIFFUSIVE +DIFFUSIVELY +DIFFUSIVENESS +DIFFUSIVENESSES +DIFFUSIVITIES +DIFFUSIVITY +DIFFUSOR +DIFFUSORS +DIFS +DIFUNCTIONAL +DIG +DIGAMIES +DIGAMIST +DIGAMISTS +DIGAMMA +DIGAMMAS +DIGAMOUS +DIGAMY +DIGASTRIC +DIGASTRICS +DIGENESES +DIGENESIS +DIGENETIC +DIGERATI +DIGEST +DIGESTED +DIGESTER +DIGESTERS +DIGESTIBILITIES +DIGESTIBILITY +DIGESTIBLE +DIGESTIF +DIGESTIFS +DIGESTING +DIGESTION +DIGESTIONS +DIGESTIVE +DIGESTIVELY +DIGESTIVES +DIGESTOR +DIGESTORS +DIGESTS +DIGGED +DIGGER +DIGGERS +DIGGING +DIGGINGS +DIGHT +DIGHTED +DIGHTING +DIGHTS +DIGIT +DIGITAL +DIGITALIN +DIGITALINS +DIGITALIS +DIGITALISES +DIGITALIZATION +DIGITALIZATIONS +DIGITALIZE +DIGITALIZED +DIGITALIZES +DIGITALIZING +DIGITALLY +DIGITALS +DIGITATE +DIGITATED +DIGITATELY +DIGITIGRADE +DIGITIZATION +DIGITIZATIONS +DIGITIZE +DIGITIZED +DIGITIZER +DIGITIZERS +DIGITIZES +DIGITIZING +DIGITONIN +DIGITONINS +DIGITOXIGENIN +DIGITOXIGENINS +DIGITOXIN +DIGITOXINS +DIGITS +DIGLOSSIA +DIGLOSSIAS +DIGLOSSIC +DIGLOT +DIGLOTS +DIGLYCERIDE +DIGLYCERIDES +DIGNIFIED +DIGNIFIES +DIGNIFY +DIGNIFYING +DIGNITARIES +DIGNITARY +DIGNITIES +DIGNITY +DIGOXIN +DIGOXINS +DIGRAPH +DIGRAPHIC +DIGRAPHICALLY +DIGRAPHS +DIGRESS +DIGRESSED +DIGRESSES +DIGRESSING +DIGRESSION +DIGRESSIONAL +DIGRESSIONARY +DIGRESSIONS +DIGRESSIVE +DIGRESSIVELY +DIGRESSIVENESS +DIGS +DIHEDRAL +DIHEDRALS +DIHEDRON +DIHEDRONS +DIHYBRID +DIHYBRIDS +DIHYDRIC +DIKDIK +DIKDIKS +DIKE +DIKED +DIKER +DIKERS +DIKES +DIKEY +DIKING +DIKTAT +DIKTATS +DILAPIDATE +DILAPIDATED +DILAPIDATES +DILAPIDATING +DILAPIDATION +DILAPIDATIONS +DILATABILITIES +DILATABILITY +DILATABLE +DILATABLY +DILATANCIES +DILATANCY +DILATANT +DILATANTS +DILATATE +DILATATION +DILATATIONAL +DILATATIONS +DILATATOR +DILATATORS +DILATE +DILATED +DILATER +DILATERS +DILATES +DILATING +DILATION +DILATIONS +DILATIVE +DILATOMETER +DILATOMETERS +DILATOMETRIC +DILATOMETRIES +DILATOMETRY +DILATOR +DILATORILY +DILATORINESS +DILATORINESSES +DILATORS +DILATORY +DILDO +DILDOE +DILDOES +DILDOS +DILEMMA +DILEMMAS +DILEMMATIC +DILEMMIC +DILETTANTE +DILETTANTES +DILETTANTI +DILETTANTISH +DILETTANTISM +DILETTANTISMS +DILIGENCE +DILIGENCES +DILIGENT +DILIGENTLY +DILL +DILLED +DILLIES +DILLS +DILLY +DILLYDALLIED +DILLYDALLIES +DILLYDALLY +DILLYDALLYING +DILTIAZEM +DILTIAZEMS +DILUENT +DILUENTS +DILUTE +DILUTED +DILUTENESS +DILUTENESSES +DILUTER +DILUTERS +DILUTES +DILUTING +DILUTION +DILUTIONS +DILUTIVE +DILUTOR +DILUTORS +DILUVIA +DILUVIAL +DILUVIAN +DILUVION +DILUVIONS +DILUVIUM +DILUVIUMS +DIM +DIME +DIMENHYDRINATE +DIMENHYDRINATES +DIMENSION +DIMENSIONAL +DIMENSIONALITY +DIMENSIONALLY +DIMENSIONED +DIMENSIONING +DIMENSIONLESS +DIMENSIONS +DIMER +DIMERCAPROL +DIMERCAPROLS +DIMERIC +DIMERISM +DIMERISMS +DIMERIZATION +DIMERIZATIONS +DIMERIZE +DIMERIZED +DIMERIZES +DIMERIZING +DIMEROUS +DIMERS +DIMES +DIMETER +DIMETERS +DIMETHOATE +DIMETHOATES +DIMETHYL +DIMETHYLS +DIMETRIC +DIMIDIATE +DIMIDIATED +DIMIDIATES +DIMIDIATING +DIMINISH +DIMINISHABLE +DIMINISHED +DIMINISHES +DIMINISHING +DIMINISHMENT +DIMINISHMENTS +DIMINUENDO +DIMINUENDOS +DIMINUTION +DIMINUTIONS +DIMINUTIVE +DIMINUTIVELY +DIMINUTIVENESS +DIMINUTIVES +DIMITIES +DIMITY +DIMLY +DIMMABLE +DIMMED +DIMMER +DIMMERS +DIMMEST +DIMMING +DIMNESS +DIMNESSES +DIMORPH +DIMORPHIC +DIMORPHISM +DIMORPHISMS +DIMORPHOUS +DIMORPHS +DIMOUT +DIMOUTS +DIMPLE +DIMPLED +DIMPLES +DIMPLIER +DIMPLIEST +DIMPLING +DIMPLY +DIMS +DIMWIT +DIMWITS +DIMWITTED +DIN +DINAR +DINARS +DINDLE +DINDLED +DINDLES +DINDLING +DINE +DINED +DINER +DINERIC +DINERO +DINEROS +DINERS +DINES +DINETTE +DINETTES +DING +DINGBAT +DINGBATS +DINGDONG +DINGDONGED +DINGDONGING +DINGDONGS +DINGE +DINGED +DINGER +DINGERS +DINGES +DINGEY +DINGEYS +DINGHIES +DINGHY +DINGIER +DINGIES +DINGIEST +DINGILY +DINGINESS +DINGINESSES +DINGING +DINGLE +DINGLEBERRIES +DINGLEBERRY +DINGLES +DINGO +DINGOES +DINGS +DINGUS +DINGUSES +DINGY +DINING +DINITRO +DINITROBENZENE +DINITROBENZENES +DINITROPHENOL +DINITROPHENOLS +DINK +DINKED +DINKEY +DINKEYS +DINKIER +DINKIES +DINKIEST +DINKING +DINKLY +DINKS +DINKUM +DINKUMS +DINKY +DINNED +DINNER +DINNERLESS +DINNERS +DINNERTIME +DINNERTIMES +DINNERWARE +DINNERWARES +DINNING +DINO +DINOFLAGELLATE +DINOFLAGELLATES +DINOS +DINOSAUR +DINOSAURIAN +DINOSAURS +DINOTHERE +DINOTHERES +DINS +DINT +DINTED +DINTING +DINTS +DINUCLEOTIDE +DINUCLEOTIDES +DIOBOL +DIOBOLON +DIOBOLONS +DIOBOLS +DIOCESAN +DIOCESANS +DIOCESE +DIOCESES +DIODE +DIODES +DIOECIES +DIOECIOUS +DIOECISM +DIOECISMS +DIOECY +DIOESTRUS +DIOESTRUSES +DIOICOUS +DIOL +DIOLEFIN +DIOLEFINS +DIOLS +DIONYSIAC +DIONYSIAN +DIOPSIDE +DIOPSIDES +DIOPSIDIC +DIOPTASE +DIOPTASES +DIOPTER +DIOPTERS +DIOPTRAL +DIOPTRE +DIOPTRES +DIOPTRIC +DIOPTRICS +DIORAMA +DIORAMAS +DIORAMIC +DIORITE +DIORITES +DIORITIC +DIOSGENIN +DIOSGENINS +DIOXAN +DIOXANE +DIOXANES +DIOXANS +DIOXID +DIOXIDE +DIOXIDES +DIOXIDS +DIOXIN +DIOXINS +DIP +DIPEPTIDASE +DIPEPTIDASES +DIPEPTIDE +DIPEPTIDES +DIPHASE +DIPHASIC +DIPHENHYDRAMINE +DIPHENYL +DIPHENYLAMINE +DIPHENYLAMINES +DIPHENYLS +DIPHOSGENE +DIPHOSGENES +DIPHOSPHATE +DIPHOSPHATES +DIPHTHERIA +DIPHTHERIAL +DIPHTHERIAS +DIPHTHERITIC +DIPHTHEROID +DIPHTHEROIDS +DIPHTHONG +DIPHTHONGAL +DIPHTHONGED +DIPHTHONGING +DIPHTHONGIZE +DIPHTHONGIZED +DIPHTHONGIZES +DIPHTHONGIZING +DIPHTHONGS +DIPHYLETIC +DIPHYODONT +DIPLEGIA +DIPLEGIAS +DIPLEGIC +DIPLEX +DIPLEXER +DIPLEXERS +DIPLOBLASTIC +DIPLOCOCCI +DIPLOCOCCUS +DIPLODOCUS +DIPLODOCUSES +DIPLOE +DIPLOES +DIPLOIC +DIPLOID +DIPLOIDIC +DIPLOIDIES +DIPLOIDS +DIPLOIDY +DIPLOMA +DIPLOMACIES +DIPLOMACY +DIPLOMAED +DIPLOMAING +DIPLOMAS +DIPLOMAT +DIPLOMATA +DIPLOMATE +DIPLOMATES +DIPLOMATIC +DIPLOMATICALLY +DIPLOMATIST +DIPLOMATISTS +DIPLOMATS +DIPLONT +DIPLONTIC +DIPLONTS +DIPLOPHASE +DIPLOPHASES +DIPLOPIA +DIPLOPIAS +DIPLOPIC +DIPLOPOD +DIPLOPODS +DIPLOSES +DIPLOSIS +DIPLOTENE +DIPLOTENES +DIPNET +DIPNETS +DIPNETTED +DIPNETTING +DIPNOAN +DIPNOANS +DIPODIC +DIPODIES +DIPODY +DIPOLAR +DIPOLE +DIPOLES +DIPPABLE +DIPPED +DIPPER +DIPPERFUL +DIPPERFULS +DIPPERS +DIPPIER +DIPPIEST +DIPPINESS +DIPPINESSES +DIPPING +DIPPY +DIPROTIC +DIPS +DIPSADES +DIPSAS +DIPSHIT +DIPSHITS +DIPSO +DIPSOMANIA +DIPSOMANIAC +DIPSOMANIACAL +DIPSOMANIACS +DIPSOMANIAS +DIPSOS +DIPSTICK +DIPSTICKS +DIPT +DIPTERA +DIPTERAL +DIPTERAN +DIPTERANS +DIPTEROCARP +DIPTEROCARPS +DIPTERON +DIPTEROUS +DIPTYCA +DIPTYCAS +DIPTYCH +DIPTYCHS +DIQUAT +DIQUATS +DIRAM +DIRAMS +DIRDUM +DIRDUMS +DIRE +DIRECT +DIRECTED +DIRECTEDNESS +DIRECTEDNESSES +DIRECTER +DIRECTEST +DIRECTING +DIRECTION +DIRECTIONAL +DIRECTIONALITY +DIRECTIONLESS +DIRECTIONS +DIRECTIVE +DIRECTIVES +DIRECTIVITIES +DIRECTIVITY +DIRECTLY +DIRECTNESS +DIRECTNESSES +DIRECTOR +DIRECTORATE +DIRECTORATES +DIRECTORIAL +DIRECTORIES +DIRECTORS +DIRECTORSHIP +DIRECTORSHIPS +DIRECTORY +DIRECTRESS +DIRECTRESSES +DIRECTRICE +DIRECTRICES +DIRECTRIX +DIRECTRIXES +DIRECTS +DIREFUL +DIREFULLY +DIRELY +DIRENESS +DIRENESSES +DIRER +DIREST +DIRGE +DIRGEFUL +DIRGELIKE +DIRGES +DIRHAM +DIRHAMS +DIRIGIBLE +DIRIGIBLES +DIRIGISME +DIRIGISMES +DIRIGISTE +DIRIMENT +DIRK +DIRKED +DIRKING +DIRKS +DIRL +DIRLED +DIRLING +DIRLS +DIRNDL +DIRNDLS +DIRT +DIRTBAG +DIRTBAGS +DIRTIED +DIRTIER +DIRTIES +DIRTIEST +DIRTILY +DIRTINESS +DIRTINESSES +DIRTS +DIRTY +DIRTYING +DIS +DISABILITIES +DISABILITY +DISABLE +DISABLED +DISABLEMENT +DISABLEMENTS +DISABLER +DISABLERS +DISABLES +DISABLING +DISABUSAL +DISABUSALS +DISABUSE +DISABUSED +DISABUSES +DISABUSING +DISACCHARIDASE +DISACCHARIDASES +DISACCHARIDE +DISACCHARIDES +DISACCORD +DISACCORDED +DISACCORDING +DISACCORDS +DISACCUSTOM +DISACCUSTOMED +DISACCUSTOMING +DISACCUSTOMS +DISADVANTAGE +DISADVANTAGED +DISADVANTAGEOUS +DISADVANTAGES +DISADVANTAGING +DISAFFECT +DISAFFECTED +DISAFFECTING +DISAFFECTION +DISAFFECTIONS +DISAFFECTS +DISAFFILIATE +DISAFFILIATED +DISAFFILIATES +DISAFFILIATING +DISAFFILIATION +DISAFFILIATIONS +DISAFFIRM +DISAFFIRMANCE +DISAFFIRMANCES +DISAFFIRMED +DISAFFIRMING +DISAFFIRMS +DISAGGREGATE +DISAGGREGATED +DISAGGREGATES +DISAGGREGATING +DISAGGREGATION +DISAGGREGATIONS +DISAGGREGATIVE +DISAGREE +DISAGREEABLE +DISAGREEABLY +DISAGREED +DISAGREEING +DISAGREEMENT +DISAGREEMENTS +DISAGREES +DISALLOW +DISALLOWANCE +DISALLOWANCES +DISALLOWED +DISALLOWING +DISALLOWS +DISAMBIGUATE +DISAMBIGUATED +DISAMBIGUATES +DISAMBIGUATING +DISAMBIGUATION +DISAMBIGUATIONS +DISANNUL +DISANNULLED +DISANNULLING +DISANNULS +DISAPPEAR +DISAPPEARANCE +DISAPPEARANCES +DISAPPEARED +DISAPPEARING +DISAPPEARS +DISAPPOINT +DISAPPOINTED +DISAPPOINTEDLY +DISAPPOINTING +DISAPPOINTINGLY +DISAPPOINTMENT +DISAPPOINTMENTS +DISAPPOINTS +DISAPPROBATION +DISAPPROBATIONS +DISAPPROVAL +DISAPPROVALS +DISAPPROVE +DISAPPROVED +DISAPPROVER +DISAPPROVERS +DISAPPROVES +DISAPPROVING +DISAPPROVINGLY +DISARM +DISARMAMENT +DISARMAMENTS +DISARMED +DISARMER +DISARMERS +DISARMING +DISARMINGLY +DISARMS +DISARRANGE +DISARRANGED +DISARRANGEMENT +DISARRANGEMENTS +DISARRANGES +DISARRANGING +DISARRAY +DISARRAYED +DISARRAYING +DISARRAYS +DISARTICULATE +DISARTICULATED +DISARTICULATES +DISARTICULATING +DISARTICULATION +DISASSEMBLE +DISASSEMBLED +DISASSEMBLES +DISASSEMBLIES +DISASSEMBLING +DISASSEMBLY +DISASSOCIATE +DISASSOCIATED +DISASSOCIATES +DISASSOCIATING +DISASSOCIATION +DISASSOCIATIONS +DISASTER +DISASTERS +DISASTROUS +DISASTROUSLY +DISAVOW +DISAVOWABLE +DISAVOWAL +DISAVOWALS +DISAVOWED +DISAVOWER +DISAVOWERS +DISAVOWING +DISAVOWS +DISBAND +DISBANDED +DISBANDING +DISBANDMENT +DISBANDMENTS +DISBANDS +DISBAR +DISBARMENT +DISBARMENTS +DISBARRED +DISBARRING +DISBARS +DISBELIEF +DISBELIEFS +DISBELIEVE +DISBELIEVED +DISBELIEVER +DISBELIEVERS +DISBELIEVES +DISBELIEVING +DISBENEFIT +DISBENEFITS +DISBOSOM +DISBOSOMED +DISBOSOMING +DISBOSOMS +DISBOUND +DISBOWEL +DISBOWELED +DISBOWELING +DISBOWELLED +DISBOWELLING +DISBOWELS +DISBRANCH +DISBRANCHED +DISBRANCHES +DISBRANCHING +DISBUD +DISBUDDED +DISBUDDING +DISBUDS +DISBURDEN +DISBURDENED +DISBURDENING +DISBURDENMENT +DISBURDENMENTS +DISBURDENS +DISBURSAL +DISBURSALS +DISBURSE +DISBURSED +DISBURSEMENT +DISBURSEMENTS +DISBURSER +DISBURSERS +DISBURSES +DISBURSING +DISC +DISCALCED +DISCANT +DISCANTED +DISCANTING +DISCANTS +DISCARD +DISCARDABLE +DISCARDED +DISCARDER +DISCARDERS +DISCARDING +DISCARDS +DISCARNATE +DISCASE +DISCASED +DISCASES +DISCASING +DISCED +DISCEPT +DISCEPTED +DISCEPTING +DISCEPTS +DISCERN +DISCERNABLE +DISCERNED +DISCERNER +DISCERNERS +DISCERNIBLE +DISCERNIBLY +DISCERNING +DISCERNINGLY +DISCERNMENT +DISCERNMENTS +DISCERNS +DISCHARGE +DISCHARGEABLE +DISCHARGED +DISCHARGEE +DISCHARGEES +DISCHARGER +DISCHARGERS +DISCHARGES +DISCHARGING +DISCI +DISCIFORM +DISCING +DISCIPLE +DISCIPLED +DISCIPLES +DISCIPLESHIP +DISCIPLESHIPS +DISCIPLINABLE +DISCIPLINAL +DISCIPLINARIAN +DISCIPLINARIANS +DISCIPLINARILY +DISCIPLINARITY +DISCIPLINARY +DISCIPLINE +DISCIPLINED +DISCIPLINER +DISCIPLINERS +DISCIPLINES +DISCIPLING +DISCIPLINING +DISCLAIM +DISCLAIMED +DISCLAIMER +DISCLAIMERS +DISCLAIMING +DISCLAIMS +DISCLAMATION +DISCLAMATIONS +DISCLIKE +DISCLIMAX +DISCLIMAXES +DISCLOSE +DISCLOSED +DISCLOSER +DISCLOSERS +DISCLOSES +DISCLOSING +DISCLOSURE +DISCLOSURES +DISCO +DISCOED +DISCOGRAPHER +DISCOGRAPHERS +DISCOGRAPHIC +DISCOGRAPHICAL +DISCOGRAPHIES +DISCOGRAPHY +DISCOID +DISCOIDAL +DISCOIDS +DISCOING +DISCOLOR +DISCOLORATION +DISCOLORATIONS +DISCOLORED +DISCOLORING +DISCOLORS +DISCOLOUR +DISCOLOURED +DISCOLOURING +DISCOLOURS +DISCOMBOBULATE +DISCOMBOBULATED +DISCOMBOBULATES +DISCOMFIT +DISCOMFITED +DISCOMFITING +DISCOMFITS +DISCOMFITURE +DISCOMFITURES +DISCOMFORT +DISCOMFORTABLE +DISCOMFORTED +DISCOMFORTING +DISCOMFORTS +DISCOMMEND +DISCOMMENDED +DISCOMMENDING +DISCOMMENDS +DISCOMMODE +DISCOMMODED +DISCOMMODES +DISCOMMODING +DISCOMPOSE +DISCOMPOSED +DISCOMPOSES +DISCOMPOSING +DISCOMPOSURE +DISCOMPOSURES +DISCONCERT +DISCONCERTED +DISCONCERTING +DISCONCERTINGLY +DISCONCERTMENT +DISCONCERTMENTS +DISCONCERTS +DISCONFIRM +DISCONFIRMED +DISCONFIRMING +DISCONFIRMS +DISCONFORMITIES +DISCONFORMITY +DISCONNECT +DISCONNECTED +DISCONNECTEDLY +DISCONNECTING +DISCONNECTION +DISCONNECTIONS +DISCONNECTS +DISCONSOLATE +DISCONSOLATELY +DISCONSOLATION +DISCONSOLATIONS +DISCONTENT +DISCONTENTED +DISCONTENTEDLY +DISCONTENTING +DISCONTENTMENT +DISCONTENTMENTS +DISCONTENTS +DISCONTINUANCE +DISCONTINUANCES +DISCONTINUATION +DISCONTINUE +DISCONTINUED +DISCONTINUES +DISCONTINUING +DISCONTINUITIES +DISCONTINUITY +DISCONTINUOUS +DISCONTINUOUSLY +DISCOPHILE +DISCOPHILES +DISCORD +DISCORDANCE +DISCORDANCES +DISCORDANCIES +DISCORDANCY +DISCORDANT +DISCORDANTLY +DISCORDED +DISCORDING +DISCORDS +DISCOS +DISCOTHEQUE +DISCOTHEQUES +DISCOUNT +DISCOUNTABLE +DISCOUNTED +DISCOUNTENANCE +DISCOUNTENANCED +DISCOUNTENANCES +DISCOUNTER +DISCOUNTERS +DISCOUNTING +DISCOUNTS +DISCOURAGE +DISCOURAGEABLE +DISCOURAGED +DISCOURAGEMENT +DISCOURAGEMENTS +DISCOURAGER +DISCOURAGERS +DISCOURAGES +DISCOURAGING +DISCOURAGINGLY +DISCOURSE +DISCOURSED +DISCOURSER +DISCOURSERS +DISCOURSES +DISCOURSING +DISCOURTEOUS +DISCOURTEOUSLY +DISCOURTESIES +DISCOURTESY +DISCOVER +DISCOVERABLE +DISCOVERED +DISCOVERER +DISCOVERERS +DISCOVERIES +DISCOVERING +DISCOVERS +DISCOVERT +DISCOVERY +DISCREDIT +DISCREDITABLE +DISCREDITABLY +DISCREDITED +DISCREDITING +DISCREDITS +DISCREET +DISCREETER +DISCREETEST +DISCREETLY +DISCREETNESS +DISCREETNESSES +DISCREPANCIES +DISCREPANCY +DISCREPANT +DISCREPANTLY +DISCRETE +DISCRETELY +DISCRETENESS +DISCRETENESSES +DISCRETION +DISCRETIONARY +DISCRETIONS +DISCRIMINABLE +DISCRIMINABLY +DISCRIMINANT +DISCRIMINANTS +DISCRIMINATE +DISCRIMINATED +DISCRIMINATES +DISCRIMINATING +DISCRIMINATION +DISCRIMINATIONS +DISCRIMINATIVE +DISCRIMINATOR +DISCRIMINATORS +DISCRIMINATORY +DISCROWN +DISCROWNED +DISCROWNING +DISCROWNS +DISCS +DISCURSIVE +DISCURSIVELY +DISCURSIVENESS +DISCUS +DISCUSES +DISCUSS +DISCUSSABLE +DISCUSSANT +DISCUSSANTS +DISCUSSED +DISCUSSER +DISCUSSERS +DISCUSSES +DISCUSSIBLE +DISCUSSING +DISCUSSION +DISCUSSIONS +DISDAIN +DISDAINED +DISDAINFUL +DISDAINFULLY +DISDAINFULNESS +DISDAINING +DISDAINS +DISEASE +DISEASED +DISEASES +DISEASING +DISECONOMIES +DISECONOMY +DISEMBARK +DISEMBARKATION +DISEMBARKATIONS +DISEMBARKED +DISEMBARKING +DISEMBARKS +DISEMBARRASS +DISEMBARRASSED +DISEMBARRASSES +DISEMBARRASSING +DISEMBODIED +DISEMBODIES +DISEMBODY +DISEMBODYING +DISEMBOGUE +DISEMBOGUED +DISEMBOGUES +DISEMBOGUING +DISEMBOWEL +DISEMBOWELED +DISEMBOWELING +DISEMBOWELLED +DISEMBOWELLING +DISEMBOWELMENT +DISEMBOWELMENTS +DISEMBOWELS +DISEMPLOY +DISEMPLOYED +DISEMPLOYING +DISEMPLOYS +DISENABLE +DISENABLED +DISENABLES +DISENABLING +DISENCHANT +DISENCHANTED +DISENCHANTER +DISENCHANTERS +DISENCHANTING +DISENCHANTINGLY +DISENCHANTMENT +DISENCHANTMENTS +DISENCHANTS +DISENCUMBER +DISENCUMBERED +DISENCUMBERING +DISENCUMBERS +DISENDOW +DISENDOWED +DISENDOWER +DISENDOWERS +DISENDOWING +DISENDOWMENT +DISENDOWMENTS +DISENDOWS +DISENFRANCHISE +DISENFRANCHISED +DISENFRANCHISES +DISENGAGE +DISENGAGED +DISENGAGEMENT +DISENGAGEMENTS +DISENGAGES +DISENGAGING +DISENTAIL +DISENTAILED +DISENTAILING +DISENTAILS +DISENTANGLE +DISENTANGLED +DISENTANGLEMENT +DISENTANGLES +DISENTANGLING +DISENTHRAL +DISENTHRALL +DISENTHRALLED +DISENTHRALLING +DISENTHRALLS +DISENTHRALS +DISENTITLE +DISENTITLED +DISENTITLES +DISENTITLING +DISEQUILIBRATE +DISEQUILIBRATED +DISEQUILIBRATES +DISEQUILIBRIA +DISEQUILIBRIUM +DISEQUILIBRIUMS +DISESTABLISH +DISESTABLISHED +DISESTABLISHES +DISESTABLISHING +DISESTEEM +DISESTEEMED +DISESTEEMING +DISESTEEMS +DISEUR +DISEURS +DISEUSE +DISEUSES +DISFAVOR +DISFAVORED +DISFAVORING +DISFAVORS +DISFAVOUR +DISFAVOURED +DISFAVOURING +DISFAVOURS +DISFIGURE +DISFIGURED +DISFIGUREMENT +DISFIGUREMENTS +DISFIGURES +DISFIGURING +DISFRANCHISE +DISFRANCHISED +DISFRANCHISES +DISFRANCHISING +DISFROCK +DISFROCKED +DISFROCKING +DISFROCKS +DISFUNCTION +DISFUNCTIONS +DISFURNISH +DISFURNISHED +DISFURNISHES +DISFURNISHING +DISFURNISHMENT +DISFURNISHMENTS +DISGORGE +DISGORGED +DISGORGES +DISGORGING +DISGRACE +DISGRACED +DISGRACEFUL +DISGRACEFULLY +DISGRACEFULNESS +DISGRACER +DISGRACERS +DISGRACES +DISGRACING +DISGRUNTLE +DISGRUNTLED +DISGRUNTLEMENT +DISGRUNTLEMENTS +DISGRUNTLES +DISGRUNTLING +DISGUISE +DISGUISED +DISGUISEDLY +DISGUISEMENT +DISGUISEMENTS +DISGUISER +DISGUISERS +DISGUISES +DISGUISING +DISGUST +DISGUSTED +DISGUSTEDLY +DISGUSTFUL +DISGUSTFULLY +DISGUSTING +DISGUSTINGLY +DISGUSTS +DISH +DISHABILLE +DISHABILLES +DISHARMONIES +DISHARMONIOUS +DISHARMONIZE +DISHARMONIZED +DISHARMONIZES +DISHARMONIZING +DISHARMONY +DISHCLOTH +DISHCLOTHS +DISHCLOUT +DISHCLOUTS +DISHDASHA +DISHDASHAS +DISHEARTEN +DISHEARTENED +DISHEARTENING +DISHEARTENINGLY +DISHEARTENMENT +DISHEARTENMENTS +DISHEARTENS +DISHED +DISHELM +DISHELMED +DISHELMING +DISHELMS +DISHERIT +DISHERITED +DISHERITING +DISHERITS +DISHES +DISHEVEL +DISHEVELED +DISHEVELING +DISHEVELLED +DISHEVELLING +DISHEVELS +DISHFUL +DISHFULS +DISHIER +DISHIEST +DISHING +DISHLIKE +DISHONEST +DISHONESTIES +DISHONESTLY +DISHONESTY +DISHONOR +DISHONORABLE +DISHONORABLY +DISHONORED +DISHONORER +DISHONORERS +DISHONORING +DISHONORS +DISHPAN +DISHPANS +DISHRAG +DISHRAGS +DISHTOWEL +DISHTOWELS +DISHWARE +DISHWARES +DISHWASHER +DISHWASHERS +DISHWATER +DISHWATERS +DISHY +DISILLUSION +DISILLUSIONED +DISILLUSIONING +DISILLUSIONMENT +DISILLUSIONS +DISINCENTIVE +DISINCENTIVES +DISINCLINATION +DISINCLINATIONS +DISINCLINE +DISINCLINED +DISINCLINES +DISINCLINING +DISINFECT +DISINFECTANT +DISINFECTANTS +DISINFECTED +DISINFECTING +DISINFECTION +DISINFECTIONS +DISINFECTS +DISINFEST +DISINFESTANT +DISINFESTANTS +DISINFESTATION +DISINFESTATIONS +DISINFESTED +DISINFESTING +DISINFESTS +DISINFLATION +DISINFLATIONARY +DISINFLATIONS +DISINFORM +DISINFORMATION +DISINFORMATIONS +DISINFORMED +DISINFORMING +DISINFORMS +DISINGENUOUS +DISINGENUOUSLY +DISINHERIT +DISINHERITANCE +DISINHERITANCES +DISINHERITED +DISINHERITING +DISINHERITS +DISINHIBIT +DISINHIBITED +DISINHIBITING +DISINHIBITION +DISINHIBITIONS +DISINHIBITS +DISINTEGRATE +DISINTEGRATED +DISINTEGRATES +DISINTEGRATING +DISINTEGRATION +DISINTEGRATIONS +DISINTEGRATIVE +DISINTEGRATOR +DISINTEGRATORS +DISINTER +DISINTEREST +DISINTERESTED +DISINTERESTEDLY +DISINTERESTING +DISINTERESTS +DISINTERMENT +DISINTERMENTS +DISINTERRED +DISINTERRING +DISINTERS +DISINTOXICATE +DISINTOXICATED +DISINTOXICATES +DISINTOXICATING +DISINTOXICATION +DISINVEST +DISINVESTED +DISINVESTING +DISINVESTMENT +DISINVESTMENTS +DISINVESTS +DISINVITE +DISINVITED +DISINVITES +DISINVITING +DISJECT +DISJECTED +DISJECTING +DISJECTS +DISJOIN +DISJOINED +DISJOINING +DISJOINS +DISJOINT +DISJOINTED +DISJOINTEDLY +DISJOINTEDNESS +DISJOINTING +DISJOINTS +DISJUNCT +DISJUNCTION +DISJUNCTIONS +DISJUNCTIVE +DISJUNCTIVELY +DISJUNCTIVES +DISJUNCTS +DISJUNCTURE +DISJUNCTURES +DISK +DISKED +DISKETTE +DISKETTES +DISKING +DISKLIKE +DISKS +DISLIKABLE +DISLIKE +DISLIKEABLE +DISLIKED +DISLIKER +DISLIKERS +DISLIKES +DISLIKING +DISLIMN +DISLIMNED +DISLIMNING +DISLIMNS +DISLOCATE +DISLOCATED +DISLOCATES +DISLOCATING +DISLOCATION +DISLOCATIONS +DISLODGE +DISLODGED +DISLODGEMENT +DISLODGEMENTS +DISLODGES +DISLODGING +DISLODGMENT +DISLODGMENTS +DISLOYAL +DISLOYALLY +DISLOYALTIES +DISLOYALTY +DISMAL +DISMALER +DISMALEST +DISMALLY +DISMALNESS +DISMALNESSES +DISMALS +DISMANTLE +DISMANTLED +DISMANTLEMENT +DISMANTLEMENTS +DISMANTLES +DISMANTLING +DISMAST +DISMASTED +DISMASTING +DISMASTS +DISMAY +DISMAYED +DISMAYING +DISMAYINGLY +DISMAYS +DISME +DISMEMBER +DISMEMBERED +DISMEMBERING +DISMEMBERMENT +DISMEMBERMENTS +DISMEMBERS +DISMES +DISMISS +DISMISSAL +DISMISSALS +DISMISSED +DISMISSES +DISMISSING +DISMISSION +DISMISSIONS +DISMISSIVE +DISMISSIVELY +DISMOUNT +DISMOUNTED +DISMOUNTING +DISMOUNTS +DISOBEDIENCE +DISOBEDIENCES +DISOBEDIENT +DISOBEDIENTLY +DISOBEY +DISOBEYED +DISOBEYER +DISOBEYERS +DISOBEYING +DISOBEYS +DISOBLIGE +DISOBLIGED +DISOBLIGES +DISOBLIGING +DISOMIC +DISORDER +DISORDERED +DISORDEREDLY +DISORDEREDNESS +DISORDERING +DISORDERLINESS +DISORDERLY +DISORDERS +DISORGANIZATION +DISORGANIZE +DISORGANIZED +DISORGANIZES +DISORGANIZING +DISORIENT +DISORIENTATE +DISORIENTATED +DISORIENTATES +DISORIENTATING +DISORIENTATION +DISORIENTATIONS +DISORIENTED +DISORIENTING +DISORIENTS +DISOWN +DISOWNED +DISOWNING +DISOWNMENT +DISOWNMENTS +DISOWNS +DISPARAGE +DISPARAGED +DISPARAGEMENT +DISPARAGEMENTS +DISPARAGER +DISPARAGERS +DISPARAGES +DISPARAGING +DISPARAGINGLY +DISPARATE +DISPARATELY +DISPARATENESS +DISPARATENESSES +DISPARITIES +DISPARITY +DISPART +DISPARTED +DISPARTING +DISPARTS +DISPASSION +DISPASSIONATE +DISPASSIONATELY +DISPASSIONS +DISPATCH +DISPATCHED +DISPATCHER +DISPATCHERS +DISPATCHES +DISPATCHING +DISPEL +DISPELLED +DISPELLER +DISPELLERS +DISPELLING +DISPELS +DISPEND +DISPENDED +DISPENDING +DISPENDS +DISPENSABILITY +DISPENSABLE +DISPENSARIES +DISPENSARY +DISPENSATION +DISPENSATIONAL +DISPENSATIONS +DISPENSATORIES +DISPENSATORY +DISPENSE +DISPENSED +DISPENSER +DISPENSERS +DISPENSES +DISPENSING +DISPEOPLE +DISPEOPLED +DISPEOPLES +DISPEOPLING +DISPERSAL +DISPERSALS +DISPERSANT +DISPERSANTS +DISPERSE +DISPERSED +DISPERSEDLY +DISPERSER +DISPERSERS +DISPERSES +DISPERSIBLE +DISPERSING +DISPERSION +DISPERSIONS +DISPERSIVE +DISPERSIVELY +DISPERSIVENESS +DISPERSOID +DISPERSOIDS +DISPIRIT +DISPIRITED +DISPIRITEDLY +DISPIRITEDNESS +DISPIRITING +DISPIRITS +DISPITEOUS +DISPLACE +DISPLACEABLE +DISPLACED +DISPLACEMENT +DISPLACEMENTS +DISPLACER +DISPLACERS +DISPLACES +DISPLACING +DISPLANT +DISPLANTED +DISPLANTING +DISPLANTS +DISPLAY +DISPLAYABLE +DISPLAYED +DISPLAYER +DISPLAYERS +DISPLAYING +DISPLAYS +DISPLEASE +DISPLEASED +DISPLEASES +DISPLEASING +DISPLEASURE +DISPLEASURES +DISPLODE +DISPLODED +DISPLODES +DISPLODING +DISPLOSION +DISPLOSIONS +DISPLUME +DISPLUMED +DISPLUMES +DISPLUMING +DISPORT +DISPORTED +DISPORTING +DISPORTMENT +DISPORTMENTS +DISPORTS +DISPOSABILITIES +DISPOSABILITY +DISPOSABLE +DISPOSABLES +DISPOSAL +DISPOSALS +DISPOSE +DISPOSED +DISPOSER +DISPOSERS +DISPOSES +DISPOSING +DISPOSITION +DISPOSITIONAL +DISPOSITIONS +DISPOSITIVE +DISPOSSESS +DISPOSSESSED +DISPOSSESSES +DISPOSSESSING +DISPOSSESSION +DISPOSSESSIONS +DISPOSSESSOR +DISPOSSESSORS +DISPOSURE +DISPOSURES +DISPRAISE +DISPRAISED +DISPRAISER +DISPRAISERS +DISPRAISES +DISPRAISING +DISPRAISINGLY +DISPREAD +DISPREADING +DISPREADS +DISPRIZE +DISPRIZED +DISPRIZES +DISPRIZING +DISPROOF +DISPROOFS +DISPROPORTION +DISPROPORTIONAL +DISPROPORTIONED +DISPROPORTIONS +DISPROVABLE +DISPROVAL +DISPROVALS +DISPROVE +DISPROVED +DISPROVEN +DISPROVER +DISPROVERS +DISPROVES +DISPROVING +DISPUTABLE +DISPUTABLY +DISPUTANT +DISPUTANTS +DISPUTATION +DISPUTATIONS +DISPUTATIOUS +DISPUTATIOUSLY +DISPUTE +DISPUTED +DISPUTER +DISPUTERS +DISPUTES +DISPUTING +DISQUALIFIED +DISQUALIFIES +DISQUALIFY +DISQUALIFYING +DISQUANTITIED +DISQUANTITIES +DISQUANTITY +DISQUANTITYING +DISQUIET +DISQUIETED +DISQUIETING +DISQUIETINGLY +DISQUIETLY +DISQUIETS +DISQUIETUDE +DISQUIETUDES +DISQUISITION +DISQUISITIONS +DISRATE +DISRATED +DISRATES +DISRATING +DISREGARD +DISREGARDED +DISREGARDFUL +DISREGARDING +DISREGARDS +DISRELATED +DISRELATION +DISRELATIONS +DISRELISH +DISRELISHED +DISRELISHES +DISRELISHING +DISREMEMBER +DISREMEMBERED +DISREMEMBERING +DISREMEMBERS +DISREPAIR +DISREPAIRS +DISREPUTABILITY +DISREPUTABLE +DISREPUTABLY +DISREPUTE +DISREPUTES +DISRESPECT +DISRESPECTABLE +DISRESPECTED +DISRESPECTFUL +DISRESPECTFULLY +DISRESPECTING +DISRESPECTS +DISROBE +DISROBED +DISROBER +DISROBERS +DISROBES +DISROBING +DISROOT +DISROOTED +DISROOTING +DISROOTS +DISRUPT +DISRUPTED +DISRUPTER +DISRUPTERS +DISRUPTING +DISRUPTION +DISRUPTIONS +DISRUPTIVE +DISRUPTIVELY +DISRUPTIVENESS +DISRUPTOR +DISRUPTORS +DISRUPTS +DISS +DISSATISFACTION +DISSATISFACTORY +DISSATISFIED +DISSATISFIES +DISSATISFY +DISSATISFYING +DISSAVE +DISSAVED +DISSAVES +DISSAVING +DISSEAT +DISSEATED +DISSEATING +DISSEATS +DISSECT +DISSECTED +DISSECTING +DISSECTION +DISSECTIONS +DISSECTOR +DISSECTORS +DISSECTS +DISSED +DISSEISE +DISSEISED +DISSEISEE +DISSEISEES +DISSEISES +DISSEISIN +DISSEISING +DISSEISINS +DISSEISOR +DISSEISORS +DISSEIZE +DISSEIZED +DISSEIZEE +DISSEIZEES +DISSEIZES +DISSEIZIN +DISSEIZING +DISSEIZINS +DISSEIZOR +DISSEIZORS +DISSEMBLE +DISSEMBLED +DISSEMBLER +DISSEMBLERS +DISSEMBLES +DISSEMBLING +DISSEMINATE +DISSEMINATED +DISSEMINATES +DISSEMINATING +DISSEMINATION +DISSEMINATIONS +DISSEMINATOR +DISSEMINATORS +DISSEMINULE +DISSEMINULES +DISSENSION +DISSENSIONS +DISSENSUS +DISSENSUSES +DISSENT +DISSENTED +DISSENTER +DISSENTERS +DISSENTIENT +DISSENTIENTS +DISSENTING +DISSENTION +DISSENTIONS +DISSENTIOUS +DISSENTS +DISSEPIMENT +DISSEPIMENTS +DISSERT +DISSERTATE +DISSERTATED +DISSERTATES +DISSERTATING +DISSERTATION +DISSERTATIONAL +DISSERTATIONS +DISSERTATOR +DISSERTATORS +DISSERTED +DISSERTING +DISSERTS +DISSERVE +DISSERVED +DISSERVES +DISSERVICE +DISSERVICEABLE +DISSERVICES +DISSERVING +DISSES +DISSEVER +DISSEVERANCE +DISSEVERANCES +DISSEVERED +DISSEVERING +DISSEVERMENT +DISSEVERMENTS +DISSEVERS +DISSIDENCE +DISSIDENCES +DISSIDENT +DISSIDENTS +DISSIMILAR +DISSIMILARITIES +DISSIMILARITY +DISSIMILARLY +DISSIMILARS +DISSIMILATE +DISSIMILATED +DISSIMILATES +DISSIMILATING +DISSIMILATION +DISSIMILATIONS +DISSIMILATORY +DISSIMILITUDE +DISSIMILITUDES +DISSIMULATE +DISSIMULATED +DISSIMULATES +DISSIMULATING +DISSIMULATION +DISSIMULATIONS +DISSIMULATOR +DISSIMULATORS +DISSING +DISSIPATE +DISSIPATED +DISSIPATEDLY +DISSIPATEDNESS +DISSIPATER +DISSIPATERS +DISSIPATES +DISSIPATING +DISSIPATION +DISSIPATIONS +DISSIPATIVE +DISSOCIABILITY +DISSOCIABLE +DISSOCIAL +DISSOCIATE +DISSOCIATED +DISSOCIATES +DISSOCIATING +DISSOCIATION +DISSOCIATIONS +DISSOCIATIVE +DISSOLUBLE +DISSOLUTE +DISSOLUTELY +DISSOLUTENESS +DISSOLUTENESSES +DISSOLUTION +DISSOLUTIONS +DISSOLVABLE +DISSOLVE +DISSOLVED +DISSOLVENT +DISSOLVENTS +DISSOLVER +DISSOLVERS +DISSOLVES +DISSOLVING +DISSONANCE +DISSONANCES +DISSONANT +DISSONANTLY +DISSUADE +DISSUADED +DISSUADER +DISSUADERS +DISSUADES +DISSUADING +DISSUASION +DISSUASIONS +DISSUASIVE +DISSUASIVELY +DISSUASIVENESS +DISSYLLABLE +DISSYLLABLES +DISSYMMETRIC +DISSYMMETRIES +DISSYMMETRY +DISTAFF +DISTAFFS +DISTAIN +DISTAINED +DISTAINING +DISTAINS +DISTAL +DISTALLY +DISTANCE +DISTANCED +DISTANCES +DISTANCING +DISTANT +DISTANTLY +DISTANTNESS +DISTANTNESSES +DISTASTE +DISTASTED +DISTASTEFUL +DISTASTEFULLY +DISTASTEFULNESS +DISTASTES +DISTASTING +DISTAVES +DISTELFINK +DISTELFINKS +DISTEMPER +DISTEMPERATE +DISTEMPERATURE +DISTEMPERATURES +DISTEMPERED +DISTEMPERING +DISTEMPERS +DISTEND +DISTENDED +DISTENDER +DISTENDERS +DISTENDING +DISTENDS +DISTENSIBILITY +DISTENSIBLE +DISTENSION +DISTENSIONS +DISTENT +DISTENTION +DISTENTIONS +DISTICH +DISTICHAL +DISTICHOUS +DISTICHS +DISTIL +DISTILL +DISTILLATE +DISTILLATES +DISTILLATION +DISTILLATIONS +DISTILLED +DISTILLER +DISTILLERIES +DISTILLERS +DISTILLERY +DISTILLING +DISTILLS +DISTILS +DISTINCT +DISTINCTER +DISTINCTEST +DISTINCTION +DISTINCTIONS +DISTINCTIVE +DISTINCTIVELY +DISTINCTIVENESS +DISTINCTLY +DISTINCTNESS +DISTINCTNESSES +DISTINGUE +DISTINGUISH +DISTINGUISHABLE +DISTINGUISHABLY +DISTINGUISHED +DISTINGUISHES +DISTINGUISHING +DISTOME +DISTOMES +DISTORT +DISTORTED +DISTORTER +DISTORTERS +DISTORTING +DISTORTION +DISTORTIONAL +DISTORTIONS +DISTORTS +DISTRACT +DISTRACTABLE +DISTRACTED +DISTRACTEDLY +DISTRACTIBILITY +DISTRACTIBLE +DISTRACTING +DISTRACTINGLY +DISTRACTION +DISTRACTIONS +DISTRACTIVE +DISTRACTS +DISTRAIN +DISTRAINABLE +DISTRAINED +DISTRAINER +DISTRAINERS +DISTRAINING +DISTRAINOR +DISTRAINORS +DISTRAINS +DISTRAINT +DISTRAINTS +DISTRAIT +DISTRAITE +DISTRAUGHT +DISTRAUGHTLY +DISTRESS +DISTRESSED +DISTRESSES +DISTRESSFUL +DISTRESSFULLY +DISTRESSFULNESS +DISTRESSING +DISTRESSINGLY +DISTRIBUTARIES +DISTRIBUTARY +DISTRIBUTE +DISTRIBUTED +DISTRIBUTEE +DISTRIBUTEES +DISTRIBUTES +DISTRIBUTING +DISTRIBUTION +DISTRIBUTIONAL +DISTRIBUTIONS +DISTRIBUTIVE +DISTRIBUTIVELY +DISTRIBUTIVITY +DISTRIBUTOR +DISTRIBUTORS +DISTRICT +DISTRICTED +DISTRICTING +DISTRICTS +DISTRUST +DISTRUSTED +DISTRUSTFUL +DISTRUSTFULLY +DISTRUSTFULNESS +DISTRUSTING +DISTRUSTS +DISTURB +DISTURBANCE +DISTURBANCES +DISTURBED +DISTURBER +DISTURBERS +DISTURBING +DISTURBINGLY +DISTURBS +DISUBSTITUTED +DISULFATE +DISULFATES +DISULFID +DISULFIDE +DISULFIDES +DISULFIDS +DISULFIRAM +DISULFIRAMS +DISULFOTON +DISULFOTONS +DISUNION +DISUNIONIST +DISUNIONISTS +DISUNIONS +DISUNITE +DISUNITED +DISUNITER +DISUNITERS +DISUNITES +DISUNITIES +DISUNITING +DISUNITY +DISUSE +DISUSED +DISUSES +DISUSING +DISUTILITIES +DISUTILITY +DISVALUE +DISVALUED +DISVALUES +DISVALUING +DISYLLABIC +DISYLLABLE +DISYLLABLES +DISYOKE +DISYOKED +DISYOKES +DISYOKING +DIT +DITA +DITAS +DITCH +DITCHDIGGER +DITCHDIGGERS +DITCHED +DITCHER +DITCHERS +DITCHES +DITCHING +DITE +DITES +DITHEISM +DITHEISMS +DITHEIST +DITHEISTS +DITHER +DITHERED +DITHERER +DITHERERS +DITHERING +DITHERS +DITHERY +DITHIOCARBAMATE +DITHIOL +DITHYRAMB +DITHYRAMBIC +DITHYRAMBICALLY +DITHYRAMBS +DITRANSITIVE +DITRANSITIVES +DITS +DITSIER +DITSIEST +DITSINESS +DITSINESSES +DITSY +DITTANIES +DITTANY +DITTIES +DITTO +DITTOED +DITTOING +DITTOS +DITTY +DITZ +DITZES +DITZIER +DITZIEST +DITZINESS +DITZINESSES +DITZY +DIURESES +DIURESIS +DIURETIC +DIURETICALLY +DIURETICS +DIURNAL +DIURNALLY +DIURNALS +DIURON +DIURONS +DIVA +DIVAGATE +DIVAGATED +DIVAGATES +DIVAGATING +DIVAGATION +DIVAGATIONS +DIVALENCE +DIVALENCES +DIVALENT +DIVAN +DIVANS +DIVARICATE +DIVARICATED +DIVARICATES +DIVARICATING +DIVARICATION +DIVARICATIONS +DIVAS +DIVE +DIVEBOMB +DIVEBOMBED +DIVEBOMBING +DIVEBOMBS +DIVED +DIVER +DIVERGE +DIVERGED +DIVERGENCE +DIVERGENCES +DIVERGENCIES +DIVERGENCY +DIVERGENT +DIVERGENTLY +DIVERGES +DIVERGING +DIVERS +DIVERSE +DIVERSELY +DIVERSENESS +DIVERSENESSES +DIVERSIFICATION +DIVERSIFIED +DIVERSIFIER +DIVERSIFIERS +DIVERSIFIES +DIVERSIFY +DIVERSIFYING +DIVERSION +DIVERSIONARY +DIVERSIONIST +DIVERSIONISTS +DIVERSIONS +DIVERSITIES +DIVERSITY +DIVERT +DIVERTED +DIVERTER +DIVERTERS +DIVERTICULA +DIVERTICULAR +DIVERTICULITIS +DIVERTICULOSES +DIVERTICULOSIS +DIVERTICULUM +DIVERTIMENTI +DIVERTIMENTO +DIVERTIMENTOS +DIVERTING +DIVERTISSEMENT +DIVERTISSEMENTS +DIVERTS +DIVES +DIVEST +DIVESTED +DIVESTING +DIVESTITURE +DIVESTITURES +DIVESTMENT +DIVESTMENTS +DIVESTS +DIVESTURE +DIVESTURES +DIVIDABLE +DIVIDE +DIVIDED +DIVIDEDLY +DIVIDEDNESS +DIVIDEDNESSES +DIVIDEND +DIVIDENDLESS +DIVIDENDS +DIVIDER +DIVIDERS +DIVIDES +DIVIDING +DIVIDUAL +DIVINATION +DIVINATIONS +DIVINATORY +DIVINE +DIVINED +DIVINELY +DIVINER +DIVINERS +DIVINES +DIVINEST +DIVING +DIVINING +DIVINISE +DIVINISED +DIVINISES +DIVINISING +DIVINITIES +DIVINITY +DIVINIZE +DIVINIZED +DIVINIZES +DIVINIZING +DIVISIBILITIES +DIVISIBILITY +DIVISIBLE +DIVISIBLY +DIVISION +DIVISIONAL +DIVISIONISM +DIVISIONISMS +DIVISIONIST +DIVISIONISTS +DIVISIONS +DIVISIVE +DIVISIVELY +DIVISIVENESS +DIVISIVENESSES +DIVISOR +DIVISORS +DIVORCE +DIVORCED +DIVORCEE +DIVORCEES +DIVORCEMENT +DIVORCEMENTS +DIVORCER +DIVORCERS +DIVORCES +DIVORCING +DIVORCIVE +DIVOT +DIVOTS +DIVULGATE +DIVULGATED +DIVULGATES +DIVULGATING +DIVULGE +DIVULGED +DIVULGENCE +DIVULGENCES +DIVULGER +DIVULGERS +DIVULGES +DIVULGING +DIVULSE +DIVULSED +DIVULSES +DIVULSING +DIVULSION +DIVULSIONS +DIVULSIVE +DIVVIED +DIVVIES +DIVVY +DIVVYING +DIWAN +DIWANS +DIXIT +DIXITS +DIZEN +DIZENED +DIZENING +DIZENMENT +DIZENMENTS +DIZENS +DIZYGOTIC +DIZYGOUS +DIZZIED +DIZZIER +DIZZIES +DIZZIEST +DIZZILY +DIZZINESS +DIZZINESSES +DIZZY +DIZZYING +DIZZYINGLY +DJEBEL +DJEBELS +DJELLABA +DJELLABAH +DJELLABAHS +DJELLABAS +DJIN +DJINN +DJINNI +DJINNS +DJINNY +DJINS +DO +DOABLE +DOAT +DOATED +DOATING +DOATS +DOBBER +DOBBERS +DOBBIES +DOBBIN +DOBBINS +DOBBY +DOBIE +DOBIES +DOBLA +DOBLAS +DOBLON +DOBLONES +DOBLONS +DOBRA +DOBRAS +DOBRO +DOBROS +DOBSON +DOBSONFLIES +DOBSONFLY +DOBSONS +DOBY +DOC +DOCENT +DOCENTS +DOCETIC +DOCILE +DOCILELY +DOCILITIES +DOCILITY +DOCK +DOCKAGE +DOCKAGES +DOCKED +DOCKER +DOCKERS +DOCKET +DOCKETED +DOCKETING +DOCKETS +DOCKHAND +DOCKHANDS +DOCKING +DOCKLAND +DOCKLANDS +DOCKMASTER +DOCKMASTERS +DOCKS +DOCKSIDE +DOCKSIDES +DOCKWORKER +DOCKWORKERS +DOCKYARD +DOCKYARDS +DOCS +DOCTOR +DOCTORAL +DOCTORATE +DOCTORATES +DOCTORED +DOCTORIAL +DOCTORING +DOCTORLESS +DOCTORLY +DOCTORS +DOCTORSHIP +DOCTORSHIPS +DOCTRINAIRE +DOCTRINAIRES +DOCTRINAIRISM +DOCTRINAIRISMS +DOCTRINAL +DOCTRINALLY +DOCTRINE +DOCTRINES +DOCUDRAMA +DOCUDRAMAS +DOCUMENT +DOCUMENTABLE +DOCUMENTAL +DOCUMENTALIST +DOCUMENTALISTS +DOCUMENTARIAN +DOCUMENTARIANS +DOCUMENTARIES +DOCUMENTARILY +DOCUMENTARIST +DOCUMENTARISTS +DOCUMENTARY +DOCUMENTATION +DOCUMENTATIONAL +DOCUMENTATIONS +DOCUMENTED +DOCUMENTER +DOCUMENTERS +DOCUMENTING +DOCUMENTS +DODDER +DODDERED +DODDERER +DODDERERS +DODDERING +DODDERS +DODDERY +DODECAGON +DODECAGONS +DODECAHEDRA +DODECAHEDRAL +DODECAHEDRON +DODECAHEDRONS +DODECAPHONIC +DODECAPHONIES +DODECAPHONIST +DODECAPHONISTS +DODECAPHONY +DODGE +DODGEBALL +DODGEBALLS +DODGED +DODGEM +DODGEMS +DODGER +DODGERIES +DODGERS +DODGERY +DODGES +DODGIER +DODGIEST +DODGINESS +DODGINESSES +DODGING +DODGY +DODO +DODOES +DODOISM +DODOISMS +DODOS +DOE +DOER +DOERS +DOES +DOESKIN +DOESKINS +DOEST +DOETH +DOFF +DOFFED +DOFFER +DOFFERS +DOFFING +DOFFS +DOG +DOGBANE +DOGBANES +DOGBERRIES +DOGBERRY +DOGCART +DOGCARTS +DOGCATCHER +DOGCATCHERS +DOGDOM +DOGDOMS +DOGE +DOGEAR +DOGEARED +DOGEARING +DOGEARS +DOGEDOM +DOGEDOMS +DOGES +DOGESHIP +DOGESHIPS +DOGEY +DOGEYS +DOGFACE +DOGFACES +DOGFIGHT +DOGFIGHTING +DOGFIGHTS +DOGFISH +DOGFISHES +DOGFOUGHT +DOGGED +DOGGEDLY +DOGGEDNESS +DOGGEDNESSES +DOGGER +DOGGEREL +DOGGERELS +DOGGERIES +DOGGERS +DOGGERY +DOGGIE +DOGGIER +DOGGIES +DOGGIEST +DOGGING +DOGGISH +DOGGISHLY +DOGGISHNESS +DOGGISHNESSES +DOGGO +DOGGONE +DOGGONED +DOGGONEDER +DOGGONEDEST +DOGGONER +DOGGONES +DOGGONEST +DOGGONING +DOGGREL +DOGGRELS +DOGGY +DOGHANGED +DOGHOUSE +DOGHOUSES +DOGIE +DOGIES +DOGLEG +DOGLEGGED +DOGLEGGING +DOGLEGS +DOGLIKE +DOGMA +DOGMAS +DOGMATA +DOGMATIC +DOGMATICAL +DOGMATICALLY +DOGMATICALNESS +DOGMATICS +DOGMATISM +DOGMATISMS +DOGMATIST +DOGMATISTS +DOGMATIZATION +DOGMATIZATIONS +DOGMATIZE +DOGMATIZED +DOGMATIZER +DOGMATIZERS +DOGMATIZES +DOGMATIZING +DOGNAP +DOGNAPED +DOGNAPER +DOGNAPERS +DOGNAPING +DOGNAPPED +DOGNAPPER +DOGNAPPERS +DOGNAPPING +DOGNAPS +DOGROBBER +DOGROBBERS +DOGS +DOGSBODIES +DOGSBODY +DOGSLED +DOGSLEDDED +DOGSLEDDER +DOGSLEDDERS +DOGSLEDDING +DOGSLEDS +DOGTEETH +DOGTOOTH +DOGTROT +DOGTROTS +DOGTROTTED +DOGTROTTING +DOGVANE +DOGVANES +DOGWATCH +DOGWATCHES +DOGWOOD +DOGWOODS +DOGY +DOILED +DOILIES +DOILY +DOING +DOINGS +DOIT +DOITED +DOITS +DOJO +DOJOS +DOL +DOLABRATE +DOLCE +DOLCETTO +DOLCETTOS +DOLCI +DOLDRUMS +DOLE +DOLED +DOLEFUL +DOLEFULLER +DOLEFULLEST +DOLEFULLY +DOLEFULNESS +DOLEFULNESSES +DOLERITE +DOLERITES +DOLERITIC +DOLES +DOLESOME +DOLICHOCEPHALIC +DOLICHOCEPHALY +DOLING +DOLL +DOLLAR +DOLLARIZE +DOLLARIZED +DOLLARIZES +DOLLARIZING +DOLLARS +DOLLED +DOLLHOUSE +DOLLHOUSES +DOLLIED +DOLLIES +DOLLING +DOLLISH +DOLLISHLY +DOLLISHNESS +DOLLISHNESSES +DOLLOP +DOLLOPED +DOLLOPING +DOLLOPS +DOLLS +DOLLY +DOLLYBIRD +DOLLYBIRDS +DOLLYING +DOLMA +DOLMADES +DOLMAN +DOLMANS +DOLMAS +DOLMEN +DOLMENIC +DOLMENS +DOLOMITE +DOLOMITES +DOLOMITIC +DOLOMITIZATION +DOLOMITIZATIONS +DOLOMITIZE +DOLOMITIZED +DOLOMITIZES +DOLOMITIZING +DOLOR +DOLOROSO +DOLOROUS +DOLOROUSLY +DOLOROUSNESS +DOLOROUSNESSES +DOLORS +DOLOUR +DOLOURS +DOLPHIN +DOLPHINFISH +DOLPHINFISHES +DOLPHINS +DOLS +DOLT +DOLTISH +DOLTISHLY +DOLTISHNESS +DOLTISHNESSES +DOLTS +DOM +DOMAIN +DOMAINE +DOMAINES +DOMAINS +DOMAL +DOME +DOMED +DOMELIKE +DOMES +DOMESDAY +DOMESDAYS +DOMESTIC +DOMESTICALLY +DOMESTICATE +DOMESTICATED +DOMESTICATES +DOMESTICATING +DOMESTICATION +DOMESTICATIONS +DOMESTICITIES +DOMESTICITY +DOMESTICS +DOMIC +DOMICAL +DOMICALLY +DOMICIL +DOMICILE +DOMICILED +DOMICILES +DOMICILIARY +DOMICILIATE +DOMICILIATED +DOMICILIATES +DOMICILIATING +DOMICILIATION +DOMICILIATIONS +DOMICILING +DOMICILS +DOMINANCE +DOMINANCES +DOMINANCIES +DOMINANCY +DOMINANT +DOMINANTLY +DOMINANTS +DOMINATE +DOMINATED +DOMINATES +DOMINATING +DOMINATION +DOMINATIONS +DOMINATIVE +DOMINATOR +DOMINATORS +DOMINATRICES +DOMINATRIX +DOMINE +DOMINEER +DOMINEERED +DOMINEERING +DOMINEERINGLY +DOMINEERINGNESS +DOMINEERS +DOMINES +DOMING +DOMINICAL +DOMINICK +DOMINICKER +DOMINICKERS +DOMINICKS +DOMINIE +DOMINIES +DOMINION +DOMINIONS +DOMINIQUE +DOMINIQUES +DOMINIUM +DOMINIUMS +DOMINO +DOMINOES +DOMINOS +DOMS +DON +DONA +DONAS +DONATE +DONATED +DONATES +DONATING +DONATION +DONATIONS +DONATIVE +DONATIVES +DONATOR +DONATORS +DONE +DONEE +DONEES +DONENESS +DONENESSES +DONG +DONGA +DONGAS +DONGLE +DONGLES +DONGOLA +DONGOLAS +DONGS +DONJON +DONJONS +DONKEY +DONKEYS +DONKEYWORK +DONKEYWORKS +DONNA +DONNAS +DONNE +DONNED +DONNEE +DONNEES +DONNERD +DONNERED +DONNERT +DONNICKER +DONNICKERS +DONNIKER +DONNIKERS +DONNING +DONNISH +DONNISHLY +DONNISHNESS +DONNISHNESSES +DONNYBROOK +DONNYBROOKS +DONOR +DONORS +DONORSHIP +DONORSHIPS +DONS +DONSIE +DONSY +DONUT +DONUTS +DONZEL +DONZELS +DOOBIE +DOOBIES +DOODAD +DOODADS +DOODIES +DOODLE +DOODLEBUG +DOODLEBUGS +DOODLED +DOODLER +DOODLERS +DOODLES +DOODLING +DOODOO +DOODOOS +DOODY +DOOFUS +DOOFUSES +DOOHICKEY +DOOHICKEYS +DOOHICKIES +DOOLEE +DOOLEES +DOOLIE +DOOLIES +DOOLY +DOOM +DOOMED +DOOMFUL +DOOMFULLY +DOOMIER +DOOMIEST +DOOMILY +DOOMING +DOOMS +DOOMSAYER +DOOMSAYERS +DOOMSAYING +DOOMSAYINGS +DOOMSDAY +DOOMSDAYER +DOOMSDAYERS +DOOMSDAYS +DOOMSTER +DOOMSTERS +DOOMY +DOOR +DOORBELL +DOORBELLS +DOORJAMB +DOORJAMBS +DOORKEEPER +DOORKEEPERS +DOORKNOB +DOORKNOBS +DOORLESS +DOORMAN +DOORMAT +DOORMATS +DOORMEN +DOORNAIL +DOORNAILS +DOORPLATE +DOORPLATES +DOORPOST +DOORPOSTS +DOORS +DOORSILL +DOORSILLS +DOORSTEP +DOORSTEPS +DOORSTOP +DOORSTOPS +DOORWAY +DOORWAYS +DOORWOMAN +DOORWOMEN +DOORYARD +DOORYARDS +DOOWOP +DOOWOPS +DOOZER +DOOZERS +DOOZIE +DOOZIES +DOOZY +DOPA +DOPAMINE +DOPAMINERGIC +DOPAMINES +DOPANT +DOPANTS +DOPAS +DOPE +DOPED +DOPEHEAD +DOPEHEADS +DOPER +DOPERS +DOPES +DOPESHEET +DOPESHEETS +DOPESTER +DOPESTERS +DOPEY +DOPEYNESS +DOPEYNESSES +DOPIER +DOPIEST +DOPILY +DOPINESS +DOPINESSES +DOPING +DOPINGS +DOPPELGANGER +DOPPELGANGERS +DOPY +DOR +DORADO +DORADOS +DORBEETLE +DORBEETLES +DORBUG +DORBUGS +DORE +DORHAWK +DORHAWKS +DORIES +DORK +DORKIER +DORKIEST +DORKINESS +DORKINESSES +DORKS +DORKY +DORM +DORMANCIES +DORMANCY +DORMANT +DORMER +DORMERED +DORMERS +DORMICE +DORMIE +DORMIENT +DORMIN +DORMINS +DORMITORIES +DORMITORY +DORMOUSE +DORMS +DORMY +DORNECK +DORNECKS +DORNICK +DORNICKS +DORNOCK +DORNOCKS +DORONICUM +DORONICUMS +DORP +DORPER +DORPERS +DORPS +DORR +DORRS +DORS +DORSA +DORSAD +DORSAL +DORSALLY +DORSALS +DORSEL +DORSELS +DORSER +DORSERS +DORSIVENTRAL +DORSIVENTRALITY +DORSIVENTRALLY +DORSOLATERAL +DORSOVENTRAL +DORSOVENTRALITY +DORSOVENTRALLY +DORSUM +DORTY +DORY +DOS +DOSAGE +DOSAGES +DOSE +DOSED +DOSER +DOSERS +DOSES +DOSIMETER +DOSIMETERS +DOSIMETRIC +DOSIMETRIES +DOSIMETRY +DOSING +DOSS +DOSSAL +DOSSALS +DOSSED +DOSSEL +DOSSELS +DOSSER +DOSSERET +DOSSERETS +DOSSERS +DOSSES +DOSSHOUSE +DOSSHOUSES +DOSSIER +DOSSIERS +DOSSIL +DOSSILS +DOSSING +DOST +DOT +DOTAGE +DOTAGES +DOTAL +DOTARD +DOTARDLY +DOTARDS +DOTATION +DOTATIONS +DOTE +DOTED +DOTER +DOTERS +DOTES +DOTH +DOTIER +DOTIEST +DOTING +DOTINGLY +DOTS +DOTTED +DOTTEL +DOTTELS +DOTTER +DOTTEREL +DOTTERELS +DOTTERS +DOTTIER +DOTTIEST +DOTTILY +DOTTINESS +DOTTINESSES +DOTTING +DOTTLE +DOTTLES +DOTTREL +DOTTRELS +DOTTY +DOTY +DOUBLE +DOUBLED +DOUBLEHEADER +DOUBLEHEADERS +DOUBLENESS +DOUBLENESSES +DOUBLER +DOUBLERS +DOUBLES +DOUBLESPEAK +DOUBLESPEAKER +DOUBLESPEAKERS +DOUBLESPEAKS +DOUBLET +DOUBLETHINK +DOUBLETHINKS +DOUBLETON +DOUBLETONS +DOUBLETS +DOUBLING +DOUBLOON +DOUBLOONS +DOUBLURE +DOUBLURES +DOUBLY +DOUBT +DOUBTABLE +DOUBTED +DOUBTER +DOUBTERS +DOUBTFUL +DOUBTFULLY +DOUBTFULNESS +DOUBTFULNESSES +DOUBTING +DOUBTINGLY +DOUBTLESS +DOUBTLESSLY +DOUBTLESSNESS +DOUBTLESSNESSES +DOUBTS +DOUCE +DOUCELY +DOUCEUR +DOUCEURS +DOUCHE +DOUCHEBAG +DOUCHEBAGS +DOUCHED +DOUCHES +DOUCHING +DOUGH +DOUGHBOY +DOUGHBOYS +DOUGHFACE +DOUGHFACES +DOUGHIER +DOUGHIEST +DOUGHLIKE +DOUGHNUT +DOUGHNUTLIKE +DOUGHNUTS +DOUGHS +DOUGHT +DOUGHTIER +DOUGHTIEST +DOUGHTILY +DOUGHTINESS +DOUGHTINESSES +DOUGHTY +DOUGHY +DOULA +DOULAS +DOUM +DOUMA +DOUMAS +DOUMS +DOUPIONI +DOUPIONIS +DOUPPIONI +DOUPPIONIS +DOUR +DOURA +DOURAH +DOURAHS +DOURAS +DOURER +DOUREST +DOURINE +DOURINES +DOURLY +DOURNESS +DOURNESSES +DOUROUCOULI +DOUROUCOULIS +DOUSE +DOUSED +DOUSER +DOUSERS +DOUSES +DOUSING +DOUX +DOUZEPER +DOUZEPERS +DOVE +DOVECOT +DOVECOTE +DOVECOTES +DOVECOTS +DOVEKEY +DOVEKEYS +DOVEKIE +DOVEKIES +DOVELIKE +DOVEN +DOVENED +DOVENING +DOVENS +DOVES +DOVETAIL +DOVETAILED +DOVETAILING +DOVETAILS +DOVISH +DOVISHNESS +DOVISHNESSES +DOW +DOWABLE +DOWAGER +DOWAGERS +DOWDIER +DOWDIES +DOWDIEST +DOWDILY +DOWDINESS +DOWDINESSES +DOWDY +DOWDYISH +DOWED +DOWEL +DOWELED +DOWELING +DOWELLED +DOWELLING +DOWELS +DOWER +DOWERED +DOWERIES +DOWERING +DOWERLESS +DOWERS +DOWERY +DOWIE +DOWING +DOWITCHER +DOWITCHERS +DOWN +DOWNBEAT +DOWNBEATS +DOWNBOW +DOWNBOWS +DOWNBURST +DOWNBURSTS +DOWNCAST +DOWNCASTS +DOWNCOME +DOWNCOMES +DOWNCOURT +DOWNDRAFT +DOWNDRAFTS +DOWNED +DOWNER +DOWNERS +DOWNFALL +DOWNFALLEN +DOWNFALLS +DOWNFIELD +DOWNFORCE +DOWNFORCES +DOWNGRADE +DOWNGRADED +DOWNGRADES +DOWNGRADING +DOWNHAUL +DOWNHAULS +DOWNHEARTED +DOWNHEARTEDLY +DOWNHEARTEDNESS +DOWNHILL +DOWNHILLER +DOWNHILLERS +DOWNHILLS +DOWNIER +DOWNIEST +DOWNINESS +DOWNINESSES +DOWNING +DOWNLAND +DOWNLANDS +DOWNLESS +DOWNLIGHT +DOWNLIGHTS +DOWNLIKE +DOWNLINK +DOWNLINKED +DOWNLINKING +DOWNLINKS +DOWNLOAD +DOWNLOADABLE +DOWNLOADED +DOWNLOADING +DOWNLOADS +DOWNPIPE +DOWNPIPES +DOWNPLAY +DOWNPLAYED +DOWNPLAYING +DOWNPLAYS +DOWNPOUR +DOWNPOURS +DOWNRANGE +DOWNRIGHT +DOWNRIGHTLY +DOWNRIGHTNESS +DOWNRIGHTNESSES +DOWNRIVER +DOWNS +DOWNSCALE +DOWNSCALED +DOWNSCALES +DOWNSCALING +DOWNSHIFT +DOWNSHIFTED +DOWNSHIFTING +DOWNSHIFTS +DOWNSIDE +DOWNSIDES +DOWNSIZE +DOWNSIZED +DOWNSIZES +DOWNSIZING +DOWNSLIDE +DOWNSLIDES +DOWNSLOPE +DOWNSPIN +DOWNSPINS +DOWNSPOUT +DOWNSPOUTS +DOWNSTAGE +DOWNSTAGES +DOWNSTAIR +DOWNSTAIRS +DOWNSTATE +DOWNSTATER +DOWNSTATERS +DOWNSTATES +DOWNSTREAM +DOWNSTROKE +DOWNSTROKES +DOWNSWING +DOWNSWINGS +DOWNTHROW +DOWNTHROWS +DOWNTICK +DOWNTICKS +DOWNTIME +DOWNTIMES +DOWNTOWN +DOWNTOWNER +DOWNTOWNERS +DOWNTOWNS +DOWNTREND +DOWNTRENDED +DOWNTRENDING +DOWNTRENDS +DOWNTROD +DOWNTRODDEN +DOWNTURN +DOWNTURNS +DOWNWARD +DOWNWARDLY +DOWNWARDNESS +DOWNWARDNESSES +DOWNWARDS +DOWNWASH +DOWNWASHES +DOWNWIND +DOWNY +DOWNZONE +DOWNZONED +DOWNZONES +DOWNZONING +DOWRIES +DOWRY +DOWS +DOWSABEL +DOWSABELS +DOWSE +DOWSED +DOWSER +DOWSERS +DOWSES +DOWSING +DOXIE +DOXIES +DOXOLOGIES +DOXOLOGY +DOXORUBICIN +DOXORUBICINS +DOXY +DOXYCYCLINE +DOXYCYCLINES +DOYEN +DOYENNE +DOYENNES +DOYENS +DOYLEY +DOYLEYS +DOYLIES +DOYLY +DOZE +DOZED +DOZEN +DOZENED +DOZENING +DOZENS +DOZENTH +DOZENTHS +DOZER +DOZERS +DOZES +DOZIER +DOZIEST +DOZILY +DOZINESS +DOZINESSES +DOZING +DOZY +DRAB +DRABBED +DRABBER +DRABBEST +DRABBET +DRABBETS +DRABBING +DRABBLE +DRABBLED +DRABBLES +DRABBLING +DRABLY +DRABNESS +DRABNESSES +DRABS +DRACAENA +DRACAENAS +DRACENA +DRACENAS +DRACHM +DRACHMA +DRACHMAE +DRACHMAI +DRACHMAS +DRACHMS +DRACONIAN +DRACONIC +DRAFF +DRAFFIER +DRAFFIEST +DRAFFISH +DRAFFS +DRAFFY +DRAFT +DRAFTABLE +DRAFTED +DRAFTEE +DRAFTEES +DRAFTER +DRAFTERS +DRAFTIER +DRAFTIEST +DRAFTILY +DRAFTINESS +DRAFTINESSES +DRAFTING +DRAFTINGS +DRAFTS +DRAFTSMAN +DRAFTSMANSHIP +DRAFTSMANSHIPS +DRAFTSMEN +DRAFTSPERSON +DRAFTSPERSONS +DRAFTY +DRAG +DRAGEE +DRAGEES +DRAGGED +DRAGGER +DRAGGERS +DRAGGIER +DRAGGIEST +DRAGGING +DRAGGINGLY +DRAGGLE +DRAGGLED +DRAGGLES +DRAGGLING +DRAGGY +DRAGLINE +DRAGLINES +DRAGNET +DRAGNETS +DRAGOMAN +DRAGOMANS +DRAGOMEN +DRAGON +DRAGONET +DRAGONETS +DRAGONFLIES +DRAGONFLY +DRAGONHEAD +DRAGONHEADS +DRAGONISH +DRAGONS +DRAGOON +DRAGOONED +DRAGOONING +DRAGOONS +DRAGROPE +DRAGROPES +DRAGS +DRAGSTER +DRAGSTERS +DRAGSTRIP +DRAGSTRIPS +DRAIL +DRAILS +DRAIN +DRAINABLE +DRAINAGE +DRAINAGES +DRAINED +DRAINER +DRAINERS +DRAINING +DRAINPIPE +DRAINPIPES +DRAINS +DRAKE +DRAKES +DRAM +DRAMA +DRAMADIES +DRAMADY +DRAMAS +DRAMATIC +DRAMATICALLY +DRAMATICS +DRAMATISATION +DRAMATISATIONS +DRAMATISE +DRAMATISED +DRAMATISES +DRAMATISING +DRAMATIST +DRAMATISTS +DRAMATIZABLE +DRAMATIZATION +DRAMATIZATIONS +DRAMATIZE +DRAMATIZED +DRAMATIZES +DRAMATIZING +DRAMATURG +DRAMATURGE +DRAMATURGES +DRAMATURGIC +DRAMATURGICAL +DRAMATURGICALLY +DRAMATURGIES +DRAMATURGY +DRAMEDIES +DRAMEDY +DRAMMED +DRAMMING +DRAMMOCK +DRAMMOCKS +DRAMS +DRAMSHOP +DRAMSHOPS +DRANK +DRAPABILITIES +DRAPABILITY +DRAPABLE +DRAPE +DRAPEABILITIES +DRAPEABILITY +DRAPEABLE +DRAPED +DRAPER +DRAPERIED +DRAPERIES +DRAPERS +DRAPERY +DRAPES +DRAPEY +DRAPING +DRASTIC +DRASTICALLY +DRAT +DRATS +DRATTED +DRATTING +DRAUGHT +DRAUGHTED +DRAUGHTIER +DRAUGHTIEST +DRAUGHTING +DRAUGHTS +DRAUGHTSMAN +DRAUGHTSMEN +DRAUGHTY +DRAVE +DRAW +DRAWABLE +DRAWBACK +DRAWBACKS +DRAWBAR +DRAWBARS +DRAWBORE +DRAWBORES +DRAWBRIDGE +DRAWBRIDGES +DRAWDOWN +DRAWDOWNS +DRAWEE +DRAWEES +DRAWER +DRAWERFUL +DRAWERFULS +DRAWERS +DRAWING +DRAWINGS +DRAWKNIFE +DRAWKNIVES +DRAWL +DRAWLED +DRAWLER +DRAWLERS +DRAWLIER +DRAWLIEST +DRAWLING +DRAWLINGLY +DRAWLS +DRAWLY +DRAWN +DRAWNWORK +DRAWNWORKS +DRAWPLATE +DRAWPLATES +DRAWS +DRAWSHAVE +DRAWSHAVES +DRAWSTRING +DRAWSTRINGS +DRAWTUBE +DRAWTUBES +DRAY +DRAYAGE +DRAYAGES +DRAYED +DRAYING +DRAYMAN +DRAYMEN +DRAYS +DREAD +DREADED +DREADFUL +DREADFULLY +DREADFULNESS +DREADFULNESSES +DREADFULS +DREADING +DREADLOCK +DREADLOCKS +DREADNOUGHT +DREADNOUGHTS +DREADS +DREAM +DREAMBOAT +DREAMBOATS +DREAMED +DREAMER +DREAMERS +DREAMFUL +DREAMFULLY +DREAMFULNESS +DREAMFULNESSES +DREAMIER +DREAMIEST +DREAMILY +DREAMINESS +DREAMINESSES +DREAMING +DREAMLAND +DREAMLANDS +DREAMLESS +DREAMLESSLY +DREAMLESSNESS +DREAMLESSNESSES +DREAMLIKE +DREAMS +DREAMT +DREAMTIME +DREAMTIMES +DREAMWORLD +DREAMWORLDS +DREAMY +DREAR +DREARIER +DREARIES +DREARIEST +DREARILY +DREARINESS +DREARINESSES +DREARS +DREARY +DRECK +DRECKS +DRECKY +DREDGE +DREDGED +DREDGER +DREDGERS +DREDGES +DREDGING +DREDGINGS +DREE +DREED +DREEING +DREES +DREG +DREGGIER +DREGGIEST +DREGGISH +DREGGY +DREGS +DREICH +DREIDEL +DREIDELS +DREIDL +DREIDLS +DREIGH +DREK +DREKS +DRENCH +DRENCHED +DRENCHER +DRENCHERS +DRENCHES +DRENCHING +DRESS +DRESSAGE +DRESSAGES +DRESSED +DRESSER +DRESSERS +DRESSES +DRESSIER +DRESSIEST +DRESSILY +DRESSINESS +DRESSINESSES +DRESSING +DRESSINGS +DRESSMAKER +DRESSMAKERS +DRESSMAKING +DRESSMAKINGS +DRESSY +DREST +DREW +DRIB +DRIBBED +DRIBBING +DRIBBLE +DRIBBLED +DRIBBLER +DRIBBLERS +DRIBBLES +DRIBBLET +DRIBBLETS +DRIBBLING +DRIBBLY +DRIBLET +DRIBLETS +DRIBS +DRIED +DRIEGH +DRIER +DRIERS +DRIES +DRIEST +DRIFT +DRIFTAGE +DRIFTAGES +DRIFTED +DRIFTER +DRIFTERS +DRIFTIER +DRIFTIEST +DRIFTING +DRIFTINGLY +DRIFTPIN +DRIFTPINS +DRIFTS +DRIFTWOOD +DRIFTWOODS +DRIFTY +DRILL +DRILLABILITIES +DRILLABILITY +DRILLABLE +DRILLED +DRILLER +DRILLERS +DRILLING +DRILLINGS +DRILLMASTER +DRILLMASTERS +DRILLS +DRILY +DRINK +DRINKABILITIES +DRINKABILITY +DRINKABLE +DRINKABLES +DRINKABLY +DRINKER +DRINKERS +DRINKING +DRINKINGS +DRINKS +DRIP +DRIPLESS +DRIPPED +DRIPPER +DRIPPERS +DRIPPIER +DRIPPIEST +DRIPPILY +DRIPPING +DRIPPINGS +DRIPPY +DRIPS +DRIPSTONE +DRIPSTONES +DRIPT +DRIVABILITIES +DRIVABILITY +DRIVABLE +DRIVE +DRIVEABILITIES +DRIVEABILITY +DRIVEABLE +DRIVEL +DRIVELED +DRIVELER +DRIVELERS +DRIVELINE +DRIVELINES +DRIVELING +DRIVELLED +DRIVELLER +DRIVELLERS +DRIVELLING +DRIVELS +DRIVEN +DRIVENNESS +DRIVENNESSES +DRIVER +DRIVERLESS +DRIVERS +DRIVES +DRIVESHAFT +DRIVESHAFTS +DRIVETRAIN +DRIVETRAINS +DRIVEWAY +DRIVEWAYS +DRIVING +DRIVINGLY +DRIVINGS +DRIZZLE +DRIZZLED +DRIZZLES +DRIZZLIER +DRIZZLIEST +DRIZZLING +DRIZZLINGLY +DRIZZLY +DROGUE +DROGUES +DROID +DROIDS +DROIT +DROITS +DROLL +DROLLED +DROLLER +DROLLERIES +DROLLERY +DROLLEST +DROLLING +DROLLNESS +DROLLNESSES +DROLLS +DROLLY +DROMEDARIES +DROMEDARY +DROMON +DROMOND +DROMONDS +DROMONS +DRONE +DRONED +DRONER +DRONERS +DRONES +DRONGO +DRONGOS +DRONING +DRONINGLY +DRONISH +DROOL +DROOLED +DROOLIER +DROOLIEST +DROOLING +DROOLS +DROOLY +DROOP +DROOPED +DROOPIER +DROOPIEST +DROOPILY +DROOPING +DROOPINGLY +DROOPS +DROOPY +DROP +DROPCLOTH +DROPCLOTHS +DROPFORGE +DROPFORGED +DROPFORGES +DROPFORGING +DROPHEAD +DROPHEADS +DROPKICK +DROPKICKER +DROPKICKERS +DROPKICKS +DROPLET +DROPLETS +DROPLIGHT +DROPLIGHTS +DROPOUT +DROPOUTS +DROPPABLE +DROPPED +DROPPER +DROPPERFUL +DROPPERFULS +DROPPERS +DROPPERSFUL +DROPPING +DROPPINGS +DROPS +DROPSHOT +DROPSHOTS +DROPSICAL +DROPSIED +DROPSIES +DROPSONDE +DROPSONDES +DROPSY +DROPT +DROPWORT +DROPWORTS +DROSERA +DROSERAS +DROSHKIES +DROSHKY +DROSKIES +DROSKY +DROSOPHILA +DROSOPHILAS +DROSS +DROSSES +DROSSIER +DROSSIEST +DROSSY +DROUGHT +DROUGHTIER +DROUGHTIEST +DROUGHTINESS +DROUGHTINESSES +DROUGHTS +DROUGHTY +DROUK +DROUKED +DROUKING +DROUKS +DROUTH +DROUTHIER +DROUTHIEST +DROUTHS +DROUTHY +DROVE +DROVED +DROVER +DROVERS +DROVES +DROVING +DROWN +DROWND +DROWNDED +DROWNDING +DROWNDS +DROWNED +DROWNER +DROWNERS +DROWNING +DROWNS +DROWSE +DROWSED +DROWSES +DROWSIER +DROWSIEST +DROWSILY +DROWSINESS +DROWSINESSES +DROWSING +DROWSY +DRUB +DRUBBED +DRUBBER +DRUBBERS +DRUBBING +DRUBBINGS +DRUBS +DRUDGE +DRUDGED +DRUDGER +DRUDGERIES +DRUDGERS +DRUDGERY +DRUDGES +DRUDGING +DRUDGINGLY +DRUG +DRUGGED +DRUGGET +DRUGGETS +DRUGGIE +DRUGGIER +DRUGGIES +DRUGGIEST +DRUGGING +DRUGGIST +DRUGGISTS +DRUGGY +DRUGMAKER +DRUGMAKERS +DRUGS +DRUGSTORE +DRUGSTORES +DRUID +DRUIDESS +DRUIDESSES +DRUIDIC +DRUIDICAL +DRUIDISM +DRUIDISMS +DRUIDS +DRUM +DRUMBEAT +DRUMBEATER +DRUMBEATERS +DRUMBEATING +DRUMBEATINGS +DRUMBEATS +DRUMBLE +DRUMBLED +DRUMBLES +DRUMBLING +DRUMFIRE +DRUMFIRES +DRUMFISH +DRUMFISHES +DRUMHEAD +DRUMHEADS +DRUMLIER +DRUMLIEST +DRUMLIKE +DRUMLIN +DRUMLINS +DRUMLY +DRUMMED +DRUMMER +DRUMMERS +DRUMMING +DRUMROLL +DRUMROLLS +DRUMS +DRUMSTICK +DRUMSTICKS +DRUNK +DRUNKARD +DRUNKARDS +DRUNKEN +DRUNKENLY +DRUNKENNESS +DRUNKENNESSES +DRUNKER +DRUNKEST +DRUNKS +DRUPACEOUS +DRUPE +DRUPELET +DRUPELETS +DRUPES +DRUSE +DRUSES +DRUTHERS +DRY +DRYABLE +DRYAD +DRYADES +DRYADIC +DRYADS +DRYASDUST +DRYASDUSTS +DRYER +DRYERS +DRYEST +DRYING +DRYISH +DRYLAND +DRYLOT +DRYLOTS +DRYLY +DRYNESS +DRYNESSES +DRYOPITHECINE +DRYOPITHECINES +DRYPOINT +DRYPOINTS +DRYS +DRYSALTER +DRYSALTERIES +DRYSALTERS +DRYSALTERY +DRYSTONE +DRYWALL +DRYWALLED +DRYWALLING +DRYWALLS +DRYWELL +DRYWELLS +DUAD +DUADS +DUAL +DUALISM +DUALISMS +DUALIST +DUALISTIC +DUALISTICALLY +DUALISTS +DUALITIES +DUALITY +DUALIZE +DUALIZED +DUALIZES +DUALIZING +DUALLY +DUALS +DUB +DUBBED +DUBBER +DUBBERS +DUBBIN +DUBBING +DUBBINGS +DUBBINS +DUBIETIES +DUBIETY +DUBIOSITIES +DUBIOSITY +DUBIOUS +DUBIOUSLY +DUBIOUSNESS +DUBIOUSNESSES +DUBITABLE +DUBITABLY +DUBITATION +DUBITATIONS +DUBNIUM +DUBNIUMS +DUBONNET +DUBONNETS +DUBS +DUCAL +DUCALLY +DUCAT +DUCATS +DUCE +DUCES +DUCHESS +DUCHESSES +DUCHIES +DUCHY +DUCI +DUCK +DUCKBILL +DUCKBILLS +DUCKBOARD +DUCKBOARDS +DUCKED +DUCKER +DUCKERS +DUCKIE +DUCKIER +DUCKIES +DUCKIEST +DUCKING +DUCKLING +DUCKLINGS +DUCKPIN +DUCKPINS +DUCKS +DUCKTAIL +DUCKTAILS +DUCKWALK +DUCKWALKED +DUCKWALKING +DUCKWALKS +DUCKWEED +DUCKWEEDS +DUCKY +DUCT +DUCTAL +DUCTED +DUCTILE +DUCTILELY +DUCTILITIES +DUCTILITY +DUCTING +DUCTINGS +DUCTLESS +DUCTS +DUCTULE +DUCTULES +DUCTWORK +DUCTWORKS +DUD +DUDDIE +DUDDY +DUDE +DUDED +DUDEEN +DUDEENS +DUDES +DUDGEON +DUDGEONS +DUDING +DUDISH +DUDISHLY +DUDS +DUE +DUECENTO +DUECENTOS +DUEL +DUELED +DUELER +DUELERS +DUELING +DUELIST +DUELISTS +DUELLED +DUELLER +DUELLERS +DUELLI +DUELLING +DUELLIST +DUELLISTS +DUELLO +DUELLOS +DUELS +DUENDE +DUENDES +DUENESS +DUENESSES +DUENNA +DUENNAS +DUENNASHIP +DUENNASHIPS +DUES +DUET +DUETED +DUETING +DUETS +DUETTED +DUETTING +DUETTIST +DUETTISTS +DUFF +DUFFEL +DUFFELS +DUFFER +DUFFERS +DUFFLE +DUFFLES +DUFFS +DUFUS +DUFUSES +DUG +DUGONG +DUGONGS +DUGOUT +DUGOUTS +DUGS +DUH +DUI +DUIKER +DUIKERS +DUIT +DUITS +DUKE +DUKED +DUKEDOM +DUKEDOMS +DUKES +DUKING +DULCET +DULCETLY +DULCETS +DULCIANA +DULCIANAS +DULCIFIED +DULCIFIES +DULCIFY +DULCIFYING +DULCIMER +DULCIMERS +DULCIMORE +DULCIMORES +DULCINEA +DULCINEAS +DULIA +DULIAS +DULL +DULLARD +DULLARDS +DULLED +DULLER +DULLEST +DULLING +DULLISH +DULLISHLY +DULLNESS +DULLNESSES +DULLS +DULLSVILLE +DULLSVILLES +DULLY +DULNESS +DULNESSES +DULSE +DULSES +DULY +DUMA +DUMAS +DUMB +DUMBBELL +DUMBBELLS +DUMBCANE +DUMBCANES +DUMBED +DUMBER +DUMBEST +DUMBFOUND +DUMBFOUNDED +DUMBFOUNDER +DUMBFOUNDERED +DUMBFOUNDERING +DUMBFOUNDERS +DUMBFOUNDING +DUMBFOUNDS +DUMBHEAD +DUMBHEADS +DUMBING +DUMBLY +DUMBNESS +DUMBNESSES +DUMBO +DUMBOS +DUMBS +DUMBSTRUCK +DUMBWAITER +DUMBWAITERS +DUMDUM +DUMDUMS +DUMFOUND +DUMFOUNDED +DUMFOUNDING +DUMFOUNDS +DUMKA +DUMKY +DUMMIED +DUMMIES +DUMMKOPF +DUMMKOPFS +DUMMY +DUMMYING +DUMORTIERITE +DUMORTIERITES +DUMP +DUMPCART +DUMPCARTS +DUMPED +DUMPER +DUMPERS +DUMPIER +DUMPIEST +DUMPILY +DUMPINESS +DUMPINESSES +DUMPING +DUMPINGS +DUMPISH +DUMPLING +DUMPLINGS +DUMPS +DUMPSITE +DUMPSITES +DUMPSTER +DUMPSTERS +DUMPTRUCK +DUMPTRUCKS +DUMPY +DUN +DUNAM +DUNAMS +DUNCE +DUNCES +DUNCH +DUNCHES +DUNCICAL +DUNCISH +DUNCISHLY +DUNDERHEAD +DUNDERHEADED +DUNDERHEADS +DUNDREARIES +DUNE +DUNELAND +DUNELANDS +DUNELIKE +DUNES +DUNG +DUNGAREE +DUNGAREED +DUNGAREES +DUNGED +DUNGEON +DUNGEONED +DUNGEONING +DUNGEONS +DUNGHILL +DUNGHILLS +DUNGIER +DUNGIEST +DUNGING +DUNGS +DUNGY +DUNITE +DUNITES +DUNITIC +DUNK +DUNKED +DUNKER +DUNKERS +DUNKING +DUNKS +DUNLIN +DUNLINS +DUNNAGE +DUNNAGES +DUNNED +DUNNER +DUNNESS +DUNNESSES +DUNNEST +DUNNING +DUNNITE +DUNNITES +DUNS +DUNT +DUNTED +DUNTING +DUNTS +DUO +DUODECILLION +DUODECILLIONS +DUODECIMAL +DUODECIMALS +DUODECIMO +DUODECIMOS +DUODENA +DUODENAL +DUODENUM +DUODENUMS +DUOLOG +DUOLOGS +DUOLOGUE +DUOLOGUES +DUOMI +DUOMO +DUOMOS +DUOPOLIES +DUOPOLISTIC +DUOPOLY +DUOPSONIES +DUOPSONY +DUOS +DUOTONE +DUOTONES +DUP +DUPABLE +DUPE +DUPED +DUPER +DUPERIES +DUPERS +DUPERY +DUPES +DUPING +DUPLE +DUPLEX +DUPLEXED +DUPLEXER +DUPLEXERS +DUPLEXES +DUPLEXING +DUPLEXITIES +DUPLEXITY +DUPLICATE +DUPLICATED +DUPLICATES +DUPLICATING +DUPLICATION +DUPLICATIONS +DUPLICATIVE +DUPLICATOR +DUPLICATORS +DUPLICITIES +DUPLICITOUS +DUPLICITOUSLY +DUPLICITY +DUPPED +DUPPING +DUPS +DURA +DURABILITIES +DURABILITY +DURABLE +DURABLENESS +DURABLENESSES +DURABLES +DURABLY +DURAL +DURALUMIN +DURALUMINS +DURAMEN +DURAMENS +DURANCE +DURANCES +DURAS +DURATION +DURATIONS +DURATIVE +DURATIVES +DURBAR +DURBARS +DURE +DURED +DURES +DURESS +DURESSES +DURIAN +DURIANS +DURING +DURION +DURIONS +DURMAST +DURMASTS +DURN +DURNDEST +DURNED +DURNEDER +DURNEDEST +DURNING +DURNS +DURO +DUROC +DUROCS +DUROMETER +DUROMETERS +DUROS +DURR +DURRA +DURRAS +DURRIE +DURRIES +DURRS +DURST +DURUM +DURUMS +DUSK +DUSKED +DUSKIER +DUSKIEST +DUSKILY +DUSKINESS +DUSKINESSES +DUSKING +DUSKISH +DUSKS +DUSKY +DUST +DUSTBIN +DUSTBINS +DUSTCOVER +DUSTCOVERS +DUSTED +DUSTER +DUSTERS +DUSTHEAP +DUSTHEAPS +DUSTIER +DUSTIEST +DUSTILY +DUSTINESS +DUSTINESSES +DUSTING +DUSTINGS +DUSTLESS +DUSTLIKE +DUSTMAN +DUSTMEN +DUSTOFF +DUSTOFFS +DUSTPAN +DUSTPANS +DUSTPROOF +DUSTRAG +DUSTRAGS +DUSTS +DUSTSTORM +DUSTSTORMS +DUSTUP +DUSTUPS +DUSTY +DUTCH +DUTCHMAN +DUTCHMEN +DUTEOUS +DUTEOUSLY +DUTIABLE +DUTIES +DUTIFUL +DUTIFULLY +DUTIFULNESS +DUTIFULNESSES +DUTY +DUUMVIR +DUUMVIRATE +DUUMVIRATES +DUUMVIRI +DUUMVIRS +DUVET +DUVETINE +DUVETINES +DUVETS +DUVETYN +DUVETYNE +DUVETYNES +DUVETYNS +DUXELLES +DWARF +DWARFED +DWARFER +DWARFEST +DWARFING +DWARFISH +DWARFISHLY +DWARFISHNESS +DWARFISHNESSES +DWARFISM +DWARFISMS +DWARFLIKE +DWARFNESS +DWARFNESSES +DWARFS +DWARVES +DWEEB +DWEEBIER +DWEEBIEST +DWEEBISH +DWEEBS +DWEEBY +DWELL +DWELLED +DWELLER +DWELLERS +DWELLING +DWELLINGS +DWELLS +DWELT +DWINDLE +DWINDLED +DWINDLES +DWINDLING +DWINE +DWINED +DWINES +DWINING +DYABLE +DYAD +DYADIC +DYADICALLY +DYADICS +DYADS +DYARCHIC +DYARCHIES +DYARCHY +DYBBUK +DYBBUKIM +DYBBUKS +DYE +DYEABILITIES +DYEABILITY +DYEABLE +DYED +DYEING +DYEINGS +DYER +DYERS +DYES +DYESTUFF +DYESTUFFS +DYEWEED +DYEWEEDS +DYEWOOD +DYEWOODS +DYING +DYINGS +DYKE +DYKED +DYKES +DYKEY +DYKING +DYNAMETER +DYNAMETERS +DYNAMIC +DYNAMICAL +DYNAMICALLY +DYNAMICS +DYNAMISM +DYNAMISMS +DYNAMIST +DYNAMISTIC +DYNAMISTS +DYNAMITE +DYNAMITED +DYNAMITER +DYNAMITERS +DYNAMITES +DYNAMITIC +DYNAMITING +DYNAMO +DYNAMOMETER +DYNAMOMETERS +DYNAMOMETRIC +DYNAMOMETRIES +DYNAMOMETRY +DYNAMOS +DYNAMOTOR +DYNAMOTORS +DYNAST +DYNASTIC +DYNASTICALLY +DYNASTIES +DYNASTS +DYNASTY +DYNATRON +DYNATRONS +DYNE +DYNEIN +DYNEINS +DYNEL +DYNELS +DYNES +DYNODE +DYNODES +DYNORPHIN +DYNORPHINS +DYSARTHRIA +DYSARTHRIAS +DYSCRASIA +DYSCRASIAS +DYSCRASIC +DYSCRATIC +DYSENTERIC +DYSENTERIES +DYSENTERY +DYSFUNCTION +DYSFUNCTIONAL +DYSFUNCTIONS +DYSGENESES +DYSGENESIS +DYSGENIC +DYSGENICS +DYSKINESIA +DYSKINESIAS +DYSKINETIC +DYSLECTIC +DYSLECTICS +DYSLEXIA +DYSLEXIAS +DYSLEXIC +DYSLEXICS +DYSLOGISTIC +DYSLOGISTICALLY +DYSMENORRHEA +DYSMENORRHEAS +DYSMENORRHEIC +DYSPEPSIA +DYSPEPSIAS +DYSPEPSIES +DYSPEPSY +DYSPEPTIC +DYSPEPTICALLY +DYSPEPTICS +DYSPHAGIA +DYSPHAGIAS +DYSPHAGIC +DYSPHASIA +DYSPHASIAS +DYSPHASIC +DYSPHASICS +DYSPHEMISM +DYSPHEMISMS +DYSPHEMISTIC +DYSPHONIA +DYSPHONIAS +DYSPHONIC +DYSPHORIA +DYSPHORIAS +DYSPHORIC +DYSPLASIA +DYSPLASIAS +DYSPLASTIC +DYSPNEA +DYSPNEAL +DYSPNEAS +DYSPNEIC +DYSPNOEA +DYSPNOEAS +DYSPNOIC +DYSPROSIUM +DYSPROSIUMS +DYSRHYTHMIA +DYSRHYTHMIAS +DYSRHYTHMIC +DYSTAXIA +DYSTAXIAS +DYSTHYMIA +DYSTHYMIAS +DYSTHYMIC +DYSTHYMICS +DYSTOCIA +DYSTOCIAS +DYSTONIA +DYSTONIAS +DYSTONIC +DYSTOPIA +DYSTOPIAN +DYSTOPIAS +DYSTROPHIC +DYSTROPHIES +DYSTROPHY +DYSURIA +DYSURIAS +DYSURIC +DYVOUR +DYVOURS +EACH +EAGER +EAGERER +EAGEREST +EAGERLY +EAGERNESS +EAGERNESSES +EAGERS +EAGLE +EAGLED +EAGLES +EAGLET +EAGLETS +EAGLEWOOD +EAGLEWOODS +EAGLING +EAGRE +EAGRES +EALDORMAN +EALDORMEN +EANLING +EANLINGS +EAR +EARACHE +EARACHES +EARBUD +EARBUDS +EARDROP +EARDROPS +EARDRUM +EARDRUMS +EARED +EARFLAP +EARFLAPS +EARFUL +EARFULS +EARING +EARINGS +EARL +EARLAP +EARLAPS +EARLDOM +EARLDOMS +EARLESS +EARLIER +EARLIEST +EARLINESS +EARLINESSES +EARLOBE +EARLOBES +EARLOCK +EARLOCKS +EARLS +EARLSHIP +EARLSHIPS +EARLY +EARLYWOOD +EARLYWOODS +EARMARK +EARMARKED +EARMARKING +EARMARKS +EARMUFF +EARMUFFS +EARN +EARNED +EARNER +EARNERS +EARNEST +EARNESTLY +EARNESTNESS +EARNESTNESSES +EARNESTS +EARNING +EARNINGS +EARNS +EARPHONE +EARPHONES +EARPIECE +EARPIECES +EARPLUG +EARPLUGS +EARRING +EARRINGED +EARRINGS +EARS +EARSHOT +EARSHOTS +EARSPLITTING +EARSTONE +EARSTONES +EARTH +EARTHBORN +EARTHBOUND +EARTHED +EARTHEN +EARTHENWARE +EARTHENWARES +EARTHIER +EARTHIEST +EARTHILY +EARTHINESS +EARTHINESSES +EARTHING +EARTHLIER +EARTHLIEST +EARTHLIGHT +EARTHLIGHTS +EARTHLIKE +EARTHLINESS +EARTHLINESSES +EARTHLING +EARTHLINGS +EARTHLY +EARTHMAN +EARTHMEN +EARTHMOVER +EARTHMOVERS +EARTHMOVING +EARTHMOVINGS +EARTHNUT +EARTHNUTS +EARTHPEA +EARTHPEAS +EARTHQUAKE +EARTHQUAKES +EARTHRISE +EARTHRISES +EARTHS +EARTHSET +EARTHSETS +EARTHSHAKER +EARTHSHAKERS +EARTHSHAKING +EARTHSHAKINGLY +EARTHSHINE +EARTHSHINES +EARTHSTAR +EARTHSTARS +EARTHWARD +EARTHWARDS +EARTHWORK +EARTHWORKS +EARTHWORM +EARTHWORMS +EARTHY +EARWAX +EARWAXES +EARWIG +EARWIGGED +EARWIGGING +EARWIGS +EARWITNESS +EARWITNESSES +EARWORM +EARWORMS +EASE +EASED +EASEFUL +EASEFULLY +EASEL +EASELED +EASELS +EASEMENT +EASEMENTS +EASES +EASIER +EASIES +EASIEST +EASILY +EASINESS +EASINESSES +EASING +EAST +EASTBOUND +EASTER +EASTERLIES +EASTERLY +EASTERN +EASTERNER +EASTERNERS +EASTERNMOST +EASTERS +EASTING +EASTINGS +EASTS +EASTWARD +EASTWARDS +EASY +EASYGOING +EASYGOINGNESS +EASYGOINGNESSES +EAT +EATABLE +EATABLES +EATEN +EATER +EATERIES +EATERS +EATERY +EATH +EATING +EATINGS +EATS +EAU +EAUX +EAVE +EAVED +EAVES +EAVESDROP +EAVESDROPPED +EAVESDROPPER +EAVESDROPPERS +EAVESDROPPING +EAVESDROPS +EBB +EBBED +EBBET +EBBETS +EBBING +EBBS +EBON +EBONICS +EBONIES +EBONISE +EBONISED +EBONISES +EBONISING +EBONITE +EBONITES +EBONIZE +EBONIZED +EBONIZES +EBONIZING +EBONS +EBONY +EBOOK +EBOOKS +EBULLIENCE +EBULLIENCES +EBULLIENCIES +EBULLIENCY +EBULLIENT +EBULLIENTLY +EBULLITION +EBULLITIONS +ECARTE +ECARTES +ECAUDATE +ECBOLIC +ECBOLICS +ECCENTRIC +ECCENTRICALLY +ECCENTRICITIES +ECCENTRICITY +ECCENTRICS +ECCHYMOSES +ECCHYMOSIS +ECCHYMOTIC +ECCLESIA +ECCLESIAE +ECCLESIAL +ECCLESIASTIC +ECCLESIASTICAL +ECCLESIASTICISM +ECCLESIASTICS +ECCLESIOLOGICAL +ECCLESIOLOGIES +ECCLESIOLOGIST +ECCLESIOLOGISTS +ECCLESIOLOGY +ECCRINE +ECDYSES +ECDYSIAL +ECDYSIAST +ECDYSIASTS +ECDYSIS +ECDYSON +ECDYSONE +ECDYSONES +ECDYSONS +ECESIC +ECESIS +ECESISES +ECHARD +ECHARDS +ECHE +ECHED +ECHELLE +ECHELLES +ECHELON +ECHELONED +ECHELONING +ECHELONS +ECHES +ECHEVERIA +ECHEVERIAS +ECHIDNA +ECHIDNAE +ECHIDNAS +ECHINACEA +ECHINACEAS +ECHINATE +ECHINATED +ECHING +ECHINI +ECHINOCOCCI +ECHINOCOCCOSES +ECHINOCOCCOSIS +ECHINOCOCCUS +ECHINODERM +ECHINODERMATOUS +ECHINODERMS +ECHINOID +ECHINOIDS +ECHINUS +ECHIUROID +ECHIUROIDS +ECHO +ECHOCARDIOGRAM +ECHOCARDIOGRAMS +ECHOED +ECHOER +ECHOERS +ECHOES +ECHOEY +ECHOGRAM +ECHOGRAMS +ECHOIC +ECHOING +ECHOISM +ECHOISMS +ECHOLALIA +ECHOLALIAS +ECHOLALIC +ECHOLESS +ECHOLOCATION +ECHOLOCATIONS +ECHOS +ECHOVIRUS +ECHOVIRUSES +ECHT +ECLAIR +ECLAIRCISSEMENT +ECLAIRS +ECLAMPSIA +ECLAMPSIAS +ECLAMPTIC +ECLAT +ECLATS +ECLECTIC +ECLECTICALLY +ECLECTICISM +ECLECTICISMS +ECLECTICS +ECLIPSE +ECLIPSED +ECLIPSER +ECLIPSERS +ECLIPSES +ECLIPSING +ECLIPSIS +ECLIPSISES +ECLIPTIC +ECLIPTICS +ECLOGITE +ECLOGITES +ECLOGUE +ECLOGUES +ECLOSION +ECLOSIONS +ECOCATASTROPHE +ECOCATASTROPHES +ECOCIDAL +ECOCIDE +ECOCIDES +ECOFEMINISM +ECOFEMINISMS +ECOFEMINIST +ECOFEMINISTS +ECOFREAK +ECOFREAKS +ECOLOGIC +ECOLOGICAL +ECOLOGICALLY +ECOLOGIES +ECOLOGIST +ECOLOGISTS +ECOLOGY +ECONOBOX +ECONOBOXES +ECONOMETRIC +ECONOMETRICALLY +ECONOMETRICIAN +ECONOMETRICIANS +ECONOMETRICS +ECONOMETRIST +ECONOMETRISTS +ECONOMIC +ECONOMICAL +ECONOMICALLY +ECONOMICS +ECONOMIES +ECONOMISE +ECONOMISED +ECONOMISES +ECONOMISING +ECONOMIST +ECONOMISTS +ECONOMIZE +ECONOMIZED +ECONOMIZER +ECONOMIZERS +ECONOMIZES +ECONOMIZING +ECONOMY +ECOPHYSIOLOGIES +ECOPHYSIOLOGY +ECOSPECIES +ECOSPHERE +ECOSPHERES +ECOSYSTEM +ECOSYSTEMS +ECOTAGE +ECOTAGES +ECOTERRORISM +ECOTERRORISMS +ECOTERRORIST +ECOTERRORISTS +ECOTONAL +ECOTONE +ECOTONES +ECOTOUR +ECOTOURISM +ECOTOURISMS +ECOTOURIST +ECOTOURISTS +ECOTOURS +ECOTYPE +ECOTYPES +ECOTYPIC +ECRASEUR +ECRASEURS +ECRU +ECRUS +ECSTASIES +ECSTASY +ECSTATIC +ECSTATICALLY +ECSTATICS +ECTASES +ECTASIS +ECTATIC +ECTHYMA +ECTHYMATA +ECTOBLAST +ECTOBLASTS +ECTODERM +ECTODERMAL +ECTODERMS +ECTOGENIC +ECTOMERE +ECTOMERES +ECTOMERIC +ECTOMORPH +ECTOMORPHIC +ECTOMORPHS +ECTOPARASITE +ECTOPARASITES +ECTOPARASITIC +ECTOPIA +ECTOPIAS +ECTOPIC +ECTOPICALLY +ECTOPLASM +ECTOPLASMIC +ECTOPLASMS +ECTOPROCT +ECTOPROCTS +ECTOSARC +ECTOSARCS +ECTOTHERM +ECTOTHERMIC +ECTOTHERMS +ECTOTROPHIC +ECTOZOA +ECTOZOAN +ECTOZOANS +ECTOZOON +ECTYPAL +ECTYPE +ECTYPES +ECU +ECUMENIC +ECUMENICAL +ECUMENICALISM +ECUMENICALISMS +ECUMENICALLY +ECUMENICISM +ECUMENICISMS +ECUMENICIST +ECUMENICISTS +ECUMENICITIES +ECUMENICITY +ECUMENICS +ECUMENISM +ECUMENISMS +ECUMENIST +ECUMENISTS +ECUS +ECZEMA +ECZEMAS +ECZEMATOUS +ED +EDACIOUS +EDACITIES +EDACITY +EDAPHIC +EDAPHICALLY +EDDIED +EDDIES +EDDO +EDDOES +EDDY +EDDYING +EDELWEISS +EDELWEISSES +EDEMA +EDEMAS +EDEMATA +EDEMATOSE +EDEMATOUS +EDENIC +EDENTATE +EDENTATES +EDENTULOUS +EDGE +EDGED +EDGELESS +EDGER +EDGERS +EDGES +EDGEWAYS +EDGEWISE +EDGIER +EDGIEST +EDGILY +EDGINESS +EDGINESSES +EDGING +EDGINGS +EDGY +EDH +EDHS +EDIBILITIES +EDIBILITY +EDIBLE +EDIBLENESS +EDIBLENESSES +EDIBLES +EDICT +EDICTAL +EDICTALLY +EDICTS +EDIFICATION +EDIFICATIONS +EDIFICE +EDIFICES +EDIFICIAL +EDIFIED +EDIFIER +EDIFIERS +EDIFIES +EDIFY +EDIFYING +EDILE +EDILES +EDIT +EDITABLE +EDITED +EDITING +EDITION +EDITIONS +EDITOR +EDITORIAL +EDITORIALIST +EDITORIALISTS +EDITORIALIZE +EDITORIALIZED +EDITORIALIZER +EDITORIALIZERS +EDITORIALIZES +EDITORIALIZING +EDITORIALLY +EDITORIALS +EDITORS +EDITORSHIP +EDITORSHIPS +EDITRESS +EDITRESSES +EDITRICES +EDITRIX +EDITRIXES +EDITS +EDS +EDUCABILITIES +EDUCABILITY +EDUCABLE +EDUCABLES +EDUCATE +EDUCATED +EDUCATEDNESS +EDUCATEDNESSES +EDUCATES +EDUCATING +EDUCATION +EDUCATIONAL +EDUCATIONALIST +EDUCATIONALISTS +EDUCATIONALLY +EDUCATIONESE +EDUCATIONESES +EDUCATIONIST +EDUCATIONISTS +EDUCATIONS +EDUCATIVE +EDUCATOR +EDUCATORS +EDUCATORY +EDUCE +EDUCED +EDUCES +EDUCIBLE +EDUCING +EDUCT +EDUCTION +EDUCTIONS +EDUCTIVE +EDUCTOR +EDUCTORS +EDUCTS +EDULCORATE +EDULCORATED +EDULCORATES +EDULCORATING +EDUTAINMENT +EDUTAINMENTS +EEK +EEL +EELGRASS +EELGRASSES +EELIER +EELIEST +EELLIKE +EELPOUT +EELPOUTS +EELS +EELWORM +EELWORMS +EELY +EERIE +EERIER +EERIEST +EERILY +EERINESS +EERINESSES +EERY +EF +EFF +EFFABLE +EFFACE +EFFACEABLE +EFFACED +EFFACEMENT +EFFACEMENTS +EFFACER +EFFACERS +EFFACES +EFFACING +EFFECT +EFFECTED +EFFECTER +EFFECTERS +EFFECTING +EFFECTIVE +EFFECTIVELY +EFFECTIVENESS +EFFECTIVENESSES +EFFECTIVES +EFFECTIVITIES +EFFECTIVITY +EFFECTOR +EFFECTORS +EFFECTS +EFFECTUAL +EFFECTUALITIES +EFFECTUALITY +EFFECTUALLY +EFFECTUALNESS +EFFECTUALNESSES +EFFECTUATE +EFFECTUATED +EFFECTUATES +EFFECTUATING +EFFECTUATION +EFFECTUATIONS +EFFEMINACIES +EFFEMINACY +EFFEMINATE +EFFEMINATES +EFFENDI +EFFENDIS +EFFERENT +EFFERENTLY +EFFERENTS +EFFERVESCE +EFFERVESCED +EFFERVESCENCE +EFFERVESCENCES +EFFERVESCENT +EFFERVESCENTLY +EFFERVESCES +EFFERVESCING +EFFETE +EFFETELY +EFFETENESS +EFFETENESSES +EFFICACIES +EFFICACIOUS +EFFICACIOUSLY +EFFICACIOUSNESS +EFFICACITIES +EFFICACITY +EFFICACY +EFFICIENCIES +EFFICIENCY +EFFICIENT +EFFICIENTLY +EFFIGIAL +EFFIGIES +EFFIGY +EFFLORESCE +EFFLORESCED +EFFLORESCENCE +EFFLORESCENCES +EFFLORESCENT +EFFLORESCES +EFFLORESCING +EFFLUENCE +EFFLUENCES +EFFLUENT +EFFLUENTS +EFFLUVIA +EFFLUVIAL +EFFLUVIUM +EFFLUVIUMS +EFFLUX +EFFLUXES +EFFLUXION +EFFLUXIONS +EFFORT +EFFORTFUL +EFFORTFULLY +EFFORTFULNESS +EFFORTFULNESSES +EFFORTLESS +EFFORTLESSLY +EFFORTLESSNESS +EFFORTS +EFFRONTERIES +EFFRONTERY +EFFS +EFFULGE +EFFULGED +EFFULGENCE +EFFULGENCES +EFFULGENT +EFFULGES +EFFULGING +EFFUSE +EFFUSED +EFFUSES +EFFUSING +EFFUSION +EFFUSIONS +EFFUSIVE +EFFUSIVELY +EFFUSIVENESS +EFFUSIVENESSES +EFS +EFT +EFTS +EFTSOON +EFTSOONS +EGAD +EGADS +EGAL +EGALITARIAN +EGALITARIANISM +EGALITARIANISMS +EGALITARIANS +EGALITE +EGALITES +EGER +EGERS +EGEST +EGESTA +EGESTED +EGESTING +EGESTION +EGESTIONS +EGESTIVE +EGESTS +EGG +EGGAR +EGGARS +EGGBEATER +EGGBEATERS +EGGCUP +EGGCUPS +EGGED +EGGER +EGGERS +EGGFRUIT +EGGFRUITS +EGGHEAD +EGGHEADED +EGGHEADEDNESS +EGGHEADEDNESSES +EGGHEADS +EGGING +EGGLESS +EGGNOG +EGGNOGS +EGGPLANT +EGGPLANTS +EGGS +EGGSHELL +EGGSHELLS +EGGY +EGIS +EGISES +EGLANTINE +EGLANTINES +EGLATERE +EGLATERES +EGLOMISE +EGO +EGOCENTRIC +EGOCENTRICALLY +EGOCENTRICITIES +EGOCENTRICITY +EGOCENTRICS +EGOCENTRISM +EGOCENTRISMS +EGOISM +EGOISMS +EGOIST +EGOISTIC +EGOISTICAL +EGOISTICALLY +EGOISTS +EGOLESS +EGOMANIA +EGOMANIAC +EGOMANIACAL +EGOMANIACALLY +EGOMANIACS +EGOMANIAS +EGOS +EGOTISM +EGOTISMS +EGOTIST +EGOTISTIC +EGOTISTICAL +EGOTISTICALLY +EGOTISTS +EGREGIOUS +EGREGIOUSLY +EGREGIOUSNESS +EGREGIOUSNESSES +EGRESS +EGRESSED +EGRESSES +EGRESSING +EGRESSION +EGRESSIONS +EGRET +EGRETS +EGYPTIAN +EGYPTIANS +EH +EICOSANOID +EICOSANOIDS +EIDE +EIDER +EIDERDOWN +EIDERDOWNS +EIDERS +EIDETIC +EIDETICALLY +EIDOLA +EIDOLIC +EIDOLON +EIDOLONS +EIDOS +EIGENMODE +EIGENMODES +EIGENVALUE +EIGENVALUES +EIGENVECTOR +EIGENVECTORS +EIGHT +EIGHTBALL +EIGHTBALLS +EIGHTEEN +EIGHTEENS +EIGHTEENTH +EIGHTEENTHS +EIGHTFOLD +EIGHTH +EIGHTHLY +EIGHTHS +EIGHTIES +EIGHTIETH +EIGHTIETHS +EIGHTS +EIGHTVO +EIGHTVOS +EIGHTY +EIKON +EIKONES +EIKONS +EINKORN +EINKORNS +EINSTEIN +EINSTEINIUM +EINSTEINIUMS +EINSTEINS +EIRENIC +EIRENICAL +EISEGESES +EISEGESIS +EISTEDDFOD +EISTEDDFODAU +EISTEDDFODIC +EISTEDDFODS +EISWEIN +EISWEINS +EITHER +EJACULATE +EJACULATED +EJACULATES +EJACULATING +EJACULATION +EJACULATIONS +EJACULATOR +EJACULATORS +EJACULATORY +EJECT +EJECTA +EJECTABLE +EJECTED +EJECTING +EJECTION +EJECTIONS +EJECTIVE +EJECTIVES +EJECTMENT +EJECTMENTS +EJECTOR +EJECTORS +EJECTS +EKE +EKED +EKES +EKING +EKISTIC +EKISTICAL +EKISTICS +EKPWELE +EKPWELES +EKTEXINE +EKTEXINES +EKUELE +EL +ELABORATE +ELABORATED +ELABORATELY +ELABORATENESS +ELABORATENESSES +ELABORATES +ELABORATING +ELABORATION +ELABORATIONS +ELABORATIVE +ELAIN +ELAINS +ELAN +ELAND +ELANDS +ELANS +ELAPHINE +ELAPID +ELAPIDS +ELAPINE +ELAPSE +ELAPSED +ELAPSES +ELAPSING +ELASMOBRANCH +ELASMOBRANCHS +ELASTASE +ELASTASES +ELASTIC +ELASTICALLY +ELASTICITIES +ELASTICITY +ELASTICIZED +ELASTICS +ELASTIN +ELASTINS +ELASTOMER +ELASTOMERIC +ELASTOMERS +ELATE +ELATED +ELATEDLY +ELATEDNESS +ELATEDNESSES +ELATER +ELATERID +ELATERIDS +ELATERIN +ELATERINS +ELATERITE +ELATERITES +ELATERIUM +ELATERIUMS +ELATERS +ELATES +ELATING +ELATION +ELATIONS +ELATIVE +ELATIVES +ELBOW +ELBOWED +ELBOWING +ELBOWROOM +ELBOWROOMS +ELBOWS +ELD +ELDER +ELDERBERRIES +ELDERBERRY +ELDERCARE +ELDERCARES +ELDERLIES +ELDERLINESS +ELDERLINESSES +ELDERLY +ELDERS +ELDERSHIP +ELDERSHIPS +ELDEST +ELDRESS +ELDRESSES +ELDRICH +ELDRITCH +ELDS +ELECAMPANE +ELECAMPANES +ELECT +ELECTABILITIES +ELECTABILITY +ELECTABLE +ELECTED +ELECTEE +ELECTEES +ELECTING +ELECTION +ELECTIONEER +ELECTIONEERED +ELECTIONEERER +ELECTIONEERERS +ELECTIONEERING +ELECTIONEERS +ELECTIONS +ELECTIVE +ELECTIVELY +ELECTIVENESS +ELECTIVENESSES +ELECTIVES +ELECTOR +ELECTORAL +ELECTORALLY +ELECTORATE +ELECTORATES +ELECTORS +ELECTRESS +ELECTRESSES +ELECTRET +ELECTRETS +ELECTRIC +ELECTRICAL +ELECTRICALLY +ELECTRICIAN +ELECTRICIANS +ELECTRICITIES +ELECTRICITY +ELECTRICS +ELECTRIFICATION +ELECTRIFIED +ELECTRIFIES +ELECTRIFY +ELECTRIFYING +ELECTRO +ELECTROACOUSTIC +ELECTROANALYSES +ELECTROANALYSIS +ELECTROCHEMICAL +ELECTROCUTE +ELECTROCUTED +ELECTROCUTES +ELECTROCUTING +ELECTROCUTION +ELECTROCUTIONS +ELECTRODE +ELECTRODEPOSIT +ELECTRODEPOSITS +ELECTRODERMAL +ELECTRODES +ELECTRODIALYSES +ELECTRODIALYSIS +ELECTRODIALYTIC +ELECTRODYNAMIC +ELECTRODYNAMICS +ELECTROED +ELECTROFISHING +ELECTROFISHINGS +ELECTROFORM +ELECTROFORMED +ELECTROFORMING +ELECTROFORMS +ELECTROGENESES +ELECTROGENESIS +ELECTROGENIC +ELECTROGRAM +ELECTROGRAMS +ELECTROING +ELECTROJET +ELECTROJETS +ELECTROKINETIC +ELECTROKINETICS +ELECTROLESS +ELECTROLOGIES +ELECTROLOGIST +ELECTROLOGISTS +ELECTROLOGY +ELECTROLYSES +ELECTROLYSIS +ELECTROLYTE +ELECTROLYTES +ELECTROLYTIC +ELECTROLYZE +ELECTROLYZED +ELECTROLYZES +ELECTROLYZING +ELECTROMAGNET +ELECTROMAGNETIC +ELECTROMAGNETS +ELECTROMETER +ELECTROMETERS +ELECTROMYOGRAM +ELECTROMYOGRAMS +ELECTROMYOGRAPH +ELECTRON +ELECTRONEGATIVE +ELECTRONIC +ELECTRONICA +ELECTRONICALLY +ELECTRONICAS +ELECTRONICS +ELECTRONS +ELECTROOSMOSES +ELECTROOSMOSIS +ELECTROOSMOTIC +ELECTROPHILE +ELECTROPHILES +ELECTROPHILIC +ELECTROPHORESE +ELECTROPHORESED +ELECTROPHORESES +ELECTROPHORESIS +ELECTROPHORETIC +ELECTROPHORI +ELECTROPHORUS +ELECTROPLATE +ELECTROPLATED +ELECTROPLATES +ELECTROPLATING +ELECTROPOSITIVE +ELECTROS +ELECTROSCOPE +ELECTROSCOPES +ELECTROSHOCK +ELECTROSHOCKS +ELECTROSTATIC +ELECTROSTATICS +ELECTROSURGERY +ELECTROSURGICAL +ELECTROTHERAPY +ELECTROTHERMAL +ELECTROTONIC +ELECTROTONUS +ELECTROTONUSES +ELECTROTYPE +ELECTROTYPED +ELECTROTYPER +ELECTROTYPERS +ELECTROTYPES +ELECTROTYPING +ELECTROWEAK +ELECTROWINNING +ELECTROWINNINGS +ELECTRUM +ELECTRUMS +ELECTS +ELECTUARIES +ELECTUARY +ELEDOISIN +ELEDOISINS +ELEEMOSYNARY +ELEGANCE +ELEGANCES +ELEGANCIES +ELEGANCY +ELEGANT +ELEGANTLY +ELEGIAC +ELEGIACAL +ELEGIACALLY +ELEGIACS +ELEGIES +ELEGISE +ELEGISED +ELEGISES +ELEGISING +ELEGIST +ELEGISTS +ELEGIT +ELEGITS +ELEGIZE +ELEGIZED +ELEGIZES +ELEGIZING +ELEGY +ELEMENT +ELEMENTAL +ELEMENTALLY +ELEMENTALS +ELEMENTARILY +ELEMENTARINESS +ELEMENTARY +ELEMENTS +ELEMI +ELEMIS +ELENCHI +ELENCHIC +ELENCHTIC +ELENCHUS +ELENCTIC +ELEOPTENE +ELEOPTENES +ELEPHANT +ELEPHANTIASES +ELEPHANTIASIS +ELEPHANTINE +ELEPHANTS +ELEVATE +ELEVATED +ELEVATEDS +ELEVATES +ELEVATING +ELEVATION +ELEVATIONS +ELEVATOR +ELEVATORS +ELEVEN +ELEVENS +ELEVENSES +ELEVENTH +ELEVENTHS +ELEVON +ELEVONS +ELF +ELFIN +ELFINS +ELFISH +ELFISHLY +ELFLIKE +ELFLOCK +ELFLOCKS +ELHI +ELICIT +ELICITATION +ELICITATIONS +ELICITED +ELICITING +ELICITOR +ELICITORS +ELICITS +ELIDE +ELIDED +ELIDES +ELIDIBLE +ELIDING +ELIGIBILITIES +ELIGIBILITY +ELIGIBLE +ELIGIBLES +ELIGIBLY +ELIMINATE +ELIMINATED +ELIMINATES +ELIMINATING +ELIMINATION +ELIMINATIONS +ELIMINATIVE +ELIMINATOR +ELIMINATORS +ELINT +ELINTS +ELISION +ELISIONS +ELITE +ELITES +ELITISM +ELITISMS +ELITIST +ELITISTS +ELIXIR +ELIXIRS +ELK +ELKHOUND +ELKHOUNDS +ELKS +ELL +ELLIPSE +ELLIPSES +ELLIPSIS +ELLIPSOID +ELLIPSOIDAL +ELLIPSOIDS +ELLIPTIC +ELLIPTICAL +ELLIPTICALLY +ELLIPTICALS +ELLIPTICITIES +ELLIPTICITY +ELLS +ELM +ELMIER +ELMIEST +ELMS +ELMY +ELOCUTION +ELOCUTIONARY +ELOCUTIONIST +ELOCUTIONISTS +ELOCUTIONS +ELODEA +ELODEAS +ELOIGN +ELOIGNED +ELOIGNER +ELOIGNERS +ELOIGNING +ELOIGNS +ELOIN +ELOINED +ELOINER +ELOINERS +ELOINING +ELOINMENT +ELOINMENTS +ELOINS +ELONGATE +ELONGATED +ELONGATES +ELONGATING +ELONGATION +ELONGATIONS +ELOPE +ELOPED +ELOPEMENT +ELOPEMENTS +ELOPER +ELOPERS +ELOPES +ELOPING +ELOQUENCE +ELOQUENCES +ELOQUENT +ELOQUENTLY +ELS +ELSE +ELSEWHERE +ELUANT +ELUANTS +ELUATE +ELUATES +ELUCIDATE +ELUCIDATED +ELUCIDATES +ELUCIDATING +ELUCIDATION +ELUCIDATIONS +ELUCIDATIVE +ELUCIDATOR +ELUCIDATORS +ELUCUBRATE +ELUCUBRATED +ELUCUBRATES +ELUCUBRATING +ELUCUBRATION +ELUCUBRATIONS +ELUDE +ELUDED +ELUDER +ELUDERS +ELUDES +ELUDING +ELUENT +ELUENTS +ELUSION +ELUSIONS +ELUSIVE +ELUSIVELY +ELUSIVENESS +ELUSIVENESSES +ELUSORY +ELUTE +ELUTED +ELUTES +ELUTING +ELUTION +ELUTIONS +ELUTRIATE +ELUTRIATED +ELUTRIATES +ELUTRIATING +ELUTRIATION +ELUTRIATIONS +ELUTRIATOR +ELUTRIATORS +ELUVIA +ELUVIAL +ELUVIATE +ELUVIATED +ELUVIATES +ELUVIATING +ELUVIATION +ELUVIATIONS +ELUVIUM +ELUVIUMS +ELVER +ELVERS +ELVES +ELVISH +ELVISHLY +ELYSIAN +ELYTRA +ELYTROID +ELYTRON +ELYTROUS +ELYTRUM +EM +EMACIATE +EMACIATED +EMACIATES +EMACIATING +EMACIATION +EMACIATIONS +EMAIL +EMAILED +EMAILING +EMAILS +EMALANGENI +EMANANT +EMANATE +EMANATED +EMANATES +EMANATING +EMANATION +EMANATIONS +EMANATIVE +EMANATOR +EMANATORS +EMANCIPATE +EMANCIPATED +EMANCIPATES +EMANCIPATING +EMANCIPATION +EMANCIPATIONIST +EMANCIPATIONS +EMANCIPATOR +EMANCIPATORS +EMARGINATE +EMARGINATION +EMARGINATIONS +EMASCULATE +EMASCULATED +EMASCULATES +EMASCULATING +EMASCULATION +EMASCULATIONS +EMASCULATOR +EMASCULATORS +EMBALM +EMBALMED +EMBALMER +EMBALMERS +EMBALMING +EMBALMMENT +EMBALMMENTS +EMBALMS +EMBANK +EMBANKED +EMBANKING +EMBANKMENT +EMBANKMENTS +EMBANKS +EMBAR +EMBARCADERO +EMBARCADEROS +EMBARGO +EMBARGOED +EMBARGOES +EMBARGOING +EMBARK +EMBARKATION +EMBARKATIONS +EMBARKED +EMBARKING +EMBARKMENT +EMBARKMENTS +EMBARKS +EMBARRASS +EMBARRASSABLE +EMBARRASSED +EMBARRASSEDLY +EMBARRASSES +EMBARRASSING +EMBARRASSINGLY +EMBARRASSMENT +EMBARRASSMENTS +EMBARRED +EMBARRING +EMBARS +EMBASSAGE +EMBASSAGES +EMBASSIES +EMBASSY +EMBATTLE +EMBATTLED +EMBATTLEMENT +EMBATTLEMENTS +EMBATTLES +EMBATTLING +EMBAY +EMBAYED +EMBAYING +EMBAYMENT +EMBAYMENTS +EMBAYS +EMBED +EMBEDDED +EMBEDDING +EMBEDDINGS +EMBEDMENT +EMBEDMENTS +EMBEDS +EMBELLISH +EMBELLISHED +EMBELLISHER +EMBELLISHERS +EMBELLISHES +EMBELLISHING +EMBELLISHMENT +EMBELLISHMENTS +EMBER +EMBERS +EMBEZZLE +EMBEZZLED +EMBEZZLEMENT +EMBEZZLEMENTS +EMBEZZLER +EMBEZZLERS +EMBEZZLES +EMBEZZLING +EMBITTER +EMBITTERED +EMBITTERING +EMBITTERMENT +EMBITTERMENTS +EMBITTERS +EMBLAZE +EMBLAZED +EMBLAZER +EMBLAZERS +EMBLAZES +EMBLAZING +EMBLAZON +EMBLAZONED +EMBLAZONER +EMBLAZONERS +EMBLAZONING +EMBLAZONMENT +EMBLAZONMENTS +EMBLAZONRIES +EMBLAZONRY +EMBLAZONS +EMBLEM +EMBLEMATIC +EMBLEMATICAL +EMBLEMATICALLY +EMBLEMATIZE +EMBLEMATIZED +EMBLEMATIZES +EMBLEMATIZING +EMBLEMED +EMBLEMENTS +EMBLEMING +EMBLEMIZE +EMBLEMIZED +EMBLEMIZES +EMBLEMIZING +EMBLEMS +EMBODIED +EMBODIER +EMBODIERS +EMBODIES +EMBODIMENT +EMBODIMENTS +EMBODY +EMBODYING +EMBOLDEN +EMBOLDENED +EMBOLDENING +EMBOLDENS +EMBOLECTOMIES +EMBOLECTOMY +EMBOLI +EMBOLIC +EMBOLIES +EMBOLISM +EMBOLISMIC +EMBOLISMS +EMBOLIZATION +EMBOLIZATIONS +EMBOLUS +EMBOLY +EMBONPOINT +EMBONPOINTS +EMBORDER +EMBORDERED +EMBORDERING +EMBORDERS +EMBOSK +EMBOSKED +EMBOSKING +EMBOSKS +EMBOSOM +EMBOSOMED +EMBOSOMING +EMBOSOMS +EMBOSS +EMBOSSABLE +EMBOSSED +EMBOSSER +EMBOSSERS +EMBOSSES +EMBOSSING +EMBOSSMENT +EMBOSSMENTS +EMBOUCHURE +EMBOUCHURES +EMBOW +EMBOWED +EMBOWEL +EMBOWELED +EMBOWELING +EMBOWELLED +EMBOWELLING +EMBOWELS +EMBOWER +EMBOWERED +EMBOWERING +EMBOWERS +EMBOWING +EMBOWS +EMBRACE +EMBRACEABLE +EMBRACED +EMBRACEMENT +EMBRACEMENTS +EMBRACEOR +EMBRACEORS +EMBRACER +EMBRACERIES +EMBRACERS +EMBRACERY +EMBRACES +EMBRACING +EMBRACINGLY +EMBRACIVE +EMBRANGLE +EMBRANGLED +EMBRANGLEMENT +EMBRANGLEMENTS +EMBRANGLES +EMBRANGLING +EMBRASURE +EMBRASURES +EMBRITTLE +EMBRITTLED +EMBRITTLEMENT +EMBRITTLEMENTS +EMBRITTLES +EMBRITTLING +EMBROCATE +EMBROCATED +EMBROCATES +EMBROCATING +EMBROCATION +EMBROCATIONS +EMBROGLIO +EMBROGLIOS +EMBROIDER +EMBROIDERED +EMBROIDERER +EMBROIDERERS +EMBROIDERIES +EMBROIDERING +EMBROIDERS +EMBROIDERY +EMBROIL +EMBROILED +EMBROILER +EMBROILERS +EMBROILING +EMBROILMENT +EMBROILMENTS +EMBROILS +EMBROWN +EMBROWNED +EMBROWNING +EMBROWNS +EMBRUE +EMBRUED +EMBRUES +EMBRUING +EMBRUTE +EMBRUTED +EMBRUTES +EMBRUTING +EMBRYO +EMBRYOGENESES +EMBRYOGENESIS +EMBRYOGENETIC +EMBRYOGENIC +EMBRYOGENIES +EMBRYOGENY +EMBRYOID +EMBRYOIDS +EMBRYOLOGICAL +EMBRYOLOGICALLY +EMBRYOLOGIES +EMBRYOLOGIST +EMBRYOLOGISTS +EMBRYOLOGY +EMBRYON +EMBRYONAL +EMBRYONATED +EMBRYONIC +EMBRYONICALLY +EMBRYONS +EMBRYOPHYTE +EMBRYOPHYTES +EMBRYOS +EMBRYOTIC +EMCEE +EMCEED +EMCEEING +EMCEES +EMDASH +EMDASHES +EME +EMEER +EMEERATE +EMEERATES +EMEERS +EMEND +EMENDABLE +EMENDATE +EMENDATED +EMENDATES +EMENDATING +EMENDATION +EMENDATIONS +EMENDATOR +EMENDATORS +EMENDED +EMENDER +EMENDERS +EMENDING +EMENDS +EMERALD +EMERALDS +EMERGE +EMERGED +EMERGENCE +EMERGENCES +EMERGENCIES +EMERGENCY +EMERGENT +EMERGENTS +EMERGES +EMERGING +EMERIES +EMERITA +EMERITAE +EMERITAS +EMERITI +EMERITUS +EMEROD +EMERODS +EMEROID +EMEROIDS +EMERSED +EMERSION +EMERSIONS +EMERY +EMES +EMESES +EMESIS +EMETIC +EMETICALLY +EMETICS +EMETIN +EMETINE +EMETINES +EMETINS +EMEU +EMEUS +EMEUTE +EMEUTES +EMIC +EMIGRANT +EMIGRANTS +EMIGRATE +EMIGRATED +EMIGRATES +EMIGRATING +EMIGRATION +EMIGRATIONS +EMIGRE +EMIGRES +EMINENCE +EMINENCES +EMINENCIES +EMINENCY +EMINENT +EMINENTLY +EMIR +EMIRATE +EMIRATES +EMIRS +EMISSARIES +EMISSARY +EMISSION +EMISSIONS +EMISSIVE +EMISSIVITIES +EMISSIVITY +EMIT +EMITS +EMITTANCE +EMITTANCES +EMITTED +EMITTER +EMITTERS +EMITTING +EMMENAGOGUE +EMMENAGOGUES +EMMER +EMMERS +EMMET +EMMETROPE +EMMETROPES +EMMETS +EMMY +EMMYS +EMODIN +EMODINS +EMOLLIENT +EMOLLIENTS +EMOLUMENT +EMOLUMENTS +EMOTE +EMOTED +EMOTER +EMOTERS +EMOTES +EMOTICON +EMOTICONS +EMOTING +EMOTION +EMOTIONAL +EMOTIONALISM +EMOTIONALISMS +EMOTIONALIST +EMOTIONALISTIC +EMOTIONALISTS +EMOTIONALITIES +EMOTIONALITY +EMOTIONALIZE +EMOTIONALIZED +EMOTIONALIZES +EMOTIONALIZING +EMOTIONALLY +EMOTIONLESS +EMOTIONLESSLY +EMOTIONLESSNESS +EMOTIONS +EMOTIVE +EMOTIVELY +EMOTIVITIES +EMOTIVITY +EMPALE +EMPALED +EMPALER +EMPALERS +EMPALES +EMPALING +EMPANADA +EMPANADAS +EMPANEL +EMPANELED +EMPANELING +EMPANELLED +EMPANELLING +EMPANELS +EMPATHETIC +EMPATHETICALLY +EMPATHIC +EMPATHICALLY +EMPATHIES +EMPATHISE +EMPATHISED +EMPATHISES +EMPATHISING +EMPATHIZE +EMPATHIZED +EMPATHIZES +EMPATHIZING +EMPATHY +EMPENNAGE +EMPENNAGES +EMPERIES +EMPEROR +EMPERORS +EMPERORSHIP +EMPERORSHIPS +EMPERY +EMPHASES +EMPHASIS +EMPHASISE +EMPHASISED +EMPHASISES +EMPHASISING +EMPHASIZE +EMPHASIZED +EMPHASIZES +EMPHASIZING +EMPHATIC +EMPHATICALLY +EMPHYSEMA +EMPHYSEMAS +EMPHYSEMATOUS +EMPHYSEMIC +EMPIRE +EMPIRES +EMPIRIC +EMPIRICAL +EMPIRICALLY +EMPIRICISM +EMPIRICISMS +EMPIRICIST +EMPIRICISTS +EMPIRICS +EMPLACE +EMPLACED +EMPLACEMENT +EMPLACEMENTS +EMPLACES +EMPLACING +EMPLANE +EMPLANED +EMPLANES +EMPLANING +EMPLOY +EMPLOYABILITIES +EMPLOYABILITY +EMPLOYABLE +EMPLOYABLES +EMPLOYE +EMPLOYED +EMPLOYEE +EMPLOYEES +EMPLOYER +EMPLOYERS +EMPLOYES +EMPLOYING +EMPLOYMENT +EMPLOYMENTS +EMPLOYS +EMPOISON +EMPOISONED +EMPOISONING +EMPOISONMENT +EMPOISONMENTS +EMPOISONS +EMPORIA +EMPORIUM +EMPORIUMS +EMPOWER +EMPOWERED +EMPOWERING +EMPOWERMENT +EMPOWERMENTS +EMPOWERS +EMPRESS +EMPRESSEMENT +EMPRESSEMENTS +EMPRESSES +EMPRISE +EMPRISES +EMPRIZE +EMPRIZES +EMPTIABLE +EMPTIED +EMPTIER +EMPTIERS +EMPTIES +EMPTIEST +EMPTILY +EMPTINESS +EMPTINESSES +EMPTINGS +EMPTINS +EMPTY +EMPTYING +EMPURPLE +EMPURPLED +EMPURPLES +EMPURPLING +EMPYEMA +EMPYEMAS +EMPYEMATA +EMPYEMIC +EMPYREAL +EMPYREAN +EMPYREANS +EMS +EMU +EMULATE +EMULATED +EMULATES +EMULATING +EMULATION +EMULATIONS +EMULATIVE +EMULATIVELY +EMULATOR +EMULATORS +EMULOUS +EMULOUSLY +EMULOUSNESS +EMULOUSNESSES +EMULSIBLE +EMULSIFIABLE +EMULSIFICATION +EMULSIFICATIONS +EMULSIFIED +EMULSIFIER +EMULSIFIERS +EMULSIFIES +EMULSIFY +EMULSIFYING +EMULSION +EMULSIONS +EMULSIVE +EMULSOID +EMULSOIDAL +EMULSOIDS +EMUNCTORIES +EMUNCTORY +EMUS +EMYD +EMYDE +EMYDES +EMYDS +EN +ENABLE +ENABLED +ENABLER +ENABLERS +ENABLES +ENABLING +ENACT +ENACTABLE +ENACTED +ENACTING +ENACTIVE +ENACTMENT +ENACTMENTS +ENACTOR +ENACTORS +ENACTORY +ENACTS +ENALAPRIL +ENALAPRILS +ENAMEL +ENAMELED +ENAMELER +ENAMELERS +ENAMELING +ENAMELIST +ENAMELISTS +ENAMELLED +ENAMELLER +ENAMELLERS +ENAMELLING +ENAMELS +ENAMELWARE +ENAMELWARES +ENAMINE +ENAMINES +ENAMOR +ENAMORED +ENAMORING +ENAMORS +ENAMOUR +ENAMOURED +ENAMOURING +ENAMOURS +ENANTIOMER +ENANTIOMERIC +ENANTIOMERS +ENANTIOMORPH +ENANTIOMORPHIC +ENANTIOMORPHISM +ENANTIOMORPHOUS +ENANTIOMORPHS +ENATE +ENATES +ENATIC +ENATION +ENATIONS +ENCAENIA +ENCAGE +ENCAGED +ENCAGES +ENCAGING +ENCAMP +ENCAMPED +ENCAMPING +ENCAMPMENT +ENCAMPMENTS +ENCAMPS +ENCAPSULATE +ENCAPSULATED +ENCAPSULATES +ENCAPSULATING +ENCAPSULATION +ENCAPSULATIONS +ENCAPSULE +ENCAPSULED +ENCAPSULES +ENCAPSULING +ENCASE +ENCASED +ENCASEMENT +ENCASEMENTS +ENCASES +ENCASH +ENCASHABLE +ENCASHED +ENCASHES +ENCASHING +ENCASHMENT +ENCASHMENTS +ENCASING +ENCAUSTIC +ENCAUSTICS +ENCEINTE +ENCEINTES +ENCEPHALA +ENCEPHALITIC +ENCEPHALITIDES +ENCEPHALITIS +ENCEPHALITOGEN +ENCEPHALITOGENS +ENCEPHALOGRAM +ENCEPHALOGRAMS +ENCEPHALOGRAPH +ENCEPHALOGRAPHS +ENCEPHALOGRAPHY +ENCEPHALON +ENCEPHALOPATHIC +ENCEPHALOPATHY +ENCHAIN +ENCHAINED +ENCHAINING +ENCHAINMENT +ENCHAINMENTS +ENCHAINS +ENCHANT +ENCHANTED +ENCHANTER +ENCHANTERS +ENCHANTING +ENCHANTINGLY +ENCHANTMENT +ENCHANTMENTS +ENCHANTRESS +ENCHANTRESSES +ENCHANTS +ENCHASE +ENCHASED +ENCHASER +ENCHASERS +ENCHASES +ENCHASING +ENCHILADA +ENCHILADAS +ENCHIRIDIA +ENCHIRIDION +ENCHORIAL +ENCHORIC +ENCINA +ENCINAL +ENCINAS +ENCIPHER +ENCIPHERED +ENCIPHERER +ENCIPHERERS +ENCIPHERING +ENCIPHERMENT +ENCIPHERMENTS +ENCIPHERS +ENCIRCLE +ENCIRCLED +ENCIRCLEMENT +ENCIRCLEMENTS +ENCIRCLES +ENCIRCLING +ENCLASP +ENCLASPED +ENCLASPING +ENCLASPS +ENCLAVE +ENCLAVED +ENCLAVES +ENCLAVING +ENCLITIC +ENCLITICS +ENCLOSE +ENCLOSED +ENCLOSER +ENCLOSERS +ENCLOSES +ENCLOSING +ENCLOSURE +ENCLOSURES +ENCODABLE +ENCODE +ENCODED +ENCODER +ENCODERS +ENCODES +ENCODING +ENCOMIA +ENCOMIAST +ENCOMIASTIC +ENCOMIASTS +ENCOMIUM +ENCOMIUMS +ENCOMPASS +ENCOMPASSED +ENCOMPASSES +ENCOMPASSING +ENCOMPASSMENT +ENCOMPASSMENTS +ENCORE +ENCORED +ENCORES +ENCORING +ENCOUNTER +ENCOUNTERED +ENCOUNTERING +ENCOUNTERS +ENCOURAGE +ENCOURAGED +ENCOURAGEMENT +ENCOURAGEMENTS +ENCOURAGER +ENCOURAGERS +ENCOURAGES +ENCOURAGING +ENCOURAGINGLY +ENCRIMSON +ENCRIMSONED +ENCRIMSONING +ENCRIMSONS +ENCRINITE +ENCRINITES +ENCROACH +ENCROACHED +ENCROACHER +ENCROACHERS +ENCROACHES +ENCROACHING +ENCROACHMENT +ENCROACHMENTS +ENCRUST +ENCRUSTATION +ENCRUSTATIONS +ENCRUSTED +ENCRUSTING +ENCRUSTS +ENCRYPT +ENCRYPTED +ENCRYPTING +ENCRYPTION +ENCRYPTIONS +ENCRYPTS +ENCULTURATE +ENCULTURATED +ENCULTURATES +ENCULTURATING +ENCULTURATION +ENCULTURATIONS +ENCUMBER +ENCUMBERED +ENCUMBERING +ENCUMBERS +ENCUMBRANCE +ENCUMBRANCER +ENCUMBRANCERS +ENCUMBRANCES +ENCYCLIC +ENCYCLICAL +ENCYCLICALS +ENCYCLICS +ENCYCLOPAEDIA +ENCYCLOPAEDIAS +ENCYCLOPAEDIC +ENCYCLOPEDIA +ENCYCLOPEDIAS +ENCYCLOPEDIC +ENCYCLOPEDISM +ENCYCLOPEDISMS +ENCYCLOPEDIST +ENCYCLOPEDISTS +ENCYST +ENCYSTED +ENCYSTING +ENCYSTMENT +ENCYSTMENTS +ENCYSTS +END +ENDAMAGE +ENDAMAGED +ENDAMAGES +ENDAMAGING +ENDAMEBA +ENDAMEBAE +ENDAMEBAS +ENDAMEBIC +ENDAMOEBA +ENDAMOEBAE +ENDAMOEBAS +ENDANGER +ENDANGERED +ENDANGERING +ENDANGERMENT +ENDANGERMENTS +ENDANGERS +ENDARCH +ENDARCHIES +ENDARCHY +ENDARTERECTOMY +ENDASH +ENDASHES +ENDBRAIN +ENDBRAINS +ENDEAR +ENDEARED +ENDEARING +ENDEARINGLY +ENDEARMENT +ENDEARMENTS +ENDEARS +ENDEAVOR +ENDEAVORED +ENDEAVORING +ENDEAVORS +ENDEAVOUR +ENDEAVOURED +ENDEAVOURING +ENDEAVOURS +ENDED +ENDEMIAL +ENDEMIC +ENDEMICAL +ENDEMICALLY +ENDEMICITIES +ENDEMICITY +ENDEMICS +ENDEMISM +ENDEMISMS +ENDER +ENDERGONIC +ENDERMIC +ENDERS +ENDEXINE +ENDEXINES +ENDGAME +ENDGAMES +ENDING +ENDINGS +ENDITE +ENDITED +ENDITES +ENDITING +ENDIVE +ENDIVES +ENDLEAF +ENDLEAFS +ENDLEAVES +ENDLESS +ENDLESSLY +ENDLESSNESS +ENDLESSNESSES +ENDLONG +ENDMOST +ENDNOTE +ENDNOTES +ENDOBIOTIC +ENDOBLAST +ENDOBLASTS +ENDOCARDIA +ENDOCARDIAL +ENDOCARDITIS +ENDOCARDITISES +ENDOCARDIUM +ENDOCARP +ENDOCARPS +ENDOCAST +ENDOCASTS +ENDOCHONDRAL +ENDOCRINE +ENDOCRINES +ENDOCRINOLOGIC +ENDOCRINOLOGIES +ENDOCRINOLOGIST +ENDOCRINOLOGY +ENDOCYTIC +ENDOCYTOSES +ENDOCYTOSIS +ENDOCYTOTIC +ENDODERM +ENDODERMAL +ENDODERMIS +ENDODERMISES +ENDODERMS +ENDODONTIC +ENDODONTICALLY +ENDODONTICS +ENDODONTIST +ENDODONTISTS +ENDOENZYME +ENDOENZYMES +ENDOERGIC +ENDOGAMIC +ENDOGAMIES +ENDOGAMOUS +ENDOGAMY +ENDOGEN +ENDOGENIC +ENDOGENIES +ENDOGENOUS +ENDOGENOUSLY +ENDOGENS +ENDOGENY +ENDOLITHIC +ENDOLYMPH +ENDOLYMPHATIC +ENDOLYMPHS +ENDOMETRIA +ENDOMETRIAL +ENDOMETRIOSES +ENDOMETRIOSIS +ENDOMETRITIS +ENDOMETRITISES +ENDOMETRIUM +ENDOMITOSES +ENDOMITOSIS +ENDOMITOTIC +ENDOMIXIS +ENDOMIXISES +ENDOMORPH +ENDOMORPHIC +ENDOMORPHIES +ENDOMORPHISM +ENDOMORPHISMS +ENDOMORPHS +ENDOMORPHY +ENDONUCLEASE +ENDONUCLEASES +ENDONUCLEOLYTIC +ENDOPARASITE +ENDOPARASITES +ENDOPARASITIC +ENDOPARASITISM +ENDOPARASITISMS +ENDOPEPTIDASE +ENDOPEPTIDASES +ENDOPEROXIDE +ENDOPEROXIDES +ENDOPHYTE +ENDOPHYTES +ENDOPHYTIC +ENDOPLASM +ENDOPLASMIC +ENDOPLASMS +ENDOPOD +ENDOPODITE +ENDOPODITES +ENDOPODS +ENDOPOLYPLOID +ENDOPOLYPLOIDY +ENDOPROCT +ENDOPROCTS +ENDORPHIN +ENDORPHINS +ENDORSABLE +ENDORSE +ENDORSED +ENDORSEE +ENDORSEES +ENDORSEMENT +ENDORSEMENTS +ENDORSER +ENDORSERS +ENDORSES +ENDORSING +ENDORSIVE +ENDORSOR +ENDORSORS +ENDOSARC +ENDOSARCS +ENDOSCOPE +ENDOSCOPES +ENDOSCOPIC +ENDOSCOPICALLY +ENDOSCOPIES +ENDOSCOPY +ENDOSKELETAL +ENDOSKELETON +ENDOSKELETONS +ENDOSMOS +ENDOSMOSES +ENDOSOME +ENDOSOMES +ENDOSPERM +ENDOSPERMS +ENDOSPORE +ENDOSPORES +ENDOSTEA +ENDOSTEAL +ENDOSTEALLY +ENDOSTEUM +ENDOSTYLE +ENDOSTYLES +ENDOSULFAN +ENDOSULFANS +ENDOSYMBIONT +ENDOSYMBIONTS +ENDOSYMBIOSES +ENDOSYMBIOSIS +ENDOSYMBIOTIC +ENDOTHECIA +ENDOTHECIUM +ENDOTHELIA +ENDOTHELIAL +ENDOTHELIOMA +ENDOTHELIOMAS +ENDOTHELIOMATA +ENDOTHELIUM +ENDOTHERM +ENDOTHERMIC +ENDOTHERMIES +ENDOTHERMS +ENDOTHERMY +ENDOTOXIC +ENDOTOXIN +ENDOTOXINS +ENDOTRACHEAL +ENDOTROPHIC +ENDOW +ENDOWED +ENDOWER +ENDOWERS +ENDOWING +ENDOWMENT +ENDOWMENTS +ENDOWS +ENDOZOIC +ENDPAPER +ENDPAPERS +ENDPLATE +ENDPLATES +ENDPLAY +ENDPLAYED +ENDPLAYING +ENDPLAYS +ENDPOINT +ENDPOINTS +ENDRIN +ENDRINS +ENDS +ENDUE +ENDUED +ENDUES +ENDUING +ENDURABLE +ENDURABLY +ENDURANCE +ENDURANCES +ENDURE +ENDURED +ENDURER +ENDURERS +ENDURES +ENDURING +ENDURINGLY +ENDURINGNESS +ENDURINGNESSES +ENDURO +ENDUROS +ENDWAYS +ENDWISE +ENEMA +ENEMAS +ENEMATA +ENEMIES +ENEMY +ENERGETIC +ENERGETICALLY +ENERGETICS +ENERGID +ENERGIDS +ENERGIES +ENERGISE +ENERGISED +ENERGISES +ENERGISING +ENERGIZATION +ENERGIZATIONS +ENERGIZE +ENERGIZED +ENERGIZER +ENERGIZERS +ENERGIZES +ENERGIZING +ENERGUMEN +ENERGUMENS +ENERGY +ENERVATE +ENERVATED +ENERVATES +ENERVATING +ENERVATION +ENERVATIONS +ENERVATOR +ENERVATORS +ENFACE +ENFACED +ENFACES +ENFACING +ENFEEBLE +ENFEEBLED +ENFEEBLEMENT +ENFEEBLEMENTS +ENFEEBLER +ENFEEBLERS +ENFEEBLES +ENFEEBLING +ENFEOFF +ENFEOFFED +ENFEOFFING +ENFEOFFMENT +ENFEOFFMENTS +ENFEOFFS +ENFETTER +ENFETTERED +ENFETTERING +ENFETTERS +ENFEVER +ENFEVERED +ENFEVERING +ENFEVERS +ENFILADE +ENFILADED +ENFILADES +ENFILADING +ENFLAME +ENFLAMED +ENFLAMES +ENFLAMING +ENFLEURAGE +ENFLEURAGES +ENFOLD +ENFOLDED +ENFOLDER +ENFOLDERS +ENFOLDING +ENFOLDS +ENFORCE +ENFORCEABILITY +ENFORCEABLE +ENFORCED +ENFORCEMENT +ENFORCEMENTS +ENFORCER +ENFORCERS +ENFORCES +ENFORCING +ENFRAME +ENFRAMED +ENFRAMEMENT +ENFRAMEMENTS +ENFRAMES +ENFRAMING +ENFRANCHISE +ENFRANCHISED +ENFRANCHISEMENT +ENFRANCHISES +ENFRANCHISING +ENG +ENGAGE +ENGAGED +ENGAGEDLY +ENGAGEMENT +ENGAGEMENTS +ENGAGER +ENGAGERS +ENGAGES +ENGAGING +ENGAGINGLY +ENGARLAND +ENGARLANDED +ENGARLANDING +ENGARLANDS +ENGENDER +ENGENDERED +ENGENDERING +ENGENDERS +ENGILD +ENGILDED +ENGILDING +ENGILDS +ENGINE +ENGINED +ENGINEER +ENGINEERED +ENGINEERING +ENGINEERINGS +ENGINEERS +ENGINERIES +ENGINERY +ENGINES +ENGINING +ENGINOUS +ENGIRD +ENGIRDED +ENGIRDING +ENGIRDLE +ENGIRDLED +ENGIRDLES +ENGIRDLING +ENGIRDS +ENGIRT +ENGLACIAL +ENGLISH +ENGLISHED +ENGLISHES +ENGLISHING +ENGLUT +ENGLUTS +ENGLUTTED +ENGLUTTING +ENGORGE +ENGORGED +ENGORGEMENT +ENGORGEMENTS +ENGORGES +ENGORGING +ENGRAFT +ENGRAFTED +ENGRAFTING +ENGRAFTMENT +ENGRAFTMENTS +ENGRAFTS +ENGRAIL +ENGRAILED +ENGRAILING +ENGRAILS +ENGRAIN +ENGRAINED +ENGRAINING +ENGRAINS +ENGRAM +ENGRAMME +ENGRAMMES +ENGRAMMIC +ENGRAMS +ENGRAVE +ENGRAVED +ENGRAVER +ENGRAVERS +ENGRAVES +ENGRAVING +ENGRAVINGS +ENGROSS +ENGROSSED +ENGROSSER +ENGROSSERS +ENGROSSES +ENGROSSING +ENGROSSINGLY +ENGROSSMENT +ENGROSSMENTS +ENGS +ENGULF +ENGULFED +ENGULFING +ENGULFMENT +ENGULFMENTS +ENGULFS +ENHALO +ENHALOED +ENHALOES +ENHALOING +ENHALOS +ENHANCE +ENHANCED +ENHANCEMENT +ENHANCEMENTS +ENHANCER +ENHANCERS +ENHANCES +ENHANCING +ENHANCIVE +ENHARMONIC +ENHARMONICALLY +ENIGMA +ENIGMAS +ENIGMATA +ENIGMATIC +ENIGMATICAL +ENIGMATICALLY +ENISLE +ENISLED +ENISLES +ENISLING +ENJAMBED +ENJAMBEMENT +ENJAMBEMENTS +ENJAMBMENT +ENJAMBMENTS +ENJOIN +ENJOINDER +ENJOINDERS +ENJOINED +ENJOINER +ENJOINERS +ENJOINING +ENJOINS +ENJOY +ENJOYABLE +ENJOYABLENESS +ENJOYABLENESSES +ENJOYABLY +ENJOYED +ENJOYER +ENJOYERS +ENJOYING +ENJOYMENT +ENJOYMENTS +ENJOYS +ENKEPHALIN +ENKEPHALINS +ENKINDLE +ENKINDLED +ENKINDLER +ENKINDLERS +ENKINDLES +ENKINDLING +ENLACE +ENLACED +ENLACEMENT +ENLACEMENTS +ENLACES +ENLACING +ENLARGE +ENLARGEABLE +ENLARGED +ENLARGEMENT +ENLARGEMENTS +ENLARGER +ENLARGERS +ENLARGES +ENLARGING +ENLIGHTEN +ENLIGHTENED +ENLIGHTENING +ENLIGHTENMENT +ENLIGHTENMENTS +ENLIGHTENS +ENLIST +ENLISTED +ENLISTEE +ENLISTEES +ENLISTER +ENLISTERS +ENLISTING +ENLISTMENT +ENLISTMENTS +ENLISTS +ENLIVEN +ENLIVENED +ENLIVENER +ENLIVENERS +ENLIVENING +ENLIVENS +ENMESH +ENMESHED +ENMESHES +ENMESHING +ENMESHMENT +ENMESHMENTS +ENMITIES +ENMITY +ENNEAD +ENNEADIC +ENNEADS +ENNEAGON +ENNEAGONS +ENNOBLE +ENNOBLED +ENNOBLEMENT +ENNOBLEMENTS +ENNOBLER +ENNOBLERS +ENNOBLES +ENNOBLING +ENNUI +ENNUIS +ENNUYE +ENNUYEE +ENOKI +ENOKIDAKE +ENOKIDAKES +ENOKIS +ENOKITAKE +ENOKITAKES +ENOL +ENOLASE +ENOLASES +ENOLIC +ENOLOGICAL +ENOLOGIES +ENOLOGIST +ENOLOGISTS +ENOLOGY +ENOLS +ENOPHILE +ENOPHILES +ENORM +ENORMITIES +ENORMITY +ENORMOUS +ENORMOUSLY +ENORMOUSNESS +ENORMOUSNESSES +ENOSIS +ENOSISES +ENOUGH +ENOUGHS +ENOUNCE +ENOUNCED +ENOUNCES +ENOUNCING +ENOW +ENOWS +ENPLANE +ENPLANED +ENPLANES +ENPLANING +ENQUIRE +ENQUIRED +ENQUIRES +ENQUIRIES +ENQUIRING +ENQUIRY +ENRAGE +ENRAGED +ENRAGEDLY +ENRAGES +ENRAGING +ENRAPT +ENRAPTURE +ENRAPTURED +ENRAPTURES +ENRAPTURING +ENRAVISH +ENRAVISHED +ENRAVISHES +ENRAVISHING +ENREGISTER +ENREGISTERED +ENREGISTERING +ENREGISTERS +ENRICH +ENRICHED +ENRICHER +ENRICHERS +ENRICHES +ENRICHING +ENRICHMENT +ENRICHMENTS +ENROBE +ENROBED +ENROBER +ENROBERS +ENROBES +ENROBING +ENROL +ENROLL +ENROLLED +ENROLLEE +ENROLLEES +ENROLLER +ENROLLERS +ENROLLING +ENROLLMENT +ENROLLMENTS +ENROLLS +ENROLMENT +ENROLMENTS +ENROLS +ENROOT +ENROOTED +ENROOTING +ENROOTS +ENS +ENSAMPLE +ENSAMPLES +ENSANGUINE +ENSANGUINED +ENSANGUINES +ENSANGUINING +ENSCONCE +ENSCONCED +ENSCONCES +ENSCONCING +ENSCROLL +ENSCROLLED +ENSCROLLING +ENSCROLLS +ENSEMBLE +ENSEMBLES +ENSERF +ENSERFED +ENSERFING +ENSERFMENT +ENSERFMENTS +ENSERFS +ENSHEATH +ENSHEATHE +ENSHEATHED +ENSHEATHES +ENSHEATHING +ENSHEATHS +ENSHRINE +ENSHRINED +ENSHRINEE +ENSHRINEES +ENSHRINEMENT +ENSHRINEMENTS +ENSHRINES +ENSHRINING +ENSHROUD +ENSHROUDED +ENSHROUDING +ENSHROUDS +ENSIFORM +ENSIGN +ENSIGNCIES +ENSIGNCY +ENSIGNS +ENSILAGE +ENSILAGED +ENSILAGES +ENSILAGING +ENSILE +ENSILED +ENSILES +ENSILING +ENSKIED +ENSKIES +ENSKY +ENSKYED +ENSKYING +ENSLAVE +ENSLAVED +ENSLAVEMENT +ENSLAVEMENTS +ENSLAVER +ENSLAVERS +ENSLAVES +ENSLAVING +ENSNARE +ENSNARED +ENSNARER +ENSNARERS +ENSNARES +ENSNARING +ENSNARL +ENSNARLED +ENSNARLING +ENSNARLS +ENSORCEL +ENSORCELED +ENSORCELING +ENSORCELL +ENSORCELLED +ENSORCELLING +ENSORCELLMENT +ENSORCELLMENTS +ENSORCELLS +ENSORCELS +ENSOUL +ENSOULED +ENSOULING +ENSOULS +ENSPHERE +ENSPHERED +ENSPHERES +ENSPHERING +ENSTATITE +ENSTATITES +ENSUE +ENSUED +ENSUES +ENSUING +ENSURE +ENSURED +ENSURER +ENSURERS +ENSURES +ENSURING +ENSWATHE +ENSWATHED +ENSWATHES +ENSWATHING +ENTABLATURE +ENTABLATURES +ENTAIL +ENTAILED +ENTAILER +ENTAILERS +ENTAILING +ENTAILMENT +ENTAILMENTS +ENTAILS +ENTAMEBA +ENTAMEBAE +ENTAMEBAS +ENTAMOEBA +ENTAMOEBAE +ENTAMOEBAS +ENTANGLE +ENTANGLED +ENTANGLEMENT +ENTANGLEMENTS +ENTANGLER +ENTANGLERS +ENTANGLES +ENTANGLING +ENTASES +ENTASIA +ENTASIAS +ENTASIS +ENTASTIC +ENTELECHIES +ENTELECHY +ENTELLUS +ENTELLUSES +ENTENTE +ENTENTES +ENTER +ENTERA +ENTERABLE +ENTERAL +ENTERALLY +ENTERED +ENTERER +ENTERERS +ENTERIC +ENTERICS +ENTERING +ENTERITIDES +ENTERITIS +ENTERITISES +ENTEROBACTERIA +ENTEROBACTERIAL +ENTEROBACTERIUM +ENTEROBIASES +ENTEROBIASIS +ENTEROCOCCAL +ENTEROCOCCI +ENTEROCOCCUS +ENTEROCOEL +ENTEROCOELE +ENTEROCOELES +ENTEROCOELIC +ENTEROCOELOUS +ENTEROCOELS +ENTEROCOLITIS +ENTEROCOLITISES +ENTEROGASTRONE +ENTEROGASTRONES +ENTEROKINASE +ENTEROKINASES +ENTERON +ENTERONS +ENTEROPATHIES +ENTEROPATHY +ENTEROSTOMAL +ENTEROSTOMIES +ENTEROSTOMY +ENTEROTOXIN +ENTEROTOXINS +ENTEROVIRAL +ENTEROVIRUS +ENTEROVIRUSES +ENTERPRISE +ENTERPRISER +ENTERPRISERS +ENTERPRISES +ENTERPRISING +ENTERS +ENTERTAIN +ENTERTAINED +ENTERTAINER +ENTERTAINERS +ENTERTAINING +ENTERTAININGLY +ENTERTAINMENT +ENTERTAINMENTS +ENTERTAINS +ENTHALPIES +ENTHALPY +ENTHETIC +ENTHRAL +ENTHRALL +ENTHRALLED +ENTHRALLING +ENTHRALLMENT +ENTHRALLMENTS +ENTHRALLS +ENTHRALS +ENTHRONE +ENTHRONED +ENTHRONEMENT +ENTHRONEMENTS +ENTHRONES +ENTHRONING +ENTHUSE +ENTHUSED +ENTHUSES +ENTHUSIASM +ENTHUSIASMS +ENTHUSIAST +ENTHUSIASTIC +ENTHUSIASTS +ENTHUSING +ENTHYMEME +ENTHYMEMES +ENTIA +ENTICE +ENTICED +ENTICEMENT +ENTICEMENTS +ENTICER +ENTICERS +ENTICES +ENTICING +ENTICINGLY +ENTIRE +ENTIRELY +ENTIRENESS +ENTIRENESSES +ENTIRES +ENTIRETIES +ENTIRETY +ENTITIES +ENTITLE +ENTITLED +ENTITLEMENT +ENTITLEMENTS +ENTITLES +ENTITLING +ENTITY +ENTOBLAST +ENTOBLASTS +ENTODERM +ENTODERMAL +ENTODERMIC +ENTODERMS +ENTOIL +ENTOILED +ENTOILING +ENTOILS +ENTOMB +ENTOMBED +ENTOMBING +ENTOMBMENT +ENTOMBMENTS +ENTOMBS +ENTOMOFAUNA +ENTOMOFAUNAE +ENTOMOFAUNAS +ENTOMOLOGICAL +ENTOMOLOGICALLY +ENTOMOLOGIES +ENTOMOLOGIST +ENTOMOLOGISTS +ENTOMOLOGY +ENTOMOPHAGOUS +ENTOMOPHILIES +ENTOMOPHILOUS +ENTOMOPHILY +ENTOPHYTE +ENTOPHYTES +ENTOPIC +ENTOPROCT +ENTOPROCTS +ENTOURAGE +ENTOURAGES +ENTOZOA +ENTOZOAL +ENTOZOAN +ENTOZOANS +ENTOZOIC +ENTOZOON +ENTRAILS +ENTRAIN +ENTRAINED +ENTRAINER +ENTRAINERS +ENTRAINING +ENTRAINMENT +ENTRAINMENTS +ENTRAINS +ENTRANCE +ENTRANCED +ENTRANCEMENT +ENTRANCEMENTS +ENTRANCES +ENTRANCEWAY +ENTRANCEWAYS +ENTRANCING +ENTRANT +ENTRANTS +ENTRAP +ENTRAPMENT +ENTRAPMENTS +ENTRAPPED +ENTRAPPER +ENTRAPPERS +ENTRAPPING +ENTRAPS +ENTREAT +ENTREATED +ENTREATIES +ENTREATING +ENTREATINGLY +ENTREATMENT +ENTREATMENTS +ENTREATS +ENTREATY +ENTRECHAT +ENTRECHATS +ENTRECOTE +ENTRECOTES +ENTREE +ENTREES +ENTREMETS +ENTRENCH +ENTRENCHED +ENTRENCHES +ENTRENCHING +ENTRENCHMENT +ENTRENCHMENTS +ENTREPOT +ENTREPOTS +ENTREPRENEUR +ENTREPRENEURIAL +ENTREPRENEURS +ENTRESOL +ENTRESOLS +ENTRIES +ENTROPIC +ENTROPICALLY +ENTROPIES +ENTROPION +ENTROPIONS +ENTROPY +ENTRUST +ENTRUSTED +ENTRUSTING +ENTRUSTMENT +ENTRUSTMENTS +ENTRUSTS +ENTRY +ENTRYWAY +ENTRYWAYS +ENTWINE +ENTWINED +ENTWINES +ENTWINING +ENTWIST +ENTWISTED +ENTWISTING +ENTWISTS +ENUCLEATE +ENUCLEATED +ENUCLEATES +ENUCLEATING +ENUCLEATION +ENUCLEATIONS +ENUF +ENUMERABILITIES +ENUMERABILITY +ENUMERABLE +ENUMERATE +ENUMERATED +ENUMERATES +ENUMERATING +ENUMERATION +ENUMERATIONS +ENUMERATIVE +ENUMERATOR +ENUMERATORS +ENUNCIABLE +ENUNCIATE +ENUNCIATED +ENUNCIATES +ENUNCIATING +ENUNCIATION +ENUNCIATIONS +ENUNCIATOR +ENUNCIATORS +ENURE +ENURED +ENURES +ENURESES +ENURESIS +ENURESISES +ENURETIC +ENURETICS +ENURING +ENVELOP +ENVELOPE +ENVELOPED +ENVELOPER +ENVELOPERS +ENVELOPES +ENVELOPING +ENVELOPMENT +ENVELOPMENTS +ENVELOPS +ENVENOM +ENVENOMED +ENVENOMING +ENVENOMIZATION +ENVENOMIZATIONS +ENVENOMS +ENVIABLE +ENVIABLENESS +ENVIABLENESSES +ENVIABLY +ENVIED +ENVIER +ENVIERS +ENVIES +ENVIOUS +ENVIOUSLY +ENVIOUSNESS +ENVIOUSNESSES +ENVIRO +ENVIRON +ENVIRONED +ENVIRONING +ENVIRONMENT +ENVIRONMENTAL +ENVIRONMENTALLY +ENVIRONMENTS +ENVIRONS +ENVIROS +ENVISAGE +ENVISAGED +ENVISAGES +ENVISAGING +ENVISION +ENVISIONED +ENVISIONING +ENVISIONS +ENVOI +ENVOIS +ENVOY +ENVOYS +ENVY +ENVYING +ENVYINGLY +ENWHEEL +ENWHEELED +ENWHEELING +ENWHEELS +ENWIND +ENWINDING +ENWINDS +ENWOMB +ENWOMBED +ENWOMBING +ENWOMBS +ENWOUND +ENWRAP +ENWRAPPED +ENWRAPPING +ENWRAPS +ENWREATHE +ENWREATHED +ENWREATHES +ENWREATHING +ENZOOTIC +ENZOOTICS +ENZYM +ENZYMATIC +ENZYMATICALLY +ENZYME +ENZYMES +ENZYMIC +ENZYMICALLY +ENZYMOLOGIES +ENZYMOLOGIST +ENZYMOLOGISTS +ENZYMOLOGY +ENZYMS +EOBIONT +EOBIONTS +EOCENE +EOHIPPUS +EOHIPPUSES +EOLIAN +EOLIPILE +EOLIPILES +EOLITH +EOLITHIC +EOLITHS +EOLOPILE +EOLOPILES +EON +EONIAN +EONISM +EONISMS +EONS +EOSIN +EOSINE +EOSINES +EOSINIC +EOSINOPHIL +EOSINOPHILIA +EOSINOPHILIAS +EOSINOPHILIC +EOSINOPHILS +EOSINS +EPACT +EPACTS +EPARCH +EPARCHIAL +EPARCHIES +EPARCHS +EPARCHY +EPAULET +EPAULETS +EPAULETTE +EPAULETTED +EPAULETTES +EPAZOTE +EPAZOTES +EPEE +EPEEIST +EPEEISTS +EPEES +EPEIRIC +EPEIROGENIC +EPEIROGENICALLY +EPEIROGENIES +EPEIROGENY +EPENDYMA +EPENDYMAS +EPENTHESES +EPENTHESIS +EPENTHETIC +EPERGNE +EPERGNES +EPEXEGESES +EPEXEGESIS +EPEXEGETIC +EPEXEGETICAL +EPEXEGETICALLY +EPHA +EPHAH +EPHAHS +EPHAS +EPHEBE +EPHEBES +EPHEBI +EPHEBIC +EPHEBOI +EPHEBOS +EPHEBUS +EPHEDRA +EPHEDRAS +EPHEDRIN +EPHEDRINE +EPHEDRINES +EPHEDRINS +EPHEMERA +EPHEMERAE +EPHEMERAL +EPHEMERALITIES +EPHEMERALITY +EPHEMERALLY +EPHEMERALS +EPHEMERAS +EPHEMERID +EPHEMERIDES +EPHEMERIDS +EPHEMERIS +EPHEMERON +EPHEMERONS +EPHOD +EPHODS +EPHOR +EPHORAL +EPHORATE +EPHORATES +EPHORI +EPHORS +EPIBLAST +EPIBLASTIC +EPIBLASTS +EPIBOLIC +EPIBOLIES +EPIBOLY +EPIC +EPICAL +EPICALLY +EPICALYCES +EPICALYX +EPICALYXES +EPICANTHI +EPICANTHUS +EPICARDIA +EPICARDIAL +EPICARDIUM +EPICARP +EPICARPS +EPICEDIA +EPICEDIUM +EPICENE +EPICENES +EPICENISM +EPICENISMS +EPICENTER +EPICENTERS +EPICENTRA +EPICENTRAL +EPICENTRUM +EPICHLOROHYDRIN +EPICLIKE +EPICONTINENTAL +EPICOTYL +EPICOTYLS +EPICRANIA +EPICRANIUM +EPICRITIC +EPICS +EPICURE +EPICUREAN +EPICUREANISM +EPICUREANISMS +EPICUREANS +EPICURES +EPICURISM +EPICURISMS +EPICUTICLE +EPICUTICLES +EPICUTICULAR +EPICYCLE +EPICYCLES +EPICYCLIC +EPICYCLOID +EPICYCLOIDAL +EPICYCLOIDS +EPIDEMIC +EPIDEMICAL +EPIDEMICALLY +EPIDEMICITIES +EPIDEMICITY +EPIDEMICS +EPIDEMIOLOGIC +EPIDEMIOLOGICAL +EPIDEMIOLOGIES +EPIDEMIOLOGIST +EPIDEMIOLOGISTS +EPIDEMIOLOGY +EPIDENDRUM +EPIDENDRUMS +EPIDERM +EPIDERMAL +EPIDERMIC +EPIDERMIS +EPIDERMISES +EPIDERMOID +EPIDERMS +EPIDIASCOPE +EPIDIASCOPES +EPIDIDYMAL +EPIDIDYMIDES +EPIDIDYMIS +EPIDIDYMITIS +EPIDIDYMITISES +EPIDOTE +EPIDOTES +EPIDOTIC +EPIDURAL +EPIDURALS +EPIFAUNA +EPIFAUNAE +EPIFAUNAL +EPIFAUNAS +EPIFOCAL +EPIGASTRIC +EPIGEAL +EPIGEAN +EPIGEIC +EPIGENE +EPIGENESES +EPIGENESIS +EPIGENETIC +EPIGENETICALLY +EPIGENIC +EPIGENIST +EPIGENISTS +EPIGENOUS +EPIGEOUS +EPIGLOTTAL +EPIGLOTTIC +EPIGLOTTIS +EPIGLOTTISES +EPIGON +EPIGONE +EPIGONES +EPIGONI +EPIGONIC +EPIGONISM +EPIGONISMS +EPIGONOUS +EPIGONS +EPIGONUS +EPIGRAM +EPIGRAMMATIC +EPIGRAMMATISM +EPIGRAMMATISMS +EPIGRAMMATIST +EPIGRAMMATISTS +EPIGRAMMATIZE +EPIGRAMMATIZED +EPIGRAMMATIZER +EPIGRAMMATIZERS +EPIGRAMMATIZES +EPIGRAMMATIZING +EPIGRAMS +EPIGRAPH +EPIGRAPHER +EPIGRAPHERS +EPIGRAPHIC +EPIGRAPHICAL +EPIGRAPHICALLY +EPIGRAPHIES +EPIGRAPHIST +EPIGRAPHISTS +EPIGRAPHS +EPIGRAPHY +EPIGYNIES +EPIGYNOUS +EPIGYNY +EPILATE +EPILATED +EPILATES +EPILATING +EPILATION +EPILATIONS +EPILATOR +EPILATORS +EPILEPSIES +EPILEPSY +EPILEPTIC +EPILEPTICALLY +EPILEPTICS +EPILEPTIFORM +EPILEPTOGENIC +EPILEPTOID +EPILIMNIA +EPILIMNION +EPILIMNIONS +EPILOG +EPILOGS +EPILOGUE +EPILOGUED +EPILOGUES +EPILOGUING +EPIMER +EPIMERASE +EPIMERASES +EPIMERE +EPIMERES +EPIMERIC +EPIMERS +EPIMYSIA +EPIMYSIUM +EPINAOI +EPINAOS +EPINASTIC +EPINASTIES +EPINASTY +EPINEPHRIN +EPINEPHRINE +EPINEPHRINES +EPINEPHRINS +EPINEURIA +EPINEURIUM +EPINEURIUMS +EPIPELAGIC +EPIPHANIC +EPIPHANIES +EPIPHANOUS +EPIPHANY +EPIPHENOMENA +EPIPHENOMENAL +EPIPHENOMENALLY +EPIPHENOMENON +EPIPHRAGM +EPIPHRAGMS +EPIPHYSEAL +EPIPHYSES +EPIPHYSIAL +EPIPHYSIS +EPIPHYTE +EPIPHYTES +EPIPHYTIC +EPIPHYTICALLY +EPIPHYTISM +EPIPHYTISMS +EPIPHYTOLOGIES +EPIPHYTOLOGY +EPIPHYTOTIC +EPIPHYTOTICS +EPIROGENIES +EPIROGENY +EPISCIA +EPISCIAS +EPISCOPACIES +EPISCOPACY +EPISCOPAL +EPISCOPALLY +EPISCOPATE +EPISCOPATES +EPISCOPE +EPISCOPES +EPISIOTOMIES +EPISIOTOMY +EPISODE +EPISODES +EPISODIC +EPISODICAL +EPISODICALLY +EPISOMAL +EPISOMALLY +EPISOME +EPISOMES +EPISTASES +EPISTASIES +EPISTASIS +EPISTASY +EPISTATIC +EPISTAXES +EPISTAXIS +EPISTEMIC +EPISTEMICALLY +EPISTEMOLOGICAL +EPISTEMOLOGIES +EPISTEMOLOGIST +EPISTEMOLOGISTS +EPISTEMOLOGY +EPISTERNA +EPISTERNUM +EPISTLE +EPISTLER +EPISTLERS +EPISTLES +EPISTOLARIES +EPISTOLARY +EPISTOLER +EPISTOLERS +EPISTOME +EPISTOMES +EPISTROPHE +EPISTROPHES +EPISTYLE +EPISTYLES +EPITAPH +EPITAPHIAL +EPITAPHIC +EPITAPHS +EPITASES +EPITASIS +EPITAXIAL +EPITAXIALLY +EPITAXIC +EPITAXIES +EPITAXY +EPITHALAMIA +EPITHALAMIC +EPITHALAMION +EPITHALAMIUM +EPITHALAMIUMS +EPITHELIA +EPITHELIAL +EPITHELIALIZE +EPITHELIALIZED +EPITHELIALIZES +EPITHELIALIZING +EPITHELIOID +EPITHELIOMA +EPITHELIOMAS +EPITHELIOMATA +EPITHELIOMATOUS +EPITHELIUM +EPITHELIUMS +EPITHELIZATION +EPITHELIZATIONS +EPITHELIZE +EPITHELIZED +EPITHELIZES +EPITHELIZING +EPITHET +EPITHETIC +EPITHETICAL +EPITHETS +EPITOME +EPITOMES +EPITOMIC +EPITOMICAL +EPITOMISE +EPITOMISED +EPITOMISES +EPITOMISING +EPITOMIZE +EPITOMIZED +EPITOMIZES +EPITOMIZING +EPITOPE +EPITOPES +EPIZOA +EPIZOIC +EPIZOISM +EPIZOISMS +EPIZOITE +EPIZOITES +EPIZOON +EPIZOOTIC +EPIZOOTICS +EPIZOOTIES +EPIZOOTIOLOGIC +EPIZOOTIOLOGIES +EPIZOOTIOLOGY +EPIZOOTY +EPOCH +EPOCHAL +EPOCHALLY +EPOCHS +EPODE +EPODES +EPONYM +EPONYMIC +EPONYMIES +EPONYMOUS +EPONYMS +EPONYMY +EPOPEE +EPOPEES +EPOPOEIA +EPOPOEIAS +EPOS +EPOSES +EPOXIDATION +EPOXIDATIONS +EPOXIDE +EPOXIDES +EPOXIDIZE +EPOXIDIZED +EPOXIDIZES +EPOXIDIZING +EPOXIED +EPOXIES +EPOXY +EPOXYED +EPOXYING +EPSILON +EPSILONIC +EPSILONS +EQUABILITIES +EQUABILITY +EQUABLE +EQUABLENESS +EQUABLENESSES +EQUABLY +EQUAL +EQUALED +EQUALING +EQUALISE +EQUALISED +EQUALISER +EQUALISERS +EQUALISES +EQUALISING +EQUALITARIAN +EQUALITARIANISM +EQUALITARIANS +EQUALITIES +EQUALITY +EQUALIZATION +EQUALIZATIONS +EQUALIZE +EQUALIZED +EQUALIZER +EQUALIZERS +EQUALIZES +EQUALIZING +EQUALLED +EQUALLING +EQUALLY +EQUALS +EQUANIMITIES +EQUANIMITY +EQUATABLE +EQUATE +EQUATED +EQUATES +EQUATING +EQUATION +EQUATIONAL +EQUATIONALLY +EQUATIONS +EQUATOR +EQUATORIAL +EQUATORS +EQUATORWARD +EQUERRIES +EQUERRY +EQUESTRIAN +EQUESTRIANS +EQUESTRIENNE +EQUESTRIENNES +EQUIANGULAR +EQUICALORIC +EQUID +EQUIDISTANT +EQUIDISTANTLY +EQUIDS +EQUILATERAL +EQUILIBRANT +EQUILIBRANTS +EQUILIBRATE +EQUILIBRATED +EQUILIBRATES +EQUILIBRATING +EQUILIBRATION +EQUILIBRATIONS +EQUILIBRATOR +EQUILIBRATORS +EQUILIBRATORY +EQUILIBRIA +EQUILIBRIST +EQUILIBRISTIC +EQUILIBRISTS +EQUILIBRIUM +EQUILIBRIUMS +EQUIMOLAL +EQUIMOLAR +EQUINE +EQUINELY +EQUINES +EQUINITIES +EQUINITY +EQUINOCTIAL +EQUINOCTIALS +EQUINOX +EQUINOXES +EQUIP +EQUIPAGE +EQUIPAGES +EQUIPMENT +EQUIPMENTS +EQUIPOISE +EQUIPOISED +EQUIPOISES +EQUIPOISING +EQUIPOLLENCE +EQUIPOLLENCES +EQUIPOLLENT +EQUIPOLLENTLY +EQUIPOLLENTS +EQUIPONDERANT +EQUIPOTENTIAL +EQUIPPED +EQUIPPER +EQUIPPERS +EQUIPPING +EQUIPROBABLE +EQUIPS +EQUISETA +EQUISETIC +EQUISETUM +EQUISETUMS +EQUITABILITIES +EQUITABILITY +EQUITABLE +EQUITABLENESS +EQUITABLENESSES +EQUITABLY +EQUITANT +EQUITATION +EQUITATIONS +EQUITES +EQUITIES +EQUITY +EQUIVALENCE +EQUIVALENCES +EQUIVALENCIES +EQUIVALENCY +EQUIVALENT +EQUIVALENTLY +EQUIVALENTS +EQUIVOCAL +EQUIVOCALITIES +EQUIVOCALITY +EQUIVOCALLY +EQUIVOCALNESS +EQUIVOCALNESSES +EQUIVOCATE +EQUIVOCATED +EQUIVOCATES +EQUIVOCATING +EQUIVOCATION +EQUIVOCATIONS +EQUIVOCATOR +EQUIVOCATORS +EQUIVOKE +EQUIVOKES +EQUIVOQUE +EQUIVOQUES +ER +ERA +ERADIATE +ERADIATED +ERADIATES +ERADIATING +ERADICABLE +ERADICANT +ERADICANTS +ERADICATE +ERADICATED +ERADICATES +ERADICATING +ERADICATION +ERADICATIONS +ERADICATOR +ERADICATORS +ERAS +ERASABILITIES +ERASABILITY +ERASABLE +ERASE +ERASED +ERASER +ERASERS +ERASES +ERASING +ERASION +ERASIONS +ERASURE +ERASURES +ERBIUM +ERBIUMS +ERE +ERECT +ERECTABLE +ERECTED +ERECTER +ERECTERS +ERECTILE +ERECTILITIES +ERECTILITY +ERECTING +ERECTION +ERECTIONS +ERECTIVE +ERECTLY +ERECTNESS +ERECTNESSES +ERECTOR +ERECTORS +ERECTS +ERELONG +EREMITE +EREMITES +EREMITIC +EREMITICAL +EREMITISH +EREMITISM +EREMITISMS +EREMURI +EREMURUS +EREMURUSES +ERENOW +EREPSIN +EREPSINS +ERETHIC +ERETHISM +ERETHISMS +ERETHITIC +EREWHILE +EREWHILES +ERG +ERGASTIC +ERGASTOPLASM +ERGASTOPLASMIC +ERGASTOPLASMS +ERGATE +ERGATES +ERGATIVE +ERGATIVES +ERGO +ERGODIC +ERGODICITIES +ERGODICITY +ERGOGENIC +ERGOGRAPH +ERGOGRAPHS +ERGOMETER +ERGOMETERS +ERGOMETRIC +ERGOMETRIES +ERGOMETRY +ERGONOMIC +ERGONOMICALLY +ERGONOMICS +ERGONOMIST +ERGONOMISTS +ERGONOVINE +ERGONOVINES +ERGOSTEROL +ERGOSTEROLS +ERGOT +ERGOTAMINE +ERGOTAMINES +ERGOTIC +ERGOTISM +ERGOTISMS +ERGOTIZED +ERGOTS +ERGS +ERICA +ERICACEOUS +ERICAS +ERICOID +ERIGERON +ERIGERONS +ERINGO +ERINGOES +ERINGOS +ERIOPHYID +ERIOPHYIDS +ERISTIC +ERISTICAL +ERISTICALLY +ERISTICS +ERLKING +ERLKINGS +ERMINE +ERMINED +ERMINES +ERN +ERNE +ERNES +ERNS +ERODABLE +ERODE +ERODED +ERODENT +ERODES +ERODIBILITIES +ERODIBILITY +ERODIBLE +ERODING +EROGENIC +EROGENOUS +EROS +EROSE +EROSELY +EROSES +EROSIBLE +EROSION +EROSIONAL +EROSIONALLY +EROSIONS +EROSIVE +EROSIVENESS +EROSIVENESSES +EROSIVITIES +EROSIVITY +EROTIC +EROTICA +EROTICAL +EROTICALLY +EROTICISM +EROTICISMS +EROTICIST +EROTICISTS +EROTICIZATION +EROTICIZATIONS +EROTICIZE +EROTICIZED +EROTICIZES +EROTICIZING +EROTICS +EROTISM +EROTISMS +EROTIZATION +EROTIZATIONS +EROTIZE +EROTIZED +EROTIZES +EROTIZING +EROTOGENIC +ERR +ERRABLE +ERRANCIES +ERRANCY +ERRAND +ERRANDS +ERRANT +ERRANTLY +ERRANTRIES +ERRANTRY +ERRANTS +ERRATA +ERRATAS +ERRATIC +ERRATICAL +ERRATICALLY +ERRATICISM +ERRATICISMS +ERRATICS +ERRATUM +ERRED +ERRHINE +ERRHINES +ERRING +ERRINGLY +ERRONEOUS +ERRONEOUSLY +ERRONEOUSNESS +ERRONEOUSNESSES +ERROR +ERRORLESS +ERRORS +ERRS +ERS +ERSATZ +ERSATZES +ERSES +ERST +ERSTWHILE +ERUCT +ERUCTATE +ERUCTATED +ERUCTATES +ERUCTATING +ERUCTATION +ERUCTATIONS +ERUCTED +ERUCTING +ERUCTS +ERUDITE +ERUDITELY +ERUDITION +ERUDITIONS +ERUGO +ERUGOS +ERUMPENT +ERUPT +ERUPTED +ERUPTIBLE +ERUPTING +ERUPTION +ERUPTIONS +ERUPTIVE +ERUPTIVELY +ERUPTIVES +ERUPTS +ERVIL +ERVILS +ERYNGO +ERYNGOES +ERYNGOS +ERYSIPELAS +ERYSIPELASES +ERYTHEMA +ERYTHEMAS +ERYTHEMATOUS +ERYTHEMIC +ERYTHORBATE +ERYTHORBATES +ERYTHREMIA +ERYTHREMIAS +ERYTHRISM +ERYTHRISMAL +ERYTHRISMS +ERYTHRISTIC +ERYTHRITE +ERYTHRITES +ERYTHROBLAST +ERYTHROBLASTIC +ERYTHROBLASTS +ERYTHROCYTE +ERYTHROCYTES +ERYTHROCYTIC +ERYTHROID +ERYTHROMYCIN +ERYTHROMYCINS +ERYTHRON +ERYTHRONS +ERYTHROPOIESES +ERYTHROPOIESIS +ERYTHROPOIETIC +ERYTHROPOIETIN +ERYTHROPOIETINS +ERYTHROSIN +ERYTHROSINE +ERYTHROSINES +ERYTHROSINS +ES +ESCADRILLE +ESCADRILLES +ESCALADE +ESCALADED +ESCALADER +ESCALADERS +ESCALADES +ESCALADING +ESCALATE +ESCALATED +ESCALATES +ESCALATING +ESCALATION +ESCALATIONS +ESCALATOR +ESCALATORS +ESCALATORY +ESCALLOP +ESCALLOPED +ESCALLOPING +ESCALLOPS +ESCALOP +ESCALOPE +ESCALOPED +ESCALOPES +ESCALOPING +ESCALOPS +ESCAPABLE +ESCAPADE +ESCAPADES +ESCAPE +ESCAPED +ESCAPEE +ESCAPEES +ESCAPEMENT +ESCAPEMENTS +ESCAPER +ESCAPERS +ESCAPES +ESCAPING +ESCAPISM +ESCAPISMS +ESCAPIST +ESCAPISTS +ESCAPOLOGIES +ESCAPOLOGIST +ESCAPOLOGISTS +ESCAPOLOGY +ESCAR +ESCARGOT +ESCARGOTS +ESCAROLE +ESCAROLES +ESCARP +ESCARPED +ESCARPING +ESCARPMENT +ESCARPMENTS +ESCARPS +ESCARS +ESCHALOT +ESCHALOTS +ESCHAR +ESCHAROTIC +ESCHAROTICS +ESCHARS +ESCHATOLOGICAL +ESCHATOLOGIES +ESCHATOLOGY +ESCHEAT +ESCHEATABLE +ESCHEATED +ESCHEATING +ESCHEATOR +ESCHEATORS +ESCHEATS +ESCHEW +ESCHEWAL +ESCHEWALS +ESCHEWED +ESCHEWER +ESCHEWERS +ESCHEWING +ESCHEWS +ESCOLAR +ESCOLARS +ESCORT +ESCORTED +ESCORTING +ESCORTS +ESCOT +ESCOTED +ESCOTING +ESCOTS +ESCRITOIRE +ESCRITOIRES +ESCROW +ESCROWED +ESCROWING +ESCROWS +ESCUAGE +ESCUAGES +ESCUDO +ESCUDOS +ESCULENT +ESCULENTS +ESCUTCHEON +ESCUTCHEONS +ESEMPLASTIC +ESERINE +ESERINES +ESES +ESKAR +ESKARS +ESKER +ESKERS +ESNE +ESNES +ESOPHAGEAL +ESOPHAGI +ESOPHAGUS +ESOTERIC +ESOTERICA +ESOTERICALLY +ESOTERICISM +ESOTERICISMS +ESOTROPIA +ESOTROPIAS +ESOTROPIC +ESPADRILLE +ESPADRILLES +ESPALIER +ESPALIERED +ESPALIERING +ESPALIERS +ESPANOL +ESPANOLES +ESPARTO +ESPARTOS +ESPECIAL +ESPECIALLY +ESPERANCE +ESPERANCES +ESPIAL +ESPIALS +ESPIED +ESPIEGLE +ESPIEGLERIE +ESPIEGLERIES +ESPIES +ESPIONAGE +ESPIONAGES +ESPLANADE +ESPLANADES +ESPOUSAL +ESPOUSALS +ESPOUSE +ESPOUSED +ESPOUSER +ESPOUSERS +ESPOUSES +ESPOUSING +ESPRESSO +ESPRESSOS +ESPRIT +ESPRITS +ESPY +ESPYING +ESQUIRE +ESQUIRED +ESQUIRES +ESQUIRING +ESS +ESSAY +ESSAYED +ESSAYER +ESSAYERS +ESSAYING +ESSAYIST +ESSAYISTIC +ESSAYISTS +ESSAYS +ESSENCE +ESSENCES +ESSENTIAL +ESSENTIALISM +ESSENTIALISMS +ESSENTIALIST +ESSENTIALISTS +ESSENTIALITIES +ESSENTIALITY +ESSENTIALIZE +ESSENTIALIZED +ESSENTIALIZES +ESSENTIALIZING +ESSENTIALLY +ESSENTIALNESS +ESSENTIALNESSES +ESSENTIALS +ESSES +ESSOIN +ESSOINS +ESSONITE +ESSONITES +ESTABLISH +ESTABLISHABLE +ESTABLISHED +ESTABLISHER +ESTABLISHERS +ESTABLISHES +ESTABLISHING +ESTABLISHMENT +ESTABLISHMENTS +ESTAMINET +ESTAMINETS +ESTANCIA +ESTANCIAS +ESTATE +ESTATED +ESTATES +ESTATING +ESTEEM +ESTEEMED +ESTEEMING +ESTEEMS +ESTER +ESTERASE +ESTERASES +ESTERIFICATION +ESTERIFICATIONS +ESTERIFIED +ESTERIFIES +ESTERIFY +ESTERIFYING +ESTERS +ESTHESES +ESTHESIA +ESTHESIAS +ESTHESIS +ESTHESISES +ESTHETE +ESTHETES +ESTHETIC +ESTHETICIAN +ESTHETICIANS +ESTHETICISM +ESTHETICISMS +ESTHETICS +ESTIMABLE +ESTIMABLENESS +ESTIMABLENESSES +ESTIMABLY +ESTIMATE +ESTIMATED +ESTIMATES +ESTIMATING +ESTIMATION +ESTIMATIONS +ESTIMATIVE +ESTIMATOR +ESTIMATORS +ESTIVAL +ESTIVATE +ESTIVATED +ESTIVATES +ESTIVATING +ESTIVATION +ESTIVATIONS +ESTIVATOR +ESTIVATORS +ESTOP +ESTOPPAGE +ESTOPPAGES +ESTOPPED +ESTOPPEL +ESTOPPELS +ESTOPPING +ESTOPS +ESTOVERS +ESTRADIOL +ESTRADIOLS +ESTRAGON +ESTRAGONS +ESTRAL +ESTRANGE +ESTRANGED +ESTRANGEMENT +ESTRANGEMENTS +ESTRANGER +ESTRANGERS +ESTRANGES +ESTRANGING +ESTRAY +ESTRAYED +ESTRAYING +ESTRAYS +ESTREAT +ESTREATED +ESTREATING +ESTREATS +ESTRIN +ESTRINS +ESTRIOL +ESTRIOLS +ESTROGEN +ESTROGENIC +ESTROGENICALLY +ESTROGENS +ESTRONE +ESTRONES +ESTROUS +ESTRUAL +ESTRUM +ESTRUMS +ESTRUS +ESTRUSES +ESTUARIAL +ESTUARIES +ESTUARINE +ESTUARY +ESURIENCE +ESURIENCES +ESURIENCIES +ESURIENCY +ESURIENT +ESURIENTLY +ET +ETA +ETAGERE +ETAGERES +ETALON +ETALONS +ETAMIN +ETAMINE +ETAMINES +ETAMINS +ETAPE +ETAPES +ETAS +ETATISM +ETATISMS +ETATIST +ETCETERA +ETCETERAS +ETCH +ETCHANT +ETCHANTS +ETCHED +ETCHER +ETCHERS +ETCHES +ETCHING +ETCHINGS +ETERNAL +ETERNALIZE +ETERNALIZED +ETERNALIZES +ETERNALIZING +ETERNALLY +ETERNALNESS +ETERNALNESSES +ETERNALS +ETERNE +ETERNISE +ETERNISED +ETERNISES +ETERNISING +ETERNITIES +ETERNITY +ETERNIZATION +ETERNIZATIONS +ETERNIZE +ETERNIZED +ETERNIZES +ETERNIZING +ETESIAN +ETESIANS +ETH +ETHAMBUTOL +ETHAMBUTOLS +ETHANE +ETHANES +ETHANOL +ETHANOLAMINE +ETHANOLAMINES +ETHANOLS +ETHENE +ETHENES +ETHEPHON +ETHEPHONS +ETHER +ETHEREAL +ETHEREALITIES +ETHEREALITY +ETHEREALIZATION +ETHEREALIZE +ETHEREALIZED +ETHEREALIZES +ETHEREALIZING +ETHEREALLY +ETHEREALNESS +ETHEREALNESSES +ETHERIC +ETHERIFIED +ETHERIFIES +ETHERIFY +ETHERIFYING +ETHERISH +ETHERIZATION +ETHERIZATIONS +ETHERIZE +ETHERIZED +ETHERIZER +ETHERIZERS +ETHERIZES +ETHERIZING +ETHERS +ETHIC +ETHICAL +ETHICALITIES +ETHICALITY +ETHICALLY +ETHICALNESS +ETHICALNESSES +ETHICALS +ETHICIAN +ETHICIANS +ETHICIST +ETHICISTS +ETHICIZE +ETHICIZED +ETHICIZES +ETHICIZING +ETHICS +ETHINYL +ETHINYLS +ETHION +ETHIONAMIDE +ETHIONAMIDES +ETHIONINE +ETHIONINES +ETHIONS +ETHMOID +ETHMOIDAL +ETHMOIDS +ETHNARCH +ETHNARCHIES +ETHNARCHS +ETHNARCHY +ETHNIC +ETHNICAL +ETHNICALLY +ETHNICITIES +ETHNICITY +ETHNICS +ETHNOBOTANICAL +ETHNOBOTANIES +ETHNOBOTANIST +ETHNOBOTANISTS +ETHNOBOTANY +ETHNOCENTRIC +ETHNOCENTRICITY +ETHNOCENTRISM +ETHNOCENTRISMS +ETHNOGRAPHER +ETHNOGRAPHERS +ETHNOGRAPHIC +ETHNOGRAPHICAL +ETHNOGRAPHIES +ETHNOGRAPHY +ETHNOHISTORIAN +ETHNOHISTORIANS +ETHNOHISTORIC +ETHNOHISTORICAL +ETHNOHISTORIES +ETHNOHISTORY +ETHNOLOGIC +ETHNOLOGICAL +ETHNOLOGIES +ETHNOLOGIST +ETHNOLOGISTS +ETHNOLOGY +ETHNOMUSICOLOGY +ETHNONYM +ETHNONYMS +ETHNOS +ETHNOSCIENCE +ETHNOSCIENCES +ETHNOSES +ETHOGRAM +ETHOGRAMS +ETHOLOGICAL +ETHOLOGIES +ETHOLOGIST +ETHOLOGISTS +ETHOLOGY +ETHOS +ETHOSES +ETHOXIES +ETHOXY +ETHOXYL +ETHOXYLS +ETHS +ETHYL +ETHYLATE +ETHYLATED +ETHYLATES +ETHYLATING +ETHYLBENZENE +ETHYLBENZENES +ETHYLENE +ETHYLENES +ETHYLENIC +ETHYLIC +ETHYLS +ETHYNE +ETHYNES +ETHYNYL +ETHYNYLS +ETIC +ETIOLATE +ETIOLATED +ETIOLATES +ETIOLATING +ETIOLATION +ETIOLATIONS +ETIOLOGIC +ETIOLOGICAL +ETIOLOGICALLY +ETIOLOGIES +ETIOLOGY +ETIQUETTE +ETIQUETTES +ETNA +ETNAS +ETOILE +ETOILES +ETOUFFEE +ETOUFFEES +ETUDE +ETUDES +ETUI +ETUIS +ETWEE +ETWEES +ETYMA +ETYMOLOGICAL +ETYMOLOGICALLY +ETYMOLOGIES +ETYMOLOGISE +ETYMOLOGISED +ETYMOLOGISES +ETYMOLOGISING +ETYMOLOGIST +ETYMOLOGISTS +ETYMOLOGIZE +ETYMOLOGIZED +ETYMOLOGIZES +ETYMOLOGIZING +ETYMOLOGY +ETYMON +ETYMONS +EUCAINE +EUCAINES +EUCALYPT +EUCALYPTI +EUCALYPTOL +EUCALYPTOLE +EUCALYPTOLES +EUCALYPTOLS +EUCALYPTS +EUCALYPTUS +EUCALYPTUSES +EUCARYOTE +EUCARYOTES +EUCHARIS +EUCHARISES +EUCHARISTIC +EUCHRE +EUCHRED +EUCHRES +EUCHRING +EUCHROMATIC +EUCHROMATIN +EUCHROMATINS +EUCLASE +EUCLASES +EUCLIDEAN +EUCLIDIAN +EUCRITE +EUCRITES +EUCRITIC +EUDAEMON +EUDAEMONISM +EUDAEMONISMS +EUDAEMONIST +EUDAEMONISTIC +EUDAEMONISTS +EUDAEMONS +EUDAIMON +EUDAIMONISM +EUDAIMONISMS +EUDAIMONS +EUDEMON +EUDEMONIA +EUDEMONIAS +EUDEMONS +EUDIOMETER +EUDIOMETERS +EUDIOMETRIC +EUDIOMETRICALLY +EUGENIA +EUGENIAS +EUGENIC +EUGENICAL +EUGENICALLY +EUGENICIST +EUGENICISTS +EUGENICS +EUGENIST +EUGENISTS +EUGENOL +EUGENOLS +EUGEOSYNCLINAL +EUGEOSYNCLINE +EUGEOSYNCLINES +EUGLENA +EUGLENAS +EUGLENID +EUGLENIDS +EUGLENOID +EUGLENOIDS +EUGLOBULIN +EUGLOBULINS +EUHEMERISM +EUHEMERISMS +EUHEMERIST +EUHEMERISTIC +EUHEMERISTS +EUKARYOTE +EUKARYOTES +EUKARYOTIC +EULACHAN +EULACHANS +EULACHON +EULACHONS +EULOGIA +EULOGIAE +EULOGIAS +EULOGIES +EULOGISE +EULOGISED +EULOGISES +EULOGISING +EULOGIST +EULOGISTIC +EULOGISTICALLY +EULOGISTS +EULOGIUM +EULOGIUMS +EULOGIZE +EULOGIZED +EULOGIZER +EULOGIZERS +EULOGIZES +EULOGIZING +EULOGY +EUNUCH +EUNUCHISM +EUNUCHISMS +EUNUCHOID +EUNUCHOIDS +EUNUCHS +EUONYMUS +EUONYMUSES +EUPATRID +EUPATRIDAE +EUPATRIDS +EUPEPSIA +EUPEPSIAS +EUPEPSIES +EUPEPSY +EUPEPTIC +EUPHAUSID +EUPHAUSIDS +EUPHAUSIID +EUPHAUSIIDS +EUPHEMISE +EUPHEMISED +EUPHEMISES +EUPHEMISING +EUPHEMISM +EUPHEMISMS +EUPHEMIST +EUPHEMISTIC +EUPHEMISTICALLY +EUPHEMISTS +EUPHEMIZE +EUPHEMIZED +EUPHEMIZER +EUPHEMIZERS +EUPHEMIZES +EUPHEMIZING +EUPHENIC +EUPHENICS +EUPHONIC +EUPHONICALLY +EUPHONIES +EUPHONIOUS +EUPHONIOUSLY +EUPHONIOUSNESS +EUPHONIUM +EUPHONIUMS +EUPHONIZE +EUPHONIZED +EUPHONIZES +EUPHONIZING +EUPHONY +EUPHORBIA +EUPHORBIAS +EUPHORIA +EUPHORIANT +EUPHORIANTS +EUPHORIAS +EUPHORIC +EUPHORICALLY +EUPHOTIC +EUPHRASIES +EUPHRASY +EUPHROE +EUPHROES +EUPHUISM +EUPHUISMS +EUPHUIST +EUPHUISTIC +EUPHUISTICALLY +EUPHUISTS +EUPLASTIC +EUPLASTICS +EUPLOID +EUPLOIDIES +EUPLOIDS +EUPLOIDY +EUPNEA +EUPNEAS +EUPNEIC +EUPNOEA +EUPNOEAS +EUPNOEIC +EUREKA +EURHYTHMIC +EURHYTHMICS +EURHYTHMIES +EURHYTHMY +EURIPI +EURIPUS +EURO +EUROKIES +EUROKOUS +EUROKY +EUROPIUM +EUROPIUMS +EUROS +EURYBATH +EURYBATHIC +EURYBATHS +EURYHALINE +EURYOKIES +EURYOKOUS +EURYOKY +EURYPTERID +EURYPTERIDS +EURYTHERM +EURYTHERMAL +EURYTHERMIC +EURYTHERMOUS +EURYTHERMS +EURYTHMIC +EURYTHMICS +EURYTHMIES +EURYTHMY +EURYTOPIC +EUSOCIAL +EUSTACIES +EUSTACY +EUSTASIES +EUSTASY +EUSTATIC +EUSTELE +EUSTELES +EUTAXIES +EUTAXY +EUTECTIC +EUTECTICS +EUTECTOID +EUTECTOIDS +EUTHANASIA +EUTHANASIAS +EUTHANASIC +EUTHANATIZE +EUTHANATIZED +EUTHANATIZES +EUTHANATIZING +EUTHANIZE +EUTHANIZED +EUTHANIZES +EUTHANIZING +EUTHENICS +EUTHENIST +EUTHENISTS +EUTHERIAN +EUTHERIANS +EUTHYROID +EUTHYROIDS +EUTROPHIC +EUTROPHICATION +EUTROPHICATIONS +EUTROPHIES +EUTROPHY +EUXENITE +EUXENITES +EVACUANT +EVACUANTS +EVACUATE +EVACUATED +EVACUATES +EVACUATING +EVACUATION +EVACUATIONS +EVACUATIVE +EVACUATOR +EVACUATORS +EVACUEE +EVACUEES +EVADABLE +EVADE +EVADED +EVADER +EVADERS +EVADES +EVADIBLE +EVADING +EVADINGLY +EVAGINATE +EVAGINATED +EVAGINATES +EVAGINATING +EVAGINATION +EVAGINATIONS +EVALUABLE +EVALUATE +EVALUATED +EVALUATES +EVALUATING +EVALUATION +EVALUATIONS +EVALUATIVE +EVALUATOR +EVALUATORS +EVANESCE +EVANESCED +EVANESCENCE +EVANESCENCES +EVANESCENT +EVANESCES +EVANESCING +EVANGEL +EVANGELIC +EVANGELICAL +EVANGELICALLY +EVANGELISM +EVANGELISMS +EVANGELIST +EVANGELISTIC +EVANGELISTS +EVANGELIZATION +EVANGELIZATIONS +EVANGELIZE +EVANGELIZED +EVANGELIZES +EVANGELIZING +EVANGELS +EVANISH +EVANISHED +EVANISHES +EVANISHING +EVAPORATE +EVAPORATED +EVAPORATES +EVAPORATING +EVAPORATION +EVAPORATIONS +EVAPORATIVE +EVAPORATOR +EVAPORATORS +EVAPORITE +EVAPORITES +EVAPORITIC +EVASION +EVASIONAL +EVASIONS +EVASIVE +EVASIVELY +EVASIVENESS +EVASIVENESSES +EVE +EVECTION +EVECTIONS +EVEN +EVENED +EVENER +EVENERS +EVENEST +EVENFALL +EVENFALLS +EVENHANDED +EVENHANDEDLY +EVENHANDEDNESS +EVENING +EVENINGS +EVENLY +EVENNESS +EVENNESSES +EVENS +EVENSONG +EVENSONGS +EVENT +EVENTFUL +EVENTFULLY +EVENTFULNESS +EVENTFULNESSES +EVENTIDE +EVENTIDES +EVENTLESS +EVENTS +EVENTUAL +EVENTUALITIES +EVENTUALITY +EVENTUALLY +EVENTUATE +EVENTUATED +EVENTUATES +EVENTUATING +EVER +EVERBLOOMING +EVERDURING +EVERGLADE +EVERGLADES +EVERGREEN +EVERGREENS +EVERLASTING +EVERLASTINGLY +EVERLASTINGNESS +EVERLASTINGS +EVERMORE +EVERSIBLE +EVERSION +EVERSIONS +EVERT +EVERTED +EVERTING +EVERTOR +EVERTORS +EVERTS +EVERWHERE +EVERWHICH +EVERY +EVERYBODY +EVERYDAY +EVERYDAYNESS +EVERYDAYNESSES +EVERYDAYS +EVERYMAN +EVERYMEN +EVERYONE +EVERYPLACE +EVERYTHING +EVERYWAY +EVERYWHERE +EVERYWOMAN +EVERYWOMEN +EVES +EVICT +EVICTED +EVICTEE +EVICTEES +EVICTING +EVICTION +EVICTIONS +EVICTOR +EVICTORS +EVICTS +EVIDENCE +EVIDENCED +EVIDENCES +EVIDENCING +EVIDENT +EVIDENTIAL +EVIDENTIALLY +EVIDENTIARY +EVIDENTLY +EVIL +EVILDOER +EVILDOERS +EVILDOING +EVILDOINGS +EVILER +EVILEST +EVILLER +EVILLEST +EVILLY +EVILNESS +EVILNESSES +EVILS +EVINCE +EVINCED +EVINCES +EVINCIBLE +EVINCING +EVINCIVE +EVISCERATE +EVISCERATED +EVISCERATES +EVISCERATING +EVISCERATION +EVISCERATIONS +EVITABLE +EVITE +EVITED +EVITES +EVITING +EVOCABLE +EVOCATION +EVOCATIONS +EVOCATIVE +EVOCATIVELY +EVOCATIVENESS +EVOCATIVENESSES +EVOCATOR +EVOCATORS +EVOKE +EVOKED +EVOKER +EVOKERS +EVOKES +EVOKING +EVOLUTE +EVOLUTES +EVOLUTION +EVOLUTIONARILY +EVOLUTIONARY +EVOLUTIONISM +EVOLUTIONISMS +EVOLUTIONIST +EVOLUTIONISTS +EVOLUTIONS +EVOLVABLE +EVOLVE +EVOLVED +EVOLVEMENT +EVOLVEMENTS +EVOLVER +EVOLVERS +EVOLVES +EVOLVING +EVONYMUS +EVONYMUSES +EVULSE +EVULSED +EVULSES +EVULSING +EVULSION +EVULSIONS +EVZONE +EVZONES +EWE +EWER +EWERS +EWES +EX +EXABYTE +EXABYTES +EXACERBATE +EXACERBATED +EXACERBATES +EXACERBATING +EXACERBATION +EXACERBATIONS +EXACT +EXACTA +EXACTABLE +EXACTAS +EXACTED +EXACTER +EXACTERS +EXACTEST +EXACTING +EXACTINGLY +EXACTINGNESS +EXACTINGNESSES +EXACTION +EXACTIONS +EXACTITUDE +EXACTITUDES +EXACTLY +EXACTNESS +EXACTNESSES +EXACTOR +EXACTORS +EXACTS +EXAGGERATE +EXAGGERATED +EXAGGERATEDLY +EXAGGERATEDNESS +EXAGGERATES +EXAGGERATING +EXAGGERATION +EXAGGERATIONS +EXAGGERATIVE +EXAGGERATOR +EXAGGERATORS +EXAGGERATORY +EXAHERTZ +EXAHERTZES +EXALT +EXALTATION +EXALTATIONS +EXALTED +EXALTEDLY +EXALTER +EXALTERS +EXALTING +EXALTS +EXAM +EXAMEN +EXAMENS +EXAMINABLE +EXAMINANT +EXAMINANTS +EXAMINATION +EXAMINATIONAL +EXAMINATIONS +EXAMINE +EXAMINED +EXAMINEE +EXAMINEES +EXAMINER +EXAMINERS +EXAMINES +EXAMINING +EXAMPLE +EXAMPLED +EXAMPLES +EXAMPLING +EXAMS +EXANIMATE +EXANTHEM +EXANTHEMA +EXANTHEMAS +EXANTHEMATA +EXANTHEMATIC +EXANTHEMATOUS +EXANTHEMS +EXAPTED +EXAPTIVE +EXARCH +EXARCHAL +EXARCHATE +EXARCHATES +EXARCHIES +EXARCHS +EXARCHY +EXASPERATE +EXASPERATED +EXASPERATEDLY +EXASPERATES +EXASPERATING +EXASPERATINGLY +EXASPERATION +EXASPERATIONS +EXCAUDATE +EXCAVATE +EXCAVATED +EXCAVATES +EXCAVATING +EXCAVATION +EXCAVATIONAL +EXCAVATIONS +EXCAVATOR +EXCAVATORS +EXCEED +EXCEEDED +EXCEEDER +EXCEEDERS +EXCEEDING +EXCEEDINGLY +EXCEEDS +EXCEL +EXCELLED +EXCELLENCE +EXCELLENCES +EXCELLENCIES +EXCELLENCY +EXCELLENT +EXCELLENTLY +EXCELLING +EXCELS +EXCELSIOR +EXCELSIORS +EXCEPT +EXCEPTED +EXCEPTING +EXCEPTION +EXCEPTIONABLE +EXCEPTIONABLY +EXCEPTIONAL +EXCEPTIONALISM +EXCEPTIONALISMS +EXCEPTIONALITY +EXCEPTIONALLY +EXCEPTIONALNESS +EXCEPTIONS +EXCEPTIVE +EXCEPTS +EXCERPT +EXCERPTED +EXCERPTER +EXCERPTERS +EXCERPTING +EXCERPTION +EXCERPTIONS +EXCERPTOR +EXCERPTORS +EXCERPTS +EXCESS +EXCESSED +EXCESSES +EXCESSING +EXCESSIVE +EXCESSIVELY +EXCESSIVENESS +EXCESSIVENESSES +EXCHANGE +EXCHANGEABILITY +EXCHANGEABLE +EXCHANGED +EXCHANGER +EXCHANGERS +EXCHANGES +EXCHANGING +EXCHEQUER +EXCHEQUERS +EXCIDE +EXCIDED +EXCIDES +EXCIDING +EXCIMER +EXCIMERS +EXCIPIENT +EXCIPIENTS +EXCIPLE +EXCIPLES +EXCISABLE +EXCISE +EXCISED +EXCISEMAN +EXCISEMEN +EXCISES +EXCISING +EXCISION +EXCISIONAL +EXCISIONS +EXCITABILITIES +EXCITABILITY +EXCITABLE +EXCITABLENESS +EXCITABLENESSES +EXCITABLY +EXCITANT +EXCITANTS +EXCITATION +EXCITATIONS +EXCITATIVE +EXCITATORY +EXCITE +EXCITED +EXCITEDLY +EXCITEMENT +EXCITEMENTS +EXCITER +EXCITERS +EXCITES +EXCITING +EXCITINGLY +EXCITON +EXCITONIC +EXCITONS +EXCITOR +EXCITORS +EXCLAIM +EXCLAIMED +EXCLAIMER +EXCLAIMERS +EXCLAIMING +EXCLAIMS +EXCLAMATION +EXCLAMATIONS +EXCLAMATORY +EXCLAVE +EXCLAVES +EXCLOSURE +EXCLOSURES +EXCLUDABILITIES +EXCLUDABILITY +EXCLUDABLE +EXCLUDE +EXCLUDED +EXCLUDER +EXCLUDERS +EXCLUDES +EXCLUDIBLE +EXCLUDING +EXCLUSION +EXCLUSIONARY +EXCLUSIONIST +EXCLUSIONISTS +EXCLUSIONS +EXCLUSIVE +EXCLUSIVELY +EXCLUSIVENESS +EXCLUSIVENESSES +EXCLUSIVES +EXCLUSIVISM +EXCLUSIVISMS +EXCLUSIVIST +EXCLUSIVISTS +EXCLUSIVITIES +EXCLUSIVITY +EXCLUSORY +EXCOGITATE +EXCOGITATED +EXCOGITATES +EXCOGITATING +EXCOGITATION +EXCOGITATIONS +EXCOGITATIVE +EXCOMMUNICATE +EXCOMMUNICATED +EXCOMMUNICATES +EXCOMMUNICATING +EXCOMMUNICATION +EXCOMMUNICATIVE +EXCOMMUNICATOR +EXCOMMUNICATORS +EXCORIATE +EXCORIATED +EXCORIATES +EXCORIATING +EXCORIATION +EXCORIATIONS +EXCREMENT +EXCREMENTAL +EXCREMENTITIOUS +EXCREMENTS +EXCRESCENCE +EXCRESCENCES +EXCRESCENCIES +EXCRESCENCY +EXCRESCENT +EXCRESCENTLY +EXCRETA +EXCRETAL +EXCRETE +EXCRETED +EXCRETER +EXCRETERS +EXCRETES +EXCRETING +EXCRETION +EXCRETIONS +EXCRETIVE +EXCRETORIES +EXCRETORY +EXCRUCIATE +EXCRUCIATED +EXCRUCIATES +EXCRUCIATING +EXCRUCIATINGLY +EXCRUCIATION +EXCRUCIATIONS +EXCULPATE +EXCULPATED +EXCULPATES +EXCULPATING +EXCULPATION +EXCULPATIONS +EXCULPATORY +EXCURRENT +EXCURSION +EXCURSIONIST +EXCURSIONISTS +EXCURSIONS +EXCURSIVE +EXCURSIVELY +EXCURSIVENESS +EXCURSIVENESSES +EXCURSUS +EXCURSUSES +EXCUSABLE +EXCUSABLENESS +EXCUSABLENESSES +EXCUSABLY +EXCUSATORY +EXCUSE +EXCUSED +EXCUSER +EXCUSERS +EXCUSES +EXCUSING +EXEC +EXECRABLE +EXECRABLENESS +EXECRABLENESSES +EXECRABLY +EXECRATE +EXECRATED +EXECRATES +EXECRATING +EXECRATION +EXECRATIONS +EXECRATIVE +EXECRATOR +EXECRATORS +EXECS +EXECUTABLE +EXECUTANT +EXECUTANTS +EXECUTE +EXECUTED +EXECUTER +EXECUTERS +EXECUTES +EXECUTING +EXECUTION +EXECUTIONER +EXECUTIONERS +EXECUTIONS +EXECUTIVE +EXECUTIVES +EXECUTOR +EXECUTORIAL +EXECUTORS +EXECUTORY +EXECUTRICES +EXECUTRIX +EXECUTRIXES +EXED +EXEDRA +EXEDRAE +EXEGESES +EXEGESIS +EXEGETE +EXEGETES +EXEGETIC +EXEGETICAL +EXEGETICS +EXEGETIST +EXEGETISTS +EXEMPLA +EXEMPLAR +EXEMPLARILY +EXEMPLARINESS +EXEMPLARINESSES +EXEMPLARITIES +EXEMPLARITY +EXEMPLARS +EXEMPLARY +EXEMPLIFICATION +EXEMPLIFIED +EXEMPLIFIES +EXEMPLIFY +EXEMPLIFYING +EXEMPLUM +EXEMPT +EXEMPTED +EXEMPTING +EXEMPTION +EXEMPTIONS +EXEMPTIVE +EXEMPTS +EXENTERATE +EXENTERATED +EXENTERATES +EXENTERATING +EXENTERATION +EXENTERATIONS +EXEQUATUR +EXEQUATURS +EXEQUIAL +EXEQUIES +EXEQUY +EXERCISABLE +EXERCISE +EXERCISED +EXERCISER +EXERCISERS +EXERCISES +EXERCISING +EXERCITATION +EXERCITATIONS +EXERCYCLE +EXERCYCLES +EXERGONIC +EXERGUAL +EXERGUE +EXERGUES +EXERT +EXERTED +EXERTING +EXERTION +EXERTIONS +EXERTIVE +EXERTS +EXES +EXEUNT +EXFOLIANT +EXFOLIANTS +EXFOLIATE +EXFOLIATED +EXFOLIATES +EXFOLIATING +EXFOLIATION +EXFOLIATIONS +EXFOLIATIVE +EXHALANT +EXHALANTS +EXHALATION +EXHALATIONS +EXHALE +EXHALED +EXHALENT +EXHALENTS +EXHALES +EXHALING +EXHAUST +EXHAUSTED +EXHAUSTER +EXHAUSTERS +EXHAUSTIBILITY +EXHAUSTIBLE +EXHAUSTING +EXHAUSTION +EXHAUSTIONS +EXHAUSTIVE +EXHAUSTIVELY +EXHAUSTIVENESS +EXHAUSTIVITIES +EXHAUSTIVITY +EXHAUSTLESS +EXHAUSTLESSLY +EXHAUSTLESSNESS +EXHAUSTS +EXHEDRA +EXHEDRAE +EXHIBIT +EXHIBITED +EXHIBITER +EXHIBITERS +EXHIBITING +EXHIBITION +EXHIBITIONER +EXHIBITIONERS +EXHIBITIONISM +EXHIBITIONISMS +EXHIBITIONIST +EXHIBITIONISTIC +EXHIBITIONISTS +EXHIBITIONS +EXHIBITIVE +EXHIBITOR +EXHIBITORS +EXHIBITORY +EXHIBITS +EXHILARATE +EXHILARATED +EXHILARATES +EXHILARATING +EXHILARATINGLY +EXHILARATION +EXHILARATIONS +EXHILARATIVE +EXHORT +EXHORTATION +EXHORTATIONS +EXHORTATIVE +EXHORTATORY +EXHORTED +EXHORTER +EXHORTERS +EXHORTING +EXHORTS +EXHUMATION +EXHUMATIONS +EXHUME +EXHUMED +EXHUMER +EXHUMERS +EXHUMES +EXHUMING +EXIGENCE +EXIGENCES +EXIGENCIES +EXIGENCY +EXIGENT +EXIGENTLY +EXIGIBLE +EXIGUITIES +EXIGUITY +EXIGUOUS +EXIGUOUSLY +EXIGUOUSNESS +EXIGUOUSNESSES +EXILABLE +EXILE +EXILED +EXILER +EXILERS +EXILES +EXILIAN +EXILIC +EXILING +EXIMIOUS +EXINE +EXINES +EXING +EXIST +EXISTED +EXISTENCE +EXISTENCES +EXISTENT +EXISTENTIAL +EXISTENTIALISM +EXISTENTIALISMS +EXISTENTIALIST +EXISTENTIALISTS +EXISTENTIALLY +EXISTENTS +EXISTING +EXISTS +EXIT +EXITED +EXITING +EXITLESS +EXITS +EXOBIOLOGICAL +EXOBIOLOGIES +EXOBIOLOGIST +EXOBIOLOGISTS +EXOBIOLOGY +EXOCARP +EXOCARPS +EXOCRINE +EXOCRINES +EXOCYCLIC +EXOCYTIC +EXOCYTOSE +EXOCYTOSED +EXOCYTOSES +EXOCYTOSING +EXOCYTOSIS +EXOCYTOTIC +EXODERM +EXODERMIS +EXODERMISES +EXODERMS +EXODOI +EXODONTIA +EXODONTIAS +EXODONTIST +EXODONTISTS +EXODOS +EXODUS +EXODUSES +EXOENZYME +EXOENZYMES +EXOERGIC +EXOERYTHROCYTIC +EXOGAMIC +EXOGAMIES +EXOGAMOUS +EXOGAMY +EXOGEN +EXOGENISM +EXOGENISMS +EXOGENOUS +EXOGENOUSLY +EXOGENS +EXON +EXONERATE +EXONERATED +EXONERATES +EXONERATING +EXONERATION +EXONERATIONS +EXONERATIVE +EXONIC +EXONS +EXONUCLEASE +EXONUCLEASES +EXONUMIA +EXONUMIST +EXONUMISTS +EXONYM +EXONYMS +EXOPEPTIDASE +EXOPEPTIDASES +EXOPHTHALMIC +EXOPHTHALMOS +EXOPHTHALMOSES +EXOPHTHALMUS +EXOPHTHALMUSES +EXORABLE +EXORBITANCE +EXORBITANCES +EXORBITANT +EXORBITANTLY +EXORCISE +EXORCISED +EXORCISER +EXORCISERS +EXORCISES +EXORCISING +EXORCISM +EXORCISMS +EXORCIST +EXORCISTIC +EXORCISTICAL +EXORCISTS +EXORCIZE +EXORCIZED +EXORCIZES +EXORCIZING +EXORDIA +EXORDIAL +EXORDIUM +EXORDIUMS +EXOSKELETAL +EXOSKELETON +EXOSKELETONS +EXOSMIC +EXOSMOSE +EXOSMOSES +EXOSMOSIS +EXOSMOTIC +EXOSPHERE +EXOSPHERES +EXOSPHERIC +EXOSPORE +EXOSPORES +EXOSPORIA +EXOSPORIUM +EXOSTOSES +EXOSTOSIS +EXOTERIC +EXOTERICALLY +EXOTHERMAL +EXOTHERMALLY +EXOTHERMIC +EXOTHERMICALLY +EXOTHERMICITIES +EXOTHERMICITY +EXOTIC +EXOTICA +EXOTICALLY +EXOTICISM +EXOTICISMS +EXOTICIST +EXOTICISTS +EXOTICNESS +EXOTICNESSES +EXOTICS +EXOTISM +EXOTISMS +EXOTOXIC +EXOTOXIN +EXOTOXINS +EXOTROPIA +EXOTROPIAS +EXOTROPIC +EXPAND +EXPANDABILITIES +EXPANDABILITY +EXPANDABLE +EXPANDED +EXPANDER +EXPANDERS +EXPANDING +EXPANDOR +EXPANDORS +EXPANDS +EXPANSE +EXPANSES +EXPANSIBILITIES +EXPANSIBILITY +EXPANSIBLE +EXPANSILE +EXPANSION +EXPANSIONAL +EXPANSIONARY +EXPANSIONISM +EXPANSIONISMS +EXPANSIONIST +EXPANSIONISTIC +EXPANSIONISTS +EXPANSIONS +EXPANSIVE +EXPANSIVELY +EXPANSIVENESS +EXPANSIVENESSES +EXPANSIVITIES +EXPANSIVITY +EXPAT +EXPATIATE +EXPATIATED +EXPATIATES +EXPATIATING +EXPATIATION +EXPATIATIONS +EXPATRIATE +EXPATRIATED +EXPATRIATES +EXPATRIATING +EXPATRIATION +EXPATRIATIONS +EXPATRIATISM +EXPATRIATISMS +EXPATS +EXPECT +EXPECTABLE +EXPECTABLY +EXPECTANCE +EXPECTANCES +EXPECTANCIES +EXPECTANCY +EXPECTANT +EXPECTANTLY +EXPECTANTS +EXPECTATION +EXPECTATIONAL +EXPECTATIONS +EXPECTATIVE +EXPECTED +EXPECTEDLY +EXPECTEDNESS +EXPECTEDNESSES +EXPECTER +EXPECTERS +EXPECTING +EXPECTORANT +EXPECTORANTS +EXPECTORATE +EXPECTORATED +EXPECTORATES +EXPECTORATING +EXPECTORATION +EXPECTORATIONS +EXPECTS +EXPEDIENCE +EXPEDIENCES +EXPEDIENCIES +EXPEDIENCY +EXPEDIENT +EXPEDIENTIAL +EXPEDIENTLY +EXPEDIENTS +EXPEDITE +EXPEDITED +EXPEDITER +EXPEDITERS +EXPEDITES +EXPEDITING +EXPEDITION +EXPEDITIONARY +EXPEDITIONS +EXPEDITIOUS +EXPEDITIOUSLY +EXPEDITIOUSNESS +EXPEDITOR +EXPEDITORS +EXPEL +EXPELLABLE +EXPELLANT +EXPELLANTS +EXPELLED +EXPELLEE +EXPELLEES +EXPELLENT +EXPELLENTS +EXPELLER +EXPELLERS +EXPELLING +EXPELS +EXPEND +EXPENDABILITIES +EXPENDABILITY +EXPENDABLE +EXPENDABLES +EXPENDED +EXPENDER +EXPENDERS +EXPENDING +EXPENDITURE +EXPENDITURES +EXPENDS +EXPENSE +EXPENSED +EXPENSES +EXPENSING +EXPENSIVE +EXPENSIVELY +EXPENSIVENESS +EXPENSIVENESSES +EXPERIENCE +EXPERIENCED +EXPERIENCES +EXPERIENCING +EXPERIENTIAL +EXPERIENTIALLY +EXPERIMENT +EXPERIMENTAL +EXPERIMENTALISM +EXPERIMENTALIST +EXPERIMENTALLY +EXPERIMENTATION +EXPERIMENTED +EXPERIMENTER +EXPERIMENTERS +EXPERIMENTING +EXPERIMENTS +EXPERT +EXPERTED +EXPERTING +EXPERTISE +EXPERTISES +EXPERTISM +EXPERTISMS +EXPERTIZE +EXPERTIZED +EXPERTIZES +EXPERTIZING +EXPERTLY +EXPERTNESS +EXPERTNESSES +EXPERTS +EXPIABLE +EXPIATE +EXPIATED +EXPIATES +EXPIATING +EXPIATION +EXPIATIONS +EXPIATOR +EXPIATORS +EXPIATORY +EXPIRATION +EXPIRATIONS +EXPIRATORY +EXPIRE +EXPIRED +EXPIRER +EXPIRERS +EXPIRES +EXPIRIES +EXPIRING +EXPIRY +EXPLAIN +EXPLAINABLE +EXPLAINED +EXPLAINER +EXPLAINERS +EXPLAINING +EXPLAINS +EXPLANATION +EXPLANATIONS +EXPLANATIVE +EXPLANATIVELY +EXPLANATORILY +EXPLANATORY +EXPLANT +EXPLANTATION +EXPLANTATIONS +EXPLANTED +EXPLANTING +EXPLANTS +EXPLETIVE +EXPLETIVES +EXPLETORY +EXPLICABLE +EXPLICABLY +EXPLICATE +EXPLICATED +EXPLICATES +EXPLICATING +EXPLICATION +EXPLICATIONS +EXPLICATIVE +EXPLICATIVELY +EXPLICATOR +EXPLICATORS +EXPLICATORY +EXPLICIT +EXPLICITLY +EXPLICITNESS +EXPLICITNESSES +EXPLICITS +EXPLODE +EXPLODED +EXPLODER +EXPLODERS +EXPLODES +EXPLODING +EXPLOIT +EXPLOITABLE +EXPLOITATION +EXPLOITATIONS +EXPLOITATIVE +EXPLOITATIVELY +EXPLOITED +EXPLOITER +EXPLOITERS +EXPLOITING +EXPLOITIVE +EXPLOITS +EXPLORATION +EXPLORATIONAL +EXPLORATIONS +EXPLORATIVE +EXPLORATIVELY +EXPLORATORY +EXPLORE +EXPLORED +EXPLORER +EXPLORERS +EXPLORES +EXPLORING +EXPLOSION +EXPLOSIONS +EXPLOSIVE +EXPLOSIVELY +EXPLOSIVENESS +EXPLOSIVENESSES +EXPLOSIVES +EXPO +EXPONENT +EXPONENTIAL +EXPONENTIALLY +EXPONENTIALS +EXPONENTIATION +EXPONENTIATIONS +EXPONENTS +EXPORT +EXPORTABILITIES +EXPORTABILITY +EXPORTABLE +EXPORTATION +EXPORTATIONS +EXPORTED +EXPORTER +EXPORTERS +EXPORTING +EXPORTS +EXPOS +EXPOSABLE +EXPOSAL +EXPOSALS +EXPOSE +EXPOSED +EXPOSER +EXPOSERS +EXPOSES +EXPOSING +EXPOSIT +EXPOSITED +EXPOSITING +EXPOSITION +EXPOSITIONAL +EXPOSITIONS +EXPOSITIVE +EXPOSITOR +EXPOSITORS +EXPOSITORY +EXPOSITS +EXPOSTULATE +EXPOSTULATED +EXPOSTULATES +EXPOSTULATING +EXPOSTULATION +EXPOSTULATIONS +EXPOSTULATORY +EXPOSURE +EXPOSURES +EXPOUND +EXPOUNDED +EXPOUNDER +EXPOUNDERS +EXPOUNDING +EXPOUNDS +EXPRESS +EXPRESSAGE +EXPRESSAGES +EXPRESSED +EXPRESSER +EXPRESSERS +EXPRESSES +EXPRESSIBLE +EXPRESSING +EXPRESSION +EXPRESSIONAL +EXPRESSIONISM +EXPRESSIONISMS +EXPRESSIONIST +EXPRESSIONISTIC +EXPRESSIONISTS +EXPRESSIONLESS +EXPRESSIONS +EXPRESSIVE +EXPRESSIVELY +EXPRESSIVENESS +EXPRESSIVITIES +EXPRESSIVITY +EXPRESSLY +EXPRESSMAN +EXPRESSMEN +EXPRESSO +EXPRESSOS +EXPRESSWAY +EXPRESSWAYS +EXPROPRIATE +EXPROPRIATED +EXPROPRIATES +EXPROPRIATING +EXPROPRIATION +EXPROPRIATIONS +EXPROPRIATOR +EXPROPRIATORS +EXPULSE +EXPULSED +EXPULSES +EXPULSING +EXPULSION +EXPULSIONS +EXPULSIVE +EXPUNCTION +EXPUNCTIONS +EXPUNGE +EXPUNGED +EXPUNGER +EXPUNGERS +EXPUNGES +EXPUNGING +EXPURGATE +EXPURGATED +EXPURGATES +EXPURGATING +EXPURGATION +EXPURGATIONS +EXPURGATOR +EXPURGATORIAL +EXPURGATORS +EXPURGATORY +EXQUISITE +EXQUISITELY +EXQUISITENESS +EXQUISITENESSES +EXQUISITES +EXSANGUINATE +EXSANGUINATED +EXSANGUINATES +EXSANGUINATING +EXSANGUINATION +EXSANGUINATIONS +EXSCIND +EXSCINDED +EXSCINDING +EXSCINDS +EXSECANT +EXSECANTS +EXSECT +EXSECTED +EXSECTING +EXSECTION +EXSECTIONS +EXSECTS +EXSERT +EXSERTED +EXSERTILE +EXSERTING +EXSERTION +EXSERTIONS +EXSERTS +EXSICCATE +EXSICCATED +EXSICCATES +EXSICCATING +EXSICCATION +EXSICCATIONS +EXSOLUTION +EXSOLUTIONS +EXSTROPHIES +EXSTROPHY +EXTANT +EXTEMPORAL +EXTEMPORALLY +EXTEMPORANEITY +EXTEMPORANEOUS +EXTEMPORARILY +EXTEMPORARY +EXTEMPORE +EXTEMPORISATION +EXTEMPORISE +EXTEMPORISED +EXTEMPORISES +EXTEMPORISING +EXTEMPORIZATION +EXTEMPORIZE +EXTEMPORIZED +EXTEMPORIZER +EXTEMPORIZERS +EXTEMPORIZES +EXTEMPORIZING +EXTEND +EXTENDABILITIES +EXTENDABILITY +EXTENDABLE +EXTENDED +EXTENDEDLY +EXTENDEDNESS +EXTENDEDNESSES +EXTENDER +EXTENDERS +EXTENDIBLE +EXTENDING +EXTENDS +EXTENSIBILITIES +EXTENSIBILITY +EXTENSIBLE +EXTENSILE +EXTENSION +EXTENSIONAL +EXTENSIONALITY +EXTENSIONALLY +EXTENSIONS +EXTENSITIES +EXTENSITY +EXTENSIVE +EXTENSIVELY +EXTENSIVENESS +EXTENSIVENESSES +EXTENSOMETER +EXTENSOMETERS +EXTENSOR +EXTENSORS +EXTENT +EXTENTS +EXTENUATE +EXTENUATED +EXTENUATES +EXTENUATING +EXTENUATION +EXTENUATIONS +EXTENUATOR +EXTENUATORS +EXTENUATORY +EXTERIOR +EXTERIORISE +EXTERIORISED +EXTERIORISES +EXTERIORISING +EXTERIORITIES +EXTERIORITY +EXTERIORIZATION +EXTERIORIZE +EXTERIORIZED +EXTERIORIZES +EXTERIORIZING +EXTERIORLY +EXTERIORS +EXTERMINATE +EXTERMINATED +EXTERMINATES +EXTERMINATING +EXTERMINATION +EXTERMINATIONS +EXTERMINATOR +EXTERMINATORS +EXTERMINATORY +EXTERMINE +EXTERMINED +EXTERMINES +EXTERMINING +EXTERN +EXTERNAL +EXTERNALISATION +EXTERNALISE +EXTERNALISED +EXTERNALISES +EXTERNALISING +EXTERNALISM +EXTERNALISMS +EXTERNALITIES +EXTERNALITY +EXTERNALIZATION +EXTERNALIZE +EXTERNALIZED +EXTERNALIZES +EXTERNALIZING +EXTERNALLY +EXTERNALS +EXTERNE +EXTERNES +EXTERNS +EXTERNSHIP +EXTERNSHIPS +EXTEROCEPTIVE +EXTEROCEPTOR +EXTEROCEPTORS +EXTERRITORIAL +EXTINCT +EXTINCTED +EXTINCTING +EXTINCTION +EXTINCTIONS +EXTINCTIVE +EXTINCTS +EXTINGUISH +EXTINGUISHABLE +EXTINGUISHED +EXTINGUISHER +EXTINGUISHERS +EXTINGUISHES +EXTINGUISHING +EXTINGUISHMENT +EXTINGUISHMENTS +EXTIRPATE +EXTIRPATED +EXTIRPATES +EXTIRPATING +EXTIRPATION +EXTIRPATIONS +EXTIRPATOR +EXTIRPATORS +EXTOL +EXTOLL +EXTOLLED +EXTOLLER +EXTOLLERS +EXTOLLING +EXTOLLS +EXTOLMENT +EXTOLMENTS +EXTOLS +EXTORT +EXTORTED +EXTORTER +EXTORTERS +EXTORTING +EXTORTION +EXTORTIONARY +EXTORTIONATE +EXTORTIONATELY +EXTORTIONER +EXTORTIONERS +EXTORTIONIST +EXTORTIONISTS +EXTORTIONS +EXTORTIVE +EXTORTS +EXTRA +EXTRABOLD +EXTRABOLDS +EXTRACELLULAR +EXTRACELLULARLY +EXTRACORPOREAL +EXTRACRANIAL +EXTRACT +EXTRACTABILITY +EXTRACTABLE +EXTRACTED +EXTRACTING +EXTRACTION +EXTRACTIONS +EXTRACTIVE +EXTRACTIVELY +EXTRACTIVES +EXTRACTOR +EXTRACTORS +EXTRACTS +EXTRACURRICULAR +EXTRADITABLE +EXTRADITE +EXTRADITED +EXTRADITES +EXTRADITING +EXTRADITION +EXTRADITIONS +EXTRADOS +EXTRADOSES +EXTRAEMBRYONIC +EXTRAGALACTIC +EXTRAHEPATIC +EXTRAJUDICIAL +EXTRAJUDICIALLY +EXTRALEGAL +EXTRALEGALLY +EXTRALIMITAL +EXTRALINGUISTIC +EXTRALITERARY +EXTRALITIES +EXTRALITY +EXTRALOGICAL +EXTRAMARITAL +EXTRAMUNDANE +EXTRAMURAL +EXTRAMURALLY +EXTRAMUSICAL +EXTRANEOUS +EXTRANEOUSLY +EXTRANEOUSNESS +EXTRANET +EXTRANETS +EXTRANUCLEAR +EXTRAORDINAIRE +EXTRAORDINARILY +EXTRAORDINARY +EXTRAPOLATE +EXTRAPOLATED +EXTRAPOLATES +EXTRAPOLATING +EXTRAPOLATION +EXTRAPOLATIONS +EXTRAPOLATIVE +EXTRAPOLATOR +EXTRAPOLATORS +EXTRAPYRAMIDAL +EXTRAS +EXTRASENSORY +EXTRASYSTOLE +EXTRASYSTOLES +EXTRATEXTUAL +EXTRAUTERINE +EXTRAVAGANCE +EXTRAVAGANCES +EXTRAVAGANCIES +EXTRAVAGANCY +EXTRAVAGANT +EXTRAVAGANTLY +EXTRAVAGANZA +EXTRAVAGANZAS +EXTRAVAGATE +EXTRAVAGATED +EXTRAVAGATES +EXTRAVAGATING +EXTRAVASATE +EXTRAVASATED +EXTRAVASATES +EXTRAVASATING +EXTRAVASATION +EXTRAVASATIONS +EXTRAVASCULAR +EXTRAVEHICULAR +EXTRAVERSION +EXTRAVERSIONS +EXTRAVERT +EXTRAVERTED +EXTRAVERTS +EXTREMA +EXTREME +EXTREMELY +EXTREMENESS +EXTREMENESSES +EXTREMER +EXTREMES +EXTREMEST +EXTREMISM +EXTREMISMS +EXTREMIST +EXTREMISTS +EXTREMITIES +EXTREMITY +EXTREMUM +EXTRICABLE +EXTRICATE +EXTRICATED +EXTRICATES +EXTRICATING +EXTRICATION +EXTRICATIONS +EXTRINSIC +EXTRINSICALLY +EXTRORSE +EXTROVERSION +EXTROVERSIONS +EXTROVERT +EXTROVERTED +EXTROVERTS +EXTRUDABILITIES +EXTRUDABILITY +EXTRUDABLE +EXTRUDE +EXTRUDED +EXTRUDER +EXTRUDERS +EXTRUDES +EXTRUDING +EXTRUSION +EXTRUSIONS +EXTRUSIVE +EXTUBATE +EXTUBATED +EXTUBATES +EXTUBATING +EXUBERANCE +EXUBERANCES +EXUBERANT +EXUBERANTLY +EXUBERATE +EXUBERATED +EXUBERATES +EXUBERATING +EXUDATE +EXUDATES +EXUDATION +EXUDATIONS +EXUDATIVE +EXUDE +EXUDED +EXUDES +EXUDING +EXULT +EXULTANCE +EXULTANCES +EXULTANCIES +EXULTANCY +EXULTANT +EXULTANTLY +EXULTATION +EXULTATIONS +EXULTED +EXULTING +EXULTINGLY +EXULTS +EXURB +EXURBAN +EXURBANITE +EXURBANITES +EXURBIA +EXURBIAS +EXURBS +EXUVIA +EXUVIAE +EXUVIAL +EXUVIATE +EXUVIATED +EXUVIATES +EXUVIATING +EXUVIATION +EXUVIATIONS +EXUVIUM +EYAS +EYASES +EYASS +EYASSES +EYE +EYEABLE +EYEBALL +EYEBALLED +EYEBALLING +EYEBALLS +EYEBAR +EYEBARS +EYEBEAM +EYEBEAMS +EYEBLACK +EYEBLACKS +EYEBLINK +EYEBLINKS +EYEBOLT +EYEBOLTS +EYEBRIGHT +EYEBRIGHTS +EYEBROW +EYEBROWS +EYECUP +EYECUPS +EYED +EYEDNESS +EYEDNESSES +EYEDROPPER +EYEDROPPERS +EYEDROPS +EYEFOLD +EYEFOLDS +EYEFUL +EYEFULS +EYEGLASS +EYEGLASSES +EYEHOLE +EYEHOLES +EYEHOOK +EYEHOOKS +EYEING +EYELASH +EYELASHES +EYELESS +EYELET +EYELETS +EYELETTED +EYELETTING +EYELID +EYELIDS +EYELIFT +EYELIFTS +EYELIKE +EYELINER +EYELINERS +EYEN +EYEOPENER +EYEOPENERS +EYEPIECE +EYEPIECES +EYEPOINT +EYEPOINTS +EYEPOPPER +EYEPOPPERS +EYER +EYERS +EYES +EYESHADE +EYESHADES +EYESHINE +EYESHINES +EYESHOT +EYESHOTS +EYESIGHT +EYESIGHTS +EYESOME +EYESORE +EYESORES +EYESPOT +EYESPOTS +EYESTALK +EYESTALKS +EYESTONE +EYESTONES +EYESTRAIN +EYESTRAINS +EYESTRINGS +EYETEETH +EYETOOTH +EYEWASH +EYEWASHES +EYEWATER +EYEWATERS +EYEWEAR +EYEWINK +EYEWINKS +EYEWITNESS +EYEWITNESSES +EYING +EYNE +EYRA +EYRAS +EYRE +EYRES +EYRIE +EYRIES +EYRIR +EYRY +FA +FAB +FABACEOUS +FABBER +FABBEST +FABLE +FABLED +FABLER +FABLERS +FABLES +FABLIAU +FABLIAUX +FABLING +FABRIC +FABRICANT +FABRICANTS +FABRICATE +FABRICATED +FABRICATES +FABRICATING +FABRICATION +FABRICATIONS +FABRICATOR +FABRICATORS +FABRICS +FABS +FABULAR +FABULATE +FABULATED +FABULATES +FABULATING +FABULATOR +FABULATORS +FABULIST +FABULISTIC +FABULISTS +FABULOUS +FABULOUSLY +FABULOUSNESS +FABULOUSNESSES +FACADE +FACADES +FACE +FACEABLE +FACECLOTH +FACECLOTHS +FACED +FACEDOWN +FACEDOWNS +FACELESS +FACELESSNESS +FACELESSNESSES +FACELIFT +FACELIFTED +FACELIFTING +FACELIFTS +FACEMASK +FACEMASKS +FACEPLATE +FACEPLATES +FACER +FACERS +FACES +FACET +FACETE +FACETED +FACETELY +FACETIAE +FACETING +FACETIOUS +FACETIOUSLY +FACETIOUSNESS +FACETIOUSNESSES +FACETS +FACETTED +FACETTING +FACEUP +FACIA +FACIAE +FACIAL +FACIALLY +FACIALS +FACIAS +FACIEND +FACIENDS +FACIES +FACILE +FACILELY +FACILENESS +FACILENESSES +FACILITATE +FACILITATED +FACILITATES +FACILITATING +FACILITATION +FACILITATIONS +FACILITATIVE +FACILITATOR +FACILITATORS +FACILITATORY +FACILITIES +FACILITY +FACING +FACINGS +FACSIMILE +FACSIMILED +FACSIMILEING +FACSIMILES +FACT +FACTFUL +FACTICITIES +FACTICITY +FACTION +FACTIONAL +FACTIONALISM +FACTIONALISMS +FACTIONALLY +FACTIONS +FACTIOUS +FACTIOUSLY +FACTIOUSNESS +FACTIOUSNESSES +FACTITIOUS +FACTITIOUSLY +FACTITIOUSNESS +FACTITIVE +FACTITIVELY +FACTOID +FACTOIDAL +FACTOIDS +FACTOR +FACTORABLE +FACTORAGE +FACTORAGES +FACTORED +FACTORIAL +FACTORIALS +FACTORIES +FACTORING +FACTORIZATION +FACTORIZATIONS +FACTORIZE +FACTORIZED +FACTORIZES +FACTORIZING +FACTORS +FACTORSHIP +FACTORSHIPS +FACTORY +FACTORYLIKE +FACTOTUM +FACTOTUMS +FACTS +FACTUAL +FACTUALISM +FACTUALISMS +FACTUALIST +FACTUALISTS +FACTUALITIES +FACTUALITY +FACTUALLY +FACTUALNESS +FACTUALNESSES +FACTURE +FACTURES +FACULA +FACULAE +FACULAR +FACULTATIVE +FACULTATIVELY +FACULTIES +FACULTY +FAD +FADABLE +FADDIER +FADDIEST +FADDISH +FADDISHLY +FADDISHNESS +FADDISHNESSES +FADDISM +FADDISMS +FADDIST +FADDISTS +FADDY +FADE +FADEAWAY +FADEAWAYS +FADED +FADEDLY +FADEDNESS +FADEDNESSES +FADEIN +FADEINS +FADELESS +FADEOUT +FADEOUTS +FADER +FADERS +FADES +FADGE +FADGED +FADGES +FADGING +FADING +FADINGS +FADLIKE +FADO +FADOS +FADS +FAECAL +FAECES +FAENA +FAENAS +FAERIE +FAERIES +FAERY +FAG +FAGGED +FAGGIER +FAGGIEST +FAGGING +FAGGOT +FAGGOTED +FAGGOTING +FAGGOTINGS +FAGGOTRIES +FAGGOTRY +FAGGOTS +FAGGOTY +FAGGY +FAGIN +FAGINS +FAGOT +FAGOTED +FAGOTER +FAGOTERS +FAGOTING +FAGOTINGS +FAGOTS +FAGS +FAHLBAND +FAHLBANDS +FAIENCE +FAIENCES +FAIL +FAILED +FAILING +FAILINGLY +FAILINGS +FAILLE +FAILLES +FAILS +FAILURE +FAILURES +FAIN +FAINEANCE +FAINEANCES +FAINEANT +FAINEANTS +FAINER +FAINEST +FAINT +FAINTED +FAINTER +FAINTERS +FAINTEST +FAINTHEARTED +FAINTHEARTEDLY +FAINTING +FAINTISH +FAINTISHNESS +FAINTISHNESSES +FAINTLY +FAINTNESS +FAINTNESSES +FAINTS +FAIR +FAIRED +FAIRER +FAIREST +FAIRGOER +FAIRGOERS +FAIRGROUND +FAIRGROUNDS +FAIRIES +FAIRING +FAIRINGS +FAIRISH +FAIRISHLY +FAIRLEAD +FAIRLEADER +FAIRLEADERS +FAIRLEADS +FAIRLY +FAIRNESS +FAIRNESSES +FAIRS +FAIRWAY +FAIRWAYS +FAIRY +FAIRYHOOD +FAIRYHOODS +FAIRYISM +FAIRYISMS +FAIRYLAND +FAIRYLANDS +FAIRYLIKE +FAITH +FAITHED +FAITHFUL +FAITHFULLY +FAITHFULNESS +FAITHFULNESSES +FAITHFULS +FAITHING +FAITHLESS +FAITHLESSLY +FAITHLESSNESS +FAITHLESSNESSES +FAITHS +FAITOUR +FAITOURS +FAJITA +FAJITAS +FAKE +FAKED +FAKEER +FAKEERS +FAKER +FAKERIES +FAKERS +FAKERY +FAKES +FAKEY +FAKING +FAKIR +FAKIRS +FALAFEL +FALAFELS +FALBALA +FALBALAS +FALCATE +FALCATED +FALCES +FALCHION +FALCHIONS +FALCIFORM +FALCON +FALCONER +FALCONERS +FALCONET +FALCONETS +FALCONINE +FALCONOID +FALCONRIES +FALCONRY +FALCONS +FALDERAL +FALDERALS +FALDEROL +FALDEROLS +FALDSTOOL +FALDSTOOLS +FALL +FALLACIES +FALLACIOUS +FALLACIOUSLY +FALLACIOUSNESS +FALLACY +FALLAL +FALLALERIES +FALLALERY +FALLALS +FALLAWAY +FALLAWAYS +FALLBACK +FALLBACKS +FALLBOARD +FALLBOARDS +FALLEN +FALLER +FALLERS +FALLFISH +FALLFISHES +FALLIBILITIES +FALLIBILITY +FALLIBLE +FALLIBLY +FALLING +FALLOFF +FALLOFFS +FALLOUT +FALLOUTS +FALLOW +FALLOWED +FALLOWING +FALLOWNESS +FALLOWNESSES +FALLOWS +FALLS +FALSE +FALSEFACE +FALSEFACES +FALSEHOOD +FALSEHOODS +FALSELY +FALSENESS +FALSENESSES +FALSER +FALSEST +FALSETTO +FALSETTOS +FALSEWORK +FALSEWORKS +FALSIE +FALSIES +FALSIFIABILITY +FALSIFIABLE +FALSIFICATION +FALSIFICATIONS +FALSIFIED +FALSIFIER +FALSIFIERS +FALSIFIES +FALSIFY +FALSIFYING +FALSITIES +FALSITY +FALTBOAT +FALTBOATS +FALTER +FALTERED +FALTERER +FALTERERS +FALTERING +FALTERINGLY +FALTERS +FALX +FAME +FAMED +FAMELESS +FAMES +FAMILIAL +FAMILIAR +FAMILIARISE +FAMILIARISED +FAMILIARISES +FAMILIARISING +FAMILIARITIES +FAMILIARITY +FAMILIARIZATION +FAMILIARIZE +FAMILIARIZED +FAMILIARIZES +FAMILIARIZING +FAMILIARLY +FAMILIARNESS +FAMILIARNESSES +FAMILIARS +FAMILIES +FAMILISM +FAMILISMS +FAMILISTIC +FAMILY +FAMINE +FAMINES +FAMING +FAMISH +FAMISHED +FAMISHES +FAMISHING +FAMISHMENT +FAMISHMENTS +FAMOUS +FAMOUSLY +FAMOUSNESS +FAMOUSNESSES +FAMULI +FAMULUS +FAN +FANATIC +FANATICAL +FANATICALLY +FANATICALNESS +FANATICALNESSES +FANATICISM +FANATICISMS +FANATICIZE +FANATICIZED +FANATICIZES +FANATICIZING +FANATICS +FANCIED +FANCIER +FANCIERS +FANCIES +FANCIEST +FANCIFIED +FANCIFIES +FANCIFUL +FANCIFULLY +FANCIFULNESS +FANCIFULNESSES +FANCIFY +FANCIFYING +FANCILESS +FANCILY +FANCINESS +FANCINESSES +FANCY +FANCYING +FANCYWORK +FANCYWORKS +FANDANGO +FANDANGOS +FANDOM +FANDOMS +FANE +FANEGA +FANEGADA +FANEGADAS +FANEGAS +FANES +FANFARE +FANFARES +FANFARON +FANFARONADE +FANFARONADES +FANFARONS +FANFIC +FANFICS +FANFOLD +FANFOLDED +FANFOLDING +FANFOLDS +FANG +FANGA +FANGAS +FANGED +FANGLESS +FANGLIKE +FANGS +FANION +FANIONS +FANJET +FANJETS +FANLIGHT +FANLIGHTS +FANLIKE +FANNED +FANNER +FANNERS +FANNIES +FANNING +FANNY +FANO +FANON +FANONS +FANOS +FANS +FANTABULOUS +FANTAIL +FANTAILED +FANTAILS +FANTASIA +FANTASIAS +FANTASIE +FANTASIED +FANTASIES +FANTASISE +FANTASISED +FANTASISES +FANTASISING +FANTASIST +FANTASISTS +FANTASIZE +FANTASIZED +FANTASIZER +FANTASIZERS +FANTASIZES +FANTASIZING +FANTASM +FANTASMS +FANTAST +FANTASTIC +FANTASTICAL +FANTASTICALITY +FANTASTICALLY +FANTASTICALNESS +FANTASTICATE +FANTASTICATED +FANTASTICATES +FANTASTICATING +FANTASTICATION +FANTASTICATIONS +FANTASTICO +FANTASTICOES +FANTASTICS +FANTASTS +FANTASY +FANTASYING +FANTASYLAND +FANTASYLANDS +FANTOCCINI +FANTOD +FANTODS +FANTOM +FANTOMS +FANUM +FANUMS +FANWISE +FANWORT +FANWORTS +FANZINE +FANZINES +FAQIR +FAQIRS +FAQUIR +FAQUIRS +FAR +FARAD +FARADAIC +FARADAY +FARADAYS +FARADIC +FARADISE +FARADISED +FARADISES +FARADISING +FARADISM +FARADISMS +FARADIZE +FARADIZED +FARADIZER +FARADIZERS +FARADIZES +FARADIZING +FARADS +FARANDOLE +FARANDOLES +FARAWAY +FARCE +FARCED +FARCER +FARCERS +FARCES +FARCEUR +FARCEURS +FARCI +FARCICAL +FARCICALITIES +FARCICALITY +FARCICALLY +FARCIE +FARCIES +FARCING +FARCY +FARD +FARDED +FARDEL +FARDELS +FARDING +FARDS +FARE +FAREBOX +FAREBOXES +FARED +FARER +FARERS +FARES +FAREWELL +FAREWELLED +FAREWELLING +FAREWELLS +FARFAL +FARFALLE +FARFALS +FARFEL +FARFELS +FARFETCHEDNESS +FARINA +FARINACEOUS +FARINAS +FARING +FARINHA +FARINHAS +FARINOSE +FARKLEBERRIES +FARKLEBERRY +FARL +FARLE +FARLES +FARLS +FARM +FARMABLE +FARMED +FARMER +FARMERETTE +FARMERETTES +FARMERS +FARMHAND +FARMHANDS +FARMHOUSE +FARMHOUSES +FARMING +FARMINGS +FARMLAND +FARMLANDS +FARMS +FARMSTEAD +FARMSTEADS +FARMWIFE +FARMWIVES +FARMWORK +FARMWORKER +FARMWORKERS +FARMWORKS +FARMYARD +FARMYARDS +FARNESOL +FARNESOLS +FARNESS +FARNESSES +FARO +FAROLITO +FAROLITOS +FAROS +FAROUCHE +FARRAGINOUS +FARRAGO +FARRAGOES +FARRIER +FARRIERIES +FARRIERS +FARRIERY +FARROW +FARROWED +FARROWING +FARROWS +FARSEEING +FARSIDE +FARSIDES +FARSIGHTED +FARSIGHTEDLY +FARSIGHTEDNESS +FART +FARTED +FARTHER +FARTHERMOST +FARTHEST +FARTHING +FARTHINGALE +FARTHINGALES +FARTHINGS +FARTING +FARTLEK +FARTLEKS +FARTS +FAS +FASCES +FASCIA +FASCIAE +FASCIAL +FASCIAS +FASCIATE +FASCIATED +FASCIATION +FASCIATIONS +FASCICLE +FASCICLED +FASCICLES +FASCICULAR +FASCICULARLY +FASCICULATE +FASCICULATED +FASCICULATION +FASCICULATIONS +FASCICULE +FASCICULES +FASCICULI +FASCICULUS +FASCIITIS +FASCIITISES +FASCINATE +FASCINATED +FASCINATES +FASCINATING +FASCINATINGLY +FASCINATION +FASCINATIONS +FASCINATOR +FASCINATORS +FASCINE +FASCINES +FASCIOLIASES +FASCIOLIASIS +FASCISM +FASCISMS +FASCIST +FASCISTIC +FASCISTICALLY +FASCISTS +FASCITIS +FASCITISES +FASH +FASHED +FASHES +FASHING +FASHION +FASHIONABILITY +FASHIONABLE +FASHIONABLENESS +FASHIONABLES +FASHIONABLY +FASHIONED +FASHIONER +FASHIONERS +FASHIONING +FASHIONISTA +FASHIONISTAS +FASHIONMONGER +FASHIONMONGERS +FASHIONS +FASHIOUS +FAST +FASTBACK +FASTBACKS +FASTBALL +FASTBALLER +FASTBALLERS +FASTBALLS +FASTED +FASTEN +FASTENED +FASTENER +FASTENERS +FASTENING +FASTENINGS +FASTENS +FASTER +FASTEST +FASTIDIOUS +FASTIDIOUSLY +FASTIDIOUSNESS +FASTIGIATE +FASTIGIUM +FASTIGIUMS +FASTING +FASTINGS +FASTNESS +FASTNESSES +FASTS +FASTUOUS +FAT +FATAL +FATALISM +FATALISMS +FATALIST +FATALISTIC +FATALISTICALLY +FATALISTS +FATALITIES +FATALITY +FATALLY +FATALNESS +FATALNESSES +FATBACK +FATBACKS +FATBIRD +FATBIRDS +FATE +FATED +FATEFUL +FATEFULLY +FATEFULNESS +FATEFULNESSES +FATES +FATHEAD +FATHEADED +FATHEADEDLY +FATHEADEDNESS +FATHEADEDNESSES +FATHEADS +FATHER +FATHERED +FATHERHOOD +FATHERHOODS +FATHERING +FATHERLAND +FATHERLANDS +FATHERLESS +FATHERLIKE +FATHERLINESS +FATHERLINESSES +FATHERLY +FATHERS +FATHOM +FATHOMABLE +FATHOMED +FATHOMER +FATHOMERS +FATHOMING +FATHOMLESS +FATHOMLESSLY +FATHOMLESSNESS +FATHOMS +FATIDIC +FATIDICAL +FATIGABILITIES +FATIGABILITY +FATIGABLE +FATIGUE +FATIGUED +FATIGUES +FATIGUING +FATIGUINGLY +FATING +FATLESS +FATLIKE +FATLING +FATLINGS +FATLY +FATNESS +FATNESSES +FATS +FATSHEDERA +FATSHEDERAS +FATSO +FATSOES +FATSOS +FATSTOCK +FATSTOCKS +FATTED +FATTEN +FATTENED +FATTENER +FATTENERS +FATTENING +FATTENS +FATTER +FATTEST +FATTIER +FATTIES +FATTIEST +FATTILY +FATTINESS +FATTINESSES +FATTING +FATTISH +FATTY +FATUITIES +FATUITY +FATUOUS +FATUOUSLY +FATUOUSNESS +FATUOUSNESSES +FATWA +FATWAS +FATWOOD +FATWOODS +FAUBOURG +FAUBOURGS +FAUCAL +FAUCALS +FAUCES +FAUCET +FAUCETS +FAUCIAL +FAUGH +FAULD +FAULDS +FAULT +FAULTED +FAULTFINDER +FAULTFINDERS +FAULTFINDING +FAULTFINDINGS +FAULTIER +FAULTIEST +FAULTILY +FAULTINESS +FAULTINESSES +FAULTING +FAULTLESS +FAULTLESSLY +FAULTLESSNESS +FAULTLESSNESSES +FAULTS +FAULTY +FAUN +FAUNA +FAUNAE +FAUNAL +FAUNALLY +FAUNAS +FAUNISTIC +FAUNISTICALLY +FAUNLIKE +FAUNS +FAUTEUIL +FAUTEUILS +FAUVE +FAUVES +FAUVISM +FAUVISMS +FAUVIST +FAUVISTS +FAUX +FAVA +FAVAS +FAVE +FAVELA +FAVELAS +FAVELLA +FAVELLAS +FAVEOLATE +FAVES +FAVISM +FAVISMS +FAVONIAN +FAVOR +FAVORABLE +FAVORABLENESS +FAVORABLENESSES +FAVORABLY +FAVORED +FAVORER +FAVORERS +FAVORING +FAVORITE +FAVORITES +FAVORITISM +FAVORITISMS +FAVORS +FAVOUR +FAVOURED +FAVOURER +FAVOURERS +FAVOURING +FAVOURS +FAVUS +FAVUSES +FAWN +FAWNED +FAWNER +FAWNERS +FAWNIER +FAWNIEST +FAWNING +FAWNINGLY +FAWNLIKE +FAWNS +FAWNY +FAX +FAXED +FAXES +FAXING +FAY +FAYALITE +FAYALITES +FAYED +FAYING +FAYS +FAZE +FAZED +FAZENDA +FAZENDAS +FAZES +FAZING +FE +FEAL +FEALTIES +FEALTY +FEAR +FEARED +FEARER +FEARERS +FEARFUL +FEARFULLER +FEARFULLEST +FEARFULLY +FEARFULNESS +FEARFULNESSES +FEARING +FEARLESS +FEARLESSLY +FEARLESSNESS +FEARLESSNESSES +FEARS +FEARSOME +FEARSOMELY +FEARSOMENESS +FEARSOMENESSES +FEASANCE +FEASANCES +FEASE +FEASED +FEASES +FEASIBILITIES +FEASIBILITY +FEASIBLE +FEASIBLY +FEASING +FEAST +FEASTED +FEASTER +FEASTERS +FEASTFUL +FEASTING +FEASTLESS +FEASTS +FEAT +FEATER +FEATEST +FEATHER +FEATHERBED +FEATHERBEDDED +FEATHERBEDDING +FEATHERBEDDINGS +FEATHERBEDS +FEATHERBRAIN +FEATHERBRAINED +FEATHERBRAINS +FEATHERED +FEATHEREDGE +FEATHEREDGED +FEATHEREDGES +FEATHEREDGING +FEATHERHEAD +FEATHERHEADED +FEATHERHEADS +FEATHERIER +FEATHERIEST +FEATHERING +FEATHERINGS +FEATHERLESS +FEATHERLIGHT +FEATHERS +FEATHERSTITCH +FEATHERSTITCHED +FEATHERSTITCHES +FEATHERWEIGHT +FEATHERWEIGHTS +FEATHERY +FEATLIER +FEATLIEST +FEATLY +FEATS +FEATURE +FEATURED +FEATURELESS +FEATURES +FEATURETTE +FEATURETTES +FEATURING +FEAZE +FEAZED +FEAZES +FEAZING +FEBRICITIES +FEBRICITY +FEBRIFIC +FEBRIFUGE +FEBRIFUGES +FEBRILE +FEBRILITIES +FEBRILITY +FECAL +FECES +FECIAL +FECIALS +FECK +FECKLESS +FECKLESSLY +FECKLESSNESS +FECKLESSNESSES +FECKLY +FECKS +FECULA +FECULAE +FECULENCE +FECULENCES +FECULENT +FECUND +FECUNDATE +FECUNDATED +FECUNDATES +FECUNDATING +FECUNDATION +FECUNDATIONS +FECUNDITIES +FECUNDITY +FED +FEDAYEE +FEDAYEEN +FEDERACIES +FEDERACY +FEDERAL +FEDERALESE +FEDERALESES +FEDERALISM +FEDERALISMS +FEDERALIST +FEDERALISTS +FEDERALIZATION +FEDERALIZATIONS +FEDERALIZE +FEDERALIZED +FEDERALIZES +FEDERALIZING +FEDERALLY +FEDERALS +FEDERATE +FEDERATED +FEDERATES +FEDERATING +FEDERATION +FEDERATIONS +FEDERATIVE +FEDERATIVELY +FEDERATOR +FEDERATORS +FEDEX +FEDEXED +FEDEXES +FEDEXING +FEDORA +FEDORAS +FEDS +FEE +FEEB +FEEBLE +FEEBLEMINDED +FEEBLEMINDEDLY +FEEBLENESS +FEEBLENESSES +FEEBLER +FEEBLEST +FEEBLISH +FEEBLY +FEEBS +FEED +FEEDABLE +FEEDBACK +FEEDBACKS +FEEDBAG +FEEDBAGS +FEEDBOX +FEEDBOXES +FEEDER +FEEDERS +FEEDGRAIN +FEEDGRAINS +FEEDHOLE +FEEDHOLES +FEEDING +FEEDLOT +FEEDLOTS +FEEDS +FEEDSTOCK +FEEDSTOCKS +FEEDSTUFF +FEEDSTUFFS +FEEDYARD +FEEDYARDS +FEEING +FEEL +FEELER +FEELERS +FEELESS +FEELING +FEELINGLY +FEELINGNESS +FEELINGNESSES +FEELINGS +FEELS +FEES +FEET +FEETFIRST +FEETLESS +FEEZE +FEEZED +FEEZES +FEEZING +FEH +FEHS +FEIGN +FEIGNED +FEIGNEDLY +FEIGNER +FEIGNERS +FEIGNING +FEIGNS +FEIJOA +FEIJOAS +FEINT +FEINTED +FEINTING +FEINTS +FEIRIE +FEIST +FEISTIER +FEISTIEST +FEISTILY +FEISTINESS +FEISTINESSES +FEISTS +FEISTY +FELAFEL +FELAFELS +FELDSCHER +FELDSCHERS +FELDSHER +FELDSHERS +FELDSPAR +FELDSPARS +FELDSPATHIC +FELICIFIC +FELICITATE +FELICITATED +FELICITATES +FELICITATING +FELICITATION +FELICITATIONS +FELICITATOR +FELICITATORS +FELICITIES +FELICITOUS +FELICITOUSLY +FELICITOUSNESS +FELICITY +FELID +FELIDS +FELINE +FELINELY +FELINES +FELINITIES +FELINITY +FELL +FELLA +FELLABLE +FELLAH +FELLAHEEN +FELLAHIN +FELLAHS +FELLAS +FELLATE +FELLATED +FELLATES +FELLATING +FELLATIO +FELLATION +FELLATIONS +FELLATIOS +FELLATOR +FELLATORS +FELLATRICES +FELLATRIX +FELLATRIXES +FELLED +FELLER +FELLERS +FELLEST +FELLIES +FELLING +FELLMONGER +FELLMONGERED +FELLMONGERIES +FELLMONGERING +FELLMONGERINGS +FELLMONGERS +FELLMONGERY +FELLNESS +FELLNESSES +FELLOE +FELLOES +FELLOW +FELLOWED +FELLOWING +FELLOWLY +FELLOWMAN +FELLOWMEN +FELLOWS +FELLOWSHIP +FELLOWSHIPED +FELLOWSHIPING +FELLOWSHIPPED +FELLOWSHIPPING +FELLOWSHIPS +FELLS +FELLY +FELON +FELONIES +FELONIOUS +FELONIOUSLY +FELONIOUSNESS +FELONIOUSNESSES +FELONRIES +FELONRY +FELONS +FELONY +FELSIC +FELSITE +FELSITES +FELSITIC +FELSPAR +FELSPARS +FELSTONE +FELSTONES +FELT +FELTED +FELTING +FELTINGS +FELTLIKE +FELTS +FELUCCA +FELUCCAS +FELWORT +FELWORTS +FEM +FEMALE +FEMALENESS +FEMALENESSES +FEMALES +FEME +FEMES +FEMINACIES +FEMINACY +FEMINAZI +FEMINAZIS +FEMINIE +FEMININE +FEMININELY +FEMININENESS +FEMININENESSES +FEMININES +FEMININITIES +FEMININITY +FEMINISE +FEMINISED +FEMINISES +FEMINISING +FEMINISM +FEMINISMS +FEMINIST +FEMINISTIC +FEMINISTS +FEMINITIES +FEMINITY +FEMINIZATION +FEMINIZATIONS +FEMINIZE +FEMINIZED +FEMINIZES +FEMINIZING +FEMME +FEMMES +FEMORA +FEMORAL +FEMS +FEMTOSECOND +FEMTOSECONDS +FEMUR +FEMURS +FEN +FENAGLE +FENAGLED +FENAGLES +FENAGLING +FENCE +FENCED +FENCELESS +FENCELESSNESS +FENCELESSNESSES +FENCER +FENCEROW +FENCEROWS +FENCERS +FENCES +FENCIBLE +FENCIBLES +FENCING +FENCINGS +FEND +FENDED +FENDER +FENDERED +FENDERLESS +FENDERS +FENDING +FENDS +FENESTRA +FENESTRAE +FENESTRAL +FENESTRATE +FENESTRATED +FENESTRATION +FENESTRATIONS +FENLAND +FENLANDS +FENNEC +FENNECS +FENNEL +FENNELS +FENNIER +FENNIEST +FENNY +FENS +FENTANYL +FENTANYLS +FENTHION +FENTHIONS +FENUGREEK +FENUGREEKS +FENURON +FENURONS +FEOD +FEODARIES +FEODARY +FEODS +FEOFF +FEOFFED +FEOFFEE +FEOFFEES +FEOFFER +FEOFFERS +FEOFFING +FEOFFMENT +FEOFFMENTS +FEOFFOR +FEOFFORS +FEOFFS +FER +FERACITIES +FERACITY +FERAL +FERALS +FERBAM +FERBAMS +FERE +FERES +FERETORIES +FERETORY +FERIA +FERIAE +FERIAL +FERIAS +FERINE +FERITIES +FERITY +FERLIE +FERLIES +FERLY +FERMATA +FERMATAS +FERMATE +FERMENT +FERMENTABLE +FERMENTATION +FERMENTATIONS +FERMENTATIVE +FERMENTED +FERMENTER +FERMENTERS +FERMENTING +FERMENTOR +FERMENTORS +FERMENTS +FERMI +FERMION +FERMIONIC +FERMIONS +FERMIS +FERMIUM +FERMIUMS +FERN +FERNERIES +FERNERY +FERNIER +FERNIEST +FERNINST +FERNLESS +FERNLIKE +FERNS +FERNY +FEROCIOUS +FEROCIOUSLY +FEROCIOUSNESS +FEROCIOUSNESSES +FEROCITIES +FEROCITY +FERRATE +FERRATES +FERREDOXIN +FERREDOXINS +FERREL +FERRELED +FERRELING +FERRELLED +FERRELLING +FERRELS +FERREOUS +FERRET +FERRETED +FERRETER +FERRETERS +FERRETING +FERRETINGS +FERRETS +FERRETY +FERRIAGE +FERRIAGES +FERRIC +FERRICYANIDE +FERRICYANIDES +FERRIED +FERRIES +FERRIFEROUS +FERRIMAGNET +FERRIMAGNETIC +FERRIMAGNETISM +FERRIMAGNETISMS +FERRIMAGNETS +FERRITE +FERRITES +FERRITIC +FERRITIN +FERRITINS +FERROCENE +FERROCENES +FERROCONCRETE +FERROCONCRETES +FERROCYANIDE +FERROCYANIDES +FERROELECTRIC +FERROELECTRICS +FERROMAGNESIAN +FERROMAGNET +FERROMAGNETIC +FERROMAGNETISM +FERROMAGNETISMS +FERROMAGNETS +FERROMANGANESE +FERROMANGANESES +FERROSILICON +FERROSILICONS +FERROTYPE +FERROTYPED +FERROTYPES +FERROTYPING +FERROUS +FERRUGINOUS +FERRULE +FERRULED +FERRULES +FERRULING +FERRUM +FERRUMS +FERRY +FERRYBOAT +FERRYBOATS +FERRYING +FERRYMAN +FERRYMEN +FERTILE +FERTILELY +FERTILENESS +FERTILENESSES +FERTILITIES +FERTILITY +FERTILIZABLE +FERTILIZATION +FERTILIZATIONS +FERTILIZE +FERTILIZED +FERTILIZER +FERTILIZERS +FERTILIZES +FERTILIZING +FERULA +FERULAE +FERULAS +FERULE +FERULED +FERULES +FERULING +FERVENCIES +FERVENCY +FERVENT +FERVENTLY +FERVID +FERVIDITIES +FERVIDITY +FERVIDLY +FERVIDNESS +FERVIDNESSES +FERVOR +FERVORS +FERVOUR +FERVOURS +FES +FESCENNINE +FESCUE +FESCUES +FESS +FESSE +FESSED +FESSES +FESSING +FESSWISE +FEST +FESTAL +FESTALLY +FESTER +FESTERED +FESTERING +FESTERS +FESTINATE +FESTINATED +FESTINATELY +FESTINATES +FESTINATING +FESTIVAL +FESTIVALGOER +FESTIVALGOERS +FESTIVALS +FESTIVE +FESTIVELY +FESTIVENESS +FESTIVENESSES +FESTIVITIES +FESTIVITY +FESTOON +FESTOONED +FESTOONERIES +FESTOONERY +FESTOONING +FESTOONS +FESTS +FET +FETA +FETAL +FETAS +FETATION +FETATIONS +FETCH +FETCHED +FETCHER +FETCHERS +FETCHES +FETCHING +FETCHINGLY +FETE +FETED +FETERITA +FETERITAS +FETES +FETIAL +FETIALES +FETIALIS +FETIALS +FETICH +FETICHES +FETICHISM +FETICHISMS +FETICIDAL +FETICIDE +FETICIDES +FETID +FETIDITIES +FETIDITY +FETIDLY +FETIDNESS +FETIDNESSES +FETING +FETISH +FETISHES +FETISHISM +FETISHISMS +FETISHIST +FETISHISTIC +FETISHISTICALLY +FETISHISTS +FETISHIZE +FETISHIZED +FETISHIZES +FETISHIZING +FETLOCK +FETLOCKS +FETOLOGIES +FETOLOGIST +FETOLOGISTS +FETOLOGY +FETOPROTEIN +FETOPROTEINS +FETOR +FETORS +FETOSCOPE +FETOSCOPES +FETOSCOPIES +FETOSCOPY +FETS +FETTED +FETTER +FETTERED +FETTERER +FETTERERS +FETTERING +FETTERS +FETTING +FETTLE +FETTLED +FETTLES +FETTLING +FETTLINGS +FETTUCCINE +FETTUCCINI +FETTUCINE +FETTUCINI +FETUS +FETUSES +FEU +FEUAR +FEUARS +FEUD +FEUDAL +FEUDALISM +FEUDALISMS +FEUDALIST +FEUDALISTIC +FEUDALISTS +FEUDALITIES +FEUDALITY +FEUDALIZATION +FEUDALIZATIONS +FEUDALIZE +FEUDALIZED +FEUDALIZES +FEUDALIZING +FEUDALLY +FEUDARIES +FEUDARY +FEUDATORIES +FEUDATORY +FEUDED +FEUDING +FEUDIST +FEUDISTS +FEUDS +FEUED +FEUILLETON +FEUILLETONISM +FEUILLETONISMS +FEUILLETONIST +FEUILLETONISTS +FEUILLETONS +FEUING +FEUS +FEVER +FEVERED +FEVERFEW +FEVERFEWS +FEVERING +FEVERISH +FEVERISHLY +FEVERISHNESS +FEVERISHNESSES +FEVEROUS +FEVERROOT +FEVERROOTS +FEVERS +FEVERWEED +FEVERWEEDS +FEVERWORT +FEVERWORTS +FEW +FEWER +FEWEST +FEWNESS +FEWNESSES +FEWTRILS +FEY +FEYER +FEYEST +FEYLY +FEYNESS +FEYNESSES +FEZ +FEZES +FEZZED +FEZZES +FEZZY +FIACRE +FIACRES +FIANCE +FIANCEE +FIANCEES +FIANCES +FIANCHETTO +FIANCHETTOED +FIANCHETTOING +FIANCHETTOS +FIAR +FIARS +FIASCHI +FIASCO +FIASCOES +FIASCOS +FIAT +FIATS +FIB +FIBBED +FIBBER +FIBBERS +FIBBING +FIBER +FIBERBOARD +FIBERBOARDS +FIBERED +FIBERFILL +FIBERFILLS +FIBERGLASS +FIBERGLASSED +FIBERGLASSES +FIBERGLASSING +FIBERIZATION +FIBERIZATIONS +FIBERIZE +FIBERIZED +FIBERIZES +FIBERIZING +FIBERLESS +FIBERLIKE +FIBERS +FIBERSCOPE +FIBERSCOPES +FIBRANNE +FIBRANNES +FIBRE +FIBREBOARD +FIBREBOARDS +FIBREFILL +FIBREFILLS +FIBREGLASS +FIBREGLASSES +FIBRES +FIBRIL +FIBRILLA +FIBRILLAE +FIBRILLAR +FIBRILLATE +FIBRILLATED +FIBRILLATES +FIBRILLATING +FIBRILLATION +FIBRILLATIONS +FIBRILS +FIBRIN +FIBRINOGEN +FIBRINOGENS +FIBRINOID +FIBRINOIDS +FIBRINOLYSES +FIBRINOLYSIN +FIBRINOLYSINS +FIBRINOLYSIS +FIBRINOLYTIC +FIBRINOPEPTIDE +FIBRINOPEPTIDES +FIBRINOUS +FIBRINS +FIBROBLAST +FIBROBLASTIC +FIBROBLASTS +FIBROCYSTIC +FIBROID +FIBROIDS +FIBROIN +FIBROINS +FIBROMA +FIBROMAS +FIBROMATA +FIBROMATOUS +FIBROMYALGIA +FIBROMYALGIAS +FIBRONECTIN +FIBRONECTINS +FIBROSARCOMA +FIBROSARCOMAS +FIBROSARCOMATA +FIBROSES +FIBROSIS +FIBROSITIS +FIBROSITISES +FIBROTIC +FIBROUS +FIBROUSLY +FIBROVASCULAR +FIBS +FIBSTER +FIBSTERS +FIBULA +FIBULAE +FIBULAR +FIBULAS +FICE +FICES +FICHE +FICHES +FICHU +FICHUS +FICIN +FICINS +FICKLE +FICKLENESS +FICKLENESSES +FICKLER +FICKLEST +FICKLY +FICO +FICOES +FICTILE +FICTION +FICTIONAL +FICTIONALISE +FICTIONALISED +FICTIONALISES +FICTIONALISING +FICTIONALITIES +FICTIONALITY +FICTIONALIZE +FICTIONALIZED +FICTIONALIZES +FICTIONALIZING +FICTIONALLY +FICTIONEER +FICTIONEERING +FICTIONEERINGS +FICTIONEERS +FICTIONIST +FICTIONISTS +FICTIONIZATION +FICTIONIZATIONS +FICTIONIZE +FICTIONIZED +FICTIONIZES +FICTIONIZING +FICTIONS +FICTITIOUS +FICTITIOUSLY +FICTITIOUSNESS +FICTIVE +FICTIVELY +FICTIVENESS +FICTIVENESSES +FICUS +FICUSES +FID +FIDDLE +FIDDLEBACK +FIDDLEBACKS +FIDDLED +FIDDLEHEAD +FIDDLEHEADS +FIDDLER +FIDDLERS +FIDDLES +FIDDLESTICK +FIDDLESTICKS +FIDDLING +FIDDLY +FIDEISM +FIDEISMS +FIDEIST +FIDEISTIC +FIDEISTS +FIDELISMO +FIDELISMOS +FIDELISTA +FIDELISTAS +FIDELITIES +FIDELITY +FIDGE +FIDGED +FIDGES +FIDGET +FIDGETED +FIDGETER +FIDGETERS +FIDGETINESS +FIDGETINESSES +FIDGETING +FIDGETS +FIDGETY +FIDGING +FIDO +FIDOS +FIDS +FIDUCIAL +FIDUCIALLY +FIDUCIARIES +FIDUCIARY +FIE +FIEF +FIEFDOM +FIEFDOMS +FIEFS +FIELD +FIELDED +FIELDER +FIELDERS +FIELDFARE +FIELDFARES +FIELDING +FIELDPIECE +FIELDPIECES +FIELDS +FIELDSMAN +FIELDSMEN +FIELDSTONE +FIELDSTONES +FIELDSTRIP +FIELDSTRIPPED +FIELDSTRIPPING +FIELDSTRIPS +FIELDWORK +FIELDWORKS +FIEND +FIENDISH +FIENDISHLY +FIENDISHNESS +FIENDISHNESSES +FIENDS +FIERCE +FIERCELY +FIERCENESS +FIERCENESSES +FIERCER +FIERCEST +FIERIER +FIERIEST +FIERILY +FIERINESS +FIERINESSES +FIERY +FIESTA +FIESTAS +FIFE +FIFED +FIFER +FIFERS +FIFES +FIFING +FIFTEEN +FIFTEENS +FIFTEENTH +FIFTEENTHS +FIFTH +FIFTHLY +FIFTHS +FIFTIES +FIFTIETH +FIFTIETHS +FIFTY +FIFTYISH +FIG +FIGEATER +FIGEATERS +FIGGED +FIGGING +FIGHT +FIGHTABLE +FIGHTER +FIGHTERS +FIGHTING +FIGHTINGS +FIGHTS +FIGMENT +FIGMENTS +FIGS +FIGULINE +FIGULINES +FIGURABLE +FIGURAL +FIGURALLY +FIGURANT +FIGURANTS +FIGURATE +FIGURATION +FIGURATIONS +FIGURATIVE +FIGURATIVELY +FIGURATIVENESS +FIGURE +FIGURED +FIGUREDLY +FIGUREHEAD +FIGUREHEADS +FIGURER +FIGURERS +FIGURES +FIGURINE +FIGURINES +FIGURING +FIGWORT +FIGWORTS +FIL +FILA +FILAGREE +FILAGREED +FILAGREEING +FILAGREES +FILAMENT +FILAMENTARY +FILAMENTOUS +FILAMENTS +FILAR +FILAREE +FILAREES +FILARIA +FILARIAE +FILARIAL +FILARIAN +FILARIASES +FILARIASIS +FILARIID +FILARIIDS +FILATURE +FILATURES +FILBERT +FILBERTS +FILCH +FILCHED +FILCHER +FILCHERS +FILCHES +FILCHING +FILE +FILEABLE +FILED +FILEFISH +FILEFISHES +FILEMOT +FILENAME +FILENAMES +FILER +FILERS +FILES +FILET +FILETED +FILETING +FILETS +FILIAL +FILIALLY +FILIATE +FILIATED +FILIATES +FILIATING +FILIATION +FILIATIONS +FILIBEG +FILIBEGS +FILIBUSTER +FILIBUSTERED +FILIBUSTERER +FILIBUSTERERS +FILIBUSTERING +FILIBUSTERS +FILICIDE +FILICIDES +FILIFORM +FILIGREE +FILIGREED +FILIGREEING +FILIGREES +FILING +FILINGS +FILIOPIETISTIC +FILISTER +FILISTERS +FILL +FILLABLE +FILLAGREE +FILLAGREED +FILLAGREEING +FILLAGREES +FILLE +FILLED +FILLER +FILLERS +FILLES +FILLET +FILLETED +FILLETING +FILLETS +FILLIES +FILLING +FILLINGS +FILLIP +FILLIPED +FILLIPING +FILLIPS +FILLISTER +FILLISTERS +FILLO +FILLOS +FILLS +FILLY +FILM +FILMABLE +FILMCARD +FILMCARDS +FILMDOM +FILMDOMS +FILMED +FILMER +FILMERS +FILMGOER +FILMGOERS +FILMGOING +FILMI +FILMIC +FILMICALLY +FILMIER +FILMIEST +FILMILY +FILMINESS +FILMINESSES +FILMING +FILMIS +FILMLAND +FILMLANDS +FILMLESS +FILMLIKE +FILMMAKER +FILMMAKERS +FILMMAKING +FILMMAKINGS +FILMOGRAPHIES +FILMOGRAPHY +FILMS +FILMSET +FILMSETS +FILMSETTER +FILMSETTERS +FILMSETTING +FILMSETTINGS +FILMSTRIP +FILMSTRIPS +FILMY +FILO +FILOPLUME +FILOPLUMES +FILOPODIA +FILOPODIUM +FILOS +FILOSE +FILOVIRUS +FILOVIRUSES +FILS +FILTER +FILTERABILITIES +FILTERABILITY +FILTERABLE +FILTERED +FILTERER +FILTERERS +FILTERING +FILTERS +FILTH +FILTHIER +FILTHIEST +FILTHILY +FILTHINESS +FILTHINESSES +FILTHS +FILTHY +FILTRABLE +FILTRATE +FILTRATED +FILTRATES +FILTRATING +FILTRATION +FILTRATIONS +FILUM +FIMBLE +FIMBLES +FIMBRIA +FIMBRIAE +FIMBRIAL +FIMBRIATE +FIMBRIATED +FIMBRIATION +FIMBRIATIONS +FIN +FINABLE +FINAGLE +FINAGLED +FINAGLER +FINAGLERS +FINAGLES +FINAGLING +FINAL +FINALE +FINALES +FINALIS +FINALISE +FINALISED +FINALISES +FINALISING +FINALISM +FINALISMS +FINALIST +FINALISTS +FINALITIES +FINALITY +FINALIZATION +FINALIZATIONS +FINALIZE +FINALIZED +FINALIZER +FINALIZERS +FINALIZES +FINALIZING +FINALLY +FINALS +FINANCE +FINANCED +FINANCES +FINANCIAL +FINANCIALLY +FINANCIER +FINANCIERED +FINANCIERING +FINANCIERS +FINANCING +FINANCINGS +FINBACK +FINBACKS +FINCA +FINCAS +FINCH +FINCHES +FIND +FINDABLE +FINDER +FINDERS +FINDING +FINDINGS +FINDS +FINE +FINEABLE +FINED +FINELY +FINENESS +FINENESSES +FINER +FINERIES +FINERY +FINES +FINESPUN +FINESSE +FINESSED +FINESSES +FINESSING +FINEST +FINFISH +FINFISHES +FINFOOT +FINFOOTS +FINGER +FINGERBOARD +FINGERBOARDS +FINGERED +FINGERER +FINGERERS +FINGERHOLD +FINGERHOLDS +FINGERING +FINGERINGS +FINGERLIKE +FINGERLING +FINGERLINGS +FINGERNAIL +FINGERNAILS +FINGERPICK +FINGERPICKED +FINGERPICKING +FINGERPICKINGS +FINGERPICKS +FINGERPOST +FINGERPOSTS +FINGERPRINT +FINGERPRINTED +FINGERPRINTING +FINGERPRINTINGS +FINGERPRINTS +FINGERS +FINGERTIP +FINGERTIPS +FINIAL +FINIALED +FINIALS +FINICAL +FINICALLY +FINICALNESS +FINICALNESSES +FINICKIER +FINICKIEST +FINICKIN +FINICKINESS +FINICKINESSES +FINICKING +FINICKY +FINIKIN +FINIKING +FINING +FININGS +FINIS +FINISES +FINISH +FINISHED +FINISHER +FINISHERS +FINISHES +FINISHING +FINITE +FINITELY +FINITENESS +FINITENESSES +FINITES +FINITO +FINITUDE +FINITUDES +FINK +FINKED +FINKING +FINKS +FINLESS +FINLIKE +FINMARK +FINMARKS +FINNED +FINNICKIER +FINNICKIEST +FINNICKY +FINNIER +FINNIEST +FINNING +FINNMARK +FINNMARKS +FINNY +FINO +FINOCCHIO +FINOCCHIOS +FINOCHIO +FINOCHIOS +FINOS +FINS +FIORATURA +FIORATURAE +FIORD +FIORDS +FIORITURA +FIORITURE +FIPPLE +FIPPLES +FIQUE +FIQUES +FIR +FIRE +FIREABLE +FIREARM +FIREARMED +FIREARMS +FIREBACK +FIREBACKS +FIREBALL +FIREBALLER +FIREBALLERS +FIREBALLING +FIREBALLS +FIREBASE +FIREBASES +FIREBIRD +FIREBIRDS +FIREBOARD +FIREBOARDS +FIREBOAT +FIREBOATS +FIREBOMB +FIREBOMBED +FIREBOMBING +FIREBOMBS +FIREBOX +FIREBOXES +FIREBRAND +FIREBRANDS +FIREBRAT +FIREBRATS +FIREBREAK +FIREBREAKS +FIREBRICK +FIREBRICKS +FIREBUG +FIREBUGS +FIRECLAY +FIRECLAYS +FIRECRACKER +FIRECRACKERS +FIRED +FIREDAMP +FIREDAMPS +FIREDOG +FIREDOGS +FIREDRAKE +FIREDRAKES +FIREFANG +FIREFANGED +FIREFANGING +FIREFANGS +FIREFIGHT +FIREFIGHTER +FIREFIGHTERS +FIREFIGHTS +FIREFLIES +FIREFLOOD +FIREFLOODS +FIREFLY +FIREGUARD +FIREGUARDS +FIREHALL +FIREHALLS +FIREHOUSE +FIREHOUSES +FIRELESS +FIRELIGHT +FIRELIGHTS +FIRELIT +FIRELOCK +FIRELOCKS +FIREMAN +FIREMANIC +FIREMEN +FIREPAN +FIREPANS +FIREPINK +FIREPINKS +FIREPLACE +FIREPLACED +FIREPLACES +FIREPLUG +FIREPLUGS +FIREPOT +FIREPOTS +FIREPOWER +FIREPOWERS +FIREPROOF +FIREPROOFED +FIREPROOFING +FIREPROOFS +FIRER +FIREROOM +FIREROOMS +FIRERS +FIRES +FIRESHIP +FIRESHIPS +FIRESIDE +FIRESIDES +FIRESTONE +FIRESTONES +FIRESTORM +FIRESTORMS +FIRETHORN +FIRETHORNS +FIRETRAP +FIRETRAPS +FIRETRUCK +FIRETRUCKS +FIREWALL +FIREWALLS +FIREWATER +FIREWATERS +FIREWEED +FIREWEEDS +FIREWOOD +FIREWOODS +FIREWORK +FIREWORKS +FIREWORM +FIREWORMS +FIRING +FIRINGS +FIRKIN +FIRKINS +FIRM +FIRMAMENT +FIRMAMENTAL +FIRMAMENTS +FIRMAN +FIRMANS +FIRMED +FIRMER +FIRMERS +FIRMEST +FIRMING +FIRMLY +FIRMNESS +FIRMNESSES +FIRMS +FIRMWARE +FIRMWARES +FIRN +FIRNS +FIRRIER +FIRRIEST +FIRRY +FIRS +FIRST +FIRSTBORN +FIRSTBORNS +FIRSTFRUITS +FIRSTHAND +FIRSTLING +FIRSTLINGS +FIRSTLY +FIRSTNESS +FIRSTNESSES +FIRSTS +FIRTH +FIRTHS +FISC +FISCAL +FISCALIST +FISCALISTS +FISCALLY +FISCALS +FISCS +FISH +FISHABILITIES +FISHABILITY +FISHABLE +FISHBOLT +FISHBOLTS +FISHBONE +FISHBONES +FISHBOWL +FISHBOWLS +FISHED +FISHER +FISHERFOLK +FISHERIES +FISHERMAN +FISHERMEN +FISHERS +FISHERWOMAN +FISHERWOMEN +FISHERY +FISHES +FISHEYE +FISHEYES +FISHGIG +FISHGIGS +FISHHOOK +FISHHOOKS +FISHIER +FISHIEST +FISHILY +FISHINESS +FISHINESSES +FISHING +FISHINGS +FISHKILL +FISHKILLS +FISHLESS +FISHLIKE +FISHLINE +FISHLINES +FISHMEAL +FISHMEALS +FISHMONGER +FISHMONGERS +FISHNET +FISHNETS +FISHPLATE +FISHPLATES +FISHPOLE +FISHPOLES +FISHPOND +FISHPONDS +FISHTAIL +FISHTAILED +FISHTAILING +FISHTAILS +FISHWAY +FISHWAYS +FISHWIFE +FISHWIVES +FISHWORM +FISHWORMS +FISHY +FISSATE +FISSILE +FISSILITIES +FISSILITY +FISSION +FISSIONABILITY +FISSIONABLE +FISSIONABLES +FISSIONAL +FISSIONED +FISSIONING +FISSIONS +FISSIPAROUS +FISSIPAROUSNESS +FISSIPED +FISSIPEDS +FISSURAL +FISSURE +FISSURED +FISSURES +FISSURING +FIST +FISTED +FISTFIGHT +FISTFIGHTS +FISTFUL +FISTFULS +FISTIC +FISTICUFF +FISTICUFFS +FISTING +FISTNOTE +FISTNOTES +FISTS +FISTULA +FISTULAE +FISTULAR +FISTULAS +FISTULATE +FISTULOUS +FIT +FITCH +FITCHEE +FITCHES +FITCHET +FITCHETS +FITCHEW +FITCHEWS +FITCHY +FITFUL +FITFULLY +FITFULNESS +FITFULNESSES +FITLY +FITMENT +FITMENTS +FITNESS +FITNESSES +FITS +FITTABLE +FITTED +FITTER +FITTERS +FITTEST +FITTING +FITTINGLY +FITTINGNESS +FITTINGNESSES +FITTINGS +FIVE +FIVEFOLD +FIVEPINS +FIVER +FIVERS +FIVES +FIX +FIXABLE +FIXATE +FIXATED +FIXATES +FIXATIF +FIXATIFS +FIXATING +FIXATION +FIXATIONS +FIXATIVE +FIXATIVES +FIXED +FIXEDLY +FIXEDNESS +FIXEDNESSES +FIXER +FIXERS +FIXES +FIXING +FIXINGS +FIXIT +FIXITIES +FIXITY +FIXT +FIXTURE +FIXTURES +FIXURE +FIXURES +FIZ +FIZGIG +FIZGIGS +FIZZ +FIZZED +FIZZER +FIZZERS +FIZZES +FIZZIER +FIZZIEST +FIZZING +FIZZLE +FIZZLED +FIZZLES +FIZZLING +FIZZY +FJELD +FJELDS +FJORD +FJORDIC +FJORDS +FLAB +FLABBERGAST +FLABBERGASTED +FLABBERGASTING +FLABBERGASTS +FLABBIER +FLABBIEST +FLABBILY +FLABBINESS +FLABBINESSES +FLABBY +FLABELLA +FLABELLATE +FLABELLIFORM +FLABELLUM +FLABS +FLACCID +FLACCIDITIES +FLACCIDITY +FLACCIDLY +FLACK +FLACKED +FLACKERIES +FLACKERY +FLACKING +FLACKS +FLACON +FLACONS +FLAG +FLAGELLA +FLAGELLANT +FLAGELLANTISM +FLAGELLANTISMS +FLAGELLANTS +FLAGELLAR +FLAGELLATE +FLAGELLATED +FLAGELLATES +FLAGELLATING +FLAGELLATION +FLAGELLATIONS +FLAGELLIN +FLAGELLINS +FLAGELLUM +FLAGELLUMS +FLAGEOLET +FLAGEOLETS +FLAGGED +FLAGGER +FLAGGERS +FLAGGIER +FLAGGIEST +FLAGGING +FLAGGINGLY +FLAGGINGS +FLAGGY +FLAGITIOUS +FLAGITIOUSLY +FLAGITIOUSNESS +FLAGLESS +FLAGMAN +FLAGMEN +FLAGON +FLAGONS +FLAGPOLE +FLAGPOLES +FLAGRANCE +FLAGRANCES +FLAGRANCIES +FLAGRANCY +FLAGRANT +FLAGRANTLY +FLAGS +FLAGSHIP +FLAGSHIPS +FLAGSTAFF +FLAGSTAFFS +FLAGSTAVES +FLAGSTICK +FLAGSTICKS +FLAGSTONE +FLAGSTONES +FLAIL +FLAILED +FLAILING +FLAILS +FLAIR +FLAIRS +FLAK +FLAKE +FLAKED +FLAKER +FLAKERS +FLAKES +FLAKEY +FLAKIER +FLAKIEST +FLAKILY +FLAKINESS +FLAKINESSES +FLAKING +FLAKY +FLAM +FLAMBE +FLAMBEAU +FLAMBEAUS +FLAMBEAUX +FLAMBEE +FLAMBEED +FLAMBEING +FLAMBES +FLAMBOYANCE +FLAMBOYANCES +FLAMBOYANCIES +FLAMBOYANCY +FLAMBOYANT +FLAMBOYANTLY +FLAMBOYANTS +FLAME +FLAMED +FLAMELESS +FLAMELIKE +FLAMEN +FLAMENCO +FLAMENCOS +FLAMENS +FLAMEOUT +FLAMEOUTS +FLAMEPROOF +FLAMEPROOFED +FLAMEPROOFER +FLAMEPROOFERS +FLAMEPROOFING +FLAMEPROOFS +FLAMER +FLAMERS +FLAMES +FLAMETHROWER +FLAMETHROWERS +FLAMIER +FLAMIEST +FLAMINES +FLAMING +FLAMINGLY +FLAMINGO +FLAMINGOES +FLAMINGOS +FLAMMABILITIES +FLAMMABILITY +FLAMMABLE +FLAMMABLES +FLAMMED +FLAMMING +FLAMS +FLAMY +FLAN +FLANCARD +FLANCARDS +FLANERIE +FLANERIES +FLANES +FLANEUR +FLANEURS +FLANGE +FLANGED +FLANGER +FLANGERS +FLANGES +FLANGING +FLANK +FLANKED +FLANKEN +FLANKER +FLANKERS +FLANKING +FLANKS +FLANNEL +FLANNELED +FLANNELET +FLANNELETS +FLANNELETTE +FLANNELETTES +FLANNELING +FLANNELLED +FLANNELLING +FLANNELLY +FLANNELMOUTHED +FLANNELS +FLANS +FLAP +FLAPDOODLE +FLAPDOODLES +FLAPERON +FLAPERONS +FLAPJACK +FLAPJACKS +FLAPLESS +FLAPPABLE +FLAPPED +FLAPPER +FLAPPERS +FLAPPIER +FLAPPIEST +FLAPPING +FLAPPY +FLAPS +FLARE +FLAREBACK +FLAREBACKS +FLARED +FLARES +FLAREUP +FLAREUPS +FLARING +FLARINGLY +FLASH +FLASHBACK +FLASHBACKS +FLASHBOARD +FLASHBOARDS +FLASHBULB +FLASHBULBS +FLASHCARD +FLASHCARDS +FLASHCUBE +FLASHCUBES +FLASHED +FLASHER +FLASHERS +FLASHES +FLASHGUN +FLASHGUNS +FLASHIER +FLASHIEST +FLASHILY +FLASHINESS +FLASHINESSES +FLASHING +FLASHINGS +FLASHLAMP +FLASHLAMPS +FLASHLIGHT +FLASHLIGHTS +FLASHOVER +FLASHOVERS +FLASHTUBE +FLASHTUBES +FLASHY +FLASK +FLASKET +FLASKETS +FLASKS +FLAT +FLATBED +FLATBEDS +FLATBOAT +FLATBOATS +FLATBREAD +FLATBREADS +FLATCAP +FLATCAPS +FLATCAR +FLATCARS +FLATFEET +FLATFISH +FLATFISHES +FLATFOOT +FLATFOOTED +FLATFOOTING +FLATFOOTS +FLATHEAD +FLATHEADS +FLATIRON +FLATIRONS +FLATLAND +FLATLANDER +FLATLANDERS +FLATLANDS +FLATLET +FLATLETS +FLATLINE +FLATLINED +FLATLINER +FLATLINERS +FLATLINES +FLATLING +FLATLINGS +FLATLINING +FLATLONG +FLATLY +FLATMATE +FLATMATES +FLATNESS +FLATNESSES +FLATS +FLATTED +FLATTEN +FLATTENED +FLATTENER +FLATTENERS +FLATTENING +FLATTENS +FLATTER +FLATTERED +FLATTERER +FLATTERERS +FLATTERIES +FLATTERING +FLATTERINGLY +FLATTERS +FLATTERY +FLATTEST +FLATTING +FLATTISH +FLATTOP +FLATTOPS +FLATULENCE +FLATULENCES +FLATULENCIES +FLATULENCY +FLATULENT +FLATULENTLY +FLATUS +FLATUSES +FLATWARE +FLATWARES +FLATWASH +FLATWASHES +FLATWAYS +FLATWISE +FLATWORK +FLATWORKS +FLATWORM +FLATWORMS +FLAUNT +FLAUNTED +FLAUNTER +FLAUNTERS +FLAUNTIER +FLAUNTIEST +FLAUNTILY +FLAUNTING +FLAUNTINGLY +FLAUNTS +FLAUNTY +FLAUTA +FLAUTAS +FLAUTIST +FLAUTISTS +FLAVANOL +FLAVANOLS +FLAVANONE +FLAVANONES +FLAVIN +FLAVINE +FLAVINES +FLAVINS +FLAVONE +FLAVONES +FLAVONOID +FLAVONOIDS +FLAVONOL +FLAVONOLS +FLAVOPROTEIN +FLAVOPROTEINS +FLAVOR +FLAVORED +FLAVORER +FLAVORERS +FLAVORFUL +FLAVORFULLY +FLAVORING +FLAVORINGS +FLAVORIST +FLAVORISTS +FLAVORLESS +FLAVOROUS +FLAVORS +FLAVORSOME +FLAVORY +FLAVOUR +FLAVOURED +FLAVOURING +FLAVOURS +FLAVOURY +FLAW +FLAWED +FLAWIER +FLAWIEST +FLAWING +FLAWLESS +FLAWLESSLY +FLAWLESSNESS +FLAWLESSNESSES +FLAWS +FLAWY +FLAX +FLAXEN +FLAXES +FLAXIER +FLAXIEST +FLAXSEED +FLAXSEEDS +FLAXY +FLAY +FLAYED +FLAYER +FLAYERS +FLAYING +FLAYS +FLEA +FLEABAG +FLEABAGS +FLEABANE +FLEABANES +FLEABITE +FLEABITES +FLEAHOPPER +FLEAHOPPERS +FLEAM +FLEAMS +FLEAPIT +FLEAPITS +FLEAS +FLEAWORT +FLEAWORTS +FLECHE +FLECHES +FLECHETTE +FLECHETTES +FLECK +FLECKED +FLECKING +FLECKLESS +FLECKS +FLECKY +FLECTION +FLECTIONS +FLED +FLEDGE +FLEDGED +FLEDGES +FLEDGIER +FLEDGIEST +FLEDGING +FLEDGLING +FLEDGLINGS +FLEDGY +FLEE +FLEECE +FLEECED +FLEECER +FLEECERS +FLEECES +FLEECH +FLEECHED +FLEECHES +FLEECHING +FLEECIER +FLEECIEST +FLEECILY +FLEECING +FLEECY +FLEEING +FLEER +FLEERED +FLEERING +FLEERINGLY +FLEERS +FLEES +FLEET +FLEETED +FLEETER +FLEETEST +FLEETING +FLEETINGLY +FLEETINGNESS +FLEETINGNESSES +FLEETLY +FLEETNESS +FLEETNESSES +FLEETS +FLEHMEN +FLEHMENED +FLEHMENING +FLEHMENS +FLEISHIG +FLEMISH +FLEMISHED +FLEMISHES +FLEMISHING +FLENCH +FLENCHED +FLENCHES +FLENCHING +FLENSE +FLENSED +FLENSER +FLENSERS +FLENSES +FLENSING +FLESH +FLESHED +FLESHER +FLESHERS +FLESHES +FLESHIER +FLESHIEST +FLESHILY +FLESHINESS +FLESHINESSES +FLESHING +FLESHINGS +FLESHLESS +FLESHLIER +FLESHLIEST +FLESHLY +FLESHMENT +FLESHMENTS +FLESHPOT +FLESHPOTS +FLESHY +FLETCH +FLETCHED +FLETCHER +FLETCHERS +FLETCHES +FLETCHING +FLETCHINGS +FLEURON +FLEURONS +FLEURY +FLEW +FLEWS +FLEX +FLEXAGON +FLEXAGONS +FLEXED +FLEXES +FLEXIBILITIES +FLEXIBILITY +FLEXIBLE +FLEXIBLY +FLEXILE +FLEXING +FLEXION +FLEXIONAL +FLEXIONS +FLEXITIME +FLEXITIMES +FLEXOGRAPHIC +FLEXOGRAPHIES +FLEXOGRAPHY +FLEXOR +FLEXORS +FLEXTIME +FLEXTIMER +FLEXTIMERS +FLEXTIMES +FLEXUOSE +FLEXUOUS +FLEXURAL +FLEXURE +FLEXURES +FLEY +FLEYED +FLEYING +FLEYS +FLIBBERTIGIBBET +FLIC +FLICHTER +FLICHTERED +FLICHTERING +FLICHTERS +FLICK +FLICKABLE +FLICKED +FLICKER +FLICKERED +FLICKERING +FLICKERINGLY +FLICKERS +FLICKERY +FLICKING +FLICKS +FLICS +FLIED +FLIER +FLIERS +FLIES +FLIEST +FLIGHT +FLIGHTED +FLIGHTIER +FLIGHTIEST +FLIGHTILY +FLIGHTINESS +FLIGHTINESSES +FLIGHTING +FLIGHTLESS +FLIGHTS +FLIGHTY +FLIMFLAM +FLIMFLAMMED +FLIMFLAMMER +FLIMFLAMMERIES +FLIMFLAMMERS +FLIMFLAMMERY +FLIMFLAMMING +FLIMFLAMS +FLIMSIER +FLIMSIES +FLIMSIEST +FLIMSILY +FLIMSINESS +FLIMSINESSES +FLIMSY +FLINCH +FLINCHED +FLINCHER +FLINCHERS +FLINCHES +FLINCHING +FLINDER +FLINDERS +FLING +FLINGER +FLINGERS +FLINGING +FLINGS +FLINKITE +FLINKITES +FLINT +FLINTED +FLINTHEAD +FLINTHEADS +FLINTIER +FLINTIEST +FLINTILY +FLINTINESS +FLINTINESSES +FLINTING +FLINTLIKE +FLINTLOCK +FLINTLOCKS +FLINTS +FLINTY +FLIP +FLIPBOOK +FLIPBOOKS +FLIPFLOP +FLIPFLOPPED +FLIPFLOPPING +FLIPFLOPS +FLIPPANCIES +FLIPPANCY +FLIPPANT +FLIPPANTLY +FLIPPED +FLIPPER +FLIPPERS +FLIPPEST +FLIPPING +FLIPPY +FLIPS +FLIR +FLIRS +FLIRT +FLIRTATION +FLIRTATIONS +FLIRTATIOUS +FLIRTATIOUSLY +FLIRTATIOUSNESS +FLIRTED +FLIRTER +FLIRTERS +FLIRTIER +FLIRTIEST +FLIRTING +FLIRTS +FLIRTY +FLIT +FLITCH +FLITCHED +FLITCHES +FLITCHING +FLITE +FLITED +FLITES +FLITING +FLITS +FLITTED +FLITTER +FLITTERED +FLITTERING +FLITTERS +FLITTING +FLIVVER +FLIVVERS +FLOAT +FLOATABLE +FLOATAGE +FLOATAGES +FLOATATION +FLOATATIONS +FLOATED +FLOATEL +FLOATELS +FLOATER +FLOATERS +FLOATIER +FLOATIEST +FLOATING +FLOATPLANE +FLOATPLANES +FLOATS +FLOATY +FLOC +FLOCCED +FLOCCI +FLOCCING +FLOCCOSE +FLOCCULANT +FLOCCULANTS +FLOCCULATE +FLOCCULATED +FLOCCULATES +FLOCCULATING +FLOCCULATION +FLOCCULATIONS +FLOCCULATOR +FLOCCULATORS +FLOCCULE +FLOCCULENT +FLOCCULES +FLOCCULI +FLOCCULUS +FLOCCUS +FLOCK +FLOCKED +FLOCKIER +FLOCKIEST +FLOCKING +FLOCKINGS +FLOCKLESS +FLOCKS +FLOCKY +FLOCS +FLOE +FLOES +FLOG +FLOGGABLE +FLOGGED +FLOGGER +FLOGGERS +FLOGGING +FLOGGINGS +FLOGS +FLOKATI +FLOKATIS +FLONG +FLONGS +FLOOD +FLOODABLE +FLOODED +FLOODER +FLOODERS +FLOODGATE +FLOODGATES +FLOODING +FLOODLIGHT +FLOODLIGHTED +FLOODLIGHTING +FLOODLIGHTS +FLOODLIT +FLOODPLAIN +FLOODPLAINS +FLOODS +FLOODTIDE +FLOODTIDES +FLOODWALL +FLOODWALLS +FLOODWATER +FLOODWATERS +FLOODWAY +FLOODWAYS +FLOOEY +FLOOIE +FLOOR +FLOORAGE +FLOORAGES +FLOORBOARD +FLOORBOARDS +FLOORCLOTH +FLOORCLOTHS +FLOORED +FLOORER +FLOORERS +FLOORING +FLOORINGS +FLOORLESS +FLOORS +FLOORSHOW +FLOORSHOWS +FLOORWALKER +FLOORWALKERS +FLOOSIE +FLOOSIES +FLOOSY +FLOOZIE +FLOOZIES +FLOOZY +FLOP +FLOPHOUSE +FLOPHOUSES +FLOPOVER +FLOPOVERS +FLOPPED +FLOPPER +FLOPPERS +FLOPPIER +FLOPPIES +FLOPPIEST +FLOPPILY +FLOPPINESS +FLOPPINESSES +FLOPPING +FLOPPY +FLOPS +FLORA +FLORAE +FLORAL +FLORALLY +FLORALS +FLORAS +FLOREATED +FLORENCE +FLORENCES +FLORESCENCE +FLORESCENCES +FLORESCENT +FLORET +FLORETS +FLORIATED +FLORIATION +FLORIATIONS +FLORIBUNDA +FLORIBUNDAS +FLORICANE +FLORICANES +FLORICULTURAL +FLORICULTURE +FLORICULTURES +FLORICULTURIST +FLORICULTURISTS +FLORID +FLORIDITIES +FLORIDITY +FLORIDLY +FLORIDNESS +FLORIDNESSES +FLORIFEROUS +FLORIFEROUSNESS +FLORIGEN +FLORIGENIC +FLORIGENS +FLORILEGIA +FLORILEGIUM +FLORIN +FLORINS +FLORIST +FLORISTIC +FLORISTICALLY +FLORISTRIES +FLORISTRY +FLORISTS +FLORUIT +FLORUITS +FLOSS +FLOSSED +FLOSSER +FLOSSERS +FLOSSES +FLOSSIE +FLOSSIER +FLOSSIES +FLOSSIEST +FLOSSILY +FLOSSING +FLOSSY +FLOTA +FLOTAGE +FLOTAGES +FLOTAS +FLOTATION +FLOTATIONS +FLOTILLA +FLOTILLAS +FLOTSAM +FLOTSAMS +FLOUNCE +FLOUNCED +FLOUNCES +FLOUNCIER +FLOUNCIEST +FLOUNCING +FLOUNCINGS +FLOUNCY +FLOUNDER +FLOUNDERED +FLOUNDERING +FLOUNDERS +FLOUR +FLOURED +FLOURING +FLOURISH +FLOURISHED +FLOURISHER +FLOURISHERS +FLOURISHES +FLOURISHING +FLOURISHINGLY +FLOURLESS +FLOURS +FLOURY +FLOUT +FLOUTED +FLOUTER +FLOUTERS +FLOUTING +FLOUTS +FLOW +FLOWAGE +FLOWAGES +FLOWCHART +FLOWCHARTING +FLOWCHARTINGS +FLOWCHARTS +FLOWED +FLOWER +FLOWERAGE +FLOWERAGES +FLOWERED +FLOWERER +FLOWERERS +FLOWERET +FLOWERETS +FLOWERETTE +FLOWERETTES +FLOWERFUL +FLOWERIER +FLOWERIEST +FLOWERILY +FLOWERINESS +FLOWERINESSES +FLOWERING +FLOWERLESS +FLOWERLIKE +FLOWERPOT +FLOWERPOTS +FLOWERS +FLOWERY +FLOWING +FLOWINGLY +FLOWMETER +FLOWMETERS +FLOWN +FLOWS +FLOWSTONE +FLOWSTONES +FLU +FLUB +FLUBBED +FLUBBER +FLUBBERS +FLUBBING +FLUBDUB +FLUBDUBS +FLUBS +FLUCTUANT +FLUCTUATE +FLUCTUATED +FLUCTUATES +FLUCTUATING +FLUCTUATION +FLUCTUATIONAL +FLUCTUATIONS +FLUE +FLUED +FLUEGELHORN +FLUEGELHORNS +FLUENCIES +FLUENCY +FLUENT +FLUENTLY +FLUERIC +FLUERICS +FLUES +FLUFF +FLUFFED +FLUFFER +FLUFFERS +FLUFFIER +FLUFFIEST +FLUFFILY +FLUFFINESS +FLUFFINESSES +FLUFFING +FLUFFS +FLUFFY +FLUGELHORN +FLUGELHORNIST +FLUGELHORNISTS +FLUGELHORNS +FLUID +FLUIDAL +FLUIDALLY +FLUIDEXTRACT +FLUIDEXTRACTS +FLUIDIC +FLUIDICS +FLUIDISE +FLUIDISED +FLUIDISES +FLUIDISING +FLUIDITIES +FLUIDITY +FLUIDIZATION +FLUIDIZATIONS +FLUIDIZE +FLUIDIZED +FLUIDIZER +FLUIDIZERS +FLUIDIZES +FLUIDIZING +FLUIDLIKE +FLUIDLY +FLUIDNESS +FLUIDNESSES +FLUIDRAM +FLUIDRAMS +FLUIDS +FLUISH +FLUKE +FLUKED +FLUKES +FLUKEY +FLUKIER +FLUKIEST +FLUKILY +FLUKINESS +FLUKINESSES +FLUKING +FLUKY +FLUME +FLUMED +FLUMES +FLUMING +FLUMMERIES +FLUMMERY +FLUMMOX +FLUMMOXED +FLUMMOXES +FLUMMOXING +FLUMP +FLUMPED +FLUMPING +FLUMPS +FLUNG +FLUNK +FLUNKED +FLUNKER +FLUNKERS +FLUNKEY +FLUNKEYS +FLUNKIE +FLUNKIES +FLUNKING +FLUNKS +FLUNKY +FLUNKYISM +FLUNKYISMS +FLUOR +FLUORENE +FLUORENES +FLUORESCE +FLUORESCED +FLUORESCEIN +FLUORESCEINS +FLUORESCENCE +FLUORESCENCES +FLUORESCENT +FLUORESCENTS +FLUORESCER +FLUORESCERS +FLUORESCES +FLUORESCING +FLUORIC +FLUORID +FLUORIDATE +FLUORIDATED +FLUORIDATES +FLUORIDATING +FLUORIDATION +FLUORIDATIONS +FLUORIDE +FLUORIDES +FLUORIDS +FLUORIMETER +FLUORIMETERS +FLUORIMETRIC +FLUORIMETRIES +FLUORIMETRY +FLUORIN +FLUORINATE +FLUORINATED +FLUORINATES +FLUORINATING +FLUORINATION +FLUORINATIONS +FLUORINE +FLUORINES +FLUORINS +FLUORITE +FLUORITES +FLUOROCARBON +FLUOROCARBONS +FLUOROCHROME +FLUOROCHROMES +FLUOROGRAPHIC +FLUOROGRAPHIES +FLUOROGRAPHY +FLUOROMETER +FLUOROMETERS +FLUOROMETRIC +FLUOROMETRIES +FLUOROMETRY +FLUOROSCOPE +FLUOROSCOPED +FLUOROSCOPES +FLUOROSCOPIC +FLUOROSCOPIES +FLUOROSCOPING +FLUOROSCOPIST +FLUOROSCOPISTS +FLUOROSCOPY +FLUOROSES +FLUOROSIS +FLUOROTIC +FLUOROURACIL +FLUOROURACILS +FLUORS +FLUORSPAR +FLUORSPARS +FLUOXETINE +FLUOXETINES +FLUPHENAZINE +FLUPHENAZINES +FLURRIED +FLURRIES +FLURRY +FLURRYING +FLUS +FLUSH +FLUSHABLE +FLUSHED +FLUSHER +FLUSHERS +FLUSHES +FLUSHEST +FLUSHING +FLUSHNESS +FLUSHNESSES +FLUSTER +FLUSTERED +FLUSTEREDLY +FLUSTERING +FLUSTERS +FLUTE +FLUTED +FLUTELIKE +FLUTER +FLUTERS +FLUTES +FLUTEY +FLUTIER +FLUTIEST +FLUTING +FLUTINGS +FLUTIST +FLUTISTS +FLUTTER +FLUTTERBOARD +FLUTTERBOARDS +FLUTTERED +FLUTTERER +FLUTTERERS +FLUTTERING +FLUTTERS +FLUTTERY +FLUTY +FLUVIAL +FLUVIATILE +FLUX +FLUXED +FLUXES +FLUXGATE +FLUXGATES +FLUXING +FLUXION +FLUXIONAL +FLUXIONS +FLUYT +FLUYTS +FLY +FLYABLE +FLYAWAY +FLYAWAYS +FLYBELT +FLYBELTS +FLYBLEW +FLYBLOW +FLYBLOWING +FLYBLOWN +FLYBLOWS +FLYBOAT +FLYBOATS +FLYBOY +FLYBOYS +FLYBRIDGE +FLYBRIDGES +FLYBY +FLYBYS +FLYCATCHER +FLYCATCHERS +FLYER +FLYERS +FLYING +FLYINGS +FLYLEAF +FLYLEAVES +FLYLESS +FLYMAN +FLYMEN +FLYOFF +FLYOFFS +FLYOVER +FLYOVERS +FLYPAPER +FLYPAPERS +FLYPAST +FLYPASTS +FLYRODDER +FLYRODDERS +FLYSCH +FLYSCHES +FLYSHEET +FLYSHEETS +FLYSPECK +FLYSPECKED +FLYSPECKING +FLYSPECKS +FLYSWATTER +FLYSWATTERS +FLYTE +FLYTED +FLYTES +FLYTIER +FLYTIERS +FLYTING +FLYTINGS +FLYTRAP +FLYTRAPS +FLYWAY +FLYWAYS +FLYWEIGHT +FLYWEIGHTS +FLYWHEEL +FLYWHEELS +FOAL +FOALED +FOALING +FOALS +FOAM +FOAMABLE +FOAMED +FOAMER +FOAMERS +FOAMFLOWER +FOAMFLOWERS +FOAMIER +FOAMIEST +FOAMILY +FOAMINESS +FOAMINESSES +FOAMING +FOAMLESS +FOAMLIKE +FOAMS +FOAMY +FOB +FOBBED +FOBBING +FOBS +FOCACCIA +FOCACCIAS +FOCAL +FOCALISE +FOCALISED +FOCALISES +FOCALISING +FOCALIZATION +FOCALIZATIONS +FOCALIZE +FOCALIZED +FOCALIZES +FOCALIZING +FOCALLY +FOCI +FOCUS +FOCUSABLE +FOCUSED +FOCUSER +FOCUSERS +FOCUSES +FOCUSING +FOCUSLESS +FOCUSSED +FOCUSSES +FOCUSSING +FODDER +FODDERED +FODDERING +FODDERS +FODGEL +FOE +FOEHN +FOEHNS +FOEMAN +FOEMEN +FOES +FOETAL +FOETID +FOETOR +FOETORS +FOETUS +FOETUSES +FOG +FOGBOUND +FOGBOW +FOGBOWS +FOGDOG +FOGDOGS +FOGEY +FOGEYISH +FOGEYISM +FOGEYISMS +FOGEYS +FOGFRUIT +FOGFRUITS +FOGGAGE +FOGGAGES +FOGGED +FOGGER +FOGGERS +FOGGIER +FOGGIEST +FOGGILY +FOGGINESS +FOGGINESSES +FOGGING +FOGGY +FOGHORN +FOGHORNS +FOGIE +FOGIES +FOGLESS +FOGS +FOGY +FOGYISH +FOGYISM +FOGYISMS +FOH +FOHN +FOHNS +FOIBLE +FOIBLES +FOIL +FOILABLE +FOILED +FOILING +FOILS +FOILSMAN +FOILSMEN +FOIN +FOINED +FOINING +FOINS +FOISON +FOISONS +FOIST +FOISTED +FOISTING +FOISTS +FOLACIN +FOLACINS +FOLATE +FOLATES +FOLD +FOLDABLE +FOLDAWAY +FOLDAWAYS +FOLDBOAT +FOLDBOATS +FOLDED +FOLDER +FOLDEROL +FOLDEROLS +FOLDERS +FOLDING +FOLDOUT +FOLDOUTS +FOLDS +FOLDUP +FOLDUPS +FOLEY +FOLEYS +FOLIA +FOLIACEOUS +FOLIAGE +FOLIAGED +FOLIAGES +FOLIAR +FOLIATE +FOLIATED +FOLIATES +FOLIATING +FOLIATION +FOLIATIONS +FOLIC +FOLIO +FOLIOED +FOLIOING +FOLIOLATE +FOLIOS +FOLIOSE +FOLIOUS +FOLIUM +FOLIUMS +FOLK +FOLKIE +FOLKIER +FOLKIES +FOLKIEST +FOLKISH +FOLKISHNESS +FOLKISHNESSES +FOLKLIFE +FOLKLIKE +FOLKLIVES +FOLKLORE +FOLKLORES +FOLKLORIC +FOLKLORISH +FOLKLORIST +FOLKLORISTIC +FOLKLORISTS +FOLKMOOT +FOLKMOOTS +FOLKMOT +FOLKMOTE +FOLKMOTES +FOLKMOTS +FOLKS +FOLKSIER +FOLKSIEST +FOLKSILY +FOLKSINESS +FOLKSINESSES +FOLKSINGER +FOLKSINGERS +FOLKSINGING +FOLKSINGINGS +FOLKSONG +FOLKSONGS +FOLKSY +FOLKTALE +FOLKTALES +FOLKWAY +FOLKWAYS +FOLKY +FOLLES +FOLLICLE +FOLLICLES +FOLLICULAR +FOLLICULITIS +FOLLICULITISES +FOLLIES +FOLLIS +FOLLOW +FOLLOWED +FOLLOWER +FOLLOWERS +FOLLOWERSHIP +FOLLOWERSHIPS +FOLLOWING +FOLLOWINGS +FOLLOWS +FOLLOWUP +FOLLOWUPS +FOLLY +FOMENT +FOMENTATION +FOMENTATIONS +FOMENTED +FOMENTER +FOMENTERS +FOMENTING +FOMENTS +FOMITE +FOMITES +FON +FOND +FONDANT +FONDANTS +FONDED +FONDER +FONDEST +FONDING +FONDLE +FONDLED +FONDLER +FONDLERS +FONDLES +FONDLING +FONDLINGS +FONDLY +FONDNESS +FONDNESSES +FONDS +FONDU +FONDUE +FONDUED +FONDUEING +FONDUES +FONDUING +FONDUS +FONS +FONT +FONTAL +FONTANEL +FONTANELLE +FONTANELLES +FONTANELS +FONTINA +FONTINAS +FONTS +FOOD +FOODIE +FOODIES +FOODLESS +FOODLESSNESS +FOODLESSNESSES +FOODS +FOODSTUFF +FOODSTUFFS +FOODWAYS +FOOFARAW +FOOFARAWS +FOOL +FOOLED +FOOLERIES +FOOLERY +FOOLFISH +FOOLFISHES +FOOLHARDIER +FOOLHARDIEST +FOOLHARDILY +FOOLHARDINESS +FOOLHARDINESSES +FOOLHARDY +FOOLING +FOOLISH +FOOLISHER +FOOLISHEST +FOOLISHLY +FOOLISHNESS +FOOLISHNESSES +FOOLPROOF +FOOLS +FOOLSCAP +FOOLSCAPS +FOOSBALL +FOOSBALLS +FOOT +FOOTAGE +FOOTAGES +FOOTBAG +FOOTBAGS +FOOTBALL +FOOTBALLER +FOOTBALLERS +FOOTBALLS +FOOTBATH +FOOTBATHS +FOOTBOARD +FOOTBOARDS +FOOTBOY +FOOTBOYS +FOOTBRIDGE +FOOTBRIDGES +FOOTCLOTH +FOOTCLOTHS +FOOTDRAGGER +FOOTDRAGGERS +FOOTED +FOOTER +FOOTERS +FOOTFALL +FOOTFALLS +FOOTFAULT +FOOTFAULTED +FOOTFAULTING +FOOTFAULTS +FOOTGEAR +FOOTGEARS +FOOTHILL +FOOTHILLS +FOOTHOLD +FOOTHOLDS +FOOTIE +FOOTIER +FOOTIES +FOOTIEST +FOOTING +FOOTINGS +FOOTLAMBERT +FOOTLAMBERTS +FOOTLE +FOOTLED +FOOTLER +FOOTLERS +FOOTLES +FOOTLESS +FOOTLESSLY +FOOTLESSNESS +FOOTLESSNESSES +FOOTLIGHT +FOOTLIGHTS +FOOTLIKE +FOOTLING +FOOTLOCKER +FOOTLOCKERS +FOOTLOOSE +FOOTMAN +FOOTMARK +FOOTMARKS +FOOTMEN +FOOTNOTE +FOOTNOTED +FOOTNOTES +FOOTNOTING +FOOTPACE +FOOTPACES +FOOTPAD +FOOTPADS +FOOTPATH +FOOTPATHS +FOOTPRINT +FOOTPRINTS +FOOTRACE +FOOTRACES +FOOTREST +FOOTRESTS +FOOTROPE +FOOTROPES +FOOTS +FOOTSIE +FOOTSIES +FOOTSLOG +FOOTSLOGGED +FOOTSLOGGER +FOOTSLOGGERS +FOOTSLOGGING +FOOTSLOGS +FOOTSORE +FOOTSORENESS +FOOTSORENESSES +FOOTSTALK +FOOTSTALKS +FOOTSTALL +FOOTSTALLS +FOOTSTEP +FOOTSTEPS +FOOTSTOCK +FOOTSTOCKS +FOOTSTONE +FOOTSTONES +FOOTSTOOL +FOOTSTOOLS +FOOTSY +FOOTWALL +FOOTWALLS +FOOTWAY +FOOTWAYS +FOOTWEAR +FOOTWORK +FOOTWORKS +FOOTWORN +FOOTY +FOOZLE +FOOZLED +FOOZLER +FOOZLERS +FOOZLES +FOOZLING +FOP +FOPPED +FOPPERIES +FOPPERY +FOPPING +FOPPISH +FOPPISHLY +FOPPISHNESS +FOPPISHNESSES +FOPS +FOR +FORA +FORAGE +FORAGED +FORAGER +FORAGERS +FORAGES +FORAGING +FORAM +FORAMEN +FORAMENS +FORAMINA +FORAMINAL +FORAMINIFER +FORAMINIFERA +FORAMINIFERAL +FORAMINIFERAN +FORAMINIFERANS +FORAMINIFERS +FORAMINOUS +FORAMS +FORASMUCH +FORAY +FORAYED +FORAYER +FORAYERS +FORAYING +FORAYS +FORB +FORBAD +FORBADE +FORBARE +FORBEAR +FORBEARANCE +FORBEARANCES +FORBEARER +FORBEARERS +FORBEARING +FORBEARS +FORBID +FORBIDAL +FORBIDALS +FORBIDDANCE +FORBIDDANCES +FORBIDDEN +FORBIDDER +FORBIDDERS +FORBIDDING +FORBIDDINGLY +FORBIDS +FORBODE +FORBODED +FORBODES +FORBODING +FORBORE +FORBORNE +FORBS +FORBY +FORBYE +FORCE +FORCEABLE +FORCED +FORCEDLY +FORCEFUL +FORCEFULLY +FORCEFULNESS +FORCEFULNESSES +FORCELESS +FORCEMEAT +FORCEMEATS +FORCEPS +FORCEPSLIKE +FORCER +FORCERS +FORCES +FORCIBLE +FORCIBLENESS +FORCIBLENESSES +FORCIBLY +FORCING +FORCIPES +FORD +FORDABLE +FORDED +FORDID +FORDING +FORDLESS +FORDO +FORDOES +FORDOING +FORDONE +FORDS +FORE +FOREARM +FOREARMED +FOREARMING +FOREARMS +FOREBAY +FOREBAYS +FOREBEAR +FOREBEARS +FOREBODE +FOREBODED +FOREBODER +FOREBODERS +FOREBODES +FOREBODIES +FOREBODING +FOREBODINGLY +FOREBODINGNESS +FOREBODINGS +FOREBODY +FOREBOOM +FOREBOOMS +FOREBRAIN +FOREBRAINS +FOREBY +FOREBYE +FORECADDIE +FORECADDIES +FORECAST +FORECASTABLE +FORECASTED +FORECASTER +FORECASTERS +FORECASTING +FORECASTLE +FORECASTLES +FORECASTS +FORECHECK +FORECHECKED +FORECHECKER +FORECHECKERS +FORECHECKING +FORECHECKS +FORECLOSE +FORECLOSED +FORECLOSES +FORECLOSING +FORECLOSURE +FORECLOSURES +FORECOURT +FORECOURTS +FOREDATE +FOREDATED +FOREDATES +FOREDATING +FOREDECK +FOREDECKS +FOREDID +FOREDO +FOREDOES +FOREDOING +FOREDONE +FOREDOOM +FOREDOOMED +FOREDOOMING +FOREDOOMS +FOREFACE +FOREFACES +FOREFATHER +FOREFATHERS +FOREFEEL +FOREFEELING +FOREFEELS +FOREFEET +FOREFELT +FOREFEND +FOREFENDED +FOREFENDING +FOREFENDS +FOREFINGER +FOREFINGERS +FOREFOOT +FOREFRONT +FOREFRONTS +FOREGATHER +FOREGATHERED +FOREGATHERING +FOREGATHERS +FOREGO +FOREGOER +FOREGOERS +FOREGOES +FOREGOING +FOREGONE +FOREGROUND +FOREGROUNDED +FOREGROUNDING +FOREGROUNDS +FOREGUT +FOREGUTS +FOREHAND +FOREHANDED +FOREHANDEDLY +FOREHANDEDNESS +FOREHANDS +FOREHEAD +FOREHEADS +FOREHOOF +FOREHOOFS +FOREHOOVES +FOREIGN +FOREIGNER +FOREIGNERS +FOREIGNISM +FOREIGNISMS +FOREIGNNESS +FOREIGNNESSES +FOREJUDGE +FOREJUDGED +FOREJUDGES +FOREJUDGING +FOREKNEW +FOREKNOW +FOREKNOWING +FOREKNOWLEDGE +FOREKNOWLEDGES +FOREKNOWN +FOREKNOWS +FORELADIES +FORELADY +FORELAND +FORELANDS +FORELEG +FORELEGS +FORELIMB +FORELIMBS +FORELOCK +FORELOCKED +FORELOCKING +FORELOCKS +FOREMAN +FOREMANSHIP +FOREMANSHIPS +FOREMAST +FOREMASTS +FOREMEN +FOREMILK +FOREMILKS +FOREMOST +FOREMOTHER +FOREMOTHERS +FORENAME +FORENAMED +FORENAMES +FORENOON +FORENOONS +FORENSIC +FORENSICALLY +FORENSICS +FOREORDAIN +FOREORDAINED +FOREORDAINING +FOREORDAINS +FOREORDINATION +FOREORDINATIONS +FOREPART +FOREPARTS +FOREPASSED +FOREPAST +FOREPAW +FOREPAWS +FOREPEAK +FOREPEAKS +FOREPLAY +FOREPLAYS +FOREQUARTER +FOREQUARTERS +FORERAN +FORERANK +FORERANKS +FOREREACH +FOREREACHED +FOREREACHES +FOREREACHING +FORERUN +FORERUNNER +FORERUNNERS +FORERUNNING +FORERUNS +FORES +FORESAID +FORESAIL +FORESAILS +FORESAW +FORESEE +FORESEEABILITY +FORESEEABLE +FORESEEING +FORESEEN +FORESEER +FORESEERS +FORESEES +FORESHADOW +FORESHADOWED +FORESHADOWER +FORESHADOWERS +FORESHADOWING +FORESHADOWS +FORESHANK +FORESHANKS +FORESHEET +FORESHEETS +FORESHOCK +FORESHOCKS +FORESHORE +FORESHORES +FORESHORTEN +FORESHORTENED +FORESHORTENING +FORESHORTENS +FORESHOW +FORESHOWED +FORESHOWING +FORESHOWN +FORESHOWS +FORESIDE +FORESIDES +FORESIGHT +FORESIGHTED +FORESIGHTEDLY +FORESIGHTEDNESS +FORESIGHTFUL +FORESIGHTS +FORESKIN +FORESKINS +FORESPAKE +FORESPEAK +FORESPEAKING +FORESPEAKS +FORESPOKE +FORESPOKEN +FOREST +FORESTAGE +FORESTAGES +FORESTAL +FORESTALL +FORESTALLED +FORESTALLER +FORESTALLERS +FORESTALLING +FORESTALLMENT +FORESTALLMENTS +FORESTALLS +FORESTATION +FORESTATIONS +FORESTAY +FORESTAYS +FORESTAYSAIL +FORESTAYSAILS +FORESTED +FORESTER +FORESTERS +FORESTIAL +FORESTING +FORESTLAND +FORESTLANDS +FORESTRIES +FORESTRY +FORESTS +FORESWEAR +FORESWEARING +FORESWEARS +FORESWORE +FORESWORN +FORETASTE +FORETASTED +FORETASTES +FORETASTING +FORETEETH +FORETELL +FORETELLER +FORETELLERS +FORETELLING +FORETELLS +FORETHOUGHT +FORETHOUGHTFUL +FORETHOUGHTS +FORETIME +FORETIMES +FORETOKEN +FORETOKENED +FORETOKENING +FORETOKENS +FORETOLD +FORETOOTH +FORETOP +FORETOPMAN +FORETOPMEN +FORETOPS +FOREVER +FOREVERMORE +FOREVERNESS +FOREVERNESSES +FOREVERS +FOREWARN +FOREWARNED +FOREWARNING +FOREWARNS +FOREWENT +FOREWING +FOREWINGS +FOREWOMAN +FOREWOMEN +FOREWORD +FOREWORDS +FOREWORN +FOREYARD +FOREYARDS +FORFEIT +FORFEITABLE +FORFEITED +FORFEITER +FORFEITERS +FORFEITING +FORFEITS +FORFEITURE +FORFEITURES +FORFEND +FORFENDED +FORFENDING +FORFENDS +FORFICATE +FORGAT +FORGATHER +FORGATHERED +FORGATHERING +FORGATHERS +FORGAVE +FORGE +FORGEABILITIES +FORGEABILITY +FORGEABLE +FORGED +FORGER +FORGERIES +FORGERS +FORGERY +FORGES +FORGET +FORGETFUL +FORGETFULLY +FORGETFULNESS +FORGETFULNESSES +FORGETIVE +FORGETS +FORGETTABLE +FORGETTER +FORGETTERS +FORGETTING +FORGING +FORGINGS +FORGIVABLE +FORGIVABLY +FORGIVE +FORGIVEN +FORGIVENESS +FORGIVENESSES +FORGIVER +FORGIVERS +FORGIVES +FORGIVING +FORGIVINGLY +FORGIVINGNESS +FORGIVINGNESSES +FORGO +FORGOER +FORGOERS +FORGOES +FORGOING +FORGONE +FORGOT +FORGOTTEN +FORINT +FORINTS +FORJUDGE +FORJUDGED +FORJUDGES +FORJUDGING +FORK +FORKBALL +FORKBALLS +FORKED +FORKEDLY +FORKER +FORKERS +FORKFUL +FORKFULS +FORKIER +FORKIEST +FORKINESS +FORKINESSES +FORKING +FORKLESS +FORKLIFT +FORKLIFTED +FORKLIFTING +FORKLIFTS +FORKLIKE +FORKS +FORKSFUL +FORKY +FORLORN +FORLORNER +FORLORNEST +FORLORNLY +FORLORNNESS +FORLORNNESSES +FORM +FORMABILITIES +FORMABILITY +FORMABLE +FORMABLY +FORMAL +FORMALDEHYDE +FORMALDEHYDES +FORMALIN +FORMALINS +FORMALISE +FORMALISED +FORMALISES +FORMALISING +FORMALISM +FORMALISMS +FORMALIST +FORMALISTIC +FORMALISTS +FORMALITIES +FORMALITY +FORMALIZABLE +FORMALIZATION +FORMALIZATIONS +FORMALIZE +FORMALIZED +FORMALIZER +FORMALIZERS +FORMALIZES +FORMALIZING +FORMALLY +FORMALNESS +FORMALNESSES +FORMALS +FORMAMIDE +FORMAMIDES +FORMANT +FORMANTS +FORMAT +FORMATE +FORMATES +FORMATION +FORMATIONS +FORMATIVE +FORMATIVELY +FORMATIVES +FORMATS +FORMATTED +FORMATTER +FORMATTERS +FORMATTING +FORME +FORMED +FORMEE +FORMER +FORMERLY +FORMERS +FORMES +FORMFITTING +FORMFUL +FORMIC +FORMICA +FORMICARIES +FORMICARY +FORMICAS +FORMIDABILITIES +FORMIDABILITY +FORMIDABLE +FORMIDABLENESS +FORMIDABLY +FORMING +FORMLESS +FORMLESSLY +FORMLESSNESS +FORMLESSNESSES +FORMOL +FORMOLS +FORMS +FORMULA +FORMULAE +FORMULAIC +FORMULAICALLY +FORMULARIES +FORMULARIZATION +FORMULARIZE +FORMULARIZED +FORMULARIZER +FORMULARIZERS +FORMULARIZES +FORMULARIZING +FORMULARY +FORMULAS +FORMULATE +FORMULATED +FORMULATES +FORMULATING +FORMULATION +FORMULATIONS +FORMULATOR +FORMULATORS +FORMULISM +FORMULISMS +FORMULIST +FORMULISTS +FORMULIZE +FORMULIZED +FORMULIZES +FORMULIZING +FORMWORK +FORMWORKS +FORMYL +FORMYLS +FORNENT +FORNICAL +FORNICATE +FORNICATED +FORNICATES +FORNICATING +FORNICATION +FORNICATIONS +FORNICATOR +FORNICATORS +FORNICES +FORNIX +FORRADER +FORRARDER +FORRIT +FORSAKE +FORSAKEN +FORSAKER +FORSAKERS +FORSAKES +FORSAKING +FORSOOK +FORSOOTH +FORSPENT +FORSWEAR +FORSWEARING +FORSWEARS +FORSWORE +FORSWORN +FORSYTHIA +FORSYTHIAS +FORT +FORTALICE +FORTALICES +FORTE +FORTEPIANO +FORTEPIANOS +FORTES +FORTH +FORTHCOMING +FORTHRIGHT +FORTHRIGHTLY +FORTHRIGHTNESS +FORTHRIGHTS +FORTHWITH +FORTIES +FORTIETH +FORTIETHS +FORTIFICATION +FORTIFICATIONS +FORTIFIED +FORTIFIER +FORTIFIERS +FORTIFIES +FORTIFY +FORTIFYING +FORTIS +FORTISSIMI +FORTISSIMO +FORTISSIMOS +FORTITUDE +FORTITUDES +FORTNIGHT +FORTNIGHTLIES +FORTNIGHTLY +FORTNIGHTS +FORTRESS +FORTRESSED +FORTRESSES +FORTRESSING +FORTRESSLIKE +FORTS +FORTUITIES +FORTUITOUS +FORTUITOUSLY +FORTUITOUSNESS +FORTUITY +FORTUNATE +FORTUNATELY +FORTUNATENESS +FORTUNATENESSES +FORTUNATES +FORTUNE +FORTUNED +FORTUNES +FORTUNING +FORTY +FORTYISH +FORUM +FORUMS +FORWARD +FORWARDED +FORWARDER +FORWARDERS +FORWARDEST +FORWARDING +FORWARDLY +FORWARDNESS +FORWARDNESSES +FORWARDS +FORWENT +FORWHY +FORWORN +FORZANDI +FORZANDO +FORZANDOS +FOSCARNET +FOSCARNETS +FOSS +FOSSA +FOSSAE +FOSSAS +FOSSATE +FOSSE +FOSSES +FOSSETTE +FOSSETTES +FOSSICK +FOSSICKED +FOSSICKER +FOSSICKERS +FOSSICKING +FOSSICKS +FOSSIL +FOSSILIFEROUS +FOSSILISE +FOSSILISED +FOSSILISES +FOSSILISING +FOSSILIZATION +FOSSILIZATIONS +FOSSILIZE +FOSSILIZED +FOSSILIZES +FOSSILIZING +FOSSILS +FOSSORIAL +FOSTER +FOSTERAGE +FOSTERAGES +FOSTERED +FOSTERER +FOSTERERS +FOSTERING +FOSTERLING +FOSTERLINGS +FOSTERS +FOU +FOUETTE +FOUETTES +FOUGHT +FOUGHTEN +FOUL +FOULARD +FOULARDS +FOULBROOD +FOULBROODS +FOULED +FOULER +FOULEST +FOULING +FOULINGS +FOULLY +FOULMOUTHED +FOULNESS +FOULNESSES +FOULS +FOUND +FOUNDATION +FOUNDATIONAL +FOUNDATIONALLY +FOUNDATIONLESS +FOUNDATIONS +FOUNDED +FOUNDER +FOUNDERED +FOUNDERING +FOUNDERS +FOUNDING +FOUNDLING +FOUNDLINGS +FOUNDRIES +FOUNDRY +FOUNDS +FOUNT +FOUNTAIN +FOUNTAINED +FOUNTAINHEAD +FOUNTAINHEADS +FOUNTAINING +FOUNTAINS +FOUNTS +FOUR +FOURCHEE +FOURDRINIER +FOURDRINIERS +FOUREYED +FOURFOLD +FOURGON +FOURGONS +FOURPENCE +FOURPENCES +FOURPENNIES +FOURPENNY +FOURPLEX +FOURPLEXES +FOURRAGERE +FOURRAGERES +FOURS +FOURSCORE +FOURSOME +FOURSOMES +FOURSQUARE +FOURTEEN +FOURTEENER +FOURTEENERS +FOURTEENS +FOURTEENTH +FOURTEENTHS +FOURTH +FOURTHLY +FOURTHS +FOVEA +FOVEAE +FOVEAL +FOVEAS +FOVEATE +FOVEATED +FOVEIFORM +FOVEOLA +FOVEOLAE +FOVEOLAR +FOVEOLAS +FOVEOLATE +FOVEOLE +FOVEOLES +FOVEOLET +FOVEOLETS +FOWL +FOWLED +FOWLER +FOWLERS +FOWLING +FOWLINGS +FOWLPOX +FOWLPOXES +FOWLS +FOX +FOXED +FOXES +FOXFIRE +FOXFIRES +FOXFISH +FOXFISHES +FOXGLOVE +FOXGLOVES +FOXHOLE +FOXHOLES +FOXHOUND +FOXHOUNDS +FOXHUNT +FOXHUNTED +FOXHUNTER +FOXHUNTERS +FOXHUNTING +FOXHUNTINGS +FOXHUNTS +FOXIER +FOXIEST +FOXILY +FOXINESS +FOXINESSES +FOXING +FOXINGS +FOXLIKE +FOXSKIN +FOXSKINS +FOXTAIL +FOXTAILS +FOXTROT +FOXTROTS +FOXTROTTED +FOXTROTTING +FOXY +FOY +FOYER +FOYERS +FOYS +FOZIER +FOZIEST +FOZINESS +FOZINESSES +FOZY +FRABJOUS +FRACAS +FRACASES +FRACTAL +FRACTALS +FRACTED +FRACTI +FRACTION +FRACTIONAL +FRACTIONALIZE +FRACTIONALIZED +FRACTIONALIZES +FRACTIONALIZING +FRACTIONALLY +FRACTIONATE +FRACTIONATED +FRACTIONATES +FRACTIONATING +FRACTIONATION +FRACTIONATIONS +FRACTIONATOR +FRACTIONATORS +FRACTIONED +FRACTIONING +FRACTIONS +FRACTIOUS +FRACTIOUSLY +FRACTIOUSNESS +FRACTIOUSNESSES +FRACTUR +FRACTURAL +FRACTURE +FRACTURED +FRACTURER +FRACTURERS +FRACTURES +FRACTURING +FRACTURS +FRACTUS +FRAE +FRAENA +FRAENUM +FRAENUMS +FRAG +FRAGGED +FRAGGING +FRAGGINGS +FRAGILE +FRAGILELY +FRAGILITIES +FRAGILITY +FRAGMENT +FRAGMENTAL +FRAGMENTALLY +FRAGMENTARILY +FRAGMENTARINESS +FRAGMENTARY +FRAGMENTATE +FRAGMENTATED +FRAGMENTATES +FRAGMENTATING +FRAGMENTATION +FRAGMENTATIONS +FRAGMENTED +FRAGMENTING +FRAGMENTIZE +FRAGMENTIZED +FRAGMENTIZES +FRAGMENTIZING +FRAGMENTS +FRAGRANCE +FRAGRANCES +FRAGRANCIES +FRAGRANCY +FRAGRANT +FRAGRANTLY +FRAGS +FRAIL +FRAILER +FRAILEST +FRAILLY +FRAILNESS +FRAILNESSES +FRAILS +FRAILTIES +FRAILTY +FRAISE +FRAISES +FRAKTUR +FRAKTURS +FRAMABLE +FRAMBESIA +FRAMBESIAS +FRAMBOISE +FRAMBOISES +FRAME +FRAMEABLE +FRAMED +FRAMELESS +FRAMER +FRAMERS +FRAMES +FRAMESHIFT +FRAMESHIFTS +FRAMEWORK +FRAMEWORKS +FRAMING +FRAMINGS +FRANC +FRANCHISE +FRANCHISED +FRANCHISEE +FRANCHISEES +FRANCHISER +FRANCHISERS +FRANCHISES +FRANCHISING +FRANCHISOR +FRANCHISORS +FRANCIUM +FRANCIUMS +FRANCIZE +FRANCIZED +FRANCIZES +FRANCIZING +FRANCOLIN +FRANCOLINS +FRANCOPHONE +FRANCS +FRANGIBILITIES +FRANGIBILITY +FRANGIBLE +FRANGIPANE +FRANGIPANES +FRANGIPANI +FRANGIPANNI +FRANGLAIS +FRANK +FRANKABLE +FRANKED +FRANKER +FRANKERS +FRANKEST +FRANKFORT +FRANKFORTS +FRANKFURT +FRANKFURTER +FRANKFURTERS +FRANKFURTS +FRANKINCENSE +FRANKINCENSES +FRANKING +FRANKLIN +FRANKLINITE +FRANKLINITES +FRANKLINS +FRANKLY +FRANKNESS +FRANKNESSES +FRANKPLEDGE +FRANKPLEDGES +FRANKS +FRANSERIA +FRANSERIAS +FRANTIC +FRANTICALLY +FRANTICLY +FRANTICNESS +FRANTICNESSES +FRAP +FRAPPE +FRAPPED +FRAPPES +FRAPPING +FRAPS +FRASS +FRASSES +FRAT +FRATER +FRATERNAL +FRATERNALISM +FRATERNALISMS +FRATERNALLY +FRATERNITIES +FRATERNITY +FRATERNIZATION +FRATERNIZATIONS +FRATERNIZE +FRATERNIZED +FRATERNIZER +FRATERNIZERS +FRATERNIZES +FRATERNIZING +FRATERS +FRATRICIDAL +FRATRICIDE +FRATRICIDES +FRATS +FRAUD +FRAUDS +FRAUDSTER +FRAUDSTERS +FRAUDULENCE +FRAUDULENCES +FRAUDULENT +FRAUDULENTLY +FRAUDULENTNESS +FRAUGHT +FRAUGHTED +FRAUGHTING +FRAUGHTS +FRAULEIN +FRAULEINS +FRAXINELLA +FRAXINELLAS +FRAY +FRAYED +FRAYING +FRAYINGS +FRAYS +FRAZIL +FRAZILS +FRAZZLE +FRAZZLED +FRAZZLES +FRAZZLING +FREAK +FREAKED +FREAKIER +FREAKIEST +FREAKILY +FREAKINESS +FREAKINESSES +FREAKING +FREAKISH +FREAKISHLY +FREAKISHNESS +FREAKISHNESSES +FREAKOUT +FREAKOUTS +FREAKS +FREAKY +FRECKLE +FRECKLED +FRECKLES +FRECKLIER +FRECKLIEST +FRECKLING +FRECKLY +FREE +FREEBASE +FREEBASED +FREEBASER +FREEBASERS +FREEBASES +FREEBASING +FREEBEE +FREEBEES +FREEBIE +FREEBIES +FREEBOARD +FREEBOARDS +FREEBOOT +FREEBOOTED +FREEBOOTER +FREEBOOTERS +FREEBOOTING +FREEBOOTS +FREEBORN +FREED +FREEDMAN +FREEDMEN +FREEDOM +FREEDOMS +FREEDWOMAN +FREEDWOMEN +FREEFORM +FREEHAND +FREEHANDED +FREEHANDEDLY +FREEHANDEDNESS +FREEHEARTED +FREEHEARTEDLY +FREEHOLD +FREEHOLDER +FREEHOLDERS +FREEHOLDS +FREEING +FREELANCE +FREELANCED +FREELANCER +FREELANCERS +FREELANCES +FREELANCING +FREELOAD +FREELOADED +FREELOADER +FREELOADERS +FREELOADING +FREELOADS +FREELY +FREEMAN +FREEMARTIN +FREEMARTINS +FREEMASON +FREEMASONRIES +FREEMASONRY +FREEMASONS +FREEMEN +FREENESS +FREENESSES +FREER +FREERS +FREES +FREESIA +FREESIAS +FREEST +FREESTANDING +FREESTONE +FREESTONES +FREESTYLE +FREESTYLER +FREESTYLERS +FREESTYLES +FREETHINKER +FREETHINKERS +FREETHINKING +FREETHINKINGS +FREEWARE +FREEWARES +FREEWAY +FREEWAYS +FREEWHEEL +FREEWHEELED +FREEWHEELER +FREEWHEELERS +FREEWHEELING +FREEWHEELINGLY +FREEWHEELS +FREEWILL +FREEWRITE +FREEWRITES +FREEWRITING +FREEWRITINGS +FREEWRITTEN +FREEWROTE +FREEZABLE +FREEZE +FREEZER +FREEZERS +FREEZES +FREEZING +FREEZINGLY +FREIGHT +FREIGHTAGE +FREIGHTAGES +FREIGHTED +FREIGHTER +FREIGHTERS +FREIGHTING +FREIGHTS +FREMD +FREMITUS +FREMITUSES +FRENA +FRENCH +FRENCHED +FRENCHES +FRENCHIFICATION +FRENCHIFIED +FRENCHIFIES +FRENCHIFY +FRENCHIFYING +FRENCHING +FRENETIC +FRENETICALLY +FRENETICISM +FRENETICISMS +FRENETICS +FRENULA +FRENULAR +FRENULUM +FRENULUMS +FRENUM +FRENUMS +FRENZIED +FRENZIEDLY +FRENZIES +FRENZILY +FRENZY +FRENZYING +FREQUENCE +FREQUENCES +FREQUENCIES +FREQUENCY +FREQUENT +FREQUENTATION +FREQUENTATIONS +FREQUENTATIVE +FREQUENTATIVES +FREQUENTED +FREQUENTER +FREQUENTERS +FREQUENTEST +FREQUENTING +FREQUENTLY +FREQUENTNESS +FREQUENTNESSES +FREQUENTS +FRERE +FRERES +FRESCO +FRESCOED +FRESCOER +FRESCOERS +FRESCOES +FRESCOING +FRESCOIST +FRESCOISTS +FRESCOS +FRESH +FRESHED +FRESHEN +FRESHENED +FRESHENER +FRESHENERS +FRESHENING +FRESHENS +FRESHER +FRESHES +FRESHEST +FRESHET +FRESHETS +FRESHING +FRESHLY +FRESHMAN +FRESHMEN +FRESHNESS +FRESHNESSES +FRESHWATER +FRESHWATERS +FRESNEL +FRESNELS +FRET +FRETBOARD +FRETBOARDS +FRETFUL +FRETFULLY +FRETFULNESS +FRETFULNESSES +FRETLESS +FRETS +FRETSAW +FRETSAWS +FRETSOME +FRETTED +FRETTER +FRETTERS +FRETTIER +FRETTIEST +FRETTING +FRETTY +FRETWORK +FRETWORKS +FRIABILITIES +FRIABILITY +FRIABLE +FRIAR +FRIARBIRD +FRIARBIRDS +FRIARIES +FRIARLY +FRIARS +FRIARY +FRIBBLE +FRIBBLED +FRIBBLER +FRIBBLERS +FRIBBLES +FRIBBLING +FRICANDEAU +FRICANDEAUS +FRICANDO +FRICANDOES +FRICASSEE +FRICASSEED +FRICASSEEING +FRICASSEES +FRICATIVE +FRICATIVES +FRICTION +FRICTIONAL +FRICTIONALLY +FRICTIONLESS +FRICTIONLESSLY +FRICTIONS +FRIDGE +FRIDGES +FRIED +FRIEDCAKE +FRIEDCAKES +FRIEND +FRIENDED +FRIENDING +FRIENDLESS +FRIENDLESSNESS +FRIENDLIER +FRIENDLIES +FRIENDLIEST +FRIENDLILY +FRIENDLINESS +FRIENDLINESSES +FRIENDLY +FRIENDS +FRIENDSHIP +FRIENDSHIPS +FRIER +FRIERS +FRIES +FRIEZE +FRIEZELIKE +FRIEZES +FRIG +FRIGATE +FRIGATES +FRIGES +FRIGGED +FRIGGING +FRIGHT +FRIGHTED +FRIGHTEN +FRIGHTENED +FRIGHTENING +FRIGHTENINGLY +FRIGHTENS +FRIGHTFUL +FRIGHTFULLY +FRIGHTFULNESS +FRIGHTFULNESSES +FRIGHTING +FRIGHTS +FRIGID +FRIGIDITIES +FRIGIDITY +FRIGIDLY +FRIGIDNESS +FRIGIDNESSES +FRIGORIFIC +FRIGS +FRIJOL +FRIJOLE +FRIJOLES +FRILL +FRILLED +FRILLER +FRILLERS +FRILLIER +FRILLIEST +FRILLING +FRILLINGS +FRILLS +FRILLY +FRINGE +FRINGED +FRINGES +FRINGIER +FRINGIEST +FRINGING +FRINGY +FRIPPERIES +FRIPPERY +FRISBEE +FRISBEES +FRISE +FRISEE +FRISEES +FRISES +FRISETTE +FRISETTES +FRISEUR +FRISEURS +FRISK +FRISKED +FRISKER +FRISKERS +FRISKET +FRISKETS +FRISKIER +FRISKIEST +FRISKILY +FRISKINESS +FRISKINESSES +FRISKING +FRISKS +FRISKY +FRISSON +FRISSONS +FRIT +FRITES +FRITH +FRITHS +FRITILLARIA +FRITILLARIAS +FRITILLARIES +FRITILLARY +FRITS +FRITT +FRITTATA +FRITTATAS +FRITTED +FRITTER +FRITTERED +FRITTERER +FRITTERERS +FRITTERING +FRITTERS +FRITTING +FRITTS +FRITZ +FRITZES +FRIVOL +FRIVOLED +FRIVOLER +FRIVOLERS +FRIVOLING +FRIVOLITIES +FRIVOLITY +FRIVOLLED +FRIVOLLER +FRIVOLLERS +FRIVOLLING +FRIVOLOUS +FRIVOLOUSLY +FRIVOLOUSNESS +FRIVOLOUSNESSES +FRIVOLS +FRIZ +FRIZED +FRIZER +FRIZERS +FRIZES +FRIZETTE +FRIZETTES +FRIZING +FRIZZ +FRIZZED +FRIZZER +FRIZZERS +FRIZZES +FRIZZIER +FRIZZIES +FRIZZIEST +FRIZZILY +FRIZZINESS +FRIZZINESSES +FRIZZING +FRIZZLE +FRIZZLED +FRIZZLER +FRIZZLERS +FRIZZLES +FRIZZLIER +FRIZZLIEST +FRIZZLING +FRIZZLY +FRIZZY +FRO +FROCK +FROCKED +FROCKING +FROCKLESS +FROCKS +FROE +FROES +FROG +FROGEYE +FROGEYED +FROGEYES +FROGFISH +FROGFISHES +FROGGED +FROGGIER +FROGGIEST +FROGGING +FROGGY +FROGHOPPER +FROGHOPPERS +FROGLET +FROGLETS +FROGLIKE +FROGMAN +FROGMARCH +FROGMARCHED +FROGMARCHES +FROGMARCHING +FROGMEN +FROGS +FROLIC +FROLICKED +FROLICKER +FROLICKERS +FROLICKING +FROLICKY +FROLICS +FROLICSOME +FROM +FROMAGE +FROMAGES +FROMENTIES +FROMENTY +FROND +FRONDED +FRONDEUR +FRONDEURS +FRONDOSE +FRONDS +FRONS +FRONT +FRONTAGE +FRONTAGES +FRONTAL +FRONTALITIES +FRONTALITY +FRONTALLY +FRONTALS +FRONTCOURT +FRONTCOURTS +FRONTED +FRONTENIS +FRONTENISES +FRONTER +FRONTES +FRONTIER +FRONTIERS +FRONTIERSMAN +FRONTIERSMEN +FRONTING +FRONTISPIECE +FRONTISPIECES +FRONTLESS +FRONTLET +FRONTLETS +FRONTLINE +FRONTLINES +FRONTLIST +FRONTLISTS +FRONTMAN +FRONTMEN +FRONTOGENESES +FRONTOGENESIS +FRONTOLYSES +FRONTOLYSIS +FRONTON +FRONTONS +FRONTPAGE +FRONTPAGED +FRONTPAGES +FRONTPAGING +FRONTS +FRONTWARD +FRONTWARDS +FRORE +FROSH +FROST +FROSTBIT +FROSTBITE +FROSTBITES +FROSTBITING +FROSTBITINGS +FROSTBITTEN +FROSTED +FROSTEDS +FROSTFISH +FROSTFISHES +FROSTIER +FROSTIEST +FROSTILY +FROSTINESS +FROSTINESSES +FROSTING +FROSTINGS +FROSTLESS +FROSTLINE +FROSTLINES +FROSTNIP +FROSTNIPS +FROSTS +FROSTWORK +FROSTWORKS +FROSTY +FROTH +FROTHED +FROTHER +FROTHERS +FROTHIER +FROTHIEST +FROTHILY +FROTHINESS +FROTHINESSES +FROTHING +FROTHS +FROTHY +FROTTAGE +FROTTAGES +FROTTEUR +FROTTEURS +FROUFROU +FROUFROUS +FROUNCE +FROUNCED +FROUNCES +FROUNCING +FROUZIER +FROUZIEST +FROUZY +FROW +FROWARD +FROWARDLY +FROWARDNESS +FROWARDNESSES +FROWN +FROWNED +FROWNER +FROWNERS +FROWNING +FROWNINGLY +FROWNS +FROWS +FROWSIER +FROWSIEST +FROWST +FROWSTED +FROWSTIER +FROWSTIEST +FROWSTING +FROWSTS +FROWSTY +FROWSY +FROWZIER +FROWZIEST +FROWZILY +FROWZY +FROZE +FROZEN +FROZENLY +FROZENNESS +FROZENNESSES +FRUCTIFICATION +FRUCTIFICATIONS +FRUCTIFIED +FRUCTIFIES +FRUCTIFY +FRUCTIFYING +FRUCTOSE +FRUCTOSES +FRUCTUOUS +FRUG +FRUGAL +FRUGALITIES +FRUGALITY +FRUGALLY +FRUGGED +FRUGGING +FRUGIVORE +FRUGIVORES +FRUGIVOROUS +FRUGS +FRUIT +FRUITAGE +FRUITAGES +FRUITARIAN +FRUITARIANS +FRUITCAKE +FRUITCAKES +FRUITED +FRUITER +FRUITERER +FRUITERERS +FRUITERS +FRUITFUL +FRUITFULLER +FRUITFULLEST +FRUITFULLY +FRUITFULNESS +FRUITFULNESSES +FRUITIER +FRUITIEST +FRUITILY +FRUITINESS +FRUITINESSES +FRUITING +FRUITION +FRUITIONS +FRUITLESS +FRUITLESSLY +FRUITLESSNESS +FRUITLESSNESSES +FRUITLET +FRUITLETS +FRUITLIKE +FRUITS +FRUITWOOD +FRUITWOODS +FRUITY +FRUMENTIES +FRUMENTY +FRUMP +FRUMPIER +FRUMPIEST +FRUMPILY +FRUMPISH +FRUMPS +FRUMPY +FRUSTA +FRUSTRATE +FRUSTRATED +FRUSTRATES +FRUSTRATING +FRUSTRATINGLY +FRUSTRATION +FRUSTRATIONS +FRUSTULE +FRUSTULES +FRUSTUM +FRUSTUMS +FRUTESCENT +FRUTICOSE +FRY +FRYABLE +FRYBREAD +FRYBREADS +FRYER +FRYERS +FRYING +FRYPAN +FRYPANS +FUB +FUBAR +FUBBED +FUBBING +FUBS +FUBSIER +FUBSIEST +FUBSY +FUCHSIA +FUCHSIAS +FUCHSIN +FUCHSINE +FUCHSINES +FUCHSINS +FUCI +FUCK +FUCKED +FUCKER +FUCKERS +FUCKING +FUCKOFF +FUCKOFFS +FUCKS +FUCKUP +FUCKUPS +FUCOID +FUCOIDAL +FUCOIDS +FUCOSE +FUCOSES +FUCOUS +FUCOXANTHIN +FUCOXANTHINS +FUCUS +FUCUSES +FUD +FUDDIES +FUDDLE +FUDDLED +FUDDLES +FUDDLING +FUDDY +FUDGE +FUDGED +FUDGES +FUDGING +FUDS +FUEHRER +FUEHRERS +FUEL +FUELED +FUELER +FUELERS +FUELING +FUELLED +FUELLER +FUELLERS +FUELLING +FUELS +FUELWOOD +FUELWOODS +FUG +FUGACIOUS +FUGACITIES +FUGACITY +FUGAL +FUGALLY +FUGATO +FUGATOS +FUGGED +FUGGIER +FUGGIEST +FUGGILY +FUGGING +FUGGY +FUGIO +FUGIOS +FUGITIVE +FUGITIVELY +FUGITIVENESS +FUGITIVENESSES +FUGITIVES +FUGLE +FUGLED +FUGLEMAN +FUGLEMEN +FUGLES +FUGLING +FUGS +FUGU +FUGUE +FUGUED +FUGUELIKE +FUGUES +FUGUING +FUGUIST +FUGUISTS +FUGUS +FUHRER +FUHRERS +FUJI +FUJIS +FULCRA +FULCRUM +FULCRUMS +FULFIL +FULFILL +FULFILLED +FULFILLER +FULFILLERS +FULFILLING +FULFILLMENT +FULFILLMENTS +FULFILLS +FULFILMENT +FULFILMENTS +FULFILS +FULGENT +FULGENTLY +FULGID +FULGURANT +FULGURATE +FULGURATED +FULGURATES +FULGURATING +FULGURATION +FULGURATIONS +FULGURITE +FULGURITES +FULGUROUS +FULHAM +FULHAMS +FULIGINOUS +FULIGINOUSLY +FULL +FULLAM +FULLAMS +FULLBACK +FULLBACKS +FULLBLOOD +FULLBLOODS +FULLED +FULLER +FULLERED +FULLERENE +FULLERENES +FULLERIES +FULLERING +FULLERS +FULLERY +FULLEST +FULLFACE +FULLFACES +FULLING +FULLMOUTHED +FULLNESS +FULLNESSES +FULLS +FULLY +FULMAR +FULMARS +FULMINANT +FULMINATE +FULMINATED +FULMINATES +FULMINATING +FULMINATION +FULMINATIONS +FULMINE +FULMINED +FULMINES +FULMINIC +FULMINING +FULNESS +FULNESSES +FULSOME +FULSOMELY +FULSOMENESS +FULSOMENESSES +FULVOUS +FUMARASE +FUMARASES +FUMARATE +FUMARATES +FUMARIC +FUMAROLE +FUMAROLES +FUMAROLIC +FUMATORIES +FUMATORY +FUMBLE +FUMBLED +FUMBLER +FUMBLERS +FUMBLES +FUMBLING +FUMBLINGLY +FUME +FUMED +FUMELESS +FUMELIKE +FUMER +FUMERS +FUMES +FUMET +FUMETS +FUMETTE +FUMETTES +FUMIER +FUMIEST +FUMIGANT +FUMIGANTS +FUMIGATE +FUMIGATED +FUMIGATES +FUMIGATING +FUMIGATION +FUMIGATIONS +FUMIGATOR +FUMIGATORS +FUMING +FUMINGLY +FUMITORIES +FUMITORY +FUMULI +FUMULUS +FUMY +FUN +FUNAMBULISM +FUNAMBULISMS +FUNAMBULIST +FUNAMBULISTS +FUNCTION +FUNCTIONAL +FUNCTIONALISM +FUNCTIONALISMS +FUNCTIONALIST +FUNCTIONALISTIC +FUNCTIONALISTS +FUNCTIONALITIES +FUNCTIONALITY +FUNCTIONALLY +FUNCTIONARIES +FUNCTIONARY +FUNCTIONED +FUNCTIONING +FUNCTIONLESS +FUNCTIONS +FUNCTOR +FUNCTORS +FUND +FUNDAMENT +FUNDAMENTAL +FUNDAMENTALISM +FUNDAMENTALISMS +FUNDAMENTALIST +FUNDAMENTALISTS +FUNDAMENTALLY +FUNDAMENTALS +FUNDAMENTS +FUNDED +FUNDER +FUNDERS +FUNDI +FUNDIC +FUNDING +FUNDRAISE +FUNDRAISED +FUNDRAISES +FUNDRAISING +FUNDS +FUNDUS +FUNERAL +FUNERALS +FUNERARY +FUNEREAL +FUNEREALLY +FUNEST +FUNFAIR +FUNFAIRS +FUNFEST +FUNFESTS +FUNGAL +FUNGALS +FUNGI +FUNGIBILITIES +FUNGIBILITY +FUNGIBLE +FUNGIBLES +FUNGIC +FUNGICIDAL +FUNGICIDALLY +FUNGICIDE +FUNGICIDES +FUNGIFORM +FUNGISTAT +FUNGISTATIC +FUNGISTATS +FUNGO +FUNGOES +FUNGOID +FUNGOIDS +FUNGOUS +FUNGUS +FUNGUSES +FUNHOUSE +FUNHOUSES +FUNICLE +FUNICLES +FUNICULAR +FUNICULARS +FUNICULI +FUNICULUS +FUNK +FUNKED +FUNKER +FUNKERS +FUNKIA +FUNKIAS +FUNKIER +FUNKIEST +FUNKILY +FUNKINESS +FUNKINESSES +FUNKING +FUNKS +FUNKY +FUNNED +FUNNEL +FUNNELED +FUNNELFORM +FUNNELING +FUNNELLED +FUNNELLING +FUNNELS +FUNNER +FUNNEST +FUNNIER +FUNNIES +FUNNIEST +FUNNILY +FUNNINESS +FUNNINESSES +FUNNING +FUNNY +FUNNYMAN +FUNNYMEN +FUNPLEX +FUNPLEXES +FUNS +FUR +FURAN +FURANE +FURANES +FURANOSE +FURANOSES +FURANOSIDE +FURANOSIDES +FURANS +FURAZOLIDONE +FURAZOLIDONES +FURBEARER +FURBEARERS +FURBELOW +FURBELOWED +FURBELOWING +FURBELOWS +FURBISH +FURBISHED +FURBISHER +FURBISHERS +FURBISHES +FURBISHING +FURCATE +FURCATED +FURCATELY +FURCATES +FURCATING +FURCATION +FURCATIONS +FURCRAEA +FURCRAEAS +FURCULA +FURCULAE +FURCULAR +FURCULUM +FURFUR +FURFURAL +FURFURALS +FURFURAN +FURFURANS +FURFURES +FURIBUND +FURIES +FURIOSO +FURIOUS +FURIOUSLY +FURL +FURLABLE +FURLED +FURLER +FURLERS +FURLESS +FURLING +FURLONG +FURLONGS +FURLOUGH +FURLOUGHED +FURLOUGHING +FURLOUGHS +FURLS +FURMENTIES +FURMENTY +FURMETIES +FURMETY +FURMITIES +FURMITY +FURNACE +FURNACED +FURNACES +FURNACING +FURNISH +FURNISHED +FURNISHER +FURNISHERS +FURNISHES +FURNISHING +FURNISHINGS +FURNITURE +FURNITURES +FUROR +FURORE +FURORES +FURORS +FUROSEMIDE +FUROSEMIDES +FURRED +FURRIER +FURRIERIES +FURRIERS +FURRIERY +FURRIEST +FURRILY +FURRINER +FURRINERS +FURRINESS +FURRINESSES +FURRING +FURRINGS +FURROW +FURROWED +FURROWER +FURROWERS +FURROWING +FURROWS +FURROWY +FURRY +FURS +FURTHER +FURTHERANCE +FURTHERANCES +FURTHERED +FURTHERER +FURTHERERS +FURTHERING +FURTHERMORE +FURTHERMOST +FURTHERS +FURTHEST +FURTIVE +FURTIVELY +FURTIVENESS +FURTIVENESSES +FURUNCLE +FURUNCLES +FURUNCULOSES +FURUNCULOSIS +FURY +FURZE +FURZES +FURZIER +FURZIEST +FURZY +FUSAIN +FUSAINS +FUSARIA +FUSARIUM +FUSCOUS +FUSE +FUSED +FUSEE +FUSEES +FUSEL +FUSELAGE +FUSELAGES +FUSELESS +FUSELIKE +FUSELS +FUSES +FUSIBILITIES +FUSIBILITY +FUSIBLE +FUSIBLY +FUSIFORM +FUSIL +FUSILE +FUSILEER +FUSILEERS +FUSILIER +FUSILIERS +FUSILLADE +FUSILLADED +FUSILLADES +FUSILLADING +FUSILLI +FUSILLIS +FUSILS +FUSING +FUSION +FUSIONAL +FUSIONISM +FUSIONISMS +FUSIONIST +FUSIONISTS +FUSIONS +FUSS +FUSSBUDGET +FUSSBUDGETS +FUSSBUDGETY +FUSSED +FUSSER +FUSSERS +FUSSES +FUSSIER +FUSSIEST +FUSSILY +FUSSINESS +FUSSINESSES +FUSSING +FUSSPOT +FUSSPOTS +FUSSY +FUSTIAN +FUSTIANS +FUSTIC +FUSTICS +FUSTIER +FUSTIEST +FUSTIGATE +FUSTIGATED +FUSTIGATES +FUSTIGATING +FUSTIGATION +FUSTIGATIONS +FUSTILY +FUSTINESS +FUSTINESSES +FUSTY +FUSULINID +FUSULINIDS +FUSUMA +FUTHARC +FUTHARCS +FUTHARK +FUTHARKS +FUTHORC +FUTHORCS +FUTHORK +FUTHORKS +FUTILE +FUTILELY +FUTILENESS +FUTILENESSES +FUTILITARIAN +FUTILITARIANISM +FUTILITARIANS +FUTILITIES +FUTILITY +FUTON +FUTONS +FUTTOCK +FUTTOCKS +FUTURAL +FUTURE +FUTURELESS +FUTURELESSNESS +FUTURES +FUTURISM +FUTURISMS +FUTURIST +FUTURISTIC +FUTURISTICALLY +FUTURISTICS +FUTURISTS +FUTURITIES +FUTURITY +FUTUROLOGICAL +FUTUROLOGIES +FUTUROLOGIST +FUTUROLOGISTS +FUTUROLOGY +FUTZ +FUTZED +FUTZES +FUTZING +FUZE +FUZED +FUZEE +FUZEES +FUZES +FUZIL +FUZILS +FUZING +FUZZ +FUZZED +FUZZES +FUZZIER +FUZZIEST +FUZZILY +FUZZINESS +FUZZINESSES +FUZZING +FUZZTONE +FUZZTONES +FUZZY +FYCE +FYCES +FYKE +FYKES +FYLFOT +FYLFOTS +FYNBOS +FYTTE +FYTTES +GAB +GABARDINE +GABARDINES +GABBARD +GABBARDS +GABBART +GABBARTS +GABBED +GABBER +GABBERS +GABBIER +GABBIEST +GABBINESS +GABBINESSES +GABBING +GABBLE +GABBLED +GABBLER +GABBLERS +GABBLES +GABBLING +GABBRO +GABBROIC +GABBROID +GABBROS +GABBY +GABELLE +GABELLED +GABELLES +GABERDINE +GABERDINES +GABFEST +GABFESTS +GABIES +GABION +GABIONS +GABLE +GABLED +GABLELIKE +GABLES +GABLING +GABOON +GABOONS +GABS +GABY +GAD +GADABOUT +GADABOUTS +GADARENE +GADDED +GADDER +GADDERS +GADDI +GADDING +GADDIS +GADFLIES +GADFLY +GADGET +GADGETEER +GADGETEERS +GADGETRIES +GADGETRY +GADGETS +GADGETY +GADI +GADID +GADIDS +GADIS +GADJE +GADJO +GADOID +GADOIDS +GADOLINITE +GADOLINITES +GADOLINIUM +GADOLINIUMS +GADROON +GADROONED +GADROONING +GADROONINGS +GADROONS +GADS +GADWALL +GADWALLS +GADZOOKERIES +GADZOOKERY +GADZOOKS +GAE +GAED +GAEING +GAEN +GAES +GAFF +GAFFE +GAFFED +GAFFER +GAFFERS +GAFFES +GAFFING +GAFFS +GAG +GAGA +GAGAKU +GAGAKUS +GAGE +GAGED +GAGER +GAGERS +GAGES +GAGGED +GAGGER +GAGGERS +GAGGING +GAGGLE +GAGGLED +GAGGLES +GAGGLING +GAGING +GAGMAN +GAGMEN +GAGS +GAGSTER +GAGSTERS +GAHNITE +GAHNITES +GAIETIES +GAIETY +GAIJIN +GAILLARDIA +GAILLARDIAS +GAILY +GAIN +GAINABLE +GAINED +GAINER +GAINERS +GAINFUL +GAINFULLY +GAINFULNESS +GAINFULNESSES +GAINGIVING +GAINGIVINGS +GAINING +GAINLESS +GAINLIER +GAINLIEST +GAINLY +GAINS +GAINSAID +GAINSAY +GAINSAYER +GAINSAYERS +GAINSAYING +GAINSAYS +GAINST +GAIT +GAITED +GAITER +GAITERS +GAITING +GAITS +GAL +GALA +GALABIA +GALABIAS +GALABIEH +GALABIEHS +GALABIYA +GALABIYAH +GALABIYAHS +GALABIYAS +GALACTIC +GALACTORRHEA +GALACTORRHEAS +GALACTOSAMINE +GALACTOSAMINES +GALACTOSE +GALACTOSEMIA +GALACTOSEMIAS +GALACTOSEMIC +GALACTOSES +GALACTOSIDASE +GALACTOSIDASES +GALACTOSIDE +GALACTOSIDES +GALACTOSYL +GALACTOSYLS +GALAGO +GALAGOS +GALAH +GALAHS +GALANGA +GALANGAL +GALANGALS +GALANGAS +GALANTINE +GALANTINES +GALAS +GALATEA +GALATEAS +GALAVANT +GALAVANTED +GALAVANTING +GALAVANTS +GALAX +GALAXES +GALAXIES +GALAXY +GALBANUM +GALBANUMS +GALE +GALEA +GALEAE +GALEAS +GALEATE +GALEATED +GALENA +GALENAS +GALENIC +GALENICAL +GALENICALS +GALENITE +GALENITES +GALERE +GALERES +GALES +GALETTE +GALETTES +GALILEE +GALILEES +GALINGALE +GALINGALES +GALIOT +GALIOTS +GALIPOT +GALIPOTS +GALIVANT +GALIVANTED +GALIVANTING +GALIVANTS +GALL +GALLAMINE +GALLAMINES +GALLANT +GALLANTED +GALLANTING +GALLANTLY +GALLANTRIES +GALLANTRY +GALLANTS +GALLATE +GALLATES +GALLBLADDER +GALLBLADDERS +GALLEASS +GALLEASSES +GALLED +GALLEIN +GALLEINS +GALLEON +GALLEONS +GALLERIA +GALLERIAS +GALLERIED +GALLERIES +GALLERY +GALLERYGOER +GALLERYGOERS +GALLERYING +GALLERYITE +GALLERYITES +GALLET +GALLETA +GALLETAS +GALLETED +GALLETING +GALLETS +GALLEY +GALLEYS +GALLFLIES +GALLFLY +GALLIARD +GALLIARDS +GALLIASS +GALLIASSES +GALLIC +GALLICA +GALLICAN +GALLICAS +GALLICISM +GALLICISMS +GALLICIZATION +GALLICIZATIONS +GALLICIZE +GALLICIZED +GALLICIZES +GALLICIZING +GALLIED +GALLIES +GALLIGASKINS +GALLIMAUFRIES +GALLIMAUFRY +GALLINACEOUS +GALLING +GALLINGLY +GALLINIPPER +GALLINIPPERS +GALLINULE +GALLINULES +GALLIOT +GALLIOTS +GALLIPOT +GALLIPOTS +GALLIUM +GALLIUMS +GALLIVANT +GALLIVANTED +GALLIVANTING +GALLIVANTS +GALLIWASP +GALLIWASPS +GALLNUT +GALLNUTS +GALLON +GALLONAGE +GALLONAGES +GALLONS +GALLOON +GALLOONED +GALLOONS +GALLOOT +GALLOOTS +GALLOP +GALLOPADE +GALLOPADES +GALLOPED +GALLOPER +GALLOPERS +GALLOPING +GALLOPS +GALLOUS +GALLOWGLASS +GALLOWGLASSES +GALLOWS +GALLOWSES +GALLS +GALLSTONE +GALLSTONES +GALLUS +GALLUSED +GALLUSES +GALLY +GALLYING +GALOOT +GALOOTS +GALOP +GALOPADE +GALOPADES +GALOPED +GALOPING +GALOPS +GALORE +GALORES +GALOSH +GALOSHE +GALOSHED +GALOSHES +GALS +GALUMPH +GALUMPHED +GALUMPHING +GALUMPHS +GALVANIC +GALVANICALLY +GALVANISE +GALVANISED +GALVANISES +GALVANISING +GALVANISM +GALVANISMS +GALVANIZATION +GALVANIZATIONS +GALVANIZE +GALVANIZED +GALVANIZER +GALVANIZERS +GALVANIZES +GALVANIZING +GALVANOMETER +GALVANOMETERS +GALVANOMETRIC +GALVANOSCOPE +GALVANOSCOPES +GALYAC +GALYACS +GALYAK +GALYAKS +GAM +GAMA +GAMAS +GAMASHES +GAMAY +GAMAYS +GAMB +GAMBA +GAMBADE +GAMBADES +GAMBADO +GAMBADOES +GAMBADOS +GAMBAS +GAMBE +GAMBES +GAMBESON +GAMBESONS +GAMBIA +GAMBIAS +GAMBIER +GAMBIERS +GAMBIR +GAMBIRS +GAMBIT +GAMBITS +GAMBLE +GAMBLED +GAMBLER +GAMBLERS +GAMBLES +GAMBLING +GAMBOGE +GAMBOGES +GAMBOGIAN +GAMBOL +GAMBOLED +GAMBOLING +GAMBOLLED +GAMBOLLING +GAMBOLS +GAMBREL +GAMBRELS +GAMBS +GAMBUSIA +GAMBUSIAS +GAME +GAMECOCK +GAMECOCKS +GAMED +GAMEKEEPER +GAMEKEEPERS +GAMELAN +GAMELANS +GAMELIKE +GAMELY +GAMENESS +GAMENESSES +GAMER +GAMERS +GAMES +GAMESMAN +GAMESMANSHIP +GAMESMANSHIPS +GAMESMEN +GAMESOME +GAMESOMELY +GAMESOMENESS +GAMESOMENESSES +GAMEST +GAMESTER +GAMESTERS +GAMETAL +GAMETANGIA +GAMETANGIUM +GAMETE +GAMETES +GAMETIC +GAMETICALLY +GAMETOCYTE +GAMETOCYTES +GAMETOGENESES +GAMETOGENESIS +GAMETOGENIC +GAMETOGENOUS +GAMETOPHORE +GAMETOPHORES +GAMETOPHYTE +GAMETOPHYTES +GAMETOPHYTIC +GAMEY +GAMIC +GAMIER +GAMIEST +GAMILY +GAMIN +GAMINE +GAMINES +GAMINESS +GAMINESSES +GAMING +GAMINGS +GAMINS +GAMMA +GAMMADIA +GAMMADION +GAMMAS +GAMMED +GAMMER +GAMMERS +GAMMIER +GAMMIEST +GAMMING +GAMMON +GAMMONED +GAMMONER +GAMMONERS +GAMMONING +GAMMONS +GAMMY +GAMODEME +GAMODEMES +GAMOPETALOUS +GAMP +GAMPS +GAMS +GAMUT +GAMUTS +GAMY +GAN +GANACHE +GANACHES +GANDER +GANDERED +GANDERING +GANDERS +GANE +GANEF +GANEFS +GANEV +GANEVS +GANG +GANGBANG +GANGBANGED +GANGBANGER +GANGBANGERS +GANGBANGING +GANGBANGS +GANGBUSTER +GANGBUSTERS +GANGED +GANGER +GANGERS +GANGING +GANGLAND +GANGLANDS +GANGLIA +GANGLIAL +GANGLIAR +GANGLIATE +GANGLIER +GANGLIEST +GANGLING +GANGLION +GANGLIONATED +GANGLIONIC +GANGLIONS +GANGLIOSIDE +GANGLIOSIDES +GANGLY +GANGPLANK +GANGPLANKS +GANGPLOW +GANGPLOWS +GANGREL +GANGRELS +GANGRENE +GANGRENED +GANGRENES +GANGRENING +GANGRENOUS +GANGS +GANGSTA +GANGSTAS +GANGSTER +GANGSTERDOM +GANGSTERDOMS +GANGSTERISH +GANGSTERISM +GANGSTERISMS +GANGSTERS +GANGUE +GANGUES +GANGWAY +GANGWAYS +GANISTER +GANISTERS +GANJA +GANJAH +GANJAHS +GANJAS +GANNET +GANNETS +GANNISTER +GANNISTERS +GANOF +GANOFS +GANOID +GANOIDS +GANTELOPE +GANTELOPES +GANTLET +GANTLETED +GANTLETING +GANTLETS +GANTLINE +GANTLINES +GANTLOPE +GANTLOPES +GANTRIES +GANTRY +GANYMEDE +GANYMEDES +GAOL +GAOLED +GAOLER +GAOLERS +GAOLING +GAOLS +GAP +GAPE +GAPED +GAPER +GAPERS +GAPES +GAPESEED +GAPESEEDS +GAPEWORM +GAPEWORMS +GAPING +GAPINGLY +GAPLESS +GAPOSIS +GAPOSISES +GAPPED +GAPPIER +GAPPIEST +GAPPING +GAPPY +GAPS +GAPY +GAR +GARAGE +GARAGED +GARAGEMAN +GARAGEMEN +GARAGES +GARAGING +GARB +GARBAGE +GARBAGEMAN +GARBAGEMEN +GARBAGES +GARBAGEY +GARBAGY +GARBANZO +GARBANZOS +GARBED +GARBING +GARBLE +GARBLED +GARBLER +GARBLERS +GARBLES +GARBLESS +GARBLING +GARBOARD +GARBOARDS +GARBOIL +GARBOILS +GARBOLOGIES +GARBOLOGY +GARBS +GARCON +GARCONS +GARDA +GARDAI +GARDANT +GARDEN +GARDENED +GARDENER +GARDENERS +GARDENFUL +GARDENFULS +GARDENIA +GARDENIAS +GARDENING +GARDENS +GARDEROBE +GARDEROBES +GARDYLOO +GARFISH +GARFISHES +GARGANEY +GARGANEYS +GARGANTUA +GARGANTUAN +GARGANTUAS +GARGET +GARGETS +GARGETY +GARGLE +GARGLED +GARGLER +GARGLERS +GARGLES +GARGLING +GARGOYLE +GARGOYLED +GARGOYLES +GARIBALDI +GARIBALDIS +GARIGUE +GARIGUES +GARISH +GARISHLY +GARISHNESS +GARISHNESSES +GARLAND +GARLANDED +GARLANDING +GARLANDS +GARLIC +GARLICKED +GARLICKIER +GARLICKIEST +GARLICKING +GARLICKY +GARLICS +GARMENT +GARMENTED +GARMENTING +GARMENTS +GARNER +GARNERED +GARNERING +GARNERS +GARNET +GARNETIFEROUS +GARNETS +GARNI +GARNIERITE +GARNIERITES +GARNISH +GARNISHED +GARNISHEE +GARNISHEED +GARNISHEEING +GARNISHEES +GARNISHER +GARNISHERS +GARNISHES +GARNISHING +GARNISHMENT +GARNISHMENTS +GARNITURE +GARNITURES +GAROTE +GAROTED +GAROTES +GAROTING +GAROTTE +GAROTTED +GAROTTER +GAROTTERS +GAROTTES +GAROTTING +GARPIKE +GARPIKES +GARRED +GARRET +GARRETED +GARRETS +GARRING +GARRISON +GARRISONED +GARRISONING +GARRISONS +GARRON +GARRONS +GARROTE +GARROTED +GARROTER +GARROTERS +GARROTES +GARROTING +GARROTTE +GARROTTED +GARROTTES +GARROTTING +GARRULITIES +GARRULITY +GARRULOUS +GARRULOUSLY +GARRULOUSNESS +GARRULOUSNESSES +GARS +GARTER +GARTERED +GARTERING +GARTERS +GARTH +GARTHS +GARVEY +GARVEYS +GAS +GASALIER +GASALIERS +GASBAG +GASBAGS +GASCON +GASCONADE +GASCONADED +GASCONADER +GASCONADERS +GASCONADES +GASCONADING +GASCONS +GASEITIES +GASEITY +GASELIER +GASELIERS +GASEOUS +GASEOUSNESS +GASEOUSNESSES +GASES +GASH +GASHED +GASHER +GASHES +GASHEST +GASHING +GASHOLDER +GASHOLDERS +GASHOUSE +GASHOUSES +GASIFICATION +GASIFICATIONS +GASIFIED +GASIFIER +GASIFIERS +GASIFIES +GASIFORM +GASIFY +GASIFYING +GASKET +GASKETS +GASKIN +GASKING +GASKINGS +GASKINS +GASLESS +GASLIGHT +GASLIGHTS +GASLIT +GASMAN +GASMEN +GASOGENE +GASOGENES +GASOHOL +GASOHOLS +GASOLENE +GASOLENES +GASOLIER +GASOLIERS +GASOLINE +GASOLINES +GASOLINIC +GASOMETER +GASOMETERS +GASP +GASPED +GASPER +GASPEREAU +GASPEREAUX +GASPERS +GASPING +GASPINGLY +GASPS +GASSED +GASSER +GASSERS +GASSES +GASSIER +GASSIEST +GASSILY +GASSINESS +GASSINESSES +GASSING +GASSINGS +GASSY +GAST +GASTED +GASTER +GASTERS +GASTIGHT +GASTIGHTNESS +GASTIGHTNESSES +GASTING +GASTNESS +GASTNESSES +GASTRAEA +GASTRAEAS +GASTRAL +GASTREA +GASTREAS +GASTRECTOMIES +GASTRECTOMY +GASTRIC +GASTRIN +GASTRINS +GASTRITIC +GASTRITIDES +GASTRITIS +GASTRITISES +GASTROCNEMII +GASTROCNEMIUS +GASTRODUODENAL +GASTROENTERITIS +GASTROLITH +GASTROLITHS +GASTRONOME +GASTRONOMES +GASTRONOMIC +GASTRONOMICAL +GASTRONOMICALLY +GASTRONOMIES +GASTRONOMIST +GASTRONOMISTS +GASTRONOMY +GASTROPOD +GASTROPODS +GASTROSCOPE +GASTROSCOPES +GASTROSCOPIC +GASTROSCOPIES +GASTROSCOPIST +GASTROSCOPISTS +GASTROSCOPY +GASTROTRICH +GASTROTRICHS +GASTROVASCULAR +GASTRULA +GASTRULAE +GASTRULAR +GASTRULAS +GASTRULATE +GASTRULATED +GASTRULATES +GASTRULATING +GASTRULATION +GASTRULATIONS +GASTS +GASWORKS +GAT +GATE +GATEAU +GATEAUS +GATEAUX +GATECRASH +GATECRASHED +GATECRASHES +GATECRASHING +GATED +GATEFOLD +GATEFOLDS +GATEHOUSE +GATEHOUSES +GATEKEEPER +GATEKEEPERS +GATEKEEPING +GATELESS +GATELIKE +GATEMAN +GATEMEN +GATEPOST +GATEPOSTS +GATER +GATERS +GATES +GATEWAY +GATEWAYS +GATHER +GATHERED +GATHERER +GATHERERS +GATHERING +GATHERINGS +GATHERS +GATING +GATINGS +GATOR +GATORS +GATS +GAUCHE +GAUCHELY +GAUCHENESS +GAUCHENESSES +GAUCHER +GAUCHERIE +GAUCHERIES +GAUCHEST +GAUCHO +GAUCHOS +GAUD +GAUDERIES +GAUDERY +GAUDIER +GAUDIES +GAUDIEST +GAUDILY +GAUDINESS +GAUDINESSES +GAUDS +GAUDY +GAUFFER +GAUFFERED +GAUFFERING +GAUFFERS +GAUGE +GAUGEABLE +GAUGED +GAUGER +GAUGERS +GAUGES +GAUGING +GAULEITER +GAULEITERS +GAULT +GAULTS +GAUM +GAUMED +GAUMING +GAUMS +GAUN +GAUNT +GAUNTER +GAUNTEST +GAUNTLET +GAUNTLETED +GAUNTLETING +GAUNTLETS +GAUNTLY +GAUNTNESS +GAUNTNESSES +GAUNTRIES +GAUNTRY +GAUR +GAURS +GAUSS +GAUSSES +GAUZE +GAUZELIKE +GAUZES +GAUZIER +GAUZIEST +GAUZILY +GAUZINESS +GAUZINESSES +GAUZY +GAVAGE +GAVAGES +GAVE +GAVEL +GAVELED +GAVELING +GAVELKIND +GAVELKINDS +GAVELLED +GAVELLING +GAVELOCK +GAVELOCKS +GAVELS +GAVIAL +GAVIALOID +GAVIALS +GAVOT +GAVOTS +GAVOTTE +GAVOTTED +GAVOTTES +GAVOTTING +GAWK +GAWKED +GAWKER +GAWKERS +GAWKIER +GAWKIES +GAWKIEST +GAWKILY +GAWKINESS +GAWKINESSES +GAWKING +GAWKISH +GAWKISHLY +GAWKISHNESS +GAWKISHNESSES +GAWKS +GAWKY +GAWP +GAWPED +GAWPER +GAWPERS +GAWPING +GAWPS +GAWSIE +GAWSY +GAY +GAYAL +GAYALS +GAYDAR +GAYDARS +GAYER +GAYEST +GAYETIES +GAYETY +GAYLY +GAYNESS +GAYNESSES +GAYS +GAYWINGS +GAZABO +GAZABOES +GAZABOS +GAZANIA +GAZANIAS +GAZAR +GAZARS +GAZE +GAZEBO +GAZEBOES +GAZEBOS +GAZED +GAZEHOUND +GAZEHOUNDS +GAZELLE +GAZELLES +GAZER +GAZERS +GAZES +GAZETTE +GAZETTED +GAZETTEER +GAZETTEERS +GAZETTES +GAZETTING +GAZILLION +GAZILLIONS +GAZING +GAZOGENE +GAZOGENES +GAZOO +GAZOOS +GAZPACHO +GAZPACHOS +GAZUMP +GAZUMPED +GAZUMPER +GAZUMPERS +GAZUMPING +GAZUMPS +GEANTICLINE +GEANTICLINES +GEAR +GEARBOX +GEARBOXES +GEARCASE +GEARCASES +GEARCHANGE +GEARCHANGES +GEARED +GEARHEAD +GEARHEADS +GEARING +GEARINGS +GEARLESS +GEARS +GEARSHIFT +GEARSHIFTS +GEARWHEEL +GEARWHEELS +GECK +GECKED +GECKING +GECKO +GECKOES +GECKOS +GECKS +GED +GEDS +GEE +GEED +GEEGAW +GEEGAWS +GEEING +GEEK +GEEKDOM +GEEKDOMS +GEEKED +GEEKIER +GEEKIEST +GEEKINESS +GEEKINESSES +GEEKS +GEEKY +GEEPOUND +GEEPOUNDS +GEES +GEESE +GEEST +GEESTS +GEEZ +GEEZER +GEEZERS +GEGENSCHEIN +GEGENSCHEINS +GEISHA +GEISHAS +GEL +GELABLE +GELADA +GELADAS +GELANDESPRUNG +GELANDESPRUNGS +GELANT +GELANTS +GELATE +GELATED +GELATES +GELATI +GELATIN +GELATINE +GELATINES +GELATING +GELATINIZATION +GELATINIZATIONS +GELATINIZE +GELATINIZED +GELATINIZES +GELATINIZING +GELATINOUS +GELATINOUSLY +GELATINOUSNESS +GELATINS +GELATION +GELATIONS +GELATIS +GELATO +GELATOS +GELCAP +GELCAPS +GELD +GELDED +GELDER +GELDERS +GELDING +GELDINGS +GELDS +GELEE +GELEES +GELID +GELIDITIES +GELIDITY +GELIDLY +GELIDNESS +GELIDNESSES +GELIGNITE +GELIGNITES +GELLANT +GELLANTS +GELLED +GELLING +GELS +GELSEMIA +GELSEMIUM +GELSEMIUMS +GELT +GELTS +GEM +GEMATRIA +GEMATRIAS +GEMEINSCHAFT +GEMEINSCHAFTS +GEMINAL +GEMINALLY +GEMINATE +GEMINATED +GEMINATES +GEMINATING +GEMINATION +GEMINATIONS +GEMLIKE +GEMMA +GEMMAE +GEMMATE +GEMMATED +GEMMATES +GEMMATING +GEMMATION +GEMMATIONS +GEMMED +GEMMIER +GEMMIEST +GEMMILY +GEMMINESS +GEMMINESSES +GEMMING +GEMMOLOGIES +GEMMOLOGIST +GEMMOLOGISTS +GEMMOLOGY +GEMMULE +GEMMULES +GEMMY +GEMOLOGICAL +GEMOLOGIES +GEMOLOGIST +GEMOLOGISTS +GEMOLOGY +GEMOT +GEMOTE +GEMOTES +GEMOTS +GEMS +GEMSBOK +GEMSBOKS +GEMSBUCK +GEMSBUCKS +GEMSTONE +GEMSTONES +GEMUTLICH +GEMUTLICHKEIT +GEMUTLICHKEITS +GEN +GENDARME +GENDARMERIE +GENDARMERIES +GENDARMERY +GENDARMES +GENDER +GENDERED +GENDERING +GENDERIZE +GENDERIZED +GENDERIZES +GENDERIZING +GENDERS +GENE +GENEALOGICAL +GENEALOGICALLY +GENEALOGIES +GENEALOGIST +GENEALOGISTS +GENEALOGY +GENERA +GENERABLE +GENERAL +GENERALCIES +GENERALCY +GENERALISATION +GENERALISATIONS +GENERALISE +GENERALISED +GENERALISES +GENERALISING +GENERALISSIMO +GENERALISSIMOS +GENERALIST +GENERALISTS +GENERALITIES +GENERALITY +GENERALIZABLE +GENERALIZATION +GENERALIZATIONS +GENERALIZE +GENERALIZED +GENERALIZER +GENERALIZERS +GENERALIZES +GENERALIZING +GENERALLY +GENERALS +GENERALSHIP +GENERALSHIPS +GENERATE +GENERATED +GENERATES +GENERATING +GENERATION +GENERATIONAL +GENERATIONALLY +GENERATIONS +GENERATIVE +GENERATOR +GENERATORS +GENERATRICES +GENERATRIX +GENERIC +GENERICAL +GENERICALLY +GENERICNESS +GENERICNESSES +GENERICS +GENEROSITIES +GENEROSITY +GENEROUS +GENEROUSLY +GENEROUSNESS +GENEROUSNESSES +GENES +GENESES +GENESIS +GENET +GENETIC +GENETICAL +GENETICALLY +GENETICIST +GENETICISTS +GENETICS +GENETS +GENETTE +GENETTES +GENEVA +GENEVAS +GENIAL +GENIALITIES +GENIALITY +GENIALLY +GENIC +GENICALLY +GENICULATE +GENICULATED +GENIE +GENIES +GENII +GENIP +GENIPAP +GENIPAPS +GENIPS +GENISTEIN +GENISTEINS +GENITAL +GENITALIA +GENITALIC +GENITALLY +GENITALS +GENITIVAL +GENITIVALLY +GENITIVE +GENITIVES +GENITOR +GENITORS +GENITOURINARY +GENITURE +GENITURES +GENIUS +GENIUSES +GENNAKER +GENNAKERS +GENOA +GENOAS +GENOCIDAL +GENOCIDE +GENOCIDES +GENOGRAM +GENOGRAMS +GENOISE +GENOISES +GENOM +GENOME +GENOMES +GENOMIC +GENOMICS +GENOMS +GENOTYPE +GENOTYPES +GENOTYPIC +GENOTYPICAL +GENOTYPICALLY +GENRE +GENRES +GENRO +GENROS +GENS +GENSENG +GENSENGS +GENT +GENTAMICIN +GENTAMICINS +GENTEEL +GENTEELER +GENTEELEST +GENTEELISM +GENTEELISMS +GENTEELLY +GENTEELNESS +GENTEELNESSES +GENTES +GENTIAN +GENTIANS +GENTIL +GENTILE +GENTILES +GENTILESSE +GENTILESSES +GENTILITIES +GENTILITY +GENTLE +GENTLED +GENTLEFOLK +GENTLEFOLKS +GENTLEMAN +GENTLEMANLIKE +GENTLEMANLINESS +GENTLEMANLY +GENTLEMEN +GENTLENESS +GENTLENESSES +GENTLEPERSON +GENTLEPERSONS +GENTLER +GENTLES +GENTLEST +GENTLEWOMAN +GENTLEWOMEN +GENTLING +GENTLY +GENTOO +GENTOOS +GENTRICE +GENTRICES +GENTRIES +GENTRIFICATION +GENTRIFICATIONS +GENTRIFIED +GENTRIFIER +GENTRIFIERS +GENTRIFIES +GENTRIFY +GENTRIFYING +GENTRY +GENTS +GENU +GENUA +GENUFLECT +GENUFLECTED +GENUFLECTING +GENUFLECTION +GENUFLECTIONS +GENUFLECTS +GENUINE +GENUINELY +GENUINENESS +GENUINENESSES +GENUS +GENUSES +GEOBOTANIC +GEOBOTANICAL +GEOBOTANIES +GEOBOTANIST +GEOBOTANISTS +GEOBOTANY +GEOCENTRIC +GEOCENTRICALLY +GEOCHEMICAL +GEOCHEMICALLY +GEOCHEMIST +GEOCHEMISTRIES +GEOCHEMISTRY +GEOCHEMISTS +GEOCHRONOLOGIC +GEOCHRONOLOGIES +GEOCHRONOLOGIST +GEOCHRONOLOGY +GEOCORONA +GEOCORONAE +GEOCORONAS +GEODE +GEODES +GEODESIC +GEODESICS +GEODESIES +GEODESIST +GEODESISTS +GEODESY +GEODETIC +GEODETICAL +GEODETICS +GEODIC +GEODUCK +GEODUCKS +GEOGNOSIES +GEOGNOSY +GEOGRAPHER +GEOGRAPHERS +GEOGRAPHIC +GEOGRAPHICAL +GEOGRAPHICALLY +GEOGRAPHIES +GEOGRAPHY +GEOHYDROLOGIC +GEOHYDROLOGIES +GEOHYDROLOGIST +GEOHYDROLOGISTS +GEOHYDROLOGY +GEOID +GEOIDAL +GEOIDS +GEOLOGER +GEOLOGERS +GEOLOGIC +GEOLOGICAL +GEOLOGICALLY +GEOLOGIES +GEOLOGIST +GEOLOGISTS +GEOLOGIZE +GEOLOGIZED +GEOLOGIZES +GEOLOGIZING +GEOLOGY +GEOMAGNETIC +GEOMAGNETICALLY +GEOMAGNETISM +GEOMAGNETISMS +GEOMANCER +GEOMANCERS +GEOMANCIES +GEOMANCY +GEOMANTIC +GEOMETER +GEOMETERS +GEOMETRIC +GEOMETRICAL +GEOMETRICALLY +GEOMETRICIAN +GEOMETRICIANS +GEOMETRICS +GEOMETRID +GEOMETRIDS +GEOMETRIES +GEOMETRISE +GEOMETRISED +GEOMETRISES +GEOMETRISING +GEOMETRIZATION +GEOMETRIZATIONS +GEOMETRIZE +GEOMETRIZED +GEOMETRIZES +GEOMETRIZING +GEOMETRY +GEOMORPHIC +GEOMORPHOLOGIES +GEOMORPHOLOGIST +GEOMORPHOLOGY +GEOPHAGIA +GEOPHAGIAS +GEOPHAGIES +GEOPHAGY +GEOPHONE +GEOPHONES +GEOPHYSICAL +GEOPHYSICALLY +GEOPHYSICIST +GEOPHYSICISTS +GEOPHYSICS +GEOPHYTE +GEOPHYTES +GEOPHYTIC +GEOPOLITICAL +GEOPOLITICALLY +GEOPOLITICIAN +GEOPOLITICIANS +GEOPOLITICS +GEOPONIC +GEOPONICS +GEOPRESSURED +GEOPROBE +GEOPROBES +GEORGETTE +GEORGETTES +GEORGIC +GEORGICAL +GEORGICS +GEOSCIENCE +GEOSCIENCES +GEOSCIENTIST +GEOSCIENTISTS +GEOSTATIONARY +GEOSTRATEGIC +GEOSTRATEGIES +GEOSTRATEGIST +GEOSTRATEGISTS +GEOSTRATEGY +GEOSTROPHIC +GEOSTROPHICALLY +GEOSYNCHRONOUS +GEOSYNCLINAL +GEOSYNCLINE +GEOSYNCLINES +GEOTACTIC +GEOTAXES +GEOTAXIS +GEOTECHNICAL +GEOTECTONIC +GEOTECTONICALLY +GEOTHERMAL +GEOTHERMALLY +GEOTROPIC +GEOTROPICALLY +GEOTROPISM +GEOTROPISMS +GERAH +GERAHS +GERANIAL +GERANIALS +GERANIOL +GERANIOLS +GERANIUM +GERANIUMS +GERARDIA +GERARDIAS +GERBERA +GERBERAS +GERBIL +GERBILLE +GERBILLES +GERBILS +GERENT +GERENTS +GERENUK +GERENUKS +GERFALCON +GERFALCONS +GERIATRIC +GERIATRICIAN +GERIATRICIANS +GERIATRICS +GERM +GERMAN +GERMANDER +GERMANDERS +GERMANE +GERMANELY +GERMANIC +GERMANIUM +GERMANIUMS +GERMANIZATION +GERMANIZATIONS +GERMANIZE +GERMANIZED +GERMANIZES +GERMANIZING +GERMANS +GERMEN +GERMENS +GERMFREE +GERMICIDAL +GERMICIDE +GERMICIDES +GERMIER +GERMIEST +GERMINA +GERMINABILITIES +GERMINABILITY +GERMINAL +GERMINALLY +GERMINANT +GERMINATE +GERMINATED +GERMINATES +GERMINATING +GERMINATION +GERMINATIONS +GERMINATIVE +GERMINESS +GERMINESSES +GERMLIKE +GERMPLASM +GERMPLASMS +GERMPROOF +GERMS +GERMY +GERONTIC +GERONTOCRACIES +GERONTOCRACY +GERONTOCRAT +GERONTOCRATIC +GERONTOCRATS +GERONTOLOGIC +GERONTOLOGICAL +GERONTOLOGIES +GERONTOLOGIST +GERONTOLOGISTS +GERONTOLOGY +GERONTOMORPHIC +GERRYMANDER +GERRYMANDERED +GERRYMANDERING +GERRYMANDERS +GERUND +GERUNDIAL +GERUNDIVE +GERUNDIVES +GERUNDS +GESELLSCHAFT +GESELLSCHAFTS +GESNERIA +GESNERIAD +GESNERIADS +GESSO +GESSOED +GESSOES +GEST +GESTALT +GESTALTEN +GESTALTIST +GESTALTISTS +GESTALTS +GESTAPO +GESTAPOS +GESTATE +GESTATED +GESTATES +GESTATING +GESTATION +GESTATIONAL +GESTATIONS +GESTATIVE +GESTATORY +GESTE +GESTES +GESTIC +GESTICAL +GESTICULANT +GESTICULATE +GESTICULATED +GESTICULATES +GESTICULATING +GESTICULATION +GESTICULATIONS +GESTICULATIVE +GESTICULATOR +GESTICULATORS +GESTICULATORY +GESTS +GESTURAL +GESTURALLY +GESTURE +GESTURED +GESTURER +GESTURERS +GESTURES +GESTURING +GESUNDHEIT +GET +GETA +GETABLE +GETAS +GETATABLE +GETAWAY +GETAWAYS +GETS +GETTABLE +GETTER +GETTERED +GETTERING +GETTERS +GETTING +GETUP +GETUPS +GEUM +GEUMS +GEWGAW +GEWGAWED +GEWGAWS +GEWURZTRAMINER +GEWURZTRAMINERS +GEY +GEYSER +GEYSERITE +GEYSERITES +GEYSERS +GHARIAL +GHARIALS +GHARRI +GHARRIES +GHARRIS +GHARRY +GHAST +GHASTFUL +GHASTFULLY +GHASTLIER +GHASTLIEST +GHASTLINESS +GHASTLINESSES +GHASTLY +GHAT +GHATS +GHAUT +GHAUTS +GHAZI +GHAZIES +GHAZIS +GHEE +GHEES +GHERAO +GHERAOED +GHERAOES +GHERAOING +GHERKIN +GHERKINS +GHETTO +GHETTOED +GHETTOES +GHETTOING +GHETTOIZATION +GHETTOIZATIONS +GHETTOIZE +GHETTOIZED +GHETTOIZES +GHETTOIZING +GHETTOS +GHI +GHIBLI +GHIBLIS +GHILLIE +GHILLIES +GHIS +GHOST +GHOSTED +GHOSTIER +GHOSTIEST +GHOSTING +GHOSTINGS +GHOSTLIER +GHOSTLIEST +GHOSTLIKE +GHOSTLINESS +GHOSTLINESSES +GHOSTLY +GHOSTS +GHOSTWRITE +GHOSTWRITER +GHOSTWRITERS +GHOSTWRITES +GHOSTWRITING +GHOSTWRITTEN +GHOSTWROTE +GHOSTY +GHOUL +GHOULIE +GHOULIES +GHOULISH +GHOULISHLY +GHOULISHNESS +GHOULISHNESSES +GHOULS +GHYLL +GHYLLS +GIANT +GIANTESS +GIANTESSES +GIANTISM +GIANTISMS +GIANTLIKE +GIANTS +GIAOUR +GIAOURS +GIARDIA +GIARDIAS +GIARDIASES +GIARDIASIS +GIB +GIBBED +GIBBER +GIBBERED +GIBBERELLIN +GIBBERELLINS +GIBBERING +GIBBERISH +GIBBERISHES +GIBBERS +GIBBET +GIBBETED +GIBBETING +GIBBETS +GIBBETTED +GIBBETTING +GIBBING +GIBBON +GIBBONS +GIBBOSE +GIBBOSITIES +GIBBOSITY +GIBBOUS +GIBBOUSLY +GIBBSITE +GIBBSITES +GIBE +GIBED +GIBER +GIBERS +GIBES +GIBING +GIBINGLY +GIBLET +GIBLETS +GIBS +GIBSON +GIBSONS +GID +GIDDAP +GIDDIED +GIDDIER +GIDDIES +GIDDIEST +GIDDILY +GIDDINESS +GIDDINESSES +GIDDY +GIDDYAP +GIDDYING +GIDDYUP +GIDS +GIE +GIED +GIEING +GIEN +GIES +GIFT +GIFTABLE +GIFTABLES +GIFTED +GIFTEDLY +GIFTEDNESS +GIFTEDNESSES +GIFTEE +GIFTEES +GIFTING +GIFTLESS +GIFTS +GIFTWARE +GIFTWARES +GIFTWRAP +GIFTWRAPPED +GIFTWRAPPING +GIFTWRAPS +GIG +GIGA +GIGABIT +GIGABITS +GIGABYTE +GIGABYTES +GIGACYCLE +GIGACYCLES +GIGAFLOP +GIGAFLOPS +GIGAHERTZ +GIGAHERTZES +GIGANTEAN +GIGANTESQUE +GIGANTIC +GIGANTICALLY +GIGANTISM +GIGANTISMS +GIGAS +GIGATON +GIGATONS +GIGAWATT +GIGAWATTS +GIGGED +GIGGING +GIGGLE +GIGGLED +GIGGLER +GIGGLERS +GIGGLES +GIGGLIER +GIGGLIEST +GIGGLING +GIGGLINGLY +GIGGLY +GIGHE +GIGLET +GIGLETS +GIGLOT +GIGLOTS +GIGOLO +GIGOLOS +GIGOT +GIGOTS +GIGS +GIGUE +GIGUES +GILBERT +GILBERTS +GILD +GILDED +GILDER +GILDERS +GILDHALL +GILDHALLS +GILDING +GILDINGS +GILDS +GILL +GILLED +GILLER +GILLERS +GILLIE +GILLIED +GILLIES +GILLING +GILLNET +GILLNETS +GILLNETTED +GILLNETTER +GILLNETTERS +GILLNETTING +GILLS +GILLY +GILLYFLOWER +GILLYFLOWERS +GILLYING +GILT +GILTHEAD +GILTHEADS +GILTS +GIMBAL +GIMBALED +GIMBALING +GIMBALLED +GIMBALLING +GIMBALS +GIMCRACK +GIMCRACKERIES +GIMCRACKERY +GIMCRACKS +GIMEL +GIMELS +GIMLET +GIMLETED +GIMLETING +GIMLETS +GIMMAL +GIMMALS +GIMME +GIMMES +GIMMICK +GIMMICKED +GIMMICKING +GIMMICKRIES +GIMMICKRY +GIMMICKS +GIMMICKY +GIMMIE +GIMMIES +GIMP +GIMPED +GIMPIER +GIMPIEST +GIMPING +GIMPS +GIMPY +GIN +GINGAL +GINGALL +GINGALLS +GINGALS +GINGELEY +GINGELEYS +GINGELI +GINGELIES +GINGELIS +GINGELLI +GINGELLIES +GINGELLIS +GINGELLY +GINGELY +GINGER +GINGERBREAD +GINGERBREADED +GINGERBREADS +GINGERBREADY +GINGERED +GINGERING +GINGERLINESS +GINGERLINESSES +GINGERLY +GINGERROOT +GINGERROOTS +GINGERS +GINGERSNAP +GINGERSNAPS +GINGERY +GINGHAM +GINGHAMS +GINGILI +GINGILIS +GINGILLI +GINGILLIS +GINGIVA +GINGIVAE +GINGIVAL +GINGIVECTOMIES +GINGIVECTOMY +GINGIVITIS +GINGIVITISES +GINGKO +GINGKOES +GINGKOS +GINK +GINKGO +GINKGOES +GINKGOS +GINKS +GINNED +GINNER +GINNERS +GINNIER +GINNIEST +GINNING +GINNINGS +GINNY +GINS +GINSENG +GINSENGS +GINZO +GINZOES +GIP +GIPON +GIPONS +GIPPED +GIPPER +GIPPERS +GIPPING +GIPS +GIPSIED +GIPSIES +GIPSY +GIPSYING +GIRAFFE +GIRAFFES +GIRAFFISH +GIRANDOLA +GIRANDOLAS +GIRANDOLE +GIRANDOLES +GIRASOL +GIRASOLE +GIRASOLES +GIRASOLS +GIRD +GIRDED +GIRDER +GIRDERS +GIRDING +GIRDINGLY +GIRDLE +GIRDLED +GIRDLER +GIRDLERS +GIRDLES +GIRDLING +GIRDS +GIRL +GIRLFRIEND +GIRLFRIENDS +GIRLHOOD +GIRLHOODS +GIRLIE +GIRLIER +GIRLIES +GIRLIEST +GIRLISH +GIRLISHLY +GIRLISHNESS +GIRLISHNESSES +GIRLS +GIRLY +GIRN +GIRNED +GIRNING +GIRNS +GIRO +GIROLLE +GIROLLES +GIRON +GIRONS +GIROS +GIROSOL +GIROSOLS +GIRSH +GIRSHES +GIRT +GIRTED +GIRTH +GIRTHED +GIRTHING +GIRTHS +GIRTING +GIRTS +GISARME +GISARMES +GISMO +GISMOS +GIST +GISTS +GIT +GITANO +GITANOS +GITE +GITES +GITS +GITTED +GITTERN +GITTERNS +GITTIN +GITTING +GIVE +GIVEABLE +GIVEAWAY +GIVEAWAYS +GIVEBACK +GIVEBACKS +GIVEN +GIVENS +GIVER +GIVERS +GIVES +GIVING +GIZMO +GIZMOS +GIZZARD +GIZZARDS +GJETOST +GJETOSTS +GLABELLA +GLABELLAE +GLABELLAR +GLABRATE +GLABRESCENT +GLABROUS +GLACE +GLACEED +GLACEING +GLACES +GLACIAL +GLACIALLY +GLACIATE +GLACIATED +GLACIATES +GLACIATING +GLACIATION +GLACIATIONS +GLACIER +GLACIERED +GLACIERS +GLACIOLOGICAL +GLACIOLOGIES +GLACIOLOGIST +GLACIOLOGISTS +GLACIOLOGY +GLACIS +GLACISES +GLAD +GLADDED +GLADDEN +GLADDENED +GLADDENER +GLADDENERS +GLADDENING +GLADDENS +GLADDER +GLADDEST +GLADDING +GLADE +GLADELIKE +GLADES +GLADIATE +GLADIATOR +GLADIATORIAL +GLADIATORS +GLADIER +GLADIEST +GLADIOLA +GLADIOLAR +GLADIOLAS +GLADIOLI +GLADIOLUS +GLADIOLUSES +GLADLIER +GLADLIEST +GLADLY +GLADNESS +GLADNESSES +GLADS +GLADSOME +GLADSOMELY +GLADSOMENESS +GLADSOMENESSES +GLADSOMER +GLADSOMEST +GLADSTONE +GLADSTONES +GLADY +GLAIKET +GLAIKIT +GLAIR +GLAIRE +GLAIRED +GLAIRES +GLAIRIER +GLAIRIEST +GLAIRING +GLAIRS +GLAIRY +GLAIVE +GLAIVED +GLAIVES +GLAM +GLAMOR +GLAMORISE +GLAMORISED +GLAMORISES +GLAMORISING +GLAMORIZATION +GLAMORIZATIONS +GLAMORIZE +GLAMORIZED +GLAMORIZER +GLAMORIZERS +GLAMORIZES +GLAMORIZING +GLAMOROUS +GLAMOROUSLY +GLAMOROUSNESS +GLAMOROUSNESSES +GLAMORS +GLAMOUR +GLAMOURED +GLAMOURING +GLAMOURIZE +GLAMOURIZED +GLAMOURIZES +GLAMOURIZING +GLAMOURLESS +GLAMOUROUS +GLAMOURS +GLAMS +GLANCE +GLANCED +GLANCER +GLANCERS +GLANCES +GLANCING +GLANCINGLY +GLAND +GLANDERED +GLANDERS +GLANDES +GLANDLESS +GLANDS +GLANDULAR +GLANDULARLY +GLANDULE +GLANDULES +GLANS +GLARE +GLARED +GLARES +GLARIER +GLARIEST +GLARINESS +GLARINESSES +GLARING +GLARINGLY +GLARINGNESS +GLARINGNESSES +GLARY +GLASNOST +GLASNOSTS +GLASS +GLASSBLOWER +GLASSBLOWERS +GLASSBLOWING +GLASSBLOWINGS +GLASSED +GLASSES +GLASSFUL +GLASSFULS +GLASSHOUSE +GLASSHOUSES +GLASSIE +GLASSIER +GLASSIES +GLASSIEST +GLASSILY +GLASSINE +GLASSINES +GLASSINESS +GLASSINESSES +GLASSING +GLASSLESS +GLASSMAKER +GLASSMAKERS +GLASSMAKING +GLASSMAKINGS +GLASSMAN +GLASSMEN +GLASSPAPER +GLASSPAPERED +GLASSPAPERING +GLASSPAPERS +GLASSWARE +GLASSWARES +GLASSWORK +GLASSWORKER +GLASSWORKERS +GLASSWORKS +GLASSWORM +GLASSWORMS +GLASSWORT +GLASSWORTS +GLASSY +GLAUCOMA +GLAUCOMAS +GLAUCONITE +GLAUCONITES +GLAUCONITIC +GLAUCOUS +GLAUCOUSNESS +GLAUCOUSNESSES +GLAZE +GLAZED +GLAZER +GLAZERS +GLAZES +GLAZIER +GLAZIERIES +GLAZIERS +GLAZIERY +GLAZIEST +GLAZILY +GLAZINESS +GLAZINESSES +GLAZING +GLAZINGS +GLAZY +GLEAM +GLEAMED +GLEAMER +GLEAMERS +GLEAMIER +GLEAMIEST +GLEAMING +GLEAMS +GLEAMY +GLEAN +GLEANABLE +GLEANED +GLEANER +GLEANERS +GLEANING +GLEANINGS +GLEANS +GLEBA +GLEBAE +GLEBE +GLEBELESS +GLEBES +GLED +GLEDE +GLEDES +GLEDS +GLEE +GLEED +GLEEDS +GLEEFUL +GLEEFULLY +GLEEFULNESS +GLEEFULNESSES +GLEEK +GLEEKED +GLEEKING +GLEEKS +GLEEMAN +GLEEMEN +GLEES +GLEESOME +GLEET +GLEETED +GLEETIER +GLEETIEST +GLEETING +GLEETS +GLEETY +GLEG +GLEGLY +GLEGNESS +GLEGNESSES +GLEIZATION +GLEIZATIONS +GLEN +GLENGARRIES +GLENGARRY +GLENLIKE +GLENOID +GLENS +GLEY +GLEYED +GLEYING +GLEYINGS +GLEYS +GLIA +GLIADIN +GLIADINE +GLIADINES +GLIADINS +GLIAL +GLIAS +GLIB +GLIBBER +GLIBBEST +GLIBLY +GLIBNESS +GLIBNESSES +GLIDE +GLIDED +GLIDEPATH +GLIDEPATHS +GLIDER +GLIDERS +GLIDES +GLIDING +GLIFF +GLIFFS +GLIM +GLIME +GLIMED +GLIMES +GLIMING +GLIMMER +GLIMMERED +GLIMMERING +GLIMMERINGS +GLIMMERS +GLIMPSE +GLIMPSED +GLIMPSER +GLIMPSERS +GLIMPSES +GLIMPSING +GLIMS +GLINT +GLINTED +GLINTIER +GLINTIEST +GLINTING +GLINTS +GLINTY +GLIOBLASTOMA +GLIOBLASTOMAS +GLIOBLASTOMATA +GLIOMA +GLIOMAS +GLIOMATA +GLISSADE +GLISSADED +GLISSADER +GLISSADERS +GLISSADES +GLISSADING +GLISSANDI +GLISSANDO +GLISSANDOS +GLISTEN +GLISTENED +GLISTENING +GLISTENS +GLISTER +GLISTERED +GLISTERING +GLISTERS +GLITCH +GLITCHES +GLITCHIER +GLITCHIEST +GLITCHY +GLITTER +GLITTERATI +GLITTERED +GLITTERING +GLITTERINGLY +GLITTERS +GLITTERY +GLITZ +GLITZED +GLITZES +GLITZIER +GLITZIEST +GLITZING +GLITZY +GLOAM +GLOAMING +GLOAMINGS +GLOAMS +GLOAT +GLOATED +GLOATER +GLOATERS +GLOATING +GLOATINGLY +GLOATS +GLOB +GLOBAL +GLOBALISE +GLOBALISED +GLOBALISES +GLOBALISING +GLOBALISM +GLOBALISMS +GLOBALIST +GLOBALISTS +GLOBALIZATION +GLOBALIZATIONS +GLOBALIZE +GLOBALIZED +GLOBALIZES +GLOBALIZING +GLOBALLY +GLOBATE +GLOBATED +GLOBBIER +GLOBBIEST +GLOBBY +GLOBE +GLOBED +GLOBEFISH +GLOBEFISHES +GLOBEFLOWER +GLOBEFLOWERS +GLOBELIKE +GLOBES +GLOBETROT +GLOBETROTS +GLOBETROTTED +GLOBETROTTING +GLOBIN +GLOBING +GLOBINS +GLOBOID +GLOBOIDS +GLOBOSE +GLOBOSELY +GLOBOSITIES +GLOBOSITY +GLOBOUS +GLOBS +GLOBULAR +GLOBULARS +GLOBULE +GLOBULES +GLOBULIN +GLOBULINS +GLOCHID +GLOCHIDIA +GLOCHIDIUM +GLOCHIDS +GLOCKENSPIEL +GLOCKENSPIELS +GLOGG +GLOGGS +GLOM +GLOMERA +GLOMERATE +GLOMERULAR +GLOMERULE +GLOMERULES +GLOMERULI +GLOMERULUS +GLOMMED +GLOMMING +GLOMS +GLOMUS +GLONOIN +GLONOINS +GLOOM +GLOOMED +GLOOMFUL +GLOOMIER +GLOOMIEST +GLOOMILY +GLOOMINESS +GLOOMINESSES +GLOOMING +GLOOMINGS +GLOOMS +GLOOMY +GLOP +GLOPPED +GLOPPIER +GLOPPIEST +GLOPPING +GLOPPY +GLOPS +GLORIA +GLORIAS +GLORIED +GLORIES +GLORIFICATION +GLORIFICATIONS +GLORIFIED +GLORIFIER +GLORIFIERS +GLORIFIES +GLORIFY +GLORIFYING +GLORIOLE +GLORIOLES +GLORIOUS +GLORIOUSLY +GLORIOUSNESS +GLORIOUSNESSES +GLORY +GLORYING +GLOSS +GLOSSA +GLOSSAE +GLOSSAL +GLOSSARIAL +GLOSSARIES +GLOSSARIST +GLOSSARISTS +GLOSSARY +GLOSSAS +GLOSSATOR +GLOSSATORS +GLOSSED +GLOSSEME +GLOSSEMES +GLOSSER +GLOSSERS +GLOSSES +GLOSSIER +GLOSSIES +GLOSSIEST +GLOSSILY +GLOSSINA +GLOSSINAS +GLOSSINESS +GLOSSINESSES +GLOSSING +GLOSSITIC +GLOSSITIS +GLOSSITISES +GLOSSOGRAPHER +GLOSSOGRAPHERS +GLOSSOLALIA +GLOSSOLALIAS +GLOSSOLALIST +GLOSSOLALISTS +GLOSSY +GLOST +GLOSTS +GLOTTAL +GLOTTIC +GLOTTIDES +GLOTTIS +GLOTTISES +GLOUT +GLOUTED +GLOUTING +GLOUTS +GLOVE +GLOVED +GLOVER +GLOVERS +GLOVES +GLOVING +GLOW +GLOWED +GLOWER +GLOWERED +GLOWERING +GLOWERS +GLOWFLIES +GLOWFLY +GLOWING +GLOWINGLY +GLOWS +GLOWWORM +GLOWWORMS +GLOXINIA +GLOXINIAS +GLOZE +GLOZED +GLOZES +GLOZING +GLUCAGON +GLUCAGONS +GLUCAN +GLUCANS +GLUCINIC +GLUCINUM +GLUCINUMS +GLUCOCORTICOID +GLUCOCORTICOIDS +GLUCOKINASE +GLUCOKINASES +GLUCONATE +GLUCONATES +GLUCONEOGENESES +GLUCONEOGENESIS +GLUCOSAMINE +GLUCOSAMINES +GLUCOSE +GLUCOSES +GLUCOSIC +GLUCOSIDASE +GLUCOSIDASES +GLUCOSIDE +GLUCOSIDES +GLUCOSIDIC +GLUCURONIDASE +GLUCURONIDASES +GLUCURONIDE +GLUCURONIDES +GLUE +GLUED +GLUEING +GLUELIKE +GLUEPOT +GLUEPOTS +GLUER +GLUERS +GLUES +GLUEY +GLUEYNESS +GLUEYNESSES +GLUG +GLUGGED +GLUGGING +GLUGS +GLUHWEIN +GLUHWEINS +GLUIER +GLUIEST +GLUILY +GLUINESS +GLUINESSES +GLUING +GLUM +GLUME +GLUMES +GLUMLY +GLUMMER +GLUMMEST +GLUMNESS +GLUMNESSES +GLUMPIER +GLUMPIEST +GLUMPILY +GLUMPY +GLUMS +GLUNCH +GLUNCHED +GLUNCHES +GLUNCHING +GLUON +GLUONS +GLUT +GLUTAMATE +GLUTAMATES +GLUTAMINASE +GLUTAMINASES +GLUTAMINE +GLUTAMINES +GLUTARALDEHYDE +GLUTARALDEHYDES +GLUTATHIONE +GLUTATHIONES +GLUTE +GLUTEAL +GLUTEI +GLUTELIN +GLUTELINS +GLUTEN +GLUTENIN +GLUTENINS +GLUTENOUS +GLUTENS +GLUTES +GLUTETHIMIDE +GLUTETHIMIDES +GLUTEUS +GLUTINOUS +GLUTINOUSLY +GLUTS +GLUTTED +GLUTTING +GLUTTON +GLUTTONIES +GLUTTONOUS +GLUTTONOUSLY +GLUTTONOUSNESS +GLUTTONS +GLUTTONY +GLYCAN +GLYCANS +GLYCERALDEHYDE +GLYCERALDEHYDES +GLYCERIC +GLYCERIDE +GLYCERIDES +GLYCERIDIC +GLYCERIN +GLYCERINATE +GLYCERINATED +GLYCERINATES +GLYCERINATING +GLYCERINE +GLYCERINES +GLYCERINS +GLYCEROL +GLYCEROLS +GLYCERYL +GLYCERYLS +GLYCIN +GLYCINE +GLYCINES +GLYCINS +GLYCOGEN +GLYCOGENESES +GLYCOGENESIS +GLYCOGENOLYSES +GLYCOGENOLYSIS +GLYCOGENOLYTIC +GLYCOGENS +GLYCOL +GLYCOLIC +GLYCOLIPID +GLYCOLIPIDS +GLYCOLS +GLYCOLYSES +GLYCOLYSIS +GLYCOLYTIC +GLYCONIC +GLYCONICS +GLYCOPEPTIDE +GLYCOPEPTIDES +GLYCOPROTEIN +GLYCOPROTEINS +GLYCOSIDASE +GLYCOSIDASES +GLYCOSIDE +GLYCOSIDES +GLYCOSIDIC +GLYCOSIDICALLY +GLYCOSURIA +GLYCOSURIAS +GLYCOSYL +GLYCOSYLATE +GLYCOSYLATED +GLYCOSYLATES +GLYCOSYLATING +GLYCOSYLATION +GLYCOSYLATIONS +GLYCOSYLS +GLYCYL +GLYCYLS +GLYPH +GLYPHIC +GLYPHS +GLYPTIC +GLYPTICS +GNAR +GNARL +GNARLED +GNARLIER +GNARLIEST +GNARLING +GNARLS +GNARLY +GNARR +GNARRED +GNARRING +GNARRS +GNARS +GNASH +GNASHED +GNASHES +GNASHING +GNAT +GNATCATCHER +GNATCATCHERS +GNATHAL +GNATHIC +GNATHION +GNATHIONS +GNATHITE +GNATHITES +GNATHONIC +GNATLIKE +GNATS +GNATTIER +GNATTIEST +GNATTY +GNAW +GNAWABLE +GNAWED +GNAWER +GNAWERS +GNAWING +GNAWINGLY +GNAWINGS +GNAWN +GNAWS +GNEISS +GNEISSES +GNEISSIC +GNEISSOID +GNEISSOSE +GNOCCHI +GNOME +GNOMELIKE +GNOMES +GNOMIC +GNOMICAL +GNOMISH +GNOMIST +GNOMISTS +GNOMON +GNOMONIC +GNOMONS +GNOSES +GNOSIS +GNOSTIC +GNOSTICAL +GNOSTICISM +GNOSTICISMS +GNOSTICS +GNOTOBIOTIC +GNOTOBIOTICALLY +GNU +GNUS +GO +GOA +GOAD +GOADED +GOADING +GOADLIKE +GOADS +GOAL +GOALED +GOALIE +GOALIES +GOALING +GOALKEEPER +GOALKEEPERS +GOALLESS +GOALMOUTH +GOALMOUTHS +GOALPOST +GOALPOSTS +GOALS +GOALTENDER +GOALTENDERS +GOALTENDING +GOALTENDINGS +GOALWARD +GOANNA +GOANNAS +GOAS +GOAT +GOATEE +GOATEED +GOATEES +GOATFISH +GOATFISHES +GOATHERD +GOATHERDS +GOATISH +GOATISHLY +GOATLIKE +GOATS +GOATSKIN +GOATSKINS +GOATSUCKER +GOATSUCKERS +GOB +GOBAN +GOBANG +GOBANGS +GOBANS +GOBBED +GOBBET +GOBBETS +GOBBING +GOBBLE +GOBBLED +GOBBLEDEGOOK +GOBBLEDEGOOKS +GOBBLEDYGOOK +GOBBLEDYGOOKS +GOBBLER +GOBBLERS +GOBBLES +GOBBLING +GOBIES +GOBIOID +GOBIOIDS +GOBLET +GOBLETS +GOBLIN +GOBLINS +GOBO +GOBOES +GOBONEE +GOBONY +GOBOS +GOBS +GOBSHITE +GOBSHITES +GOBY +GOD +GODCHILD +GODCHILDREN +GODDAM +GODDAMMED +GODDAMMING +GODDAMN +GODDAMNDEST +GODDAMNED +GODDAMNEDEST +GODDAMNING +GODDAMNS +GODDAMS +GODDAUGHTER +GODDAUGHTERS +GODDED +GODDESS +GODDESSES +GODDING +GODET +GODETIA +GODETIAS +GODETS +GODFATHER +GODFATHERED +GODFATHERING +GODFATHERS +GODFORSAKEN +GODHEAD +GODHEADS +GODHOOD +GODHOODS +GODLESS +GODLESSLY +GODLESSNESS +GODLESSNESSES +GODLIER +GODLIEST +GODLIKE +GODLIKENESS +GODLIKENESSES +GODLILY +GODLINESS +GODLINESSES +GODLING +GODLINGS +GODLY +GODMOTHER +GODMOTHERED +GODMOTHERING +GODMOTHERS +GODOWN +GODOWNS +GODPARENT +GODPARENTS +GODROON +GODROONS +GODS +GODSEND +GODSENDS +GODSHIP +GODSHIPS +GODSON +GODSONS +GODWIT +GODWITS +GOER +GOERS +GOES +GOETHITE +GOETHITES +GOFER +GOFERS +GOFFER +GOFFERED +GOFFERING +GOFFERINGS +GOFFERS +GOGGLE +GOGGLED +GOGGLER +GOGGLERS +GOGGLES +GOGGLIER +GOGGLIEST +GOGGLING +GOGGLY +GOGLET +GOGLETS +GOGO +GOGOS +GOING +GOINGS +GOITER +GOITERS +GOITRE +GOITRES +GOITROGEN +GOITROGENIC +GOITROGENICITY +GOITROGENS +GOITROUS +GOLCONDA +GOLCONDAS +GOLD +GOLDARN +GOLDARNS +GOLDBRICK +GOLDBRICKED +GOLDBRICKING +GOLDBRICKS +GOLDBUG +GOLDBUGS +GOLDEN +GOLDENER +GOLDENEST +GOLDENEYE +GOLDENEYES +GOLDENLY +GOLDENNESS +GOLDENNESSES +GOLDENROD +GOLDENRODS +GOLDENSEAL +GOLDENSEALS +GOLDER +GOLDEST +GOLDEYE +GOLDEYES +GOLDFIELD +GOLDFIELDS +GOLDFINCH +GOLDFINCHES +GOLDFISH +GOLDFISHES +GOLDS +GOLDSMITH +GOLDSMITHS +GOLDSTONE +GOLDSTONES +GOLDTONE +GOLDURN +GOLDURNS +GOLEM +GOLEMS +GOLF +GOLFED +GOLFER +GOLFERS +GOLFING +GOLFINGS +GOLFS +GOLGOTHA +GOLGOTHAS +GOLIARD +GOLIARDIC +GOLIARDS +GOLIATH +GOLIATHS +GOLLIWOG +GOLLIWOGG +GOLLIWOGGS +GOLLIWOGS +GOLLY +GOLLYWOG +GOLLYWOGS +GOLOSH +GOLOSHE +GOLOSHES +GOMBEEN +GOMBEENS +GOMBO +GOMBOS +GOMBROON +GOMBROONS +GOMER +GOMERAL +GOMERALS +GOMEREL +GOMERELS +GOMERIL +GOMERILS +GOMERS +GOMPHOSES +GOMPHOSIS +GOMUTI +GOMUTIS +GONAD +GONADAL +GONADECTOMIES +GONADECTOMIZED +GONADECTOMY +GONADIAL +GONADIC +GONADOTROPHIC +GONADOTROPHIN +GONADOTROPHINS +GONADOTROPIC +GONADOTROPIN +GONADOTROPINS +GONADS +GONDOLA +GONDOLAS +GONDOLIER +GONDOLIERS +GONE +GONEF +GONEFS +GONENESS +GONENESSES +GONER +GONERS +GONFALON +GONFALONS +GONFANON +GONFANONS +GONG +GONGED +GONGING +GONGLIKE +GONGORISTIC +GONGS +GONIA +GONIDIA +GONIDIAL +GONIDIC +GONIDIUM +GONIF +GONIFF +GONIFFS +GONIFS +GONIOMETER +GONIOMETERS +GONIOMETRIC +GONIOMETRIES +GONIOMETRY +GONION +GONIUM +GONOCOCCAL +GONOCOCCI +GONOCOCCUS +GONOCYTE +GONOCYTES +GONOF +GONOFS +GONOPH +GONOPHORE +GONOPHORES +GONOPHS +GONOPORE +GONOPORES +GONORRHEA +GONORRHEAL +GONORRHEAS +GONZO +GOO +GOOBER +GOOBERS +GOOD +GOODBY +GOODBYE +GOODBYES +GOODBYS +GOODIE +GOODIES +GOODISH +GOODLIER +GOODLIEST +GOODLY +GOODMAN +GOODMEN +GOODNESS +GOODNESSES +GOODS +GOODWIFE +GOODWILL +GOODWILLED +GOODWILLS +GOODWIVES +GOODY +GOOEY +GOOEYNESS +GOOEYNESSES +GOOF +GOOFBALL +GOOFBALLS +GOOFED +GOOFIER +GOOFIEST +GOOFILY +GOOFINESS +GOOFINESSES +GOOFING +GOOFS +GOOFY +GOOGLIES +GOOGLY +GOOGOL +GOOGOLPLEX +GOOGOLPLEXES +GOOGOLS +GOOIER +GOOIEST +GOOK +GOOKS +GOOKY +GOOMBAH +GOOMBAHS +GOOMBAY +GOOMBAYS +GOON +GOONEY +GOONEYS +GOONIE +GOONIER +GOONIES +GOONIEST +GOONS +GOONY +GOOP +GOOPIER +GOOPIEST +GOOPS +GOOPY +GOORAL +GOORALS +GOOS +GOOSANDER +GOOSANDERS +GOOSE +GOOSEBERRIES +GOOSEBERRY +GOOSED +GOOSEFISH +GOOSEFISHES +GOOSEFLESH +GOOSEFLESHES +GOOSEFOOT +GOOSEFOOTS +GOOSEGRASS +GOOSEGRASSES +GOOSEHERD +GOOSEHERDS +GOOSENECK +GOOSENECKED +GOOSENECKS +GOOSES +GOOSEY +GOOSIER +GOOSIEST +GOOSING +GOOSY +GOPHER +GOPHERS +GOPIK +GOR +GORAL +GORALS +GORBELLIES +GORBELLY +GORBLIMY +GORCOCK +GORCOCKS +GORDITA +GORDITAS +GORE +GORED +GORES +GORGE +GORGED +GORGEDLY +GORGEOUS +GORGEOUSLY +GORGEOUSNESS +GORGEOUSNESSES +GORGER +GORGERIN +GORGERINS +GORGERS +GORGES +GORGET +GORGETED +GORGETS +GORGING +GORGON +GORGONIAN +GORGONIANS +GORGONIZE +GORGONIZED +GORGONIZES +GORGONIZING +GORGONS +GORHEN +GORHENS +GORIER +GORIEST +GORILLA +GORILLAS +GORILY +GORINESS +GORINESSES +GORING +GORM +GORMAND +GORMANDISE +GORMANDISED +GORMANDISES +GORMANDISING +GORMANDIZE +GORMANDIZED +GORMANDIZER +GORMANDIZERS +GORMANDIZES +GORMANDIZING +GORMANDS +GORMED +GORMING +GORMLESS +GORMS +GORP +GORPS +GORSE +GORSES +GORSIER +GORSIEST +GORSY +GORY +GOS +GOSH +GOSHAWK +GOSHAWKS +GOSLING +GOSLINGS +GOSPEL +GOSPELER +GOSPELERS +GOSPELLER +GOSPELLERS +GOSPELLY +GOSPELS +GOSPORT +GOSPORTS +GOSSAMER +GOSSAMERS +GOSSAMERY +GOSSAN +GOSSANS +GOSSIP +GOSSIPED +GOSSIPER +GOSSIPERS +GOSSIPING +GOSSIPMONGER +GOSSIPMONGERS +GOSSIPPED +GOSSIPPER +GOSSIPPERS +GOSSIPPING +GOSSIPRIES +GOSSIPRY +GOSSIPS +GOSSIPY +GOSSOON +GOSSOONS +GOSSYPOL +GOSSYPOLS +GOT +GOTCHA +GOTCHAS +GOTH +GOTHIC +GOTHICALLY +GOTHICISM +GOTHICISMS +GOTHICIZE +GOTHICIZED +GOTHICIZES +GOTHICIZING +GOTHICS +GOTHITE +GOTHITES +GOTHS +GOTTEN +GOUACHE +GOUACHES +GOUGE +GOUGED +GOUGER +GOUGERS +GOUGES +GOUGING +GOULASH +GOULASHES +GOURAMI +GOURAMIES +GOURAMIS +GOURD +GOURDE +GOURDES +GOURDS +GOURMAND +GOURMANDISE +GOURMANDISES +GOURMANDISM +GOURMANDISMS +GOURMANDIZE +GOURMANDIZED +GOURMANDIZES +GOURMANDIZING +GOURMANDS +GOURMET +GOURMETS +GOUT +GOUTIER +GOUTIEST +GOUTILY +GOUTINESS +GOUTINESSES +GOUTS +GOUTY +GOVERN +GOVERNABLE +GOVERNANCE +GOVERNANCES +GOVERNED +GOVERNESS +GOVERNESSES +GOVERNESSY +GOVERNING +GOVERNMENT +GOVERNMENTAL +GOVERNMENTALISM +GOVERNMENTALIST +GOVERNMENTALIZE +GOVERNMENTALLY +GOVERNMENTESE +GOVERNMENTESES +GOVERNMENTS +GOVERNOR +GOVERNORATE +GOVERNORATES +GOVERNORS +GOVERNORSHIP +GOVERNORSHIPS +GOVERNS +GOWAN +GOWANED +GOWANS +GOWANY +GOWD +GOWDS +GOWK +GOWKS +GOWN +GOWNED +GOWNING +GOWNS +GOWNSMAN +GOWNSMEN +GOX +GOXES +GOY +GOYIM +GOYISH +GOYS +GRAAL +GRAALS +GRAB +GRABBABLE +GRABBED +GRABBER +GRABBERS +GRABBIER +GRABBIEST +GRABBING +GRABBLE +GRABBLED +GRABBLER +GRABBLERS +GRABBLES +GRABBLING +GRABBY +GRABEN +GRABENS +GRABS +GRACE +GRACED +GRACEFUL +GRACEFULLER +GRACEFULLEST +GRACEFULLY +GRACEFULNESS +GRACEFULNESSES +GRACELESS +GRACELESSLY +GRACELESSNESS +GRACELESSNESSES +GRACES +GRACILE +GRACILENESS +GRACILENESSES +GRACILES +GRACILIS +GRACILITIES +GRACILITY +GRACING +GRACIOSO +GRACIOSOS +GRACIOUS +GRACIOUSLY +GRACIOUSNESS +GRACIOUSNESSES +GRACKLE +GRACKLES +GRAD +GRADABLE +GRADATE +GRADATED +GRADATES +GRADATING +GRADATION +GRADATIONAL +GRADATIONALLY +GRADATIONS +GRADE +GRADED +GRADELESS +GRADER +GRADERS +GRADES +GRADIENT +GRADIENTS +GRADIN +GRADINE +GRADINES +GRADING +GRADINS +GRADIOMETER +GRADIOMETERS +GRADS +GRADUAL +GRADUALISM +GRADUALISMS +GRADUALIST +GRADUALISTS +GRADUALLY +GRADUALNESS +GRADUALNESSES +GRADUALS +GRADUAND +GRADUANDS +GRADUATE +GRADUATED +GRADUATES +GRADUATING +GRADUATION +GRADUATIONS +GRADUATOR +GRADUATORS +GRADUS +GRADUSES +GRAECIZE +GRAECIZED +GRAECIZES +GRAECIZING +GRAFFITI +GRAFFITIED +GRAFFITIING +GRAFFITING +GRAFFITIS +GRAFFITIST +GRAFFITISTS +GRAFFITO +GRAFT +GRAFTAGE +GRAFTAGES +GRAFTED +GRAFTER +GRAFTERS +GRAFTING +GRAFTS +GRAHAM +GRAHAMS +GRAIL +GRAILS +GRAIN +GRAINED +GRAINER +GRAINERS +GRAINFIELD +GRAINFIELDS +GRAINIER +GRAINIEST +GRAININESS +GRAININESSES +GRAINING +GRAINLESS +GRAINS +GRAINY +GRAM +GRAMA +GRAMARIES +GRAMARY +GRAMARYE +GRAMARYES +GRAMAS +GRAMERCIES +GRAMERCY +GRAMICIDIN +GRAMICIDINS +GRAMINEOUS +GRAMINIVOROUS +GRAMMA +GRAMMAR +GRAMMARIAN +GRAMMARIANS +GRAMMARS +GRAMMAS +GRAMMATICAL +GRAMMATICALITY +GRAMMATICALLY +GRAMMATICALNESS +GRAMME +GRAMMES +GRAMOPHONE +GRAMOPHONES +GRAMP +GRAMPA +GRAMPAS +GRAMPS +GRAMPUS +GRAMPUSES +GRAMS +GRAN +GRANA +GRANADILLA +GRANADILLAS +GRANARIES +GRANARY +GRAND +GRANDAD +GRANDADDIES +GRANDADDY +GRANDADS +GRANDAM +GRANDAME +GRANDAMES +GRANDAMS +GRANDAUNT +GRANDAUNTS +GRANDBABIES +GRANDBABY +GRANDCHILD +GRANDCHILDREN +GRANDDAD +GRANDDADDIES +GRANDDADDY +GRANDDADS +GRANDDAM +GRANDDAMS +GRANDDAUGHTER +GRANDDAUGHTERS +GRANDEE +GRANDEES +GRANDER +GRANDEST +GRANDEUR +GRANDEURS +GRANDFATHER +GRANDFATHERED +GRANDFATHERING +GRANDFATHERLY +GRANDFATHERS +GRANDIFLORA +GRANDIFLORAS +GRANDILOQUENCE +GRANDILOQUENCES +GRANDILOQUENT +GRANDILOQUENTLY +GRANDIOSE +GRANDIOSELY +GRANDIOSENESS +GRANDIOSENESSES +GRANDIOSITIES +GRANDIOSITY +GRANDIOSO +GRANDKID +GRANDKIDS +GRANDLY +GRANDMA +GRANDMAMA +GRANDMAMAS +GRANDMAS +GRANDMOTHER +GRANDMOTHERLY +GRANDMOTHERS +GRANDNEPHEW +GRANDNEPHEWS +GRANDNESS +GRANDNESSES +GRANDNIECE +GRANDNIECES +GRANDPA +GRANDPAPA +GRANDPAPAS +GRANDPARENT +GRANDPARENTAL +GRANDPARENTHOOD +GRANDPARENTS +GRANDPAS +GRANDS +GRANDSIR +GRANDSIRE +GRANDSIRES +GRANDSIRS +GRANDSON +GRANDSONS +GRANDSTAND +GRANDSTANDED +GRANDSTANDER +GRANDSTANDERS +GRANDSTANDING +GRANDSTANDS +GRANDUNCLE +GRANDUNCLES +GRANGE +GRANGER +GRANGERISM +GRANGERISMS +GRANGERS +GRANGES +GRANITA +GRANITAS +GRANITE +GRANITELIKE +GRANITES +GRANITEWARE +GRANITEWARES +GRANITIC +GRANITOID +GRANIVOROUS +GRANNIE +GRANNIES +GRANNY +GRANODIORITE +GRANODIORITES +GRANODIORITIC +GRANOLA +GRANOLAS +GRANOLITH +GRANOLITHIC +GRANOLITHS +GRANOPHYRE +GRANOPHYRES +GRANOPHYRIC +GRANS +GRANT +GRANTABLE +GRANTED +GRANTEE +GRANTEES +GRANTER +GRANTERS +GRANTING +GRANTOR +GRANTORS +GRANTS +GRANTSMAN +GRANTSMANSHIP +GRANTSMANSHIPS +GRANTSMEN +GRANULAR +GRANULARITIES +GRANULARITY +GRANULATE +GRANULATED +GRANULATES +GRANULATING +GRANULATION +GRANULATIONS +GRANULATOR +GRANULATORS +GRANULE +GRANULES +GRANULITE +GRANULITES +GRANULITIC +GRANULOCYTE +GRANULOCYTES +GRANULOCYTIC +GRANULOMA +GRANULOMAS +GRANULOMATA +GRANULOMATOUS +GRANULOSE +GRANULOSES +GRANULOSIS +GRANUM +GRAPE +GRAPEFRUIT +GRAPEFRUITS +GRAPELIKE +GRAPERIES +GRAPERY +GRAPES +GRAPESHOT +GRAPEVINE +GRAPEVINES +GRAPEY +GRAPH +GRAPHED +GRAPHEME +GRAPHEMES +GRAPHEMIC +GRAPHEMICALLY +GRAPHEMICS +GRAPHIC +GRAPHICAL +GRAPHICALLY +GRAPHICNESS +GRAPHICNESSES +GRAPHICS +GRAPHING +GRAPHITE +GRAPHITES +GRAPHITIC +GRAPHITIZABLE +GRAPHITIZATION +GRAPHITIZATIONS +GRAPHITIZE +GRAPHITIZED +GRAPHITIZES +GRAPHITIZING +GRAPHOLECT +GRAPHOLECTS +GRAPHOLOGICAL +GRAPHOLOGIES +GRAPHOLOGIST +GRAPHOLOGISTS +GRAPHOLOGY +GRAPHS +GRAPIER +GRAPIEST +GRAPINESS +GRAPINESSES +GRAPLIN +GRAPLINE +GRAPLINES +GRAPLINS +GRAPNEL +GRAPNELS +GRAPPA +GRAPPAS +GRAPPLE +GRAPPLED +GRAPPLER +GRAPPLERS +GRAPPLES +GRAPPLING +GRAPPLINGS +GRAPTOLITE +GRAPTOLITES +GRAPY +GRASP +GRASPABLE +GRASPED +GRASPER +GRASPERS +GRASPING +GRASPINGLY +GRASPINGNESS +GRASPINGNESSES +GRASPS +GRASS +GRASSED +GRASSES +GRASSHOPPER +GRASSHOPPERS +GRASSIER +GRASSIEST +GRASSILY +GRASSING +GRASSLAND +GRASSLANDS +GRASSLESS +GRASSLIKE +GRASSPLOT +GRASSPLOTS +GRASSROOT +GRASSROOTS +GRASSY +GRAT +GRATE +GRATED +GRATEFUL +GRATEFULLER +GRATEFULLEST +GRATEFULLY +GRATEFULNESS +GRATEFULNESSES +GRATELESS +GRATER +GRATERS +GRATES +GRATICULE +GRATICULES +GRATIFICATION +GRATIFICATIONS +GRATIFIED +GRATIFIER +GRATIFIERS +GRATIFIES +GRATIFY +GRATIFYING +GRATIFYINGLY +GRATIN +GRATINE +GRATINEE +GRATINEED +GRATINEEING +GRATINEES +GRATING +GRATINGLY +GRATINGS +GRATINS +GRATIS +GRATITUDE +GRATITUDES +GRATUITIES +GRATUITOUS +GRATUITOUSLY +GRATUITOUSNESS +GRATUITY +GRATULATE +GRATULATED +GRATULATES +GRATULATING +GRATULATION +GRATULATIONS +GRATULATORY +GRAUPEL +GRAUPELS +GRAVAMEN +GRAVAMENS +GRAVAMINA +GRAVE +GRAVED +GRAVEL +GRAVELED +GRAVELESS +GRAVELIKE +GRAVELING +GRAVELLED +GRAVELLING +GRAVELLY +GRAVELS +GRAVELY +GRAVEN +GRAVENESS +GRAVENESSES +GRAVER +GRAVERS +GRAVES +GRAVESIDE +GRAVESIDES +GRAVESITE +GRAVESITES +GRAVEST +GRAVESTONE +GRAVESTONES +GRAVEWARD +GRAVEYARD +GRAVEYARDS +GRAVID +GRAVIDA +GRAVIDAE +GRAVIDAS +GRAVIDITIES +GRAVIDITY +GRAVIDLY +GRAVIES +GRAVIMETER +GRAVIMETERS +GRAVIMETRIC +GRAVIMETRICALLY +GRAVIMETRIES +GRAVIMETRY +GRAVING +GRAVITAS +GRAVITASES +GRAVITATE +GRAVITATED +GRAVITATES +GRAVITATING +GRAVITATION +GRAVITATIONAL +GRAVITATIONALLY +GRAVITATIONS +GRAVITATIVE +GRAVITIES +GRAVITINO +GRAVITINOS +GRAVITON +GRAVITONS +GRAVITY +GRAVLAKS +GRAVLAX +GRAVURE +GRAVURES +GRAVY +GRAY +GRAYBACK +GRAYBACKS +GRAYBEARD +GRAYBEARDS +GRAYED +GRAYER +GRAYEST +GRAYFISH +GRAYFISHES +GRAYHOUND +GRAYHOUNDS +GRAYING +GRAYISH +GRAYLAG +GRAYLAGS +GRAYLING +GRAYLINGS +GRAYLY +GRAYMAIL +GRAYMAILS +GRAYNESS +GRAYNESSES +GRAYOUT +GRAYOUTS +GRAYS +GRAYSCALE +GRAYWACKE +GRAYWACKES +GRAYWATER +GRAYWATERS +GRAZABLE +GRAZE +GRAZEABLE +GRAZED +GRAZER +GRAZERS +GRAZES +GRAZIER +GRAZIERS +GRAZING +GRAZINGLY +GRAZINGS +GRAZIOSO +GREASE +GREASEBALL +GREASEBALLS +GREASED +GREASELESS +GREASEPAINT +GREASEPAINTS +GREASEPROOF +GREASEPROOFS +GREASER +GREASERS +GREASES +GREASEWOOD +GREASEWOODS +GREASIER +GREASIEST +GREASILY +GREASINESS +GREASINESSES +GREASING +GREASY +GREAT +GREATCOAT +GREATCOATS +GREATEN +GREATENED +GREATENING +GREATENS +GREATER +GREATEST +GREATHEARTED +GREATHEARTEDLY +GREATLY +GREATNESS +GREATNESSES +GREATS +GREAVE +GREAVED +GREAVES +GREBE +GREBES +GRECIANIZE +GRECIANIZED +GRECIANIZES +GRECIANIZING +GRECIZE +GRECIZED +GRECIZES +GRECIZING +GREE +GREED +GREEDIER +GREEDIEST +GREEDILY +GREEDINESS +GREEDINESSES +GREEDLESS +GREEDS +GREEDSOME +GREEDY +GREEGREE +GREEGREES +GREEING +GREEK +GREEN +GREENBACK +GREENBACKER +GREENBACKERS +GREENBACKISM +GREENBACKISMS +GREENBACKS +GREENBELT +GREENBELTS +GREENBRIER +GREENBRIERS +GREENBUG +GREENBUGS +GREENED +GREENER +GREENERIES +GREENERY +GREENEST +GREENFIELD +GREENFIELDS +GREENFINCH +GREENFINCHES +GREENFLIES +GREENFLY +GREENGAGE +GREENGAGES +GREENGROCER +GREENGROCERIES +GREENGROCERS +GREENGROCERY +GREENHEAD +GREENHEADS +GREENHEART +GREENHEARTS +GREENHORN +GREENHORNS +GREENHOUSE +GREENHOUSES +GREENIE +GREENIER +GREENIES +GREENIEST +GREENING +GREENINGS +GREENISH +GREENISHNESS +GREENISHNESSES +GREENKEEPER +GREENKEEPERS +GREENLET +GREENLETS +GREENLIGHT +GREENLIGHTED +GREENLIGHTING +GREENLIGHTS +GREENLING +GREENLINGS +GREENLIT +GREENLY +GREENMAIL +GREENMAILED +GREENMAILER +GREENMAILERS +GREENMAILING +GREENMAILS +GREENNESS +GREENNESSES +GREENOCKITE +GREENOCKITES +GREENROOM +GREENROOMS +GREENS +GREENSAND +GREENSANDS +GREENSHANK +GREENSHANKS +GREENSICK +GREENSICKNESS +GREENSICKNESSES +GREENSKEEPER +GREENSKEEPERS +GREENSTONE +GREENSTONES +GREENSTUFF +GREENSTUFFS +GREENSWARD +GREENSWARDS +GREENTH +GREENTHS +GREENWASH +GREENWASHES +GREENWAY +GREENWAYS +GREENWING +GREENWINGS +GREENWOOD +GREENWOODS +GREENY +GREES +GREET +GREETED +GREETER +GREETERS +GREETING +GREETINGS +GREETS +GREGARINE +GREGARINES +GREGARIOUS +GREGARIOUSLY +GREGARIOUSNESS +GREGO +GREGOS +GREIGE +GREIGES +GREISEN +GREISENS +GREMIAL +GREMIALS +GREMLIN +GREMLINS +GREMMIE +GREMMIES +GREMMY +GRENADE +GRENADES +GRENADIER +GRENADIERS +GRENADINE +GRENADINES +GREW +GREWSOME +GREWSOMER +GREWSOMEST +GREY +GREYED +GREYER +GREYEST +GREYHEN +GREYHENS +GREYHOUND +GREYHOUNDS +GREYING +GREYISH +GREYLAG +GREYLAGS +GREYLY +GREYNESS +GREYNESSES +GREYS +GRIBBLE +GRIBBLES +GRID +GRIDDED +GRIDDER +GRIDDERS +GRIDDLE +GRIDDLED +GRIDDLES +GRIDDLING +GRIDE +GRIDED +GRIDES +GRIDING +GRIDIRON +GRIDIRONED +GRIDIRONING +GRIDIRONS +GRIDLOCK +GRIDLOCKED +GRIDLOCKING +GRIDLOCKS +GRIDS +GRIEF +GRIEFS +GRIEVANCE +GRIEVANCES +GRIEVANT +GRIEVANTS +GRIEVE +GRIEVED +GRIEVER +GRIEVERS +GRIEVES +GRIEVING +GRIEVOUS +GRIEVOUSLY +GRIEVOUSNESS +GRIEVOUSNESSES +GRIFF +GRIFFE +GRIFFES +GRIFFIN +GRIFFINS +GRIFFON +GRIFFONS +GRIFFS +GRIFT +GRIFTED +GRIFTER +GRIFTERS +GRIFTING +GRIFTS +GRIG +GRIGRI +GRIGRIS +GRIGS +GRILL +GRILLADE +GRILLADES +GRILLAGE +GRILLAGES +GRILLE +GRILLED +GRILLER +GRILLERIES +GRILLERS +GRILLERY +GRILLES +GRILLING +GRILLROOM +GRILLROOMS +GRILLS +GRILLWORK +GRILLWORKS +GRILSE +GRILSES +GRIM +GRIMACE +GRIMACED +GRIMACER +GRIMACERS +GRIMACES +GRIMACING +GRIMALKIN +GRIMALKINS +GRIME +GRIMED +GRIMES +GRIMIER +GRIMIEST +GRIMILY +GRIMINESS +GRIMINESSES +GRIMING +GRIMLY +GRIMMER +GRIMMEST +GRIMNESS +GRIMNESSES +GRIMY +GRIN +GRINCH +GRINCHES +GRIND +GRINDED +GRINDELIA +GRINDELIAS +GRINDER +GRINDERIES +GRINDERS +GRINDERY +GRINDING +GRINDINGLY +GRINDS +GRINDSTONE +GRINDSTONES +GRINGA +GRINGAS +GRINGO +GRINGOS +GRINNED +GRINNER +GRINNERS +GRINNING +GRINNINGLY +GRINS +GRIOT +GRIOTS +GRIP +GRIPE +GRIPED +GRIPER +GRIPERS +GRIPES +GRIPEY +GRIPIER +GRIPIEST +GRIPING +GRIPMAN +GRIPMEN +GRIPPE +GRIPPED +GRIPPER +GRIPPERS +GRIPPES +GRIPPIER +GRIPPIEST +GRIPPING +GRIPPINGLY +GRIPPLE +GRIPPY +GRIPS +GRIPSACK +GRIPSACKS +GRIPT +GRIPY +GRISAILLE +GRISAILLES +GRISEOFULVIN +GRISEOFULVINS +GRISEOUS +GRISETTE +GRISETTES +GRISKIN +GRISKINS +GRISLIER +GRISLIEST +GRISLINESS +GRISLINESSES +GRISLY +GRISON +GRISONS +GRIST +GRISTER +GRISTERS +GRISTLE +GRISTLES +GRISTLIER +GRISTLIEST +GRISTLINESS +GRISTLINESSES +GRISTLY +GRISTMILL +GRISTMILLS +GRISTS +GRIT +GRITH +GRITHS +GRITS +GRITTED +GRITTER +GRITTERS +GRITTIER +GRITTIEST +GRITTILY +GRITTINESS +GRITTINESSES +GRITTING +GRITTY +GRIVET +GRIVETS +GRIZZLE +GRIZZLED +GRIZZLER +GRIZZLERS +GRIZZLES +GRIZZLIER +GRIZZLIES +GRIZZLIEST +GRIZZLING +GRIZZLY +GROAN +GROANED +GROANER +GROANERS +GROANING +GROANS +GROAT +GROATS +GROCER +GROCERIES +GROCERS +GROCERY +GRODIER +GRODIEST +GRODY +GROG +GROGGERIES +GROGGERY +GROGGIER +GROGGIEST +GROGGILY +GROGGINESS +GROGGINESSES +GROGGY +GROGRAM +GROGRAMS +GROGS +GROGSHOP +GROGSHOPS +GROIN +GROINED +GROINING +GROINS +GROK +GROKKED +GROKKING +GROKS +GROMMET +GROMMETED +GROMMETING +GROMMETS +GROMWELL +GROMWELLS +GROOM +GROOMED +GROOMER +GROOMERS +GROOMING +GROOMS +GROOMSMAN +GROOMSMEN +GROOVE +GROOVED +GROOVER +GROOVERS +GROOVES +GROOVIER +GROOVIEST +GROOVING +GROOVY +GROPE +GROPED +GROPER +GROPERS +GROPES +GROPING +GROPINGLY +GROSBEAK +GROSBEAKS +GROSCHEN +GROSGRAIN +GROSGRAINS +GROSS +GROSSED +GROSSER +GROSSERS +GROSSES +GROSSEST +GROSSING +GROSSLY +GROSSNESS +GROSSNESSES +GROSSULAR +GROSSULARITE +GROSSULARITES +GROSSULARS +GROSZ +GROSZE +GROSZY +GROT +GROTESQUE +GROTESQUELY +GROTESQUENESS +GROTESQUENESSES +GROTESQUERIE +GROTESQUERIES +GROTESQUERY +GROTESQUES +GROTS +GROTTIER +GROTTIEST +GROTTO +GROTTOED +GROTTOES +GROTTOS +GROTTY +GROUCH +GROUCHED +GROUCHES +GROUCHIER +GROUCHIEST +GROUCHILY +GROUCHINESS +GROUCHINESSES +GROUCHING +GROUCHY +GROUND +GROUNDBREAKER +GROUNDBREAKERS +GROUNDBREAKING +GROUNDBURST +GROUNDBURSTS +GROUNDED +GROUNDER +GROUNDERS +GROUNDFISH +GROUNDFISHES +GROUNDHOG +GROUNDHOGS +GROUNDING +GROUNDINGS +GROUNDLESS +GROUNDLESSLY +GROUNDLESSNESS +GROUNDLING +GROUNDLINGS +GROUNDMASS +GROUNDMASSES +GROUNDNUT +GROUNDNUTS +GROUNDOUT +GROUNDOUTS +GROUNDS +GROUNDSEL +GROUNDSELS +GROUNDSHEET +GROUNDSHEETS +GROUNDSKEEPER +GROUNDSKEEPERS +GROUNDSMAN +GROUNDSMEN +GROUNDSWELL +GROUNDSWELLS +GROUNDWATER +GROUNDWATERS +GROUNDWOOD +GROUNDWOODS +GROUNDWORK +GROUNDWORKS +GROUP +GROUPABLE +GROUPED +GROUPER +GROUPERS +GROUPIE +GROUPIES +GROUPING +GROUPINGS +GROUPOID +GROUPOIDS +GROUPS +GROUPTHINK +GROUPTHINKS +GROUPUSCULE +GROUPUSCULES +GROUPWARE +GROUPWARES +GROUSE +GROUSED +GROUSER +GROUSERS +GROUSES +GROUSING +GROUT +GROUTED +GROUTER +GROUTERS +GROUTIER +GROUTIEST +GROUTING +GROUTS +GROUTY +GROVE +GROVED +GROVEL +GROVELED +GROVELER +GROVELERS +GROVELESS +GROVELING +GROVELINGLY +GROVELLED +GROVELLER +GROVELLERS +GROVELLING +GROVELS +GROVES +GROW +GROWABLE +GROWER +GROWERS +GROWING +GROWINGLY +GROWL +GROWLED +GROWLER +GROWLERS +GROWLIER +GROWLIEST +GROWLINESS +GROWLINESSES +GROWLING +GROWLINGLY +GROWLS +GROWLY +GROWN +GROWNUP +GROWNUPS +GROWS +GROWTH +GROWTHIER +GROWTHIEST +GROWTHINESS +GROWTHINESSES +GROWTHS +GROWTHY +GROYNE +GROYNES +GRUB +GRUBBED +GRUBBER +GRUBBERS +GRUBBIER +GRUBBIEST +GRUBBILY +GRUBBINESS +GRUBBINESSES +GRUBBING +GRUBBY +GRUBS +GRUBSTAKE +GRUBSTAKED +GRUBSTAKER +GRUBSTAKERS +GRUBSTAKES +GRUBSTAKING +GRUBWORM +GRUBWORMS +GRUDGE +GRUDGED +GRUDGER +GRUDGERS +GRUDGES +GRUDGING +GRUDGINGLY +GRUE +GRUEL +GRUELED +GRUELER +GRUELERS +GRUELING +GRUELINGLY +GRUELINGS +GRUELLED +GRUELLER +GRUELLERS +GRUELLING +GRUELLINGS +GRUELS +GRUES +GRUESOME +GRUESOMELY +GRUESOMENESS +GRUESOMENESSES +GRUESOMER +GRUESOMEST +GRUFF +GRUFFED +GRUFFER +GRUFFEST +GRUFFIER +GRUFFIEST +GRUFFILY +GRUFFING +GRUFFISH +GRUFFLY +GRUFFNESS +GRUFFNESSES +GRUFFS +GRUFFY +GRUGRU +GRUGRUS +GRUIFORM +GRUM +GRUMBLE +GRUMBLED +GRUMBLER +GRUMBLERS +GRUMBLES +GRUMBLING +GRUMBLINGLY +GRUMBLY +GRUME +GRUMES +GRUMMER +GRUMMEST +GRUMMET +GRUMMETED +GRUMMETING +GRUMMETS +GRUMOSE +GRUMOUS +GRUMP +GRUMPED +GRUMPHIE +GRUMPHIES +GRUMPHY +GRUMPIER +GRUMPIEST +GRUMPILY +GRUMPINESS +GRUMPINESSES +GRUMPING +GRUMPISH +GRUMPS +GRUMPY +GRUNGE +GRUNGER +GRUNGERS +GRUNGES +GRUNGIER +GRUNGIEST +GRUNGY +GRUNION +GRUNIONS +GRUNT +GRUNTED +GRUNTER +GRUNTERS +GRUNTING +GRUNTLE +GRUNTLED +GRUNTLES +GRUNTLING +GRUNTS +GRUSHIE +GRUTCH +GRUTCHED +GRUTCHES +GRUTCHING +GRUTTEN +GRUYERE +GRUYERES +GRYPHON +GRYPHONS +GUACAMOLE +GUACAMOLES +GUACHARO +GUACHAROES +GUACHAROS +GUACO +GUACOS +GUAIAC +GUAIACOL +GUAIACOLS +GUAIACS +GUAIACUM +GUAIACUMS +GUAIOCUM +GUAIOCUMS +GUAN +GUANABANA +GUANABANAS +GUANACO +GUANACOS +GUANASE +GUANASES +GUANAY +GUANAYS +GUANETHIDINE +GUANETHIDINES +GUANIDIN +GUANIDINE +GUANIDINES +GUANIDINS +GUANIN +GUANINE +GUANINES +GUANINS +GUANO +GUANOS +GUANOSINE +GUANOSINES +GUANS +GUAR +GUARANA +GUARANAS +GUARANI +GUARANIES +GUARANIS +GUARANTEE +GUARANTEED +GUARANTEEING +GUARANTEES +GUARANTIED +GUARANTIES +GUARANTOR +GUARANTORS +GUARANTY +GUARANTYING +GUARD +GUARDANT +GUARDANTS +GUARDDOG +GUARDDOGS +GUARDED +GUARDEDLY +GUARDEDNESS +GUARDEDNESSES +GUARDER +GUARDERS +GUARDHOUSE +GUARDHOUSES +GUARDIAN +GUARDIANS +GUARDIANSHIP +GUARDIANSHIPS +GUARDING +GUARDRAIL +GUARDRAILS +GUARDROOM +GUARDROOMS +GUARDS +GUARDSMAN +GUARDSMEN +GUARS +GUAVA +GUAVAS +GUAYABERA +GUAYABERAS +GUAYULE +GUAYULES +GUBERNATORIAL +GUCK +GUCKS +GUDE +GUDES +GUDGEON +GUDGEONED +GUDGEONING +GUDGEONS +GUENON +GUENONS +GUERDON +GUERDONED +GUERDONING +GUERDONS +GUERIDON +GUERIDONS +GUERILLA +GUERILLAS +GUERNSEY +GUERNSEYS +GUERRILLA +GUERRILLAS +GUESS +GUESSABLE +GUESSED +GUESSER +GUESSERS +GUESSES +GUESSING +GUESSTIMATE +GUESSTIMATED +GUESSTIMATES +GUESSTIMATING +GUESSWORK +GUESSWORKS +GUEST +GUESTED +GUESTING +GUESTS +GUFF +GUFFAW +GUFFAWED +GUFFAWING +GUFFAWS +GUFFS +GUGGLE +GUGGLED +GUGGLES +GUGGLING +GUGLET +GUGLETS +GUID +GUIDABLE +GUIDANCE +GUIDANCES +GUIDE +GUIDEBOOK +GUIDEBOOKS +GUIDED +GUIDELESS +GUIDELINE +GUIDELINES +GUIDEPOST +GUIDEPOSTS +GUIDER +GUIDERS +GUIDES +GUIDEWAY +GUIDEWAYS +GUIDEWORD +GUIDEWORDS +GUIDING +GUIDON +GUIDONS +GUIDS +GUIDWILLIE +GUILD +GUILDER +GUILDERS +GUILDHALL +GUILDHALLS +GUILDS +GUILDSHIP +GUILDSHIPS +GUILDSMAN +GUILDSMEN +GUILE +GUILED +GUILEFUL +GUILEFULLY +GUILEFULNESS +GUILEFULNESSES +GUILELESS +GUILELESSLY +GUILELESSNESS +GUILELESSNESSES +GUILES +GUILING +GUILLEMET +GUILLEMETS +GUILLEMOT +GUILLEMOTS +GUILLOCHE +GUILLOCHES +GUILLOTINE +GUILLOTINED +GUILLOTINES +GUILLOTINING +GUILT +GUILTIER +GUILTIEST +GUILTILY +GUILTINESS +GUILTINESSES +GUILTLESS +GUILTLESSLY +GUILTLESSNESS +GUILTLESSNESSES +GUILTS +GUILTY +GUIMPE +GUIMPES +GUINEA +GUINEAS +GUIPURE +GUIPURES +GUIRO +GUIROS +GUISARD +GUISARDS +GUISE +GUISED +GUISES +GUISING +GUITAR +GUITARFISH +GUITARFISHES +GUITARIST +GUITARISTS +GUITARS +GUITGUIT +GUITGUITS +GUL +GULAG +GULAGS +GULAR +GULCH +GULCHES +GULDEN +GULDENS +GULES +GULF +GULFED +GULFIER +GULFIEST +GULFING +GULFLIKE +GULFS +GULFWEED +GULFWEEDS +GULFY +GULL +GULLABLE +GULLABLY +GULLED +GULLET +GULLETS +GULLEY +GULLEYS +GULLIBILITIES +GULLIBILITY +GULLIBLE +GULLIBLY +GULLIED +GULLIES +GULLING +GULLS +GULLWING +GULLY +GULLYING +GULOSITIES +GULOSITY +GULP +GULPED +GULPER +GULPERS +GULPIER +GULPIEST +GULPING +GULPINGLY +GULPS +GULPY +GULS +GUM +GUMBALL +GUMBALLS +GUMBO +GUMBOIL +GUMBOILS +GUMBOOT +GUMBOOTS +GUMBOS +GUMBOTIL +GUMBOTILS +GUMDROP +GUMDROPS +GUMLESS +GUMLIKE +GUMLINE +GUMLINES +GUMMA +GUMMAS +GUMMATA +GUMMATOUS +GUMMED +GUMMER +GUMMERS +GUMMIER +GUMMIEST +GUMMINESS +GUMMINESSES +GUMMING +GUMMITE +GUMMITES +GUMMOSE +GUMMOSES +GUMMOSIS +GUMMOUS +GUMMY +GUMPTION +GUMPTIONS +GUMPTIOUS +GUMS +GUMSHOE +GUMSHOED +GUMSHOEING +GUMSHOES +GUMTREE +GUMTREES +GUMWEED +GUMWEEDS +GUMWOOD +GUMWOODS +GUN +GUNBOAT +GUNBOATS +GUNCOTTON +GUNCOTTONS +GUNDOG +GUNDOGS +GUNFIGHT +GUNFIGHTER +GUNFIGHTERS +GUNFIGHTING +GUNFIGHTS +GUNFIRE +GUNFIRES +GUNFLINT +GUNFLINTS +GUNFOUGHT +GUNITE +GUNITES +GUNK +GUNKHOLE +GUNKHOLED +GUNKHOLES +GUNKHOLING +GUNKIER +GUNKIEST +GUNKS +GUNKY +GUNLESS +GUNLOCK +GUNLOCKS +GUNMAN +GUNMEN +GUNMETAL +GUNMETALS +GUNNED +GUNNEL +GUNNELS +GUNNEN +GUNNER +GUNNERIES +GUNNERS +GUNNERY +GUNNIES +GUNNING +GUNNINGS +GUNNY +GUNNYBAG +GUNNYBAGS +GUNNYSACK +GUNNYSACKS +GUNPAPER +GUNPAPERS +GUNPLAY +GUNPLAYS +GUNPOINT +GUNPOINTS +GUNPOWDER +GUNPOWDERS +GUNROOM +GUNROOMS +GUNRUNNER +GUNRUNNERS +GUNRUNNING +GUNRUNNINGS +GUNS +GUNSEL +GUNSELS +GUNSHIP +GUNSHIPS +GUNSHOT +GUNSHOTS +GUNSLINGER +GUNSLINGERS +GUNSLINGING +GUNSLINGINGS +GUNSMITH +GUNSMITHING +GUNSMITHINGS +GUNSMITHS +GUNSTOCK +GUNSTOCKS +GUNWALE +GUNWALES +GUPPIES +GUPPY +GURGE +GURGED +GURGES +GURGING +GURGLE +GURGLED +GURGLES +GURGLET +GURGLETS +GURGLING +GURNARD +GURNARDS +GURNET +GURNETS +GURNEY +GURNEYS +GURRIES +GURRY +GURSH +GURSHES +GURU +GURUS +GURUSHIP +GURUSHIPS +GUSH +GUSHED +GUSHER +GUSHERS +GUSHES +GUSHIER +GUSHIEST +GUSHILY +GUSHINESS +GUSHINESSES +GUSHING +GUSHINGLY +GUSHY +GUSSET +GUSSETED +GUSSETING +GUSSETS +GUSSIE +GUSSIED +GUSSIES +GUSSY +GUSSYING +GUST +GUSTABLE +GUSTABLES +GUSTATION +GUSTATIONS +GUSTATIVE +GUSTATORILY +GUSTATORY +GUSTED +GUSTIER +GUSTIEST +GUSTILY +GUSTINESS +GUSTINESSES +GUSTING +GUSTLESS +GUSTO +GUSTOES +GUSTS +GUSTY +GUT +GUTBUCKET +GUTBUCKETS +GUTLESS +GUTLESSNESS +GUTLESSNESSES +GUTLIKE +GUTS +GUTSIER +GUTSIEST +GUTSILY +GUTSINESS +GUTSINESSES +GUTSY +GUTTA +GUTTAE +GUTTATE +GUTTATED +GUTTATION +GUTTATIONS +GUTTED +GUTTER +GUTTERED +GUTTERING +GUTTERINGS +GUTTERS +GUTTERSNIPE +GUTTERSNIPES +GUTTERSNIPISH +GUTTERY +GUTTIER +GUTTIEST +GUTTING +GUTTLE +GUTTLED +GUTTLER +GUTTLERS +GUTTLES +GUTTLING +GUTTURAL +GUTTURALISM +GUTTURALISMS +GUTTURALS +GUTTY +GUV +GUVS +GUY +GUYED +GUYING +GUYLINE +GUYLINES +GUYOT +GUYOTS +GUYS +GUZZLE +GUZZLED +GUZZLER +GUZZLERS +GUZZLES +GUZZLING +GWEDUC +GWEDUCK +GWEDUCKS +GWEDUCS +GWINE +GYBE +GYBED +GYBES +GYBING +GYM +GYMKHANA +GYMKHANAS +GYMNASIA +GYMNASIAL +GYMNASIUM +GYMNASIUMS +GYMNAST +GYMNASTIC +GYMNASTICALLY +GYMNASTICS +GYMNASTS +GYMNOSOPHIST +GYMNOSOPHISTS +GYMNOSPERM +GYMNOSPERMIES +GYMNOSPERMOUS +GYMNOSPERMS +GYMNOSPERMY +GYMS +GYNAECEA +GYNAECEUM +GYNAECIA +GYNAECIUM +GYNAECOLOGIES +GYNAECOLOGY +GYNANDRIES +GYNANDROMORPH +GYNANDROMORPHIC +GYNANDROMORPHS +GYNANDROMORPHY +GYNANDROUS +GYNANDRY +GYNARCHIC +GYNARCHIES +GYNARCHY +GYNECIA +GYNECIC +GYNECIUM +GYNECOCRACIES +GYNECOCRACY +GYNECOCRATIC +GYNECOID +GYNECOLOGIC +GYNECOLOGICAL +GYNECOLOGIES +GYNECOLOGIST +GYNECOLOGISTS +GYNECOLOGY +GYNECOMASTIA +GYNECOMASTIAS +GYNIATRIES +GYNIATRY +GYNOECIA +GYNOECIUM +GYNOGENESES +GYNOGENESIS +GYNOGENETIC +GYNOPHOBE +GYNOPHOBES +GYNOPHORE +GYNOPHORES +GYOZA +GYOZAS +GYP +GYPLURE +GYPLURES +GYPPED +GYPPER +GYPPERS +GYPPING +GYPS +GYPSEIAN +GYPSEOUS +GYPSIED +GYPSIES +GYPSIFEROUS +GYPSOPHILA +GYPSOPHILAS +GYPSTER +GYPSTERS +GYPSUM +GYPSUMS +GYPSY +GYPSYDOM +GYPSYDOMS +GYPSYING +GYPSYISH +GYPSYISM +GYPSYISMS +GYRAL +GYRALLY +GYRASE +GYRASES +GYRATE +GYRATED +GYRATES +GYRATING +GYRATION +GYRATIONAL +GYRATIONS +GYRATOR +GYRATORS +GYRATORY +GYRE +GYRED +GYRENE +GYRENES +GYRES +GYRFALCON +GYRFALCONS +GYRI +GYRING +GYRO +GYROCOMPASS +GYROCOMPASSES +GYROFREQUENCIES +GYROFREQUENCY +GYROIDAL +GYROMAGNETIC +GYRON +GYRONS +GYROPILOT +GYROPILOTS +GYROPLANE +GYROPLANES +GYROS +GYROSCOPE +GYROSCOPES +GYROSCOPIC +GYROSCOPICALLY +GYROSE +GYROSTABILIZER +GYROSTABILIZERS +GYROSTAT +GYROSTATS +GYRUS +GYTTJA +GYTTJAS +GYVE +GYVED +GYVES +GYVING +HA +HAAF +HAAFS +HAAR +HAARS +HABANERA +HABANERAS +HABANERO +HABANEROS +HABDALAH +HABDALAHS +HABERDASHER +HABERDASHERIES +HABERDASHERS +HABERDASHERY +HABERGEON +HABERGEONS +HABILE +HABILIMENT +HABILIMENTS +HABILITATE +HABILITATED +HABILITATES +HABILITATING +HABILITATION +HABILITATIONS +HABIT +HABITABILITIES +HABITABILITY +HABITABLE +HABITABLENESS +HABITABLENESSES +HABITABLY +HABITAN +HABITANS +HABITANT +HABITANTS +HABITAT +HABITATION +HABITATIONS +HABITATS +HABITED +HABITING +HABITS +HABITUAL +HABITUALLY +HABITUALNESS +HABITUALNESSES +HABITUATE +HABITUATED +HABITUATES +HABITUATING +HABITUATION +HABITUATIONS +HABITUDE +HABITUDES +HABITUE +HABITUES +HABITUS +HABOOB +HABOOBS +HABU +HABUS +HACEK +HACEKS +HACENDADO +HACENDADOS +HACHURE +HACHURED +HACHURES +HACHURING +HACIENDA +HACIENDADO +HACIENDADOS +HACIENDAS +HACK +HACKABLE +HACKAMORE +HACKAMORES +HACKBERRIES +HACKBERRY +HACKBUT +HACKBUTS +HACKED +HACKEE +HACKEES +HACKER +HACKERS +HACKIE +HACKIES +HACKING +HACKLE +HACKLED +HACKLER +HACKLERS +HACKLES +HACKLIER +HACKLIEST +HACKLING +HACKLY +HACKMAN +HACKMATACK +HACKMATACKS +HACKMEN +HACKNEY +HACKNEYED +HACKNEYING +HACKNEYS +HACKS +HACKSAW +HACKSAWED +HACKSAWING +HACKSAWN +HACKSAWS +HACKWORK +HACKWORKS +HAD +HADAL +HADARIM +HADDEST +HADDOCK +HADDOCKS +HADE +HADED +HADES +HADING +HADITH +HADITHS +HADJ +HADJEE +HADJEES +HADJES +HADJI +HADJIS +HADRON +HADRONIC +HADRONS +HADROSAUR +HADROSAURS +HADST +HAE +HAECCEITIES +HAECCEITY +HAED +HAEING +HAEM +HAEMAL +HAEMATAL +HAEMATIC +HAEMATICS +HAEMATIN +HAEMATINS +HAEMATITE +HAEMATITES +HAEMIC +HAEMIN +HAEMINS +HAEMOID +HAEMS +HAEN +HAEREDES +HAERES +HAES +HAET +HAETS +HAFFET +HAFFETS +HAFFIT +HAFFITS +HAFIZ +HAFIZES +HAFNIUM +HAFNIUMS +HAFT +HAFTARA +HAFTARAH +HAFTARAHS +HAFTARAS +HAFTAROT +HAFTAROTH +HAFTED +HAFTER +HAFTERS +HAFTING +HAFTORAH +HAFTORAHS +HAFTOROS +HAFTOROT +HAFTOROTH +HAFTS +HAG +HAGADIC +HAGADIST +HAGADISTS +HAGBERRIES +HAGBERRY +HAGBORN +HAGBUSH +HAGBUSHES +HAGBUT +HAGBUTS +HAGDON +HAGDONS +HAGFISH +HAGFISHES +HAGGADA +HAGGADAH +HAGGADAHS +HAGGADAS +HAGGADIC +HAGGADIST +HAGGADISTIC +HAGGADISTS +HAGGADOT +HAGGADOTH +HAGGARD +HAGGARDLY +HAGGARDNESS +HAGGARDNESSES +HAGGARDS +HAGGED +HAGGING +HAGGIS +HAGGISES +HAGGISH +HAGGISHLY +HAGGLE +HAGGLED +HAGGLER +HAGGLERS +HAGGLES +HAGGLING +HAGIARCHIES +HAGIARCHY +HAGIOGRAPHER +HAGIOGRAPHERS +HAGIOGRAPHIC +HAGIOGRAPHICAL +HAGIOGRAPHIES +HAGIOGRAPHY +HAGIOLOGIC +HAGIOLOGICAL +HAGIOLOGIES +HAGIOLOGY +HAGIOSCOPE +HAGIOSCOPES +HAGIOSCOPIC +HAGRIDDEN +HAGRIDE +HAGRIDER +HAGRIDERS +HAGRIDES +HAGRIDING +HAGRODE +HAGS +HAH +HAHA +HAHAS +HAHNIUM +HAHNIUMS +HAHS +HAIK +HAIKA +HAIKS +HAIKU +HAIKUS +HAIL +HAILED +HAILER +HAILERS +HAILING +HAILS +HAILSTONE +HAILSTONES +HAILSTORM +HAILSTORMS +HAIMISH +HAINT +HAINTS +HAIR +HAIRBALL +HAIRBALLS +HAIRBAND +HAIRBANDS +HAIRBREADTH +HAIRBREADTHS +HAIRBRUSH +HAIRBRUSHES +HAIRCAP +HAIRCAPS +HAIRCLOTH +HAIRCLOTHS +HAIRCUT +HAIRCUTS +HAIRCUTTER +HAIRCUTTERS +HAIRCUTTING +HAIRCUTTINGS +HAIRDO +HAIRDOS +HAIRDRESSER +HAIRDRESSERS +HAIRDRESSING +HAIRDRESSINGS +HAIRED +HAIRIER +HAIRIEST +HAIRINESS +HAIRINESSES +HAIRLESS +HAIRLESSNESS +HAIRLESSNESSES +HAIRLIKE +HAIRLINE +HAIRLINES +HAIRLOCK +HAIRLOCKS +HAIRNET +HAIRNETS +HAIRPIECE +HAIRPIECES +HAIRPIN +HAIRPINS +HAIRS +HAIRSBREADTH +HAIRSBREADTHS +HAIRSPLITTER +HAIRSPLITTERS +HAIRSPLITTING +HAIRSPLITTINGS +HAIRSPRAY +HAIRSPRAYS +HAIRSPRING +HAIRSPRINGS +HAIRSTREAK +HAIRSTREAKS +HAIRSTYLE +HAIRSTYLES +HAIRSTYLING +HAIRSTYLINGS +HAIRSTYLIST +HAIRSTYLISTS +HAIRWORK +HAIRWORKS +HAIRWORM +HAIRWORMS +HAIRY +HAJ +HAJES +HAJI +HAJIS +HAJJ +HAJJES +HAJJI +HAJJIS +HAKE +HAKEEM +HAKEEMS +HAKES +HAKIM +HAKIMS +HAKU +HAKUS +HALACHA +HALACHAS +HALACHIC +HALACHIST +HALACHISTS +HALACHOT +HALACHOTH +HALAKAH +HALAKAHS +HALAKHA +HALAKHAH +HALAKHAHS +HALAKHAS +HALAKHIC +HALAKHIST +HALAKHISTS +HALAKHOT +HALAKHOTH +HALAKIC +HALAKIST +HALAKISTS +HALAKOTH +HALAL +HALALA +HALALAH +HALALAHS +HALALAS +HALALS +HALATION +HALATIONS +HALAVAH +HALAVAHS +HALAZONE +HALAZONES +HALBERD +HALBERDS +HALBERT +HALBERTS +HALCYON +HALCYONS +HALE +HALED +HALENESS +HALENESSES +HALER +HALERS +HALERU +HALES +HALEST +HALF +HALFBACK +HALFBACKS +HALFBEAK +HALFBEAKS +HALFHEARTED +HALFHEARTEDLY +HALFHEARTEDNESS +HALFLIFE +HALFLIVES +HALFNESS +HALFNESSES +HALFPENCE +HALFPENNIES +HALFPENNY +HALFPIPE +HALFPIPES +HALFTIME +HALFTIMES +HALFTONE +HALFTONES +HALFTRACK +HALFTRACKS +HALFWAY +HALIBUT +HALIBUTS +HALID +HALIDE +HALIDES +HALIDOM +HALIDOME +HALIDOMES +HALIDOMS +HALIDS +HALING +HALITE +HALITES +HALITOSES +HALITOSIS +HALITUS +HALITUSES +HALL +HALLAH +HALLAHS +HALLAL +HALLEL +HALLELS +HALLELUJAH +HALLELUJAHS +HALLIARD +HALLIARDS +HALLMARK +HALLMARKED +HALLMARKING +HALLMARKS +HALLO +HALLOA +HALLOAED +HALLOAING +HALLOAS +HALLOED +HALLOES +HALLOING +HALLOO +HALLOOED +HALLOOING +HALLOOS +HALLOS +HALLOT +HALLOTH +HALLOW +HALLOWED +HALLOWER +HALLOWERS +HALLOWING +HALLOWS +HALLS +HALLUCAL +HALLUCES +HALLUCINATE +HALLUCINATED +HALLUCINATES +HALLUCINATING +HALLUCINATION +HALLUCINATIONS +HALLUCINATOR +HALLUCINATORS +HALLUCINATORY +HALLUCINOGEN +HALLUCINOGENIC +HALLUCINOGENICS +HALLUCINOGENS +HALLUCINOSES +HALLUCINOSIS +HALLUX +HALLWAY +HALLWAYS +HALM +HALMA +HALMAS +HALMS +HALO +HALOBIONT +HALOBIONTS +HALOCARBON +HALOCARBONS +HALOCLINE +HALOCLINES +HALOED +HALOES +HALOGEN +HALOGENATE +HALOGENATED +HALOGENATES +HALOGENATING +HALOGENATION +HALOGENATIONS +HALOGENOUS +HALOGENS +HALOGETON +HALOGETONS +HALOID +HALOIDS +HALOING +HALOLIKE +HALOMORPHIC +HALON +HALONS +HALOPERIDOL +HALOPERIDOLS +HALOPHILE +HALOPHILES +HALOPHILIC +HALOPHYTE +HALOPHYTES +HALOPHYTIC +HALOS +HALOTHANE +HALOTHANES +HALT +HALTED +HALTER +HALTERBREAK +HALTERBREAKING +HALTERBREAKS +HALTERBROKE +HALTERBROKEN +HALTERE +HALTERED +HALTERES +HALTERING +HALTERS +HALTING +HALTINGLY +HALTLESS +HALTS +HALUTZ +HALUTZIM +HALVA +HALVAH +HALVAHS +HALVAS +HALVE +HALVED +HALVERS +HALVES +HALVING +HALYARD +HALYARDS +HAM +HAMADA +HAMADAS +HAMADRYAD +HAMADRYADES +HAMADRYADS +HAMADRYAS +HAMADRYASES +HAMAL +HAMALS +HAMANTASCH +HAMANTASCHEN +HAMARTIA +HAMARTIAS +HAMATE +HAMATES +HAMAUL +HAMAULS +HAMBONE +HAMBONED +HAMBONES +HAMBONING +HAMBURG +HAMBURGER +HAMBURGERS +HAMBURGS +HAME +HAMES +HAMLET +HAMLETS +HAMMADA +HAMMADAS +HAMMAL +HAMMALS +HAMMAM +HAMMAMS +HAMMED +HAMMER +HAMMERED +HAMMERER +HAMMERERS +HAMMERHEAD +HAMMERHEADS +HAMMERING +HAMMERKOP +HAMMERKOPS +HAMMERLESS +HAMMERLOCK +HAMMERLOCKS +HAMMERS +HAMMERTOE +HAMMERTOES +HAMMIER +HAMMIEST +HAMMILY +HAMMINESS +HAMMINESSES +HAMMING +HAMMOCK +HAMMOCKS +HAMMY +HAMPER +HAMPERED +HAMPERER +HAMPERERS +HAMPERING +HAMPERS +HAMS +HAMSTER +HAMSTERS +HAMSTRING +HAMSTRINGING +HAMSTRINGS +HAMSTRUNG +HAMULAR +HAMULATE +HAMULI +HAMULOSE +HAMULOUS +HAMULUS +HAMZA +HAMZAH +HAMZAHS +HAMZAS +HANAPER +HANAPERS +HANCE +HANCES +HAND +HANDAX +HANDAXES +HANDBAG +HANDBAGS +HANDBALL +HANDBALLS +HANDBARROW +HANDBARROWS +HANDBASKET +HANDBASKETS +HANDBELL +HANDBELLS +HANDBILL +HANDBILLS +HANDBLOWN +HANDBOOK +HANDBOOKS +HANDBREADTH +HANDBREADTHS +HANDCAR +HANDCARS +HANDCART +HANDCARTS +HANDCLAP +HANDCLAPS +HANDCLASP +HANDCLASPS +HANDCRAFT +HANDCRAFTED +HANDCRAFTING +HANDCRAFTS +HANDCRAFTSMAN +HANDCRAFTSMEN +HANDCUFF +HANDCUFFED +HANDCUFFING +HANDCUFFS +HANDED +HANDEDNESS +HANDEDNESSES +HANDER +HANDERS +HANDFAST +HANDFASTED +HANDFASTING +HANDFASTS +HANDFUL +HANDFULS +HANDGRIP +HANDGRIPS +HANDGUN +HANDGUNS +HANDHELD +HANDHELDS +HANDHOLD +HANDHOLDS +HANDICAP +HANDICAPPED +HANDICAPPER +HANDICAPPERS +HANDICAPPING +HANDICAPS +HANDICRAFT +HANDICRAFTER +HANDICRAFTERS +HANDICRAFTS +HANDICRAFTSMAN +HANDICRAFTSMEN +HANDIER +HANDIEST +HANDILY +HANDINESS +HANDINESSES +HANDING +HANDIWORK +HANDIWORKS +HANDKERCHIEF +HANDKERCHIEFS +HANDKERCHIEVES +HANDLE +HANDLEABLE +HANDLEBAR +HANDLEBARS +HANDLED +HANDLELESS +HANDLER +HANDLERS +HANDLES +HANDLESS +HANDLIKE +HANDLING +HANDLINGS +HANDLIST +HANDLISTS +HANDLOOM +HANDLOOMS +HANDMADE +HANDMAID +HANDMAIDEN +HANDMAIDENS +HANDMAIDS +HANDOFF +HANDOFFS +HANDOUT +HANDOUTS +HANDOVER +HANDOVERS +HANDPICK +HANDPICKED +HANDPICKING +HANDPICKS +HANDPRESS +HANDPRESSES +HANDPRINT +HANDPRINTS +HANDRAIL +HANDRAILS +HANDS +HANDSAW +HANDSAWS +HANDSBREADTH +HANDSBREADTHS +HANDSEL +HANDSELED +HANDSELING +HANDSELLED +HANDSELLING +HANDSELS +HANDSET +HANDSETS +HANDSEWN +HANDSFUL +HANDSHAKE +HANDSHAKES +HANDSOME +HANDSOMELY +HANDSOMENESS +HANDSOMENESSES +HANDSOMER +HANDSOMEST +HANDSPIKE +HANDSPIKES +HANDSPRING +HANDSPRINGS +HANDSTAMP +HANDSTAMPED +HANDSTAMPING +HANDSTAMPS +HANDSTAND +HANDSTANDS +HANDWHEEL +HANDWHEELS +HANDWORK +HANDWORKER +HANDWORKERS +HANDWORKS +HANDWOVEN +HANDWRINGER +HANDWRINGERS +HANDWRIT +HANDWRITE +HANDWRITES +HANDWRITING +HANDWRITINGS +HANDWRITTEN +HANDWROTE +HANDWROUGHT +HANDY +HANDYMAN +HANDYMEN +HANDYPERSON +HANDYPERSONS +HANG +HANGABLE +HANGAR +HANGARED +HANGARING +HANGARS +HANGBIRD +HANGBIRDS +HANGDOG +HANGDOGS +HANGED +HANGER +HANGERS +HANGFIRE +HANGFIRES +HANGING +HANGINGS +HANGMAN +HANGMEN +HANGNAIL +HANGNAILS +HANGNEST +HANGNESTS +HANGOUT +HANGOUTS +HANGOVER +HANGOVERS +HANGS +HANGTAG +HANGTAGS +HANGUL +HANGUP +HANGUPS +HANIWA +HANK +HANKED +HANKER +HANKERED +HANKERER +HANKERERS +HANKERING +HANKERINGS +HANKERS +HANKIE +HANKIES +HANKING +HANKS +HANKY +HANSA +HANSAS +HANSE +HANSEATIC +HANSEL +HANSELED +HANSELING +HANSELLED +HANSELLING +HANSELS +HANSES +HANSOM +HANSOMS +HANT +HANTAVIRUS +HANTAVIRUSES +HANTED +HANTING +HANTLE +HANTLES +HANTS +HANUMAN +HANUMANS +HAO +HAOLE +HAOLES +HAP +HAPAX +HAPAXES +HAPHAZARD +HAPHAZARDLY +HAPHAZARDNESS +HAPHAZARDNESSES +HAPHAZARDRIES +HAPHAZARDRY +HAPHAZARDS +HAPHTARA +HAPHTARAH +HAPHTARAHS +HAPHTARAS +HAPHTAROT +HAPHTAROTH +HAPKIDO +HAPKIDOS +HAPLESS +HAPLESSLY +HAPLESSNESS +HAPLESSNESSES +HAPLITE +HAPLITES +HAPLOID +HAPLOIDIC +HAPLOIDIES +HAPLOIDS +HAPLOIDY +HAPLOLOGIES +HAPLOLOGY +HAPLONT +HAPLONTIC +HAPLONTS +HAPLOPIA +HAPLOPIAS +HAPLOSES +HAPLOSIS +HAPLOTYPE +HAPLOTYPES +HAPLY +HAPPED +HAPPEN +HAPPENCHANCE +HAPPENCHANCES +HAPPENED +HAPPENING +HAPPENINGS +HAPPENS +HAPPENSTANCE +HAPPENSTANCES +HAPPIER +HAPPIEST +HAPPILY +HAPPINESS +HAPPINESSES +HAPPING +HAPPY +HAPS +HAPTEN +HAPTENE +HAPTENES +HAPTENIC +HAPTENS +HAPTIC +HAPTICAL +HAPTOGLOBIN +HAPTOGLOBINS +HARANGUE +HARANGUED +HARANGUER +HARANGUERS +HARANGUES +HARANGUING +HARASS +HARASSED +HARASSER +HARASSERS +HARASSES +HARASSING +HARASSMENT +HARASSMENTS +HARBINGER +HARBINGERED +HARBINGERING +HARBINGERS +HARBOR +HARBORAGE +HARBORAGES +HARBORED +HARBORER +HARBORERS +HARBORFUL +HARBORFULS +HARBORING +HARBORLESS +HARBORMASTER +HARBORMASTERS +HARBOROUS +HARBORS +HARBORSIDE +HARBOUR +HARBOURED +HARBOURING +HARBOURS +HARD +HARDASS +HARDASSES +HARDBACK +HARDBACKS +HARDBALL +HARDBALLS +HARDBOARD +HARDBOARDS +HARDBOOT +HARDBOOTS +HARDBOUND +HARDBOUNDS +HARDCASE +HARDCORE +HARDCORES +HARDCOURT +HARDCOVER +HARDCOVERS +HARDEDGE +HARDEDGES +HARDEN +HARDENED +HARDENER +HARDENERS +HARDENING +HARDENINGS +HARDENS +HARDER +HARDEST +HARDFISTED +HARDGOODS +HARDHACK +HARDHACKS +HARDHANDED +HARDHANDEDNESS +HARDHAT +HARDHATS +HARDHEAD +HARDHEADED +HARDHEADEDLY +HARDHEADEDNESS +HARDHEADS +HARDIER +HARDIES +HARDIEST +HARDIHOOD +HARDIHOODS +HARDILY +HARDIMENT +HARDIMENTS +HARDINESS +HARDINESSES +HARDINGGRASS +HARDINGGRASSES +HARDLINE +HARDLY +HARDMOUTHED +HARDNESS +HARDNESSES +HARDNOSE +HARDNOSES +HARDPACK +HARDPACKS +HARDPAN +HARDPANS +HARDS +HARDSCRABBLE +HARDSET +HARDSHIP +HARDSHIPS +HARDSTAND +HARDSTANDING +HARDSTANDINGS +HARDSTANDS +HARDTACK +HARDTACKS +HARDTOP +HARDTOPS +HARDWARE +HARDWARES +HARDWIRE +HARDWIRED +HARDWIRES +HARDWIRING +HARDWOOD +HARDWOODS +HARDWORKING +HARDY +HARE +HAREBELL +HAREBELLS +HAREBRAINED +HARED +HAREEM +HAREEMS +HARELIKE +HARELIP +HARELIPS +HAREM +HAREMS +HARES +HARIANA +HARIANAS +HARICOT +HARICOTS +HARIJAN +HARIJANS +HARING +HARISSA +HARISSAS +HARK +HARKED +HARKEN +HARKENED +HARKENER +HARKENERS +HARKENING +HARKENS +HARKING +HARKS +HARL +HARLEQUIN +HARLEQUINADE +HARLEQUINADES +HARLEQUINS +HARLOT +HARLOTRIES +HARLOTRY +HARLOTS +HARLS +HARM +HARMATTAN +HARMATTANS +HARMED +HARMER +HARMERS +HARMFUL +HARMFULLY +HARMFULNESS +HARMFULNESSES +HARMIN +HARMINE +HARMINES +HARMING +HARMINS +HARMLESS +HARMLESSLY +HARMLESSNESS +HARMLESSNESSES +HARMONIC +HARMONICA +HARMONICALLY +HARMONICAS +HARMONICIST +HARMONICISTS +HARMONICS +HARMONIES +HARMONIOUS +HARMONIOUSLY +HARMONIOUSNESS +HARMONISE +HARMONISED +HARMONISES +HARMONISING +HARMONIST +HARMONISTS +HARMONIUM +HARMONIUMS +HARMONIZATION +HARMONIZATIONS +HARMONIZE +HARMONIZED +HARMONIZER +HARMONIZERS +HARMONIZES +HARMONIZING +HARMONY +HARMS +HARNESS +HARNESSED +HARNESSES +HARNESSING +HARP +HARPED +HARPER +HARPERS +HARPIES +HARPIN +HARPING +HARPINGS +HARPINS +HARPIST +HARPISTS +HARPOON +HARPOONED +HARPOONER +HARPOONERS +HARPOONING +HARPOONS +HARPS +HARPSICHORD +HARPSICHORDIST +HARPSICHORDISTS +HARPSICHORDS +HARPY +HARPYLIKE +HARQUEBUS +HARQUEBUSES +HARQUEBUSIER +HARQUEBUSIERS +HARRIDAN +HARRIDANS +HARRIED +HARRIER +HARRIERS +HARRIES +HARROW +HARROWED +HARROWER +HARROWERS +HARROWING +HARROWS +HARRUMPH +HARRUMPHED +HARRUMPHING +HARRUMPHS +HARRY +HARRYING +HARSH +HARSHEN +HARSHENED +HARSHENING +HARSHENS +HARSHER +HARSHEST +HARSHLY +HARSHNESS +HARSHNESSES +HARSLET +HARSLETS +HART +HARTAL +HARTALS +HARTEBEEST +HARTEBEESTS +HARTS +HARTSHORN +HARTSHORNS +HARUMPH +HARUMPHED +HARUMPHING +HARUMPHS +HARUSPEX +HARUSPICATION +HARUSPICATIONS +HARUSPICES +HARVEST +HARVESTABLE +HARVESTED +HARVESTER +HARVESTERS +HARVESTING +HARVESTMAN +HARVESTMEN +HARVESTS +HARVESTTIME +HARVESTTIMES +HAS +HASENPFEFFER +HASENPFEFFERS +HASH +HASHED +HASHEESH +HASHEESHES +HASHES +HASHHEAD +HASHHEADS +HASHING +HASHISH +HASHISHES +HASLET +HASLETS +HASP +HASPED +HASPING +HASPS +HASSEL +HASSELS +HASSIUM +HASSIUMS +HASSLE +HASSLED +HASSLES +HASSLING +HASSOCK +HASSOCKS +HAST +HASTATE +HASTATELY +HASTE +HASTED +HASTEFUL +HASTEN +HASTENED +HASTENER +HASTENERS +HASTENING +HASTENS +HASTES +HASTIER +HASTIEST +HASTILY +HASTINESS +HASTINESSES +HASTING +HASTY +HAT +HATABLE +HATBAND +HATBANDS +HATBOX +HATBOXES +HATCH +HATCHABILITIES +HATCHABILITY +HATCHABLE +HATCHBACK +HATCHBACKS +HATCHECK +HATCHECKS +HATCHED +HATCHEL +HATCHELED +HATCHELING +HATCHELLED +HATCHELLING +HATCHELS +HATCHER +HATCHERIES +HATCHERS +HATCHERY +HATCHES +HATCHET +HATCHETS +HATCHING +HATCHINGS +HATCHLING +HATCHLINGS +HATCHMENT +HATCHMENTS +HATCHWAY +HATCHWAYS +HATE +HATEABLE +HATED +HATEFUL +HATEFULLY +HATEFULNESS +HATEFULNESSES +HATER +HATERS +HATES +HATFUL +HATFULS +HATH +HATING +HATLESS +HATLIKE +HATMAKER +HATMAKERS +HATPIN +HATPINS +HATRACK +HATRACKS +HATRED +HATREDS +HATS +HATSFUL +HATTED +HATTER +HATTERIA +HATTERIAS +HATTERS +HATTING +HAUBERK +HAUBERKS +HAUGH +HAUGHS +HAUGHTIER +HAUGHTIEST +HAUGHTILY +HAUGHTINESS +HAUGHTINESSES +HAUGHTY +HAUL +HAULAGE +HAULAGES +HAULED +HAULER +HAULERS +HAULIER +HAULIERS +HAULING +HAULM +HAULMIER +HAULMIEST +HAULMS +HAULMY +HAULS +HAULYARD +HAULYARDS +HAUNCH +HAUNCHED +HAUNCHES +HAUNT +HAUNTED +HAUNTER +HAUNTERS +HAUNTING +HAUNTINGLY +HAUNTS +HAUSEN +HAUSENS +HAUSFRAU +HAUSFRAUEN +HAUSFRAUS +HAUSTELLA +HAUSTELLUM +HAUSTORIA +HAUSTORIAL +HAUSTORIUM +HAUT +HAUTBOIS +HAUTBOY +HAUTBOYS +HAUTE +HAUTEUR +HAUTEURS +HAVARTI +HAVARTIS +HAVDALAH +HAVDALAHS +HAVE +HAVELOCK +HAVELOCKS +HAVEN +HAVENED +HAVENING +HAVENS +HAVER +HAVERED +HAVEREL +HAVERELS +HAVERING +HAVERS +HAVERSACK +HAVERSACKS +HAVES +HAVING +HAVIOR +HAVIORS +HAVIOUR +HAVIOURS +HAVOC +HAVOCKED +HAVOCKER +HAVOCKERS +HAVOCKING +HAVOCS +HAW +HAWALA +HAWALAS +HAWED +HAWFINCH +HAWFINCHES +HAWING +HAWK +HAWKBILL +HAWKBILLS +HAWKED +HAWKER +HAWKERS +HAWKEY +HAWKEYED +HAWKEYS +HAWKIE +HAWKIES +HAWKING +HAWKINGS +HAWKISH +HAWKISHLY +HAWKISHNESS +HAWKISHNESSES +HAWKLIKE +HAWKMOTH +HAWKMOTHS +HAWKNOSE +HAWKNOSES +HAWKS +HAWKSBILL +HAWKSBILLS +HAWKSHAW +HAWKSHAWS +HAWKWEED +HAWKWEEDS +HAWS +HAWSE +HAWSEHOLE +HAWSEHOLES +HAWSEPIPE +HAWSEPIPES +HAWSER +HAWSERS +HAWSES +HAWTHORN +HAWTHORNS +HAWTHORNY +HAY +HAYCOCK +HAYCOCKS +HAYED +HAYER +HAYERS +HAYEY +HAYFIELD +HAYFIELDS +HAYFORK +HAYFORKS +HAYING +HAYINGS +HAYLAGE +HAYLAGES +HAYLOFT +HAYLOFTS +HAYMAKER +HAYMAKERS +HAYMOW +HAYMOWS +HAYRACK +HAYRACKS +HAYRICK +HAYRICKS +HAYRIDE +HAYRIDES +HAYS +HAYSEED +HAYSEEDS +HAYSTACK +HAYSTACKS +HAYWARD +HAYWARDS +HAYWIRE +HAYWIRES +HAZAN +HAZANIM +HAZANS +HAZARD +HAZARDED +HAZARDER +HAZARDERS +HAZARDING +HAZARDOUS +HAZARDOUSLY +HAZARDOUSNESS +HAZARDOUSNESSES +HAZARDS +HAZE +HAZED +HAZEL +HAZELHEN +HAZELHENS +HAZELLY +HAZELNUT +HAZELNUTS +HAZELS +HAZER +HAZERS +HAZES +HAZIER +HAZIEST +HAZILY +HAZINESS +HAZINESSES +HAZING +HAZINGS +HAZMAT +HAZMATS +HAZY +HAZZAN +HAZZANIM +HAZZANS +HE +HEAD +HEADACHE +HEADACHES +HEADACHEY +HEADACHIER +HEADACHIEST +HEADACHY +HEADBAND +HEADBANDS +HEADBOARD +HEADBOARDS +HEADCHEESE +HEADCHEESES +HEADCOUNT +HEADCOUNTS +HEADDRESS +HEADDRESSES +HEADED +HEADEND +HEADENDS +HEADER +HEADERS +HEADFIRST +HEADFISH +HEADFISHES +HEADFOREMOST +HEADFUL +HEADFULS +HEADGATE +HEADGATES +HEADGEAR +HEADGEARS +HEADHUNT +HEADHUNTED +HEADHUNTER +HEADHUNTERS +HEADHUNTING +HEADHUNTS +HEADIER +HEADIEST +HEADILY +HEADINESS +HEADINESSES +HEADING +HEADINGS +HEADLAMP +HEADLAMPS +HEADLAND +HEADLANDS +HEADLESS +HEADLESSNESS +HEADLESSNESSES +HEADLIGHT +HEADLIGHTS +HEADLINE +HEADLINED +HEADLINER +HEADLINERS +HEADLINES +HEADLINING +HEADLOCK +HEADLOCKS +HEADLONG +HEADMAN +HEADMASTER +HEADMASTERS +HEADMASTERSHIP +HEADMASTERSHIPS +HEADMEN +HEADMISTRESS +HEADMISTRESSES +HEADMOST +HEADNOTE +HEADNOTES +HEADPHONE +HEADPHONES +HEADPIECE +HEADPIECES +HEADPIN +HEADPINS +HEADQUARTER +HEADQUARTERED +HEADQUARTERING +HEADQUARTERS +HEADRACE +HEADRACES +HEADREST +HEADRESTS +HEADROOM +HEADROOMS +HEADS +HEADSAIL +HEADSAILS +HEADSET +HEADSETS +HEADSHIP +HEADSHIPS +HEADSHRINKER +HEADSHRINKERS +HEADSMAN +HEADSMEN +HEADSPACE +HEADSPACES +HEADSPRING +HEADSPRINGS +HEADSTALL +HEADSTALLS +HEADSTAND +HEADSTANDS +HEADSTAY +HEADSTAYS +HEADSTOCK +HEADSTOCKS +HEADSTONE +HEADSTONES +HEADSTREAM +HEADSTREAMS +HEADSTRONG +HEADWAITER +HEADWAITERS +HEADWATER +HEADWATERS +HEADWAY +HEADWAYS +HEADWIND +HEADWINDS +HEADWORD +HEADWORDS +HEADWORK +HEADWORKS +HEADY +HEAL +HEALABLE +HEALED +HEALER +HEALERS +HEALING +HEALS +HEALTH +HEALTHFUL +HEALTHFULNESS +HEALTHFULNESSES +HEALTHIER +HEALTHIEST +HEALTHILY +HEALTHINESS +HEALTHINESSES +HEALTHS +HEALTHY +HEAP +HEAPED +HEAPER +HEAPERS +HEAPING +HEAPS +HEAPY +HEAR +HEARABLE +HEARD +HEARER +HEARERS +HEARING +HEARINGS +HEARKEN +HEARKENED +HEARKENER +HEARKENERS +HEARKENING +HEARKENS +HEARS +HEARSAY +HEARSAYS +HEARSE +HEARSED +HEARSES +HEARSING +HEART +HEARTACHE +HEARTACHES +HEARTBEAT +HEARTBEATS +HEARTBREAK +HEARTBREAKER +HEARTBREAKERS +HEARTBREAKING +HEARTBREAKINGLY +HEARTBREAKS +HEARTBROKEN +HEARTBURN +HEARTBURNING +HEARTBURNINGS +HEARTBURNS +HEARTED +HEARTEN +HEARTENED +HEARTENER +HEARTENERS +HEARTENING +HEARTENINGLY +HEARTENS +HEARTFELT +HEARTFREE +HEARTH +HEARTHRUG +HEARTHRUGS +HEARTHS +HEARTHSTONE +HEARTHSTONES +HEARTIER +HEARTIES +HEARTIEST +HEARTILY +HEARTINESS +HEARTINESSES +HEARTING +HEARTLAND +HEARTLANDS +HEARTLESS +HEARTLESSLY +HEARTLESSNESS +HEARTLESSNESSES +HEARTRENDING +HEARTRENDINGLY +HEARTS +HEARTSEASE +HEARTSEASES +HEARTSICK +HEARTSICKNESS +HEARTSICKNESSES +HEARTSOME +HEARTSOMELY +HEARTSORE +HEARTSTRING +HEARTSTRINGS +HEARTTHROB +HEARTTHROBS +HEARTWARMING +HEARTWOOD +HEARTWOODS +HEARTWORM +HEARTWORMS +HEARTY +HEAT +HEATABLE +HEATED +HEATEDLY +HEATER +HEATERS +HEATH +HEATHBIRD +HEATHBIRDS +HEATHEN +HEATHENDOM +HEATHENDOMS +HEATHENISH +HEATHENISHLY +HEATHENISM +HEATHENISMS +HEATHENIZE +HEATHENIZED +HEATHENIZES +HEATHENIZING +HEATHENRIES +HEATHENRY +HEATHENS +HEATHER +HEATHERED +HEATHERS +HEATHERY +HEATHIER +HEATHIEST +HEATHLAND +HEATHLANDS +HEATHLESS +HEATHLIKE +HEATHS +HEATHY +HEATING +HEATLESS +HEATPROOF +HEATS +HEATSTROKE +HEATSTROKES +HEAUME +HEAUMES +HEAVE +HEAVED +HEAVEN +HEAVENLIER +HEAVENLIEST +HEAVENLINESS +HEAVENLINESSES +HEAVENLY +HEAVENS +HEAVENWARD +HEAVENWARDS +HEAVER +HEAVERS +HEAVES +HEAVIER +HEAVIES +HEAVIEST +HEAVILY +HEAVINESS +HEAVINESSES +HEAVING +HEAVY +HEAVYHEARTED +HEAVYHEARTEDLY +HEAVYSET +HEAVYWEIGHT +HEAVYWEIGHTS +HEBDOMAD +HEBDOMADAL +HEBDOMADALLY +HEBDOMADS +HEBE +HEBEPHRENIA +HEBEPHRENIAS +HEBEPHRENIC +HEBEPHRENICS +HEBES +HEBETATE +HEBETATED +HEBETATES +HEBETATING +HEBETATION +HEBETATIONS +HEBETIC +HEBETUDE +HEBETUDES +HEBETUDINOUS +HEBRAIZATION +HEBRAIZATIONS +HEBRAIZE +HEBRAIZED +HEBRAIZES +HEBRAIZING +HECATOMB +HECATOMBS +HECK +HECKLE +HECKLED +HECKLER +HECKLERS +HECKLES +HECKLING +HECKS +HECTARE +HECTARES +HECTIC +HECTICAL +HECTICALLY +HECTICLY +HECTOGRAM +HECTOGRAMS +HECTOGRAPH +HECTOGRAPHED +HECTOGRAPHING +HECTOGRAPHS +HECTOLITER +HECTOLITERS +HECTOMETER +HECTOMETERS +HECTOR +HECTORED +HECTORING +HECTORINGLY +HECTORS +HEDDLE +HEDDLES +HEDER +HEDERS +HEDGE +HEDGED +HEDGEHOG +HEDGEHOGS +HEDGEHOP +HEDGEHOPPED +HEDGEHOPPER +HEDGEHOPPERS +HEDGEHOPPING +HEDGEHOPS +HEDGEPIG +HEDGEPIGS +HEDGER +HEDGEROW +HEDGEROWS +HEDGERS +HEDGES +HEDGIER +HEDGIEST +HEDGING +HEDGINGLY +HEDGY +HEDONIC +HEDONICALLY +HEDONICS +HEDONISM +HEDONISMS +HEDONIST +HEDONISTIC +HEDONISTICALLY +HEDONISTS +HEED +HEEDED +HEEDER +HEEDERS +HEEDFUL +HEEDFULLY +HEEDFULNESS +HEEDFULNESSES +HEEDING +HEEDLESS +HEEDLESSLY +HEEDLESSNESS +HEEDLESSNESSES +HEEDS +HEEHAW +HEEHAWED +HEEHAWING +HEEHAWS +HEEL +HEELBALL +HEELBALLS +HEELED +HEELER +HEELERS +HEELING +HEELINGS +HEELLESS +HEELPIECE +HEELPIECES +HEELPLATE +HEELPLATES +HEELPOST +HEELPOSTS +HEELS +HEELTAP +HEELTAPS +HEEZE +HEEZED +HEEZES +HEEZING +HEFT +HEFTED +HEFTER +HEFTERS +HEFTIER +HEFTIEST +HEFTILY +HEFTINESS +HEFTINESSES +HEFTING +HEFTS +HEFTY +HEGARI +HEGARIS +HEGEMON +HEGEMONIC +HEGEMONIES +HEGEMONS +HEGEMONY +HEGIRA +HEGIRAS +HEGUMEN +HEGUMENE +HEGUMENES +HEGUMENIES +HEGUMENOS +HEGUMENOSES +HEGUMENS +HEGUMENY +HEH +HEHS +HEIFER +HEIFERS +HEIGH +HEIGHT +HEIGHTEN +HEIGHTENED +HEIGHTENING +HEIGHTENS +HEIGHTH +HEIGHTHS +HEIGHTISM +HEIGHTISMS +HEIGHTS +HEIL +HEILED +HEILING +HEILS +HEIMISH +HEINIE +HEINIES +HEINOUS +HEINOUSLY +HEINOUSNESS +HEINOUSNESSES +HEIR +HEIRDOM +HEIRDOMS +HEIRED +HEIRESS +HEIRESSES +HEIRING +HEIRLESS +HEIRLOOM +HEIRLOOMS +HEIRS +HEIRSHIP +HEIRSHIPS +HEISHI +HEIST +HEISTED +HEISTER +HEISTERS +HEISTING +HEISTS +HEJIRA +HEJIRAS +HEKTARE +HEKTARES +HEKTOGRAM +HEKTOGRAMS +HELD +HELDENTENOR +HELDENTENORS +HELIAC +HELIACAL +HELIACALLY +HELIAST +HELIASTS +HELICAL +HELICALLY +HELICES +HELICITIES +HELICITY +HELICLINE +HELICLINES +HELICOID +HELICOIDAL +HELICOIDS +HELICON +HELICONIA +HELICONIAS +HELICONS +HELICOPT +HELICOPTED +HELICOPTER +HELICOPTERED +HELICOPTERING +HELICOPTERS +HELICOPTING +HELICOPTS +HELICTITE +HELICTITES +HELILIFT +HELILIFTED +HELILIFTING +HELILIFTS +HELIO +HELIOCENTRIC +HELIOGRAM +HELIOGRAMS +HELIOGRAPH +HELIOGRAPHED +HELIOGRAPHIC +HELIOGRAPHING +HELIOGRAPHS +HELIOLATRIES +HELIOLATROUS +HELIOLATRY +HELIOMETER +HELIOMETERS +HELIOMETRIC +HELIOMETRICALLY +HELIOS +HELIOSPHERE +HELIOSPHERES +HELIOSTAT +HELIOSTATS +HELIOTROPE +HELIOTROPES +HELIOTROPIC +HELIOTROPISM +HELIOTROPISMS +HELIOTYPE +HELIOTYPED +HELIOTYPES +HELIOTYPIES +HELIOTYPING +HELIOTYPY +HELIOZOAN +HELIOZOANS +HELIOZOIC +HELIPAD +HELIPADS +HELIPORT +HELIPORTS +HELISTOP +HELISTOPS +HELIUM +HELIUMS +HELIX +HELIXES +HELL +HELLACIOUS +HELLACIOUSLY +HELLBENDER +HELLBENDERS +HELLBENT +HELLBOX +HELLBOXES +HELLBROTH +HELLBROTHS +HELLCAT +HELLCATS +HELLDIVER +HELLDIVERS +HELLEBORE +HELLEBORES +HELLED +HELLENIZATION +HELLENIZATIONS +HELLENIZE +HELLENIZED +HELLENIZES +HELLENIZING +HELLER +HELLERI +HELLERIES +HELLERIS +HELLERS +HELLERY +HELLFIRE +HELLFIRES +HELLGRAMMITE +HELLGRAMMITES +HELLHOLE +HELLHOLES +HELLHOUND +HELLHOUNDS +HELLING +HELLION +HELLIONS +HELLISH +HELLISHLY +HELLISHNESS +HELLISHNESSES +HELLKITE +HELLKITES +HELLO +HELLOED +HELLOES +HELLOING +HELLOS +HELLS +HELLUVA +HELM +HELMED +HELMET +HELMETED +HELMETING +HELMETLIKE +HELMETS +HELMING +HELMINTH +HELMINTHIASES +HELMINTHIASIS +HELMINTHIC +HELMINTHOLOGIES +HELMINTHOLOGY +HELMINTHS +HELMLESS +HELMS +HELMSMAN +HELMSMANSHIP +HELMSMANSHIPS +HELMSMEN +HELO +HELOS +HELOT +HELOTAGE +HELOTAGES +HELOTISM +HELOTISMS +HELOTRIES +HELOTRY +HELOTS +HELP +HELPABLE +HELPED +HELPER +HELPERS +HELPFUL +HELPFULLY +HELPFULNESS +HELPFULNESSES +HELPING +HELPINGS +HELPLESS +HELPLESSLY +HELPLESSNESS +HELPLESSNESSES +HELPMATE +HELPMATES +HELPMEET +HELPMEETS +HELPS +HELVE +HELVED +HELVES +HELVING +HEM +HEMACYTOMETER +HEMACYTOMETERS +HEMAGGLUTINATE +HEMAGGLUTINATED +HEMAGGLUTINATES +HEMAGGLUTININ +HEMAGGLUTININS +HEMAGOG +HEMAGOGS +HEMAL +HEMANGIOMA +HEMANGIOMAS +HEMANGIOMATA +HEMATAL +HEMATEIN +HEMATEINS +HEMATIC +HEMATICS +HEMATIN +HEMATINE +HEMATINES +HEMATINIC +HEMATINICS +HEMATINS +HEMATITE +HEMATITES +HEMATITIC +HEMATOCRIT +HEMATOCRITS +HEMATOGENOUS +HEMATOID +HEMATOLOGIC +HEMATOLOGICAL +HEMATOLOGIES +HEMATOLOGIST +HEMATOLOGISTS +HEMATOLOGY +HEMATOMA +HEMATOMAS +HEMATOMATA +HEMATOPHAGOUS +HEMATOPOIESES +HEMATOPOIESIS +HEMATOPOIETIC +HEMATOPORPHYRIN +HEMATOSES +HEMATOSIS +HEMATOXYLIN +HEMATOXYLINS +HEMATOZOA +HEMATOZOON +HEMATURIA +HEMATURIAS +HEMATURIC +HEME +HEMELYTRA +HEMELYTRON +HEMELYTRUM +HEMEROCALLIS +HEMEROCALLISES +HEMERYTHRIN +HEMERYTHRINS +HEMES +HEMIACETAL +HEMIACETALS +HEMIALGIA +HEMIALGIAS +HEMIC +HEMICELLULOSE +HEMICELLULOSES +HEMICHORDATE +HEMICHORDATES +HEMICYCLE +HEMICYCLES +HEMIHEDRAL +HEMIHYDRATE +HEMIHYDRATED +HEMIHYDRATES +HEMIMETABOLOUS +HEMIMORPHIC +HEMIMORPHISM +HEMIMORPHISMS +HEMIN +HEMINS +HEMIOLA +HEMIOLAS +HEMIOLIA +HEMIOLIAS +HEMIPLEGIA +HEMIPLEGIAS +HEMIPLEGIC +HEMIPLEGICS +HEMIPTER +HEMIPTERAN +HEMIPTERANS +HEMIPTEROUS +HEMIPTERS +HEMISPHERE +HEMISPHERES +HEMISPHERIC +HEMISPHERICAL +HEMISTICH +HEMISTICHS +HEMITROPE +HEMITROPES +HEMIZYGOUS +HEMLINE +HEMLINES +HEMLOCK +HEMLOCKS +HEMMED +HEMMER +HEMMERS +HEMMING +HEMOCHROMATOSES +HEMOCHROMATOSIS +HEMOCOEL +HEMOCOELS +HEMOCYANIN +HEMOCYANINS +HEMOCYTE +HEMOCYTES +HEMOCYTOMETER +HEMOCYTOMETERS +HEMODIALYSES +HEMODIALYSIS +HEMODILUTION +HEMODILUTIONS +HEMODYNAMIC +HEMODYNAMICALLY +HEMODYNAMICS +HEMOFLAGELLATE +HEMOFLAGELLATES +HEMOGLOBIN +HEMOGLOBINS +HEMOGLOBINURIA +HEMOGLOBINURIAS +HEMOGLOBINURIC +HEMOID +HEMOLYMPH +HEMOLYMPHS +HEMOLYSES +HEMOLYSIN +HEMOLYSINS +HEMOLYSIS +HEMOLYTIC +HEMOLYZE +HEMOLYZED +HEMOLYZES +HEMOLYZING +HEMOPHILE +HEMOPHILES +HEMOPHILIA +HEMOPHILIAC +HEMOPHILIACS +HEMOPHILIAS +HEMOPHILIC +HEMOPHILICS +HEMOPOIESES +HEMOPOIESIS +HEMOPOIETIC +HEMOPROTEIN +HEMOPROTEINS +HEMOPTYSES +HEMOPTYSIS +HEMORRHAGE +HEMORRHAGED +HEMORRHAGES +HEMORRHAGIC +HEMORRHAGING +HEMORRHOID +HEMORRHOIDAL +HEMORRHOIDALS +HEMORRHOIDS +HEMOSIDERIN +HEMOSIDERINS +HEMOSTASES +HEMOSTASIS +HEMOSTAT +HEMOSTATIC +HEMOSTATICS +HEMOSTATS +HEMOTOXIC +HEMOTOXIN +HEMOTOXINS +HEMP +HEMPEN +HEMPIE +HEMPIER +HEMPIEST +HEMPLIKE +HEMPS +HEMPSEED +HEMPSEEDS +HEMPWEED +HEMPWEEDS +HEMPY +HEMS +HEMSTITCH +HEMSTITCHED +HEMSTITCHER +HEMSTITCHERS +HEMSTITCHES +HEMSTITCHING +HEN +HENBANE +HENBANES +HENBIT +HENBITS +HENCE +HENCEFORTH +HENCEFORWARD +HENCHMAN +HENCHMEN +HENCOOP +HENCOOPS +HENDECASYLLABIC +HENDECASYLLABLE +HENDIADYS +HENDIADYSES +HENEQUEN +HENEQUENS +HENEQUIN +HENEQUINS +HENGE +HENGES +HENHOUSE +HENHOUSES +HENIQUEN +HENIQUENS +HENLEY +HENLEYS +HENLIKE +HENNA +HENNAED +HENNAING +HENNAS +HENNERIES +HENNERY +HENNISH +HENNISHLY +HENOTHEISM +HENOTHEISMS +HENOTHEIST +HENOTHEISTIC +HENOTHEISTS +HENPECK +HENPECKED +HENPECKING +HENPECKS +HENRIES +HENRY +HENRYS +HENS +HENT +HENTED +HENTING +HENTS +HEP +HEPARIN +HEPARINIZED +HEPARINS +HEPATECTOMIES +HEPATECTOMIZED +HEPATECTOMY +HEPATIC +HEPATICA +HEPATICAE +HEPATICAS +HEPATICS +HEPATITIDES +HEPATITIS +HEPATITISES +HEPATIZE +HEPATIZED +HEPATIZES +HEPATIZING +HEPATOCELLULAR +HEPATOCYTE +HEPATOCYTES +HEPATOMA +HEPATOMAS +HEPATOMATA +HEPATOMEGALIES +HEPATOMEGALY +HEPATOPANCREAS +HEPATOTOXIC +HEPATOTOXICITY +HEPCAT +HEPCATS +HEPPER +HEPPEST +HEPTACHLOR +HEPTACHLORS +HEPTAD +HEPTADS +HEPTAGON +HEPTAGONAL +HEPTAGONS +HEPTAMETER +HEPTAMETERS +HEPTANE +HEPTANES +HEPTARCH +HEPTARCHIES +HEPTARCHS +HEPTARCHY +HEPTOSE +HEPTOSES +HER +HERALD +HERALDED +HERALDIC +HERALDICALLY +HERALDING +HERALDIST +HERALDISTS +HERALDRIES +HERALDRY +HERALDS +HERB +HERBACEOUS +HERBAGE +HERBAGED +HERBAGES +HERBAL +HERBALISM +HERBALISMS +HERBALIST +HERBALISTS +HERBALS +HERBARIA +HERBARIAL +HERBARIUM +HERBARIUMS +HERBED +HERBICIDAL +HERBICIDALLY +HERBICIDE +HERBICIDES +HERBIER +HERBIEST +HERBIVORE +HERBIVORES +HERBIVORIES +HERBIVOROUS +HERBIVORY +HERBLESS +HERBLIKE +HERBOLOGIES +HERBOLOGY +HERBS +HERBY +HERCULEAN +HERCULES +HERCULESES +HERD +HERDED +HERDER +HERDERS +HERDIC +HERDICS +HERDING +HERDLIKE +HERDMAN +HERDMEN +HERDS +HERDSMAN +HERDSMEN +HERE +HEREABOUT +HEREABOUTS +HEREAFTER +HEREAFTERS +HEREAT +HEREAWAY +HEREAWAYS +HEREBY +HEREDES +HEREDITAMENT +HEREDITAMENTS +HEREDITARIAN +HEREDITARIANS +HEREDITARILY +HEREDITARY +HEREDITIES +HEREDITY +HEREIN +HEREINABOVE +HEREINAFTER +HEREINBEFORE +HEREINBELOW +HEREINTO +HEREOF +HEREON +HERES +HERESIARCH +HERESIARCHS +HERESIES +HERESY +HERETIC +HERETICAL +HERETICALLY +HERETICS +HERETO +HERETOFORE +HERETRICES +HERETRIX +HERETRIXES +HEREUNDER +HEREUNTO +HEREUPON +HEREWITH +HERIOT +HERIOTS +HERITABILITIES +HERITABILITY +HERITABLE +HERITABLY +HERITAGE +HERITAGES +HERITOR +HERITORS +HERITRICES +HERITRIX +HERITRIXES +HERL +HERLS +HERM +HERMA +HERMAE +HERMAEAN +HERMAI +HERMAPHRODITE +HERMAPHRODITES +HERMAPHRODITIC +HERMAPHRODITISM +HERMATYPIC +HERMENEUTIC +HERMENEUTICAL +HERMENEUTICALLY +HERMENEUTICS +HERMETIC +HERMETICAL +HERMETICALLY +HERMETICISM +HERMETICISMS +HERMETISM +HERMETISMS +HERMETIST +HERMETISTS +HERMIT +HERMITAGE +HERMITAGES +HERMITIC +HERMITISM +HERMITISMS +HERMITRIES +HERMITRY +HERMITS +HERMS +HERN +HERNIA +HERNIAE +HERNIAL +HERNIAS +HERNIATE +HERNIATED +HERNIATES +HERNIATING +HERNIATION +HERNIATIONS +HERNS +HERO +HEROES +HEROIC +HEROICAL +HEROICALLY +HEROICIZE +HEROICIZED +HEROICIZES +HEROICIZING +HEROICOMIC +HEROICOMICAL +HEROICS +HEROIN +HEROINE +HEROINES +HEROINISM +HEROINISMS +HEROINS +HEROISM +HEROISMS +HEROIZE +HEROIZED +HEROIZES +HEROIZING +HERON +HERONRIES +HERONRY +HERONS +HEROS +HERPES +HERPESVIRUS +HERPESVIRUSES +HERPETIC +HERPETOLOGICAL +HERPETOLOGIES +HERPETOLOGIST +HERPETOLOGISTS +HERPETOLOGY +HERRENVOLK +HERRENVOLKS +HERRIED +HERRIES +HERRING +HERRINGBONE +HERRINGBONED +HERRINGBONES +HERRINGBONING +HERRINGS +HERRY +HERRYING +HERS +HERSELF +HERSTORIES +HERSTORY +HERTZ +HERTZES +HES +HESITANCE +HESITANCES +HESITANCIES +HESITANCY +HESITANT +HESITANTLY +HESITATE +HESITATED +HESITATER +HESITATERS +HESITATES +HESITATING +HESITATINGLY +HESITATION +HESITATIONS +HESITATOR +HESITATORS +HESPERIDIA +HESPERIDIN +HESPERIDINS +HESPERIDIUM +HESSIAN +HESSIANS +HESSITE +HESSITES +HESSONITE +HESSONITES +HEST +HESTS +HET +HETAERA +HETAERAE +HETAERAS +HETAERIC +HETAERISM +HETAERISMS +HETAIRA +HETAIRAI +HETAIRAS +HETAIRISM +HETAIRISMS +HETERO +HETEROATOM +HETEROATOMS +HETEROAUXIN +HETEROAUXINS +HETEROCERCAL +HETEROCHROMATIC +HETEROCHROMATIN +HETEROCLITE +HETEROCLITES +HETEROCYCLE +HETEROCYCLES +HETEROCYCLIC +HETEROCYCLICS +HETEROCYST +HETEROCYSTOUS +HETEROCYSTS +HETERODOX +HETERODOXIES +HETERODOXY +HETERODUPLEX +HETERODUPLEXES +HETERODYNE +HETERODYNED +HETERODYNES +HETERODYNING +HETEROECIOUS +HETEROECISM +HETEROECISMS +HETEROGAMETE +HETEROGAMETES +HETEROGAMETIC +HETEROGAMETIES +HETEROGAMETY +HETEROGAMIES +HETEROGAMOUS +HETEROGAMY +HETEROGENEITIES +HETEROGENEITY +HETEROGENEOUS +HETEROGENEOUSLY +HETEROGENIES +HETEROGENOUS +HETEROGENY +HETEROGONIC +HETEROGONIES +HETEROGONY +HETEROGRAFT +HETEROGRAFTS +HETEROKARYON +HETEROKARYONS +HETEROKARYOSES +HETEROKARYOSIS +HETEROKARYOTIC +HETEROLOGOUS +HETEROLOGOUSLY +HETEROLYSES +HETEROLYSIS +HETEROLYTIC +HETEROMORPHIC +HETEROMORPHISM +HETEROMORPHISMS +HETERONOMIES +HETERONOMOUS +HETERONOMY +HETERONYM +HETERONYMS +HETEROPHIL +HETEROPHILE +HETEROPHONIES +HETEROPHONY +HETEROPHYLLIES +HETEROPHYLLOUS +HETEROPHYLLY +HETEROPLOID +HETEROPLOIDIES +HETEROPLOIDS +HETEROPLOIDY +HETEROPTEROUS +HETEROS +HETEROSES +HETEROSEXUAL +HETEROSEXUALITY +HETEROSEXUALLY +HETEROSEXUALS +HETEROSIS +HETEROSPORIES +HETEROSPOROUS +HETEROSPORY +HETEROTHALLIC +HETEROTHALLISM +HETEROTHALLISMS +HETEROTIC +HETEROTOPIC +HETEROTROPH +HETEROTROPHIC +HETEROTROPHIES +HETEROTROPHS +HETEROTROPHY +HETEROTYPIC +HETEROZYGOSES +HETEROZYGOSIS +HETEROZYGOSITY +HETEROZYGOTE +HETEROZYGOTES +HETEROZYGOUS +HETH +HETHS +HETMAN +HETMANS +HETS +HEUCH +HEUCHS +HEUGH +HEUGHS +HEULANDITE +HEULANDITES +HEURISTIC +HEURISTICALLY +HEURISTICS +HEW +HEWABLE +HEWED +HEWER +HEWERS +HEWING +HEWN +HEWS +HEX +HEXACHLORETHANE +HEXACHLOROPHENE +HEXACHORD +HEXACHORDS +HEXAD +HEXADE +HEXADECIMAL +HEXADECIMALS +HEXADES +HEXADIC +HEXADS +HEXAGON +HEXAGONAL +HEXAGONALLY +HEXAGONS +HEXAGRAM +HEXAGRAMS +HEXAHEDRA +HEXAHEDRON +HEXAHEDRONS +HEXAHYDRATE +HEXAHYDRATES +HEXAMETER +HEXAMETERS +HEXAMETHONIUM +HEXAMETHONIUMS +HEXAMINE +HEXAMINES +HEXANE +HEXANES +HEXAPLA +HEXAPLAR +HEXAPLAS +HEXAPLOID +HEXAPLOIDIES +HEXAPLOIDS +HEXAPLOIDY +HEXAPOD +HEXAPODIES +HEXAPODS +HEXAPODY +HEXARCHIES +HEXARCHY +HEXASTICH +HEXASTICHS +HEXED +HEXER +HEXEREI +HEXEREIS +HEXERS +HEXES +HEXING +HEXOBARBITAL +HEXOBARBITALS +HEXOKINASE +HEXOKINASES +HEXONE +HEXONES +HEXOSAMINIDASE +HEXOSAMINIDASES +HEXOSAN +HEXOSANS +HEXOSE +HEXOSES +HEXYL +HEXYLIC +HEXYLRESORCINOL +HEXYLS +HEY +HEYDAY +HEYDAYS +HEYDEY +HEYDEYS +HI +HIATAL +HIATUS +HIATUSES +HIBACHI +HIBACHIS +HIBAKUSHA +HIBERNACULA +HIBERNACULUM +HIBERNAL +HIBERNATE +HIBERNATED +HIBERNATES +HIBERNATING +HIBERNATION +HIBERNATIONS +HIBERNATOR +HIBERNATORS +HIBISCUS +HIBISCUSES +HIC +HICCOUGH +HICCOUGHED +HICCOUGHING +HICCOUGHS +HICCUP +HICCUPED +HICCUPING +HICCUPPED +HICCUPPING +HICCUPS +HICK +HICKEY +HICKEYS +HICKIE +HICKIES +HICKISH +HICKORIES +HICKORY +HICKS +HID +HIDABLE +HIDALGO +HIDALGOS +HIDDEN +HIDDENITE +HIDDENITES +HIDDENLY +HIDDENNESS +HIDDENNESSES +HIDE +HIDEAWAY +HIDEAWAYS +HIDEBOUND +HIDED +HIDELESS +HIDEOSITIES +HIDEOSITY +HIDEOUS +HIDEOUSLY +HIDEOUSNESS +HIDEOUSNESSES +HIDEOUT +HIDEOUTS +HIDER +HIDERS +HIDES +HIDING +HIDINGS +HIDROSES +HIDROSIS +HIDROTIC +HIDROTICS +HIE +HIED +HIEING +HIEMAL +HIERARCH +HIERARCHAL +HIERARCHIC +HIERARCHICAL +HIERARCHICALLY +HIERARCHIES +HIERARCHIZE +HIERARCHIZED +HIERARCHIZES +HIERARCHIZING +HIERARCHS +HIERARCHY +HIERATIC +HIERATICALLY +HIERODULE +HIERODULES +HIEROGLYPH +HIEROGLYPHIC +HIEROGLYPHICAL +HIEROGLYPHICS +HIEROGLYPHS +HIEROLOGIES +HIEROLOGY +HIEROPHANT +HIEROPHANTIC +HIEROPHANTS +HIERURGIES +HIERURGY +HIES +HIFALUTIN +HIGGLE +HIGGLED +HIGGLER +HIGGLERS +HIGGLES +HIGGLING +HIGH +HIGHBALL +HIGHBALLED +HIGHBALLING +HIGHBALLS +HIGHBINDER +HIGHBINDERS +HIGHBORN +HIGHBOY +HIGHBOYS +HIGHBRED +HIGHBROW +HIGHBROWED +HIGHBROWISM +HIGHBROWISMS +HIGHBROWS +HIGHBUSH +HIGHCHAIR +HIGHCHAIRS +HIGHER +HIGHEST +HIGHFALUTIN +HIGHFLIER +HIGHFLIERS +HIGHFLYER +HIGHFLYERS +HIGHJACK +HIGHJACKED +HIGHJACKING +HIGHJACKS +HIGHLAND +HIGHLANDER +HIGHLANDERS +HIGHLANDS +HIGHLIFE +HIGHLIFES +HIGHLIGHT +HIGHLIGHTED +HIGHLIGHTING +HIGHLIGHTS +HIGHLY +HIGHNESS +HIGHNESSES +HIGHRISE +HIGHRISES +HIGHROAD +HIGHROADS +HIGHS +HIGHSPOT +HIGHSPOTS +HIGHT +HIGHTAIL +HIGHTAILED +HIGHTAILING +HIGHTAILS +HIGHTED +HIGHTH +HIGHTHS +HIGHTING +HIGHTOP +HIGHTOPS +HIGHTS +HIGHWAY +HIGHWAYMAN +HIGHWAYMEN +HIGHWAYS +HIJAB +HIJABS +HIJACK +HIJACKED +HIJACKER +HIJACKERS +HIJACKING +HIJACKS +HIJINKS +HIJRA +HIJRAH +HIJRAHS +HIJRAS +HIKE +HIKED +HIKER +HIKERS +HIKES +HIKING +HILA +HILAR +HILARIOUS +HILARIOUSLY +HILARIOUSNESS +HILARIOUSNESSES +HILARITIES +HILARITY +HILDING +HILDINGS +HILI +HILL +HILLBILLIES +HILLBILLY +HILLCREST +HILLCRESTS +HILLED +HILLER +HILLERS +HILLIER +HILLIEST +HILLINESS +HILLINESSES +HILLING +HILLO +HILLOA +HILLOAED +HILLOAING +HILLOAS +HILLOCK +HILLOCKED +HILLOCKS +HILLOCKY +HILLOED +HILLOES +HILLOING +HILLOS +HILLS +HILLSIDE +HILLSIDES +HILLSLOPE +HILLSLOPES +HILLTOP +HILLTOPS +HILLY +HILT +HILTED +HILTING +HILTLESS +HILTS +HILUM +HILUS +HIM +HIMATIA +HIMATION +HIMATIONS +HIMS +HIMSELF +HIN +HIND +HINDBRAIN +HINDBRAINS +HINDER +HINDERED +HINDERER +HINDERERS +HINDERING +HINDERS +HINDGUT +HINDGUTS +HINDMOST +HINDQUARTER +HINDQUARTERS +HINDRANCE +HINDRANCES +HINDS +HINDSHANK +HINDSHANKS +HINDSIGHT +HINDSIGHTS +HINGE +HINGED +HINGER +HINGERS +HINGES +HINGING +HINKIER +HINKIEST +HINKY +HINNIED +HINNIES +HINNY +HINNYING +HINS +HINT +HINTED +HINTER +HINTERLAND +HINTERLANDS +HINTERS +HINTING +HINTS +HIP +HIPBONE +HIPBONES +HIPHUGGER +HIPLESS +HIPLIKE +HIPLINE +HIPLINES +HIPLY +HIPNESS +HIPNESSES +HIPPARCH +HIPPARCHS +HIPPED +HIPPER +HIPPEST +HIPPIE +HIPPIEDOM +HIPPIEDOMS +HIPPIEISH +HIPPIENESS +HIPPIENESSES +HIPPIER +HIPPIES +HIPPIEST +HIPPINESS +HIPPINESSES +HIPPING +HIPPISH +HIPPO +HIPPOCAMPAL +HIPPOCAMPI +HIPPOCAMPUS +HIPPOCRAS +HIPPOCRASES +HIPPODROME +HIPPODROMES +HIPPOGRIFF +HIPPOGRIFFS +HIPPOPOTAMI +HIPPOPOTAMUS +HIPPOPOTAMUSES +HIPPOS +HIPPY +HIPS +HIPSHOT +HIPSTER +HIPSTERISM +HIPSTERISMS +HIPSTERS +HIRABLE +HIRAGANA +HIRAGANAS +HIRCINE +HIRE +HIREABLE +HIRED +HIREE +HIREES +HIRELING +HIRELINGS +HIRER +HIRERS +HIRES +HIRING +HIRPLE +HIRPLED +HIRPLES +HIRPLING +HIRSEL +HIRSELED +HIRSELING +HIRSELLED +HIRSELLING +HIRSELS +HIRSLE +HIRSLED +HIRSLES +HIRSLING +HIRSUTE +HIRSUTENESS +HIRSUTENESSES +HIRSUTISM +HIRSUTISMS +HIRUDIN +HIRUDINS +HIS +HISN +HISPANIDAD +HISPANIDADS +HISPANISM +HISPANISMS +HISPID +HISPIDITIES +HISPIDITY +HISS +HISSED +HISSELF +HISSER +HISSERS +HISSES +HISSIER +HISSIES +HISSIEST +HISSING +HISSINGS +HISSY +HIST +HISTAMIN +HISTAMINASE +HISTAMINASES +HISTAMINE +HISTAMINERGIC +HISTAMINES +HISTAMINS +HISTED +HISTIDIN +HISTIDINE +HISTIDINES +HISTIDINS +HISTING +HISTIOCYTE +HISTIOCYTES +HISTIOCYTIC +HISTOCHEMICAL +HISTOCHEMICALLY +HISTOCHEMISTRY +HISTOGEN +HISTOGENESES +HISTOGENESIS +HISTOGENETIC +HISTOGENS +HISTOGRAM +HISTOGRAMS +HISTOID +HISTOLOGIC +HISTOLOGICAL +HISTOLOGICALLY +HISTOLOGIES +HISTOLOGIST +HISTOLOGISTS +HISTOLOGY +HISTOLYSES +HISTOLYSIS +HISTONE +HISTONES +HISTOPATHOLOGIC +HISTOPATHOLOGY +HISTOPHYSIOLOGY +HISTOPLASMOSES +HISTOPLASMOSIS +HISTORIAN +HISTORIANS +HISTORIC +HISTORICAL +HISTORICALLY +HISTORICALNESS +HISTORICISM +HISTORICISMS +HISTORICIST +HISTORICISTS +HISTORICITIES +HISTORICITY +HISTORICIZE +HISTORICIZED +HISTORICIZES +HISTORICIZING +HISTORIED +HISTORIES +HISTORIOGRAPHER +HISTORIOGRAPHIC +HISTORIOGRAPHY +HISTORY +HISTRIONIC +HISTRIONICALLY +HISTRIONICS +HISTS +HIT +HITCH +HITCHED +HITCHER +HITCHERS +HITCHES +HITCHHIKE +HITCHHIKED +HITCHHIKER +HITCHHIKERS +HITCHHIKES +HITCHHIKING +HITCHING +HITHER +HITHERMOST +HITHERTO +HITHERWARD +HITLESS +HITMAN +HITMEN +HITS +HITTABLE +HITTER +HITTERS +HITTING +HIVE +HIVED +HIVELESS +HIVES +HIVING +HIZZONER +HIZZONERS +HM +HMM +HO +HOACTZIN +HOACTZINES +HOACTZINS +HOAGIE +HOAGIES +HOAGY +HOAR +HOARD +HOARDED +HOARDER +HOARDERS +HOARDING +HOARDINGS +HOARDS +HOARFROST +HOARFROSTS +HOARIER +HOARIEST +HOARILY +HOARINESS +HOARINESSES +HOARS +HOARSE +HOARSELY +HOARSEN +HOARSENED +HOARSENESS +HOARSENESSES +HOARSENING +HOARSENS +HOARSER +HOARSEST +HOARY +HOATZIN +HOATZINES +HOATZINS +HOAX +HOAXED +HOAXER +HOAXERS +HOAXES +HOAXING +HOB +HOBBED +HOBBER +HOBBERS +HOBBIES +HOBBING +HOBBIT +HOBBITS +HOBBLE +HOBBLEBUSH +HOBBLEBUSHES +HOBBLED +HOBBLEDEHOY +HOBBLEDEHOYS +HOBBLER +HOBBLERS +HOBBLES +HOBBLING +HOBBY +HOBBYHORSE +HOBBYHORSES +HOBBYIST +HOBBYISTS +HOBGOBLIN +HOBGOBLINS +HOBLIKE +HOBNAIL +HOBNAILED +HOBNAILING +HOBNAILS +HOBNOB +HOBNOBBED +HOBNOBBER +HOBNOBBERS +HOBNOBBING +HOBNOBS +HOBO +HOBOED +HOBOES +HOBOING +HOBOISM +HOBOISMS +HOBOS +HOBS +HOCK +HOCKED +HOCKER +HOCKERS +HOCKEY +HOCKEYS +HOCKING +HOCKS +HOCKSHOP +HOCKSHOPS +HOCUS +HOCUSED +HOCUSES +HOCUSING +HOCUSSED +HOCUSSES +HOCUSSING +HOD +HODAD +HODADDIES +HODADDY +HODADS +HODDEN +HODDENS +HODDIN +HODDINS +HODGEPODGE +HODGEPODGES +HODOSCOPE +HODOSCOPES +HODS +HOE +HOECAKE +HOECAKES +HOED +HOEDOWN +HOEDOWNS +HOEING +HOELIKE +HOER +HOERS +HOES +HOG +HOGAN +HOGANS +HOGBACK +HOGBACKS +HOGFISH +HOGFISHES +HOGG +HOGGED +HOGGER +HOGGERS +HOGGET +HOGGETS +HOGGING +HOGGISH +HOGGISHLY +HOGGISHNESS +HOGGISHNESSES +HOGGS +HOGLIKE +HOGMANAY +HOGMANAYS +HOGMANE +HOGMANES +HOGMENAY +HOGMENAYS +HOGNOSE +HOGNOSES +HOGNUT +HOGNUTS +HOGS +HOGSHEAD +HOGSHEADS +HOGTIE +HOGTIED +HOGTIEING +HOGTIES +HOGTYING +HOGWASH +HOGWASHES +HOGWEED +HOGWEEDS +HOICK +HOICKED +HOICKING +HOICKS +HOIDEN +HOIDENED +HOIDENING +HOIDENS +HOISE +HOISED +HOISES +HOISING +HOIST +HOISTED +HOISTER +HOISTERS +HOISTING +HOISTS +HOKE +HOKED +HOKES +HOKEY +HOKEYNESS +HOKEYNESSES +HOKEYPOKEY +HOKEYPOKEYS +HOKIER +HOKIEST +HOKILY +HOKINESS +HOKINESSES +HOKING +HOKKU +HOKUM +HOKUMS +HOKYPOKIES +HOKYPOKY +HOLANDRIC +HOLARD +HOLARDS +HOLD +HOLDABLE +HOLDALL +HOLDALLS +HOLDBACK +HOLDBACKS +HOLDDOWN +HOLDDOWNS +HOLDEN +HOLDER +HOLDERS +HOLDFAST +HOLDFASTS +HOLDING +HOLDINGS +HOLDOUT +HOLDOUTS +HOLDOVER +HOLDOVERS +HOLDS +HOLDUP +HOLDUPS +HOLE +HOLED +HOLELESS +HOLES +HOLEY +HOLIBUT +HOLIBUTS +HOLIDAY +HOLIDAYED +HOLIDAYER +HOLIDAYERS +HOLIDAYING +HOLIDAYMAKER +HOLIDAYMAKERS +HOLIDAYS +HOLIER +HOLIES +HOLIEST +HOLILY +HOLINESS +HOLINESSES +HOLING +HOLISM +HOLISMS +HOLIST +HOLISTIC +HOLISTICALLY +HOLISTS +HOLK +HOLKED +HOLKING +HOLKS +HOLLA +HOLLAED +HOLLAING +HOLLAND +HOLLANDAISE +HOLLANDAISES +HOLLANDS +HOLLAS +HOLLER +HOLLERED +HOLLERING +HOLLERS +HOLLIES +HOLLO +HOLLOA +HOLLOAED +HOLLOAING +HOLLOAS +HOLLOED +HOLLOES +HOLLOING +HOLLOO +HOLLOOED +HOLLOOING +HOLLOOS +HOLLOS +HOLLOW +HOLLOWARE +HOLLOWARES +HOLLOWED +HOLLOWER +HOLLOWEST +HOLLOWING +HOLLOWLY +HOLLOWNESS +HOLLOWNESSES +HOLLOWS +HOLLOWWARE +HOLLOWWARES +HOLLY +HOLLYHOCK +HOLLYHOCKS +HOLM +HOLMIC +HOLMIUM +HOLMIUMS +HOLMS +HOLOBLASTIC +HOLOCAUST +HOLOCAUSTS +HOLOCENE +HOLOCRINE +HOLOENZYME +HOLOENZYMES +HOLOGAMIES +HOLOGAMY +HOLOGRAM +HOLOGRAMS +HOLOGRAPH +HOLOGRAPHED +HOLOGRAPHER +HOLOGRAPHERS +HOLOGRAPHIC +HOLOGRAPHICALLY +HOLOGRAPHIES +HOLOGRAPHING +HOLOGRAPHS +HOLOGRAPHY +HOLOGYNIC +HOLOGYNIES +HOLOGYNY +HOLOHEDRAL +HOLOMETABOLISM +HOLOMETABOLISMS +HOLOMETABOLOUS +HOLOPHRASTIC +HOLOPHYTE +HOLOPHYTES +HOLOPHYTIC +HOLOTHURIAN +HOLOTHURIANS +HOLOTYPE +HOLOTYPES +HOLOTYPIC +HOLOZOIC +HOLP +HOLPEN +HOLS +HOLSTEIN +HOLSTEINS +HOLSTER +HOLSTERED +HOLSTERING +HOLSTERS +HOLT +HOLTS +HOLY +HOLYDAY +HOLYDAYS +HOLYSTONE +HOLYSTONED +HOLYSTONES +HOLYSTONING +HOLYTIDE +HOLYTIDES +HOMAGE +HOMAGED +HOMAGER +HOMAGERS +HOMAGES +HOMAGING +HOMBRE +HOMBRES +HOMBURG +HOMBURGS +HOME +HOMEBODIES +HOMEBODY +HOMEBOUND +HOMEBOY +HOMEBOYS +HOMEBRED +HOMEBREDS +HOMEBREW +HOMEBREWS +HOMEBUILT +HOMECOMER +HOMECOMERS +HOMECOMING +HOMECOMINGS +HOMED +HOMEGIRL +HOMEGIRLS +HOMEGROWN +HOMELAND +HOMELANDS +HOMELESS +HOMELESSNESS +HOMELESSNESSES +HOMELIER +HOMELIEST +HOMELIKE +HOMELINESS +HOMELINESSES +HOMELY +HOMEMADE +HOMEMAKER +HOMEMAKERS +HOMEMAKING +HOMEMAKINGS +HOMEOBOX +HOMEOBOXES +HOMEOMORPHIC +HOMEOMORPHISM +HOMEOMORPHISMS +HOMEOPATH +HOMEOPATHIC +HOMEOPATHICALLY +HOMEOPATHIES +HOMEOPATHS +HOMEOPATHY +HOMEOSTASES +HOMEOSTASIS +HOMEOSTATIC +HOMEOTHERM +HOMEOTHERMIC +HOMEOTHERMIES +HOMEOTHERMS +HOMEOTHERMY +HOMEOTIC +HOMEOWNER +HOMEOWNERS +HOMEPAGE +HOMEPAGES +HOMEPLACE +HOMEPLACES +HOMEPORT +HOMEPORTED +HOMEPORTING +HOMEPORTS +HOMER +HOMERED +HOMERIC +HOMERING +HOMEROOM +HOMEROOMS +HOMERS +HOMES +HOMESCHOOL +HOMESCHOOLED +HOMESCHOOLER +HOMESCHOOLERS +HOMESCHOOLING +HOMESCHOOLS +HOMESICK +HOMESICKNESS +HOMESICKNESSES +HOMESITE +HOMESITES +HOMESPUN +HOMESPUNS +HOMESTAND +HOMESTANDS +HOMESTAY +HOMESTAYS +HOMESTEAD +HOMESTEADED +HOMESTEADER +HOMESTEADERS +HOMESTEADING +HOMESTEADS +HOMESTRETCH +HOMESTRETCHES +HOMETOWN +HOMETOWNS +HOMEWARD +HOMEWARDS +HOMEWORK +HOMEWORKS +HOMEY +HOMEYNESS +HOMEYNESSES +HOMEYS +HOMICIDAL +HOMICIDALLY +HOMICIDE +HOMICIDES +HOMIE +HOMIER +HOMIES +HOMIEST +HOMILETIC +HOMILETICAL +HOMILETICS +HOMILIES +HOMILIST +HOMILISTS +HOMILY +HOMINES +HOMINESS +HOMINESSES +HOMING +HOMINIAN +HOMINIANS +HOMINID +HOMINIDS +HOMINIES +HOMININE +HOMINIZATION +HOMINIZATIONS +HOMINIZE +HOMINIZED +HOMINIZES +HOMINIZING +HOMINOID +HOMINOIDS +HOMINY +HOMMOCK +HOMMOCKS +HOMMOS +HOMMOSES +HOMO +HOMOCERCAL +HOMOCERCIES +HOMOCERCY +HOMOEROTIC +HOMOEROTICISM +HOMOEROTICISMS +HOMOGAMETIC +HOMOGAMIES +HOMOGAMOUS +HOMOGAMY +HOMOGENATE +HOMOGENATES +HOMOGENEITIES +HOMOGENEITY +HOMOGENEOUS +HOMOGENEOUSLY +HOMOGENEOUSNESS +HOMOGENIES +HOMOGENISATION +HOMOGENISATIONS +HOMOGENISE +HOMOGENISED +HOMOGENISES +HOMOGENISING +HOMOGENIZATION +HOMOGENIZATIONS +HOMOGENIZE +HOMOGENIZED +HOMOGENIZER +HOMOGENIZERS +HOMOGENIZES +HOMOGENIZING +HOMOGENOUS +HOMOGENY +HOMOGONIES +HOMOGONY +HOMOGRAFT +HOMOGRAFTS +HOMOGRAPH +HOMOGRAPHIC +HOMOGRAPHS +HOMOIOTHERM +HOMOIOTHERMIC +HOMOIOTHERMS +HOMOIOUSIAN +HOMOIOUSIANS +HOMOLOG +HOMOLOGATE +HOMOLOGATED +HOMOLOGATES +HOMOLOGATING +HOMOLOGATION +HOMOLOGATIONS +HOMOLOGIC +HOMOLOGICAL +HOMOLOGICALLY +HOMOLOGIES +HOMOLOGIZE +HOMOLOGIZED +HOMOLOGIZER +HOMOLOGIZERS +HOMOLOGIZES +HOMOLOGIZING +HOMOLOGOUS +HOMOLOGS +HOMOLOGUE +HOMOLOGUES +HOMOLOGY +HOMOLYSES +HOMOLYSIS +HOMOLYTIC +HOMOMORPHIC +HOMOMORPHISM +HOMOMORPHISMS +HOMONUCLEAR +HOMONYM +HOMONYMIC +HOMONYMIES +HOMONYMOUS +HOMONYMOUSLY +HOMONYMS +HOMONYMY +HOMOOUSIAN +HOMOOUSIANS +HOMOPHILE +HOMOPHILES +HOMOPHOBE +HOMOPHOBES +HOMOPHOBIA +HOMOPHOBIAS +HOMOPHOBIC +HOMOPHONE +HOMOPHONES +HOMOPHONIC +HOMOPHONIES +HOMOPHONOUS +HOMOPHONY +HOMOPHYLIES +HOMOPHYLY +HOMOPLASIES +HOMOPLASTIC +HOMOPLASY +HOMOPOLAR +HOMOPOLYMER +HOMOPOLYMERIC +HOMOPOLYMERS +HOMOPTERAN +HOMOPTERANS +HOMOPTEROUS +HOMOS +HOMOSCEDASTIC +HOMOSEX +HOMOSEXES +HOMOSEXUAL +HOMOSEXUALITIES +HOMOSEXUALITY +HOMOSEXUALLY +HOMOSEXUALS +HOMOSOCIAL +HOMOSOCIALITIES +HOMOSOCIALITY +HOMOSPORIES +HOMOSPOROUS +HOMOSPORY +HOMOSTYLIES +HOMOSTYLY +HOMOTAXES +HOMOTAXIS +HOMOTHALLIC +HOMOTHALLISM +HOMOTHALLISMS +HOMOTRANSPLANT +HOMOTRANSPLANTS +HOMOZYGOSES +HOMOZYGOSIS +HOMOZYGOSITIES +HOMOZYGOSITY +HOMOZYGOTE +HOMOZYGOTES +HOMOZYGOUS +HOMOZYGOUSLY +HOMUNCULI +HOMUNCULUS +HOMY +HON +HONAN +HONANS +HONCHO +HONCHOED +HONCHOING +HONCHOS +HONDA +HONDAS +HONDLE +HONDLED +HONDLES +HONDLING +HONE +HONED +HONER +HONERS +HONES +HONEST +HONESTER +HONESTEST +HONESTIES +HONESTLY +HONESTY +HONEWORT +HONEWORTS +HONEY +HONEYBEE +HONEYBEES +HONEYBUN +HONEYBUNS +HONEYCOMB +HONEYCOMBED +HONEYCOMBING +HONEYCOMBS +HONEYCREEPER +HONEYCREEPERS +HONEYDEW +HONEYDEWS +HONEYEATER +HONEYEATERS +HONEYED +HONEYFUL +HONEYGUIDE +HONEYGUIDES +HONEYING +HONEYMOON +HONEYMOONED +HONEYMOONER +HONEYMOONERS +HONEYMOONING +HONEYMOONS +HONEYPOT +HONEYPOTS +HONEYS +HONEYSUCKLE +HONEYSUCKLES +HONG +HONGI +HONGIED +HONGIES +HONGIING +HONGS +HONIED +HONING +HONK +HONKED +HONKER +HONKERS +HONKEY +HONKEYS +HONKIE +HONKIES +HONKING +HONKS +HONKY +HONOR +HONORABILITIES +HONORABILITY +HONORABLE +HONORABLENESS +HONORABLENESSES +HONORABLY +HONORAND +HONORANDS +HONORARIA +HONORARIES +HONORARILY +HONORARIUM +HONORARIUMS +HONORARY +HONORED +HONOREE +HONOREES +HONORER +HONORERS +HONORIFIC +HONORIFICALLY +HONORIFICS +HONORING +HONORS +HONOUR +HONOURABLE +HONOURED +HONOURER +HONOURERS +HONOURING +HONOURS +HONS +HOOCH +HOOCHES +HOOCHIE +HOOCHIES +HOOD +HOODED +HOODEDNESS +HOODEDNESSES +HOODIE +HOODIER +HOODIES +HOODIEST +HOODING +HOODLESS +HOODLIKE +HOODLUM +HOODLUMISH +HOODLUMISM +HOODLUMISMS +HOODLUMS +HOODMOLD +HOODMOLDS +HOODOO +HOODOOED +HOODOOING +HOODOOISM +HOODOOISMS +HOODOOS +HOODS +HOODWINK +HOODWINKED +HOODWINKER +HOODWINKERS +HOODWINKING +HOODWINKS +HOODY +HOOEY +HOOEYS +HOOF +HOOFBEAT +HOOFBEATS +HOOFBOUND +HOOFED +HOOFER +HOOFERS +HOOFING +HOOFLESS +HOOFLIKE +HOOFPRINT +HOOFPRINTS +HOOFS +HOOK +HOOKA +HOOKAH +HOOKAHS +HOOKAS +HOOKED +HOOKER +HOOKERS +HOOKEY +HOOKEYS +HOOKIER +HOOKIES +HOOKIEST +HOOKING +HOOKLESS +HOOKLET +HOOKLETS +HOOKLIKE +HOOKNOSE +HOOKNOSED +HOOKNOSES +HOOKS +HOOKUP +HOOKUPS +HOOKWORM +HOOKWORMS +HOOKY +HOOLIE +HOOLIGAN +HOOLIGANISM +HOOLIGANISMS +HOOLIGANS +HOOLY +HOOP +HOOPED +HOOPER +HOOPERS +HOOPING +HOOPLA +HOOPLAS +HOOPLESS +HOOPLIKE +HOOPOE +HOOPOES +HOOPOO +HOOPOOS +HOOPS +HOOPSKIRT +HOOPSKIRTS +HOOPSTER +HOOPSTERS +HOORAH +HOORAHED +HOORAHING +HOORAHS +HOORAY +HOORAYED +HOORAYING +HOORAYS +HOOSEGOW +HOOSEGOWS +HOOSGOW +HOOSGOWS +HOOT +HOOTCH +HOOTCHES +HOOTED +HOOTENANNIES +HOOTENANNY +HOOTER +HOOTERS +HOOTIER +HOOTIEST +HOOTING +HOOTS +HOOTY +HOOVED +HOOVER +HOOVERED +HOOVERING +HOOVERS +HOOVES +HOP +HOPE +HOPED +HOPEFUL +HOPEFULLY +HOPEFULNESS +HOPEFULNESSES +HOPEFULS +HOPELESS +HOPELESSLY +HOPELESSNESS +HOPELESSNESSES +HOPER +HOPERS +HOPES +HOPHEAD +HOPHEADS +HOPING +HOPINGLY +HOPLITE +HOPLITES +HOPLITIC +HOPPED +HOPPER +HOPPERS +HOPPIER +HOPPIEST +HOPPING +HOPPINGS +HOPPLE +HOPPLED +HOPPLES +HOPPLING +HOPPY +HOPS +HOPSACK +HOPSACKING +HOPSACKINGS +HOPSACKS +HOPSCOTCH +HOPSCOTCHED +HOPSCOTCHES +HOPSCOTCHING +HOPTOAD +HOPTOADS +HORA +HORAH +HORAHS +HORAL +HORARY +HORAS +HORDE +HORDED +HORDEIN +HORDEINS +HORDEOLA +HORDEOLUM +HORDES +HORDING +HOREHOUND +HOREHOUNDS +HORIZON +HORIZONAL +HORIZONLESS +HORIZONS +HORIZONTAL +HORIZONTALITIES +HORIZONTALITY +HORIZONTALLY +HORIZONTALS +HORMOGONIA +HORMOGONIUM +HORMONAL +HORMONALLY +HORMONE +HORMONELIKE +HORMONES +HORMONIC +HORN +HORNBEAM +HORNBEAMS +HORNBILL +HORNBILLS +HORNBLENDE +HORNBLENDES +HORNBLENDIC +HORNBOOK +HORNBOOKS +HORNED +HORNEDNESS +HORNEDNESSES +HORNET +HORNETS +HORNFELS +HORNIER +HORNIEST +HORNILY +HORNINESS +HORNINESSES +HORNING +HORNINGS +HORNIST +HORNISTS +HORNITO +HORNITOS +HORNLESS +HORNLESSNESS +HORNLESSNESSES +HORNLIKE +HORNPIPE +HORNPIPES +HORNPOUT +HORNPOUTS +HORNS +HORNSTONE +HORNSTONES +HORNSWOGGLE +HORNSWOGGLED +HORNSWOGGLES +HORNSWOGGLING +HORNTAIL +HORNTAILS +HORNWORM +HORNWORMS +HORNWORT +HORNWORTS +HORNY +HOROLOGE +HOROLOGER +HOROLOGERS +HOROLOGES +HOROLOGIC +HOROLOGICAL +HOROLOGIES +HOROLOGIST +HOROLOGISTS +HOROLOGY +HOROSCOPE +HOROSCOPES +HOROSCOPIES +HOROSCOPY +HORRENDOUS +HORRENDOUSLY +HORRENT +HORRIBLE +HORRIBLENESS +HORRIBLENESSES +HORRIBLES +HORRIBLY +HORRID +HORRIDER +HORRIDEST +HORRIDLY +HORRIDNESS +HORRIDNESSES +HORRIFIC +HORRIFICALLY +HORRIFIED +HORRIFIES +HORRIFY +HORRIFYING +HORRIFYINGLY +HORROR +HORRORS +HORSE +HORSEBACK +HORSEBACKS +HORSEBEAN +HORSEBEANS +HORSECAR +HORSECARS +HORSED +HORSEFEATHERS +HORSEFLESH +HORSEFLESHES +HORSEFLIES +HORSEFLY +HORSEHAIR +HORSEHAIRS +HORSEHIDE +HORSEHIDES +HORSELAUGH +HORSELAUGHS +HORSELESS +HORSELIKE +HORSEMAN +HORSEMANSHIP +HORSEMANSHIPS +HORSEMEN +HORSEMINT +HORSEMINTS +HORSEPLAY +HORSEPLAYER +HORSEPLAYERS +HORSEPLAYS +HORSEPOWER +HORSEPOWERS +HORSEPOX +HORSEPOXES +HORSERACE +HORSERACES +HORSERADISH +HORSERADISHES +HORSES +HORSESHIT +HORSESHITS +HORSESHOD +HORSESHOE +HORSESHOED +HORSESHOEING +HORSESHOER +HORSESHOERS +HORSESHOES +HORSETAIL +HORSETAILS +HORSEWEED +HORSEWEEDS +HORSEWHIP +HORSEWHIPPED +HORSEWHIPPER +HORSEWHIPPERS +HORSEWHIPPING +HORSEWHIPS +HORSEWOMAN +HORSEWOMEN +HORSEY +HORSIER +HORSIEST +HORSILY +HORSINESS +HORSINESSES +HORSING +HORST +HORSTE +HORSTES +HORSTS +HORSY +HORTATIVE +HORTATIVELY +HORTATORY +HORTICULTURAL +HORTICULTURALLY +HORTICULTURE +HORTICULTURES +HORTICULTURIST +HORTICULTURISTS +HOS +HOSANNA +HOSANNAED +HOSANNAH +HOSANNAHS +HOSANNAING +HOSANNAS +HOSE +HOSED +HOSEL +HOSELIKE +HOSELS +HOSEN +HOSEPIPE +HOSEPIPES +HOSER +HOSERS +HOSES +HOSEY +HOSEYED +HOSEYING +HOSEYS +HOSIER +HOSIERIES +HOSIERS +HOSIERY +HOSING +HOSPICE +HOSPICES +HOSPITABLE +HOSPITABLY +HOSPITAL +HOSPITALISE +HOSPITALISED +HOSPITALISES +HOSPITALISING +HOSPITALITIES +HOSPITALITY +HOSPITALIZATION +HOSPITALIZE +HOSPITALIZED +HOSPITALIZES +HOSPITALIZING +HOSPITALS +HOSPITIA +HOSPITIUM +HOSPODAR +HOSPODARS +HOST +HOSTA +HOSTAGE +HOSTAGES +HOSTAS +HOSTED +HOSTEL +HOSTELED +HOSTELER +HOSTELERS +HOSTELING +HOSTELLED +HOSTELLER +HOSTELLERS +HOSTELLING +HOSTELRIES +HOSTELRY +HOSTELS +HOSTESS +HOSTESSED +HOSTESSES +HOSTESSING +HOSTILE +HOSTILELY +HOSTILES +HOSTILITIES +HOSTILITY +HOSTING +HOSTLER +HOSTLERS +HOSTLY +HOSTS +HOT +HOTBED +HOTBEDS +HOTBLOOD +HOTBLOODS +HOTBOX +HOTBOXES +HOTCAKE +HOTCAKES +HOTCH +HOTCHED +HOTCHES +HOTCHING +HOTCHPOT +HOTCHPOTCH +HOTCHPOTCHES +HOTCHPOTS +HOTDOG +HOTDOGGED +HOTDOGGER +HOTDOGGERS +HOTDOGGING +HOTDOGS +HOTEL +HOTELDOM +HOTELDOMS +HOTELIER +HOTELIERS +HOTELMAN +HOTELMEN +HOTELS +HOTFOOT +HOTFOOTED +HOTFOOTING +HOTFOOTS +HOTHEAD +HOTHEADED +HOTHEADEDLY +HOTHEADEDNESS +HOTHEADEDNESSES +HOTHEADS +HOTHOUSE +HOTHOUSED +HOTHOUSES +HOTHOUSING +HOTLINE +HOTLINES +HOTLINK +HOTLINKS +HOTLY +HOTNESS +HOTNESSES +HOTPRESS +HOTPRESSED +HOTPRESSES +HOTPRESSING +HOTROD +HOTRODS +HOTS +HOTSHOT +HOTSHOTS +HOTSPOT +HOTSPOTS +HOTSPUR +HOTSPURS +HOTTED +HOTTER +HOTTEST +HOTTIE +HOTTIES +HOTTING +HOTTISH +HOUDAH +HOUDAHS +HOUND +HOUNDED +HOUNDER +HOUNDERS +HOUNDING +HOUNDS +HOUR +HOURGLASS +HOURGLASSES +HOURI +HOURIS +HOURLIES +HOURLONG +HOURLY +HOURS +HOUSE +HOUSEBOAT +HOUSEBOATER +HOUSEBOATERS +HOUSEBOATS +HOUSEBOUND +HOUSEBOY +HOUSEBOYS +HOUSEBREAK +HOUSEBREAKER +HOUSEBREAKERS +HOUSEBREAKING +HOUSEBREAKINGS +HOUSEBREAKS +HOUSEBROKE +HOUSEBROKEN +HOUSECARL +HOUSECARLS +HOUSECLEAN +HOUSECLEANED +HOUSECLEANING +HOUSECLEANINGS +HOUSECLEANS +HOUSECOAT +HOUSECOATS +HOUSED +HOUSEDRESS +HOUSEDRESSES +HOUSEFATHER +HOUSEFATHERS +HOUSEFLIES +HOUSEFLY +HOUSEFRONT +HOUSEFRONTS +HOUSEFUL +HOUSEFULS +HOUSEGUEST +HOUSEGUESTS +HOUSEHOLD +HOUSEHOLDER +HOUSEHOLDERS +HOUSEHOLDS +HOUSEHUSBAND +HOUSEHUSBANDS +HOUSEKEEP +HOUSEKEEPER +HOUSEKEEPERS +HOUSEKEEPING +HOUSEKEEPINGS +HOUSEKEEPS +HOUSEKEPT +HOUSEL +HOUSELED +HOUSELEEK +HOUSELEEKS +HOUSELESS +HOUSELESSNESS +HOUSELESSNESSES +HOUSELIGHTS +HOUSELING +HOUSELLED +HOUSELLING +HOUSELS +HOUSEMAID +HOUSEMAIDS +HOUSEMAN +HOUSEMASTER +HOUSEMASTERS +HOUSEMATE +HOUSEMATES +HOUSEMEN +HOUSEMOTHER +HOUSEMOTHERS +HOUSEPAINTER +HOUSEPAINTERS +HOUSEPARENT +HOUSEPARENTS +HOUSEPERSON +HOUSEPERSONS +HOUSEPLANT +HOUSEPLANTS +HOUSER +HOUSEROOM +HOUSEROOMS +HOUSERS +HOUSES +HOUSESAT +HOUSESIT +HOUSESITS +HOUSESITTING +HOUSETOP +HOUSETOPS +HOUSEWARES +HOUSEWARMING +HOUSEWARMINGS +HOUSEWIFE +HOUSEWIFELINESS +HOUSEWIFELY +HOUSEWIFERIES +HOUSEWIFERY +HOUSEWIFEY +HOUSEWIVES +HOUSEWORK +HOUSEWORKS +HOUSING +HOUSINGS +HOUSTONIA +HOUSTONIAS +HOVE +HOVEL +HOVELED +HOVELING +HOVELLED +HOVELLING +HOVELS +HOVER +HOVERCRAFT +HOVERCRAFTS +HOVERED +HOVERER +HOVERERS +HOVERFLIES +HOVERFLY +HOVERING +HOVERS +HOW +HOWBEIT +HOWDAH +HOWDAHS +HOWDIE +HOWDIED +HOWDIES +HOWDY +HOWDYING +HOWE +HOWES +HOWEVER +HOWF +HOWFF +HOWFFS +HOWFS +HOWITZER +HOWITZERS +HOWK +HOWKED +HOWKING +HOWKS +HOWL +HOWLED +HOWLER +HOWLERS +HOWLET +HOWLETS +HOWLING +HOWLINGLY +HOWLS +HOWS +HOWSOEVER +HOY +HOYA +HOYAS +HOYDEN +HOYDENED +HOYDENING +HOYDENISH +HOYDENS +HOYLE +HOYLES +HOYS +HRYVNA +HRYVNAS +HRYVNIA +HRYVNIAS +HUARACHE +HUARACHES +HUARACHO +HUARACHOS +HUB +HUBBIES +HUBBLY +HUBBUB +HUBBUBS +HUBBY +HUBCAP +HUBCAPS +HUBRIS +HUBRISES +HUBRISTIC +HUBS +HUCK +HUCKABACK +HUCKABACKS +HUCKLE +HUCKLEBERRIES +HUCKLEBERRY +HUCKLES +HUCKS +HUCKSTER +HUCKSTERED +HUCKSTERING +HUCKSTERISM +HUCKSTERISMS +HUCKSTERS +HUDDLE +HUDDLED +HUDDLER +HUDDLERS +HUDDLES +HUDDLING +HUE +HUED +HUELESS +HUES +HUFF +HUFFED +HUFFIER +HUFFIEST +HUFFILY +HUFFINESS +HUFFINESSES +HUFFING +HUFFISH +HUFFISHLY +HUFFS +HUFFY +HUG +HUGE +HUGELY +HUGENESS +HUGENESSES +HUGEOUS +HUGEOUSLY +HUGER +HUGEST +HUGGABLE +HUGGED +HUGGER +HUGGERS +HUGGING +HUGS +HUH +HUIC +HUIPIL +HUIPILES +HUIPILS +HUISACHE +HUISACHES +HULA +HULAS +HULK +HULKED +HULKIER +HULKIEST +HULKING +HULKS +HULKY +HULL +HULLABALOO +HULLABALOOS +HULLED +HULLER +HULLERS +HULLING +HULLO +HULLOA +HULLOAED +HULLOAING +HULLOAS +HULLOED +HULLOES +HULLOING +HULLOO +HULLOOED +HULLOOING +HULLOOS +HULLOS +HULLS +HUM +HUMAN +HUMANE +HUMANELY +HUMANENESS +HUMANENESSES +HUMANER +HUMANEST +HUMANHOOD +HUMANHOODS +HUMANISE +HUMANISED +HUMANISES +HUMANISING +HUMANISM +HUMANISMS +HUMANIST +HUMANISTIC +HUMANISTICALLY +HUMANISTS +HUMANITARIAN +HUMANITARIANISM +HUMANITARIANS +HUMANITIES +HUMANITY +HUMANIZATION +HUMANIZATIONS +HUMANIZE +HUMANIZED +HUMANIZER +HUMANIZERS +HUMANIZES +HUMANIZING +HUMANKIND +HUMANLIKE +HUMANLY +HUMANNESS +HUMANNESSES +HUMANOID +HUMANOIDS +HUMANS +HUMATE +HUMATES +HUMBLE +HUMBLEBEE +HUMBLEBEES +HUMBLED +HUMBLENESS +HUMBLENESSES +HUMBLER +HUMBLERS +HUMBLES +HUMBLEST +HUMBLING +HUMBLINGLY +HUMBLY +HUMBUG +HUMBUGGED +HUMBUGGER +HUMBUGGERIES +HUMBUGGERS +HUMBUGGERY +HUMBUGGING +HUMBUGS +HUMDINGER +HUMDINGERS +HUMDRUM +HUMDRUMS +HUMECTANT +HUMECTANTS +HUMERAL +HUMERALS +HUMERI +HUMERUS +HUMIC +HUMID +HUMIDEX +HUMIDEXES +HUMIDIFICATION +HUMIDIFICATIONS +HUMIDIFIED +HUMIDIFIER +HUMIDIFIERS +HUMIDIFIES +HUMIDIFY +HUMIDIFYING +HUMIDISTAT +HUMIDISTATS +HUMIDITIES +HUMIDITY +HUMIDLY +HUMIDNESS +HUMIDNESSES +HUMIDOR +HUMIDORS +HUMIFICATION +HUMIFICATIONS +HUMIFIED +HUMILIATE +HUMILIATED +HUMILIATES +HUMILIATING +HUMILIATINGLY +HUMILIATION +HUMILIATIONS +HUMILITIES +HUMILITY +HUMITURE +HUMITURES +HUMMABLE +HUMMED +HUMMER +HUMMERS +HUMMING +HUMMINGBIRD +HUMMINGBIRDS +HUMMOCK +HUMMOCKED +HUMMOCKING +HUMMOCKS +HUMMOCKY +HUMMUS +HUMMUSES +HUMONGOUS +HUMOR +HUMORAL +HUMORED +HUMORESQUE +HUMORESQUES +HUMORFUL +HUMORING +HUMORIST +HUMORISTIC +HUMORISTS +HUMORLESS +HUMORLESSLY +HUMORLESSNESS +HUMORLESSNESSES +HUMOROUS +HUMOROUSLY +HUMOROUSNESS +HUMOROUSNESSES +HUMORS +HUMOUR +HUMOURED +HUMOURING +HUMOURS +HUMP +HUMPBACK +HUMPBACKED +HUMPBACKS +HUMPED +HUMPER +HUMPERS +HUMPH +HUMPHED +HUMPHING +HUMPHS +HUMPIER +HUMPIEST +HUMPINESS +HUMPINESSES +HUMPING +HUMPLESS +HUMPS +HUMPY +HUMS +HUMUNGOUS +HUMUS +HUMUSES +HUMVEE +HUMVEES +HUN +HUNCH +HUNCHBACK +HUNCHBACKED +HUNCHBACKS +HUNCHED +HUNCHES +HUNCHING +HUNDRED +HUNDREDFOLD +HUNDREDS +HUNDREDTH +HUNDREDTHS +HUNDREDWEIGHT +HUNDREDWEIGHTS +HUNG +HUNGER +HUNGERED +HUNGERING +HUNGERS +HUNGOVER +HUNGRIER +HUNGRIEST +HUNGRILY +HUNGRINESS +HUNGRINESSES +HUNGRY +HUNH +HUNK +HUNKER +HUNKERED +HUNKERING +HUNKERS +HUNKEY +HUNKEYS +HUNKIE +HUNKIER +HUNKIES +HUNKIEST +HUNKS +HUNKY +HUNNISH +HUNS +HUNT +HUNTABLE +HUNTED +HUNTEDLY +HUNTER +HUNTERS +HUNTING +HUNTINGS +HUNTRESS +HUNTRESSES +HUNTS +HUNTSMAN +HUNTSMEN +HUP +HUPPAH +HUPPAHS +HURDIES +HURDLE +HURDLED +HURDLER +HURDLERS +HURDLES +HURDLING +HURDS +HURL +HURLED +HURLER +HURLERS +HURLEY +HURLEYS +HURLIES +HURLING +HURLINGS +HURLS +HURLY +HURRAH +HURRAHED +HURRAHING +HURRAHS +HURRAY +HURRAYED +HURRAYING +HURRAYS +HURRICANE +HURRICANES +HURRIED +HURRIEDLY +HURRIEDNESS +HURRIEDNESSES +HURRIER +HURRIERS +HURRIES +HURRY +HURRYING +HURST +HURSTS +HURT +HURTER +HURTERS +HURTFUL +HURTFULLY +HURTFULNESS +HURTFULNESSES +HURTING +HURTLE +HURTLED +HURTLES +HURTLESS +HURTLING +HURTS +HUSBAND +HUSBANDED +HUSBANDER +HUSBANDERS +HUSBANDING +HUSBANDLY +HUSBANDMAN +HUSBANDMEN +HUSBANDRIES +HUSBANDRY +HUSBANDS +HUSH +HUSHABY +HUSHED +HUSHEDLY +HUSHES +HUSHFUL +HUSHING +HUSHPUPPIES +HUSHPUPPY +HUSK +HUSKED +HUSKER +HUSKERS +HUSKIER +HUSKIES +HUSKIEST +HUSKILY +HUSKINESS +HUSKINESSES +HUSKING +HUSKINGS +HUSKLIKE +HUSKS +HUSKY +HUSSAR +HUSSARS +HUSSIES +HUSSY +HUSTINGS +HUSTLE +HUSTLED +HUSTLER +HUSTLERS +HUSTLES +HUSTLING +HUSWIFE +HUSWIFES +HUSWIVES +HUT +HUTCH +HUTCHED +HUTCHES +HUTCHING +HUTLIKE +HUTMENT +HUTMENTS +HUTS +HUTTED +HUTTING +HUTZPA +HUTZPAH +HUTZPAHS +HUTZPAS +HUZZA +HUZZAED +HUZZAH +HUZZAHED +HUZZAHING +HUZZAHS +HUZZAING +HUZZAS +HWAN +HYACINTH +HYACINTHINE +HYACINTHS +HYAENA +HYAENAS +HYAENIC +HYALIN +HYALINE +HYALINES +HYALINS +HYALITE +HYALITES +HYALOGEN +HYALOGENS +HYALOID +HYALOIDS +HYALOPLASM +HYALOPLASMS +HYALURONIDASE +HYALURONIDASES +HYBRID +HYBRIDISM +HYBRIDISMS +HYBRIDIST +HYBRIDISTS +HYBRIDITIES +HYBRIDITY +HYBRIDIZATION +HYBRIDIZATIONS +HYBRIDIZE +HYBRIDIZED +HYBRIDIZER +HYBRIDIZERS +HYBRIDIZES +HYBRIDIZING +HYBRIDOMA +HYBRIDOMAS +HYBRIDS +HYBRIS +HYBRISES +HYBRISTIC +HYDATHODE +HYDATHODES +HYDATID +HYDATIDS +HYDRA +HYDRACID +HYDRACIDS +HYDRAE +HYDRAGOG +HYDRAGOGS +HYDRALAZINE +HYDRALAZINES +HYDRANGEA +HYDRANGEAS +HYDRANT +HYDRANTH +HYDRANTHS +HYDRANTS +HYDRAS +HYDRASE +HYDRASES +HYDRASTIS +HYDRASTISES +HYDRATE +HYDRATED +HYDRATES +HYDRATING +HYDRATION +HYDRATIONS +HYDRATOR +HYDRATORS +HYDRAULIC +HYDRAULICALLY +HYDRAULICS +HYDRAZIDE +HYDRAZIDES +HYDRAZINE +HYDRAZINES +HYDRIA +HYDRIAE +HYDRIC +HYDRID +HYDRIDE +HYDRIDES +HYDRIDS +HYDRILLA +HYDRILLAS +HYDRO +HYDROBIOLOGICAL +HYDROBIOLOGIES +HYDROBIOLOGIST +HYDROBIOLOGISTS +HYDROBIOLOGY +HYDROCARBON +HYDROCARBONS +HYDROCAST +HYDROCASTS +HYDROCELE +HYDROCELES +HYDROCEPHALIC +HYDROCEPHALICS +HYDROCEPHALIES +HYDROCEPHALUS +HYDROCEPHALUSES +HYDROCEPHALY +HYDROCHLORIDE +HYDROCHLORIDES +HYDROCOLLOID +HYDROCOLLOIDAL +HYDROCOLLOIDS +HYDROCORTISONE +HYDROCORTISONES +HYDROCRACK +HYDROCRACKED +HYDROCRACKER +HYDROCRACKERS +HYDROCRACKING +HYDROCRACKINGS +HYDROCRACKS +HYDRODYNAMIC +HYDRODYNAMICAL +HYDRODYNAMICIST +HYDRODYNAMICS +HYDROELECTRIC +HYDROFOIL +HYDROFOILS +HYDROGEL +HYDROGELS +HYDROGEN +HYDROGENASE +HYDROGENASES +HYDROGENATE +HYDROGENATED +HYDROGENATES +HYDROGENATING +HYDROGENATION +HYDROGENATIONS +HYDROGENOUS +HYDROGENS +HYDROGRAPHER +HYDROGRAPHERS +HYDROGRAPHIC +HYDROGRAPHIES +HYDROGRAPHY +HYDROID +HYDROIDS +HYDROKINETIC +HYDROLASE +HYDROLASES +HYDROLOGIC +HYDROLOGICAL +HYDROLOGICALLY +HYDROLOGIES +HYDROLOGIST +HYDROLOGISTS +HYDROLOGY +HYDROLYSATE +HYDROLYSATES +HYDROLYSES +HYDROLYSIS +HYDROLYTE +HYDROLYTES +HYDROLYTIC +HYDROLYTICALLY +HYDROLYZABLE +HYDROLYZATE +HYDROLYZATES +HYDROLYZE +HYDROLYZED +HYDROLYZES +HYDROLYZING +HYDROMAGNETIC +HYDROMANCIES +HYDROMANCY +HYDROMECHANICAL +HYDROMECHANICS +HYDROMEDUSA +HYDROMEDUSAE +HYDROMEL +HYDROMELS +HYDROMETALLURGY +HYDROMETEOR +HYDROMETEORS +HYDROMETER +HYDROMETERS +HYDROMETRIC +HYDROMORPHIC +HYDRONIC +HYDRONICALLY +HYDRONIUM +HYDRONIUMS +HYDROPATH +HYDROPATHIC +HYDROPATHIES +HYDROPATHS +HYDROPATHY +HYDROPEROXIDE +HYDROPEROXIDES +HYDROPHANE +HYDROPHANES +HYDROPHILIC +HYDROPHILICITY +HYDROPHOBIA +HYDROPHOBIAS +HYDROPHOBIC +HYDROPHOBICITY +HYDROPHONE +HYDROPHONES +HYDROPHYTE +HYDROPHYTES +HYDROPHYTIC +HYDROPIC +HYDROPLANE +HYDROPLANED +HYDROPLANES +HYDROPLANING +HYDROPONIC +HYDROPONICALLY +HYDROPONICS +HYDROPOWER +HYDROPOWERS +HYDROPS +HYDROPSES +HYDROPSIES +HYDROPSY +HYDROQUINONE +HYDROQUINONES +HYDROS +HYDROSERE +HYDROSERES +HYDROSKI +HYDROSKIS +HYDROSOL +HYDROSOLIC +HYDROSOLS +HYDROSPACE +HYDROSPACES +HYDROSPHERE +HYDROSPHERES +HYDROSPHERIC +HYDROSTAT +HYDROSTATIC +HYDROSTATICALLY +HYDROSTATICS +HYDROSTATS +HYDROTHERAPIES +HYDROTHERAPY +HYDROTHERMAL +HYDROTHERMALLY +HYDROTHORACES +HYDROTHORAX +HYDROTHORAXES +HYDROTROPIC +HYDROTROPISM +HYDROTROPISMS +HYDROUS +HYDROXIDE +HYDROXIDES +HYDROXY +HYDROXYAPATITE +HYDROXYAPATITES +HYDROXYL +HYDROXYLAMINE +HYDROXYLAMINES +HYDROXYLAPATITE +HYDROXYLASE +HYDROXYLASES +HYDROXYLATE +HYDROXYLATED +HYDROXYLATES +HYDROXYLATING +HYDROXYLATION +HYDROXYLATIONS +HYDROXYLIC +HYDROXYLS +HYDROXYPROLINE +HYDROXYPROLINES +HYDROXYUREA +HYDROXYUREAS +HYDROXYZINE +HYDROXYZINES +HYDROZOAN +HYDROZOANS +HYENA +HYENAS +HYENIC +HYENINE +HYENOID +HYETAL +HYGEIST +HYGEISTS +HYGIEIST +HYGIEISTS +HYGIENE +HYGIENES +HYGIENIC +HYGIENICALLY +HYGIENICS +HYGIENIST +HYGIENISTS +HYGROGRAPH +HYGROGRAPHS +HYGROMETER +HYGROMETERS +HYGROMETRIC +HYGROPHILOUS +HYGROPHYTE +HYGROPHYTES +HYGROPHYTIC +HYGROSCOPIC +HYGROSCOPICITY +HYGROSTAT +HYGROSTATS +HYING +HYLA +HYLAS +HYLOZOIC +HYLOZOISM +HYLOZOISMS +HYLOZOIST +HYLOZOISTIC +HYLOZOISTS +HYMEN +HYMENAL +HYMENEAL +HYMENEALLY +HYMENEALS +HYMENIA +HYMENIAL +HYMENIUM +HYMENIUMS +HYMENOPTERA +HYMENOPTERAN +HYMENOPTERANS +HYMENOPTERON +HYMENOPTERONS +HYMENOPTEROUS +HYMENS +HYMN +HYMNAL +HYMNALS +HYMNARIES +HYMNARY +HYMNBOOK +HYMNBOOKS +HYMNED +HYMNING +HYMNIST +HYMNISTS +HYMNLESS +HYMNLIKE +HYMNODIES +HYMNODIST +HYMNODISTS +HYMNODY +HYMNOLOGIES +HYMNOLOGY +HYMNS +HYOID +HYOIDAL +HYOIDEAN +HYOIDS +HYOSCINE +HYOSCINES +HYOSCYAMINE +HYOSCYAMINES +HYP +HYPABYSSAL +HYPABYSSALLY +HYPAETHRAL +HYPALLAGE +HYPALLAGES +HYPANTHIA +HYPANTHIUM +HYPE +HYPED +HYPER +HYPERACID +HYPERACIDITIES +HYPERACIDITY +HYPERACTIVE +HYPERACTIVES +HYPERACTIVITIES +HYPERACTIVITY +HYPERACUITIES +HYPERACUITY +HYPERACUTE +HYPERAESTHESIA +HYPERAESTHESIAS +HYPERAESTHETIC +HYPERAGGRESSIVE +HYPERALERT +HYPERARID +HYPERAROUSAL +HYPERAROUSALS +HYPERAWARE +HYPERAWARENESS +HYPERBARIC +HYPERBARICALLY +HYPERBOLA +HYPERBOLAE +HYPERBOLAS +HYPERBOLE +HYPERBOLES +HYPERBOLIC +HYPERBOLICAL +HYPERBOLICALLY +HYPERBOLIST +HYPERBOLISTS +HYPERBOLIZE +HYPERBOLIZED +HYPERBOLIZES +HYPERBOLIZING +HYPERBOLOID +HYPERBOLOIDAL +HYPERBOLOIDS +HYPERBOREAN +HYPERBOREANS +HYPERCALCEMIA +HYPERCALCEMIAS +HYPERCALCEMIC +HYPERCAPNIA +HYPERCAPNIAS +HYPERCAPNIC +HYPERCATABOLISM +HYPERCATALECTIC +HYPERCATALEXES +HYPERCATALEXIS +HYPERCAUTIOUS +HYPERCHARGE +HYPERCHARGED +HYPERCHARGES +HYPERCIVILIZED +HYPERCOAGULABLE +HYPERCOMPLEX +HYPERCONSCIOUS +HYPERCORRECT +HYPERCORRECTION +HYPERCORRECTLY +HYPERCRITIC +HYPERCRITICAL +HYPERCRITICALLY +HYPERCRITICISM +HYPERCRITICISMS +HYPERCRITICS +HYPERCUBE +HYPERCUBES +HYPEREFFICIENT +HYPEREMIA +HYPEREMIAS +HYPEREMIC +HYPEREMOTIONAL +HYPERENDEMIC +HYPERENERGETIC +HYPERESTHESIA +HYPERESTHESIAS +HYPERESTHETIC +HYPEREUTECTIC +HYPEREUTECTOID +HYPEREXCITABLE +HYPEREXCITED +HYPEREXCITEMENT +HYPEREXCRETION +HYPEREXCRETIONS +HYPEREXTEND +HYPEREXTENDED +HYPEREXTENDING +HYPEREXTENDS +HYPEREXTENSION +HYPEREXTENSIONS +HYPERFASTIDIOUS +HYPERFINE +HYPERFUNCTION +HYPERFUNCTIONAL +HYPERFUNCTIONS +HYPERGAMIES +HYPERGAMY +HYPERGLYCEMIA +HYPERGLYCEMIAS +HYPERGLYCEMIC +HYPERGOL +HYPERGOLIC +HYPERGOLICALLY +HYPERGOLS +HYPERHIDROSES +HYPERHIDROSIS +HYPERIMMUNE +HYPERIMMUNIZE +HYPERIMMUNIZED +HYPERIMMUNIZES +HYPERIMMUNIZING +HYPERINFLATED +HYPERINFLATION +HYPERINFLATIONS +HYPERINSULINISM +HYPERINTENSE +HYPERINVOLUTION +HYPERIRRITABLE +HYPERKERATOSES +HYPERKERATOSIS +HYPERKERATOTIC +HYPERKINESES +HYPERKINESIA +HYPERKINESIAS +HYPERKINESIS +HYPERKINETIC +HYPERLINK +HYPERLINKED +HYPERLINKING +HYPERLINKS +HYPERLIPEMIA +HYPERLIPEMIAS +HYPERLIPEMIC +HYPERLIPIDEMIA +HYPERLIPIDEMIAS +HYPERMANIA +HYPERMANIAS +HYPERMANIC +HYPERMARKET +HYPERMARKETS +HYPERMASCULINE +HYPERMEDIA +HYPERMEDIAS +HYPERMETABOLIC +HYPERMETABOLISM +HYPERMETER +HYPERMETERS +HYPERMETRIC +HYPERMETRICAL +HYPERMETROPIA +HYPERMETROPIAS +HYPERMETROPIC +HYPERMNESIA +HYPERMNESIAS +HYPERMNESIC +HYPERMOBILITIES +HYPERMOBILITY +HYPERMODERN +HYPERMODERNIST +HYPERMODERNISTS +HYPERMUTABILITY +HYPERMUTABLE +HYPERON +HYPERONS +HYPEROPE +HYPEROPES +HYPEROPIA +HYPEROPIAS +HYPEROPIC +HYPEROSTOSES +HYPEROSTOSIS +HYPEROSTOTIC +HYPERPARASITE +HYPERPARASITES +HYPERPARASITIC +HYPERPARASITISM +HYPERPHAGIA +HYPERPHAGIAS +HYPERPHAGIC +HYPERPHYSICAL +HYPERPIGMENTED +HYPERPITUITARY +HYPERPLANE +HYPERPLANES +HYPERPLASIA +HYPERPLASIAS +HYPERPLASTIC +HYPERPLOID +HYPERPLOIDIES +HYPERPLOIDS +HYPERPLOIDY +HYPERPNEA +HYPERPNEAS +HYPERPNEIC +HYPERPOLARIZE +HYPERPOLARIZED +HYPERPOLARIZES +HYPERPOLARIZING +HYPERPRODUCER +HYPERPRODUCERS +HYPERPRODUCTION +HYPERPURE +HYPERPYREXIA +HYPERPYREXIAS +HYPERRATIONAL +HYPERREACTIVE +HYPERREACTIVITY +HYPERREACTOR +HYPERREACTORS +HYPERREALISM +HYPERREALISMS +HYPERREALIST +HYPERREALISTIC +HYPERRESPONSIVE +HYPERROMANTIC +HYPERROMANTICS +HYPERS +HYPERSALINE +HYPERSALINITIES +HYPERSALINITY +HYPERSALIVATION +HYPERSECRETION +HYPERSECRETIONS +HYPERSENSITIVE +HYPERSENSITIZE +HYPERSENSITIZED +HYPERSENSITIZES +HYPERSEXUAL +HYPERSEXUALITY +HYPERSOMNOLENCE +HYPERSONIC +HYPERSONICALLY +HYPERSPACE +HYPERSPACES +HYPERSTATIC +HYPERSTHENE +HYPERSTHENES +HYPERSTHENIC +HYPERSTIMULATE +HYPERSTIMULATED +HYPERSTIMULATES +HYPERSURFACE +HYPERSURFACES +HYPERTENSE +HYPERTENSION +HYPERTENSIONS +HYPERTENSIVE +HYPERTENSIVES +HYPERTEXT +HYPERTEXTS +HYPERTHERMIA +HYPERTHERMIAS +HYPERTHERMIC +HYPERTHYROID +HYPERTHYROIDISM +HYPERTONIA +HYPERTONIAS +HYPERTONIC +HYPERTONICITIES +HYPERTONICITY +HYPERTROPHIC +HYPERTROPHIED +HYPERTROPHIES +HYPERTROPHY +HYPERTROPHYING +HYPERTYPICAL +HYPERURBANISM +HYPERURBANISMS +HYPERURICEMIA +HYPERURICEMIAS +HYPERVELOCITIES +HYPERVELOCITY +HYPERVENTILATE +HYPERVENTILATED +HYPERVENTILATES +HYPERVIGILANCE +HYPERVIGILANCES +HYPERVIGILANT +HYPERVIRULENT +HYPERVISCOSITY +HYPES +HYPETHRAL +HYPHA +HYPHAE +HYPHAL +HYPHEMIA +HYPHEMIAS +HYPHEN +HYPHENATE +HYPHENATED +HYPHENATES +HYPHENATING +HYPHENATION +HYPHENATIONS +HYPHENED +HYPHENIC +HYPHENING +HYPHENLESS +HYPHENS +HYPING +HYPNAGOGIC +HYPNIC +HYPNOGOGIC +HYPNOID +HYPNOIDAL +HYPNOLOGIES +HYPNOLOGY +HYPNOPOMPIC +HYPNOSES +HYPNOSIS +HYPNOTHERAPIES +HYPNOTHERAPIST +HYPNOTHERAPISTS +HYPNOTHERAPY +HYPNOTIC +HYPNOTICALLY +HYPNOTICS +HYPNOTISM +HYPNOTISMS +HYPNOTIST +HYPNOTISTS +HYPNOTIZABILITY +HYPNOTIZABLE +HYPNOTIZE +HYPNOTIZED +HYPNOTIZES +HYPNOTIZING +HYPO +HYPOACID +HYPOALLERGENIC +HYPOBARIC +HYPOBLAST +HYPOBLASTS +HYPOCALCEMIA +HYPOCALCEMIAS +HYPOCALCEMIC +HYPOCAUST +HYPOCAUSTS +HYPOCENTER +HYPOCENTERS +HYPOCENTRAL +HYPOCHLORITE +HYPOCHLORITES +HYPOCHONDRIA +HYPOCHONDRIAC +HYPOCHONDRIACAL +HYPOCHONDRIACS +HYPOCHONDRIAS +HYPOCHONDRIASES +HYPOCHONDRIASIS +HYPOCORISM +HYPOCORISMS +HYPOCORISTIC +HYPOCORISTICAL +HYPOCOTYL +HYPOCOTYLS +HYPOCRISIES +HYPOCRISY +HYPOCRITE +HYPOCRITES +HYPOCRITICAL +HYPOCRITICALLY +HYPOCYCLOID +HYPOCYCLOIDS +HYPODERM +HYPODERMA +HYPODERMAL +HYPODERMAS +HYPODERMIC +HYPODERMICALLY +HYPODERMICS +HYPODERMIS +HYPODERMISES +HYPODERMS +HYPODIPLOID +HYPODIPLOIDIES +HYPODIPLOIDY +HYPOED +HYPOEUTECTOID +HYPOGASTRIC +HYPOGEA +HYPOGEAL +HYPOGEAN +HYPOGENE +HYPOGEOUS +HYPOGEUM +HYPOGLOSSAL +HYPOGLOSSALS +HYPOGLYCEMIA +HYPOGLYCEMIAS +HYPOGLYCEMIC +HYPOGLYCEMICS +HYPOGYNIES +HYPOGYNOUS +HYPOGYNY +HYPOING +HYPOKALEMIA +HYPOKALEMIAS +HYPOKALEMIC +HYPOLIMNIA +HYPOLIMNION +HYPOMAGNESEMIA +HYPOMAGNESEMIAS +HYPOMANIA +HYPOMANIAS +HYPOMANIC +HYPOMANICS +HYPOMORPH +HYPOMORPHIC +HYPOMORPHS +HYPONASTIES +HYPONASTY +HYPONEA +HYPONEAS +HYPONOIA +HYPONOIAS +HYPONYM +HYPONYMIES +HYPONYMS +HYPONYMY +HYPOPHARYNGES +HYPOPHARYNX +HYPOPHARYNXES +HYPOPHYSEAL +HYPOPHYSECTOMY +HYPOPHYSES +HYPOPHYSIAL +HYPOPHYSIS +HYPOPITUITARISM +HYPOPITUITARY +HYPOPLASIA +HYPOPLASIAS +HYPOPLASTIC +HYPOPLOID +HYPOPLOIDS +HYPOPNEA +HYPOPNEAS +HYPOPNEIC +HYPOPYON +HYPOPYONS +HYPOS +HYPOSENSITIZE +HYPOSENSITIZED +HYPOSENSITIZES +HYPOSENSITIZING +HYPOSPADIAS +HYPOSPADIASES +HYPOSTASES +HYPOSTASIS +HYPOSTATIC +HYPOSTATICALLY +HYPOSTATIZATION +HYPOSTATIZE +HYPOSTATIZED +HYPOSTATIZES +HYPOSTATIZING +HYPOSTOME +HYPOSTOMES +HYPOSTYLE +HYPOSTYLES +HYPOTACTIC +HYPOTAXES +HYPOTAXIS +HYPOTENSION +HYPOTENSIONS +HYPOTENSIVE +HYPOTENSIVES +HYPOTENUSE +HYPOTENUSES +HYPOTHALAMI +HYPOTHALAMIC +HYPOTHALAMUS +HYPOTHEC +HYPOTHECATE +HYPOTHECATED +HYPOTHECATES +HYPOTHECATING +HYPOTHECATION +HYPOTHECATIONS +HYPOTHECATOR +HYPOTHECATORS +HYPOTHECS +HYPOTHENUSE +HYPOTHENUSES +HYPOTHERMAL +HYPOTHERMIA +HYPOTHERMIAS +HYPOTHERMIC +HYPOTHESES +HYPOTHESIS +HYPOTHESIZE +HYPOTHESIZED +HYPOTHESIZES +HYPOTHESIZING +HYPOTHETICAL +HYPOTHETICALLY +HYPOTHYROID +HYPOTHYROIDISM +HYPOTHYROIDISMS +HYPOTONIA +HYPOTONIAS +HYPOTONIC +HYPOTONICITIES +HYPOTONICITY +HYPOXANTHINE +HYPOXANTHINES +HYPOXEMIA +HYPOXEMIAS +HYPOXEMIC +HYPOXIA +HYPOXIAS +HYPOXIC +HYPS +HYPSOMETER +HYPSOMETERS +HYPSOMETRIC +HYRACES +HYRACOID +HYRACOIDS +HYRAX +HYRAXES +HYSON +HYSONS +HYSSOP +HYSSOPS +HYSTERECTOMIES +HYSTERECTOMIZED +HYSTERECTOMY +HYSTERESES +HYSTERESIS +HYSTERETIC +HYSTERIA +HYSTERIAS +HYSTERIC +HYSTERICAL +HYSTERICALLY +HYSTERICS +HYSTEROID +HYSTEROTOMIES +HYSTEROTOMY +HYTE +IAMB +IAMBI +IAMBIC +IAMBICS +IAMBS +IAMBUS +IAMBUSES +IATRIC +IATRICAL +IATROGENIC +IATROGENICALLY +IBEX +IBEXES +IBICES +IBIDEM +IBIS +IBISES +IBOGAINE +IBOGAINES +IBUPROFEN +IBUPROFENS +ICE +ICEBERG +ICEBERGS +ICEBLINK +ICEBLINKS +ICEBOAT +ICEBOATER +ICEBOATERS +ICEBOATING +ICEBOATINGS +ICEBOATS +ICEBOUND +ICEBOX +ICEBOXES +ICEBREAKER +ICEBREAKERS +ICECAP +ICECAPPED +ICECAPS +ICED +ICEFALL +ICEFALLS +ICEHOUSE +ICEHOUSES +ICEKHANA +ICEKHANAS +ICELESS +ICELIKE +ICEMAKER +ICEMAKERS +ICEMAN +ICEMEN +ICES +ICH +ICHNEUMON +ICHNEUMONS +ICHNITE +ICHNITES +ICHNOLITE +ICHNOLITES +ICHNOLOGIES +ICHNOLOGY +ICHOR +ICHOROUS +ICHORS +ICHS +ICHTHYIC +ICHTHYOFAUNA +ICHTHYOFAUNAE +ICHTHYOFAUNAL +ICHTHYOFAUNAS +ICHTHYOID +ICHTHYOIDS +ICHTHYOLOGICAL +ICHTHYOLOGIES +ICHTHYOLOGIST +ICHTHYOLOGISTS +ICHTHYOLOGY +ICHTHYOPHAGOUS +ICHTHYOSAUR +ICHTHYOSAURIAN +ICHTHYOSAURIANS +ICHTHYOSAURS +ICICLE +ICICLED +ICICLES +ICIER +ICIEST +ICILY +ICINESS +ICINESSES +ICING +ICINGS +ICK +ICKER +ICKERS +ICKIER +ICKIEST +ICKILY +ICKINESS +ICKINESSES +ICKY +ICON +ICONES +ICONIC +ICONICAL +ICONICALLY +ICONICITIES +ICONICITY +ICONOCLASM +ICONOCLASMS +ICONOCLAST +ICONOCLASTIC +ICONOCLASTS +ICONOGRAPHER +ICONOGRAPHERS +ICONOGRAPHIC +ICONOGRAPHICAL +ICONOGRAPHIES +ICONOGRAPHY +ICONOLATRIES +ICONOLATRY +ICONOLOGICAL +ICONOLOGIES +ICONOLOGY +ICONOSCOPE +ICONOSCOPES +ICONOSTASES +ICONOSTASIS +ICONS +ICOSAHEDRA +ICOSAHEDRAL +ICOSAHEDRON +ICOSAHEDRONS +ICTERIC +ICTERICAL +ICTERICS +ICTERUS +ICTERUSES +ICTIC +ICTUS +ICTUSES +ICY +ID +IDEA +IDEAL +IDEALESS +IDEALISE +IDEALISED +IDEALISES +IDEALISING +IDEALISM +IDEALISMS +IDEALIST +IDEALISTIC +IDEALISTICALLY +IDEALISTS +IDEALITIES +IDEALITY +IDEALIZATION +IDEALIZATIONS +IDEALIZE +IDEALIZED +IDEALIZER +IDEALIZERS +IDEALIZES +IDEALIZING +IDEALLESS +IDEALLY +IDEALOGIES +IDEALOGUE +IDEALOGUES +IDEALOGY +IDEALS +IDEAS +IDEATE +IDEATED +IDEATES +IDEATING +IDEATION +IDEATIONAL +IDEATIONALLY +IDEATIONS +IDEATIVE +IDEM +IDEMPOTENT +IDEMPOTENTS +IDENTIC +IDENTICAL +IDENTICALLY +IDENTICALNESS +IDENTICALNESSES +IDENTIFIABLE +IDENTIFIABLY +IDENTIFICATION +IDENTIFICATIONS +IDENTIFIED +IDENTIFIER +IDENTIFIERS +IDENTIFIES +IDENTIFY +IDENTIFYING +IDENTIKIT +IDENTITIES +IDENTITY +IDEOGRAM +IDEOGRAMIC +IDEOGRAMMATIC +IDEOGRAMMIC +IDEOGRAMS +IDEOGRAPH +IDEOGRAPHIC +IDEOGRAPHICALLY +IDEOGRAPHIES +IDEOGRAPHS +IDEOGRAPHY +IDEOLOGIC +IDEOLOGICAL +IDEOLOGICALLY +IDEOLOGIES +IDEOLOGIST +IDEOLOGISTS +IDEOLOGIZE +IDEOLOGIZED +IDEOLOGIZES +IDEOLOGIZING +IDEOLOGUE +IDEOLOGUES +IDEOLOGY +IDEOMOTOR +IDEOPHONE +IDEOPHONES +IDES +IDIOBLAST +IDIOBLASTIC +IDIOBLASTS +IDIOCIES +IDIOCY +IDIOGRAPHIC +IDIOLECT +IDIOLECTAL +IDIOLECTS +IDIOM +IDIOMATIC +IDIOMATICALLY +IDIOMATICNESS +IDIOMATICNESSES +IDIOMORPHIC +IDIOMS +IDIOPATHIC +IDIOPATHICALLY +IDIOPATHIES +IDIOPATHY +IDIOPLASM +IDIOPLASMS +IDIOSYNCRASIES +IDIOSYNCRASY +IDIOSYNCRATIC +IDIOT +IDIOTIC +IDIOTICAL +IDIOTICALLY +IDIOTISM +IDIOTISMS +IDIOTS +IDIOTYPE +IDIOTYPES +IDIOTYPIC +IDLE +IDLED +IDLENESS +IDLENESSES +IDLER +IDLERS +IDLES +IDLESSE +IDLESSES +IDLEST +IDLING +IDLY +IDOCRASE +IDOCRASES +IDOL +IDOLATER +IDOLATERS +IDOLATOR +IDOLATORS +IDOLATRIES +IDOLATROUS +IDOLATROUSLY +IDOLATROUSNESS +IDOLATRY +IDOLISE +IDOLISED +IDOLISER +IDOLISERS +IDOLISES +IDOLISING +IDOLISM +IDOLISMS +IDOLIZATION +IDOLIZATIONS +IDOLIZE +IDOLIZED +IDOLIZER +IDOLIZERS +IDOLIZES +IDOLIZING +IDOLS +IDONEITIES +IDONEITY +IDONEOUS +IDS +IDYL +IDYLIST +IDYLISTS +IDYLL +IDYLLIC +IDYLLICALLY +IDYLLIST +IDYLLISTS +IDYLLS +IDYLS +IF +IFF +IFFIER +IFFIEST +IFFINESS +IFFINESSES +IFFY +IFS +IGG +IGGED +IGGING +IGGS +IGLOO +IGLOOS +IGLU +IGLUS +IGNATIA +IGNATIAS +IGNEOUS +IGNESCENT +IGNESCENTS +IGNIFIED +IGNIFIES +IGNIFY +IGNIFYING +IGNIMBRITE +IGNIMBRITES +IGNITABILITIES +IGNITABILITY +IGNITABLE +IGNITE +IGNITED +IGNITER +IGNITERS +IGNITES +IGNITIBLE +IGNITING +IGNITION +IGNITIONS +IGNITOR +IGNITORS +IGNITRON +IGNITRONS +IGNOBILITIES +IGNOBILITY +IGNOBLE +IGNOBLENESS +IGNOBLENESSES +IGNOBLY +IGNOMINIES +IGNOMINIOUS +IGNOMINIOUSLY +IGNOMINIOUSNESS +IGNOMINY +IGNORABLE +IGNORAMI +IGNORAMUS +IGNORAMUSES +IGNORANCE +IGNORANCES +IGNORANT +IGNORANTLY +IGNORANTNESS +IGNORANTNESSES +IGNORE +IGNORED +IGNORER +IGNORERS +IGNORES +IGNORING +IGUANA +IGUANAS +IGUANIAN +IGUANIANS +IGUANID +IGUANIDS +IGUANODON +IGUANODONS +IHRAM +IHRAMS +IKAT +IKATS +IKEBANA +IKEBANAS +IKON +IKONS +ILEA +ILEAC +ILEAL +ILEITIDES +ILEITIS +ILEOSTOMIES +ILEOSTOMY +ILEUM +ILEUS +ILEUSES +ILEX +ILEXES +ILIA +ILIAC +ILIAD +ILIADS +ILIAL +ILIUM +ILK +ILKA +ILKS +ILL +ILLATION +ILLATIONS +ILLATIVE +ILLATIVELY +ILLATIVES +ILLAUDABLE +ILLAUDABLY +ILLEGAL +ILLEGALITIES +ILLEGALITY +ILLEGALIZATION +ILLEGALIZATIONS +ILLEGALIZE +ILLEGALIZED +ILLEGALIZES +ILLEGALIZING +ILLEGALLY +ILLEGALS +ILLEGIBILITIES +ILLEGIBILITY +ILLEGIBLE +ILLEGIBLY +ILLEGITIMACIES +ILLEGITIMACY +ILLEGITIMATE +ILLEGITIMATELY +ILLER +ILLEST +ILLIBERAL +ILLIBERALISM +ILLIBERALISMS +ILLIBERALITIES +ILLIBERALITY +ILLIBERALLY +ILLIBERALNESS +ILLIBERALNESSES +ILLICIT +ILLICITLY +ILLIMITABILITY +ILLIMITABLE +ILLIMITABLENESS +ILLIMITABLY +ILLINIUM +ILLINIUMS +ILLIQUID +ILLIQUIDITIES +ILLIQUIDITY +ILLITE +ILLITERACIES +ILLITERACY +ILLITERATE +ILLITERATELY +ILLITERATENESS +ILLITERATES +ILLITES +ILLITIC +ILLNESS +ILLNESSES +ILLOCUTIONARY +ILLOGIC +ILLOGICAL +ILLOGICALITIES +ILLOGICALITY +ILLOGICALLY +ILLOGICALNESS +ILLOGICALNESSES +ILLOGICS +ILLS +ILLUDE +ILLUDED +ILLUDES +ILLUDING +ILLUME +ILLUMED +ILLUMES +ILLUMINABLE +ILLUMINANCE +ILLUMINANCES +ILLUMINANT +ILLUMINANTS +ILLUMINATE +ILLUMINATED +ILLUMINATES +ILLUMINATI +ILLUMINATING +ILLUMINATINGLY +ILLUMINATION +ILLUMINATIONS +ILLUMINATIVE +ILLUMINATOR +ILLUMINATORS +ILLUMINE +ILLUMINED +ILLUMINES +ILLUMING +ILLUMINING +ILLUMINISM +ILLUMINISMS +ILLUMINIST +ILLUMINISTS +ILLUSION +ILLUSIONAL +ILLUSIONARY +ILLUSIONISM +ILLUSIONISMS +ILLUSIONIST +ILLUSIONISTIC +ILLUSIONISTS +ILLUSIONS +ILLUSIVE +ILLUSIVELY +ILLUSIVENESS +ILLUSIVENESSES +ILLUSORILY +ILLUSORINESS +ILLUSORINESSES +ILLUSORY +ILLUSTRATE +ILLUSTRATED +ILLUSTRATES +ILLUSTRATING +ILLUSTRATION +ILLUSTRATIONAL +ILLUSTRATIONS +ILLUSTRATIVE +ILLUSTRATIVELY +ILLUSTRATOR +ILLUSTRATORS +ILLUSTRIOUS +ILLUSTRIOUSLY +ILLUSTRIOUSNESS +ILLUVIA +ILLUVIAL +ILLUVIATE +ILLUVIATED +ILLUVIATES +ILLUVIATING +ILLUVIATION +ILLUVIATIONS +ILLUVIUM +ILLUVIUMS +ILLY +ILMENITE +ILMENITES +IMAGE +IMAGEABLE +IMAGED +IMAGER +IMAGERIES +IMAGERS +IMAGERY +IMAGES +IMAGINABLE +IMAGINABLENESS +IMAGINABLY +IMAGINAL +IMAGINARIES +IMAGINARILY +IMAGINARINESS +IMAGINARINESSES +IMAGINARY +IMAGINATION +IMAGINATIONS +IMAGINATIVE +IMAGINATIVELY +IMAGINATIVENESS +IMAGINE +IMAGINED +IMAGINER +IMAGINERS +IMAGINES +IMAGING +IMAGINGS +IMAGINING +IMAGISM +IMAGISMS +IMAGIST +IMAGISTIC +IMAGISTICALLY +IMAGISTS +IMAGO +IMAGOES +IMAGOS +IMAM +IMAMATE +IMAMATES +IMAMS +IMARET +IMARETS +IMAUM +IMAUMS +IMBALANCE +IMBALANCED +IMBALANCES +IMBALM +IMBALMED +IMBALMER +IMBALMERS +IMBALMING +IMBALMS +IMBARK +IMBARKED +IMBARKING +IMBARKS +IMBECILE +IMBECILES +IMBECILIC +IMBECILITIES +IMBECILITY +IMBED +IMBEDDED +IMBEDDING +IMBEDS +IMBIBE +IMBIBED +IMBIBER +IMBIBERS +IMBIBES +IMBIBING +IMBIBITION +IMBIBITIONAL +IMBIBITIONS +IMBITTER +IMBITTERED +IMBITTERING +IMBITTERS +IMBLAZE +IMBLAZED +IMBLAZES +IMBLAZING +IMBODIED +IMBODIES +IMBODY +IMBODYING +IMBOLDEN +IMBOLDENED +IMBOLDENING +IMBOLDENS +IMBOSOM +IMBOSOMED +IMBOSOMING +IMBOSOMS +IMBOWER +IMBOWERED +IMBOWERING +IMBOWERS +IMBRICATE +IMBRICATED +IMBRICATES +IMBRICATING +IMBRICATION +IMBRICATIONS +IMBROGLIO +IMBROGLIOS +IMBROWN +IMBROWNED +IMBROWNING +IMBROWNS +IMBRUE +IMBRUED +IMBRUES +IMBRUING +IMBRUTE +IMBRUTED +IMBRUTES +IMBRUTING +IMBUE +IMBUED +IMBUEMENT +IMBUEMENTS +IMBUES +IMBUING +IMID +IMIDAZOLE +IMIDAZOLES +IMIDE +IMIDES +IMIDIC +IMIDO +IMIDS +IMINE +IMINES +IMINO +IMIPRAMINE +IMIPRAMINES +IMITABLE +IMITATE +IMITATED +IMITATES +IMITATING +IMITATION +IMITATIONS +IMITATIVE +IMITATIVELY +IMITATIVENESS +IMITATIVENESSES +IMITATOR +IMITATORS +IMMACULACIES +IMMACULACY +IMMACULATE +IMMACULATELY +IMMANE +IMMANENCE +IMMANENCES +IMMANENCIES +IMMANENCY +IMMANENT +IMMANENTISM +IMMANENTISMS +IMMANENTIST +IMMANENTISTIC +IMMANENTISTS +IMMANENTLY +IMMATERIAL +IMMATERIALISM +IMMATERIALISMS +IMMATERIALIST +IMMATERIALISTS +IMMATERIALITIES +IMMATERIALITY +IMMATERIALIZE +IMMATERIALIZED +IMMATERIALIZES +IMMATERIALIZING +IMMATURE +IMMATURELY +IMMATURES +IMMATURITIES +IMMATURITY +IMMEASURABLE +IMMEASURABLY +IMMEDIACIES +IMMEDIACY +IMMEDIATE +IMMEDIATELY +IMMEDIATENESS +IMMEDIATENESSES +IMMEDICABLE +IMMEDICABLY +IMMEMORIAL +IMMEMORIALLY +IMMENSE +IMMENSELY +IMMENSENESS +IMMENSENESSES +IMMENSER +IMMENSEST +IMMENSITIES +IMMENSITY +IMMENSURABLE +IMMERGE +IMMERGED +IMMERGES +IMMERGING +IMMERSE +IMMERSED +IMMERSES +IMMERSIBLE +IMMERSING +IMMERSION +IMMERSIONS +IMMESH +IMMESHED +IMMESHES +IMMESHING +IMMETHODICAL +IMMETHODICALLY +IMMIES +IMMIGRANT +IMMIGRANTS +IMMIGRATE +IMMIGRATED +IMMIGRATES +IMMIGRATING +IMMIGRATION +IMMIGRATIONAL +IMMIGRATIONS +IMMINENCE +IMMINENCES +IMMINENCIES +IMMINENCY +IMMINENT +IMMINENTLY +IMMINGLE +IMMINGLED +IMMINGLES +IMMINGLING +IMMISCIBILITIES +IMMISCIBILITY +IMMISCIBLE +IMMITIGABLE +IMMITIGABLY +IMMITTANCE +IMMITTANCES +IMMIX +IMMIXED +IMMIXES +IMMIXING +IMMIXTURE +IMMIXTURES +IMMOBILE +IMMOBILISM +IMMOBILISMS +IMMOBILITIES +IMMOBILITY +IMMOBILIZATION +IMMOBILIZATIONS +IMMOBILIZE +IMMOBILIZED +IMMOBILIZER +IMMOBILIZERS +IMMOBILIZES +IMMOBILIZING +IMMODERACIES +IMMODERACY +IMMODERATE +IMMODERATELY +IMMODERATENESS +IMMODERATION +IMMODERATIONS +IMMODEST +IMMODESTIES +IMMODESTLY +IMMODESTY +IMMOLATE +IMMOLATED +IMMOLATES +IMMOLATING +IMMOLATION +IMMOLATIONS +IMMOLATOR +IMMOLATORS +IMMORAL +IMMORALISM +IMMORALISMS +IMMORALIST +IMMORALISTS +IMMORALITIES +IMMORALITY +IMMORALLY +IMMORTAL +IMMORTALISE +IMMORTALISED +IMMORTALISES +IMMORTALISING +IMMORTALITIES +IMMORTALITY +IMMORTALIZATION +IMMORTALIZE +IMMORTALIZED +IMMORTALIZER +IMMORTALIZERS +IMMORTALIZES +IMMORTALIZING +IMMORTALLY +IMMORTALS +IMMORTELLE +IMMORTELLES +IMMOTILE +IMMOVABILITIES +IMMOVABILITY +IMMOVABLE +IMMOVABLENESS +IMMOVABLENESSES +IMMOVABLES +IMMOVABLY +IMMUNE +IMMUNES +IMMUNISE +IMMUNISED +IMMUNISES +IMMUNISING +IMMUNITIES +IMMUNITY +IMMUNIZATION +IMMUNIZATIONS +IMMUNIZE +IMMUNIZED +IMMUNIZER +IMMUNIZERS +IMMUNIZES +IMMUNIZING +IMMUNOASSAY +IMMUNOASSAYABLE +IMMUNOASSAYS +IMMUNOBLOT +IMMUNOBLOTS +IMMUNOBLOTTING +IMMUNOBLOTTINGS +IMMUNOCHEMICAL +IMMUNOCHEMIST +IMMUNOCHEMISTRY +IMMUNOCHEMISTS +IMMUNOCOMPETENT +IMMUNODEFICIENT +IMMUNODIAGNOSES +IMMUNODIAGNOSIS +IMMUNODIFFUSION +IMMUNOGEN +IMMUNOGENESES +IMMUNOGENESIS +IMMUNOGENETIC +IMMUNOGENETICS +IMMUNOGENIC +IMMUNOGENICITY +IMMUNOGENS +IMMUNOGLOBULIN +IMMUNOGLOBULINS +IMMUNOLOGIC +IMMUNOLOGICAL +IMMUNOLOGICALLY +IMMUNOLOGIES +IMMUNOLOGIST +IMMUNOLOGISTS +IMMUNOLOGY +IMMUNOMODULATOR +IMMUNOPATHOLOGY +IMMUNOREACTIVE +IMMUNOSORBENT +IMMUNOSORBENTS +IMMUNOSUPPRESS +IMMUNOTHERAPIES +IMMUNOTHERAPY +IMMURE +IMMURED +IMMUREMENT +IMMUREMENTS +IMMURES +IMMURING +IMMUTABILITIES +IMMUTABILITY +IMMUTABLE +IMMUTABLENESS +IMMUTABLENESSES +IMMUTABLY +IMMY +IMP +IMPACT +IMPACTED +IMPACTER +IMPACTERS +IMPACTFUL +IMPACTING +IMPACTION +IMPACTIONS +IMPACTIVE +IMPACTOR +IMPACTORS +IMPACTS +IMPAINT +IMPAINTED +IMPAINTING +IMPAINTS +IMPAIR +IMPAIRED +IMPAIRER +IMPAIRERS +IMPAIRING +IMPAIRMENT +IMPAIRMENTS +IMPAIRS +IMPALA +IMPALAS +IMPALE +IMPALED +IMPALEMENT +IMPALEMENTS +IMPALER +IMPALERS +IMPALES +IMPALING +IMPALPABILITIES +IMPALPABILITY +IMPALPABLE +IMPALPABLY +IMPANEL +IMPANELED +IMPANELING +IMPANELLED +IMPANELLING +IMPANELS +IMPARADISE +IMPARADISED +IMPARADISES +IMPARADISING +IMPARITIES +IMPARITY +IMPARK +IMPARKED +IMPARKING +IMPARKS +IMPART +IMPARTATION +IMPARTATIONS +IMPARTED +IMPARTER +IMPARTERS +IMPARTIAL +IMPARTIALITIES +IMPARTIALITY +IMPARTIALLY +IMPARTIBLE +IMPARTIBLY +IMPARTING +IMPARTMENT +IMPARTMENTS +IMPARTS +IMPASSABILITIES +IMPASSABILITY +IMPASSABLE +IMPASSABLENESS +IMPASSABLY +IMPASSE +IMPASSES +IMPASSIBILITIES +IMPASSIBILITY +IMPASSIBLE +IMPASSIBLY +IMPASSION +IMPASSIONED +IMPASSIONING +IMPASSIONS +IMPASSIVE +IMPASSIVELY +IMPASSIVENESS +IMPASSIVENESSES +IMPASSIVITIES +IMPASSIVITY +IMPASTE +IMPASTED +IMPASTES +IMPASTING +IMPASTO +IMPASTOED +IMPASTOS +IMPATIENCE +IMPATIENCES +IMPATIENS +IMPATIENT +IMPATIENTLY +IMPAVID +IMPAWN +IMPAWNED +IMPAWNING +IMPAWNS +IMPEACH +IMPEACHABLE +IMPEACHED +IMPEACHER +IMPEACHERS +IMPEACHES +IMPEACHING +IMPEACHMENT +IMPEACHMENTS +IMPEARL +IMPEARLED +IMPEARLING +IMPEARLS +IMPECCABILITIES +IMPECCABILITY +IMPECCABLE +IMPECCABLY +IMPECCANT +IMPECUNIOSITIES +IMPECUNIOSITY +IMPECUNIOUS +IMPECUNIOUSLY +IMPECUNIOUSNESS +IMPED +IMPEDANCE +IMPEDANCES +IMPEDE +IMPEDED +IMPEDER +IMPEDERS +IMPEDES +IMPEDIMENT +IMPEDIMENTA +IMPEDIMENTS +IMPEDING +IMPEL +IMPELLED +IMPELLENT +IMPELLENTS +IMPELLER +IMPELLERS +IMPELLING +IMPELLOR +IMPELLORS +IMPELS +IMPEND +IMPENDED +IMPENDENT +IMPENDING +IMPENDS +IMPENETRABILITY +IMPENETRABLE +IMPENETRABLY +IMPENITENCE +IMPENITENCES +IMPENITENT +IMPENITENTLY +IMPERATIVE +IMPERATIVELY +IMPERATIVENESS +IMPERATIVES +IMPERATOR +IMPERATORIAL +IMPERATORS +IMPERCEIVABLE +IMPERCEPTIBLE +IMPERCEPTIBLY +IMPERCEPTIVE +IMPERCIPIENCE +IMPERCIPIENCES +IMPERCIPIENT +IMPERFECT +IMPERFECTION +IMPERFECTIONS +IMPERFECTIVE +IMPERFECTIVES +IMPERFECTLY +IMPERFECTNESS +IMPERFECTNESSES +IMPERFECTS +IMPERFORATE +IMPERIA +IMPERIAL +IMPERIALISM +IMPERIALISMS +IMPERIALIST +IMPERIALISTIC +IMPERIALISTS +IMPERIALLY +IMPERIALS +IMPERIL +IMPERILED +IMPERILING +IMPERILLED +IMPERILLING +IMPERILMENT +IMPERILMENTS +IMPERILS +IMPERIOUS +IMPERIOUSLY +IMPERIOUSNESS +IMPERIOUSNESSES +IMPERISHABILITY +IMPERISHABLE +IMPERISHABLES +IMPERISHABLY +IMPERIUM +IMPERIUMS +IMPERMANENCE +IMPERMANENCES +IMPERMANENCIES +IMPERMANENCY +IMPERMANENT +IMPERMANENTLY +IMPERMEABILITY +IMPERMEABLE +IMPERMISSIBLE +IMPERMISSIBLY +IMPERSONAL +IMPERSONALITIES +IMPERSONALITY +IMPERSONALIZE +IMPERSONALIZED +IMPERSONALIZES +IMPERSONALIZING +IMPERSONALLY +IMPERSONATE +IMPERSONATED +IMPERSONATES +IMPERSONATING +IMPERSONATION +IMPERSONATIONS +IMPERSONATOR +IMPERSONATORS +IMPERTINENCE +IMPERTINENCES +IMPERTINENCIES +IMPERTINENCY +IMPERTINENT +IMPERTINENTLY +IMPERTURBABLE +IMPERTURBABLY +IMPERVIOUS +IMPERVIOUSLY +IMPERVIOUSNESS +IMPETIGINOUS +IMPETIGO +IMPETIGOS +IMPETRATE +IMPETRATED +IMPETRATES +IMPETRATING +IMPETRATION +IMPETRATIONS +IMPETUOSITIES +IMPETUOSITY +IMPETUOUS +IMPETUOUSLY +IMPETUOUSNESS +IMPETUOUSNESSES +IMPETUS +IMPETUSES +IMPHEE +IMPHEES +IMPI +IMPIETIES +IMPIETY +IMPING +IMPINGE +IMPINGED +IMPINGEMENT +IMPINGEMENTS +IMPINGER +IMPINGERS +IMPINGES +IMPINGING +IMPINGS +IMPIOUS +IMPIOUSLY +IMPIS +IMPISH +IMPISHLY +IMPISHNESS +IMPISHNESSES +IMPLACABILITIES +IMPLACABILITY +IMPLACABLE +IMPLACABLY +IMPLANT +IMPLANTABLE +IMPLANTATION +IMPLANTATIONS +IMPLANTED +IMPLANTER +IMPLANTERS +IMPLANTING +IMPLANTS +IMPLAUSIBILITY +IMPLAUSIBLE +IMPLAUSIBLY +IMPLEAD +IMPLEADED +IMPLEADER +IMPLEADERS +IMPLEADING +IMPLEADS +IMPLED +IMPLEDGE +IMPLEDGED +IMPLEDGES +IMPLEDGING +IMPLEMENT +IMPLEMENTATION +IMPLEMENTATIONS +IMPLEMENTED +IMPLEMENTER +IMPLEMENTERS +IMPLEMENTING +IMPLEMENTOR +IMPLEMENTORS +IMPLEMENTS +IMPLETION +IMPLETIONS +IMPLICATE +IMPLICATED +IMPLICATES +IMPLICATING +IMPLICATION +IMPLICATIONS +IMPLICATIVE +IMPLICATIVELY +IMPLICATIVENESS +IMPLICIT +IMPLICITLY +IMPLICITNESS +IMPLICITNESSES +IMPLIED +IMPLIES +IMPLODE +IMPLODED +IMPLODES +IMPLODING +IMPLORE +IMPLORED +IMPLORER +IMPLORERS +IMPLORES +IMPLORING +IMPLORINGLY +IMPLOSION +IMPLOSIONS +IMPLOSIVE +IMPLOSIVES +IMPLY +IMPLYING +IMPOLICIES +IMPOLICY +IMPOLITE +IMPOLITELY +IMPOLITENESS +IMPOLITENESSES +IMPOLITIC +IMPOLITICAL +IMPOLITICALLY +IMPOLITICLY +IMPONDERABILITY +IMPONDERABLE +IMPONDERABLES +IMPONDERABLY +IMPONE +IMPONED +IMPONES +IMPONING +IMPOROUS +IMPORT +IMPORTABLE +IMPORTANCE +IMPORTANCES +IMPORTANCIES +IMPORTANCY +IMPORTANT +IMPORTANTLY +IMPORTATION +IMPORTATIONS +IMPORTED +IMPORTER +IMPORTERS +IMPORTING +IMPORTS +IMPORTUNATE +IMPORTUNATELY +IMPORTUNATENESS +IMPORTUNE +IMPORTUNED +IMPORTUNELY +IMPORTUNER +IMPORTUNERS +IMPORTUNES +IMPORTUNING +IMPORTUNITIES +IMPORTUNITY +IMPOSABLE +IMPOSE +IMPOSED +IMPOSER +IMPOSERS +IMPOSES +IMPOSING +IMPOSINGLY +IMPOSITION +IMPOSITIONS +IMPOSSIBILITIES +IMPOSSIBILITY +IMPOSSIBLE +IMPOSSIBLENESS +IMPOSSIBLY +IMPOST +IMPOSTED +IMPOSTER +IMPOSTERS +IMPOSTHUME +IMPOSTHUMES +IMPOSTING +IMPOSTOR +IMPOSTORS +IMPOSTS +IMPOSTUME +IMPOSTUMES +IMPOSTURE +IMPOSTURES +IMPOTENCE +IMPOTENCES +IMPOTENCIES +IMPOTENCY +IMPOTENT +IMPOTENTLY +IMPOTENTS +IMPOUND +IMPOUNDED +IMPOUNDER +IMPOUNDERS +IMPOUNDING +IMPOUNDMENT +IMPOUNDMENTS +IMPOUNDS +IMPOVERISH +IMPOVERISHED +IMPOVERISHER +IMPOVERISHERS +IMPOVERISHES +IMPOVERISHING +IMPOVERISHMENT +IMPOVERISHMENTS +IMPOWER +IMPOWERED +IMPOWERING +IMPOWERS +IMPRACTICABLE +IMPRACTICABLY +IMPRACTICAL +IMPRACTICALITY +IMPRACTICALLY +IMPRECATE +IMPRECATED +IMPRECATES +IMPRECATING +IMPRECATION +IMPRECATIONS +IMPRECATORY +IMPRECISE +IMPRECISELY +IMPRECISENESS +IMPRECISENESSES +IMPRECISION +IMPRECISIONS +IMPREGN +IMPREGNABILITY +IMPREGNABLE +IMPREGNABLENESS +IMPREGNABLY +IMPREGNANT +IMPREGNANTS +IMPREGNATE +IMPREGNATED +IMPREGNATES +IMPREGNATING +IMPREGNATION +IMPREGNATIONS +IMPREGNATOR +IMPREGNATORS +IMPREGNED +IMPREGNING +IMPREGNS +IMPRESA +IMPRESARIO +IMPRESARIOS +IMPRESAS +IMPRESE +IMPRESES +IMPRESS +IMPRESSED +IMPRESSES +IMPRESSIBILITY +IMPRESSIBLE +IMPRESSING +IMPRESSION +IMPRESSIONABLE +IMPRESSIONISM +IMPRESSIONISMS +IMPRESSIONIST +IMPRESSIONISTIC +IMPRESSIONISTS +IMPRESSIONS +IMPRESSIVE +IMPRESSIVELY +IMPRESSIVENESS +IMPRESSMENT +IMPRESSMENTS +IMPRESSURE +IMPRESSURES +IMPREST +IMPRESTS +IMPRIMATUR +IMPRIMATURS +IMPRIMIS +IMPRINT +IMPRINTED +IMPRINTER +IMPRINTERS +IMPRINTING +IMPRINTINGS +IMPRINTS +IMPRISON +IMPRISONED +IMPRISONING +IMPRISONMENT +IMPRISONMENTS +IMPRISONS +IMPROBABILITIES +IMPROBABILITY +IMPROBABLE +IMPROBABLY +IMPROBITIES +IMPROBITY +IMPROMPTU +IMPROMPTUS +IMPROPER +IMPROPERLY +IMPROPERNESS +IMPROPERNESSES +IMPROPRIETIES +IMPROPRIETY +IMPROV +IMPROVABILITIES +IMPROVABILITY +IMPROVABLE +IMPROVE +IMPROVED +IMPROVEMENT +IMPROVEMENTS +IMPROVER +IMPROVERS +IMPROVES +IMPROVIDENCE +IMPROVIDENCES +IMPROVIDENT +IMPROVIDENTLY +IMPROVING +IMPROVISATION +IMPROVISATIONAL +IMPROVISATIONS +IMPROVISATOR +IMPROVISATORE +IMPROVISATORES +IMPROVISATORI +IMPROVISATORIAL +IMPROVISATORS +IMPROVISATORY +IMPROVISE +IMPROVISED +IMPROVISER +IMPROVISERS +IMPROVISES +IMPROVISING +IMPROVISOR +IMPROVISORS +IMPROVS +IMPRUDENCE +IMPRUDENCES +IMPRUDENT +IMPRUDENTLY +IMPS +IMPUDENCE +IMPUDENCES +IMPUDENCIES +IMPUDENCY +IMPUDENT +IMPUDENTLY +IMPUDICITIES +IMPUDICITY +IMPUGN +IMPUGNABLE +IMPUGNED +IMPUGNER +IMPUGNERS +IMPUGNING +IMPUGNS +IMPUISSANCE +IMPUISSANCES +IMPUISSANT +IMPULSE +IMPULSED +IMPULSES +IMPULSING +IMPULSION +IMPULSIONS +IMPULSIVE +IMPULSIVELY +IMPULSIVENESS +IMPULSIVENESSES +IMPULSIVITIES +IMPULSIVITY +IMPUNITIES +IMPUNITY +IMPURE +IMPURELY +IMPURENESS +IMPURENESSES +IMPURER +IMPUREST +IMPURITIES +IMPURITY +IMPUTABILITIES +IMPUTABILITY +IMPUTABLE +IMPUTABLY +IMPUTATION +IMPUTATIONS +IMPUTATIVE +IMPUTATIVELY +IMPUTE +IMPUTED +IMPUTER +IMPUTERS +IMPUTES +IMPUTING +IN +INABILITIES +INABILITY +INACCESSIBILITY +INACCESSIBLE +INACCESSIBLY +INACCURACIES +INACCURACY +INACCURATE +INACCURATELY +INACTION +INACTIONS +INACTIVATE +INACTIVATED +INACTIVATES +INACTIVATING +INACTIVATION +INACTIVATIONS +INACTIVE +INACTIVELY +INACTIVITIES +INACTIVITY +INADEQUACIES +INADEQUACY +INADEQUATE +INADEQUATELY +INADEQUATENESS +INADMISSIBILITY +INADMISSIBLE +INADMISSIBLY +INADVERTENCE +INADVERTENCES +INADVERTENCIES +INADVERTENCY +INADVERTENT +INADVERTENTLY +INADVISABILITY +INADVISABLE +INALIENABILITY +INALIENABLE +INALIENABLY +INALTERABILITY +INALTERABLE +INALTERABLENESS +INALTERABLY +INAMORATA +INAMORATAS +INAMORATO +INAMORATOS +INANE +INANELY +INANENESS +INANENESSES +INANER +INANES +INANEST +INANIMATE +INANIMATELY +INANIMATENESS +INANIMATENESSES +INANITIES +INANITION +INANITIONS +INANITY +INAPPARENT +INAPPARENTLY +INAPPEASABLE +INAPPETENCE +INAPPETENCES +INAPPLICABILITY +INAPPLICABLE +INAPPLICABLY +INAPPOSITE +INAPPOSITELY +INAPPOSITENESS +INAPPRECIABLE +INAPPRECIABLY +INAPPRECIATIVE +INAPPROACHABLE +INAPPROPRIATE +INAPPROPRIATELY +INAPT +INAPTITUDE +INAPTITUDES +INAPTLY +INAPTNESS +INAPTNESSES +INARABLE +INARCH +INARCHED +INARCHES +INARCHING +INARGUABLE +INARGUABLY +INARM +INARMED +INARMING +INARMS +INARTICULACIES +INARTICULACY +INARTICULATE +INARTICULATELY +INARTICULATES +INARTISTIC +INARTISTICALLY +INATTENTION +INATTENTIONS +INATTENTIVE +INATTENTIVELY +INATTENTIVENESS +INAUDIBILITIES +INAUDIBILITY +INAUDIBLE +INAUDIBLY +INAUGURAL +INAUGURALS +INAUGURATE +INAUGURATED +INAUGURATES +INAUGURATING +INAUGURATION +INAUGURATIONS +INAUGURATOR +INAUGURATORS +INAUSPICIOUS +INAUSPICIOUSLY +INAUTHENTIC +INAUTHENTICITY +INBEING +INBEINGS +INBOARD +INBOARDS +INBORN +INBOUND +INBOUNDED +INBOUNDING +INBOUNDS +INBREATHE +INBREATHED +INBREATHES +INBREATHING +INBRED +INBREDS +INBREED +INBREEDER +INBREEDERS +INBREEDING +INBREEDINGS +INBREEDS +INBUILT +INBURST +INBURSTS +INBY +INBYE +INCAGE +INCAGED +INCAGES +INCAGING +INCALCULABILITY +INCALCULABLE +INCALCULABLY +INCALESCENCE +INCALESCENCES +INCALESCENT +INCANDESCE +INCANDESCED +INCANDESCENCE +INCANDESCENCES +INCANDESCENT +INCANDESCENTLY +INCANDESCENTS +INCANDESCES +INCANDESCING +INCANT +INCANTATION +INCANTATIONAL +INCANTATIONS +INCANTATORY +INCANTED +INCANTING +INCANTS +INCAPABILITIES +INCAPABILITY +INCAPABLE +INCAPABLENESS +INCAPABLENESSES +INCAPABLY +INCAPACITATE +INCAPACITATED +INCAPACITATES +INCAPACITATING +INCAPACITATION +INCAPACITATIONS +INCAPACITIES +INCAPACITY +INCARCERATE +INCARCERATED +INCARCERATES +INCARCERATING +INCARCERATION +INCARCERATIONS +INCARDINATION +INCARDINATIONS +INCARNADINE +INCARNADINED +INCARNADINES +INCARNADINING +INCARNATE +INCARNATED +INCARNATES +INCARNATING +INCARNATION +INCARNATIONS +INCASE +INCASED +INCASES +INCASING +INCAUTION +INCAUTIONS +INCAUTIOUS +INCAUTIOUSLY +INCAUTIOUSNESS +INCENDIARIES +INCENDIARISM +INCENDIARISMS +INCENDIARY +INCENSE +INCENSED +INCENSES +INCENSING +INCENT +INCENTED +INCENTER +INCENTERS +INCENTING +INCENTIVE +INCENTIVES +INCENTIVIZE +INCENTIVIZED +INCENTIVIZES +INCENTIVIZING +INCENTS +INCEPT +INCEPTED +INCEPTING +INCEPTION +INCEPTIONS +INCEPTIVE +INCEPTIVELY +INCEPTIVES +INCEPTOR +INCEPTORS +INCEPTS +INCERTITUDE +INCERTITUDES +INCESSANCIES +INCESSANCY +INCESSANT +INCESSANTLY +INCEST +INCESTS +INCESTUOUS +INCESTUOUSLY +INCESTUOUSNESS +INCH +INCHED +INCHER +INCHERS +INCHES +INCHING +INCHMEAL +INCHOATE +INCHOATELY +INCHOATENESS +INCHOATENESSES +INCHOATIVE +INCHOATIVELY +INCHOATIVES +INCHWORM +INCHWORMS +INCIDENCE +INCIDENCES +INCIDENT +INCIDENTAL +INCIDENTALLY +INCIDENTALS +INCIDENTS +INCINERATE +INCINERATED +INCINERATES +INCINERATING +INCINERATION +INCINERATIONS +INCINERATOR +INCINERATORS +INCIPIENCE +INCIPIENCES +INCIPIENCIES +INCIPIENCY +INCIPIENT +INCIPIENTLY +INCIPIT +INCIPITS +INCISAL +INCISE +INCISED +INCISES +INCISING +INCISION +INCISIONS +INCISIVE +INCISIVELY +INCISIVENESS +INCISIVENESSES +INCISOR +INCISORS +INCISORY +INCISURE +INCISURES +INCITABLE +INCITANT +INCITANTS +INCITATION +INCITATIONS +INCITE +INCITED +INCITEMENT +INCITEMENTS +INCITER +INCITERS +INCITES +INCITING +INCIVIL +INCIVILITIES +INCIVILITY +INCLASP +INCLASPED +INCLASPING +INCLASPS +INCLEMENCIES +INCLEMENCY +INCLEMENT +INCLEMENTLY +INCLINABLE +INCLINATION +INCLINATIONAL +INCLINATIONS +INCLINE +INCLINED +INCLINER +INCLINERS +INCLINES +INCLINING +INCLININGS +INCLINOMETER +INCLINOMETERS +INCLIP +INCLIPPED +INCLIPPING +INCLIPS +INCLOSE +INCLOSED +INCLOSER +INCLOSERS +INCLOSES +INCLOSING +INCLOSURE +INCLOSURES +INCLUDABLE +INCLUDE +INCLUDED +INCLUDES +INCLUDIBLE +INCLUDING +INCLUSION +INCLUSIONS +INCLUSIVE +INCLUSIVELY +INCLUSIVENESS +INCLUSIVENESSES +INCOERCIBLE +INCOG +INCOGITANT +INCOGNITA +INCOGNITAS +INCOGNITO +INCOGNITOS +INCOGNIZANCE +INCOGNIZANCES +INCOGNIZANT +INCOGS +INCOHERENCE +INCOHERENCES +INCOHERENT +INCOHERENTLY +INCOMBUSTIBLE +INCOMBUSTIBLES +INCOME +INCOMER +INCOMERS +INCOMES +INCOMING +INCOMINGS +INCOMMENSURABLE +INCOMMENSURABLY +INCOMMENSURATE +INCOMMODE +INCOMMODED +INCOMMODES +INCOMMODING +INCOMMODIOUS +INCOMMODIOUSLY +INCOMMODITIES +INCOMMODITY +INCOMMUNICABLE +INCOMMUNICABLY +INCOMMUNICADO +INCOMMUNICATIVE +INCOMMUTABLE +INCOMMUTABLY +INCOMPACT +INCOMPARABILITY +INCOMPARABLE +INCOMPARABLY +INCOMPATIBILITY +INCOMPATIBLE +INCOMPATIBLES +INCOMPATIBLY +INCOMPETENCE +INCOMPETENCES +INCOMPETENCIES +INCOMPETENCY +INCOMPETENT +INCOMPETENTLY +INCOMPETENTS +INCOMPLETE +INCOMPLETELY +INCOMPLETENESS +INCOMPLIANT +INCOMPREHENSION +INCOMPRESSIBLE +INCOMPUTABLE +INCOMPUTABLY +INCONCEIVABLE +INCONCEIVABLY +INCONCINNITIES +INCONCINNITY +INCONCLUSIVE +INCONCLUSIVELY +INCONDITE +INCONFORMITIES +INCONFORMITY +INCONGRUENCE +INCONGRUENCES +INCONGRUENT +INCONGRUENTLY +INCONGRUITIES +INCONGRUITY +INCONGRUOUS +INCONGRUOUSLY +INCONGRUOUSNESS +INCONNU +INCONNUS +INCONSCIENT +INCONSECUTIVE +INCONSEQUENCE +INCONSEQUENCES +INCONSEQUENT +INCONSEQUENTIAL +INCONSEQUENTLY +INCONSIDERABLE +INCONSIDERABLY +INCONSIDERATE +INCONSIDERATELY +INCONSIDERATION +INCONSISTENCE +INCONSISTENCES +INCONSISTENCIES +INCONSISTENCY +INCONSISTENT +INCONSISTENTLY +INCONSOLABLE +INCONSOLABLY +INCONSONANCE +INCONSONANCES +INCONSONANT +INCONSPICUOUS +INCONSPICUOUSLY +INCONSTANCIES +INCONSTANCY +INCONSTANT +INCONSTANTLY +INCONSUMABLE +INCONSUMABLY +INCONTESTABLE +INCONTESTABLY +INCONTINENCE +INCONTINENCES +INCONTINENCIES +INCONTINENCY +INCONTINENT +INCONTINENTLY +INCONTROLLABLE +INCONVENIENCE +INCONVENIENCED +INCONVENIENCES +INCONVENIENCIES +INCONVENIENCING +INCONVENIENCY +INCONVENIENT +INCONVENIENTLY +INCONVERTIBLE +INCONVERTIBLY +INCONVINCIBLE +INCONY +INCOORDINATION +INCOORDINATIONS +INCORPORABLE +INCORPORATE +INCORPORATED +INCORPORATES +INCORPORATING +INCORPORATION +INCORPORATIONS +INCORPORATIVE +INCORPORATOR +INCORPORATORS +INCORPOREAL +INCORPOREALLY +INCORPOREITIES +INCORPOREITY +INCORPSE +INCORPSED +INCORPSES +INCORPSING +INCORRECT +INCORRECTLY +INCORRECTNESS +INCORRECTNESSES +INCORRIGIBILITY +INCORRIGIBLE +INCORRIGIBLES +INCORRIGIBLY +INCORRUPT +INCORRUPTED +INCORRUPTIBLE +INCORRUPTIBLES +INCORRUPTIBLY +INCORRUPTION +INCORRUPTIONS +INCORRUPTLY +INCORRUPTNESS +INCORRUPTNESSES +INCREASABLE +INCREASE +INCREASED +INCREASER +INCREASERS +INCREASES +INCREASING +INCREASINGLY +INCREATE +INCREDIBILITIES +INCREDIBILITY +INCREDIBLE +INCREDIBLENESS +INCREDIBLY +INCREDULITIES +INCREDULITY +INCREDULOUS +INCREDULOUSLY +INCREMENT +INCREMENTAL +INCREMENTALISM +INCREMENTALISMS +INCREMENTALIST +INCREMENTALISTS +INCREMENTALLY +INCREMENTS +INCRESCENT +INCRETION +INCRETIONS +INCRIMINATE +INCRIMINATED +INCRIMINATES +INCRIMINATING +INCRIMINATION +INCRIMINATIONS +INCRIMINATORY +INCROSS +INCROSSED +INCROSSES +INCROSSING +INCRUST +INCRUSTATION +INCRUSTATIONS +INCRUSTED +INCRUSTING +INCRUSTS +INCUBATE +INCUBATED +INCUBATES +INCUBATING +INCUBATION +INCUBATIONS +INCUBATIVE +INCUBATOR +INCUBATORS +INCUBATORY +INCUBI +INCUBUS +INCUBUSES +INCUDAL +INCUDATE +INCUDES +INCULCATE +INCULCATED +INCULCATES +INCULCATING +INCULCATION +INCULCATIONS +INCULCATOR +INCULCATORS +INCULPABLE +INCULPATE +INCULPATED +INCULPATES +INCULPATING +INCULPATION +INCULPATIONS +INCULPATORY +INCULT +INCUMBENCIES +INCUMBENCY +INCUMBENT +INCUMBENTS +INCUMBER +INCUMBERED +INCUMBERING +INCUMBERS +INCUNABLE +INCUNABLES +INCUNABULA +INCUNABULUM +INCUR +INCURABLE +INCURABLES +INCURABLY +INCURIOSITIES +INCURIOSITY +INCURIOUS +INCURIOUSLY +INCURIOUSNESS +INCURIOUSNESSES +INCURRED +INCURRENCE +INCURRENCES +INCURRENT +INCURRING +INCURS +INCURSION +INCURSIONS +INCURSIVE +INCURVATE +INCURVATED +INCURVATES +INCURVATING +INCURVATION +INCURVATIONS +INCURVATURE +INCURVATURES +INCURVE +INCURVED +INCURVES +INCURVING +INCUS +INCUSE +INCUSED +INCUSES +INCUSING +INDABA +INDABAS +INDAGATE +INDAGATED +INDAGATES +INDAGATING +INDAGATION +INDAGATIONS +INDAGATOR +INDAGATORS +INDAMIN +INDAMINE +INDAMINES +INDAMINS +INDEBTED +INDEBTEDNESS +INDEBTEDNESSES +INDECENCIES +INDECENCY +INDECENT +INDECENTER +INDECENTEST +INDECENTLY +INDECIPHERABLE +INDECISION +INDECISIONS +INDECISIVE +INDECISIVELY +INDECISIVENESS +INDECLINABLE +INDECOMPOSABLE +INDECOROUS +INDECOROUSLY +INDECOROUSNESS +INDECORUM +INDECORUMS +INDEED +INDEFATIGABLE +INDEFATIGABLY +INDEFEASIBILITY +INDEFEASIBLE +INDEFEASIBLY +INDEFECTIBILITY +INDEFECTIBLE +INDEFECTIBLY +INDEFENSIBILITY +INDEFENSIBLE +INDEFENSIBLY +INDEFINABILITY +INDEFINABLE +INDEFINABLENESS +INDEFINABLES +INDEFINABLY +INDEFINITE +INDEFINITELY +INDEFINITENESS +INDEFINITES +INDEHISCENCE +INDEHISCENCES +INDEHISCENT +INDELIBILITIES +INDELIBILITY +INDELIBLE +INDELIBLY +INDELICACIES +INDELICACY +INDELICATE +INDELICATELY +INDELICATENESS +INDEMNIFICATION +INDEMNIFIED +INDEMNIFIER +INDEMNIFIERS +INDEMNIFIES +INDEMNIFY +INDEMNIFYING +INDEMNITIES +INDEMNITY +INDEMONSTRABLE +INDEMONSTRABLY +INDENE +INDENES +INDENT +INDENTATION +INDENTATIONS +INDENTED +INDENTER +INDENTERS +INDENTING +INDENTION +INDENTIONS +INDENTOR +INDENTORS +INDENTS +INDENTURE +INDENTURED +INDENTURES +INDENTURING +INDEPENDENCE +INDEPENDENCES +INDEPENDENCIES +INDEPENDENCY +INDEPENDENT +INDEPENDENTLY +INDEPENDENTS +INDESCRIBABLE +INDESCRIBABLY +INDESTRUCTIBLE +INDESTRUCTIBLY +INDETERMINABLE +INDETERMINABLY +INDETERMINACIES +INDETERMINACY +INDETERMINATE +INDETERMINATELY +INDETERMINATION +INDETERMINISM +INDETERMINISMS +INDETERMINIST +INDETERMINISTIC +INDETERMINISTS +INDEVOUT +INDEX +INDEXABLE +INDEXATION +INDEXATIONS +INDEXED +INDEXER +INDEXERS +INDEXES +INDEXICAL +INDEXICALS +INDEXING +INDEXINGS +INDICAN +INDICANS +INDICANT +INDICANTS +INDICATE +INDICATED +INDICATES +INDICATING +INDICATION +INDICATIONAL +INDICATIONS +INDICATIVE +INDICATIVELY +INDICATIVES +INDICATOR +INDICATORS +INDICATORY +INDICES +INDICIA +INDICIAS +INDICIUM +INDICIUMS +INDICT +INDICTABLE +INDICTED +INDICTEE +INDICTEES +INDICTER +INDICTERS +INDICTING +INDICTION +INDICTIONS +INDICTMENT +INDICTMENTS +INDICTOR +INDICTORS +INDICTS +INDIE +INDIES +INDIFFERENCE +INDIFFERENCES +INDIFFERENCIES +INDIFFERENCY +INDIFFERENT +INDIFFERENTISM +INDIFFERENTISMS +INDIFFERENTIST +INDIFFERENTISTS +INDIFFERENTLY +INDIGEN +INDIGENCE +INDIGENCES +INDIGENCIES +INDIGENCY +INDIGENE +INDIGENES +INDIGENIZATION +INDIGENIZATIONS +INDIGENIZE +INDIGENIZED +INDIGENIZES +INDIGENIZING +INDIGENOUS +INDIGENOUSLY +INDIGENOUSNESS +INDIGENS +INDIGENT +INDIGENTS +INDIGESTED +INDIGESTIBILITY +INDIGESTIBLE +INDIGESTIBLES +INDIGESTION +INDIGESTIONS +INDIGN +INDIGNANT +INDIGNANTLY +INDIGNATION +INDIGNATIONS +INDIGNITIES +INDIGNITY +INDIGNLY +INDIGO +INDIGOES +INDIGOID +INDIGOIDS +INDIGOS +INDIGOTIN +INDIGOTINS +INDINAVIR +INDINAVIRS +INDIRECT +INDIRECTION +INDIRECTIONS +INDIRECTLY +INDIRECTNESS +INDIRECTNESSES +INDISCERNIBLE +INDISCIPLINABLE +INDISCIPLINE +INDISCIPLINED +INDISCIPLINES +INDISCOVERABLE +INDISCREET +INDISCREETLY +INDISCREETNESS +INDISCRETION +INDISCRETIONS +INDISCRIMINATE +INDISPENSABLE +INDISPENSABLES +INDISPENSABLY +INDISPOSE +INDISPOSED +INDISPOSES +INDISPOSING +INDISPOSITION +INDISPOSITIONS +INDISPUTABLE +INDISPUTABLY +INDISSOCIABLE +INDISSOCIABLY +INDISSOLUBILITY +INDISSOLUBLE +INDISSOLUBLY +INDISTINCT +INDISTINCTIVE +INDISTINCTLY +INDISTINCTNESS +INDITE +INDITED +INDITER +INDITERS +INDITES +INDITING +INDIUM +INDIUMS +INDIVIDUAL +INDIVIDUALISE +INDIVIDUALISED +INDIVIDUALISES +INDIVIDUALISING +INDIVIDUALISM +INDIVIDUALISMS +INDIVIDUALIST +INDIVIDUALISTIC +INDIVIDUALISTS +INDIVIDUALITIES +INDIVIDUALITY +INDIVIDUALIZE +INDIVIDUALIZED +INDIVIDUALIZES +INDIVIDUALIZING +INDIVIDUALLY +INDIVIDUALS +INDIVIDUATE +INDIVIDUATED +INDIVIDUATES +INDIVIDUATING +INDIVIDUATION +INDIVIDUATIONS +INDIVISIBILITY +INDIVISIBLE +INDIVISIBLES +INDIVISIBLY +INDOCILE +INDOCILITIES +INDOCILITY +INDOCTRINATE +INDOCTRINATED +INDOCTRINATES +INDOCTRINATING +INDOCTRINATION +INDOCTRINATIONS +INDOCTRINATOR +INDOCTRINATORS +INDOL +INDOLE +INDOLENCE +INDOLENCES +INDOLENT +INDOLENTLY +INDOLES +INDOLS +INDOMETHACIN +INDOMETHACINS +INDOMITABILITY +INDOMITABLE +INDOMITABLENESS +INDOMITABLY +INDOOR +INDOORS +INDOPHENOL +INDOPHENOLS +INDORSE +INDORSED +INDORSEE +INDORSEES +INDORSEMENT +INDORSEMENTS +INDORSER +INDORSERS +INDORSES +INDORSING +INDORSOR +INDORSORS +INDOW +INDOWED +INDOWING +INDOWS +INDOXYL +INDOXYLS +INDRAFT +INDRAFTS +INDRAUGHT +INDRAUGHTS +INDRAWN +INDRI +INDRIS +INDUBITABILITY +INDUBITABLE +INDUBITABLENESS +INDUBITABLY +INDUCE +INDUCED +INDUCEMENT +INDUCEMENTS +INDUCER +INDUCERS +INDUCES +INDUCIBILITIES +INDUCIBILITY +INDUCIBLE +INDUCING +INDUCT +INDUCTANCE +INDUCTANCES +INDUCTED +INDUCTEE +INDUCTEES +INDUCTILE +INDUCTING +INDUCTION +INDUCTIONS +INDUCTIVE +INDUCTIVELY +INDUCTOR +INDUCTORS +INDUCTS +INDUE +INDUED +INDUES +INDUING +INDULGE +INDULGED +INDULGENCE +INDULGENCES +INDULGENT +INDULGENTLY +INDULGER +INDULGERS +INDULGES +INDULGING +INDULIN +INDULINE +INDULINES +INDULINS +INDULT +INDULTS +INDURATE +INDURATED +INDURATES +INDURATING +INDURATION +INDURATIONS +INDURATIVE +INDUSIA +INDUSIAL +INDUSIATE +INDUSIUM +INDUSTRIAL +INDUSTRIALISE +INDUSTRIALISED +INDUSTRIALISES +INDUSTRIALISING +INDUSTRIALISM +INDUSTRIALISMS +INDUSTRIALIST +INDUSTRIALISTS +INDUSTRIALIZE +INDUSTRIALIZED +INDUSTRIALIZES +INDUSTRIALIZING +INDUSTRIALLY +INDUSTRIALS +INDUSTRIES +INDUSTRIOUS +INDUSTRIOUSLY +INDUSTRIOUSNESS +INDUSTRY +INDWELL +INDWELLER +INDWELLERS +INDWELLING +INDWELLS +INDWELT +INEARTH +INEARTHED +INEARTHING +INEARTHS +INEBRIANT +INEBRIANTS +INEBRIATE +INEBRIATED +INEBRIATES +INEBRIATING +INEBRIATION +INEBRIATIONS +INEBRIETIES +INEBRIETY +INEDIBLE +INEDIBLY +INEDITA +INEDITED +INEDUCABILITIES +INEDUCABILITY +INEDUCABLE +INEFFABILITIES +INEFFABILITY +INEFFABLE +INEFFABLENESS +INEFFABLENESSES +INEFFABLY +INEFFACEABILITY +INEFFACEABLE +INEFFACEABLY +INEFFECTIVE +INEFFECTIVELY +INEFFECTIVENESS +INEFFECTUAL +INEFFECTUALITY +INEFFECTUALLY +INEFFECTUALNESS +INEFFICACIES +INEFFICACIOUS +INEFFICACIOUSLY +INEFFICACY +INEFFICIENCIES +INEFFICIENCY +INEFFICIENT +INEFFICIENTLY +INEFFICIENTS +INEGALITARIAN +INELASTIC +INELASTICITIES +INELASTICITY +INELEGANCE +INELEGANCES +INELEGANT +INELEGANTLY +INELIGIBILITIES +INELIGIBILITY +INELIGIBLE +INELIGIBLES +INELOQUENT +INELOQUENTLY +INELUCTABILITY +INELUCTABLE +INELUCTABLY +INELUDIBLE +INENARRABLE +INEPT +INEPTITUDE +INEPTITUDES +INEPTLY +INEPTNESS +INEPTNESSES +INEQUALITIES +INEQUALITY +INEQUITABLE +INEQUITABLY +INEQUITIES +INEQUITY +INEQUIVALVE +INEQUIVALVED +INERADICABILITY +INERADICABLE +INERADICABLY +INERRABLE +INERRANCIES +INERRANCY +INERRANT +INERT +INERTIA +INERTIAE +INERTIAL +INERTIALLY +INERTIAS +INERTLY +INERTNESS +INERTNESSES +INERTS +INESCAPABLE +INESCAPABLY +INESSENTIAL +INESSENTIALS +INESTIMABLE +INESTIMABLY +INEVITABILITIES +INEVITABILITY +INEVITABLE +INEVITABLENESS +INEVITABLY +INEXACT +INEXACTITUDE +INEXACTITUDES +INEXACTLY +INEXACTNESS +INEXACTNESSES +INEXCUSABLE +INEXCUSABLENESS +INEXCUSABLY +INEXHAUSTIBLE +INEXHAUSTIBLY +INEXISTENCE +INEXISTENCES +INEXISTENT +INEXORABILITIES +INEXORABILITY +INEXORABLE +INEXORABLENESS +INEXORABLY +INEXPEDIENCE +INEXPEDIENCES +INEXPEDIENCIES +INEXPEDIENCY +INEXPEDIENT +INEXPEDIENTLY +INEXPENSIVE +INEXPENSIVELY +INEXPENSIVENESS +INEXPERIENCE +INEXPERIENCED +INEXPERIENCES +INEXPERT +INEXPERTLY +INEXPERTNESS +INEXPERTNESSES +INEXPERTS +INEXPIABLE +INEXPIABLY +INEXPLAINABLE +INEXPLICABILITY +INEXPLICABLE +INEXPLICABLY +INEXPLICIT +INEXPRESSIBLE +INEXPRESSIBLY +INEXPRESSIVE +INEXPRESSIVELY +INEXPUGNABLE +INEXPUGNABLY +INEXPUNGIBLE +INEXTRICABILITY +INEXTRICABLE +INEXTRICABLY +INFALL +INFALLIBILITIES +INFALLIBILITY +INFALLIBLE +INFALLIBLY +INFALLING +INFALLS +INFAMIES +INFAMOUS +INFAMOUSLY +INFAMY +INFANCIES +INFANCY +INFANT +INFANTA +INFANTAS +INFANTE +INFANTES +INFANTICIDAL +INFANTICIDE +INFANTICIDES +INFANTILE +INFANTILISM +INFANTILISMS +INFANTILITIES +INFANTILITY +INFANTILIZATION +INFANTILIZE +INFANTILIZED +INFANTILIZES +INFANTILIZING +INFANTINE +INFANTRIES +INFANTRY +INFANTRYMAN +INFANTRYMEN +INFANTS +INFARCT +INFARCTED +INFARCTION +INFARCTIONS +INFARCTS +INFARE +INFARES +INFATUATE +INFATUATED +INFATUATES +INFATUATING +INFATUATION +INFATUATIONS +INFAUNA +INFAUNAE +INFAUNAL +INFAUNAS +INFEASIBILITIES +INFEASIBILITY +INFEASIBLE +INFECT +INFECTANT +INFECTED +INFECTER +INFECTERS +INFECTING +INFECTION +INFECTIONS +INFECTIOUS +INFECTIOUSLY +INFECTIOUSNESS +INFECTIVE +INFECTIVITIES +INFECTIVITY +INFECTOR +INFECTORS +INFECTS +INFECUND +INFELICITIES +INFELICITOUS +INFELICITOUSLY +INFELICITY +INFEOFF +INFEOFFED +INFEOFFING +INFEOFFS +INFER +INFERABLE +INFERABLY +INFERENCE +INFERENCES +INFERENTIAL +INFERENTIALLY +INFERIOR +INFERIORITIES +INFERIORITY +INFERIORLY +INFERIORS +INFERNAL +INFERNALLY +INFERNO +INFERNOS +INFERRED +INFERRER +INFERRERS +INFERRIBLE +INFERRING +INFERS +INFERTILE +INFERTILITIES +INFERTILITY +INFEST +INFESTANT +INFESTANTS +INFESTATION +INFESTATIONS +INFESTED +INFESTER +INFESTERS +INFESTING +INFESTS +INFIDEL +INFIDELIC +INFIDELITIES +INFIDELITY +INFIDELS +INFIELD +INFIELDER +INFIELDERS +INFIELDS +INFIGHT +INFIGHTER +INFIGHTERS +INFIGHTING +INFIGHTINGS +INFIGHTS +INFILL +INFILTRATE +INFILTRATED +INFILTRATES +INFILTRATING +INFILTRATION +INFILTRATIONS +INFILTRATIVE +INFILTRATOR +INFILTRATORS +INFINITE +INFINITELY +INFINITENESS +INFINITENESSES +INFINITES +INFINITESIMAL +INFINITESIMALLY +INFINITESIMALS +INFINITIES +INFINITIVAL +INFINITIVE +INFINITIVELY +INFINITIVES +INFINITUDE +INFINITUDES +INFINITY +INFIRM +INFIRMARIES +INFIRMARY +INFIRMED +INFIRMING +INFIRMITIES +INFIRMITY +INFIRMLY +INFIRMS +INFIX +INFIXATION +INFIXATIONS +INFIXED +INFIXES +INFIXING +INFIXION +INFIXIONS +INFLAME +INFLAMED +INFLAMER +INFLAMERS +INFLAMES +INFLAMING +INFLAMMABILITY +INFLAMMABLE +INFLAMMABLENESS +INFLAMMABLES +INFLAMMABLY +INFLAMMATION +INFLAMMATIONS +INFLAMMATORILY +INFLAMMATORY +INFLATABLE +INFLATABLES +INFLATE +INFLATED +INFLATER +INFLATERS +INFLATES +INFLATING +INFLATION +INFLATIONARY +INFLATIONISM +INFLATIONISMS +INFLATIONIST +INFLATIONISTS +INFLATIONS +INFLATOR +INFLATORS +INFLECT +INFLECTABLE +INFLECTED +INFLECTING +INFLECTION +INFLECTIONAL +INFLECTIONALLY +INFLECTIONS +INFLECTIVE +INFLECTOR +INFLECTORS +INFLECTS +INFLEXED +INFLEXIBILITIES +INFLEXIBILITY +INFLEXIBLE +INFLEXIBLENESS +INFLEXIBLY +INFLEXION +INFLEXIONS +INFLICT +INFLICTED +INFLICTER +INFLICTERS +INFLICTING +INFLICTION +INFLICTIONS +INFLICTIVE +INFLICTOR +INFLICTORS +INFLICTS +INFLIGHT +INFLORESCENCE +INFLORESCENCES +INFLOW +INFLOWS +INFLUENCE +INFLUENCEABLE +INFLUENCED +INFLUENCES +INFLUENCING +INFLUENT +INFLUENTIAL +INFLUENTIALLY +INFLUENTIALS +INFLUENTS +INFLUENZA +INFLUENZAL +INFLUENZAS +INFLUX +INFLUXES +INFO +INFOBAHN +INFOBAHNS +INFOLD +INFOLDED +INFOLDER +INFOLDERS +INFOLDING +INFOLDS +INFOMERCIAL +INFOMERCIALS +INFORM +INFORMAL +INFORMALITIES +INFORMALITY +INFORMALLY +INFORMANT +INFORMANTS +INFORMATICS +INFORMATION +INFORMATIONAL +INFORMATIONALLY +INFORMATIONS +INFORMATIVE +INFORMATIVELY +INFORMATIVENESS +INFORMATORILY +INFORMATORY +INFORMED +INFORMEDLY +INFORMER +INFORMERS +INFORMING +INFORMS +INFOS +INFOTAINMENT +INFOTAINMENTS +INFOUGHT +INFRA +INFRACT +INFRACTED +INFRACTING +INFRACTION +INFRACTIONS +INFRACTOR +INFRACTORS +INFRACTS +INFRAHUMAN +INFRAHUMANS +INFRANGIBILITY +INFRANGIBLE +INFRANGIBLY +INFRARED +INFRAREDS +INFRASONIC +INFRASPECIFIC +INFRASTRUCTURE +INFRASTRUCTURES +INFREQUENCE +INFREQUENCES +INFREQUENCIES +INFREQUENCY +INFREQUENT +INFREQUENTLY +INFRINGE +INFRINGED +INFRINGEMENT +INFRINGEMENTS +INFRINGER +INFRINGERS +INFRINGES +INFRINGING +INFRUGAL +INFUNDIBULA +INFUNDIBULAR +INFUNDIBULIFORM +INFUNDIBULUM +INFURIATE +INFURIATED +INFURIATES +INFURIATING +INFURIATINGLY +INFURIATION +INFURIATIONS +INFUSCATE +INFUSE +INFUSED +INFUSER +INFUSERS +INFUSES +INFUSIBILITIES +INFUSIBILITY +INFUSIBLE +INFUSIBLENESS +INFUSIBLENESSES +INFUSING +INFUSION +INFUSIONS +INFUSIVE +INFUSORIAN +INFUSORIANS +INGATE +INGATES +INGATHER +INGATHERED +INGATHERING +INGATHERINGS +INGATHERS +INGENIOUS +INGENIOUSLY +INGENIOUSNESS +INGENIOUSNESSES +INGENUE +INGENUES +INGENUITIES +INGENUITY +INGENUOUS +INGENUOUSLY +INGENUOUSNESS +INGENUOUSNESSES +INGEST +INGESTA +INGESTED +INGESTIBLE +INGESTING +INGESTION +INGESTIONS +INGESTIVE +INGESTS +INGLE +INGLENOOK +INGLENOOKS +INGLES +INGLORIOUS +INGLORIOUSLY +INGLORIOUSNESS +INGOING +INGOT +INGOTED +INGOTING +INGOTS +INGRAFT +INGRAFTED +INGRAFTING +INGRAFTS +INGRAIN +INGRAINED +INGRAINEDLY +INGRAINING +INGRAINS +INGRATE +INGRATES +INGRATIATE +INGRATIATED +INGRATIATES +INGRATIATING +INGRATIATINGLY +INGRATIATION +INGRATIATIONS +INGRATIATORY +INGRATITUDE +INGRATITUDES +INGREDIENT +INGREDIENTS +INGRESS +INGRESSES +INGRESSION +INGRESSIONS +INGRESSIVE +INGRESSIVENESS +INGRESSIVES +INGROUND +INGROUP +INGROUPS +INGROWING +INGROWN +INGROWNNESS +INGROWNNESSES +INGROWTH +INGROWTHS +INGUINAL +INGULF +INGULFED +INGULFING +INGULFS +INGURGITATE +INGURGITATED +INGURGITATES +INGURGITATING +INGURGITATION +INGURGITATIONS +INHABIT +INHABITABLE +INHABITANCIES +INHABITANCY +INHABITANT +INHABITANTS +INHABITATION +INHABITATIONS +INHABITED +INHABITER +INHABITERS +INHABITING +INHABITS +INHALANT +INHALANTS +INHALATION +INHALATIONAL +INHALATIONS +INHALATOR +INHALATORS +INHALE +INHALED +INHALER +INHALERS +INHALES +INHALING +INHARMONIC +INHARMONIES +INHARMONIOUS +INHARMONIOUSLY +INHARMONY +INHAUL +INHAULER +INHAULERS +INHAULS +INHERE +INHERED +INHERENCE +INHERENCES +INHERENCIES +INHERENCY +INHERENT +INHERENTLY +INHERES +INHERING +INHERIT +INHERITABILITY +INHERITABLE +INHERITABLENESS +INHERITANCE +INHERITANCES +INHERITED +INHERITING +INHERITOR +INHERITORS +INHERITRESS +INHERITRESSES +INHERITRICES +INHERITRIX +INHERITRIXES +INHERITS +INHESION +INHESIONS +INHIBIN +INHIBINS +INHIBIT +INHIBITED +INHIBITER +INHIBITERS +INHIBITING +INHIBITION +INHIBITIONS +INHIBITIVE +INHIBITOR +INHIBITORS +INHIBITORY +INHIBITS +INHOLDER +INHOLDERS +INHOLDING +INHOLDINGS +INHOMOGENEITIES +INHOMOGENEITY +INHOMOGENEOUS +INHOSPITABLE +INHOSPITABLY +INHOSPITALITIES +INHOSPITALITY +INHUMAN +INHUMANE +INHUMANELY +INHUMANITIES +INHUMANITY +INHUMANLY +INHUMANNESS +INHUMANNESSES +INHUMATION +INHUMATIONS +INHUME +INHUMED +INHUMER +INHUMERS +INHUMES +INHUMING +INIA +INIMICAL +INIMICALLY +INIMITABLE +INIMITABLENESS +INIMITABLY +INION +INIONS +INIQUITIES +INIQUITOUS +INIQUITOUSLY +INIQUITOUSNESS +INIQUITY +INITIAL +INITIALED +INITIALER +INITIALERS +INITIALING +INITIALISM +INITIALISMS +INITIALIZATION +INITIALIZATIONS +INITIALIZE +INITIALIZED +INITIALIZES +INITIALIZING +INITIALLED +INITIALLING +INITIALLY +INITIALNESS +INITIALNESSES +INITIALS +INITIATE +INITIATED +INITIATES +INITIATING +INITIATION +INITIATIONS +INITIATIVE +INITIATIVES +INITIATOR +INITIATORS +INITIATORY +INJECT +INJECTABLE +INJECTABLES +INJECTANT +INJECTANTS +INJECTED +INJECTING +INJECTION +INJECTIONS +INJECTIVE +INJECTOR +INJECTORS +INJECTS +INJUDICIOUS +INJUDICIOUSLY +INJUDICIOUSNESS +INJUNCTION +INJUNCTIONS +INJUNCTIVE +INJURABLE +INJURE +INJURED +INJURER +INJURERS +INJURES +INJURIES +INJURING +INJURIOUS +INJURIOUSLY +INJURIOUSNESS +INJURIOUSNESSES +INJURY +INJUSTICE +INJUSTICES +INK +INKBERRIES +INKBERRY +INKBLOT +INKBLOTS +INKED +INKER +INKERS +INKHORN +INKHORNS +INKIER +INKIEST +INKINESS +INKINESSES +INKING +INKJET +INKLE +INKLES +INKLESS +INKLIKE +INKLING +INKLINGS +INKPOT +INKPOTS +INKS +INKSTAND +INKSTANDS +INKSTONE +INKSTONES +INKWELL +INKWELLS +INKWOOD +INKWOODS +INKY +INLACE +INLACED +INLACES +INLACING +INLAID +INLAND +INLANDER +INLANDERS +INLANDS +INLAY +INLAYER +INLAYERS +INLAYING +INLAYS +INLET +INLETS +INLETTING +INLIER +INLIERS +INLY +INLYING +INMATE +INMATES +INMESH +INMESHED +INMESHES +INMESHING +INMOST +INN +INNAGE +INNAGES +INNARDS +INNATE +INNATELY +INNATENESS +INNATENESSES +INNED +INNER +INNERLY +INNERMOST +INNERMOSTS +INNERNESS +INNERNESSES +INNERS +INNERSOLE +INNERSOLES +INNERSPRING +INNERVATE +INNERVATED +INNERVATES +INNERVATING +INNERVATION +INNERVATIONS +INNERVE +INNERVED +INNERVES +INNERVING +INNING +INNINGS +INNKEEPER +INNKEEPERS +INNLESS +INNOCENCE +INNOCENCES +INNOCENCIES +INNOCENCY +INNOCENT +INNOCENTER +INNOCENTEST +INNOCENTLY +INNOCENTS +INNOCUOUS +INNOCUOUSLY +INNOCUOUSNESS +INNOCUOUSNESSES +INNOMINATE +INNOVATE +INNOVATED +INNOVATES +INNOVATING +INNOVATION +INNOVATIONAL +INNOVATIONS +INNOVATIVE +INNOVATIVELY +INNOVATIVENESS +INNOVATOR +INNOVATORS +INNOVATORY +INNOXIOUS +INNS +INNUENDO +INNUENDOED +INNUENDOES +INNUENDOING +INNUENDOS +INNUMERABLE +INNUMERABLY +INNUMERACIES +INNUMERACY +INNUMERATE +INNUMERATES +INNUMEROUS +INOBSERVANCE +INOBSERVANCES +INOBSERVANT +INOCULA +INOCULANT +INOCULANTS +INOCULATE +INOCULATED +INOCULATES +INOCULATING +INOCULATION +INOCULATIONS +INOCULATIVE +INOCULATOR +INOCULATORS +INOCULUM +INOCULUMS +INODOROUS +INOFFENSIVE +INOFFENSIVELY +INOFFENSIVENESS +INOPERABLE +INOPERATIVE +INOPERATIVENESS +INOPERCULATE +INOPERCULATES +INOPPORTUNE +INOPPORTUNELY +INOPPORTUNENESS +INORDINATE +INORDINATELY +INORDINATENESS +INORGANIC +INORGANICALLY +INOSCULATE +INOSCULATED +INOSCULATES +INOSCULATING +INOSCULATION +INOSCULATIONS +INOSINE +INOSINES +INOSITE +INOSITES +INOSITOL +INOSITOLS +INOTROPIC +INPATIENT +INPATIENTS +INPHASE +INPOUR +INPOURED +INPOURING +INPOURINGS +INPOURS +INPUT +INPUTS +INPUTTED +INPUTTER +INPUTTERS +INPUTTING +INQUEST +INQUESTS +INQUIET +INQUIETED +INQUIETING +INQUIETS +INQUIETUDE +INQUIETUDES +INQUILINE +INQUILINES +INQUIRE +INQUIRED +INQUIRER +INQUIRERS +INQUIRES +INQUIRIES +INQUIRING +INQUIRINGLY +INQUIRY +INQUISITION +INQUISITIONAL +INQUISITIONS +INQUISITIVE +INQUISITIVELY +INQUISITIVENESS +INQUISITOR +INQUISITORIAL +INQUISITORIALLY +INQUISITORS +INRO +INROAD +INROADS +INRUN +INRUNS +INRUSH +INRUSHES +INRUSHING +INRUSHINGS +INS +INSALUBRIOUS +INSALUBRITIES +INSALUBRITY +INSANE +INSANELY +INSANENESS +INSANENESSES +INSANER +INSANEST +INSANITARY +INSANITATION +INSANITATIONS +INSANITIES +INSANITY +INSATIABILITIES +INSATIABILITY +INSATIABLE +INSATIABLENESS +INSATIABLY +INSATIATE +INSATIATELY +INSATIATENESS +INSATIATENESSES +INSCAPE +INSCAPES +INSCRIBE +INSCRIBED +INSCRIBER +INSCRIBERS +INSCRIBES +INSCRIBING +INSCRIPTION +INSCRIPTIONAL +INSCRIPTIONS +INSCRIPTIVE +INSCRIPTIVELY +INSCROLL +INSCROLLED +INSCROLLING +INSCROLLS +INSCRUTABILITY +INSCRUTABLE +INSCRUTABLENESS +INSCRUTABLY +INSCULP +INSCULPED +INSCULPING +INSCULPS +INSEAM +INSEAMS +INSECT +INSECTAN +INSECTARIES +INSECTARY +INSECTICIDAL +INSECTICIDALLY +INSECTICIDE +INSECTICIDES +INSECTILE +INSECTIVORE +INSECTIVORES +INSECTIVOROUS +INSECTS +INSECURE +INSECURELY +INSECURENESS +INSECURENESSES +INSECURITIES +INSECURITY +INSELBERG +INSELBERGE +INSELBERGS +INSEMINATE +INSEMINATED +INSEMINATES +INSEMINATING +INSEMINATION +INSEMINATIONS +INSEMINATOR +INSEMINATORS +INSENSATE +INSENSATELY +INSENSIBILITIES +INSENSIBILITY +INSENSIBLE +INSENSIBLENESS +INSENSIBLY +INSENSITIVE +INSENSITIVELY +INSENSITIVENESS +INSENSITIVITIES +INSENSITIVITY +INSENTIENCE +INSENTIENCES +INSENTIENT +INSEPARABILITY +INSEPARABLE +INSEPARABLENESS +INSEPARABLES +INSEPARABLY +INSERT +INSERTED +INSERTER +INSERTERS +INSERTING +INSERTION +INSERTIONAL +INSERTIONS +INSERTS +INSET +INSETS +INSETTED +INSETTER +INSETTERS +INSETTING +INSHEATH +INSHEATHE +INSHEATHED +INSHEATHES +INSHEATHING +INSHEATHS +INSHORE +INSHRINE +INSHRINED +INSHRINES +INSHRINING +INSIDE +INSIDER +INSIDERS +INSIDES +INSIDIOUS +INSIDIOUSLY +INSIDIOUSNESS +INSIDIOUSNESSES +INSIGHT +INSIGHTFUL +INSIGHTFULLY +INSIGHTS +INSIGNE +INSIGNIA +INSIGNIAS +INSIGNIFICANCE +INSIGNIFICANCES +INSIGNIFICANCY +INSIGNIFICANT +INSIGNIFICANTLY +INSINCERE +INSINCERELY +INSINCERITIES +INSINCERITY +INSINUATE +INSINUATED +INSINUATES +INSINUATING +INSINUATINGLY +INSINUATION +INSINUATIONS +INSINUATIVE +INSINUATOR +INSINUATORS +INSIPID +INSIPIDITIES +INSIPIDITY +INSIPIDLY +INSIST +INSISTED +INSISTENCE +INSISTENCES +INSISTENCIES +INSISTENCY +INSISTENT +INSISTENTLY +INSISTER +INSISTERS +INSISTING +INSISTS +INSNARE +INSNARED +INSNARER +INSNARERS +INSNARES +INSNARING +INSOBRIETIES +INSOBRIETY +INSOCIABILITIES +INSOCIABILITY +INSOCIABLE +INSOCIABLY +INSOFAR +INSOLATE +INSOLATED +INSOLATES +INSOLATING +INSOLATION +INSOLATIONS +INSOLE +INSOLENCE +INSOLENCES +INSOLENT +INSOLENTLY +INSOLENTS +INSOLES +INSOLUBILITIES +INSOLUBILITY +INSOLUBILIZE +INSOLUBILIZED +INSOLUBILIZES +INSOLUBILIZING +INSOLUBLE +INSOLUBLENESS +INSOLUBLENESSES +INSOLUBLES +INSOLUBLY +INSOLVABLE +INSOLVABLY +INSOLVENCIES +INSOLVENCY +INSOLVENT +INSOLVENTS +INSOMNIA +INSOMNIAC +INSOMNIACS +INSOMNIAS +INSOMUCH +INSOUCIANCE +INSOUCIANCES +INSOUCIANT +INSOUCIANTLY +INSOUL +INSOULED +INSOULING +INSOULS +INSPAN +INSPANNED +INSPANNING +INSPANS +INSPECT +INSPECTED +INSPECTING +INSPECTION +INSPECTIONS +INSPECTIVE +INSPECTOR +INSPECTORATE +INSPECTORATES +INSPECTORS +INSPECTORSHIP +INSPECTORSHIPS +INSPECTS +INSPHERE +INSPHERED +INSPHERES +INSPHERING +INSPIRATION +INSPIRATIONAL +INSPIRATIONALLY +INSPIRATIONS +INSPIRATOR +INSPIRATORS +INSPIRATORY +INSPIRE +INSPIRED +INSPIRER +INSPIRERS +INSPIRES +INSPIRING +INSPIRIT +INSPIRITED +INSPIRITING +INSPIRITINGLY +INSPIRITS +INSPISSATE +INSPISSATED +INSPISSATES +INSPISSATING +INSPISSATION +INSPISSATIONS +INSPISSATOR +INSPISSATORS +INSTABILITIES +INSTABILITY +INSTABLE +INSTAL +INSTALL +INSTALLATION +INSTALLATIONS +INSTALLED +INSTALLER +INSTALLERS +INSTALLING +INSTALLMENT +INSTALLMENTS +INSTALLS +INSTALMENT +INSTALMENTS +INSTALS +INSTANCE +INSTANCED +INSTANCES +INSTANCIES +INSTANCING +INSTANCY +INSTANT +INSTANTANEITIES +INSTANTANEITY +INSTANTANEOUS +INSTANTANEOUSLY +INSTANTER +INSTANTIATE +INSTANTIATED +INSTANTIATES +INSTANTIATING +INSTANTIATION +INSTANTIATIONS +INSTANTLY +INSTANTNESS +INSTANTNESSES +INSTANTS +INSTAR +INSTARRED +INSTARRING +INSTARS +INSTATE +INSTATED +INSTATES +INSTATING +INSTAURATION +INSTAURATIONS +INSTEAD +INSTEP +INSTEPS +INSTIGATE +INSTIGATED +INSTIGATES +INSTIGATING +INSTIGATION +INSTIGATIONS +INSTIGATIVE +INSTIGATOR +INSTIGATORS +INSTIL +INSTILL +INSTILLATION +INSTILLATIONS +INSTILLED +INSTILLER +INSTILLERS +INSTILLING +INSTILLMENT +INSTILLMENTS +INSTILLS +INSTILS +INSTINCT +INSTINCTIVE +INSTINCTIVELY +INSTINCTS +INSTINCTUAL +INSTINCTUALLY +INSTITUTE +INSTITUTED +INSTITUTER +INSTITUTERS +INSTITUTES +INSTITUTING +INSTITUTION +INSTITUTIONAL +INSTITUTIONALLY +INSTITUTIONS +INSTITUTOR +INSTITUTORS +INSTROKE +INSTROKES +INSTRUCT +INSTRUCTED +INSTRUCTING +INSTRUCTION +INSTRUCTIONAL +INSTRUCTIONS +INSTRUCTIVE +INSTRUCTIVELY +INSTRUCTIVENESS +INSTRUCTOR +INSTRUCTORS +INSTRUCTORSHIP +INSTRUCTORSHIPS +INSTRUCTRESS +INSTRUCTRESSES +INSTRUCTS +INSTRUMENT +INSTRUMENTAL +INSTRUMENTALISM +INSTRUMENTALIST +INSTRUMENTALITY +INSTRUMENTALLY +INSTRUMENTALS +INSTRUMENTATION +INSTRUMENTED +INSTRUMENTING +INSTRUMENTS +INSUBORDINATE +INSUBORDINATELY +INSUBORDINATES +INSUBORDINATION +INSUBSTANTIAL +INSUFFERABLE +INSUFFERABLY +INSUFFICIENCIES +INSUFFICIENCY +INSUFFICIENT +INSUFFICIENTLY +INSUFFLATE +INSUFFLATED +INSUFFLATES +INSUFFLATING +INSUFFLATION +INSUFFLATIONS +INSUFFLATOR +INSUFFLATORS +INSULANT +INSULANTS +INSULAR +INSULARISM +INSULARISMS +INSULARITIES +INSULARITY +INSULARLY +INSULARS +INSULATE +INSULATED +INSULATES +INSULATING +INSULATION +INSULATIONS +INSULATOR +INSULATORS +INSULIN +INSULINS +INSULT +INSULTED +INSULTER +INSULTERS +INSULTING +INSULTINGLY +INSULTS +INSUPERABLE +INSUPERABLY +INSUPPORTABLE +INSUPPORTABLY +INSUPPRESSIBLE +INSURABILITIES +INSURABILITY +INSURABLE +INSURANCE +INSURANCES +INSURANT +INSURANTS +INSURE +INSURED +INSUREDS +INSURER +INSURERS +INSURES +INSURGENCE +INSURGENCES +INSURGENCIES +INSURGENCY +INSURGENT +INSURGENTLY +INSURGENTS +INSURING +INSURMOUNTABLE +INSURMOUNTABLY +INSURRECTION +INSURRECTIONAL +INSURRECTIONARY +INSURRECTIONIST +INSURRECTIONS +INSUSCEPTIBLE +INSUSCEPTIBLY +INSWATHE +INSWATHED +INSWATHES +INSWATHING +INSWEPT +INTACT +INTACTLY +INTACTNESS +INTACTNESSES +INTAGLI +INTAGLIO +INTAGLIOED +INTAGLIOING +INTAGLIOS +INTAKE +INTAKES +INTANGIBILITIES +INTANGIBILITY +INTANGIBLE +INTANGIBLENESS +INTANGIBLES +INTANGIBLY +INTARSIA +INTARSIAS +INTEGER +INTEGERS +INTEGRABILITIES +INTEGRABILITY +INTEGRABLE +INTEGRAL +INTEGRALITIES +INTEGRALITY +INTEGRALLY +INTEGRALS +INTEGRAND +INTEGRANDS +INTEGRANT +INTEGRANTS +INTEGRATE +INTEGRATED +INTEGRATES +INTEGRATING +INTEGRATION +INTEGRATIONIST +INTEGRATIONISTS +INTEGRATIONS +INTEGRATIVE +INTEGRATOR +INTEGRATORS +INTEGRITIES +INTEGRITY +INTEGUMENT +INTEGUMENTARY +INTEGUMENTS +INTELLECT +INTELLECTION +INTELLECTIONS +INTELLECTIVE +INTELLECTIVELY +INTELLECTS +INTELLECTUAL +INTELLECTUALISM +INTELLECTUALIST +INTELLECTUALITY +INTELLECTUALIZE +INTELLECTUALLY +INTELLECTUALS +INTELLIGENCE +INTELLIGENCER +INTELLIGENCERS +INTELLIGENCES +INTELLIGENT +INTELLIGENTIAL +INTELLIGENTLY +INTELLIGENTSIA +INTELLIGENTSIAS +INTELLIGIBILITY +INTELLIGIBLE +INTELLIGIBLY +INTEMPERANCE +INTEMPERANCES +INTEMPERATE +INTEMPERATELY +INTEMPERATENESS +INTEND +INTENDANCE +INTENDANCES +INTENDANT +INTENDANTS +INTENDED +INTENDEDLY +INTENDEDS +INTENDER +INTENDERS +INTENDING +INTENDMENT +INTENDMENTS +INTENDS +INTENERATE +INTENERATED +INTENERATES +INTENERATING +INTENERATION +INTENERATIONS +INTENSE +INTENSELY +INTENSENESS +INTENSENESSES +INTENSER +INTENSEST +INTENSIFICATION +INTENSIFIED +INTENSIFIER +INTENSIFIERS +INTENSIFIES +INTENSIFY +INTENSIFYING +INTENSION +INTENSIONAL +INTENSIONALITY +INTENSIONALLY +INTENSIONS +INTENSITIES +INTENSITY +INTENSIVE +INTENSIVELY +INTENSIVENESS +INTENSIVENESSES +INTENSIVES +INTENT +INTENTION +INTENTIONAL +INTENTIONALITY +INTENTIONALLY +INTENTIONS +INTENTLY +INTENTNESS +INTENTNESSES +INTENTS +INTER +INTERABANG +INTERABANGS +INTERACT +INTERACTANT +INTERACTANTS +INTERACTED +INTERACTING +INTERACTION +INTERACTIONAL +INTERACTIONS +INTERACTIVE +INTERACTIVELY +INTERACTS +INTERAGE +INTERAGENCY +INTERALLELIC +INTERALLIED +INTERANIMATION +INTERANIMATIONS +INTERANNUAL +INTERARCH +INTERARCHED +INTERARCHES +INTERARCHING +INTERATOMIC +INTERBANK +INTERBASIN +INTERBED +INTERBEDDED +INTERBEDDING +INTERBEDS +INTERBEHAVIOR +INTERBEHAVIORAL +INTERBEHAVIORS +INTERBOROUGH +INTERBRANCH +INTERBRED +INTERBREED +INTERBREEDING +INTERBREEDS +INTERCALARY +INTERCALATE +INTERCALATED +INTERCALATES +INTERCALATING +INTERCALATION +INTERCALATIONS +INTERCAMPUS +INTERCASTE +INTERCEDE +INTERCEDED +INTERCEDER +INTERCEDERS +INTERCEDES +INTERCEDING +INTERCELL +INTERCELLULAR +INTERCENSAL +INTERCEPT +INTERCEPTED +INTERCEPTER +INTERCEPTERS +INTERCEPTING +INTERCEPTION +INTERCEPTIONS +INTERCEPTOR +INTERCEPTORS +INTERCEPTS +INTERCESSION +INTERCESSIONAL +INTERCESSIONS +INTERCESSOR +INTERCESSORS +INTERCESSORY +INTERCHAIN +INTERCHANGE +INTERCHANGEABLE +INTERCHANGEABLY +INTERCHANGED +INTERCHANGER +INTERCHANGERS +INTERCHANGES +INTERCHANGING +INTERCHANNEL +INTERCHURCH +INTERCITY +INTERCLAN +INTERCLASS +INTERCLUB +INTERCLUSTER +INTERCOASTAL +INTERCOLLEGIATE +INTERCOLONIAL +INTERCOM +INTERCOMMUNAL +INTERCOMMUNION +INTERCOMMUNIONS +INTERCOMMUNITY +INTERCOMPANY +INTERCOMPARE +INTERCOMPARED +INTERCOMPARES +INTERCOMPARING +INTERCOMPARISON +INTERCOMS +INTERCONNECT +INTERCONNECTED +INTERCONNECTING +INTERCONNECTION +INTERCONNECTS +INTERCONVERSION +INTERCONVERT +INTERCONVERTED +INTERCONVERTING +INTERCONVERTS +INTERCOOLER +INTERCOOLERS +INTERCORPORATE +INTERCORRELATE +INTERCORRELATED +INTERCORRELATES +INTERCORTICAL +INTERCOSTAL +INTERCOSTALS +INTERCOUNTRY +INTERCOUNTY +INTERCOUPLE +INTERCOURSE +INTERCOURSES +INTERCRATER +INTERCROP +INTERCROPPED +INTERCROPPING +INTERCROPS +INTERCROSS +INTERCROSSED +INTERCROSSES +INTERCROSSING +INTERCULTURAL +INTERCULTURALLY +INTERCULTURE +INTERCURRENT +INTERCUT +INTERCUTS +INTERCUTTING +INTERDEALER +INTERDENTAL +INTERDENTALLY +INTERDEPEND +INTERDEPENDED +INTERDEPENDENCE +INTERDEPENDENCY +INTERDEPENDENT +INTERDEPENDING +INTERDEPENDS +INTERDIALECTAL +INTERDICT +INTERDICTED +INTERDICTING +INTERDICTION +INTERDICTIONS +INTERDICTIVE +INTERDICTOR +INTERDICTORS +INTERDICTORY +INTERDICTS +INTERDIFFUSE +INTERDIFFUSED +INTERDIFFUSES +INTERDIFFUSING +INTERDIFFUSION +INTERDIFFUSIONS +INTERDIGITATE +INTERDIGITATED +INTERDIGITATES +INTERDIGITATING +INTERDIGITATION +INTERDISTRICT +INTERDIVISIONAL +INTERDOMINION +INTERELECTRODE +INTERELECTRON +INTERELECTRONIC +INTEREPIDEMIC +INTEREST +INTERESTED +INTERESTEDLY +INTERESTING +INTERESTINGLY +INTERESTINGNESS +INTERESTS +INTERETHNIC +INTERFACE +INTERFACED +INTERFACES +INTERFACIAL +INTERFACING +INTERFACINGS +INTERFACULTY +INTERFAITH +INTERFAMILIAL +INTERFAMILY +INTERFERE +INTERFERED +INTERFERENCE +INTERFERENCES +INTERFERENTIAL +INTERFERER +INTERFERERS +INTERFERES +INTERFERING +INTERFEROGRAM +INTERFEROGRAMS +INTERFEROMETER +INTERFEROMETERS +INTERFEROMETRIC +INTERFEROMETRY +INTERFERON +INTERFERONS +INTERFERTILE +INTERFERTILITY +INTERFIBER +INTERFILE +INTERFILED +INTERFILES +INTERFILING +INTERFIRM +INTERFLOW +INTERFLOWED +INTERFLOWING +INTERFLOWS +INTERFLUVE +INTERFLUVES +INTERFLUVIAL +INTERFOLD +INTERFOLDED +INTERFOLDING +INTERFOLDS +INTERFRATERNITY +INTERFUSE +INTERFUSED +INTERFUSES +INTERFUSING +INTERFUSION +INTERFUSIONS +INTERGALACTIC +INTERGANG +INTERGENERATION +INTERGENERIC +INTERGLACIAL +INTERGLACIALS +INTERGRADATION +INTERGRADATIONS +INTERGRADE +INTERGRADED +INTERGRADES +INTERGRADING +INTERGRAFT +INTERGRAFTED +INTERGRAFTING +INTERGRAFTS +INTERGRANULAR +INTERGROUP +INTERGROWTH +INTERGROWTHS +INTERIM +INTERIMS +INTERINDIVIDUAL +INTERINDUSTRY +INTERINFLUENCE +INTERINFLUENCES +INTERINVOLVE +INTERINVOLVED +INTERINVOLVES +INTERINVOLVING +INTERIONIC +INTERIOR +INTERIORISE +INTERIORISED +INTERIORISES +INTERIORISING +INTERIORITIES +INTERIORITY +INTERIORIZATION +INTERIORIZE +INTERIORIZED +INTERIORIZES +INTERIORIZING +INTERIORLY +INTERIORS +INTERISLAND +INTERJECT +INTERJECTED +INTERJECTING +INTERJECTION +INTERJECTIONAL +INTERJECTIONS +INTERJECTOR +INTERJECTORS +INTERJECTORY +INTERJECTS +INTERJOIN +INTERJOINED +INTERJOINING +INTERJOINS +INTERKNIT +INTERKNITS +INTERKNITTED +INTERKNITTING +INTERKNOT +INTERKNOTS +INTERKNOTTED +INTERKNOTTING +INTERLACE +INTERLACED +INTERLACEMENT +INTERLACEMENTS +INTERLACES +INTERLACING +INTERLACUSTRINE +INTERLAID +INTERLAMINAR +INTERLAP +INTERLAPPED +INTERLAPPING +INTERLAPS +INTERLARD +INTERLARDED +INTERLARDING +INTERLARDS +INTERLAY +INTERLAYER +INTERLAYERED +INTERLAYERING +INTERLAYERS +INTERLAYING +INTERLAYS +INTERLEAF +INTERLEAVE +INTERLEAVED +INTERLEAVES +INTERLEAVING +INTERLEND +INTERLENDING +INTERLENDS +INTERLENT +INTERLEUKIN +INTERLEUKINS +INTERLIBRARY +INTERLINE +INTERLINEAR +INTERLINEARLY +INTERLINEARS +INTERLINEATION +INTERLINEATIONS +INTERLINED +INTERLINER +INTERLINERS +INTERLINES +INTERLINING +INTERLININGS +INTERLINK +INTERLINKED +INTERLINKING +INTERLINKS +INTERLOAN +INTERLOANS +INTERLOBULAR +INTERLOCAL +INTERLOCK +INTERLOCKED +INTERLOCKING +INTERLOCKS +INTERLOCUTOR +INTERLOCUTORS +INTERLOCUTORY +INTERLOOP +INTERLOOPED +INTERLOOPING +INTERLOOPS +INTERLOPE +INTERLOPED +INTERLOPER +INTERLOPERS +INTERLOPES +INTERLOPING +INTERLUDE +INTERLUDES +INTERLUNAR +INTERLUNARY +INTERMALE +INTERMARGINAL +INTERMARRIAGE +INTERMARRIAGES +INTERMARRIED +INTERMARRIES +INTERMARRY +INTERMARRYING +INTERMAT +INTERMATS +INTERMATTED +INTERMATTING +INTERMEDDLE +INTERMEDDLED +INTERMEDDLER +INTERMEDDLERS +INTERMEDDLES +INTERMEDDLING +INTERMEDIACIES +INTERMEDIACY +INTERMEDIARIES +INTERMEDIARY +INTERMEDIATE +INTERMEDIATED +INTERMEDIATELY +INTERMEDIATES +INTERMEDIATING +INTERMEDIATION +INTERMEDIATIONS +INTERMEDIN +INTERMEDINS +INTERMEMBRANE +INTERMENSTRUAL +INTERMENT +INTERMENTS +INTERMESH +INTERMESHED +INTERMESHES +INTERMESHING +INTERMETALLIC +INTERMETALLICS +INTERMEZZI +INTERMEZZO +INTERMEZZOS +INTERMINABLE +INTERMINABLY +INTERMINGLE +INTERMINGLED +INTERMINGLES +INTERMINGLING +INTERMISSION +INTERMISSIONS +INTERMIT +INTERMITOTIC +INTERMITS +INTERMITTED +INTERMITTENCE +INTERMITTENCES +INTERMITTENCIES +INTERMITTENCY +INTERMITTENT +INTERMITTENTLY +INTERMITTER +INTERMITTERS +INTERMITTING +INTERMIX +INTERMIXED +INTERMIXES +INTERMIXING +INTERMIXTURE +INTERMIXTURES +INTERMODAL +INTERMODULATION +INTERMOLECULAR +INTERMONT +INTERMONTANE +INTERMOUNTAIN +INTERN +INTERNAL +INTERNALISE +INTERNALISED +INTERNALISES +INTERNALISING +INTERNALITIES +INTERNALITY +INTERNALIZATION +INTERNALIZE +INTERNALIZED +INTERNALIZES +INTERNALIZING +INTERNALLY +INTERNALS +INTERNATIONAL +INTERNATIONALLY +INTERNATIONALS +INTERNE +INTERNECINE +INTERNED +INTERNEE +INTERNEES +INTERNES +INTERNEURON +INTERNEURONAL +INTERNEURONS +INTERNING +INTERNIST +INTERNISTS +INTERNMENT +INTERNMENTS +INTERNODAL +INTERNODE +INTERNODES +INTERNS +INTERNSHIP +INTERNSHIPS +INTERNUCLEAR +INTERNUCLEON +INTERNUCLEONIC +INTERNUCLEOTIDE +INTERNUNCIAL +INTERNUNCIO +INTERNUNCIOS +INTEROBSERVER +INTEROCEAN +INTEROCEANIC +INTEROCEPTIVE +INTEROCEPTOR +INTEROCEPTORS +INTEROFFICE +INTEROPERABLE +INTEROPERATIVE +INTERORBITAL +INTERORGAN +INTERPANDEMIC +INTERPARISH +INTERPAROCHIAL +INTERPAROXYSMAL +INTERPARTICLE +INTERPARTY +INTERPELLATE +INTERPELLATED +INTERPELLATES +INTERPELLATING +INTERPELLATION +INTERPELLATIONS +INTERPELLATOR +INTERPELLATORS +INTERPENETRATE +INTERPENETRATED +INTERPENETRATES +INTERPERCEPTUAL +INTERPERMEATE +INTERPERMEATED +INTERPERMEATES +INTERPERMEATING +INTERPERSONAL +INTERPERSONALLY +INTERPHALANGEAL +INTERPHASE +INTERPHASES +INTERPLANETARY +INTERPLANT +INTERPLANTED +INTERPLANTING +INTERPLANTS +INTERPLAY +INTERPLAYED +INTERPLAYING +INTERPLAYS +INTERPLEAD +INTERPLEADED +INTERPLEADER +INTERPLEADERS +INTERPLEADING +INTERPLEADS +INTERPLED +INTERPLUVIAL +INTERPOINT +INTERPOLATE +INTERPOLATED +INTERPOLATES +INTERPOLATING +INTERPOLATION +INTERPOLATIONS +INTERPOLATIVE +INTERPOLATOR +INTERPOLATORS +INTERPOPULATION +INTERPOSE +INTERPOSED +INTERPOSER +INTERPOSERS +INTERPOSES +INTERPOSING +INTERPOSITION +INTERPOSITIONS +INTERPRET +INTERPRETABLE +INTERPRETATION +INTERPRETATIONS +INTERPRETATIVE +INTERPRETED +INTERPRETER +INTERPRETERS +INTERPRETING +INTERPRETIVE +INTERPRETIVELY +INTERPRETS +INTERPROVINCIAL +INTERPROXIMAL +INTERPSYCHIC +INTERPUPILLARY +INTERRACE +INTERRACIAL +INTERRACIALLY +INTERRED +INTERREGES +INTERREGIONAL +INTERREGNA +INTERREGNUM +INTERREGNUMS +INTERRELATE +INTERRELATED +INTERRELATEDLY +INTERRELATES +INTERRELATING +INTERRELATION +INTERRELATIONS +INTERRELIGIOUS +INTERRENAL +INTERREX +INTERRING +INTERROBANG +INTERROBANGS +INTERROGATE +INTERROGATED +INTERROGATEE +INTERROGATEES +INTERROGATES +INTERROGATING +INTERROGATION +INTERROGATIONAL +INTERROGATIONS +INTERROGATIVE +INTERROGATIVELY +INTERROGATIVES +INTERROGATOR +INTERROGATORIES +INTERROGATORS +INTERROGATORY +INTERROGEE +INTERROGEES +INTERROW +INTERRUPT +INTERRUPTED +INTERRUPTER +INTERRUPTERS +INTERRUPTIBLE +INTERRUPTING +INTERRUPTION +INTERRUPTIONS +INTERRUPTIVE +INTERRUPTOR +INTERRUPTORS +INTERRUPTS +INTERS +INTERSCHOLASTIC +INTERSCHOOL +INTERSECT +INTERSECTED +INTERSECTING +INTERSECTION +INTERSECTIONAL +INTERSECTIONS +INTERSECTS +INTERSEGMENT +INTERSEGMENTAL +INTERSENSORY +INTERSERVICE +INTERSESSION +INTERSESSIONS +INTERSEX +INTERSEXES +INTERSEXUAL +INTERSEXUALITY +INTERSEXUALLY +INTERSOCIETAL +INTERSOCIETY +INTERSPACE +INTERSPACED +INTERSPACES +INTERSPACING +INTERSPECIES +INTERSPECIFIC +INTERSPERSE +INTERSPERSED +INTERSPERSES +INTERSPERSING +INTERSPERSION +INTERSPERSIONS +INTERSTADIAL +INTERSTADIALS +INTERSTAGE +INTERSTATE +INTERSTATES +INTERSTATION +INTERSTELLAR +INTERSTERILE +INTERSTERILITY +INTERSTICE +INTERSTICES +INTERSTIMULUS +INTERSTITIAL +INTERSTITIALLY +INTERSTRAIN +INTERSTRAND +INTERSTRATIFIED +INTERSTRATIFIES +INTERSTRATIFY +INTERSUBJECTIVE +INTERSYSTEM +INTERTERM +INTERTERMINAL +INTERTEXTUAL +INTERTEXTUALITY +INTERTEXTUALLY +INTERTIDAL +INTERTIDALLY +INTERTIE +INTERTIES +INTERTILL +INTERTILLAGE +INTERTILLAGES +INTERTILLED +INTERTILLING +INTERTILLS +INTERTRIAL +INTERTRIBAL +INTERTROOP +INTERTROPICAL +INTERTWINE +INTERTWINED +INTERTWINEMENT +INTERTWINEMENTS +INTERTWINES +INTERTWINING +INTERTWIST +INTERTWISTED +INTERTWISTING +INTERTWISTS +INTERUNION +INTERUNIT +INTERUNIVERSITY +INTERURBAN +INTERVAL +INTERVALE +INTERVALES +INTERVALLEY +INTERVALLIC +INTERVALOMETER +INTERVALOMETERS +INTERVALS +INTERVENE +INTERVENED +INTERVENER +INTERVENERS +INTERVENES +INTERVENING +INTERVENOR +INTERVENORS +INTERVENTION +INTERVENTIONISM +INTERVENTIONIST +INTERVENTIONS +INTERVERTEBRAL +INTERVIEW +INTERVIEWED +INTERVIEWEE +INTERVIEWEES +INTERVIEWER +INTERVIEWERS +INTERVIEWING +INTERVIEWS +INTERVILLAGE +INTERVISIBILITY +INTERVISIBLE +INTERVISITATION +INTERVOCALIC +INTERWAR +INTERWEAVE +INTERWEAVED +INTERWEAVES +INTERWEAVING +INTERWORK +INTERWORKED +INTERWORKING +INTERWORKINGS +INTERWORKS +INTERWOVE +INTERWOVEN +INTERZONAL +INTERZONE +INTESTACIES +INTESTACY +INTESTATE +INTESTATES +INTESTINAL +INTESTINALLY +INTESTINE +INTESTINES +INTHRAL +INTHRALL +INTHRALLED +INTHRALLING +INTHRALLS +INTHRALS +INTHRONE +INTHRONED +INTHRONES +INTHRONING +INTI +INTIFADA +INTIFADAH +INTIFADAHS +INTIFADAS +INTIFADEH +INTIFADEHS +INTIMA +INTIMACIES +INTIMACY +INTIMAE +INTIMAL +INTIMAS +INTIMATE +INTIMATED +INTIMATELY +INTIMATENESS +INTIMATENESSES +INTIMATER +INTIMATERS +INTIMATES +INTIMATING +INTIMATION +INTIMATIONS +INTIME +INTIMIDATE +INTIMIDATED +INTIMIDATES +INTIMIDATING +INTIMIDATINGLY +INTIMIDATION +INTIMIDATIONS +INTIMIDATOR +INTIMIDATORS +INTIMIDATORY +INTIMIST +INTIMISTS +INTINCTION +INTINCTIONS +INTINE +INTINES +INTIS +INTITLE +INTITLED +INTITLES +INTITLING +INTITULE +INTITULED +INTITULES +INTITULING +INTO +INTOLERABILITY +INTOLERABLE +INTOLERABLENESS +INTOLERABLY +INTOLERANCE +INTOLERANCES +INTOLERANT +INTOLERANTLY +INTOLERANTNESS +INTOMB +INTOMBED +INTOMBING +INTOMBS +INTONATE +INTONATED +INTONATES +INTONATING +INTONATION +INTONATIONAL +INTONATIONS +INTONE +INTONED +INTONER +INTONERS +INTONES +INTONING +INTORT +INTORTED +INTORTING +INTORTS +INTOWN +INTOXICANT +INTOXICANTS +INTOXICATE +INTOXICATED +INTOXICATEDLY +INTOXICATES +INTOXICATING +INTOXICATION +INTOXICATIONS +INTRACARDIAC +INTRACARDIAL +INTRACARDIALLY +INTRACELLULAR +INTRACELLULARLY +INTRACEREBRAL +INTRACEREBRALLY +INTRACITY +INTRACOMPANY +INTRACRANIAL +INTRACRANIALLY +INTRACTABILITY +INTRACTABLE +INTRACTABLY +INTRACUTANEOUS +INTRADAY +INTRADERMAL +INTRADERMALLY +INTRADOS +INTRADOSES +INTRAGALACTIC +INTRAGENIC +INTRAMOLECULAR +INTRAMURAL +INTRAMURALLY +INTRAMUSCULAR +INTRAMUSCULARLY +INTRANASAL +INTRANASALLY +INTRANET +INTRANETS +INTRANSIGEANCE +INTRANSIGEANCES +INTRANSIGEANT +INTRANSIGEANTLY +INTRANSIGEANTS +INTRANSIGENCE +INTRANSIGENCES +INTRANSIGENT +INTRANSIGENTLY +INTRANSIGENTS +INTRANSITIVE +INTRANSITIVELY +INTRANSITIVITY +INTRANT +INTRANTS +INTRAOCULAR +INTRAOCULARLY +INTRAPERITONEAL +INTRAPERSONAL +INTRAPLATE +INTRAPOPULATION +INTRAPRENEUR +INTRAPRENEURIAL +INTRAPRENEURS +INTRAPSYCHIC +INTRASPECIES +INTRASPECIFIC +INTRASTATE +INTRATHECAL +INTRATHECALLY +INTRATHORACIC +INTRAUTERINE +INTRAVASCULAR +INTRAVASCULARLY +INTRAVENOUS +INTRAVENOUSLY +INTRAVITAL +INTRAVITALLY +INTRAVITAM +INTRAZONAL +INTREAT +INTREATED +INTREATING +INTREATS +INTRENCH +INTRENCHED +INTRENCHES +INTRENCHING +INTREPID +INTREPIDITIES +INTREPIDITY +INTREPIDLY +INTREPIDNESS +INTREPIDNESSES +INTRICACIES +INTRICACY +INTRICATE +INTRICATELY +INTRICATENESS +INTRICATENESSES +INTRIGANT +INTRIGANTS +INTRIGUANT +INTRIGUANTS +INTRIGUE +INTRIGUED +INTRIGUER +INTRIGUERS +INTRIGUES +INTRIGUING +INTRIGUINGLY +INTRINSIC +INTRINSICAL +INTRINSICALLY +INTRO +INTRODUCE +INTRODUCED +INTRODUCER +INTRODUCERS +INTRODUCES +INTRODUCING +INTRODUCTION +INTRODUCTIONS +INTRODUCTORILY +INTRODUCTORY +INTROFIED +INTROFIES +INTROFY +INTROFYING +INTROGRESSANT +INTROGRESSANTS +INTROGRESSION +INTROGRESSIONS +INTROGRESSIVE +INTROIT +INTROITS +INTROJECT +INTROJECTED +INTROJECTING +INTROJECTION +INTROJECTIONS +INTROJECTS +INTROMISSION +INTROMISSIONS +INTROMIT +INTROMITS +INTROMITTED +INTROMITTENT +INTROMITTER +INTROMITTERS +INTROMITTING +INTRON +INTRONS +INTRORSE +INTROS +INTROSPECT +INTROSPECTED +INTROSPECTING +INTROSPECTION +INTROSPECTIONAL +INTROSPECTIONS +INTROSPECTIVE +INTROSPECTIVELY +INTROSPECTS +INTROVERSION +INTROVERSIONS +INTROVERSIVE +INTROVERSIVELY +INTROVERT +INTROVERTED +INTROVERTING +INTROVERTS +INTRUDE +INTRUDED +INTRUDER +INTRUDERS +INTRUDES +INTRUDING +INTRUSION +INTRUSIONS +INTRUSIVE +INTRUSIVELY +INTRUSIVENESS +INTRUSIVENESSES +INTRUSIVES +INTRUST +INTRUSTED +INTRUSTING +INTRUSTS +INTUBATE +INTUBATED +INTUBATES +INTUBATING +INTUBATION +INTUBATIONS +INTUIT +INTUITABLE +INTUITED +INTUITING +INTUITION +INTUITIONAL +INTUITIONISM +INTUITIONISMS +INTUITIONIST +INTUITIONISTS +INTUITIONS +INTUITIVE +INTUITIVELY +INTUITIVENESS +INTUITIVENESSES +INTUITS +INTUMESCE +INTUMESCED +INTUMESCENCE +INTUMESCENCES +INTUMESCENT +INTUMESCES +INTUMESCING +INTURN +INTURNED +INTURNS +INTUSSUSCEPT +INTUSSUSCEPTED +INTUSSUSCEPTING +INTUSSUSCEPTION +INTUSSUSCEPTIVE +INTUSSUSCEPTS +INTWINE +INTWINED +INTWINES +INTWINING +INTWIST +INTWISTED +INTWISTING +INTWISTS +INULASE +INULASES +INULIN +INULINS +INUNCTION +INUNCTIONS +INUNDANT +INUNDATE +INUNDATED +INUNDATES +INUNDATING +INUNDATION +INUNDATIONS +INUNDATOR +INUNDATORS +INUNDATORY +INURBANE +INURE +INURED +INUREMENT +INUREMENTS +INURES +INURING +INURN +INURNED +INURNING +INURNMENT +INURNMENTS +INURNS +INUTILE +INUTILELY +INUTILITIES +INUTILITY +INVADE +INVADED +INVADER +INVADERS +INVADES +INVADING +INVAGINATE +INVAGINATED +INVAGINATES +INVAGINATING +INVAGINATION +INVAGINATIONS +INVALID +INVALIDATE +INVALIDATED +INVALIDATES +INVALIDATING +INVALIDATION +INVALIDATIONS +INVALIDATOR +INVALIDATORS +INVALIDED +INVALIDING +INVALIDISM +INVALIDISMS +INVALIDITIES +INVALIDITY +INVALIDLY +INVALIDS +INVALUABLE +INVALUABLENESS +INVALUABLY +INVAR +INVARIABILITIES +INVARIABILITY +INVARIABLE +INVARIABLES +INVARIABLY +INVARIANCE +INVARIANCES +INVARIANT +INVARIANTS +INVARS +INVASION +INVASIONS +INVASIVE +INVASIVENESS +INVASIVENESSES +INVECTED +INVECTIVE +INVECTIVELY +INVECTIVENESS +INVECTIVENESSES +INVECTIVES +INVEIGH +INVEIGHED +INVEIGHER +INVEIGHERS +INVEIGHING +INVEIGHS +INVEIGLE +INVEIGLED +INVEIGLEMENT +INVEIGLEMENTS +INVEIGLER +INVEIGLERS +INVEIGLES +INVEIGLING +INVENT +INVENTED +INVENTER +INVENTERS +INVENTING +INVENTION +INVENTIONS +INVENTIVE +INVENTIVELY +INVENTIVENESS +INVENTIVENESSES +INVENTOR +INVENTORIAL +INVENTORIALLY +INVENTORIED +INVENTORIES +INVENTORS +INVENTORY +INVENTORYING +INVENTRESS +INVENTRESSES +INVENTS +INVERITIES +INVERITY +INVERNESS +INVERNESSES +INVERSE +INVERSED +INVERSELY +INVERSES +INVERSING +INVERSION +INVERSIONS +INVERSIVE +INVERT +INVERTASE +INVERTASES +INVERTEBRATE +INVERTEBRATES +INVERTED +INVERTER +INVERTERS +INVERTIBLE +INVERTIN +INVERTING +INVERTINS +INVERTOR +INVERTORS +INVERTS +INVEST +INVESTABLE +INVESTED +INVESTIGATE +INVESTIGATED +INVESTIGATES +INVESTIGATING +INVESTIGATION +INVESTIGATIONAL +INVESTIGATIONS +INVESTIGATIVE +INVESTIGATOR +INVESTIGATORS +INVESTIGATORY +INVESTING +INVESTITURE +INVESTITURES +INVESTMENT +INVESTMENTS +INVESTOR +INVESTORS +INVESTS +INVETERACIES +INVETERACY +INVETERATE +INVETERATELY +INVIABILITIES +INVIABILITY +INVIABLE +INVIABLY +INVIDIOUS +INVIDIOUSLY +INVIDIOUSNESS +INVIDIOUSNESSES +INVIGILATE +INVIGILATED +INVIGILATES +INVIGILATING +INVIGILATION +INVIGILATIONS +INVIGILATOR +INVIGILATORS +INVIGORATE +INVIGORATED +INVIGORATES +INVIGORATING +INVIGORATINGLY +INVIGORATION +INVIGORATIONS +INVIGORATOR +INVIGORATORS +INVINCIBILITIES +INVINCIBILITY +INVINCIBLE +INVINCIBLENESS +INVINCIBLY +INVIOLABILITIES +INVIOLABILITY +INVIOLABLE +INVIOLABLENESS +INVIOLABLY +INVIOLACIES +INVIOLACY +INVIOLATE +INVIOLATELY +INVIOLATENESS +INVIOLATENESSES +INVIRILE +INVISCID +INVISIBILITIES +INVISIBILITY +INVISIBLE +INVISIBLENESS +INVISIBLENESSES +INVISIBLES +INVISIBLY +INVITAL +INVITATION +INVITATIONAL +INVITATIONALS +INVITATIONS +INVITATORIES +INVITATORY +INVITE +INVITED +INVITEE +INVITEES +INVITER +INVITERS +INVITES +INVITING +INVITINGLY +INVOCATE +INVOCATED +INVOCATES +INVOCATING +INVOCATION +INVOCATIONAL +INVOCATIONS +INVOCATORY +INVOICE +INVOICED +INVOICES +INVOICING +INVOKE +INVOKED +INVOKER +INVOKERS +INVOKES +INVOKING +INVOLUCEL +INVOLUCELS +INVOLUCRA +INVOLUCRAL +INVOLUCRATE +INVOLUCRE +INVOLUCRES +INVOLUCRUM +INVOLUNTARILY +INVOLUNTARINESS +INVOLUNTARY +INVOLUTE +INVOLUTED +INVOLUTES +INVOLUTING +INVOLUTION +INVOLUTIONAL +INVOLUTIONS +INVOLVE +INVOLVED +INVOLVEDLY +INVOLVEMENT +INVOLVEMENTS +INVOLVER +INVOLVERS +INVOLVES +INVOLVING +INVULNERABILITY +INVULNERABLE +INVULNERABLY +INWALL +INWALLED +INWALLING +INWALLS +INWARD +INWARDLY +INWARDNESS +INWARDNESSES +INWARDS +INWEAVE +INWEAVED +INWEAVES +INWEAVING +INWIND +INWINDING +INWINDS +INWOUND +INWOVE +INWOVEN +INWRAP +INWRAPPED +INWRAPPING +INWRAPS +INWROUGHT +IODATE +IODATED +IODATES +IODATING +IODATION +IODATIONS +IODIC +IODID +IODIDE +IODIDES +IODIDS +IODIN +IODINATE +IODINATED +IODINATES +IODINATING +IODINATION +IODINATIONS +IODINE +IODINES +IODINS +IODISE +IODISED +IODISES +IODISING +IODISM +IODISMS +IODIZE +IODIZED +IODIZER +IODIZERS +IODIZES +IODIZING +IODOFORM +IODOFORMS +IODOMETRIES +IODOMETRY +IODOPHOR +IODOPHORS +IODOPSIN +IODOPSINS +IODOUS +IOLITE +IOLITES +ION +IONIC +IONICITIES +IONICITY +IONICS +IONISE +IONISED +IONISES +IONISING +IONIUM +IONIUMS +IONIZABLE +IONIZATION +IONIZATIONS +IONIZE +IONIZED +IONIZER +IONIZERS +IONIZES +IONIZING +IONOGEN +IONOGENIC +IONOGENS +IONOMER +IONOMERS +IONONE +IONONES +IONOPHORE +IONOPHORES +IONOSONDE +IONOSONDES +IONOSPHERE +IONOSPHERES +IONOSPHERIC +IONOSPHERICALLY +IONS +IONTOPHORESES +IONTOPHORESIS +IONTOPHORETIC +IOTA +IOTACISM +IOTACISMS +IOTAS +IPECAC +IPECACS +IPECACUANHA +IPECACUANHAS +IPOMOEA +IPOMOEAS +IPRONIAZID +IPRONIAZIDS +IPSILATERAL +IPSILATERALLY +IRACUND +IRADE +IRADES +IRASCIBILITIES +IRASCIBILITY +IRASCIBLE +IRASCIBLENESS +IRASCIBLENESSES +IRASCIBLY +IRATE +IRATELY +IRATENESS +IRATENESSES +IRATER +IRATEST +IRE +IRED +IREFUL +IREFULLY +IRELESS +IRENIC +IRENICAL +IRENICALLY +IRENICS +IRES +IRID +IRIDES +IRIDESCENCE +IRIDESCENCES +IRIDESCENT +IRIDESCENTLY +IRIDIC +IRIDIUM +IRIDIUMS +IRIDOLOGIES +IRIDOLOGIST +IRIDOLOGISTS +IRIDOLOGY +IRIDOSMINE +IRIDOSMINES +IRIDS +IRING +IRIS +IRISED +IRISES +IRISING +IRITIC +IRITIS +IRITISES +IRK +IRKED +IRKING +IRKS +IRKSOME +IRKSOMELY +IRKSOMENESS +IRKSOMENESSES +IROKO +IROKOS +IRON +IRONBARK +IRONBARKS +IRONBOUND +IRONCLAD +IRONCLADS +IRONE +IRONED +IRONER +IRONERS +IRONES +IRONFISTED +IRONHANDED +IRONHEARTED +IRONIC +IRONICAL +IRONICALLY +IRONICALNESS +IRONICALNESSES +IRONIES +IRONING +IRONINGS +IRONIST +IRONISTS +IRONIZE +IRONIZED +IRONIZES +IRONIZING +IRONLIKE +IRONMAN +IRONMASTER +IRONMASTERS +IRONMEN +IRONMONGER +IRONMONGERIES +IRONMONGERS +IRONMONGERY +IRONNESS +IRONNESSES +IRONS +IRONSIDE +IRONSIDES +IRONSMITH +IRONSMITHS +IRONSTONE +IRONSTONES +IRONWARE +IRONWARES +IRONWEED +IRONWEEDS +IRONWOMAN +IRONWOMEN +IRONWOOD +IRONWOODS +IRONWORK +IRONWORKER +IRONWORKERS +IRONWORKS +IRONY +IRRADIANCE +IRRADIANCES +IRRADIANT +IRRADIATE +IRRADIATED +IRRADIATES +IRRADIATING +IRRADIATION +IRRADIATIONS +IRRADIATIVE +IRRADIATOR +IRRADIATORS +IRRADICABLE +IRRADICABLY +IRRATIONAL +IRRATIONALISM +IRRATIONALISMS +IRRATIONALIST +IRRATIONALISTIC +IRRATIONALISTS +IRRATIONALITIES +IRRATIONALITY +IRRATIONALLY +IRRATIONALS +IRREAL +IRREALITIES +IRREALITY +IRRECLAIMABLE +IRRECLAIMABLY +IRRECONCILABLE +IRRECONCILABLES +IRRECONCILABLY +IRRECOVERABLE +IRRECOVERABLY +IRRECUSABLE +IRRECUSABLY +IRREDEEMABLE +IRREDEEMABLY +IRREDENTA +IRREDENTAS +IRREDENTISM +IRREDENTISMS +IRREDENTIST +IRREDENTISTS +IRREDUCIBILITY +IRREDUCIBLE +IRREDUCIBLY +IRREFLEXIVE +IRREFORMABILITY +IRREFORMABLE +IRREFRAGABILITY +IRREFRAGABLE +IRREFRAGABLY +IRREFUTABILITY +IRREFUTABLE +IRREFUTABLY +IRREGARDLESS +IRREGULAR +IRREGULARITIES +IRREGULARITY +IRREGULARLY +IRREGULARS +IRRELATIVE +IRRELATIVELY +IRRELEVANCE +IRRELEVANCES +IRRELEVANCIES +IRRELEVANCY +IRRELEVANT +IRRELEVANTLY +IRRELIGION +IRRELIGIONIST +IRRELIGIONISTS +IRRELIGIONS +IRRELIGIOUS +IRRELIGIOUSLY +IRREMEABLE +IRREMEDIABLE +IRREMEDIABLY +IRREMOVABILITY +IRREMOVABLE +IRREMOVABLY +IRREPARABLE +IRREPARABLENESS +IRREPARABLY +IRREPEALABILITY +IRREPEALABLE +IRREPLACEABLE +IRREPLACEABLY +IRREPRESSIBLE +IRREPRESSIBLY +IRREPROACHABLE +IRREPROACHABLY +IRREPRODUCIBLE +IRRESISTIBILITY +IRRESISTIBLE +IRRESISTIBLY +IRRESOLUBLE +IRRESOLUTE +IRRESOLUTELY +IRRESOLUTENESS +IRRESOLUTION +IRRESOLUTIONS +IRRESOLVABLE +IRRESPONSIBLE +IRRESPONSIBLES +IRRESPONSIBLY +IRRESPONSIVE +IRRETRIEVABLE +IRRETRIEVABLY +IRREVERENCE +IRREVERENCES +IRREVERENT +IRREVERENTLY +IRREVERSIBILITY +IRREVERSIBLE +IRREVERSIBLY +IRREVOCABILITY +IRREVOCABLE +IRREVOCABLENESS +IRREVOCABLY +IRRIDENTA +IRRIDENTAS +IRRIGABLE +IRRIGABLY +IRRIGATE +IRRIGATED +IRRIGATES +IRRIGATING +IRRIGATION +IRRIGATIONS +IRRIGATOR +IRRIGATORS +IRRIGUOUS +IRRITABILITIES +IRRITABILITY +IRRITABLE +IRRITABLENESS +IRRITABLENESSES +IRRITABLY +IRRITANCIES +IRRITANCY +IRRITANT +IRRITANTS +IRRITATE +IRRITATED +IRRITATES +IRRITATING +IRRITATINGLY +IRRITATION +IRRITATIONS +IRRITATIVE +IRRITATOR +IRRITATORS +IRROTATIONAL +IRRUPT +IRRUPTED +IRRUPTING +IRRUPTION +IRRUPTIONS +IRRUPTIVE +IRRUPTIVELY +IRRUPTS +IS +ISAGOGE +ISAGOGES +ISAGOGIC +ISAGOGICS +ISALLOBAR +ISALLOBARIC +ISALLOBARS +ISARITHM +ISARITHMS +ISATIN +ISATINE +ISATINES +ISATINIC +ISATINS +ISBA +ISBAS +ISCHAEMIA +ISCHAEMIAS +ISCHEMIA +ISCHEMIAS +ISCHEMIC +ISCHIA +ISCHIADIC +ISCHIAL +ISCHIATIC +ISCHIUM +ISEIKONIA +ISEIKONIAS +ISEIKONIC +ISENTROPIC +ISENTROPICALLY +ISINGLASS +ISINGLASSES +ISLAND +ISLANDED +ISLANDER +ISLANDERS +ISLANDING +ISLANDS +ISLE +ISLED +ISLELESS +ISLES +ISLET +ISLETED +ISLETS +ISLING +ISM +ISMS +ISOAGGLUTININ +ISOAGGLUTININS +ISOALLOXAZINE +ISOALLOXAZINES +ISOANTIBODIES +ISOANTIBODY +ISOANTIGEN +ISOANTIGENIC +ISOANTIGENS +ISOBAR +ISOBARE +ISOBARES +ISOBARIC +ISOBARISM +ISOBARISMS +ISOBARS +ISOBATH +ISOBATHIC +ISOBATHS +ISOBUTANE +ISOBUTANES +ISOBUTENE +ISOBUTENES +ISOBUTYL +ISOBUTYLENE +ISOBUTYLENES +ISOBUTYLS +ISOCALORIC +ISOCARBOXAZID +ISOCARBOXAZIDS +ISOCHEIM +ISOCHEIMS +ISOCHIME +ISOCHIMES +ISOCHOR +ISOCHORE +ISOCHORES +ISOCHORIC +ISOCHORS +ISOCHROMOSOME +ISOCHROMOSOMES +ISOCHRON +ISOCHRONAL +ISOCHRONALLY +ISOCHRONE +ISOCHRONES +ISOCHRONISM +ISOCHRONISMS +ISOCHRONOUS +ISOCHRONOUSLY +ISOCHRONS +ISOCLINAL +ISOCLINALS +ISOCLINE +ISOCLINES +ISOCLINIC +ISOCLINICS +ISOCRACIES +ISOCRACY +ISOCYANATE +ISOCYANATES +ISOCYCLIC +ISODIAMETRIC +ISODOSE +ISOELECTRIC +ISOELECTRONIC +ISOENZYMATIC +ISOENZYME +ISOENZYMES +ISOENZYMIC +ISOFORM +ISOFORMS +ISOGAMETE +ISOGAMETES +ISOGAMETIC +ISOGAMIES +ISOGAMOUS +ISOGAMY +ISOGENEIC +ISOGENIC +ISOGENIES +ISOGENOUS +ISOGENY +ISOGLOSS +ISOGLOSSAL +ISOGLOSSES +ISOGLOSSIC +ISOGON +ISOGONAL +ISOGONALS +ISOGONE +ISOGONES +ISOGONIC +ISOGONICS +ISOGONIES +ISOGONS +ISOGONY +ISOGRAFT +ISOGRAFTED +ISOGRAFTING +ISOGRAFTS +ISOGRAM +ISOGRAMS +ISOGRAPH +ISOGRAPHS +ISOGRIV +ISOGRIVS +ISOHEL +ISOHELS +ISOHYET +ISOHYETAL +ISOHYETS +ISOLABLE +ISOLATABLE +ISOLATE +ISOLATED +ISOLATES +ISOLATING +ISOLATION +ISOLATIONISM +ISOLATIONISMS +ISOLATIONIST +ISOLATIONISTS +ISOLATIONS +ISOLATOR +ISOLATORS +ISOLEAD +ISOLEADS +ISOLEUCINE +ISOLEUCINES +ISOLINE +ISOLINES +ISOLOG +ISOLOGOUS +ISOLOGS +ISOLOGUE +ISOLOGUES +ISOMER +ISOMERASE +ISOMERASES +ISOMERIC +ISOMERISM +ISOMERISMS +ISOMERIZATION +ISOMERIZATIONS +ISOMERIZE +ISOMERIZED +ISOMERIZES +ISOMERIZING +ISOMEROUS +ISOMERS +ISOMETRIC +ISOMETRICALLY +ISOMETRICS +ISOMETRIES +ISOMETRY +ISOMORPH +ISOMORPHIC +ISOMORPHICALLY +ISOMORPHISM +ISOMORPHISMS +ISOMORPHOUS +ISOMORPHS +ISONIAZID +ISONIAZIDS +ISONOMIC +ISONOMIES +ISONOMY +ISOOCTANE +ISOOCTANES +ISOPACH +ISOPACHS +ISOPHOTAL +ISOPHOTE +ISOPHOTES +ISOPIESTIC +ISOPLETH +ISOPLETHIC +ISOPLETHS +ISOPOD +ISOPODAN +ISOPODANS +ISOPODS +ISOPRENALINE +ISOPRENALINES +ISOPRENE +ISOPRENES +ISOPRENOID +ISOPROPYL +ISOPROPYLS +ISOPROTERENOL +ISOPROTERENOLS +ISOPYCNIC +ISOSCELES +ISOSMOTIC +ISOSMOTICALLY +ISOSPIN +ISOSPINS +ISOSPORIES +ISOSPORY +ISOSTACIES +ISOSTACY +ISOSTASIES +ISOSTASY +ISOSTATIC +ISOSTATICALLY +ISOSTERIC +ISOTACH +ISOTACHS +ISOTACTIC +ISOTHERAL +ISOTHERE +ISOTHERES +ISOTHERM +ISOTHERMAL +ISOTHERMALLY +ISOTHERMS +ISOTONE +ISOTONES +ISOTONIC +ISOTONICALLY +ISOTONICITIES +ISOTONICITY +ISOTOPE +ISOTOPES +ISOTOPIC +ISOTOPICALLY +ISOTOPIES +ISOTOPY +ISOTROPIC +ISOTROPIES +ISOTROPY +ISOTYPE +ISOTYPES +ISOTYPIC +ISOZYME +ISOZYMES +ISOZYMIC +ISSEI +ISSEIS +ISSUABLE +ISSUABLY +ISSUANCE +ISSUANCES +ISSUANT +ISSUE +ISSUED +ISSUELESS +ISSUER +ISSUERS +ISSUES +ISSUING +ISTHMI +ISTHMIAN +ISTHMIANS +ISTHMIC +ISTHMOID +ISTHMUS +ISTHMUSES +ISTLE +ISTLES +IT +ITALIANATE +ITALIANATED +ITALIANATES +ITALIANATING +ITALIANISE +ITALIANISED +ITALIANISES +ITALIANISING +ITALIANIZE +ITALIANIZED +ITALIANIZES +ITALIANIZING +ITALIC +ITALICISE +ITALICISED +ITALICISES +ITALICISING +ITALICIZATION +ITALICIZATIONS +ITALICIZE +ITALICIZED +ITALICIZES +ITALICIZING +ITALICS +ITCH +ITCHED +ITCHES +ITCHIER +ITCHIEST +ITCHILY +ITCHINESS +ITCHINESSES +ITCHING +ITCHINGS +ITCHY +ITEM +ITEMED +ITEMING +ITEMISE +ITEMISED +ITEMISES +ITEMISING +ITEMIZATION +ITEMIZATIONS +ITEMIZE +ITEMIZED +ITEMIZER +ITEMIZERS +ITEMIZES +ITEMIZING +ITEMS +ITERANCE +ITERANCES +ITERANT +ITERATE +ITERATED +ITERATES +ITERATING +ITERATION +ITERATIONS +ITERATIVE +ITERATIVELY +ITERUM +ITHER +ITHYPHALLIC +ITINERACIES +ITINERACY +ITINERANCIES +ITINERANCY +ITINERANT +ITINERANTLY +ITINERANTS +ITINERARIES +ITINERARY +ITINERATE +ITINERATED +ITINERATES +ITINERATING +ITINERATION +ITINERATIONS +ITS +ITSELF +IVERMECTIN +IVERMECTINS +IVIED +IVIES +IVORIES +IVORY +IVORYBILL +IVORYBILLS +IVORYLIKE +IVY +IVYLIKE +IWIS +IXIA +IXIAS +IXODID +IXODIDS +IXORA +IXORAS +IXTLE +IXTLES +IZAR +IZARS +IZZARD +IZZARDS +JAB +JABBED +JABBER +JABBERED +JABBERER +JABBERERS +JABBERING +JABBERS +JABBERWOCKIES +JABBERWOCKY +JABBING +JABIRU +JABIRUS +JABORANDI +JABORANDIS +JABOT +JABOTICABA +JABOTICABAS +JABOTS +JABS +JACAL +JACALES +JACALS +JACAMAR +JACAMARS +JACANA +JACANAS +JACARANDA +JACARANDAS +JACINTH +JACINTHE +JACINTHES +JACINTHS +JACK +JACKAL +JACKALS +JACKANAPES +JACKANAPESES +JACKAROO +JACKAROOS +JACKASS +JACKASSERIES +JACKASSERY +JACKASSES +JACKBOOT +JACKBOOTED +JACKBOOTS +JACKDAW +JACKDAWS +JACKED +JACKER +JACKEROO +JACKEROOS +JACKERS +JACKET +JACKETED +JACKETING +JACKETLESS +JACKETS +JACKFISH +JACKFISHES +JACKFRUIT +JACKFRUITS +JACKHAMMER +JACKHAMMERED +JACKHAMMERING +JACKHAMMERS +JACKIES +JACKING +JACKKNIFE +JACKKNIFED +JACKKNIFES +JACKKNIFING +JACKKNIVES +JACKLEG +JACKLEGS +JACKLIGHT +JACKLIGHTED +JACKLIGHTING +JACKLIGHTS +JACKPLANE +JACKPLANES +JACKPOT +JACKPOTS +JACKRABBIT +JACKRABBITS +JACKROLL +JACKROLLED +JACKROLLING +JACKROLLS +JACKS +JACKSCREW +JACKSCREWS +JACKSHAFT +JACKSHAFTS +JACKSMELT +JACKSMELTS +JACKSNIPE +JACKSNIPES +JACKSTAY +JACKSTAYS +JACKSTONE +JACKSTONES +JACKSTRAW +JACKSTRAWS +JACKY +JACOBIN +JACOBINS +JACOBUS +JACOBUSES +JACONET +JACONETS +JACQUARD +JACQUARDS +JACQUERIE +JACQUERIES +JACTATION +JACTATIONS +JACTITATION +JACTITATIONS +JACULATE +JACULATED +JACULATES +JACULATING +JACUZZI +JACUZZIS +JADE +JADED +JADEDLY +JADEDNESS +JADEDNESSES +JADEITE +JADEITES +JADELIKE +JADES +JADING +JADISH +JADISHLY +JADITIC +JAEGER +JAEGERS +JAG +JAGER +JAGERS +JAGG +JAGGARIES +JAGGARY +JAGGED +JAGGEDER +JAGGEDEST +JAGGEDLY +JAGGEDNESS +JAGGEDNESSES +JAGGER +JAGGERIES +JAGGERS +JAGGERY +JAGGHERIES +JAGGHERY +JAGGIER +JAGGIES +JAGGIEST +JAGGING +JAGGS +JAGGY +JAGLESS +JAGRA +JAGRAS +JAGS +JAGUAR +JAGUARONDI +JAGUARONDIS +JAGUARS +JAGUARUNDI +JAGUARUNDIS +JAIL +JAILABLE +JAILBAIT +JAILBIRD +JAILBIRDS +JAILBREAK +JAILBREAKS +JAILED +JAILER +JAILERS +JAILHOUSE +JAILHOUSES +JAILING +JAILOR +JAILORS +JAILS +JAKE +JAKES +JALAP +JALAPENO +JALAPENOS +JALAPIC +JALAPIN +JALAPINS +JALAPS +JALOP +JALOPIES +JALOPPIES +JALOPPY +JALOPS +JALOPY +JALOUSIE +JALOUSIED +JALOUSIES +JAM +JAMB +JAMBALAYA +JAMBALAYAS +JAMBE +JAMBEAU +JAMBEAUX +JAMBED +JAMBES +JAMBING +JAMBOREE +JAMBOREES +JAMBS +JAMLIKE +JAMMABLE +JAMMED +JAMMER +JAMMERS +JAMMIER +JAMMIES +JAMMIEST +JAMMING +JAMMY +JAMPACKED +JAMS +JANE +JANES +JANGLE +JANGLED +JANGLER +JANGLERS +JANGLES +JANGLIER +JANGLIEST +JANGLING +JANGLY +JANIFORM +JANISARIES +JANISARY +JANISSARIES +JANISSARY +JANITOR +JANITORIAL +JANITORS +JANIZARIES +JANIZARY +JANTY +JAPAN +JAPANIZE +JAPANIZED +JAPANIZES +JAPANIZING +JAPANNED +JAPANNER +JAPANNERS +JAPANNING +JAPANS +JAPE +JAPED +JAPER +JAPERIES +JAPERS +JAPERY +JAPES +JAPING +JAPINGLY +JAPONAISERIE +JAPONAISERIES +JAPONICA +JAPONICAS +JAR +JARDINIERE +JARDINIERES +JARFUL +JARFULS +JARGON +JARGONED +JARGONEER +JARGONEERS +JARGONEL +JARGONELS +JARGONING +JARGONISH +JARGONIST +JARGONISTIC +JARGONISTS +JARGONIZE +JARGONIZED +JARGONIZES +JARGONIZING +JARGONS +JARGONY +JARGOON +JARGOONS +JARHEAD +JARHEADS +JARINA +JARINAS +JARL +JARLDOM +JARLDOMS +JARLS +JARLSBERG +JARLSBERGS +JAROSITE +JAROSITES +JAROVIZE +JAROVIZED +JAROVIZES +JAROVIZING +JARRAH +JARRAHS +JARRED +JARRING +JARRINGLY +JARS +JARSFUL +JARVEY +JARVEYS +JASMIN +JASMINE +JASMINES +JASMINS +JASPER +JASPERS +JASPERWARE +JASPERWARES +JASPERY +JASPILITE +JASPILITES +JASSID +JASSIDS +JATO +JATOS +JAUK +JAUKED +JAUKING +JAUKS +JAUNCE +JAUNCED +JAUNCES +JAUNCING +JAUNDICE +JAUNDICED +JAUNDICES +JAUNDICING +JAUNT +JAUNTED +JAUNTIER +JAUNTIEST +JAUNTILY +JAUNTINESS +JAUNTINESSES +JAUNTING +JAUNTS +JAUNTY +JAUP +JAUPED +JAUPING +JAUPS +JAVA +JAVAS +JAVELIN +JAVELINA +JAVELINAS +JAVELINED +JAVELINING +JAVELINS +JAW +JAWAN +JAWANS +JAWBONE +JAWBONED +JAWBONER +JAWBONERS +JAWBONES +JAWBONING +JAWBONINGS +JAWBREAKER +JAWBREAKERS +JAWED +JAWING +JAWLESS +JAWLIKE +JAWLINE +JAWLINES +JAWS +JAY +JAYBIRD +JAYBIRDS +JAYGEE +JAYGEES +JAYHAWKER +JAYHAWKERS +JAYS +JAYVEE +JAYVEES +JAYWALK +JAYWALKED +JAYWALKER +JAYWALKERS +JAYWALKING +JAYWALKS +JAZZ +JAZZBO +JAZZBOS +JAZZED +JAZZER +JAZZERS +JAZZES +JAZZIER +JAZZIEST +JAZZILY +JAZZINESS +JAZZINESSES +JAZZING +JAZZLIKE +JAZZMAN +JAZZMEN +JAZZY +JEALOUS +JEALOUSIES +JEALOUSLY +JEALOUSNESS +JEALOUSNESSES +JEALOUSY +JEAN +JEANED +JEANS +JEBEL +JEBELS +JEE +JEED +JEEING +JEEP +JEEPED +JEEPERS +JEEPING +JEEPNEY +JEEPNEYS +JEEPS +JEER +JEERED +JEERER +JEERERS +JEERING +JEERINGLY +JEERS +JEES +JEEZ +JEFE +JEFES +JEHAD +JEHADS +JEHU +JEHUS +JEJUNA +JEJUNAL +JEJUNE +JEJUNELY +JEJUNENESS +JEJUNENESSES +JEJUNITIES +JEJUNITY +JEJUNUM +JELL +JELLABA +JELLABAS +JELLED +JELLIED +JELLIES +JELLIFIED +JELLIFIES +JELLIFY +JELLIFYING +JELLING +JELLO +JELLOS +JELLS +JELLY +JELLYBEAN +JELLYBEANS +JELLYFISH +JELLYFISHES +JELLYING +JELLYLIKE +JELLYROLL +JELLYROLLS +JELUTONG +JELUTONGS +JEMADAR +JEMADARS +JEMIDAR +JEMIDARS +JEMMIED +JEMMIES +JEMMY +JEMMYING +JENNET +JENNETS +JENNIES +JENNY +JEON +JEOPARD +JEOPARDED +JEOPARDIES +JEOPARDING +JEOPARDISE +JEOPARDISED +JEOPARDISES +JEOPARDISING +JEOPARDIZE +JEOPARDIZED +JEOPARDIZES +JEOPARDIZING +JEOPARDS +JEOPARDY +JEQUIRITIES +JEQUIRITY +JERBOA +JERBOAS +JEREED +JEREEDS +JEREMIAD +JEREMIADS +JERID +JERIDS +JERK +JERKED +JERKER +JERKERS +JERKIER +JERKIES +JERKIEST +JERKILY +JERKIN +JERKINESS +JERKINESSES +JERKING +JERKINGLY +JERKINS +JERKS +JERKWATER +JERKWATERS +JERKY +JEROBOAM +JEROBOAMS +JERREED +JERREEDS +JERRICAN +JERRICANS +JERRID +JERRIDS +JERRIES +JERRY +JERRYCAN +JERRYCANS +JERSEY +JERSEYED +JERSEYS +JESS +JESSAMINE +JESSAMINES +JESSANT +JESSE +JESSED +JESSES +JESSING +JEST +JESTED +JESTER +JESTERS +JESTFUL +JESTING +JESTINGLY +JESTINGS +JESTS +JESUIT +JESUITIC +JESUITICAL +JESUITICALLY +JESUITISM +JESUITISMS +JESUITRIES +JESUITRY +JESUITS +JET +JETBEAD +JETBEADS +JETE +JETES +JETFOIL +JETFOILS +JETLAG +JETLAGS +JETLIKE +JETLINER +JETLINERS +JETON +JETONS +JETPORT +JETPORTS +JETS +JETSAM +JETSAMS +JETSOM +JETSOMS +JETSTREAM +JETSTREAMS +JETTED +JETTIED +JETTIER +JETTIES +JETTIEST +JETTINESS +JETTINESSES +JETTING +JETTISON +JETTISONABLE +JETTISONED +JETTISONING +JETTISONS +JETTON +JETTONS +JETTY +JETTYING +JETWAY +JETWAYS +JEU +JEUX +JEW +JEWED +JEWEL +JEWELED +JEWELER +JEWELERS +JEWELFISH +JEWELFISHES +JEWELING +JEWELLED +JEWELLER +JEWELLERIES +JEWELLERS +JEWELLERY +JEWELLIKE +JEWELLING +JEWELRIES +JEWELRY +JEWELS +JEWELWEED +JEWELWEEDS +JEWFISH +JEWFISHES +JEWING +JEWS +JEZAIL +JEZAILS +JEZEBEL +JEZEBELS +JIAO +JIB +JIBB +JIBBED +JIBBER +JIBBERS +JIBBING +JIBBOOM +JIBBOOMS +JIBBS +JIBE +JIBED +JIBER +JIBERS +JIBES +JIBING +JIBINGLY +JIBS +JICAMA +JICAMAS +JIFF +JIFFIES +JIFFS +JIFFY +JIG +JIGABOO +JIGABOOS +JIGGED +JIGGER +JIGGERED +JIGGERING +JIGGERS +JIGGIER +JIGGIEST +JIGGING +JIGGISH +JIGGLE +JIGGLED +JIGGLES +JIGGLIER +JIGGLIEST +JIGGLING +JIGGLY +JIGGY +JIGLIKE +JIGS +JIGSAW +JIGSAWED +JIGSAWING +JIGSAWN +JIGSAWS +JIHAD +JIHADS +JILL +JILLION +JILLIONS +JILLS +JILT +JILTED +JILTER +JILTERS +JILTING +JILTS +JIMINY +JIMJAMS +JIMMIE +JIMMIED +JIMMIES +JIMMINY +JIMMY +JIMMYING +JIMP +JIMPER +JIMPEST +JIMPLY +JIMPY +JIMSONWEED +JIMSONWEEDS +JIN +JINGAL +JINGALL +JINGALLS +JINGALS +JINGKO +JINGKOES +JINGLE +JINGLED +JINGLER +JINGLERS +JINGLES +JINGLIER +JINGLIEST +JINGLING +JINGLY +JINGO +JINGOES +JINGOISH +JINGOISM +JINGOISMS +JINGOIST +JINGOISTIC +JINGOISTICALLY +JINGOISTS +JINK +JINKED +JINKER +JINKERS +JINKING +JINKS +JINN +JINNEE +JINNI +JINNIS +JINNS +JINRICKSHA +JINRICKSHAS +JINRIKISHA +JINRIKISHAS +JINRIKSHA +JINRIKSHAS +JINS +JINX +JINXED +JINXES +JINXING +JIPIJAPA +JIPIJAPAS +JISM +JISMS +JITNEY +JITNEYS +JITTER +JITTERBUG +JITTERBUGGED +JITTERBUGGING +JITTERBUGS +JITTERED +JITTERIER +JITTERIEST +JITTERINESS +JITTERINESSES +JITTERING +JITTERS +JITTERY +JIUJITSU +JIUJITSUS +JIUJUTSU +JIUJUTSUS +JIVE +JIVEASS +JIVED +JIVER +JIVERS +JIVES +JIVEY +JIVIER +JIVIEST +JIVING +JIVY +JNANA +JNANAS +JO +JOANNES +JOB +JOBBED +JOBBER +JOBBERIES +JOBBERS +JOBBERY +JOBBING +JOBHOLDER +JOBHOLDERS +JOBLESS +JOBLESSNESS +JOBLESSNESSES +JOBNAME +JOBNAMES +JOBS +JOCK +JOCKETTE +JOCKETTES +JOCKEY +JOCKEYED +JOCKEYING +JOCKEYISH +JOCKEYS +JOCKO +JOCKOS +JOCKS +JOCKSTRAP +JOCKSTRAPS +JOCOSE +JOCOSELY +JOCOSENESS +JOCOSENESSES +JOCOSITIES +JOCOSITY +JOCULAR +JOCULARITIES +JOCULARITY +JOCULARLY +JOCUND +JOCUNDITIES +JOCUNDITY +JOCUNDLY +JODHPUR +JODHPURS +JOE +JOES +JOEY +JOEYS +JOG +JOGGED +JOGGER +JOGGERS +JOGGING +JOGGINGS +JOGGLE +JOGGLED +JOGGLER +JOGGLERS +JOGGLES +JOGGLING +JOGS +JOHANNES +JOHN +JOHNBOAT +JOHNBOATS +JOHNNIE +JOHNNIES +JOHNNY +JOHNNYCAKE +JOHNNYCAKES +JOHNS +JOHNSON +JOHNSONGRASS +JOHNSONGRASSES +JOHNSONS +JOIN +JOINABLE +JOINDER +JOINDERS +JOINED +JOINER +JOINERIES +JOINERS +JOINERY +JOINING +JOININGS +JOINS +JOINT +JOINTED +JOINTEDLY +JOINTEDNESS +JOINTEDNESSES +JOINTER +JOINTERS +JOINTING +JOINTLESS +JOINTLY +JOINTRESS +JOINTRESSES +JOINTS +JOINTURE +JOINTURED +JOINTURES +JOINTURING +JOINTWEED +JOINTWEEDS +JOINTWORM +JOINTWORMS +JOIST +JOISTED +JOISTING +JOISTS +JOJOBA +JOJOBAS +JOKE +JOKED +JOKER +JOKERS +JOKES +JOKESTER +JOKESTERS +JOKEY +JOKIER +JOKIEST +JOKILY +JOKINESS +JOKINESSES +JOKING +JOKINGLY +JOKY +JOLE +JOLES +JOLLIED +JOLLIER +JOLLIERS +JOLLIES +JOLLIEST +JOLLIFICATION +JOLLIFICATIONS +JOLLIFIED +JOLLIFIES +JOLLIFY +JOLLIFYING +JOLLILY +JOLLINESS +JOLLINESSES +JOLLITIES +JOLLITY +JOLLY +JOLLYBOAT +JOLLYBOATS +JOLLYING +JOLT +JOLTED +JOLTER +JOLTERS +JOLTIER +JOLTIEST +JOLTILY +JOLTING +JOLTINGLY +JOLTS +JOLTY +JOMON +JONES +JONESED +JONESES +JONESING +JONGLEUR +JONGLEURS +JONNYCAKE +JONNYCAKES +JONQUIL +JONQUILS +JORAM +JORAMS +JORDAN +JORDANS +JORUM +JORUMS +JOSEPH +JOSEPHS +JOSH +JOSHED +JOSHER +JOSHERS +JOSHES +JOSHING +JOSHINGLY +JOSS +JOSSES +JOSTLE +JOSTLED +JOSTLER +JOSTLERS +JOSTLES +JOSTLING +JOT +JOTA +JOTAS +JOTS +JOTTED +JOTTER +JOTTERS +JOTTING +JOTTINGS +JOTTY +JOUAL +JOUALS +JOUK +JOUKED +JOUKING +JOUKS +JOULE +JOULES +JOUNCE +JOUNCED +JOUNCES +JOUNCIER +JOUNCIEST +JOUNCING +JOUNCY +JOURNAL +JOURNALED +JOURNALESE +JOURNALESES +JOURNALING +JOURNALISM +JOURNALISMS +JOURNALIST +JOURNALISTIC +JOURNALISTS +JOURNALIZE +JOURNALIZED +JOURNALIZER +JOURNALIZERS +JOURNALIZES +JOURNALIZING +JOURNALS +JOURNEY +JOURNEYED +JOURNEYER +JOURNEYERS +JOURNEYING +JOURNEYMAN +JOURNEYMEN +JOURNEYS +JOURNEYWORK +JOURNEYWORKS +JOURNO +JOURNOS +JOUST +JOUSTED +JOUSTER +JOUSTERS +JOUSTING +JOUSTS +JOVIAL +JOVIALITIES +JOVIALITY +JOVIALLY +JOVIALTIES +JOVIALTY +JOW +JOWAR +JOWARS +JOWED +JOWING +JOWL +JOWLED +JOWLIER +JOWLIEST +JOWLINESS +JOWLINESSES +JOWLS +JOWLY +JOWS +JOY +JOYANCE +JOYANCES +JOYED +JOYFUL +JOYFULLER +JOYFULLEST +JOYFULLY +JOYFULNESS +JOYFULNESSES +JOYING +JOYLESS +JOYLESSLY +JOYLESSNESS +JOYLESSNESSES +JOYOUS +JOYOUSLY +JOYOUSNESS +JOYOUSNESSES +JOYPOP +JOYPOPPED +JOYPOPPER +JOYPOPPERS +JOYPOPPING +JOYPOPS +JOYRIDDEN +JOYRIDE +JOYRIDER +JOYRIDERS +JOYRIDES +JOYRIDING +JOYRIDINGS +JOYRODE +JOYS +JOYSTICK +JOYSTICKS +JUBA +JUBAS +JUBBAH +JUBBAHS +JUBE +JUBES +JUBHAH +JUBHAHS +JUBILANCE +JUBILANCES +JUBILANT +JUBILANTLY +JUBILARIAN +JUBILARIANS +JUBILATE +JUBILATED +JUBILATES +JUBILATING +JUBILATION +JUBILATIONS +JUBILE +JUBILEE +JUBILEES +JUBILES +JUCO +JUCOS +JUDAS +JUDASES +JUDDER +JUDDERED +JUDDERING +JUDDERS +JUDGE +JUDGED +JUDGEMENT +JUDGEMENTS +JUDGER +JUDGERS +JUDGES +JUDGESHIP +JUDGESHIPS +JUDGING +JUDGMATIC +JUDGMATICAL +JUDGMATICALLY +JUDGMENT +JUDGMENTAL +JUDGMENTALLY +JUDGMENTS +JUDICABLE +JUDICATORIES +JUDICATORY +JUDICATURE +JUDICATURES +JUDICIAL +JUDICIALLY +JUDICIARIES +JUDICIARY +JUDICIOUS +JUDICIOUSLY +JUDICIOUSNESS +JUDICIOUSNESSES +JUDO +JUDOIST +JUDOISTS +JUDOKA +JUDOKAS +JUDOS +JUG +JUGA +JUGAL +JUGATE +JUGFUL +JUGFULS +JUGGED +JUGGERNAUT +JUGGERNAUTS +JUGGING +JUGGLE +JUGGLED +JUGGLER +JUGGLERIES +JUGGLERS +JUGGLERY +JUGGLES +JUGGLING +JUGGLINGS +JUGHEAD +JUGHEADS +JUGS +JUGSFUL +JUGULA +JUGULAR +JUGULARS +JUGULATE +JUGULATED +JUGULATES +JUGULATING +JUGULUM +JUGUM +JUGUMS +JUICE +JUICED +JUICEHEAD +JUICEHEADS +JUICELESS +JUICER +JUICERS +JUICES +JUICIER +JUICIEST +JUICILY +JUICINESS +JUICINESSES +JUICING +JUICY +JUJITSU +JUJITSUS +JUJU +JUJUBE +JUJUBES +JUJUISM +JUJUISMS +JUJUIST +JUJUISTS +JUJUS +JUJUTSU +JUJUTSUS +JUKE +JUKEBOX +JUKEBOXES +JUKED +JUKES +JUKING +JUKU +JUKUS +JULEP +JULEPS +JULIENNE +JULIENNED +JULIENNES +JULIENNING +JUMBAL +JUMBALS +JUMBLE +JUMBLED +JUMBLER +JUMBLERS +JUMBLES +JUMBLING +JUMBO +JUMBOS +JUMBUCK +JUMBUCKS +JUMP +JUMPABLE +JUMPED +JUMPER +JUMPERS +JUMPIER +JUMPIEST +JUMPILY +JUMPINESS +JUMPINESSES +JUMPING +JUMPINGLY +JUMPOFF +JUMPOFFS +JUMPS +JUMPSUIT +JUMPSUITS +JUMPY +JUN +JUNCO +JUNCOES +JUNCOS +JUNCTION +JUNCTIONAL +JUNCTIONS +JUNCTURAL +JUNCTURE +JUNCTURES +JUNGLE +JUNGLED +JUNGLEGYM +JUNGLEGYMS +JUNGLELIKE +JUNGLES +JUNGLIER +JUNGLIEST +JUNGLY +JUNIOR +JUNIORATE +JUNIORATES +JUNIORITIES +JUNIORITY +JUNIORS +JUNIPER +JUNIPERS +JUNK +JUNKED +JUNKER +JUNKERS +JUNKET +JUNKETED +JUNKETEER +JUNKETEERED +JUNKETEERING +JUNKETEERS +JUNKETER +JUNKETERS +JUNKETING +JUNKETS +JUNKIE +JUNKIER +JUNKIES +JUNKIEST +JUNKING +JUNKMAN +JUNKMEN +JUNKS +JUNKY +JUNKYARD +JUNKYARDS +JUNTA +JUNTAS +JUNTO +JUNTOS +JUPE +JUPES +JUPON +JUPONS +JURA +JURAL +JURALLY +JURANT +JURANTS +JURASSIC +JURAT +JURATORY +JURATS +JUREL +JURELS +JURIDIC +JURIDICAL +JURIDICALLY +JURIED +JURIES +JURISCONSULT +JURISCONSULTS +JURISDICTION +JURISDICTIONAL +JURISDICTIONS +JURISPRUDENCE +JURISPRUDENCES +JURISPRUDENT +JURISPRUDENTIAL +JURISPRUDENTS +JURIST +JURISTIC +JURISTICALLY +JURISTS +JUROR +JURORS +JURY +JURYING +JURYLESS +JURYMAN +JURYMEN +JURYWOMAN +JURYWOMEN +JUS +JUSSIVE +JUSSIVES +JUST +JUSTED +JUSTER +JUSTERS +JUSTEST +JUSTICE +JUSTICES +JUSTICIABILITY +JUSTICIABLE +JUSTICIAR +JUSTICIARS +JUSTIFIABILITY +JUSTIFIABLE +JUSTIFIABLY +JUSTIFICATION +JUSTIFICATIONS +JUSTIFICATIVE +JUSTIFICATORY +JUSTIFIED +JUSTIFIER +JUSTIFIERS +JUSTIFIES +JUSTIFY +JUSTIFYING +JUSTING +JUSTLE +JUSTLED +JUSTLES +JUSTLING +JUSTLY +JUSTNESS +JUSTNESSES +JUSTS +JUT +JUTE +JUTELIKE +JUTES +JUTS +JUTTED +JUTTIED +JUTTIES +JUTTING +JUTTINGLY +JUTTY +JUTTYING +JUVENAL +JUVENALS +JUVENESCENCE +JUVENESCENCES +JUVENESCENT +JUVENILE +JUVENILES +JUVENILIA +JUVENILITIES +JUVENILITY +JUXTAPOSE +JUXTAPOSED +JUXTAPOSES +JUXTAPOSING +JUXTAPOSITION +JUXTAPOSITIONAL +JUXTAPOSITIONS +KA +KAAS +KAB +KABAB +KABABS +KABAKA +KABAKAS +KABALA +KABALAS +KABALISM +KABALISMS +KABALIST +KABALISTS +KABAR +KABARS +KABAYA +KABAYAS +KABBALA +KABBALAH +KABBALAHS +KABBALAS +KABBALISM +KABBALISMS +KABBALIST +KABBALISTS +KABELJOU +KABELJOUS +KABIKI +KABIKIS +KABOB +KABOBS +KABS +KABUKI +KABUKIS +KACHINA +KACHINAS +KADDISH +KADDISHES +KADDISHIM +KADI +KADIS +KAE +KAES +KAF +KAFFEEKLATSCH +KAFFEEKLATSCHES +KAFFIR +KAFFIRS +KAFFIYAH +KAFFIYAHS +KAFFIYEH +KAFFIYEHS +KAFIR +KAFIRS +KAFS +KAFTAN +KAFTANS +KAGU +KAGUS +KAHUNA +KAHUNAS +KAIAK +KAIAKS +KAIF +KAIFS +KAIL +KAILS +KAILYARD +KAILYARDS +KAIN +KAINIT +KAINITE +KAINITES +KAINITS +KAINS +KAIROMONE +KAIROMONES +KAISER +KAISERDOM +KAISERDOMS +KAISERIN +KAISERINS +KAISERISM +KAISERISMS +KAISERS +KAJEPUT +KAJEPUTS +KAKA +KAKAPO +KAKAPOS +KAKAS +KAKEMONO +KAKEMONOS +KAKI +KAKIEMON +KAKIEMONS +KAKIS +KALAM +KALAMATA +KALAMATAS +KALAMS +KALANCHOE +KALANCHOES +KALE +KALEIDOSCOPE +KALEIDOSCOPES +KALEIDOSCOPIC +KALENDS +KALES +KALEWIFE +KALEWIVES +KALEYARD +KALEYARDS +KALIAN +KALIANS +KALIF +KALIFATE +KALIFATES +KALIFS +KALIMBA +KALIMBAS +KALIPH +KALIPHATE +KALIPHATES +KALIPHS +KALIUM +KALIUMS +KALLIDIN +KALLIDINS +KALLIKREIN +KALLIKREINS +KALMIA +KALMIAS +KALONG +KALONGS +KALPA +KALPAC +KALPACS +KALPAK +KALPAKS +KALPAS +KALSOMINE +KALSOMINED +KALSOMINES +KALSOMINING +KALYPTRA +KALYPTRAS +KAMAAINA +KAMAAINAS +KAMACITE +KAMACITES +KAMALA +KAMALAS +KAME +KAMES +KAMI +KAMIK +KAMIKAZE +KAMIKAZES +KAMIKS +KAMPONG +KAMPONGS +KAMSEEN +KAMSEENS +KAMSIN +KAMSINS +KANA +KANAKA +KANAKAS +KANAMYCIN +KANAMYCINS +KANAS +KANBAN +KANBANS +KANE +KANES +KANGAROO +KANGAROOS +KANJI +KANJIS +KANTAR +KANTARS +KANTELE +KANTELES +KANZU +KANZUS +KAOLIANG +KAOLIANGS +KAOLIN +KAOLINE +KAOLINES +KAOLINIC +KAOLINITE +KAOLINITES +KAOLINITIC +KAOLINS +KAON +KAONIC +KAONS +KAPA +KAPAS +KAPELLMEISTER +KAPELLMEISTERS +KAPH +KAPHS +KAPOK +KAPOKS +KAPPA +KAPPAS +KAPUT +KAPUTT +KARABINER +KARABINERS +KARAKUL +KARAKULS +KARAOKE +KARAOKES +KARAT +KARATE +KARATEIST +KARATEISTS +KARATES +KARATS +KARMA +KARMAS +KARMIC +KARN +KARNS +KAROO +KAROOS +KAROSS +KAROSSES +KARROO +KARROOS +KARST +KARSTIC +KARSTS +KART +KARTING +KARTINGS +KARTS +KARYOGAMIES +KARYOGAMY +KARYOKINESES +KARYOKINESIS +KARYOKINETIC +KARYOLOGIC +KARYOLOGICAL +KARYOLOGIES +KARYOLOGY +KARYOLYMPH +KARYOLYMPHS +KARYOSOME +KARYOSOMES +KARYOTIN +KARYOTINS +KARYOTYPE +KARYOTYPED +KARYOTYPES +KARYOTYPIC +KARYOTYPICALLY +KARYOTYPING +KAS +KASBAH +KASBAHS +KASHA +KASHAS +KASHER +KASHERED +KASHERING +KASHERS +KASHMIR +KASHMIRS +KASHRUT +KASHRUTH +KASHRUTHS +KASHRUTS +KAT +KATA +KATABATIC +KATAKANA +KATAKANAS +KATAS +KATCHINA +KATCHINAS +KATCINA +KATCINAS +KATHARSES +KATHARSIS +KATHODAL +KATHODE +KATHODES +KATHODIC +KATION +KATIONS +KATS +KATSURA +KATSURAS +KATYDID +KATYDIDS +KATZENJAMMER +KATZENJAMMERS +KAURI +KAURIES +KAURIS +KAURY +KAVA +KAVAKAVA +KAVAKAVAS +KAVAS +KAVASS +KAVASSES +KAY +KAYAK +KAYAKED +KAYAKER +KAYAKERS +KAYAKING +KAYAKINGS +KAYAKS +KAYLES +KAYO +KAYOED +KAYOES +KAYOING +KAYOS +KAYS +KAZACHKI +KAZACHOK +KAZATSKI +KAZATSKIES +KAZATSKY +KAZILLION +KAZILLIONS +KAZOO +KAZOOS +KBAR +KBARS +KEA +KEAS +KEBAB +KEBABS +KEBAR +KEBARS +KEBBIE +KEBBIES +KEBBOCK +KEBBOCKS +KEBBUCK +KEBBUCKS +KEBLAH +KEBLAHS +KEBOB +KEBOBS +KECK +KECKED +KECKING +KECKLE +KECKLED +KECKLES +KECKLING +KECKS +KEDDAH +KEDDAHS +KEDGE +KEDGED +KEDGEREE +KEDGEREES +KEDGES +KEDGING +KEEF +KEEFS +KEEK +KEEKED +KEEKING +KEEKS +KEEL +KEELAGE +KEELAGES +KEELBOAT +KEELBOATS +KEELED +KEELHALE +KEELHALED +KEELHALES +KEELHALING +KEELHAUL +KEELHAULED +KEELHAULING +KEELHAULS +KEELING +KEELLESS +KEELS +KEELSON +KEELSONS +KEEN +KEENED +KEENER +KEENERS +KEENEST +KEENING +KEENLY +KEENNESS +KEENNESSES +KEENS +KEEP +KEEPABLE +KEEPER +KEEPERS +KEEPING +KEEPINGS +KEEPS +KEEPSAKE +KEEPSAKES +KEESHOND +KEESHONDEN +KEESHONDS +KEESTER +KEESTERS +KEET +KEETS +KEEVE +KEEVES +KEF +KEFFIYAH +KEFFIYAHS +KEFFIYEH +KEFFIYEHS +KEFIR +KEFIRS +KEFS +KEG +KEGELER +KEGELERS +KEGGED +KEGGER +KEGGERS +KEGGING +KEGLER +KEGLERS +KEGLING +KEGLINGS +KEGS +KEIR +KEIRETSU +KEIRETSUS +KEIRS +KEISTER +KEISTERS +KEITLOA +KEITLOAS +KELEP +KELEPS +KELIM +KELIMS +KELLIES +KELLY +KELOID +KELOIDAL +KELOIDS +KELP +KELPED +KELPIE +KELPIES +KELPING +KELPS +KELPY +KELSON +KELSONS +KELT +KELTER +KELTERS +KELTS +KELVIN +KELVINS +KEMP +KEMPS +KEMPT +KEN +KENAF +KENAFS +KENCH +KENCHES +KENDO +KENDOS +KENNED +KENNEL +KENNELED +KENNELING +KENNELLED +KENNELLING +KENNELS +KENNING +KENNINGS +KENO +KENOS +KENOSIS +KENOSISES +KENOTIC +KENOTRON +KENOTRONS +KENS +KENSPECKLE +KENT +KENTE +KENTES +KENTLEDGE +KENTLEDGES +KEP +KEPHALIN +KEPHALINS +KEPI +KEPIS +KEPPED +KEPPEN +KEPPING +KEPS +KEPT +KERAMIC +KERAMICS +KERATIN +KERATINIZATION +KERATINIZATIONS +KERATINIZE +KERATINIZED +KERATINIZES +KERATINIZING +KERATINOPHILIC +KERATINOUS +KERATINS +KERATITIDES +KERATITIS +KERATITISES +KERATOID +KERATOMA +KERATOMAS +KERATOMATA +KERATOPLASTIES +KERATOPLASTY +KERATOSE +KERATOSES +KERATOSIC +KERATOSIS +KERATOTIC +KERB +KERBED +KERBING +KERBS +KERCHIEF +KERCHIEFED +KERCHIEFS +KERCHIEVES +KERCHOO +KERF +KERFED +KERFING +KERFLOOEY +KERFS +KERFUFFLE +KERFUFFLES +KERMES +KERMESS +KERMESSE +KERMESSES +KERMIS +KERMISES +KERN +KERNE +KERNED +KERNEL +KERNELED +KERNELING +KERNELLED +KERNELLING +KERNELLY +KERNELS +KERNES +KERNING +KERNITE +KERNITES +KERNS +KEROGEN +KEROGENS +KEROSENE +KEROSENES +KEROSINE +KEROSINES +KERPLUNK +KERPLUNKED +KERPLUNKING +KERPLUNKS +KERRIA +KERRIAS +KERRIES +KERRY +KERSEY +KERSEYMERE +KERSEYMERES +KERSEYS +KERYGMA +KERYGMAS +KERYGMATA +KERYGMATIC +KESTREL +KESTRELS +KETAMINE +KETAMINES +KETCH +KETCHES +KETCHUP +KETCHUPS +KETENE +KETENES +KETO +KETOGENESES +KETOGENESIS +KETOGENIC +KETOL +KETOLS +KETONE +KETONEMIA +KETONEMIAS +KETONES +KETONIC +KETONURIA +KETONURIAS +KETOSE +KETOSES +KETOSIS +KETOSTEROID +KETOSTEROIDS +KETOTIC +KETTLE +KETTLEDRUM +KETTLEDRUMS +KETTLES +KEVEL +KEVELS +KEVIL +KEVILS +KEWPIE +KEWPIES +KEX +KEXES +KEY +KEYBOARD +KEYBOARDED +KEYBOARDER +KEYBOARDERS +KEYBOARDING +KEYBOARDIST +KEYBOARDISTS +KEYBOARDS +KEYBUTTON +KEYBUTTONS +KEYCARD +KEYCARDS +KEYED +KEYHOLE +KEYHOLES +KEYING +KEYLESS +KEYNOTE +KEYNOTED +KEYNOTER +KEYNOTERS +KEYNOTES +KEYNOTING +KEYPAD +KEYPADS +KEYPAL +KEYPALS +KEYPUNCH +KEYPUNCHED +KEYPUNCHER +KEYPUNCHERS +KEYPUNCHES +KEYPUNCHING +KEYS +KEYSET +KEYSETS +KEYSTER +KEYSTERS +KEYSTONE +KEYSTONES +KEYSTROKE +KEYSTROKED +KEYSTROKES +KEYSTROKING +KEYWAY +KEYWAYS +KEYWORD +KEYWORDS +KHADDAR +KHADDARS +KHADI +KHADIS +KHAF +KHAFS +KHAKI +KHAKILIKE +KHAKIS +KHALIF +KHALIFA +KHALIFAS +KHALIFATE +KHALIFATES +KHALIFS +KHAMSEEN +KHAMSEENS +KHAMSIN +KHAMSINS +KHAN +KHANATE +KHANATES +KHANS +KHAPH +KHAPHS +KHAT +KHATS +KHAZEN +KHAZENIM +KHAZENS +KHEDA +KHEDAH +KHEDAHS +KHEDAS +KHEDIVAL +KHEDIVE +KHEDIVES +KHEDIVIAL +KHET +KHETH +KHETHS +KHETS +KHI +KHIRKAH +KHIRKAHS +KHIS +KHOUM +KHOUMS +KI +KIANG +KIANGS +KIAUGH +KIAUGHS +KIBBE +KIBBEH +KIBBEHS +KIBBES +KIBBI +KIBBIS +KIBBITZ +KIBBITZED +KIBBITZER +KIBBITZERS +KIBBITZES +KIBBITZING +KIBBLE +KIBBLED +KIBBLES +KIBBLING +KIBBUTZ +KIBBUTZIM +KIBBUTZNIK +KIBBUTZNIKS +KIBE +KIBEI +KIBEIS +KIBES +KIBITZ +KIBITZED +KIBITZER +KIBITZERS +KIBITZES +KIBITZING +KIBLA +KIBLAH +KIBLAHS +KIBLAS +KIBOSH +KIBOSHED +KIBOSHES +KIBOSHING +KICK +KICKABLE +KICKBACK +KICKBACKS +KICKBALL +KICKBALLS +KICKBOARD +KICKBOARDS +KICKBOX +KICKBOXED +KICKBOXER +KICKBOXERS +KICKBOXES +KICKBOXING +KICKBOXINGS +KICKED +KICKER +KICKERS +KICKIER +KICKIEST +KICKING +KICKOFF +KICKOFFS +KICKS +KICKSHAW +KICKSHAWS +KICKSTAND +KICKSTANDS +KICKSTART +KICKSTARTED +KICKSTARTING +KICKSTARTS +KICKUP +KICKUPS +KICKY +KID +KIDDED +KIDDER +KIDDERS +KIDDIE +KIDDIES +KIDDING +KIDDINGLY +KIDDISH +KIDDO +KIDDOES +KIDDOS +KIDDUSH +KIDDUSHES +KIDDY +KIDLIKE +KIDNAP +KIDNAPED +KIDNAPEE +KIDNAPEES +KIDNAPER +KIDNAPERS +KIDNAPING +KIDNAPPED +KIDNAPPEE +KIDNAPPEES +KIDNAPPER +KIDNAPPERS +KIDNAPPING +KIDNAPS +KIDNEY +KIDNEYS +KIDS +KIDSKIN +KIDSKINS +KIDVID +KIDVIDS +KIEF +KIEFS +KIELBASA +KIELBASAS +KIELBASI +KIELBASY +KIER +KIERS +KIESELGUHR +KIESELGUHRS +KIESELGUR +KIESELGURS +KIESERITE +KIESERITES +KIESTER +KIESTERS +KIF +KIFS +KIKE +KIKES +KILDERKIN +KILDERKINS +KILIM +KILIMS +KILL +KILLABLE +KILLDEE +KILLDEER +KILLDEERS +KILLDEES +KILLED +KILLER +KILLERS +KILLICK +KILLICKS +KILLIE +KILLIES +KILLIFISH +KILLIFISHES +KILLING +KILLINGLY +KILLINGS +KILLJOY +KILLJOYS +KILLOCK +KILLOCKS +KILLS +KILN +KILNED +KILNING +KILNS +KILO +KILOBAR +KILOBARS +KILOBASE +KILOBASES +KILOBAUD +KILOBAUDS +KILOBIT +KILOBITS +KILOBYTE +KILOBYTES +KILOCALORIE +KILOCALORIES +KILOCURIE +KILOCURIES +KILOCYCLE +KILOCYCLES +KILOGAUSS +KILOGAUSSES +KILOGRAM +KILOGRAMS +KILOHERTZ +KILOHERTZES +KILOJOULE +KILOJOULES +KILOLITER +KILOLITERS +KILOLITRE +KILOLITRES +KILOMETER +KILOMETERS +KILOMETRE +KILOMETRES +KILOMOLE +KILOMOLES +KILOPARSEC +KILOPARSECS +KILOPASCAL +KILOPASCALS +KILORAD +KILORADS +KILOS +KILOTON +KILOTONS +KILOVOLT +KILOVOLTS +KILOWATT +KILOWATTS +KILT +KILTED +KILTER +KILTERS +KILTIE +KILTIES +KILTING +KILTINGS +KILTLIKE +KILTS +KILTY +KIMBERLITE +KIMBERLITES +KIMCHEE +KIMCHEES +KIMCHI +KIMCHIS +KIMONO +KIMONOED +KIMONOS +KIN +KINA +KINARA +KINARAS +KINAS +KINASE +KINASES +KIND +KINDER +KINDERGARTEN +KINDERGARTENER +KINDERGARTENERS +KINDERGARTENS +KINDERGARTNER +KINDERGARTNERS +KINDEST +KINDHEARTED +KINDHEARTEDLY +KINDHEARTEDNESS +KINDLE +KINDLED +KINDLER +KINDLERS +KINDLES +KINDLESS +KINDLESSLY +KINDLIER +KINDLIEST +KINDLINESS +KINDLINESSES +KINDLING +KINDLINGS +KINDLY +KINDNESS +KINDNESSES +KINDRED +KINDREDS +KINDS +KINE +KINEMA +KINEMAS +KINEMATIC +KINEMATICAL +KINEMATICALLY +KINEMATICS +KINES +KINESCOPE +KINESCOPED +KINESCOPES +KINESCOPING +KINESES +KINESIC +KINESICS +KINESIOLOGIES +KINESIOLOGY +KINESIS +KINESTHESES +KINESTHESIA +KINESTHESIAS +KINESTHESIS +KINESTHETIC +KINESTHETICALLY +KINETIC +KINETICALLY +KINETICIST +KINETICISTS +KINETICS +KINETIN +KINETINS +KINETOCHORE +KINETOCHORES +KINETOPLAST +KINETOPLASTS +KINETOSCOPE +KINETOSCOPES +KINETOSOME +KINETOSOMES +KINFOLK +KINFOLKS +KING +KINGBIRD +KINGBIRDS +KINGBOLT +KINGBOLTS +KINGCRAFT +KINGCRAFTS +KINGCUP +KINGCUPS +KINGDOM +KINGDOMS +KINGED +KINGFISH +KINGFISHER +KINGFISHERS +KINGFISHES +KINGHOOD +KINGHOODS +KINGING +KINGLESS +KINGLET +KINGLETS +KINGLIER +KINGLIEST +KINGLIKE +KINGLINESS +KINGLINESSES +KINGLY +KINGMAKER +KINGMAKERS +KINGPIN +KINGPINS +KINGPOST +KINGPOSTS +KINGS +KINGSHIP +KINGSHIPS +KINGSIDE +KINGSIDES +KINGSNAKE +KINGSNAKES +KINGWOOD +KINGWOODS +KININ +KININS +KINK +KINKAJOU +KINKAJOUS +KINKED +KINKIER +KINKIEST +KINKILY +KINKINESS +KINKINESSES +KINKING +KINKS +KINKY +KINLESS +KINNIKINNICK +KINNIKINNICKS +KINO +KINOS +KINS +KINSFOLK +KINSHIP +KINSHIPS +KINSMAN +KINSMEN +KINSWOMAN +KINSWOMEN +KIOSK +KIOSKS +KIP +KIPPED +KIPPEN +KIPPER +KIPPERED +KIPPERER +KIPPERERS +KIPPERING +KIPPERS +KIPPING +KIPS +KIPSKIN +KIPSKINS +KIR +KIRIGAMI +KIRIGAMIS +KIRK +KIRKMAN +KIRKMEN +KIRKS +KIRMESS +KIRMESSES +KIRN +KIRNED +KIRNING +KIRNS +KIRS +KIRSCH +KIRSCHES +KIRTLE +KIRTLED +KIRTLES +KIS +KISHKA +KISHKAS +KISHKE +KISHKES +KISMAT +KISMATS +KISMET +KISMETIC +KISMETS +KISS +KISSABLE +KISSABLY +KISSED +KISSER +KISSERS +KISSES +KISSING +KISSY +KIST +KISTFUL +KISTFULS +KISTS +KIT +KITBAG +KITBAGS +KITCHEN +KITCHENET +KITCHENETS +KITCHENETTE +KITCHENETTES +KITCHENS +KITCHENWARE +KITCHENWARES +KITE +KITED +KITELIKE +KITER +KITERS +KITES +KITH +KITHARA +KITHARAS +KITHE +KITHED +KITHES +KITHING +KITHS +KITING +KITLING +KITLINGS +KITS +KITSCH +KITSCHES +KITSCHIFIED +KITSCHIFIES +KITSCHIFY +KITSCHIFYING +KITSCHY +KITTED +KITTEL +KITTEN +KITTENED +KITTENING +KITTENISH +KITTENISHLY +KITTENISHNESS +KITTENISHNESSES +KITTENS +KITTIES +KITTING +KITTIWAKE +KITTIWAKES +KITTLE +KITTLED +KITTLER +KITTLES +KITTLEST +KITTLING +KITTY +KIVA +KIVAS +KIWI +KIWIFRUIT +KIWIFRUITS +KIWIS +KLATCH +KLATCHES +KLATSCH +KLATSCHES +KLAVERN +KLAVERNS +KLAXON +KLAXONS +KLEAGLE +KLEAGLES +KLEBSIELLA +KLEBSIELLAS +KLEENEX +KLEENEXES +KLEPHT +KLEPHTIC +KLEPHTS +KLEPTO +KLEPTOMANIA +KLEPTOMANIAC +KLEPTOMANIACS +KLEPTOMANIAS +KLEPTOS +KLEZMER +KLEZMERS +KLEZMORIM +KLICK +KLICKS +KLIK +KLIKS +KLISTER +KLISTERS +KLONDIKE +KLONDIKES +KLONG +KLONGS +KLOOF +KLOOFS +KLUDGE +KLUDGED +KLUDGES +KLUDGEY +KLUDGIER +KLUDGIEST +KLUDGING +KLUDGY +KLUGE +KLUGED +KLUGES +KLUGING +KLUTZ +KLUTZES +KLUTZIER +KLUTZIEST +KLUTZINESS +KLUTZINESSES +KLUTZY +KLYSTRON +KLYSTRONS +KNACK +KNACKED +KNACKER +KNACKERED +KNACKERIES +KNACKERS +KNACKERY +KNACKING +KNACKS +KNACKWURST +KNACKWURSTS +KNAP +KNAPPED +KNAPPER +KNAPPERS +KNAPPING +KNAPS +KNAPSACK +KNAPSACKED +KNAPSACKS +KNAPWEED +KNAPWEEDS +KNAR +KNARRED +KNARRY +KNARS +KNAUR +KNAURS +KNAVE +KNAVERIES +KNAVERY +KNAVES +KNAVISH +KNAVISHLY +KNAWE +KNAWEL +KNAWELS +KNAWES +KNEAD +KNEADABLE +KNEADED +KNEADER +KNEADERS +KNEADING +KNEADS +KNEE +KNEECAP +KNEECAPPED +KNEECAPPING +KNEECAPPINGS +KNEECAPS +KNEED +KNEEHOLE +KNEEHOLES +KNEEING +KNEEL +KNEELED +KNEELER +KNEELERS +KNEELING +KNEELS +KNEEPAD +KNEEPADS +KNEEPAN +KNEEPANS +KNEEPIECE +KNEEPIECES +KNEES +KNEESIES +KNEESOCK +KNEESOCKS +KNELL +KNELLED +KNELLING +KNELLS +KNELT +KNESSET +KNESSETS +KNEW +KNICKERBOCKER +KNICKERBOCKERS +KNICKERS +KNICKKNACK +KNICKKNACKS +KNIFE +KNIFED +KNIFELIKE +KNIFEPOINT +KNIFEPOINTS +KNIFER +KNIFERS +KNIFES +KNIFING +KNIGHT +KNIGHTED +KNIGHTHOOD +KNIGHTHOODS +KNIGHTING +KNIGHTLINESS +KNIGHTLINESSES +KNIGHTLY +KNIGHTS +KNISH +KNISHES +KNIT +KNITS +KNITTABLE +KNITTED +KNITTER +KNITTERS +KNITTING +KNITTINGS +KNITWEAR +KNIVES +KNOB +KNOBBED +KNOBBIER +KNOBBIEST +KNOBBLIER +KNOBBLIEST +KNOBBLY +KNOBBY +KNOBKERRIE +KNOBKERRIES +KNOBLIKE +KNOBS +KNOCK +KNOCKABOUT +KNOCKABOUTS +KNOCKDOWN +KNOCKDOWNS +KNOCKED +KNOCKER +KNOCKERS +KNOCKING +KNOCKLESS +KNOCKOFF +KNOCKOFFS +KNOCKOUT +KNOCKOUTS +KNOCKS +KNOCKWURST +KNOCKWURSTS +KNOLL +KNOLLED +KNOLLER +KNOLLERS +KNOLLING +KNOLLS +KNOLLY +KNOP +KNOPPED +KNOPS +KNOSP +KNOSPS +KNOT +KNOTGRASS +KNOTGRASSES +KNOTHOLE +KNOTHOLES +KNOTLESS +KNOTLIKE +KNOTS +KNOTTED +KNOTTER +KNOTTERS +KNOTTIER +KNOTTIEST +KNOTTILY +KNOTTINESS +KNOTTINESSES +KNOTTING +KNOTTINGS +KNOTTY +KNOTWEED +KNOTWEEDS +KNOUT +KNOUTED +KNOUTING +KNOUTS +KNOW +KNOWABLE +KNOWER +KNOWERS +KNOWING +KNOWINGER +KNOWINGEST +KNOWINGLY +KNOWINGNESS +KNOWINGNESSES +KNOWINGS +KNOWLEDGE +KNOWLEDGEABLE +KNOWLEDGEABLY +KNOWLEDGES +KNOWN +KNOWNS +KNOWS +KNUBBIER +KNUBBIEST +KNUBBY +KNUCKLE +KNUCKLEBALL +KNUCKLEBALLER +KNUCKLEBALLERS +KNUCKLEBALLS +KNUCKLEBONE +KNUCKLEBONES +KNUCKLED +KNUCKLEHEAD +KNUCKLEHEADED +KNUCKLEHEADS +KNUCKLER +KNUCKLERS +KNUCKLES +KNUCKLIER +KNUCKLIEST +KNUCKLING +KNUCKLY +KNUR +KNURL +KNURLED +KNURLIER +KNURLIEST +KNURLING +KNURLS +KNURLY +KNURS +KOA +KOALA +KOALAS +KOAN +KOANS +KOAS +KOB +KOBO +KOBOLD +KOBOLDS +KOBOS +KOBS +KOEL +KOELS +KOHL +KOHLRABI +KOHLRABIES +KOHLS +KOI +KOINE +KOINES +KOIS +KOJI +KOJIS +KOKANEE +KOKANEES +KOLA +KOLACKY +KOLAS +KOLBASI +KOLBASIS +KOLBASSI +KOLBASSIS +KOLHOZ +KOLHOZES +KOLHOZY +KOLINSKI +KOLINSKIES +KOLINSKY +KOLKHOS +KOLKHOSES +KOLKHOSY +KOLKHOZ +KOLKHOZES +KOLKHOZNIK +KOLKHOZNIKI +KOLKHOZNIKS +KOLKHOZY +KOLKOZ +KOLKOZES +KOLKOZY +KOLO +KOLOS +KOMATIK +KOMATIKS +KOMBU +KOMBUS +KOMONDOR +KOMONDOROCK +KOMONDOROK +KOMONDORS +KONK +KONKED +KONKING +KONKS +KOODOO +KOODOOS +KOOK +KOOKABURRA +KOOKABURRAS +KOOKIE +KOOKIER +KOOKIEST +KOOKINESS +KOOKINESSES +KOOKS +KOOKY +KOP +KOPECK +KOPECKS +KOPEK +KOPEKS +KOPH +KOPHS +KOPIYKA +KOPIYKAS +KOPJE +KOPJES +KOPPA +KOPPAS +KOPPIE +KOPPIES +KOPS +KOR +KORA +KORAI +KORAS +KORAT +KORATS +KORE +KORMA +KORMAS +KORS +KORUN +KORUNA +KORUNAS +KORUNY +KOS +KOSHER +KOSHERED +KOSHERING +KOSHERS +KOSS +KOTO +KOTOS +KOTOW +KOTOWED +KOTOWER +KOTOWERS +KOTOWING +KOTOWS +KOUMIS +KOUMISES +KOUMISS +KOUMISSES +KOUMYS +KOUMYSES +KOUMYSS +KOUMYSSES +KOUPREY +KOUPREYS +KOUROI +KOUROS +KOUSSO +KOUSSOS +KOWTOW +KOWTOWED +KOWTOWER +KOWTOWERS +KOWTOWING +KOWTOWS +KRAAL +KRAALED +KRAALING +KRAALS +KRAFT +KRAFTS +KRAIT +KRAITS +KRAKEN +KRAKENS +KRATER +KRATERS +KRAUT +KRAUTS +KREEP +KREEPS +KREMLIN +KREMLINOLOGIES +KREMLINOLOGIST +KREMLINOLOGISTS +KREMLINOLOGY +KREMLINS +KREPLACH +KREPLECH +KREUTZER +KREUTZERS +KREUZER +KREUZERS +KREWE +KREWES +KRILL +KRILLS +KRIMMER +KRIMMERS +KRIS +KRISES +KRONA +KRONE +KRONEN +KRONER +KRONOR +KRONUR +KROON +KROONI +KROONS +KRUBI +KRUBIS +KRUBUT +KRUBUTS +KRULLER +KRULLERS +KRUMHORN +KRUMHORNS +KRUMKAKE +KRUMKAKES +KRUMMHOLZ +KRUMMHORN +KRUMMHORNS +KRYOLITE +KRYOLITES +KRYOLITH +KRYOLITHS +KRYPTON +KRYPTONS +KUCHEN +KUCHENS +KUDO +KUDOS +KUDU +KUDUS +KUDZU +KUDZUS +KUE +KUES +KUFI +KUFIS +KUGEL +KUGELS +KUKRI +KUKRIS +KULAK +KULAKI +KULAKS +KULTUR +KULTURS +KUMISS +KUMISSES +KUMMEL +KUMMELS +KUMQUAT +KUMQUATS +KUMYS +KUMYSES +KUNA +KUNDALINI +KUNDALINIS +KUNE +KUNZITE +KUNZITES +KURBASH +KURBASHED +KURBASHES +KURBASHING +KURGAN +KURGANS +KURRAJONG +KURRAJONGS +KURTA +KURTAS +KURTOSES +KURTOSIS +KURTOSISES +KURU +KURUS +KUSSO +KUSSOS +KUVASZ +KUVASZOK +KVAS +KVASES +KVASS +KVASSES +KVELL +KVELLED +KVELLING +KVELLS +KVETCH +KVETCHED +KVETCHER +KVETCHERS +KVETCHES +KVETCHIER +KVETCHIEST +KVETCHING +KVETCHY +KWACHA +KWACHAS +KWANZA +KWANZAS +KWASHIORKOR +KWASHIORKORS +KYACK +KYACKS +KYAK +KYAKS +KYANISE +KYANISED +KYANISES +KYANISING +KYANITE +KYANITES +KYANIZE +KYANIZED +KYANIZES +KYANIZING +KYAR +KYARS +KYAT +KYATS +KYBOSH +KYBOSHED +KYBOSHES +KYBOSHING +KYE +KYES +KYLIKES +KYLIX +KYMOGRAM +KYMOGRAMS +KYMOGRAPH +KYMOGRAPHIC +KYMOGRAPHIES +KYMOGRAPHS +KYMOGRAPHY +KYPHOSES +KYPHOSIS +KYPHOTIC +KYRIE +KYRIES +KYTE +KYTES +KYTHE +KYTHED +KYTHES +KYTHING +LA +LAAGER +LAAGERED +LAAGERING +LAAGERS +LAARI +LAB +LABANOTATION +LABANOTATIONS +LABARA +LABARUM +LABARUMS +LABDANUM +LABDANUMS +LABEL +LABELABLE +LABELED +LABELER +LABELERS +LABELING +LABELLA +LABELLATE +LABELLED +LABELLER +LABELLERS +LABELLING +LABELLOID +LABELLUM +LABELS +LABIA +LABIAL +LABIALITIES +LABIALITY +LABIALIZATION +LABIALIZATIONS +LABIALIZE +LABIALIZED +LABIALIZES +LABIALIZING +LABIALLY +LABIALS +LABIATE +LABIATED +LABIATES +LABILE +LABILITIES +LABILITY +LABIODENTAL +LABIODENTALS +LABIOVELAR +LABIOVELARS +LABIUM +LABOR +LABORATORIES +LABORATORY +LABORED +LABOREDLY +LABORER +LABORERS +LABORING +LABORIOUS +LABORIOUSLY +LABORIOUSNESS +LABORIOUSNESSES +LABORITE +LABORITES +LABORS +LABORSAVING +LABOUR +LABOURED +LABOURER +LABOURERS +LABOURING +LABOURS +LABRA +LABRADOR +LABRADORITE +LABRADORITES +LABRADORS +LABRET +LABRETS +LABROID +LABROIDS +LABRUM +LABRUMS +LABRUSCA +LABS +LABURNUM +LABURNUMS +LABYRINTH +LABYRINTHIAN +LABYRINTHINE +LABYRINTHODONT +LABYRINTHODONTS +LABYRINTHS +LAC +LACCOLITH +LACCOLITHIC +LACCOLITHS +LACE +LACED +LACELESS +LACELIKE +LACER +LACERABLE +LACERATE +LACERATED +LACERATES +LACERATING +LACERATION +LACERATIONS +LACERATIVE +LACERS +LACERTID +LACERTIDS +LACES +LACEWING +LACEWINGS +LACEWOOD +LACEWOODS +LACEWORK +LACEWORKS +LACEY +LACHES +LACHRYMAL +LACHRYMALS +LACHRYMATOR +LACHRYMATORS +LACHRYMOSE +LACHRYMOSELY +LACHRYMOSITIES +LACHRYMOSITY +LACIER +LACIEST +LACILY +LACINESS +LACINESSES +LACING +LACINGS +LACINIATE +LACINIATION +LACINIATIONS +LACK +LACKADAISICAL +LACKADAISICALLY +LACKADAY +LACKED +LACKER +LACKERED +LACKERING +LACKERS +LACKEY +LACKEYED +LACKEYING +LACKEYS +LACKING +LACKLUSTER +LACKLUSTERS +LACKS +LACONIC +LACONICALLY +LACONISM +LACONISMS +LACQUER +LACQUERED +LACQUERER +LACQUERERS +LACQUERING +LACQUERS +LACQUERWARE +LACQUERWARES +LACQUERWORK +LACQUERWORKS +LACQUEY +LACQUEYED +LACQUEYING +LACQUEYS +LACRIMAL +LACRIMALS +LACRIMATION +LACRIMATIONS +LACRIMATOR +LACRIMATORS +LACROSSE +LACROSSES +LACS +LACTALBUMIN +LACTALBUMINS +LACTAM +LACTAMS +LACTARY +LACTASE +LACTASES +LACTATE +LACTATED +LACTATES +LACTATING +LACTATION +LACTATIONAL +LACTATIONS +LACTEAL +LACTEALLY +LACTEALS +LACTEAN +LACTEOUS +LACTIC +LACTIFEROUS +LACTOBACILLI +LACTOBACILLUS +LACTOGENIC +LACTOGLOBULIN +LACTOGLOBULINS +LACTONE +LACTONES +LACTONIC +LACTOSE +LACTOSES +LACUNA +LACUNAE +LACUNAL +LACUNAR +LACUNARIA +LACUNARS +LACUNARY +LACUNAS +LACUNATE +LACUNE +LACUNES +LACUNOSE +LACUSTRINE +LACY +LAD +LADANUM +LADANUMS +LADDER +LADDERED +LADDERING +LADDERLIKE +LADDERS +LADDIE +LADDIES +LADDISH +LADE +LADED +LADEN +LADENED +LADENING +LADENS +LADER +LADERS +LADES +LADHOOD +LADHOODS +LADIES +LADING +LADINGS +LADINO +LADINOS +LADLE +LADLED +LADLEFUL +LADLEFULS +LADLER +LADLERS +LADLES +LADLING +LADRON +LADRONE +LADRONES +LADRONS +LADS +LADY +LADYBIRD +LADYBIRDS +LADYBUG +LADYBUGS +LADYFINGER +LADYFINGERS +LADYFISH +LADYFISHES +LADYHOOD +LADYHOODS +LADYISH +LADYKIN +LADYKINS +LADYLIKE +LADYLOVE +LADYLOVES +LADYPALM +LADYPALMS +LADYSHIP +LADYSHIPS +LAETRILE +LAETRILES +LAEVO +LAG +LAGAN +LAGANS +LAGEND +LAGENDS +LAGER +LAGERED +LAGERING +LAGERS +LAGGARD +LAGGARDLY +LAGGARDNESS +LAGGARDNESSES +LAGGARDS +LAGGED +LAGGER +LAGGERS +LAGGING +LAGGINGS +LAGNAPPE +LAGNAPPES +LAGNIAPPE +LAGNIAPPES +LAGOMORPH +LAGOMORPHS +LAGOON +LAGOONAL +LAGOONS +LAGS +LAGUNA +LAGUNAS +LAGUNE +LAGUNES +LAHAR +LAHARS +LAIC +LAICAL +LAICALLY +LAICH +LAICHS +LAICISE +LAICISED +LAICISES +LAICISING +LAICISM +LAICISMS +LAICIZATION +LAICIZATIONS +LAICIZE +LAICIZED +LAICIZES +LAICIZING +LAICS +LAID +LAIGH +LAIGHS +LAIN +LAIR +LAIRD +LAIRDLY +LAIRDS +LAIRDSHIP +LAIRDSHIPS +LAIRED +LAIRING +LAIRS +LAITANCE +LAITANCES +LAITH +LAITHLY +LAITIES +LAITY +LAKE +LAKEBED +LAKEBEDS +LAKED +LAKEFRONT +LAKEFRONTS +LAKELIKE +LAKEPORT +LAKEPORTS +LAKER +LAKERS +LAKES +LAKESHORE +LAKESHORES +LAKESIDE +LAKESIDES +LAKH +LAKHS +LAKIER +LAKIEST +LAKING +LAKINGS +LAKY +LALIQUE +LALIQUES +LALL +LALLAN +LALLAND +LALLANDS +LALLANS +LALLATION +LALLATIONS +LALLED +LALLING +LALLS +LALLYGAG +LALLYGAGGED +LALLYGAGGING +LALLYGAGS +LAM +LAMA +LAMAS +LAMASERIES +LAMASERY +LAMB +LAMBADA +LAMBADAS +LAMBAST +LAMBASTE +LAMBASTED +LAMBASTES +LAMBASTING +LAMBASTS +LAMBDA +LAMBDAS +LAMBDOID +LAMBED +LAMBENCIES +LAMBENCY +LAMBENT +LAMBENTLY +LAMBER +LAMBERS +LAMBERT +LAMBERTS +LAMBIE +LAMBIER +LAMBIES +LAMBIEST +LAMBING +LAMBKILL +LAMBKILLS +LAMBKIN +LAMBKINS +LAMBLIKE +LAMBREQUIN +LAMBREQUINS +LAMBRUSCO +LAMBRUSCOS +LAMBS +LAMBSKIN +LAMBSKINS +LAMBY +LAME +LAMEBRAIN +LAMEBRAINED +LAMEBRAINS +LAMED +LAMEDH +LAMEDHS +LAMEDS +LAMELLA +LAMELLAE +LAMELLAR +LAMELLAS +LAMELLATE +LAMELLATELY +LAMELLIBRANCH +LAMELLIBRANCHS +LAMELLICORN +LAMELLICORNS +LAMELLIFORM +LAMELLOSE +LAMELY +LAMENESS +LAMENESSES +LAMENT +LAMENTABLE +LAMENTABLENESS +LAMENTABLY +LAMENTATION +LAMENTATIONS +LAMENTED +LAMENTEDLY +LAMENTER +LAMENTERS +LAMENTING +LAMENTS +LAMER +LAMES +LAMEST +LAMIA +LAMIAE +LAMIAS +LAMINA +LAMINABLE +LAMINAE +LAMINAL +LAMINALS +LAMINAR +LAMINARIA +LAMINARIAN +LAMINARIANS +LAMINARIAS +LAMINARIN +LAMINARINS +LAMINARY +LAMINAS +LAMINATE +LAMINATED +LAMINATES +LAMINATING +LAMINATION +LAMINATIONS +LAMINATOR +LAMINATORS +LAMING +LAMININ +LAMININS +LAMINITIS +LAMINITISES +LAMINOSE +LAMINOUS +LAMISTER +LAMISTERS +LAMMED +LAMMERGEIER +LAMMERGEIERS +LAMMERGEYER +LAMMERGEYERS +LAMMING +LAMP +LAMPAD +LAMPADS +LAMPAS +LAMPASES +LAMPBLACK +LAMPBLACKS +LAMPED +LAMPERS +LAMPERSES +LAMPING +LAMPION +LAMPIONS +LAMPLIGHT +LAMPLIGHTER +LAMPLIGHTERS +LAMPLIGHTS +LAMPOON +LAMPOONED +LAMPOONER +LAMPOONERIES +LAMPOONERS +LAMPOONERY +LAMPOONING +LAMPOONS +LAMPPOST +LAMPPOSTS +LAMPREY +LAMPREYS +LAMPS +LAMPSHADE +LAMPSHADES +LAMPSHELL +LAMPSHELLS +LAMPYRID +LAMPYRIDS +LAMS +LAMSTER +LAMSTERS +LANAI +LANAIS +LANATE +LANATED +LANCE +LANCED +LANCELET +LANCELETS +LANCEOLATE +LANCER +LANCERS +LANCES +LANCET +LANCETED +LANCETS +LANCEWOOD +LANCEWOODS +LANCIERS +LANCIFORM +LANCINATE +LANCINATED +LANCINATES +LANCINATING +LANCING +LAND +LANDAU +LANDAULET +LANDAULETS +LANDAUS +LANDED +LANDER +LANDERS +LANDFALL +LANDFALLS +LANDFILL +LANDFILLED +LANDFILLING +LANDFILLS +LANDFORM +LANDFORMS +LANDGRAB +LANDGRABS +LANDGRAVE +LANDGRAVES +LANDHOLDER +LANDHOLDERS +LANDHOLDING +LANDHOLDINGS +LANDING +LANDINGS +LANDLADIES +LANDLADY +LANDLER +LANDLERS +LANDLESS +LANDLESSNESS +LANDLESSNESSES +LANDLINE +LANDLINES +LANDLOCKED +LANDLOPER +LANDLOPERS +LANDLORD +LANDLORDISM +LANDLORDISMS +LANDLORDS +LANDLUBBER +LANDLUBBERLY +LANDLUBBERS +LANDLUBBING +LANDMAN +LANDMARK +LANDMARKED +LANDMARKING +LANDMARKS +LANDMASS +LANDMASSES +LANDMEN +LANDOWNER +LANDOWNERS +LANDOWNERSHIP +LANDOWNERSHIPS +LANDOWNING +LANDOWNINGS +LANDS +LANDSCAPE +LANDSCAPED +LANDSCAPER +LANDSCAPERS +LANDSCAPES +LANDSCAPING +LANDSCAPIST +LANDSCAPISTS +LANDSIDE +LANDSIDES +LANDSKIP +LANDSKIPS +LANDSLEIT +LANDSLID +LANDSLIDDEN +LANDSLIDE +LANDSLIDES +LANDSLIDING +LANDSLIP +LANDSLIPS +LANDSMAN +LANDSMEN +LANDWARD +LANDWARDS +LANE +LANELY +LANES +LANEWAY +LANEWAYS +LANG +LANGBEINITE +LANGBEINITES +LANGLAUF +LANGLAUFER +LANGLAUFERS +LANGLAUFS +LANGLEY +LANGLEYS +LANGOSTINO +LANGOSTINOS +LANGOUSTE +LANGOUSTES +LANGOUSTINE +LANGOUSTINES +LANGRAGE +LANGRAGES +LANGREL +LANGRELS +LANGRIDGE +LANGRIDGES +LANGSHAN +LANGSHANS +LANGSYNE +LANGSYNES +LANGUAGE +LANGUAGES +LANGUE +LANGUES +LANGUET +LANGUETS +LANGUETTE +LANGUETTES +LANGUID +LANGUIDLY +LANGUIDNESS +LANGUIDNESSES +LANGUISH +LANGUISHED +LANGUISHER +LANGUISHERS +LANGUISHES +LANGUISHING +LANGUISHINGLY +LANGUISHMENT +LANGUISHMENTS +LANGUOR +LANGUOROUS +LANGUOROUSLY +LANGUORS +LANGUR +LANGURS +LANIARD +LANIARDS +LANIARIES +LANIARY +LANITAL +LANITALS +LANK +LANKER +LANKEST +LANKIER +LANKIEST +LANKILY +LANKINESS +LANKINESSES +LANKLY +LANKNESS +LANKNESSES +LANKY +LANNER +LANNERET +LANNERETS +LANNERS +LANOLIN +LANOLINE +LANOLINES +LANOLINS +LANOSE +LANOSITIES +LANOSITY +LANTANA +LANTANAS +LANTERN +LANTERNS +LANTHANIDE +LANTHANIDES +LANTHANON +LANTHANONS +LANTHANUM +LANTHANUMS +LANTHORN +LANTHORNS +LANUGINOUS +LANUGO +LANUGOS +LANYARD +LANYARDS +LAOGAI +LAOGAIS +LAP +LAPAROSCOPE +LAPAROSCOPES +LAPAROSCOPIC +LAPAROSCOPIES +LAPAROSCOPIST +LAPAROSCOPISTS +LAPAROSCOPY +LAPAROTOMIES +LAPAROTOMY +LAPBOARD +LAPBOARDS +LAPDOG +LAPDOGS +LAPEL +LAPELED +LAPELLED +LAPELS +LAPFUL +LAPFULS +LAPIDARIAN +LAPIDARIES +LAPIDARY +LAPIDATE +LAPIDATED +LAPIDATES +LAPIDATING +LAPIDES +LAPIDIFIED +LAPIDIFIES +LAPIDIFY +LAPIDIFYING +LAPIDIST +LAPIDISTS +LAPILLI +LAPILLUS +LAPIN +LAPINS +LAPIS +LAPISES +LAPPED +LAPPER +LAPPERED +LAPPERING +LAPPERS +LAPPET +LAPPETED +LAPPETS +LAPPING +LAPS +LAPSABLE +LAPSE +LAPSED +LAPSER +LAPSERS +LAPSES +LAPSIBLE +LAPSING +LAPSTRAKE +LAPSTREAK +LAPSUS +LAPTOP +LAPTOPS +LAPWING +LAPWINGS +LAR +LARBOARD +LARBOARDS +LARCENER +LARCENERS +LARCENIES +LARCENIST +LARCENISTS +LARCENOUS +LARCENOUSLY +LARCENY +LARCH +LARCHEN +LARCHES +LARD +LARDED +LARDER +LARDERS +LARDIER +LARDIEST +LARDING +LARDLIKE +LARDON +LARDONS +LARDOON +LARDOONS +LARDS +LARDY +LAREE +LAREES +LARES +LARGANDO +LARGE +LARGEHEARTED +LARGELY +LARGEMOUTH +LARGEMOUTHS +LARGENESS +LARGENESSES +LARGER +LARGES +LARGESS +LARGESSE +LARGESSES +LARGEST +LARGHETTO +LARGHETTOS +LARGISH +LARGO +LARGOS +LARI +LARIAT +LARIATED +LARIATING +LARIATS +LARINE +LARIS +LARK +LARKED +LARKER +LARKERS +LARKIER +LARKIEST +LARKINESS +LARKINESSES +LARKING +LARKISH +LARKS +LARKSOME +LARKSPUR +LARKSPURS +LARKY +LARRIGAN +LARRIGANS +LARRIKIN +LARRIKINS +LARRUP +LARRUPED +LARRUPER +LARRUPERS +LARRUPING +LARRUPS +LARS +LARUM +LARUMS +LARVA +LARVAE +LARVAL +LARVAS +LARVICIDAL +LARVICIDE +LARVICIDES +LARYNGAL +LARYNGALS +LARYNGEAL +LARYNGEALS +LARYNGECTOMEE +LARYNGECTOMEES +LARYNGECTOMIES +LARYNGECTOMIZED +LARYNGECTOMY +LARYNGES +LARYNGITIC +LARYNGITIS +LARYNGITISES +LARYNGOLOGIES +LARYNGOLOGY +LARYNGOSCOPE +LARYNGOSCOPES +LARYNGOSCOPIES +LARYNGOSCOPY +LARYNX +LARYNXES +LAS +LASAGNA +LASAGNAS +LASAGNE +LASAGNES +LASCAR +LASCARS +LASCIVIOUS +LASCIVIOUSLY +LASCIVIOUSNESS +LASE +LASED +LASER +LASERDISC +LASERDISCS +LASERDISK +LASERDISKS +LASERS +LASES +LASH +LASHED +LASHER +LASHERS +LASHES +LASHING +LASHINGS +LASHINS +LASHKAR +LASHKARS +LASING +LASS +LASSES +LASSI +LASSIE +LASSIES +LASSIS +LASSITUDE +LASSITUDES +LASSO +LASSOED +LASSOER +LASSOERS +LASSOES +LASSOING +LASSOS +LAST +LASTBORN +LASTBORNS +LASTED +LASTER +LASTERS +LASTING +LASTINGLY +LASTINGNESS +LASTINGNESSES +LASTINGS +LASTLY +LASTS +LAT +LATAKIA +LATAKIAS +LATCH +LATCHED +LATCHES +LATCHET +LATCHETS +LATCHING +LATCHKEY +LATCHKEYS +LATCHSTRING +LATCHSTRINGS +LATE +LATECOMER +LATECOMERS +LATED +LATEEN +LATEENER +LATEENERS +LATEENS +LATELY +LATEN +LATENCIES +LATENCY +LATENED +LATENESS +LATENESSES +LATENING +LATENS +LATENSIFICATION +LATENT +LATENTLY +LATENTS +LATER +LATERAD +LATERAL +LATERALED +LATERALING +LATERALIZATION +LATERALIZATIONS +LATERALIZE +LATERALIZED +LATERALIZES +LATERALIZING +LATERALLED +LATERALLING +LATERALLY +LATERALS +LATERBORN +LATERBORNS +LATERITE +LATERITES +LATERITIC +LATERIZATION +LATERIZATIONS +LATERIZE +LATERIZED +LATERIZES +LATERIZING +LATEST +LATESTS +LATEWOOD +LATEWOODS +LATEX +LATEXES +LATH +LATHE +LATHED +LATHER +LATHERED +LATHERER +LATHERERS +LATHERING +LATHERS +LATHERY +LATHES +LATHI +LATHIER +LATHIEST +LATHING +LATHINGS +LATHIS +LATHS +LATHWORK +LATHWORKS +LATHY +LATHYRISM +LATHYRISMS +LATHYRITIC +LATI +LATICES +LATICIFER +LATICIFERS +LATIFUNDIA +LATIFUNDIO +LATIFUNDIOS +LATIFUNDIUM +LATIGO +LATIGOES +LATIGOS +LATILLA +LATILLAS +LATIMERIA +LATIMERIAS +LATINA +LATINAS +LATINITIES +LATINITY +LATINIZATION +LATINIZATIONS +LATINIZE +LATINIZED +LATINIZES +LATINIZING +LATINO +LATINOS +LATISH +LATITUDE +LATITUDES +LATITUDINAL +LATITUDINALLY +LATITUDINARIAN +LATITUDINARIANS +LATKE +LATKES +LATOSOL +LATOSOLIC +LATOSOLS +LATRIA +LATRIAS +LATRINE +LATRINES +LATS +LATTE +LATTEN +LATTENS +LATTER +LATTERLY +LATTES +LATTICE +LATTICED +LATTICES +LATTICEWORK +LATTICEWORKS +LATTICING +LATTICINGS +LATTIN +LATTINS +LATU +LAUAN +LAUANS +LAUD +LAUDABLE +LAUDABLENESS +LAUDABLENESSES +LAUDABLY +LAUDANUM +LAUDANUMS +LAUDATION +LAUDATIONS +LAUDATIVE +LAUDATOR +LAUDATORS +LAUDATORY +LAUDED +LAUDER +LAUDERS +LAUDING +LAUDS +LAUGH +LAUGHABLE +LAUGHABLENESS +LAUGHABLENESSES +LAUGHABLY +LAUGHED +LAUGHER +LAUGHERS +LAUGHING +LAUGHINGLY +LAUGHINGS +LAUGHINGSTOCK +LAUGHINGSTOCKS +LAUGHLINE +LAUGHLINES +LAUGHS +LAUGHTER +LAUGHTERS +LAUNCE +LAUNCES +LAUNCH +LAUNCHED +LAUNCHER +LAUNCHERS +LAUNCHES +LAUNCHING +LAUNCHPAD +LAUNCHPADS +LAUNDER +LAUNDERED +LAUNDERER +LAUNDERERS +LAUNDERETTE +LAUNDERETTES +LAUNDERING +LAUNDERS +LAUNDRESS +LAUNDRESSES +LAUNDRETTE +LAUNDRETTES +LAUNDRIES +LAUNDRY +LAUNDRYMAN +LAUNDRYMEN +LAURA +LAURAE +LAURAS +LAUREATE +LAUREATED +LAUREATES +LAUREATESHIP +LAUREATESHIPS +LAUREATING +LAUREATION +LAUREATIONS +LAUREL +LAURELED +LAURELING +LAURELLED +LAURELLING +LAURELS +LAUWINE +LAUWINES +LAV +LAVA +LAVABO +LAVABOES +LAVABOS +LAVAGE +LAVAGES +LAVALAVA +LAVALAVAS +LAVALIER +LAVALIERE +LAVALIERES +LAVALIERS +LAVALIKE +LAVALLIERE +LAVALLIERES +LAVAS +LAVASH +LAVASHES +LAVATION +LAVATIONS +LAVATORIES +LAVATORY +LAVE +LAVED +LAVEER +LAVEERED +LAVEERING +LAVEERS +LAVENDER +LAVENDERED +LAVENDERING +LAVENDERS +LAVER +LAVEROCK +LAVEROCKS +LAVERS +LAVES +LAVING +LAVISH +LAVISHED +LAVISHER +LAVISHERS +LAVISHES +LAVISHEST +LAVISHING +LAVISHLY +LAVISHNESS +LAVISHNESSES +LAVROCK +LAVROCKS +LAVS +LAW +LAWBOOK +LAWBOOKS +LAWBREAKER +LAWBREAKERS +LAWBREAKING +LAWBREAKINGS +LAWED +LAWFUL +LAWFULLY +LAWFULNESS +LAWFULNESSES +LAWGIVER +LAWGIVERS +LAWGIVING +LAWGIVINGS +LAWINE +LAWINES +LAWING +LAWINGS +LAWLESS +LAWLESSLY +LAWLESSNESS +LAWLESSNESSES +LAWLIKE +LAWMAKER +LAWMAKERS +LAWMAKING +LAWMAKINGS +LAWMAN +LAWMEN +LAWN +LAWNMOWER +LAWNMOWERS +LAWNS +LAWNY +LAWRENCIUM +LAWRENCIUMS +LAWS +LAWSUIT +LAWSUITS +LAWYER +LAWYERED +LAWYERING +LAWYERINGS +LAWYERLIKE +LAWYERLY +LAWYERS +LAX +LAXATION +LAXATIONS +LAXATIVE +LAXATIVES +LAXER +LAXES +LAXEST +LAXITIES +LAXITY +LAXLY +LAXNESS +LAXNESSES +LAY +LAYABOUT +LAYABOUTS +LAYAWAY +LAYAWAYS +LAYED +LAYER +LAYERAGE +LAYERAGES +LAYERED +LAYERING +LAYERINGS +LAYERS +LAYETTE +LAYETTES +LAYIN +LAYING +LAYINS +LAYMAN +LAYMEN +LAYOFF +LAYOFFS +LAYOUT +LAYOUTS +LAYOVER +LAYOVERS +LAYPEOPLE +LAYPERSON +LAYPERSONS +LAYS +LAYUP +LAYUPS +LAYWOMAN +LAYWOMEN +LAZAR +LAZARET +LAZARETS +LAZARETTE +LAZARETTES +LAZARETTO +LAZARETTOS +LAZARS +LAZE +LAZED +LAZES +LAZIED +LAZIER +LAZIES +LAZIEST +LAZILY +LAZINESS +LAZINESSES +LAZING +LAZULI +LAZULIS +LAZULITE +LAZULITES +LAZURITE +LAZURITES +LAZY +LAZYBONES +LAZYING +LAZYISH +LAZZARONE +LAZZARONI +LEA +LEACH +LEACHABILITIES +LEACHABILITY +LEACHABLE +LEACHATE +LEACHATES +LEACHED +LEACHER +LEACHERS +LEACHES +LEACHIER +LEACHIEST +LEACHING +LEACHY +LEAD +LEADED +LEADEN +LEADENED +LEADENING +LEADENLY +LEADENNESS +LEADENNESSES +LEADENS +LEADER +LEADERBOARD +LEADERBOARDS +LEADERLESS +LEADERS +LEADERSHIP +LEADERSHIPS +LEADIER +LEADIEST +LEADING +LEADINGS +LEADLESS +LEADMAN +LEADMEN +LEADOFF +LEADOFFS +LEADPLANT +LEADPLANTS +LEADS +LEADSCREW +LEADSCREWS +LEADSMAN +LEADSMEN +LEADWORK +LEADWORKS +LEADWORT +LEADWORTS +LEADY +LEAF +LEAFAGE +LEAFAGES +LEAFED +LEAFHOPPER +LEAFHOPPERS +LEAFIER +LEAFIEST +LEAFINESS +LEAFINESSES +LEAFING +LEAFLESS +LEAFLET +LEAFLETED +LEAFLETEER +LEAFLETEERS +LEAFLETER +LEAFLETERS +LEAFLETING +LEAFLETS +LEAFLETTED +LEAFLETTING +LEAFLIKE +LEAFS +LEAFSTALK +LEAFSTALKS +LEAFWORM +LEAFWORMS +LEAFY +LEAGUE +LEAGUED +LEAGUER +LEAGUERED +LEAGUERING +LEAGUERS +LEAGUES +LEAGUING +LEAK +LEAKAGE +LEAKAGES +LEAKED +LEAKER +LEAKERS +LEAKIER +LEAKIEST +LEAKILY +LEAKINESS +LEAKINESSES +LEAKING +LEAKLESS +LEAKPROOF +LEAKS +LEAKY +LEAL +LEALLY +LEALTIES +LEALTY +LEAN +LEANED +LEANER +LEANERS +LEANEST +LEANING +LEANINGS +LEANLY +LEANNESS +LEANNESSES +LEANS +LEANT +LEAP +LEAPED +LEAPER +LEAPERS +LEAPFROG +LEAPFROGGED +LEAPFROGGING +LEAPFROGS +LEAPING +LEAPS +LEAPT +LEAR +LEARIER +LEARIEST +LEARN +LEARNABLE +LEARNED +LEARNEDLY +LEARNEDNESS +LEARNEDNESSES +LEARNER +LEARNERS +LEARNING +LEARNINGS +LEARNS +LEARNT +LEARS +LEARY +LEAS +LEASABLE +LEASE +LEASEBACK +LEASEBACKS +LEASED +LEASEHOLD +LEASEHOLDER +LEASEHOLDERS +LEASEHOLDS +LEASER +LEASERS +LEASES +LEASH +LEASHED +LEASHES +LEASHING +LEASING +LEASINGS +LEAST +LEASTS +LEASTWAYS +LEASTWISE +LEATHER +LEATHERBACK +LEATHERBACKS +LEATHERED +LEATHERETTE +LEATHERETTES +LEATHERING +LEATHERLEAF +LEATHERLEAVES +LEATHERLIKE +LEATHERN +LEATHERNECK +LEATHERNECKS +LEATHERS +LEATHERWOOD +LEATHERWOODS +LEATHERY +LEAVE +LEAVED +LEAVEN +LEAVENED +LEAVENING +LEAVENINGS +LEAVENS +LEAVER +LEAVERS +LEAVES +LEAVIER +LEAVIEST +LEAVING +LEAVINGS +LEAVY +LEBEN +LEBENS +LEBENSRAUM +LEBENSRAUMS +LEBKUCHEN +LECH +LECHAYIM +LECHAYIMS +LECHED +LECHER +LECHERED +LECHERIES +LECHERING +LECHEROUS +LECHEROUSLY +LECHEROUSNESS +LECHEROUSNESSES +LECHERS +LECHERY +LECHES +LECHING +LECHWE +LECHWES +LECITHIN +LECITHINASE +LECITHINASES +LECITHINS +LECTERN +LECTERNS +LECTIN +LECTINS +LECTION +LECTIONARIES +LECTIONARY +LECTIONS +LECTOR +LECTORS +LECTOTYPE +LECTOTYPES +LECTURE +LECTURED +LECTURER +LECTURERS +LECTURES +LECTURESHIP +LECTURESHIPS +LECTURING +LECYTHI +LECYTHIS +LECYTHUS +LED +LEDERHOSEN +LEDGE +LEDGER +LEDGERS +LEDGES +LEDGIER +LEDGIEST +LEDGY +LEE +LEEBOARD +LEEBOARDS +LEECH +LEECHED +LEECHES +LEECHING +LEECHLIKE +LEEK +LEEKS +LEER +LEERED +LEERIER +LEERIEST +LEERILY +LEERINESS +LEERINESSES +LEERING +LEERINGLY +LEERS +LEERY +LEES +LEET +LEETS +LEEWARD +LEEWARDLY +LEEWARDS +LEEWAY +LEEWAYS +LEFT +LEFTER +LEFTEST +LEFTIES +LEFTISH +LEFTISM +LEFTISMS +LEFTIST +LEFTISTS +LEFTMOST +LEFTMOSTS +LEFTOVER +LEFTOVERS +LEFTS +LEFTWARD +LEFTWARDS +LEFTWING +LEFTY +LEG +LEGACIES +LEGACY +LEGAL +LEGALESE +LEGALESES +LEGALISE +LEGALISED +LEGALISES +LEGALISING +LEGALISM +LEGALISMS +LEGALIST +LEGALISTIC +LEGALISTICALLY +LEGALISTS +LEGALITIES +LEGALITY +LEGALIZATION +LEGALIZATIONS +LEGALIZE +LEGALIZED +LEGALIZER +LEGALIZERS +LEGALIZES +LEGALIZING +LEGALLY +LEGALS +LEGATE +LEGATED +LEGATEE +LEGATEES +LEGATES +LEGATESHIP +LEGATESHIPS +LEGATINE +LEGATING +LEGATION +LEGATIONS +LEGATO +LEGATOR +LEGATORS +LEGATOS +LEGEND +LEGENDARIES +LEGENDARILY +LEGENDARY +LEGENDIZE +LEGENDIZED +LEGENDIZES +LEGENDIZING +LEGENDRIES +LEGENDRY +LEGENDS +LEGER +LEGERDEMAIN +LEGERDEMAINS +LEGERITIES +LEGERITY +LEGERS +LEGES +LEGGED +LEGGIER +LEGGIERO +LEGGIEST +LEGGIN +LEGGINESS +LEGGINESSES +LEGGING +LEGGINGS +LEGGINS +LEGGY +LEGHORN +LEGHORNS +LEGIBILITIES +LEGIBILITY +LEGIBLE +LEGIBLY +LEGION +LEGIONARIES +LEGIONARY +LEGIONNAIRE +LEGIONNAIRES +LEGIONS +LEGISLATE +LEGISLATED +LEGISLATES +LEGISLATING +LEGISLATION +LEGISLATIONS +LEGISLATIVE +LEGISLATIVELY +LEGISLATIVES +LEGISLATOR +LEGISLATORIAL +LEGISLATORS +LEGISLATORSHIP +LEGISLATORSHIPS +LEGISLATURE +LEGISLATURES +LEGIST +LEGISTS +LEGIT +LEGITIMACIES +LEGITIMACY +LEGITIMATE +LEGITIMATED +LEGITIMATELY +LEGITIMATES +LEGITIMATING +LEGITIMATION +LEGITIMATIONS +LEGITIMATIZE +LEGITIMATIZED +LEGITIMATIZES +LEGITIMATIZING +LEGITIMATOR +LEGITIMATORS +LEGITIMISE +LEGITIMISED +LEGITIMISES +LEGITIMISING +LEGITIMISM +LEGITIMISMS +LEGITIMIST +LEGITIMISTS +LEGITIMIZATION +LEGITIMIZATIONS +LEGITIMIZE +LEGITIMIZED +LEGITIMIZER +LEGITIMIZERS +LEGITIMIZES +LEGITIMIZING +LEGITS +LEGLESS +LEGLIKE +LEGMAN +LEGMEN +LEGONG +LEGONGS +LEGROOM +LEGROOMS +LEGS +LEGUME +LEGUMES +LEGUMIN +LEGUMINOUS +LEGUMINS +LEGWARMER +LEGWARMERS +LEGWORK +LEGWORKS +LEHAYIM +LEHAYIMS +LEHR +LEHRS +LEHUA +LEHUAS +LEI +LEIOMYOMA +LEIOMYOMAS +LEIOMYOMATA +LEIS +LEISHMANIA +LEISHMANIAL +LEISHMANIAS +LEISHMANIASES +LEISHMANIASIS +LEISTER +LEISTERED +LEISTERING +LEISTERS +LEISURE +LEISURED +LEISURELINESS +LEISURELINESSES +LEISURELY +LEISURES +LEITMOTIF +LEITMOTIFS +LEITMOTIV +LEITMOTIVS +LEK +LEKE +LEKKED +LEKKING +LEKS +LEKU +LEKVAR +LEKVARS +LEKYTHI +LEKYTHOI +LEKYTHOS +LEKYTHUS +LEMAN +LEMANS +LEMMA +LEMMAS +LEMMATA +LEMMATIZE +LEMMATIZED +LEMMATIZES +LEMMATIZING +LEMMING +LEMMINGLIKE +LEMMINGS +LEMNISCAL +LEMNISCATE +LEMNISCATES +LEMNISCI +LEMNISCUS +LEMON +LEMONADE +LEMONADES +LEMONGRASS +LEMONGRASSES +LEMONISH +LEMONLIKE +LEMONS +LEMONY +LEMPIRA +LEMPIRAS +LEMUR +LEMURES +LEMURINE +LEMURLIKE +LEMUROID +LEMUROIDS +LEMURS +LEND +LENDABLE +LENDER +LENDERS +LENDING +LENDS +LENES +LENGTH +LENGTHEN +LENGTHENED +LENGTHENER +LENGTHENERS +LENGTHENING +LENGTHENS +LENGTHIER +LENGTHIEST +LENGTHILY +LENGTHINESS +LENGTHINESSES +LENGTHS +LENGTHWAYS +LENGTHWISE +LENGTHY +LENIENCE +LENIENCES +LENIENCIES +LENIENCY +LENIENT +LENIENTLY +LENIS +LENITE +LENITED +LENITES +LENITIES +LENITING +LENITION +LENITIONS +LENITIVE +LENITIVELY +LENITIVES +LENITY +LENO +LENOS +LENS +LENSE +LENSED +LENSES +LENSING +LENSLESS +LENSMAN +LENSMEN +LENT +LENTAMENTE +LENTANDO +LENTEN +LENTIC +LENTICEL +LENTICELS +LENTICULAR +LENTICULE +LENTICULES +LENTIGINES +LENTIGO +LENTIL +LENTILS +LENTISK +LENTISKS +LENTISSIMO +LENTIVIRUS +LENTIVIRUSES +LENTO +LENTOID +LENTOIDS +LENTOS +LEONE +LEONES +LEONINE +LEOPARD +LEOPARDESS +LEOPARDESSES +LEOPARDS +LEOTARD +LEOTARDED +LEOTARDS +LEPER +LEPERS +LEPIDOLITE +LEPIDOLITES +LEPIDOPTERA +LEPIDOPTERAN +LEPIDOPTERANS +LEPIDOPTERIST +LEPIDOPTERISTS +LEPIDOPTEROLOGY +LEPIDOPTEROUS +LEPIDOTE +LEPIDOTES +LEPORID +LEPORIDAE +LEPORIDS +LEPORINE +LEPRECHAUN +LEPRECHAUNISH +LEPRECHAUNS +LEPROMATOUS +LEPROSARIA +LEPROSARIUM +LEPROSARIUMS +LEPROSE +LEPROSIES +LEPROSY +LEPROTIC +LEPROUS +LEPROUSLY +LEPT +LEPTA +LEPTIN +LEPTINS +LEPTOCEPHALI +LEPTOCEPHALUS +LEPTON +LEPTONIC +LEPTONS +LEPTOPHOS +LEPTOPHOSES +LEPTOSOME +LEPTOSOMES +LEPTOSPIRAL +LEPTOSPIRE +LEPTOSPIRES +LEPTOSPIROSES +LEPTOSPIROSIS +LEPTOTENE +LEPTOTENES +LES +LESBIAN +LESBIANISM +LESBIANISMS +LESBIANS +LESBO +LESBOS +LESES +LESION +LESIONED +LESIONING +LESIONS +LESPEDEZA +LESPEDEZAS +LESS +LESSEE +LESSEES +LESSEN +LESSENED +LESSENING +LESSENS +LESSER +LESSON +LESSONED +LESSONING +LESSONS +LESSOR +LESSORS +LEST +LET +LETCH +LETCHED +LETCHES +LETCHING +LETDOWN +LETDOWNS +LETHAL +LETHALITIES +LETHALITY +LETHALLY +LETHALS +LETHARGIC +LETHARGICALLY +LETHARGIES +LETHARGY +LETHE +LETHEAN +LETHES +LETS +LETTED +LETTER +LETTERBOX +LETTERBOXED +LETTERBOXES +LETTERBOXING +LETTERBOXINGS +LETTERED +LETTERER +LETTERERS +LETTERFORM +LETTERFORMS +LETTERHEAD +LETTERHEADS +LETTERING +LETTERINGS +LETTERMAN +LETTERMEN +LETTERPRESS +LETTERPRESSES +LETTERS +LETTERSPACING +LETTERSPACINGS +LETTING +LETTUCE +LETTUCES +LETUP +LETUPS +LEU +LEUCEMIA +LEUCEMIAS +LEUCEMIC +LEUCIN +LEUCINE +LEUCINES +LEUCINS +LEUCITE +LEUCITES +LEUCITIC +LEUCOCIDIN +LEUCOCIDINS +LEUCOCYTE +LEUCOCYTES +LEUCOMA +LEUCOMAS +LEUCOPLAST +LEUCOPLASTS +LEUD +LEUDES +LEUDS +LEUKAEMIA +LEUKAEMIAS +LEUKAEMOGENESES +LEUKAEMOGENESIS +LEUKEMIA +LEUKEMIAS +LEUKEMIC +LEUKEMICS +LEUKEMOGENESES +LEUKEMOGENESIS +LEUKEMOGENIC +LEUKEMOID +LEUKOCYTE +LEUKOCYTES +LEUKOCYTIC +LEUKOCYTOSES +LEUKOCYTOSIS +LEUKODYSTROPHY +LEUKOMA +LEUKOMAS +LEUKON +LEUKONS +LEUKOPENIA +LEUKOPENIAS +LEUKOPENIC +LEUKOPLAKIA +LEUKOPLAKIAS +LEUKOPLAKIC +LEUKOPOIESES +LEUKOPOIESIS +LEUKOPOIETIC +LEUKORRHEA +LEUKORRHEAL +LEUKORRHEAS +LEUKOSES +LEUKOSIS +LEUKOTIC +LEUKOTOMIES +LEUKOTOMY +LEUKOTRIENE +LEUKOTRIENES +LEV +LEVA +LEVANT +LEVANTED +LEVANTER +LEVANTERS +LEVANTINE +LEVANTINES +LEVANTING +LEVANTS +LEVATOR +LEVATORES +LEVATORS +LEVEE +LEVEED +LEVEEING +LEVEES +LEVEL +LEVELED +LEVELER +LEVELERS +LEVELHEADED +LEVELHEADEDNESS +LEVELING +LEVELLED +LEVELLER +LEVELLERS +LEVELLING +LEVELLY +LEVELNESS +LEVELNESSES +LEVELS +LEVER +LEVERAGE +LEVERAGED +LEVERAGES +LEVERAGING +LEVERED +LEVERET +LEVERETS +LEVERING +LEVERS +LEVIABLE +LEVIATHAN +LEVIATHANS +LEVIED +LEVIER +LEVIERS +LEVIES +LEVIGATE +LEVIGATED +LEVIGATES +LEVIGATING +LEVIGATION +LEVIGATIONS +LEVIN +LEVINS +LEVIRATE +LEVIRATES +LEVIRATIC +LEVIS +LEVITATE +LEVITATED +LEVITATES +LEVITATING +LEVITATION +LEVITATIONAL +LEVITATIONS +LEVITATOR +LEVITATORS +LEVITIES +LEVITY +LEVO +LEVODOPA +LEVODOPAS +LEVOGYRE +LEVOROTARY +LEVOROTATORY +LEVULIN +LEVULINS +LEVULOSE +LEVULOSES +LEVY +LEVYING +LEWD +LEWDER +LEWDEST +LEWDLY +LEWDNESS +LEWDNESSES +LEWIS +LEWISES +LEWISITE +LEWISITES +LEWISSON +LEWISSONS +LEX +LEXEME +LEXEMES +LEXEMIC +LEXES +LEXICA +LEXICAL +LEXICALISATION +LEXICALISATIONS +LEXICALITIES +LEXICALITY +LEXICALIZATION +LEXICALIZATIONS +LEXICALIZE +LEXICALIZED +LEXICALIZES +LEXICALIZING +LEXICALLY +LEXICOGRAPHER +LEXICOGRAPHERS +LEXICOGRAPHIC +LEXICOGRAPHICAL +LEXICOGRAPHIES +LEXICOGRAPHY +LEXICOLOGIES +LEXICOLOGIST +LEXICOLOGISTS +LEXICOLOGY +LEXICON +LEXICONS +LEXIS +LEY +LEYS +LEZ +LEZZES +LEZZIE +LEZZIES +LEZZY +LI +LIABILITIES +LIABILITY +LIABLE +LIAISE +LIAISED +LIAISES +LIAISING +LIAISON +LIAISONS +LIANA +LIANAS +LIANE +LIANES +LIANG +LIANGS +LIANOID +LIAR +LIARD +LIARDS +LIARS +LIB +LIBATION +LIBATIONARY +LIBATIONS +LIBBER +LIBBERS +LIBECCHIO +LIBECCHIOS +LIBECCIO +LIBECCIOS +LIBEL +LIBELANT +LIBELANTS +LIBELED +LIBELEE +LIBELEES +LIBELER +LIBELERS +LIBELING +LIBELIST +LIBELISTS +LIBELLANT +LIBELLANTS +LIBELLED +LIBELLEE +LIBELLEES +LIBELLER +LIBELLERS +LIBELLING +LIBELLOUS +LIBELOUS +LIBELS +LIBER +LIBERAL +LIBERALISE +LIBERALISED +LIBERALISES +LIBERALISING +LIBERALISM +LIBERALISMS +LIBERALIST +LIBERALISTIC +LIBERALISTS +LIBERALITIES +LIBERALITY +LIBERALIZATION +LIBERALIZATIONS +LIBERALIZE +LIBERALIZED +LIBERALIZER +LIBERALIZERS +LIBERALIZES +LIBERALIZING +LIBERALLY +LIBERALNESS +LIBERALNESSES +LIBERALS +LIBERATE +LIBERATED +LIBERATES +LIBERATING +LIBERATION +LIBERATIONIST +LIBERATIONISTS +LIBERATIONS +LIBERATOR +LIBERATORS +LIBERS +LIBERTARIAN +LIBERTARIANISM +LIBERTARIANISMS +LIBERTARIANS +LIBERTIES +LIBERTINAGE +LIBERTINAGES +LIBERTINE +LIBERTINES +LIBERTINISM +LIBERTINISMS +LIBERTY +LIBIDINAL +LIBIDINALLY +LIBIDINOUS +LIBIDINOUSLY +LIBIDINOUSNESS +LIBIDO +LIBIDOS +LIBLAB +LIBLABS +LIBRA +LIBRAE +LIBRARIAN +LIBRARIANS +LIBRARIANSHIP +LIBRARIANSHIPS +LIBRARIES +LIBRARY +LIBRAS +LIBRATE +LIBRATED +LIBRATES +LIBRATING +LIBRATION +LIBRATIONAL +LIBRATIONS +LIBRATORY +LIBRETTI +LIBRETTIST +LIBRETTISTS +LIBRETTO +LIBRETTOS +LIBRI +LIBRIFORM +LIBS +LICE +LICENCE +LICENCED +LICENCEE +LICENCEES +LICENCER +LICENCERS +LICENCES +LICENCING +LICENSABLE +LICENSE +LICENSED +LICENSEE +LICENSEES +LICENSER +LICENSERS +LICENSES +LICENSING +LICENSOR +LICENSORS +LICENSURE +LICENSURES +LICENTE +LICENTIATE +LICENTIATES +LICENTIOUS +LICENTIOUSLY +LICENTIOUSNESS +LICH +LICHEE +LICHEES +LICHEN +LICHENED +LICHENIN +LICHENING +LICHENINS +LICHENOLOGICAL +LICHENOLOGIES +LICHENOLOGIST +LICHENOLOGISTS +LICHENOLOGY +LICHENOSE +LICHENOUS +LICHENS +LICHES +LICHI +LICHIS +LICHT +LICHTED +LICHTING +LICHTLY +LICHTS +LICIT +LICITLY +LICITNESS +LICITNESSES +LICK +LICKED +LICKER +LICKERISH +LICKERISHLY +LICKERISHNESS +LICKERISHNESSES +LICKERS +LICKING +LICKINGS +LICKS +LICKSPIT +LICKSPITS +LICKSPITTLE +LICKSPITTLES +LICORICE +LICORICES +LICTOR +LICTORIAN +LICTORS +LID +LIDAR +LIDARS +LIDDED +LIDDING +LIDLESS +LIDO +LIDOCAINE +LIDOCAINES +LIDOS +LIDS +LIE +LIEBFRAUMILCH +LIEBFRAUMILCHS +LIED +LIEDER +LIEF +LIEFER +LIEFEST +LIEFLY +LIEGE +LIEGEMAN +LIEGEMEN +LIEGES +LIEN +LIENABLE +LIENAL +LIENS +LIENTERIES +LIENTERY +LIER +LIERNE +LIERNES +LIERS +LIES +LIEU +LIEUS +LIEUTENANCIES +LIEUTENANCY +LIEUTENANT +LIEUTENANTS +LIEVE +LIEVER +LIEVEST +LIFE +LIFEBLOOD +LIFEBLOODS +LIFEBOAT +LIFEBOATS +LIFECARE +LIFECARES +LIFEFUL +LIFEGUARD +LIFEGUARDED +LIFEGUARDING +LIFEGUARDS +LIFELESS +LIFELESSLY +LIFELESSNESS +LIFELESSNESSES +LIFELIKE +LIFELIKENESS +LIFELIKENESSES +LIFELINE +LIFELINES +LIFELONG +LIFEMANSHIP +LIFEMANSHIPS +LIFER +LIFERS +LIFESAVER +LIFESAVERS +LIFESAVING +LIFESAVINGS +LIFESPAN +LIFESPANS +LIFESTYLE +LIFESTYLES +LIFETIME +LIFETIMES +LIFEWAY +LIFEWAYS +LIFEWORK +LIFEWORKS +LIFEWORLD +LIFEWORLDS +LIFT +LIFTABLE +LIFTED +LIFTER +LIFTERS +LIFTGATE +LIFTGATES +LIFTING +LIFTMAN +LIFTMEN +LIFTOFF +LIFTOFFS +LIFTS +LIGAMENT +LIGAMENTOUS +LIGAMENTS +LIGAN +LIGAND +LIGANDS +LIGANS +LIGASE +LIGASES +LIGATE +LIGATED +LIGATES +LIGATING +LIGATION +LIGATIONS +LIGATIVE +LIGATURE +LIGATURED +LIGATURES +LIGATURING +LIGER +LIGERS +LIGHT +LIGHTBULB +LIGHTBULBS +LIGHTED +LIGHTEN +LIGHTENED +LIGHTENER +LIGHTENERS +LIGHTENING +LIGHTENS +LIGHTER +LIGHTERAGE +LIGHTERAGES +LIGHTERED +LIGHTERING +LIGHTERS +LIGHTEST +LIGHTFACE +LIGHTFACED +LIGHTFACES +LIGHTFAST +LIGHTFASTNESS +LIGHTFASTNESSES +LIGHTFUL +LIGHTHEARTED +LIGHTHEARTEDLY +LIGHTHOUSE +LIGHTHOUSES +LIGHTING +LIGHTINGS +LIGHTISH +LIGHTLESS +LIGHTLY +LIGHTNESS +LIGHTNESSES +LIGHTNING +LIGHTNINGED +LIGHTNINGS +LIGHTPLANE +LIGHTPLANES +LIGHTPROOF +LIGHTS +LIGHTSHIP +LIGHTSHIPS +LIGHTSOME +LIGHTSOMELY +LIGHTSOMENESS +LIGHTSOMENESSES +LIGHTTIGHT +LIGHTWAVE +LIGHTWEIGHT +LIGHTWEIGHTS +LIGHTWOOD +LIGHTWOODS +LIGNALOES +LIGNAN +LIGNANS +LIGNEOUS +LIGNIFICATION +LIGNIFICATIONS +LIGNIFIED +LIGNIFIES +LIGNIFY +LIGNIFYING +LIGNIN +LIGNINS +LIGNITE +LIGNITES +LIGNITIC +LIGNOCELLULOSE +LIGNOCELLULOSES +LIGNOCELLULOSIC +LIGNOSULFONATE +LIGNOSULFONATES +LIGROIN +LIGROINE +LIGROINES +LIGROINS +LIGULA +LIGULAE +LIGULAR +LIGULAS +LIGULATE +LIGULATED +LIGULE +LIGULES +LIGULOID +LIGURE +LIGURES +LIKABILITIES +LIKABILITY +LIKABLE +LIKABLENESS +LIKABLENESSES +LIKE +LIKEABLE +LIKED +LIKELIER +LIKELIEST +LIKELIHOOD +LIKELIHOODS +LIKELY +LIKEN +LIKENED +LIKENESS +LIKENESSES +LIKENING +LIKENS +LIKER +LIKERS +LIKES +LIKEST +LIKEWISE +LIKING +LIKINGS +LIKUTA +LILAC +LILACS +LILANGENI +LILIED +LILIES +LILLIPUT +LILLIPUTIAN +LILLIPUTIANS +LILLIPUTS +LILO +LILOS +LILT +LILTED +LILTING +LILTINGLY +LILTINGNESS +LILTINGNESSES +LILTS +LILY +LILYLIKE +LIMA +LIMACINE +LIMACON +LIMACONS +LIMAN +LIMANS +LIMAS +LIMB +LIMBA +LIMBAS +LIMBATE +LIMBECK +LIMBECKS +LIMBED +LIMBER +LIMBERED +LIMBERER +LIMBEREST +LIMBERING +LIMBERLY +LIMBERNESS +LIMBERNESSES +LIMBERS +LIMBI +LIMBIC +LIMBIER +LIMBIEST +LIMBING +LIMBLESS +LIMBO +LIMBOS +LIMBS +LIMBUS +LIMBUSES +LIMBY +LIME +LIMEADE +LIMEADES +LIMED +LIMEKILN +LIMEKILNS +LIMELESS +LIMELIGHT +LIMELIGHTED +LIMELIGHTING +LIMELIGHTS +LIMEN +LIMENS +LIMERICK +LIMERICKS +LIMES +LIMESTONE +LIMESTONES +LIMEWATER +LIMEWATERS +LIMEY +LIMEYS +LIMIER +LIMIEST +LIMINA +LIMINAL +LIMINESS +LIMINESSES +LIMING +LIMIT +LIMITABLE +LIMITARY +LIMITATION +LIMITATIONAL +LIMITATIONS +LIMITATIVE +LIMITED +LIMITEDLY +LIMITEDNESS +LIMITEDNESSES +LIMITEDS +LIMITER +LIMITERS +LIMITES +LIMITING +LIMITINGLY +LIMITLESS +LIMITLESSLY +LIMITLESSNESS +LIMITLESSNESSES +LIMITROPHE +LIMITS +LIMMER +LIMMERS +LIMN +LIMNED +LIMNER +LIMNERS +LIMNETIC +LIMNIC +LIMNING +LIMNOLOGIC +LIMNOLOGICAL +LIMNOLOGIES +LIMNOLOGIST +LIMNOLOGISTS +LIMNOLOGY +LIMNS +LIMO +LIMONENE +LIMONENES +LIMONITE +LIMONITES +LIMONITIC +LIMOS +LIMOUSINE +LIMOUSINES +LIMP +LIMPA +LIMPAS +LIMPED +LIMPER +LIMPERS +LIMPEST +LIMPET +LIMPETS +LIMPID +LIMPIDITIES +LIMPIDITY +LIMPIDLY +LIMPIDNESS +LIMPIDNESSES +LIMPING +LIMPINGLY +LIMPKIN +LIMPKINS +LIMPLY +LIMPNESS +LIMPNESSES +LIMPS +LIMPSEY +LIMPSIER +LIMPSIEST +LIMPSY +LIMULI +LIMULOID +LIMULOIDS +LIMULUS +LIMY +LIN +LINABLE +LINAC +LINACS +LINAGE +LINAGES +LINALOL +LINALOLS +LINALOOL +LINALOOLS +LINCHPIN +LINCHPINS +LINCOMYCIN +LINCOMYCINS +LINDANE +LINDANES +LINDEN +LINDENS +LINDIES +LINDY +LINE +LINEABLE +LINEAGE +LINEAGES +LINEAL +LINEALITIES +LINEALITY +LINEALLY +LINEAMENT +LINEAMENTAL +LINEAMENTS +LINEAR +LINEARISE +LINEARISED +LINEARISES +LINEARISING +LINEARITIES +LINEARITY +LINEARIZATION +LINEARIZATIONS +LINEARIZE +LINEARIZED +LINEARIZES +LINEARIZING +LINEARLY +LINEATE +LINEATED +LINEATION +LINEATIONS +LINEBACKER +LINEBACKERS +LINEBACKING +LINEBACKINGS +LINEBRED +LINEBREEDING +LINEBREEDINGS +LINECASTER +LINECASTERS +LINECASTING +LINECASTINGS +LINECUT +LINECUTS +LINED +LINELESS +LINELIKE +LINEMAN +LINEMEN +LINEN +LINENS +LINENY +LINEOLATE +LINER +LINERBOARD +LINERBOARDS +LINERLESS +LINERS +LINES +LINESMAN +LINESMEN +LINEUP +LINEUPS +LINEY +LING +LINGA +LINGAM +LINGAMS +LINGAS +LINGBERRIES +LINGBERRY +LINGCOD +LINGCODS +LINGER +LINGERED +LINGERER +LINGERERS +LINGERIE +LINGERIES +LINGERING +LINGERINGLY +LINGERS +LINGIER +LINGIEST +LINGO +LINGOES +LINGONBERRIES +LINGONBERRY +LINGS +LINGUA +LINGUAE +LINGUAL +LINGUALLY +LINGUALS +LINGUICA +LINGUICAS +LINGUINE +LINGUINES +LINGUINI +LINGUINIS +LINGUISA +LINGUISAS +LINGUIST +LINGUISTIC +LINGUISTICAL +LINGUISTICALLY +LINGUISTICIAN +LINGUISTICIANS +LINGUISTICS +LINGUISTS +LINGULA +LINGULAE +LINGULAR +LINGULATE +LINGY +LINIER +LINIEST +LINIMENT +LINIMENTS +LININ +LINING +LININGS +LININS +LINK +LINKABLE +LINKAGE +LINKAGES +LINKBOY +LINKBOYS +LINKED +LINKER +LINKERS +LINKING +LINKMAN +LINKMEN +LINKS +LINKSLAND +LINKSLANDS +LINKSMAN +LINKSMEN +LINKUP +LINKUPS +LINKWORK +LINKWORKS +LINKY +LINN +LINNET +LINNETS +LINNS +LINO +LINOCUT +LINOCUTS +LINOLEATE +LINOLEATES +LINOLEUM +LINOLEUMS +LINOS +LINOTYPE +LINOTYPED +LINOTYPER +LINOTYPERS +LINOTYPES +LINOTYPING +LINS +LINSANG +LINSANGS +LINSEED +LINSEEDS +LINSEY +LINSEYS +LINSTOCK +LINSTOCKS +LINT +LINTED +LINTEL +LINTELS +LINTER +LINTERS +LINTIER +LINTIEST +LINTING +LINTLESS +LINTOL +LINTOLS +LINTS +LINTWHITE +LINTWHITES +LINTY +LINUM +LINUMS +LINURON +LINURONS +LINY +LION +LIONESS +LIONESSES +LIONFISH +LIONFISHES +LIONHEARTED +LIONISE +LIONISED +LIONISER +LIONISERS +LIONISES +LIONISING +LIONIZATION +LIONIZATIONS +LIONIZE +LIONIZED +LIONIZER +LIONIZERS +LIONIZES +LIONIZING +LIONLIKE +LIONS +LIP +LIPA +LIPASE +LIPASES +LIPE +LIPECTOMIES +LIPECTOMY +LIPID +LIPIDE +LIPIDES +LIPIDIC +LIPIDS +LIPIN +LIPINS +LIPLESS +LIPLIKE +LIPOCYTE +LIPOCYTES +LIPOGENESES +LIPOGENESIS +LIPOID +LIPOIDAL +LIPOIDS +LIPOLITIC +LIPOLYSES +LIPOLYSIS +LIPOLYTIC +LIPOMA +LIPOMAS +LIPOMATA +LIPOMATOUS +LIPOPHILIC +LIPOPROTEIN +LIPOPROTEINS +LIPOSOMAL +LIPOSOME +LIPOSOMES +LIPOSUCTION +LIPOSUCTIONS +LIPOTROPIC +LIPOTROPIES +LIPOTROPIN +LIPOTROPINS +LIPOTROPY +LIPPED +LIPPEN +LIPPENED +LIPPENING +LIPPENS +LIPPER +LIPPERED +LIPPERING +LIPPERS +LIPPIER +LIPPIEST +LIPPINESS +LIPPINESSES +LIPPING +LIPPINGS +LIPPY +LIPREAD +LIPREADER +LIPREADERS +LIPREADING +LIPREADINGS +LIPREADS +LIPS +LIPSTICK +LIPSTICKED +LIPSTICKS +LIQUATE +LIQUATED +LIQUATES +LIQUATING +LIQUATION +LIQUATIONS +LIQUEFACTION +LIQUEFACTIONS +LIQUEFIED +LIQUEFIER +LIQUEFIERS +LIQUEFIES +LIQUEFY +LIQUEFYING +LIQUESCENT +LIQUEUR +LIQUEURS +LIQUID +LIQUIDAMBAR +LIQUIDAMBARS +LIQUIDATE +LIQUIDATED +LIQUIDATES +LIQUIDATING +LIQUIDATION +LIQUIDATIONS +LIQUIDATOR +LIQUIDATORS +LIQUIDITIES +LIQUIDITY +LIQUIDIZE +LIQUIDIZED +LIQUIDIZES +LIQUIDIZING +LIQUIDLY +LIQUIDNESS +LIQUIDNESSES +LIQUIDS +LIQUIFIED +LIQUIFIES +LIQUIFY +LIQUIFYING +LIQUOR +LIQUORED +LIQUORICE +LIQUORICES +LIQUORING +LIQUORISH +LIQUORS +LIRA +LIRAS +LIRE +LIRI +LIRIOPE +LIRIOPES +LIRIPIPE +LIRIPIPES +LIROT +LIROTH +LIS +LISENTE +LISLE +LISLES +LISP +LISPED +LISPER +LISPERS +LISPING +LISPINGLY +LISPS +LISSOM +LISSOME +LISSOMELY +LISSOMENESS +LISSOMENESSES +LISSOMLY +LIST +LISTABLE +LISTED +LISTEE +LISTEES +LISTEL +LISTELS +LISTEN +LISTENABLE +LISTENED +LISTENER +LISTENERS +LISTENERSHIP +LISTENERSHIPS +LISTENING +LISTENS +LISTER +LISTERIA +LISTERIAS +LISTERIOSES +LISTERIOSIS +LISTERS +LISTING +LISTINGS +LISTLESS +LISTLESSLY +LISTLESSNESS +LISTLESSNESSES +LISTS +LIT +LITAI +LITANIES +LITANY +LITAS +LITCHI +LITCHIS +LITE +LITENESS +LITENESSES +LITER +LITERACIES +LITERACY +LITERAL +LITERALISM +LITERALISMS +LITERALIST +LITERALISTIC +LITERALISTS +LITERALITIES +LITERALITY +LITERALIZATION +LITERALIZATIONS +LITERALIZE +LITERALIZED +LITERALIZES +LITERALIZING +LITERALLY +LITERALNESS +LITERALNESSES +LITERALS +LITERARILY +LITERARINESS +LITERARINESSES +LITERARY +LITERATE +LITERATELY +LITERATENESS +LITERATENESSES +LITERATES +LITERATI +LITERATIM +LITERATION +LITERATIONS +LITERATOR +LITERATORS +LITERATURE +LITERATURES +LITERATUS +LITERS +LITHARGE +LITHARGES +LITHE +LITHELY +LITHEMIA +LITHEMIAS +LITHEMIC +LITHENESS +LITHENESSES +LITHER +LITHESOME +LITHEST +LITHIA +LITHIAS +LITHIASES +LITHIASIS +LITHIC +LITHIFICATION +LITHIFICATIONS +LITHIFIED +LITHIFIES +LITHIFY +LITHIFYING +LITHIUM +LITHIUMS +LITHO +LITHOED +LITHOGRAPH +LITHOGRAPHED +LITHOGRAPHER +LITHOGRAPHERS +LITHOGRAPHIC +LITHOGRAPHIES +LITHOGRAPHING +LITHOGRAPHS +LITHOGRAPHY +LITHOID +LITHOIDAL +LITHOING +LITHOLOGIC +LITHOLOGICAL +LITHOLOGICALLY +LITHOLOGIES +LITHOLOGY +LITHOPHANE +LITHOPHANES +LITHOPHYTE +LITHOPHYTES +LITHOPONE +LITHOPONES +LITHOPS +LITHOS +LITHOSOL +LITHOSOLS +LITHOSPHERE +LITHOSPHERES +LITHOSPHERIC +LITHOTOMIES +LITHOTOMY +LITHOTRIPSIES +LITHOTRIPSY +LITHOTRIPTER +LITHOTRIPTERS +LITHOTRIPTOR +LITHOTRIPTORS +LITIGABLE +LITIGANT +LITIGANTS +LITIGATE +LITIGATED +LITIGATES +LITIGATING +LITIGATION +LITIGATIONS +LITIGATOR +LITIGATORS +LITIGIOUS +LITIGIOUSLY +LITIGIOUSNESS +LITIGIOUSNESSES +LITMUS +LITMUSES +LITORAL +LITOTES +LITOTIC +LITRE +LITRES +LITS +LITTEN +LITTER +LITTERATEUR +LITTERATEURS +LITTERBAG +LITTERBAGS +LITTERBUG +LITTERBUGS +LITTERED +LITTERER +LITTERERS +LITTERING +LITTERMATE +LITTERMATES +LITTERS +LITTERY +LITTLE +LITTLENECK +LITTLENECKS +LITTLENESS +LITTLENESSES +LITTLER +LITTLES +LITTLEST +LITTLISH +LITTORAL +LITTORALS +LITU +LITURGIC +LITURGICAL +LITURGICALLY +LITURGICS +LITURGIES +LITURGIOLOGIES +LITURGIOLOGIST +LITURGIOLOGISTS +LITURGIOLOGY +LITURGISM +LITURGISMS +LITURGIST +LITURGISTS +LITURGY +LIVABILITIES +LIVABILITY +LIVABLE +LIVABLENESS +LIVABLENESSES +LIVE +LIVEABILITIES +LIVEABILITY +LIVEABLE +LIVED +LIVELIER +LIVELIEST +LIVELIHOOD +LIVELIHOODS +LIVELILY +LIVELINESS +LIVELINESSES +LIVELONG +LIVELY +LIVEN +LIVENED +LIVENER +LIVENERS +LIVENESS +LIVENESSES +LIVENING +LIVENS +LIVER +LIVERED +LIVERIED +LIVERIES +LIVERING +LIVERISH +LIVERISHNESS +LIVERISHNESSES +LIVERLEAF +LIVERLEAVES +LIVERS +LIVERWORT +LIVERWORTS +LIVERWURST +LIVERWURSTS +LIVERY +LIVERYMAN +LIVERYMEN +LIVES +LIVEST +LIVESTOCK +LIVESTOCKS +LIVETRAP +LIVETRAPPED +LIVETRAPPING +LIVETRAPS +LIVID +LIVIDITIES +LIVIDITY +LIVIDLY +LIVIDNESS +LIVIDNESSES +LIVIER +LIVIERS +LIVING +LIVINGLY +LIVINGNESS +LIVINGNESSES +LIVINGS +LIVRE +LIVRES +LIVYER +LIVYERS +LIXIVIA +LIXIVIAL +LIXIVIATE +LIXIVIATED +LIXIVIATES +LIXIVIATING +LIXIVIATION +LIXIVIATIONS +LIXIVIUM +LIXIVIUMS +LIZARD +LIZARDS +LLAMA +LLAMAS +LLANO +LLANOS +LO +LOACH +LOACHES +LOAD +LOADED +LOADER +LOADERS +LOADING +LOADINGS +LOADMASTER +LOADMASTERS +LOADS +LOADSTAR +LOADSTARS +LOADSTONE +LOADSTONES +LOAF +LOAFED +LOAFER +LOAFERS +LOAFING +LOAFS +LOAM +LOAMED +LOAMIER +LOAMIEST +LOAMINESS +LOAMINESSES +LOAMING +LOAMLESS +LOAMS +LOAMY +LOAN +LOANABLE +LOANED +LOANER +LOANERS +LOANING +LOANINGS +LOANS +LOANSHIFT +LOANSHIFTS +LOANWORD +LOANWORDS +LOATH +LOATHE +LOATHED +LOATHER +LOATHERS +LOATHES +LOATHFUL +LOATHING +LOATHINGS +LOATHLY +LOATHNESS +LOATHNESSES +LOATHSOME +LOATHSOMELY +LOATHSOMENESS +LOATHSOMENESSES +LOAVES +LOB +LOBAR +LOBATE +LOBATED +LOBATELY +LOBATION +LOBATIONS +LOBBED +LOBBER +LOBBERS +LOBBIED +LOBBIES +LOBBING +LOBBY +LOBBYER +LOBBYERS +LOBBYGOW +LOBBYGOWS +LOBBYING +LOBBYISM +LOBBYISMS +LOBBYIST +LOBBYISTS +LOBE +LOBECTOMIES +LOBECTOMY +LOBED +LOBEFIN +LOBEFINS +LOBELIA +LOBELIAS +LOBELINE +LOBELINES +LOBES +LOBLOLLIES +LOBLOLLY +LOBO +LOBOS +LOBOTOMIES +LOBOTOMISE +LOBOTOMISED +LOBOTOMISES +LOBOTOMISING +LOBOTOMIZE +LOBOTOMIZED +LOBOTOMIZES +LOBOTOMIZING +LOBOTOMY +LOBS +LOBSCOUSE +LOBSCOUSES +LOBSTER +LOBSTERED +LOBSTERER +LOBSTERERS +LOBSTERING +LOBSTERINGS +LOBSTERLIKE +LOBSTERMAN +LOBSTERMEN +LOBSTERS +LOBSTICK +LOBSTICKS +LOBULAR +LOBULARLY +LOBULATE +LOBULATED +LOBULATION +LOBULATIONS +LOBULE +LOBULES +LOBULOSE +LOBWORM +LOBWORMS +LOCA +LOCAL +LOCALE +LOCALES +LOCALISE +LOCALISED +LOCALISES +LOCALISING +LOCALISM +LOCALISMS +LOCALIST +LOCALISTS +LOCALITE +LOCALITES +LOCALITIES +LOCALITY +LOCALIZABILITY +LOCALIZABLE +LOCALIZATION +LOCALIZATIONS +LOCALIZE +LOCALIZED +LOCALIZER +LOCALIZERS +LOCALIZES +LOCALIZING +LOCALLY +LOCALNESS +LOCALNESSES +LOCALS +LOCATABLE +LOCATE +LOCATED +LOCATER +LOCATERS +LOCATES +LOCATING +LOCATION +LOCATIONAL +LOCATIONALLY +LOCATIONS +LOCATIVE +LOCATIVES +LOCATOR +LOCATORS +LOCH +LOCHAN +LOCHANS +LOCHIA +LOCHIAL +LOCHS +LOCI +LOCK +LOCKABLE +LOCKAGE +LOCKAGES +LOCKBOX +LOCKBOXES +LOCKDOWN +LOCKDOWNS +LOCKED +LOCKER +LOCKERS +LOCKET +LOCKETS +LOCKING +LOCKJAW +LOCKJAWS +LOCKKEEPER +LOCKKEEPERS +LOCKMAKER +LOCKMAKERS +LOCKNUT +LOCKNUTS +LOCKOUT +LOCKOUTS +LOCKRAM +LOCKRAMS +LOCKS +LOCKSET +LOCKSETS +LOCKSMITH +LOCKSMITHING +LOCKSMITHINGS +LOCKSMITHS +LOCKSTEP +LOCKSTEPS +LOCKSTITCH +LOCKSTITCHED +LOCKSTITCHES +LOCKSTITCHING +LOCKUP +LOCKUPS +LOCO +LOCOED +LOCOES +LOCOFOCO +LOCOFOCOS +LOCOING +LOCOISM +LOCOISMS +LOCOMOTE +LOCOMOTED +LOCOMOTES +LOCOMOTING +LOCOMOTION +LOCOMOTIONS +LOCOMOTIVE +LOCOMOTIVES +LOCOMOTOR +LOCOMOTORS +LOCOMOTORY +LOCOS +LOCOWEED +LOCOWEEDS +LOCULAR +LOCULATE +LOCULATED +LOCULE +LOCULED +LOCULES +LOCULI +LOCULICIDAL +LOCULUS +LOCUM +LOCUMS +LOCUS +LOCUST +LOCUSTA +LOCUSTAE +LOCUSTAL +LOCUSTS +LOCUTION +LOCUTIONS +LOCUTORIES +LOCUTORY +LODE +LODEN +LODENS +LODES +LODESTAR +LODESTARS +LODESTONE +LODESTONES +LODGE +LODGED +LODGEMENT +LODGEMENTS +LODGER +LODGERS +LODGES +LODGING +LODGINGS +LODGMENT +LODGMENTS +LODICULE +LODICULES +LOESS +LOESSAL +LOESSES +LOESSIAL +LOFT +LOFTED +LOFTER +LOFTERS +LOFTIER +LOFTIEST +LOFTILY +LOFTINESS +LOFTINESSES +LOFTING +LOFTLESS +LOFTLIKE +LOFTS +LOFTY +LOG +LOGAN +LOGANBERRIES +LOGANBERRY +LOGANIA +LOGANS +LOGAOEDIC +LOGAOEDICS +LOGARITHM +LOGARITHMIC +LOGARITHMICALLY +LOGARITHMS +LOGBOOK +LOGBOOKS +LOGE +LOGES +LOGGATS +LOGGED +LOGGER +LOGGERHEAD +LOGGERHEADS +LOGGERS +LOGGETS +LOGGIA +LOGGIAS +LOGGIE +LOGGIER +LOGGIEST +LOGGING +LOGGINGS +LOGGISH +LOGGY +LOGIA +LOGIC +LOGICAL +LOGICALITIES +LOGICALITY +LOGICALLY +LOGICALNESS +LOGICALNESSES +LOGICIAN +LOGICIANS +LOGICISE +LOGICISED +LOGICISES +LOGICISING +LOGICIZE +LOGICIZED +LOGICIZES +LOGICIZING +LOGICLESS +LOGICS +LOGIER +LOGIEST +LOGILY +LOGIN +LOGINESS +LOGINESSES +LOGINS +LOGION +LOGIONS +LOGISTIC +LOGISTICAL +LOGISTICALLY +LOGISTICIAN +LOGISTICIANS +LOGISTICS +LOGJAM +LOGJAMMED +LOGJAMMING +LOGJAMS +LOGNORMAL +LOGNORMALITIES +LOGNORMALITY +LOGNORMALLY +LOGO +LOGOGRAM +LOGOGRAMMATIC +LOGOGRAMS +LOGOGRAPH +LOGOGRAPHIC +LOGOGRAPHICALLY +LOGOGRAPHS +LOGOGRIPH +LOGOGRIPHS +LOGOI +LOGOMACH +LOGOMACHIES +LOGOMACHS +LOGOMACHY +LOGON +LOGONS +LOGOPHILE +LOGOPHILES +LOGORRHEA +LOGORRHEAS +LOGORRHEIC +LOGOS +LOGOTYPE +LOGOTYPES +LOGOTYPIES +LOGOTYPY +LOGROLL +LOGROLLED +LOGROLLER +LOGROLLERS +LOGROLLING +LOGROLLINGS +LOGROLLS +LOGS +LOGWAY +LOGWAYS +LOGWOOD +LOGWOODS +LOGY +LOID +LOIDED +LOIDING +LOIDS +LOIN +LOINCLOTH +LOINCLOTHS +LOINS +LOITER +LOITERED +LOITERER +LOITERERS +LOITERING +LOITERS +LOLL +LOLLED +LOLLER +LOLLERS +LOLLIES +LOLLING +LOLLINGLY +LOLLIPOP +LOLLIPOPS +LOLLOP +LOLLOPED +LOLLOPING +LOLLOPS +LOLLOPY +LOLLS +LOLLY +LOLLYGAG +LOLLYGAGGED +LOLLYGAGGING +LOLLYGAGS +LOLLYPOP +LOLLYPOPS +LOMEIN +LOMEINS +LOMENT +LOMENTA +LOMENTS +LOMENTUM +LOMENTUMS +LONE +LONELIER +LONELIEST +LONELILY +LONELINESS +LONELINESSES +LONELY +LONENESS +LONENESSES +LONER +LONERS +LONESOME +LONESOMELY +LONESOMENESS +LONESOMENESSES +LONESOMES +LONG +LONGAN +LONGANIMITIES +LONGANIMITY +LONGANS +LONGBOAT +LONGBOATS +LONGBOW +LONGBOWMAN +LONGBOWMEN +LONGBOWS +LONGCLOTH +LONGCLOTHS +LONGE +LONGED +LONGEING +LONGER +LONGERON +LONGERONS +LONGERS +LONGES +LONGEST +LONGEVITIES +LONGEVITY +LONGEVOUS +LONGHAIR +LONGHAIRED +LONGHAIRS +LONGHAND +LONGHANDS +LONGHEAD +LONGHEADED +LONGHEADEDNESS +LONGHEADS +LONGHORN +LONGHORNS +LONGHOUSE +LONGHOUSES +LONGICORN +LONGICORNS +LONGIES +LONGING +LONGINGLY +LONGINGS +LONGISH +LONGITUDE +LONGITUDES +LONGITUDINAL +LONGITUDINALLY +LONGJUMP +LONGJUMPED +LONGJUMPING +LONGJUMPS +LONGLEAF +LONGLEAVES +LONGLINE +LONGLINES +LONGLY +LONGNECK +LONGNECKS +LONGNESS +LONGNESSES +LONGS +LONGSHIP +LONGSHIPS +LONGSHORE +LONGSHOREMAN +LONGSHOREMEN +LONGSHORING +LONGSHORINGS +LONGSIGHTED +LONGSIGHTEDNESS +LONGSOME +LONGSOMELY +LONGSOMENESS +LONGSOMENESSES +LONGSPUR +LONGSPURS +LONGTIME +LONGUEUR +LONGUEURS +LONGWAYS +LONGWISE +LOO +LOOBIES +LOOBY +LOOED +LOOEY +LOOEYS +LOOF +LOOFA +LOOFAH +LOOFAHS +LOOFAS +LOOFS +LOOIE +LOOIES +LOOING +LOOK +LOOKALIKE +LOOKALIKES +LOOKDOWN +LOOKDOWNS +LOOKED +LOOKER +LOOKERS +LOOKING +LOOKISM +LOOKISMS +LOOKIST +LOOKISTS +LOOKOUT +LOOKOUTS +LOOKS +LOOKSISM +LOOKSISMS +LOOKUP +LOOKUPS +LOOM +LOOMED +LOOMING +LOOMS +LOON +LOONEY +LOONEYS +LOONIE +LOONIER +LOONIES +LOONIEST +LOONILY +LOONINESS +LOONINESSES +LOONS +LOONY +LOOP +LOOPED +LOOPER +LOOPERS +LOOPHOLE +LOOPHOLED +LOOPHOLES +LOOPHOLING +LOOPIER +LOOPIEST +LOOPILY +LOOPINESS +LOOPINESSES +LOOPING +LOOPS +LOOPY +LOOS +LOOSE +LOOSED +LOOSELY +LOOSEN +LOOSENED +LOOSENER +LOOSENERS +LOOSENESS +LOOSENESSES +LOOSENING +LOOSENS +LOOSER +LOOSES +LOOSEST +LOOSESTRIFE +LOOSESTRIFES +LOOSING +LOOT +LOOTED +LOOTER +LOOTERS +LOOTING +LOOTS +LOP +LOPE +LOPED +LOPER +LOPERS +LOPES +LOPHOPHORE +LOPHOPHORES +LOPING +LOPPED +LOPPER +LOPPERED +LOPPERING +LOPPERS +LOPPIER +LOPPIEST +LOPPING +LOPPY +LOPS +LOPSIDED +LOPSIDEDLY +LOPSIDEDNESS +LOPSIDEDNESSES +LOPSTICK +LOPSTICKS +LOQUACIOUS +LOQUACIOUSLY +LOQUACIOUSNESS +LOQUACITIES +LOQUACITY +LOQUAT +LOQUATS +LORAL +LORAN +LORANS +LORAZEPAM +LORAZEPAMS +LORD +LORDED +LORDING +LORDINGS +LORDLESS +LORDLIER +LORDLIEST +LORDLIKE +LORDLINESS +LORDLINESSES +LORDLING +LORDLINGS +LORDLY +LORDOMA +LORDOMAS +LORDOSES +LORDOSIS +LORDOTIC +LORDS +LORDSHIP +LORDSHIPS +LORE +LOREAL +LORES +LORGNETTE +LORGNETTES +LORGNON +LORGNONS +LORICA +LORICAE +LORICATE +LORICATED +LORICATES +LORIES +LORIKEET +LORIKEETS +LORIMER +LORIMERS +LORINER +LORINERS +LORIS +LORISES +LORN +LORNNESS +LORNNESSES +LORRIES +LORRY +LORY +LOSABLE +LOSABLENESS +LOSABLENESSES +LOSE +LOSEL +LOSELS +LOSER +LOSERS +LOSES +LOSING +LOSINGLY +LOSINGS +LOSS +LOSSES +LOSSLESS +LOSSY +LOST +LOSTNESS +LOSTNESSES +LOT +LOTA +LOTAH +LOTAHS +LOTAS +LOTH +LOTHARIO +LOTHARIOS +LOTHSOME +LOTI +LOTIC +LOTION +LOTIONS +LOTOS +LOTOSES +LOTS +LOTTE +LOTTED +LOTTER +LOTTERIES +LOTTERS +LOTTERY +LOTTES +LOTTING +LOTTO +LOTTOS +LOTUS +LOTUSES +LOTUSLAND +LOTUSLANDS +LOUCHE +LOUD +LOUDEN +LOUDENED +LOUDENING +LOUDENS +LOUDER +LOUDEST +LOUDISH +LOUDLIER +LOUDLIEST +LOUDLY +LOUDMOUTH +LOUDMOUTHED +LOUDMOUTHS +LOUDNESS +LOUDNESSES +LOUDSPEAKER +LOUDSPEAKERS +LOUGH +LOUGHS +LOUIE +LOUIES +LOUIS +LOUMA +LOUMAS +LOUNGE +LOUNGED +LOUNGER +LOUNGERS +LOUNGES +LOUNGEWEAR +LOUNGEWEARS +LOUNGING +LOUNGY +LOUP +LOUPE +LOUPED +LOUPEN +LOUPES +LOUPING +LOUPS +LOUR +LOURED +LOURING +LOURS +LOURY +LOUSE +LOUSED +LOUSES +LOUSEWORT +LOUSEWORTS +LOUSIER +LOUSIEST +LOUSILY +LOUSINESS +LOUSINESSES +LOUSING +LOUSY +LOUT +LOUTED +LOUTING +LOUTISH +LOUTISHLY +LOUTISHNESS +LOUTISHNESSES +LOUTS +LOUVER +LOUVERED +LOUVERS +LOUVRE +LOUVRED +LOUVRES +LOVABILITIES +LOVABILITY +LOVABLE +LOVABLENESS +LOVABLENESSES +LOVABLY +LOVAGE +LOVAGES +LOVASTATIN +LOVASTATINS +LOVAT +LOVATS +LOVE +LOVEABLE +LOVEABLY +LOVEBIRD +LOVEBIRDS +LOVEBUG +LOVEBUGS +LOVED +LOVEFEST +LOVEFESTS +LOVELESS +LOVELESSLY +LOVELESSNESS +LOVELESSNESSES +LOVELIER +LOVELIES +LOVELIEST +LOVELILY +LOVELINESS +LOVELINESSES +LOVELOCK +LOVELOCKS +LOVELORN +LOVELORNNESS +LOVELORNNESSES +LOVELY +LOVEMAKER +LOVEMAKERS +LOVEMAKING +LOVEMAKINGS +LOVER +LOVERLY +LOVERS +LOVES +LOVESEAT +LOVESEATS +LOVESICK +LOVESICKNESS +LOVESICKNESSES +LOVESOME +LOVEVINE +LOVEVINES +LOVING +LOVINGLY +LOVINGNESS +LOVINGNESSES +LOW +LOWBALL +LOWBALLED +LOWBALLING +LOWBALLS +LOWBORN +LOWBOY +LOWBOYS +LOWBRED +LOWBROW +LOWBROWED +LOWBROWS +LOWDOWN +LOWDOWNS +LOWE +LOWED +LOWER +LOWERCASE +LOWERCASED +LOWERCASES +LOWERCASING +LOWERED +LOWERING +LOWERMOST +LOWERS +LOWERY +LOWES +LOWEST +LOWING +LOWINGS +LOWISH +LOWLAND +LOWLANDER +LOWLANDERS +LOWLANDS +LOWLIER +LOWLIEST +LOWLIFE +LOWLIFER +LOWLIFERS +LOWLIFES +LOWLIGHT +LOWLIGHTS +LOWLIHEAD +LOWLIHEADS +LOWLILY +LOWLINESS +LOWLINESSES +LOWLIVES +LOWLY +LOWN +LOWNESS +LOWNESSES +LOWRIDER +LOWRIDERS +LOWS +LOWSE +LOX +LOXED +LOXES +LOXING +LOXODROME +LOXODROMES +LOYAL +LOYALER +LOYALEST +LOYALISM +LOYALISMS +LOYALIST +LOYALISTS +LOYALLY +LOYALTIES +LOYALTY +LOZENGE +LOZENGES +LUAU +LUAUS +LUBBER +LUBBERLINESS +LUBBERLINESSES +LUBBERLY +LUBBERS +LUBE +LUBED +LUBES +LUBING +LUBRIC +LUBRICAL +LUBRICANT +LUBRICANTS +LUBRICATE +LUBRICATED +LUBRICATES +LUBRICATING +LUBRICATION +LUBRICATIONS +LUBRICATIVE +LUBRICATOR +LUBRICATORS +LUBRICIOUS +LUBRICIOUSLY +LUBRICITIES +LUBRICITY +LUBRICOUS +LUCARNE +LUCARNES +LUCE +LUCENCE +LUCENCES +LUCENCIES +LUCENCY +LUCENT +LUCENTLY +LUCERN +LUCERNE +LUCERNES +LUCERNS +LUCES +LUCID +LUCIDITIES +LUCIDITY +LUCIDLY +LUCIDNESS +LUCIDNESSES +LUCIFER +LUCIFERASE +LUCIFERASES +LUCIFERIN +LUCIFERINS +LUCIFEROUS +LUCIFERS +LUCITE +LUCITES +LUCK +LUCKED +LUCKIE +LUCKIER +LUCKIES +LUCKIEST +LUCKILY +LUCKINESS +LUCKINESSES +LUCKING +LUCKLESS +LUCKS +LUCKY +LUCRATIVE +LUCRATIVELY +LUCRATIVENESS +LUCRATIVENESSES +LUCRE +LUCRES +LUCUBRATE +LUCUBRATED +LUCUBRATES +LUCUBRATING +LUCUBRATION +LUCUBRATIONS +LUCULENT +LUCULENTLY +LUDE +LUDES +LUDIC +LUDICROUS +LUDICROUSLY +LUDICROUSNESS +LUDICROUSNESSES +LUES +LUETIC +LUETICS +LUFF +LUFFA +LUFFAS +LUFFED +LUFFING +LUFFS +LUFTMENSCH +LUFTMENSCHEN +LUG +LUGE +LUGED +LUGEING +LUGER +LUGERS +LUGES +LUGGAGE +LUGGAGES +LUGGED +LUGGER +LUGGERS +LUGGIE +LUGGIES +LUGGING +LUGING +LUGS +LUGSAIL +LUGSAILS +LUGUBRIOUS +LUGUBRIOUSLY +LUGUBRIOUSNESS +LUGWORM +LUGWORMS +LUKEWARM +LUKEWARMLY +LUKEWARMNESS +LUKEWARMNESSES +LULL +LULLABIED +LULLABIES +LULLABY +LULLABYING +LULLED +LULLER +LULLERS +LULLING +LULLS +LULU +LULUS +LUM +LUMA +LUMAS +LUMBAGO +LUMBAGOS +LUMBAR +LUMBARS +LUMBER +LUMBERED +LUMBERER +LUMBERERS +LUMBERING +LUMBERINGS +LUMBERJACK +LUMBERJACKS +LUMBERLY +LUMBERMAN +LUMBERMEN +LUMBERS +LUMBERYARD +LUMBERYARDS +LUMBOSACRAL +LUMBRICAL +LUMBRICALS +LUMEN +LUMENAL +LUMENS +LUMINA +LUMINAIRE +LUMINAIRES +LUMINAL +LUMINANCE +LUMINANCES +LUMINARIA +LUMINARIAS +LUMINARIES +LUMINARY +LUMINESCE +LUMINESCED +LUMINESCENCE +LUMINESCENCES +LUMINESCENT +LUMINESCES +LUMINESCING +LUMINIFEROUS +LUMINISM +LUMINISMS +LUMINIST +LUMINISTS +LUMINOSITIES +LUMINOSITY +LUMINOUS +LUMINOUSLY +LUMINOUSNESS +LUMINOUSNESSES +LUMMOX +LUMMOXES +LUMP +LUMPECTOMIES +LUMPECTOMY +LUMPED +LUMPEN +LUMPENS +LUMPER +LUMPERS +LUMPFISH +LUMPFISHES +LUMPIER +LUMPIEST +LUMPILY +LUMPINESS +LUMPINESSES +LUMPING +LUMPINGLY +LUMPISH +LUMPISHLY +LUMPISHNESS +LUMPISHNESSES +LUMPS +LUMPY +LUMS +LUNA +LUNACIES +LUNACY +LUNAR +LUNARIAN +LUNARIANS +LUNARS +LUNAS +LUNATE +LUNATED +LUNATELY +LUNATIC +LUNATICS +LUNATION +LUNATIONS +LUNCH +LUNCHBOX +LUNCHBOXES +LUNCHED +LUNCHEON +LUNCHEONETTE +LUNCHEONETTES +LUNCHEONS +LUNCHER +LUNCHERS +LUNCHES +LUNCHING +LUNCHMEAT +LUNCHMEATS +LUNCHROOM +LUNCHROOMS +LUNCHTIME +LUNCHTIMES +LUNE +LUNES +LUNET +LUNETS +LUNETTE +LUNETTES +LUNG +LUNGAN +LUNGANS +LUNGE +LUNGED +LUNGEE +LUNGEES +LUNGER +LUNGERS +LUNGES +LUNGFISH +LUNGFISHES +LUNGFUL +LUNGFULS +LUNGI +LUNGING +LUNGIS +LUNGS +LUNGWORM +LUNGWORMS +LUNGWORT +LUNGWORTS +LUNGYI +LUNGYIS +LUNIER +LUNIES +LUNIEST +LUNISOLAR +LUNITIDAL +LUNK +LUNKER +LUNKERS +LUNKHEAD +LUNKHEADED +LUNKHEADS +LUNKS +LUNT +LUNTED +LUNTING +LUNTS +LUNULA +LUNULAE +LUNULAR +LUNULATE +LUNULATED +LUNULE +LUNULES +LUNY +LUPANAR +LUPANARS +LUPIN +LUPINE +LUPINES +LUPINS +LUPOUS +LUPULIN +LUPULINS +LUPUS +LUPUSES +LURCH +LURCHED +LURCHER +LURCHERS +LURCHES +LURCHING +LURDAN +LURDANE +LURDANES +LURDANS +LURE +LURED +LURER +LURERS +LURES +LUREX +LUREXES +LURID +LURIDLY +LURIDNESS +LURIDNESSES +LURING +LURINGLY +LURK +LURKED +LURKER +LURKERS +LURKING +LURKINGLY +LURKS +LUSCIOUS +LUSCIOUSLY +LUSCIOUSNESS +LUSCIOUSNESSES +LUSH +LUSHED +LUSHER +LUSHES +LUSHEST +LUSHING +LUSHLY +LUSHNESS +LUSHNESSES +LUST +LUSTED +LUSTER +LUSTERED +LUSTERING +LUSTERLESS +LUSTERS +LUSTERWARE +LUSTERWARES +LUSTFUL +LUSTFULLY +LUSTFULNESS +LUSTFULNESSES +LUSTIER +LUSTIEST +LUSTIHOOD +LUSTIHOODS +LUSTILY +LUSTINESS +LUSTINESSES +LUSTING +LUSTRA +LUSTRAL +LUSTRATE +LUSTRATED +LUSTRATES +LUSTRATING +LUSTRATION +LUSTRATIONS +LUSTRE +LUSTRED +LUSTRES +LUSTRING +LUSTRINGS +LUSTROUS +LUSTROUSLY +LUSTROUSNESS +LUSTROUSNESSES +LUSTRUM +LUSTRUMS +LUSTS +LUSTY +LUSUS +LUSUSES +LUTANIST +LUTANISTS +LUTE +LUTEA +LUTEAL +LUTECIUM +LUTECIUMS +LUTED +LUTEFISK +LUTEFISKS +LUTEIN +LUTEINIZATION +LUTEINIZATIONS +LUTEINIZE +LUTEINIZED +LUTEINIZES +LUTEINIZING +LUTEINS +LUTENIST +LUTENISTS +LUTEOLIN +LUTEOLINS +LUTEOTROPHIC +LUTEOTROPHIN +LUTEOTROPHINS +LUTEOTROPIC +LUTEOTROPIN +LUTEOTROPINS +LUTEOUS +LUTES +LUTESTRING +LUTESTRINGS +LUTETIUM +LUTETIUMS +LUTEUM +LUTFISK +LUTFISKS +LUTHERN +LUTHERNS +LUTHIER +LUTHIERS +LUTING +LUTINGS +LUTIST +LUTISTS +LUTZ +LUTZES +LUV +LUVS +LUX +LUXATE +LUXATED +LUXATES +LUXATING +LUXATION +LUXATIONS +LUXE +LUXES +LUXURIANCE +LUXURIANCES +LUXURIANT +LUXURIANTLY +LUXURIATE +LUXURIATED +LUXURIATES +LUXURIATING +LUXURIES +LUXURIOUS +LUXURIOUSLY +LUXURIOUSNESS +LUXURIOUSNESSES +LUXURY +LWEI +LWEIS +LYARD +LYART +LYASE +LYASES +LYCANTHROPIES +LYCANTHROPY +LYCEA +LYCEE +LYCEES +LYCEUM +LYCEUMS +LYCH +LYCHEE +LYCHEES +LYCHES +LYCHNIS +LYCHNISES +LYCOPENE +LYCOPENES +LYCOPOD +LYCOPODIUM +LYCOPODIUMS +LYCOPODS +LYCRA +LYCRAS +LYDDITE +LYDDITES +LYE +LYES +LYING +LYINGLY +LYINGS +LYMPH +LYMPHADENITIS +LYMPHADENITISES +LYMPHADENOPATHY +LYMPHANGIOGRAM +LYMPHANGIOGRAMS +LYMPHATIC +LYMPHATICALLY +LYMPHATICS +LYMPHOBLAST +LYMPHOBLASTIC +LYMPHOBLASTS +LYMPHOCYTE +LYMPHOCYTES +LYMPHOCYTIC +LYMPHOCYTOSES +LYMPHOCYTOSIS +LYMPHOGRAM +LYMPHOGRAMS +LYMPHOGRANULOMA +LYMPHOGRAPHIC +LYMPHOGRAPHIES +LYMPHOGRAPHY +LYMPHOID +LYMPHOKINE +LYMPHOKINES +LYMPHOMA +LYMPHOMAS +LYMPHOMATA +LYMPHOMATOSES +LYMPHOMATOSIS +LYMPHOMATOUS +LYMPHOSARCOMA +LYMPHOSARCOMAS +LYMPHOSARCOMATA +LYMPHS +LYNCEAN +LYNCH +LYNCHED +LYNCHER +LYNCHERS +LYNCHES +LYNCHING +LYNCHINGS +LYNCHPIN +LYNCHPINS +LYNX +LYNXES +LYONNAISE +LYOPHILE +LYOPHILED +LYOPHILIC +LYOPHILISE +LYOPHILISED +LYOPHILISES +LYOPHILISING +LYOPHILIZATION +LYOPHILIZATIONS +LYOPHILIZE +LYOPHILIZED +LYOPHILIZER +LYOPHILIZERS +LYOPHILIZES +LYOPHILIZING +LYOPHOBIC +LYRATE +LYRATED +LYRATELY +LYRE +LYREBIRD +LYREBIRDS +LYRES +LYRIC +LYRICAL +LYRICALLY +LYRICALNESS +LYRICALNESSES +LYRICISE +LYRICISED +LYRICISES +LYRICISING +LYRICISM +LYRICISMS +LYRICIST +LYRICISTS +LYRICIZE +LYRICIZED +LYRICIZES +LYRICIZING +LYRICON +LYRICONS +LYRICS +LYRIFORM +LYRISM +LYRISMS +LYRIST +LYRISTS +LYSATE +LYSATES +LYSE +LYSED +LYSES +LYSIMETER +LYSIMETERS +LYSIMETRIC +LYSIN +LYSINE +LYSINES +LYSING +LYSINS +LYSIS +LYSOGEN +LYSOGENIC +LYSOGENICITIES +LYSOGENICITY +LYSOGENIES +LYSOGENISE +LYSOGENISED +LYSOGENISES +LYSOGENISING +LYSOGENIZATION +LYSOGENIZATIONS +LYSOGENIZE +LYSOGENIZED +LYSOGENIZES +LYSOGENIZING +LYSOGENS +LYSOGENY +LYSOLECITHIN +LYSOLECITHINS +LYSOSOMAL +LYSOSOME +LYSOSOMES +LYSOZYME +LYSOZYMES +LYSSA +LYSSAS +LYTIC +LYTICALLY +LYTTA +LYTTAE +LYTTAS +MA +MAAR +MAARS +MABE +MABES +MAC +MACABER +MACABRE +MACABRELY +MACACO +MACACOS +MACADAM +MACADAMIA +MACADAMIAS +MACADAMIZE +MACADAMIZED +MACADAMIZES +MACADAMIZING +MACADAMS +MACAQUE +MACAQUES +MACARONI +MACARONIC +MACARONICS +MACARONIES +MACARONIS +MACAROON +MACAROONS +MACAW +MACAWS +MACCABAW +MACCABAWS +MACCABOY +MACCABOYS +MACCHIA +MACCHIE +MACCOBOY +MACCOBOYS +MACE +MACED +MACEDOINE +MACEDOINES +MACER +MACERATE +MACERATED +MACERATER +MACERATERS +MACERATES +MACERATING +MACERATION +MACERATIONS +MACERATOR +MACERATORS +MACERS +MACES +MACH +MACHE +MACHES +MACHETE +MACHETES +MACHICOLATED +MACHICOLATION +MACHICOLATIONS +MACHINABILITIES +MACHINABILITY +MACHINABLE +MACHINATE +MACHINATED +MACHINATES +MACHINATING +MACHINATION +MACHINATIONS +MACHINATOR +MACHINATORS +MACHINE +MACHINEABILITY +MACHINEABLE +MACHINED +MACHINELIKE +MACHINERIES +MACHINERY +MACHINES +MACHINING +MACHINIST +MACHINISTS +MACHISMO +MACHISMOS +MACHO +MACHOISM +MACHOISMS +MACHOS +MACHREE +MACHREES +MACHS +MACHZOR +MACHZORIM +MACHZORS +MACING +MACINTOSH +MACINTOSHES +MACK +MACKEREL +MACKERELS +MACKINAW +MACKINAWS +MACKINTOSH +MACKINTOSHES +MACKLE +MACKLED +MACKLES +MACKLING +MACKS +MACLE +MACLED +MACLES +MACON +MACONS +MACRAME +MACRAMES +MACRO +MACROAGGREGATE +MACROAGGREGATED +MACROAGGREGATES +MACROBIOTIC +MACROCOSM +MACROCOSMIC +MACROCOSMICALLY +MACROCOSMS +MACROCYCLIC +MACROCYST +MACROCYSTS +MACROCYTE +MACROCYTES +MACROCYTIC +MACROCYTOSES +MACROCYTOSIS +MACRODONT +MACROECONOMIC +MACROECONOMICS +MACROEVOLUTION +MACROEVOLUTIONS +MACROFOSSIL +MACROFOSSILS +MACROGAMETE +MACROGAMETES +MACROGLOBULIN +MACROGLOBULINS +MACROMERE +MACROMERES +MACROMOLE +MACROMOLECULAR +MACROMOLECULE +MACROMOLECULES +MACROMOLES +MACRON +MACRONS +MACRONUCLEAR +MACRONUCLEI +MACRONUCLEUS +MACRONUTRIENT +MACRONUTRIENTS +MACROPHAGE +MACROPHAGES +MACROPHAGIC +MACROPHOTOGRAPH +MACROPHYTE +MACROPHYTES +MACROPHYTIC +MACROPTEROUS +MACROS +MACROSCALE +MACROSCALES +MACROSCOPIC +MACROSCOPICALLY +MACROSTRUCTURAL +MACROSTRUCTURE +MACROSTRUCTURES +MACRURAL +MACRURAN +MACRURANS +MACRUROUS +MACS +MACULA +MACULAE +MACULAR +MACULAS +MACULATE +MACULATED +MACULATES +MACULATING +MACULATION +MACULATIONS +MACULE +MACULED +MACULES +MACULING +MACUMBA +MACUMBAS +MAD +MADAM +MADAME +MADAMES +MADAMS +MADCAP +MADCAPS +MADDED +MADDEN +MADDENED +MADDENING +MADDENINGLY +MADDENS +MADDER +MADDERS +MADDEST +MADDING +MADDISH +MADE +MADEIRA +MADEIRAS +MADELEINE +MADELEINES +MADEMOISELLE +MADEMOISELLES +MADERIZE +MADERIZED +MADERIZES +MADERIZING +MADHOUSE +MADHOUSES +MADLY +MADMAN +MADMEN +MADNESS +MADNESSES +MADONNA +MADONNAS +MADRAS +MADRASA +MADRASAH +MADRASAHS +MADRASAS +MADRASES +MADRASSA +MADRASSAH +MADRASSAHS +MADRASSAS +MADRE +MADREPORE +MADREPORES +MADREPORIAN +MADREPORIANS +MADREPORIC +MADREPORITE +MADREPORITES +MADRES +MADRIGAL +MADRIGALIAN +MADRIGALIST +MADRIGALISTS +MADRIGALS +MADRILENE +MADRILENES +MADRONA +MADRONAS +MADRONE +MADRONES +MADRONO +MADRONOS +MADS +MADTOM +MADTOMS +MADURO +MADUROS +MADWOMAN +MADWOMEN +MADWORT +MADWORTS +MADZOON +MADZOONS +MAE +MAELSTROM +MAELSTROMS +MAENAD +MAENADES +MAENADIC +MAENADISM +MAENADISMS +MAENADS +MAES +MAESTOSO +MAESTOSOS +MAESTRI +MAESTRO +MAESTROS +MAFFIA +MAFFIAS +MAFFICK +MAFFICKED +MAFFICKER +MAFFICKERS +MAFFICKING +MAFFICKS +MAFIA +MAFIAS +MAFIC +MAFIOSI +MAFIOSO +MAFIOSOS +MAFTIR +MAFTIRS +MAG +MAGALOG +MAGALOGS +MAGALOGUE +MAGALOGUES +MAGAZINE +MAGAZINES +MAGAZINIST +MAGAZINISTS +MAGDALEN +MAGDALENE +MAGDALENES +MAGDALENS +MAGE +MAGENTA +MAGENTAS +MAGES +MAGGOT +MAGGOTS +MAGGOTY +MAGI +MAGIAN +MAGIANS +MAGIC +MAGICAL +MAGICALLY +MAGICIAN +MAGICIANS +MAGICKED +MAGICKING +MAGICS +MAGILP +MAGILPS +MAGISTER +MAGISTERIAL +MAGISTERIALLY +MAGISTERIUM +MAGISTERIUMS +MAGISTERS +MAGISTRACIES +MAGISTRACY +MAGISTRAL +MAGISTRALLY +MAGISTRATE +MAGISTRATES +MAGISTRATICAL +MAGISTRATICALLY +MAGISTRATURE +MAGISTRATURES +MAGLEV +MAGLEVS +MAGMA +MAGMAS +MAGMATA +MAGMATIC +MAGNANIMITIES +MAGNANIMITY +MAGNANIMOUS +MAGNANIMOUSLY +MAGNANIMOUSNESS +MAGNATE +MAGNATES +MAGNESIA +MAGNESIAN +MAGNESIAS +MAGNESIC +MAGNESITE +MAGNESITES +MAGNESIUM +MAGNESIUMS +MAGNET +MAGNETIC +MAGNETICALLY +MAGNETICS +MAGNETISE +MAGNETISED +MAGNETISES +MAGNETISING +MAGNETISM +MAGNETISMS +MAGNETITE +MAGNETITES +MAGNETIZABLE +MAGNETIZATION +MAGNETIZATIONS +MAGNETIZE +MAGNETIZED +MAGNETIZER +MAGNETIZERS +MAGNETIZES +MAGNETIZING +MAGNETO +MAGNETOELECTRIC +MAGNETOGRAPH +MAGNETOGRAPHS +MAGNETOMETER +MAGNETOMETERS +MAGNETOMETRIC +MAGNETOMETRIES +MAGNETOMETRY +MAGNETON +MAGNETONS +MAGNETOPAUSE +MAGNETOPAUSES +MAGNETOS +MAGNETOSPHERE +MAGNETOSPHERES +MAGNETOSPHERIC +MAGNETOSTATIC +MAGNETRON +MAGNETRONS +MAGNETS +MAGNIFIC +MAGNIFICAL +MAGNIFICALLY +MAGNIFICAT +MAGNIFICATION +MAGNIFICATIONS +MAGNIFICATS +MAGNIFICENCE +MAGNIFICENCES +MAGNIFICENT +MAGNIFICENTLY +MAGNIFICO +MAGNIFICOES +MAGNIFICOS +MAGNIFIED +MAGNIFIER +MAGNIFIERS +MAGNIFIES +MAGNIFY +MAGNIFYING +MAGNILOQUENCE +MAGNILOQUENCES +MAGNILOQUENT +MAGNILOQUENTLY +MAGNITUDE +MAGNITUDES +MAGNOLIA +MAGNOLIAS +MAGNUM +MAGNUMS +MAGOT +MAGOTS +MAGPIE +MAGPIES +MAGS +MAGUEY +MAGUEYS +MAGUS +MAHARAJA +MAHARAJAH +MAHARAJAHS +MAHARAJAS +MAHARANEE +MAHARANEES +MAHARANI +MAHARANIS +MAHARISHI +MAHARISHIS +MAHATMA +MAHATMAS +MAHIMAHI +MAHIMAHIS +MAHJONG +MAHJONGG +MAHJONGGS +MAHJONGS +MAHLSTICK +MAHLSTICKS +MAHOE +MAHOES +MAHOGANIES +MAHOGANY +MAHONIA +MAHONIAS +MAHOUT +MAHOUTS +MAHUANG +MAHUANGS +MAHZOR +MAHZORIM +MAHZORS +MAIASAUR +MAIASAURA +MAIASAURAS +MAIASAURS +MAID +MAIDEN +MAIDENHAIR +MAIDENHAIRS +MAIDENHEAD +MAIDENHEADS +MAIDENHOOD +MAIDENHOODS +MAIDENLINESS +MAIDENLINESSES +MAIDENLY +MAIDENS +MAIDHOOD +MAIDHOODS +MAIDISH +MAIDS +MAIDSERVANT +MAIDSERVANTS +MAIEUTIC +MAIGRE +MAIHEM +MAIHEMS +MAIL +MAILABILITIES +MAILABILITY +MAILABLE +MAILBAG +MAILBAGS +MAILBOX +MAILBOXES +MAILE +MAILED +MAILER +MAILERS +MAILES +MAILGRAM +MAILGRAMS +MAILING +MAILINGS +MAILL +MAILLESS +MAILLOT +MAILLOTS +MAILLS +MAILMAN +MAILMEN +MAILROOM +MAILROOMS +MAILS +MAIM +MAIMED +MAIMER +MAIMERS +MAIMING +MAIMS +MAIN +MAINFRAME +MAINFRAMES +MAINLAND +MAINLANDER +MAINLANDERS +MAINLANDS +MAINLINE +MAINLINED +MAINLINER +MAINLINERS +MAINLINES +MAINLINING +MAINLY +MAINMAST +MAINMASTS +MAINS +MAINSAIL +MAINSAILS +MAINSHEET +MAINSHEETS +MAINSPRING +MAINSPRINGS +MAINSTAY +MAINSTAYS +MAINSTREAM +MAINSTREAMED +MAINSTREAMING +MAINSTREAMS +MAINTAIN +MAINTAINABILITY +MAINTAINABLE +MAINTAINED +MAINTAINER +MAINTAINERS +MAINTAINING +MAINTAINS +MAINTENANCE +MAINTENANCES +MAINTOP +MAINTOPS +MAIOLICA +MAIOLICAS +MAIR +MAIRS +MAISONETTE +MAISONETTES +MAIST +MAISTS +MAIZE +MAIZES +MAJAGUA +MAJAGUAS +MAJESTIC +MAJESTICALLY +MAJESTIES +MAJESTY +MAJOLICA +MAJOLICAS +MAJOR +MAJORDOMO +MAJORDOMOS +MAJORED +MAJORETTE +MAJORETTES +MAJORING +MAJORITARIAN +MAJORITARIANISM +MAJORITARIANS +MAJORITIES +MAJORITY +MAJORLY +MAJORS +MAJUSCULAR +MAJUSCULE +MAJUSCULES +MAKABLE +MAKAR +MAKARS +MAKE +MAKEABLE +MAKEBATE +MAKEBATES +MAKEFAST +MAKEFASTS +MAKEOVER +MAKEOVERS +MAKER +MAKEREADIES +MAKEREADY +MAKERS +MAKES +MAKESHIFT +MAKESHIFTS +MAKEUP +MAKEUPS +MAKEWEIGHT +MAKEWEIGHTS +MAKIMONO +MAKIMONOS +MAKING +MAKINGS +MAKO +MAKOS +MAKUTA +MALABSORPTION +MALABSORPTIONS +MALACCA +MALACCAS +MALACHITE +MALACHITES +MALACOLOGICAL +MALACOLOGIES +MALACOLOGIST +MALACOLOGISTS +MALACOLOGY +MALACOSTRACAN +MALACOSTRACANS +MALADAPTATION +MALADAPTATIONS +MALADAPTED +MALADAPTIVE +MALADIES +MALADJUSTED +MALADJUSTIVE +MALADJUSTMENT +MALADJUSTMENTS +MALADMINISTER +MALADMINISTERED +MALADMINISTERS +MALADROIT +MALADROITLY +MALADROITNESS +MALADROITNESSES +MALADROITS +MALADY +MALAGUENA +MALAGUENAS +MALAISE +MALAISES +MALAMUTE +MALAMUTES +MALANDERS +MALANGA +MALANGAS +MALAPERT +MALAPERTLY +MALAPERTNESS +MALAPERTNESSES +MALAPERTS +MALAPPORTIONED +MALAPROP +MALAPROPIAN +MALAPROPISM +MALAPROPISMS +MALAPROPIST +MALAPROPISTS +MALAPROPOS +MALAPROPS +MALAR +MALARIA +MALARIAL +MALARIAN +MALARIAS +MALARIOLOGIES +MALARIOLOGIST +MALARIOLOGISTS +MALARIOLOGY +MALARIOUS +MALARKEY +MALARKEYS +MALARKIES +MALARKY +MALAROMA +MALAROMAS +MALARS +MALATE +MALATES +MALATHION +MALATHIONS +MALCONTENT +MALCONTENTED +MALCONTENTEDLY +MALCONTENTS +MALDISTRIBUTION +MALE +MALEATE +MALEATES +MALEDICT +MALEDICTED +MALEDICTING +MALEDICTION +MALEDICTIONS +MALEDICTORY +MALEDICTS +MALEFACTION +MALEFACTIONS +MALEFACTOR +MALEFACTORS +MALEFIC +MALEFICENCE +MALEFICENCES +MALEFICENT +MALEMIUT +MALEMIUTS +MALEMUTE +MALEMUTES +MALENESS +MALENESSES +MALES +MALEVOLENCE +MALEVOLENCES +MALEVOLENT +MALEVOLENTLY +MALFEASANCE +MALFEASANCES +MALFED +MALFORMATION +MALFORMATIONS +MALFORMED +MALFUNCTION +MALFUNCTIONED +MALFUNCTIONING +MALFUNCTIONS +MALGRE +MALIC +MALICE +MALICES +MALICIOUS +MALICIOUSLY +MALICIOUSNESS +MALICIOUSNESSES +MALIGN +MALIGNANCE +MALIGNANCES +MALIGNANCIES +MALIGNANCY +MALIGNANT +MALIGNANTLY +MALIGNED +MALIGNER +MALIGNERS +MALIGNING +MALIGNITIES +MALIGNITY +MALIGNLY +MALIGNS +MALIHINI +MALIHINIS +MALINE +MALINES +MALINGER +MALINGERED +MALINGERER +MALINGERERS +MALINGERING +MALINGERS +MALISON +MALISONS +MALKIN +MALKINS +MALL +MALLARD +MALLARDS +MALLEABILITIES +MALLEABILITY +MALLEABLE +MALLEABLY +MALLED +MALLEE +MALLEES +MALLEI +MALLEMUCK +MALLEMUCKS +MALLEOLAR +MALLEOLI +MALLEOLUS +MALLET +MALLETS +MALLEUS +MALLING +MALLINGS +MALLOW +MALLOWS +MALLS +MALM +MALMIER +MALMIEST +MALMS +MALMSEY +MALMSEYS +MALMY +MALNOURISHED +MALNUTRITION +MALNUTRITIONS +MALOCCLUSION +MALOCCLUSIONS +MALODOR +MALODOROUS +MALODOROUSLY +MALODOROUSNESS +MALODORS +MALOLACTIC +MALOTI +MALPIGHIA +MALPOSED +MALPOSITION +MALPOSITIONS +MALPRACTICE +MALPRACTICES +MALPRACTITIONER +MALT +MALTASE +MALTASES +MALTED +MALTEDS +MALTHA +MALTHAS +MALTIER +MALTIEST +MALTINESS +MALTINESSES +MALTING +MALTOL +MALTOLS +MALTOSE +MALTOSES +MALTREAT +MALTREATED +MALTREATER +MALTREATERS +MALTREATING +MALTREATMENT +MALTREATMENTS +MALTREATS +MALTS +MALTSTER +MALTSTERS +MALTY +MALVASIA +MALVASIAN +MALVASIAS +MALVERSATION +MALVERSATIONS +MAMA +MAMALIGA +MAMALIGAS +MAMAS +MAMBA +MAMBAS +MAMBO +MAMBOED +MAMBOES +MAMBOING +MAMBOS +MAMELUKE +MAMELUKES +MAMEY +MAMEYES +MAMEYS +MAMIE +MAMIES +MAMLUK +MAMLUKS +MAMMA +MAMMAE +MAMMAL +MAMMALIAN +MAMMALIANS +MAMMALITIES +MAMMALITY +MAMMALOGIES +MAMMALOGIST +MAMMALOGISTS +MAMMALOGY +MAMMALS +MAMMARY +MAMMAS +MAMMATE +MAMMATI +MAMMATUS +MAMMEE +MAMMEES +MAMMER +MAMMERED +MAMMERING +MAMMERS +MAMMET +MAMMETS +MAMMEY +MAMMEYS +MAMMIE +MAMMIES +MAMMILLA +MAMMILLAE +MAMMILLARY +MAMMILLATED +MAMMITIDES +MAMMITIS +MAMMOCK +MAMMOCKED +MAMMOCKING +MAMMOCKS +MAMMOGRAM +MAMMOGRAMS +MAMMOGRAPHIC +MAMMOGRAPHIES +MAMMOGRAPHY +MAMMON +MAMMONISM +MAMMONISMS +MAMMONIST +MAMMONISTS +MAMMONS +MAMMOTH +MAMMOTHS +MAMMY +MAMZER +MAMZERS +MAN +MANA +MANACLE +MANACLED +MANACLES +MANACLING +MANAGE +MANAGEABILITIES +MANAGEABILITY +MANAGEABLE +MANAGEABLENESS +MANAGEABLY +MANAGED +MANAGEMENT +MANAGEMENTAL +MANAGEMENTS +MANAGER +MANAGERESS +MANAGERESSES +MANAGERIAL +MANAGERIALLY +MANAGERS +MANAGERSHIP +MANAGERSHIPS +MANAGES +MANAGING +MANAKIN +MANAKINS +MANANA +MANANAS +MANAS +MANAT +MANATEE +MANATEES +MANATOID +MANATS +MANCHE +MANCHES +MANCHET +MANCHETS +MANCHINEEL +MANCHINEELS +MANCIPLE +MANCIPLES +MANDALA +MANDALAS +MANDALIC +MANDAMUS +MANDAMUSED +MANDAMUSES +MANDAMUSING +MANDARIN +MANDARINATE +MANDARINATES +MANDARINIC +MANDARINISM +MANDARINISMS +MANDARINS +MANDATARIES +MANDATARY +MANDATE +MANDATED +MANDATES +MANDATING +MANDATOR +MANDATORIES +MANDATORILY +MANDATORS +MANDATORY +MANDIBLE +MANDIBLES +MANDIBULAR +MANDIBULATE +MANDIOCA +MANDIOCAS +MANDOLA +MANDOLAS +MANDOLIN +MANDOLINE +MANDOLINES +MANDOLINIST +MANDOLINISTS +MANDOLINS +MANDRAGORA +MANDRAGORAS +MANDRAKE +MANDRAKES +MANDREL +MANDRELS +MANDRIL +MANDRILL +MANDRILLS +MANDRILS +MANDUCATE +MANDUCATED +MANDUCATES +MANDUCATING +MANE +MANED +MANEGE +MANEGES +MANELESS +MANES +MANEUVER +MANEUVERABILITY +MANEUVERABLE +MANEUVERED +MANEUVERER +MANEUVERERS +MANEUVERING +MANEUVERS +MANFUL +MANFULLY +MANFULNESS +MANFULNESSES +MANGA +MANGABEY +MANGABEYS +MANGABIES +MANGABY +MANGANATE +MANGANATES +MANGANESE +MANGANESES +MANGANESIAN +MANGANIC +MANGANIN +MANGANINS +MANGANITE +MANGANITES +MANGANOUS +MANGAS +MANGE +MANGEL +MANGELS +MANGER +MANGERS +MANGES +MANGEY +MANGIER +MANGIEST +MANGILY +MANGINESS +MANGINESSES +MANGLE +MANGLED +MANGLER +MANGLERS +MANGLES +MANGLING +MANGO +MANGOES +MANGOLD +MANGOLDS +MANGONEL +MANGONELS +MANGOS +MANGOSTEEN +MANGOSTEENS +MANGROVE +MANGROVES +MANGY +MANHANDLE +MANHANDLED +MANHANDLES +MANHANDLING +MANHATTAN +MANHATTANS +MANHOLE +MANHOLES +MANHOOD +MANHOODS +MANHUNT +MANHUNTS +MANIA +MANIAC +MANIACAL +MANIACALLY +MANIACS +MANIAS +MANIC +MANICALLY +MANICOTTI +MANICOTTIS +MANICS +MANICURE +MANICURED +MANICURES +MANICURING +MANICURIST +MANICURISTS +MANIFEST +MANIFESTANT +MANIFESTANTS +MANIFESTATION +MANIFESTATIONS +MANIFESTED +MANIFESTER +MANIFESTERS +MANIFESTING +MANIFESTLY +MANIFESTO +MANIFESTOED +MANIFESTOES +MANIFESTOING +MANIFESTOS +MANIFESTS +MANIFOLD +MANIFOLDED +MANIFOLDING +MANIFOLDLY +MANIFOLDNESS +MANIFOLDNESSES +MANIFOLDS +MANIHOT +MANIHOTS +MANIKIN +MANIKINS +MANILA +MANILAS +MANILLA +MANILLAS +MANILLE +MANILLES +MANIOC +MANIOCA +MANIOCAS +MANIOCS +MANIPLE +MANIPLES +MANIPULABILITY +MANIPULABLE +MANIPULAR +MANIPULARS +MANIPULATABLE +MANIPULATE +MANIPULATED +MANIPULATES +MANIPULATING +MANIPULATION +MANIPULATIONS +MANIPULATIVE +MANIPULATIVELY +MANIPULATOR +MANIPULATORS +MANIPULATORY +MANITO +MANITOS +MANITOU +MANITOUS +MANITU +MANITUS +MANKIND +MANLESS +MANLIER +MANLIEST +MANLIKE +MANLIKELY +MANLILY +MANLINESS +MANLINESSES +MANLY +MANMADE +MANNA +MANNAN +MANNANS +MANNAS +MANNED +MANNEQUIN +MANNEQUINS +MANNER +MANNERED +MANNERISM +MANNERISMS +MANNERIST +MANNERISTIC +MANNERISTS +MANNERLESS +MANNERLINESS +MANNERLINESSES +MANNERLY +MANNERS +MANNIKIN +MANNIKINS +MANNING +MANNISH +MANNISHLY +MANNISHNESS +MANNISHNESSES +MANNITE +MANNITES +MANNITIC +MANNITOL +MANNITOLS +MANNOSE +MANNOSES +MANO +MANOEUVRE +MANOEUVRED +MANOEUVRES +MANOEUVRING +MANOMETER +MANOMETERS +MANOMETRIC +MANOMETRICALLY +MANOMETRIES +MANOMETRY +MANOR +MANORIAL +MANORIALISM +MANORIALISMS +MANORS +MANOS +MANPACK +MANPOWER +MANPOWERS +MANQUE +MANROPE +MANROPES +MANS +MANSARD +MANSARDED +MANSARDS +MANSE +MANSERVANT +MANSES +MANSION +MANSIONS +MANSLAUGHTER +MANSLAUGHTERS +MANSLAYER +MANSLAYERS +MANSUETUDE +MANSUETUDES +MANTA +MANTAS +MANTEAU +MANTEAUS +MANTEAUX +MANTEL +MANTELET +MANTELETS +MANTELPIECE +MANTELPIECES +MANTELS +MANTELSHELF +MANTELSHELVES +MANTES +MANTIC +MANTICORE +MANTICORES +MANTID +MANTIDS +MANTILLA +MANTILLAS +MANTIS +MANTISES +MANTISSA +MANTISSAS +MANTLE +MANTLED +MANTLES +MANTLET +MANTLETS +MANTLING +MANTLINGS +MANTRA +MANTRAM +MANTRAMS +MANTRAP +MANTRAPS +MANTRAS +MANTRIC +MANTUA +MANTUAS +MANUAL +MANUALLY +MANUALS +MANUARY +MANUBRIA +MANUBRIAL +MANUBRIUM +MANUBRIUMS +MANUFACTORIES +MANUFACTORY +MANUFACTURE +MANUFACTURED +MANUFACTURER +MANUFACTURERS +MANUFACTURES +MANUFACTURING +MANUFACTURINGS +MANUMISSION +MANUMISSIONS +MANUMIT +MANUMITS +MANUMITTED +MANUMITTING +MANURE +MANURED +MANURER +MANURERS +MANURES +MANURIAL +MANURING +MANUS +MANUSCRIPT +MANUSCRIPTS +MANWARD +MANWARDS +MANWISE +MANY +MANYFOLD +MANYPLIES +MANZANITA +MANZANITAS +MAP +MAPLE +MAPLELIKE +MAPLES +MAPLIKE +MAPMAKER +MAPMAKERS +MAPMAKING +MAPMAKINGS +MAPPABLE +MAPPED +MAPPER +MAPPERS +MAPPING +MAPPINGS +MAPS +MAQUETTE +MAQUETTES +MAQUI +MAQUILA +MAQUILADORA +MAQUILADORAS +MAQUILAS +MAQUILLAGE +MAQUILLAGES +MAQUIS +MAR +MARA +MARABOU +MARABOUS +MARABOUT +MARABOUTS +MARACA +MARACAS +MARANATHA +MARANATHAS +MARANTA +MARANTAS +MARAS +MARASCA +MARASCAS +MARASCHINO +MARASCHINOS +MARASMIC +MARASMOID +MARASMUS +MARASMUSES +MARATHON +MARATHONER +MARATHONERS +MARATHONING +MARATHONINGS +MARATHONS +MARAUD +MARAUDED +MARAUDER +MARAUDERS +MARAUDING +MARAUDS +MARAVEDI +MARAVEDIS +MARBELIZE +MARBELIZED +MARBELIZES +MARBELIZING +MARBLE +MARBLED +MARBLEISE +MARBLEISED +MARBLEISES +MARBLEISING +MARBLEIZE +MARBLEIZED +MARBLEIZES +MARBLEIZING +MARBLER +MARBLERS +MARBLES +MARBLIER +MARBLIEST +MARBLING +MARBLINGS +MARBLY +MARC +MARCASITE +MARCASITES +MARCATO +MARCATOS +MARCEL +MARCELLED +MARCELLER +MARCELLERS +MARCELLING +MARCELS +MARCH +MARCHED +MARCHEN +MARCHER +MARCHERS +MARCHES +MARCHESA +MARCHESE +MARCHESI +MARCHING +MARCHIONESS +MARCHIONESSES +MARCHLAND +MARCHLANDS +MARCHLIKE +MARCHPANE +MARCHPANES +MARCS +MARE +MAREMMA +MAREMME +MARENGO +MARES +MARGARIC +MARGARIN +MARGARINE +MARGARINES +MARGARINS +MARGARITA +MARGARITAS +MARGARITE +MARGARITES +MARGAY +MARGAYS +MARGE +MARGENT +MARGENTED +MARGENTING +MARGENTS +MARGES +MARGIN +MARGINAL +MARGINALIA +MARGINALITIES +MARGINALITY +MARGINALIZATION +MARGINALIZE +MARGINALIZED +MARGINALIZES +MARGINALIZING +MARGINALLY +MARGINALS +MARGINATE +MARGINATED +MARGINATES +MARGINATING +MARGINATION +MARGINATIONS +MARGINED +MARGINING +MARGINS +MARGRAVATE +MARGRAVATES +MARGRAVE +MARGRAVES +MARGRAVIAL +MARGRAVIATE +MARGRAVIATES +MARGRAVINE +MARGRAVINES +MARGUERITE +MARGUERITES +MARIA +MARIACHI +MARIACHIS +MARICULTURE +MARICULTURES +MARICULTURIST +MARICULTURISTS +MARIGOLD +MARIGOLDS +MARIHUANA +MARIHUANAS +MARIJUANA +MARIJUANAS +MARIMBA +MARIMBAS +MARIMBIST +MARIMBISTS +MARINA +MARINADE +MARINADED +MARINADES +MARINADING +MARINARA +MARINARAS +MARINAS +MARINATE +MARINATED +MARINATES +MARINATING +MARINATION +MARINATIONS +MARINE +MARINER +MARINERS +MARINES +MARIONETTE +MARIONETTES +MARIPOSA +MARIPOSAS +MARISH +MARISHES +MARITAL +MARITALLY +MARITIME +MARJORAM +MARJORAMS +MARK +MARKA +MARKAS +MARKDOWN +MARKDOWNS +MARKED +MARKEDLY +MARKEDNESS +MARKEDNESSES +MARKER +MARKERS +MARKET +MARKETABILITIES +MARKETABILITY +MARKETABLE +MARKETED +MARKETEER +MARKETEERS +MARKETER +MARKETERS +MARKETING +MARKETINGS +MARKETPLACE +MARKETPLACES +MARKETS +MARKHOOR +MARKHOORS +MARKHOR +MARKHORS +MARKING +MARKINGS +MARKKA +MARKKAA +MARKKAS +MARKS +MARKSMAN +MARKSMANSHIP +MARKSMANSHIPS +MARKSMEN +MARKSWOMAN +MARKSWOMEN +MARKUP +MARKUPS +MARL +MARLED +MARLIER +MARLIEST +MARLIN +MARLINE +MARLINES +MARLINESPIKE +MARLINESPIKES +MARLING +MARLINGS +MARLINS +MARLINSPIKE +MARLINSPIKES +MARLITE +MARLITES +MARLITIC +MARLS +MARLSTONE +MARLSTONES +MARLY +MARMALADE +MARMALADES +MARMITE +MARMITES +MARMOREAL +MARMOREALLY +MARMOREAN +MARMOSET +MARMOSETS +MARMOT +MARMOTS +MAROCAIN +MAROCAINS +MAROON +MAROONED +MAROONING +MAROONS +MARPLOT +MARPLOTS +MARQUE +MARQUEE +MARQUEES +MARQUES +MARQUESS +MARQUESSATE +MARQUESSATES +MARQUESSES +MARQUETERIE +MARQUETERIES +MARQUETRIES +MARQUETRY +MARQUIS +MARQUISATE +MARQUISATES +MARQUISE +MARQUISES +MARQUISETTE +MARQUISETTES +MARRAM +MARRAMS +MARRANO +MARRANOS +MARRED +MARRER +MARRERS +MARRIAGE +MARRIAGEABILITY +MARRIAGEABLE +MARRIAGES +MARRIED +MARRIEDS +MARRIER +MARRIERS +MARRIES +MARRING +MARRON +MARRONS +MARROW +MARROWBONE +MARROWBONES +MARROWED +MARROWFAT +MARROWFATS +MARROWING +MARROWS +MARROWY +MARRY +MARRYING +MARS +MARSALA +MARSALAS +MARSE +MARSEILLE +MARSEILLES +MARSES +MARSH +MARSHAL +MARSHALCIES +MARSHALCY +MARSHALED +MARSHALING +MARSHALL +MARSHALLED +MARSHALLING +MARSHALLS +MARSHALS +MARSHALSHIP +MARSHALSHIPS +MARSHES +MARSHIER +MARSHIEST +MARSHINESS +MARSHINESSES +MARSHLAND +MARSHLANDS +MARSHLIKE +MARSHMALLOW +MARSHMALLOWS +MARSHMALLOWY +MARSHY +MARSUPIA +MARSUPIAL +MARSUPIALS +MARSUPIUM +MART +MARTAGON +MARTAGONS +MARTED +MARTELLO +MARTELLOS +MARTEN +MARTENS +MARTENSITE +MARTENSITES +MARTENSITIC +MARTENSITICALLY +MARTIAL +MARTIALLY +MARTIAN +MARTIANS +MARTIN +MARTINET +MARTINETS +MARTING +MARTINGAL +MARTINGALE +MARTINGALES +MARTINGALS +MARTINI +MARTINIS +MARTINS +MARTLET +MARTLETS +MARTS +MARTYR +MARTYRDOM +MARTYRDOMS +MARTYRED +MARTYRIES +MARTYRING +MARTYRIZATION +MARTYRIZATIONS +MARTYRIZE +MARTYRIZED +MARTYRIZES +MARTYRIZING +MARTYRLY +MARTYROLOGIES +MARTYROLOGIST +MARTYROLOGISTS +MARTYROLOGY +MARTYRS +MARTYRY +MARVEL +MARVELED +MARVELING +MARVELLED +MARVELLING +MARVELLOUS +MARVELOUS +MARVELOUSLY +MARVELOUSNESS +MARVELOUSNESSES +MARVELS +MARVY +MARYJANE +MARYJANES +MARZIPAN +MARZIPANS +MAS +MASA +MASALA +MASALAS +MASAS +MASCARA +MASCARAED +MASCARAING +MASCARAS +MASCARPONE +MASCARPONES +MASCON +MASCONS +MASCOT +MASCOTS +MASCULINE +MASCULINELY +MASCULINES +MASCULINISE +MASCULINISED +MASCULINISES +MASCULINISING +MASCULINIST +MASCULINISTS +MASCULINITIES +MASCULINITY +MASCULINIZATION +MASCULINIZE +MASCULINIZED +MASCULINIZES +MASCULINIZING +MASER +MASERS +MASH +MASHED +MASHER +MASHERS +MASHES +MASHGIACH +MASHGIAH +MASHGICHIM +MASHGIHIM +MASHIE +MASHIES +MASHING +MASHY +MASJID +MASJIDS +MASK +MASKABLE +MASKED +MASKEG +MASKEGS +MASKER +MASKERS +MASKING +MASKINGS +MASKLIKE +MASKS +MASOCHISM +MASOCHISMS +MASOCHIST +MASOCHISTIC +MASOCHISTICALLY +MASOCHISTS +MASON +MASONED +MASONIC +MASONING +MASONITE +MASONITES +MASONRIES +MASONRY +MASONS +MASQUE +MASQUER +MASQUERADE +MASQUERADED +MASQUERADER +MASQUERADERS +MASQUERADES +MASQUERADING +MASQUERS +MASQUES +MASS +MASSA +MASSACRE +MASSACRED +MASSACRER +MASSACRERS +MASSACRES +MASSACRING +MASSAGE +MASSAGED +MASSAGER +MASSAGERS +MASSAGES +MASSAGING +MASSAS +MASSASAUGA +MASSASAUGAS +MASSCULT +MASSCULTS +MASSE +MASSED +MASSEDLY +MASSES +MASSETER +MASSETERIC +MASSETERS +MASSEUR +MASSEURS +MASSEUSE +MASSEUSES +MASSICOT +MASSICOTS +MASSIER +MASSIEST +MASSIF +MASSIFS +MASSINESS +MASSINESSES +MASSING +MASSIVE +MASSIVELY +MASSIVENESS +MASSIVENESSES +MASSLESS +MASSY +MAST +MASTABA +MASTABAH +MASTABAHS +MASTABAS +MASTECTOMIES +MASTECTOMY +MASTED +MASTER +MASTERDOM +MASTERDOMS +MASTERED +MASTERFUL +MASTERFULLY +MASTERFULNESS +MASTERFULNESSES +MASTERIES +MASTERING +MASTERLINESS +MASTERLINESSES +MASTERLY +MASTERMIND +MASTERMINDED +MASTERMINDING +MASTERMINDS +MASTERPIECE +MASTERPIECES +MASTERS +MASTERSHIP +MASTERSHIPS +MASTERSINGER +MASTERSINGERS +MASTERSTROKE +MASTERSTROKES +MASTERWORK +MASTERWORKS +MASTERY +MASTHEAD +MASTHEADED +MASTHEADING +MASTHEADS +MASTIC +MASTICATE +MASTICATED +MASTICATES +MASTICATING +MASTICATION +MASTICATIONS +MASTICATOR +MASTICATORIES +MASTICATORS +MASTICATORY +MASTICHE +MASTICHES +MASTICS +MASTIFF +MASTIFFS +MASTIGOPHORAN +MASTIGOPHORANS +MASTING +MASTITIC +MASTITIDES +MASTITIS +MASTIX +MASTIXES +MASTLESS +MASTLIKE +MASTODON +MASTODONIC +MASTODONS +MASTODONT +MASTODONTS +MASTOID +MASTOIDECTOMIES +MASTOIDECTOMY +MASTOIDITIS +MASTOIDITISES +MASTOIDS +MASTOPEXIES +MASTOPEXY +MASTS +MASTURBATE +MASTURBATED +MASTURBATES +MASTURBATING +MASTURBATION +MASTURBATIONS +MASTURBATOR +MASTURBATORS +MASTURBATORY +MASURIUM +MASURIUMS +MAT +MATADOR +MATADORS +MATAMBALA +MATCH +MATCHABLE +MATCHBOARD +MATCHBOARDS +MATCHBOOK +MATCHBOOKS +MATCHBOX +MATCHBOXES +MATCHED +MATCHER +MATCHERS +MATCHES +MATCHING +MATCHLESS +MATCHLESSLY +MATCHLOCK +MATCHLOCKS +MATCHMADE +MATCHMAKE +MATCHMAKER +MATCHMAKERS +MATCHMAKES +MATCHMAKING +MATCHMAKINGS +MATCHMARK +MATCHMARKED +MATCHMARKING +MATCHMARKS +MATCHSTICK +MATCHSTICKS +MATCHUP +MATCHUPS +MATCHWOOD +MATCHWOODS +MATE +MATED +MATELASSE +MATELASSES +MATELESS +MATELOT +MATELOTE +MATELOTES +MATELOTS +MATER +MATERFAMILIAS +MATERFAMILIASES +MATERIAL +MATERIALISE +MATERIALISED +MATERIALISES +MATERIALISING +MATERIALISM +MATERIALISMS +MATERIALIST +MATERIALISTIC +MATERIALISTS +MATERIALITIES +MATERIALITY +MATERIALIZATION +MATERIALIZE +MATERIALIZED +MATERIALIZER +MATERIALIZERS +MATERIALIZES +MATERIALIZING +MATERIALLY +MATERIALNESS +MATERIALNESSES +MATERIALS +MATERIEL +MATERIELS +MATERNAL +MATERNALLY +MATERNITIES +MATERNITY +MATERS +MATES +MATESHIP +MATESHIPS +MATEY +MATEYNESS +MATEYNESSES +MATEYS +MATH +MATHEMATIC +MATHEMATICAL +MATHEMATICALLY +MATHEMATICIAN +MATHEMATICIANS +MATHEMATICS +MATHEMATIZATION +MATHEMATIZE +MATHEMATIZED +MATHEMATIZES +MATHEMATIZING +MATHS +MATIER +MATIEST +MATILDA +MATILDAS +MATIN +MATINAL +MATINEE +MATINEES +MATINESS +MATINESSES +MATING +MATINGS +MATINS +MATLESS +MATRASS +MATRASSES +MATRES +MATRIARCH +MATRIARCHAL +MATRIARCHATE +MATRIARCHATES +MATRIARCHIES +MATRIARCHS +MATRIARCHY +MATRICES +MATRICIDAL +MATRICIDE +MATRICIDES +MATRICULANT +MATRICULANTS +MATRICULATE +MATRICULATED +MATRICULATES +MATRICULATING +MATRICULATION +MATRICULATIONS +MATRILINEAL +MATRILINEALLY +MATRIMONIAL +MATRIMONIALLY +MATRIMONIES +MATRIMONY +MATRIX +MATRIXES +MATRON +MATRONAL +MATRONIZE +MATRONIZED +MATRONIZES +MATRONIZING +MATRONLY +MATRONS +MATRONYMIC +MATRONYMICS +MATS +MATSAH +MATSAHS +MATSUTAKE +MATSUTAKES +MATT +MATTE +MATTED +MATTEDLY +MATTER +MATTERED +MATTERFUL +MATTERING +MATTERS +MATTERY +MATTES +MATTIN +MATTING +MATTINGS +MATTINS +MATTOCK +MATTOCKS +MATTOID +MATTOIDS +MATTRASS +MATTRASSES +MATTRESS +MATTRESSES +MATTS +MATURATE +MATURATED +MATURATES +MATURATING +MATURATION +MATURATIONAL +MATURATIONS +MATURE +MATURED +MATURELY +MATURER +MATURERS +MATURES +MATUREST +MATURING +MATURITIES +MATURITY +MATUTINAL +MATUTINALLY +MATZA +MATZAH +MATZAHS +MATZAS +MATZO +MATZOH +MATZOHS +MATZOON +MATZOONS +MATZOS +MATZOT +MATZOTH +MAUD +MAUDLIN +MAUDLINLY +MAUDS +MAUGER +MAUGRE +MAUL +MAULED +MAULER +MAULERS +MAULING +MAULS +MAULSTICK +MAULSTICKS +MAUMET +MAUMETRIES +MAUMETRY +MAUMETS +MAUN +MAUND +MAUNDER +MAUNDERED +MAUNDERER +MAUNDERERS +MAUNDERING +MAUNDERS +MAUNDIES +MAUNDS +MAUNDY +MAUSOLEA +MAUSOLEAN +MAUSOLEUM +MAUSOLEUMS +MAUT +MAUTS +MAUVE +MAUVES +MAVEN +MAVENS +MAVERICK +MAVERICKS +MAVIE +MAVIES +MAVIN +MAVINS +MAVIS +MAVISES +MAVOURNEEN +MAVOURNEENS +MAVOURNIN +MAVOURNINS +MAW +MAWED +MAWING +MAWKISH +MAWKISHLY +MAWKISHNESS +MAWKISHNESSES +MAWN +MAWS +MAX +MAXED +MAXES +MAXI +MAXICOAT +MAXICOATS +MAXILLA +MAXILLAE +MAXILLARIES +MAXILLARY +MAXILLAS +MAXILLIPED +MAXILLIPEDS +MAXILLOFACIAL +MAXIM +MAXIMA +MAXIMAL +MAXIMALIST +MAXIMALISTS +MAXIMALLY +MAXIMALS +MAXIMIN +MAXIMINS +MAXIMISE +MAXIMISED +MAXIMISES +MAXIMISING +MAXIMITE +MAXIMITES +MAXIMIZATION +MAXIMIZATIONS +MAXIMIZE +MAXIMIZED +MAXIMIZER +MAXIMIZERS +MAXIMIZES +MAXIMIZING +MAXIMS +MAXIMUM +MAXIMUMLY +MAXIMUMS +MAXING +MAXIS +MAXIXE +MAXIXES +MAXWELL +MAXWELLS +MAY +MAYA +MAYAN +MAYAPPLE +MAYAPPLES +MAYAS +MAYBE +MAYBES +MAYBIRD +MAYBIRDS +MAYBUSH +MAYBUSHES +MAYDAY +MAYDAYS +MAYED +MAYEST +MAYFLIES +MAYFLOWER +MAYFLOWERS +MAYFLY +MAYHAP +MAYHAPPEN +MAYHEM +MAYHEMS +MAYING +MAYINGS +MAYO +MAYONNAISE +MAYONNAISES +MAYOR +MAYORAL +MAYORALTIES +MAYORALTY +MAYORESS +MAYORESSES +MAYORS +MAYORSHIP +MAYORSHIPS +MAYOS +MAYPOLE +MAYPOLES +MAYPOP +MAYPOPS +MAYS +MAYST +MAYVIN +MAYVINS +MAYWEED +MAYWEEDS +MAZAEDIA +MAZAEDIUM +MAZARD +MAZARDS +MAZE +MAZED +MAZEDLY +MAZEDNESS +MAZEDNESSES +MAZELIKE +MAZELTOV +MAZER +MAZERS +MAZES +MAZIER +MAZIEST +MAZILY +MAZINESS +MAZINESSES +MAZING +MAZOURKA +MAZOURKAS +MAZUMA +MAZUMAS +MAZURKA +MAZURKAS +MAZY +MAZZARD +MAZZARDS +MBAQANGA +MBAQANGAS +MBIRA +MBIRAS +ME +MEAD +MEADOW +MEADOWLAND +MEADOWLANDS +MEADOWLARK +MEADOWLARKS +MEADOWS +MEADOWSWEET +MEADOWSWEETS +MEADOWY +MEADS +MEAGER +MEAGERLY +MEAGERNESS +MEAGERNESSES +MEAGRE +MEAGRELY +MEAL +MEALIE +MEALIER +MEALIES +MEALIEST +MEALINESS +MEALINESSES +MEALLESS +MEALS +MEALTIME +MEALTIMES +MEALWORM +MEALWORMS +MEALY +MEALYBUG +MEALYBUGS +MEALYMOUTHED +MEAN +MEANDER +MEANDERED +MEANDERER +MEANDERERS +MEANDERING +MEANDERS +MEANDROUS +MEANER +MEANERS +MEANEST +MEANIE +MEANIES +MEANING +MEANINGFUL +MEANINGFULLY +MEANINGFULNESS +MEANINGLESS +MEANINGLESSLY +MEANINGLESSNESS +MEANINGLY +MEANINGS +MEANLY +MEANNESS +MEANNESSES +MEANS +MEANT +MEANTIME +MEANTIMES +MEANWHILE +MEANWHILES +MEANY +MEASLE +MEASLED +MEASLES +MEASLIER +MEASLIEST +MEASLY +MEASURABILITIES +MEASURABILITY +MEASURABLE +MEASURABLY +MEASURE +MEASURED +MEASUREDLY +MEASURELESS +MEASUREMENT +MEASUREMENTS +MEASURER +MEASURERS +MEASURES +MEASURING +MEAT +MEATAL +MEATBALL +MEATBALLS +MEATED +MEATHEAD +MEATHEADS +MEATIER +MEATIEST +MEATILY +MEATINESS +MEATINESSES +MEATLESS +MEATLOAF +MEATLOAVES +MEATMAN +MEATMEN +MEATPACKING +MEATPACKINGS +MEATS +MEATUS +MEATUSES +MEATY +MECAMYLAMINE +MECAMYLAMINES +MECCA +MECCAS +MECHANIC +MECHANICAL +MECHANICALLY +MECHANICALS +MECHANICIAN +MECHANICIANS +MECHANICS +MECHANISM +MECHANISMS +MECHANIST +MECHANISTIC +MECHANISTICALLY +MECHANISTS +MECHANIZABLE +MECHANIZATION +MECHANIZATIONS +MECHANIZE +MECHANIZED +MECHANIZER +MECHANIZERS +MECHANIZES +MECHANIZING +MECHANOCHEMICAL +MECHANORECEPTOR +MECHITZA +MECHITZAS +MECHITZOT +MECLIZINE +MECLIZINES +MECONIUM +MECONIUMS +MED +MEDAILLON +MEDAILLONS +MEDAKA +MEDAKAS +MEDAL +MEDALED +MEDALING +MEDALIST +MEDALISTS +MEDALLED +MEDALLIC +MEDALLING +MEDALLION +MEDALLIONS +MEDALLIST +MEDALLISTS +MEDALS +MEDDLE +MEDDLED +MEDDLER +MEDDLERS +MEDDLES +MEDDLESOME +MEDDLESOMENESS +MEDDLING +MEDEVAC +MEDEVACED +MEDEVACING +MEDEVACKED +MEDEVACKING +MEDEVACS +MEDFLIES +MEDFLY +MEDIA +MEDIACIES +MEDIACY +MEDIAD +MEDIAE +MEDIAEVAL +MEDIAEVALS +MEDIAGENIC +MEDIAL +MEDIALLY +MEDIALS +MEDIAN +MEDIANLY +MEDIANS +MEDIANT +MEDIANTS +MEDIAS +MEDIASTINA +MEDIASTINAL +MEDIASTINUM +MEDIATE +MEDIATED +MEDIATELY +MEDIATES +MEDIATING +MEDIATION +MEDIATIONAL +MEDIATIONS +MEDIATIVE +MEDIATIZE +MEDIATIZED +MEDIATIZES +MEDIATIZING +MEDIATOR +MEDIATORS +MEDIATORY +MEDIATRICES +MEDIATRIX +MEDIATRIXES +MEDIC +MEDICABLE +MEDICAID +MEDICAIDS +MEDICAL +MEDICALLY +MEDICALS +MEDICAMENT +MEDICAMENTOUS +MEDICAMENTS +MEDICANT +MEDICANTS +MEDICARE +MEDICARES +MEDICATE +MEDICATED +MEDICATES +MEDICATING +MEDICATION +MEDICATIONS +MEDICIDE +MEDICIDES +MEDICINABLE +MEDICINAL +MEDICINALLY +MEDICINALS +MEDICINE +MEDICINED +MEDICINES +MEDICINING +MEDICK +MEDICKS +MEDICO +MEDICOLEGAL +MEDICOS +MEDICS +MEDIEVAL +MEDIEVALISM +MEDIEVALISMS +MEDIEVALIST +MEDIEVALISTS +MEDIEVALLY +MEDIEVALS +MEDIGAP +MEDIGAPS +MEDII +MEDINA +MEDINAS +MEDIOCRE +MEDIOCRITIES +MEDIOCRITY +MEDITATE +MEDITATED +MEDITATES +MEDITATING +MEDITATION +MEDITATIONS +MEDITATIVE +MEDITATIVELY +MEDITATIVENESS +MEDITATOR +MEDITATORS +MEDITERRANEAN +MEDIUM +MEDIUMISTIC +MEDIUMS +MEDIUMSHIP +MEDIUMSHIPS +MEDIUS +MEDIVAC +MEDIVACED +MEDIVACING +MEDIVACKED +MEDIVACKING +MEDIVACS +MEDLAR +MEDLARS +MEDLEY +MEDLEYS +MEDS +MEDULLA +MEDULLAE +MEDULLAR +MEDULLARY +MEDULLAS +MEDULLATED +MEDULLOBLASTOMA +MEDUSA +MEDUSAE +MEDUSAL +MEDUSAN +MEDUSANS +MEDUSAS +MEDUSOID +MEDUSOIDS +MEED +MEEDS +MEEK +MEEKER +MEEKEST +MEEKLY +MEEKNESS +MEEKNESSES +MEERKAT +MEERKATS +MEERSCHAUM +MEERSCHAUMS +MEET +MEETER +MEETERS +MEETING +MEETINGHOUSE +MEETINGHOUSES +MEETINGS +MEETLY +MEETNESS +MEETNESSES +MEETS +MEG +MEGA +MEGABAR +MEGABARS +MEGABIT +MEGABITS +MEGABUCK +MEGABUCKS +MEGABYTE +MEGABYTES +MEGACITIES +MEGACITY +MEGACORPORATION +MEGACYCLE +MEGACYCLES +MEGADEAL +MEGADEALS +MEGADEATH +MEGADEATHS +MEGADOSE +MEGADOSES +MEGADYNE +MEGADYNES +MEGAFAUNA +MEGAFAUNAE +MEGAFAUNAL +MEGAFAUNAS +MEGAFLOP +MEGAFLOPS +MEGAGAMETE +MEGAGAMETES +MEGAGAMETOPHYTE +MEGAHERTZ +MEGAHERTZES +MEGAHIT +MEGAHITS +MEGAKARYOCYTE +MEGAKARYOCYTES +MEGAKARYOCYTIC +MEGALITH +MEGALITHIC +MEGALITHS +MEGALOBLAST +MEGALOBLASTIC +MEGALOBLASTS +MEGALOMANIA +MEGALOMANIAC +MEGALOMANIACAL +MEGALOMANIACS +MEGALOMANIAS +MEGALOMANIC +MEGALOPIC +MEGALOPOLIS +MEGALOPOLISES +MEGALOPOLITAN +MEGALOPOLITANS +MEGALOPS +MEGALOPSES +MEGAPARSEC +MEGAPARSECS +MEGAPHONE +MEGAPHONED +MEGAPHONES +MEGAPHONIC +MEGAPHONING +MEGAPIXEL +MEGAPIXELS +MEGAPLEX +MEGAPLEXES +MEGAPOD +MEGAPODE +MEGAPODES +MEGAPODS +MEGAPROJECT +MEGAPROJECTS +MEGARA +MEGARON +MEGASCOPIC +MEGASCOPICALLY +MEGASPORANGIA +MEGASPORANGIUM +MEGASPORE +MEGASPORES +MEGASPORIC +MEGASPOROPHYLL +MEGASPOROPHYLLS +MEGASS +MEGASSE +MEGASSES +MEGASTAR +MEGASTARS +MEGATHERE +MEGATHERES +MEGATON +MEGATONNAGE +MEGATONNAGES +MEGATONS +MEGAVITAMIN +MEGAVITAMINS +MEGAVOLT +MEGAVOLTS +MEGAWATT +MEGAWATTS +MEGILLA +MEGILLAH +MEGILLAHS +MEGILLAS +MEGILP +MEGILPH +MEGILPHS +MEGILPS +MEGOHM +MEGOHMS +MEGRIM +MEGRIMS +MEGS +MEHNDI +MEHNDIS +MEIKLE +MEINIE +MEINIES +MEINY +MEIOSES +MEIOSIS +MEIOTIC +MEIOTICALLY +MEISTER +MEISTERS +MEITNERIUM +MEITNERIUMS +MEL +MELALEUCA +MELALEUCAS +MELAMDIM +MELAMED +MELAMINE +MELAMINES +MELANCHOLIA +MELANCHOLIAC +MELANCHOLIACS +MELANCHOLIAS +MELANCHOLIC +MELANCHOLICS +MELANCHOLIES +MELANCHOLY +MELANGE +MELANGES +MELANIAN +MELANIC +MELANICS +MELANIN +MELANINS +MELANISM +MELANISMS +MELANIST +MELANISTIC +MELANISTS +MELANITE +MELANITES +MELANITIC +MELANIZATION +MELANIZATIONS +MELANIZE +MELANIZED +MELANIZES +MELANIZING +MELANOBLAST +MELANOBLASTS +MELANOCYTE +MELANOCYTES +MELANOGENESES +MELANOGENESIS +MELANOID +MELANOIDS +MELANOMA +MELANOMAS +MELANOMATA +MELANOPHORE +MELANOPHORES +MELANOSES +MELANOSIS +MELANOSOME +MELANOSOMES +MELANOTIC +MELANOUS +MELAPHYRE +MELAPHYRES +MELASTOME +MELATONIN +MELATONINS +MELD +MELDED +MELDER +MELDERS +MELDING +MELDS +MELEE +MELEES +MELENA +MELENAS +MELIC +MELILITE +MELILITES +MELILOT +MELILOTS +MELINITE +MELINITES +MELIORATE +MELIORATED +MELIORATES +MELIORATING +MELIORATION +MELIORATIONS +MELIORATIVE +MELIORATOR +MELIORATORS +MELIORISM +MELIORISMS +MELIORIST +MELIORISTIC +MELIORISTS +MELISMA +MELISMAS +MELISMATA +MELISMATIC +MELL +MELLED +MELLIFIC +MELLIFLUENT +MELLIFLUENTLY +MELLIFLUOUS +MELLIFLUOUSLY +MELLIFLUOUSNESS +MELLING +MELLOPHONE +MELLOPHONES +MELLOTRON +MELLOTRONS +MELLOW +MELLOWED +MELLOWER +MELLOWEST +MELLOWING +MELLOWLY +MELLOWNESS +MELLOWNESSES +MELLOWS +MELLS +MELODEON +MELODEONS +MELODIA +MELODIAS +MELODIC +MELODICA +MELODICALLY +MELODICAS +MELODIES +MELODIOUS +MELODIOUSLY +MELODIOUSNESS +MELODIOUSNESSES +MELODISE +MELODISED +MELODISES +MELODISING +MELODIST +MELODISTS +MELODIZE +MELODIZED +MELODIZER +MELODIZERS +MELODIZES +MELODIZING +MELODRAMA +MELODRAMAS +MELODRAMATIC +MELODRAMATICS +MELODRAMATISE +MELODRAMATISED +MELODRAMATISES +MELODRAMATISING +MELODRAMATIST +MELODRAMATISTS +MELODRAMATIZE +MELODRAMATIZED +MELODRAMATIZES +MELODRAMATIZING +MELODY +MELOID +MELOIDS +MELON +MELONGENE +MELONGENES +MELONS +MELPHALAN +MELPHALANS +MELS +MELT +MELTABILITIES +MELTABILITY +MELTABLE +MELTAGE +MELTAGES +MELTDOWN +MELTDOWNS +MELTED +MELTER +MELTERS +MELTING +MELTINGLY +MELTON +MELTONS +MELTS +MELTWATER +MELTWATERS +MELTY +MEM +MEMBER +MEMBERED +MEMBERS +MEMBERSHIP +MEMBERSHIPS +MEMBRANAL +MEMBRANE +MEMBRANED +MEMBRANES +MEMBRANOUS +MEMBRANOUSLY +MEME +MEMENTO +MEMENTOES +MEMENTOS +MEMES +MEMETICS +MEMO +MEMOIR +MEMOIRIST +MEMOIRISTS +MEMOIRS +MEMORABILIA +MEMORABILITIES +MEMORABILITY +MEMORABLE +MEMORABLENESS +MEMORABLENESSES +MEMORABLY +MEMORANDA +MEMORANDUM +MEMORANDUMS +MEMORIAL +MEMORIALISE +MEMORIALISED +MEMORIALISES +MEMORIALISING +MEMORIALIST +MEMORIALISTS +MEMORIALIZE +MEMORIALIZED +MEMORIALIZES +MEMORIALIZING +MEMORIALLY +MEMORIALS +MEMORIES +MEMORISE +MEMORISED +MEMORISES +MEMORISING +MEMORITER +MEMORIZABLE +MEMORIZATION +MEMORIZATIONS +MEMORIZE +MEMORIZED +MEMORIZER +MEMORIZERS +MEMORIZES +MEMORIZING +MEMORY +MEMOS +MEMS +MEMSAHIB +MEMSAHIBS +MEN +MENACE +MENACED +MENACER +MENACERS +MENACES +MENACING +MENACINGLY +MENAD +MENADIONE +MENADIONES +MENADS +MENAGE +MENAGERIE +MENAGERIES +MENAGES +MENARCHE +MENARCHEAL +MENARCHES +MENAZON +MENAZONS +MEND +MENDABLE +MENDACIOUS +MENDACIOUSLY +MENDACIOUSNESS +MENDACITIES +MENDACITY +MENDED +MENDELEVIUM +MENDELEVIUMS +MENDER +MENDERS +MENDICANCIES +MENDICANCY +MENDICANT +MENDICANTS +MENDICITIES +MENDICITY +MENDIGO +MENDIGOS +MENDING +MENDINGS +MENDS +MENFOLK +MENFOLKS +MENHADEN +MENHADENS +MENHIR +MENHIRS +MENIAL +MENIALLY +MENIALS +MENINGEAL +MENINGES +MENINGIOMA +MENINGIOMAS +MENINGIOMATA +MENINGITIC +MENINGITIDES +MENINGITIS +MENINGOCOCCAL +MENINGOCOCCI +MENINGOCOCCIC +MENINGOCOCCUS +MENINX +MENISCAL +MENISCATE +MENISCI +MENISCOID +MENISCUS +MENISCUSES +MENO +MENOLOGIES +MENOLOGY +MENOPAUSAL +MENOPAUSE +MENOPAUSES +MENORAH +MENORAHS +MENORRHAGIA +MENORRHAGIAS +MENORRHEA +MENORRHEAS +MENSA +MENSAE +MENSAL +MENSAS +MENSCH +MENSCHEN +MENSCHES +MENSCHY +MENSE +MENSED +MENSEFUL +MENSELESS +MENSERVANTS +MENSES +MENSH +MENSHEN +MENSHES +MENSING +MENSTRUA +MENSTRUAL +MENSTRUALLY +MENSTRUATE +MENSTRUATED +MENSTRUATES +MENSTRUATING +MENSTRUATION +MENSTRUATIONS +MENSTRUUM +MENSTRUUMS +MENSURABILITIES +MENSURABILITY +MENSURABLE +MENSURAL +MENSURATION +MENSURATIONS +MENSWEAR +MENTA +MENTAL +MENTALESE +MENTALESES +MENTALISM +MENTALISMS +MENTALIST +MENTALISTIC +MENTALISTS +MENTALITIES +MENTALITY +MENTALLY +MENTATION +MENTATIONS +MENTEE +MENTEES +MENTHENE +MENTHENES +MENTHOL +MENTHOLATED +MENTHOLS +MENTION +MENTIONABLE +MENTIONED +MENTIONER +MENTIONERS +MENTIONING +MENTIONS +MENTOR +MENTORED +MENTORING +MENTORS +MENTORSHIP +MENTORSHIPS +MENTUM +MENU +MENUDO +MENUDOS +MENUS +MEOU +MEOUED +MEOUING +MEOUS +MEOW +MEOWED +MEOWING +MEOWS +MEPERIDINE +MEPERIDINES +MEPHITIC +MEPHITIS +MEPHITISES +MEPROBAMATE +MEPROBAMATES +MERBROMIN +MERBROMINS +MERC +MERCANTILE +MERCANTILISM +MERCANTILISMS +MERCANTILIST +MERCANTILISTIC +MERCANTILISTS +MERCAPTAN +MERCAPTANS +MERCAPTO +MERCAPTOPURINE +MERCAPTOPURINES +MERCENARIES +MERCENARILY +MERCENARINESS +MERCENARINESSES +MERCENARY +MERCER +MERCERIES +MERCERISE +MERCERISED +MERCERISES +MERCERISING +MERCERIZATION +MERCERIZATIONS +MERCERIZE +MERCERIZED +MERCERIZES +MERCERIZING +MERCERS +MERCERY +MERCES +MERCH +MERCHANDISE +MERCHANDISED +MERCHANDISER +MERCHANDISERS +MERCHANDISES +MERCHANDISING +MERCHANDISINGS +MERCHANDIZE +MERCHANDIZED +MERCHANDIZES +MERCHANDIZING +MERCHANDIZINGS +MERCHANT +MERCHANTABILITY +MERCHANTABLE +MERCHANTED +MERCHANTING +MERCHANTMAN +MERCHANTMEN +MERCHANTS +MERCHES +MERCIES +MERCIFUL +MERCIFULLY +MERCIFULNESS +MERCIFULNESSES +MERCILESS +MERCILESSLY +MERCILESSNESS +MERCILESSNESSES +MERCS +MERCURATE +MERCURATED +MERCURATES +MERCURATING +MERCURATION +MERCURATIONS +MERCURIAL +MERCURIALLY +MERCURIALNESS +MERCURIALNESSES +MERCURIALS +MERCURIC +MERCURIES +MERCUROUS +MERCURY +MERCY +MERDE +MERDES +MERE +MERELY +MERENGUE +MERENGUES +MERER +MERES +MEREST +MERETRICIOUS +MERETRICIOUSLY +MERGANSER +MERGANSERS +MERGE +MERGED +MERGEE +MERGEES +MERGENCE +MERGENCES +MERGER +MERGERS +MERGES +MERGING +MERIDIAN +MERIDIANS +MERIDIONAL +MERIDIONALLY +MERIDIONALS +MERINGUE +MERINGUES +MERINO +MERINOS +MERISES +MERISIS +MERISTEM +MERISTEMATIC +MERISTEMS +MERISTIC +MERISTICALLY +MERIT +MERITED +MERITING +MERITLESS +MERITOCRACIES +MERITOCRACY +MERITOCRAT +MERITOCRATIC +MERITOCRATS +MERITORIOUS +MERITORIOUSLY +MERITORIOUSNESS +MERITS +MERK +MERKS +MERL +MERLE +MERLES +MERLIN +MERLINS +MERLON +MERLONS +MERLOT +MERLOTS +MERLS +MERMAID +MERMAIDS +MERMAN +MERMEN +MEROBLASTIC +MEROBLASTICALLY +MEROCRINE +MEROMORPHIC +MEROMYOSIN +MEROMYOSINS +MEROPIA +MEROPIAS +MEROPIC +MEROZOITE +MEROZOITES +MERRIER +MERRIEST +MERRILY +MERRIMENT +MERRIMENTS +MERRINESS +MERRINESSES +MERRY +MERRYMAKER +MERRYMAKERS +MERRYMAKING +MERRYMAKINGS +MERRYTHOUGHT +MERRYTHOUGHTS +MESA +MESALLIANCE +MESALLIANCES +MESALLY +MESARCH +MESAS +MESCAL +MESCALINE +MESCALINES +MESCALS +MESCLUN +MESCLUNS +MESDAMES +MESDEMOISELLES +MESEEMED +MESEEMETH +MESEEMS +MESENCEPHALA +MESENCEPHALIC +MESENCEPHALON +MESENCHYMAL +MESENCHYME +MESENCHYMES +MESENTERA +MESENTERIC +MESENTERIES +MESENTERON +MESENTERY +MESH +MESHED +MESHES +MESHIER +MESHIEST +MESHING +MESHUGA +MESHUGAAS +MESHUGAH +MESHUGGA +MESHUGGAH +MESHUGGE +MESHUGGENER +MESHUGGENERS +MESHWORK +MESHWORKS +MESHY +MESIAL +MESIALLY +MESIAN +MESIC +MESICALLY +MESMERIC +MESMERICALLY +MESMERISE +MESMERISED +MESMERISES +MESMERISING +MESMERISM +MESMERISMS +MESMERIST +MESMERISTS +MESMERIZE +MESMERIZED +MESMERIZER +MESMERIZERS +MESMERIZES +MESMERIZING +MESNALTIES +MESNALTY +MESNE +MESNES +MESOBLAST +MESOBLASTS +MESOCARP +MESOCARPS +MESOCRANIES +MESOCRANY +MESOCYCLONE +MESOCYCLONES +MESODERM +MESODERMAL +MESODERMS +MESOGLEA +MESOGLEAL +MESOGLEAS +MESOGLOEA +MESOGLOEAS +MESOMERE +MESOMERES +MESOMORPH +MESOMORPHIC +MESOMORPHIES +MESOMORPHS +MESOMORPHY +MESON +MESONEPHRIC +MESONEPHROI +MESONEPHROS +MESONIC +MESONS +MESOPAUSE +MESOPAUSES +MESOPELAGIC +MESOPHYL +MESOPHYLL +MESOPHYLLIC +MESOPHYLLOUS +MESOPHYLLS +MESOPHYLS +MESOPHYTE +MESOPHYTES +MESOPHYTIC +MESOSCALE +MESOSOME +MESOSOMES +MESOSPHERE +MESOSPHERES +MESOSPHERIC +MESOTHELIA +MESOTHELIAL +MESOTHELIOMA +MESOTHELIOMAS +MESOTHELIOMATA +MESOTHELIUM +MESOTHORACES +MESOTHORACIC +MESOTHORAX +MESOTHORAXES +MESOTRON +MESOTRONS +MESOTROPHIC +MESOZOAN +MESOZOANS +MESOZOIC +MESQUIT +MESQUITE +MESQUITES +MESQUITS +MESS +MESSAGE +MESSAGED +MESSAGES +MESSAGING +MESSALINE +MESSALINES +MESSAN +MESSANS +MESSED +MESSEIGNEURS +MESSENGER +MESSENGERED +MESSENGERING +MESSENGERS +MESSES +MESSIAH +MESSIAHS +MESSIAHSHIP +MESSIAHSHIPS +MESSIANIC +MESSIANISM +MESSIANISMS +MESSIER +MESSIEST +MESSIEURS +MESSILY +MESSINESS +MESSINESSES +MESSING +MESSMAN +MESSMATE +MESSMATES +MESSMEN +MESSUAGE +MESSUAGES +MESSY +MESTEE +MESTEES +MESTESO +MESTESOES +MESTESOS +MESTINO +MESTINOES +MESTINOS +MESTIZA +MESTIZAS +MESTIZO +MESTIZOES +MESTIZOS +MESTRANOL +MESTRANOLS +MET +META +METABOLIC +METABOLICALLY +METABOLISM +METABOLISMS +METABOLITE +METABOLITES +METABOLIZABLE +METABOLIZE +METABOLIZED +METABOLIZES +METABOLIZING +METACARPAL +METACARPALS +METACARPI +METACARPUS +METACENTER +METACENTERS +METACENTRIC +METACENTRICS +METACERCARIA +METACERCARIAE +METACERCARIAL +METACHROMATIC +METAETHICAL +METAETHICS +METAFICTION +METAFICTIONAL +METAFICTIONIST +METAFICTIONISTS +METAFICTIONS +METAGALACTIC +METAGALAXIES +METAGALAXY +METAGE +METAGENESES +METAGENESIS +METAGENETIC +METAGENIC +METAGES +METAL +METALANGUAGE +METALANGUAGES +METALED +METALHEAD +METALHEADS +METALING +METALINGUISTIC +METALINGUISTICS +METALISE +METALISED +METALISES +METALISING +METALIST +METALISTS +METALIZE +METALIZED +METALIZES +METALIZING +METALLED +METALLIC +METALLICALLY +METALLICS +METALLIFEROUS +METALLIKE +METALLINE +METALLING +METALLIST +METALLISTS +METALLIZATION +METALLIZATIONS +METALLIZE +METALLIZED +METALLIZES +METALLIZING +METALLOGRAPHER +METALLOGRAPHERS +METALLOGRAPHIC +METALLOGRAPHIES +METALLOGRAPHY +METALLOID +METALLOIDAL +METALLOIDS +METALLOPHONE +METALLOPHONES +METALLURGICAL +METALLURGICALLY +METALLURGIES +METALLURGIST +METALLURGISTS +METALLURGY +METALMARK +METALMARKS +METALS +METALSMITH +METALSMITHS +METALWARE +METALWARES +METALWORK +METALWORKER +METALWORKERS +METALWORKING +METALWORKINGS +METALWORKS +METAMATHEMATICS +METAMER +METAMERE +METAMERES +METAMERIC +METAMERICALLY +METAMERISM +METAMERISMS +METAMERS +METAMORPHIC +METAMORPHICALLY +METAMORPHISM +METAMORPHISMS +METAMORPHOSE +METAMORPHOSED +METAMORPHOSES +METAMORPHOSING +METAMORPHOSIS +METANALYSES +METANALYSIS +METANEPHRIC +METANEPHROI +METANEPHROS +METAPHASE +METAPHASES +METAPHOR +METAPHORIC +METAPHORICAL +METAPHORICALLY +METAPHORS +METAPHOSPHATE +METAPHOSPHATES +METAPHRASE +METAPHRASES +METAPHYSIC +METAPHYSICAL +METAPHYSICALLY +METAPHYSICIAN +METAPHYSICIANS +METAPHYSICS +METAPLASIA +METAPLASIAS +METAPLASM +METAPLASMS +METAPLASTIC +METAPSYCHOLOGY +METASEQUOIA +METASEQUOIAS +METASOMATIC +METASOMATISM +METASOMATISMS +METASTABILITIES +METASTABILITY +METASTABLE +METASTABLY +METASTASES +METASTASIS +METASTASIZE +METASTASIZED +METASTASIZES +METASTASIZING +METASTATIC +METASTATICALLY +METATAG +METATAGS +METATARSAL +METATARSALS +METATARSI +METATARSUS +METATE +METATES +METATHESES +METATHESIS +METATHETIC +METATHETICAL +METATHETICALLY +METATHORACES +METATHORACIC +METATHORAX +METATHORAXES +METAXYLEM +METAXYLEMS +METAZOA +METAZOAL +METAZOAN +METAZOANS +METAZOIC +METAZOON +METE +METED +METEMPSYCHOSES +METEMPSYCHOSIS +METENCEPHALA +METENCEPHALIC +METENCEPHALON +METEOR +METEORIC +METEORICALLY +METEORITE +METEORITES +METEORITIC +METEORITICAL +METEORITICIST +METEORITICISTS +METEORITICS +METEOROID +METEOROIDAL +METEOROIDS +METEOROLOGIC +METEOROLOGICAL +METEOROLOGIES +METEOROLOGIST +METEOROLOGISTS +METEOROLOGY +METEORS +METEPA +METEPAS +METER +METERAGE +METERAGES +METERED +METERING +METERS +METERSTICK +METERSTICKS +METES +METESTRUS +METESTRUSES +METFORMIN +METFORMINS +METH +METHACRYLATE +METHACRYLATES +METHADON +METHADONE +METHADONES +METHADONS +METHAMPHETAMINE +METHANATION +METHANATIONS +METHANE +METHANES +METHANOL +METHANOLS +METHAQUALONE +METHAQUALONES +METHEDRINE +METHEDRINES +METHEGLIN +METHEGLINS +METHEMOGLOBIN +METHEMOGLOBINS +METHENAMINE +METHENAMINES +METHICILLIN +METHICILLINS +METHINKS +METHIONINE +METHIONINES +METHOD +METHODIC +METHODICAL +METHODICALLY +METHODICALNESS +METHODISE +METHODISED +METHODISES +METHODISING +METHODISM +METHODISMS +METHODIST +METHODISTIC +METHODISTS +METHODIZE +METHODIZED +METHODIZES +METHODIZING +METHODOLOGICAL +METHODOLOGIES +METHODOLOGIST +METHODOLOGISTS +METHODOLOGY +METHODS +METHOTREXATE +METHOTREXATES +METHOUGHT +METHOXIDE +METHOXIDES +METHOXY +METHOXYCHLOR +METHOXYCHLORS +METHOXYFLURANE +METHOXYFLURANES +METHOXYL +METHS +METHYL +METHYLAL +METHYLALS +METHYLAMINE +METHYLAMINES +METHYLASE +METHYLASES +METHYLATE +METHYLATED +METHYLATES +METHYLATING +METHYLATION +METHYLATIONS +METHYLATOR +METHYLATORS +METHYLCELLULOSE +METHYLDOPA +METHYLDOPAS +METHYLENE +METHYLENES +METHYLIC +METHYLMERCURIES +METHYLMERCURY +METHYLPHENIDATE +METHYLS +METHYLXANTHINE +METHYLXANTHINES +METHYSERGIDE +METHYSERGIDES +METICAIS +METICAL +METICALS +METICULOSITIES +METICULOSITY +METICULOUS +METICULOUSLY +METICULOUSNESS +METIER +METIERS +METING +METIS +METISSE +METISSES +METOL +METOLS +METONYM +METONYMIC +METONYMICAL +METONYMIES +METONYMS +METONYMY +METOPAE +METOPE +METOPES +METOPIC +METOPON +METOPONS +METRALGIA +METRALGIAS +METRAZOL +METRAZOLS +METRE +METRED +METRES +METRIC +METRICAL +METRICALLY +METRICATE +METRICATED +METRICATES +METRICATING +METRICATION +METRICATIONS +METRICISM +METRICISMS +METRICIZE +METRICIZED +METRICIZES +METRICIZING +METRICS +METRIFIED +METRIFIES +METRIFY +METRIFYING +METRING +METRIST +METRISTS +METRITIS +METRITISES +METRO +METROLOGICAL +METROLOGIES +METROLOGIST +METROLOGISTS +METROLOGY +METRONIDAZOLE +METRONIDAZOLES +METRONOME +METRONOMES +METRONOMIC +METRONOMICAL +METRONOMICALLY +METROPLEX +METROPLEXES +METROPOLIS +METROPOLISES +METROPOLITAN +METROPOLITANS +METRORRHAGIA +METRORRHAGIAS +METROS +METTLE +METTLED +METTLES +METTLESOME +METUMP +METUMPS +MEUNIERE +MEW +MEWED +MEWING +MEWL +MEWLED +MEWLER +MEWLERS +MEWLING +MEWLS +MEWS +MEZCAL +MEZCALS +MEZE +MEZEREON +MEZEREONS +MEZEREUM +MEZEREUMS +MEZES +MEZQUIT +MEZQUITE +MEZQUITES +MEZQUITS +MEZUZA +MEZUZAH +MEZUZAHS +MEZUZAS +MEZUZOT +MEZUZOTH +MEZZALUNA +MEZZALUNAS +MEZZANINE +MEZZANINES +MEZZO +MEZZOS +MEZZOTINT +MEZZOTINTED +MEZZOTINTING +MEZZOTINTS +MHO +MHOS +MI +MIAOU +MIAOUED +MIAOUING +MIAOUS +MIAOW +MIAOWED +MIAOWING +MIAOWS +MIASM +MIASMA +MIASMAL +MIASMAS +MIASMATA +MIASMATIC +MIASMIC +MIASMICALLY +MIASMS +MIAUL +MIAULED +MIAULING +MIAULS +MIB +MIBS +MIC +MICA +MICACEOUS +MICAS +MICAWBER +MICAWBERS +MICE +MICELL +MICELLA +MICELLAE +MICELLAR +MICELLE +MICELLES +MICELLS +MICHE +MICHED +MICHES +MICHING +MICK +MICKEY +MICKEYS +MICKLE +MICKLER +MICKLES +MICKLEST +MICKS +MICRA +MICRIFIED +MICRIFIES +MICRIFY +MICRIFYING +MICRO +MICROAMPERE +MICROAMPERES +MICROANALYSES +MICROANALYSIS +MICROANALYST +MICROANALYSTS +MICROANALYTIC +MICROANALYTICAL +MICROANATOMICAL +MICROANATOMIES +MICROANATOMY +MICROBALANCE +MICROBALANCES +MICROBAR +MICROBAROGRAPH +MICROBAROGRAPHS +MICROBARS +MICROBE +MICROBEAM +MICROBEAMS +MICROBES +MICROBIAL +MICROBIAN +MICROBIC +MICROBIOLOGIC +MICROBIOLOGICAL +MICROBIOLOGIES +MICROBIOLOGIST +MICROBIOLOGISTS +MICROBIOLOGY +MICROBREW +MICROBREWER +MICROBREWERIES +MICROBREWERS +MICROBREWERY +MICROBREWING +MICROBREWINGS +MICROBREWS +MICROBURST +MICROBURSTS +MICROBUS +MICROBUSES +MICROBUSSES +MICROCAP +MICROCAPSULE +MICROCAPSULES +MICROCASSETTE +MICROCASSETTES +MICROCEPHALIC +MICROCEPHALICS +MICROCEPHALIES +MICROCEPHALY +MICROCHIP +MICROCHIPS +MICROCIRCUIT +MICROCIRCUITRY +MICROCIRCUITS +MICROCLIMATE +MICROCLIMATES +MICROCLIMATIC +MICROCLINE +MICROCLINES +MICROCOCCAL +MICROCOCCI +MICROCOCCUS +MICROCODE +MICROCODES +MICROCOMPUTER +MICROCOMPUTERS +MICROCOPIES +MICROCOPY +MICROCOSM +MICROCOSMIC +MICROCOSMICALLY +MICROCOSMOS +MICROCOSMOSES +MICROCOSMS +MICROCRYSTAL +MICROCRYSTALS +MICROCULTURAL +MICROCULTURE +MICROCULTURES +MICROCURIE +MICROCURIES +MICROCYTE +MICROCYTES +MICROCYTIC +MICRODISSECTION +MICRODONT +MICRODOT +MICRODOTS +MICROEARTHQUAKE +MICROECONOMIC +MICROECONOMICS +MICROELECTRODE +MICROELECTRODES +MICROELECTRONIC +MICROELEMENT +MICROELEMENTS +MICROEVOLUTION +MICROEVOLUTIONS +MICROFARAD +MICROFARADS +MICROFAUNA +MICROFAUNAE +MICROFAUNAL +MICROFAUNAS +MICROFIBRIL +MICROFIBRILLAR +MICROFIBRILS +MICROFICHE +MICROFICHES +MICROFILAMENT +MICROFILAMENTS +MICROFILARIA +MICROFILARIAE +MICROFILARIAL +MICROFILM +MICROFILMABLE +MICROFILMED +MICROFILMER +MICROFILMERS +MICROFILMING +MICROFILMS +MICROFLORA +MICROFLORAE +MICROFLORAL +MICROFLORAS +MICROFORM +MICROFORMS +MICROFOSSIL +MICROFOSSILS +MICROFUNGI +MICROFUNGUS +MICROGAMETE +MICROGAMETES +MICROGAMETOCYTE +MICROGRAM +MICROGRAMS +MICROGRAPH +MICROGRAPHED +MICROGRAPHIC +MICROGRAPHICS +MICROGRAPHING +MICROGRAPHS +MICROGRAVITIES +MICROGRAVITY +MICROGROOVE +MICROGROOVES +MICROHABITAT +MICROHABITATS +MICROHM +MICROHMS +MICROIMAGE +MICROIMAGES +MICROINCH +MICROINCHES +MICROINJECT +MICROINJECTED +MICROINJECTING +MICROINJECTION +MICROINJECTIONS +MICROINJECTS +MICROLITER +MICROLITERS +MICROLITH +MICROLITHIC +MICROLITHS +MICROLOAN +MICROLOANS +MICROLUCES +MICROLUX +MICROLUXES +MICROMANAGE +MICROMANAGED +MICROMANAGEMENT +MICROMANAGER +MICROMANAGERS +MICROMANAGES +MICROMANAGING +MICROMERE +MICROMERES +MICROMETEORITE +MICROMETEORITES +MICROMETEORITIC +MICROMETEOROID +MICROMETEOROIDS +MICROMETER +MICROMETERS +MICROMETHOD +MICROMETHODS +MICROMHO +MICROMHOS +MICROMINI +MICROMINIATURE +MICROMINIS +MICROMOLAR +MICROMOLE +MICROMOLES +MICROMORPHOLOGY +MICRON +MICRONIZE +MICRONIZED +MICRONIZES +MICRONIZING +MICRONS +MICRONUCLEI +MICRONUCLEUS +MICRONUTRIENT +MICRONUTRIENTS +MICROORGANISM +MICROORGANISMS +MICROPARTICLE +MICROPARTICLES +MICROPHAGE +MICROPHAGES +MICROPHONE +MICROPHONES +MICROPHONIC +MICROPHONICS +MICROPHOTOGRAPH +MICROPHOTOMETER +MICROPHOTOMETRY +MICROPHYLL +MICROPHYLLOUS +MICROPHYLLS +MICROPHYSICAL +MICROPHYSICALLY +MICROPHYSICS +MICROPIPET +MICROPIPETS +MICROPIPETTE +MICROPIPETTES +MICROPLANKTON +MICROPLANKTONS +MICROPORE +MICROPORES +MICROPOROSITIES +MICROPOROSITY +MICROPOROUS +MICROPRISM +MICROPRISMS +MICROPROBE +MICROPROBES +MICROPROCESSOR +MICROPROCESSORS +MICROPROGRAM +MICROPROGRAMS +MICROPROJECTION +MICROPROJECTOR +MICROPROJECTORS +MICROPUBLISHER +MICROPUBLISHERS +MICROPUBLISHING +MICROPULSATION +MICROPULSATIONS +MICROPUNCTURE +MICROPUNCTURES +MICROPYLAR +MICROPYLE +MICROPYLES +MICROQUAKE +MICROQUAKES +MICRORADIOGRAPH +MICROREADER +MICROREADERS +MICROS +MICROSCALE +MICROSCALES +MICROSCOPE +MICROSCOPES +MICROSCOPIC +MICROSCOPICAL +MICROSCOPICALLY +MICROSCOPIES +MICROSCOPIST +MICROSCOPISTS +MICROSCOPY +MICROSECOND +MICROSECONDS +MICROSEISM +MICROSEISMIC +MICROSEISMICITY +MICROSEISMS +MICROSOMAL +MICROSOME +MICROSOMES +MICROSPHERE +MICROSPHERES +MICROSPHERICAL +MICROSPORANGIA +MICROSPORANGIUM +MICROSPORE +MICROSPORES +MICROSPOROCYTE +MICROSPOROCYTES +MICROSPOROPHYLL +MICROSPOROUS +MICROSTATE +MICROSTATES +MICROSTRUCTURAL +MICROSTRUCTURE +MICROSTRUCTURES +MICROSURGERIES +MICROSURGERY +MICROSURGICAL +MICROSWITCH +MICROSWITCHES +MICROTECHNIC +MICROTECHNICS +MICROTECHNIQUE +MICROTECHNIQUES +MICROTOME +MICROTOMES +MICROTOMIES +MICROTOMY +MICROTONAL +MICROTONALITIES +MICROTONALITY +MICROTONALLY +MICROTONE +MICROTONES +MICROTUBULAR +MICROTUBULE +MICROTUBULES +MICROVASCULAR +MICROVILLAR +MICROVILLI +MICROVILLOUS +MICROVILLUS +MICROVOLT +MICROVOLTS +MICROWATT +MICROWATTS +MICROWAVABLE +MICROWAVE +MICROWAVEABLE +MICROWAVED +MICROWAVES +MICROWAVING +MICROWORLD +MICROWORLDS +MICRURGIES +MICRURGY +MICS +MICTURATE +MICTURATED +MICTURATES +MICTURATING +MICTURITION +MICTURITIONS +MID +MIDAIR +MIDAIRS +MIDBRAIN +MIDBRAINS +MIDCAP +MIDCOURSE +MIDCULT +MIDCULTS +MIDDAY +MIDDAYS +MIDDEN +MIDDENS +MIDDIES +MIDDLE +MIDDLEBROW +MIDDLEBROWS +MIDDLED +MIDDLEMAN +MIDDLEMEN +MIDDLER +MIDDLERS +MIDDLES +MIDDLEWEIGHT +MIDDLEWEIGHTS +MIDDLING +MIDDLINGLY +MIDDLINGS +MIDDORSAL +MIDDY +MIDFIELD +MIDFIELDER +MIDFIELDERS +MIDFIELDS +MIDGE +MIDGES +MIDGET +MIDGETS +MIDGUT +MIDGUTS +MIDI +MIDINETTE +MIDINETTES +MIDIRON +MIDIRONS +MIDIS +MIDISKIRT +MIDISKIRTS +MIDLAND +MIDLANDS +MIDLATITUDE +MIDLATITUDES +MIDLEG +MIDLEGS +MIDLIFE +MIDLIFER +MIDLIFERS +MIDLINE +MIDLINES +MIDLIST +MIDLISTS +MIDLIVES +MIDMONTH +MIDMONTHS +MIDMOST +MIDMOSTS +MIDNIGHT +MIDNIGHTLY +MIDNIGHTS +MIDNOON +MIDNOONS +MIDPOINT +MIDPOINTS +MIDRANGE +MIDRANGES +MIDRASH +MIDRASHIC +MIDRASHIM +MIDRASHOT +MIDRASHOTH +MIDRIB +MIDRIBS +MIDRIFF +MIDRIFFS +MIDS +MIDSAGITTAL +MIDSECTION +MIDSECTIONS +MIDSHIP +MIDSHIPMAN +MIDSHIPMEN +MIDSHIPS +MIDSIZE +MIDSIZED +MIDSOLE +MIDSOLES +MIDSPACE +MIDSPACES +MIDST +MIDSTORIES +MIDSTORY +MIDSTREAM +MIDSTREAMS +MIDSTS +MIDSUMMER +MIDSUMMERS +MIDTERM +MIDTERMS +MIDTOWN +MIDTOWNS +MIDWATCH +MIDWATCHES +MIDWAY +MIDWAYS +MIDWEEK +MIDWEEKLY +MIDWEEKS +MIDWIFE +MIDWIFED +MIDWIFERIES +MIDWIFERY +MIDWIFES +MIDWIFING +MIDWINTER +MIDWINTERS +MIDWIVED +MIDWIVES +MIDWIVING +MIDYEAR +MIDYEARS +MIEN +MIENS +MIFEPRISTONE +MIFEPRISTONES +MIFF +MIFFED +MIFFIER +MIFFIEST +MIFFINESS +MIFFINESSES +MIFFING +MIFFS +MIFFY +MIG +MIGG +MIGGLE +MIGGLES +MIGGS +MIGHT +MIGHTIER +MIGHTIEST +MIGHTILY +MIGHTINESS +MIGHTINESSES +MIGHTS +MIGHTY +MIGNON +MIGNONETTE +MIGNONETTES +MIGNONNE +MIGNONS +MIGRAINE +MIGRAINES +MIGRAINOUS +MIGRANT +MIGRANTS +MIGRATE +MIGRATED +MIGRATES +MIGRATING +MIGRATION +MIGRATIONAL +MIGRATIONS +MIGRATOR +MIGRATORS +MIGRATORY +MIGS +MIHRAB +MIHRABS +MIJNHEER +MIJNHEERS +MIKADO +MIKADOS +MIKE +MIKED +MIKES +MIKING +MIKRA +MIKRON +MIKRONS +MIKVAH +MIKVAHS +MIKVEH +MIKVEHS +MIKVOS +MIKVOT +MIKVOTH +MIL +MILADI +MILADIES +MILADIS +MILADY +MILAGE +MILAGES +MILCH +MILCHIG +MILD +MILDED +MILDEN +MILDENED +MILDENING +MILDENS +MILDER +MILDEST +MILDEW +MILDEWED +MILDEWING +MILDEWS +MILDEWY +MILDING +MILDLY +MILDNESS +MILDNESSES +MILDS +MILE +MILEAGE +MILEAGES +MILEPOST +MILEPOSTS +MILER +MILERS +MILES +MILESIAN +MILESIMO +MILESIMOS +MILESTONE +MILESTONES +MILFOIL +MILFOILS +MILIA +MILIARIA +MILIARIAL +MILIARIAS +MILIARY +MILIEU +MILIEUS +MILIEUX +MILITANCE +MILITANCES +MILITANCIES +MILITANCY +MILITANT +MILITANTLY +MILITANTNESS +MILITANTNESSES +MILITANTS +MILITARIA +MILITARIES +MILITARILY +MILITARISE +MILITARISED +MILITARISES +MILITARISING +MILITARISM +MILITARISMS +MILITARIST +MILITARISTIC +MILITARISTS +MILITARIZATION +MILITARIZATIONS +MILITARIZE +MILITARIZED +MILITARIZES +MILITARIZING +MILITARY +MILITATE +MILITATED +MILITATES +MILITATING +MILITIA +MILITIAMAN +MILITIAMEN +MILITIAS +MILIUM +MILK +MILKED +MILKER +MILKERS +MILKFISH +MILKFISHES +MILKIER +MILKIEST +MILKILY +MILKINESS +MILKINESSES +MILKING +MILKLESS +MILKMAID +MILKMAIDS +MILKMAN +MILKMEN +MILKS +MILKSHAKE +MILKSHAKES +MILKSHED +MILKSHEDS +MILKSOP +MILKSOPPY +MILKSOPS +MILKWEED +MILKWEEDS +MILKWOOD +MILKWOODS +MILKWORT +MILKWORTS +MILKY +MILL +MILLABLE +MILLAGE +MILLAGES +MILLBOARD +MILLBOARDS +MILLCAKE +MILLCAKES +MILLDAM +MILLDAMS +MILLE +MILLED +MILLEFIORI +MILLEFIORIS +MILLEFLEUR +MILLEFLEURS +MILLENARIAN +MILLENARIANISM +MILLENARIANISMS +MILLENARIANS +MILLENARIES +MILLENARY +MILLENNIA +MILLENNIAL +MILLENNIALISM +MILLENNIALISMS +MILLENNIALIST +MILLENNIALISTS +MILLENNIUM +MILLENNIUMS +MILLEPED +MILLEPEDE +MILLEPEDES +MILLEPEDS +MILLEPORE +MILLEPORES +MILLER +MILLERITE +MILLERITES +MILLERS +MILLES +MILLESIMAL +MILLESIMALLY +MILLESIMALS +MILLET +MILLETS +MILLHOUSE +MILLHOUSES +MILLIAMPERE +MILLIAMPERES +MILLIARD +MILLIARDS +MILLIARE +MILLIARES +MILLIARIES +MILLIARY +MILLIBAR +MILLIBARS +MILLICURIE +MILLICURIES +MILLIDEGREE +MILLIDEGREES +MILLIEME +MILLIEMES +MILLIER +MILLIERS +MILLIGAL +MILLIGALS +MILLIGRAM +MILLIGRAMS +MILLIHENRIES +MILLIHENRY +MILLIHENRYS +MILLILAMBERT +MILLILAMBERTS +MILLILITER +MILLILITERS +MILLILUCES +MILLILUX +MILLILUXES +MILLIME +MILLIMES +MILLIMETER +MILLIMETERS +MILLIMHO +MILLIMHOS +MILLIMICRON +MILLIMICRONS +MILLIMOLAR +MILLIMOLE +MILLIMOLES +MILLINE +MILLINER +MILLINERIES +MILLINERS +MILLINERY +MILLINES +MILLING +MILLINGS +MILLIOHM +MILLIOHMS +MILLION +MILLIONAIRE +MILLIONAIRES +MILLIONAIRESS +MILLIONAIRESSES +MILLIONFOLD +MILLIONS +MILLIONTH +MILLIONTHS +MILLIOSMOL +MILLIOSMOLS +MILLIPED +MILLIPEDE +MILLIPEDES +MILLIPEDS +MILLIRADIAN +MILLIRADIANS +MILLIREM +MILLIREMS +MILLIROENTGEN +MILLIROENTGENS +MILLISECOND +MILLISECONDS +MILLIVOLT +MILLIVOLTS +MILLIWATT +MILLIWATTS +MILLPOND +MILLPONDS +MILLRACE +MILLRACES +MILLRUN +MILLRUNS +MILLS +MILLSTONE +MILLSTONES +MILLSTREAM +MILLSTREAMS +MILLWORK +MILLWORKS +MILLWRIGHT +MILLWRIGHTS +MILNEB +MILNEBS +MILO +MILORD +MILORDS +MILOS +MILPA +MILPAS +MILREIS +MILS +MILT +MILTED +MILTER +MILTERS +MILTIER +MILTIEST +MILTING +MILTS +MILTY +MIM +MIMBAR +MIMBARS +MIME +MIMED +MIMEO +MIMEOED +MIMEOGRAPH +MIMEOGRAPHED +MIMEOGRAPHING +MIMEOGRAPHS +MIMEOING +MIMEOS +MIMER +MIMERS +MIMES +MIMESES +MIMESIS +MIMESISES +MIMETIC +MIMETICALLY +MIMETITE +MIMETITES +MIMIC +MIMICAL +MIMICKED +MIMICKER +MIMICKERS +MIMICKING +MIMICRIES +MIMICRY +MIMICS +MIMING +MIMOSA +MIMOSAS +MINA +MINABLE +MINACIOUS +MINACITIES +MINACITY +MINAE +MINARET +MINARETED +MINARETS +MINAS +MINATORY +MINAUDIERE +MINAUDIERES +MINCE +MINCED +MINCEMEAT +MINCEMEATS +MINCER +MINCERS +MINCES +MINCIER +MINCIEST +MINCING +MINCINGLY +MINCY +MIND +MINDBLOWER +MINDBLOWERS +MINDED +MINDEDNESS +MINDEDNESSES +MINDER +MINDERS +MINDFUL +MINDFULLY +MINDFULNESS +MINDFULNESSES +MINDING +MINDLESS +MINDLESSLY +MINDLESSNESS +MINDLESSNESSES +MINDS +MINDSET +MINDSETS +MINE +MINEABLE +MINED +MINEFIELD +MINEFIELDS +MINELAYER +MINELAYERS +MINER +MINERAL +MINERALISE +MINERALISED +MINERALISES +MINERALISING +MINERALIZABLE +MINERALIZATION +MINERALIZATIONS +MINERALIZE +MINERALIZED +MINERALIZER +MINERALIZERS +MINERALIZES +MINERALIZING +MINERALOGIC +MINERALOGICAL +MINERALOGICALLY +MINERALOGIES +MINERALOGIST +MINERALOGISTS +MINERALOGY +MINERALS +MINERS +MINES +MINESHAFT +MINESHAFTS +MINESTRONE +MINESTRONES +MINESWEEPER +MINESWEEPERS +MINESWEEPING +MINESWEEPINGS +MINGIER +MINGIEST +MINGLE +MINGLED +MINGLER +MINGLERS +MINGLES +MINGLING +MINGY +MINI +MINIATURE +MINIATURES +MINIATURIST +MINIATURISTIC +MINIATURISTS +MINIATURIZATION +MINIATURIZE +MINIATURIZED +MINIATURIZES +MINIATURIZING +MINIBAR +MINIBARS +MINIBIKE +MINIBIKER +MINIBIKERS +MINIBIKES +MINIBUS +MINIBUSES +MINIBUSSES +MINICAB +MINICABS +MINICAM +MINICAMP +MINICAMPS +MINICAMS +MINICAR +MINICARS +MINICOMPUTER +MINICOMPUTERS +MINICOURSE +MINICOURSES +MINIDISC +MINIDISCS +MINIDRESS +MINIDRESSES +MINIFIED +MINIFIES +MINIFY +MINIFYING +MINIKIN +MINIKINS +MINILAB +MINILABS +MINIM +MINIMA +MINIMAL +MINIMALISM +MINIMALISMS +MINIMALIST +MINIMALISTS +MINIMALLY +MINIMALS +MINIMAX +MINIMAXES +MINIMILL +MINIMILLS +MINIMISE +MINIMISED +MINIMISES +MINIMISING +MINIMIZATION +MINIMIZATIONS +MINIMIZE +MINIMIZED +MINIMIZER +MINIMIZERS +MINIMIZES +MINIMIZING +MINIMS +MINIMUM +MINIMUMS +MINING +MININGS +MINION +MINIONS +MINIPARK +MINIPARKS +MINIPILL +MINIPILLS +MINIS +MINISCHOOL +MINISCHOOLS +MINISCULE +MINISCULES +MINISERIES +MINISH +MINISHED +MINISHES +MINISHING +MINISKI +MINISKIRT +MINISKIRTED +MINISKIRTS +MINISKIS +MINISTATE +MINISTATES +MINISTER +MINISTERED +MINISTERIAL +MINISTERIALLY +MINISTERING +MINISTERS +MINISTRANT +MINISTRANTS +MINISTRATION +MINISTRATIONS +MINISTRIES +MINISTRY +MINITOWER +MINITOWERS +MINITRACK +MINITRACKS +MINIUM +MINIUMS +MINIVAN +MINIVANS +MINIVER +MINIVERS +MINK +MINKE +MINKES +MINKS +MINNESINGER +MINNESINGERS +MINNIES +MINNOW +MINNOWS +MINNY +MINOR +MINORCA +MINORCAS +MINORED +MINORING +MINORITIES +MINORITY +MINORS +MINOXIDIL +MINOXIDILS +MINSTER +MINSTERS +MINSTREL +MINSTRELS +MINSTRELSIES +MINSTRELSY +MINT +MINTAGE +MINTAGES +MINTED +MINTER +MINTERS +MINTIER +MINTIEST +MINTING +MINTS +MINTY +MINUEND +MINUENDS +MINUET +MINUETS +MINUS +MINUSCULE +MINUSCULES +MINUSES +MINUTE +MINUTED +MINUTELY +MINUTEMAN +MINUTEMEN +MINUTENESS +MINUTENESSES +MINUTER +MINUTES +MINUTEST +MINUTIA +MINUTIAE +MINUTIAL +MINUTING +MINX +MINXES +MINXISH +MINYAN +MINYANIM +MINYANS +MIOCENE +MIOSES +MIOSIS +MIOTIC +MIOTICS +MIPS +MIQUELET +MIQUELETS +MIR +MIRABELLE +MIRABELLES +MIRACIDIA +MIRACIDIAL +MIRACIDIUM +MIRACLE +MIRACLES +MIRACULOUS +MIRACULOUSLY +MIRACULOUSNESS +MIRADOR +MIRADORS +MIRAGE +MIRAGES +MIRANDIZE +MIRANDIZED +MIRANDIZES +MIRANDIZING +MIRE +MIRED +MIREPOIX +MIRES +MIREX +MIREXES +MIRI +MIRIER +MIRIEST +MIRIN +MIRINESS +MIRINESSES +MIRING +MIRINS +MIRK +MIRKER +MIRKEST +MIRKIER +MIRKIEST +MIRKILY +MIRKS +MIRKY +MIRLITON +MIRLITONS +MIRROR +MIRRORED +MIRRORING +MIRRORLIKE +MIRRORS +MIRS +MIRTH +MIRTHFUL +MIRTHFULLY +MIRTHFULNESS +MIRTHFULNESSES +MIRTHLESS +MIRTHLESSLY +MIRTHS +MIRY +MIRZA +MIRZAS +MIS +MISACT +MISACTED +MISACTING +MISACTS +MISADAPT +MISADAPTED +MISADAPTING +MISADAPTS +MISADD +MISADDED +MISADDING +MISADDRESS +MISADDRESSED +MISADDRESSES +MISADDRESSING +MISADDS +MISADJUST +MISADJUSTED +MISADJUSTING +MISADJUSTS +MISADVENTURE +MISADVENTURES +MISADVICE +MISADVICES +MISADVISE +MISADVISED +MISADVISES +MISADVISING +MISAGENT +MISAGENTS +MISAIM +MISAIMED +MISAIMING +MISAIMS +MISALIGN +MISALIGNED +MISALIGNING +MISALIGNMENT +MISALIGNMENTS +MISALIGNS +MISALLIANCE +MISALLIANCES +MISALLIED +MISALLIES +MISALLOCATE +MISALLOCATED +MISALLOCATES +MISALLOCATING +MISALLOCATION +MISALLOCATIONS +MISALLOT +MISALLOTS +MISALLOTTED +MISALLOTTING +MISALLY +MISALLYING +MISALTER +MISALTERED +MISALTERING +MISALTERS +MISANALYSES +MISANALYSIS +MISANDRIES +MISANDRY +MISANTHROPE +MISANTHROPES +MISANTHROPIC +MISANTHROPIES +MISANTHROPY +MISAPPLICATION +MISAPPLICATIONS +MISAPPLIED +MISAPPLIES +MISAPPLY +MISAPPLYING +MISAPPRAISAL +MISAPPRAISALS +MISAPPREHEND +MISAPPREHENDED +MISAPPREHENDING +MISAPPREHENDS +MISAPPREHENSION +MISAPPROPRIATE +MISAPPROPRIATED +MISAPPROPRIATES +MISARTICULATE +MISARTICULATED +MISARTICULATES +MISARTICULATING +MISASSAY +MISASSAYED +MISASSAYING +MISASSAYS +MISASSEMBLE +MISASSEMBLED +MISASSEMBLES +MISASSEMBLING +MISASSIGN +MISASSIGNED +MISASSIGNING +MISASSIGNS +MISASSUMPTION +MISASSUMPTIONS +MISATE +MISATONE +MISATONED +MISATONES +MISATONING +MISATTRIBUTE +MISATTRIBUTED +MISATTRIBUTES +MISATTRIBUTING +MISATTRIBUTION +MISATTRIBUTIONS +MISAVER +MISAVERRED +MISAVERRING +MISAVERS +MISAWARD +MISAWARDED +MISAWARDING +MISAWARDS +MISBALANCE +MISBALANCED +MISBALANCES +MISBALANCING +MISBECAME +MISBECOME +MISBECOMES +MISBECOMING +MISBEGAN +MISBEGIN +MISBEGINNING +MISBEGINS +MISBEGOT +MISBEGOTTEN +MISBEGUN +MISBEHAVE +MISBEHAVED +MISBEHAVER +MISBEHAVERS +MISBEHAVES +MISBEHAVING +MISBEHAVIOR +MISBEHAVIORS +MISBELIEF +MISBELIEFS +MISBELIEVE +MISBELIEVED +MISBELIEVER +MISBELIEVERS +MISBELIEVES +MISBELIEVING +MISBIAS +MISBIASED +MISBIASES +MISBIASING +MISBIASSED +MISBIASSES +MISBIASSING +MISBILL +MISBILLED +MISBILLING +MISBILLS +MISBIND +MISBINDING +MISBINDS +MISBOUND +MISBRAND +MISBRANDED +MISBRANDING +MISBRANDS +MISBUILD +MISBUILDING +MISBUILDS +MISBUILT +MISBUTTON +MISBUTTONED +MISBUTTONING +MISBUTTONS +MISCALCULATE +MISCALCULATED +MISCALCULATES +MISCALCULATING +MISCALCULATION +MISCALCULATIONS +MISCALL +MISCALLED +MISCALLER +MISCALLERS +MISCALLING +MISCALLS +MISCAPTION +MISCAPTIONED +MISCAPTIONING +MISCAPTIONS +MISCARRIAGE +MISCARRIAGES +MISCARRIED +MISCARRIES +MISCARRY +MISCARRYING +MISCAST +MISCASTING +MISCASTS +MISCATALOG +MISCATALOGED +MISCATALOGING +MISCATALOGS +MISCEGENATION +MISCEGENATIONAL +MISCEGENATIONS +MISCELLANEA +MISCELLANEOUS +MISCELLANEOUSLY +MISCELLANIES +MISCELLANIST +MISCELLANISTS +MISCELLANY +MISCHANCE +MISCHANCES +MISCHANNEL +MISCHANNELED +MISCHANNELING +MISCHANNELLED +MISCHANNELLING +MISCHANNELS +MISCHARACTERIZE +MISCHARGE +MISCHARGED +MISCHARGES +MISCHARGING +MISCHIEF +MISCHIEFS +MISCHIEVOUS +MISCHIEVOUSLY +MISCHIEVOUSNESS +MISCHOICE +MISCHOICES +MISCHOOSE +MISCHOOSES +MISCHOOSING +MISCHOSE +MISCHOSEN +MISCIBILITIES +MISCIBILITY +MISCIBLE +MISCITATION +MISCITATIONS +MISCITE +MISCITED +MISCITES +MISCITING +MISCLAIM +MISCLAIMED +MISCLAIMING +MISCLAIMS +MISCLASS +MISCLASSED +MISCLASSES +MISCLASSIFIED +MISCLASSIFIES +MISCLASSIFY +MISCLASSIFYING +MISCLASSING +MISCODE +MISCODED +MISCODES +MISCODING +MISCOIN +MISCOINED +MISCOINING +MISCOINS +MISCOLOR +MISCOLORED +MISCOLORING +MISCOLORS +MISCOMPUTATION +MISCOMPUTATIONS +MISCOMPUTE +MISCOMPUTED +MISCOMPUTES +MISCOMPUTING +MISCONCEIVE +MISCONCEIVED +MISCONCEIVER +MISCONCEIVERS +MISCONCEIVES +MISCONCEIVING +MISCONCEPTION +MISCONCEPTIONS +MISCONDUCT +MISCONDUCTED +MISCONDUCTING +MISCONDUCTS +MISCONNECT +MISCONNECTED +MISCONNECTING +MISCONNECTION +MISCONNECTIONS +MISCONNECTS +MISCONSTRUCTION +MISCONSTRUE +MISCONSTRUED +MISCONSTRUES +MISCONSTRUING +MISCOOK +MISCOOKED +MISCOOKING +MISCOOKS +MISCOPIED +MISCOPIES +MISCOPY +MISCOPYING +MISCORRELATION +MISCORRELATIONS +MISCOUNT +MISCOUNTED +MISCOUNTING +MISCOUNTS +MISCREANT +MISCREANTS +MISCREATE +MISCREATED +MISCREATES +MISCREATING +MISCREATION +MISCREATIONS +MISCUE +MISCUED +MISCUES +MISCUING +MISCUT +MISCUTS +MISCUTTING +MISDATE +MISDATED +MISDATES +MISDATING +MISDEAL +MISDEALER +MISDEALERS +MISDEALING +MISDEALS +MISDEALT +MISDEED +MISDEEDS +MISDEEM +MISDEEMED +MISDEEMING +MISDEEMS +MISDEFINE +MISDEFINED +MISDEFINES +MISDEFINING +MISDEMEANANT +MISDEMEANANTS +MISDEMEANOR +MISDEMEANORS +MISDESCRIBE +MISDESCRIBED +MISDESCRIBES +MISDESCRIBING +MISDESCRIPTION +MISDESCRIPTIONS +MISDEVELOP +MISDEVELOPED +MISDEVELOPING +MISDEVELOPS +MISDIAGNOSE +MISDIAGNOSED +MISDIAGNOSES +MISDIAGNOSING +MISDIAGNOSIS +MISDIAL +MISDIALED +MISDIALING +MISDIALLED +MISDIALLING +MISDIALS +MISDID +MISDIRECT +MISDIRECTED +MISDIRECTING +MISDIRECTION +MISDIRECTIONS +MISDIRECTS +MISDISTRIBUTION +MISDIVIDE +MISDIVIDED +MISDIVIDES +MISDIVIDING +MISDIVISION +MISDIVISIONS +MISDO +MISDOER +MISDOERS +MISDOES +MISDOING +MISDOINGS +MISDONE +MISDOUBT +MISDOUBTED +MISDOUBTING +MISDOUBTS +MISDRAW +MISDRAWING +MISDRAWN +MISDRAWS +MISDREW +MISDRIVE +MISDRIVEN +MISDRIVES +MISDRIVING +MISDROVE +MISE +MISEASE +MISEASES +MISEAT +MISEATEN +MISEATING +MISEATS +MISEDIT +MISEDITED +MISEDITING +MISEDITS +MISEDUCATE +MISEDUCATED +MISEDUCATES +MISEDUCATING +MISEDUCATION +MISEDUCATIONS +MISEMPHASES +MISEMPHASIS +MISEMPHASIZE +MISEMPHASIZED +MISEMPHASIZES +MISEMPHASIZING +MISEMPLOY +MISEMPLOYED +MISEMPLOYING +MISEMPLOYMENT +MISEMPLOYMENTS +MISEMPLOYS +MISENROL +MISENROLL +MISENROLLED +MISENROLLING +MISENROLLS +MISENROLS +MISENTER +MISENTERED +MISENTERING +MISENTERS +MISENTRIES +MISENTRY +MISER +MISERABLE +MISERABLENESS +MISERABLENESSES +MISERABLES +MISERABLY +MISERERE +MISERERES +MISERICORD +MISERICORDE +MISERICORDES +MISERICORDS +MISERIES +MISERLINESS +MISERLINESSES +MISERLY +MISERS +MISERY +MISES +MISESTEEM +MISESTEEMED +MISESTEEMING +MISESTEEMS +MISESTIMATE +MISESTIMATED +MISESTIMATES +MISESTIMATING +MISESTIMATION +MISESTIMATIONS +MISEVALUATE +MISEVALUATED +MISEVALUATES +MISEVALUATING +MISEVALUATION +MISEVALUATIONS +MISEVENT +MISEVENTS +MISFAITH +MISFAITHS +MISFEASANCE +MISFEASANCES +MISFEASOR +MISFEASORS +MISFED +MISFEED +MISFEEDING +MISFEEDS +MISFIELD +MISFIELDED +MISFIELDING +MISFIELDS +MISFILE +MISFILED +MISFILES +MISFILING +MISFIRE +MISFIRED +MISFIRES +MISFIRING +MISFIT +MISFITS +MISFITTED +MISFITTING +MISFOCUS +MISFOCUSED +MISFOCUSES +MISFOCUSING +MISFOCUSSED +MISFOCUSSES +MISFOCUSSING +MISFORM +MISFORMED +MISFORMING +MISFORMS +MISFORTUNE +MISFORTUNES +MISFRAME +MISFRAMED +MISFRAMES +MISFRAMING +MISFUNCTION +MISFUNCTIONED +MISFUNCTIONING +MISFUNCTIONS +MISGAUGE +MISGAUGED +MISGAUGES +MISGAUGING +MISGAVE +MISGIVE +MISGIVEN +MISGIVES +MISGIVING +MISGIVINGS +MISGOVERN +MISGOVERNED +MISGOVERNING +MISGOVERNMENT +MISGOVERNMENTS +MISGOVERNS +MISGRADE +MISGRADED +MISGRADES +MISGRADING +MISGRAFT +MISGRAFTED +MISGRAFTING +MISGRAFTS +MISGREW +MISGROW +MISGROWING +MISGROWN +MISGROWS +MISGUESS +MISGUESSED +MISGUESSES +MISGUESSING +MISGUIDANCE +MISGUIDANCES +MISGUIDE +MISGUIDED +MISGUIDEDLY +MISGUIDEDNESS +MISGUIDEDNESSES +MISGUIDER +MISGUIDERS +MISGUIDES +MISGUIDING +MISHANDLE +MISHANDLED +MISHANDLES +MISHANDLING +MISHANTER +MISHANTERS +MISHAP +MISHAPS +MISHEAR +MISHEARD +MISHEARING +MISHEARS +MISHEGAAS +MISHEGOSS +MISHIT +MISHITS +MISHITTING +MISHMASH +MISHMASHES +MISHMOSH +MISHMOSHES +MISIDENTIFIED +MISIDENTIFIES +MISIDENTIFY +MISIDENTIFYING +MISIMPRESSION +MISIMPRESSIONS +MISINFER +MISINFERRED +MISINFERRING +MISINFERS +MISINFORM +MISINFORMATION +MISINFORMATIONS +MISINFORMED +MISINFORMING +MISINFORMS +MISINTER +MISINTERPRET +MISINTERPRETED +MISINTERPRETING +MISINTERPRETS +MISINTERRED +MISINTERRING +MISINTERS +MISJOIN +MISJOINDER +MISJOINDERS +MISJOINED +MISJOINING +MISJOINS +MISJUDGE +MISJUDGED +MISJUDGES +MISJUDGING +MISJUDGMENT +MISJUDGMENTS +MISKAL +MISKALS +MISKEEP +MISKEEPING +MISKEEPS +MISKEPT +MISKICK +MISKICKED +MISKICKING +MISKICKS +MISKNEW +MISKNOW +MISKNOWING +MISKNOWLEDGE +MISKNOWLEDGES +MISKNOWN +MISKNOWS +MISLABEL +MISLABELED +MISLABELING +MISLABELLED +MISLABELLING +MISLABELS +MISLABOR +MISLABORED +MISLABORING +MISLABORS +MISLAID +MISLAIN +MISLAY +MISLAYER +MISLAYERS +MISLAYING +MISLAYS +MISLEAD +MISLEADER +MISLEADERS +MISLEADING +MISLEADINGLY +MISLEADS +MISLEARED +MISLEARN +MISLEARNED +MISLEARNING +MISLEARNS +MISLEARNT +MISLED +MISLIE +MISLIES +MISLIGHT +MISLIGHTED +MISLIGHTING +MISLIGHTS +MISLIKE +MISLIKED +MISLIKER +MISLIKERS +MISLIKES +MISLIKING +MISLIT +MISLIVE +MISLIVED +MISLIVES +MISLIVING +MISLOCATE +MISLOCATED +MISLOCATES +MISLOCATING +MISLOCATION +MISLOCATIONS +MISLODGE +MISLODGED +MISLODGES +MISLODGING +MISLYING +MISMADE +MISMAKE +MISMAKES +MISMAKING +MISMANAGE +MISMANAGED +MISMANAGEMENT +MISMANAGEMENTS +MISMANAGES +MISMANAGING +MISMARK +MISMARKED +MISMARKING +MISMARKS +MISMARRIAGE +MISMARRIAGES +MISMATCH +MISMATCHED +MISMATCHES +MISMATCHING +MISMATE +MISMATED +MISMATES +MISMATING +MISMEET +MISMEETING +MISMEETS +MISMET +MISMOVE +MISMOVED +MISMOVES +MISMOVING +MISNAME +MISNAMED +MISNAMES +MISNAMING +MISNOMER +MISNOMERED +MISNOMERS +MISNUMBER +MISNUMBERED +MISNUMBERING +MISNUMBERS +MISO +MISOGAMIC +MISOGAMIES +MISOGAMIST +MISOGAMISTS +MISOGAMY +MISOGYNIC +MISOGYNIES +MISOGYNIST +MISOGYNISTIC +MISOGYNISTS +MISOGYNY +MISOLOGIES +MISOLOGY +MISONEISM +MISONEISMS +MISONEIST +MISONEISTS +MISORDER +MISORDERED +MISORDERING +MISORDERS +MISORIENT +MISORIENTATION +MISORIENTATIONS +MISORIENTED +MISORIENTING +MISORIENTS +MISOS +MISPACKAGE +MISPACKAGED +MISPACKAGES +MISPACKAGING +MISPAGE +MISPAGED +MISPAGES +MISPAGING +MISPAINT +MISPAINTED +MISPAINTING +MISPAINTS +MISPARSE +MISPARSED +MISPARSES +MISPARSING +MISPART +MISPARTED +MISPARTING +MISPARTS +MISPATCH +MISPATCHED +MISPATCHES +MISPATCHING +MISPEN +MISPENNED +MISPENNING +MISPENS +MISPERCEIVE +MISPERCEIVED +MISPERCEIVES +MISPERCEIVING +MISPERCEPTION +MISPERCEPTIONS +MISPHRASE +MISPHRASED +MISPHRASES +MISPHRASING +MISPICKEL +MISPICKELS +MISPLACE +MISPLACED +MISPLACEMENT +MISPLACEMENTS +MISPLACES +MISPLACING +MISPLAN +MISPLANNED +MISPLANNING +MISPLANS +MISPLANT +MISPLANTED +MISPLANTING +MISPLANTS +MISPLAY +MISPLAYED +MISPLAYING +MISPLAYS +MISPLEAD +MISPLEADED +MISPLEADING +MISPLEADS +MISPLED +MISPOINT +MISPOINTED +MISPOINTING +MISPOINTS +MISPOISE +MISPOISED +MISPOISES +MISPOISING +MISPOSITION +MISPOSITIONED +MISPOSITIONING +MISPOSITIONS +MISPRICE +MISPRICED +MISPRICES +MISPRICING +MISPRINT +MISPRINTED +MISPRINTING +MISPRINTS +MISPRISION +MISPRISIONS +MISPRIZE +MISPRIZED +MISPRIZER +MISPRIZERS +MISPRIZES +MISPRIZING +MISPROGRAM +MISPROGRAMED +MISPROGRAMING +MISPROGRAMMED +MISPROGRAMMING +MISPROGRAMS +MISPRONOUNCE +MISPRONOUNCED +MISPRONOUNCES +MISPRONOUNCING +MISQUOTATION +MISQUOTATIONS +MISQUOTE +MISQUOTED +MISQUOTER +MISQUOTERS +MISQUOTES +MISQUOTING +MISRAISE +MISRAISED +MISRAISES +MISRAISING +MISRATE +MISRATED +MISRATES +MISRATING +MISREAD +MISREADING +MISREADS +MISRECKON +MISRECKONED +MISRECKONING +MISRECKONS +MISRECOLLECTION +MISRECORD +MISRECORDED +MISRECORDING +MISRECORDS +MISREFER +MISREFERENCE +MISREFERENCES +MISREFERRED +MISREFERRING +MISREFERS +MISREGISTER +MISREGISTERED +MISREGISTERING +MISREGISTERS +MISREGISTRATION +MISRELATE +MISRELATED +MISRELATES +MISRELATING +MISRELIED +MISRELIES +MISRELY +MISRELYING +MISREMEMBER +MISREMEMBERED +MISREMEMBERING +MISREMEMBERS +MISRENDER +MISRENDERED +MISRENDERING +MISRENDERS +MISREPORT +MISREPORTED +MISREPORTING +MISREPORTS +MISREPRESENT +MISREPRESENTED +MISREPRESENTING +MISREPRESENTS +MISRHYMED +MISROUTE +MISROUTED +MISROUTES +MISROUTING +MISRULE +MISRULED +MISRULES +MISRULING +MISS +MISSABLE +MISSAID +MISSAL +MISSALS +MISSAY +MISSAYING +MISSAYS +MISSEAT +MISSEATED +MISSEATING +MISSEATS +MISSED +MISSEL +MISSELS +MISSEND +MISSENDING +MISSENDS +MISSENSE +MISSENSES +MISSENT +MISSES +MISSET +MISSETS +MISSETTING +MISSHAPE +MISSHAPED +MISSHAPEN +MISSHAPENLY +MISSHAPER +MISSHAPERS +MISSHAPES +MISSHAPING +MISSHOD +MISSIES +MISSILE +MISSILEER +MISSILEERS +MISSILEMAN +MISSILEMEN +MISSILERIES +MISSILERY +MISSILES +MISSILRIES +MISSILRY +MISSING +MISSIOLOGIES +MISSIOLOGY +MISSION +MISSIONAL +MISSIONARIES +MISSIONARY +MISSIONED +MISSIONER +MISSIONERS +MISSIONING +MISSIONIZATION +MISSIONIZATIONS +MISSIONIZE +MISSIONIZED +MISSIONIZER +MISSIONIZERS +MISSIONIZES +MISSIONIZING +MISSIONS +MISSIS +MISSISES +MISSIVE +MISSIVES +MISSORT +MISSORTED +MISSORTING +MISSORTS +MISSOUND +MISSOUNDED +MISSOUNDING +MISSOUNDS +MISSOUT +MISSOUTS +MISSPACE +MISSPACED +MISSPACES +MISSPACING +MISSPEAK +MISSPEAKING +MISSPEAKS +MISSPELL +MISSPELLED +MISSPELLING +MISSPELLINGS +MISSPELLS +MISSPELT +MISSPEND +MISSPENDING +MISSPENDS +MISSPENT +MISSPOKE +MISSPOKEN +MISSTAMP +MISSTAMPED +MISSTAMPING +MISSTAMPS +MISSTART +MISSTARTED +MISSTARTING +MISSTARTS +MISSTATE +MISSTATED +MISSTATEMENT +MISSTATEMENTS +MISSTATES +MISSTATING +MISSTEER +MISSTEERED +MISSTEERING +MISSTEERS +MISSTEP +MISSTEPPED +MISSTEPPING +MISSTEPS +MISSTOP +MISSTOPPED +MISSTOPPING +MISSTOPS +MISSTRICKEN +MISSTRIKE +MISSTRIKES +MISSTRIKING +MISSTRUCK +MISSTYLE +MISSTYLED +MISSTYLES +MISSTYLING +MISSUIT +MISSUITED +MISSUITING +MISSUITS +MISSUS +MISSUSES +MISSY +MIST +MISTAKABLE +MISTAKE +MISTAKEN +MISTAKENLY +MISTAKER +MISTAKERS +MISTAKES +MISTAKING +MISTAUGHT +MISTBOW +MISTBOWS +MISTEACH +MISTEACHES +MISTEACHING +MISTED +MISTEND +MISTENDED +MISTENDING +MISTENDS +MISTER +MISTERM +MISTERMED +MISTERMING +MISTERMS +MISTERS +MISTEUK +MISTHINK +MISTHINKING +MISTHINKS +MISTHOUGHT +MISTHREW +MISTHROW +MISTHROWING +MISTHROWN +MISTHROWS +MISTIER +MISTIEST +MISTILY +MISTIME +MISTIMED +MISTIMES +MISTIMING +MISTINESS +MISTINESSES +MISTING +MISTITLE +MISTITLED +MISTITLES +MISTITLING +MISTLETOE +MISTLETOES +MISTOOK +MISTOUCH +MISTOUCHED +MISTOUCHES +MISTOUCHING +MISTRACE +MISTRACED +MISTRACES +MISTRACING +MISTRAIN +MISTRAINED +MISTRAINING +MISTRAINS +MISTRAL +MISTRALS +MISTRANSCRIBE +MISTRANSCRIBED +MISTRANSCRIBES +MISTRANSCRIBING +MISTRANSLATE +MISTRANSLATED +MISTRANSLATES +MISTRANSLATING +MISTRANSLATION +MISTRANSLATIONS +MISTREAT +MISTREATED +MISTREATING +MISTREATMENT +MISTREATMENTS +MISTREATS +MISTRESS +MISTRESSES +MISTRIAL +MISTRIALS +MISTRUST +MISTRUSTED +MISTRUSTFUL +MISTRUSTFULLY +MISTRUSTFULNESS +MISTRUSTING +MISTRUSTS +MISTRUTH +MISTRUTHS +MISTRYST +MISTRYSTED +MISTRYSTING +MISTRYSTS +MISTS +MISTUNE +MISTUNED +MISTUNES +MISTUNING +MISTUTOR +MISTUTORED +MISTUTORING +MISTUTORS +MISTY +MISTYPE +MISTYPED +MISTYPES +MISTYPING +MISUNDERSTAND +MISUNDERSTANDS +MISUNDERSTOOD +MISUNION +MISUNIONS +MISUSAGE +MISUSAGES +MISUSE +MISUSED +MISUSER +MISUSERS +MISUSES +MISUSING +MISUTILIZATION +MISUTILIZATIONS +MISVALUE +MISVALUED +MISVALUES +MISVALUING +MISVOCALIZATION +MISWORD +MISWORDED +MISWORDING +MISWORDS +MISWRIT +MISWRITE +MISWRITES +MISWRITING +MISWRITTEN +MISWROTE +MISYOKE +MISYOKED +MISYOKES +MISYOKING +MITE +MITER +MITERED +MITERER +MITERERS +MITERING +MITERS +MITERWORT +MITERWORTS +MITES +MITHER +MITHERS +MITHRIDATE +MITHRIDATES +MITICIDAL +MITICIDE +MITICIDES +MITIER +MITIEST +MITIGABLE +MITIGATE +MITIGATED +MITIGATES +MITIGATING +MITIGATION +MITIGATIONS +MITIGATIVE +MITIGATOR +MITIGATORS +MITIGATORY +MITIS +MITISES +MITOCHONDRIA +MITOCHONDRIAL +MITOCHONDRION +MITOGEN +MITOGENIC +MITOGENICITIES +MITOGENICITY +MITOGENS +MITOMYCIN +MITOMYCINS +MITOSES +MITOSIS +MITOTIC +MITOTICALLY +MITRAL +MITRE +MITRED +MITRES +MITREWORT +MITREWORTS +MITRING +MITSVAH +MITSVAHS +MITSVOTH +MITT +MITTEN +MITTENED +MITTENS +MITTIMUS +MITTIMUSES +MITTS +MITY +MITZVAH +MITZVAHS +MITZVOTH +MIX +MIXABLE +MIXED +MIXEDLY +MIXER +MIXERS +MIXES +MIXIBLE +MIXING +MIXOLOGIES +MIXOLOGIST +MIXOLOGISTS +MIXOLOGY +MIXT +MIXTURE +MIXTURES +MIXUP +MIXUPS +MIZEN +MIZENMAST +MIZENMASTS +MIZENS +MIZUNA +MIZUNAS +MIZZEN +MIZZENMAST +MIZZENMASTS +MIZZENS +MIZZLE +MIZZLED +MIZZLES +MIZZLING +MIZZLY +MM +MNEMONIC +MNEMONICALLY +MNEMONICS +MO +MOA +MOAN +MOANED +MOANER +MOANERS +MOANFUL +MOANING +MOANINGLY +MOANS +MOAS +MOAT +MOATED +MOATING +MOATLIKE +MOATS +MOB +MOBBED +MOBBER +MOBBERS +MOBBING +MOBBISH +MOBBISHLY +MOBBISM +MOBBISMS +MOBCAP +MOBCAPS +MOBILE +MOBILES +MOBILISE +MOBILISED +MOBILISES +MOBILISING +MOBILITIES +MOBILITY +MOBILIZATION +MOBILIZATIONS +MOBILIZE +MOBILIZED +MOBILIZER +MOBILIZERS +MOBILIZES +MOBILIZING +MOBLED +MOBOCRACIES +MOBOCRACY +MOBOCRAT +MOBOCRATIC +MOBOCRATS +MOBS +MOBSTER +MOBSTERS +MOC +MOCCASIN +MOCCASINS +MOCHA +MOCHAS +MOCHILA +MOCHILAS +MOCK +MOCKABLE +MOCKED +MOCKER +MOCKERIES +MOCKERS +MOCKERY +MOCKING +MOCKINGBIRD +MOCKINGBIRDS +MOCKINGLY +MOCKS +MOCKTAIL +MOCKTAILS +MOCKUP +MOCKUPS +MOCS +MOD +MODAL +MODALITIES +MODALITY +MODALLY +MODALS +MODE +MODEL +MODELED +MODELER +MODELERS +MODELING +MODELINGS +MODELIST +MODELISTS +MODELLED +MODELLER +MODELLERS +MODELLING +MODELS +MODEM +MODEMED +MODEMING +MODEMS +MODERATE +MODERATED +MODERATELY +MODERATENESS +MODERATENESSES +MODERATES +MODERATING +MODERATION +MODERATIONS +MODERATO +MODERATOR +MODERATORS +MODERATORSHIP +MODERATORSHIPS +MODERATOS +MODERN +MODERNE +MODERNER +MODERNES +MODERNEST +MODERNISATION +MODERNISATIONS +MODERNISE +MODERNISED +MODERNISES +MODERNISING +MODERNISM +MODERNISMS +MODERNIST +MODERNISTIC +MODERNISTS +MODERNITIES +MODERNITY +MODERNIZATION +MODERNIZATIONS +MODERNIZE +MODERNIZED +MODERNIZER +MODERNIZERS +MODERNIZES +MODERNIZING +MODERNLY +MODERNNESS +MODERNNESSES +MODERNS +MODES +MODEST +MODESTER +MODESTEST +MODESTIES +MODESTLY +MODESTY +MODI +MODICA +MODICUM +MODICUMS +MODIFIABILITIES +MODIFIABILITY +MODIFIABLE +MODIFICATION +MODIFICATIONS +MODIFIED +MODIFIER +MODIFIERS +MODIFIES +MODIFY +MODIFYING +MODILLION +MODILLIONS +MODIOLI +MODIOLUS +MODISH +MODISHLY +MODISHNESS +MODISHNESSES +MODISTE +MODISTES +MODS +MODULABILITIES +MODULABILITY +MODULAR +MODULARITIES +MODULARITY +MODULARIZED +MODULARLY +MODULARS +MODULATE +MODULATED +MODULATES +MODULATING +MODULATION +MODULATIONS +MODULATOR +MODULATORS +MODULATORY +MODULE +MODULES +MODULI +MODULO +MODULUS +MODUS +MOFETTE +MOFETTES +MOFFETTE +MOFFETTES +MOG +MOGGED +MOGGIE +MOGGIES +MOGGING +MOGGY +MOGHUL +MOGHULS +MOGS +MOGUL +MOGULED +MOGULS +MOHAIR +MOHAIRS +MOHALIM +MOHAWK +MOHAWKS +MOHEL +MOHELIM +MOHELS +MOHUR +MOHURS +MOIDORE +MOIDORES +MOIETIES +MOIETY +MOIL +MOILED +MOILER +MOILERS +MOILING +MOILINGLY +MOILS +MOIRA +MOIRAI +MOIRE +MOIRES +MOIST +MOISTEN +MOISTENED +MOISTENER +MOISTENERS +MOISTENING +MOISTENS +MOISTER +MOISTEST +MOISTFUL +MOISTLY +MOISTNESS +MOISTNESSES +MOISTURE +MOISTURES +MOISTURISE +MOISTURISED +MOISTURISES +MOISTURISING +MOISTURIZE +MOISTURIZED +MOISTURIZER +MOISTURIZERS +MOISTURIZES +MOISTURIZING +MOJARRA +MOJARRAS +MOJO +MOJOES +MOJOS +MOKE +MOKES +MOL +MOLA +MOLAL +MOLALITIES +MOLALITY +MOLAR +MOLARITIES +MOLARITY +MOLARS +MOLAS +MOLASSES +MOLASSESES +MOLD +MOLDABLE +MOLDBOARD +MOLDBOARDS +MOLDED +MOLDER +MOLDERED +MOLDERING +MOLDERS +MOLDIER +MOLDIEST +MOLDINESS +MOLDINESSES +MOLDING +MOLDINGS +MOLDS +MOLDWARP +MOLDWARPS +MOLDY +MOLE +MOLECULAR +MOLECULARLY +MOLECULE +MOLECULES +MOLEHILL +MOLEHILLS +MOLES +MOLESKIN +MOLESKINS +MOLEST +MOLESTATION +MOLESTATIONS +MOLESTED +MOLESTER +MOLESTERS +MOLESTING +MOLESTS +MOLIES +MOLINE +MOLL +MOLLAH +MOLLAHS +MOLLIE +MOLLIES +MOLLIFICATION +MOLLIFICATIONS +MOLLIFIED +MOLLIFIER +MOLLIFIERS +MOLLIFIES +MOLLIFY +MOLLIFYING +MOLLS +MOLLUSC +MOLLUSCA +MOLLUSCAN +MOLLUSCANS +MOLLUSCICIDAL +MOLLUSCICIDE +MOLLUSCICIDES +MOLLUSCS +MOLLUSCUM +MOLLUSK +MOLLUSKAN +MOLLUSKANS +MOLLUSKS +MOLLY +MOLLYCODDLE +MOLLYCODDLED +MOLLYCODDLER +MOLLYCODDLERS +MOLLYCODDLES +MOLLYCODDLING +MOLLYMAWK +MOLLYMAWKS +MOLOCH +MOLOCHS +MOLS +MOLT +MOLTED +MOLTEN +MOLTENLY +MOLTER +MOLTERS +MOLTING +MOLTO +MOLTS +MOLY +MOLYBDATE +MOLYBDATES +MOLYBDENITE +MOLYBDENITES +MOLYBDENUM +MOLYBDENUMS +MOLYBDIC +MOLYBDOUS +MOM +MOME +MOMENT +MOMENTA +MOMENTARILY +MOMENTARINESS +MOMENTARINESSES +MOMENTARY +MOMENTLY +MOMENTO +MOMENTOES +MOMENTOS +MOMENTOUS +MOMENTOUSLY +MOMENTOUSNESS +MOMENTOUSNESSES +MOMENTS +MOMENTUM +MOMENTUMS +MOMES +MOMI +MOMISM +MOMISMS +MOMMA +MOMMAS +MOMMIES +MOMMY +MOMS +MOMSER +MOMSERS +MOMUS +MOMUSES +MOMZER +MOMZERS +MON +MONACHAL +MONACHISM +MONACHISMS +MONACID +MONACIDIC +MONACIDS +MONAD +MONADAL +MONADELPHOUS +MONADES +MONADIC +MONADICAL +MONADISM +MONADISMS +MONADNOCK +MONADNOCKS +MONADS +MONANDRIES +MONANDRY +MONARCH +MONARCHAL +MONARCHIAL +MONARCHIC +MONARCHICAL +MONARCHICALLY +MONARCHIES +MONARCHISM +MONARCHISMS +MONARCHIST +MONARCHISTS +MONARCHS +MONARCHY +MONARDA +MONARDAS +MONAS +MONASTERIES +MONASTERY +MONASTIC +MONASTICALLY +MONASTICISM +MONASTICISMS +MONASTICS +MONATOMIC +MONAURAL +MONAURALLY +MONAXIAL +MONAXON +MONAXONS +MONAZITE +MONAZITES +MONDE +MONDES +MONDO +MONDOS +MONECIAN +MONECIOUS +MONELLIN +MONELLINS +MONERAN +MONERANS +MONESTROUS +MONETARILY +MONETARISM +MONETARISMS +MONETARIST +MONETARISTS +MONETARY +MONETISE +MONETISED +MONETISES +MONETISING +MONETIZATION +MONETIZATIONS +MONETIZE +MONETIZED +MONETIZES +MONETIZING +MONEY +MONEYBAG +MONEYBAGS +MONEYED +MONEYER +MONEYERS +MONEYGRUBBING +MONEYGRUBBINGS +MONEYLENDER +MONEYLENDERS +MONEYLESS +MONEYMAKER +MONEYMAKERS +MONEYMAKING +MONEYMAKINGS +MONEYMAN +MONEYMEN +MONEYS +MONEYWORT +MONEYWORTS +MONGEESE +MONGER +MONGERED +MONGERING +MONGERS +MONGO +MONGOE +MONGOES +MONGOL +MONGOLIAN +MONGOLISM +MONGOLISMS +MONGOLOID +MONGOLOIDS +MONGOLS +MONGOOSE +MONGOOSES +MONGOS +MONGREL +MONGRELIZATION +MONGRELIZATIONS +MONGRELIZE +MONGRELIZED +MONGRELIZES +MONGRELIZING +MONGRELLY +MONGRELS +MONGST +MONICKER +MONICKERS +MONIE +MONIED +MONIES +MONIKER +MONIKERS +MONILIASES +MONILIASIS +MONILIFORM +MONISH +MONISHED +MONISHES +MONISHING +MONISM +MONISMS +MONIST +MONISTIC +MONISTS +MONITION +MONITIONS +MONITIVE +MONITOR +MONITORED +MONITORIAL +MONITORIES +MONITORING +MONITORS +MONITORSHIP +MONITORSHIPS +MONITORY +MONK +MONKERIES +MONKERY +MONKEY +MONKEYED +MONKEYING +MONKEYISH +MONKEYPOD +MONKEYPODS +MONKEYPOT +MONKEYPOTS +MONKEYS +MONKEYSHINE +MONKEYSHINES +MONKFISH +MONKFISHES +MONKHOOD +MONKHOODS +MONKISH +MONKISHLY +MONKS +MONKSHOOD +MONKSHOODS +MONO +MONOACID +MONOACIDIC +MONOACIDS +MONOAMINE +MONOAMINERGIC +MONOAMINES +MONOBASIC +MONOCARBOXYLIC +MONOCARP +MONOCARPIC +MONOCARPS +MONOCHASIA +MONOCHASIAL +MONOCHASIUM +MONOCHORD +MONOCHORDS +MONOCHROMAT +MONOCHROMATIC +MONOCHROMATISM +MONOCHROMATISMS +MONOCHROMATOR +MONOCHROMATORS +MONOCHROMATS +MONOCHROME +MONOCHROMES +MONOCHROMIC +MONOCHROMIST +MONOCHROMISTS +MONOCLE +MONOCLED +MONOCLES +MONOCLINE +MONOCLINES +MONOCLINIC +MONOCLONAL +MONOCLONALS +MONOCOQUE +MONOCOQUES +MONOCOT +MONOCOTS +MONOCOTYL +MONOCOTYLEDON +MONOCOTYLEDONS +MONOCOTYLS +MONOCRACIES +MONOCRACY +MONOCRAT +MONOCRATIC +MONOCRATS +MONOCRYSTAL +MONOCRYSTALLINE +MONOCRYSTALS +MONOCULAR +MONOCULARLY +MONOCULARS +MONOCULTURAL +MONOCULTURE +MONOCULTURES +MONOCYCLE +MONOCYCLES +MONOCYCLIC +MONOCYTE +MONOCYTES +MONOCYTIC +MONODIC +MONODICAL +MONODICALLY +MONODIES +MONODISPERSE +MONODIST +MONODISTS +MONODRAMA +MONODRAMAS +MONODRAMATIC +MONODY +MONOECIES +MONOECIOUS +MONOECISM +MONOECISMS +MONOECY +MONOESTER +MONOESTERS +MONOFIL +MONOFILAMENT +MONOFILAMENTS +MONOFILS +MONOFUEL +MONOFUELS +MONOGAMIC +MONOGAMIES +MONOGAMIST +MONOGAMISTS +MONOGAMOUS +MONOGAMOUSLY +MONOGAMY +MONOGASTRIC +MONOGENEAN +MONOGENEANS +MONOGENESES +MONOGENESIS +MONOGENETIC +MONOGENIC +MONOGENICALLY +MONOGENIES +MONOGENY +MONOGERM +MONOGLOT +MONOGLOTS +MONOGLYCERIDE +MONOGLYCERIDES +MONOGRAM +MONOGRAMED +MONOGRAMING +MONOGRAMMATIC +MONOGRAMMED +MONOGRAMMER +MONOGRAMMERS +MONOGRAMMING +MONOGRAMS +MONOGRAPH +MONOGRAPHED +MONOGRAPHIC +MONOGRAPHING +MONOGRAPHS +MONOGYNIES +MONOGYNOUS +MONOGYNY +MONOHULL +MONOHULLS +MONOHYBRID +MONOHYBRIDS +MONOHYDRIC +MONOHYDROXY +MONOICOUS +MONOKINE +MONOKINES +MONOLAYER +MONOLAYERS +MONOLINGUAL +MONOLINGUALS +MONOLITH +MONOLITHIC +MONOLITHICALLY +MONOLITHS +MONOLOG +MONOLOGGED +MONOLOGGING +MONOLOGIC +MONOLOGIES +MONOLOGIST +MONOLOGISTS +MONOLOGS +MONOLOGUE +MONOLOGUED +MONOLOGUES +MONOLOGUING +MONOLOGUIST +MONOLOGUISTS +MONOLOGY +MONOMANIA +MONOMANIAC +MONOMANIACAL +MONOMANIACALLY +MONOMANIACS +MONOMANIAS +MONOMER +MONOMERIC +MONOMERS +MONOMETALLIC +MONOMETALLISM +MONOMETALLISMS +MONOMETALLIST +MONOMETALLISTS +MONOMETER +MONOMETERS +MONOMIAL +MONOMIALS +MONOMOLECULAR +MONOMOLECULARLY +MONOMORPHEMIC +MONOMORPHIC +MONOMORPHISM +MONOMORPHISMS +MONONUCLEAR +MONONUCLEARS +MONONUCLEATE +MONONUCLEATED +MONONUCLEOSES +MONONUCLEOSIS +MONONUCLEOTIDE +MONONUCLEOTIDES +MONOPHAGIES +MONOPHAGOUS +MONOPHAGY +MONOPHONIC +MONOPHONICALLY +MONOPHONIES +MONOPHONY +MONOPHTHONG +MONOPHTHONGAL +MONOPHTHONGS +MONOPHYLETIC +MONOPHYLIES +MONOPHYLY +MONOPLANE +MONOPLANES +MONOPLOID +MONOPLOIDS +MONOPOD +MONOPODE +MONOPODES +MONOPODIA +MONOPODIAL +MONOPODIALLY +MONOPODIES +MONOPODIUM +MONOPODS +MONOPODY +MONOPOLE +MONOPOLES +MONOPOLIES +MONOPOLISE +MONOPOLISED +MONOPOLISES +MONOPOLISING +MONOPOLIST +MONOPOLISTIC +MONOPOLISTS +MONOPOLIZATION +MONOPOLIZATIONS +MONOPOLIZE +MONOPOLIZED +MONOPOLIZER +MONOPOLIZERS +MONOPOLIZES +MONOPOLIZING +MONOPOLY +MONOPROPELLANT +MONOPROPELLANTS +MONOPSONIES +MONOPSONISTIC +MONOPSONY +MONORAIL +MONORAILS +MONORCHID +MONORCHIDISM +MONORCHIDISMS +MONORCHIDS +MONORHYME +MONORHYMED +MONORHYMES +MONOS +MONOSACCHARIDE +MONOSACCHARIDES +MONOSOME +MONOSOMES +MONOSOMIC +MONOSOMICS +MONOSOMIES +MONOSOMY +MONOSPECIFIC +MONOSPECIFICITY +MONOSTELE +MONOSTELES +MONOSTELIC +MONOSTELIES +MONOSTELY +MONOSTICH +MONOSTICHS +MONOSTOME +MONOSYLLABIC +MONOSYLLABICITY +MONOSYLLABLE +MONOSYLLABLES +MONOSYNAPTIC +MONOTERPENE +MONOTERPENES +MONOTHEISM +MONOTHEISMS +MONOTHEIST +MONOTHEISTIC +MONOTHEISTICAL +MONOTHEISTS +MONOTINT +MONOTINTS +MONOTONE +MONOTONES +MONOTONIC +MONOTONICALLY +MONOTONICITIES +MONOTONICITY +MONOTONIES +MONOTONOUS +MONOTONOUSLY +MONOTONOUSNESS +MONOTONY +MONOTREME +MONOTREMES +MONOTYPE +MONOTYPES +MONOTYPIC +MONOUNSATURATE +MONOUNSATURATED +MONOUNSATURATES +MONOVALENT +MONOVULAR +MONOXIDE +MONOXIDES +MONOZYGOTIC +MONS +MONSEIGNEUR +MONSIEUR +MONSIGNOR +MONSIGNORI +MONSIGNORIAL +MONSIGNORS +MONSOON +MONSOONAL +MONSOONS +MONSTER +MONSTERA +MONSTERAS +MONSTERS +MONSTRANCE +MONSTRANCES +MONSTROSITIES +MONSTROSITY +MONSTROUS +MONSTROUSLY +MONSTROUSNESS +MONSTROUSNESSES +MONTADALE +MONTADALES +MONTAGE +MONTAGED +MONTAGES +MONTAGING +MONTAGNARD +MONTAGNARDS +MONTANE +MONTANES +MONTE +MONTEITH +MONTEITHS +MONTERO +MONTEROS +MONTES +MONTH +MONTHLIES +MONTHLONG +MONTHLY +MONTHS +MONTICULE +MONTICULES +MONTMORILLONITE +MONUMENT +MONUMENTAL +MONUMENTALITIES +MONUMENTALITY +MONUMENTALIZE +MONUMENTALIZED +MONUMENTALIZES +MONUMENTALIZING +MONUMENTALLY +MONUMENTS +MONURON +MONURONS +MONY +MONZONITE +MONZONITES +MOO +MOOCH +MOOCHED +MOOCHER +MOOCHERS +MOOCHES +MOOCHING +MOOD +MOODIER +MOODIEST +MOODILY +MOODINESS +MOODINESSES +MOODS +MOODY +MOOED +MOOING +MOOL +MOOLA +MOOLAH +MOOLAHS +MOOLAS +MOOLEY +MOOLEYS +MOOLS +MOON +MOONBEAM +MOONBEAMS +MOONBLIND +MOONBOW +MOONBOWS +MOONCALF +MOONCALVES +MOONCHILD +MOONCHILDREN +MOONDUST +MOONDUSTS +MOONED +MOONER +MOONERS +MOONEYE +MOONEYES +MOONFACED +MOONFISH +MOONFISHES +MOONFLOWER +MOONFLOWERS +MOONIER +MOONIEST +MOONILY +MOONINESS +MOONINESSES +MOONING +MOONISH +MOONISHLY +MOONLESS +MOONLET +MOONLETS +MOONLIGHT +MOONLIGHTED +MOONLIGHTER +MOONLIGHTERS +MOONLIGHTING +MOONLIGHTS +MOONLIKE +MOONLIT +MOONPORT +MOONPORTS +MOONQUAKE +MOONQUAKES +MOONRISE +MOONRISES +MOONROOF +MOONROOFS +MOONS +MOONSAIL +MOONSAILS +MOONSCAPE +MOONSCAPES +MOONSEED +MOONSEEDS +MOONSET +MOONSETS +MOONSHINE +MOONSHINED +MOONSHINER +MOONSHINERS +MOONSHINES +MOONSHINING +MOONSHINY +MOONSHOT +MOONSHOTS +MOONSTONE +MOONSTONES +MOONSTRUCK +MOONWALK +MOONWALKED +MOONWALKING +MOONWALKS +MOONWARD +MOONWARDS +MOONWORT +MOONWORTS +MOONY +MOOR +MOORAGE +MOORAGES +MOORCOCK +MOORCOCKS +MOORED +MOORFOWL +MOORFOWLS +MOORHEN +MOORHENS +MOORIER +MOORIEST +MOORING +MOORINGS +MOORISH +MOORLAND +MOORLANDS +MOORS +MOORWORT +MOORWORTS +MOORY +MOOS +MOOSE +MOOSEBIRD +MOOSEBIRDS +MOOSEWOOD +MOOSEWOODS +MOOT +MOOTED +MOOTER +MOOTERS +MOOTING +MOOTNESS +MOOTNESSES +MOOTS +MOP +MOPBOARD +MOPBOARDS +MOPE +MOPED +MOPEDS +MOPER +MOPERIES +MOPERS +MOPERY +MOPES +MOPEY +MOPIER +MOPIEST +MOPINESS +MOPINESSES +MOPING +MOPINGLY +MOPISH +MOPISHLY +MOPOKE +MOPOKES +MOPPED +MOPPER +MOPPERS +MOPPET +MOPPETS +MOPPING +MOPS +MOPY +MOQUETTE +MOQUETTES +MOR +MORA +MORAE +MORAINAL +MORAINE +MORAINES +MORAINIC +MORAL +MORALE +MORALES +MORALISE +MORALISED +MORALISES +MORALISING +MORALISM +MORALISMS +MORALIST +MORALISTIC +MORALISTICALLY +MORALISTS +MORALITIES +MORALITY +MORALIZATION +MORALIZATIONS +MORALIZE +MORALIZED +MORALIZER +MORALIZERS +MORALIZES +MORALIZING +MORALLY +MORALS +MORAS +MORASS +MORASSES +MORASSY +MORATORIA +MORATORIUM +MORATORIUMS +MORATORY +MORAY +MORAYS +MORBID +MORBIDITIES +MORBIDITY +MORBIDLY +MORBIDNESS +MORBIDNESSES +MORBIFIC +MORBILLI +MORCEAU +MORCEAUX +MORDACITIES +MORDACITY +MORDANCIES +MORDANCY +MORDANT +MORDANTED +MORDANTING +MORDANTLY +MORDANTS +MORDENT +MORDENTS +MORE +MOREEN +MOREENS +MOREL +MORELLE +MORELLES +MORELLO +MORELLOS +MORELS +MORENESS +MORENESSES +MOREOVER +MORES +MORESQUE +MORESQUES +MORGAN +MORGANATIC +MORGANATICALLY +MORGANITE +MORGANITES +MORGANS +MORGEN +MORGENS +MORGUE +MORGUES +MORIBUND +MORIBUNDITIES +MORIBUNDITY +MORION +MORIONS +MORN +MORNING +MORNINGS +MORNS +MOROCCO +MOROCCOS +MORON +MORONIC +MORONICALLY +MORONISM +MORONISMS +MORONITIES +MORONITY +MORONS +MOROSE +MOROSELY +MOROSENESS +MOROSENESSES +MOROSITIES +MOROSITY +MORPH +MORPHACTIN +MORPHACTINS +MORPHALLAXES +MORPHALLAXIS +MORPHED +MORPHEME +MORPHEMES +MORPHEMIC +MORPHEMICALLY +MORPHEMICS +MORPHIA +MORPHIAS +MORPHIC +MORPHIN +MORPHINE +MORPHINES +MORPHING +MORPHINGS +MORPHINIC +MORPHINISM +MORPHINISMS +MORPHINS +MORPHO +MORPHOGEN +MORPHOGENESES +MORPHOGENESIS +MORPHOGENETIC +MORPHOGENIC +MORPHOGENS +MORPHOLOGIC +MORPHOLOGICAL +MORPHOLOGICALLY +MORPHOLOGIES +MORPHOLOGIST +MORPHOLOGISTS +MORPHOLOGY +MORPHOMETRIC +MORPHOMETRIES +MORPHOMETRY +MORPHOPHONEMICS +MORPHOS +MORPHOSES +MORPHOSIS +MORPHS +MORRION +MORRIONS +MORRIS +MORRISES +MORRO +MORROS +MORROW +MORROWS +MORS +MORSE +MORSEL +MORSELED +MORSELING +MORSELLED +MORSELLING +MORSELS +MORT +MORTADELLA +MORTADELLAS +MORTAL +MORTALITIES +MORTALITY +MORTALLY +MORTALS +MORTAR +MORTARBOARD +MORTARBOARDS +MORTARED +MORTARING +MORTARLESS +MORTARMAN +MORTARMEN +MORTARS +MORTARY +MORTGAGE +MORTGAGED +MORTGAGEE +MORTGAGEES +MORTGAGER +MORTGAGERS +MORTGAGES +MORTGAGING +MORTGAGOR +MORTGAGORS +MORTICE +MORTICED +MORTICES +MORTICIAN +MORTICIANS +MORTICING +MORTIFICATION +MORTIFICATIONS +MORTIFIED +MORTIFIER +MORTIFIERS +MORTIFIES +MORTIFY +MORTIFYING +MORTISE +MORTISED +MORTISER +MORTISERS +MORTISES +MORTISING +MORTMAIN +MORTMAINS +MORTS +MORTUARIES +MORTUARY +MORULA +MORULAE +MORULAR +MORULAS +MORULATION +MORULATIONS +MOS +MOSAIC +MOSAICALLY +MOSAICISM +MOSAICISMS +MOSAICIST +MOSAICISTS +MOSAICKED +MOSAICKING +MOSAICLIKE +MOSAICS +MOSASAUR +MOSASAURS +MOSCHATE +MOSCHATEL +MOSCHATELS +MOSEY +MOSEYED +MOSEYING +MOSEYS +MOSH +MOSHAV +MOSHAVIM +MOSHED +MOSHER +MOSHERS +MOSHES +MOSHING +MOSHINGS +MOSK +MOSKS +MOSQUE +MOSQUES +MOSQUITO +MOSQUITOES +MOSQUITOEY +MOSQUITOS +MOSS +MOSSBACK +MOSSBACKED +MOSSBACKS +MOSSED +MOSSER +MOSSERS +MOSSES +MOSSGROWN +MOSSIER +MOSSIEST +MOSSINESS +MOSSINESSES +MOSSING +MOSSLIKE +MOSSO +MOSSY +MOST +MOSTE +MOSTEST +MOSTESTS +MOSTLY +MOSTS +MOT +MOTE +MOTEL +MOTELS +MOTES +MOTET +MOTETS +MOTEY +MOTH +MOTHBALL +MOTHBALLED +MOTHBALLING +MOTHBALLS +MOTHER +MOTHERBOARD +MOTHERBOARDS +MOTHERED +MOTHERFUCKER +MOTHERFUCKERS +MOTHERFUCKING +MOTHERHOOD +MOTHERHOODS +MOTHERHOUSE +MOTHERHOUSES +MOTHERING +MOTHERINGS +MOTHERLAND +MOTHERLANDS +MOTHERLESS +MOTHERLESSNESS +MOTHERLINESS +MOTHERLINESSES +MOTHERLY +MOTHERS +MOTHERY +MOTHIER +MOTHIEST +MOTHLIKE +MOTHPROOF +MOTHPROOFED +MOTHPROOFER +MOTHPROOFERS +MOTHPROOFING +MOTHPROOFS +MOTHS +MOTHY +MOTIF +MOTIFIC +MOTIFS +MOTILE +MOTILES +MOTILITIES +MOTILITY +MOTION +MOTIONAL +MOTIONED +MOTIONER +MOTIONERS +MOTIONING +MOTIONLESS +MOTIONLESSLY +MOTIONLESSNESS +MOTIONS +MOTIVATE +MOTIVATED +MOTIVATES +MOTIVATING +MOTIVATION +MOTIVATIONAL +MOTIVATIONALLY +MOTIVATIONS +MOTIVATIVE +MOTIVATOR +MOTIVATORS +MOTIVE +MOTIVED +MOTIVELESS +MOTIVELESSLY +MOTIVES +MOTIVIC +MOTIVING +MOTIVITIES +MOTIVITY +MOTLEY +MOTLEYER +MOTLEYEST +MOTLEYS +MOTLIER +MOTLIEST +MOTMOT +MOTMOTS +MOTOCROSS +MOTOCROSSES +MOTONEURON +MOTONEURONAL +MOTONEURONS +MOTOR +MOTORBIKE +MOTORBIKED +MOTORBIKES +MOTORBIKING +MOTORBOAT +MOTORBOATED +MOTORBOATER +MOTORBOATERS +MOTORBOATING +MOTORBOATINGS +MOTORBOATS +MOTORBUS +MOTORBUSES +MOTORBUSSES +MOTORCADE +MOTORCADED +MOTORCADES +MOTORCADING +MOTORCAR +MOTORCARS +MOTORCYCLE +MOTORCYCLED +MOTORCYCLES +MOTORCYCLING +MOTORCYCLIST +MOTORCYCLISTS +MOTORDOM +MOTORDOMS +MOTORED +MOTORIC +MOTORICALLY +MOTORING +MOTORINGS +MOTORISE +MOTORISED +MOTORISES +MOTORISING +MOTORIST +MOTORISTS +MOTORIZATION +MOTORIZATIONS +MOTORIZE +MOTORIZED +MOTORIZES +MOTORIZING +MOTORLESS +MOTORMAN +MOTORMEN +MOTORMOUTH +MOTORMOUTHS +MOTORS +MOTORSHIP +MOTORSHIPS +MOTORTRUCK +MOTORTRUCKS +MOTORWAY +MOTORWAYS +MOTS +MOTT +MOTTE +MOTTES +MOTTLE +MOTTLED +MOTTLER +MOTTLERS +MOTTLES +MOTTLING +MOTTO +MOTTOES +MOTTOS +MOTTS +MOUCH +MOUCHED +MOUCHES +MOUCHING +MOUCHOIR +MOUCHOIRS +MOUE +MOUES +MOUFFLON +MOUFFLONS +MOUFLON +MOUFLONS +MOUILLE +MOUJIK +MOUJIKS +MOULAGE +MOULAGES +MOULD +MOULDED +MOULDER +MOULDERED +MOULDERING +MOULDERS +MOULDIER +MOULDIEST +MOULDING +MOULDINGS +MOULDS +MOULDY +MOULIN +MOULINS +MOULT +MOULTED +MOULTER +MOULTERS +MOULTING +MOULTS +MOUND +MOUNDBIRD +MOUNDBIRDS +MOUNDED +MOUNDING +MOUNDS +MOUNT +MOUNTABLE +MOUNTAIN +MOUNTAINEER +MOUNTAINEERING +MOUNTAINEERINGS +MOUNTAINEERS +MOUNTAINOUS +MOUNTAINOUSLY +MOUNTAINOUSNESS +MOUNTAINS +MOUNTAINSIDE +MOUNTAINSIDES +MOUNTAINTOP +MOUNTAINTOPS +MOUNTAINY +MOUNTEBANK +MOUNTEBANKED +MOUNTEBANKERIES +MOUNTEBANKERY +MOUNTEBANKING +MOUNTEBANKS +MOUNTED +MOUNTER +MOUNTERS +MOUNTING +MOUNTINGS +MOUNTS +MOURN +MOURNED +MOURNER +MOURNERS +MOURNFUL +MOURNFULLER +MOURNFULLEST +MOURNFULLY +MOURNFULNESS +MOURNFULNESSES +MOURNING +MOURNINGLY +MOURNINGS +MOURNS +MOUSAKA +MOUSAKAS +MOUSE +MOUSEBIRD +MOUSEBIRDS +MOUSED +MOUSELIKE +MOUSEPAD +MOUSEPADS +MOUSER +MOUSERS +MOUSES +MOUSETAIL +MOUSETAILS +MOUSETRAP +MOUSETRAPPED +MOUSETRAPPING +MOUSETRAPS +MOUSEY +MOUSIER +MOUSIEST +MOUSILY +MOUSINESS +MOUSINESSES +MOUSING +MOUSINGS +MOUSSAKA +MOUSSAKAS +MOUSSE +MOUSSED +MOUSSELINE +MOUSSELINES +MOUSSES +MOUSSING +MOUSTACHE +MOUSTACHES +MOUSTACHIO +MOUSTACHIOS +MOUSY +MOUTH +MOUTHBREEDER +MOUTHBREEDERS +MOUTHED +MOUTHER +MOUTHERS +MOUTHFEEL +MOUTHFEELS +MOUTHFUL +MOUTHFULS +MOUTHIER +MOUTHIEST +MOUTHILY +MOUTHING +MOUTHLESS +MOUTHLIKE +MOUTHPART +MOUTHPARTS +MOUTHPIECE +MOUTHPIECES +MOUTHS +MOUTHWASH +MOUTHWASHES +MOUTHWATERING +MOUTHWATERINGLY +MOUTHY +MOUTON +MOUTONNEE +MOUTONS +MOVABILITIES +MOVABILITY +MOVABLE +MOVABLENESS +MOVABLENESSES +MOVABLES +MOVABLY +MOVE +MOVEABLE +MOVEABLES +MOVEABLY +MOVED +MOVELESS +MOVELESSLY +MOVELESSNESS +MOVELESSNESSES +MOVEMENT +MOVEMENTS +MOVER +MOVERS +MOVES +MOVIE +MOVIEDOM +MOVIEDOMS +MOVIEGOER +MOVIEGOERS +MOVIEGOING +MOVIEGOINGS +MOVIEMAKER +MOVIEMAKERS +MOVIEMAKING +MOVIEMAKINGS +MOVIEOLA +MOVIEOLAS +MOVIES +MOVING +MOVINGLY +MOVIOLA +MOVIOLAS +MOW +MOWED +MOWER +MOWERS +MOWING +MOWINGS +MOWN +MOWS +MOXA +MOXAS +MOXIE +MOXIES +MOZETTA +MOZETTAS +MOZETTE +MOZO +MOZOS +MOZZARELLA +MOZZARELLAS +MOZZETTA +MOZZETTAS +MOZZETTE +MRIDANGA +MRIDANGAM +MRIDANGAMS +MRIDANGAS +MU +MUCH +MUCHACHO +MUCHACHOS +MUCHES +MUCHLY +MUCHNESS +MUCHNESSES +MUCHO +MUCID +MUCIDITIES +MUCIDITY +MUCILAGE +MUCILAGES +MUCILAGINOUS +MUCILAGINOUSLY +MUCIN +MUCINOGEN +MUCINOGENS +MUCINOID +MUCINOUS +MUCINS +MUCK +MUCKAMUCK +MUCKAMUCKS +MUCKED +MUCKER +MUCKERS +MUCKIER +MUCKIEST +MUCKILY +MUCKING +MUCKLE +MUCKLES +MUCKLUCK +MUCKLUCKS +MUCKRAKE +MUCKRAKED +MUCKRAKER +MUCKRAKERS +MUCKRAKES +MUCKRAKING +MUCKS +MUCKWORM +MUCKWORMS +MUCKY +MUCLUC +MUCLUCS +MUCOCUTANEOUS +MUCOID +MUCOIDAL +MUCOIDS +MUCOLYTIC +MUCOPEPTIDE +MUCOPEPTIDES +MUCOPROTEIN +MUCOPROTEINS +MUCOR +MUCORS +MUCOSA +MUCOSAE +MUCOSAL +MUCOSAS +MUCOSE +MUCOSITIES +MUCOSITY +MUCOUS +MUCRO +MUCRONATE +MUCRONES +MUCUS +MUCUSES +MUD +MUDBUG +MUDBUGS +MUDCAP +MUDCAPPED +MUDCAPPING +MUDCAPS +MUDCAT +MUDCATS +MUDDED +MUDDER +MUDDERS +MUDDIED +MUDDIER +MUDDIES +MUDDIEST +MUDDILY +MUDDINESS +MUDDINESSES +MUDDING +MUDDLE +MUDDLED +MUDDLEHEADED +MUDDLEHEADEDLY +MUDDLER +MUDDLERS +MUDDLES +MUDDLING +MUDDLY +MUDDY +MUDDYING +MUDFISH +MUDFISHES +MUDFLAP +MUDFLAPS +MUDFLAT +MUDFLATS +MUDFLOW +MUDFLOWS +MUDGUARD +MUDGUARDS +MUDHEN +MUDHENS +MUDHOLE +MUDHOLES +MUDLARK +MUDLARKS +MUDPACK +MUDPACKS +MUDPUPPIES +MUDPUPPY +MUDRA +MUDRAS +MUDROCK +MUDROCKS +MUDROOM +MUDROOMS +MUDS +MUDSILL +MUDSILLS +MUDSKIPPER +MUDSKIPPERS +MUDSLIDE +MUDSLIDES +MUDSLINGER +MUDSLINGERS +MUDSLINGING +MUDSLINGINGS +MUDSTONE +MUDSTONES +MUEDDIN +MUEDDINS +MUENSTER +MUENSTERS +MUESLI +MUESLIS +MUEZZIN +MUEZZINS +MUFF +MUFFED +MUFFIN +MUFFINEER +MUFFINEERS +MUFFING +MUFFINS +MUFFLE +MUFFLED +MUFFLER +MUFFLERED +MUFFLERS +MUFFLES +MUFFLING +MUFFS +MUFTI +MUFTIS +MUG +MUGFUL +MUGFULS +MUGG +MUGGAR +MUGGARS +MUGGED +MUGGEE +MUGGEES +MUGGER +MUGGERS +MUGGIER +MUGGIEST +MUGGILY +MUGGINESS +MUGGINESSES +MUGGING +MUGGINGS +MUGGINS +MUGGS +MUGGUR +MUGGURS +MUGGY +MUGHAL +MUGHALS +MUGS +MUGWORT +MUGWORTS +MUGWUMP +MUGWUMPS +MUHLIES +MUHLY +MUJAHEDEEN +MUJAHEDIN +MUJAHIDEEN +MUJAHIDIN +MUJIK +MUJIKS +MUKLUK +MUKLUKS +MUKTUK +MUKTUKS +MULATTO +MULATTOES +MULATTOS +MULBERRIES +MULBERRY +MULCH +MULCHED +MULCHES +MULCHING +MULCT +MULCTED +MULCTING +MULCTS +MULE +MULED +MULES +MULETA +MULETAS +MULETEER +MULETEERS +MULEY +MULEYS +MULIEBRITIES +MULIEBRITY +MULING +MULISH +MULISHLY +MULISHNESS +MULISHNESSES +MULL +MULLA +MULLAH +MULLAHISM +MULLAHISMS +MULLAHS +MULLAS +MULLED +MULLEIN +MULLEINS +MULLEN +MULLENS +MULLER +MULLERS +MULLET +MULLETS +MULLEY +MULLEYS +MULLIGAN +MULLIGANS +MULLIGATAWNIES +MULLIGATAWNY +MULLING +MULLION +MULLIONED +MULLIONING +MULLIONS +MULLITE +MULLITES +MULLOCK +MULLOCKS +MULLOCKY +MULLS +MULTIAGE +MULTIAGENCY +MULTIARMED +MULTIATOM +MULTIAUTHOR +MULTIAXIAL +MULTIBAND +MULTIBANK +MULTIBARREL +MULTIBARRELED +MULTIBILLION +MULTIBLADED +MULTIBRANCHED +MULTIBUILDING +MULTICAMPUS +MULTICAR +MULTICARBON +MULTICAUSAL +MULTICELL +MULTICELLED +MULTICELLULAR +MULTICENTER +MULTICHAIN +MULTICHAMBERED +MULTICHANNEL +MULTICHARACTER +MULTICITY +MULTICLIENT +MULTICOATED +MULTICOLOR +MULTICOLORED +MULTICOLORS +MULTICOLUMN +MULTICOMPONENT +MULTICONDUCTOR +MULTICOPY +MULTICOUNTY +MULTICOURSE +MULTICULTURAL +MULTICURIE +MULTICURRENCIES +MULTICURRENCY +MULTIDAY +MULTIDIALECTAL +MULTIDISC +MULTIDISCIPLINE +MULTIDIVISIONAL +MULTIDOMAIN +MULTIDRUG +MULTIELECTRODE +MULTIELEMENT +MULTIEMPLOYER +MULTIEMPLOYERS +MULTIENGINE +MULTIENZYME +MULTIETHNIC +MULTIETHNICS +MULTIFACETED +MULTIFACTOR +MULTIFACTORIAL +MULTIFAMILY +MULTIFARIOUS +MULTIFID +MULTIFILAMENT +MULTIFLASH +MULTIFOCAL +MULTIFOIL +MULTIFOILS +MULTIFOLD +MULTIFORM +MULTIFORMITIES +MULTIFORMITY +MULTIFREQUENCY +MULTIFUNCTION +MULTIFUNCTIONAL +MULTIGENIC +MULTIGERM +MULTIGRADE +MULTIGRAIN +MULTIGRID +MULTIGROUP +MULTIHEADED +MULTIHOSPITAL +MULTIHUED +MULTIHULL +MULTIHULLS +MULTIJET +MULTILANE +MULTILANES +MULTILATERAL +MULTILATERALISM +MULTILATERALIST +MULTILATERALLY +MULTILAYER +MULTILAYERED +MULTILEVEL +MULTILEVELED +MULTILINE +MULTILINGUAL +MULTILINGUALISM +MULTILINGUALLY +MULTILOBE +MULTILOBED +MULTILOBES +MULTIMANNED +MULTIMEDIA +MULTIMEDIAS +MULTIMEGATON +MULTIMEGAWATT +MULTIMEGAWATTS +MULTIMEMBER +MULTIMETALLIC +MULTIMILLENNIAL +MULTIMILLION +MULTIMODAL +MULTIMODE +MULTIMOLECULAR +MULTINATION +MULTINATIONAL +MULTINATIONALS +MULTINOMIAL +MULTINOMIALS +MULTINUCLEAR +MULTINUCLEATE +MULTINUCLEATED +MULTIORGASMIC +MULTIPACK +MULTIPACKS +MULTIPAGE +MULTIPANED +MULTIPARA +MULTIPARAE +MULTIPARAMETER +MULTIPARAS +MULTIPAROUS +MULTIPART +MULTIPARTICLE +MULTIPARTITE +MULTIPARTY +MULTIPATH +MULTIPED +MULTIPEDE +MULTIPEDES +MULTIPEDS +MULTIPHASE +MULTIPHASIC +MULTIPHOTON +MULTIPICTURE +MULTIPIECE +MULTIPION +MULTIPISTON +MULTIPLANT +MULTIPLAYER +MULTIPLE +MULTIPLES +MULTIPLET +MULTIPLETS +MULTIPLEX +MULTIPLEXED +MULTIPLEXER +MULTIPLEXERS +MULTIPLEXES +MULTIPLEXING +MULTIPLEXOR +MULTIPLEXORS +MULTIPLICAND +MULTIPLICANDS +MULTIPLICATION +MULTIPLICATIONS +MULTIPLICATIVE +MULTIPLICITIES +MULTIPLICITY +MULTIPLIED +MULTIPLIER +MULTIPLIERS +MULTIPLIES +MULTIPLY +MULTIPLYING +MULTIPOLAR +MULTIPOLARITIES +MULTIPOLARITY +MULTIPOLE +MULTIPOLES +MULTIPORT +MULTIPOTENTIAL +MULTIPOWER +MULTIPROBLEM +MULTIPROCESSING +MULTIPROCESSOR +MULTIPROCESSORS +MULTIPRODUCT +MULTIPRONGED +MULTIPURPOSE +MULTIRACIAL +MULTIRACIALISM +MULTIRACIALISMS +MULTIRANGE +MULTIREGIONAL +MULTIRELIGIOUS +MULTIROOM +MULTISCREEN +MULTISENSE +MULTISENSORY +MULTISERVICE +MULTISIDED +MULTISITE +MULTISIZE +MULTISKILLED +MULTISOURCE +MULTISPECIES +MULTISPECTRAL +MULTISPEED +MULTISPORT +MULTISTAGE +MULTISTATE +MULTISTEMMED +MULTISTEP +MULTISTORIED +MULTISTORY +MULTISTRANDED +MULTISYLLABIC +MULTISYSTEM +MULTITALENTED +MULTITASK +MULTITASKED +MULTITASKING +MULTITASKINGS +MULTITASKS +MULTITERMINAL +MULTITIERED +MULTITON +MULTITONE +MULTITONES +MULTITOWERED +MULTITRACK +MULTITRILLION +MULTITUDE +MULTITUDES +MULTITUDINOUS +MULTITUDINOUSLY +MULTIUNION +MULTIUNIT +MULTIUSE +MULTIUSER +MULTIVALENCE +MULTIVALENCES +MULTIVALENT +MULTIVALENTS +MULTIVARIABLE +MULTIVARIATE +MULTIVERSITIES +MULTIVERSITY +MULTIVITAMIN +MULTIVITAMINS +MULTIVOLTINE +MULTIVOLUME +MULTIWALL +MULTIWARHEAD +MULTIWAVELENGTH +MULTIYEAR +MULTURE +MULTURES +MUM +MUMBLE +MUMBLED +MUMBLER +MUMBLERS +MUMBLES +MUMBLING +MUMBLY +MUMM +MUMMED +MUMMER +MUMMERIES +MUMMERS +MUMMERY +MUMMICHOG +MUMMICHOGS +MUMMIED +MUMMIES +MUMMIFICATION +MUMMIFICATIONS +MUMMIFIED +MUMMIFIES +MUMMIFY +MUMMIFYING +MUMMING +MUMMS +MUMMY +MUMMYING +MUMP +MUMPED +MUMPER +MUMPERS +MUMPING +MUMPS +MUMS +MUMU +MUMUS +MUN +MUNCH +MUNCHABLE +MUNCHABLES +MUNCHED +MUNCHER +MUNCHERS +MUNCHES +MUNCHIES +MUNCHING +MUNCHKIN +MUNCHKINS +MUNDANE +MUNDANELY +MUNDANENESS +MUNDANENESSES +MUNDANITIES +MUNDANITY +MUNDUNGO +MUNDUNGOS +MUNDUNGUS +MUNDUNGUSES +MUNGO +MUNGOES +MUNGOOSE +MUNGOOSES +MUNGOS +MUNI +MUNICIPAL +MUNICIPALITIES +MUNICIPALITY +MUNICIPALIZE +MUNICIPALIZED +MUNICIPALIZES +MUNICIPALIZING +MUNICIPALLY +MUNICIPALS +MUNIFICENCE +MUNIFICENCES +MUNIFICENT +MUNIFICENTLY +MUNIMENT +MUNIMENTS +MUNIS +MUNITION +MUNITIONED +MUNITIONING +MUNITIONS +MUNNION +MUNNIONS +MUNS +MUNSTER +MUNSTERS +MUNTIN +MUNTING +MUNTINGS +MUNTINS +MUNTJAC +MUNTJACS +MUNTJAK +MUNTJAKS +MUON +MUONIC +MUONIUM +MUONIUMS +MUONS +MURA +MURAENID +MURAENIDS +MURAL +MURALED +MURALIST +MURALISTS +MURALLED +MURALS +MURAS +MURDER +MURDERED +MURDEREE +MURDEREES +MURDERER +MURDERERS +MURDERESS +MURDERESSES +MURDERING +MURDEROUS +MURDEROUSLY +MURDEROUSNESS +MURDEROUSNESSES +MURDERS +MURE +MURED +MUREIN +MUREINS +MURES +MUREX +MUREXES +MURIATE +MURIATED +MURIATES +MURICATE +MURICATED +MURICES +MURID +MURIDS +MURINE +MURINES +MURING +MURK +MURKER +MURKEST +MURKIER +MURKIEST +MURKILY +MURKINESS +MURKINESSES +MURKLY +MURKS +MURKY +MURMUR +MURMURED +MURMURER +MURMURERS +MURMURING +MURMUROUS +MURMUROUSLY +MURMURS +MURPHIES +MURPHY +MURR +MURRA +MURRAIN +MURRAINS +MURRAS +MURRE +MURRELET +MURRELETS +MURRES +MURREY +MURREYS +MURRHA +MURRHAS +MURRHINE +MURRIES +MURRINE +MURRS +MURRY +MURTHER +MURTHERED +MURTHERING +MURTHERS +MUS +MUSCA +MUSCADEL +MUSCADELS +MUSCADET +MUSCADETS +MUSCADINE +MUSCADINES +MUSCAE +MUSCARINE +MUSCARINES +MUSCARINIC +MUSCAT +MUSCATEL +MUSCATELS +MUSCATS +MUSCID +MUSCIDS +MUSCLE +MUSCLED +MUSCLEMAN +MUSCLEMEN +MUSCLES +MUSCLING +MUSCLY +MUSCOVADO +MUSCOVADOS +MUSCOVITE +MUSCOVITES +MUSCULAR +MUSCULARITIES +MUSCULARITY +MUSCULARLY +MUSCULATURE +MUSCULATURES +MUSCULOSKELETAL +MUSE +MUSED +MUSEFUL +MUSEOLOGICAL +MUSEOLOGIES +MUSEOLOGIST +MUSEOLOGISTS +MUSEOLOGY +MUSER +MUSERS +MUSES +MUSETTE +MUSETTES +MUSEUM +MUSEUMS +MUSH +MUSHED +MUSHER +MUSHERS +MUSHES +MUSHIER +MUSHIEST +MUSHILY +MUSHINESS +MUSHINESSES +MUSHING +MUSHROOM +MUSHROOMED +MUSHROOMING +MUSHROOMS +MUSHY +MUSIC +MUSICAL +MUSICALE +MUSICALES +MUSICALISE +MUSICALISED +MUSICALISES +MUSICALISING +MUSICALITIES +MUSICALITY +MUSICALIZATION +MUSICALIZATIONS +MUSICALIZE +MUSICALIZED +MUSICALIZES +MUSICALIZING +MUSICALLY +MUSICALS +MUSICIAN +MUSICIANLY +MUSICIANS +MUSICIANSHIP +MUSICIANSHIPS +MUSICK +MUSICKED +MUSICKING +MUSICKS +MUSICLESS +MUSICOLOGICAL +MUSICOLOGIES +MUSICOLOGIST +MUSICOLOGISTS +MUSICOLOGY +MUSICS +MUSING +MUSINGLY +MUSINGS +MUSJID +MUSJIDS +MUSK +MUSKEG +MUSKEGS +MUSKELLUNGE +MUSKET +MUSKETEER +MUSKETEERS +MUSKETRIES +MUSKETRY +MUSKETS +MUSKIE +MUSKIER +MUSKIES +MUSKIEST +MUSKILY +MUSKINESS +MUSKINESSES +MUSKIT +MUSKITS +MUSKMELON +MUSKMELONS +MUSKOX +MUSKOXEN +MUSKRAT +MUSKRATS +MUSKROOT +MUSKROOTS +MUSKS +MUSKY +MUSLIN +MUSLINS +MUSPIKE +MUSPIKES +MUSQUASH +MUSQUASHES +MUSS +MUSSED +MUSSEL +MUSSELS +MUSSES +MUSSIER +MUSSIEST +MUSSILY +MUSSINESS +MUSSINESSES +MUSSING +MUSSY +MUST +MUSTACHE +MUSTACHED +MUSTACHES +MUSTACHIO +MUSTACHIOED +MUSTACHIOS +MUSTANG +MUSTANGS +MUSTARD +MUSTARDS +MUSTARDY +MUSTED +MUSTEE +MUSTEES +MUSTELID +MUSTELIDS +MUSTELINE +MUSTER +MUSTERED +MUSTERING +MUSTERS +MUSTH +MUSTHS +MUSTIER +MUSTIEST +MUSTILY +MUSTINESS +MUSTINESSES +MUSTING +MUSTS +MUSTY +MUT +MUTABILITIES +MUTABILITY +MUTABLE +MUTABLY +MUTAGEN +MUTAGENESES +MUTAGENESIS +MUTAGENIC +MUTAGENICALLY +MUTAGENICITIES +MUTAGENICITY +MUTAGENS +MUTANT +MUTANTS +MUTASE +MUTASES +MUTATE +MUTATED +MUTATES +MUTATING +MUTATION +MUTATIONAL +MUTATIONALLY +MUTATIONS +MUTATIVE +MUTCH +MUTCHES +MUTCHKIN +MUTCHKINS +MUTE +MUTED +MUTEDLY +MUTELY +MUTENESS +MUTENESSES +MUTER +MUTES +MUTEST +MUTICOUS +MUTILATE +MUTILATED +MUTILATES +MUTILATING +MUTILATION +MUTILATIONS +MUTILATOR +MUTILATORS +MUTINE +MUTINED +MUTINEER +MUTINEERED +MUTINEERING +MUTINEERS +MUTINES +MUTING +MUTINIED +MUTINIES +MUTINING +MUTINOUS +MUTINOUSLY +MUTINOUSNESS +MUTINOUSNESSES +MUTINY +MUTINYING +MUTISM +MUTISMS +MUTON +MUTONS +MUTS +MUTT +MUTTER +MUTTERED +MUTTERER +MUTTERERS +MUTTERING +MUTTERS +MUTTON +MUTTONCHOPS +MUTTONFISH +MUTTONFISHES +MUTTONS +MUTTONY +MUTTS +MUTUAL +MUTUALISM +MUTUALISMS +MUTUALIST +MUTUALISTIC +MUTUALISTS +MUTUALITIES +MUTUALITY +MUTUALIZATION +MUTUALIZATIONS +MUTUALIZE +MUTUALIZED +MUTUALIZES +MUTUALIZING +MUTUALLY +MUTUALS +MUTUEL +MUTUELS +MUTULAR +MUTULE +MUTULES +MUUMUU +MUUMUUS +MUZHIK +MUZHIKS +MUZJIK +MUZJIKS +MUZZIER +MUZZIEST +MUZZILY +MUZZINESS +MUZZINESSES +MUZZLE +MUZZLED +MUZZLER +MUZZLERS +MUZZLES +MUZZLING +MUZZY +MY +MYALGIA +MYALGIAS +MYALGIC +MYASES +MYASIS +MYASTHENIA +MYASTHENIAS +MYASTHENIC +MYASTHENICS +MYC +MYCELE +MYCELES +MYCELIA +MYCELIAL +MYCELIAN +MYCELIUM +MYCELOID +MYCETOMA +MYCETOMAS +MYCETOMATA +MYCETOMATOUS +MYCETOPHAGOUS +MYCETOZOAN +MYCETOZOANS +MYCOBACTERIA +MYCOBACTERIAL +MYCOBACTERIUM +MYCOFLORA +MYCOFLORAE +MYCOFLORAS +MYCOLOGIC +MYCOLOGICAL +MYCOLOGICALLY +MYCOLOGIES +MYCOLOGIST +MYCOLOGISTS +MYCOLOGY +MYCOPHAGIES +MYCOPHAGIST +MYCOPHAGISTS +MYCOPHAGOUS +MYCOPHAGY +MYCOPHILE +MYCOPHILES +MYCOPLASMA +MYCOPLASMAL +MYCOPLASMAS +MYCOPLASMATA +MYCORHIZA +MYCORHIZAE +MYCORHIZAS +MYCORRHIZA +MYCORRHIZAE +MYCORRHIZAL +MYCORRHIZAS +MYCOSES +MYCOSIS +MYCOTIC +MYCOTOXIN +MYCOTOXINS +MYCOVIRUS +MYCOVIRUSES +MYCS +MYDRIASES +MYDRIASIS +MYDRIATIC +MYDRIATICS +MYELENCEPHALA +MYELENCEPHALIC +MYELENCEPHALON +MYELIN +MYELINATED +MYELINE +MYELINES +MYELINIC +MYELINS +MYELITIDES +MYELITIS +MYELOBLAST +MYELOBLASTIC +MYELOBLASTS +MYELOCYTE +MYELOCYTES +MYELOCYTIC +MYELOFIBROSES +MYELOFIBROSIS +MYELOFIBROTIC +MYELOGENOUS +MYELOGRAM +MYELOGRAMS +MYELOID +MYELOMA +MYELOMAS +MYELOMATA +MYELOMATOUS +MYELOPATHIC +MYELOPATHIES +MYELOPATHY +MYIASES +MYIASIS +MYLAR +MYLARS +MYLONITE +MYLONITES +MYNA +MYNAH +MYNAHS +MYNAS +MYNHEER +MYNHEERS +MYOBLAST +MYOBLASTS +MYOCARDIA +MYOCARDIAL +MYOCARDITIS +MYOCARDITISES +MYOCARDIUM +MYOCLONIC +MYOCLONUS +MYOCLONUSES +MYOELECTRIC +MYOELECTRICAL +MYOFIBRIL +MYOFIBRILLAR +MYOFIBRILS +MYOFILAMENT +MYOFILAMENTS +MYOGENIC +MYOGLOBIN +MYOGLOBINS +MYOGRAPH +MYOGRAPHS +MYOID +MYOINOSITOL +MYOINOSITOLS +MYOLOGIC +MYOLOGIES +MYOLOGIST +MYOLOGISTS +MYOLOGY +MYOMA +MYOMAS +MYOMATA +MYOMATOUS +MYONEURAL +MYOPATHIC +MYOPATHIES +MYOPATHY +MYOPE +MYOPES +MYOPIA +MYOPIAS +MYOPIC +MYOPICALLY +MYOPIES +MYOPY +MYOSCOPE +MYOSCOPES +MYOSES +MYOSIN +MYOSINS +MYOSIS +MYOSITIS +MYOSITISES +MYOSOTE +MYOSOTES +MYOSOTIS +MYOSOTISES +MYOTIC +MYOTICS +MYOTOME +MYOTOMES +MYOTONIA +MYOTONIAS +MYOTONIC +MYRIAD +MYRIADS +MYRIAPOD +MYRIAPODS +MYRICA +MYRICAS +MYRIOPOD +MYRIOPODS +MYRMECOLOGICAL +MYRMECOLOGIES +MYRMECOLOGIST +MYRMECOLOGISTS +MYRMECOLOGY +MYRMECOPHILE +MYRMECOPHILES +MYRMECOPHILOUS +MYRMIDON +MYRMIDONES +MYRMIDONS +MYROBALAN +MYROBALANS +MYRRH +MYRRHIC +MYRRHS +MYRTLE +MYRTLES +MYSELF +MYSID +MYSIDS +MYSOST +MYSOSTS +MYSTAGOG +MYSTAGOGIES +MYSTAGOGS +MYSTAGOGUE +MYSTAGOGUES +MYSTAGOGY +MYSTERIES +MYSTERIOUS +MYSTERIOUSLY +MYSTERIOUSNESS +MYSTERY +MYSTIC +MYSTICAL +MYSTICALLY +MYSTICETE +MYSTICETES +MYSTICISM +MYSTICISMS +MYSTICLY +MYSTICS +MYSTIFICATION +MYSTIFICATIONS +MYSTIFIED +MYSTIFIER +MYSTIFIERS +MYSTIFIES +MYSTIFY +MYSTIFYING +MYSTIFYINGLY +MYSTIQUE +MYSTIQUES +MYTH +MYTHIC +MYTHICAL +MYTHICALLY +MYTHICIZE +MYTHICIZED +MYTHICIZER +MYTHICIZERS +MYTHICIZES +MYTHICIZING +MYTHIER +MYTHIEST +MYTHMAKER +MYTHMAKERS +MYTHMAKING +MYTHMAKINGS +MYTHOGRAPHER +MYTHOGRAPHERS +MYTHOGRAPHIES +MYTHOGRAPHY +MYTHOI +MYTHOLOGER +MYTHOLOGERS +MYTHOLOGIC +MYTHOLOGICAL +MYTHOLOGICALLY +MYTHOLOGIES +MYTHOLOGIST +MYTHOLOGISTS +MYTHOLOGIZE +MYTHOLOGIZED +MYTHOLOGIZER +MYTHOLOGIZERS +MYTHOLOGIZES +MYTHOLOGIZING +MYTHOLOGY +MYTHOMANIA +MYTHOMANIAC +MYTHOMANIACS +MYTHOMANIAS +MYTHOPEIC +MYTHOPOEIA +MYTHOPOEIAS +MYTHOPOEIC +MYTHOPOETIC +MYTHOPOETICAL +MYTHOS +MYTHS +MYTHY +MYXAMEBA +MYXAMEBAE +MYXAMEBAS +MYXAMOEBA +MYXAMOEBAE +MYXAMOEBAS +MYXEDEMA +MYXEDEMAS +MYXEDEMATOUS +MYXEDEMIC +MYXOCYTE +MYXOCYTES +MYXOEDEMA +MYXOEDEMAS +MYXOID +MYXOMA +MYXOMAS +MYXOMATA +MYXOMATOSES +MYXOMATOSIS +MYXOMATOUS +MYXOMYCETE +MYXOMYCETES +MYXOVIRAL +MYXOVIRUS +MYXOVIRUSES +NA +NAAN +NAANS +NAB +NABBED +NABBER +NABBERS +NABBING +NABE +NABES +NABIS +NABOB +NABOBERIES +NABOBERY +NABOBESS +NABOBESSES +NABOBISH +NABOBISM +NABOBISMS +NABOBS +NABS +NACELLE +NACELLES +NACHAS +NACHES +NACHO +NACHOS +NACRE +NACRED +NACREOUS +NACRES +NADA +NADAS +NADIR +NADIRAL +NADIRS +NAE +NAETHING +NAETHINGS +NAEVI +NAEVOID +NAEVUS +NAFF +NAFFED +NAFFING +NAFFS +NAG +NAGANA +NAGANAS +NAGGED +NAGGER +NAGGERS +NAGGIER +NAGGIEST +NAGGING +NAGGINGLY +NAGGY +NAGS +NAH +NAIAD +NAIADES +NAIADS +NAIF +NAIFS +NAIL +NAILBITER +NAILBITERS +NAILBRUSH +NAILBRUSHES +NAILED +NAILER +NAILERS +NAILFOLD +NAILFOLDS +NAILHEAD +NAILHEADS +NAILING +NAILS +NAILSET +NAILSETS +NAINSOOK +NAINSOOKS +NAIRA +NAIRAS +NAIRU +NAIRUS +NAISSANCE +NAISSANCES +NAIVE +NAIVELY +NAIVENESS +NAIVENESSES +NAIVER +NAIVES +NAIVEST +NAIVETE +NAIVETES +NAIVETIES +NAIVETY +NAKED +NAKEDER +NAKEDEST +NAKEDLY +NAKEDNESS +NAKEDNESSES +NAKFA +NAKFAS +NALA +NALAS +NALED +NALEDS +NALORPHINE +NALORPHINES +NALOXONE +NALOXONES +NALTREXONE +NALTREXONES +NAM +NAMABLE +NAMAYCUSH +NAMAYCUSHES +NAME +NAMEABLE +NAMED +NAMELESS +NAMELESSLY +NAMELESSNESS +NAMELESSNESSES +NAMELY +NAMEPLATE +NAMEPLATES +NAMER +NAMERS +NAMES +NAMESAKE +NAMESAKES +NAMETAG +NAMETAGS +NAMING +NAN +NANA +NANAS +NANCE +NANCES +NANCIES +NANCIFIED +NANCY +NANDIN +NANDINA +NANDINAS +NANDINS +NANISM +NANISMS +NANKEEN +NANKEENS +NANKIN +NANKINS +NANNIE +NANNIES +NANNOPLANKTON +NANNOPLANKTONS +NANNY +NANNYISH +NANOGRAM +NANOGRAMS +NANOMETER +NANOMETERS +NANOMETRE +NANOMETRES +NANOSCALE +NANOSECOND +NANOSECONDS +NANOTECH +NANOTECHNOLOGY +NANOTECHS +NANOTESLA +NANOTESLAS +NANOTUBE +NANOTUBES +NANOWATT +NANOWATTS +NANS +NAOI +NAOS +NAP +NAPA +NAPALM +NAPALMED +NAPALMING +NAPALMS +NAPAS +NAPE +NAPERIES +NAPERY +NAPES +NAPHTHA +NAPHTHALENE +NAPHTHALENES +NAPHTHAS +NAPHTHENE +NAPHTHENES +NAPHTHENIC +NAPHTHOL +NAPHTHOLS +NAPHTHOUS +NAPHTHYL +NAPHTHYLAMINE +NAPHTHYLAMINES +NAPHTHYLS +NAPHTOL +NAPHTOLS +NAPIFORM +NAPKIN +NAPKINS +NAPLESS +NAPOLEON +NAPOLEONS +NAPPA +NAPPAS +NAPPE +NAPPED +NAPPER +NAPPERS +NAPPES +NAPPIE +NAPPIER +NAPPIES +NAPPIEST +NAPPINESS +NAPPINESSES +NAPPING +NAPPY +NAPRAPATHIES +NAPRAPATHY +NAPROXEN +NAPROXENS +NAPS +NARC +NARCEIN +NARCEINE +NARCEINES +NARCEINS +NARCISM +NARCISMS +NARCISSI +NARCISSISM +NARCISSISMS +NARCISSIST +NARCISSISTIC +NARCISSISTS +NARCISSUS +NARCISSUSES +NARCIST +NARCISTIC +NARCISTS +NARCO +NARCOLEPSIES +NARCOLEPSY +NARCOLEPTIC +NARCOLEPTICS +NARCOMA +NARCOMAS +NARCOMATA +NARCOS +NARCOSE +NARCOSES +NARCOSIS +NARCOTIC +NARCOTICALLY +NARCOTICS +NARCOTISM +NARCOTISMS +NARCOTIZE +NARCOTIZED +NARCOTIZES +NARCOTIZING +NARCS +NARD +NARDINE +NARDS +NARES +NARGHILE +NARGHILES +NARGILE +NARGILEH +NARGILEHS +NARGILES +NARIAL +NARIC +NARINE +NARIS +NARK +NARKED +NARKING +NARKS +NARKY +NARRATE +NARRATED +NARRATER +NARRATERS +NARRATES +NARRATING +NARRATION +NARRATIONAL +NARRATIONS +NARRATIVE +NARRATIVELY +NARRATIVES +NARRATOLOGICAL +NARRATOLOGIES +NARRATOLOGIST +NARRATOLOGISTS +NARRATOLOGY +NARRATOR +NARRATORS +NARROW +NARROWBAND +NARROWCASTING +NARROWCASTINGS +NARROWED +NARROWER +NARROWEST +NARROWING +NARROWISH +NARROWLY +NARROWNESS +NARROWNESSES +NARROWS +NARTHEX +NARTHEXES +NARWAL +NARWALS +NARWHAL +NARWHALE +NARWHALES +NARWHALS +NARY +NASAL +NASALISE +NASALISED +NASALISES +NASALISING +NASALISM +NASALISMS +NASALITIES +NASALITY +NASALIZATION +NASALIZATIONS +NASALIZE +NASALIZED +NASALIZES +NASALIZING +NASALLY +NASALS +NASCENCE +NASCENCES +NASCENCIES +NASCENCY +NASCENT +NASEBERRIES +NASEBERRY +NASIAL +NASION +NASIONS +NASOGASTRIC +NASOPHARYNGEAL +NASOPHARYNGES +NASOPHARYNX +NASOPHARYNXES +NASTIC +NASTIER +NASTIES +NASTIEST +NASTILY +NASTINESS +NASTINESSES +NASTURTIUM +NASTURTIUMS +NASTY +NATAL +NATALITIES +NATALITY +NATANT +NATANTLY +NATATION +NATATIONS +NATATORIA +NATATORIAL +NATATORIUM +NATATORIUMS +NATATORY +NATCH +NATES +NATHELESS +NATHLESS +NATION +NATIONAL +NATIONALISE +NATIONALISED +NATIONALISES +NATIONALISING +NATIONALISM +NATIONALISMS +NATIONALIST +NATIONALISTIC +NATIONALISTS +NATIONALITIES +NATIONALITY +NATIONALIZATION +NATIONALIZE +NATIONALIZED +NATIONALIZER +NATIONALIZERS +NATIONALIZES +NATIONALIZING +NATIONALLY +NATIONALS +NATIONHOOD +NATIONHOODS +NATIONS +NATIONWIDE +NATIVE +NATIVELY +NATIVENESS +NATIVENESSES +NATIVES +NATIVISM +NATIVISMS +NATIVIST +NATIVISTIC +NATIVISTS +NATIVITIES +NATIVITY +NATRIUM +NATRIUMS +NATRIURESES +NATRIURESIS +NATRIURETIC +NATRIURETICS +NATROLITE +NATROLITES +NATRON +NATRONS +NATTER +NATTERED +NATTERING +NATTERS +NATTIER +NATTIEST +NATTILY +NATTINESS +NATTINESSES +NATTY +NATURAL +NATURALISE +NATURALISED +NATURALISES +NATURALISING +NATURALISM +NATURALISMS +NATURALIST +NATURALISTIC +NATURALISTS +NATURALIZATION +NATURALIZATIONS +NATURALIZE +NATURALIZED +NATURALIZES +NATURALIZING +NATURALLY +NATURALNESS +NATURALNESSES +NATURALS +NATURE +NATURED +NATURES +NATURISM +NATURISMS +NATURIST +NATURISTS +NATUROPATH +NATUROPATHIC +NATUROPATHIES +NATUROPATHS +NATUROPATHY +NAUGAHYDE +NAUGAHYDES +NAUGHT +NAUGHTIER +NAUGHTIES +NAUGHTIEST +NAUGHTILY +NAUGHTINESS +NAUGHTINESSES +NAUGHTS +NAUGHTY +NAUMACHIA +NAUMACHIAE +NAUMACHIAS +NAUMACHIES +NAUMACHY +NAUPLIAL +NAUPLII +NAUPLIUS +NAUSEA +NAUSEANT +NAUSEANTS +NAUSEAS +NAUSEATE +NAUSEATED +NAUSEATES +NAUSEATING +NAUSEATINGLY +NAUSEOUS +NAUSEOUSLY +NAUSEOUSNESS +NAUSEOUSNESSES +NAUTCH +NAUTCHES +NAUTICAL +NAUTICALLY +NAUTILI +NAUTILOID +NAUTILOIDS +NAUTILUS +NAUTILUSES +NAVAID +NAVAIDS +NAVAL +NAVALLY +NAVAR +NAVARS +NAVE +NAVEL +NAVELS +NAVELWORT +NAVELWORTS +NAVES +NAVETTE +NAVETTES +NAVICERT +NAVICERTS +NAVICULAR +NAVICULARS +NAVIES +NAVIGABILITIES +NAVIGABILITY +NAVIGABLE +NAVIGABLY +NAVIGATE +NAVIGATED +NAVIGATES +NAVIGATING +NAVIGATION +NAVIGATIONAL +NAVIGATIONALLY +NAVIGATIONS +NAVIGATOR +NAVIGATORS +NAVVIES +NAVVY +NAVY +NAW +NAWAB +NAWABS +NAY +NAYS +NAYSAID +NAYSAY +NAYSAYER +NAYSAYERS +NAYSAYING +NAYSAYINGS +NAYSAYS +NAZI +NAZIFICATION +NAZIFICATIONS +NAZIFIED +NAZIFIES +NAZIFY +NAZIFYING +NAZIS +NE +NEAP +NEAPS +NEAR +NEARBY +NEARED +NEARER +NEAREST +NEARING +NEARLIER +NEARLIEST +NEARLY +NEARNESS +NEARNESSES +NEARS +NEARSHORE +NEARSIDE +NEARSIDES +NEARSIGHTED +NEARSIGHTEDLY +NEARSIGHTEDNESS +NEAT +NEATEN +NEATENED +NEATENING +NEATENS +NEATER +NEATEST +NEATH +NEATHERD +NEATHERDS +NEATLY +NEATNESS +NEATNESSES +NEATNIK +NEATNIKS +NEATS +NEB +NEBBISH +NEBBISHES +NEBBISHY +NEBENKERN +NEBENKERNS +NEBS +NEBULA +NEBULAE +NEBULAR +NEBULAS +NEBULE +NEBULISE +NEBULISED +NEBULISES +NEBULISING +NEBULIZATION +NEBULIZATIONS +NEBULIZE +NEBULIZED +NEBULIZER +NEBULIZERS +NEBULIZES +NEBULIZING +NEBULOSE +NEBULOSITIES +NEBULOSITY +NEBULOUS +NEBULOUSLY +NEBULOUSNESS +NEBULOUSNESSES +NEBULY +NECESSARIES +NECESSARILY +NECESSARY +NECESSITARIAN +NECESSITARIANS +NECESSITATE +NECESSITATED +NECESSITATES +NECESSITATING +NECESSITATION +NECESSITATIONS +NECESSITIES +NECESSITOUS +NECESSITOUSLY +NECESSITOUSNESS +NECESSITY +NECK +NECKBAND +NECKBANDS +NECKCLOTH +NECKCLOTHS +NECKED +NECKER +NECKERCHIEF +NECKERCHIEFS +NECKERCHIEVES +NECKERS +NECKING +NECKINGS +NECKLACE +NECKLACED +NECKLACES +NECKLACING +NECKLESS +NECKLIKE +NECKLINE +NECKLINES +NECKPIECE +NECKPIECES +NECKS +NECKTIE +NECKTIES +NECKWEAR +NECROLOGICAL +NECROLOGIES +NECROLOGIST +NECROLOGISTS +NECROLOGY +NECROMANCER +NECROMANCERS +NECROMANCIES +NECROMANCY +NECROMANTIC +NECROMANTICALLY +NECROPHAGOUS +NECROPHILIA +NECROPHILIAC +NECROPHILIACS +NECROPHILIAS +NECROPHILIC +NECROPHILISM +NECROPHILISMS +NECROPOLEIS +NECROPOLES +NECROPOLI +NECROPOLIS +NECROPOLISES +NECROPSIED +NECROPSIES +NECROPSY +NECROPSYING +NECROSE +NECROSED +NECROSES +NECROSING +NECROSIS +NECROTIC +NECROTIZE +NECROTIZED +NECROTIZES +NECROTIZING +NECROTOMIES +NECROTOMY +NECTAR +NECTAREAN +NECTARIAL +NECTARIED +NECTARIES +NECTARINE +NECTARINES +NECTAROUS +NECTARS +NECTARY +NEDDIES +NEDDY +NEE +NEED +NEEDED +NEEDER +NEEDERS +NEEDFUL +NEEDFULLY +NEEDFULNESS +NEEDFULNESSES +NEEDFULS +NEEDIER +NEEDIEST +NEEDILY +NEEDINESS +NEEDINESSES +NEEDING +NEEDLE +NEEDLED +NEEDLEFISH +NEEDLEFISHES +NEEDLELIKE +NEEDLEPOINT +NEEDLEPOINTS +NEEDLER +NEEDLERS +NEEDLES +NEEDLESS +NEEDLESSLY +NEEDLESSNESS +NEEDLESSNESSES +NEEDLEWOMAN +NEEDLEWOMEN +NEEDLEWORK +NEEDLEWORKER +NEEDLEWORKERS +NEEDLEWORKS +NEEDLING +NEEDLINGS +NEEDS +NEEDY +NEEM +NEEMS +NEEP +NEEPS +NEFARIOUS +NEFARIOUSLY +NEG +NEGATE +NEGATED +NEGATER +NEGATERS +NEGATES +NEGATING +NEGATION +NEGATIONAL +NEGATIONS +NEGATIVE +NEGATIVED +NEGATIVELY +NEGATIVENESS +NEGATIVENESSES +NEGATIVES +NEGATIVING +NEGATIVISM +NEGATIVISMS +NEGATIVIST +NEGATIVISTIC +NEGATIVISTS +NEGATIVITIES +NEGATIVITY +NEGATON +NEGATONS +NEGATOR +NEGATORS +NEGATRON +NEGATRONS +NEGLECT +NEGLECTED +NEGLECTER +NEGLECTERS +NEGLECTFUL +NEGLECTFULLY +NEGLECTFULNESS +NEGLECTING +NEGLECTOR +NEGLECTORS +NEGLECTS +NEGLIGE +NEGLIGEE +NEGLIGEES +NEGLIGENCE +NEGLIGENCES +NEGLIGENT +NEGLIGENTLY +NEGLIGES +NEGLIGIBILITIES +NEGLIGIBILITY +NEGLIGIBLE +NEGLIGIBLY +NEGOTIABILITIES +NEGOTIABILITY +NEGOTIABLE +NEGOTIANT +NEGOTIANTS +NEGOTIATE +NEGOTIATED +NEGOTIATES +NEGOTIATING +NEGOTIATION +NEGOTIATIONS +NEGOTIATOR +NEGOTIATORS +NEGOTIATORY +NEGRITUDE +NEGRITUDES +NEGROID +NEGROIDS +NEGRONI +NEGRONIS +NEGROPHIL +NEGROPHILS +NEGROPHOBE +NEGROPHOBES +NEGROPHOBIA +NEGROPHOBIAS +NEGS +NEGUS +NEGUSES +NEIF +NEIFS +NEIGH +NEIGHBOR +NEIGHBORED +NEIGHBORHOOD +NEIGHBORHOODS +NEIGHBORING +NEIGHBORLINESS +NEIGHBORLY +NEIGHBORS +NEIGHBOUR +NEIGHBOURED +NEIGHBOURING +NEIGHBOURS +NEIGHED +NEIGHING +NEIGHS +NEIST +NEITHER +NEKTON +NEKTONIC +NEKTONS +NELLIE +NELLIES +NELLY +NELSON +NELSONS +NELUMBIUM +NELUMBIUMS +NELUMBO +NELUMBOS +NEMA +NEMAS +NEMATIC +NEMATICIDAL +NEMATICIDE +NEMATICIDES +NEMATOCIDAL +NEMATOCIDE +NEMATOCIDES +NEMATOCYST +NEMATOCYSTS +NEMATODE +NEMATODES +NEMATOLOGICAL +NEMATOLOGIES +NEMATOLOGIST +NEMATOLOGISTS +NEMATOLOGY +NEMERTEAN +NEMERTEANS +NEMERTINE +NEMERTINES +NEMESES +NEMESIS +NEMOPHILA +NEMOPHILAS +NENE +NENES +NEOCLASSIC +NEOCLASSICAL +NEOCLASSICISM +NEOCLASSICISMS +NEOCLASSICIST +NEOCLASSICISTS +NEOCOLONIAL +NEOCOLONIALISM +NEOCOLONIALISMS +NEOCOLONIALIST +NEOCOLONIALISTS +NEOCON +NEOCONS +NEOCONSERVATISM +NEOCONSERVATIVE +NEOCORTEX +NEOCORTEXES +NEOCORTICAL +NEOCORTICES +NEODYMIUM +NEODYMIUMS +NEOGENE +NEOLIBERAL +NEOLIBERALISM +NEOLIBERALISMS +NEOLIBERALS +NEOLITH +NEOLITHIC +NEOLITHS +NEOLOGIC +NEOLOGIES +NEOLOGISM +NEOLOGISMS +NEOLOGIST +NEOLOGISTIC +NEOLOGISTS +NEOLOGIZE +NEOLOGIZED +NEOLOGIZES +NEOLOGIZING +NEOLOGY +NEOMORPH +NEOMORPHS +NEOMYCIN +NEOMYCINS +NEON +NEONATAL +NEONATALLY +NEONATE +NEONATES +NEONATOLOGIES +NEONATOLOGIST +NEONATOLOGISTS +NEONATOLOGY +NEONED +NEONS +NEOORTHODOX +NEOORTHODOXIES +NEOORTHODOXY +NEOPHILIA +NEOPHILIAC +NEOPHILIACS +NEOPHILIAS +NEOPHYTE +NEOPHYTES +NEOPHYTIC +NEOPLASIA +NEOPLASIAS +NEOPLASM +NEOPLASMS +NEOPLASTIC +NEOPLASTICISM +NEOPLASTICISMS +NEOPLASTICIST +NEOPLASTICISTS +NEOPLASTIES +NEOPLASTY +NEOPRENE +NEOPRENES +NEOREALISM +NEOREALISMS +NEOREALIST +NEOREALISTIC +NEOREALISTS +NEOSTIGMINE +NEOSTIGMINES +NEOTENIC +NEOTENIES +NEOTENOUS +NEOTENY +NEOTERIC +NEOTERICS +NEOTROPIC +NEOTROPICS +NEOTYPE +NEOTYPES +NEPENTHE +NEPENTHEAN +NEPENTHES +NEPETA +NEPETAS +NEPHELINE +NEPHELINES +NEPHELINIC +NEPHELINITE +NEPHELINITES +NEPHELINITIC +NEPHELITE +NEPHELITES +NEPHELOMETER +NEPHELOMETERS +NEPHELOMETRIC +NEPHELOMETRIES +NEPHELOMETRY +NEPHEW +NEPHEWS +NEPHOGRAM +NEPHOGRAMS +NEPHOLOGIES +NEPHOLOGY +NEPHOSCOPE +NEPHOSCOPES +NEPHRECTOMIES +NEPHRECTOMIZE +NEPHRECTOMIZED +NEPHRECTOMIZES +NEPHRECTOMIZING +NEPHRECTOMY +NEPHRIC +NEPHRIDIA +NEPHRIDIAL +NEPHRIDIUM +NEPHRISM +NEPHRISMS +NEPHRITE +NEPHRITES +NEPHRITIC +NEPHRITIDES +NEPHRITIS +NEPHRITISES +NEPHROLOGIES +NEPHROLOGIST +NEPHROLOGISTS +NEPHROLOGY +NEPHRON +NEPHRONS +NEPHROPATHIC +NEPHROPATHIES +NEPHROPATHY +NEPHROSES +NEPHROSIS +NEPHROSTOME +NEPHROSTOMES +NEPHROTIC +NEPHROTICS +NEPHROTOXIC +NEPHROTOXICITY +NEPOTIC +NEPOTISM +NEPOTISMS +NEPOTIST +NEPOTISTIC +NEPOTISTS +NEPTUNIUM +NEPTUNIUMS +NERD +NERDIER +NERDIEST +NERDINESS +NERDINESSES +NERDISH +NERDS +NERDY +NEREID +NEREIDES +NEREIDS +NEREIS +NERITIC +NEROL +NEROLI +NEROLIS +NEROLS +NERTS +NERTZ +NERVATE +NERVATION +NERVATIONS +NERVATURE +NERVATURES +NERVE +NERVED +NERVELESS +NERVELESSLY +NERVELESSNESS +NERVELESSNESSES +NERVES +NERVIER +NERVIEST +NERVILY +NERVINE +NERVINES +NERVINESS +NERVINESSES +NERVING +NERVINGS +NERVOSITIES +NERVOSITY +NERVOUS +NERVOUSLY +NERVOUSNESS +NERVOUSNESSES +NERVULE +NERVULES +NERVURE +NERVURES +NERVY +NESCIENCE +NESCIENCES +NESCIENT +NESCIENTS +NESS +NESSES +NEST +NESTABLE +NESTED +NESTER +NESTERS +NESTING +NESTLE +NESTLED +NESTLER +NESTLERS +NESTLES +NESTLIKE +NESTLING +NESTLINGS +NESTOR +NESTORS +NESTS +NET +NETHER +NETHERMOST +NETHERWORLD +NETHERWORLDS +NETIQUETTE +NETIQUETTES +NETIZEN +NETIZENS +NETLESS +NETLIKE +NETMINDER +NETMINDERS +NETOP +NETOPS +NETS +NETSUKE +NETSUKES +NETT +NETTABLE +NETTED +NETTER +NETTERS +NETTIER +NETTIEST +NETTING +NETTINGS +NETTLE +NETTLED +NETTLER +NETTLERS +NETTLES +NETTLESOME +NETTLIER +NETTLIEST +NETTLING +NETTLY +NETTS +NETTY +NETWORK +NETWORKED +NETWORKER +NETWORKERS +NETWORKING +NETWORKINGS +NETWORKS +NEUK +NEUKS +NEUM +NEUMATIC +NEUME +NEUMES +NEUMIC +NEUMS +NEURAL +NEURALGIA +NEURALGIAS +NEURALGIC +NEURALLY +NEURAMINIDASE +NEURAMINIDASES +NEURASTHENIA +NEURASTHENIAS +NEURASTHENIC +NEURASTHENICS +NEURAXON +NEURAXONS +NEURILEMMA +NEURILEMMAL +NEURILEMMAS +NEURINE +NEURINES +NEURITIC +NEURITICS +NEURITIDES +NEURITIS +NEURITISES +NEUROACTIVE +NEUROANATOMIC +NEUROANATOMICAL +NEUROANATOMIES +NEUROANATOMIST +NEUROANATOMISTS +NEUROANATOMY +NEUROBIOLOGICAL +NEUROBIOLOGIES +NEUROBIOLOGIST +NEUROBIOLOGISTS +NEUROBIOLOGY +NEUROBLASTOMA +NEUROBLASTOMAS +NEUROBLASTOMATA +NEUROCHEMICAL +NEUROCHEMICALS +NEUROCHEMIST +NEUROCHEMISTRY +NEUROCHEMISTS +NEUROCOEL +NEUROCOELS +NEUROENDOCRINE +NEUROFIBRIL +NEUROFIBRILLARY +NEUROFIBRILS +NEUROFIBROMA +NEUROFIBROMAS +NEUROFIBROMATA +NEUROGENIC +NEUROGENICALLY +NEUROGLIA +NEUROGLIAL +NEUROGLIAS +NEUROHORMONAL +NEUROHORMONE +NEUROHORMONES +NEUROHUMOR +NEUROHUMORAL +NEUROHUMORS +NEUROHYPOPHYSES +NEUROHYPOPHYSIS +NEUROID +NEUROLEPTIC +NEUROLEPTICS +NEUROLOGIC +NEUROLOGICAL +NEUROLOGICALLY +NEUROLOGIES +NEUROLOGIST +NEUROLOGISTS +NEUROLOGY +NEUROMA +NEUROMAS +NEUROMAST +NEUROMASTS +NEUROMATA +NEUROMUSCULAR +NEURON +NEURONAL +NEURONE +NEURONES +NEURONIC +NEURONS +NEUROPATH +NEUROPATHIC +NEUROPATHICALLY +NEUROPATHIES +NEUROPATHOLOGIC +NEUROPATHOLOGY +NEUROPATHS +NEUROPATHY +NEUROPEPTIDE +NEUROPEPTIDES +NEUROPHYSIOLOGY +NEUROPSYCHIATRY +NEUROPSYCHOLOGY +NEUROPTERAN +NEUROPTERANS +NEUROPTEROUS +NEURORADIOLOGY +NEUROSAL +NEUROSCIENCE +NEUROSCIENCES +NEUROSCIENTIFIC +NEUROSCIENTIST +NEUROSCIENTISTS +NEUROSECRETION +NEUROSECRETIONS +NEUROSECRETORY +NEUROSENSORY +NEUROSES +NEUROSIS +NEUROSPORA +NEUROSPORAS +NEUROSURGEON +NEUROSURGEONS +NEUROSURGERIES +NEUROSURGERY +NEUROSURGICAL +NEUROTIC +NEUROTICALLY +NEUROTICISM +NEUROTICISMS +NEUROTICS +NEUROTOMIES +NEUROTOMY +NEUROTOXIC +NEUROTOXICITIES +NEUROTOXICITY +NEUROTOXIN +NEUROTOXINS +NEUROTROPIC +NEURULA +NEURULAE +NEURULAR +NEURULAS +NEURULATION +NEURULATIONS +NEUSTIC +NEUSTON +NEUSTONIC +NEUSTONS +NEUTER +NEUTERED +NEUTERING +NEUTERS +NEUTRAL +NEUTRALISE +NEUTRALISED +NEUTRALISES +NEUTRALISING +NEUTRALISM +NEUTRALISMS +NEUTRALIST +NEUTRALISTIC +NEUTRALISTS +NEUTRALITIES +NEUTRALITY +NEUTRALIZATION +NEUTRALIZATIONS +NEUTRALIZE +NEUTRALIZED +NEUTRALIZER +NEUTRALIZERS +NEUTRALIZES +NEUTRALIZING +NEUTRALLY +NEUTRALNESS +NEUTRALNESSES +NEUTRALS +NEUTRINO +NEUTRINOLESS +NEUTRINOS +NEUTRON +NEUTRONIC +NEUTRONS +NEUTROPHIL +NEUTROPHILIC +NEUTROPHILS +NEVE +NEVER +NEVERMIND +NEVERMINDS +NEVERMORE +NEVERTHELESS +NEVES +NEVI +NEVOID +NEVUS +NEW +NEWBIE +NEWBIES +NEWBORN +NEWBORNS +NEWCOMER +NEWCOMERS +NEWEL +NEWELS +NEWER +NEWEST +NEWFANGLED +NEWFANGLEDNESS +NEWFOUND +NEWIE +NEWIES +NEWISH +NEWLY +NEWLYWED +NEWLYWEDS +NEWMARKET +NEWMARKETS +NEWMOWN +NEWNESS +NEWNESSES +NEWS +NEWSAGENT +NEWSAGENTS +NEWSBEAT +NEWSBEATS +NEWSBOY +NEWSBOYS +NEWSBREAK +NEWSBREAKS +NEWSCAST +NEWSCASTER +NEWSCASTERS +NEWSCASTS +NEWSDEALER +NEWSDEALERS +NEWSDESK +NEWSDESKS +NEWSGIRL +NEWSGIRLS +NEWSGROUP +NEWSGROUPS +NEWSHAWK +NEWSHAWKS +NEWSHOUND +NEWSHOUNDS +NEWSIE +NEWSIER +NEWSIES +NEWSIEST +NEWSINESS +NEWSINESSES +NEWSLESS +NEWSLETTER +NEWSLETTERS +NEWSMAGAZINE +NEWSMAGAZINES +NEWSMAKER +NEWSMAKERS +NEWSMAN +NEWSMEN +NEWSMONGER +NEWSMONGERS +NEWSPAPER +NEWSPAPERED +NEWSPAPERING +NEWSPAPERMAN +NEWSPAPERMEN +NEWSPAPERS +NEWSPAPERWOMAN +NEWSPAPERWOMEN +NEWSPEAK +NEWSPEAKS +NEWSPEOPLE +NEWSPERSON +NEWSPERSONS +NEWSPRINT +NEWSPRINTS +NEWSREADER +NEWSREADERS +NEWSREEL +NEWSREELS +NEWSROOM +NEWSROOMS +NEWSSTAND +NEWSSTANDS +NEWSWEEKLIES +NEWSWEEKLY +NEWSWIRE +NEWSWIRES +NEWSWOMAN +NEWSWOMEN +NEWSWORTHINESS +NEWSWORTHY +NEWSWRITING +NEWSWRITINGS +NEWSY +NEWT +NEWTON +NEWTONS +NEWTS +NEWWAVER +NEWWAVERS +NEXT +NEXTDOOR +NEXUS +NEXUSES +NGULTRUM +NGULTRUMS +NGWEE +NIACIN +NIACINAMIDE +NIACINAMIDES +NIACINS +NIALAMIDE +NIALAMIDES +NIB +NIBBED +NIBBING +NIBBLE +NIBBLED +NIBBLER +NIBBLERS +NIBBLES +NIBBLING +NIBLICK +NIBLICKS +NIBLIKE +NIBS +NICAD +NICADS +NICCOLITE +NICCOLITES +NICE +NICELY +NICENESS +NICENESSES +NICER +NICEST +NICETIES +NICETY +NICHE +NICHED +NICHES +NICHING +NICK +NICKED +NICKEL +NICKELED +NICKELIC +NICKELIFEROUS +NICKELING +NICKELLED +NICKELLING +NICKELODEON +NICKELODEONS +NICKELOUS +NICKELS +NICKER +NICKERED +NICKERING +NICKERS +NICKING +NICKLE +NICKLED +NICKLES +NICKLING +NICKNACK +NICKNACKS +NICKNAME +NICKNAMED +NICKNAMER +NICKNAMERS +NICKNAMES +NICKNAMING +NICKS +NICOISE +NICOL +NICOLS +NICOTIANA +NICOTIANAS +NICOTIN +NICOTINAMIDE +NICOTINAMIDES +NICOTINE +NICOTINES +NICOTINIC +NICOTINS +NICTATE +NICTATED +NICTATES +NICTATING +NICTATION +NICTATIONS +NICTITANT +NICTITATE +NICTITATED +NICTITATES +NICTITATING +NIDAL +NIDATE +NIDATED +NIDATES +NIDATING +NIDATION +NIDATIONS +NIDDERING +NIDDERINGS +NIDE +NIDED +NIDERING +NIDERINGS +NIDES +NIDGET +NIDGETS +NIDI +NIDICOLOUS +NIDIFICATION +NIDIFICATIONS +NIDIFIED +NIDIFIES +NIDIFUGOUS +NIDIFY +NIDIFYING +NIDING +NIDUS +NIDUSES +NIECE +NIECES +NIELLI +NIELLIST +NIELLISTS +NIELLO +NIELLOED +NIELLOING +NIELLOS +NIEVE +NIEVES +NIFEDIPINE +NIFEDIPINES +NIFFER +NIFFERED +NIFFERING +NIFFERS +NIFTIER +NIFTIES +NIFTIEST +NIFTILY +NIFTINESS +NIFTINESSES +NIFTY +NIGELLA +NIGELLAS +NIGGARD +NIGGARDED +NIGGARDING +NIGGARDLINESS +NIGGARDLINESSES +NIGGARDLY +NIGGARDS +NIGGER +NIGGERS +NIGGLE +NIGGLED +NIGGLER +NIGGLERS +NIGGLES +NIGGLIER +NIGGLIEST +NIGGLING +NIGGLINGLY +NIGGLINGS +NIGGLY +NIGH +NIGHED +NIGHER +NIGHEST +NIGHING +NIGHNESS +NIGHNESSES +NIGHS +NIGHT +NIGHTCAP +NIGHTCAPS +NIGHTCLOTHES +NIGHTCLUB +NIGHTCLUBBED +NIGHTCLUBBER +NIGHTCLUBBERS +NIGHTCLUBBING +NIGHTCLUBS +NIGHTDRESS +NIGHTDRESSES +NIGHTFALL +NIGHTFALLS +NIGHTGLOW +NIGHTGLOWS +NIGHTGOWN +NIGHTGOWNS +NIGHTHAWK +NIGHTHAWKS +NIGHTIE +NIGHTIES +NIGHTINGALE +NIGHTINGALES +NIGHTJAR +NIGHTJARS +NIGHTLESS +NIGHTLIFE +NIGHTLIFES +NIGHTLIVES +NIGHTLONG +NIGHTLY +NIGHTMARE +NIGHTMARES +NIGHTMARISH +NIGHTMARISHLY +NIGHTS +NIGHTSCOPE +NIGHTSCOPES +NIGHTSHADE +NIGHTSHADES +NIGHTSHIRT +NIGHTSHIRTS +NIGHTSIDE +NIGHTSIDES +NIGHTSPOT +NIGHTSPOTS +NIGHTSTAND +NIGHTSTANDS +NIGHTSTICK +NIGHTSTICKS +NIGHTTIDE +NIGHTTIDES +NIGHTTIME +NIGHTTIMES +NIGHTWALKER +NIGHTWALKERS +NIGHTWEAR +NIGHTY +NIGRIFIED +NIGRIFIES +NIGRIFY +NIGRIFYING +NIGRITUDE +NIGRITUDES +NIGROSIN +NIGROSINE +NIGROSINES +NIGROSINS +NIHIL +NIHILISM +NIHILISMS +NIHILIST +NIHILISTIC +NIHILISTS +NIHILITIES +NIHILITY +NIHILS +NIL +NILGAI +NILGAIS +NILGAU +NILGAUS +NILGHAI +NILGHAIS +NILGHAU +NILGHAUS +NILL +NILLED +NILLING +NILLS +NILPOTENT +NILPOTENTS +NILS +NIM +NIMBI +NIMBLE +NIMBLENESS +NIMBLENESSES +NIMBLER +NIMBLEST +NIMBLY +NIMBOSTRATI +NIMBOSTRATUS +NIMBUS +NIMBUSED +NIMBUSES +NIMBYNESS +NIMBYNESSES +NIMIETIES +NIMIETY +NIMIOUS +NIMMED +NIMMING +NIMROD +NIMRODS +NIMS +NINCOMPOOP +NINCOMPOOPERIES +NINCOMPOOPERY +NINCOMPOOPS +NINE +NINEBARK +NINEBARKS +NINEFOLD +NINEPIN +NINEPINS +NINES +NINETEEN +NINETEENS +NINETEENTH +NINETEENTHS +NINETIES +NINETIETH +NINETIETHS +NINETY +NINHYDRIN +NINHYDRINS +NINJA +NINJAS +NINNIES +NINNY +NINNYHAMMER +NINNYHAMMERS +NINNYISH +NINON +NINONS +NINTH +NINTHLY +NINTHS +NIOBATE +NIOBATES +NIOBIC +NIOBITE +NIOBITES +NIOBIUM +NIOBIUMS +NIOBOUS +NIP +NIPA +NIPAS +NIPPED +NIPPER +NIPPERS +NIPPIER +NIPPIEST +NIPPILY +NIPPINESS +NIPPINESSES +NIPPING +NIPPINGLY +NIPPLE +NIPPLED +NIPPLES +NIPPY +NIPS +NIRVANA +NIRVANAS +NIRVANIC +NISEI +NISEIS +NISI +NISUS +NIT +NITCHIE +NITCHIES +NITE +NITER +NITERIE +NITERIES +NITERS +NITERY +NITES +NITID +NITINOL +NITINOLS +NITON +NITONS +NITPICK +NITPICKED +NITPICKER +NITPICKERS +NITPICKIER +NITPICKIEST +NITPICKING +NITPICKS +NITPICKY +NITRATE +NITRATED +NITRATES +NITRATING +NITRATION +NITRATIONS +NITRATOR +NITRATORS +NITRE +NITRES +NITRIC +NITRID +NITRIDE +NITRIDED +NITRIDES +NITRIDING +NITRIDS +NITRIFICATION +NITRIFICATIONS +NITRIFIED +NITRIFIER +NITRIFIERS +NITRIFIES +NITRIFY +NITRIFYING +NITRIL +NITRILE +NITRILES +NITRILS +NITRITE +NITRITES +NITRO +NITROBENZENE +NITROBENZENES +NITROCELLULOSE +NITROCELLULOSES +NITROFURAN +NITROFURANS +NITROGEN +NITROGENASE +NITROGENASES +NITROGENOUS +NITROGENS +NITROGLYCERIN +NITROGLYCERINE +NITROGLYCERINES +NITROGLYCERINS +NITROLIC +NITROMETHANE +NITROMETHANES +NITROPARAFFIN +NITROPARAFFINS +NITROS +NITROSAMINE +NITROSAMINES +NITROSO +NITROSYL +NITROSYLS +NITROUS +NITS +NITTIER +NITTIEST +NITTY +NITWIT +NITWITS +NIVAL +NIVEOUS +NIX +NIXE +NIXED +NIXES +NIXIE +NIXIES +NIXING +NIXY +NIZAM +NIZAMATE +NIZAMATES +NIZAMS +NO +NOB +NOBBIER +NOBBIEST +NOBBILY +NOBBLE +NOBBLED +NOBBLER +NOBBLERS +NOBBLES +NOBBLING +NOBBY +NOBELIUM +NOBELIUMS +NOBILIARY +NOBILITIES +NOBILITY +NOBLE +NOBLEMAN +NOBLEMEN +NOBLENESS +NOBLENESSES +NOBLER +NOBLES +NOBLESSE +NOBLESSES +NOBLEST +NOBLEWOMAN +NOBLEWOMEN +NOBLY +NOBODIES +NOBODY +NOBS +NOCENT +NOCICEPTIVE +NOCK +NOCKED +NOCKING +NOCKS +NOCTAMBULIST +NOCTAMBULISTS +NOCTILUCA +NOCTILUCAS +NOCTUID +NOCTUIDS +NOCTULE +NOCTULES +NOCTUOID +NOCTURN +NOCTURNAL +NOCTURNALLY +NOCTURNE +NOCTURNES +NOCTURNS +NOCUOUS +NOCUOUSLY +NOD +NODAL +NODALITIES +NODALITY +NODALLY +NODDED +NODDER +NODDERS +NODDIES +NODDING +NODDINGLY +NODDLE +NODDLED +NODDLES +NODDLING +NODDY +NODE +NODES +NODI +NODICAL +NODOSE +NODOSITIES +NODOSITY +NODOUS +NODS +NODULAR +NODULATION +NODULATIONS +NODULE +NODULES +NODULOSE +NODULOUS +NODUS +NOEL +NOELS +NOES +NOESIS +NOESISES +NOETIC +NOG +NOGG +NOGGED +NOGGIN +NOGGING +NOGGINGS +NOGGINS +NOGGS +NOGS +NOH +NOHOW +NOIL +NOILS +NOILY +NOIR +NOIRISH +NOIRS +NOISE +NOISED +NOISELESS +NOISELESSLY +NOISEMAKER +NOISEMAKERS +NOISEMAKING +NOISEMAKINGS +NOISES +NOISETTE +NOISETTES +NOISIER +NOISIEST +NOISILY +NOISINESS +NOISINESSES +NOISING +NOISOME +NOISOMELY +NOISOMENESS +NOISOMENESSES +NOISY +NOLO +NOLOS +NOM +NOMA +NOMAD +NOMADIC +NOMADISM +NOMADISMS +NOMADS +NOMARCH +NOMARCHIES +NOMARCHS +NOMARCHY +NOMAS +NOMBLES +NOMBRIL +NOMBRILS +NOME +NOMEN +NOMENCLATOR +NOMENCLATORIAL +NOMENCLATORS +NOMENCLATURAL +NOMENCLATURE +NOMENCLATURES +NOMES +NOMINA +NOMINAL +NOMINALISM +NOMINALISMS +NOMINALIST +NOMINALISTIC +NOMINALISTS +NOMINALLY +NOMINALS +NOMINATE +NOMINATED +NOMINATES +NOMINATING +NOMINATION +NOMINATIONS +NOMINATIVE +NOMINATIVES +NOMINATOR +NOMINATORS +NOMINEE +NOMINEES +NOMISM +NOMISMS +NOMISTIC +NOMOGRAM +NOMOGRAMS +NOMOGRAPH +NOMOGRAPHIC +NOMOGRAPHIES +NOMOGRAPHS +NOMOGRAPHY +NOMOI +NOMOLOGIC +NOMOLOGICAL +NOMOLOGIES +NOMOLOGY +NOMOS +NOMOTHETIC +NOMS +NONA +NONABRASIVE +NONABSORBABLE +NONABSORBENT +NONABSORPTIVE +NONABSTRACT +NONACADEMIC +NONACADEMICS +NONACCEPTANCE +NONACCEPTANCES +NONACCOUNTABLE +NONACCREDITED +NONACCRUAL +NONACHIEVEMENT +NONACHIEVEMENTS +NONACID +NONACIDIC +NONACIDS +NONACQUISITIVE +NONACTING +NONACTION +NONACTIONS +NONACTIVATED +NONACTIVE +NONACTOR +NONACTORS +NONADAPTIVE +NONADDICT +NONADDICTIVE +NONADDICTS +NONADDITIVE +NONADDITIVITIES +NONADDITIVITY +NONADHESIVE +NONADIABATIC +NONADJACENT +NONADMIRER +NONADMIRERS +NONADMISSION +NONADMISSIONS +NONADULT +NONADULTS +NONAESTHETIC +NONAFFILIATED +NONAFFLUENT +NONAGE +NONAGENARIAN +NONAGENARIANS +NONAGES +NONAGGRESSION +NONAGGRESSIONS +NONAGGRESSIVE +NONAGON +NONAGONAL +NONAGONS +NONAGRICULTURAL +NONALCOHOLIC +NONALIGNED +NONALIGNMENT +NONALIGNMENTS +NONALLELIC +NONALLERGENIC +NONALLERGIC +NONALPHABETIC +NONALUMINUM +NONAMBIGUOUS +NONANALYTIC +NONANATOMIC +NONANIMAL +NONANSWER +NONANSWERS +NONANTAGONISTIC +NONANTIBIOTIC +NONANTIBIOTICS +NONANTIGENIC +NONAPPEARANCE +NONAPPEARANCES +NONAQUATIC +NONAQUEOUS +NONARABLE +NONARBITRARY +NONARCHITECT +NONARCHITECTS +NONARCHITECTURE +NONARGUMENT +NONARGUMENTS +NONARISTOCRATIC +NONAROMATIC +NONAROMATICS +NONART +NONARTIST +NONARTISTIC +NONARTISTS +NONARTS +NONAS +NONASCETIC +NONASPIRIN +NONASSERTIVE +NONASSOCIATED +NONASTRONOMICAL +NONATHLETE +NONATHLETES +NONATHLETIC +NONATOMIC +NONATTACHED +NONATTACHMENT +NONATTACHMENTS +NONATTENDANCE +NONATTENDANCES +NONATTENDER +NONATTENDERS +NONAUDITORY +NONAUTHOR +NONAUTHORS +NONAUTOMATED +NONAUTOMATIC +NONAUTOMOTIVE +NONAUTONOMOUS +NONAVAILABILITY +NONBACTERIAL +NONBANK +NONBANKING +NONBANKS +NONBARBITURATE +NONBARBITURATES +NONBASIC +NONBEARING +NONBEHAVIORAL +NONBEING +NONBEINGS +NONBELIEF +NONBELIEFS +NONBELIEVER +NONBELIEVERS +NONBELLIGERENCY +NONBELLIGERENT +NONBELLIGERENTS +NONBETTING +NONBINARY +NONBINDING +NONBIOGRAPHICAL +NONBIOLOGICAL +NONBIOLOGICALLY +NONBIOLOGIST +NONBIOLOGISTS +NONBITING +NONBLACK +NONBLACKS +NONBODIES +NONBODY +NONBONDED +NONBONDING +NONBOOK +NONBOOKS +NONBOTANIST +NONBOTANISTS +NONBRAND +NONBREAKABLE +NONBREATHING +NONBREEDER +NONBREEDERS +NONBREEDING +NONBROADCAST +NONBUILDING +NONBURNABLE +NONBUSINESS +NONBUYING +NONCABINET +NONCAKING +NONCALLABLE +NONCALORIC +NONCAMPUS +NONCANCELABLE +NONCANCEROUS +NONCANDIDACIES +NONCANDIDACY +NONCANDIDATE +NONCANDIDATES +NONCAPITAL +NONCAPITALIST +NONCAPITALISTS +NONCARCINOGEN +NONCARCINOGENIC +NONCARCINOGENS +NONCARDIAC +NONCAREER +NONCARRIER +NONCARRIERS +NONCASH +NONCASUAL +NONCAUSAL +NONCE +NONCELEBRATION +NONCELEBRATIONS +NONCELEBRITIES +NONCELEBRITY +NONCELLULAR +NONCELLULOSIC +NONCENTRAL +NONCEREAL +NONCERTIFICATED +NONCERTIFIED +NONCES +NONCHALANCE +NONCHALANCES +NONCHALANT +NONCHALANTLY +NONCHARACTER +NONCHARACTERS +NONCHARISMATIC +NONCHARISMATICS +NONCHAUVINIST +NONCHEMICAL +NONCHEMICALS +NONCHROMOSOMAL +NONCHURCH +NONCHURCHGOER +NONCHURCHGOERS +NONCIRCULAR +NONCIRCULATING +NONCITIZEN +NONCITIZENS +NONCLANDESTINE +NONCLASS +NONCLASSES +NONCLASSICAL +NONCLASSIFIED +NONCLASSROOM +NONCLERICAL +NONCLING +NONCLINICAL +NONCLOGGING +NONCODING +NONCOERCIVE +NONCOGNITIVE +NONCOHERENT +NONCOINCIDENCE +NONCOINCIDENCES +NONCOITAL +NONCOKING +NONCOLA +NONCOLAS +NONCOLLECTOR +NONCOLLECTORS +NONCOLLEGE +NONCOLLEGIATE +NONCOLLINEAR +NONCOLOR +NONCOLORED +NONCOLORFAST +NONCOLORS +NONCOM +NONCOMBAT +NONCOMBATANT +NONCOMBATANTS +NONCOMBATIVE +NONCOMBUSTIBLE +NONCOMMERCIAL +NONCOMMITMENT +NONCOMMITMENTS +NONCOMMITTAL +NONCOMMITTALLY +NONCOMMITTED +NONCOMMUNIST +NONCOMMUNISTS +NONCOMMUNITY +NONCOMMUTATIVE +NONCOMPARABLE +NONCOMPATIBLE +NONCOMPETITION +NONCOMPETITIVE +NONCOMPETITOR +NONCOMPETITORS +NONCOMPLEX +NONCOMPLIANCE +NONCOMPLIANCES +NONCOMPLICATED +NONCOMPLYING +NONCOMPOSER +NONCOMPOSERS +NONCOMPOUND +NONCOMPRESSIBLE +NONCOMPUTER +NONCOMPUTERIZED +NONCOMS +NONCONCEPTUAL +NONCONCERN +NONCONCERNS +NONCONCLUSION +NONCONCLUSIONS +NONCONCUR +NONCONCURRED +NONCONCURRENCE +NONCONCURRENCES +NONCONCURRENT +NONCONCURRING +NONCONCURS +NONCONDENSABLE +NONCONDITIONED +NONCONDUCTING +NONCONDUCTION +NONCONDUCTIVE +NONCONDUCTOR +NONCONDUCTORS +NONCONFERENCE +NONCONFIDENCE +NONCONFIDENCES +NONCONFIDENTIAL +NONCONFLICTING +NONCONFORM +NONCONFORMANCE +NONCONFORMANCES +NONCONFORMED +NONCONFORMER +NONCONFORMERS +NONCONFORMING +NONCONFORMISM +NONCONFORMISMS +NONCONFORMIST +NONCONFORMISTS +NONCONFORMITIES +NONCONFORMITY +NONCONFORMS +NONCONGRUENT +NONCONJUGATED +NONCONNECTION +NONCONNECTIONS +NONCONSCIOUS +NONCONSECUTIVE +NONCONSENSUAL +NONCONSERVATION +NONCONSERVATIVE +NONCONSOLIDATED +NONCONSTANT +NONCONSTRUCTION +NONCONSTRUCTIVE +NONCONSUMER +NONCONSUMERS +NONCONSUMING +NONCONSUMPTION +NONCONSUMPTIONS +NONCONSUMPTIVE +NONCONTACT +NONCONTAGIOUS +NONCONTEMPORARY +NONCONTIGUOUS +NONCONTINGENT +NONCONTINUOUS +NONCONTRACT +NONCONTRACTUAL +NONCONTRIBUTORY +NONCONTROLLABLE +NONCONTROLLED +NONCONTROLLING +NONCONVENTIONAL +NONCONVERTIBLE +NONCOOPERATION +NONCOOPERATIONS +NONCOOPERATIVE +NONCOOPERATOR +NONCOOPERATORS +NONCOPLANAR +NONCORE +NONCORPORATE +NONCORRELATION +NONCORRELATIONS +NONCORRODIBLE +NONCORRODING +NONCORROSIVE +NONCOUNTRY +NONCOUNTY +NONCOVERAGE +NONCOVERAGES +NONCREATIVE +NONCREATIVITIES +NONCREATIVITY +NONCREDENTIALED +NONCREDIT +NONCRIME +NONCRIMES +NONCRIMINAL +NONCRIMINALS +NONCRISES +NONCRISIS +NONCRITICAL +NONCROSSOVER +NONCRUSHABLE +NONCRYSTALLINE +NONCULINARY +NONCULTIVATED +NONCULTIVATION +NONCULTIVATIONS +NONCULTURAL +NONCUMULATIVE +NONCURRENT +NONCUSTODIAL +NONCUSTOMER +NONCUSTOMERS +NONCYCLIC +NONCYCLICAL +NONDAIRY +NONDANCE +NONDANCER +NONDANCERS +NONDANCES +NONDECEPTIVE +NONDECISION +NONDECISIONS +NONDECREASING +NONDEDUCTIBLE +NONDEDUCTIVE +NONDEFENSE +NONDEFERRABLE +NONDEFORMING +NONDEGENERATE +NONDEGRADABLE +NONDEGREE +NONDELEGATE +NONDELEGATES +NONDELIBERATE +NONDELINQUENT +NONDELINQUENTS +NONDELIVERIES +NONDELIVERY +NONDEMAND +NONDEMANDING +NONDEMANDS +NONDEMOCRATIC +NONDEPARTMENTAL +NONDEPENDENT +NONDEPENDENTS +NONDEPLETABLE +NONDEPLETING +NONDEPOSITION +NONDEPOSITIONS +NONDEPRESSED +NONDERIVATIVE +NONDESCRIPT +NONDESCRIPTIVE +NONDESCRIPTS +NONDESERT +NONDESTRUCTIVE +NONDETACHABLE +NONDEVELOPMENT +NONDEVELOPMENTS +NONDEVIANT +NONDIABETIC +NONDIABETICS +NONDIALYZABLE +NONDIAPAUSING +NONDIDACTIC +NONDIFFUSIBLE +NONDIMENSIONAL +NONDIPLOMATIC +NONDIRECTED +NONDIRECTIONAL +NONDIRECTIVE +NONDISABLED +NONDISCLOSURE +NONDISCLOSURES +NONDISCOUNT +NONDISCURSIVE +NONDISJUNCTION +NONDISJUNCTIONS +NONDISPERSIVE +NONDISRUPTIVE +NONDISTINCTIVE +NONDIVERSIFIED +NONDIVIDING +NONDOCTOR +NONDOCTORS +NONDOCTRINAIRE +NONDOCUMENTARY +NONDOGMATIC +NONDOLLAR +NONDOMESTIC +NONDOMINANT +NONDORMANT +NONDRAMATIC +NONDRINKER +NONDRINKERS +NONDRINKING +NONDRIP +NONDRIVER +NONDRIVERS +NONDRUG +NONDRYING +NONDURABLE +NONE +NONEARNING +NONECONOMIC +NONECONOMIST +NONECONOMISTS +NONEDIBLE +NONEDIBLES +NONEDITORIAL +NONEDUCATION +NONEDUCATIONAL +NONEFFECTIVE +NONEGO +NONEGOS +NONELASTIC +NONELECT +NONELECTED +NONELECTION +NONELECTIONS +NONELECTIVE +NONELECTRIC +NONELECTRICAL +NONELECTROLYTE +NONELECTROLYTES +NONELECTRONIC +NONELEMENTARY +NONELITE +NONEMERGENCIES +NONEMERGENCY +NONEMOTIONAL +NONEMPHATIC +NONEMPIRICAL +NONEMPLOYEE +NONEMPLOYEES +NONEMPLOYMENT +NONEMPLOYMENTS +NONEMPTY +NONENCAPSULATED +NONENDING +NONENERGY +NONENFORCEMENT +NONENFORCEMENTS +NONENGAGEMENT +NONENGAGEMENTS +NONENGINEERING +NONENTITIES +NONENTITY +NONENTRIES +NONENTRY +NONENZYMATIC +NONENZYMIC +NONEQUAL +NONEQUALS +NONEQUILIBRIA +NONEQUILIBRIUM +NONEQUILIBRIUMS +NONEQUIVALENCE +NONEQUIVALENCES +NONEQUIVALENT +NONEROTIC +NONES +NONESSENTIAL +NONESSENTIALS +NONESTABLISHED +NONESTERIFIED +NONESUCH +NONESUCHES +NONET +NONETHELESS +NONETHICAL +NONETHNIC +NONETHNICS +NONETS +NONEVALUATIVE +NONEVENT +NONEVENTS +NONEVIDENCE +NONEVIDENCES +NONEXCLUSIVE +NONEXECUTIVE +NONEXECUTIVES +NONEXEMPT +NONEXEMPTS +NONEXISTENCE +NONEXISTENCES +NONEXISTENT +NONEXISTENTIAL +NONEXOTIC +NONEXPENDABLE +NONEXPERIMENTAL +NONEXPERT +NONEXPERTS +NONEXPLANATORY +NONEXPLOITATION +NONEXPLOITATIVE +NONEXPLOITIVE +NONEXPLOSIVE +NONEXPOSED +NONEXTANT +NONFACT +NONFACTOR +NONFACTORS +NONFACTS +NONFACTUAL +NONFACULTY +NONFADING +NONFAMILIAL +NONFAMILIES +NONFAMILY +NONFAN +NONFANS +NONFARM +NONFARMER +NONFARMERS +NONFAT +NONFATAL +NONFATTENING +NONFATTY +NONFEASANCE +NONFEASANCES +NONFEDERAL +NONFEDERATED +NONFEMINIST +NONFEMINISTS +NONFERROUS +NONFEUDAL +NONFICTION +NONFICTIONAL +NONFICTIONS +NONFIGURATIVE +NONFILAMENTOUS +NONFILIAL +NONFILTERABLE +NONFINAL +NONFINANCIAL +NONFINITE +NONFISCAL +NONFISSIONABLE +NONFLAMMABILITY +NONFLAMMABLE +NONFLOWERING +NONFLUENCIES +NONFLUENCY +NONFLUID +NONFLUIDS +NONFLUORESCENT +NONFLYING +NONFOCAL +NONFOOD +NONFORFEITABLE +NONFORFEITURE +NONFORFEITURES +NONFORMAL +NONFOSSIL +NONFREEZING +NONFRIVOLOUS +NONFROZEN +NONFUEL +NONFULFILLMENT +NONFULFILLMENTS +NONFUNCTIONAL +NONFUNCTIONING +NONFUNDED +NONGAME +NONGASEOUS +NONGAY +NONGAYS +NONGENETIC +NONGENITAL +NONGEOMETRICAL +NONGHETTO +NONGLAMOROUS +NONGLARE +NONGLARES +NONGLAZED +NONGLOSSY +NONGOLFER +NONGOLFERS +NONGONOCOCCAL +NONGOVERNMENT +NONGOVERNMENTAL +NONGRADED +NONGRADUATE +NONGRADUATES +NONGRAMMATICAL +NONGRANULAR +NONGREASY +NONGREEN +NONGREGARIOUS +NONGROWING +NONGROWTH +NONGUEST +NONGUESTS +NONGUILT +NONGUILTS +NONHALOGENATED +NONHANDICAPPED +NONHAPPENING +NONHAPPENINGS +NONHARDY +NONHARMONIC +NONHAZARDOUS +NONHEME +NONHEMOLYTIC +NONHEREDITARY +NONHERO +NONHEROES +NONHEROIC +NONHIERARCHICAL +NONHISTONE +NONHISTORICAL +NONHOME +NONHOMOGENEOUS +NONHOMOLOGOUS +NONHOMOSEXUAL +NONHOMOSEXUALS +NONHORMONAL +NONHOSPITAL +NONHOSPITALIZED +NONHOSTILE +NONHOUSING +NONHUMAN +NONHUMANS +NONHUNTER +NONHUNTERS +NONHUNTING +NONHYGROSCOPIC +NONHYSTERICAL +NONIDEAL +NONIDENTICAL +NONIDENTITIES +NONIDENTITY +NONIDEOLOGICAL +NONILLION +NONILLIONS +NONIMAGE +NONIMAGES +NONIMITATIVE +NONIMMIGRANT +NONIMMIGRANTS +NONIMMUNE +NONIMPACT +NONIMPLICATION +NONIMPLICATIONS +NONIMPORTATION +NONIMPORTATIONS +NONINCLUSION +NONINCLUSIONS +NONINCREASING +NONINCUMBENT +NONINCUMBENTS +NONINDEPENDENCE +NONINDIGENOUS +NONINDIVIDUAL +NONINDUCTIVE +NONINDUSTRIAL +NONINDUSTRY +NONINERT +NONINFECTED +NONINFECTIOUS +NONINFECTIVE +NONINFESTED +NONINFLAMMABLE +NONINFLAMMATORY +NONINFLATIONARY +NONINFLECTIONAL +NONINFLUENCE +NONINFLUENCES +NONINFORMATION +NONINFORMATIONS +NONINFRINGEMENT +NONINITIAL +NONINITIATE +NONINITIATES +NONINJURY +NONINSECT +NONINSECTICIDAL +NONINSECTS +NONINSTALLMENT +NONINSTALLMENTS +NONINSTRUMENTAL +NONINSURANCE +NONINSURED +NONINTEGRAL +NONINTEGRATED +NONINTELLECTUAL +NONINTERACTING +NONINTERACTIVE +NONINTERCOURSE +NONINTERCOURSES +NONINTEREST +NONINTERFERENCE +NONINTERSECTING +NONINTERVENTION +NONINTIMIDATING +NONINTOXICANT +NONINTOXICANTS +NONINTOXICATING +NONINTRUSIVE +NONINTUITIVE +NONINVASIVE +NONINVOLVED +NONINVOLVEMENT +NONINVOLVEMENTS +NONIONIC +NONIONIZING +NONIRON +NONIRRADIATED +NONIRRIGATED +NONIRRITANT +NONIRRITANTS +NONIRRITATING +NONISSUE +NONISSUES +NONJOINDER +NONJOINDERS +NONJOINER +NONJOINERS +NONJUDGMENTAL +NONJUDICIAL +NONJURIES +NONJURING +NONJUROR +NONJURORS +NONJURY +NONJUSTICIABLE +NONKOSHER +NONKOSHERS +NONLABOR +NONLANDOWNER +NONLANDOWNERS +NONLANGUAGE +NONLANGUAGES +NONLAWYER +NONLAWYERS +NONLEADED +NONLEAFY +NONLEAGUE +NONLEGAL +NONLEGUME +NONLEGUMES +NONLEGUMINOUS +NONLETHAL +NONLEVEL +NONLEXICAL +NONLIABLE +NONLIBRARIAN +NONLIBRARIANS +NONLIBRARY +NONLIFE +NONLINEAL +NONLINEAR +NONLINEARITIES +NONLINEARITY +NONLINGUISTIC +NONLIQUID +NONLIQUIDS +NONLITERAL +NONLITERARY +NONLITERATE +NONLITERATES +NONLIVES +NONLIVING +NONLIVINGS +NONLOCAL +NONLOCALS +NONLOGICAL +NONLOVING +NONLOYAL +NONLUMINOUS +NONLYRIC +NONMAGNETIC +NONMAINSTREAM +NONMAJOR +NONMAJORS +NONMALIGNANT +NONMALLEABLE +NONMAN +NONMANAGEMENT +NONMANAGERIAL +NONMANUAL +NONMARITAL +NONMARKET +NONMARKETS +NONMATERIAL +NONMATHEMATICAL +NONMATRICULATED +NONMATURE +NONMEANINGFUL +NONMEASURABLE +NONMEAT +NONMECHANICAL +NONMECHANISTIC +NONMEDICAL +NONMEETING +NONMEETINGS +NONMEMBER +NONMEMBERS +NONMEMBERSHIP +NONMEMBERSHIPS +NONMEN +NONMENTAL +NONMERCURIAL +NONMETAL +NONMETALLIC +NONMETALS +NONMETAMERIC +NONMETAPHORICAL +NONMETRIC +NONMETRICAL +NONMETRO +NONMETROPOLITAN +NONMICROBIAL +NONMIGRANT +NONMIGRATORY +NONMILITANT +NONMILITANTS +NONMILITARY +NONMIMETIC +NONMINORITIES +NONMINORITY +NONMOBILE +NONMODAL +NONMODERN +NONMODERNS +NONMOLECULAR +NONMONETARIST +NONMONETARISTS +NONMONETARY +NONMONEY +NONMONOGAMOUS +NONMORAL +NONMORTAL +NONMORTALS +NONMOTILE +NONMOTILITIES +NONMOTILITY +NONMOTORIZED +NONMOVING +NONMUNICIPAL +NONMUSIC +NONMUSICAL +NONMUSICALS +NONMUSICIAN +NONMUSICIANS +NONMUSICS +NONMUTANT +NONMUTANTS +NONMUTUAL +NONMYELINATED +NONMYSTICAL +NONNARRATIVE +NONNASAL +NONNATIONAL +NONNATIONALS +NONNATIVE +NONNATIVES +NONNATURAL +NONNAVAL +NONNECESSITIES +NONNECESSITY +NONNEGATIVE +NONNEGLIGENT +NONNEGOTIABLE +NONNEGOTIABLES +NONNETWORK +NONNEURAL +NONNEWS +NONNITROGENOUS +NONNOBLE +NONNORMAL +NONNORMATIVE +NONNOVEL +NONNOVELS +NONNUCLEAR +NONNUCLEATED +NONNUMERICAL +NONNUTRITIOUS +NONNUTRITIVE +NONOBESE +NONOBJECTIVE +NONOBJECTIVISM +NONOBJECTIVISMS +NONOBJECTIVIST +NONOBJECTIVISTS +NONOBJECTIVITY +NONOBSCENE +NONOBSERVANCE +NONOBSERVANCES +NONOBSERVANT +NONOBVIOUS +NONOCCUPATIONAL +NONOCCURRENCE +NONOCCURRENCES +NONOFFICIAL +NONOFFICIALS +NONOHMIC +NONOILY +NONOPERATIC +NONOPERATING +NONOPERATIONAL +NONOPERATIVE +NONOPTIMAL +NONORAL +NONORALLY +NONORGANIC +NONORGASMIC +NONORTHODOX +NONOVERLAPPING +NONOWNER +NONOWNERS +NONOXIDIZING +NONPAGAN +NONPAGANS +NONPAID +NONPAPAL +NONPAPIST +NONPAPISTS +NONPAR +NONPARALLEL +NONPARAMETRIC +NONPARASITIC +NONPAREIL +NONPAREILS +NONPARENT +NONPARENTS +NONPARITIES +NONPARITY +NONPARTICIPANT +NONPARTICIPANTS +NONPARTIES +NONPARTISAN +NONPARTISANSHIP +NONPARTY +NONPASSERINE +NONPASSIVE +NONPAST +NONPASTS +NONPATHOGENIC +NONPAYING +NONPAYMENT +NONPAYMENTS +NONPEAK +NONPERFORMANCE +NONPERFORMANCES +NONPERFORMER +NONPERFORMERS +NONPERFORMING +NONPERISHABLE +NONPERISHABLES +NONPERMISSIVE +NONPERSISTENT +NONPERSON +NONPERSONAL +NONPERSONS +NONPETROLEUM +NONPHILOSOPHER +NONPHILOSOPHERS +NONPHONEMIC +NONPHONETIC +NONPHOSPHATE +NONPHOTOGRAPHIC +NONPHYSICAL +NONPHYSICIAN +NONPHYSICIANS +NONPLANAR +NONPLASTIC +NONPLASTICS +NONPLAY +NONPLAYER +NONPLAYERS +NONPLAYING +NONPLAYS +NONPLIANT +NONPLUS +NONPLUSED +NONPLUSES +NONPLUSING +NONPLUSSED +NONPLUSSES +NONPLUSSING +NONPOETIC +NONPOINT +NONPOISONOUS +NONPOLAR +NONPOLARIZABLE +NONPOLICE +NONPOLITICAL +NONPOLITICALLY +NONPOLITICIAN +NONPOLITICIANS +NONPOLLUTING +NONPOOR +NONPOROUS +NONPOSSESSION +NONPOSSESSIONS +NONPOSTAL +NONPRACTICAL +NONPRACTICING +NONPREGNANT +NONPRESCRIPTION +NONPRINT +NONPROBLEM +NONPROBLEMS +NONPRODUCING +NONPRODUCTIVE +NONPROFESSIONAL +NONPROFESSORIAL +NONPROFIT +NONPROFITS +NONPROGRAM +NONPROGRAMMER +NONPROGRAMMERS +NONPROGRESSIVE +NONPROPRIETARY +NONPROS +NONPROSSED +NONPROSSES +NONPROSSING +NONPROTEIN +NONPROVEN +NONPSYCHIATRIC +NONPSYCHIATRIST +NONPSYCHOTIC +NONPUBLIC +NONPUNITIVE +NONPURPOSIVE +NONQUANTIFIABLE +NONQUANTITATIVE +NONQUOTA +NONRACIAL +NONRACIALLY +NONRADIOACTIVE +NONRAILROAD +NONRANDOM +NONRANDOMNESS +NONRANDOMNESSES +NONRATED +NONRATIONAL +NONREACTIVE +NONREACTOR +NONREACTORS +NONREADER +NONREADERS +NONREADING +NONREALISTIC +NONRECEIPT +NONRECEIPTS +NONRECIPROCAL +NONRECOGNITION +NONRECOGNITIONS +NONRECOMBINANT +NONRECOMBINANTS +NONRECOURSE +NONRECURRENT +NONRECURRING +NONRECYCLABLE +NONRECYCLABLES +NONREDUCING +NONREDUNDANT +NONREFILLABLE +NONREFLECTING +NONREFUNDABLE +NONREGULATED +NONREGULATION +NONRELATIVE +NONRELATIVES +NONRELATIVISTIC +NONRELEVANT +NONRELIGIOUS +NONRENEWABLE +NONRENEWAL +NONREPAYABLE +NONREPRODUCTIVE +NONRESIDENCE +NONRESIDENCES +NONRESIDENCIES +NONRESIDENCY +NONRESIDENT +NONRESIDENTIAL +NONRESIDENTS +NONRESISTANCE +NONRESISTANCES +NONRESISTANT +NONRESISTANTS +NONRESONANT +NONRESPONDENT +NONRESPONDENTS +NONRESPONDER +NONRESPONDERS +NONRESPONSE +NONRESPONSES +NONRESPONSIVE +NONRESTRICTED +NONRESTRICTIVE +NONRETRACTILE +NONRETROACTIVE +NONRETURNABLE +NONRETURNABLES +NONREUSABLE +NONREVERSIBLE +NONRHOTIC +NONRIGID +NONRIOTER +NONRIOTERS +NONRIOTING +NONRIVAL +NONRIVALS +NONROTATING +NONROUTINE +NONROYAL +NONRUBBER +NONRULING +NONRUMINANT +NONRUMINANTS +NONRURAL +NONSACRED +NONSALABLE +NONSALINE +NONSAPONIFIABLE +NONSCHEDULED +NONSCHOOL +NONSCIENCE +NONSCIENCES +NONSCIENTIFIC +NONSCIENTIST +NONSCIENTISTS +NONSEASONAL +NONSECRET +NONSECRETOR +NONSECRETORS +NONSECRETORY +NONSECRETS +NONSECTARIAN +NONSECURE +NONSEDIMENTABLE +NONSEGREGATED +NONSEGREGATION +NONSEGREGATIONS +NONSELECTED +NONSELECTIVE +NONSELF +NONSELVES +NONSENSATIONAL +NONSENSE +NONSENSES +NONSENSICAL +NONSENSICALLY +NONSENSICALNESS +NONSENSITIVE +NONSENSUOUS +NONSENTENCE +NONSENTENCES +NONSEPTATE +NONSEQUENTIAL +NONSERIAL +NONSERIALS +NONSERIOUS +NONSEXIST +NONSEXUAL +NONSHRINK +NONSHRINKABLE +NONSIGNER +NONSIGNERS +NONSIGNIFICANT +NONSIMULTANEOUS +NONSINKABLE +NONSKATER +NONSKATERS +NONSKED +NONSKEDS +NONSKELETAL +NONSKID +NONSKIER +NONSKIERS +NONSLIP +NONSMOKER +NONSMOKERS +NONSMOKING +NONSOCIAL +NONSOCIALIST +NONSOCIALISTS +NONSOLAR +NONSOLID +NONSOLIDS +NONSOLUTION +NONSOLUTIONS +NONSPATIAL +NONSPEAKER +NONSPEAKERS +NONSPEAKING +NONSPECIALIST +NONSPECIALISTS +NONSPECIFIC +NONSPECIFICALLY +NONSPECTACULAR +NONSPECULATIVE +NONSPEECH +NONSPHERICAL +NONSPORTING +NONSTANDARD +NONSTAPLE +NONSTAPLES +NONSTARTER +NONSTARTERS +NONSTATIC +NONSTATIONARY +NONSTATISTICAL +NONSTEADY +NONSTEROID +NONSTEROIDAL +NONSTEROIDS +NONSTICK +NONSTICKY +NONSTOP +NONSTOPS +NONSTORIES +NONSTORY +NONSTRATEGIC +NONSTRUCTURAL +NONSTRUCTURED +NONSTUDENT +NONSTUDENTS +NONSTYLE +NONSTYLES +NONSUBJECT +NONSUBJECTIVE +NONSUBJECTS +NONSUBSIDIZED +NONSUCCESS +NONSUCCESSES +NONSUCH +NONSUCHES +NONSUGAR +NONSUGARS +NONSUIT +NONSUITED +NONSUITING +NONSUITS +NONSUPERVISORY +NONSUPPORT +NONSUPPORTS +NONSURGICAL +NONSWIMMER +NONSWIMMERS +NONSYLLABIC +NONSYMBOLIC +NONSYMMETRIC +NONSYMMETRICAL +NONSYNCHRONOUS +NONSYSTEM +NONSYSTEMATIC +NONSYSTEMIC +NONSYSTEMS +NONTALKER +NONTALKERS +NONTARGET +NONTARIFF +NONTAX +NONTAXABLE +NONTAXES +NONTEACHING +NONTECHNICAL +NONTEMPORAL +NONTENURED +NONTERMINAL +NONTERMINALS +NONTERMINATING +NONTHEATRICAL +NONTHEIST +NONTHEISTIC +NONTHEISTS +NONTHEOLOGICAL +NONTHEORETICAL +NONTHERAPEUTIC +NONTHERMAL +NONTHINKING +NONTHREATENING +NONTIDAL +NONTITLE +NONTOBACCO +NONTONAL +NONTONIC +NONTOTALITARIAN +NONTOXIC +NONTRADITIONAL +NONTRAGIC +NONTRANSFERABLE +NONTREATMENT +NONTREATMENTS +NONTRIBAL +NONTRIVIAL +NONTROPICAL +NONTRUMP +NONTRUTH +NONTRUTHS +NONTURBULENT +NONTYPICAL +NONUNANIMOUS +NONUNIFORM +NONUNIFORMITIES +NONUNIFORMITY +NONUNION +NONUNIONIZED +NONUNIONS +NONUNIQUE +NONUNIQUENESS +NONUNIQUENESSES +NONUNIVERSAL +NONUNIVERSITY +NONUPLE +NONUPLES +NONURBAN +NONURGENT +NONUSABLE +NONUSE +NONUSER +NONUSERS +NONUSES +NONUSING +NONUTILITARIAN +NONUTILITIES +NONUTILITY +NONUTOPIAN +NONVACANT +NONVALID +NONVALIDITIES +NONVALIDITY +NONVANISHING +NONVASCULAR +NONVECTOR +NONVECTORS +NONVEGETARIAN +NONVEGETARIANS +NONVENOMOUS +NONVENOUS +NONVERBAL +NONVERBALLY +NONVESTED +NONVETERAN +NONVETERANS +NONVIABLE +NONVIEWER +NONVIEWERS +NONVINTAGE +NONVIOLENCE +NONVIOLENCES +NONVIOLENT +NONVIOLENTLY +NONVIRAL +NONVIRGIN +NONVIRGINS +NONVIRILE +NONVISCOUS +NONVISUAL +NONVITAL +NONVOCAL +NONVOCALS +NONVOCATIONAL +NONVOLATILE +NONVOLCANIC +NONVOLUNTARY +NONVOTER +NONVOTERS +NONVOTING +NONWAGE +NONWAR +NONWARS +NONWHITE +NONWHITES +NONWINGED +NONWINNING +NONWOODY +NONWOOL +NONWORD +NONWORDS +NONWORK +NONWORKER +NONWORKERS +NONWORKING +NONWOVEN +NONWOVENS +NONWRITER +NONWRITERS +NONYELLOWING +NONYL +NONYLS +NONZERO +NOO +NOODGE +NOODGED +NOODGES +NOODGING +NOODLE +NOODLED +NOODLES +NOODLING +NOOGIE +NOOGIES +NOOK +NOOKIE +NOOKIES +NOOKLIKE +NOOKS +NOOKY +NOON +NOONDAY +NOONDAYS +NOONING +NOONINGS +NOONS +NOONTIDE +NOONTIDES +NOONTIME +NOONTIMES +NOOSE +NOOSED +NOOSER +NOOSERS +NOOSES +NOOSING +NOOSPHERE +NOOSPHERES +NOOTROPIC +NOOTROPICS +NOPAL +NOPALES +NOPALITO +NOPALITOS +NOPALS +NOPE +NOPLACE +NOR +NORADRENALIN +NORADRENALINE +NORADRENALINES +NORADRENALINS +NORADRENERGIC +NORDIC +NOREPINEPHRINE +NOREPINEPHRINES +NORETHINDRONE +NORETHINDRONES +NORI +NORIA +NORIAS +NORIS +NORITE +NORITES +NORITIC +NORLAND +NORLANDS +NORM +NORMAL +NORMALCIES +NORMALCY +NORMALISE +NORMALISED +NORMALISES +NORMALISING +NORMALITIES +NORMALITY +NORMALIZABLE +NORMALIZATION +NORMALIZATIONS +NORMALIZE +NORMALIZED +NORMALIZER +NORMALIZERS +NORMALIZES +NORMALIZING +NORMALLY +NORMALS +NORMANDE +NORMATIVE +NORMATIVELY +NORMATIVENESS +NORMATIVENESSES +NORMED +NORMLESS +NORMOTENSIVE +NORMOTENSIVES +NORMOTHERMIA +NORMOTHERMIAS +NORMOTHERMIC +NORMS +NORTH +NORTHBOUND +NORTHEAST +NORTHEASTER +NORTHEASTERLY +NORTHEASTERN +NORTHEASTERS +NORTHEASTS +NORTHEASTWARD +NORTHEASTWARDS +NORTHER +NORTHERLIES +NORTHERLY +NORTHERN +NORTHERNMOST +NORTHERNS +NORTHERS +NORTHING +NORTHINGS +NORTHLAND +NORTHLANDS +NORTHMOST +NORTHS +NORTHWARD +NORTHWARDS +NORTHWEST +NORTHWESTER +NORTHWESTERLY +NORTHWESTERN +NORTHWESTERS +NORTHWESTS +NORTHWESTWARD +NORTHWESTWARDS +NORTRIPTYLINE +NORTRIPTYLINES +NOS +NOSE +NOSEBAG +NOSEBAGS +NOSEBAND +NOSEBANDS +NOSEBLEED +NOSEBLEEDS +NOSED +NOSEDIVE +NOSEDIVED +NOSEDIVES +NOSEDIVING +NOSEDOVE +NOSEGAY +NOSEGAYS +NOSEGUARD +NOSEGUARDS +NOSELESS +NOSELIKE +NOSEPIECE +NOSEPIECES +NOSES +NOSEWHEEL +NOSEWHEELS +NOSEY +NOSH +NOSHED +NOSHER +NOSHERS +NOSHES +NOSHING +NOSIER +NOSIEST +NOSILY +NOSINESS +NOSINESSES +NOSING +NOSINGS +NOSOCOMIAL +NOSOLOGIC +NOSOLOGICAL +NOSOLOGICALLY +NOSOLOGIES +NOSOLOGY +NOSTALGIA +NOSTALGIAS +NOSTALGIC +NOSTALGICALLY +NOSTALGICS +NOSTALGIST +NOSTALGISTS +NOSTOC +NOSTOCS +NOSTOLOGIES +NOSTOLOGY +NOSTRIL +NOSTRILS +NOSTRUM +NOSTRUMS +NOSY +NOT +NOTA +NOTABILIA +NOTABILITIES +NOTABILITY +NOTABLE +NOTABLENESS +NOTABLENESSES +NOTABLES +NOTABLY +NOTAL +NOTARIAL +NOTARIALLY +NOTARIES +NOTARIZATION +NOTARIZATIONS +NOTARIZE +NOTARIZED +NOTARIZES +NOTARIZING +NOTARY +NOTATE +NOTATED +NOTATES +NOTATING +NOTATION +NOTATIONAL +NOTATIONS +NOTCH +NOTCHBACK +NOTCHBACKS +NOTCHED +NOTCHER +NOTCHERS +NOTCHES +NOTCHING +NOTE +NOTEBOOK +NOTEBOOKS +NOTECARD +NOTECARDS +NOTECASE +NOTECASES +NOTED +NOTEDLY +NOTEDNESS +NOTEDNESSES +NOTELESS +NOTEPAD +NOTEPADS +NOTEPAPER +NOTEPAPERS +NOTER +NOTERS +NOTES +NOTEWORTHILY +NOTEWORTHINESS +NOTEWORTHY +NOTHER +NOTHING +NOTHINGNESS +NOTHINGNESSES +NOTHINGS +NOTICE +NOTICEABLE +NOTICEABLY +NOTICED +NOTICER +NOTICERS +NOTICES +NOTICING +NOTIFIABLE +NOTIFICATION +NOTIFICATIONS +NOTIFIED +NOTIFIER +NOTIFIERS +NOTIFIES +NOTIFY +NOTIFYING +NOTING +NOTION +NOTIONAL +NOTIONALITIES +NOTIONALITY +NOTIONALLY +NOTIONS +NOTOCHORD +NOTOCHORDAL +NOTOCHORDS +NOTORIETIES +NOTORIETY +NOTORIOUS +NOTORIOUSLY +NOTORNIS +NOTTURNI +NOTTURNO +NOTUM +NOTWITHSTANDING +NOUGAT +NOUGATS +NOUGHT +NOUGHTS +NOUMENA +NOUMENAL +NOUMENON +NOUN +NOUNAL +NOUNALLY +NOUNLESS +NOUNS +NOURISH +NOURISHED +NOURISHER +NOURISHERS +NOURISHES +NOURISHING +NOURISHMENT +NOURISHMENTS +NOUS +NOUSES +NOUVEAU +NOUVELLE +NOUVELLES +NOVA +NOVACULITE +NOVACULITES +NOVAE +NOVALIKE +NOVAS +NOVATION +NOVATIONS +NOVEL +NOVELETTE +NOVELETTES +NOVELETTISH +NOVELISE +NOVELISED +NOVELISES +NOVELISING +NOVELIST +NOVELISTIC +NOVELISTICALLY +NOVELISTS +NOVELIZATION +NOVELIZATIONS +NOVELIZE +NOVELIZED +NOVELIZER +NOVELIZERS +NOVELIZES +NOVELIZING +NOVELLA +NOVELLAS +NOVELLE +NOVELLY +NOVELS +NOVELTIES +NOVELTY +NOVEMDECILLION +NOVEMDECILLIONS +NOVENA +NOVENAE +NOVENAS +NOVERCAL +NOVICE +NOVICES +NOVICIATE +NOVICIATES +NOVITIATE +NOVITIATES +NOVOBIOCIN +NOVOBIOCINS +NOVOCAINE +NOVOCAINES +NOW +NOWADAYS +NOWAY +NOWAYS +NOWHERE +NOWHERES +NOWHITHER +NOWISE +NOWNESS +NOWNESSES +NOWS +NOWT +NOWTS +NOXIOUS +NOXIOUSLY +NOXIOUSNESS +NOXIOUSNESSES +NOYADE +NOYADES +NOZZLE +NOZZLES +NTH +NU +NUANCE +NUANCED +NUANCES +NUB +NUBBIER +NUBBIEST +NUBBIN +NUBBINESS +NUBBINESSES +NUBBINS +NUBBLE +NUBBLES +NUBBLIER +NUBBLIEST +NUBBLY +NUBBY +NUBIA +NUBIAS +NUBILE +NUBILITIES +NUBILITY +NUBILOSE +NUBILOUS +NUBS +NUBUCK +NUBUCKS +NUCELLAR +NUCELLI +NUCELLUS +NUCHA +NUCHAE +NUCHAL +NUCHALS +NUCLEAL +NUCLEAR +NUCLEASE +NUCLEASES +NUCLEATE +NUCLEATED +NUCLEATES +NUCLEATING +NUCLEATION +NUCLEATIONS +NUCLEATOR +NUCLEATORS +NUCLEI +NUCLEIN +NUCLEINIC +NUCLEINS +NUCLEOCAPSID +NUCLEOCAPSIDS +NUCLEOID +NUCLEOIDS +NUCLEOLAR +NUCLEOLE +NUCLEOLES +NUCLEOLI +NUCLEOLUS +NUCLEON +NUCLEONIC +NUCLEONICS +NUCLEONS +NUCLEOPHILE +NUCLEOPHILES +NUCLEOPHILIC +NUCLEOPHILICITY +NUCLEOPLASM +NUCLEOPLASMIC +NUCLEOPLASMS +NUCLEOPROTEIN +NUCLEOPROTEINS +NUCLEOSIDE +NUCLEOSIDES +NUCLEOSOMAL +NUCLEOSOME +NUCLEOSOMES +NUCLEOSYNTHESES +NUCLEOSYNTHESIS +NUCLEOSYNTHETIC +NUCLEOTIDASE +NUCLEOTIDASES +NUCLEOTIDE +NUCLEOTIDES +NUCLEUS +NUCLEUSES +NUCLIDE +NUCLIDES +NUCLIDIC +NUDE +NUDELY +NUDENESS +NUDENESSES +NUDER +NUDES +NUDEST +NUDGE +NUDGED +NUDGER +NUDGERS +NUDGES +NUDGING +NUDIBRANCH +NUDIBRANCHS +NUDICAUL +NUDIE +NUDIES +NUDISM +NUDISMS +NUDIST +NUDISTS +NUDITIES +NUDITY +NUDNICK +NUDNICKS +NUDNIK +NUDNIKS +NUDZH +NUDZHED +NUDZHES +NUDZHING +NUGATORY +NUGGET +NUGGETS +NUGGETY +NUISANCE +NUISANCES +NUKE +NUKED +NUKES +NUKING +NULL +NULLAH +NULLAHS +NULLED +NULLIFICATION +NULLIFICATIONS +NULLIFIED +NULLIFIER +NULLIFIERS +NULLIFIES +NULLIFY +NULLIFYING +NULLING +NULLIPARA +NULLIPARAE +NULLIPARAS +NULLIPAROUS +NULLIPORE +NULLIPORES +NULLITIES +NULLITY +NULLS +NUMB +NUMBAT +NUMBATS +NUMBED +NUMBER +NUMBERABLE +NUMBERED +NUMBERER +NUMBERERS +NUMBERING +NUMBERLESS +NUMBERS +NUMBEST +NUMBFISH +NUMBFISHES +NUMBING +NUMBINGLY +NUMBLES +NUMBLY +NUMBNESS +NUMBNESSES +NUMBS +NUMBSKULL +NUMBSKULLS +NUMCHUCK +NUMCHUCKS +NUMEN +NUMERABLE +NUMERABLY +NUMERACIES +NUMERACY +NUMERAL +NUMERALLY +NUMERALS +NUMERARY +NUMERATE +NUMERATED +NUMERATES +NUMERATING +NUMERATION +NUMERATIONS +NUMERATOR +NUMERATORS +NUMERIC +NUMERICAL +NUMERICALLY +NUMERICS +NUMEROLOGICAL +NUMEROLOGIES +NUMEROLOGIST +NUMEROLOGISTS +NUMEROLOGY +NUMEROUS +NUMEROUSLY +NUMEROUSNESS +NUMEROUSNESSES +NUMINA +NUMINOUS +NUMINOUSNESS +NUMINOUSNESSES +NUMISMATIC +NUMISMATICALLY +NUMISMATICS +NUMISMATIST +NUMISMATISTS +NUMMARY +NUMMULAR +NUMMULITE +NUMMULITES +NUMSKULL +NUMSKULLS +NUN +NUNATAK +NUNATAKS +NUNCHAKU +NUNCHAKUS +NUNCIATURE +NUNCIATURES +NUNCIO +NUNCIOS +NUNCLE +NUNCLES +NUNCUPATIVE +NUNLIKE +NUNNATION +NUNNATIONS +NUNNERIES +NUNNERY +NUNNISH +NUNS +NUPTIAL +NUPTIALITIES +NUPTIALITY +NUPTIALLY +NUPTIALS +NURD +NURDS +NURL +NURLED +NURLING +NURLS +NURSE +NURSED +NURSEMAID +NURSEMAIDS +NURSER +NURSERIES +NURSERS +NURSERY +NURSERYMAN +NURSERYMEN +NURSES +NURSING +NURSINGS +NURSLING +NURSLINGS +NURTURAL +NURTURANCE +NURTURANCES +NURTURANT +NURTURE +NURTURED +NURTURER +NURTURERS +NURTURES +NURTURING +NUS +NUT +NUTANT +NUTATE +NUTATED +NUTATES +NUTATING +NUTATION +NUTATIONAL +NUTATIONS +NUTBROWN +NUTCASE +NUTCASES +NUTCRACKER +NUTCRACKERS +NUTGALL +NUTGALLS +NUTGRASS +NUTGRASSES +NUTHATCH +NUTHATCHES +NUTHOUSE +NUTHOUSES +NUTLET +NUTLETS +NUTLIKE +NUTMEAT +NUTMEATS +NUTMEG +NUTMEGS +NUTPICK +NUTPICKS +NUTRACEUTICAL +NUTRACEUTICALS +NUTRIA +NUTRIAS +NUTRIENT +NUTRIENTS +NUTRIMENT +NUTRIMENTS +NUTRITION +NUTRITIONAL +NUTRITIONALLY +NUTRITIONIST +NUTRITIONISTS +NUTRITIONS +NUTRITIOUS +NUTRITIOUSLY +NUTRITIOUSNESS +NUTRITIVE +NUTRITIVELY +NUTRITIVES +NUTS +NUTSEDGE +NUTSEDGES +NUTSHELL +NUTSHELLS +NUTSIER +NUTSIEST +NUTSY +NUTTED +NUTTER +NUTTERS +NUTTIER +NUTTIEST +NUTTILY +NUTTINESS +NUTTINESSES +NUTTING +NUTTINGS +NUTTY +NUTWOOD +NUTWOODS +NUZZLE +NUZZLED +NUZZLER +NUZZLERS +NUZZLES +NUZZLING +NYALA +NYALAS +NYCTALOPIA +NYCTALOPIAS +NYLGHAI +NYLGHAIS +NYLGHAU +NYLGHAUS +NYLON +NYLONS +NYMPH +NYMPHA +NYMPHAE +NYMPHAL +NYMPHALID +NYMPHALIDS +NYMPHEAN +NYMPHET +NYMPHETIC +NYMPHETS +NYMPHETTE +NYMPHETTES +NYMPHO +NYMPHOLEPSIES +NYMPHOLEPSY +NYMPHOLEPT +NYMPHOLEPTIC +NYMPHOLEPTS +NYMPHOMANIA +NYMPHOMANIAC +NYMPHOMANIACAL +NYMPHOMANIACS +NYMPHOMANIAS +NYMPHOS +NYMPHS +NYSTAGMIC +NYSTAGMUS +NYSTAGMUSES +NYSTATIN +NYSTATINS +OAF +OAFISH +OAFISHLY +OAFISHNESS +OAFISHNESSES +OAFS +OAK +OAKEN +OAKIER +OAKIEST +OAKLIKE +OAKMOSS +OAKMOSSES +OAKS +OAKUM +OAKUMS +OAKY +OAR +OARED +OARFISH +OARFISHES +OARING +OARLESS +OARLIKE +OARLOCK +OARLOCKS +OARS +OARSMAN +OARSMANSHIP +OARSMANSHIPS +OARSMEN +OARSWOMAN +OARSWOMEN +OASES +OASIS +OAST +OASTHOUSE +OASTHOUSES +OASTS +OAT +OATCAKE +OATCAKES +OATEN +OATER +OATERS +OATH +OATHS +OATLIKE +OATMEAL +OATMEALS +OATS +OAVES +OBA +OBAS +OBBLIGATI +OBBLIGATO +OBBLIGATOS +OBCONIC +OBCONICAL +OBCORDATE +OBDURACIES +OBDURACY +OBDURATE +OBDURATELY +OBDURATENESS +OBDURATENESSES +OBE +OBEAH +OBEAHISM +OBEAHISMS +OBEAHS +OBEDIENCE +OBEDIENCES +OBEDIENT +OBEDIENTLY +OBEISANCE +OBEISANCES +OBEISANT +OBEISANTLY +OBELI +OBELIA +OBELIAS +OBELISCAL +OBELISE +OBELISED +OBELISES +OBELISING +OBELISK +OBELISKS +OBELISM +OBELISMS +OBELIZE +OBELIZED +OBELIZES +OBELIZING +OBELUS +OBENTO +OBENTOS +OBES +OBESE +OBESELY +OBESENESS +OBESENESSES +OBESITIES +OBESITY +OBEY +OBEYABLE +OBEYED +OBEYER +OBEYERS +OBEYING +OBEYS +OBFUSCATE +OBFUSCATED +OBFUSCATES +OBFUSCATING +OBFUSCATION +OBFUSCATIONS +OBFUSCATORY +OBI +OBIA +OBIAS +OBIISM +OBIISMS +OBIS +OBIT +OBITS +OBITUARIES +OBITUARIST +OBITUARISTS +OBITUARY +OBJECT +OBJECTED +OBJECTIFICATION +OBJECTIFIED +OBJECTIFIES +OBJECTIFY +OBJECTIFYING +OBJECTING +OBJECTION +OBJECTIONABLE +OBJECTIONABLY +OBJECTIONS +OBJECTIVE +OBJECTIVELY +OBJECTIVENESS +OBJECTIVENESSES +OBJECTIVES +OBJECTIVISM +OBJECTIVISMS +OBJECTIVIST +OBJECTIVISTIC +OBJECTIVISTS +OBJECTIVITIES +OBJECTIVITY +OBJECTLESS +OBJECTLESSNESS +OBJECTOR +OBJECTORS +OBJECTS +OBJET +OBJETS +OBJURGATE +OBJURGATED +OBJURGATES +OBJURGATING +OBJURGATION +OBJURGATIONS +OBJURGATORY +OBLANCEOLATE +OBLAST +OBLASTI +OBLASTS +OBLATE +OBLATELY +OBLATENESS +OBLATENESSES +OBLATES +OBLATION +OBLATIONS +OBLATORY +OBLIGABLE +OBLIGATE +OBLIGATED +OBLIGATELY +OBLIGATES +OBLIGATI +OBLIGATING +OBLIGATION +OBLIGATIONS +OBLIGATO +OBLIGATOR +OBLIGATORILY +OBLIGATORS +OBLIGATORY +OBLIGATOS +OBLIGE +OBLIGED +OBLIGEE +OBLIGEES +OBLIGER +OBLIGERS +OBLIGES +OBLIGING +OBLIGINGLY +OBLIGINGNESS +OBLIGINGNESSES +OBLIGOR +OBLIGORS +OBLIQUE +OBLIQUED +OBLIQUELY +OBLIQUENESS +OBLIQUENESSES +OBLIQUES +OBLIQUING +OBLIQUITIES +OBLIQUITY +OBLITERATE +OBLITERATED +OBLITERATES +OBLITERATING +OBLITERATION +OBLITERATIONS +OBLITERATIVE +OBLITERATOR +OBLITERATORS +OBLIVION +OBLIVIONS +OBLIVIOUS +OBLIVIOUSLY +OBLIVIOUSNESS +OBLIVIOUSNESSES +OBLONG +OBLONGLY +OBLONGS +OBLOQUIAL +OBLOQUIES +OBLOQUY +OBNOXIOUS +OBNOXIOUSLY +OBNOXIOUSNESS +OBNOXIOUSNESSES +OBNUBILATE +OBNUBILATED +OBNUBILATES +OBNUBILATING +OBNUBILATION +OBNUBILATIONS +OBOE +OBOES +OBOIST +OBOISTS +OBOL +OBOLE +OBOLES +OBOLI +OBOLS +OBOLUS +OBOVATE +OBOVOID +OBSCENE +OBSCENELY +OBSCENER +OBSCENEST +OBSCENITIES +OBSCENITY +OBSCURANT +OBSCURANTIC +OBSCURANTISM +OBSCURANTISMS +OBSCURANTIST +OBSCURANTISTS +OBSCURANTS +OBSCURATION +OBSCURATIONS +OBSCURE +OBSCURED +OBSCURELY +OBSCURENESS +OBSCURENESSES +OBSCURER +OBSCURES +OBSCUREST +OBSCURING +OBSCURITIES +OBSCURITY +OBSECRATE +OBSECRATED +OBSECRATES +OBSECRATING +OBSEQUIES +OBSEQUIOUS +OBSEQUIOUSLY +OBSEQUIOUSNESS +OBSEQUY +OBSERVABILITIES +OBSERVABILITY +OBSERVABLE +OBSERVABLES +OBSERVABLY +OBSERVANCE +OBSERVANCES +OBSERVANT +OBSERVANTLY +OBSERVANTS +OBSERVATION +OBSERVATIONAL +OBSERVATIONALLY +OBSERVATIONS +OBSERVATORIES +OBSERVATORY +OBSERVE +OBSERVED +OBSERVER +OBSERVERS +OBSERVES +OBSERVING +OBSERVINGLY +OBSESS +OBSESSED +OBSESSES +OBSESSING +OBSESSION +OBSESSIONAL +OBSESSIONALLY +OBSESSIONS +OBSESSIVE +OBSESSIVELY +OBSESSIVENESS +OBSESSIVENESSES +OBSESSIVES +OBSESSOR +OBSESSORS +OBSIDIAN +OBSIDIANS +OBSOLESCE +OBSOLESCED +OBSOLESCENCE +OBSOLESCENCES +OBSOLESCENT +OBSOLESCENTLY +OBSOLESCES +OBSOLESCING +OBSOLETE +OBSOLETED +OBSOLETELY +OBSOLETENESS +OBSOLETENESSES +OBSOLETES +OBSOLETING +OBSTACLE +OBSTACLES +OBSTETRIC +OBSTETRICAL +OBSTETRICALLY +OBSTETRICIAN +OBSTETRICIANS +OBSTETRICS +OBSTINACIES +OBSTINACY +OBSTINATE +OBSTINATELY +OBSTINATENESS +OBSTINATENESSES +OBSTREPEROUS +OBSTREPEROUSLY +OBSTRUCT +OBSTRUCTED +OBSTRUCTING +OBSTRUCTION +OBSTRUCTIONISM +OBSTRUCTIONISMS +OBSTRUCTIONIST +OBSTRUCTIONISTS +OBSTRUCTIONS +OBSTRUCTIVE +OBSTRUCTIVENESS +OBSTRUCTIVES +OBSTRUCTOR +OBSTRUCTORS +OBSTRUCTS +OBSTRUENT +OBSTRUENTS +OBTAIN +OBTAINABILITIES +OBTAINABILITY +OBTAINABLE +OBTAINED +OBTAINER +OBTAINERS +OBTAINING +OBTAINMENT +OBTAINMENTS +OBTAINS +OBTECT +OBTECTED +OBTEST +OBTESTED +OBTESTING +OBTESTS +OBTRUDE +OBTRUDED +OBTRUDER +OBTRUDERS +OBTRUDES +OBTRUDING +OBTRUSION +OBTRUSIONS +OBTRUSIVE +OBTRUSIVELY +OBTRUSIVENESS +OBTRUSIVENESSES +OBTUND +OBTUNDED +OBTUNDENT +OBTUNDENTS +OBTUNDING +OBTUNDITIES +OBTUNDITY +OBTUNDS +OBTURATE +OBTURATED +OBTURATES +OBTURATING +OBTURATION +OBTURATIONS +OBTURATOR +OBTURATORS +OBTUSE +OBTUSELY +OBTUSENESS +OBTUSENESSES +OBTUSER +OBTUSEST +OBTUSITIES +OBTUSITY +OBVERSE +OBVERSELY +OBVERSES +OBVERSION +OBVERSIONS +OBVERT +OBVERTED +OBVERTING +OBVERTS +OBVIABLE +OBVIATE +OBVIATED +OBVIATES +OBVIATING +OBVIATION +OBVIATIONS +OBVIATOR +OBVIATORS +OBVIOUS +OBVIOUSLY +OBVIOUSNESS +OBVIOUSNESSES +OBVOLUTE +OCA +OCARINA +OCARINAS +OCAS +OCCASION +OCCASIONAL +OCCASIONALLY +OCCASIONED +OCCASIONING +OCCASIONS +OCCIDENT +OCCIDENTAL +OCCIDENTALIZE +OCCIDENTALIZED +OCCIDENTALIZES +OCCIDENTALIZING +OCCIDENTALLY +OCCIDENTS +OCCIPITA +OCCIPITAL +OCCIPITALLY +OCCIPITALS +OCCIPUT +OCCIPUTS +OCCLUDE +OCCLUDED +OCCLUDENT +OCCLUDES +OCCLUDING +OCCLUSAL +OCCLUSION +OCCLUSIONS +OCCLUSIVE +OCCLUSIVES +OCCULT +OCCULTATION +OCCULTATIONS +OCCULTED +OCCULTER +OCCULTERS +OCCULTING +OCCULTISM +OCCULTISMS +OCCULTIST +OCCULTISTS +OCCULTLY +OCCULTS +OCCUPANCIES +OCCUPANCY +OCCUPANT +OCCUPANTS +OCCUPATION +OCCUPATIONAL +OCCUPATIONALLY +OCCUPATIONS +OCCUPIED +OCCUPIER +OCCUPIERS +OCCUPIES +OCCUPY +OCCUPYING +OCCUR +OCCURRED +OCCURRENCE +OCCURRENCES +OCCURRENT +OCCURRENTS +OCCURRING +OCCURS +OCEAN +OCEANARIA +OCEANARIUM +OCEANARIUMS +OCEANAUT +OCEANAUTS +OCEANFRONT +OCEANFRONTS +OCEANGOING +OCEANIC +OCEANOGRAPHER +OCEANOGRAPHERS +OCEANOGRAPHIC +OCEANOGRAPHICAL +OCEANOGRAPHIES +OCEANOGRAPHY +OCEANOLOGIES +OCEANOLOGIST +OCEANOLOGISTS +OCEANOLOGY +OCEANS +OCELLAR +OCELLATE +OCELLATED +OCELLI +OCELLUS +OCELOID +OCELOT +OCELOTS +OCHER +OCHERED +OCHERING +OCHEROUS +OCHERS +OCHERY +OCHLOCRACIES +OCHLOCRACY +OCHLOCRAT +OCHLOCRATIC +OCHLOCRATICAL +OCHLOCRATS +OCHONE +OCHRE +OCHREA +OCHREAE +OCHRED +OCHREOUS +OCHRES +OCHRING +OCHROID +OCHROUS +OCHRY +OCICAT +OCICATS +OCKER +OCKERS +OCOTILLO +OCOTILLOS +OCREA +OCREAE +OCREATE +OCTACHORD +OCTACHORDS +OCTAD +OCTADIC +OCTADS +OCTAGON +OCTAGONAL +OCTAGONALLY +OCTAGONS +OCTAHEDRA +OCTAHEDRAL +OCTAHEDRALLY +OCTAHEDRON +OCTAHEDRONS +OCTAL +OCTAMETER +OCTAMETERS +OCTAN +OCTANE +OCTANES +OCTANGLE +OCTANGLES +OCTANOL +OCTANOLS +OCTANS +OCTANT +OCTANTAL +OCTANTS +OCTAPEPTIDE +OCTAPEPTIDES +OCTARCHIES +OCTARCHY +OCTAVAL +OCTAVE +OCTAVES +OCTAVO +OCTAVOS +OCTENNIAL +OCTET +OCTETS +OCTETTE +OCTETTES +OCTILLION +OCTILLIONS +OCTODECILLION +OCTODECILLIONS +OCTOGENARIAN +OCTOGENARIANS +OCTONARIES +OCTONARY +OCTOPI +OCTOPLOID +OCTOPLOIDS +OCTOPOD +OCTOPODAN +OCTOPODANS +OCTOPODES +OCTOPODS +OCTOPUS +OCTOPUSES +OCTOROON +OCTOROONS +OCTOSYLLABIC +OCTOSYLLABICS +OCTOSYLLABLE +OCTOSYLLABLES +OCTOTHORP +OCTOTHORPS +OCTROI +OCTROIS +OCTUPLE +OCTUPLED +OCTUPLES +OCTUPLET +OCTUPLETS +OCTUPLEX +OCTUPLING +OCTUPLY +OCTYL +OCTYLS +OCULAR +OCULARIST +OCULARISTS +OCULARLY +OCULARS +OCULI +OCULIST +OCULISTS +OCULOMOTOR +OCULUS +OD +ODA +ODAH +ODAHS +ODALISK +ODALISKS +ODALISQUE +ODALISQUES +ODAS +ODD +ODDBALL +ODDBALLS +ODDER +ODDEST +ODDISH +ODDITIES +ODDITY +ODDLY +ODDMENT +ODDMENTS +ODDNESS +ODDNESSES +ODDS +ODDSMAKER +ODDSMAKERS +ODE +ODEA +ODEON +ODEONS +ODES +ODEUM +ODEUMS +ODIC +ODIFEROUS +ODIOUS +ODIOUSLY +ODIOUSNESS +ODIOUSNESSES +ODIST +ODISTS +ODIUM +ODIUMS +ODOGRAPH +ODOGRAPHS +ODOMETER +ODOMETERS +ODOMETRIES +ODOMETRY +ODONATE +ODONATES +ODONTOBLAST +ODONTOBLASTIC +ODONTOBLASTS +ODONTOGLOSSUM +ODONTOGLOSSUMS +ODONTOID +ODONTOIDS +ODOR +ODORANT +ODORANTS +ODORED +ODORFUL +ODORIFEROUS +ODORIFEROUSLY +ODORIFEROUSNESS +ODORIZE +ODORIZED +ODORIZES +ODORIZING +ODORLESS +ODOROUS +ODOROUSLY +ODOROUSNESS +ODOROUSNESSES +ODORS +ODOUR +ODOURFUL +ODOURS +ODS +ODYL +ODYLE +ODYLES +ODYLS +ODYSSEY +ODYSSEYS +OE +OECOLOGIES +OECOLOGY +OECUMENICAL +OEDEMA +OEDEMAS +OEDEMATA +OEDIPAL +OEDIPALLY +OEDIPEAN +OEILLADE +OEILLADES +OENOLOGIES +OENOLOGY +OENOMEL +OENOMELS +OENOPHILE +OENOPHILES +OERSTED +OERSTEDS +OES +OESOPHAGI +OESOPHAGUS +OESTRIN +OESTRINS +OESTRIOL +OESTRIOLS +OESTROGEN +OESTROGENS +OESTRONE +OESTRONES +OESTROUS +OESTRUM +OESTRUMS +OESTRUS +OESTRUSES +OEUVRE +OEUVRES +OF +OFAY +OFAYS +OFF +OFFAL +OFFALS +OFFBEAT +OFFBEATS +OFFCAST +OFFCASTS +OFFCUT +OFFCUTS +OFFED +OFFENCE +OFFENCES +OFFEND +OFFENDED +OFFENDER +OFFENDERS +OFFENDING +OFFENDS +OFFENSE +OFFENSELESS +OFFENSES +OFFENSIVE +OFFENSIVELY +OFFENSIVENESS +OFFENSIVENESSES +OFFENSIVES +OFFER +OFFERED +OFFERER +OFFERERS +OFFERING +OFFERINGS +OFFEROR +OFFERORS +OFFERS +OFFERTORIES +OFFERTORY +OFFHAND +OFFHANDED +OFFHANDEDLY +OFFHANDEDNESS +OFFHANDEDNESSES +OFFICE +OFFICEHOLDER +OFFICEHOLDERS +OFFICER +OFFICERED +OFFICERING +OFFICERS +OFFICES +OFFICIAL +OFFICIALDOM +OFFICIALDOMS +OFFICIALESE +OFFICIALESES +OFFICIALISM +OFFICIALISMS +OFFICIALLY +OFFICIALS +OFFICIANT +OFFICIANTS +OFFICIARIES +OFFICIARY +OFFICIATE +OFFICIATED +OFFICIATES +OFFICIATING +OFFICIATION +OFFICIATIONS +OFFICINAL +OFFICINALS +OFFICIOUS +OFFICIOUSLY +OFFICIOUSNESS +OFFICIOUSNESSES +OFFING +OFFINGS +OFFISH +OFFISHLY +OFFISHNESS +OFFISHNESSES +OFFKEY +OFFLINE +OFFLOAD +OFFLOADED +OFFLOADING +OFFLOADS +OFFPRINT +OFFPRINTED +OFFPRINTING +OFFPRINTS +OFFRAMP +OFFRAMPS +OFFS +OFFSCOURING +OFFSCOURINGS +OFFSCREEN +OFFSET +OFFSETS +OFFSETTING +OFFSHOOT +OFFSHOOTS +OFFSHORE +OFFSHORES +OFFSIDE +OFFSIDES +OFFSPRING +OFFSPRINGS +OFFSTAGE +OFFSTAGES +OFFTRACK +OFT +OFTEN +OFTENER +OFTENEST +OFTENTIMES +OFTER +OFTEST +OFTTIMES +OGAM +OGAMS +OGDOAD +OGDOADS +OGEE +OGEES +OGHAM +OGHAMIC +OGHAMIST +OGHAMISTS +OGHAMS +OGIVAL +OGIVE +OGIVES +OGLE +OGLED +OGLER +OGLERS +OGLES +OGLING +OGRE +OGREISH +OGREISHLY +OGREISM +OGREISMS +OGRES +OGRESS +OGRESSES +OGRISH +OGRISHLY +OGRISM +OGRISMS +OH +OHED +OHIA +OHIAS +OHING +OHM +OHMAGE +OHMAGES +OHMIC +OHMICALLY +OHMMETER +OHMMETERS +OHMS +OHO +OHS +OI +OIDIA +OIDIOID +OIDIUM +OIL +OILBIRD +OILBIRDS +OILCAMP +OILCAMPS +OILCAN +OILCANS +OILCLOTH +OILCLOTHS +OILCUP +OILCUPS +OILED +OILER +OILERS +OILHOLE +OILHOLES +OILIER +OILIEST +OILILY +OILINESS +OILINESSES +OILING +OILMAN +OILMEN +OILPAPER +OILPAPERS +OILPROOF +OILS +OILSEED +OILSEEDS +OILSKIN +OILSKINS +OILSTONE +OILSTONES +OILTIGHT +OILWAY +OILWAYS +OILY +OINK +OINKED +OINKING +OINKS +OINOLOGIES +OINOLOGY +OINOMEL +OINOMELS +OINTMENT +OINTMENTS +OITICICA +OITICICAS +OKA +OKAPI +OKAPIS +OKAS +OKAY +OKAYED +OKAYING +OKAYS +OKE +OKEH +OKEHS +OKES +OKEYDOKE +OKEYDOKEY +OKRA +OKRAS +OLD +OLDEN +OLDER +OLDEST +OLDFANGLED +OLDIE +OLDIES +OLDISH +OLDNESS +OLDNESSES +OLDS +OLDSQUAW +OLDSQUAWS +OLDSTER +OLDSTERS +OLDSTYLE +OLDSTYLES +OLDWIFE +OLDWIVES +OLDY +OLE +OLEA +OLEAGINOUS +OLEAGINOUSLY +OLEAGINOUSNESS +OLEANDER +OLEANDERS +OLEANDOMYCIN +OLEANDOMYCINS +OLEASTER +OLEASTERS +OLEATE +OLEATES +OLECRANAL +OLECRANON +OLECRANONS +OLEFIN +OLEFINE +OLEFINES +OLEFINIC +OLEFINS +OLEIC +OLEIN +OLEINE +OLEINES +OLEINS +OLEO +OLEOGRAPH +OLEOGRAPHS +OLEOMARGARINE +OLEOMARGARINES +OLEORESIN +OLEORESINOUS +OLEORESINS +OLEOS +OLES +OLESTRA +OLESTRAS +OLEUM +OLEUMS +OLFACTION +OLFACTIONS +OLFACTIVE +OLFACTOMETER +OLFACTOMETERS +OLFACTORIES +OLFACTORY +OLIBANUM +OLIBANUMS +OLICOOK +OLICOOKS +OLIGARCH +OLIGARCHIC +OLIGARCHICAL +OLIGARCHIES +OLIGARCHS +OLIGARCHY +OLIGOCENE +OLIGOCHAETE +OLIGOCHAETES +OLIGOCLASE +OLIGOCLASES +OLIGODENDROCYTE +OLIGODENDROGLIA +OLIGOGENE +OLIGOGENES +OLIGOMER +OLIGOMERIC +OLIGOMERIZATION +OLIGOMERS +OLIGONUCLEOTIDE +OLIGOPHAGIES +OLIGOPHAGOUS +OLIGOPHAGY +OLIGOPOLIES +OLIGOPOLISTIC +OLIGOPOLY +OLIGOPSONIES +OLIGOPSONISTIC +OLIGOPSONY +OLIGOSACCHARIDE +OLIGOTROPHIC +OLIGURIA +OLIGURIAS +OLINGO +OLINGOS +OLIO +OLIOS +OLIVACEOUS +OLIVARY +OLIVE +OLIVENITE +OLIVENITES +OLIVES +OLIVINE +OLIVINES +OLIVINIC +OLIVINITIC +OLLA +OLLAS +OLOGIES +OLOGIST +OLOGISTS +OLOGY +OLOLIUQUI +OLOLIUQUIS +OLOROSO +OLOROSOS +OLYMPIAD +OLYMPIADS +OM +OMASA +OMASUM +OMBER +OMBERS +OMBRE +OMBRES +OMBUDSMAN +OMBUDSMANSHIP +OMBUDSMANSHIPS +OMBUDSMEN +OMEGA +OMEGAS +OMELET +OMELETS +OMELETTE +OMELETTES +OMEN +OMENED +OMENING +OMENS +OMENTA +OMENTAL +OMENTUM +OMENTUMS +OMER +OMERS +OMICRON +OMICRONS +OMIKRON +OMIKRONS +OMINOUS +OMINOUSLY +OMINOUSNESS +OMINOUSNESSES +OMISSIBLE +OMISSION +OMISSIONS +OMISSIVE +OMIT +OMITS +OMITTED +OMITTER +OMITTERS +OMITTING +OMMATIDIA +OMMATIDIAL +OMMATIDIUM +OMNIARCH +OMNIARCHS +OMNIBUS +OMNIBUSES +OMNIBUSSES +OMNICOMPETENCE +OMNICOMPETENCES +OMNICOMPETENT +OMNIDIRECTIONAL +OMNIFARIOUS +OMNIFIC +OMNIFICENT +OMNIFORM +OMNIMODE +OMNIPOTENCE +OMNIPOTENCES +OMNIPOTENT +OMNIPOTENTLY +OMNIPOTENTS +OMNIPRESENCE +OMNIPRESENCES +OMNIPRESENT +OMNIRANGE +OMNIRANGES +OMNISCIENCE +OMNISCIENCES +OMNISCIENT +OMNISCIENTLY +OMNIVORA +OMNIVORE +OMNIVORES +OMNIVOROUS +OMNIVOROUSLY +OMOPHAGIA +OMOPHAGIAS +OMOPHAGIC +OMOPHAGIES +OMOPHAGY +OMPHALI +OMPHALOS +OMPHALOSKEPSES +OMPHALOSKEPSIS +OMS +ON +ONAGER +ONAGERS +ONAGRI +ONANISM +ONANISMS +ONANIST +ONANISTIC +ONANISTS +ONBOARD +ONCE +ONCET +ONCHOCERCIASES +ONCHOCERCIASIS +ONCIDIUM +ONCIDIUMS +ONCOGENE +ONCOGENES +ONCOGENESES +ONCOGENESIS +ONCOGENIC +ONCOGENICITIES +ONCOGENICITY +ONCOLOGIC +ONCOLOGICAL +ONCOLOGIES +ONCOLOGIST +ONCOLOGISTS +ONCOLOGY +ONCOMING +ONCOMINGS +ONCORNAVIRUS +ONCORNAVIRUSES +ONCOVIRUS +ONCOVIRUSES +ONDOGRAM +ONDOGRAMS +ONE +ONEFOLD +ONEIRIC +ONEIRICALLY +ONEIROMANCIES +ONEIROMANCY +ONENESS +ONENESSES +ONERIER +ONERIEST +ONEROUS +ONEROUSLY +ONEROUSNESS +ONEROUSNESSES +ONERY +ONES +ONESELF +ONETIME +ONGOING +ONGOINGNESS +ONGOINGNESSES +ONION +ONIONS +ONIONSKIN +ONIONSKINS +ONIONY +ONIUM +ONLAY +ONLAYS +ONLINE +ONLOAD +ONLOADED +ONLOADING +ONLOADS +ONLOOKER +ONLOOKERS +ONLOOKING +ONLY +ONO +ONOMASTIC +ONOMASTICALLY +ONOMASTICIAN +ONOMASTICIANS +ONOMASTICS +ONOMATOLOGIES +ONOMATOLOGIST +ONOMATOLOGISTS +ONOMATOLOGY +ONOMATOPOEIA +ONOMATOPOEIAS +ONOMATOPOEIC +ONOMATOPOETIC +ONOS +ONRUSH +ONRUSHES +ONRUSHING +ONS +ONSCREEN +ONSET +ONSETS +ONSHORE +ONSIDE +ONSLAUGHT +ONSLAUGHTS +ONSTAGE +ONSTREAM +ONTIC +ONTICALLY +ONTO +ONTOGENESES +ONTOGENESIS +ONTOGENETIC +ONTOGENETICALLY +ONTOGENIC +ONTOGENIES +ONTOGENY +ONTOLOGIC +ONTOLOGICAL +ONTOLOGICALLY +ONTOLOGIES +ONTOLOGIST +ONTOLOGISTS +ONTOLOGY +ONUS +ONUSES +ONWARD +ONWARDS +ONYCHOPHORAN +ONYCHOPHORANS +ONYX +ONYXES +OOCYST +OOCYSTS +OOCYTE +OOCYTES +OODLES +OODLINS +OOGAMETE +OOGAMETES +OOGAMIES +OOGAMOUS +OOGAMY +OOGENESES +OOGENESIS +OOGENETIC +OOGENIES +OOGENY +OOGONIA +OOGONIAL +OOGONIUM +OOGONIUMS +OOH +OOHED +OOHING +OOHS +OOLACHAN +OOLACHANS +OOLITE +OOLITES +OOLITH +OOLITHS +OOLITIC +OOLOGIC +OOLOGICAL +OOLOGIES +OOLOGIST +OOLOGISTS +OOLOGY +OOLONG +OOLONGS +OOMIAC +OOMIACK +OOMIACKS +OOMIACS +OOMIAK +OOMIAKS +OOMPAH +OOMPAHED +OOMPAHING +OOMPAHS +OOMPH +OOMPHS +OOPHORECTOMIES +OOPHORECTOMY +OOPHYTE +OOPHYTES +OOPHYTIC +OOPS +OORALI +OORALIS +OORIE +OOSPERM +OOSPERMS +OOSPHERE +OOSPHERES +OOSPORE +OOSPORES +OOSPORIC +OOT +OOTHECA +OOTHECAE +OOTHECAL +OOTID +OOTIDS +OOTS +OOZE +OOZED +OOZES +OOZIER +OOZIEST +OOZILY +OOZINESS +OOZINESSES +OOZING +OOZY +OP +OPACIFIED +OPACIFIER +OPACIFIERS +OPACIFIES +OPACIFY +OPACIFYING +OPACITIES +OPACITY +OPAH +OPAHS +OPAL +OPALESCE +OPALESCED +OPALESCENCE +OPALESCENCES +OPALESCENT +OPALESCENTLY +OPALESCES +OPALESCING +OPALINE +OPALINES +OPALS +OPAQUE +OPAQUED +OPAQUELY +OPAQUENESS +OPAQUENESSES +OPAQUER +OPAQUES +OPAQUEST +OPAQUING +OPE +OPED +OPEN +OPENABILITIES +OPENABILITY +OPENABLE +OPENCAST +OPENED +OPENER +OPENERS +OPENEST +OPENHANDED +OPENHANDEDLY +OPENHANDEDNESS +OPENHEARTED +OPENHEARTEDLY +OPENHEARTEDNESS +OPENING +OPENINGS +OPENLY +OPENMOUTHED +OPENMOUTHEDLY +OPENMOUTHEDNESS +OPENNESS +OPENNESSES +OPENS +OPENWORK +OPENWORKS +OPERA +OPERABILITIES +OPERABILITY +OPERABLE +OPERABLY +OPERAGOER +OPERAGOERS +OPERAGOING +OPERAGOINGS +OPERAND +OPERANDS +OPERANT +OPERANTLY +OPERANTS +OPERAS +OPERATE +OPERATED +OPERATES +OPERATIC +OPERATICALLY +OPERATICS +OPERATING +OPERATION +OPERATIONAL +OPERATIONALISM +OPERATIONALISMS +OPERATIONALIST +OPERATIONALISTS +OPERATIONALLY +OPERATIONISM +OPERATIONISMS +OPERATIONIST +OPERATIONISTS +OPERATIONS +OPERATIVE +OPERATIVELY +OPERATIVENESS +OPERATIVENESSES +OPERATIVES +OPERATOR +OPERATORLESS +OPERATORS +OPERCELE +OPERCELES +OPERCULA +OPERCULAR +OPERCULARS +OPERCULATE +OPERCULATED +OPERCULE +OPERCULES +OPERCULUM +OPERCULUMS +OPERETTA +OPERETTAS +OPERETTIST +OPERETTISTS +OPERON +OPERONS +OPEROSE +OPEROSELY +OPEROSENESS +OPEROSENESSES +OPES +OPHIDIAN +OPHIDIANS +OPHIOLITE +OPHIOLITES +OPHIOLOGIES +OPHIOLOGY +OPHITE +OPHITES +OPHITIC +OPHIUROID +OPHIUROIDS +OPHTHALMIA +OPHTHALMIAS +OPHTHALMIC +OPHTHALMOLOGIC +OPHTHALMOLOGIES +OPHTHALMOLOGIST +OPHTHALMOLOGY +OPHTHALMOSCOPE +OPHTHALMOSCOPES +OPHTHALMOSCOPIC +OPHTHALMOSCOPY +OPIATE +OPIATED +OPIATES +OPIATING +OPINE +OPINED +OPINES +OPING +OPINING +OPINION +OPINIONATED +OPINIONATEDLY +OPINIONATEDNESS +OPINIONATIVE +OPINIONATIVELY +OPINIONED +OPINIONS +OPIOID +OPIOIDS +OPISTHOBRANCH +OPISTHOBRANCHS +OPIUM +OPIUMISM +OPIUMISMS +OPIUMS +OPOSSUM +OPOSSUMS +OPPIDAN +OPPIDANS +OPPILANT +OPPILATE +OPPILATED +OPPILATES +OPPILATING +OPPONENCIES +OPPONENCY +OPPONENT +OPPONENTS +OPPORTUNE +OPPORTUNELY +OPPORTUNENESS +OPPORTUNENESSES +OPPORTUNISM +OPPORTUNISMS +OPPORTUNIST +OPPORTUNISTIC +OPPORTUNISTS +OPPORTUNITIES +OPPORTUNITY +OPPOSABILITIES +OPPOSABILITY +OPPOSABLE +OPPOSE +OPPOSED +OPPOSELESS +OPPOSER +OPPOSERS +OPPOSES +OPPOSING +OPPOSITE +OPPOSITELY +OPPOSITENESS +OPPOSITENESSES +OPPOSITES +OPPOSITION +OPPOSITIONAL +OPPOSITIONIST +OPPOSITIONISTS +OPPOSITIONS +OPPRESS +OPPRESSED +OPPRESSES +OPPRESSING +OPPRESSION +OPPRESSIONS +OPPRESSIVE +OPPRESSIVELY +OPPRESSIVENESS +OPPRESSOR +OPPRESSORS +OPPROBRIOUS +OPPROBRIOUSLY +OPPROBRIOUSNESS +OPPROBRIUM +OPPROBRIUMS +OPPUGN +OPPUGNANT +OPPUGNED +OPPUGNER +OPPUGNERS +OPPUGNING +OPPUGNS +OPS +OPSIN +OPSINS +OPSONIC +OPSONIFIED +OPSONIFIES +OPSONIFY +OPSONIFYING +OPSONIN +OPSONINS +OPSONIZE +OPSONIZED +OPSONIZES +OPSONIZING +OPT +OPTATIVE +OPTATIVELY +OPTATIVES +OPTED +OPTIC +OPTICAL +OPTICALLY +OPTICIAN +OPTICIANS +OPTICIST +OPTICISTS +OPTICS +OPTIMA +OPTIMAL +OPTIMALITIES +OPTIMALITY +OPTIMALLY +OPTIME +OPTIMES +OPTIMISATION +OPTIMISATIONS +OPTIMISE +OPTIMISED +OPTIMISES +OPTIMISING +OPTIMISM +OPTIMISMS +OPTIMIST +OPTIMISTIC +OPTIMISTICALLY +OPTIMISTS +OPTIMIZATION +OPTIMIZATIONS +OPTIMIZE +OPTIMIZED +OPTIMIZER +OPTIMIZERS +OPTIMIZES +OPTIMIZING +OPTIMUM +OPTIMUMS +OPTING +OPTION +OPTIONAL +OPTIONALITIES +OPTIONALITY +OPTIONALLY +OPTIONALS +OPTIONED +OPTIONEE +OPTIONEES +OPTIONING +OPTIONS +OPTOELECTRONIC +OPTOELECTRONICS +OPTOKINETIC +OPTOMETER +OPTOMETERS +OPTOMETRIC +OPTOMETRIES +OPTOMETRIST +OPTOMETRISTS +OPTOMETRY +OPTS +OPULENCE +OPULENCES +OPULENCIES +OPULENCY +OPULENT +OPULENTLY +OPUNTIA +OPUNTIAS +OPUS +OPUSCULA +OPUSCULAR +OPUSCULE +OPUSCULES +OPUSCULUM +OPUSES +OQUASSA +OQUASSAS +OR +ORA +ORACH +ORACHE +ORACHES +ORACLE +ORACLES +ORACULAR +ORACULARITIES +ORACULARITY +ORACULARLY +ORAD +ORAL +ORALISM +ORALISMS +ORALIST +ORALISTS +ORALITIES +ORALITY +ORALLY +ORALS +ORANG +ORANGE +ORANGEADE +ORANGEADES +ORANGERIE +ORANGERIES +ORANGERY +ORANGES +ORANGEWOOD +ORANGEWOODS +ORANGEY +ORANGIER +ORANGIEST +ORANGISH +ORANGS +ORANGUTAN +ORANGUTANS +ORANGY +ORATE +ORATED +ORATES +ORATING +ORATION +ORATIONS +ORATOR +ORATORICAL +ORATORICALLY +ORATORIES +ORATORIO +ORATORIOS +ORATORS +ORATORY +ORATRESS +ORATRESSES +ORATRICES +ORATRIX +ORB +ORBED +ORBICULAR +ORBICULARLY +ORBICULATE +ORBIER +ORBIEST +ORBING +ORBIT +ORBITAL +ORBITALS +ORBITED +ORBITER +ORBITERS +ORBITING +ORBITS +ORBLESS +ORBS +ORBY +ORC +ORCA +ORCAS +ORCEIN +ORCEINS +ORCHARD +ORCHARDIST +ORCHARDISTS +ORCHARDS +ORCHESTRA +ORCHESTRAL +ORCHESTRALLY +ORCHESTRAS +ORCHESTRATE +ORCHESTRATED +ORCHESTRATER +ORCHESTRATERS +ORCHESTRATES +ORCHESTRATING +ORCHESTRATION +ORCHESTRATIONAL +ORCHESTRATIONS +ORCHESTRATOR +ORCHESTRATORS +ORCHID +ORCHIDACEOUS +ORCHIDLIKE +ORCHIDS +ORCHIL +ORCHILS +ORCHIS +ORCHISES +ORCHITIC +ORCHITIS +ORCHITISES +ORCIN +ORCINOL +ORCINOLS +ORCINS +ORCS +ORDAIN +ORDAINED +ORDAINER +ORDAINERS +ORDAINING +ORDAINMENT +ORDAINMENTS +ORDAINS +ORDEAL +ORDEALS +ORDER +ORDERABLE +ORDERED +ORDERER +ORDERERS +ORDERING +ORDERLESS +ORDERLIES +ORDERLINESS +ORDERLINESSES +ORDERLY +ORDERS +ORDINAL +ORDINALLY +ORDINALS +ORDINANCE +ORDINANCES +ORDINAND +ORDINANDS +ORDINARIER +ORDINARIES +ORDINARIEST +ORDINARILY +ORDINARINESS +ORDINARINESSES +ORDINARY +ORDINATE +ORDINATES +ORDINATION +ORDINATIONS +ORDINES +ORDNANCE +ORDNANCES +ORDO +ORDONNANCE +ORDONNANCES +ORDOS +ORDURE +ORDURES +ORDUROUS +ORE +OREAD +OREADS +ORECTIC +ORECTIVE +OREGANO +OREGANOS +OREIDE +OREIDES +OREODONT +OREODONTS +ORES +ORFRAY +ORFRAYS +ORGAN +ORGANA +ORGANDIE +ORGANDIES +ORGANDY +ORGANELLE +ORGANELLES +ORGANIC +ORGANICALLY +ORGANICISM +ORGANICISMS +ORGANICIST +ORGANICISTS +ORGANICITIES +ORGANICITY +ORGANICS +ORGANISATION +ORGANISATIONS +ORGANISE +ORGANISED +ORGANISER +ORGANISERS +ORGANISES +ORGANISING +ORGANISM +ORGANISMAL +ORGANISMIC +ORGANISMICALLY +ORGANISMS +ORGANIST +ORGANISTS +ORGANIZABLE +ORGANIZATION +ORGANIZATIONAL +ORGANIZATIONS +ORGANIZE +ORGANIZED +ORGANIZER +ORGANIZERS +ORGANIZES +ORGANIZING +ORGANOCHLORINE +ORGANOCHLORINES +ORGANOGENESES +ORGANOGENESIS +ORGANOGENETIC +ORGANOLEPTIC +ORGANOLOGIES +ORGANOLOGY +ORGANOMERCURIAL +ORGANOMETALLIC +ORGANOMETALLICS +ORGANON +ORGANONS +ORGANOPHOSPHATE +ORGANOSOL +ORGANOSOLS +ORGANS +ORGANUM +ORGANUMS +ORGANZA +ORGANZAS +ORGANZINE +ORGANZINES +ORGASM +ORGASMED +ORGASMIC +ORGASMING +ORGASMS +ORGASTIC +ORGEAT +ORGEATS +ORGIAC +ORGIAST +ORGIASTIC +ORGIASTICALLY +ORGIASTS +ORGIC +ORGIES +ORGONE +ORGONES +ORGULOUS +ORGY +ORIBATID +ORIBATIDS +ORIBI +ORIBIS +ORIEL +ORIELS +ORIENT +ORIENTAL +ORIENTALISM +ORIENTALISMS +ORIENTALIST +ORIENTALISTS +ORIENTALIZE +ORIENTALIZED +ORIENTALIZES +ORIENTALIZING +ORIENTALLY +ORIENTALS +ORIENTATE +ORIENTATED +ORIENTATES +ORIENTATING +ORIENTATION +ORIENTATIONAL +ORIENTATIONALLY +ORIENTATIONS +ORIENTED +ORIENTEER +ORIENTEERING +ORIENTEERINGS +ORIENTEERS +ORIENTER +ORIENTERS +ORIENTING +ORIENTS +ORIFICE +ORIFICES +ORIFICIAL +ORIFLAMME +ORIFLAMMES +ORIGAMI +ORIGAMIS +ORIGAN +ORIGANS +ORIGANUM +ORIGANUMS +ORIGIN +ORIGINAL +ORIGINALITIES +ORIGINALITY +ORIGINALLY +ORIGINALS +ORIGINATE +ORIGINATED +ORIGINATES +ORIGINATING +ORIGINATION +ORIGINATIONS +ORIGINATIVE +ORIGINATIVELY +ORIGINATOR +ORIGINATORS +ORIGINS +ORINASAL +ORINASALS +ORIOLE +ORIOLES +ORISHA +ORISHAS +ORISMOLOGICAL +ORISMOLOGIES +ORISMOLOGY +ORISON +ORISONS +ORLE +ORLES +ORLON +ORLONS +ORLOP +ORLOPS +ORMER +ORMERS +ORMOLU +ORMOLUS +ORNAMENT +ORNAMENTAL +ORNAMENTALLY +ORNAMENTALS +ORNAMENTATION +ORNAMENTATIONS +ORNAMENTED +ORNAMENTING +ORNAMENTS +ORNATE +ORNATELY +ORNATENESS +ORNATENESSES +ORNERIER +ORNERIEST +ORNERINESS +ORNERINESSES +ORNERY +ORNIS +ORNITHES +ORNITHIC +ORNITHINE +ORNITHINES +ORNITHISCHIAN +ORNITHISCHIANS +ORNITHOID +ORNITHOLOGIC +ORNITHOLOGICAL +ORNITHOLOGIES +ORNITHOLOGIST +ORNITHOLOGISTS +ORNITHOLOGY +ORNITHOPOD +ORNITHOPODS +ORNITHOPTER +ORNITHOPTERS +ORNITHOSES +ORNITHOSIS +OROGENESES +OROGENESIS +OROGENETIC +OROGENIC +OROGENIES +OROGENY +OROGRAPHIC +OROGRAPHICAL +OROGRAPHIES +OROGRAPHY +OROIDE +OROIDES +OROLOGIES +OROLOGIST +OROLOGISTS +OROLOGY +OROMETER +OROMETERS +OROPHARYNGEAL +OROPHARYNGES +OROPHARYNX +OROPHARYNXES +OROTUND +OROTUNDITIES +OROTUNDITY +ORPHAN +ORPHANAGE +ORPHANAGES +ORPHANED +ORPHANHOOD +ORPHANHOODS +ORPHANING +ORPHANS +ORPHIC +ORPHICAL +ORPHICALLY +ORPHISM +ORPHISMS +ORPHREY +ORPHREYED +ORPHREYS +ORPIMENT +ORPIMENTS +ORPIN +ORPINE +ORPINES +ORPINS +ORRA +ORRERIES +ORRERY +ORRICE +ORRICES +ORRIS +ORRISES +ORRISROOT +ORRISROOTS +ORS +ORT +ORTHICON +ORTHICONS +ORTHO +ORTHOCENTER +ORTHOCENTERS +ORTHOCHROMATIC +ORTHOCLASE +ORTHOCLASES +ORTHODONTIA +ORTHODONTIAS +ORTHODONTIC +ORTHODONTICALLY +ORTHODONTICS +ORTHODONTIST +ORTHODONTISTS +ORTHODOX +ORTHODOXES +ORTHODOXIES +ORTHODOXLY +ORTHODOXY +ORTHOEPIC +ORTHOEPICALLY +ORTHOEPIES +ORTHOEPIST +ORTHOEPISTS +ORTHOEPY +ORTHOGENESES +ORTHOGENESIS +ORTHOGENETIC +ORTHOGONAL +ORTHOGONALITIES +ORTHOGONALITY +ORTHOGONALIZE +ORTHOGONALIZED +ORTHOGONALIZES +ORTHOGONALIZING +ORTHOGONALLY +ORTHOGRADE +ORTHOGRAPHIC +ORTHOGRAPHICAL +ORTHOGRAPHIES +ORTHOGRAPHY +ORTHOMOLECULAR +ORTHONORMAL +ORTHOPAEDIC +ORTHOPAEDICS +ORTHOPEDIC +ORTHOPEDICALLY +ORTHOPEDICS +ORTHOPEDIST +ORTHOPEDISTS +ORTHOPHOSPHATE +ORTHOPHOSPHATES +ORTHOPSYCHIATRY +ORTHOPTER +ORTHOPTERA +ORTHOPTERAN +ORTHOPTERANS +ORTHOPTERIST +ORTHOPTERISTS +ORTHOPTEROID +ORTHOPTEROIDS +ORTHOPTERS +ORTHOPTIC +ORTHORHOMBIC +ORTHOSCOPIC +ORTHOSES +ORTHOSIS +ORTHOSTATIC +ORTHOTIC +ORTHOTICS +ORTHOTIST +ORTHOTISTS +ORTHOTROPOUS +ORTOLAN +ORTOLANS +ORTS +ORYX +ORYXES +ORZO +ORZOS +OS +OSAR +OSCILLATE +OSCILLATED +OSCILLATES +OSCILLATING +OSCILLATION +OSCILLATIONAL +OSCILLATIONS +OSCILLATOR +OSCILLATORS +OSCILLATORY +OSCILLOGRAM +OSCILLOGRAMS +OSCILLOGRAPH +OSCILLOGRAPHIC +OSCILLOGRAPHIES +OSCILLOGRAPHS +OSCILLOGRAPHY +OSCILLOSCOPE +OSCILLOSCOPES +OSCILLOSCOPIC +OSCINE +OSCINES +OSCININE +OSCITANCE +OSCITANCES +OSCITANCIES +OSCITANCY +OSCITANT +OSCULA +OSCULANT +OSCULAR +OSCULATE +OSCULATED +OSCULATES +OSCULATING +OSCULATION +OSCULATIONS +OSCULATORY +OSCULE +OSCULES +OSCULUM +OSE +OSES +OSETRA +OSETRAS +OSIER +OSIERED +OSIERS +OSMATIC +OSMETERIA +OSMETERIUM +OSMIC +OSMICALLY +OSMICS +OSMIOUS +OSMIRIDIUM +OSMIRIDIUMS +OSMIUM +OSMIUMS +OSMOL +OSMOLAL +OSMOLALITIES +OSMOLALITY +OSMOLAR +OSMOLARITIES +OSMOLARITY +OSMOLE +OSMOLES +OSMOLS +OSMOMETER +OSMOMETERS +OSMOMETRIC +OSMOMETRIES +OSMOMETRY +OSMOREGULATION +OSMOREGULATIONS +OSMOREGULATORY +OSMOSE +OSMOSED +OSMOSES +OSMOSING +OSMOSIS +OSMOTIC +OSMOTICALLY +OSMOUS +OSMUND +OSMUNDA +OSMUNDAS +OSMUNDINE +OSMUNDINES +OSMUNDS +OSNABURG +OSNABURGS +OSPREY +OSPREYS +OSSA +OSSATURE +OSSATURES +OSSEIN +OSSEINS +OSSEOUS +OSSEOUSLY +OSSETRA +OSSETRAS +OSSIA +OSSICLE +OSSICLES +OSSICULAR +OSSIFIC +OSSIFICATION +OSSIFICATIONS +OSSIFIED +OSSIFIER +OSSIFIERS +OSSIFIES +OSSIFRAGE +OSSIFRAGES +OSSIFY +OSSIFYING +OSSUARIES +OSSUARY +OSTEAL +OSTEITIC +OSTEITIDES +OSTEITIS +OSTENSIBLE +OSTENSIBLY +OSTENSIVE +OSTENSIVELY +OSTENSORIA +OSTENSORIES +OSTENSORIUM +OSTENSORY +OSTENTATION +OSTENTATIONS +OSTENTATIOUS +OSTENTATIOUSLY +OSTEOARTHRITIC +OSTEOARTHRITIS +OSTEOBLAST +OSTEOBLASTIC +OSTEOBLASTS +OSTEOCLAST +OSTEOCLASTIC +OSTEOCLASTS +OSTEOCYTE +OSTEOCYTES +OSTEOGENESES +OSTEOGENESIS +OSTEOGENIC +OSTEOID +OSTEOIDS +OSTEOLOGICAL +OSTEOLOGIES +OSTEOLOGIST +OSTEOLOGISTS +OSTEOLOGY +OSTEOMA +OSTEOMALACIA +OSTEOMALACIAS +OSTEOMAS +OSTEOMATA +OSTEOMYELITIS +OSTEOMYELITISES +OSTEOPATH +OSTEOPATHIC +OSTEOPATHICALLY +OSTEOPATHIES +OSTEOPATHS +OSTEOPATHY +OSTEOPLASTIC +OSTEOPLASTIES +OSTEOPLASTY +OSTEOPOROSES +OSTEOPOROSIS +OSTEOPOROTIC +OSTEOSARCOMA +OSTEOSARCOMAS +OSTEOSARCOMATA +OSTEOSES +OSTEOSIS +OSTEOSISES +OSTEOTOME +OSTEOTOMES +OSTEOTOMIES +OSTEOTOMY +OSTIA +OSTIARIES +OSTIARY +OSTINATI +OSTINATO +OSTINATOS +OSTIOLAR +OSTIOLE +OSTIOLES +OSTIUM +OSTLER +OSTLERS +OSTMARK +OSTMARKS +OSTOMATE +OSTOMATES +OSTOMIES +OSTOMY +OSTOSES +OSTOSIS +OSTOSISES +OSTRACA +OSTRACISE +OSTRACISED +OSTRACISES +OSTRACISING +OSTRACISM +OSTRACISMS +OSTRACIZE +OSTRACIZED +OSTRACIZES +OSTRACIZING +OSTRACOD +OSTRACODE +OSTRACODERM +OSTRACODERMS +OSTRACODES +OSTRACODS +OSTRACON +OSTRAKA +OSTRAKON +OSTRICH +OSTRICHES +OSTRICHLIKE +OTALGIA +OTALGIAS +OTALGIC +OTALGIES +OTALGY +OTHER +OTHERGUESS +OTHERNESS +OTHERNESSES +OTHERS +OTHERWHERE +OTHERWHILE +OTHERWHILES +OTHERWISE +OTHERWORLD +OTHERWORLDLY +OTHERWORLDS +OTIC +OTIOSE +OTIOSELY +OTIOSENESS +OTIOSENESSES +OTIOSITIES +OTIOSITY +OTITIC +OTITIDES +OTITIS +OTITISES +OTOCYST +OTOCYSTIC +OTOCYSTS +OTOLARYNGOLOGY +OTOLITH +OTOLITHIC +OTOLITHS +OTOLOGIES +OTOLOGIST +OTOLOGISTS +OTOLOGY +OTOPLASTIES +OTOPLASTY +OTOSCLEROSES +OTOSCLEROSIS +OTOSCOPE +OTOSCOPES +OTOSCOPIES +OTOSCOPY +OTOTOXIC +OTOTOXICITIES +OTOTOXICITY +OTTAR +OTTARS +OTTAVA +OTTAVAS +OTTER +OTTERS +OTTO +OTTOMAN +OTTOMANS +OTTOS +OUABAIN +OUABAINS +OUBLIETTE +OUBLIETTES +OUCH +OUCHED +OUCHES +OUCHING +OUD +OUDS +OUGHT +OUGHTED +OUGHTING +OUGHTS +OUGUIYA +OUGUIYAS +OUISTITI +OUISTITIS +OUNCE +OUNCES +OUPH +OUPHE +OUPHES +OUPHS +OUR +OURANG +OURANGS +OURARI +OURARIS +OUREBI +OUREBIS +OURIE +OURS +OURSELF +OURSELVES +OUSEL +OUSELS +OUST +OUSTED +OUSTER +OUSTERS +OUSTING +OUSTS +OUT +OUTACHIEVE +OUTACHIEVED +OUTACHIEVES +OUTACHIEVING +OUTACT +OUTACTED +OUTACTING +OUTACTS +OUTADD +OUTADDED +OUTADDING +OUTADDS +OUTAGE +OUTAGES +OUTARGUE +OUTARGUED +OUTARGUES +OUTARGUING +OUTASK +OUTASKED +OUTASKING +OUTASKS +OUTATE +OUTBACK +OUTBACKER +OUTBACKERS +OUTBACKS +OUTBAKE +OUTBAKED +OUTBAKES +OUTBAKING +OUTBALANCE +OUTBALANCED +OUTBALANCES +OUTBALANCING +OUTBARGAIN +OUTBARGAINED +OUTBARGAINING +OUTBARGAINS +OUTBARK +OUTBARKED +OUTBARKING +OUTBARKS +OUTBAWL +OUTBAWLED +OUTBAWLING +OUTBAWLS +OUTBEAM +OUTBEAMED +OUTBEAMING +OUTBEAMS +OUTBEG +OUTBEGGED +OUTBEGGING +OUTBEGS +OUTBID +OUTBIDDEN +OUTBIDDER +OUTBIDDERS +OUTBIDDING +OUTBIDS +OUTBITCH +OUTBITCHED +OUTBITCHES +OUTBITCHING +OUTBLAZE +OUTBLAZED +OUTBLAZES +OUTBLAZING +OUTBLEAT +OUTBLEATED +OUTBLEATING +OUTBLEATS +OUTBLESS +OUTBLESSED +OUTBLESSES +OUTBLESSING +OUTBLOOM +OUTBLOOMED +OUTBLOOMING +OUTBLOOMS +OUTBLUFF +OUTBLUFFED +OUTBLUFFING +OUTBLUFFS +OUTBLUSH +OUTBLUSHED +OUTBLUSHES +OUTBLUSHING +OUTBOARD +OUTBOARDS +OUTBOAST +OUTBOASTED +OUTBOASTING +OUTBOASTS +OUTBOUGHT +OUTBOUND +OUTBOX +OUTBOXED +OUTBOXES +OUTBOXING +OUTBRAG +OUTBRAGGED +OUTBRAGGING +OUTBRAGS +OUTBRAVE +OUTBRAVED +OUTBRAVES +OUTBRAVING +OUTBRAWL +OUTBRAWLED +OUTBRAWLING +OUTBRAWLS +OUTBRAZEN +OUTBRAZENED +OUTBRAZENING +OUTBRAZENS +OUTBREAK +OUTBREAKS +OUTBRED +OUTBREED +OUTBREEDING +OUTBREEDINGS +OUTBREEDS +OUTBRIBE +OUTBRIBED +OUTBRIBES +OUTBRIBING +OUTBUILD +OUTBUILDING +OUTBUILDINGS +OUTBUILDS +OUTBUILT +OUTBULGE +OUTBULGED +OUTBULGES +OUTBULGING +OUTBULK +OUTBULKED +OUTBULKING +OUTBULKS +OUTBULLIED +OUTBULLIES +OUTBULLY +OUTBULLYING +OUTBURN +OUTBURNED +OUTBURNING +OUTBURNS +OUTBURNT +OUTBURST +OUTBURSTS +OUTBUY +OUTBUYING +OUTBUYS +OUTBY +OUTBYE +OUTCALL +OUTCALLS +OUTCAPER +OUTCAPERED +OUTCAPERING +OUTCAPERS +OUTCAST +OUTCASTE +OUTCASTES +OUTCASTS +OUTCATCH +OUTCATCHES +OUTCATCHING +OUTCAUGHT +OUTCAVIL +OUTCAVILED +OUTCAVILING +OUTCAVILLED +OUTCAVILLING +OUTCAVILS +OUTCHARGE +OUTCHARGED +OUTCHARGES +OUTCHARGING +OUTCHARM +OUTCHARMED +OUTCHARMING +OUTCHARMS +OUTCHEAT +OUTCHEATED +OUTCHEATING +OUTCHEATS +OUTCHID +OUTCHIDDEN +OUTCHIDE +OUTCHIDED +OUTCHIDES +OUTCHIDING +OUTCITIES +OUTCITY +OUTCLASS +OUTCLASSED +OUTCLASSES +OUTCLASSING +OUTCLIMB +OUTCLIMBED +OUTCLIMBING +OUTCLIMBS +OUTCLOMB +OUTCOACH +OUTCOACHED +OUTCOACHES +OUTCOACHING +OUTCOME +OUTCOMES +OUTCOMPETE +OUTCOMPETED +OUTCOMPETES +OUTCOMPETING +OUTCOOK +OUTCOOKED +OUTCOOKING +OUTCOOKS +OUTCOUNT +OUTCOUNTED +OUTCOUNTING +OUTCOUNTS +OUTCRAWL +OUTCRAWLED +OUTCRAWLING +OUTCRAWLS +OUTCRIED +OUTCRIES +OUTCROP +OUTCROPPED +OUTCROPPING +OUTCROPPINGS +OUTCROPS +OUTCROSS +OUTCROSSED +OUTCROSSES +OUTCROSSING +OUTCROW +OUTCROWD +OUTCROWDED +OUTCROWDING +OUTCROWDS +OUTCROWED +OUTCROWING +OUTCROWS +OUTCRY +OUTCRYING +OUTCURSE +OUTCURSED +OUTCURSES +OUTCURSING +OUTCURVE +OUTCURVES +OUTDANCE +OUTDANCED +OUTDANCES +OUTDANCING +OUTDARE +OUTDARED +OUTDARES +OUTDARING +OUTDATE +OUTDATED +OUTDATEDLY +OUTDATEDNESS +OUTDATEDNESSES +OUTDATES +OUTDATING +OUTDAZZLE +OUTDAZZLED +OUTDAZZLES +OUTDAZZLING +OUTDEBATE +OUTDEBATED +OUTDEBATES +OUTDEBATING +OUTDELIVER +OUTDELIVERED +OUTDELIVERING +OUTDELIVERS +OUTDESIGN +OUTDESIGNED +OUTDESIGNING +OUTDESIGNS +OUTDID +OUTDISTANCE +OUTDISTANCED +OUTDISTANCES +OUTDISTANCING +OUTDO +OUTDODGE +OUTDODGED +OUTDODGES +OUTDODGING +OUTDOER +OUTDOERS +OUTDOES +OUTDOING +OUTDONE +OUTDOOR +OUTDOORS +OUTDOORSMAN +OUTDOORSMANSHIP +OUTDOORSMEN +OUTDOORSY +OUTDRAG +OUTDRAGGED +OUTDRAGGING +OUTDRAGS +OUTDRANK +OUTDRAW +OUTDRAWING +OUTDRAWN +OUTDRAWS +OUTDREAM +OUTDREAMED +OUTDREAMING +OUTDREAMS +OUTDREAMT +OUTDRESS +OUTDRESSED +OUTDRESSES +OUTDRESSING +OUTDREW +OUTDRINK +OUTDRINKING +OUTDRINKS +OUTDRIVE +OUTDRIVEN +OUTDRIVES +OUTDRIVING +OUTDROP +OUTDROPPED +OUTDROPPING +OUTDROPS +OUTDROVE +OUTDRUNK +OUTDUEL +OUTDUELED +OUTDUELING +OUTDUELLED +OUTDUELLING +OUTDUELS +OUTEARN +OUTEARNED +OUTEARNING +OUTEARNS +OUTEAT +OUTEATEN +OUTEATING +OUTEATS +OUTECHO +OUTECHOED +OUTECHOES +OUTECHOING +OUTED +OUTER +OUTERCOAT +OUTERCOATS +OUTERMOST +OUTERS +OUTERWEAR +OUTFABLE +OUTFABLED +OUTFABLES +OUTFABLING +OUTFACE +OUTFACED +OUTFACES +OUTFACING +OUTFALL +OUTFALLS +OUTFAST +OUTFASTED +OUTFASTING +OUTFASTS +OUTFAWN +OUTFAWNED +OUTFAWNING +OUTFAWNS +OUTFEAST +OUTFEASTED +OUTFEASTING +OUTFEASTS +OUTFEEL +OUTFEELING +OUTFEELS +OUTFELT +OUTFENCE +OUTFENCED +OUTFENCES +OUTFENCING +OUTFIELD +OUTFIELDER +OUTFIELDERS +OUTFIELDS +OUTFIGHT +OUTFIGHTING +OUTFIGHTS +OUTFIGURE +OUTFIGURED +OUTFIGURES +OUTFIGURING +OUTFIND +OUTFINDING +OUTFINDS +OUTFIRE +OUTFIRED +OUTFIRES +OUTFIRING +OUTFISH +OUTFISHED +OUTFISHES +OUTFISHING +OUTFIT +OUTFITS +OUTFITTED +OUTFITTER +OUTFITTERS +OUTFITTING +OUTFLANK +OUTFLANKED +OUTFLANKING +OUTFLANKS +OUTFLEW +OUTFLIES +OUTFLOAT +OUTFLOATED +OUTFLOATING +OUTFLOATS +OUTFLOW +OUTFLOWED +OUTFLOWING +OUTFLOWN +OUTFLOWS +OUTFLY +OUTFLYING +OUTFOOL +OUTFOOLED +OUTFOOLING +OUTFOOLS +OUTFOOT +OUTFOOTED +OUTFOOTING +OUTFOOTS +OUTFOUGHT +OUTFOUND +OUTFOX +OUTFOXED +OUTFOXES +OUTFOXING +OUTFROWN +OUTFROWNED +OUTFROWNING +OUTFROWNS +OUTFUMBLE +OUTFUMBLED +OUTFUMBLES +OUTFUMBLING +OUTGAIN +OUTGAINED +OUTGAINING +OUTGAINS +OUTGALLOP +OUTGALLOPED +OUTGALLOPING +OUTGALLOPS +OUTGAMBLE +OUTGAMBLED +OUTGAMBLES +OUTGAMBLING +OUTGAS +OUTGASSED +OUTGASSES +OUTGASSING +OUTGAVE +OUTGAZE +OUTGAZED +OUTGAZES +OUTGAZING +OUTGENERAL +OUTGENERALED +OUTGENERALING +OUTGENERALS +OUTGIVE +OUTGIVEN +OUTGIVES +OUTGIVING +OUTGIVINGS +OUTGLARE +OUTGLARED +OUTGLARES +OUTGLARING +OUTGLEAM +OUTGLEAMED +OUTGLEAMING +OUTGLEAMS +OUTGLITTER +OUTGLITTERED +OUTGLITTERING +OUTGLITTERS +OUTGLOW +OUTGLOWED +OUTGLOWING +OUTGLOWS +OUTGNAW +OUTGNAWED +OUTGNAWING +OUTGNAWN +OUTGNAWS +OUTGO +OUTGOES +OUTGOING +OUTGOINGNESS +OUTGOINGNESSES +OUTGOINGS +OUTGONE +OUTGREW +OUTGRIN +OUTGRINNED +OUTGRINNING +OUTGRINS +OUTGROSS +OUTGROSSED +OUTGROSSES +OUTGROSSING +OUTGROUP +OUTGROUPS +OUTGROW +OUTGROWING +OUTGROWN +OUTGROWS +OUTGROWTH +OUTGROWTHS +OUTGUESS +OUTGUESSED +OUTGUESSES +OUTGUESSING +OUTGUIDE +OUTGUIDED +OUTGUIDES +OUTGUIDING +OUTGUN +OUTGUNNED +OUTGUNNING +OUTGUNS +OUTGUSH +OUTGUSHED +OUTGUSHES +OUTGUSHING +OUTHANDLE +OUTHANDLED +OUTHANDLES +OUTHANDLING +OUTHAUL +OUTHAULS +OUTHEAR +OUTHEARD +OUTHEARING +OUTHEARS +OUTHIT +OUTHITS +OUTHITTING +OUTHOMER +OUTHOMERED +OUTHOMERING +OUTHOMERS +OUTHOUSE +OUTHOUSES +OUTHOWL +OUTHOWLED +OUTHOWLING +OUTHOWLS +OUTHUMOR +OUTHUMORED +OUTHUMORING +OUTHUMORS +OUTHUNT +OUTHUNTED +OUTHUNTING +OUTHUNTS +OUTHUSTLE +OUTHUSTLED +OUTHUSTLES +OUTHUSTLING +OUTING +OUTINGS +OUTINTRIGUE +OUTINTRIGUED +OUTINTRIGUES +OUTINTRIGUING +OUTJINX +OUTJINXED +OUTJINXES +OUTJINXING +OUTJOCKEY +OUTJOCKEYED +OUTJOCKEYING +OUTJOCKEYS +OUTJUGGLE +OUTJUGGLED +OUTJUGGLES +OUTJUGGLING +OUTJUMP +OUTJUMPED +OUTJUMPING +OUTJUMPS +OUTJUT +OUTJUTS +OUTJUTTED +OUTJUTTING +OUTKEEP +OUTKEEPING +OUTKEEPS +OUTKEPT +OUTKICK +OUTKICKED +OUTKICKING +OUTKICKS +OUTKILL +OUTKILLED +OUTKILLING +OUTKILLS +OUTKISS +OUTKISSED +OUTKISSES +OUTKISSING +OUTLAID +OUTLAIN +OUTLAND +OUTLANDER +OUTLANDERS +OUTLANDISH +OUTLANDISHLY +OUTLANDISHNESS +OUTLANDS +OUTLAST +OUTLASTED +OUTLASTING +OUTLASTS +OUTLAUGH +OUTLAUGHED +OUTLAUGHING +OUTLAUGHS +OUTLAW +OUTLAWED +OUTLAWING +OUTLAWRIES +OUTLAWRY +OUTLAWS +OUTLAY +OUTLAYING +OUTLAYS +OUTLEAD +OUTLEADING +OUTLEADS +OUTLEAP +OUTLEAPED +OUTLEAPING +OUTLEAPS +OUTLEAPT +OUTLEARN +OUTLEARNED +OUTLEARNING +OUTLEARNS +OUTLEARNT +OUTLED +OUTLET +OUTLETS +OUTLIE +OUTLIER +OUTLIERS +OUTLIES +OUTLINE +OUTLINED +OUTLINER +OUTLINERS +OUTLINES +OUTLINING +OUTLIVE +OUTLIVED +OUTLIVER +OUTLIVERS +OUTLIVES +OUTLIVING +OUTLOOK +OUTLOOKS +OUTLOVE +OUTLOVED +OUTLOVES +OUTLOVING +OUTLYING +OUTMAN +OUTMANEUVER +OUTMANEUVERED +OUTMANEUVERING +OUTMANEUVERS +OUTMANIPULATE +OUTMANIPULATED +OUTMANIPULATES +OUTMANIPULATING +OUTMANNED +OUTMANNING +OUTMANS +OUTMARCH +OUTMARCHED +OUTMARCHES +OUTMARCHING +OUTMASTER +OUTMASTERED +OUTMASTERING +OUTMASTERS +OUTMATCH +OUTMATCHED +OUTMATCHES +OUTMATCHING +OUTMODE +OUTMODED +OUTMODES +OUTMODING +OUTMOST +OUTMOVE +OUTMOVED +OUTMOVES +OUTMOVING +OUTMUSCLE +OUTMUSCLED +OUTMUSCLES +OUTMUSCLING +OUTNUMBER +OUTNUMBERED +OUTNUMBERING +OUTNUMBERS +OUTOFFICE +OUTOFFICES +OUTORGANIZE +OUTORGANIZED +OUTORGANIZES +OUTORGANIZING +OUTPACE +OUTPACED +OUTPACES +OUTPACING +OUTPAINT +OUTPAINTED +OUTPAINTING +OUTPAINTS +OUTPASS +OUTPASSED +OUTPASSES +OUTPASSING +OUTPATIENT +OUTPATIENTS +OUTPEOPLE +OUTPEOPLED +OUTPEOPLES +OUTPEOPLING +OUTPERFORM +OUTPERFORMED +OUTPERFORMING +OUTPERFORMS +OUTPITCH +OUTPITCHED +OUTPITCHES +OUTPITCHING +OUTPITIED +OUTPITIES +OUTPITY +OUTPITYING +OUTPLACE +OUTPLACED +OUTPLACEMENT +OUTPLACEMENTS +OUTPLACES +OUTPLACING +OUTPLAN +OUTPLANNED +OUTPLANNING +OUTPLANS +OUTPLAY +OUTPLAYED +OUTPLAYING +OUTPLAYS +OUTPLOD +OUTPLODDED +OUTPLODDING +OUTPLODS +OUTPLOT +OUTPLOTS +OUTPLOTTED +OUTPLOTTING +OUTPOINT +OUTPOINTED +OUTPOINTING +OUTPOINTS +OUTPOLITICK +OUTPOLITICKED +OUTPOLITICKING +OUTPOLITICKS +OUTPOLL +OUTPOLLED +OUTPOLLING +OUTPOLLS +OUTPOPULATE +OUTPOPULATED +OUTPOPULATES +OUTPOPULATING +OUTPORT +OUTPORTS +OUTPOST +OUTPOSTS +OUTPOUR +OUTPOURED +OUTPOURER +OUTPOURERS +OUTPOURING +OUTPOURINGS +OUTPOURS +OUTPOWER +OUTPOWERED +OUTPOWERING +OUTPOWERS +OUTPRAY +OUTPRAYED +OUTPRAYING +OUTPRAYS +OUTPREACH +OUTPREACHED +OUTPREACHES +OUTPREACHING +OUTPREEN +OUTPREENED +OUTPREENING +OUTPREENS +OUTPRESS +OUTPRESSED +OUTPRESSES +OUTPRESSING +OUTPRICE +OUTPRICED +OUTPRICES +OUTPRICING +OUTPRODUCE +OUTPRODUCED +OUTPRODUCES +OUTPRODUCING +OUTPROMISE +OUTPROMISED +OUTPROMISES +OUTPROMISING +OUTPULL +OUTPULLED +OUTPULLING +OUTPULLS +OUTPUNCH +OUTPUNCHED +OUTPUNCHES +OUTPUNCHING +OUTPUPIL +OUTPUPILS +OUTPURSUE +OUTPURSUED +OUTPURSUES +OUTPURSUING +OUTPUSH +OUTPUSHED +OUTPUSHES +OUTPUSHING +OUTPUT +OUTPUTS +OUTPUTTED +OUTPUTTING +OUTQUOTE +OUTQUOTED +OUTQUOTES +OUTQUOTING +OUTRACE +OUTRACED +OUTRACES +OUTRACING +OUTRAGE +OUTRAGED +OUTRAGEOUS +OUTRAGEOUSLY +OUTRAGEOUSNESS +OUTRAGES +OUTRAGING +OUTRAISE +OUTRAISED +OUTRAISES +OUTRAISING +OUTRAN +OUTRANCE +OUTRANCES +OUTRANG +OUTRANGE +OUTRANGED +OUTRANGES +OUTRANGING +OUTRANK +OUTRANKED +OUTRANKING +OUTRANKS +OUTRATE +OUTRATED +OUTRATES +OUTRATING +OUTRAVE +OUTRAVED +OUTRAVES +OUTRAVING +OUTRE +OUTREACH +OUTREACHED +OUTREACHES +OUTREACHING +OUTREAD +OUTREADING +OUTREADS +OUTREASON +OUTREASONED +OUTREASONING +OUTREASONS +OUTREBOUND +OUTREBOUNDED +OUTREBOUNDING +OUTREBOUNDS +OUTRECKON +OUTRECKONED +OUTRECKONING +OUTRECKONS +OUTREPRODUCE +OUTREPRODUCED +OUTREPRODUCES +OUTREPRODUCING +OUTRIDDEN +OUTRIDE +OUTRIDER +OUTRIDERS +OUTRIDES +OUTRIDING +OUTRIG +OUTRIGGED +OUTRIGGER +OUTRIGGERS +OUTRIGGING +OUTRIGHT +OUTRIGHTLY +OUTRIGS +OUTRING +OUTRINGING +OUTRINGS +OUTRIVAL +OUTRIVALED +OUTRIVALING +OUTRIVALLED +OUTRIVALLING +OUTRIVALS +OUTROAR +OUTROARED +OUTROARING +OUTROARS +OUTROCK +OUTROCKED +OUTROCKING +OUTROCKS +OUTRODE +OUTROLL +OUTROLLED +OUTROLLING +OUTROLLS +OUTROOT +OUTROOTED +OUTROOTING +OUTROOTS +OUTROW +OUTROWED +OUTROWING +OUTROWS +OUTRUN +OUTRUNG +OUTRUNNER +OUTRUNNERS +OUTRUNNING +OUTRUNS +OUTRUSH +OUTRUSHED +OUTRUSHES +OUTRUSHING +OUTS +OUTSAID +OUTSAIL +OUTSAILED +OUTSAILING +OUTSAILS +OUTSANG +OUTSAT +OUTSAVOR +OUTSAVORED +OUTSAVORING +OUTSAVORS +OUTSAW +OUTSAY +OUTSAYING +OUTSAYS +OUTSCHEME +OUTSCHEMED +OUTSCHEMES +OUTSCHEMING +OUTSCOLD +OUTSCOLDED +OUTSCOLDING +OUTSCOLDS +OUTSCOOP +OUTSCOOPED +OUTSCOOPING +OUTSCOOPS +OUTSCORE +OUTSCORED +OUTSCORES +OUTSCORING +OUTSCORN +OUTSCORNED +OUTSCORNING +OUTSCORNS +OUTSCREAM +OUTSCREAMED +OUTSCREAMING +OUTSCREAMS +OUTSEE +OUTSEEING +OUTSEEN +OUTSEES +OUTSELL +OUTSELLING +OUTSELLS +OUTSERT +OUTSERTS +OUTSERVE +OUTSERVED +OUTSERVES +OUTSERVING +OUTSET +OUTSETS +OUTSHAME +OUTSHAMED +OUTSHAMES +OUTSHAMING +OUTSHINE +OUTSHINED +OUTSHINES +OUTSHINING +OUTSHONE +OUTSHOOT +OUTSHOOTING +OUTSHOOTS +OUTSHOT +OUTSHOUT +OUTSHOUTED +OUTSHOUTING +OUTSHOUTS +OUTSIDE +OUTSIDER +OUTSIDERNESS +OUTSIDERNESSES +OUTSIDERS +OUTSIDES +OUTSIGHT +OUTSIGHTS +OUTSIN +OUTSING +OUTSINGING +OUTSINGS +OUTSINNED +OUTSINNING +OUTSINS +OUTSIT +OUTSITS +OUTSITTING +OUTSIZE +OUTSIZED +OUTSIZES +OUTSKATE +OUTSKATED +OUTSKATES +OUTSKATING +OUTSKIRT +OUTSKIRTS +OUTSLEEP +OUTSLEEPING +OUTSLEEPS +OUTSLEPT +OUTSLICK +OUTSLICKED +OUTSLICKING +OUTSLICKS +OUTSMART +OUTSMARTED +OUTSMARTING +OUTSMARTS +OUTSMELL +OUTSMELLED +OUTSMELLING +OUTSMELLS +OUTSMELT +OUTSMILE +OUTSMILED +OUTSMILES +OUTSMILING +OUTSMOKE +OUTSMOKED +OUTSMOKES +OUTSMOKING +OUTSNORE +OUTSNORED +OUTSNORES +OUTSNORING +OUTSOAR +OUTSOARED +OUTSOARING +OUTSOARS +OUTSOLD +OUTSOLE +OUTSOLES +OUTSOURCE +OUTSOURCED +OUTSOURCES +OUTSOURCING +OUTSOURCINGS +OUTSPAN +OUTSPANNED +OUTSPANNING +OUTSPANS +OUTSPARKLE +OUTSPARKLED +OUTSPARKLES +OUTSPARKLING +OUTSPEAK +OUTSPEAKING +OUTSPEAKS +OUTSPED +OUTSPEED +OUTSPEEDED +OUTSPEEDING +OUTSPEEDS +OUTSPELL +OUTSPELLED +OUTSPELLING +OUTSPELLS +OUTSPELT +OUTSPEND +OUTSPENDING +OUTSPENDS +OUTSPENT +OUTSPOKE +OUTSPOKEN +OUTSPOKENLY +OUTSPOKENNESS +OUTSPOKENNESSES +OUTSPRANG +OUTSPREAD +OUTSPREADING +OUTSPREADS +OUTSPRING +OUTSPRINGING +OUTSPRINGS +OUTSPRINT +OUTSPRINTED +OUTSPRINTING +OUTSPRINTS +OUTSPRUNG +OUTSTAND +OUTSTANDING +OUTSTANDINGLY +OUTSTANDS +OUTSTARE +OUTSTARED +OUTSTARES +OUTSTARING +OUTSTART +OUTSTARTED +OUTSTARTING +OUTSTARTS +OUTSTATE +OUTSTATED +OUTSTATES +OUTSTATING +OUTSTATION +OUTSTATIONS +OUTSTAY +OUTSTAYED +OUTSTAYING +OUTSTAYS +OUTSTEER +OUTSTEERED +OUTSTEERING +OUTSTEERS +OUTSTOOD +OUTSTRETCH +OUTSTRETCHED +OUTSTRETCHES +OUTSTRETCHING +OUTSTRIDDEN +OUTSTRIDE +OUTSTRIDES +OUTSTRIDING +OUTSTRIP +OUTSTRIPPED +OUTSTRIPPING +OUTSTRIPS +OUTSTRIVE +OUTSTRIVEN +OUTSTRIVES +OUTSTRIVING +OUTSTRODE +OUTSTROKE +OUTSTROKES +OUTSTROVE +OUTSTUDIED +OUTSTUDIES +OUTSTUDY +OUTSTUDYING +OUTSTUNT +OUTSTUNTED +OUTSTUNTING +OUTSTUNTS +OUTSULK +OUTSULKED +OUTSULKING +OUTSULKS +OUTSUNG +OUTSWAM +OUTSWARE +OUTSWEAR +OUTSWEARING +OUTSWEARS +OUTSWEEP +OUTSWEEPING +OUTSWEEPS +OUTSWEPT +OUTSWIM +OUTSWIMMING +OUTSWIMS +OUTSWING +OUTSWINGING +OUTSWINGS +OUTSWORE +OUTSWORN +OUTSWUM +OUTSWUNG +OUTTAKE +OUTTAKES +OUTTALK +OUTTALKED +OUTTALKING +OUTTALKS +OUTTASK +OUTTASKED +OUTTASKING +OUTTASKS +OUTTELL +OUTTELLING +OUTTELLS +OUTTHANK +OUTTHANKED +OUTTHANKING +OUTTHANKS +OUTTHIEVE +OUTTHIEVED +OUTTHIEVES +OUTTHIEVING +OUTTHINK +OUTTHINKING +OUTTHINKS +OUTTHOUGHT +OUTTHREW +OUTTHROB +OUTTHROBBED +OUTTHROBBING +OUTTHROBS +OUTTHROW +OUTTHROWING +OUTTHROWN +OUTTHROWS +OUTTHRUST +OUTTHRUSTED +OUTTHRUSTING +OUTTHRUSTS +OUTTOLD +OUTTOWER +OUTTOWERED +OUTTOWERING +OUTTOWERS +OUTTRADE +OUTTRADED +OUTTRADES +OUTTRADING +OUTTRAVEL +OUTTRAVELED +OUTTRAVELING +OUTTRAVELLED +OUTTRAVELLING +OUTTRAVELS +OUTTRICK +OUTTRICKED +OUTTRICKING +OUTTRICKS +OUTTROT +OUTTROTS +OUTTROTTED +OUTTROTTING +OUTTRUMP +OUTTRUMPED +OUTTRUMPING +OUTTRUMPS +OUTTURN +OUTTURNS +OUTVALUE +OUTVALUED +OUTVALUES +OUTVALUING +OUTVAUNT +OUTVAUNTED +OUTVAUNTING +OUTVAUNTS +OUTVIE +OUTVIED +OUTVIES +OUTVOICE +OUTVOICED +OUTVOICES +OUTVOICING +OUTVOTE +OUTVOTED +OUTVOTES +OUTVOTING +OUTVYING +OUTWAIT +OUTWAITED +OUTWAITING +OUTWAITS +OUTWALK +OUTWALKED +OUTWALKING +OUTWALKS +OUTWAR +OUTWARD +OUTWARDLY +OUTWARDNESS +OUTWARDNESSES +OUTWARDS +OUTWARRED +OUTWARRING +OUTWARS +OUTWASH +OUTWASHES +OUTWASTE +OUTWASTED +OUTWASTES +OUTWASTING +OUTWATCH +OUTWATCHED +OUTWATCHES +OUTWATCHING +OUTWEAR +OUTWEARIED +OUTWEARIES +OUTWEARING +OUTWEARS +OUTWEARY +OUTWEARYING +OUTWEEP +OUTWEEPING +OUTWEEPS +OUTWEIGH +OUTWEIGHED +OUTWEIGHING +OUTWEIGHS +OUTWENT +OUTWEPT +OUTWHIRL +OUTWHIRLED +OUTWHIRLING +OUTWHIRLS +OUTWILE +OUTWILED +OUTWILES +OUTWILING +OUTWILL +OUTWILLED +OUTWILLING +OUTWILLS +OUTWIND +OUTWINDED +OUTWINDING +OUTWINDS +OUTWISH +OUTWISHED +OUTWISHES +OUTWISHING +OUTWIT +OUTWITH +OUTWITS +OUTWITTED +OUTWITTING +OUTWORE +OUTWORK +OUTWORKED +OUTWORKER +OUTWORKERS +OUTWORKING +OUTWORKS +OUTWORN +OUTWRESTLE +OUTWRESTLED +OUTWRESTLES +OUTWRESTLING +OUTWRIT +OUTWRITE +OUTWRITES +OUTWRITING +OUTWRITTEN +OUTWROTE +OUTWROUGHT +OUTYELL +OUTYELLED +OUTYELLING +OUTYELLS +OUTYELP +OUTYELPED +OUTYELPING +OUTYELPS +OUTYIELD +OUTYIELDED +OUTYIELDING +OUTYIELDS +OUZEL +OUZELS +OUZO +OUZOS +OVA +OVAL +OVALBUMIN +OVALBUMINS +OVALITIES +OVALITY +OVALLY +OVALNESS +OVALNESSES +OVALS +OVARIAL +OVARIAN +OVARIECTOMIES +OVARIECTOMIZED +OVARIECTOMY +OVARIES +OVARIOLE +OVARIOLES +OVARIOTOMIES +OVARIOTOMY +OVARITIDES +OVARITIS +OVARY +OVATE +OVATELY +OVATION +OVATIONAL +OVATIONS +OVEN +OVENBIRD +OVENBIRDS +OVENLIKE +OVENPROOF +OVENS +OVENWARE +OVENWARES +OVER +OVERABLE +OVERABSTRACT +OVERABUNDANCE +OVERABUNDANCES +OVERABUNDANT +OVERACCENTUATE +OVERACCENTUATED +OVERACCENTUATES +OVERACHIEVE +OVERACHIEVED +OVERACHIEVEMENT +OVERACHIEVER +OVERACHIEVERS +OVERACHIEVES +OVERACHIEVING +OVERACT +OVERACTED +OVERACTING +OVERACTION +OVERACTIONS +OVERACTIVE +OVERACTIVITIES +OVERACTIVITY +OVERACTS +OVERACUTE +OVERADJUSTMENT +OVERADJUSTMENTS +OVERADVERTISE +OVERADVERTISED +OVERADVERTISES +OVERADVERTISING +OVERAGE +OVERAGED +OVERAGES +OVERAGGRESSIVE +OVERALERT +OVERALL +OVERALLED +OVERALLS +OVERAMBITIOUS +OVERAMPLIFIED +OVERANALYSES +OVERANALYSIS +OVERANALYTICAL +OVERANALYZE +OVERANALYZED +OVERANALYZES +OVERANALYZING +OVERANXIETIES +OVERANXIETY +OVERANXIOUS +OVERAPPLICATION +OVERAPT +OVERARCH +OVERARCHED +OVERARCHES +OVERARCHING +OVERARM +OVERARMED +OVERARMING +OVERARMS +OVERAROUSAL +OVERAROUSALS +OVERARRANGE +OVERARRANGED +OVERARRANGES +OVERARRANGING +OVERARTICULATE +OVERARTICULATED +OVERARTICULATES +OVERASSERT +OVERASSERTED +OVERASSERTING +OVERASSERTION +OVERASSERTIONS +OVERASSERTIVE +OVERASSERTS +OVERASSESSMENT +OVERASSESSMENTS +OVERATE +OVERATTENTION +OVERATTENTIONS +OVERAWE +OVERAWED +OVERAWES +OVERAWING +OVERBAKE +OVERBAKED +OVERBAKES +OVERBAKING +OVERBALANCE +OVERBALANCED +OVERBALANCES +OVERBALANCING +OVERBEAR +OVERBEARING +OVERBEARINGLY +OVERBEARS +OVERBEAT +OVERBEATEN +OVERBEATING +OVERBEATS +OVERBED +OVERBEJEWELED +OVERBET +OVERBETS +OVERBETTED +OVERBETTING +OVERBID +OVERBIDDEN +OVERBIDDING +OVERBIDS +OVERBIG +OVERBILL +OVERBILLED +OVERBILLING +OVERBILLS +OVERBITE +OVERBITES +OVERBLEACH +OVERBLEACHED +OVERBLEACHES +OVERBLEACHING +OVERBLEW +OVERBLOUSE +OVERBLOUSES +OVERBLOW +OVERBLOWING +OVERBLOWN +OVERBLOWS +OVERBOARD +OVERBOIL +OVERBOILED +OVERBOILING +OVERBOILS +OVERBOLD +OVERBOOK +OVERBOOKED +OVERBOOKING +OVERBOOKS +OVERBORE +OVERBORN +OVERBORNE +OVERBORROW +OVERBORROWED +OVERBORROWING +OVERBORROWS +OVERBOUGHT +OVERBRAKE +OVERBRAKED +OVERBRAKES +OVERBRAKING +OVERBREATHING +OVERBREATHINGS +OVERBRED +OVERBREED +OVERBREEDING +OVERBREEDS +OVERBRIEF +OVERBRIEFED +OVERBRIEFING +OVERBRIEFS +OVERBRIGHT +OVERBROAD +OVERBROWSE +OVERBROWSED +OVERBROWSES +OVERBROWSING +OVERBRUTAL +OVERBUILD +OVERBUILDING +OVERBUILDS +OVERBUILT +OVERBURDEN +OVERBURDENED +OVERBURDENING +OVERBURDENS +OVERBURN +OVERBURNED +OVERBURNING +OVERBURNS +OVERBURNT +OVERBUSY +OVERBUY +OVERBUYING +OVERBUYS +OVERCALL +OVERCALLED +OVERCALLING +OVERCALLS +OVERCAME +OVERCAPACITIES +OVERCAPACITY +OVERCAPITALIZE +OVERCAPITALIZED +OVERCAPITALIZES +OVERCAREFUL +OVERCAST +OVERCASTED +OVERCASTING +OVERCASTINGS +OVERCASTS +OVERCAUTION +OVERCAUTIONS +OVERCAUTIOUS +OVERCENTRALIZE +OVERCENTRALIZED +OVERCENTRALIZES +OVERCHARGE +OVERCHARGED +OVERCHARGES +OVERCHARGING +OVERCHEAP +OVERCHILL +OVERCHILLED +OVERCHILLING +OVERCHILLS +OVERCIVIL +OVERCIVILIZED +OVERCLAIM +OVERCLAIMED +OVERCLAIMING +OVERCLAIMS +OVERCLASS +OVERCLASSES +OVERCLASSIFIED +OVERCLASSIFIES +OVERCLASSIFY +OVERCLASSIFYING +OVERCLEAN +OVERCLEANED +OVERCLEANING +OVERCLEANS +OVERCLEAR +OVERCLEARED +OVERCLEARING +OVERCLEARS +OVERCLOSE +OVERCLOUD +OVERCLOUDED +OVERCLOUDING +OVERCLOUDS +OVERCOACH +OVERCOACHED +OVERCOACHES +OVERCOACHING +OVERCOAT +OVERCOATS +OVERCOLD +OVERCOLOR +OVERCOLORED +OVERCOLORING +OVERCOLORS +OVERCOME +OVERCOMER +OVERCOMERS +OVERCOMES +OVERCOMING +OVERCOMMIT +OVERCOMMITMENT +OVERCOMMITMENTS +OVERCOMMITS +OVERCOMMITTED +OVERCOMMITTING +OVERCOMMUNICATE +OVERCOMPENSATE +OVERCOMPENSATED +OVERCOMPENSATES +OVERCOMPLEX +OVERCOMPLIANCE +OVERCOMPLIANCES +OVERCOMPLICATE +OVERCOMPLICATED +OVERCOMPLICATES +OVERCOMPRESS +OVERCOMPRESSED +OVERCOMPRESSES +OVERCOMPRESSING +OVERCONCERN +OVERCONCERNED +OVERCONCERNING +OVERCONCERNS +OVERCONFIDENCE +OVERCONFIDENCES +OVERCONFIDENT +OVERCONFIDENTLY +OVERCONSCIOUS +OVERCONSTRUCT +OVERCONSTRUCTED +OVERCONSTRUCTS +OVERCONSUME +OVERCONSUMED +OVERCONSUMES +OVERCONSUMING +OVERCONSUMPTION +OVERCONTROL +OVERCONTROLLED +OVERCONTROLLING +OVERCONTROLS +OVERCOOK +OVERCOOKED +OVERCOOKING +OVERCOOKS +OVERCOOL +OVERCOOLED +OVERCOOLING +OVERCOOLS +OVERCORRECT +OVERCORRECTED +OVERCORRECTING +OVERCORRECTS +OVERCOUNT +OVERCOUNTED +OVERCOUNTING +OVERCOUNTS +OVERCOY +OVERCRAM +OVERCRAMMED +OVERCRAMMING +OVERCRAMS +OVERCREDULOUS +OVERCRITICAL +OVERCROP +OVERCROPPED +OVERCROPPING +OVERCROPS +OVERCROWD +OVERCROWDED +OVERCROWDING +OVERCROWDS +OVERCULTIVATION +OVERCURE +OVERCURED +OVERCURES +OVERCURING +OVERCUT +OVERCUTS +OVERCUTTING +OVERDARE +OVERDARED +OVERDARES +OVERDARING +OVERDEAR +OVERDECK +OVERDECKED +OVERDECKING +OVERDECKS +OVERDECORATE +OVERDECORATED +OVERDECORATES +OVERDECORATING +OVERDECORATION +OVERDECORATIONS +OVERDEMANDING +OVERDEPENDENCE +OVERDEPENDENCES +OVERDEPENDENT +OVERDESIGN +OVERDESIGNED +OVERDESIGNING +OVERDESIGNS +OVERDETERMINED +OVERDEVELOP +OVERDEVELOPED +OVERDEVELOPING +OVERDEVELOPMENT +OVERDEVELOPS +OVERDID +OVERDIRECT +OVERDIRECTED +OVERDIRECTING +OVERDIRECTS +OVERDISCOUNT +OVERDISCOUNTED +OVERDISCOUNTING +OVERDISCOUNTS +OVERDIVERSITIES +OVERDIVERSITY +OVERDO +OVERDOCUMENT +OVERDOCUMENTED +OVERDOCUMENTING +OVERDOCUMENTS +OVERDOER +OVERDOERS +OVERDOES +OVERDOG +OVERDOGS +OVERDOING +OVERDOMINANCE +OVERDOMINANCES +OVERDOMINANT +OVERDONE +OVERDOSAGE +OVERDOSAGES +OVERDOSE +OVERDOSED +OVERDOSES +OVERDOSING +OVERDRAFT +OVERDRAFTS +OVERDRAMATIC +OVERDRAMATIZE +OVERDRAMATIZED +OVERDRAMATIZES +OVERDRAMATIZING +OVERDRANK +OVERDRAW +OVERDRAWING +OVERDRAWN +OVERDRAWS +OVERDRESS +OVERDRESSED +OVERDRESSES +OVERDRESSING +OVERDREW +OVERDRIED +OVERDRIES +OVERDRINK +OVERDRINKING +OVERDRINKS +OVERDRIVE +OVERDRIVEN +OVERDRIVES +OVERDRIVING +OVERDROVE +OVERDRUNK +OVERDRY +OVERDRYING +OVERDUB +OVERDUBBED +OVERDUBBING +OVERDUBS +OVERDUE +OVERDYE +OVERDYED +OVERDYEING +OVERDYER +OVERDYERS +OVERDYES +OVEREAGER +OVEREAGERNESS +OVEREAGERNESSES +OVEREARNEST +OVEREASY +OVEREAT +OVEREATEN +OVEREATER +OVEREATERS +OVEREATING +OVEREATS +OVERED +OVEREDIT +OVEREDITED +OVEREDITING +OVEREDITS +OVEREDUCATE +OVEREDUCATED +OVEREDUCATES +OVEREDUCATING +OVEREDUCATION +OVEREDUCATIONS +OVERELABORATE +OVERELABORATED +OVERELABORATES +OVERELABORATING +OVERELABORATION +OVEREMBELLISH +OVEREMBELLISHED +OVEREMBELLISHES +OVEREMOTE +OVEREMOTED +OVEREMOTES +OVEREMOTING +OVEREMOTIONAL +OVEREMPHASES +OVEREMPHASIS +OVEREMPHASIZE +OVEREMPHASIZED +OVEREMPHASIZES +OVEREMPHASIZING +OVEREMPHATIC +OVERENAMORED +OVERENCOURAGE +OVERENCOURAGED +OVERENCOURAGES +OVERENCOURAGING +OVERENERGETIC +OVERENGINEER +OVERENGINEERED +OVERENGINEERING +OVERENGINEERS +OVERENROLLED +OVERENTERTAINED +OVERENTHUSIASM +OVERENTHUSIASMS +OVEREQUIPPED +OVERESTIMATE +OVERESTIMATED +OVERESTIMATES +OVERESTIMATING +OVERESTIMATION +OVERESTIMATIONS +OVEREVALUATION +OVEREVALUATIONS +OVEREXAGGERATE +OVEREXAGGERATED +OVEREXAGGERATES +OVEREXCITE +OVEREXCITED +OVEREXCITES +OVEREXCITING +OVEREXERCISE +OVEREXERCISED +OVEREXERCISES +OVEREXERCISING +OVEREXERT +OVEREXERTED +OVEREXERTING +OVEREXERTION +OVEREXERTIONS +OVEREXERTS +OVEREXPAND +OVEREXPANDED +OVEREXPANDING +OVEREXPANDS +OVEREXPANSION +OVEREXPANSIONS +OVEREXPECTATION +OVEREXPLAIN +OVEREXPLAINED +OVEREXPLAINING +OVEREXPLAINS +OVEREXPLICIT +OVEREXPLOIT +OVEREXPLOITED +OVEREXPLOITING +OVEREXPLOITS +OVEREXPOSE +OVEREXPOSED +OVEREXPOSES +OVEREXPOSING +OVEREXPOSURE +OVEREXPOSURES +OVEREXTEND +OVEREXTENDED +OVEREXTENDING +OVEREXTENDS +OVEREXTENSION +OVEREXTENSIONS +OVEREXTRACTION +OVEREXTRACTIONS +OVEREXTRAVAGANT +OVEREXUBERANT +OVERFACILE +OVERFAMILIAR +OVERFAMILIARITY +OVERFAR +OVERFAST +OVERFASTIDIOUS +OVERFAT +OVERFATIGUE +OVERFATIGUED +OVERFATIGUES +OVERFAVOR +OVERFAVORED +OVERFAVORING +OVERFAVORS +OVERFEAR +OVERFEARED +OVERFEARING +OVERFEARS +OVERFED +OVERFEED +OVERFEEDING +OVERFEEDS +OVERFERTILIZE +OVERFERTILIZED +OVERFERTILIZES +OVERFERTILIZING +OVERFILL +OVERFILLED +OVERFILLING +OVERFILLS +OVERFISH +OVERFISHED +OVERFISHES +OVERFISHING +OVERFIT +OVERFLEW +OVERFLIES +OVERFLIGHT +OVERFLIGHTS +OVERFLOOD +OVERFLOODED +OVERFLOODING +OVERFLOODS +OVERFLOW +OVERFLOWED +OVERFLOWING +OVERFLOWN +OVERFLOWS +OVERFLY +OVERFLYING +OVERFOCUS +OVERFOCUSED +OVERFOCUSES +OVERFOCUSING +OVERFOCUSSED +OVERFOCUSSES +OVERFOCUSSING +OVERFOND +OVERFOUL +OVERFRANK +OVERFREE +OVERFULFILL +OVERFULFILLED +OVERFULFILLING +OVERFULFILLS +OVERFULL +OVERFUND +OVERFUNDED +OVERFUNDING +OVERFUNDS +OVERFUSSY +OVERGARMENT +OVERGARMENTS +OVERGENERALIZE +OVERGENERALIZED +OVERGENERALIZES +OVERGENEROSITY +OVERGENEROUS +OVERGENEROUSLY +OVERGILD +OVERGILDED +OVERGILDING +OVERGILDS +OVERGILT +OVERGIRD +OVERGIRDED +OVERGIRDING +OVERGIRDS +OVERGIRT +OVERGLAD +OVERGLAMORIZE +OVERGLAMORIZED +OVERGLAMORIZES +OVERGLAMORIZING +OVERGLAZE +OVERGLAZED +OVERGLAZES +OVERGLAZING +OVERGOAD +OVERGOADED +OVERGOADING +OVERGOADS +OVERGOVERN +OVERGOVERNED +OVERGOVERNING +OVERGOVERNS +OVERGRADE +OVERGRADED +OVERGRADES +OVERGRADING +OVERGRAZE +OVERGRAZED +OVERGRAZES +OVERGRAZING +OVERGREAT +OVERGREW +OVERGROW +OVERGROWING +OVERGROWN +OVERGROWS +OVERGROWTH +OVERGROWTHS +OVERHAND +OVERHANDED +OVERHANDING +OVERHANDLE +OVERHANDLED +OVERHANDLES +OVERHANDLING +OVERHANDS +OVERHANG +OVERHANGING +OVERHANGS +OVERHARD +OVERHARVEST +OVERHARVESTED +OVERHARVESTING +OVERHARVESTS +OVERHASTY +OVERHATE +OVERHATED +OVERHATES +OVERHATING +OVERHAUL +OVERHAULED +OVERHAULING +OVERHAULS +OVERHEAD +OVERHEADS +OVERHEAP +OVERHEAPED +OVERHEAPING +OVERHEAPS +OVERHEAR +OVERHEARD +OVERHEARING +OVERHEARS +OVERHEAT +OVERHEATED +OVERHEATING +OVERHEATS +OVERHELD +OVERHIGH +OVERHOLD +OVERHOLDING +OVERHOLDS +OVERHOLY +OVERHOMOGENIZE +OVERHOMOGENIZED +OVERHOMOGENIZES +OVERHONOR +OVERHONORED +OVERHONORING +OVERHONORS +OVERHOPE +OVERHOPED +OVERHOPES +OVERHOPING +OVERHOT +OVERHUNG +OVERHUNT +OVERHUNTED +OVERHUNTING +OVERHUNTINGS +OVERHUNTS +OVERHYPE +OVERHYPED +OVERHYPES +OVERHYPING +OVERIDEALIZE +OVERIDEALIZED +OVERIDEALIZES +OVERIDEALIZING +OVERIDENTIFIED +OVERIDENTIFIES +OVERIDENTIFY +OVERIDENTIFYING +OVERIDLE +OVERIMAGINATIVE +OVERIMPRESS +OVERIMPRESSED +OVERIMPRESSES +OVERIMPRESSING +OVERINDULGE +OVERINDULGED +OVERINDULGENCE +OVERINDULGENCES +OVERINDULGENT +OVERINDULGES +OVERINDULGING +OVERINFLATE +OVERINFLATED +OVERINFLATES +OVERINFLATING +OVERINFLATION +OVERINFLATIONS +OVERINFORM +OVERINFORMED +OVERINFORMING +OVERINFORMS +OVERING +OVERINGENIOUS +OVERINGENUITIES +OVERINGENUITY +OVERINSISTENT +OVERINTENSE +OVERINTENSITIES +OVERINTENSITY +OVERINVESTMENT +OVERINVESTMENTS +OVERISSUANCE +OVERISSUANCES +OVERISSUE +OVERISSUED +OVERISSUES +OVERISSUING +OVERJOY +OVERJOYED +OVERJOYING +OVERJOYS +OVERJUST +OVERKEEN +OVERKILL +OVERKILLED +OVERKILLING +OVERKILLS +OVERKIND +OVERLABOR +OVERLABORED +OVERLABORING +OVERLABORS +OVERLADE +OVERLADED +OVERLADEN +OVERLADES +OVERLADING +OVERLAID +OVERLAIN +OVERLAND +OVERLANDS +OVERLAP +OVERLAPPED +OVERLAPPING +OVERLAPS +OVERLARGE +OVERLATE +OVERLAVISH +OVERLAX +OVERLAY +OVERLAYING +OVERLAYS +OVERLEAF +OVERLEAP +OVERLEAPED +OVERLEAPING +OVERLEAPS +OVERLEAPT +OVERLEARN +OVERLEARNED +OVERLEARNING +OVERLEARNS +OVERLEARNT +OVERLEND +OVERLENDING +OVERLENDS +OVERLENGTH +OVERLENGTHEN +OVERLENGTHENED +OVERLENGTHENING +OVERLENGTHENS +OVERLENGTHS +OVERLENT +OVERLET +OVERLETS +OVERLETTING +OVERLEWD +OVERLIE +OVERLIES +OVERLIGHT +OVERLIGHTED +OVERLIGHTING +OVERLIGHTS +OVERLIT +OVERLITERAL +OVERLITERARY +OVERLIVE +OVERLIVED +OVERLIVES +OVERLIVING +OVERLOAD +OVERLOADED +OVERLOADING +OVERLOADS +OVERLONG +OVERLOOK +OVERLOOKED +OVERLOOKING +OVERLOOKS +OVERLORD +OVERLORDED +OVERLORDING +OVERLORDS +OVERLORDSHIP +OVERLORDSHIPS +OVERLOUD +OVERLOVE +OVERLOVED +OVERLOVES +OVERLOVING +OVERLUSH +OVERLY +OVERLYING +OVERMAN +OVERMANAGE +OVERMANAGED +OVERMANAGES +OVERMANAGING +OVERMANNED +OVERMANNERED +OVERMANNING +OVERMANS +OVERMANTEL +OVERMANTELS +OVERMANY +OVERMASTER +OVERMASTERED +OVERMASTERING +OVERMASTERS +OVERMATCH +OVERMATCHED +OVERMATCHES +OVERMATCHING +OVERMATURE +OVERMATURITIES +OVERMATURITY +OVERMEDICATE +OVERMEDICATED +OVERMEDICATES +OVERMEDICATING +OVERMEDICATION +OVERMEDICATIONS +OVERMEEK +OVERMELT +OVERMELTED +OVERMELTING +OVERMELTS +OVERMEN +OVERMIGHTY +OVERMILD +OVERMILK +OVERMILKED +OVERMILKING +OVERMILKS +OVERMINE +OVERMINED +OVERMINES +OVERMINING +OVERMIX +OVERMIXED +OVERMIXES +OVERMIXING +OVERMODEST +OVERMODESTLY +OVERMUCH +OVERMUCHES +OVERMUSCLED +OVERNEAR +OVERNEAT +OVERNEW +OVERNICE +OVERNIGHT +OVERNIGHTED +OVERNIGHTER +OVERNIGHTERS +OVERNIGHTING +OVERNIGHTS +OVERNOURISH +OVERNOURISHED +OVERNOURISHES +OVERNOURISHING +OVERNUTRITION +OVERNUTRITIONS +OVEROBVIOUS +OVEROPERATE +OVEROPERATED +OVEROPERATES +OVEROPERATING +OVEROPINIONATED +OVEROPTIMISM +OVEROPTIMISMS +OVEROPTIMIST +OVEROPTIMISTIC +OVEROPTIMISTS +OVERORCHESTRATE +OVERORGANIZE +OVERORGANIZED +OVERORGANIZES +OVERORGANIZING +OVERORNAMENT +OVERORNAMENTED +OVERORNAMENTING +OVERORNAMENTS +OVERPACK +OVERPACKAGE +OVERPACKAGED +OVERPACKAGES +OVERPACKAGING +OVERPACKED +OVERPACKING +OVERPACKS +OVERPAID +OVERPARTICULAR +OVERPASS +OVERPASSED +OVERPASSES +OVERPASSING +OVERPAST +OVERPAY +OVERPAYING +OVERPAYMENT +OVERPAYMENTS +OVERPAYS +OVERPEDAL +OVERPEDALED +OVERPEDALING +OVERPEDALLED +OVERPEDALLING +OVERPEDALS +OVERPEOPLE +OVERPEOPLED +OVERPEOPLES +OVERPEOPLING +OVERPERSUADE +OVERPERSUADED +OVERPERSUADES +OVERPERSUADING +OVERPERSUASION +OVERPERSUASIONS +OVERPERT +OVERPLAID +OVERPLAIDED +OVERPLAIDS +OVERPLAN +OVERPLANNED +OVERPLANNING +OVERPLANS +OVERPLANT +OVERPLANTED +OVERPLANTING +OVERPLANTS +OVERPLAY +OVERPLAYED +OVERPLAYING +OVERPLAYS +OVERPLIED +OVERPLIES +OVERPLOT +OVERPLOTS +OVERPLOTTED +OVERPLOTTING +OVERPLUS +OVERPLUSES +OVERPLY +OVERPLYING +OVERPOPULATE +OVERPOPULATED +OVERPOPULATES +OVERPOPULATING +OVERPOPULATION +OVERPOPULATIONS +OVERPOTENT +OVERPOWER +OVERPOWERED +OVERPOWERING +OVERPOWERINGLY +OVERPOWERS +OVERPRAISE +OVERPRAISED +OVERPRAISES +OVERPRAISING +OVERPRECISE +OVERPRESCRIBE +OVERPRESCRIBED +OVERPRESCRIBES +OVERPRESCRIBING +OVERPRESSURE +OVERPRESSURES +OVERPRICE +OVERPRICED +OVERPRICES +OVERPRICING +OVERPRINT +OVERPRINTED +OVERPRINTING +OVERPRINTS +OVERPRIVILEGED +OVERPRIZE +OVERPRIZED +OVERPRIZES +OVERPRIZING +OVERPROCESS +OVERPROCESSED +OVERPROCESSES +OVERPROCESSING +OVERPRODUCE +OVERPRODUCED +OVERPRODUCES +OVERPRODUCING +OVERPRODUCTION +OVERPRODUCTIONS +OVERPROGRAM +OVERPROGRAMED +OVERPROGRAMING +OVERPROGRAMMED +OVERPROGRAMMING +OVERPROGRAMS +OVERPROMISE +OVERPROMISED +OVERPROMISES +OVERPROMISING +OVERPROMOTE +OVERPROMOTED +OVERPROMOTES +OVERPROMOTING +OVERPROOF +OVERPROPORTION +OVERPROPORTIONS +OVERPROTECT +OVERPROTECTED +OVERPROTECTING +OVERPROTECTION +OVERPROTECTIONS +OVERPROTECTIVE +OVERPROTECTS +OVERPROUD +OVERPUMP +OVERPUMPED +OVERPUMPING +OVERPUMPS +OVERQUALIFIED +OVERQUICK +OVERRAN +OVERRANK +OVERRASH +OVERRATE +OVERRATED +OVERRATES +OVERRATING +OVERREACH +OVERREACHED +OVERREACHER +OVERREACHERS +OVERREACHES +OVERREACHING +OVERREACT +OVERREACTED +OVERREACTING +OVERREACTION +OVERREACTIONS +OVERREACTS +OVERREFINED +OVERREFINEMENT +OVERREFINEMENTS +OVERREGULATE +OVERREGULATED +OVERREGULATES +OVERREGULATING +OVERREGULATION +OVERREGULATIONS +OVERRELIANCE +OVERRELIANCES +OVERREPORT +OVERREPORTED +OVERREPORTING +OVERREPORTS +OVERREPRESENTED +OVERRESPOND +OVERRESPONDED +OVERRESPONDING +OVERRESPONDS +OVERRICH +OVERRIDDEN +OVERRIDE +OVERRIDES +OVERRIDING +OVERRIFE +OVERRIGID +OVERRIPE +OVERROAST +OVERROASTED +OVERROASTING +OVERROASTS +OVERRODE +OVERRUDE +OVERRUFF +OVERRUFFED +OVERRUFFING +OVERRUFFS +OVERRULE +OVERRULED +OVERRULES +OVERRULING +OVERRUN +OVERRUNNING +OVERRUNS +OVERS +OVERSAD +OVERSALE +OVERSALES +OVERSALT +OVERSALTED +OVERSALTING +OVERSALTS +OVERSANGUINE +OVERSATURATE +OVERSATURATED +OVERSATURATES +OVERSATURATING +OVERSATURATION +OVERSATURATIONS +OVERSAUCE +OVERSAUCED +OVERSAUCES +OVERSAUCING +OVERSAVE +OVERSAVED +OVERSAVES +OVERSAVING +OVERSAW +OVERSCALE +OVERSCALED +OVERSCORE +OVERSCORED +OVERSCORES +OVERSCORING +OVERSCRUPULOUS +OVERSEA +OVERSEAS +OVERSECRETION +OVERSECRETIONS +OVERSEE +OVERSEED +OVERSEEDED +OVERSEEDING +OVERSEEDS +OVERSEEING +OVERSEEN +OVERSEER +OVERSEERS +OVERSEES +OVERSELL +OVERSELLING +OVERSELLS +OVERSENSITIVE +OVERSENSITIVITY +OVERSERIOUS +OVERSERIOUSLY +OVERSERVICE +OVERSERVICED +OVERSERVICES +OVERSERVICING +OVERSET +OVERSETS +OVERSETTING +OVERSEW +OVERSEWED +OVERSEWING +OVERSEWN +OVERSEWS +OVERSEXED +OVERSHADE +OVERSHADED +OVERSHADES +OVERSHADING +OVERSHADOW +OVERSHADOWED +OVERSHADOWING +OVERSHADOWS +OVERSHARP +OVERSHIRT +OVERSHIRTS +OVERSHOE +OVERSHOES +OVERSHOOT +OVERSHOOTING +OVERSHOOTS +OVERSHOT +OVERSHOTS +OVERSICK +OVERSIDE +OVERSIDES +OVERSIGHT +OVERSIGHTS +OVERSIMPLE +OVERSIMPLIFIED +OVERSIMPLIFIES +OVERSIMPLIFY +OVERSIMPLIFYING +OVERSIMPLISTIC +OVERSIMPLY +OVERSIZE +OVERSIZED +OVERSIZES +OVERSKIRT +OVERSKIRTS +OVERSLAUGH +OVERSLAUGHED +OVERSLAUGHING +OVERSLAUGHS +OVERSLEEP +OVERSLEEPING +OVERSLEEPS +OVERSLEPT +OVERSLIP +OVERSLIPPED +OVERSLIPPING +OVERSLIPS +OVERSLIPT +OVERSLOW +OVERSMOKE +OVERSMOKED +OVERSMOKES +OVERSMOKING +OVERSOAK +OVERSOAKED +OVERSOAKING +OVERSOAKS +OVERSOFT +OVERSOLD +OVERSOLICITOUS +OVERSOON +OVERSOUL +OVERSOULS +OVERSPECIALIZE +OVERSPECIALIZED +OVERSPECIALIZES +OVERSPECULATE +OVERSPECULATED +OVERSPECULATES +OVERSPECULATING +OVERSPECULATION +OVERSPEND +OVERSPENDER +OVERSPENDERS +OVERSPENDING +OVERSPENDS +OVERSPENT +OVERSPICE +OVERSPICED +OVERSPICES +OVERSPICING +OVERSPILL +OVERSPILLED +OVERSPILLING +OVERSPILLS +OVERSPILT +OVERSPIN +OVERSPINS +OVERSPREAD +OVERSPREADING +OVERSPREADS +OVERSTABILITIES +OVERSTABILITY +OVERSTAFF +OVERSTAFFED +OVERSTAFFING +OVERSTAFFS +OVERSTATE +OVERSTATED +OVERSTATEMENT +OVERSTATEMENTS +OVERSTATES +OVERSTATING +OVERSTAY +OVERSTAYED +OVERSTAYING +OVERSTAYS +OVERSTEER +OVERSTEERED +OVERSTEERING +OVERSTEERS +OVERSTEP +OVERSTEPPED +OVERSTEPPING +OVERSTEPS +OVERSTIMULATE +OVERSTIMULATED +OVERSTIMULATES +OVERSTIMULATING +OVERSTIMULATION +OVERSTIR +OVERSTIRRED +OVERSTIRRING +OVERSTIRS +OVERSTOCK +OVERSTOCKED +OVERSTOCKING +OVERSTOCKS +OVERSTORIES +OVERSTORY +OVERSTRAIN +OVERSTRAINED +OVERSTRAINING +OVERSTRAINS +OVERSTRESS +OVERSTRESSED +OVERSTRESSES +OVERSTRESSING +OVERSTRETCH +OVERSTRETCHED +OVERSTRETCHES +OVERSTRETCHING +OVERSTREW +OVERSTREWED +OVERSTREWING +OVERSTREWN +OVERSTREWS +OVERSTRIDDEN +OVERSTRIDE +OVERSTRIDES +OVERSTRIDING +OVERSTRODE +OVERSTRUCTURED +OVERSTRUNG +OVERSTUDIED +OVERSTUDIES +OVERSTUDY +OVERSTUDYING +OVERSTUFF +OVERSTUFFED +OVERSTUFFING +OVERSTUFFS +OVERSUBSCRIBE +OVERSUBSCRIBED +OVERSUBSCRIBES +OVERSUBSCRIBING +OVERSUBTLE +OVERSUDS +OVERSUDSED +OVERSUDSES +OVERSUDSING +OVERSUP +OVERSUPPED +OVERSUPPING +OVERSUPPLIED +OVERSUPPLIES +OVERSUPPLY +OVERSUPPLYING +OVERSUPS +OVERSURE +OVERSUSPICIOUS +OVERSWEET +OVERSWEETEN +OVERSWEETENED +OVERSWEETENING +OVERSWEETENS +OVERSWEETNESS +OVERSWEETNESSES +OVERSWING +OVERSWINGING +OVERSWINGS +OVERSWUNG +OVERT +OVERTAKE +OVERTAKEN +OVERTAKES +OVERTAKING +OVERTALK +OVERTALKATIVE +OVERTALKED +OVERTALKING +OVERTALKS +OVERTAME +OVERTART +OVERTASK +OVERTASKED +OVERTASKING +OVERTASKS +OVERTAUGHT +OVERTAX +OVERTAXATION +OVERTAXATIONS +OVERTAXED +OVERTAXES +OVERTAXING +OVERTEACH +OVERTEACHES +OVERTEACHING +OVERTHICK +OVERTHIN +OVERTHINK +OVERTHINKING +OVERTHINKS +OVERTHOUGHT +OVERTHREW +OVERTHROW +OVERTHROWING +OVERTHROWN +OVERTHROWS +OVERTIGHT +OVERTIGHTEN +OVERTIGHTENED +OVERTIGHTENING +OVERTIGHTENS +OVERTIME +OVERTIMED +OVERTIMES +OVERTIMID +OVERTIMING +OVERTIP +OVERTIPPED +OVERTIPPING +OVERTIPS +OVERTIRE +OVERTIRED +OVERTIRES +OVERTIRING +OVERTLY +OVERTNESS +OVERTNESSES +OVERTOIL +OVERTOILED +OVERTOILING +OVERTOILS +OVERTONE +OVERTONES +OVERTOOK +OVERTOP +OVERTOPPED +OVERTOPPING +OVERTOPS +OVERTRADE +OVERTRADED +OVERTRADES +OVERTRADING +OVERTRAIN +OVERTRAINED +OVERTRAINING +OVERTRAINS +OVERTREAT +OVERTREATED +OVERTREATING +OVERTREATMENT +OVERTREATMENTS +OVERTREATS +OVERTRICK +OVERTRICKS +OVERTRIM +OVERTRIMMED +OVERTRIMMING +OVERTRIMS +OVERTRUMP +OVERTRUMPED +OVERTRUMPING +OVERTRUMPS +OVERTURE +OVERTURED +OVERTURES +OVERTURING +OVERTURN +OVERTURNED +OVERTURNING +OVERTURNS +OVERURGE +OVERURGED +OVERURGES +OVERURGING +OVERUSE +OVERUSED +OVERUSES +OVERUSING +OVERUTILIZATION +OVERUTILIZE +OVERUTILIZED +OVERUTILIZES +OVERUTILIZING +OVERVALUATION +OVERVALUATIONS +OVERVALUE +OVERVALUED +OVERVALUES +OVERVALUING +OVERVIEW +OVERVIEWS +OVERVIOLENT +OVERVIVID +OVERVOLTAGE +OVERVOLTAGES +OVERVOTE +OVERVOTED +OVERVOTES +OVERVOTING +OVERWARM +OVERWARMED +OVERWARMING +OVERWARMS +OVERWARY +OVERWATCH +OVERWATCHED +OVERWATCHES +OVERWATCHING +OVERWATER +OVERWATERED +OVERWATERING +OVERWATERS +OVERWEAK +OVERWEAR +OVERWEARIED +OVERWEARIES +OVERWEARING +OVERWEARS +OVERWEARY +OVERWEARYING +OVERWEEN +OVERWEENED +OVERWEENING +OVERWEENINGLY +OVERWEENS +OVERWEIGH +OVERWEIGHED +OVERWEIGHING +OVERWEIGHS +OVERWEIGHT +OVERWEIGHTED +OVERWEIGHTING +OVERWEIGHTS +OVERWET +OVERWETS +OVERWETTED +OVERWETTING +OVERWHELM +OVERWHELMED +OVERWHELMING +OVERWHELMINGLY +OVERWHELMS +OVERWIDE +OVERWILY +OVERWIND +OVERWINDING +OVERWINDS +OVERWINTER +OVERWINTERED +OVERWINTERING +OVERWINTERS +OVERWISE +OVERWITHHELD +OVERWITHHOLD +OVERWITHHOLDING +OVERWITHHOLDS +OVERWORD +OVERWORDS +OVERWORE +OVERWORK +OVERWORKED +OVERWORKING +OVERWORKS +OVERWORN +OVERWOUND +OVERWRITE +OVERWRITES +OVERWRITING +OVERWRITTEN +OVERWROTE +OVERWROUGHT +OVERZEAL +OVERZEALOUS +OVERZEALOUSNESS +OVERZEALS +OVIBOS +OVICIDAL +OVICIDE +OVICIDES +OVIDUCAL +OVIDUCT +OVIDUCTAL +OVIDUCTS +OVIFEROUS +OVIFORM +OVINE +OVINES +OVIPARA +OVIPARITIES +OVIPARITY +OVIPAROUS +OVIPOSIT +OVIPOSITED +OVIPOSITING +OVIPOSITION +OVIPOSITIONAL +OVIPOSITIONS +OVIPOSITOR +OVIPOSITORS +OVIPOSITS +OVIRAPTOR +OVIRAPTORS +OVISAC +OVISACS +OVOID +OVOIDAL +OVOIDALS +OVOIDS +OVOLI +OVOLO +OVOLOS +OVONIC +OVONICS +OVOTESTES +OVOTESTIS +OVOVIVIPAROUS +OVOVIVIPAROUSLY +OVULAR +OVULARY +OVULATE +OVULATED +OVULATES +OVULATING +OVULATION +OVULATIONS +OVULATORY +OVULE +OVULES +OVUM +OW +OWE +OWED +OWES +OWING +OWL +OWLET +OWLETS +OWLISH +OWLISHLY +OWLISHNESS +OWLISHNESSES +OWLLIKE +OWLS +OWN +OWNABLE +OWNED +OWNER +OWNERS +OWNERSHIP +OWNERSHIPS +OWNING +OWNS +OWSE +OWSEN +OX +OXACILLIN +OXACILLINS +OXALACETATE +OXALACETATES +OXALATE +OXALATED +OXALATES +OXALATING +OXALIC +OXALIS +OXALISES +OXALOACETATE +OXALOACETATES +OXAZEPAM +OXAZEPAMS +OXAZINE +OXAZINES +OXBLOOD +OXBLOODS +OXBOW +OXBOWS +OXCART +OXCARTS +OXEN +OXES +OXEYE +OXEYES +OXFORD +OXFORDS +OXHEART +OXHEARTS +OXID +OXIDABLE +OXIDANT +OXIDANTS +OXIDASE +OXIDASES +OXIDASIC +OXIDATE +OXIDATED +OXIDATES +OXIDATING +OXIDATION +OXIDATIONS +OXIDATIVE +OXIDATIVELY +OXIDE +OXIDES +OXIDIC +OXIDISE +OXIDISED +OXIDISER +OXIDISERS +OXIDISES +OXIDISING +OXIDIZABLE +OXIDIZE +OXIDIZED +OXIDIZER +OXIDIZERS +OXIDIZES +OXIDIZING +OXIDOREDUCTASE +OXIDOREDUCTASES +OXIDS +OXIM +OXIME +OXIMES +OXIMETER +OXIMETERS +OXIMETRIES +OXIMETRY +OXIMS +OXLIKE +OXLIP +OXLIPS +OXO +OXPECKER +OXPECKERS +OXTAIL +OXTAILS +OXTER +OXTERS +OXTONGUE +OXTONGUES +OXY +OXYACETYLENE +OXYACID +OXYACIDS +OXYCODONE +OXYCODONES +OXYGEN +OXYGENASE +OXYGENASES +OXYGENATE +OXYGENATED +OXYGENATES +OXYGENATING +OXYGENATION +OXYGENATIONS +OXYGENATOR +OXYGENATORS +OXYGENIC +OXYGENIZE +OXYGENIZED +OXYGENIZES +OXYGENIZING +OXYGENLESS +OXYGENOUS +OXYGENS +OXYHEMOGLOBIN +OXYHEMOGLOBINS +OXYHYDROGEN +OXYMORA +OXYMORON +OXYMORONIC +OXYMORONICALLY +OXYMORONS +OXYPHENBUTAZONE +OXYPHIL +OXYPHILE +OXYPHILES +OXYPHILIC +OXYPHILS +OXYSALT +OXYSALTS +OXYSOME +OXYSOMES +OXYTETRACYCLINE +OXYTOCIC +OXYTOCICS +OXYTOCIN +OXYTOCINS +OXYTONE +OXYTONES +OXYURIASES +OXYURIASIS +OY +OYER +OYERS +OYES +OYESSES +OYEZ +OYEZES +OYSTER +OYSTERCATCHER +OYSTERCATCHERS +OYSTERED +OYSTERER +OYSTERERS +OYSTERING +OYSTERINGS +OYSTERMAN +OYSTERMEN +OYSTERS +OZALID +OZALIDS +OZOCERITE +OZOCERITES +OZOKERITE +OZOKERITES +OZONATE +OZONATED +OZONATES +OZONATING +OZONATION +OZONATIONS +OZONE +OZONES +OZONIC +OZONIDE +OZONIDES +OZONISE +OZONISED +OZONISES +OZONISING +OZONIZATION +OZONIZATIONS +OZONIZE +OZONIZED +OZONIZER +OZONIZERS +OZONIZES +OZONIZING +OZONOSPHERE +OZONOSPHERES +OZONOUS +PA +PABLUM +PABLUMS +PABULAR +PABULUM +PABULUMS +PAC +PACA +PACAS +PACE +PACED +PACEMAKER +PACEMAKERS +PACEMAKING +PACEMAKINGS +PACER +PACERS +PACES +PACESETTER +PACESETTERS +PACESETTING +PACEY +PACHA +PACHADOM +PACHADOMS +PACHALIC +PACHALICS +PACHAS +PACHINKO +PACHINKOS +PACHISI +PACHISIS +PACHOULI +PACHOULIS +PACHUCO +PACHUCOS +PACHYDERM +PACHYDERMATOUS +PACHYDERMS +PACHYSANDRA +PACHYSANDRAS +PACHYTENE +PACHYTENES +PACIER +PACIEST +PACIFIABLE +PACIFIC +PACIFICAL +PACIFICALLY +PACIFICATION +PACIFICATIONS +PACIFICATOR +PACIFICATORS +PACIFICISM +PACIFICISMS +PACIFICIST +PACIFICISTS +PACIFIED +PACIFIER +PACIFIERS +PACIFIES +PACIFISM +PACIFISMS +PACIFIST +PACIFISTIC +PACIFISTICALLY +PACIFISTS +PACIFY +PACIFYING +PACING +PACK +PACKABILITIES +PACKABILITY +PACKABLE +PACKAGE +PACKAGED +PACKAGER +PACKAGERS +PACKAGES +PACKAGING +PACKAGINGS +PACKBOARD +PACKBOARDS +PACKED +PACKER +PACKERS +PACKET +PACKETED +PACKETING +PACKETS +PACKHORSE +PACKHORSES +PACKING +PACKINGHOUSE +PACKINGHOUSES +PACKINGS +PACKLY +PACKMAN +PACKMEN +PACKNESS +PACKNESSES +PACKS +PACKSACK +PACKSACKS +PACKSADDLE +PACKSADDLES +PACKTHREAD +PACKTHREADS +PACKWAX +PACKWAXES +PACLITAXEL +PACLITAXELS +PACS +PACT +PACTION +PACTIONS +PACTS +PACY +PAD +PADAUK +PADAUKS +PADDED +PADDER +PADDERS +PADDIES +PADDING +PADDINGS +PADDLE +PADDLEBALL +PADDLEBALLS +PADDLEBOARD +PADDLEBOARDS +PADDLEBOAT +PADDLEBOATS +PADDLED +PADDLEFISH +PADDLEFISHES +PADDLER +PADDLERS +PADDLES +PADDLING +PADDLINGS +PADDOCK +PADDOCKED +PADDOCKING +PADDOCKS +PADDY +PADDYWACK +PADDYWACKED +PADDYWACKING +PADDYWACKS +PADI +PADIS +PADISHAH +PADISHAHS +PADLE +PADLES +PADLOCK +PADLOCKED +PADLOCKING +PADLOCKS +PADNAG +PADNAGS +PADOUK +PADOUKS +PADRE +PADRES +PADRI +PADRONE +PADRONES +PADRONI +PADRONISM +PADRONISMS +PADS +PADSHAH +PADSHAHS +PADUASOY +PADUASOYS +PAEAN +PAEANISM +PAEANISMS +PAEANS +PAEDIATRIC +PAEDIATRICIAN +PAEDIATRICIANS +PAEDIATRICS +PAEDOGENESES +PAEDOGENESIS +PAEDOGENETIC +PAEDOGENIC +PAEDOMORPHIC +PAEDOMORPHISM +PAEDOMORPHISMS +PAEDOMORPHOSES +PAEDOMORPHOSIS +PAELLA +PAELLAS +PAEON +PAEONS +PAESAN +PAESANI +PAESANO +PAESANOS +PAESANS +PAGAN +PAGANDOM +PAGANDOMS +PAGANISE +PAGANISED +PAGANISES +PAGANISH +PAGANISING +PAGANISM +PAGANISMS +PAGANIST +PAGANISTS +PAGANIZE +PAGANIZED +PAGANIZER +PAGANIZERS +PAGANIZES +PAGANIZING +PAGANS +PAGE +PAGEANT +PAGEANTRIES +PAGEANTRY +PAGEANTS +PAGEBOY +PAGEBOYS +PAGED +PAGEFUL +PAGEFULS +PAGER +PAGERS +PAGES +PAGINAL +PAGINATE +PAGINATED +PAGINATES +PAGINATING +PAGINATION +PAGINATIONS +PAGING +PAGINGS +PAGOD +PAGODA +PAGODAS +PAGODS +PAGURIAN +PAGURIANS +PAGURID +PAGURIDS +PAH +PAHLAVI +PAHLAVIS +PAHOEHOE +PAHOEHOES +PAID +PAIK +PAIKED +PAIKING +PAIKS +PAIL +PAILFUL +PAILFULS +PAILLARD +PAILLARDS +PAILLASSE +PAILLASSES +PAILLETTE +PAILLETTES +PAILS +PAILSFUL +PAIN +PAINCH +PAINCHES +PAINED +PAINFUL +PAINFULLER +PAINFULLEST +PAINFULLY +PAINFULNESS +PAINFULNESSES +PAINING +PAINKILLER +PAINKILLERS +PAINKILLING +PAINLESS +PAINLESSLY +PAINLESSNESS +PAINLESSNESSES +PAINS +PAINSTAKING +PAINSTAKINGLY +PAINSTAKINGS +PAINT +PAINTABLE +PAINTBALL +PAINTBALLS +PAINTBRUSH +PAINTBRUSHES +PAINTED +PAINTER +PAINTERLINESS +PAINTERLINESSES +PAINTERLY +PAINTERS +PAINTIER +PAINTIEST +PAINTING +PAINTINGS +PAINTS +PAINTWORK +PAINTWORKS +PAINTY +PAIR +PAIRED +PAIRING +PAIRINGS +PAIRS +PAISA +PAISAN +PAISANA +PAISANAS +PAISANO +PAISANOS +PAISANS +PAISAS +PAISE +PAISLEY +PAISLEYS +PAJAMA +PAJAMAED +PAJAMAS +PAKEHA +PAKEHAS +PAKORA +PAKORAS +PAL +PALABRA +PALABRAS +PALACE +PALACED +PALACES +PALADIN +PALADINS +PALAESTRA +PALAESTRAE +PALAESTRAS +PALAIS +PALANKEEN +PALANKEENS +PALANQUIN +PALANQUINS +PALAPA +PALAPAS +PALATABILITIES +PALATABILITY +PALATABLE +PALATABLENESS +PALATABLENESSES +PALATABLY +PALATAL +PALATALIZATION +PALATALIZATIONS +PALATALIZE +PALATALIZED +PALATALIZES +PALATALIZING +PALATALLY +PALATALS +PALATE +PALATES +PALATIAL +PALATIALLY +PALATIALNESS +PALATIALNESSES +PALATINATE +PALATINATES +PALATINE +PALATINES +PALAVER +PALAVERED +PALAVERER +PALAVERERS +PALAVERING +PALAVERS +PALAZZI +PALAZZO +PALAZZOS +PALE +PALEA +PALEAE +PALEAL +PALEATE +PALED +PALEFACE +PALEFACES +PALELY +PALENESS +PALENESSES +PALEOBIOLOGIC +PALEOBIOLOGICAL +PALEOBIOLOGIES +PALEOBIOLOGIST +PALEOBIOLOGISTS +PALEOBIOLOGY +PALEOBOTANIC +PALEOBOTANICAL +PALEOBOTANIES +PALEOBOTANIST +PALEOBOTANISTS +PALEOBOTANY +PALEOCENE +PALEOECOLOGIC +PALEOECOLOGICAL +PALEOECOLOGIES +PALEOECOLOGIST +PALEOECOLOGISTS +PALEOECOLOGY +PALEOGENE +PALEOGEOGRAPHIC +PALEOGEOGRAPHY +PALEOGRAPHER +PALEOGRAPHERS +PALEOGRAPHIC +PALEOGRAPHICAL +PALEOGRAPHIES +PALEOGRAPHY +PALEOLITH +PALEOLITHS +PALEOLOGIES +PALEOLOGY +PALEOMAGNETIC +PALEOMAGNETISM +PALEOMAGNETISMS +PALEOMAGNETIST +PALEOMAGNETISTS +PALEONTOLOGIC +PALEONTOLOGICAL +PALEONTOLOGIES +PALEONTOLOGIST +PALEONTOLOGISTS +PALEONTOLOGY +PALEOPATHOLOGY +PALEOSOL +PALEOSOLS +PALEOZOIC +PALEOZOOLOGICAL +PALEOZOOLOGIES +PALEOZOOLOGIST +PALEOZOOLOGISTS +PALEOZOOLOGY +PALER +PALES +PALEST +PALESTRA +PALESTRAE +PALESTRAL +PALESTRAS +PALET +PALETOT +PALETOTS +PALETS +PALETTE +PALETTES +PALEWAYS +PALEWISE +PALFREY +PALFREYS +PALIER +PALIEST +PALIKAR +PALIKARS +PALIMONIES +PALIMONY +PALIMPSEST +PALIMPSESTS +PALINDROME +PALINDROMES +PALINDROMIC +PALINDROMIST +PALINDROMISTS +PALING +PALINGENESES +PALINGENESIS +PALINGENETIC +PALINGS +PALINODE +PALINODES +PALISADE +PALISADED +PALISADES +PALISADING +PALISH +PALL +PALLADIA +PALLADIC +PALLADIUM +PALLADIUMS +PALLADOUS +PALLBEARER +PALLBEARERS +PALLED +PALLET +PALLETED +PALLETING +PALLETISE +PALLETISED +PALLETISES +PALLETISING +PALLETIZATION +PALLETIZATIONS +PALLETIZE +PALLETIZED +PALLETIZER +PALLETIZERS +PALLETIZES +PALLETIZING +PALLETS +PALLETTE +PALLETTES +PALLIA +PALLIAL +PALLIASSE +PALLIASSES +PALLIATE +PALLIATED +PALLIATES +PALLIATING +PALLIATION +PALLIATIONS +PALLIATIVE +PALLIATIVELY +PALLIATIVES +PALLIATOR +PALLIATORS +PALLID +PALLIDLY +PALLIDNESS +PALLIDNESSES +PALLIER +PALLIEST +PALLING +PALLIUM +PALLIUMS +PALLOR +PALLORS +PALLS +PALLY +PALM +PALMAR +PALMARY +PALMATE +PALMATED +PALMATELY +PALMATION +PALMATIONS +PALMED +PALMER +PALMERS +PALMERWORM +PALMERWORMS +PALMETTE +PALMETTES +PALMETTO +PALMETTOES +PALMETTOS +PALMFUL +PALMFULS +PALMIER +PALMIEST +PALMING +PALMIST +PALMISTER +PALMISTERS +PALMISTRIES +PALMISTRY +PALMISTS +PALMITATE +PALMITATES +PALMITIN +PALMITINS +PALMLIKE +PALMS +PALMTOP +PALMTOPS +PALMY +PALMYRA +PALMYRAS +PALOMINO +PALOMINOS +PALOOKA +PALOOKAS +PALOVERDE +PALOVERDES +PALP +PALPABILITIES +PALPABILITY +PALPABLE +PALPABLY +PALPAL +PALPATE +PALPATED +PALPATES +PALPATING +PALPATION +PALPATIONS +PALPATOR +PALPATORS +PALPATORY +PALPEBRA +PALPEBRAE +PALPEBRAL +PALPEBRAS +PALPED +PALPI +PALPING +PALPITANT +PALPITATE +PALPITATED +PALPITATES +PALPITATING +PALPITATION +PALPITATIONS +PALPS +PALPUS +PALS +PALSGRAVE +PALSGRAVES +PALSHIP +PALSHIPS +PALSIED +PALSIES +PALSY +PALSYING +PALSYLIKE +PALTER +PALTERED +PALTERER +PALTERERS +PALTERING +PALTERS +PALTRIER +PALTRIEST +PALTRILY +PALTRINESS +PALTRINESSES +PALTRY +PALUDAL +PALUDISM +PALUDISMS +PALY +PALYNOLOGIC +PALYNOLOGICAL +PALYNOLOGICALLY +PALYNOLOGIES +PALYNOLOGIST +PALYNOLOGISTS +PALYNOLOGY +PAM +PAMPA +PAMPAS +PAMPEAN +PAMPEANS +PAMPER +PAMPERED +PAMPERER +PAMPERERS +PAMPERING +PAMPERO +PAMPEROS +PAMPERS +PAMPHLET +PAMPHLETEER +PAMPHLETEERED +PAMPHLETEERING +PAMPHLETEERS +PAMPHLETS +PAMS +PAN +PANACEA +PANACEAN +PANACEAS +PANACHE +PANACHES +PANADA +PANADAS +PANAMA +PANAMAS +PANATELA +PANATELAS +PANATELLA +PANATELLAS +PANBROIL +PANBROILED +PANBROILING +PANBROILS +PANCAKE +PANCAKED +PANCAKES +PANCAKING +PANCETTA +PANCETTAS +PANCHAX +PANCHAXES +PANCHROMATIC +PANCRATIA +PANCRATIC +PANCRATIUM +PANCRATIUMS +PANCREAS +PANCREASES +PANCREATECTOMY +PANCREATIC +PANCREATIN +PANCREATINS +PANCREATITIDES +PANCREATITIS +PANCREOZYMIN +PANCREOZYMINS +PANCYTOPENIA +PANCYTOPENIAS +PANDA +PANDANI +PANDANUS +PANDANUSES +PANDAS +PANDECT +PANDECTS +PANDEMIC +PANDEMICS +PANDEMONIUM +PANDEMONIUMS +PANDER +PANDERED +PANDERER +PANDERERS +PANDERING +PANDERS +PANDIED +PANDIES +PANDIT +PANDITS +PANDOOR +PANDOORS +PANDORA +PANDORAS +PANDORE +PANDORES +PANDOUR +PANDOURS +PANDOWDIES +PANDOWDY +PANDURA +PANDURAS +PANDURATE +PANDY +PANDYING +PANE +PANED +PANEGYRIC +PANEGYRICAL +PANEGYRICALLY +PANEGYRICS +PANEGYRIST +PANEGYRISTS +PANEL +PANELED +PANELESS +PANELING +PANELINGS +PANELIST +PANELISTS +PANELIZED +PANELLED +PANELLING +PANELLINGS +PANELS +PANES +PANETELA +PANETELAS +PANETELLA +PANETELLAS +PANETTONE +PANETTONES +PANETTONI +PANFISH +PANFISHES +PANFRIED +PANFRIES +PANFRY +PANFRYING +PANFUL +PANFULS +PANG +PANGA +PANGAS +PANGED +PANGEN +PANGENE +PANGENES +PANGENESES +PANGENESIS +PANGENETIC +PANGENS +PANGING +PANGOLIN +PANGOLINS +PANGRAM +PANGRAMS +PANGS +PANHANDLE +PANHANDLED +PANHANDLER +PANHANDLERS +PANHANDLES +PANHANDLING +PANHUMAN +PANIC +PANICALLY +PANICKED +PANICKIER +PANICKIEST +PANICKING +PANICKY +PANICLE +PANICLED +PANICLES +PANICS +PANICULATE +PANICUM +PANICUMS +PANIER +PANIERS +PANINI +PANINO +PANJANDRA +PANJANDRUM +PANJANDRUMS +PANLEUKOPENIA +PANLEUKOPENIAS +PANMICTIC +PANMIXES +PANMIXIA +PANMIXIAS +PANMIXIS +PANNE +PANNED +PANNER +PANNERS +PANNES +PANNIER +PANNIERED +PANNIERS +PANNIKIN +PANNIKINS +PANNING +PANOCHA +PANOCHAS +PANOCHE +PANOCHES +PANOPLIED +PANOPLIES +PANOPLY +PANOPTIC +PANORAMA +PANORAMAS +PANORAMIC +PANORAMICALLY +PANPIPE +PANPIPES +PANS +PANSEXUAL +PANSEXUALITIES +PANSEXUALITY +PANSEXUALS +PANSIES +PANSOPHIC +PANSOPHIES +PANSOPHY +PANSY +PANT +PANTALET +PANTALETS +PANTALETTES +PANTALONE +PANTALONES +PANTALOON +PANTALOONS +PANTDRESS +PANTDRESSES +PANTECHNICON +PANTECHNICONS +PANTED +PANTHEISM +PANTHEISMS +PANTHEIST +PANTHEISTIC +PANTHEISTICAL +PANTHEISTICALLY +PANTHEISTS +PANTHEON +PANTHEONS +PANTHER +PANTHERS +PANTIE +PANTIES +PANTIHOSE +PANTILE +PANTILED +PANTILES +PANTING +PANTINGLY +PANTISOCRACIES +PANTISOCRACY +PANTISOCRATIC +PANTISOCRATICAL +PANTISOCRATIST +PANTISOCRATISTS +PANTO +PANTOFFLE +PANTOFFLES +PANTOFLE +PANTOFLES +PANTOGRAPH +PANTOGRAPHIC +PANTOGRAPHS +PANTOMIME +PANTOMIMED +PANTOMIMES +PANTOMIMIC +PANTOMIMING +PANTOMIMIST +PANTOMIMISTS +PANTOS +PANTOTHENATE +PANTOTHENATES +PANTOUM +PANTOUMS +PANTRIES +PANTROPIC +PANTROPICAL +PANTRY +PANTRYMAN +PANTRYMEN +PANTS +PANTSUIT +PANTSUITED +PANTSUITS +PANTY +PANTYHOSE +PANTYWAIST +PANTYWAISTS +PANZER +PANZERS +PAP +PAPA +PAPACIES +PAPACY +PAPADAM +PAPADAMS +PAPADOM +PAPADOMS +PAPADUM +PAPADUMS +PAPAIN +PAPAINS +PAPAL +PAPALLY +PAPARAZZI +PAPARAZZO +PAPAS +PAPAVERINE +PAPAVERINES +PAPAW +PAPAWS +PAPAYA +PAPAYAN +PAPAYAS +PAPER +PAPERBACK +PAPERBACKED +PAPERBACKS +PAPERBARK +PAPERBARKS +PAPERBOARD +PAPERBOARDS +PAPERBOUND +PAPERBOUNDS +PAPERBOY +PAPERBOYS +PAPERCLIP +PAPERCLIPS +PAPERED +PAPERER +PAPERERS +PAPERGIRL +PAPERGIRLS +PAPERHANGER +PAPERHANGERS +PAPERHANGING +PAPERHANGINGS +PAPERINESS +PAPERINESSES +PAPERING +PAPERLESS +PAPERMAKER +PAPERMAKERS +PAPERMAKING +PAPERMAKINGS +PAPERS +PAPERWEIGHT +PAPERWEIGHTS +PAPERWORK +PAPERWORKS +PAPERY +PAPETERIE +PAPETERIES +PAPHIAN +PAPHIANS +PAPILIONACEOUS +PAPILLA +PAPILLAE +PAPILLAR +PAPILLARY +PAPILLATE +PAPILLOMA +PAPILLOMAS +PAPILLOMATA +PAPILLOMATOUS +PAPILLOMAVIRUS +PAPILLON +PAPILLONS +PAPILLOSE +PAPILLOTE +PAPILLOTES +PAPISM +PAPISMS +PAPIST +PAPISTIC +PAPISTRIES +PAPISTRY +PAPISTS +PAPOOSE +PAPOOSES +PAPOVAVIRUS +PAPOVAVIRUSES +PAPPADAM +PAPPADAMS +PAPPI +PAPPIER +PAPPIES +PAPPIEST +PAPPOOSE +PAPPOOSES +PAPPOSE +PAPPOUS +PAPPUS +PAPPY +PAPRICA +PAPRICAS +PAPRIKA +PAPRIKAS +PAPS +PAPULA +PAPULAE +PAPULAR +PAPULE +PAPULES +PAPULOSE +PAPYRAL +PAPYRI +PAPYRIAN +PAPYRINE +PAPYROLOGIES +PAPYROLOGIST +PAPYROLOGISTS +PAPYROLOGY +PAPYRUS +PAPYRUSES +PAR +PARA +PARABIOSES +PARABIOSIS +PARABIOTIC +PARABIOTICALLY +PARABLAST +PARABLASTS +PARABLE +PARABLES +PARABOLA +PARABOLAS +PARABOLIC +PARABOLICALLY +PARABOLOID +PARABOLOIDAL +PARABOLOIDS +PARACHOR +PARACHORS +PARACHUTE +PARACHUTED +PARACHUTES +PARACHUTIC +PARACHUTING +PARACHUTIST +PARACHUTISTS +PARACLETE +PARACLETES +PARACRINE +PARADE +PARADED +PARADER +PARADERS +PARADES +PARADIDDLE +PARADIDDLES +PARADIGM +PARADIGMATIC +PARADIGMS +PARADING +PARADISAIC +PARADISAICAL +PARADISAICALLY +PARADISAL +PARADISE +PARADISES +PARADISIAC +PARADISIACAL +PARADISIACALLY +PARADISIAL +PARADISICAL +PARADOR +PARADORES +PARADORS +PARADOS +PARADOSES +PARADOX +PARADOXES +PARADOXICAL +PARADOXICALITY +PARADOXICALLY +PARADOXICALNESS +PARADROP +PARADROPPED +PARADROPPING +PARADROPS +PARAE +PARAESTHESIA +PARAESTHESIAS +PARAFFIN +PARAFFINE +PARAFFINED +PARAFFINES +PARAFFINIC +PARAFFINING +PARAFFINS +PARAFOIL +PARAFOILS +PARAFORM +PARAFORMS +PARAGENESES +PARAGENESIS +PARAGENETIC +PARAGENETICALLY +PARAGLIDE +PARAGLIDED +PARAGLIDES +PARAGLIDING +PARAGOGE +PARAGOGES +PARAGON +PARAGONED +PARAGONING +PARAGONS +PARAGRAPH +PARAGRAPHED +PARAGRAPHER +PARAGRAPHERS +PARAGRAPHIC +PARAGRAPHING +PARAGRAPHS +PARAINFLUENZA +PARAINFLUENZAS +PARAJOURNALISM +PARAJOURNALISMS +PARAKEET +PARAKEETS +PARAKITE +PARAKITES +PARALANGUAGE +PARALANGUAGES +PARALDEHYDE +PARALDEHYDES +PARALEGAL +PARALEGALS +PARALINGUISTIC +PARALINGUISTICS +PARALLACTIC +PARALLAX +PARALLAXES +PARALLEL +PARALLELED +PARALLELEPIPED +PARALLELEPIPEDS +PARALLELING +PARALLELISM +PARALLELISMS +PARALLELLED +PARALLELLING +PARALLELOGRAM +PARALLELOGRAMS +PARALLELS +PARALOGISM +PARALOGISMS +PARALYSE +PARALYSED +PARALYSES +PARALYSING +PARALYSIS +PARALYTIC +PARALYTICALLY +PARALYTICS +PARALYZATION +PARALYZATIONS +PARALYZE +PARALYZED +PARALYZER +PARALYZERS +PARALYZES +PARALYZING +PARALYZINGLY +PARAMAGNET +PARAMAGNETIC +PARAMAGNETISM +PARAMAGNETISMS +PARAMAGNETS +PARAMATTA +PARAMATTAS +PARAMECIA +PARAMECIUM +PARAMECIUMS +PARAMEDIC +PARAMEDICAL +PARAMEDICALS +PARAMEDICS +PARAMENT +PARAMENTA +PARAMENTS +PARAMETER +PARAMETERIZE +PARAMETERIZED +PARAMETERIZES +PARAMETERIZING +PARAMETERS +PARAMETRIC +PARAMETRICALLY +PARAMETRIZATION +PARAMETRIZE +PARAMETRIZED +PARAMETRIZES +PARAMETRIZING +PARAMILITARY +PARAMNESIA +PARAMNESIAS +PARAMO +PARAMORPH +PARAMORPHS +PARAMOS +PARAMOUNT +PARAMOUNTCIES +PARAMOUNTCY +PARAMOUNTLY +PARAMOUNTS +PARAMOUR +PARAMOURS +PARAMYLUM +PARAMYLUMS +PARAMYXOVIRUS +PARAMYXOVIRUSES +PARANG +PARANGS +PARANOEA +PARANOEAS +PARANOIA +PARANOIAC +PARANOIACS +PARANOIAS +PARANOIC +PARANOICALLY +PARANOICS +PARANOID +PARANOIDAL +PARANOIDS +PARANORMAL +PARANORMALITIES +PARANORMALITY +PARANORMALLY +PARANORMALS +PARANYMPH +PARANYMPHS +PARAPET +PARAPETED +PARAPETS +PARAPH +PARAPHERNALIA +PARAPHRASABLE +PARAPHRASE +PARAPHRASED +PARAPHRASER +PARAPHRASERS +PARAPHRASES +PARAPHRASING +PARAPHRASTIC +PARAPHS +PARAPHYSES +PARAPHYSIS +PARAPLEGIA +PARAPLEGIAS +PARAPLEGIC +PARAPLEGICS +PARAPODIA +PARAPODIAL +PARAPODIUM +PARAPSYCHOLOGY +PARAQUAT +PARAQUATS +PARAQUET +PARAQUETS +PARAROSANILINE +PARAROSANILINES +PARAS +PARASAIL +PARASAILED +PARASAILING +PARASAILINGS +PARASAILS +PARASANG +PARASANGS +PARASEXUAL +PARASEXUALITIES +PARASEXUALITY +PARASHAH +PARASHAHS +PARASHIOTH +PARASHOT +PARASHOTH +PARASITE +PARASITES +PARASITIC +PARASITICAL +PARASITICALLY +PARASITICIDAL +PARASITICIDE +PARASITICIDES +PARASITISE +PARASITISED +PARASITISES +PARASITISING +PARASITISM +PARASITISMS +PARASITIZATION +PARASITIZATIONS +PARASITIZE +PARASITIZED +PARASITIZES +PARASITIZING +PARASITOID +PARASITOIDS +PARASITOLOGIC +PARASITOLOGICAL +PARASITOLOGIES +PARASITOLOGIST +PARASITOLOGISTS +PARASITOLOGY +PARASITOSES +PARASITOSIS +PARASOL +PARASOLED +PARASOLS +PARASYMPATHETIC +PARASYNTHESES +PARASYNTHESIS +PARASYNTHETIC +PARATACTIC +PARATACTICAL +PARATACTICALLY +PARATAXES +PARATAXIS +PARATHION +PARATHIONS +PARATHORMONE +PARATHORMONES +PARATHYROID +PARATHYROIDS +PARATROOP +PARATROOPER +PARATROOPERS +PARATROOPS +PARATYPHOID +PARATYPHOIDS +PARAVANE +PARAVANES +PARAWING +PARAWINGS +PARAZOAN +PARAZOANS +PARBAKE +PARBAKED +PARBAKES +PARBAKING +PARBOIL +PARBOILED +PARBOILING +PARBOILS +PARBUCKLE +PARBUCKLED +PARBUCKLES +PARBUCKLING +PARCEL +PARCELED +PARCELING +PARCELLED +PARCELLING +PARCELS +PARCENARIES +PARCENARY +PARCENER +PARCENERS +PARCH +PARCHED +PARCHEESI +PARCHEESIS +PARCHES +PARCHESI +PARCHESIS +PARCHING +PARCHISI +PARCHISIS +PARCHMENT +PARCHMENTS +PARCLOSE +PARCLOSES +PARD +PARDAH +PARDAHS +PARDEE +PARDI +PARDIE +PARDINE +PARDNER +PARDNERS +PARDON +PARDONABLE +PARDONABLENESS +PARDONABLY +PARDONED +PARDONER +PARDONERS +PARDONING +PARDONS +PARDS +PARDY +PARE +PARECISM +PARECISMS +PARED +PAREGORIC +PAREGORICS +PAREIRA +PAREIRAS +PARENCHYMA +PARENCHYMAL +PARENCHYMAS +PARENCHYMATOUS +PARENT +PARENTAGE +PARENTAGES +PARENTAL +PARENTALLY +PARENTED +PARENTERAL +PARENTERALLY +PARENTHESES +PARENTHESIS +PARENTHESIZE +PARENTHESIZED +PARENTHESIZES +PARENTHESIZING +PARENTHETIC +PARENTHETICAL +PARENTHETICALLY +PARENTHOOD +PARENTHOODS +PARENTING +PARENTINGS +PARENTLESS +PARENTS +PAREO +PAREOS +PARER +PARERGA +PARERGON +PARERS +PARES +PARESES +PARESIS +PARESTHESIA +PARESTHESIAS +PARESTHETIC +PARETIC +PARETICS +PAREU +PAREUS +PAREVE +PARFAIT +PARFAITS +PARFLECHE +PARFLECHES +PARFLESH +PARFLESHES +PARFOCAL +PARFOCALITIES +PARFOCALITY +PARFOCALIZE +PARFOCALIZED +PARFOCALIZES +PARFOCALIZING +PARGE +PARGED +PARGES +PARGET +PARGETED +PARGETING +PARGETINGS +PARGETS +PARGETTED +PARGETTING +PARGING +PARGINGS +PARGO +PARGOS +PARGYLINE +PARGYLINES +PARHELIA +PARHELIC +PARHELION +PARIAH +PARIAHS +PARIAN +PARIANS +PARIES +PARIETAL +PARIETALS +PARIETES +PARING +PARINGS +PARIS +PARISES +PARISH +PARISHES +PARISHIONER +PARISHIONERS +PARITIES +PARITY +PARK +PARKA +PARKADE +PARKADES +PARKAS +PARKED +PARKER +PARKERS +PARKETTE +PARKETTES +PARKING +PARKINGS +PARKINSONIAN +PARKINSONISM +PARKINSONISMS +PARKLAND +PARKLANDS +PARKLIKE +PARKS +PARKWAY +PARKWAYS +PARLANCE +PARLANCES +PARLANDO +PARLANTE +PARLAY +PARLAYED +PARLAYING +PARLAYS +PARLE +PARLED +PARLES +PARLEY +PARLEYED +PARLEYER +PARLEYERS +PARLEYING +PARLEYS +PARLIAMENT +PARLIAMENTARIAN +PARLIAMENTARY +PARLIAMENTS +PARLING +PARLOR +PARLORS +PARLOUR +PARLOURS +PARLOUS +PARLOUSLY +PARMESAN +PARMESANS +PARMIGIANA +PARMIGIANO +PAROCHIAL +PAROCHIALISM +PAROCHIALISMS +PAROCHIALLY +PARODIC +PARODICAL +PARODIED +PARODIES +PARODIST +PARODISTIC +PARODISTS +PARODOI +PARODOS +PARODY +PARODYING +PAROL +PAROLABLE +PAROLE +PAROLED +PAROLEE +PAROLEES +PAROLES +PAROLING +PAROLS +PARONOMASIA +PARONOMASIAS +PARONOMASTIC +PARONYM +PARONYMIC +PARONYMOUS +PARONYMS +PAROQUET +PAROQUETS +PAROSMIA +PAROSMIAS +PAROTIC +PAROTID +PAROTIDS +PAROTITIC +PAROTITIS +PAROTITISES +PAROTOID +PAROTOIDS +PAROUS +PAROXYSM +PAROXYSMAL +PAROXYSMS +PARQUET +PARQUETED +PARQUETING +PARQUETRIES +PARQUETRY +PARQUETS +PARR +PARRAKEET +PARRAKEETS +PARRAL +PARRALS +PARRED +PARREL +PARRELS +PARRICIDAL +PARRICIDE +PARRICIDES +PARRIDGE +PARRIDGES +PARRIED +PARRIER +PARRIERS +PARRIES +PARRING +PARRITCH +PARRITCHES +PARROKET +PARROKETS +PARROT +PARROTED +PARROTER +PARROTERS +PARROTING +PARROTS +PARROTY +PARRS +PARRY +PARRYING +PARS +PARSABLE +PARSE +PARSEC +PARSECS +PARSED +PARSER +PARSERS +PARSES +PARSIMONIES +PARSIMONIOUS +PARSIMONIOUSLY +PARSIMONY +PARSING +PARSLEY +PARSLEYED +PARSLEYS +PARSLIED +PARSNIP +PARSNIPS +PARSON +PARSONAGE +PARSONAGES +PARSONIC +PARSONISH +PARSONS +PART +PARTAKE +PARTAKEN +PARTAKER +PARTAKERS +PARTAKES +PARTAKING +PARTAN +PARTANS +PARTED +PARTERRE +PARTERRES +PARTHENOCARPIC +PARTHENOCARPIES +PARTHENOCARPY +PARTHENOGENESES +PARTHENOGENESIS +PARTHENOGENETIC +PARTIAL +PARTIALITIES +PARTIALITY +PARTIALLY +PARTIALS +PARTIBILITIES +PARTIBILITY +PARTIBLE +PARTICIPANT +PARTICIPANTS +PARTICIPATE +PARTICIPATED +PARTICIPATES +PARTICIPATING +PARTICIPATION +PARTICIPATIONAL +PARTICIPATIONS +PARTICIPATIVE +PARTICIPATOR +PARTICIPATORS +PARTICIPATORY +PARTICIPIAL +PARTICIPIALLY +PARTICIPLE +PARTICIPLES +PARTICLE +PARTICLEBOARD +PARTICLEBOARDS +PARTICLES +PARTICULAR +PARTICULARISE +PARTICULARISED +PARTICULARISES +PARTICULARISING +PARTICULARISM +PARTICULARISMS +PARTICULARIST +PARTICULARISTIC +PARTICULARISTS +PARTICULARITIES +PARTICULARITY +PARTICULARIZE +PARTICULARIZED +PARTICULARIZES +PARTICULARIZING +PARTICULARLY +PARTICULARS +PARTICULATE +PARTICULATES +PARTIED +PARTIER +PARTIERS +PARTIES +PARTING +PARTINGS +PARTISAN +PARTISANLY +PARTISANS +PARTISANSHIP +PARTISANSHIPS +PARTITA +PARTITAS +PARTITE +PARTITION +PARTITIONED +PARTITIONER +PARTITIONERS +PARTITIONING +PARTITIONIST +PARTITIONISTS +PARTITIONS +PARTITIVE +PARTITIVELY +PARTITIVES +PARTIZAN +PARTIZANS +PARTLET +PARTLETS +PARTLY +PARTNER +PARTNERED +PARTNERING +PARTNERLESS +PARTNERS +PARTNERSHIP +PARTNERSHIPS +PARTON +PARTONS +PARTOOK +PARTRIDGE +PARTRIDGEBERRY +PARTRIDGES +PARTS +PARTURIENT +PARTURIENTS +PARTURITION +PARTURITIONS +PARTWAY +PARTY +PARTYER +PARTYERS +PARTYGOER +PARTYGOERS +PARTYING +PARURA +PARURAS +PARURE +PARURES +PARVE +PARVENU +PARVENUE +PARVENUES +PARVENUS +PARVIS +PARVISE +PARVISES +PARVO +PARVOLIN +PARVOLINE +PARVOLINES +PARVOLINS +PARVOS +PARVOVIRUS +PARVOVIRUSES +PAS +PASCAL +PASCALS +PASCHAL +PASCHALS +PASE +PASEO +PASEOS +PASES +PASH +PASHA +PASHADOM +PASHADOMS +PASHALIC +PASHALICS +PASHALIK +PASHALIKS +PASHAS +PASHED +PASHES +PASHING +PASHMINA +PASHMINAS +PASODOBLE +PASODOBLES +PASQUEFLOWER +PASQUEFLOWERS +PASQUIL +PASQUILS +PASQUINADE +PASQUINADED +PASQUINADES +PASQUINADING +PASS +PASSABLE +PASSABLY +PASSACAGLIA +PASSACAGLIAS +PASSADE +PASSADES +PASSADO +PASSADOES +PASSADOS +PASSAGE +PASSAGED +PASSAGES +PASSAGEWAY +PASSAGEWAYS +PASSAGEWORK +PASSAGEWORKS +PASSAGING +PASSALONG +PASSALONGS +PASSANT +PASSBAND +PASSBANDS +PASSBOOK +PASSBOOKS +PASSE +PASSED +PASSEE +PASSEL +PASSELS +PASSEMENTERIE +PASSEMENTERIES +PASSENGER +PASSENGERS +PASSEPIED +PASSEPIEDS +PASSER +PASSERBY +PASSERINE +PASSERINES +PASSERS +PASSERSBY +PASSES +PASSIBLE +PASSIM +PASSING +PASSINGLY +PASSINGS +PASSION +PASSIONAL +PASSIONALS +PASSIONATE +PASSIONATELY +PASSIONATENESS +PASSIONFLOWER +PASSIONFLOWERS +PASSIONLESS +PASSIONS +PASSIVATE +PASSIVATED +PASSIVATES +PASSIVATING +PASSIVATION +PASSIVATIONS +PASSIVE +PASSIVELY +PASSIVENESS +PASSIVENESSES +PASSIVES +PASSIVISM +PASSIVISMS +PASSIVIST +PASSIVISTS +PASSIVITIES +PASSIVITY +PASSKEY +PASSKEYS +PASSLESS +PASSOVER +PASSOVERS +PASSPORT +PASSPORTS +PASSUS +PASSUSES +PASSWORD +PASSWORDS +PAST +PASTA +PASTALIKE +PASTAS +PASTE +PASTEBOARD +PASTEBOARDS +PASTED +PASTEDOWN +PASTEDOWNS +PASTEL +PASTELIST +PASTELISTS +PASTELLIST +PASTELLISTS +PASTELS +PASTER +PASTERN +PASTERNS +PASTERS +PASTES +PASTEUP +PASTEUPS +PASTEURISE +PASTEURISED +PASTEURISES +PASTEURISING +PASTEURIZATION +PASTEURIZATIONS +PASTEURIZE +PASTEURIZED +PASTEURIZER +PASTEURIZERS +PASTEURIZES +PASTEURIZING +PASTICCI +PASTICCIO +PASTICCIOS +PASTICHE +PASTICHES +PASTICHEUR +PASTICHEURS +PASTIE +PASTIER +PASTIES +PASTIEST +PASTIL +PASTILLE +PASTILLES +PASTILS +PASTIME +PASTIMES +PASTINA +PASTINAS +PASTINESS +PASTINESSES +PASTING +PASTIS +PASTISES +PASTITSIO +PASTITSIOS +PASTITSO +PASTITSOS +PASTLESS +PASTNESS +PASTNESSES +PASTOR +PASTORAL +PASTORALE +PASTORALES +PASTORALI +PASTORALISM +PASTORALISMS +PASTORALIST +PASTORALISTS +PASTORALLY +PASTORALNESS +PASTORALNESSES +PASTORALS +PASTORATE +PASTORATES +PASTORED +PASTORING +PASTORIUM +PASTORIUMS +PASTORLY +PASTORS +PASTORSHIP +PASTORSHIPS +PASTRAMI +PASTRAMIS +PASTRIES +PASTROMI +PASTROMIS +PASTRY +PASTS +PASTURAGE +PASTURAGES +PASTURAL +PASTURE +PASTURED +PASTURELAND +PASTURELANDS +PASTURER +PASTURERS +PASTURES +PASTURING +PASTY +PAT +PATACA +PATACAS +PATAGIA +PATAGIAL +PATAGIUM +PATAMAR +PATAMARS +PATCH +PATCHABLE +PATCHBOARD +PATCHBOARDS +PATCHED +PATCHER +PATCHERS +PATCHES +PATCHIER +PATCHIEST +PATCHILY +PATCHINESS +PATCHINESSES +PATCHING +PATCHOULI +PATCHOULIES +PATCHOULIS +PATCHOULY +PATCHWORK +PATCHWORKED +PATCHWORKING +PATCHWORKS +PATCHY +PATE +PATED +PATELLA +PATELLAE +PATELLAR +PATELLAS +PATELLATE +PATELLIFORM +PATEN +PATENCIES +PATENCY +PATENS +PATENT +PATENTABILITIES +PATENTABILITY +PATENTABLE +PATENTED +PATENTEE +PATENTEES +PATENTING +PATENTLY +PATENTOR +PATENTORS +PATENTS +PATER +PATERFAMILIAS +PATERNAL +PATERNALISM +PATERNALISMS +PATERNALIST +PATERNALISTIC +PATERNALISTS +PATERNALLY +PATERNITIES +PATERNITY +PATERNOSTER +PATERNOSTERS +PATERS +PATES +PATH +PATHBREAKING +PATHETIC +PATHETICAL +PATHETICALLY +PATHFINDER +PATHFINDERS +PATHFINDING +PATHFINDINGS +PATHLESS +PATHLESSNESS +PATHLESSNESSES +PATHOBIOLOGIES +PATHOBIOLOGY +PATHOGEN +PATHOGENE +PATHOGENES +PATHOGENESES +PATHOGENESIS +PATHOGENETIC +PATHOGENIC +PATHOGENICITIES +PATHOGENICITY +PATHOGENIES +PATHOGENS +PATHOGENY +PATHOGNOMONIC +PATHOLOGIC +PATHOLOGICAL +PATHOLOGICALLY +PATHOLOGIES +PATHOLOGIST +PATHOLOGISTS +PATHOLOGY +PATHOPHYSIOLOGY +PATHOS +PATHOSES +PATHS +PATHWAY +PATHWAYS +PATIENCE +PATIENCES +PATIENT +PATIENTER +PATIENTEST +PATIENTLY +PATIENTS +PATIN +PATINA +PATINAE +PATINAED +PATINAS +PATINATE +PATINATED +PATINATES +PATINATING +PATINATION +PATINATIONS +PATINE +PATINED +PATINES +PATINING +PATINIZE +PATINIZED +PATINIZES +PATINIZING +PATINS +PATIO +PATIOS +PATISSERIE +PATISSERIES +PATISSIER +PATISSIERS +PATLY +PATNESS +PATNESSES +PATOIS +PATOOTIE +PATOOTIES +PATRESFAMILIAS +PATRIARCH +PATRIARCHAL +PATRIARCHATE +PATRIARCHATES +PATRIARCHIES +PATRIARCHS +PATRIARCHY +PATRIATE +PATRIATED +PATRIATES +PATRIATING +PATRICIAN +PATRICIANS +PATRICIATE +PATRICIATES +PATRICIDAL +PATRICIDE +PATRICIDES +PATRILINEAL +PATRILINIES +PATRILINY +PATRIMONIAL +PATRIMONIES +PATRIMONY +PATRIOT +PATRIOTIC +PATRIOTICALLY +PATRIOTISM +PATRIOTISMS +PATRIOTS +PATRISTIC +PATRISTICAL +PATRISTICS +PATROL +PATROLLED +PATROLLER +PATROLLERS +PATROLLING +PATROLMAN +PATROLMEN +PATROLS +PATRON +PATRONAGE +PATRONAGES +PATRONAL +PATRONESS +PATRONESSES +PATRONISE +PATRONISED +PATRONISES +PATRONISING +PATRONIZATION +PATRONIZATIONS +PATRONIZE +PATRONIZED +PATRONIZES +PATRONIZING +PATRONIZINGLY +PATRONLY +PATRONS +PATRONYMIC +PATRONYMICS +PATROON +PATROONS +PATS +PATSIES +PATSY +PATTAMAR +PATTAMARS +PATTED +PATTEE +PATTEN +PATTENED +PATTENS +PATTER +PATTERED +PATTERER +PATTERERS +PATTERING +PATTERN +PATTERNED +PATTERNING +PATTERNINGS +PATTERNLESS +PATTERNS +PATTERS +PATTIE +PATTIES +PATTING +PATTY +PATTYPAN +PATTYPANS +PATULENT +PATULOUS +PATY +PATZER +PATZERS +PAUCITIES +PAUCITY +PAUGHTY +PAULDRON +PAULDRONS +PAULIN +PAULINS +PAULOWNIA +PAULOWNIAS +PAUNCH +PAUNCHED +PAUNCHES +PAUNCHIER +PAUNCHIEST +PAUNCHINESS +PAUNCHINESSES +PAUNCHY +PAUPER +PAUPERED +PAUPERING +PAUPERISM +PAUPERISMS +PAUPERIZE +PAUPERIZED +PAUPERIZES +PAUPERIZING +PAUPERS +PAUPIETTE +PAUPIETTES +PAUSAL +PAUSE +PAUSED +PAUSER +PAUSERS +PAUSES +PAUSING +PAVAN +PAVANE +PAVANES +PAVANS +PAVE +PAVED +PAVEED +PAVEMENT +PAVEMENTS +PAVER +PAVERS +PAVES +PAVID +PAVILION +PAVILIONED +PAVILIONING +PAVILIONS +PAVILLON +PAVILLONS +PAVIN +PAVING +PAVINGS +PAVINS +PAVIOR +PAVIORS +PAVIOUR +PAVIOURS +PAVIS +PAVISE +PAVISER +PAVISERS +PAVISES +PAVISSE +PAVISSES +PAVLOVA +PAVLOVAS +PAVONINE +PAW +PAWED +PAWER +PAWERS +PAWING +PAWKIER +PAWKIEST +PAWKILY +PAWKINESS +PAWKINESSES +PAWKY +PAWL +PAWLS +PAWN +PAWNABLE +PAWNAGE +PAWNAGES +PAWNBROKER +PAWNBROKERS +PAWNBROKING +PAWNBROKINGS +PAWNED +PAWNEE +PAWNEES +PAWNER +PAWNERS +PAWNING +PAWNOR +PAWNORS +PAWNS +PAWNSHOP +PAWNSHOPS +PAWPAW +PAWPAWS +PAWS +PAX +PAXES +PAXWAX +PAXWAXES +PAY +PAYABLE +PAYABLES +PAYABLY +PAYBACK +PAYBACKS +PAYCHECK +PAYCHECKS +PAYDAY +PAYDAYS +PAYED +PAYEE +PAYEES +PAYER +PAYERS +PAYGRADE +PAYGRADES +PAYING +PAYLOAD +PAYLOADS +PAYMASTER +PAYMASTERS +PAYMENT +PAYMENTS +PAYNIM +PAYNIMS +PAYOFF +PAYOFFS +PAYOLA +PAYOLAS +PAYOR +PAYORS +PAYOUT +PAYOUTS +PAYROLL +PAYROLLS +PAYS +PAZAZZ +PAZAZZES +PE +PEA +PEACE +PEACEABLE +PEACEABLENESS +PEACEABLENESSES +PEACEABLY +PEACED +PEACEFUL +PEACEFULLER +PEACEFULLEST +PEACEFULLY +PEACEFULNESS +PEACEFULNESSES +PEACEKEEPER +PEACEKEEPERS +PEACEKEEPING +PEACEKEEPINGS +PEACEMAKER +PEACEMAKERS +PEACEMAKING +PEACEMAKINGS +PEACENIK +PEACENIKS +PEACES +PEACETIME +PEACETIMES +PEACH +PEACHBLOW +PEACHBLOWS +PEACHED +PEACHER +PEACHERS +PEACHES +PEACHIER +PEACHIEST +PEACHING +PEACHY +PEACING +PEACOAT +PEACOATS +PEACOCK +PEACOCKED +PEACOCKIER +PEACOCKIEST +PEACOCKING +PEACOCKISH +PEACOCKS +PEACOCKY +PEAFOWL +PEAFOWLS +PEAG +PEAGE +PEAGES +PEAGS +PEAHEN +PEAHENS +PEAK +PEAKED +PEAKEDNESS +PEAKEDNESSES +PEAKIER +PEAKIEST +PEAKING +PEAKISH +PEAKLESS +PEAKLIKE +PEAKS +PEAKY +PEAL +PEALED +PEALIKE +PEALING +PEALS +PEAN +PEANS +PEANUT +PEANUTS +PEAR +PEARL +PEARLASH +PEARLASHES +PEARLED +PEARLER +PEARLERS +PEARLESCENCE +PEARLESCENCES +PEARLESCENT +PEARLIER +PEARLIEST +PEARLING +PEARLITE +PEARLITES +PEARLITIC +PEARLIZED +PEARLS +PEARLY +PEARMAIN +PEARMAINS +PEARS +PEART +PEARTER +PEARTEST +PEARTLY +PEARTNESS +PEARTNESSES +PEARWOOD +PEARWOODS +PEAS +PEASANT +PEASANTRIES +PEASANTRY +PEASANTS +PEASCOD +PEASCODS +PEASE +PEASECOD +PEASECODS +PEASEN +PEASES +PEASHOOTER +PEASHOOTERS +PEASOUPER +PEASOUPERS +PEAT +PEATIER +PEATIEST +PEATS +PEATY +PEAVEY +PEAVEYS +PEAVIES +PEAVY +PEBBLE +PEBBLED +PEBBLES +PEBBLIER +PEBBLIEST +PEBBLING +PEBBLY +PEC +PECAN +PECANS +PECCABLE +PECCADILLO +PECCADILLOES +PECCADILLOS +PECCANCIES +PECCANCY +PECCANT +PECCANTLY +PECCARIES +PECCARY +PECCAVI +PECCAVIS +PECH +PECHAN +PECHANS +PECHED +PECHING +PECHS +PECK +PECKED +PECKER +PECKERS +PECKERWOOD +PECKERWOODS +PECKIER +PECKIEST +PECKING +PECKISH +PECKISHLY +PECKS +PECKY +PECORINI +PECORINO +PECORINOS +PECS +PECTASE +PECTASES +PECTATE +PECTATES +PECTEN +PECTENS +PECTIC +PECTIN +PECTINACEOUS +PECTINATE +PECTINATION +PECTINATIONS +PECTINES +PECTINESTERASE +PECTINESTERASES +PECTINOUS +PECTINS +PECTIZE +PECTIZED +PECTIZES +PECTIZING +PECTORAL +PECTORALS +PECULATE +PECULATED +PECULATES +PECULATING +PECULATION +PECULATIONS +PECULATOR +PECULATORS +PECULIA +PECULIAR +PECULIARITIES +PECULIARITY +PECULIARLY +PECULIARS +PECULIUM +PECUNIARILY +PECUNIARY +PED +PEDAGOG +PEDAGOGIC +PEDAGOGICAL +PEDAGOGICALLY +PEDAGOGICS +PEDAGOGIES +PEDAGOGS +PEDAGOGUE +PEDAGOGUES +PEDAGOGY +PEDAL +PEDALED +PEDALER +PEDALERS +PEDALFER +PEDALFERS +PEDALIER +PEDALIERS +PEDALING +PEDALLED +PEDALLER +PEDALLERS +PEDALLING +PEDALO +PEDALOS +PEDALS +PEDANT +PEDANTIC +PEDANTICALLY +PEDANTRIES +PEDANTRY +PEDANTS +PEDATE +PEDATELY +PEDDLE +PEDDLED +PEDDLER +PEDDLERIES +PEDDLERS +PEDDLERY +PEDDLES +PEDDLING +PEDERAST +PEDERASTIC +PEDERASTIES +PEDERASTS +PEDERASTY +PEDES +PEDESTAL +PEDESTALED +PEDESTALING +PEDESTALLED +PEDESTALLING +PEDESTALS +PEDESTRIAN +PEDESTRIANISM +PEDESTRIANISMS +PEDESTRIANS +PEDIATRIC +PEDIATRICIAN +PEDIATRICIANS +PEDIATRICS +PEDIATRIST +PEDIATRISTS +PEDICAB +PEDICABS +PEDICEL +PEDICELLATE +PEDICELS +PEDICLE +PEDICLED +PEDICLES +PEDICULAR +PEDICULATE +PEDICULATES +PEDICULOSES +PEDICULOSIS +PEDICULOUS +PEDICURE +PEDICURED +PEDICURES +PEDICURING +PEDICURIST +PEDICURISTS +PEDIFORM +PEDIGREE +PEDIGREED +PEDIGREES +PEDIMENT +PEDIMENTAL +PEDIMENTED +PEDIMENTS +PEDIPALP +PEDIPALPS +PEDLAR +PEDLARIES +PEDLARS +PEDLARY +PEDLER +PEDLERIES +PEDLERS +PEDLERY +PEDOCAL +PEDOCALIC +PEDOCALS +PEDOGENESES +PEDOGENESIS +PEDOGENETIC +PEDOGENIC +PEDOLOGIC +PEDOLOGICAL +PEDOLOGIES +PEDOLOGIST +PEDOLOGISTS +PEDOLOGY +PEDOMETER +PEDOMETERS +PEDOPHILE +PEDOPHILES +PEDOPHILIA +PEDOPHILIAC +PEDOPHILIAS +PEDOPHILIC +PEDORTHIC +PEDRO +PEDROS +PEDS +PEDUNCLE +PEDUNCLED +PEDUNCLES +PEDUNCULAR +PEDUNCULATE +PEDUNCULATED +PEE +PEEBEEN +PEEBEENS +PEED +PEEING +PEEK +PEEKABOO +PEEKABOOS +PEEKAPOO +PEEKAPOOS +PEEKED +PEEKING +PEEKS +PEEL +PEELABLE +PEELED +PEELER +PEELERS +PEELING +PEELINGS +PEELS +PEEN +PEENED +PEENING +PEENS +PEEP +PEEPED +PEEPER +PEEPERS +PEEPHOLE +PEEPHOLES +PEEPING +PEEPS +PEEPSHOW +PEEPSHOWS +PEEPUL +PEEPULS +PEER +PEERAGE +PEERAGES +PEERED +PEERESS +PEERESSES +PEERIE +PEERIES +PEERING +PEERLESS +PEERS +PEERY +PEES +PEESWEEP +PEESWEEPS +PEETWEET +PEETWEETS +PEEVE +PEEVED +PEEVES +PEEVING +PEEVISH +PEEVISHLY +PEEVISHNESS +PEEVISHNESSES +PEEWEE +PEEWEES +PEEWIT +PEEWITS +PEG +PEGBOARD +PEGBOARDS +PEGBOX +PEGBOXES +PEGGED +PEGGING +PEGLEGGED +PEGLESS +PEGLIKE +PEGMATITE +PEGMATITES +PEGMATITIC +PEGS +PEH +PEHS +PEIGNOIR +PEIGNOIRS +PEIN +PEINED +PEINING +PEINS +PEISE +PEISED +PEISES +PEISING +PEJORATIVE +PEJORATIVELY +PEJORATIVES +PEKAN +PEKANS +PEKE +PEKEPOO +PEKEPOOS +PEKES +PEKIN +PEKINS +PEKOE +PEKOES +PELAGE +PELAGES +PELAGIAL +PELAGIC +PELAGICS +PELARGONIUM +PELARGONIUMS +PELE +PELECYPOD +PELECYPODS +PELERINE +PELERINES +PELES +PELF +PELFS +PELICAN +PELICANS +PELISSE +PELISSES +PELITE +PELITES +PELITIC +PELLAGRA +PELLAGRAS +PELLAGRIN +PELLAGRINS +PELLAGROUS +PELLET +PELLETAL +PELLETED +PELLETING +PELLETISE +PELLETISED +PELLETISES +PELLETISING +PELLETIZATION +PELLETIZATIONS +PELLETIZE +PELLETIZED +PELLETIZER +PELLETIZERS +PELLETIZES +PELLETIZING +PELLETS +PELLICLE +PELLICLES +PELLITORIES +PELLITORY +PELLMELL +PELLMELLS +PELLUCID +PELLUCIDLY +PELMET +PELMETS +PELON +PELORIA +PELORIAN +PELORIAS +PELORIC +PELORUS +PELORUSES +PELOTA +PELOTAS +PELOTON +PELOTONS +PELT +PELTAST +PELTASTS +PELTATE +PELTATELY +PELTATION +PELTATIONS +PELTED +PELTER +PELTERED +PELTERING +PELTERS +PELTING +PELTLESS +PELTRIES +PELTRY +PELTS +PELVES +PELVIC +PELVICS +PELVIS +PELVISES +PELYCOSAUR +PELYCOSAURS +PEMBINA +PEMBINAS +PEMICAN +PEMICANS +PEMMICAN +PEMMICANS +PEMOLINE +PEMOLINES +PEMPHIGUS +PEMPHIGUSES +PEMPHIX +PEMPHIXES +PEN +PENAL +PENALISE +PENALISED +PENALISES +PENALISING +PENALITIES +PENALITY +PENALIZATION +PENALIZATIONS +PENALIZE +PENALIZED +PENALIZES +PENALIZING +PENALLY +PENALTIES +PENALTY +PENANCE +PENANCED +PENANCES +PENANCING +PENANG +PENANGS +PENATES +PENCE +PENCEL +PENCELS +PENCHANT +PENCHANTS +PENCIL +PENCILED +PENCILER +PENCILERS +PENCILING +PENCILINGS +PENCILLED +PENCILLER +PENCILLERS +PENCILLING +PENCILLINGS +PENCILS +PEND +PENDANT +PENDANTLY +PENDANTS +PENDED +PENDENCIES +PENDENCY +PENDENT +PENDENTIVE +PENDENTIVES +PENDENTLY +PENDENTS +PENDING +PENDRAGON +PENDRAGONS +PENDS +PENDULAR +PENDULOUS +PENDULOUSNESS +PENDULOUSNESSES +PENDULUM +PENDULUMS +PENEPLAIN +PENEPLAINS +PENEPLANE +PENEPLANES +PENES +PENETRABILITIES +PENETRABILITY +PENETRABLE +PENETRALIA +PENETRANCE +PENETRANCES +PENETRANT +PENETRANTS +PENETRATE +PENETRATED +PENETRATES +PENETRATING +PENETRATINGLY +PENETRATION +PENETRATIONS +PENETRATIVE +PENETROMETER +PENETROMETERS +PENGO +PENGOS +PENGUIN +PENGUINS +PENHOLDER +PENHOLDERS +PENIAL +PENICIL +PENICILLAMINE +PENICILLAMINES +PENICILLATE +PENICILLIA +PENICILLIN +PENICILLINASE +PENICILLINASES +PENICILLINS +PENICILLIUM +PENICILS +PENILE +PENINSULA +PENINSULAR +PENINSULAS +PENIS +PENISES +PENITENCE +PENITENCES +PENITENT +PENITENTIAL +PENITENTIALLY +PENITENTIARIES +PENITENTIARY +PENITENTLY +PENITENTS +PENKNIFE +PENKNIVES +PENLIGHT +PENLIGHTS +PENLITE +PENLITES +PENMAN +PENMANSHIP +PENMANSHIPS +PENMEN +PENNA +PENNAE +PENNAME +PENNAMES +PENNANT +PENNANTS +PENNATE +PENNATED +PENNE +PENNED +PENNER +PENNERS +PENNI +PENNIA +PENNIES +PENNILESS +PENNINE +PENNINES +PENNING +PENNIS +PENNON +PENNONCEL +PENNONCELS +PENNONED +PENNONS +PENNY +PENNYCRESS +PENNYCRESSES +PENNYROYAL +PENNYROYALS +PENNYWEIGHT +PENNYWEIGHTS +PENNYWHISTLE +PENNYWHISTLES +PENNYWISE +PENNYWORT +PENNYWORTH +PENNYWORTHS +PENNYWORTS +PENOCHE +PENOCHES +PENOLOGICAL +PENOLOGIES +PENOLOGIST +PENOLOGISTS +PENOLOGY +PENONCEL +PENONCELS +PENPOINT +PENPOINTS +PENS +PENSEE +PENSEES +PENSIL +PENSILE +PENSILS +PENSION +PENSIONABLE +PENSIONARIES +PENSIONARY +PENSIONE +PENSIONED +PENSIONER +PENSIONERS +PENSIONES +PENSIONING +PENSIONLESS +PENSIONS +PENSIVE +PENSIVELY +PENSIVENESS +PENSIVENESSES +PENSTEMON +PENSTEMONS +PENSTER +PENSTERS +PENSTOCK +PENSTOCKS +PENT +PENTACLE +PENTACLES +PENTAD +PENTADS +PENTAGON +PENTAGONAL +PENTAGONALLY +PENTAGONALS +PENTAGONS +PENTAGRAM +PENTAGRAMS +PENTAHEDRA +PENTAHEDRAL +PENTAHEDRON +PENTAHEDRONS +PENTAMERIES +PENTAMEROUS +PENTAMERY +PENTAMETER +PENTAMETERS +PENTAMIDINE +PENTAMIDINES +PENTANE +PENTANES +PENTANGLE +PENTANGLES +PENTANOL +PENTANOLS +PENTAPEPTIDE +PENTAPEPTIDES +PENTAPLOID +PENTAPLOIDIES +PENTAPLOIDS +PENTAPLOIDY +PENTARCH +PENTARCHIES +PENTARCHS +PENTARCHY +PENTATHLETE +PENTATHLETES +PENTATHLON +PENTATHLONS +PENTATONIC +PENTAVALENT +PENTAZOCINE +PENTAZOCINES +PENTENE +PENTENES +PENTHOUSE +PENTHOUSES +PENTLANDITE +PENTLANDITES +PENTOBARBITAL +PENTOBARBITALS +PENTOBARBITONE +PENTOBARBITONES +PENTODE +PENTODES +PENTOMIC +PENTOSAN +PENTOSANS +PENTOSE +PENTOSES +PENTOSIDE +PENTOSIDES +PENTOXIDE +PENTOXIDES +PENTSTEMON +PENTSTEMONS +PENTYL +PENTYLS +PENUCHE +PENUCHES +PENUCHI +PENUCHIS +PENUCHLE +PENUCHLES +PENUCKLE +PENUCKLES +PENULT +PENULTIMA +PENULTIMAS +PENULTIMATE +PENULTIMATELY +PENULTS +PENUMBRA +PENUMBRAE +PENUMBRAL +PENUMBRAS +PENURIES +PENURIOUS +PENURIOUSLY +PENURIOUSNESS +PENURIOUSNESSES +PENURY +PEON +PEONAGE +PEONAGES +PEONES +PEONIES +PEONISM +PEONISMS +PEONS +PEONY +PEOPLE +PEOPLED +PEOPLEHOOD +PEOPLEHOODS +PEOPLELESS +PEOPLER +PEOPLERS +PEOPLES +PEOPLING +PEP +PEPEROMIA +PEPEROMIAS +PEPERONI +PEPERONIS +PEPINO +PEPINOS +PEPLA +PEPLOS +PEPLOSES +PEPLUM +PEPLUMED +PEPLUMS +PEPLUS +PEPLUSES +PEPO +PEPONIDA +PEPONIDAS +PEPONIUM +PEPONIUMS +PEPOS +PEPPED +PEPPER +PEPPERBOX +PEPPERBOXES +PEPPERCORN +PEPPERCORNS +PEPPERED +PEPPERER +PEPPERERS +PEPPERGRASS +PEPPERGRASSES +PEPPERINESS +PEPPERINESSES +PEPPERING +PEPPERMINT +PEPPERMINTS +PEPPERMINTY +PEPPERONI +PEPPERONIS +PEPPERS +PEPPERTREE +PEPPERTREES +PEPPERY +PEPPIER +PEPPIEST +PEPPILY +PEPPINESS +PEPPINESSES +PEPPING +PEPPY +PEPS +PEPSIN +PEPSINATE +PEPSINATED +PEPSINATES +PEPSINATING +PEPSINE +PEPSINES +PEPSINOGEN +PEPSINOGENS +PEPSINS +PEPTALK +PEPTALKED +PEPTALKING +PEPTALKS +PEPTIC +PEPTICS +PEPTID +PEPTIDASE +PEPTIDASES +PEPTIDE +PEPTIDES +PEPTIDIC +PEPTIDOGLYCAN +PEPTIDOGLYCANS +PEPTIDS +PEPTIZE +PEPTIZED +PEPTIZER +PEPTIZERS +PEPTIZES +PEPTIZING +PEPTONE +PEPTONES +PEPTONIC +PEPTONIZE +PEPTONIZED +PEPTONIZES +PEPTONIZING +PER +PERACID +PERACIDS +PERADVENTURE +PERADVENTURES +PERAMBULATE +PERAMBULATED +PERAMBULATES +PERAMBULATING +PERAMBULATION +PERAMBULATIONS +PERAMBULATOR +PERAMBULATORS +PERAMBULATORY +PERBORATE +PERBORATES +PERCALE +PERCALES +PERCALINE +PERCALINES +PERCEIVABLE +PERCEIVABLY +PERCEIVE +PERCEIVED +PERCEIVER +PERCEIVERS +PERCEIVES +PERCEIVING +PERCENT +PERCENTAGE +PERCENTAGES +PERCENTAL +PERCENTILE +PERCENTILES +PERCENTS +PERCEPT +PERCEPTIBILITY +PERCEPTIBLE +PERCEPTIBLY +PERCEPTION +PERCEPTIONAL +PERCEPTIONS +PERCEPTIVE +PERCEPTIVELY +PERCEPTIVENESS +PERCEPTIVITIES +PERCEPTIVITY +PERCEPTS +PERCEPTUAL +PERCEPTUALLY +PERCH +PERCHANCE +PERCHED +PERCHER +PERCHERS +PERCHES +PERCHING +PERCHLORATE +PERCHLORATES +PERCIPIENCE +PERCIPIENCES +PERCIPIENT +PERCIPIENTLY +PERCIPIENTS +PERCOID +PERCOIDS +PERCOLATE +PERCOLATED +PERCOLATES +PERCOLATING +PERCOLATION +PERCOLATIONS +PERCOLATOR +PERCOLATORS +PERCUSS +PERCUSSED +PERCUSSES +PERCUSSING +PERCUSSION +PERCUSSIONIST +PERCUSSIONISTS +PERCUSSIONS +PERCUSSIVE +PERCUSSIVELY +PERCUSSIVENESS +PERCUSSOR +PERCUSSORS +PERCUTANEOUS +PERCUTANEOUSLY +PERDIE +PERDITION +PERDITIONS +PERDU +PERDUE +PERDUES +PERDURABILITIES +PERDURABILITY +PERDURABLE +PERDURABLY +PERDURE +PERDURED +PERDURES +PERDURING +PERDUS +PERDY +PERE +PEREA +PEREGRIN +PEREGRINATE +PEREGRINATED +PEREGRINATES +PEREGRINATING +PEREGRINATION +PEREGRINATIONS +PEREGRINE +PEREGRINES +PEREGRINS +PEREIA +PEREION +PEREIONS +PEREIOPOD +PEREIOPODS +PEREMPTORILY +PEREMPTORINESS +PEREMPTORY +PERENNATE +PERENNATED +PERENNATES +PERENNATING +PERENNATION +PERENNATIONS +PERENNIAL +PERENNIALLY +PERENNIALS +PEREON +PEREONS +PEREOPOD +PEREOPODS +PERES +PERESTROIKA +PERESTROIKAS +PERFECT +PERFECTA +PERFECTAS +PERFECTED +PERFECTER +PERFECTERS +PERFECTEST +PERFECTIBILITY +PERFECTIBLE +PERFECTING +PERFECTION +PERFECTIONISM +PERFECTIONISMS +PERFECTIONIST +PERFECTIONISTIC +PERFECTIONISTS +PERFECTIONS +PERFECTIVE +PERFECTIVELY +PERFECTIVENESS +PERFECTIVES +PERFECTIVITIES +PERFECTIVITY +PERFECTLY +PERFECTNESS +PERFECTNESSES +PERFECTO +PERFECTOS +PERFECTS +PERFERVID +PERFIDIES +PERFIDIOUS +PERFIDIOUSLY +PERFIDIOUSNESS +PERFIDY +PERFOLIATE +PERFORATE +PERFORATED +PERFORATES +PERFORATING +PERFORATION +PERFORATIONS +PERFORATOR +PERFORATORS +PERFORCE +PERFORM +PERFORMABILITY +PERFORMABLE +PERFORMANCE +PERFORMANCES +PERFORMATIVE +PERFORMATIVES +PERFORMATORY +PERFORMED +PERFORMER +PERFORMERS +PERFORMING +PERFORMS +PERFUME +PERFUMED +PERFUMER +PERFUMERIES +PERFUMERS +PERFUMERY +PERFUMES +PERFUMING +PERFUMY +PERFUNCTORILY +PERFUNCTORINESS +PERFUNCTORY +PERFUSATE +PERFUSATES +PERFUSE +PERFUSED +PERFUSES +PERFUSING +PERFUSION +PERFUSIONIST +PERFUSIONISTS +PERFUSIONS +PERFUSIVE +PERGOLA +PERGOLAS +PERHAPS +PERHAPSES +PERI +PERIANTH +PERIANTHS +PERIAPSES +PERIAPSIS +PERIAPT +PERIAPTS +PERIBLEM +PERIBLEMS +PERICARDIA +PERICARDIAL +PERICARDITIS +PERICARDITISES +PERICARDIUM +PERICARP +PERICARPS +PERICHONDRAL +PERICHONDRIA +PERICHONDRIUM +PERICOPAE +PERICOPAL +PERICOPE +PERICOPES +PERICOPIC +PERICRANIA +PERICRANIAL +PERICRANIUM +PERICYCLE +PERICYCLES +PERICYCLIC +PERIDERM +PERIDERMS +PERIDIA +PERIDIAL +PERIDIUM +PERIDOT +PERIDOTIC +PERIDOTITE +PERIDOTITES +PERIDOTITIC +PERIDOTS +PERIGEAL +PERIGEAN +PERIGEE +PERIGEES +PERIGON +PERIGONS +PERIGYNIES +PERIGYNOUS +PERIGYNY +PERIHELIA +PERIHELIAL +PERIHELION +PERIKARYA +PERIKARYAL +PERIKARYON +PERIL +PERILED +PERILING +PERILLA +PERILLAS +PERILLED +PERILLING +PERILOUS +PERILOUSLY +PERILOUSNESS +PERILOUSNESSES +PERILS +PERILUNE +PERILUNES +PERILYMPH +PERILYMPHS +PERIMETER +PERIMETERS +PERIMETRIES +PERIMETRY +PERIMORPH +PERIMORPHS +PERIMYSIA +PERIMYSIUM +PERINATAL +PERINATALLY +PERINEA +PERINEAL +PERINEUM +PERINEURIA +PERINEURIUM +PERIOD +PERIODATE +PERIODATES +PERIODIC +PERIODICAL +PERIODICALLY +PERIODICALS +PERIODICITIES +PERIODICITY +PERIODID +PERIODIDS +PERIODIZATION +PERIODIZATIONS +PERIODONTAL +PERIODONTALLY +PERIODONTICS +PERIODONTIST +PERIODONTISTS +PERIODONTOLOGY +PERIODS +PERIONYCHIA +PERIONYCHIUM +PERIOSTEA +PERIOSTEAL +PERIOSTEUM +PERIOSTITIS +PERIOSTITISES +PERIOTIC +PERIPATETIC +PERIPATETICALLY +PERIPATETICS +PERIPATUS +PERIPATUSES +PERIPETEIA +PERIPETEIAS +PERIPETIA +PERIPETIAS +PERIPETIES +PERIPETY +PERIPHERAL +PERIPHERALLY +PERIPHERALS +PERIPHERIES +PERIPHERY +PERIPHRASES +PERIPHRASIS +PERIPHRASTIC +PERIPHYTIC +PERIPHYTON +PERIPHYTONS +PERIPLASM +PERIPLASMS +PERIPLAST +PERIPLASTS +PERIPTER +PERIPTERS +PERIQUE +PERIQUES +PERIS +PERISARC +PERISARCS +PERISCOPE +PERISCOPES +PERISCOPIC +PERISH +PERISHABILITIES +PERISHABILITY +PERISHABLE +PERISHABLES +PERISHED +PERISHES +PERISHING +PERISSODACTYL +PERISSODACTYLS +PERISTALSES +PERISTALSIS +PERISTALTIC +PERISTOME +PERISTOMES +PERISTOMIAL +PERISTYLE +PERISTYLES +PERITHECIA +PERITHECIAL +PERITHECIUM +PERITI +PERITONEA +PERITONEAL +PERITONEALLY +PERITONEUM +PERITONEUMS +PERITONITIS +PERITONITISES +PERITRICH +PERITRICHA +PERITRICHOUS +PERITRICHOUSLY +PERITRICHS +PERITUS +PERIWIG +PERIWIGGED +PERIWIGS +PERIWINKLE +PERIWINKLES +PERJURE +PERJURED +PERJURER +PERJURERS +PERJURES +PERJURIES +PERJURING +PERJURIOUS +PERJURIOUSLY +PERJURY +PERK +PERKED +PERKIER +PERKIEST +PERKILY +PERKINESS +PERKINESSES +PERKING +PERKISH +PERKS +PERKY +PERLITE +PERLITES +PERLITIC +PERM +PERMAFROST +PERMAFROSTS +PERMALLOY +PERMALLOYS +PERMANENCE +PERMANENCES +PERMANENCIES +PERMANENCY +PERMANENT +PERMANENTLY +PERMANENTNESS +PERMANENTNESSES +PERMANENTS +PERMANGANATE +PERMANGANATES +PERMEABILITIES +PERMEABILITY +PERMEABLE +PERMEABLY +PERMEANCE +PERMEANCES +PERMEANT +PERMEASE +PERMEASES +PERMEATE +PERMEATED +PERMEATES +PERMEATING +PERMEATION +PERMEATIONS +PERMEATIVE +PERMEATOR +PERMEATORS +PERMED +PERMETHRIN +PERMETHRINS +PERMIAN +PERMILLAGE +PERMILLAGES +PERMING +PERMISSIBILITY +PERMISSIBLE +PERMISSIBLENESS +PERMISSIBLY +PERMISSION +PERMISSIONS +PERMISSIVE +PERMISSIVELY +PERMISSIVENESS +PERMIT +PERMITS +PERMITTED +PERMITTEE +PERMITTEES +PERMITTER +PERMITTERS +PERMITTING +PERMITTIVITIES +PERMITTIVITY +PERMS +PERMUTABLE +PERMUTATION +PERMUTATIONAL +PERMUTATIONS +PERMUTE +PERMUTED +PERMUTES +PERMUTING +PERNICIOUS +PERNICIOUSLY +PERNICIOUSNESS +PERNICKETY +PERNIO +PERNIONES +PERNOD +PERNODS +PERONEAL +PERORAL +PERORALLY +PERORATE +PERORATED +PERORATES +PERORATING +PERORATION +PERORATIONAL +PERORATIONS +PERORATOR +PERORATORS +PEROVSKITE +PEROVSKITES +PEROXID +PEROXIDASE +PEROXIDASES +PEROXIDE +PEROXIDED +PEROXIDES +PEROXIDIC +PEROXIDING +PEROXIDS +PEROXISOMAL +PEROXISOME +PEROXISOMES +PEROXY +PERP +PERPEND +PERPENDED +PERPENDICULAR +PERPENDICULARLY +PERPENDICULARS +PERPENDING +PERPENDS +PERPENT +PERPENTS +PERPETRATE +PERPETRATED +PERPETRATES +PERPETRATING +PERPETRATION +PERPETRATIONS +PERPETRATOR +PERPETRATORS +PERPETUAL +PERPETUALLY +PERPETUALS +PERPETUATE +PERPETUATED +PERPETUATES +PERPETUATING +PERPETUATION +PERPETUATIONS +PERPETUATOR +PERPETUATORS +PERPETUITIES +PERPETUITY +PERPHENAZINE +PERPHENAZINES +PERPLEX +PERPLEXED +PERPLEXEDLY +PERPLEXER +PERPLEXERS +PERPLEXES +PERPLEXING +PERPLEXITIES +PERPLEXITY +PERPS +PERQUISITE +PERQUISITES +PERRIES +PERRON +PERRONS +PERRY +PERSALT +PERSALTS +PERSE +PERSECUTE +PERSECUTED +PERSECUTEE +PERSECUTEES +PERSECUTES +PERSECUTING +PERSECUTION +PERSECUTIONS +PERSECUTIVE +PERSECUTOR +PERSECUTORS +PERSECUTORY +PERSES +PERSEVERANCE +PERSEVERANCES +PERSEVERATE +PERSEVERATED +PERSEVERATES +PERSEVERATING +PERSEVERATION +PERSEVERATIONS +PERSEVERATIVE +PERSEVERE +PERSEVERED +PERSEVERES +PERSEVERING +PERSEVERINGLY +PERSIFLAGE +PERSIFLAGES +PERSIMMON +PERSIMMONS +PERSIST +PERSISTED +PERSISTENCE +PERSISTENCES +PERSISTENCIES +PERSISTENCY +PERSISTENT +PERSISTENTLY +PERSISTER +PERSISTERS +PERSISTING +PERSISTS +PERSNICKETINESS +PERSNICKETY +PERSON +PERSONA +PERSONABLE +PERSONABLENESS +PERSONAE +PERSONAGE +PERSONAGES +PERSONAL +PERSONALISE +PERSONALISED +PERSONALISES +PERSONALISING +PERSONALISM +PERSONALISMS +PERSONALIST +PERSONALISTIC +PERSONALISTS +PERSONALITIES +PERSONALITY +PERSONALIZATION +PERSONALIZE +PERSONALIZED +PERSONALIZES +PERSONALIZING +PERSONALLY +PERSONALS +PERSONALTIES +PERSONALTY +PERSONAS +PERSONATE +PERSONATED +PERSONATES +PERSONATING +PERSONATION +PERSONATIONS +PERSONATIVE +PERSONATOR +PERSONATORS +PERSONHOOD +PERSONHOODS +PERSONIFICATION +PERSONIFIED +PERSONIFIER +PERSONIFIERS +PERSONIFIES +PERSONIFY +PERSONIFYING +PERSONNEL +PERSONNELS +PERSONS +PERSPECTIVAL +PERSPECTIVE +PERSPECTIVELY +PERSPECTIVES +PERSPEX +PERSPEXES +PERSPICACIOUS +PERSPICACIOUSLY +PERSPICACITIES +PERSPICACITY +PERSPICUITIES +PERSPICUITY +PERSPICUOUS +PERSPICUOUSLY +PERSPICUOUSNESS +PERSPIRATION +PERSPIRATIONS +PERSPIRATORY +PERSPIRE +PERSPIRED +PERSPIRES +PERSPIRING +PERSPIRY +PERSUADABLE +PERSUADE +PERSUADED +PERSUADER +PERSUADERS +PERSUADES +PERSUADING +PERSUASIBLE +PERSUASION +PERSUASIONS +PERSUASIVE +PERSUASIVELY +PERSUASIVENESS +PERT +PERTAIN +PERTAINED +PERTAINING +PERTAINS +PERTER +PERTEST +PERTINACIOUS +PERTINACIOUSLY +PERTINACITIES +PERTINACITY +PERTINENCE +PERTINENCES +PERTINENCIES +PERTINENCY +PERTINENT +PERTINENTLY +PERTLY +PERTNESS +PERTNESSES +PERTURB +PERTURBABLE +PERTURBATION +PERTURBATIONAL +PERTURBATIONS +PERTURBED +PERTURBER +PERTURBERS +PERTURBING +PERTURBS +PERTUSSAL +PERTUSSES +PERTUSSIS +PERTUSSISES +PERUKE +PERUKED +PERUKES +PERUSABLE +PERUSAL +PERUSALS +PERUSE +PERUSED +PERUSER +PERUSERS +PERUSES +PERUSING +PERV +PERVADE +PERVADED +PERVADER +PERVADERS +PERVADES +PERVADING +PERVASION +PERVASIONS +PERVASIVE +PERVASIVELY +PERVASIVENESS +PERVASIVENESSES +PERVERSE +PERVERSELY +PERVERSENESS +PERVERSENESSES +PERVERSION +PERVERSIONS +PERVERSITIES +PERVERSITY +PERVERSIVE +PERVERT +PERVERTED +PERVERTEDLY +PERVERTEDNESS +PERVERTEDNESSES +PERVERTER +PERVERTERS +PERVERTING +PERVERTS +PERVIOUS +PERVIOUSNESS +PERVIOUSNESSES +PERVS +PES +PESADE +PESADES +PESETA +PESETAS +PESEWA +PESEWAS +PESKIER +PESKIEST +PESKILY +PESKINESS +PESKINESSES +PESKY +PESO +PESOS +PESSARIES +PESSARY +PESSIMISM +PESSIMISMS +PESSIMIST +PESSIMISTIC +PESSIMISTICALLY +PESSIMISTS +PEST +PESTER +PESTERED +PESTERER +PESTERERS +PESTERING +PESTERS +PESTHOLE +PESTHOLES +PESTHOUSE +PESTHOUSES +PESTICIDE +PESTICIDES +PESTIER +PESTIEST +PESTIFEROUS +PESTIFEROUSLY +PESTIFEROUSNESS +PESTILENCE +PESTILENCES +PESTILENT +PESTILENTIAL +PESTILENTIALLY +PESTILENTLY +PESTLE +PESTLED +PESTLES +PESTLING +PESTO +PESTOS +PESTS +PESTY +PET +PETABYTE +PETABYTES +PETAHERTZ +PETAHERTZES +PETAL +PETALED +PETALINE +PETALLED +PETALLIKE +PETALODIES +PETALODY +PETALOID +PETALOUS +PETALS +PETARD +PETARDS +PETASOS +PETASOSES +PETASUS +PETASUSES +PETCOCK +PETCOCKS +PETECHIA +PETECHIAE +PETECHIAL +PETER +PETERED +PETERING +PETERS +PETIOLAR +PETIOLATE +PETIOLE +PETIOLED +PETIOLES +PETIOLULE +PETIOLULES +PETIT +PETITE +PETITENESS +PETITENESSES +PETITES +PETITION +PETITIONARY +PETITIONED +PETITIONER +PETITIONERS +PETITIONING +PETITIONS +PETNAP +PETNAPER +PETNAPERS +PETNAPING +PETNAPINGS +PETNAPPED +PETNAPPER +PETNAPPERS +PETNAPPING +PETNAPS +PETRALE +PETRALES +PETREL +PETRELS +PETRIFACTION +PETRIFACTIONS +PETRIFICATION +PETRIFICATIONS +PETRIFIED +PETRIFIER +PETRIFIERS +PETRIFIES +PETRIFY +PETRIFYING +PETROCHEMICAL +PETROCHEMICALS +PETROCHEMISTRY +PETRODOLLAR +PETRODOLLARS +PETROGENESES +PETROGENESIS +PETROGENETIC +PETROGENIES +PETROGENY +PETROGLYPH +PETROGLYPHS +PETROGRAPHER +PETROGRAPHERS +PETROGRAPHIC +PETROGRAPHICAL +PETROGRAPHIES +PETROGRAPHY +PETROL +PETROLATUM +PETROLATUMS +PETROLEUM +PETROLEUMS +PETROLIC +PETROLOGIC +PETROLOGICAL +PETROLOGICALLY +PETROLOGIES +PETROLOGIST +PETROLOGISTS +PETROLOGY +PETROLS +PETRONEL +PETRONELS +PETROSAL +PETROUS +PETS +PETSAI +PETSAIS +PETTABLE +PETTED +PETTEDLY +PETTER +PETTERS +PETTI +PETTICOAT +PETTICOATED +PETTICOATS +PETTIER +PETTIEST +PETTIFOG +PETTIFOGGED +PETTIFOGGER +PETTIFOGGERIES +PETTIFOGGERS +PETTIFOGGERY +PETTIFOGGING +PETTIFOGGINGS +PETTIFOGS +PETTILY +PETTINESS +PETTINESSES +PETTING +PETTINGS +PETTISH +PETTISHLY +PETTISHNESS +PETTISHNESSES +PETTITOES +PETTLE +PETTLED +PETTLES +PETTLING +PETTO +PETTY +PETULANCE +PETULANCES +PETULANCIES +PETULANCY +PETULANT +PETULANTLY +PETUNIA +PETUNIAS +PETUNTSE +PETUNTSES +PETUNTZE +PETUNTZES +PEW +PEWEE +PEWEES +PEWHOLDER +PEWHOLDERS +PEWIT +PEWITS +PEWS +PEWTER +PEWTERER +PEWTERERS +PEWTERS +PEYOTE +PEYOTES +PEYOTL +PEYOTLS +PEYTRAL +PEYTRALS +PEYTREL +PEYTRELS +PFENNIG +PFENNIGE +PFENNIGS +PFFT +PFUI +PHAETON +PHAETONS +PHAGE +PHAGEDENA +PHAGEDENAS +PHAGES +PHAGOCYTE +PHAGOCYTES +PHAGOCYTIC +PHAGOCYTIZE +PHAGOCYTIZED +PHAGOCYTIZES +PHAGOCYTIZING +PHAGOCYTOSE +PHAGOCYTOSED +PHAGOCYTOSES +PHAGOCYTOSING +PHAGOCYTOSIS +PHAGOCYTOTIC +PHAGOSOME +PHAGOSOMES +PHALANGAL +PHALANGE +PHALANGEAL +PHALANGER +PHALANGERS +PHALANGES +PHALANSTERIES +PHALANSTERY +PHALANX +PHALANXES +PHALAROPE +PHALAROPES +PHALLI +PHALLIC +PHALLICALLY +PHALLICISM +PHALLICISMS +PHALLISM +PHALLISMS +PHALLIST +PHALLISTS +PHALLOCENTRIC +PHALLUS +PHALLUSES +PHANEROGAM +PHANEROGAMS +PHANEROPHYTE +PHANEROPHYTES +PHANTASIED +PHANTASIES +PHANTASM +PHANTASMA +PHANTASMAGORIA +PHANTASMAGORIAS +PHANTASMAGORIC +PHANTASMAL +PHANTASMATA +PHANTASMIC +PHANTASMS +PHANTAST +PHANTASTS +PHANTASY +PHANTASYING +PHANTOM +PHANTOMLIKE +PHANTOMS +PHARAOH +PHARAOHS +PHARAONIC +PHARISAIC +PHARISAICAL +PHARISAICALLY +PHARISAICALNESS +PHARISAISM +PHARISAISMS +PHARISEE +PHARISEES +PHARMACEUTICAL +PHARMACEUTICALS +PHARMACIES +PHARMACIST +PHARMACISTS +PHARMACODYNAMIC +PHARMACOGNOSIES +PHARMACOGNOSTIC +PHARMACOGNOSY +PHARMACOKINETIC +PHARMACOLOGIC +PHARMACOLOGICAL +PHARMACOLOGIES +PHARMACOLOGIST +PHARMACOLOGISTS +PHARMACOLOGY +PHARMACOPEIA +PHARMACOPEIAL +PHARMACOPEIAS +PHARMACOPOEIA +PHARMACOPOEIAL +PHARMACOPOEIAS +PHARMACOTHERAPY +PHARMACY +PHARMING +PHARMINGS +PHAROS +PHAROSES +PHARYNGAL +PHARYNGALS +PHARYNGEAL +PHARYNGES +PHARYNGITIDES +PHARYNGITIS +PHARYNX +PHARYNXES +PHASE +PHASEAL +PHASED +PHASEDOWN +PHASEDOWNS +PHASEOUT +PHASEOUTS +PHASES +PHASIC +PHASING +PHASIS +PHASMID +PHASMIDS +PHAT +PHATIC +PHATICALLY +PHATTER +PHATTEST +PHEASANT +PHEASANTS +PHELLEM +PHELLEMS +PHELLODERM +PHELLODERMS +PHELLOGEN +PHELLOGENS +PHELONIA +PHELONION +PHELONIONS +PHENACAINE +PHENACAINES +PHENACETIN +PHENACETINS +PHENACITE +PHENACITES +PHENAKITE +PHENAKITES +PHENANTHRENE +PHENANTHRENES +PHENATE +PHENATES +PHENAZIN +PHENAZINE +PHENAZINES +PHENAZINS +PHENCYCLIDINE +PHENCYCLIDINES +PHENETIC +PHENETICIST +PHENETICISTS +PHENETICS +PHENETOL +PHENETOLE +PHENETOLES +PHENETOLS +PHENIX +PHENIXES +PHENMETRAZINE +PHENMETRAZINES +PHENOBARBITAL +PHENOBARBITALS +PHENOBARBITONE +PHENOBARBITONES +PHENOCOPIES +PHENOCOPY +PHENOCRYST +PHENOCRYSTIC +PHENOCRYSTS +PHENOL +PHENOLATE +PHENOLATED +PHENOLATES +PHENOLATING +PHENOLIC +PHENOLICS +PHENOLOGICAL +PHENOLOGICALLY +PHENOLOGIES +PHENOLOGY +PHENOLPHTHALEIN +PHENOLS +PHENOM +PHENOMENA +PHENOMENAL +PHENOMENALISM +PHENOMENALISMS +PHENOMENALIST +PHENOMENALISTIC +PHENOMENALISTS +PHENOMENALLY +PHENOMENAS +PHENOMENOLOGIES +PHENOMENOLOGIST +PHENOMENOLOGY +PHENOMENON +PHENOMENONS +PHENOMS +PHENOTHIAZINE +PHENOTHIAZINES +PHENOTYPE +PHENOTYPES +PHENOTYPIC +PHENOTYPICAL +PHENOTYPICALLY +PHENOXIDE +PHENOXIDES +PHENOXY +PHENTOLAMINE +PHENTOLAMINES +PHENYL +PHENYLALANINE +PHENYLALANINES +PHENYLBUTAZONE +PHENYLBUTAZONES +PHENYLENE +PHENYLENES +PHENYLEPHRINE +PHENYLEPHRINES +PHENYLIC +PHENYLKETONURIA +PHENYLKETONURIC +PHENYLS +PHENYLTHIOUREA +PHENYLTHIOUREAS +PHENYTOIN +PHENYTOINS +PHERESES +PHERESIS +PHEROMONAL +PHEROMONE +PHEROMONES +PHEW +PHI +PHIAL +PHIALS +PHILABEG +PHILABEGS +PHILADELPHUS +PHILADELPHUSES +PHILANDER +PHILANDERED +PHILANDERER +PHILANDERERS +PHILANDERING +PHILANDERS +PHILANTHROPIC +PHILANTHROPICAL +PHILANTHROPIES +PHILANTHROPIST +PHILANTHROPISTS +PHILANTHROPOID +PHILANTHROPOIDS +PHILANTHROPY +PHILATELIC +PHILATELICALLY +PHILATELIES +PHILATELIST +PHILATELISTS +PHILATELY +PHILHARMONIC +PHILHARMONICS +PHILHELLENE +PHILHELLENES +PHILHELLENIC +PHILHELLENISM +PHILHELLENISMS +PHILHELLENIST +PHILHELLENISTS +PHILIBEG +PHILIBEGS +PHILIPPIC +PHILIPPICS +PHILISTIA +PHILISTIAS +PHILISTINE +PHILISTINES +PHILISTINISM +PHILISTINISMS +PHILLUMENIST +PHILLUMENISTS +PHILODENDRA +PHILODENDRON +PHILODENDRONS +PHILOGYNIES +PHILOGYNY +PHILOLOGICAL +PHILOLOGICALLY +PHILOLOGIES +PHILOLOGIST +PHILOLOGISTS +PHILOLOGY +PHILOMEL +PHILOMELA +PHILOMELAS +PHILOMELS +PHILOSOPHE +PHILOSOPHER +PHILOSOPHERS +PHILOSOPHES +PHILOSOPHIC +PHILOSOPHICAL +PHILOSOPHICALLY +PHILOSOPHIES +PHILOSOPHISE +PHILOSOPHISED +PHILOSOPHISES +PHILOSOPHISING +PHILOSOPHIZE +PHILOSOPHIZED +PHILOSOPHIZER +PHILOSOPHIZERS +PHILOSOPHIZES +PHILOSOPHIZING +PHILOSOPHY +PHILTER +PHILTERED +PHILTERING +PHILTERS +PHILTRA +PHILTRE +PHILTRED +PHILTRES +PHILTRING +PHILTRUM +PHIMOSES +PHIMOSIS +PHIMOTIC +PHIS +PHIZ +PHIZES +PHLEBITIC +PHLEBITIDES +PHLEBITIS +PHLEBITISES +PHLEBOGRAM +PHLEBOGRAMS +PHLEBOGRAPHIC +PHLEBOGRAPHIES +PHLEBOGRAPHY +PHLEBOLOGIES +PHLEBOLOGY +PHLEBOTOMIES +PHLEBOTOMIST +PHLEBOTOMISTS +PHLEBOTOMY +PHLEGM +PHLEGMATIC +PHLEGMATICALLY +PHLEGMIER +PHLEGMIEST +PHLEGMS +PHLEGMY +PHLOEM +PHLOEMS +PHLOGISTIC +PHLOGISTON +PHLOGISTONS +PHLOGOPITE +PHLOGOPITES +PHLORIZIN +PHLORIZINS +PHLOX +PHLOXES +PHLYCTENA +PHLYCTENAE +PHOBIA +PHOBIAS +PHOBIC +PHOBICS +PHOCINE +PHOEBE +PHOEBES +PHOEBUS +PHOEBUSES +PHOENIX +PHOENIXES +PHOENIXLIKE +PHON +PHONAL +PHONATE +PHONATED +PHONATES +PHONATHON +PHONATHONS +PHONATING +PHONATION +PHONATIONS +PHONE +PHONED +PHONEMATIC +PHONEME +PHONEMES +PHONEMIC +PHONEMICALLY +PHONEMICIST +PHONEMICISTS +PHONEMICS +PHONES +PHONETIC +PHONETICALLY +PHONETICIAN +PHONETICIANS +PHONETICS +PHONETIST +PHONETISTS +PHONEY +PHONEYED +PHONEYING +PHONEYS +PHONIC +PHONICALLY +PHONICS +PHONIED +PHONIER +PHONIES +PHONIEST +PHONILY +PHONINESS +PHONINESSES +PHONING +PHONO +PHONOCARDIOGRAM +PHONOGRAM +PHONOGRAMIC +PHONOGRAMICALLY +PHONOGRAMMIC +PHONOGRAMS +PHONOGRAPH +PHONOGRAPHER +PHONOGRAPHERS +PHONOGRAPHIC +PHONOGRAPHIES +PHONOGRAPHS +PHONOGRAPHY +PHONOLITE +PHONOLITES +PHONOLOGIC +PHONOLOGICAL +PHONOLOGICALLY +PHONOLOGIES +PHONOLOGIST +PHONOLOGISTS +PHONOLOGY +PHONON +PHONONS +PHONOS +PHONOTACTIC +PHONOTACTICS +PHONOTYPE +PHONOTYPES +PHONOTYPIES +PHONOTYPY +PHONS +PHONY +PHONYING +PHOOEY +PHORATE +PHORATES +PHORESIES +PHORESY +PHORONID +PHORONIDS +PHOSGENE +PHOSGENES +PHOSPHATASE +PHOSPHATASES +PHOSPHATE +PHOSPHATES +PHOSPHATIC +PHOSPHATIDE +PHOSPHATIDES +PHOSPHATIDIC +PHOSPHATIDYL +PHOSPHATIDYLS +PHOSPHATIZATION +PHOSPHATIZE +PHOSPHATIZED +PHOSPHATIZES +PHOSPHATIZING +PHOSPHATURIA +PHOSPHATURIAS +PHOSPHENE +PHOSPHENES +PHOSPHID +PHOSPHIDE +PHOSPHIDES +PHOSPHIDS +PHOSPHIN +PHOSPHINE +PHOSPHINES +PHOSPHINS +PHOSPHITE +PHOSPHITES +PHOSPHOCREATINE +PHOSPHOKINASE +PHOSPHOKINASES +PHOSPHOLIPASE +PHOSPHOLIPASES +PHOSPHOLIPID +PHOSPHOLIPIDS +PHOSPHONIUM +PHOSPHONIUMS +PHOSPHOPROTEIN +PHOSPHOPROTEINS +PHOSPHOR +PHOSPHORE +PHOSPHORES +PHOSPHORESCE +PHOSPHORESCED +PHOSPHORESCENCE +PHOSPHORESCENT +PHOSPHORESCES +PHOSPHORESCING +PHOSPHORI +PHOSPHORIC +PHOSPHORITE +PHOSPHORITES +PHOSPHORITIC +PHOSPHOROLYSES +PHOSPHOROLYSIS +PHOSPHOROLYTIC +PHOSPHOROUS +PHOSPHORS +PHOSPHORUS +PHOSPHORUSES +PHOSPHORYL +PHOSPHORYLASE +PHOSPHORYLASES +PHOSPHORYLATE +PHOSPHORYLATED +PHOSPHORYLATES +PHOSPHORYLATING +PHOSPHORYLATION +PHOSPHORYLATIVE +PHOSPHORYLS +PHOT +PHOTIC +PHOTICALLY +PHOTICS +PHOTO +PHOTOAUTOTROPH +PHOTOAUTOTROPHS +PHOTOBIOLOGIC +PHOTOBIOLOGICAL +PHOTOBIOLOGIES +PHOTOBIOLOGIST +PHOTOBIOLOGISTS +PHOTOBIOLOGY +PHOTOCATHODE +PHOTOCATHODES +PHOTOCELL +PHOTOCELLS +PHOTOCHEMICAL +PHOTOCHEMICALLY +PHOTOCHEMIST +PHOTOCHEMISTRY +PHOTOCHEMISTS +PHOTOCHROMIC +PHOTOCHROMISM +PHOTOCHROMISMS +PHOTOCOMPOSE +PHOTOCOMPOSED +PHOTOCOMPOSER +PHOTOCOMPOSERS +PHOTOCOMPOSES +PHOTOCOMPOSING +PHOTOCONDUCTIVE +PHOTOCOPIED +PHOTOCOPIER +PHOTOCOPIERS +PHOTOCOPIES +PHOTOCOPY +PHOTOCOPYING +PHOTOCURRENT +PHOTOCURRENTS +PHOTODEGRADABLE +PHOTODETECTOR +PHOTODETECTORS +PHOTODIODE +PHOTODIODES +PHOTODISSOCIATE +PHOTODUPLICATE +PHOTODUPLICATED +PHOTODUPLICATES +PHOTODYNAMIC +PHOTOED +PHOTOELECTRIC +PHOTOELECTRON +PHOTOELECTRONIC +PHOTOELECTRONS +PHOTOEMISSION +PHOTOEMISSIONS +PHOTOEMISSIVE +PHOTOENGRAVE +PHOTOENGRAVED +PHOTOENGRAVER +PHOTOENGRAVERS +PHOTOENGRAVES +PHOTOENGRAVING +PHOTOENGRAVINGS +PHOTOEXCITATION +PHOTOEXCITED +PHOTOFINISHER +PHOTOFINISHERS +PHOTOFINISHING +PHOTOFINISHINGS +PHOTOFLASH +PHOTOFLASHES +PHOTOFLOOD +PHOTOFLOODS +PHOTOG +PHOTOGENE +PHOTOGENES +PHOTOGENIC +PHOTOGENICALLY +PHOTOGEOLOGIC +PHOTOGEOLOGICAL +PHOTOGEOLOGIES +PHOTOGEOLOGIST +PHOTOGEOLOGISTS +PHOTOGEOLOGY +PHOTOGRAM +PHOTOGRAMMETRIC +PHOTOGRAMMETRY +PHOTOGRAMS +PHOTOGRAPH +PHOTOGRAPHED +PHOTOGRAPHER +PHOTOGRAPHERS +PHOTOGRAPHIC +PHOTOGRAPHIES +PHOTOGRAPHING +PHOTOGRAPHS +PHOTOGRAPHY +PHOTOGRAVURE +PHOTOGRAVURES +PHOTOGS +PHOTOINDUCED +PHOTOINDUCTION +PHOTOINDUCTIONS +PHOTOINDUCTIVE +PHOTOING +PHOTOIONIZATION +PHOTOIONIZE +PHOTOIONIZED +PHOTOIONIZES +PHOTOIONIZING +PHOTOJOURNALISM +PHOTOJOURNALIST +PHOTOKINESES +PHOTOKINESIS +PHOTOKINETIC +PHOTOLITHOGRAPH +PHOTOLYSES +PHOTOLYSIS +PHOTOLYTIC +PHOTOLYTICALLY +PHOTOLYZABLE +PHOTOLYZE +PHOTOLYZED +PHOTOLYZES +PHOTOLYZING +PHOTOMAP +PHOTOMAPPED +PHOTOMAPPING +PHOTOMAPS +PHOTOMASK +PHOTOMASKS +PHOTOMECHANICAL +PHOTOMETER +PHOTOMETERS +PHOTOMETRIC +PHOTOMETRICALLY +PHOTOMETRIES +PHOTOMETRY +PHOTOMICROGRAPH +PHOTOMONTAGE +PHOTOMONTAGES +PHOTOMOSAIC +PHOTOMOSAICS +PHOTOMULTIPLIER +PHOTOMURAL +PHOTOMURALS +PHOTON +PHOTONEGATIVE +PHOTONIC +PHOTONICS +PHOTONS +PHOTONUCLEAR +PHOTOOXIDATION +PHOTOOXIDATIONS +PHOTOOXIDATIVE +PHOTOOXIDIZE +PHOTOOXIDIZED +PHOTOOXIDIZES +PHOTOOXIDIZING +PHOTOPERIOD +PHOTOPERIODIC +PHOTOPERIODISM +PHOTOPERIODISMS +PHOTOPERIODS +PHOTOPHASE +PHOTOPHASES +PHOTOPHOBIA +PHOTOPHOBIAS +PHOTOPHOBIC +PHOTOPHORE +PHOTOPHORES +PHOTOPIA +PHOTOPIAS +PHOTOPIC +PHOTOPLAY +PHOTOPLAYS +PHOTOPOLYMER +PHOTOPOLYMERS +PHOTOPOSITIVE +PHOTOPRODUCT +PHOTOPRODUCTION +PHOTOPRODUCTS +PHOTOREACTION +PHOTOREACTIONS +PHOTORECEPTION +PHOTORECEPTIONS +PHOTORECEPTIVE +PHOTORECEPTOR +PHOTORECEPTORS +PHOTOREDUCE +PHOTOREDUCED +PHOTOREDUCES +PHOTOREDUCING +PHOTOREDUCTION +PHOTOREDUCTIONS +PHOTORESIST +PHOTORESISTS +PHOTOS +PHOTOSCAN +PHOTOSCANNED +PHOTOSCANNING +PHOTOSCANS +PHOTOSENSITIVE +PHOTOSENSITIZE +PHOTOSENSITIZED +PHOTOSENSITIZER +PHOTOSENSITIZES +PHOTOSET +PHOTOSETS +PHOTOSETTER +PHOTOSETTERS +PHOTOSETTING +PHOTOSPHERE +PHOTOSPHERES +PHOTOSPHERIC +PHOTOSTAT +PHOTOSTATED +PHOTOSTATIC +PHOTOSTATING +PHOTOSTATS +PHOTOSTATTED +PHOTOSTATTING +PHOTOSYNTHATE +PHOTOSYNTHATES +PHOTOSYNTHESES +PHOTOSYNTHESIS +PHOTOSYNTHESIZE +PHOTOSYNTHETIC +PHOTOSYSTEM +PHOTOSYSTEMS +PHOTOTACTIC +PHOTOTACTICALLY +PHOTOTAXES +PHOTOTAXIES +PHOTOTAXIS +PHOTOTAXY +PHOTOTELEGRAPHY +PHOTOTOXIC +PHOTOTOXICITIES +PHOTOTOXICITY +PHOTOTROPIC +PHOTOTROPICALLY +PHOTOTROPISM +PHOTOTROPISMS +PHOTOTUBE +PHOTOTUBES +PHOTOTYPE +PHOTOTYPES +PHOTOTYPESETTER +PHOTOVOLTAIC +PHOTOVOLTAICS +PHOTS +PHPHT +PHRAGMOPLAST +PHRAGMOPLASTS +PHRASAL +PHRASALLY +PHRASE +PHRASED +PHRASEMAKER +PHRASEMAKERS +PHRASEMAKING +PHRASEMAKINGS +PHRASEMONGER +PHRASEMONGERING +PHRASEMONGERS +PHRASEOLOGICAL +PHRASEOLOGIES +PHRASEOLOGIST +PHRASEOLOGISTS +PHRASEOLOGY +PHRASES +PHRASING +PHRASINGS +PHRATRAL +PHRATRIC +PHRATRIES +PHRATRY +PHREAK +PHREAKED +PHREAKER +PHREAKERS +PHREAKING +PHREAKINGS +PHREAKS +PHREATIC +PHREATOPHYTE +PHREATOPHYTES +PHREATOPHYTIC +PHRENETIC +PHRENIC +PHRENITIDES +PHRENITIS +PHRENITISES +PHRENOLOGICAL +PHRENOLOGIES +PHRENOLOGIST +PHRENOLOGISTS +PHRENOLOGY +PHRENSIED +PHRENSIES +PHRENSY +PHRENSYING +PHT +PHTHALATE +PHTHALATES +PHTHALEIN +PHTHALEINS +PHTHALIC +PHTHALIN +PHTHALINS +PHTHALOCYANINE +PHTHALOCYANINES +PHTHISES +PHTHISIC +PHTHISICAL +PHTHISICS +PHTHISIS +PHUT +PHUTS +PHYCOCYANIN +PHYCOCYANINS +PHYCOERYTHRIN +PHYCOERYTHRINS +PHYCOLOGICAL +PHYCOLOGIES +PHYCOLOGIST +PHYCOLOGISTS +PHYCOLOGY +PHYCOMYCETE +PHYCOMYCETES +PHYCOMYCETOUS +PHYLA +PHYLACTERIES +PHYLACTERY +PHYLAE +PHYLAR +PHYLAXIS +PHYLAXISES +PHYLE +PHYLESES +PHYLESIS +PHYLESISES +PHYLETIC +PHYLETICALLY +PHYLETICS +PHYLIC +PHYLLARIES +PHYLLARY +PHYLLITE +PHYLLITES +PHYLLITIC +PHYLLO +PHYLLOCLADE +PHYLLOCLADES +PHYLLODE +PHYLLODES +PHYLLODIA +PHYLLODIUM +PHYLLOID +PHYLLOIDS +PHYLLOME +PHYLLOMES +PHYLLOMIC +PHYLLOPOD +PHYLLOPODS +PHYLLOS +PHYLLOTACTIC +PHYLLOTAXES +PHYLLOTAXIES +PHYLLOTAXIS +PHYLLOTAXY +PHYLLOXERA +PHYLLOXERAS +PHYLOGENETIC +PHYLOGENIES +PHYLOGENY +PHYLON +PHYLUM +PHYSED +PHYSEDS +PHYSES +PHYSIATRIES +PHYSIATRIST +PHYSIATRISTS +PHYSIATRY +PHYSIC +PHYSICAL +PHYSICALISM +PHYSICALISMS +PHYSICALIST +PHYSICALISTIC +PHYSICALISTS +PHYSICALITIES +PHYSICALITY +PHYSICALLY +PHYSICALNESS +PHYSICALNESSES +PHYSICALS +PHYSICIAN +PHYSICIANS +PHYSICIST +PHYSICISTS +PHYSICKED +PHYSICKING +PHYSICOCHEMICAL +PHYSICS +PHYSIOCRATIC +PHYSIOGNOMIC +PHYSIOGNOMICAL +PHYSIOGNOMIES +PHYSIOGNOMY +PHYSIOGRAPHER +PHYSIOGRAPHERS +PHYSIOGRAPHIC +PHYSIOGRAPHICAL +PHYSIOGRAPHIES +PHYSIOGRAPHY +PHYSIOLOGIC +PHYSIOLOGICAL +PHYSIOLOGICALLY +PHYSIOLOGIES +PHYSIOLOGIST +PHYSIOLOGISTS +PHYSIOLOGY +PHYSIOPATHOLOGY +PHYSIOTHERAPIES +PHYSIOTHERAPIST +PHYSIOTHERAPY +PHYSIQUE +PHYSIQUED +PHYSIQUES +PHYSIS +PHYSOSTIGMINE +PHYSOSTIGMINES +PHYTANE +PHYTANES +PHYTIN +PHYTINS +PHYTOALEXIN +PHYTOALEXINS +PHYTOCHEMICAL +PHYTOCHEMICALLY +PHYTOCHEMIST +PHYTOCHEMISTRY +PHYTOCHEMISTS +PHYTOCHROME +PHYTOCHROMES +PHYTOFLAGELLATE +PHYTOGENIES +PHYTOGENY +PHYTOGEOGRAPHER +PHYTOGEOGRAPHIC +PHYTOGEOGRAPHY +PHYTOHORMONE +PHYTOHORMONES +PHYTOID +PHYTOL +PHYTOLITH +PHYTOLITHS +PHYTOLOGIES +PHYTOLOGY +PHYTOLS +PHYTON +PHYTONIC +PHYTONS +PHYTOPATHOGEN +PHYTOPATHOGENIC +PHYTOPATHOGENS +PHYTOPATHOLOGY +PHYTOPHAGOUS +PHYTOPLANKTER +PHYTOPLANKTERS +PHYTOPLANKTON +PHYTOPLANKTONIC +PHYTOPLANKTONS +PHYTOSOCIOLOGY +PHYTOSTEROL +PHYTOSTEROLS +PHYTOTOXIC +PHYTOTOXICITIES +PHYTOTOXICITY +PHYTOTRON +PHYTOTRONS +PI +PIA +PIACULAR +PIAFFE +PIAFFED +PIAFFER +PIAFFERS +PIAFFES +PIAFFING +PIAL +PIAN +PIANIC +PIANISM +PIANISMS +PIANISSIMI +PIANISSIMO +PIANISSIMOS +PIANIST +PIANISTIC +PIANISTICALLY +PIANISTS +PIANO +PIANOFORTE +PIANOFORTES +PIANOS +PIANS +PIAS +PIASABA +PIASABAS +PIASAVA +PIASAVAS +PIASSABA +PIASSABAS +PIASSAVA +PIASSAVAS +PIASTER +PIASTERS +PIASTRE +PIASTRES +PIAZZA +PIAZZAS +PIAZZE +PIBAL +PIBALS +PIBROCH +PIBROCHS +PIC +PICA +PICACHO +PICACHOS +PICADILLO +PICADILLOS +PICADOR +PICADORES +PICADORS +PICAL +PICANINNIES +PICANINNY +PICANTE +PICARA +PICARAS +PICARESQUE +PICARESQUES +PICARO +PICAROON +PICAROONED +PICAROONING +PICAROONS +PICAROS +PICAS +PICAYUNE +PICAYUNES +PICAYUNISH +PICCALILLI +PICCALILLIS +PICCATA +PICCOLO +PICCOLOIST +PICCOLOISTS +PICCOLOS +PICE +PICEOUS +PICHOLINE +PICHOLINES +PICIFORM +PICK +PICKABACK +PICKABACKED +PICKABACKING +PICKABACKS +PICKADIL +PICKADILS +PICKANINNIES +PICKANINNY +PICKAROON +PICKAROONS +PICKAX +PICKAXE +PICKAXED +PICKAXES +PICKAXING +PICKED +PICKEER +PICKEERED +PICKEERING +PICKEERS +PICKER +PICKEREL +PICKERELS +PICKERELWEED +PICKERELWEEDS +PICKERS +PICKET +PICKETBOAT +PICKETBOATS +PICKETED +PICKETER +PICKETERS +PICKETING +PICKETS +PICKIER +PICKIEST +PICKINESS +PICKINESSES +PICKING +PICKINGS +PICKLE +PICKLED +PICKLES +PICKLING +PICKLOCK +PICKLOCKS +PICKOFF +PICKOFFS +PICKPOCKET +PICKPOCKETS +PICKPROOF +PICKS +PICKTHANK +PICKTHANKS +PICKUP +PICKUPS +PICKWICK +PICKWICKS +PICKY +PICLORAM +PICLORAMS +PICNIC +PICNICKED +PICNICKER +PICNICKERS +PICNICKING +PICNICKY +PICNICS +PICOFARAD +PICOFARADS +PICOGRAM +PICOGRAMS +PICOLIN +PICOLINE +PICOLINES +PICOLINS +PICOMETER +PICOMETERS +PICOMETRE +PICOMETRES +PICOMOLE +PICOMOLES +PICORNAVIRUS +PICORNAVIRUSES +PICOSECOND +PICOSECONDS +PICOT +PICOTED +PICOTEE +PICOTEES +PICOTING +PICOTS +PICOWAVE +PICOWAVED +PICOWAVES +PICOWAVING +PICQUET +PICQUETS +PICRATE +PICRATED +PICRATES +PICRIC +PICRITE +PICRITES +PICRITIC +PICROTOXIN +PICROTOXINS +PICS +PICTOGRAM +PICTOGRAMS +PICTOGRAPH +PICTOGRAPHIC +PICTOGRAPHIES +PICTOGRAPHS +PICTOGRAPHY +PICTORIAL +PICTORIALISM +PICTORIALISMS +PICTORIALIST +PICTORIALISTS +PICTORIALIZE +PICTORIALIZED +PICTORIALIZES +PICTORIALIZING +PICTORIALLY +PICTORIALNESS +PICTORIALNESSES +PICTORIALS +PICTURE +PICTURED +PICTUREPHONE +PICTUREPHONES +PICTURES +PICTURESQUE +PICTURESQUELY +PICTURESQUENESS +PICTURING +PICTURIZATION +PICTURIZATIONS +PICTURIZE +PICTURIZED +PICTURIZES +PICTURIZING +PICUL +PICULS +PIDDLE +PIDDLED +PIDDLER +PIDDLERS +PIDDLES +PIDDLING +PIDDLY +PIDDOCK +PIDDOCKS +PIDGIN +PIDGINIZATION +PIDGINIZATIONS +PIDGINIZE +PIDGINIZED +PIDGINIZES +PIDGINIZING +PIDGINS +PIE +PIEBALD +PIEBALDS +PIECE +PIECED +PIECEMEAL +PIECER +PIECERS +PIECES +PIECEWISE +PIECEWORK +PIECEWORKER +PIECEWORKERS +PIECEWORKS +PIECING +PIECINGS +PIECRUST +PIECRUSTS +PIED +PIEDFORT +PIEDFORTS +PIEDMONT +PIEDMONTS +PIEFORT +PIEFORTS +PIEHOLE +PIEHOLES +PIEING +PIEPLANT +PIEPLANTS +PIER +PIERCE +PIERCED +PIERCER +PIERCERS +PIERCES +PIERCING +PIERCINGLY +PIERCINGS +PIERIDINE +PIEROGI +PIEROGIES +PIERROT +PIERROTS +PIERS +PIES +PIETA +PIETAS +PIETIES +PIETISM +PIETISMS +PIETIST +PIETISTIC +PIETISTICALLY +PIETISTS +PIETY +PIEZOELECTRIC +PIEZOMETER +PIEZOMETERS +PIEZOMETRIC +PIFFLE +PIFFLED +PIFFLES +PIFFLING +PIG +PIGBOAT +PIGBOATS +PIGEON +PIGEONHOLE +PIGEONHOLED +PIGEONHOLER +PIGEONHOLERS +PIGEONHOLES +PIGEONHOLING +PIGEONITE +PIGEONITES +PIGEONS +PIGEONWING +PIGEONWINGS +PIGFISH +PIGFISHES +PIGGED +PIGGERIES +PIGGERY +PIGGIE +PIGGIER +PIGGIES +PIGGIEST +PIGGIN +PIGGINESS +PIGGINESSES +PIGGING +PIGGINS +PIGGISH +PIGGISHLY +PIGGISHNESS +PIGGISHNESSES +PIGGY +PIGGYBACK +PIGGYBACKED +PIGGYBACKING +PIGGYBACKS +PIGHEADED +PIGHEADEDLY +PIGHEADEDNESS +PIGHEADEDNESSES +PIGLET +PIGLETS +PIGLIKE +PIGMENT +PIGMENTARY +PIGMENTATION +PIGMENTATIONS +PIGMENTED +PIGMENTING +PIGMENTS +PIGMIES +PIGMY +PIGNOLI +PIGNOLIA +PIGNOLIAS +PIGNOLIS +PIGNORA +PIGNUS +PIGNUT +PIGNUTS +PIGOUT +PIGOUTS +PIGPEN +PIGPENS +PIGS +PIGSKIN +PIGSKINS +PIGSNEY +PIGSNEYS +PIGSTICK +PIGSTICKED +PIGSTICKER +PIGSTICKERS +PIGSTICKING +PIGSTICKS +PIGSTIES +PIGSTY +PIGTAIL +PIGTAILED +PIGTAILS +PIGWEED +PIGWEEDS +PIING +PIKA +PIKAKE +PIKAKES +PIKAS +PIKE +PIKED +PIKEMAN +PIKEMEN +PIKEPERCH +PIKEPERCHES +PIKER +PIKERS +PIKES +PIKESTAFF +PIKESTAFFS +PIKESTAVES +PIKI +PIKING +PIKIS +PILAF +PILAFF +PILAFFS +PILAFS +PILAR +PILASTER +PILASTERS +PILAU +PILAUS +PILAW +PILAWS +PILCHARD +PILCHARDS +PILE +PILEA +PILEATE +PILEATED +PILED +PILEI +PILELESS +PILEOUS +PILES +PILEUM +PILEUP +PILEUPS +PILEUS +PILEWORT +PILEWORTS +PILFER +PILFERABLE +PILFERAGE +PILFERAGES +PILFERED +PILFERER +PILFERERS +PILFERING +PILFERPROOF +PILFERS +PILGARLIC +PILGARLICS +PILGRIM +PILGRIMAGE +PILGRIMAGED +PILGRIMAGES +PILGRIMAGING +PILGRIMS +PILI +PILIFORM +PILING +PILINGS +PILIS +PILL +PILLAGE +PILLAGED +PILLAGER +PILLAGERS +PILLAGES +PILLAGING +PILLAR +PILLARED +PILLARING +PILLARLESS +PILLARS +PILLBOX +PILLBOXES +PILLED +PILLING +PILLION +PILLIONS +PILLORIED +PILLORIES +PILLORY +PILLORYING +PILLOW +PILLOWCASE +PILLOWCASES +PILLOWED +PILLOWING +PILLOWS +PILLOWY +PILLS +PILOCARPINE +PILOCARPINES +PILONIDAL +PILOSE +PILOSITIES +PILOSITY +PILOT +PILOTAGE +PILOTAGES +PILOTED +PILOTFISH +PILOTFISHES +PILOTHOUSE +PILOTHOUSES +PILOTING +PILOTINGS +PILOTLESS +PILOTS +PILOUS +PILSENER +PILSENERS +PILSNER +PILSNERS +PILULAR +PILULE +PILULES +PILUS +PILY +PIMA +PIMAS +PIMENTO +PIMENTOS +PIMIENTO +PIMIENTOS +PIMP +PIMPED +PIMPERNEL +PIMPERNELS +PIMPING +PIMPLE +PIMPLED +PIMPLES +PIMPLIER +PIMPLIEST +PIMPLY +PIMPMOBILE +PIMPMOBILES +PIMPS +PIN +PINA +PINACEOUS +PINAFORE +PINAFORED +PINAFORES +PINANG +PINANGS +PINAS +PINASTER +PINASTERS +PINATA +PINATAS +PINBALL +PINBALLED +PINBALLING +PINBALLS +PINBONE +PINBONES +PINCER +PINCERLIKE +PINCERS +PINCH +PINCHBECK +PINCHBECKS +PINCHBUG +PINCHBUGS +PINCHCOCK +PINCHCOCKS +PINCHECK +PINCHECKS +PINCHED +PINCHER +PINCHERS +PINCHES +PINCHING +PINCHPENNY +PINCUSHION +PINCUSHIONS +PINDER +PINDERS +PINDLING +PINE +PINEAL +PINEALECTOMIES +PINEALECTOMIZE +PINEALECTOMIZED +PINEALECTOMIZES +PINEALECTOMY +PINEALS +PINEAPPLE +PINEAPPLES +PINECONE +PINECONES +PINED +PINEDROPS +PINELAND +PINELANDS +PINELIKE +PINENE +PINENES +PINERIES +PINERY +PINES +PINESAP +PINESAPS +PINETA +PINETUM +PINEWOOD +PINEWOODS +PINEY +PINFEATHER +PINFEATHERS +PINFISH +PINFISHES +PINFOLD +PINFOLDED +PINFOLDING +PINFOLDS +PING +PINGED +PINGER +PINGERS +PINGING +PINGO +PINGOES +PINGOS +PINGRASS +PINGRASSES +PINGS +PINGUID +PINHEAD +PINHEADED +PINHEADEDNESS +PINHEADEDNESSES +PINHEADS +PINHOLE +PINHOLES +PINIER +PINIEST +PINING +PINION +PINIONED +PINIONING +PINIONS +PINITE +PINITES +PINITOL +PINITOLS +PINK +PINKED +PINKEN +PINKENED +PINKENING +PINKENS +PINKER +PINKERS +PINKEST +PINKEY +PINKEYE +PINKEYES +PINKEYS +PINKIE +PINKIES +PINKING +PINKINGS +PINKISH +PINKISHNESS +PINKISHNESSES +PINKLY +PINKNESS +PINKNESSES +PINKO +PINKOES +PINKOS +PINKROOT +PINKROOTS +PINKS +PINKY +PINNA +PINNACE +PINNACES +PINNACLE +PINNACLED +PINNACLES +PINNACLING +PINNAE +PINNAL +PINNAS +PINNATE +PINNATED +PINNATELY +PINNATIFID +PINNATION +PINNATIONS +PINNED +PINNER +PINNERS +PINNIES +PINNING +PINNIPED +PINNIPEDS +PINNULA +PINNULAE +PINNULAR +PINNULATE +PINNULE +PINNULES +PINNY +PINOCHLE +PINOCHLES +PINOCLE +PINOCLES +PINOCYTIC +PINOCYTOSES +PINOCYTOSIS +PINOCYTOTIC +PINOCYTOTICALLY +PINOLE +PINOLES +PINON +PINONES +PINONS +PINOT +PINOTS +PINPOINT +PINPOINTED +PINPOINTING +PINPOINTS +PINPRICK +PINPRICKED +PINPRICKING +PINPRICKS +PINS +PINSCHER +PINSCHERS +PINSETTER +PINSETTERS +PINSPOTTER +PINSPOTTERS +PINSTRIPE +PINSTRIPES +PINT +PINTA +PINTADA +PINTADAS +PINTADO +PINTADOES +PINTADOS +PINTAIL +PINTAILED +PINTAILS +PINTANO +PINTANOS +PINTAS +PINTLE +PINTLES +PINTO +PINTOES +PINTOS +PINTS +PINTSIZE +PINTSIZED +PINUP +PINUPS +PINWALE +PINWALES +PINWEED +PINWEEDS +PINWHEEL +PINWHEELED +PINWHEELING +PINWHEELS +PINWORK +PINWORKS +PINWORM +PINWORMS +PINWRENCH +PINWRENCHES +PINY +PINYIN +PINYON +PINYONS +PIOLET +PIOLETS +PION +PIONEER +PIONEERED +PIONEERING +PIONEERS +PIONIC +PIONS +PIOSITIES +PIOSITY +PIOUS +PIOUSLY +PIOUSNESS +PIOUSNESSES +PIP +PIPAGE +PIPAGES +PIPAL +PIPALS +PIPE +PIPEAGE +PIPEAGES +PIPED +PIPEFISH +PIPEFISHES +PIPEFUL +PIPEFULS +PIPELESS +PIPELIKE +PIPELINE +PIPELINED +PIPELINES +PIPELINING +PIPER +PIPERAZINE +PIPERAZINES +PIPERIDINE +PIPERIDINES +PIPERINE +PIPERINES +PIPERONAL +PIPERONALS +PIPERS +PIPES +PIPESTEM +PIPESTEMS +PIPESTONE +PIPESTONES +PIPET +PIPETS +PIPETTE +PIPETTED +PIPETTES +PIPETTING +PIPIER +PIPIEST +PIPINESS +PIPINESSES +PIPING +PIPINGLY +PIPINGS +PIPISTREL +PIPISTRELS +PIPIT +PIPITS +PIPKIN +PIPKINS +PIPPED +PIPPIN +PIPPING +PIPPINS +PIPS +PIPSISSEWA +PIPSISSEWAS +PIPSQUEAK +PIPSQUEAKS +PIPY +PIQUANCE +PIQUANCES +PIQUANCIES +PIQUANCY +PIQUANT +PIQUANTLY +PIQUANTNESS +PIQUANTNESSES +PIQUE +PIQUED +PIQUES +PIQUET +PIQUETS +PIQUING +PIRACETAM +PIRACETAMS +PIRACIES +PIRACY +PIRAGUA +PIRAGUAS +PIRANA +PIRANAS +PIRANHA +PIRANHAS +PIRARUCU +PIRARUCUS +PIRATE +PIRATED +PIRATES +PIRATIC +PIRATICAL +PIRATICALLY +PIRATING +PIRAYA +PIRAYAS +PIRIFORM +PIRN +PIRNS +PIROG +PIROGEN +PIROGHI +PIROGI +PIROGIES +PIROGUE +PIROGUES +PIROJKI +PIROPLASM +PIROPLASMA +PIROPLASMATA +PIROPLASMS +PIROQUE +PIROQUES +PIROSHKI +PIROUETTE +PIROUETTED +PIROUETTES +PIROUETTING +PIROZHKI +PIROZHOK +PIS +PISCARIES +PISCARY +PISCATOR +PISCATORIAL +PISCATORS +PISCATORY +PISCICULTURE +PISCICULTURES +PISCIFORM +PISCINA +PISCINAE +PISCINAL +PISCINAS +PISCINE +PISCIVORE +PISCIVORES +PISCIVOROUS +PISCO +PISCOS +PISH +PISHED +PISHER +PISHERS +PISHES +PISHING +PISHOGE +PISHOGES +PISHOGUE +PISHOGUES +PISIFORM +PISIFORMS +PISMIRE +PISMIRES +PISO +PISOLITE +PISOLITES +PISOLITH +PISOLITHS +PISOLITIC +PISOS +PISS +PISSANT +PISSANTS +PISSED +PISSER +PISSERS +PISSES +PISSING +PISSOIR +PISSOIRS +PISTACHE +PISTACHES +PISTACHIO +PISTACHIOS +PISTAREEN +PISTAREENS +PISTE +PISTES +PISTIL +PISTILLATE +PISTILS +PISTOL +PISTOLE +PISTOLED +PISTOLEER +PISTOLEERS +PISTOLERO +PISTOLEROS +PISTOLES +PISTOLIER +PISTOLIERS +PISTOLING +PISTOLLED +PISTOLLING +PISTOLS +PISTON +PISTONS +PISTOU +PISTOUS +PIT +PITA +PITAHAYA +PITAHAYAS +PITAPAT +PITAPATS +PITAPATTED +PITAPATTING +PITAS +PITAYA +PITAYAS +PITCH +PITCHBLENDE +PITCHBLENDES +PITCHED +PITCHER +PITCHERFUL +PITCHERFULS +PITCHERS +PITCHERSFUL +PITCHES +PITCHFORK +PITCHFORKED +PITCHFORKING +PITCHFORKS +PITCHIER +PITCHIEST +PITCHILY +PITCHING +PITCHMAN +PITCHMEN +PITCHOUT +PITCHOUTS +PITCHPOLE +PITCHPOLED +PITCHPOLES +PITCHPOLING +PITCHWOMAN +PITCHWOMEN +PITCHY +PITEOUS +PITEOUSLY +PITEOUSNESS +PITEOUSNESSES +PITFALL +PITFALLS +PITH +PITHEAD +PITHEADS +PITHECANTHROPI +PITHECANTHROPUS +PITHECOID +PITHED +PITHIER +PITHIEST +PITHILY +PITHINESS +PITHINESSES +PITHING +PITHLESS +PITHS +PITHY +PITIABLE +PITIABLENESS +PITIABLENESSES +PITIABLY +PITIED +PITIER +PITIERS +PITIES +PITIFUL +PITIFULLER +PITIFULLEST +PITIFULLY +PITIFULNESS +PITIFULNESSES +PITILESS +PITILESSLY +PITILESSNESS +PITILESSNESSES +PITMAN +PITMANS +PITMEN +PITON +PITONS +PITS +PITSAW +PITSAWS +PITTA +PITTANCE +PITTANCES +PITTAS +PITTED +PITTING +PITTINGS +PITTOSPORUM +PITTOSPORUMS +PITUITARIES +PITUITARY +PITY +PITYING +PITYINGLY +PITYRIASES +PITYRIASIS +PIU +PIVOT +PIVOTABLE +PIVOTAL +PIVOTALLY +PIVOTED +PIVOTING +PIVOTMAN +PIVOTMEN +PIVOTS +PIX +PIXEL +PIXELS +PIXES +PIXIE +PIXIEISH +PIXIES +PIXILATED +PIXILATION +PIXILATIONS +PIXILLATED +PIXINESS +PIXINESSES +PIXY +PIXYISH +PIZAZZ +PIZAZZES +PIZAZZY +PIZZA +PIZZALIKE +PIZZAS +PIZZAZ +PIZZAZES +PIZZAZZ +PIZZAZZES +PIZZAZZY +PIZZELLE +PIZZELLES +PIZZERIA +PIZZERIAS +PIZZICATI +PIZZICATO +PIZZLE +PIZZLES +PLACABILITIES +PLACABILITY +PLACABLE +PLACABLY +PLACARD +PLACARDED +PLACARDING +PLACARDS +PLACATE +PLACATED +PLACATER +PLACATERS +PLACATES +PLACATING +PLACATINGLY +PLACATION +PLACATIONS +PLACATIVE +PLACATORY +PLACE +PLACEABLE +PLACEBO +PLACEBOES +PLACEBOS +PLACED +PLACEHOLDER +PLACEHOLDERS +PLACEKICK +PLACEKICKED +PLACEKICKER +PLACEKICKERS +PLACEKICKING +PLACEKICKS +PLACELESS +PLACELESSLY +PLACEMAN +PLACEMEN +PLACEMENT +PLACEMENTS +PLACENTA +PLACENTAE +PLACENTAL +PLACENTALS +PLACENTAS +PLACENTATION +PLACENTATIONS +PLACER +PLACERS +PLACES +PLACET +PLACETS +PLACID +PLACIDITIES +PLACIDITY +PLACIDLY +PLACIDNESS +PLACIDNESSES +PLACING +PLACK +PLACKET +PLACKETS +PLACKS +PLACODERM +PLACODERMS +PLACOID +PLACOIDS +PLAFOND +PLAFONDS +PLAGAL +PLAGE +PLAGES +PLAGIARIES +PLAGIARISE +PLAGIARISED +PLAGIARISES +PLAGIARISING +PLAGIARISM +PLAGIARISMS +PLAGIARIST +PLAGIARISTIC +PLAGIARISTS +PLAGIARIZE +PLAGIARIZED +PLAGIARIZER +PLAGIARIZERS +PLAGIARIZES +PLAGIARIZING +PLAGIARY +PLAGIOCLASE +PLAGIOCLASES +PLAGIOTROPIC +PLAGUE +PLAGUED +PLAGUER +PLAGUERS +PLAGUES +PLAGUEY +PLAGUILY +PLAGUING +PLAGUY +PLAICE +PLAICES +PLAID +PLAIDED +PLAIDS +PLAIN +PLAINCHANT +PLAINCHANTS +PLAINCLOTHES +PLAINCLOTHESMAN +PLAINCLOTHESMEN +PLAINED +PLAINER +PLAINEST +PLAINING +PLAINLY +PLAINNESS +PLAINNESSES +PLAINS +PLAINSMAN +PLAINSMEN +PLAINSONG +PLAINSONGS +PLAINSPOKEN +PLAINSPOKENNESS +PLAINT +PLAINTEXT +PLAINTEXTS +PLAINTFUL +PLAINTIFF +PLAINTIFFS +PLAINTIVE +PLAINTIVELY +PLAINTIVENESS +PLAINTIVENESSES +PLAINTS +PLAISTER +PLAISTERED +PLAISTERING +PLAISTERS +PLAIT +PLAITED +PLAITER +PLAITERS +PLAITING +PLAITINGS +PLAITS +PLAN +PLANAR +PLANARIA +PLANARIAN +PLANARIANS +PLANARIAS +PLANARITIES +PLANARITY +PLANATE +PLANATION +PLANATIONS +PLANCH +PLANCHE +PLANCHES +PLANCHET +PLANCHETS +PLANCHETTE +PLANCHETTES +PLANE +PLANED +PLANELOAD +PLANELOADS +PLANENESS +PLANENESSES +PLANER +PLANERS +PLANES +PLANESIDE +PLANESIDES +PLANET +PLANETARIA +PLANETARIES +PLANETARIUM +PLANETARIUMS +PLANETARY +PLANETESIMAL +PLANETESIMALS +PLANETLIKE +PLANETOID +PLANETOIDAL +PLANETOIDS +PLANETOLOGICAL +PLANETOLOGIES +PLANETOLOGIST +PLANETOLOGISTS +PLANETOLOGY +PLANETS +PLANETWIDE +PLANFORM +PLANFORMS +PLANGENCIES +PLANGENCY +PLANGENT +PLANGENTLY +PLANIMETER +PLANIMETERS +PLANIMETRIC +PLANIMETRICALLY +PLANING +PLANISH +PLANISHED +PLANISHER +PLANISHERS +PLANISHES +PLANISHING +PLANISPHERE +PLANISPHERES +PLANISPHERIC +PLANK +PLANKED +PLANKING +PLANKINGS +PLANKS +PLANKTER +PLANKTERS +PLANKTON +PLANKTONIC +PLANKTONS +PLANLESS +PLANLESSLY +PLANLESSNESS +PLANLESSNESSES +PLANNED +PLANNER +PLANNERS +PLANNING +PLANNINGS +PLANOGRAPHIC +PLANOGRAPHIES +PLANOGRAPHY +PLANOSOL +PLANOSOLS +PLANS +PLANT +PLANTABLE +PLANTAIN +PLANTAINS +PLANTAR +PLANTATION +PLANTATIONS +PLANTED +PLANTER +PLANTERS +PLANTIGRADE +PLANTIGRADES +PLANTING +PLANTINGS +PLANTLET +PLANTLETS +PLANTLIKE +PLANTOCRACIES +PLANTOCRACY +PLANTS +PLANTSMAN +PLANTSMEN +PLANULA +PLANULAE +PLANULAR +PLANULATE +PLANULOID +PLAQUE +PLAQUES +PLASH +PLASHED +PLASHER +PLASHERS +PLASHES +PLASHIER +PLASHIEST +PLASHING +PLASHY +PLASM +PLASMA +PLASMAGEL +PLASMAGELS +PLASMAGENE +PLASMAGENES +PLASMALEMMA +PLASMALEMMAS +PLASMAPHERESES +PLASMAPHERESIS +PLASMAS +PLASMASOL +PLASMASOLS +PLASMATIC +PLASMIC +PLASMID +PLASMIDS +PLASMIN +PLASMINOGEN +PLASMINOGENS +PLASMINS +PLASMODESM +PLASMODESMA +PLASMODESMAS +PLASMODESMATA +PLASMODIA +PLASMODIUM +PLASMOGAMIES +PLASMOGAMY +PLASMOID +PLASMOIDS +PLASMOLYSES +PLASMOLYSIS +PLASMOLYTIC +PLASMOLYZE +PLASMOLYZED +PLASMOLYZES +PLASMOLYZING +PLASMON +PLASMONS +PLASMS +PLASTER +PLASTERBOARD +PLASTERBOARDS +PLASTERED +PLASTERER +PLASTERERS +PLASTERING +PLASTERINGS +PLASTERS +PLASTERWORK +PLASTERWORKS +PLASTERY +PLASTIC +PLASTICALLY +PLASTICENE +PLASTICENES +PLASTICINE +PLASTICINES +PLASTICITIES +PLASTICITY +PLASTICIZATION +PLASTICIZATIONS +PLASTICIZE +PLASTICIZED +PLASTICIZER +PLASTICIZERS +PLASTICIZES +PLASTICIZING +PLASTICKY +PLASTICLY +PLASTICS +PLASTID +PLASTIDIAL +PLASTIDS +PLASTIQUE +PLASTIQUES +PLASTISOL +PLASTISOLS +PLASTOCYANIN +PLASTOCYANINS +PLASTOQUINONE +PLASTOQUINONES +PLASTRAL +PLASTRON +PLASTRONS +PLASTRUM +PLASTRUMS +PLAT +PLATAN +PLATANE +PLATANES +PLATANS +PLATE +PLATEAU +PLATEAUED +PLATEAUING +PLATEAUS +PLATEAUX +PLATED +PLATEFUL +PLATEFULS +PLATEGLASS +PLATELET +PLATELETS +PLATELIKE +PLATEMAKER +PLATEMAKERS +PLATEMAKING +PLATEMAKINGS +PLATEN +PLATENS +PLATER +PLATERESQUE +PLATERS +PLATES +PLATESFUL +PLATFORM +PLATFORMS +PLATIER +PLATIES +PLATIEST +PLATINA +PLATINAS +PLATING +PLATINGS +PLATINIC +PLATINIZE +PLATINIZED +PLATINIZES +PLATINIZING +PLATINOCYANIDE +PLATINOCYANIDES +PLATINOID +PLATINOIDS +PLATINOUS +PLATINUM +PLATINUMS +PLATITUDE +PLATITUDES +PLATITUDINAL +PLATITUDINARIAN +PLATITUDINIZE +PLATITUDINIZED +PLATITUDINIZES +PLATITUDINIZING +PLATITUDINOUS +PLATITUDINOUSLY +PLATONIC +PLATONICALLY +PLATONISM +PLATONISMS +PLATOON +PLATOONED +PLATOONING +PLATOONS +PLATS +PLATTED +PLATTER +PLATTERFUL +PLATTERFULS +PLATTERS +PLATTERSFUL +PLATTING +PLATY +PLATYFISH +PLATYFISHES +PLATYHELMINTH +PLATYHELMINTHIC +PLATYHELMINTHS +PLATYPI +PLATYPUS +PLATYPUSES +PLATYRRHINE +PLATYRRHINES +PLATYS +PLAUDIT +PLAUDITS +PLAUSIBILITIES +PLAUSIBILITY +PLAUSIBLE +PLAUSIBLENESS +PLAUSIBLENESSES +PLAUSIBLY +PLAUSIVE +PLAY +PLAYA +PLAYABILITIES +PLAYABILITY +PLAYABLE +PLAYACT +PLAYACTED +PLAYACTING +PLAYACTINGS +PLAYACTOR +PLAYACTORS +PLAYACTS +PLAYAS +PLAYBACK +PLAYBACKS +PLAYBILL +PLAYBILLS +PLAYBOOK +PLAYBOOKS +PLAYBOY +PLAYBOYS +PLAYDATE +PLAYDATES +PLAYDAY +PLAYDAYS +PLAYDOWN +PLAYDOWNS +PLAYED +PLAYER +PLAYERS +PLAYFELLOW +PLAYFELLOWS +PLAYFIELD +PLAYFIELDS +PLAYFUL +PLAYFULLY +PLAYFULNESS +PLAYFULNESSES +PLAYGIRL +PLAYGIRLS +PLAYGOER +PLAYGOERS +PLAYGOING +PLAYGOINGS +PLAYGROUND +PLAYGROUNDS +PLAYGROUP +PLAYGROUPS +PLAYHOUSE +PLAYHOUSES +PLAYING +PLAYLAND +PLAYLANDS +PLAYLESS +PLAYLET +PLAYLETS +PLAYLIKE +PLAYLIST +PLAYLISTS +PLAYMAKER +PLAYMAKERS +PLAYMAKING +PLAYMAKINGS +PLAYMATE +PLAYMATES +PLAYOFF +PLAYOFFS +PLAYPEN +PLAYPENS +PLAYROOM +PLAYROOMS +PLAYS +PLAYSUIT +PLAYSUITS +PLAYTHING +PLAYTHINGS +PLAYTIME +PLAYTIMES +PLAYWEAR +PLAYWRIGHT +PLAYWRIGHTING +PLAYWRIGHTINGS +PLAYWRIGHTS +PLAYWRITING +PLAYWRITINGS +PLAZA +PLAZAS +PLEA +PLEACH +PLEACHED +PLEACHES +PLEACHING +PLEAD +PLEADABLE +PLEADED +PLEADER +PLEADERS +PLEADING +PLEADINGLY +PLEADINGS +PLEADS +PLEAS +PLEASANCE +PLEASANCES +PLEASANT +PLEASANTER +PLEASANTEST +PLEASANTLY +PLEASANTNESS +PLEASANTNESSES +PLEASANTRIES +PLEASANTRY +PLEASE +PLEASED +PLEASER +PLEASERS +PLEASES +PLEASING +PLEASINGLY +PLEASINGNESS +PLEASINGNESSES +PLEASURABILITY +PLEASURABLE +PLEASURABLENESS +PLEASURABLY +PLEASURE +PLEASURED +PLEASURELESS +PLEASURES +PLEASURING +PLEAT +PLEATED +PLEATER +PLEATERS +PLEATHER +PLEATHERS +PLEATING +PLEATLESS +PLEATS +PLEB +PLEBE +PLEBEIAN +PLEBEIANISM +PLEBEIANISMS +PLEBEIANLY +PLEBEIANS +PLEBES +PLEBISCITARY +PLEBISCITE +PLEBISCITES +PLEBS +PLECOPTERAN +PLECOPTERANS +PLECTRA +PLECTRON +PLECTRONS +PLECTRUM +PLECTRUMS +PLED +PLEDGE +PLEDGED +PLEDGEE +PLEDGEES +PLEDGEOR +PLEDGEORS +PLEDGER +PLEDGERS +PLEDGES +PLEDGET +PLEDGETS +PLEDGING +PLEDGOR +PLEDGORS +PLEIAD +PLEIADES +PLEIADS +PLEINAIRISM +PLEINAIRISMS +PLEINAIRIST +PLEINAIRISTS +PLEIOCENE +PLEIOTAXIES +PLEIOTAXY +PLEIOTROPIC +PLEIOTROPIES +PLEIOTROPY +PLENA +PLENARIES +PLENARILY +PLENARY +PLENCH +PLENCHES +PLENIPOTENT +PLENIPOTENTIARY +PLENISH +PLENISHED +PLENISHES +PLENISHING +PLENISM +PLENISMS +PLENIST +PLENISTS +PLENITUDE +PLENITUDES +PLENITUDINOUS +PLENTEOUS +PLENTEOUSLY +PLENTEOUSNESS +PLENTEOUSNESSES +PLENTIES +PLENTIFUL +PLENTIFULLY +PLENTIFULNESS +PLENTIFULNESSES +PLENTITUDE +PLENTITUDES +PLENTY +PLENUM +PLENUMS +PLEOCHROIC +PLEOCHROISM +PLEOCHROISMS +PLEOMORPHIC +PLEOMORPHISM +PLEOMORPHISMS +PLEON +PLEONAL +PLEONASM +PLEONASMS +PLEONASTIC +PLEONASTICALLY +PLEONIC +PLEONS +PLEOPOD +PLEOPODS +PLEROCERCOID +PLEROCERCOIDS +PLESIOSAUR +PLESIOSAURS +PLESSOR +PLESSORS +PLETHORA +PLETHORAS +PLETHORIC +PLETHYSMOGRAM +PLETHYSMOGRAMS +PLETHYSMOGRAPH +PLETHYSMOGRAPHS +PLETHYSMOGRAPHY +PLEURA +PLEURAE +PLEURAL +PLEURAS +PLEURISIES +PLEURISY +PLEURITIC +PLEURON +PLEUROPNEUMONIA +PLEUSTON +PLEUSTONIC +PLEUSTONS +PLEW +PLEWS +PLEX +PLEXAL +PLEXES +PLEXIFORM +PLEXOR +PLEXORS +PLEXUS +PLEXUSES +PLIABILITIES +PLIABILITY +PLIABLE +PLIABLENESS +PLIABLENESSES +PLIABLY +PLIANCIES +PLIANCY +PLIANT +PLIANTLY +PLIANTNESS +PLIANTNESSES +PLICA +PLICAE +PLICAL +PLICATE +PLICATED +PLICATELY +PLICATION +PLICATIONS +PLICATURE +PLICATURES +PLIE +PLIED +PLIER +PLIERS +PLIES +PLIGHT +PLIGHTED +PLIGHTER +PLIGHTERS +PLIGHTING +PLIGHTS +PLIMSOL +PLIMSOLE +PLIMSOLES +PLIMSOLL +PLIMSOLLS +PLIMSOLS +PLINK +PLINKED +PLINKER +PLINKERS +PLINKING +PLINKS +PLINTH +PLINTHS +PLIOCENE +PLIOFILM +PLIOFILMS +PLIOTRON +PLIOTRONS +PLISKIE +PLISKIES +PLISKY +PLISSE +PLISSES +PLOD +PLODDED +PLODDER +PLODDERS +PLODDING +PLODDINGLY +PLODS +PLOIDIES +PLOIDY +PLONK +PLONKED +PLONKING +PLONKS +PLOP +PLOPPED +PLOPPING +PLOPS +PLOSION +PLOSIONS +PLOSIVE +PLOSIVES +PLOT +PLOTLESS +PLOTLESSNESS +PLOTLESSNESSES +PLOTLINE +PLOTLINES +PLOTS +PLOTTAGE +PLOTTAGES +PLOTTED +PLOTTER +PLOTTERS +PLOTTIER +PLOTTIES +PLOTTIEST +PLOTTING +PLOTTY +PLOTZ +PLOTZED +PLOTZES +PLOTZING +PLOUGH +PLOUGHED +PLOUGHER +PLOUGHERS +PLOUGHING +PLOUGHS +PLOVER +PLOVERS +PLOW +PLOWABLE +PLOWBACK +PLOWBACKS +PLOWBOY +PLOWBOYS +PLOWED +PLOWER +PLOWERS +PLOWHEAD +PLOWHEADS +PLOWING +PLOWLAND +PLOWLANDS +PLOWMAN +PLOWMEN +PLOWS +PLOWSHARE +PLOWSHARES +PLOY +PLOYED +PLOYING +PLOYS +PLUCK +PLUCKED +PLUCKER +PLUCKERS +PLUCKIER +PLUCKIEST +PLUCKILY +PLUCKINESS +PLUCKINESSES +PLUCKING +PLUCKS +PLUCKY +PLUG +PLUGGED +PLUGGER +PLUGGERS +PLUGGING +PLUGLESS +PLUGOLA +PLUGOLAS +PLUGS +PLUGUGLIES +PLUGUGLY +PLUM +PLUMAGE +PLUMAGED +PLUMAGES +PLUMATE +PLUMB +PLUMBABLE +PLUMBAGO +PLUMBAGOS +PLUMBED +PLUMBEOUS +PLUMBER +PLUMBERIES +PLUMBERS +PLUMBERY +PLUMBIC +PLUMBING +PLUMBINGS +PLUMBISM +PLUMBISMS +PLUMBNESS +PLUMBNESSES +PLUMBOUS +PLUMBS +PLUMBUM +PLUMBUMS +PLUME +PLUMED +PLUMELET +PLUMELETS +PLUMERIA +PLUMERIAS +PLUMES +PLUMIER +PLUMIEST +PLUMING +PLUMIPED +PLUMIPEDS +PLUMLIKE +PLUMMER +PLUMMEST +PLUMMET +PLUMMETED +PLUMMETING +PLUMMETS +PLUMMIER +PLUMMIEST +PLUMMY +PLUMOSE +PLUMOSELY +PLUMOSITIES +PLUMOSITY +PLUMP +PLUMPED +PLUMPEN +PLUMPENED +PLUMPENING +PLUMPENS +PLUMPER +PLUMPERS +PLUMPEST +PLUMPING +PLUMPISH +PLUMPLY +PLUMPNESS +PLUMPNESSES +PLUMPS +PLUMS +PLUMULAR +PLUMULE +PLUMULES +PLUMULOSE +PLUMY +PLUNDER +PLUNDERED +PLUNDERER +PLUNDERERS +PLUNDERING +PLUNDEROUS +PLUNDERS +PLUNGE +PLUNGED +PLUNGER +PLUNGERS +PLUNGES +PLUNGING +PLUNK +PLUNKED +PLUNKER +PLUNKERS +PLUNKIER +PLUNKIEST +PLUNKING +PLUNKS +PLUNKY +PLUPERFECT +PLUPERFECTS +PLURAL +PLURALISM +PLURALISMS +PLURALIST +PLURALISTIC +PLURALISTICALLY +PLURALISTS +PLURALITIES +PLURALITY +PLURALIZATION +PLURALIZATIONS +PLURALIZE +PLURALIZED +PLURALIZES +PLURALIZING +PLURALLY +PLURALS +PLURIPOTENT +PLUS +PLUSES +PLUSH +PLUSHER +PLUSHES +PLUSHEST +PLUSHIER +PLUSHIEST +PLUSHILY +PLUSHINESS +PLUSHINESSES +PLUSHLY +PLUSHNESS +PLUSHNESSES +PLUSHY +PLUSSAGE +PLUSSAGES +PLUSSES +PLUTEI +PLUTEUS +PLUTOCRACIES +PLUTOCRACY +PLUTOCRAT +PLUTOCRATIC +PLUTOCRATICALLY +PLUTOCRATS +PLUTON +PLUTONIAN +PLUTONIC +PLUTONISM +PLUTONISMS +PLUTONIUM +PLUTONIUMS +PLUTONS +PLUVIAL +PLUVIALS +PLUVIAN +PLUVIOSE +PLUVIOUS +PLY +PLYER +PLYERS +PLYING +PLYINGLY +PLYOMETRIC +PLYOMETRICS +PLYWOOD +PLYWOODS +PNEUMA +PNEUMAS +PNEUMATIC +PNEUMATICALLY +PNEUMATICITIES +PNEUMATICITY +PNEUMATICS +PNEUMATOLOGIES +PNEUMATOLOGY +PNEUMATOLYTIC +PNEUMATOPHORE +PNEUMATOPHORES +PNEUMOCOCCAL +PNEUMOCOCCI +PNEUMOCOCCUS +PNEUMOCONIOSES +PNEUMOCONIOSIS +PNEUMOGRAPH +PNEUMOGRAPHS +PNEUMONECTOMIES +PNEUMONECTOMY +PNEUMONIA +PNEUMONIAS +PNEUMONIC +PNEUMONITIS +PNEUMONITISES +PNEUMOTHORACES +PNEUMOTHORAX +PNEUMOTHORAXES +POACEOUS +POACH +POACHABLE +POACHED +POACHER +POACHERS +POACHES +POACHIER +POACHIEST +POACHING +POACHY +POBLANO +POBLANOS +POBOY +POBOYS +POCHARD +POCHARDS +POCK +POCKED +POCKET +POCKETABLE +POCKETBOOK +POCKETBOOKS +POCKETED +POCKETER +POCKETERS +POCKETFUL +POCKETFULS +POCKETING +POCKETKNIFE +POCKETKNIVES +POCKETS +POCKETSFUL +POCKIER +POCKIEST +POCKILY +POCKING +POCKMARK +POCKMARKED +POCKMARKING +POCKMARKS +POCKS +POCKY +POCO +POCOCURANTE +POCOCURANTISM +POCOCURANTISMS +POCOSEN +POCOSENS +POCOSIN +POCOSINS +POCOSON +POCOSONS +POD +PODAGRA +PODAGRAL +PODAGRAS +PODAGRIC +PODAGROUS +PODDED +PODDING +PODESTA +PODESTAS +PODGIER +PODGIEST +PODGILY +PODGY +PODIA +PODIATRIC +PODIATRIES +PODIATRIST +PODIATRISTS +PODIATRY +PODITE +PODITES +PODITIC +PODIUM +PODIUMS +PODLIKE +PODOCARP +PODOMERE +PODOMERES +PODOPHYLLI +PODOPHYLLIN +PODOPHYLLINS +PODOPHYLLUM +PODOPHYLLUMS +PODS +PODSOL +PODSOLIC +PODSOLIZATION +PODSOLIZATIONS +PODSOLS +PODZOL +PODZOLIC +PODZOLIZATION +PODZOLIZATIONS +PODZOLIZE +PODZOLIZED +PODZOLIZES +PODZOLIZING +PODZOLS +POECHORE +POECHORES +POEM +POEMS +POENOLOGIES +POENOLOGY +POESIES +POESY +POET +POETASTER +POETASTERS +POETESS +POETESSES +POETIC +POETICAL +POETICALLY +POETICALNESS +POETICALNESSES +POETICISM +POETICISMS +POETICIZE +POETICIZED +POETICIZES +POETICIZING +POETICS +POETISE +POETISED +POETISER +POETISERS +POETISES +POETISING +POETIZE +POETIZED +POETIZER +POETIZERS +POETIZES +POETIZING +POETLESS +POETLIKE +POETRIES +POETRY +POETS +POGEY +POGEYS +POGIES +POGONIA +POGONIAS +POGONIP +POGONIPS +POGONOPHORAN +POGONOPHORANS +POGROM +POGROMED +POGROMING +POGROMIST +POGROMISTS +POGROMS +POGY +POH +POI +POIGNANCE +POIGNANCES +POIGNANCIES +POIGNANCY +POIGNANT +POIGNANTLY +POIKILOTHERM +POIKILOTHERMIC +POIKILOTHERMS +POILU +POILUS +POINCIANA +POINCIANAS +POIND +POINDED +POINDING +POINDS +POINSETTIA +POINSETTIAS +POINT +POINTABLE +POINTE +POINTED +POINTEDLY +POINTEDNESS +POINTEDNESSES +POINTELLE +POINTELLES +POINTER +POINTERS +POINTES +POINTIER +POINTIEST +POINTILLISM +POINTILLISMS +POINTILLIST +POINTILLISTIC +POINTILLISTS +POINTING +POINTLESS +POINTLESSLY +POINTLESSNESS +POINTLESSNESSES +POINTMAN +POINTMEN +POINTS +POINTY +POIS +POISE +POISED +POISER +POISERS +POISES +POISHA +POISING +POISON +POISONED +POISONER +POISONERS +POISONING +POISONOUS +POISONOUSLY +POISONS +POISONWOOD +POISONWOODS +POITREL +POITRELS +POKABLE +POKE +POKEBERRIES +POKEBERRY +POKED +POKER +POKEROOT +POKEROOTS +POKERS +POKES +POKEWEED +POKEWEEDS +POKEY +POKEYS +POKIER +POKIES +POKIEST +POKILY +POKINESS +POKINESSES +POKING +POKY +POL +POLAR +POLARIMETER +POLARIMETERS +POLARIMETRIC +POLARIMETRIES +POLARIMETRY +POLARISCOPE +POLARISCOPES +POLARISCOPIC +POLARISE +POLARISED +POLARISES +POLARISING +POLARITIES +POLARITY +POLARIZABILITY +POLARIZABLE +POLARIZATION +POLARIZATIONS +POLARIZE +POLARIZED +POLARIZER +POLARIZERS +POLARIZES +POLARIZING +POLAROGRAPHIC +POLAROGRAPHIES +POLAROGRAPHY +POLARON +POLARONS +POLARS +POLDER +POLDERS +POLE +POLEAX +POLEAXE +POLEAXED +POLEAXES +POLEAXING +POLECAT +POLECATS +POLED +POLEIS +POLELESS +POLEMIC +POLEMICAL +POLEMICALLY +POLEMICIST +POLEMICISTS +POLEMICIZE +POLEMICIZED +POLEMICIZES +POLEMICIZING +POLEMICS +POLEMIST +POLEMISTS +POLEMIZE +POLEMIZED +POLEMIZES +POLEMIZING +POLEMONIUM +POLEMONIUMS +POLENTA +POLENTAS +POLER +POLERS +POLES +POLESTAR +POLESTARS +POLEWARD +POLEYN +POLEYNS +POLICE +POLICED +POLICEMAN +POLICEMEN +POLICER +POLICERS +POLICES +POLICEWOMAN +POLICEWOMEN +POLICIES +POLICING +POLICY +POLICYHOLDER +POLICYHOLDERS +POLIES +POLING +POLIO +POLIOMYELITIDES +POLIOMYELITIS +POLIOS +POLIOVIRUS +POLIOVIRUSES +POLIS +POLISH +POLISHED +POLISHER +POLISHERS +POLISHES +POLISHING +POLITBURO +POLITBUROS +POLITE +POLITELY +POLITENESS +POLITENESSES +POLITER +POLITESSE +POLITESSES +POLITEST +POLITIC +POLITICAL +POLITICALIZE +POLITICALIZED +POLITICALIZES +POLITICALIZING +POLITICALLY +POLITICIAN +POLITICIANS +POLITICISE +POLITICISED +POLITICISES +POLITICISING +POLITICIZATION +POLITICIZATIONS +POLITICIZE +POLITICIZED +POLITICIZES +POLITICIZING +POLITICK +POLITICKED +POLITICKER +POLITICKERS +POLITICKING +POLITICKS +POLITICLY +POLITICO +POLITICOES +POLITICOS +POLITICS +POLITIES +POLITY +POLKA +POLKAED +POLKAING +POLKAS +POLL +POLLACK +POLLACKS +POLLARD +POLLARDED +POLLARDING +POLLARDS +POLLED +POLLEE +POLLEES +POLLEN +POLLENATE +POLLENATED +POLLENATES +POLLENATING +POLLENED +POLLENING +POLLENIZER +POLLENIZERS +POLLENOSES +POLLENOSIS +POLLENS +POLLER +POLLERS +POLLEX +POLLICAL +POLLICES +POLLINATE +POLLINATED +POLLINATES +POLLINATING +POLLINATION +POLLINATIONS +POLLINATOR +POLLINATORS +POLLING +POLLINIA +POLLINIC +POLLINIUM +POLLINIZE +POLLINIZED +POLLINIZER +POLLINIZERS +POLLINIZES +POLLINIZING +POLLINOSES +POLLINOSIS +POLLIST +POLLISTS +POLLIWOG +POLLIWOGS +POLLOCK +POLLOCKS +POLLS +POLLSTER +POLLSTERS +POLLTAKER +POLLTAKERS +POLLUTANT +POLLUTANTS +POLLUTE +POLLUTED +POLLUTER +POLLUTERS +POLLUTES +POLLUTING +POLLUTION +POLLUTIONS +POLLUTIVE +POLLYWOG +POLLYWOGS +POLO +POLOIST +POLOISTS +POLONAISE +POLONAISES +POLONIUM +POLONIUMS +POLOS +POLS +POLTERGEIST +POLTERGEISTS +POLTROON +POLTROONERIES +POLTROONERY +POLTROONS +POLY +POLYACRYLAMIDE +POLYACRYLAMIDES +POLYALCOHOL +POLYALCOHOLS +POLYAMIDE +POLYAMIDES +POLYAMINE +POLYAMINES +POLYANDRIES +POLYANDROUS +POLYANDRY +POLYANTHA +POLYANTHAS +POLYANTHI +POLYANTHUS +POLYANTHUSES +POLYATOMIC +POLYBASIC +POLYBRID +POLYBRIDS +POLYBUTADIENE +POLYBUTADIENES +POLYCARBONATE +POLYCARBONATES +POLYCARPIES +POLYCARPY +POLYCENTRIC +POLYCENTRISM +POLYCENTRISMS +POLYCHAETE +POLYCHAETES +POLYCHETE +POLYCHETES +POLYCHOTOMIES +POLYCHOTOMOUS +POLYCHOTOMY +POLYCHROMATIC +POLYCHROME +POLYCHROMED +POLYCHROMES +POLYCHROMIES +POLYCHROMING +POLYCHROMY +POLYCISTRONIC +POLYCLINIC +POLYCLINICS +POLYCLONAL +POLYCOT +POLYCOTS +POLYCRYSTAL +POLYCRYSTALLINE +POLYCRYSTALS +POLYCYCLIC +POLYCYSTIC +POLYCYTHEMIA +POLYCYTHEMIAS +POLYCYTHEMIC +POLYDACTYL +POLYDACTYLIES +POLYDACTYLY +POLYDIPSIA +POLYDIPSIAS +POLYDIPSIC +POLYDISPERSE +POLYDISPERSITY +POLYELECTROLYTE +POLYEMBRYONIC +POLYEMBRYONIES +POLYEMBRYONY +POLYENE +POLYENES +POLYENIC +POLYESTER +POLYESTERS +POLYESTROUS +POLYETHYLENE +POLYETHYLENES +POLYGALA +POLYGALAS +POLYGAMIC +POLYGAMIES +POLYGAMIST +POLYGAMISTS +POLYGAMIZE +POLYGAMIZED +POLYGAMIZES +POLYGAMIZING +POLYGAMOUS +POLYGAMY +POLYGENE +POLYGENES +POLYGENESES +POLYGENESIS +POLYGENETIC +POLYGENIC +POLYGLOT +POLYGLOTISM +POLYGLOTISMS +POLYGLOTS +POLYGLOTTISM +POLYGLOTTISMS +POLYGON +POLYGONAL +POLYGONALLY +POLYGONIES +POLYGONS +POLYGONUM +POLYGONUMS +POLYGONY +POLYGRAPH +POLYGRAPHED +POLYGRAPHER +POLYGRAPHERS +POLYGRAPHIC +POLYGRAPHING +POLYGRAPHIST +POLYGRAPHISTS +POLYGRAPHS +POLYGYNIES +POLYGYNOUS +POLYGYNY +POLYHEDRA +POLYHEDRAL +POLYHEDRON +POLYHEDRONS +POLYHEDROSES +POLYHEDROSIS +POLYHISTOR +POLYHISTORIC +POLYHISTORS +POLYHYDROXY +POLYIMIDE +POLYIMIDES +POLYLYSINE +POLYLYSINES +POLYMATH +POLYMATHIC +POLYMATHIES +POLYMATHS +POLYMATHY +POLYMER +POLYMERASE +POLYMERASES +POLYMERIC +POLYMERISATION +POLYMERISATIONS +POLYMERISE +POLYMERISED +POLYMERISES +POLYMERISING +POLYMERISM +POLYMERISMS +POLYMERIZATION +POLYMERIZATIONS +POLYMERIZE +POLYMERIZED +POLYMERIZES +POLYMERIZING +POLYMERS +POLYMORPH +POLYMORPHIC +POLYMORPHICALLY +POLYMORPHISM +POLYMORPHISMS +POLYMORPHOUS +POLYMORPHOUSLY +POLYMORPHS +POLYMYXIN +POLYMYXINS +POLYNEURITIS +POLYNEURITISES +POLYNOMIAL +POLYNOMIALS +POLYNUCLEAR +POLYNUCLEOTIDE +POLYNUCLEOTIDES +POLYNYA +POLYNYAS +POLYNYI +POLYOL +POLYOLEFIN +POLYOLEFINS +POLYOLS +POLYOMA +POLYOMAS +POLYONYMIES +POLYONYMOUS +POLYONYMY +POLYP +POLYPARIA +POLYPARIES +POLYPARIUM +POLYPARY +POLYPED +POLYPEDS +POLYPEPTIDE +POLYPEPTIDES +POLYPEPTIDIC +POLYPETALOUS +POLYPHAGIA +POLYPHAGIAS +POLYPHAGIES +POLYPHAGOUS +POLYPHAGY +POLYPHASE +POLYPHASIC +POLYPHENOL +POLYPHENOLIC +POLYPHENOLS +POLYPHONE +POLYPHONES +POLYPHONIC +POLYPHONICALLY +POLYPHONIES +POLYPHONOUS +POLYPHONOUSLY +POLYPHONY +POLYPHYLETIC +POLYPI +POLYPIDE +POLYPIDES +POLYPLOID +POLYPLOIDIES +POLYPLOIDS +POLYPLOIDY +POLYPNEA +POLYPNEAS +POLYPNEIC +POLYPOD +POLYPODIES +POLYPODS +POLYPODY +POLYPOID +POLYPORE +POLYPORES +POLYPOUS +POLYPROPYLENE +POLYPROPYLENES +POLYPS +POLYPTYCH +POLYPTYCHS +POLYPUS +POLYPUSES +POLYRHYTHM +POLYRHYTHMIC +POLYRHYTHMS +POLYRIBOSOMAL +POLYRIBOSOME +POLYRIBOSOMES +POLYS +POLYSACCHARIDE +POLYSACCHARIDES +POLYSEMIC +POLYSEMIES +POLYSEMOUS +POLYSEMY +POLYSOME +POLYSOMES +POLYSOMIC +POLYSOMICS +POLYSORBATE +POLYSORBATES +POLYSTICHOUS +POLYSTYRENE +POLYSTYRENES +POLYSULFIDE +POLYSULFIDES +POLYSYLLABIC +POLYSYLLABLE +POLYSYLLABLES +POLYSYNAPTIC +POLYSYNDETON +POLYSYNDETONS +POLYTECHNIC +POLYTECHNICS +POLYTENE +POLYTENIES +POLYTENY +POLYTHEISM +POLYTHEISMS +POLYTHEIST +POLYTHEISTIC +POLYTHEISTICAL +POLYTHEISTS +POLYTHENE +POLYTHENES +POLYTONAL +POLYTONALITIES +POLYTONALITY +POLYTONALLY +POLYTYPE +POLYTYPES +POLYTYPIC +POLYUNSATURATED +POLYURETHANE +POLYURETHANES +POLYURIA +POLYURIAS +POLYURIC +POLYVALENCE +POLYVALENCES +POLYVALENT +POLYVINYL +POLYWATER +POLYWATERS +POLYZOAN +POLYZOANS +POLYZOARIES +POLYZOARY +POLYZOIC +POM +POMACE +POMACEOUS +POMACES +POMADE +POMADED +POMADES +POMADING +POMANDER +POMANDERS +POMATUM +POMATUMS +POME +POMEGRANATE +POMEGRANATES +POMELO +POMELOS +POMES +POMFRET +POMFRETS +POMMEE +POMMEL +POMMELED +POMMELING +POMMELLED +POMMELLING +POMMELS +POMMIE +POMMIES +POMMY +POMO +POMOLOGICAL +POMOLOGIES +POMOLOGIST +POMOLOGISTS +POMOLOGY +POMOS +POMP +POMPADOUR +POMPADOURED +POMPADOURS +POMPANO +POMPANOS +POMPOM +POMPOMS +POMPON +POMPONS +POMPOSITIES +POMPOSITY +POMPOUS +POMPOUSLY +POMPOUSNESS +POMPOUSNESSES +POMPS +POMS +PONCE +PONCED +PONCES +PONCHO +PONCHOED +PONCHOS +PONCING +POND +PONDED +PONDER +PONDERABLE +PONDERED +PONDERER +PONDERERS +PONDERING +PONDEROSA +PONDEROSAS +PONDEROUS +PONDEROUSLY +PONDEROUSNESS +PONDEROUSNESSES +PONDERS +PONDING +PONDS +PONDWEED +PONDWEEDS +PONE +PONENT +PONES +PONG +PONGED +PONGEE +PONGEES +PONGID +PONGIDS +PONGING +PONGS +PONIARD +PONIARDED +PONIARDING +PONIARDS +PONIED +PONIES +PONS +PONTES +PONTIFEX +PONTIFF +PONTIFFS +PONTIFIC +PONTIFICAL +PONTIFICALLY +PONTIFICALS +PONTIFICATE +PONTIFICATED +PONTIFICATES +PONTIFICATING +PONTIFICATION +PONTIFICATIONS +PONTIFICATOR +PONTIFICATORS +PONTIFICES +PONTIL +PONTILS +PONTINE +PONTON +PONTONIER +PONTONIERS +PONTONS +PONTOON +PONTOONS +PONY +PONYING +PONYTAIL +PONYTAILED +PONYTAILS +POO +POOCH +POOCHED +POOCHES +POOCHING +POOD +POODLE +POODLES +POODS +POOED +POOF +POOFS +POOFTAH +POOFTAHS +POOFTER +POOFTERS +POOFY +POOH +POOHED +POOHING +POOHS +POOING +POOL +POOLED +POOLER +POOLERS +POOLHALL +POOLHALLS +POOLING +POOLROOM +POOLROOMS +POOLS +POOLSIDE +POOLSIDES +POON +POONS +POONTANG +POONTANGS +POOP +POOPED +POOPING +POOPS +POOR +POORER +POOREST +POORHOUSE +POORHOUSES +POORI +POORIS +POORISH +POORLY +POORMOUTH +POORMOUTHED +POORMOUTHING +POORMOUTHS +POORNESS +POORNESSES +POORTITH +POORTITHS +POOS +POOVE +POOVES +POP +POPCORN +POPCORNS +POPE +POPEDOM +POPEDOMS +POPELESS +POPELIKE +POPERIES +POPERY +POPES +POPEYED +POPGUN +POPGUNS +POPINJAY +POPINJAYS +POPISH +POPISHLY +POPLAR +POPLARS +POPLIN +POPLINS +POPLITEAL +POPLITEI +POPLITEUS +POPLITIC +POPOVER +POPOVERS +POPPA +POPPADOM +POPPADOMS +POPPADUM +POPPADUMS +POPPAS +POPPED +POPPER +POPPERS +POPPET +POPPETS +POPPIED +POPPIES +POPPING +POPPLE +POPPLED +POPPLES +POPPLING +POPPY +POPPYCOCK +POPPYCOCKS +POPPYHEAD +POPPYHEADS +POPS +POPSICLE +POPSICLES +POPSIE +POPSIES +POPSY +POPULACE +POPULACES +POPULAR +POPULARISE +POPULARISED +POPULARISES +POPULARISING +POPULARITIES +POPULARITY +POPULARIZATION +POPULARIZATIONS +POPULARIZE +POPULARIZED +POPULARIZER +POPULARIZERS +POPULARIZES +POPULARIZING +POPULARLY +POPULATE +POPULATED +POPULATES +POPULATING +POPULATION +POPULATIONAL +POPULATIONS +POPULISM +POPULISMS +POPULIST +POPULISTIC +POPULISTS +POPULOUS +POPULOUSLY +POPULOUSNESS +POPULOUSNESSES +PORBEAGLE +PORBEAGLES +PORCELAIN +PORCELAINIZE +PORCELAINIZED +PORCELAINIZES +PORCELAINIZING +PORCELAINLIKE +PORCELAINS +PORCELANEOUS +PORCELLANEOUS +PORCH +PORCHES +PORCINE +PORCINI +PORCINIS +PORCINO +PORCUPINE +PORCUPINES +PORE +PORED +PORES +PORGIES +PORGY +PORIFERAL +PORIFERAN +PORIFERANS +PORING +PORISM +PORISMS +PORK +PORKED +PORKER +PORKERS +PORKIER +PORKIES +PORKIEST +PORKINESS +PORKINESSES +PORKING +PORKPIE +PORKPIES +PORKS +PORKWOOD +PORKWOODS +PORKY +PORN +PORNIER +PORNIEST +PORNO +PORNOGRAPHER +PORNOGRAPHERS +PORNOGRAPHIC +PORNOGRAPHIES +PORNOGRAPHY +PORNOS +PORNS +PORNY +POROMERIC +POROMERICS +POROSE +POROSITIES +POROSITY +POROUS +POROUSLY +POROUSNESS +POROUSNESSES +PORPHYRIA +PORPHYRIAS +PORPHYRIC +PORPHYRIES +PORPHYRIN +PORPHYRINS +PORPHYRITIC +PORPHYROPSIN +PORPHYROPSINS +PORPHYRY +PORPOISE +PORPOISED +PORPOISES +PORPOISING +PORRECT +PORRIDGE +PORRIDGES +PORRIDGY +PORRINGER +PORRINGERS +PORT +PORTABELLA +PORTABELLAS +PORTABELLO +PORTABELLOS +PORTABILITIES +PORTABILITY +PORTABLE +PORTABLES +PORTABLY +PORTAGE +PORTAGED +PORTAGES +PORTAGING +PORTAL +PORTALED +PORTALS +PORTAMENTI +PORTAMENTO +PORTANCE +PORTANCES +PORTAPACK +PORTAPACKS +PORTAPAK +PORTAPAKS +PORTATIVE +PORTCULLIS +PORTCULLISES +PORTED +PORTEND +PORTENDED +PORTENDING +PORTENDS +PORTENT +PORTENTOUS +PORTENTOUSLY +PORTENTOUSNESS +PORTENTS +PORTER +PORTERAGE +PORTERAGES +PORTERED +PORTERESS +PORTERESSES +PORTERHOUSE +PORTERHOUSES +PORTERING +PORTERS +PORTFOLIO +PORTFOLIOS +PORTHOLE +PORTHOLES +PORTICO +PORTICOED +PORTICOES +PORTICOS +PORTIERE +PORTIERES +PORTING +PORTION +PORTIONED +PORTIONER +PORTIONERS +PORTIONING +PORTIONLESS +PORTIONS +PORTLESS +PORTLIER +PORTLIEST +PORTLINESS +PORTLINESSES +PORTLY +PORTMANTEAU +PORTMANTEAUS +PORTMANTEAUX +PORTOBELLO +PORTOBELLOS +PORTRAIT +PORTRAITIST +PORTRAITISTS +PORTRAITS +PORTRAITURE +PORTRAITURES +PORTRAY +PORTRAYAL +PORTRAYALS +PORTRAYED +PORTRAYER +PORTRAYERS +PORTRAYING +PORTRAYS +PORTRESS +PORTRESSES +PORTS +PORTSIDE +PORTULACA +PORTULACAS +POSABLE +POSADA +POSADAS +POSE +POSED +POSER +POSERS +POSES +POSEUR +POSEURS +POSH +POSHER +POSHEST +POSHLY +POSHNESS +POSHNESSES +POSIES +POSING +POSINGLY +POSIT +POSITED +POSITING +POSITION +POSITIONAL +POSITIONALLY +POSITIONED +POSITIONING +POSITIONS +POSITIVE +POSITIVELY +POSITIVENESS +POSITIVENESSES +POSITIVER +POSITIVES +POSITIVEST +POSITIVISM +POSITIVISMS +POSITIVIST +POSITIVISTIC +POSITIVISTS +POSITIVITIES +POSITIVITY +POSITRON +POSITRONIUM +POSITRONIUMS +POSITRONS +POSITS +POSOLE +POSOLES +POSOLOGIC +POSOLOGIES +POSOLOGY +POSSE +POSSES +POSSESS +POSSESSED +POSSESSEDLY +POSSESSEDNESS +POSSESSEDNESSES +POSSESSES +POSSESSING +POSSESSION +POSSESSIONAL +POSSESSIONLESS +POSSESSIONS +POSSESSIVE +POSSESSIVELY +POSSESSIVENESS +POSSESSIVES +POSSESSOR +POSSESSORS +POSSESSORY +POSSET +POSSETS +POSSIBILITIES +POSSIBILITY +POSSIBLE +POSSIBLER +POSSIBLEST +POSSIBLY +POSSUM +POSSUMS +POST +POSTABORTION +POSTACCIDENT +POSTADOLESCENT +POSTAGE +POSTAGES +POSTAL +POSTALLY +POSTALS +POSTAMPUTATION +POSTANAL +POSTAPOCALYPTIC +POSTARREST +POSTATOMIC +POSTATTACK +POSTAXIAL +POSTBAG +POSTBAGS +POSTBASE +POSTBELLUM +POSTBIBLICAL +POSTBOURGEOIS +POSTBOX +POSTBOXES +POSTBOY +POSTBOYS +POSTBURN +POSTCAPITALIST +POSTCARD +POSTCARDLIKE +POSTCARDS +POSTCAVA +POSTCAVAE +POSTCAVAL +POSTCAVAS +POSTCLASSIC +POSTCLASSICAL +POSTCODE +POSTCODES +POSTCOITAL +POSTCOLLEGE +POSTCOLLEGIATE +POSTCOLONIAL +POSTCONCEPTION +POSTCONCERT +POSTCONQUEST +POSTCONSONANTAL +POSTCONVENTION +POSTCOPULATORY +POSTCORONARY +POSTCOUP +POSTCRANIAL +POSTCRANIALLY +POSTCRASH +POSTCRISIS +POSTDATE +POSTDATED +POSTDATES +POSTDATING +POSTDEADLINE +POSTDEBATE +POSTDEBUTANTE +POSTDELIVERY +POSTDEPRESSION +POSTDEVALUATION +POSTDILUVIAN +POSTDILUVIANS +POSTDIVE +POSTDIVESTITURE +POSTDIVORCE +POSTDOC +POSTDOCS +POSTDOCTORAL +POSTDOCTORATE +POSTDRUG +POSTED +POSTEDITING +POSTEEN +POSTEENS +POSTELECTION +POSTEMBRYONAL +POSTEMBRYONIC +POSTEMERGENCE +POSTEMERGENCY +POSTEPILEPTIC +POSTER +POSTERIOR +POSTERIORITIES +POSTERIORITY +POSTERIORLY +POSTERIORS +POSTERITIES +POSTERITY +POSTERN +POSTERNS +POSTEROLATERAL +POSTERS +POSTERUPTIVE +POSTEXERCISE +POSTEXILIC +POSTEXPERIENCE +POSTEXPOSURE +POSTFACE +POSTFACES +POSTFAULT +POSTFEMINIST +POSTFIRE +POSTFIX +POSTFIXAL +POSTFIXED +POSTFIXES +POSTFIXING +POSTFLIGHT +POSTFORM +POSTFORMED +POSTFORMING +POSTFORMS +POSTFRACTURE +POSTFREEZE +POSTGAME +POSTGANGLIONIC +POSTGLACIAL +POSTGRAD +POSTGRADS +POSTGRADUATE +POSTGRADUATES +POSTGRADUATION +POSTHARVEST +POSTHASTE +POSTHASTES +POSTHEAT +POSTHEATS +POSTHEMORRHAGIC +POSTHOLE +POSTHOLES +POSTHOLIDAY +POSTHOLOCAUST +POSTHOSPITAL +POSTHUMOUS +POSTHUMOUSLY +POSTHUMOUSNESS +POSTHYPNOTIC +POSTICHE +POSTICHES +POSTIE +POSTIES +POSTILION +POSTILIONS +POSTILLION +POSTILLIONS +POSTIMPACT +POSTIMPERIAL +POSTIN +POSTINAUGURAL +POSTINDUSTRIAL +POSTINFECTION +POSTING +POSTINGS +POSTINJECTION +POSTINOCULATION +POSTINS +POSTIQUE +POSTIQUES +POSTIRRADIATION +POSTISCHEMIC +POSTISOLATION +POSTLANDING +POSTLAPSARIAN +POSTLAUNCH +POSTLIBERATION +POSTLITERATE +POSTLUDE +POSTLUDES +POSTMAN +POSTMARITAL +POSTMARK +POSTMARKED +POSTMARKING +POSTMARKS +POSTMASTECTOMY +POSTMASTER +POSTMASTERS +POSTMASTERSHIP +POSTMASTERSHIPS +POSTMATING +POSTMEDIEVAL +POSTMEN +POSTMENOPAUSAL +POSTMIDNIGHT +POSTMILLENARIAN +POSTMILLENNIAL +POSTMISTRESS +POSTMISTRESSES +POSTMODERN +POSTMODERNISM +POSTMODERNISMS +POSTMODERNIST +POSTMODERNISTS +POSTMORTEM +POSTMORTEMS +POSTNASAL +POSTNATAL +POSTNATALLY +POSTNEONATAL +POSTNUPTIAL +POSTOP +POSTOPERATIVE +POSTOPERATIVELY +POSTOPS +POSTORAL +POSTORBITAL +POSTORGASMIC +POSTPAID +POSTPARTUM +POSTPOLLINATION +POSTPONABLE +POSTPONE +POSTPONED +POSTPONEMENT +POSTPONEMENTS +POSTPONER +POSTPONERS +POSTPONES +POSTPONING +POSTPOSE +POSTPOSED +POSTPOSES +POSTPOSING +POSTPOSITION +POSTPOSITIONAL +POSTPOSITIONS +POSTPOSITIVE +POSTPOSITIVELY +POSTPRANDIAL +POSTPRIMARY +POSTPRISON +POSTPRODUCTION +POSTPRODUCTIONS +POSTPUBERTY +POSTPUBESCENT +POSTPUNK +POSTRACE +POSTRECESSION +POSTRETIREMENT +POSTRIDER +POSTRIDERS +POSTRIOT +POSTROMANTIC +POSTS +POSTSCRIPT +POSTSCRIPTS +POSTSEASON +POSTSEASONS +POSTSECONDARY +POSTSHOW +POSTSTIMULATION +POSTSTIMULATORY +POSTSTIMULUS +POSTSTRIKE +POSTSURGICAL +POSTSYNAPTIC +POSTSYNC +POSTSYNCED +POSTSYNCING +POSTSYNCS +POSTTAX +POSTTEEN +POSTTEENS +POSTTENSION +POSTTENSIONED +POSTTENSIONING +POSTTENSIONS +POSTTEST +POSTTESTS +POSTTRANSFUSION +POSTTRAUMATIC +POSTTREATMENT +POSTTRIAL +POSTULANCIES +POSTULANCY +POSTULANT +POSTULANTS +POSTULATE +POSTULATED +POSTULATES +POSTULATING +POSTULATION +POSTULATIONAL +POSTULATIONS +POSTULATOR +POSTULATORS +POSTURAL +POSTURE +POSTURED +POSTURER +POSTURERS +POSTURES +POSTURING +POSTURIST +POSTURISTS +POSTVACCINAL +POSTVACCINATION +POSTVAGOTOMY +POSTVASECTOMY +POSTVOCALIC +POSTWAR +POSTWEANING +POSTWORKSHOP +POSY +POT +POTABILITIES +POTABILITY +POTABLE +POTABLENESS +POTABLENESSES +POTABLES +POTAGE +POTAGES +POTAMIC +POTASH +POTASHES +POTASSIC +POTASSIUM +POTASSIUMS +POTATION +POTATIONS +POTATO +POTATOBUG +POTATOBUGS +POTATOES +POTATORY +POTBELLIED +POTBELLIES +POTBELLY +POTBOIL +POTBOILED +POTBOILER +POTBOILERS +POTBOILING +POTBOILS +POTBOUND +POTBOY +POTBOYS +POTEEN +POTEENS +POTENCE +POTENCES +POTENCIES +POTENCY +POTENT +POTENTATE +POTENTATES +POTENTIAL +POTENTIALITIES +POTENTIALITY +POTENTIALLY +POTENTIALS +POTENTIATE +POTENTIATED +POTENTIATES +POTENTIATING +POTENTIATION +POTENTIATIONS +POTENTIATOR +POTENTIATORS +POTENTILLA +POTENTILLAS +POTENTIOMETER +POTENTIOMETERS +POTENTIOMETRIC +POTENTLY +POTFUL +POTFULS +POTHEAD +POTHEADS +POTHEEN +POTHEENS +POTHER +POTHERB +POTHERBS +POTHERED +POTHERING +POTHERS +POTHOLDER +POTHOLDERS +POTHOLE +POTHOLED +POTHOLES +POTHOOK +POTHOOKS +POTHOS +POTHOUSE +POTHOUSES +POTHUNTER +POTHUNTERS +POTHUNTING +POTHUNTINGS +POTICHE +POTICHES +POTION +POTIONS +POTLACH +POTLACHE +POTLACHES +POTLATCH +POTLATCHED +POTLATCHES +POTLATCHING +POTLIKE +POTLINE +POTLINES +POTLUCK +POTLUCKS +POTMAN +POTMEN +POTOMETER +POTOMETERS +POTPIE +POTPIES +POTPOURRI +POTPOURRIS +POTS +POTSHARD +POTSHARDS +POTSHERD +POTSHERDS +POTSHOT +POTSHOTS +POTSHOTTING +POTSIE +POTSIES +POTSTONE +POTSTONES +POTSY +POTTAGE +POTTAGES +POTTED +POTTEEN +POTTEENS +POTTER +POTTERED +POTTERER +POTTERERS +POTTERIES +POTTERING +POTTERINGLY +POTTERS +POTTERY +POTTIER +POTTIES +POTTIEST +POTTINESS +POTTINESSES +POTTING +POTTLE +POTTLES +POTTO +POTTOS +POTTY +POTZER +POTZERS +POUCH +POUCHED +POUCHES +POUCHIER +POUCHIEST +POUCHING +POUCHY +POUF +POUFED +POUFF +POUFFE +POUFFED +POUFFES +POUFFS +POUFFY +POUFS +POULARD +POULARDE +POULARDES +POULARDS +POULT +POULTER +POULTERER +POULTERERS +POULTERS +POULTICE +POULTICED +POULTICES +POULTICING +POULTRIES +POULTRY +POULTRYMAN +POULTRYMEN +POULTS +POUNCE +POUNCED +POUNCER +POUNCERS +POUNCES +POUNCING +POUND +POUNDAGE +POUNDAGES +POUNDAL +POUNDALS +POUNDCAKE +POUNDCAKES +POUNDED +POUNDER +POUNDERS +POUNDING +POUNDS +POUR +POURABLE +POURBOIRE +POURBOIRES +POURED +POURER +POURERS +POURING +POURINGLY +POURPARLER +POURPARLERS +POURPOINT +POURPOINTS +POURS +POUSSETTE +POUSSETTED +POUSSETTES +POUSSETTING +POUSSIE +POUSSIES +POUT +POUTED +POUTER +POUTERS +POUTFUL +POUTIER +POUTIEST +POUTINE +POUTINES +POUTING +POUTINGLY +POUTS +POUTY +POVERTIES +POVERTY +POW +POWDER +POWDERED +POWDERER +POWDERERS +POWDERING +POWDERLESS +POWDERLIKE +POWDERS +POWDERY +POWER +POWERBOAT +POWERBOATS +POWERED +POWERFUL +POWERFULLY +POWERHOUSE +POWERHOUSES +POWERING +POWERLESS +POWERLESSLY +POWERLESSNESS +POWERLESSNESSES +POWERS +POWS +POWTER +POWTERS +POWWOW +POWWOWED +POWWOWING +POWWOWS +POX +POXED +POXES +POXIER +POXIEST +POXING +POXVIRUS +POXVIRUSES +POXY +POYOU +POYOUS +POZOLE +POZOLES +POZZOLAN +POZZOLANA +POZZOLANAS +POZZOLANIC +POZZOLANS +PRAAM +PRAAMS +PRACTIC +PRACTICABILITY +PRACTICABLE +PRACTICABLENESS +PRACTICABLY +PRACTICAL +PRACTICALITIES +PRACTICALITY +PRACTICALLY +PRACTICALNESS +PRACTICALNESSES +PRACTICALS +PRACTICE +PRACTICED +PRACTICER +PRACTICERS +PRACTICES +PRACTICING +PRACTICUM +PRACTICUMS +PRACTISE +PRACTISED +PRACTISES +PRACTISING +PRACTITIONER +PRACTITIONERS +PRAECIPE +PRAECIPES +PRAEDIAL +PRAEFECT +PRAEFECTS +PRAELECT +PRAELECTED +PRAELECTING +PRAELECTS +PRAEMUNIRE +PRAEMUNIRES +PRAENOMEN +PRAENOMENS +PRAENOMINA +PRAESIDIA +PRAESIDIUM +PRAESIDIUMS +PRAETOR +PRAETORIAL +PRAETORIAN +PRAETORIANS +PRAETORS +PRAETORSHIP +PRAETORSHIPS +PRAGMATIC +PRAGMATICAL +PRAGMATICALLY +PRAGMATICISM +PRAGMATICISMS +PRAGMATICIST +PRAGMATICISTS +PRAGMATICS +PRAGMATISM +PRAGMATISMS +PRAGMATIST +PRAGMATISTIC +PRAGMATISTS +PRAHU +PRAHUS +PRAIRIE +PRAIRIES +PRAISE +PRAISED +PRAISER +PRAISERS +PRAISES +PRAISEWORTHILY +PRAISEWORTHY +PRAISING +PRAJNA +PRAJNAS +PRALINE +PRALINES +PRALLTRILLER +PRALLTRILLERS +PRAM +PRAMS +PRANCE +PRANCED +PRANCER +PRANCERS +PRANCES +PRANCING +PRANDIAL +PRANG +PRANGED +PRANGING +PRANGS +PRANK +PRANKED +PRANKING +PRANKISH +PRANKISHLY +PRANKISHNESS +PRANKISHNESSES +PRANKS +PRANKSTER +PRANKSTERS +PRAO +PRAOS +PRASE +PRASEODYMIUM +PRASEODYMIUMS +PRASES +PRAT +PRATE +PRATED +PRATER +PRATERS +PRATES +PRATFALL +PRATFALLS +PRATINCOLE +PRATINCOLES +PRATING +PRATINGLY +PRATIQUE +PRATIQUES +PRATS +PRATTLE +PRATTLED +PRATTLER +PRATTLERS +PRATTLES +PRATTLING +PRATTLINGLY +PRAU +PRAUS +PRAWN +PRAWNED +PRAWNER +PRAWNERS +PRAWNING +PRAWNS +PRAXEOLOGICAL +PRAXEOLOGIES +PRAXEOLOGY +PRAXES +PRAXIS +PRAXISES +PRAY +PRAYED +PRAYER +PRAYERFUL +PRAYERFULLY +PRAYERFULNESS +PRAYERFULNESSES +PRAYERS +PRAYING +PRAYS +PREABSORB +PREABSORBED +PREABSORBING +PREABSORBS +PREACCUSE +PREACCUSED +PREACCUSES +PREACCUSING +PREACH +PREACHED +PREACHER +PREACHERS +PREACHES +PREACHIER +PREACHIEST +PREACHIFIED +PREACHIFIES +PREACHIFY +PREACHIFYING +PREACHILY +PREACHINESS +PREACHINESSES +PREACHING +PREACHINGLY +PREACHMENT +PREACHMENTS +PREACHY +PREACT +PREACTED +PREACTING +PREACTS +PREADAPT +PREADAPTATION +PREADAPTATIONS +PREADAPTED +PREADAPTING +PREADAPTIVE +PREADAPTS +PREADJUST +PREADJUSTED +PREADJUSTING +PREADJUSTS +PREADMISSION +PREADMISSIONS +PREADMIT +PREADMITS +PREADMITTED +PREADMITTING +PREADOLESCENCE +PREADOLESCENCES +PREADOLESCENT +PREADOLESCENTS +PREADOPT +PREADOPTED +PREADOPTING +PREADOPTS +PREADULT +PREADULTS +PREAGED +PREAGRICULTURAL +PREALLOT +PREALLOTS +PREALLOTTED +PREALLOTTING +PREALTER +PREALTERED +PREALTERING +PREALTERS +PREAMBLE +PREAMBLED +PREAMBLES +PREAMP +PREAMPLIFIER +PREAMPLIFIERS +PREAMPS +PREANAL +PREANESTHETIC +PREANNOUNCE +PREANNOUNCED +PREANNOUNCES +PREANNOUNCING +PREAPPLIED +PREAPPLIES +PREAPPLY +PREAPPLYING +PREAPPROVE +PREAPPROVED +PREAPPROVES +PREAPPROVING +PREARM +PREARMED +PREARMING +PREARMS +PREARRANGE +PREARRANGED +PREARRANGEMENT +PREARRANGEMENTS +PREARRANGES +PREARRANGING +PREASSEMBLED +PREASSIGN +PREASSIGNED +PREASSIGNING +PREASSIGNS +PREASSURE +PREASSURED +PREASSURES +PREASSURING +PREATOMIC +PREATTUNE +PREATTUNED +PREATTUNES +PREATTUNING +PREAUDIT +PREAUDITS +PREAVER +PREAVERRED +PREAVERRING +PREAVERS +PREAXIAL +PREBADE +PREBAKE +PREBAKED +PREBAKES +PREBAKING +PREBASAL +PREBATTLE +PREBEND +PREBENDAL +PREBENDARIES +PREBENDARY +PREBENDS +PREBIBLICAL +PREBID +PREBIDDEN +PREBIDDING +PREBIDS +PREBILL +PREBILLED +PREBILLING +PREBILLS +PREBIND +PREBINDING +PREBINDS +PREBIOLOGIC +PREBIOLOGICAL +PREBIOTIC +PREBIRTH +PREBIRTHS +PREBLESS +PREBLESSED +PREBLESSES +PREBLESSING +PREBOARD +PREBOARDED +PREBOARDING +PREBOARDS +PREBOIL +PREBOILED +PREBOILING +PREBOILS +PREBOOK +PREBOOKED +PREBOOKING +PREBOOKS +PREBOOM +PREBOUGHT +PREBOUND +PREBREAKFAST +PREBUDGET +PREBUDGETS +PREBUILD +PREBUILDING +PREBUILDS +PREBUILT +PREBUY +PREBUYING +PREBUYS +PRECALCULI +PRECALCULUS +PRECALCULUSES +PRECANCEL +PRECANCELED +PRECANCELING +PRECANCELLATION +PRECANCELLED +PRECANCELLING +PRECANCELS +PRECANCER +PRECANCEROUS +PRECANCERS +PRECAPITALIST +PRECARIOUS +PRECARIOUSLY +PRECARIOUSNESS +PRECAST +PRECASTING +PRECASTS +PRECATIVE +PRECATORY +PRECAUDAL +PRECAUTION +PRECAUTIONARY +PRECAUTIONS +PRECAVA +PRECAVAE +PRECAVAL +PRECEDE +PRECEDED +PRECEDENCE +PRECEDENCES +PRECEDENCIES +PRECEDENCY +PRECEDENT +PRECEDENTS +PRECEDES +PRECEDING +PRECENSOR +PRECENSORED +PRECENSORING +PRECENSORS +PRECENT +PRECENTED +PRECENTING +PRECENTOR +PRECENTORIAL +PRECENTORS +PRECENTORSHIP +PRECENTORSHIPS +PRECENTS +PRECEPT +PRECEPTIVE +PRECEPTOR +PRECEPTORIAL +PRECEPTORIALS +PRECEPTORIES +PRECEPTORS +PRECEPTORSHIP +PRECEPTORSHIPS +PRECEPTORY +PRECEPTS +PRECESS +PRECESSED +PRECESSES +PRECESSING +PRECESSION +PRECESSIONAL +PRECESSIONS +PRECHARGE +PRECHARGED +PRECHARGES +PRECHARGING +PRECHECK +PRECHECKED +PRECHECKING +PRECHECKS +PRECHILL +PRECHILLED +PRECHILLING +PRECHILLS +PRECHOOSE +PRECHOOSES +PRECHOOSING +PRECHOSE +PRECHOSEN +PRECIEUSE +PRECIEUX +PRECINCT +PRECINCTS +PRECIOSITIES +PRECIOSITY +PRECIOUS +PRECIOUSES +PRECIOUSLY +PRECIOUSNESS +PRECIOUSNESSES +PRECIPE +PRECIPES +PRECIPICE +PRECIPICES +PRECIPITABLE +PRECIPITANCE +PRECIPITANCES +PRECIPITANCIES +PRECIPITANCY +PRECIPITANT +PRECIPITANTLY +PRECIPITANTNESS +PRECIPITANTS +PRECIPITATE +PRECIPITATED +PRECIPITATELY +PRECIPITATENESS +PRECIPITATES +PRECIPITATING +PRECIPITATION +PRECIPITATIONS +PRECIPITATIVE +PRECIPITATOR +PRECIPITATORS +PRECIPITIN +PRECIPITINOGEN +PRECIPITINOGENS +PRECIPITINS +PRECIPITOUS +PRECIPITOUSLY +PRECIPITOUSNESS +PRECIS +PRECISE +PRECISED +PRECISELY +PRECISENESS +PRECISENESSES +PRECISER +PRECISES +PRECISEST +PRECISIAN +PRECISIANS +PRECISING +PRECISION +PRECISIONIST +PRECISIONISTS +PRECISIONS +PRECITED +PRECLEAN +PRECLEANED +PRECLEANING +PRECLEANS +PRECLEAR +PRECLEARANCE +PRECLEARANCES +PRECLEARED +PRECLEARING +PRECLEARS +PRECLINICAL +PRECLUDE +PRECLUDED +PRECLUDES +PRECLUDING +PRECLUSION +PRECLUSIONS +PRECLUSIVE +PRECLUSIVELY +PRECOCIAL +PRECOCIOUS +PRECOCIOUSLY +PRECOCIOUSNESS +PRECOCITIES +PRECOCITY +PRECODE +PRECODED +PRECODES +PRECODING +PRECOGNITION +PRECOGNITIONS +PRECOGNITIVE +PRECOITAL +PRECOLLEGE +PRECOLLEGIATE +PRECOLONIAL +PRECOMBUSTION +PRECOMBUSTIONS +PRECOMMITMENT +PRECOMMITMENTS +PRECOMPUTE +PRECOMPUTED +PRECOMPUTER +PRECOMPUTES +PRECOMPUTING +PRECONCEIVE +PRECONCEIVED +PRECONCEIVES +PRECONCEIVING +PRECONCEPTION +PRECONCEPTIONS +PRECONCERT +PRECONCERTED +PRECONCERTING +PRECONCERTS +PRECONCILIAR +PRECONDITION +PRECONDITIONED +PRECONDITIONING +PRECONDITIONS +PRECONIZE +PRECONIZED +PRECONIZES +PRECONIZING +PRECONQUEST +PRECONSCIOUS +PRECONSCIOUSES +PRECONSCIOUSLY +PRECONSONANTAL +PRECONSTRUCTED +PRECONTACT +PRECONVENTION +PRECONVICTION +PRECONVICTIONS +PRECOOK +PRECOOKED +PRECOOKER +PRECOOKERS +PRECOOKING +PRECOOKS +PRECOOL +PRECOOLED +PRECOOLING +PRECOOLS +PRECOPULATORY +PRECOUP +PRECRASH +PRECREASE +PRECREASED +PRECREASES +PRECREASING +PRECRISIS +PRECRITICAL +PRECURE +PRECURED +PRECURES +PRECURING +PRECURSOR +PRECURSORS +PRECURSORY +PRECUT +PRECUTS +PRECUTTING +PREDACEOUS +PREDACEOUSNESS +PREDACIOUS +PREDACITIES +PREDACITY +PREDATE +PREDATED +PREDATES +PREDATING +PREDATION +PREDATIONS +PREDATISM +PREDATISMS +PREDATOR +PREDATORS +PREDATORY +PREDAWN +PREDAWNS +PREDEATH +PREDEATHS +PREDEBATE +PREDECEASE +PREDECEASED +PREDECEASES +PREDECEASING +PREDECESSOR +PREDECESSORS +PREDEDUCT +PREDEDUCTED +PREDEDUCTING +PREDEDUCTS +PREDEFINE +PREDEFINED +PREDEFINES +PREDEFINING +PREDELIVERY +PREDELLA +PREDELLAS +PREDEPARTURE +PREDESIGNATE +PREDESIGNATED +PREDESIGNATES +PREDESIGNATING +PREDESTINARIAN +PREDESTINARIANS +PREDESTINATE +PREDESTINATED +PREDESTINATES +PREDESTINATING +PREDESTINATION +PREDESTINATIONS +PREDESTINATOR +PREDESTINATORS +PREDESTINE +PREDESTINED +PREDESTINES +PREDESTINING +PREDETERMINE +PREDETERMINED +PREDETERMINER +PREDETERMINERS +PREDETERMINES +PREDETERMINING +PREDEVALUATION +PREDEVELOPMENT +PREDIABETES +PREDIABETESES +PREDIABETIC +PREDIABETICS +PREDIAL +PREDICABLE +PREDICABLES +PREDICAMENT +PREDICAMENTS +PREDICANT +PREDICANTS +PREDICATE +PREDICATED +PREDICATES +PREDICATING +PREDICATION +PREDICATIONS +PREDICATIVE +PREDICATIVELY +PREDICATORY +PREDICT +PREDICTABILITY +PREDICTABLE +PREDICTABLY +PREDICTED +PREDICTING +PREDICTION +PREDICTIONS +PREDICTIVE +PREDICTIVELY +PREDICTOR +PREDICTORS +PREDICTS +PREDIGEST +PREDIGESTED +PREDIGESTING +PREDIGESTION +PREDIGESTIONS +PREDIGESTS +PREDILECTION +PREDILECTIONS +PREDINNER +PREDINNERS +PREDISCHARGE +PREDISCOVERIES +PREDISCOVERY +PREDISPOSE +PREDISPOSED +PREDISPOSES +PREDISPOSING +PREDISPOSITION +PREDISPOSITIONS +PREDIVE +PREDNISOLONE +PREDNISOLONES +PREDNISONE +PREDNISONES +PREDOCTORAL +PREDOMINANCE +PREDOMINANCES +PREDOMINANCIES +PREDOMINANCY +PREDOMINANT +PREDOMINANTLY +PREDOMINATE +PREDOMINATED +PREDOMINATELY +PREDOMINATES +PREDOMINATING +PREDOMINATION +PREDOMINATIONS +PREDRAFT +PREDRIED +PREDRIES +PREDRILL +PREDRILLED +PREDRILLING +PREDRILLS +PREDRY +PREDRYING +PREDUSK +PREDUSKS +PREDYNASTIC +PREE +PREECLAMPSIA +PREECLAMPSIAS +PREECLAMPTIC +PREED +PREEDIT +PREEDITED +PREEDITING +PREEDITS +PREEING +PREELECT +PREELECTED +PREELECTING +PREELECTION +PREELECTRIC +PREELECTS +PREEMBARGO +PREEMERGENCE +PREEMERGENT +PREEMIE +PREEMIES +PREEMINENCE +PREEMINENCES +PREEMINENT +PREEMINENTLY +PREEMPLOYMENT +PREEMPT +PREEMPTED +PREEMPTING +PREEMPTION +PREEMPTIONS +PREEMPTIVE +PREEMPTIVELY +PREEMPTOR +PREEMPTORS +PREEMPTS +PREEN +PREENACT +PREENACTED +PREENACTING +PREENACTS +PREENED +PREENER +PREENERS +PREENING +PREENROLLMENT +PREENS +PREERECT +PREERECTED +PREERECTING +PREERECTS +PREES +PREESTABLISH +PREESTABLISHED +PREESTABLISHES +PREESTABLISHING +PREETHICAL +PREEXCITE +PREEXCITED +PREEXCITES +PREEXCITING +PREEXEMPT +PREEXEMPTED +PREEXEMPTING +PREEXEMPTS +PREEXILIC +PREEXIST +PREEXISTED +PREEXISTENCE +PREEXISTENCES +PREEXISTENT +PREEXISTING +PREEXISTS +PREEXPERIMENT +PREEXPOSE +PREEXPOSED +PREEXPOSES +PREEXPOSING +PREFAB +PREFABBED +PREFABBING +PREFABRICATE +PREFABRICATED +PREFABRICATES +PREFABRICATING +PREFABRICATION +PREFABRICATIONS +PREFABS +PREFACE +PREFACED +PREFACER +PREFACERS +PREFACES +PREFACING +PREFADE +PREFADED +PREFADES +PREFADING +PREFASCIST +PREFATORY +PREFECT +PREFECTS +PREFECTURAL +PREFECTURE +PREFECTURES +PREFER +PREFERABILITIES +PREFERABILITY +PREFERABLE +PREFERABLY +PREFERENCE +PREFERENCES +PREFERENTIAL +PREFERENTIALLY +PREFERMENT +PREFERMENTS +PREFERRED +PREFERRER +PREFERRERS +PREFERRING +PREFERS +PREFEUDAL +PREFIGHT +PREFIGURATION +PREFIGURATIONS +PREFIGURATIVE +PREFIGURATIVELY +PREFIGURE +PREFIGURED +PREFIGUREMENT +PREFIGUREMENTS +PREFIGURES +PREFIGURING +PREFILE +PREFILED +PREFILES +PREFILING +PREFILLED +PREFINANCE +PREFINANCED +PREFINANCES +PREFINANCING +PREFIRE +PREFIRED +PREFIRES +PREFIRING +PREFIX +PREFIXAL +PREFIXED +PREFIXES +PREFIXING +PREFIXION +PREFIXIONS +PREFLAME +PREFLIGHT +PREFLIGHTED +PREFLIGHTING +PREFLIGHTS +PREFOCUS +PREFOCUSED +PREFOCUSES +PREFOCUSING +PREFOCUSSED +PREFOCUSSES +PREFOCUSSING +PREFORM +PREFORMAT +PREFORMATION +PREFORMATIONIST +PREFORMATIONS +PREFORMATS +PREFORMATTED +PREFORMATTING +PREFORMED +PREFORMING +PREFORMS +PREFORMULATE +PREFORMULATED +PREFORMULATES +PREFORMULATING +PREFRANK +PREFRANKED +PREFRANKING +PREFRANKS +PREFREEZE +PREFREEZES +PREFREEZING +PREFRESHMAN +PREFRONTAL +PREFRONTALS +PREFROZE +PREFROZEN +PREFUND +PREFUNDED +PREFUNDING +PREFUNDS +PREGAME +PREGAMES +PREGANGLIONIC +PREGENITAL +PREGGERS +PREGNABILITIES +PREGNABILITY +PREGNABLE +PREGNANCIES +PREGNANCY +PREGNANT +PREGNANTLY +PREGNENOLONE +PREGNENOLONES +PREGROWTH +PREGROWTHS +PREGUIDE +PREGUIDED +PREGUIDES +PREGUIDING +PREHANDLE +PREHANDLED +PREHANDLES +PREHANDLING +PREHARDEN +PREHARDENED +PREHARDENING +PREHARDENS +PREHARVEST +PREHEADACHE +PREHEAT +PREHEATED +PREHEATER +PREHEATERS +PREHEATING +PREHEATS +PREHENSILE +PREHENSILITIES +PREHENSILITY +PREHENSION +PREHENSIONS +PREHIRING +PREHISTORIAN +PREHISTORIANS +PREHISTORIC +PREHISTORICAL +PREHISTORICALLY +PREHISTORIES +PREHISTORY +PREHOLIDAY +PREHOMINID +PREHOMINIDS +PREHUMAN +PREHUMANS +PREIGNITION +PREIGNITIONS +PREIMPLANTATION +PREIMPOSE +PREIMPOSED +PREIMPOSES +PREIMPOSING +PREINAUGURAL +PREINDUCTION +PREINDUSTRIAL +PREINFORM +PREINFORMED +PREINFORMING +PREINFORMS +PREINSERT +PREINSERTED +PREINSERTING +PREINSERTS +PREINTERVIEW +PREINTERVIEWED +PREINTERVIEWING +PREINTERVIEWS +PREINVASION +PREINVITE +PREINVITED +PREINVITES +PREINVITING +PREJUDGE +PREJUDGED +PREJUDGER +PREJUDGERS +PREJUDGES +PREJUDGING +PREJUDGMENT +PREJUDGMENTS +PREJUDICE +PREJUDICED +PREJUDICES +PREJUDICIAL +PREJUDICIALLY +PREJUDICIALNESS +PREJUDICING +PREKINDERGARTEN +PRELACIES +PRELACY +PRELAPSARIAN +PRELATE +PRELATES +PRELATIC +PRELATISM +PRELATISMS +PRELATURE +PRELATURES +PRELAUNCH +PRELAUNCHED +PRELAUNCHES +PRELAUNCHING +PRELAW +PRELECT +PRELECTED +PRELECTING +PRELECTION +PRELECTIONS +PRELECTOR +PRELECTORS +PRELECTS +PRELEGAL +PRELIBATION +PRELIBATIONS +PRELIFE +PRELIM +PRELIMINARIES +PRELIMINARILY +PRELIMINARY +PRELIMIT +PRELIMITED +PRELIMITING +PRELIMITS +PRELIMS +PRELITERARY +PRELITERATE +PRELITERATES +PRELIVES +PRELOAD +PRELOADED +PRELOADING +PRELOADS +PRELOCATE +PRELOCATED +PRELOCATES +PRELOCATING +PRELOGICAL +PRELUDE +PRELUDED +PRELUDER +PRELUDERS +PRELUDES +PRELUDIAL +PRELUDING +PRELUNCH +PRELUNCHEON +PRELUSION +PRELUSIONS +PRELUSIVE +PRELUSIVELY +PRELUSORY +PREMADE +PREMALIGNANT +PREMAN +PREMANUFACTURE +PREMANUFACTURED +PREMANUFACTURES +PREMARITAL +PREMARITALLY +PREMARKET +PREMARKETED +PREMARKETING +PREMARKETS +PREMARRIAGE +PREMATURE +PREMATURELY +PREMATURENESS +PREMATURENESSES +PREMATURES +PREMATURITIES +PREMATURITY +PREMAXILLA +PREMAXILLAE +PREMAXILLARIES +PREMAXILLARY +PREMAXILLAS +PREMEAL +PREMEASURE +PREMEASURED +PREMEASURES +PREMEASURING +PREMED +PREMEDIC +PREMEDICAL +PREMEDICS +PREMEDIEVAL +PREMEDITATE +PREMEDITATED +PREMEDITATEDLY +PREMEDITATES +PREMEDITATING +PREMEDITATION +PREMEDITATIONS +PREMEDITATIVE +PREMEDITATOR +PREMEDITATORS +PREMEDS +PREMEET +PREMEIOTIC +PREMEN +PREMENOPAUSAL +PREMENSTRUAL +PREMENSTRUALLY +PREMERGER +PREMIE +PREMIER +PREMIERE +PREMIERED +PREMIERES +PREMIERING +PREMIERS +PREMIERSHIP +PREMIERSHIPS +PREMIES +PREMIGRATION +PREMILLENARIAN +PREMILLENARIANS +PREMILLENNIAL +PREMILLENNIALLY +PREMISE +PREMISED +PREMISES +PREMISING +PREMISS +PREMISSES +PREMIUM +PREMIUMS +PREMIX +PREMIXED +PREMIXES +PREMIXING +PREMIXT +PREMODERN +PREMODIFICATION +PREMODIFIED +PREMODIFIES +PREMODIFY +PREMODIFYING +PREMOISTEN +PREMOISTENED +PREMOISTENING +PREMOISTENS +PREMOLAR +PREMOLARS +PREMOLD +PREMOLDED +PREMOLDING +PREMOLDS +PREMOLT +PREMONISH +PREMONISHED +PREMONISHES +PREMONISHING +PREMONITION +PREMONITIONS +PREMONITORILY +PREMONITORY +PREMORAL +PREMORSE +PREMUNE +PREMUNITION +PREMUNITIONS +PREMYCOTIC +PRENAME +PRENAMES +PRENATAL +PRENATALLY +PRENOMEN +PRENOMENS +PRENOMINA +PRENOMINATE +PRENOMINATED +PRENOMINATES +PRENOMINATING +PRENOMINATION +PRENOMINATIONS +PRENOON +PRENOTIFICATION +PRENOTIFIED +PRENOTIFIES +PRENOTIFY +PRENOTIFYING +PRENOTION +PRENOTIONS +PRENTICE +PRENTICED +PRENTICES +PRENTICING +PRENUMBER +PRENUMBERED +PRENUMBERING +PRENUMBERS +PRENUPTIAL +PREOBTAIN +PREOBTAINED +PREOBTAINING +PREOBTAINS +PREOCCUPANCIES +PREOCCUPANCY +PREOCCUPATION +PREOCCUPATIONS +PREOCCUPIED +PREOCCUPIES +PREOCCUPY +PREOCCUPYING +PREOP +PREOPENING +PREOPERATIONAL +PREOPERATIVE +PREOPERATIVELY +PREOPS +PREOPTION +PREOPTIONS +PREORAL +PREORDAIN +PREORDAINED +PREORDAINING +PREORDAINMENT +PREORDAINMENTS +PREORDAINS +PREORDER +PREORDERED +PREORDERING +PREORDERS +PREORDINATION +PREORDINATIONS +PREOVULATORY +PREOWNED +PREP +PREPACK +PREPACKAGE +PREPACKAGED +PREPACKAGES +PREPACKAGING +PREPACKED +PREPACKING +PREPACKS +PREPAID +PREPARATION +PREPARATIONS +PREPARATIVE +PREPARATIVELY +PREPARATIVES +PREPARATOR +PREPARATORILY +PREPARATORS +PREPARATORY +PREPARE +PREPARED +PREPAREDLY +PREPAREDNESS +PREPAREDNESSES +PREPARER +PREPARERS +PREPARES +PREPARING +PREPASTE +PREPASTED +PREPASTES +PREPASTING +PREPAVE +PREPAVED +PREPAVES +PREPAVING +PREPAY +PREPAYING +PREPAYMENT +PREPAYMENTS +PREPAYS +PREPENSE +PREPENSELY +PREPERFORMANCE +PREPILL +PREPLACE +PREPLACED +PREPLACES +PREPLACING +PREPLAN +PREPLANNED +PREPLANNING +PREPLANS +PREPLANT +PREPLANTING +PREPONDERANCE +PREPONDERANCES +PREPONDERANCIES +PREPONDERANCY +PREPONDERANT +PREPONDERANTLY +PREPONDERATE +PREPONDERATED +PREPONDERATELY +PREPONDERATES +PREPONDERATING +PREPONDERATION +PREPONDERATIONS +PREPORTION +PREPORTIONED +PREPORTIONING +PREPORTIONS +PREPOSITION +PREPOSITIONAL +PREPOSITIONALLY +PREPOSITIONS +PREPOSITIVE +PREPOSITIVELY +PREPOSSESS +PREPOSSESSED +PREPOSSESSES +PREPOSSESSING +PREPOSSESSION +PREPOSSESSIONS +PREPOSTEROUS +PREPOSTEROUSLY +PREPOTENCIES +PREPOTENCY +PREPOTENT +PREPOTENTLY +PREPPED +PREPPIE +PREPPIER +PREPPIES +PREPPIEST +PREPPILY +PREPPINESS +PREPPINESSES +PREPPING +PREPPY +PREPRANDIAL +PREPREG +PREPREGS +PREPREPARED +PREPRESIDENTIAL +PREPRESS +PREPRICE +PREPRICED +PREPRICES +PREPRICING +PREPRIMARIES +PREPRIMARY +PREPRINT +PREPRINTED +PREPRINTING +PREPRINTS +PREPROCESS +PREPROCESSED +PREPROCESSES +PREPROCESSING +PREPROCESSOR +PREPROCESSORS +PREPRODUCTION +PREPRODUCTIONS +PREPROFESSIONAL +PREPROGRAM +PREPROGRAMED +PREPROGRAMING +PREPROGRAMMED +PREPROGRAMMING +PREPROGRAMS +PREPS +PREPSYCHEDELIC +PREPUBERAL +PREPUBERTAL +PREPUBERTIES +PREPUBERTY +PREPUBES +PREPUBESCENCE +PREPUBESCENCES +PREPUBESCENT +PREPUBESCENTS +PREPUBIS +PREPUBLICATION +PREPUBLICATIONS +PREPUCE +PREPUCES +PREPUEBLO +PREPUNCH +PREPUNCHED +PREPUNCHES +PREPUNCHING +PREPUPA +PREPUPAE +PREPUPAL +PREPUPAS +PREPURCHASE +PREPURCHASED +PREPURCHASES +PREPURCHASING +PREPUTIAL +PREQUALIFIED +PREQUALIFIES +PREQUALIFY +PREQUALIFYING +PREQUEL +PREQUELS +PRERACE +PRERADIO +PRERECESSION +PRERECORD +PRERECORDED +PRERECORDING +PRERECORDS +PRERECTAL +PREREFORM +PREREGISTER +PREREGISTERED +PREREGISTERING +PREREGISTERS +PREREGISTRATION +PREREHEARSAL +PRERELEASE +PRERELEASED +PRERELEASES +PRERELEASING +PRERENAL +PREREQUIRE +PREREQUIRED +PREREQUIRES +PREREQUIRING +PREREQUISITE +PREREQUISITES +PRERETIREMENT +PRERETURN +PREREVIEW +PREREVISIONIST +PREREVOLUTION +PRERINSE +PRERINSED +PRERINSES +PRERINSING +PRERIOT +PREROCK +PREROGATIVE +PREROGATIVED +PREROGATIVES +PREROMANTIC +PRESA +PRESAGE +PRESAGED +PRESAGEFUL +PRESAGER +PRESAGERS +PRESAGES +PRESAGING +PRESALE +PRESALES +PRESANCTIFIED +PRESBYOPE +PRESBYOPES +PRESBYOPIA +PRESBYOPIAS +PRESBYOPIC +PRESBYOPICS +PRESBYTER +PRESBYTERATE +PRESBYTERATES +PRESBYTERIAL +PRESBYTERIALLY +PRESBYTERIALS +PRESBYTERIAN +PRESBYTERIES +PRESBYTERS +PRESBYTERY +PRESCHEDULE +PRESCHEDULED +PRESCHEDULES +PRESCHEDULING +PRESCHOOL +PRESCHOOLER +PRESCHOOLERS +PRESCHOOLS +PRESCIENCE +PRESCIENCES +PRESCIENT +PRESCIENTIFIC +PRESCIENTLY +PRESCIND +PRESCINDED +PRESCINDING +PRESCINDS +PRESCORE +PRESCORED +PRESCORES +PRESCORING +PRESCREEN +PRESCREENED +PRESCREENING +PRESCREENS +PRESCRIBE +PRESCRIBED +PRESCRIBER +PRESCRIBERS +PRESCRIBES +PRESCRIBING +PRESCRIPT +PRESCRIPTION +PRESCRIPTIONS +PRESCRIPTIVE +PRESCRIPTIVELY +PRESCRIPTS +PRESE +PRESEASON +PRESEASONS +PRESELECT +PRESELECTED +PRESELECTING +PRESELECTION +PRESELECTIONS +PRESELECTS +PRESELL +PRESELLING +PRESELLS +PRESENCE +PRESENCES +PRESENT +PRESENTABILITY +PRESENTABLE +PRESENTABLENESS +PRESENTABLY +PRESENTATION +PRESENTATIONAL +PRESENTATIONS +PRESENTATIVE +PRESENTED +PRESENTEE +PRESENTEES +PRESENTENCE +PRESENTENCED +PRESENTENCES +PRESENTENCING +PRESENTER +PRESENTERS +PRESENTIENT +PRESENTIMENT +PRESENTIMENTAL +PRESENTIMENTS +PRESENTING +PRESENTISM +PRESENTISMS +PRESENTIST +PRESENTLY +PRESENTMENT +PRESENTMENTS +PRESENTNESS +PRESENTNESSES +PRESENTS +PRESERVABILITY +PRESERVABLE +PRESERVATION +PRESERVATIONIST +PRESERVATIONS +PRESERVATIVE +PRESERVATIVES +PRESERVE +PRESERVED +PRESERVER +PRESERVERS +PRESERVES +PRESERVICE +PRESERVING +PRESET +PRESETS +PRESETTING +PRESETTLE +PRESETTLED +PRESETTLEMENT +PRESETTLES +PRESETTLING +PRESHAPE +PRESHAPED +PRESHAPES +PRESHAPING +PRESHIP +PRESHIPPED +PRESHIPPING +PRESHIPS +PRESHOW +PRESHOWED +PRESHOWING +PRESHOWN +PRESHOWS +PRESHRANK +PRESHRINK +PRESHRINKING +PRESHRINKS +PRESHRUNK +PRESHRUNKEN +PRESIDE +PRESIDED +PRESIDENCIES +PRESIDENCY +PRESIDENT +PRESIDENTIAL +PRESIDENTIALLY +PRESIDENTS +PRESIDENTSHIP +PRESIDENTSHIPS +PRESIDER +PRESIDERS +PRESIDES +PRESIDIA +PRESIDIAL +PRESIDIARY +PRESIDING +PRESIDIO +PRESIDIOS +PRESIDIUM +PRESIDIUMS +PRESIFT +PRESIFTED +PRESIFTING +PRESIFTS +PRESIGNAL +PRESIGNALED +PRESIGNALING +PRESIGNALLED +PRESIGNALLING +PRESIGNALS +PRESIGNIFIED +PRESIGNIFIES +PRESIGNIFY +PRESIGNIFYING +PRESLAUGHTER +PRESLEEP +PRESLICE +PRESLICED +PRESLICES +PRESLICING +PRESOAK +PRESOAKED +PRESOAKING +PRESOAKS +PRESOLD +PRESOLVE +PRESOLVED +PRESOLVES +PRESOLVING +PRESONG +PRESORT +PRESORTED +PRESORTING +PRESORTS +PRESPECIFIED +PRESPECIFIES +PRESPECIFY +PRESPECIFYING +PRESPLIT +PRESS +PRESSBOARD +PRESSBOARDS +PRESSED +PRESSER +PRESSERS +PRESSES +PRESSGANG +PRESSGANGS +PRESSING +PRESSINGLY +PRESSINGS +PRESSMAN +PRESSMARK +PRESSMARKS +PRESSMEN +PRESSOR +PRESSORS +PRESSROOM +PRESSROOMS +PRESSRUN +PRESSRUNS +PRESSURE +PRESSURED +PRESSURELESS +PRESSURES +PRESSURING +PRESSURISE +PRESSURISED +PRESSURISES +PRESSURISING +PRESSURIZATION +PRESSURIZATIONS +PRESSURIZE +PRESSURIZED +PRESSURIZER +PRESSURIZERS +PRESSURIZES +PRESSURIZING +PRESSWORK +PRESSWORKS +PREST +PRESTAMP +PRESTAMPED +PRESTAMPING +PRESTAMPS +PRESTER +PRESTERILIZE +PRESTERILIZED +PRESTERILIZES +PRESTERILIZING +PRESTERNA +PRESTERNUM +PRESTERS +PRESTIDIGITATOR +PRESTIGE +PRESTIGEFUL +PRESTIGES +PRESTIGIOUS +PRESTIGIOUSLY +PRESTIGIOUSNESS +PRESTISSIMO +PRESTO +PRESTORAGE +PRESTORE +PRESTORED +PRESTORES +PRESTORING +PRESTOS +PRESTRESS +PRESTRESSED +PRESTRESSES +PRESTRESSING +PRESTRIKE +PRESTRUCTURE +PRESTRUCTURED +PRESTRUCTURES +PRESTRUCTURING +PRESTS +PRESUMABLE +PRESUMABLY +PRESUME +PRESUMED +PRESUMEDLY +PRESUMER +PRESUMERS +PRESUMES +PRESUMING +PRESUMINGLY +PRESUMMIT +PRESUMMITS +PRESUMPTION +PRESUMPTIONS +PRESUMPTIVE +PRESUMPTIVELY +PRESUMPTUOUS +PRESUMPTUOUSLY +PRESUPPOSE +PRESUPPOSED +PRESUPPOSES +PRESUPPOSING +PRESUPPOSITION +PRESUPPOSITIONS +PRESURGERY +PRESURVEY +PRESURVEYED +PRESURVEYING +PRESURVEYS +PRESWEETEN +PRESWEETENED +PRESWEETENING +PRESWEETENS +PRESYMPTOMATIC +PRESYNAPTIC +PRESYNAPTICALLY +PRETAPE +PRETAPED +PRETAPES +PRETAPING +PRETASTE +PRETASTED +PRETASTES +PRETASTING +PRETAX +PRETEEN +PRETEENS +PRETELEVISION +PRETELL +PRETELLING +PRETELLS +PRETENCE +PRETENCES +PRETEND +PRETENDED +PRETENDEDLY +PRETENDER +PRETENDERS +PRETENDING +PRETENDS +PRETENSE +PRETENSES +PRETENSION +PRETENSIONED +PRETENSIONING +PRETENSIONLESS +PRETENSIONS +PRETENTIOUS +PRETENTIOUSLY +PRETENTIOUSNESS +PRETERIT +PRETERITE +PRETERITES +PRETERITS +PRETERM +PRETERMINAL +PRETERMINATION +PRETERMINATIONS +PRETERMISSION +PRETERMISSIONS +PRETERMIT +PRETERMITS +PRETERMITTED +PRETERMITTING +PRETERMS +PRETERNATURAL +PRETERNATURALLY +PRETEST +PRETESTED +PRETESTING +PRETESTS +PRETEXT +PRETEXTED +PRETEXTING +PRETEXTS +PRETHEATER +PRETOLD +PRETOR +PRETORIAL +PRETORIAN +PRETORIANS +PRETORS +PRETOURNAMENT +PRETRAIN +PRETRAINED +PRETRAINING +PRETRAINS +PRETRAVEL +PRETREAT +PRETREATED +PRETREATING +PRETREATMENT +PRETREATMENTS +PRETREATS +PRETRIAL +PRETRIALS +PRETRIM +PRETRIMMED +PRETRIMMING +PRETRIMS +PRETTIED +PRETTIER +PRETTIES +PRETTIEST +PRETTIFICATION +PRETTIFICATIONS +PRETTIFIED +PRETTIFIER +PRETTIFIERS +PRETTIFIES +PRETTIFY +PRETTIFYING +PRETTILY +PRETTINESS +PRETTINESSES +PRETTY +PRETTYING +PRETTYISH +PRETYPE +PRETYPED +PRETYPES +PRETYPING +PRETZEL +PRETZELS +PREUNIFICATION +PREUNION +PREUNIONS +PREUNITE +PREUNITED +PREUNITES +PREUNITING +PREUNIVERSITY +PREVAIL +PREVAILED +PREVAILER +PREVAILERS +PREVAILING +PREVAILS +PREVALENCE +PREVALENCES +PREVALENT +PREVALENTLY +PREVALENTS +PREVALUE +PREVALUED +PREVALUES +PREVALUING +PREVARICATE +PREVARICATED +PREVARICATES +PREVARICATING +PREVARICATION +PREVARICATIONS +PREVARICATOR +PREVARICATORS +PREVENIENT +PREVENIENTLY +PREVENT +PREVENTABILITY +PREVENTABLE +PREVENTATIVE +PREVENTATIVES +PREVENTED +PREVENTER +PREVENTERS +PREVENTIBLE +PREVENTING +PREVENTION +PREVENTIONS +PREVENTIVE +PREVENTIVELY +PREVENTIVENESS +PREVENTIVES +PREVENTS +PREVERB +PREVERBAL +PREVERBS +PREVIABLE +PREVIEW +PREVIEWED +PREVIEWER +PREVIEWERS +PREVIEWING +PREVIEWS +PREVIOUS +PREVIOUSLY +PREVIOUSNESS +PREVIOUSNESSES +PREVISE +PREVISED +PREVISES +PREVISING +PREVISION +PREVISIONAL +PREVISIONARY +PREVISIONED +PREVISIONING +PREVISIONS +PREVISIT +PREVISITED +PREVISITING +PREVISITS +PREVISOR +PREVISORS +PREVOCALIC +PREVOCATIONAL +PREVUE +PREVUED +PREVUES +PREVUING +PREWAR +PREWARM +PREWARMED +PREWARMING +PREWARMS +PREWARN +PREWARNED +PREWARNING +PREWARNS +PREWASH +PREWASHED +PREWASHES +PREWASHING +PREWEANING +PREWEIGH +PREWEIGHED +PREWEIGHING +PREWEIGHS +PREWIRE +PREWIRED +PREWIRES +PREWIRING +PREWORK +PREWORKED +PREWORKING +PREWORKS +PREWORN +PREWRAP +PREWRAPPED +PREWRAPPING +PREWRAPS +PREWRITING +PREWRITINGS +PREX +PREXES +PREXIES +PREXY +PREY +PREYED +PREYER +PREYERS +PREYING +PREYS +PREZ +PREZES +PRIAPEAN +PRIAPI +PRIAPIC +PRIAPISM +PRIAPISMS +PRIAPUS +PRIAPUSES +PRICE +PRICEABLE +PRICED +PRICELESS +PRICELESSLY +PRICER +PRICERS +PRICES +PRICEY +PRICIER +PRICIEST +PRICILY +PRICING +PRICK +PRICKED +PRICKER +PRICKERS +PRICKET +PRICKETS +PRICKIER +PRICKIEST +PRICKING +PRICKINGS +PRICKLE +PRICKLED +PRICKLES +PRICKLIER +PRICKLIEST +PRICKLINESS +PRICKLINESSES +PRICKLING +PRICKLY +PRICKS +PRICKY +PRICY +PRIDE +PRIDED +PRIDEFUL +PRIDEFULLY +PRIDEFULNESS +PRIDEFULNESSES +PRIDES +PRIDING +PRIED +PRIEDIEU +PRIEDIEUS +PRIEDIEUX +PRIER +PRIERS +PRIES +PRIEST +PRIESTED +PRIESTESS +PRIESTESSES +PRIESTHOOD +PRIESTHOODS +PRIESTING +PRIESTLIER +PRIESTLIEST +PRIESTLINESS +PRIESTLINESSES +PRIESTLY +PRIESTS +PRIG +PRIGGED +PRIGGERIES +PRIGGERY +PRIGGING +PRIGGISH +PRIGGISHLY +PRIGGISHNESS +PRIGGISHNESSES +PRIGGISM +PRIGGISMS +PRIGS +PRILL +PRILLED +PRILLING +PRILLS +PRIM +PRIMA +PRIMACIES +PRIMACY +PRIMAGE +PRIMAGES +PRIMAL +PRIMALITIES +PRIMALITY +PRIMARIES +PRIMARILY +PRIMARY +PRIMAS +PRIMATAL +PRIMATALS +PRIMATE +PRIMATES +PRIMATESHIP +PRIMATESHIPS +PRIMATIAL +PRIMATIALS +PRIMATOLOGICAL +PRIMATOLOGIES +PRIMATOLOGIST +PRIMATOLOGISTS +PRIMATOLOGY +PRIMAVERA +PRIMAVERAS +PRIME +PRIMED +PRIMELY +PRIMENESS +PRIMENESSES +PRIMER +PRIMERO +PRIMEROS +PRIMERS +PRIMES +PRIMEVAL +PRIMEVALLY +PRIMI +PRIMINE +PRIMINES +PRIMING +PRIMINGS +PRIMIPARA +PRIMIPARAE +PRIMIPARAS +PRIMIPAROUS +PRIMITIVE +PRIMITIVELY +PRIMITIVENESS +PRIMITIVENESSES +PRIMITIVES +PRIMITIVISM +PRIMITIVISMS +PRIMITIVIST +PRIMITIVISTIC +PRIMITIVISTS +PRIMITIVITIES +PRIMITIVITY +PRIMLY +PRIMMED +PRIMMER +PRIMMEST +PRIMMING +PRIMNESS +PRIMNESSES +PRIMO +PRIMOGENITOR +PRIMOGENITORS +PRIMOGENITURE +PRIMOGENITURES +PRIMORDIA +PRIMORDIAL +PRIMORDIALLY +PRIMORDIUM +PRIMOS +PRIMP +PRIMPED +PRIMPING +PRIMPS +PRIMROSE +PRIMROSES +PRIMS +PRIMSIE +PRIMULA +PRIMULAS +PRIMUS +PRIMUSES +PRINCE +PRINCEDOM +PRINCEDOMS +PRINCEKIN +PRINCEKINS +PRINCELET +PRINCELETS +PRINCELIER +PRINCELIEST +PRINCELINESS +PRINCELINESSES +PRINCELING +PRINCELINGS +PRINCELY +PRINCES +PRINCESHIP +PRINCESHIPS +PRINCESS +PRINCESSE +PRINCESSES +PRINCIPAL +PRINCIPALITIES +PRINCIPALITY +PRINCIPALLY +PRINCIPALS +PRINCIPALSHIP +PRINCIPALSHIPS +PRINCIPE +PRINCIPI +PRINCIPIA +PRINCIPIUM +PRINCIPLE +PRINCIPLED +PRINCIPLES +PRINCOCK +PRINCOCKS +PRINCOX +PRINCOXES +PRINK +PRINKED +PRINKER +PRINKERS +PRINKING +PRINKS +PRINT +PRINTABILITIES +PRINTABILITY +PRINTABLE +PRINTED +PRINTER +PRINTERIES +PRINTERS +PRINTERY +PRINTHEAD +PRINTHEADS +PRINTING +PRINTINGS +PRINTLESS +PRINTMAKER +PRINTMAKERS +PRINTMAKING +PRINTMAKINGS +PRINTOUT +PRINTOUTS +PRINTS +PRION +PRIONS +PRIOR +PRIORATE +PRIORATES +PRIORESS +PRIORESSES +PRIORIES +PRIORITIES +PRIORITIZATION +PRIORITIZATIONS +PRIORITIZE +PRIORITIZED +PRIORITIZES +PRIORITIZING +PRIORITY +PRIORLY +PRIORS +PRIORSHIP +PRIORSHIPS +PRIORY +PRISE +PRISED +PRISERE +PRISERES +PRISES +PRISING +PRISM +PRISMATIC +PRISMATICALLY +PRISMATOID +PRISMATOIDS +PRISMOID +PRISMOIDAL +PRISMOIDS +PRISMS +PRISON +PRISONED +PRISONER +PRISONERS +PRISONING +PRISONS +PRISS +PRISSED +PRISSES +PRISSIER +PRISSIES +PRISSIEST +PRISSILY +PRISSINESS +PRISSINESSES +PRISSING +PRISSY +PRISTANE +PRISTANES +PRISTINE +PRISTINELY +PRITHEE +PRIVACIES +PRIVACY +PRIVATDOCENT +PRIVATDOCENTS +PRIVATDOZENT +PRIVATDOZENTS +PRIVATE +PRIVATEER +PRIVATEERED +PRIVATEERING +PRIVATEERS +PRIVATELY +PRIVATENESS +PRIVATENESSES +PRIVATER +PRIVATES +PRIVATEST +PRIVATION +PRIVATIONS +PRIVATISE +PRIVATISED +PRIVATISES +PRIVATISING +PRIVATISM +PRIVATISMS +PRIVATIST +PRIVATISTS +PRIVATIVE +PRIVATIVELY +PRIVATIVES +PRIVATIZATION +PRIVATIZATIONS +PRIVATIZE +PRIVATIZED +PRIVATIZES +PRIVATIZING +PRIVET +PRIVETS +PRIVIER +PRIVIES +PRIVIEST +PRIVILEGE +PRIVILEGED +PRIVILEGES +PRIVILEGING +PRIVILY +PRIVITIES +PRIVITY +PRIVY +PRIZE +PRIZED +PRIZEFIGHT +PRIZEFIGHTER +PRIZEFIGHTERS +PRIZEFIGHTING +PRIZEFIGHTINGS +PRIZEFIGHTS +PRIZER +PRIZERS +PRIZES +PRIZEWINNER +PRIZEWINNERS +PRIZEWINNING +PRIZING +PRO +PROA +PROABORTION +PROACTION +PROACTIONS +PROACTIVE +PROAS +PROBABILISM +PROBABILISMS +PROBABILIST +PROBABILISTIC +PROBABILISTS +PROBABILITIES +PROBABILITY +PROBABLE +PROBABLES +PROBABLY +PROBAND +PROBANDS +PROBANG +PROBANGS +PROBATE +PROBATED +PROBATES +PROBATING +PROBATION +PROBATIONAL +PROBATIONALLY +PROBATIONARY +PROBATIONER +PROBATIONERS +PROBATIONS +PROBATIVE +PROBATORY +PROBE +PROBED +PROBENECID +PROBENECIDS +PROBER +PROBERS +PROBES +PROBING +PROBINGLY +PROBIOTIC +PROBIOTICS +PROBIT +PROBITIES +PROBITS +PROBITY +PROBLEM +PROBLEMATIC +PROBLEMATICAL +PROBLEMATICALLY +PROBLEMATICS +PROBLEMS +PROBOSCIDEAN +PROBOSCIDEANS +PROBOSCIDES +PROBOSCIDIAN +PROBOSCIDIANS +PROBOSCIS +PROBOSCISES +PROCAINE +PROCAINES +PROCAMBIA +PROCAMBIAL +PROCAMBIUM +PROCAMBIUMS +PROCARBAZINE +PROCARBAZINES +PROCARP +PROCARPS +PROCARYOTE +PROCARYOTES +PROCATHEDRAL +PROCATHEDRALS +PROCEDURAL +PROCEDURALLY +PROCEDURALS +PROCEDURE +PROCEDURES +PROCEED +PROCEEDED +PROCEEDER +PROCEEDERS +PROCEEDING +PROCEEDINGS +PROCEEDS +PROCEPHALIC +PROCERCOID +PROCERCOIDS +PROCESS +PROCESSABILITY +PROCESSABLE +PROCESSED +PROCESSER +PROCESSERS +PROCESSES +PROCESSIBILITY +PROCESSIBLE +PROCESSING +PROCESSION +PROCESSIONAL +PROCESSIONALLY +PROCESSIONALS +PROCESSIONED +PROCESSIONING +PROCESSIONS +PROCESSOR +PROCESSORS +PROCHAIN +PROCHEIN +PROCHOICE +PROCHURCH +PROCLAIM +PROCLAIMED +PROCLAIMER +PROCLAIMERS +PROCLAIMING +PROCLAIMS +PROCLAMATION +PROCLAMATIONS +PROCLISES +PROCLISIS +PROCLITIC +PROCLITICS +PROCLIVITIES +PROCLIVITY +PROCONSUL +PROCONSULAR +PROCONSULATE +PROCONSULATES +PROCONSULS +PROCONSULSHIP +PROCONSULSHIPS +PROCRASTINATE +PROCRASTINATED +PROCRASTINATES +PROCRASTINATING +PROCRASTINATION +PROCRASTINATOR +PROCRASTINATORS +PROCREANT +PROCREATE +PROCREATED +PROCREATES +PROCREATING +PROCREATION +PROCREATIONS +PROCREATIVE +PROCREATOR +PROCREATORS +PROCRUSTEAN +PROCRYPTIC +PROCTITIDES +PROCTITIS +PROCTITISES +PROCTODAEA +PROCTODAEUM +PROCTODAEUMS +PROCTODEA +PROCTODEUM +PROCTODEUMS +PROCTOLOGIC +PROCTOLOGICAL +PROCTOLOGIES +PROCTOLOGIST +PROCTOLOGISTS +PROCTOLOGY +PROCTOR +PROCTORED +PROCTORIAL +PROCTORING +PROCTORS +PROCTORSHIP +PROCTORSHIPS +PROCUMBENT +PROCURABLE +PROCURAL +PROCURALS +PROCURATION +PROCURATIONS +PROCURATOR +PROCURATORIAL +PROCURATORS +PROCURE +PROCURED +PROCUREMENT +PROCUREMENTS +PROCURER +PROCURERS +PROCURES +PROCURESS +PROCURESSES +PROCURING +PROD +PRODDED +PRODDER +PRODDERS +PRODDING +PRODIGAL +PRODIGALITIES +PRODIGALITY +PRODIGALLY +PRODIGALS +PRODIGIES +PRODIGIOUS +PRODIGIOUSLY +PRODIGIOUSNESS +PRODIGY +PRODROMAL +PRODROMATA +PRODROME +PRODROMES +PRODROMIC +PRODRUG +PRODRUGS +PRODS +PRODUCE +PRODUCED +PRODUCER +PRODUCERS +PRODUCES +PRODUCIBLE +PRODUCING +PRODUCT +PRODUCTION +PRODUCTIONAL +PRODUCTIONS +PRODUCTIVE +PRODUCTIVELY +PRODUCTIVENESS +PRODUCTIVITIES +PRODUCTIVITY +PRODUCTS +PROEM +PROEMIAL +PROEMS +PROENZYME +PROENZYMES +PROESTRUS +PROESTRUSES +PROETTE +PROETTES +PROF +PROFAMILY +PROFANATION +PROFANATIONS +PROFANATORY +PROFANE +PROFANED +PROFANELY +PROFANENESS +PROFANENESSES +PROFANER +PROFANERS +PROFANES +PROFANING +PROFANITIES +PROFANITY +PROFESS +PROFESSED +PROFESSEDLY +PROFESSES +PROFESSING +PROFESSION +PROFESSIONAL +PROFESSIONALISM +PROFESSIONALIZE +PROFESSIONALLY +PROFESSIONALS +PROFESSIONS +PROFESSOR +PROFESSORATE +PROFESSORATES +PROFESSORIAL +PROFESSORIALLY +PROFESSORIAT +PROFESSORIATE +PROFESSORIATES +PROFESSORIATS +PROFESSORS +PROFESSORSHIP +PROFESSORSHIPS +PROFFER +PROFFERED +PROFFERER +PROFFERERS +PROFFERING +PROFFERS +PROFICIENCIES +PROFICIENCY +PROFICIENT +PROFICIENTLY +PROFICIENTS +PROFILE +PROFILED +PROFILER +PROFILERS +PROFILES +PROFILING +PROFILINGS +PROFIT +PROFITABILITIES +PROFITABILITY +PROFITABLE +PROFITABLENESS +PROFITABLY +PROFITED +PROFITEER +PROFITEERED +PROFITEERING +PROFITEERS +PROFITER +PROFITEROLE +PROFITEROLES +PROFITERS +PROFITING +PROFITLESS +PROFITS +PROFITWISE +PROFLIGACIES +PROFLIGACY +PROFLIGATE +PROFLIGATELY +PROFLIGATES +PROFLUENT +PROFORMA +PROFOUND +PROFOUNDER +PROFOUNDEST +PROFOUNDLY +PROFOUNDNESS +PROFOUNDNESSES +PROFOUNDS +PROFS +PROFUNDITIES +PROFUNDITY +PROFUSE +PROFUSELY +PROFUSENESS +PROFUSENESSES +PROFUSION +PROFUSIONS +PROFUSIVE +PROG +PROGENIES +PROGENITOR +PROGENITORS +PROGENY +PROGERIA +PROGERIAS +PROGESTATIONAL +PROGESTERONE +PROGESTERONES +PROGESTIN +PROGESTINS +PROGESTOGEN +PROGESTOGENIC +PROGESTOGENS +PROGGED +PROGGER +PROGGERS +PROGGING +PROGLOTTID +PROGLOTTIDES +PROGLOTTIDS +PROGLOTTIS +PROGNATHISM +PROGNATHISMS +PROGNATHOUS +PROGNOSE +PROGNOSED +PROGNOSES +PROGNOSING +PROGNOSIS +PROGNOSTIC +PROGNOSTICATE +PROGNOSTICATED +PROGNOSTICATES +PROGNOSTICATING +PROGNOSTICATION +PROGNOSTICATIVE +PROGNOSTICATOR +PROGNOSTICATORS +PROGNOSTICS +PROGRADE +PROGRAM +PROGRAMED +PROGRAMER +PROGRAMERS +PROGRAMING +PROGRAMINGS +PROGRAMMABILITY +PROGRAMMABLE +PROGRAMMABLES +PROGRAMMATIC +PROGRAMME +PROGRAMMED +PROGRAMMER +PROGRAMMERS +PROGRAMMES +PROGRAMMING +PROGRAMMINGS +PROGRAMS +PROGRESS +PROGRESSED +PROGRESSES +PROGRESSING +PROGRESSION +PROGRESSIONAL +PROGRESSIONS +PROGRESSIVE +PROGRESSIVELY +PROGRESSIVENESS +PROGRESSIVES +PROGRESSIVISM +PROGRESSIVISMS +PROGRESSIVIST +PROGRESSIVISTIC +PROGRESSIVISTS +PROGRESSIVITIES +PROGRESSIVITY +PROGS +PROGUN +PROHIBIT +PROHIBITED +PROHIBITING +PROHIBITION +PROHIBITIONIST +PROHIBITIONISTS +PROHIBITIONS +PROHIBITIVE +PROHIBITIVELY +PROHIBITIVENESS +PROHIBITORY +PROHIBITS +PROINSULIN +PROINSULINS +PROJECT +PROJECTABLE +PROJECTED +PROJECTILE +PROJECTILES +PROJECTING +PROJECTION +PROJECTIONAL +PROJECTIONIST +PROJECTIONISTS +PROJECTIONS +PROJECTIVE +PROJECTIVELY +PROJECTOR +PROJECTORS +PROJECTS +PROJET +PROJETS +PROKARYOTE +PROKARYOTES +PROKARYOTIC +PROLABOR +PROLACTIN +PROLACTINS +PROLAMIN +PROLAMINE +PROLAMINES +PROLAMINS +PROLAN +PROLANS +PROLAPSE +PROLAPSED +PROLAPSES +PROLAPSING +PROLAPSUS +PROLATE +PROLATELY +PROLE +PROLEG +PROLEGOMENA +PROLEGOMENON +PROLEGOMENOUS +PROLEGS +PROLEPSES +PROLEPSIS +PROLEPTIC +PROLEPTICALLY +PROLES +PROLETARIAN +PROLETARIANISE +PROLETARIANISED +PROLETARIANISES +PROLETARIANIZE +PROLETARIANIZED +PROLETARIANIZES +PROLETARIANS +PROLETARIAT +PROLETARIATS +PROLETARIES +PROLETARY +PROLIFERATE +PROLIFERATED +PROLIFERATES +PROLIFERATING +PROLIFERATION +PROLIFERATIONS +PROLIFERATIVE +PROLIFIC +PROLIFICACIES +PROLIFICACY +PROLIFICALLY +PROLIFICITIES +PROLIFICITY +PROLIFICNESS +PROLIFICNESSES +PROLINE +PROLINES +PROLIX +PROLIXITIES +PROLIXITY +PROLIXLY +PROLOCUTOR +PROLOCUTORS +PROLOG +PROLOGED +PROLOGING +PROLOGIST +PROLOGISTS +PROLOGIZE +PROLOGIZED +PROLOGIZES +PROLOGIZING +PROLOGS +PROLOGUE +PROLOGUED +PROLOGUES +PROLOGUING +PROLOGUIZE +PROLOGUIZED +PROLOGUIZES +PROLOGUIZING +PROLONG +PROLONGATION +PROLONGATIONS +PROLONGE +PROLONGED +PROLONGER +PROLONGERS +PROLONGES +PROLONGING +PROLONGS +PROLUSION +PROLUSIONS +PROLUSORY +PROM +PROMENADE +PROMENADED +PROMENADER +PROMENADERS +PROMENADES +PROMENADING +PROMETHIUM +PROMETHIUMS +PROMETRIC +PROMINE +PROMINENCE +PROMINENCES +PROMINENT +PROMINENTLY +PROMINES +PROMISCUITIES +PROMISCUITY +PROMISCUOUS +PROMISCUOUSLY +PROMISCUOUSNESS +PROMISE +PROMISED +PROMISEE +PROMISEES +PROMISER +PROMISERS +PROMISES +PROMISING +PROMISINGLY +PROMISOR +PROMISORS +PROMISSORY +PROMO +PROMODERN +PROMOED +PROMOING +PROMONTORIES +PROMONTORY +PROMOS +PROMOTABILITIES +PROMOTABILITY +PROMOTABLE +PROMOTE +PROMOTED +PROMOTER +PROMOTERS +PROMOTES +PROMOTING +PROMOTION +PROMOTIONAL +PROMOTIONS +PROMOTIVE +PROMOTIVENESS +PROMOTIVENESSES +PROMPT +PROMPTBOOK +PROMPTBOOKS +PROMPTED +PROMPTER +PROMPTERS +PROMPTEST +PROMPTING +PROMPTITUDE +PROMPTITUDES +PROMPTLY +PROMPTNESS +PROMPTNESSES +PROMPTS +PROMS +PROMULGATE +PROMULGATED +PROMULGATES +PROMULGATING +PROMULGATION +PROMULGATIONS +PROMULGATOR +PROMULGATORS +PROMULGE +PROMULGED +PROMULGES +PROMULGING +PRONATE +PRONATED +PRONATES +PRONATING +PRONATION +PRONATIONS +PRONATOR +PRONATORES +PRONATORS +PRONE +PRONELY +PRONENESS +PRONENESSES +PRONEPHRA +PRONEPHRIC +PRONEPHROI +PRONEPHROS +PRONEPHROSES +PRONG +PRONGED +PRONGHORN +PRONGHORNS +PRONGING +PRONGS +PRONOMINAL +PRONOMINALLY +PRONOTA +PRONOTUM +PRONOUN +PRONOUNCE +PRONOUNCEABLE +PRONOUNCED +PRONOUNCEDLY +PRONOUNCEMENT +PRONOUNCEMENTS +PRONOUNCER +PRONOUNCERS +PRONOUNCES +PRONOUNCING +PRONOUNS +PRONTO +PRONUCLEAR +PRONUCLEI +PRONUCLEUS +PRONUCLEUSES +PRONUNCIAMENTO +PRONUNCIAMENTOS +PRONUNCIATION +PRONUNCIATIONAL +PRONUNCIATIONS +PROOF +PROOFED +PROOFER +PROOFERS +PROOFING +PROOFREAD +PROOFREADER +PROOFREADERS +PROOFREADING +PROOFREADS +PROOFROOM +PROOFROOMS +PROOFS +PROP +PROPAEDEUTIC +PROPAEDEUTICS +PROPAGABLE +PROPAGANDA +PROPAGANDAS +PROPAGANDIST +PROPAGANDISTIC +PROPAGANDISTS +PROPAGANDIZE +PROPAGANDIZED +PROPAGANDIZER +PROPAGANDIZERS +PROPAGANDIZES +PROPAGANDIZING +PROPAGATE +PROPAGATED +PROPAGATES +PROPAGATING +PROPAGATION +PROPAGATIONS +PROPAGATIVE +PROPAGATOR +PROPAGATORS +PROPAGULE +PROPAGULES +PROPANE +PROPANES +PROPEL +PROPELLANT +PROPELLANTS +PROPELLED +PROPELLENT +PROPELLENTS +PROPELLER +PROPELLERS +PROPELLING +PROPELLOR +PROPELLORS +PROPELS +PROPEND +PROPENDED +PROPENDING +PROPENDS +PROPENE +PROPENES +PROPENOL +PROPENOLS +PROPENSE +PROPENSITIES +PROPENSITY +PROPENYL +PROPER +PROPERDIN +PROPERDINS +PROPERER +PROPEREST +PROPERLY +PROPERNESS +PROPERNESSES +PROPERS +PROPERTIED +PROPERTIES +PROPERTY +PROPERTYLESS +PROPHAGE +PROPHAGES +PROPHASE +PROPHASES +PROPHASIC +PROPHECIES +PROPHECY +PROPHESIED +PROPHESIER +PROPHESIERS +PROPHESIES +PROPHESY +PROPHESYING +PROPHET +PROPHETESS +PROPHETESSES +PROPHETHOOD +PROPHETHOODS +PROPHETIC +PROPHETICAL +PROPHETICALLY +PROPHETS +PROPHYLACTIC +PROPHYLACTICS +PROPHYLAXES +PROPHYLAXIS +PROPINE +PROPINED +PROPINES +PROPINING +PROPINQUITIES +PROPINQUITY +PROPIONATE +PROPIONATES +PROPITIATE +PROPITIATED +PROPITIATES +PROPITIATING +PROPITIATION +PROPITIATIONS +PROPITIATOR +PROPITIATORS +PROPITIATORY +PROPITIOUS +PROPITIOUSLY +PROPITIOUSNESS +PROPJET +PROPJETS +PROPLASTID +PROPLASTIDS +PROPMAN +PROPMEN +PROPOLIS +PROPOLISES +PROPONE +PROPONED +PROPONENT +PROPONENTS +PROPONES +PROPONING +PROPORTION +PROPORTIONABLE +PROPORTIONABLY +PROPORTIONAL +PROPORTIONALITY +PROPORTIONALLY +PROPORTIONALS +PROPORTIONATE +PROPORTIONATED +PROPORTIONATELY +PROPORTIONATES +PROPORTIONATING +PROPORTIONED +PROPORTIONING +PROPORTIONS +PROPOSAL +PROPOSALS +PROPOSE +PROPOSED +PROPOSER +PROPOSERS +PROPOSES +PROPOSING +PROPOSITI +PROPOSITION +PROPOSITIONAL +PROPOSITIONED +PROPOSITIONING +PROPOSITIONS +PROPOSITUS +PROPOUND +PROPOUNDED +PROPOUNDER +PROPOUNDERS +PROPOUNDING +PROPOUNDS +PROPOXYPHENE +PROPOXYPHENES +PROPPED +PROPPING +PROPRAETOR +PROPRAETORS +PROPRANOLOL +PROPRANOLOLS +PROPRETOR +PROPRETORS +PROPRIA +PROPRIETARIES +PROPRIETARY +PROPRIETIES +PROPRIETOR +PROPRIETORIAL +PROPRIETORS +PROPRIETORSHIP +PROPRIETORSHIPS +PROPRIETRESS +PROPRIETRESSES +PROPRIETY +PROPRIOCEPTION +PROPRIOCEPTIONS +PROPRIOCEPTIVE +PROPRIOCEPTOR +PROPRIOCEPTORS +PROPRIUM +PROPS +PROPTOSES +PROPTOSIS +PROPULSION +PROPULSIONS +PROPULSIVE +PROPYL +PROPYLA +PROPYLAEA +PROPYLAEUM +PROPYLENE +PROPYLENES +PROPYLIC +PROPYLITE +PROPYLITES +PROPYLON +PROPYLS +PRORATE +PRORATED +PRORATES +PRORATING +PRORATION +PRORATIONS +PROREFORM +PROROGATE +PROROGATED +PROROGATES +PROROGATING +PROROGATION +PROROGATIONS +PROROGUE +PROROGUED +PROROGUES +PROROGUING +PROS +PROSAIC +PROSAICAL +PROSAICALLY +PROSAISM +PROSAISMS +PROSAIST +PROSAISTS +PROSATEUR +PROSATEURS +PROSAUROPOD +PROSAUROPODS +PROSCENIA +PROSCENIUM +PROSCENIUMS +PROSCIUTTI +PROSCIUTTO +PROSCIUTTOS +PROSCRIBE +PROSCRIBED +PROSCRIBER +PROSCRIBERS +PROSCRIBES +PROSCRIBING +PROSCRIPTION +PROSCRIPTIONS +PROSCRIPTIVE +PROSCRIPTIVELY +PROSE +PROSECT +PROSECTED +PROSECTING +PROSECTOR +PROSECTORS +PROSECTS +PROSECUTABLE +PROSECUTE +PROSECUTED +PROSECUTES +PROSECUTING +PROSECUTION +PROSECUTIONS +PROSECUTOR +PROSECUTORIAL +PROSECUTORS +PROSED +PROSELYTE +PROSELYTED +PROSELYTES +PROSELYTING +PROSELYTISE +PROSELYTISED +PROSELYTISES +PROSELYTISING +PROSELYTISM +PROSELYTISMS +PROSELYTIZATION +PROSELYTIZE +PROSELYTIZED +PROSELYTIZER +PROSELYTIZERS +PROSELYTIZES +PROSELYTIZING +PROSEMINAR +PROSEMINARS +PROSENCEPHALA +PROSENCEPHALIC +PROSENCEPHALON +PROSER +PROSERS +PROSES +PROSIER +PROSIEST +PROSILY +PROSIMIAN +PROSIMIANS +PROSINESS +PROSINESSES +PROSING +PROSIT +PROSO +PROSOBRANCH +PROSOBRANCHS +PROSODIC +PROSODICAL +PROSODICALLY +PROSODIES +PROSODIST +PROSODISTS +PROSODY +PROSOMA +PROSOMAL +PROSOMAS +PROSOMATA +PROSOPOGRAPHIES +PROSOPOGRAPHY +PROSOPOPOEIA +PROSOPOPOEIAS +PROSOS +PROSPECT +PROSPECTED +PROSPECTING +PROSPECTIVE +PROSPECTIVELY +PROSPECTOR +PROSPECTORS +PROSPECTS +PROSPECTUS +PROSPECTUSES +PROSPER +PROSPERED +PROSPERING +PROSPERITIES +PROSPERITY +PROSPEROUS +PROSPEROUSLY +PROSPEROUSNESS +PROSPERS +PROSS +PROSSES +PROSSIE +PROSSIES +PROST +PROSTACYCLIN +PROSTACYCLINS +PROSTAGLANDIN +PROSTAGLANDINS +PROSTATE +PROSTATECTOMIES +PROSTATECTOMY +PROSTATES +PROSTATIC +PROSTATISM +PROSTATISMS +PROSTATITIS +PROSTATITISES +PROSTHESES +PROSTHESIS +PROSTHETIC +PROSTHETICALLY +PROSTHETICS +PROSTHETIST +PROSTHETISTS +PROSTHODONTICS +PROSTHODONTIST +PROSTHODONTISTS +PROSTIE +PROSTIES +PROSTITUTE +PROSTITUTED +PROSTITUTES +PROSTITUTING +PROSTITUTION +PROSTITUTIONS +PROSTITUTOR +PROSTITUTORS +PROSTOMIA +PROSTOMIAL +PROSTOMIUM +PROSTRATE +PROSTRATED +PROSTRATES +PROSTRATING +PROSTRATION +PROSTRATIONS +PROSTYLE +PROSTYLES +PROSY +PROTACTINIUM +PROTACTINIUMS +PROTAGONIST +PROTAGONISTS +PROTAMIN +PROTAMINE +PROTAMINES +PROTAMINS +PROTASES +PROTASIS +PROTATIC +PROTEA +PROTEAN +PROTEANS +PROTEAS +PROTEASE +PROTEASES +PROTECT +PROTECTANT +PROTECTANTS +PROTECTED +PROTECTER +PROTECTERS +PROTECTING +PROTECTION +PROTECTIONISM +PROTECTIONISMS +PROTECTIONIST +PROTECTIONISTS +PROTECTIONS +PROTECTIVE +PROTECTIVELY +PROTECTIVENESS +PROTECTOR +PROTECTORAL +PROTECTORATE +PROTECTORATES +PROTECTORIES +PROTECTORS +PROTECTORSHIP +PROTECTORSHIPS +PROTECTORY +PROTECTRESS +PROTECTRESSES +PROTECTS +PROTEGE +PROTEGEE +PROTEGEES +PROTEGES +PROTEI +PROTEID +PROTEIDE +PROTEIDES +PROTEIDS +PROTEIN +PROTEINACEOUS +PROTEINASE +PROTEINASES +PROTEINIC +PROTEINS +PROTEINURIA +PROTEINURIAS +PROTEND +PROTENDED +PROTENDING +PROTENDS +PROTENSIVE +PROTENSIVELY +PROTEOGLYCAN +PROTEOGLYCANS +PROTEOLYSES +PROTEOLYSIS +PROTEOLYTIC +PROTEOLYTICALLY +PROTEOME +PROTEOMES +PROTEOMIC +PROTEOSE +PROTEOSES +PROTEST +PROTESTANT +PROTESTANTS +PROTESTATION +PROTESTATIONS +PROTESTED +PROTESTER +PROTESTERS +PROTESTING +PROTESTOR +PROTESTORS +PROTESTS +PROTEUS +PROTEUSES +PROTHALAMIA +PROTHALAMION +PROTHALAMIUM +PROTHALLI +PROTHALLIA +PROTHALLIUM +PROTHALLUS +PROTHALLUSES +PROTHESES +PROTHESIS +PROTHETIC +PROTHONOTARIAL +PROTHONOTARIES +PROTHONOTARY +PROTHORACES +PROTHORACIC +PROTHORAX +PROTHORAXES +PROTHROMBIN +PROTHROMBINS +PROTIST +PROTISTAN +PROTISTANS +PROTISTIC +PROTISTS +PROTIUM +PROTIUMS +PROTOCOL +PROTOCOLED +PROTOCOLING +PROTOCOLLED +PROTOCOLLING +PROTOCOLS +PROTODERM +PROTODERMS +PROTOGALAXIES +PROTOGALAXY +PROTOHISTORIAN +PROTOHISTORIANS +PROTOHISTORIC +PROTOHISTORIES +PROTOHISTORY +PROTOHUMAN +PROTOHUMANS +PROTOLANGUAGE +PROTOLANGUAGES +PROTOMARTYR +PROTOMARTYRS +PROTON +PROTONATE +PROTONATED +PROTONATES +PROTONATING +PROTONATION +PROTONATIONS +PROTONEMA +PROTONEMAL +PROTONEMATA +PROTONEMATAL +PROTONIC +PROTONOTARIES +PROTONOTARY +PROTONS +PROTOPATHIC +PROTOPHLOEM +PROTOPHLOEMS +PROTOPLANET +PROTOPLANETARY +PROTOPLANETS +PROTOPLASM +PROTOPLASMIC +PROTOPLASMS +PROTOPLAST +PROTOPLASTS +PROTOPOD +PROTOPODS +PROTOPORPHYRIN +PROTOPORPHYRINS +PROTOSTAR +PROTOSTARS +PROTOSTELE +PROTOSTELES +PROTOSTELIC +PROTOSTOME +PROTOSTOMES +PROTOTROPH +PROTOTROPHIC +PROTOTROPHIES +PROTOTROPHS +PROTOTROPHY +PROTOTYPAL +PROTOTYPE +PROTOTYPED +PROTOTYPES +PROTOTYPIC +PROTOTYPICAL +PROTOTYPICALLY +PROTOTYPING +PROTOXID +PROTOXIDE +PROTOXIDES +PROTOXIDS +PROTOXYLEM +PROTOXYLEMS +PROTOZOA +PROTOZOAL +PROTOZOAN +PROTOZOANS +PROTOZOIC +PROTOZOOLOGIES +PROTOZOOLOGIST +PROTOZOOLOGISTS +PROTOZOOLOGY +PROTOZOON +PROTOZOONS +PROTRACT +PROTRACTED +PROTRACTILE +PROTRACTING +PROTRACTION +PROTRACTIONS +PROTRACTIVE +PROTRACTOR +PROTRACTORS +PROTRACTS +PROTRADE +PROTREPTIC +PROTREPTICS +PROTRUDE +PROTRUDED +PROTRUDES +PROTRUDING +PROTRUSIBLE +PROTRUSION +PROTRUSIONS +PROTRUSIVE +PROTRUSIVELY +PROTRUSIVENESS +PROTUBERANCE +PROTUBERANCES +PROTUBERANT +PROTUBERANTLY +PROTYL +PROTYLE +PROTYLES +PROTYLS +PROUD +PROUDER +PROUDEST +PROUDFUL +PROUDHEARTED +PROUDLY +PROUDNESS +PROUDNESSES +PROUNION +PROUSTITE +PROUSTITES +PROVABLE +PROVABLENESS +PROVABLENESSES +PROVABLY +PROVASCULAR +PROVE +PROVED +PROVEN +PROVENANCE +PROVENANCES +PROVENDER +PROVENDERS +PROVENIENCE +PROVENIENCES +PROVENLY +PROVENTRICULI +PROVENTRICULUS +PROVER +PROVERB +PROVERBED +PROVERBIAL +PROVERBIALLY +PROVERBING +PROVERBS +PROVERS +PROVES +PROVIDE +PROVIDED +PROVIDENCE +PROVIDENCES +PROVIDENT +PROVIDENTIAL +PROVIDENTIALLY +PROVIDENTLY +PROVIDER +PROVIDERS +PROVIDES +PROVIDING +PROVINCE +PROVINCES +PROVINCIAL +PROVINCIALISM +PROVINCIALISMS +PROVINCIALIST +PROVINCIALISTS +PROVINCIALITIES +PROVINCIALITY +PROVINCIALIZE +PROVINCIALIZED +PROVINCIALIZES +PROVINCIALIZING +PROVINCIALLY +PROVINCIALS +PROVING +PROVIRAL +PROVIRUS +PROVIRUSES +PROVISION +PROVISIONAL +PROVISIONALLY +PROVISIONALS +PROVISIONARY +PROVISIONED +PROVISIONER +PROVISIONERS +PROVISIONING +PROVISIONS +PROVISO +PROVISOES +PROVISORY +PROVISOS +PROVITAMIN +PROVITAMINS +PROVOCATEUR +PROVOCATEURS +PROVOCATION +PROVOCATIONS +PROVOCATIVE +PROVOCATIVELY +PROVOCATIVENESS +PROVOCATIVES +PROVOKE +PROVOKED +PROVOKER +PROVOKERS +PROVOKES +PROVOKING +PROVOKINGLY +PROVOLONE +PROVOLONES +PROVOST +PROVOSTS +PROW +PROWAR +PROWER +PROWESS +PROWESSES +PROWEST +PROWL +PROWLED +PROWLER +PROWLERS +PROWLING +PROWLS +PROWS +PROXEMIC +PROXEMICS +PROXIES +PROXIMAL +PROXIMALLY +PROXIMATE +PROXIMATELY +PROXIMATENESS +PROXIMATENESSES +PROXIMITIES +PROXIMITY +PROXIMO +PROXY +PRUDE +PRUDENCE +PRUDENCES +PRUDENT +PRUDENTIAL +PRUDENTIALLY +PRUDENTLY +PRUDERIES +PRUDERY +PRUDES +PRUDISH +PRUDISHLY +PRUDISHNESS +PRUDISHNESSES +PRUINOSE +PRUNABLE +PRUNE +PRUNED +PRUNELLA +PRUNELLAS +PRUNELLE +PRUNELLES +PRUNELLO +PRUNELLOS +PRUNER +PRUNERS +PRUNES +PRUNING +PRUNUS +PRUNUSES +PRURIENCE +PRURIENCES +PRURIENCIES +PRURIENCY +PRURIENT +PRURIENTLY +PRURIGO +PRURIGOS +PRURITIC +PRURITUS +PRURITUSES +PRUSSIANISE +PRUSSIANISED +PRUSSIANISES +PRUSSIANISING +PRUSSIANIZATION +PRUSSIANIZE +PRUSSIANIZED +PRUSSIANIZES +PRUSSIANIZING +PRUSSIATE +PRUSSIATES +PRUSSIC +PRUTA +PRUTAH +PRUTOT +PRUTOTH +PRY +PRYER +PRYERS +PRYING +PRYINGLY +PRYTHEE +PSALM +PSALMBOOK +PSALMBOOKS +PSALMED +PSALMIC +PSALMING +PSALMIST +PSALMISTS +PSALMODIC +PSALMODIES +PSALMODY +PSALMS +PSALTER +PSALTERIA +PSALTERIES +PSALTERIUM +PSALTERS +PSALTERY +PSALTRIES +PSALTRY +PSAMMITE +PSAMMITES +PSAMMITIC +PSAMMON +PSAMMONS +PSCHENT +PSCHENTS +PSEPHITE +PSEPHITES +PSEPHITIC +PSEPHOLOGICAL +PSEPHOLOGIES +PSEPHOLOGIST +PSEPHOLOGISTS +PSEPHOLOGY +PSEUD +PSEUDEPIGRAPH +PSEUDEPIGRAPHA +PSEUDEPIGRAPHON +PSEUDEPIGRAPHS +PSEUDEPIGRAPHY +PSEUDO +PSEUDOALLELE +PSEUDOALLELES +PSEUDOCLASSIC +PSEUDOCLASSICS +PSEUDOCOEL +PSEUDOCOELOMATE +PSEUDOCOELS +PSEUDOCYESES +PSEUDOCYESIS +PSEUDOMONAD +PSEUDOMONADES +PSEUDOMONADS +PSEUDOMONAS +PSEUDOMORPH +PSEUDOMORPHIC +PSEUDOMORPHISM +PSEUDOMORPHISMS +PSEUDOMORPHOUS +PSEUDOMORPHS +PSEUDONYM +PSEUDONYMITIES +PSEUDONYMITY +PSEUDONYMOUS +PSEUDONYMOUSLY +PSEUDONYMS +PSEUDOPOD +PSEUDOPODAL +PSEUDOPODIA +PSEUDOPODIAL +PSEUDOPODIUM +PSEUDOPODS +PSEUDOPREGNANCY +PSEUDOPREGNANT +PSEUDORANDOM +PSEUDOS +PSEUDOSCIENCE +PSEUDOSCIENCES +PSEUDOSCIENTIST +PSEUDOSCORPION +PSEUDOSCORPIONS +PSEUDS +PSHAW +PSHAWED +PSHAWING +PSHAWS +PSI +PSILOCIN +PSILOCINS +PSILOCYBIN +PSILOCYBINS +PSILOPHYTE +PSILOPHYTES +PSILOPHYTIC +PSILOSES +PSILOSIS +PSILOTIC +PSIS +PSITTACINE +PSITTACINES +PSITTACOSES +PSITTACOSIS +PSITTACOTIC +PSOAE +PSOAI +PSOAS +PSOATIC +PSOCID +PSOCIDS +PSORALEA +PSORALEAS +PSORALEN +PSORALENS +PSORIASES +PSORIASIS +PSORIATIC +PSORIATICS +PSST +PST +PSYCH +PSYCHASTHENIA +PSYCHASTHENIAS +PSYCHASTHENIC +PSYCHASTHENICS +PSYCHE +PSYCHED +PSYCHEDELIA +PSYCHEDELIAS +PSYCHEDELIC +PSYCHEDELICALLY +PSYCHEDELICS +PSYCHES +PSYCHIATRIC +PSYCHIATRICALLY +PSYCHIATRIES +PSYCHIATRIST +PSYCHIATRISTS +PSYCHIATRY +PSYCHIC +PSYCHICAL +PSYCHICALLY +PSYCHICS +PSYCHING +PSYCHO +PSYCHOACOUSTIC +PSYCHOACOUSTICS +PSYCHOACTIVE +PSYCHOANALYSES +PSYCHOANALYSIS +PSYCHOANALYST +PSYCHOANALYSTS +PSYCHOANALYTIC +PSYCHOANALYZE +PSYCHOANALYZED +PSYCHOANALYZES +PSYCHOANALYZING +PSYCHOBABBLE +PSYCHOBABBLER +PSYCHOBABBLERS +PSYCHOBABBLES +PSYCHOBIOGRAPHY +PSYCHOBIOLOGIC +PSYCHOBIOLOGIES +PSYCHOBIOLOGIST +PSYCHOBIOLOGY +PSYCHOCHEMICAL +PSYCHOCHEMICALS +PSYCHODRAMA +PSYCHODRAMAS +PSYCHODRAMATIC +PSYCHODYNAMIC +PSYCHODYNAMICS +PSYCHOGENESES +PSYCHOGENESIS +PSYCHOGENETIC +PSYCHOGENIC +PSYCHOGENICALLY +PSYCHOGRAPH +PSYCHOGRAPHS +PSYCHOHISTORIAN +PSYCHOHISTORIES +PSYCHOHISTORY +PSYCHOKINESES +PSYCHOKINESIS +PSYCHOKINETIC +PSYCHOLINGUIST +PSYCHOLINGUISTS +PSYCHOLOGIC +PSYCHOLOGICAL +PSYCHOLOGICALLY +PSYCHOLOGIES +PSYCHOLOGISE +PSYCHOLOGISED +PSYCHOLOGISES +PSYCHOLOGISING +PSYCHOLOGISM +PSYCHOLOGISMS +PSYCHOLOGIST +PSYCHOLOGISTS +PSYCHOLOGIZE +PSYCHOLOGIZED +PSYCHOLOGIZES +PSYCHOLOGIZING +PSYCHOLOGY +PSYCHOMETRIC +PSYCHOMETRICIAN +PSYCHOMETRICS +PSYCHOMETRIES +PSYCHOMETRY +PSYCHOMOTOR +PSYCHONEUROSES +PSYCHONEUROSIS +PSYCHONEUROTIC +PSYCHONEUROTICS +PSYCHOPATH +PSYCHOPATHIC +PSYCHOPATHICS +PSYCHOPATHIES +PSYCHOPATHOLOGY +PSYCHOPATHS +PSYCHOPATHY +PSYCHOPHYSICAL +PSYCHOPHYSICIST +PSYCHOPHYSICS +PSYCHOS +PSYCHOSES +PSYCHOSEXUAL +PSYCHOSEXUALITY +PSYCHOSEXUALLY +PSYCHOSIS +PSYCHOSOCIAL +PSYCHOSOCIALLY +PSYCHOSOMATIC +PSYCHOSOMATICS +PSYCHOSURGEON +PSYCHOSURGEONS +PSYCHOSURGERIES +PSYCHOSURGERY +PSYCHOSURGICAL +PSYCHOSYNTHESES +PSYCHOSYNTHESIS +PSYCHOTHERAPIES +PSYCHOTHERAPIST +PSYCHOTHERAPY +PSYCHOTIC +PSYCHOTICALLY +PSYCHOTICS +PSYCHOTOMIMETIC +PSYCHOTROPIC +PSYCHOTROPICS +PSYCHROMETER +PSYCHROMETERS +PSYCHROMETRIC +PSYCHROMETRIES +PSYCHROMETRY +PSYCHROPHILIC +PSYCHS +PSYLLA +PSYLLAS +PSYLLID +PSYLLIDS +PSYLLIUM +PSYLLIUMS +PSYOPS +PSYWAR +PSYWARS +PTARMIGAN +PTARMIGANS +PTERANODON +PTERANODONS +PTERIDINE +PTERIDINES +PTERIDOLOGICAL +PTERIDOLOGIES +PTERIDOLOGIST +PTERIDOLOGISTS +PTERIDOLOGY +PTERIDOPHYTE +PTERIDOPHYTES +PTERIDOSPERM +PTERIDOSPERMS +PTERIN +PTERINS +PTERODACTYL +PTERODACTYLS +PTEROPOD +PTEROPODS +PTEROSAUR +PTEROSAURS +PTERYGIA +PTERYGIAL +PTERYGIUM +PTERYGIUMS +PTERYGOID +PTERYGOIDS +PTERYLA +PTERYLAE +PTISAN +PTISANS +PTOMAIN +PTOMAINE +PTOMAINES +PTOMAINIC +PTOMAINS +PTOOEY +PTOSES +PTOSIS +PTOTIC +PTUI +PTYALIN +PTYALINS +PTYALISM +PTYALISMS +PUB +PUBERAL +PUBERTAL +PUBERTIES +PUBERTY +PUBERULENT +PUBES +PUBESCENCE +PUBESCENCES +PUBESCENT +PUBIC +PUBIS +PUBLIC +PUBLICALLY +PUBLICAN +PUBLICANS +PUBLICATION +PUBLICATIONS +PUBLICISE +PUBLICISED +PUBLICISES +PUBLICISING +PUBLICIST +PUBLICISTS +PUBLICITIES +PUBLICITY +PUBLICIZE +PUBLICIZED +PUBLICIZES +PUBLICIZING +PUBLICLY +PUBLICNESS +PUBLICNESSES +PUBLICS +PUBLISH +PUBLISHABLE +PUBLISHED +PUBLISHER +PUBLISHERS +PUBLISHES +PUBLISHING +PUBLISHINGS +PUBS +PUCCOON +PUCCOONS +PUCE +PUCES +PUCK +PUCKA +PUCKER +PUCKERED +PUCKERER +PUCKERERS +PUCKERIER +PUCKERIEST +PUCKERING +PUCKERS +PUCKERY +PUCKISH +PUCKISHLY +PUCKISHNESS +PUCKISHNESSES +PUCKS +PUD +PUDDING +PUDDINGS +PUDDLE +PUDDLED +PUDDLER +PUDDLERS +PUDDLES +PUDDLIER +PUDDLIEST +PUDDLING +PUDDLINGS +PUDDLY +PUDENCIES +PUDENCY +PUDENDA +PUDENDAL +PUDENDUM +PUDGIER +PUDGIEST +PUDGILY +PUDGINESS +PUDGINESSES +PUDGY +PUDIBUND +PUDIC +PUDS +PUEBLO +PUEBLOS +PUERILE +PUERILELY +PUERILISM +PUERILISMS +PUERILITIES +PUERILITY +PUERPERA +PUERPERAE +PUERPERAL +PUERPERIA +PUERPERIUM +PUFF +PUFFBALL +PUFFBALLS +PUFFED +PUFFER +PUFFERIES +PUFFERS +PUFFERY +PUFFIER +PUFFIEST +PUFFILY +PUFFIN +PUFFINESS +PUFFINESSES +PUFFING +PUFFINS +PUFFS +PUFFY +PUG +PUGAREE +PUGAREES +PUGGAREE +PUGGAREES +PUGGED +PUGGIER +PUGGIEST +PUGGINESS +PUGGINESSES +PUGGING +PUGGISH +PUGGREE +PUGGREES +PUGGRIES +PUGGRY +PUGGY +PUGH +PUGILISM +PUGILISMS +PUGILIST +PUGILISTIC +PUGILISTS +PUGMARK +PUGMARKS +PUGNACIOUS +PUGNACIOUSLY +PUGNACIOUSNESS +PUGNACITIES +PUGNACITY +PUGREE +PUGREES +PUGS +PUISNE +PUISNES +PUISSANCE +PUISSANCES +PUISSANT +PUJA +PUJAH +PUJAHS +PUJAS +PUKE +PUKED +PUKES +PUKING +PUKKA +PUL +PULA +PULCHRITUDE +PULCHRITUDES +PULCHRITUDINOUS +PULE +PULED +PULER +PULERS +PULES +PULI +PULICENE +PULICIDE +PULICIDES +PULIK +PULING +PULINGLY +PULINGS +PULIS +PULL +PULLBACK +PULLBACKS +PULLED +PULLER +PULLERS +PULLET +PULLETS +PULLEY +PULLEYS +PULLING +PULLMAN +PULLMANS +PULLOUT +PULLOUTS +PULLOVER +PULLOVERS +PULLS +PULLULATE +PULLULATED +PULLULATES +PULLULATING +PULLULATION +PULLULATIONS +PULLUP +PULLUPS +PULMONARY +PULMONATE +PULMONATES +PULMONIC +PULMOTOR +PULMOTORS +PULP +PULPAL +PULPALLY +PULPED +PULPER +PULPERS +PULPIER +PULPIEST +PULPILY +PULPINESS +PULPINESSES +PULPING +PULPIT +PULPITAL +PULPITS +PULPLESS +PULPOUS +PULPS +PULPWOOD +PULPWOODS +PULPY +PULQUE +PULQUES +PULS +PULSANT +PULSAR +PULSARS +PULSATE +PULSATED +PULSATES +PULSATILE +PULSATING +PULSATION +PULSATIONS +PULSATIVE +PULSATOR +PULSATORS +PULSATORY +PULSE +PULSED +PULSEJET +PULSEJETS +PULSER +PULSERS +PULSES +PULSING +PULSION +PULSIONS +PULSOJET +PULSOJETS +PULVERABLE +PULVERISE +PULVERISED +PULVERISES +PULVERISING +PULVERIZABLE +PULVERIZATION +PULVERIZATIONS +PULVERIZE +PULVERIZED +PULVERIZER +PULVERIZERS +PULVERIZES +PULVERIZING +PULVERULENT +PULVILLAR +PULVILLI +PULVILLUS +PULVINAR +PULVINATE +PULVINI +PULVINUS +PUMA +PUMAS +PUMELO +PUMELOS +PUMICE +PUMICED +PUMICEOUS +PUMICER +PUMICERS +PUMICES +PUMICING +PUMICITE +PUMICITES +PUMMEL +PUMMELED +PUMMELING +PUMMELLED +PUMMELLING +PUMMELO +PUMMELOS +PUMMELS +PUMP +PUMPED +PUMPER +PUMPERNICKEL +PUMPERNICKELS +PUMPERS +PUMPING +PUMPKIN +PUMPKINS +PUMPKINSEED +PUMPKINSEEDS +PUMPLESS +PUMPLIKE +PUMPS +PUN +PUNA +PUNAS +PUNCH +PUNCHBALL +PUNCHBALLS +PUNCHBOARD +PUNCHBOARDS +PUNCHED +PUNCHEON +PUNCHEONS +PUNCHER +PUNCHERS +PUNCHES +PUNCHIER +PUNCHIEST +PUNCHILY +PUNCHINELLO +PUNCHINELLOS +PUNCHING +PUNCHLESS +PUNCHY +PUNCTATE +PUNCTATED +PUNCTATION +PUNCTATIONS +PUNCTILIO +PUNCTILIOS +PUNCTILIOUS +PUNCTILIOUSLY +PUNCTILIOUSNESS +PUNCTUAL +PUNCTUALITIES +PUNCTUALITY +PUNCTUALLY +PUNCTUATE +PUNCTUATED +PUNCTUATES +PUNCTUATING +PUNCTUATION +PUNCTUATIONS +PUNCTUATOR +PUNCTUATORS +PUNCTURE +PUNCTURED +PUNCTURES +PUNCTURING +PUNDIT +PUNDITIC +PUNDITRIES +PUNDITRY +PUNDITS +PUNG +PUNGENCIES +PUNGENCY +PUNGENT +PUNGENTLY +PUNGLE +PUNGLED +PUNGLES +PUNGLING +PUNGS +PUNIER +PUNIEST +PUNILY +PUNINESS +PUNINESSES +PUNISH +PUNISHABILITIES +PUNISHABILITY +PUNISHABLE +PUNISHED +PUNISHER +PUNISHERS +PUNISHES +PUNISHING +PUNISHMENT +PUNISHMENTS +PUNITION +PUNITIONS +PUNITIVE +PUNITIVELY +PUNITIVENESS +PUNITIVENESSES +PUNITORY +PUNJI +PUNJIS +PUNK +PUNKA +PUNKAH +PUNKAHS +PUNKAS +PUNKER +PUNKERS +PUNKEST +PUNKEY +PUNKEYS +PUNKIE +PUNKIER +PUNKIES +PUNKIEST +PUNKIN +PUNKINESS +PUNKINESSES +PUNKINS +PUNKISH +PUNKS +PUNKY +PUNNED +PUNNER +PUNNERS +PUNNET +PUNNETS +PUNNIER +PUNNIEST +PUNNING +PUNNINGLY +PUNNY +PUNS +PUNSTER +PUNSTERS +PUNT +PUNTED +PUNTER +PUNTERS +PUNTIES +PUNTING +PUNTO +PUNTOS +PUNTS +PUNTY +PUNY +PUP +PUPA +PUPAE +PUPAL +PUPARIA +PUPARIAL +PUPARIUM +PUPAS +PUPATE +PUPATED +PUPATES +PUPATING +PUPATION +PUPATIONS +PUPFISH +PUPFISHES +PUPIL +PUPILAGE +PUPILAGES +PUPILAR +PUPILARY +PUPILLAGE +PUPILLAGES +PUPILLARY +PUPILS +PUPPED +PUPPET +PUPPETEER +PUPPETEERED +PUPPETEERING +PUPPETEERS +PUPPETLIKE +PUPPETRIES +PUPPETRY +PUPPETS +PUPPIES +PUPPING +PUPPY +PUPPYDOM +PUPPYDOMS +PUPPYHOOD +PUPPYHOODS +PUPPYISH +PUPPYLIKE +PUPS +PUPU +PUPUS +PUR +PURANA +PURANAS +PURANIC +PURBLIND +PURBLINDLY +PURBLINDNESS +PURBLINDNESSES +PURCHASABLE +PURCHASE +PURCHASED +PURCHASER +PURCHASERS +PURCHASES +PURCHASING +PURDA +PURDAH +PURDAHS +PURDAS +PURE +PUREBLOOD +PUREBLOODS +PUREBRED +PUREBREDS +PUREE +PUREED +PUREEING +PUREES +PURELY +PURENESS +PURENESSES +PURER +PUREST +PURFLE +PURFLED +PURFLER +PURFLERS +PURFLES +PURFLING +PURFLINGS +PURGATION +PURGATIONS +PURGATIVE +PURGATIVES +PURGATORIAL +PURGATORIES +PURGATORY +PURGE +PURGEABLE +PURGED +PURGER +PURGERS +PURGES +PURGING +PURGINGS +PURI +PURIFICATION +PURIFICATIONS +PURIFICATOR +PURIFICATORS +PURIFICATORY +PURIFIED +PURIFIER +PURIFIERS +PURIFIES +PURIFY +PURIFYING +PURIN +PURINE +PURINES +PURINS +PURIS +PURISM +PURISMS +PURIST +PURISTIC +PURISTICALLY +PURISTS +PURITAN +PURITANIC +PURITANICAL +PURITANICALLY +PURITANISM +PURITANISMS +PURITANS +PURITIES +PURITY +PURL +PURLED +PURLIEU +PURLIEUS +PURLIN +PURLINE +PURLINES +PURLING +PURLINGS +PURLINS +PURLOIN +PURLOINED +PURLOINER +PURLOINERS +PURLOINING +PURLOINS +PURLS +PUROMYCIN +PUROMYCINS +PURPLE +PURPLED +PURPLEHEART +PURPLEHEARTS +PURPLER +PURPLES +PURPLEST +PURPLING +PURPLISH +PURPLY +PURPORT +PURPORTED +PURPORTEDLY +PURPORTING +PURPORTS +PURPOSE +PURPOSED +PURPOSEFUL +PURPOSEFULLY +PURPOSEFULNESS +PURPOSELESS +PURPOSELESSLY +PURPOSELESSNESS +PURPOSELY +PURPOSES +PURPOSING +PURPOSIVE +PURPOSIVELY +PURPOSIVENESS +PURPOSIVENESSES +PURPURA +PURPURAS +PURPURE +PURPURES +PURPURIC +PURPURIN +PURPURINS +PURR +PURRED +PURRING +PURRINGLY +PURRS +PURS +PURSE +PURSED +PURSELIKE +PURSER +PURSERS +PURSES +PURSIER +PURSIEST +PURSILY +PURSINESS +PURSINESSES +PURSING +PURSLANE +PURSLANES +PURSUABLE +PURSUANCE +PURSUANCES +PURSUANT +PURSUE +PURSUED +PURSUER +PURSUERS +PURSUES +PURSUING +PURSUIT +PURSUITS +PURSUIVANT +PURSUIVANTS +PURSY +PURTENANCE +PURTENANCES +PURTIER +PURTIEST +PURTY +PURULENCE +PURULENCES +PURULENCIES +PURULENCY +PURULENT +PURVEY +PURVEYANCE +PURVEYANCES +PURVEYED +PURVEYING +PURVEYOR +PURVEYORS +PURVEYS +PURVIEW +PURVIEWS +PUS +PUSES +PUSH +PUSHBALL +PUSHBALLS +PUSHCART +PUSHCARTS +PUSHCHAIR +PUSHCHAIRS +PUSHDOWN +PUSHDOWNS +PUSHED +PUSHER +PUSHERS +PUSHES +PUSHFUL +PUSHFULNESS +PUSHFULNESSES +PUSHIER +PUSHIEST +PUSHILY +PUSHINESS +PUSHINESSES +PUSHING +PUSHINGLY +PUSHOVER +PUSHOVERS +PUSHPIN +PUSHPINS +PUSHROD +PUSHRODS +PUSHUP +PUSHUPS +PUSHY +PUSILLANIMITIES +PUSILLANIMITY +PUSILLANIMOUS +PUSILLANIMOUSLY +PUSLEY +PUSLEYS +PUSLIKE +PUSS +PUSSES +PUSSIER +PUSSIES +PUSSIEST +PUSSLEY +PUSSLEYS +PUSSLIES +PUSSLIKE +PUSSLY +PUSSY +PUSSYCAT +PUSSYCATS +PUSSYFOOT +PUSSYFOOTED +PUSSYFOOTER +PUSSYFOOTERS +PUSSYFOOTING +PUSSYFOOTS +PUSSYTOES +PUSTULANT +PUSTULANTS +PUSTULAR +PUSTULATE +PUSTULATED +PUSTULATES +PUSTULATING +PUSTULATION +PUSTULATIONS +PUSTULE +PUSTULED +PUSTULES +PUSTULOUS +PUT +PUTAMEN +PUTAMINA +PUTATIVE +PUTATIVELY +PUTDOWN +PUTDOWNS +PUTLOG +PUTLOGS +PUTOFF +PUTOFFS +PUTON +PUTONGHUA +PUTONGHUAS +PUTONS +PUTOUT +PUTOUTS +PUTREFACTION +PUTREFACTIONS +PUTREFACTIVE +PUTREFIED +PUTREFIER +PUTREFIERS +PUTREFIES +PUTREFY +PUTREFYING +PUTRESCENCE +PUTRESCENCES +PUTRESCENT +PUTRESCIBLE +PUTRESCINE +PUTRESCINES +PUTRID +PUTRIDITIES +PUTRIDITY +PUTRIDLY +PUTS +PUTSCH +PUTSCHES +PUTSCHIST +PUTSCHISTS +PUTT +PUTTED +PUTTEE +PUTTEES +PUTTER +PUTTERED +PUTTERER +PUTTERERS +PUTTERING +PUTTERS +PUTTI +PUTTIE +PUTTIED +PUTTIER +PUTTIERS +PUTTIES +PUTTING +PUTTO +PUTTS +PUTTY +PUTTYING +PUTTYLESS +PUTTYLIKE +PUTTYROOT +PUTTYROOTS +PUTZ +PUTZED +PUTZES +PUTZING +PUZZLE +PUZZLED +PUZZLEDLY +PUZZLEHEADED +PUZZLEMENT +PUZZLEMENTS +PUZZLER +PUZZLERS +PUZZLES +PUZZLING +PUZZLINGLY +PYA +PYAEMIA +PYAEMIAS +PYAEMIC +PYAS +PYCNIDIA +PYCNIDIAL +PYCNIDIUM +PYCNOGONID +PYCNOGONIDS +PYCNOMETER +PYCNOMETERS +PYCNOSES +PYCNOSIS +PYCNOTIC +PYE +PYELITIC +PYELITIS +PYELITISES +PYELOGRAM +PYELOGRAMS +PYELONEPHRITIC +PYELONEPHRITIS +PYEMIA +PYEMIAS +PYEMIC +PYES +PYGIDIA +PYGIDIAL +PYGIDIUM +PYGMAEAN +PYGMEAN +PYGMIES +PYGMOID +PYGMY +PYGMYISH +PYGMYISM +PYGMYISMS +PYIC +PYIN +PYINS +PYJAMA +PYJAMAS +PYKNIC +PYKNICS +PYKNOSES +PYKNOSIS +PYKNOTIC +PYLON +PYLONS +PYLORI +PYLORIC +PYLORUS +PYLORUSES +PYODERMA +PYODERMAS +PYODERMIC +PYOGENIC +PYOID +PYORRHEA +PYORRHEAL +PYORRHEAS +PYORRHOEA +PYORRHOEAS +PYOSES +PYOSIS +PYRACANTHA +PYRACANTHAS +PYRALID +PYRALIDID +PYRALIDIDS +PYRALIDS +PYRAMID +PYRAMIDAL +PYRAMIDALLY +PYRAMIDED +PYRAMIDIC +PYRAMIDICAL +PYRAMIDING +PYRAMIDS +PYRAN +PYRANOID +PYRANOSE +PYRANOSES +PYRANOSIDE +PYRANOSIDES +PYRANS +PYRARGYRITE +PYRARGYRITES +PYRE +PYRENE +PYRENES +PYRENOID +PYRENOIDS +PYRES +PYRETHRIN +PYRETHRINS +PYRETHROID +PYRETHROIDS +PYRETHRUM +PYRETHRUMS +PYRETIC +PYREX +PYREXES +PYREXIA +PYREXIAL +PYREXIAS +PYREXIC +PYRHELIOMETER +PYRHELIOMETERS +PYRHELIOMETRIC +PYRIC +PYRIDIC +PYRIDINE +PYRIDINES +PYRIDOXAL +PYRIDOXALS +PYRIDOXAMINE +PYRIDOXAMINES +PYRIDOXIN +PYRIDOXINE +PYRIDOXINES +PYRIDOXINS +PYRIFORM +PYRIMETHAMINE +PYRIMETHAMINES +PYRIMIDINE +PYRIMIDINES +PYRITE +PYRITES +PYRITIC +PYRITICAL +PYRITOUS +PYRO +PYROCATECHOL +PYROCATECHOLS +PYROCERAM +PYROCERAMS +PYROCLASTIC +PYROELECTRIC +PYROELECTRICITY +PYROGALLOL +PYROGALLOLS +PYROGEN +PYROGENIC +PYROGENICITIES +PYROGENICITY +PYROGENS +PYROLA +PYROLAS +PYROLIZE +PYROLIZED +PYROLIZES +PYROLIZING +PYROLOGIES +PYROLOGY +PYROLUSITE +PYROLUSITES +PYROLYSATE +PYROLYSATES +PYROLYSES +PYROLYSIS +PYROLYTIC +PYROLYTICALLY +PYROLYZABLE +PYROLYZATE +PYROLYZATES +PYROLYZE +PYROLYZED +PYROLYZER +PYROLYZERS +PYROLYZES +PYROLYZING +PYROMANCIES +PYROMANCY +PYROMANIA +PYROMANIAC +PYROMANIACAL +PYROMANIACS +PYROMANIAS +PYROMETALLURGY +PYROMETER +PYROMETERS +PYROMETRIC +PYROMETRICALLY +PYROMETRIES +PYROMETRY +PYROMORPHITE +PYROMORPHITES +PYRONE +PYRONES +PYRONINE +PYRONINES +PYRONINOPHILIC +PYROPE +PYROPES +PYROPHORIC +PYROPHOSPHATE +PYROPHOSPHATES +PYROPHYLLITE +PYROPHYLLITES +PYROS +PYROSIS +PYROSISES +PYROSTAT +PYROSTATS +PYROTECHNIC +PYROTECHNICAL +PYROTECHNICALLY +PYROTECHNICS +PYROTECHNIST +PYROTECHNISTS +PYROXENE +PYROXENES +PYROXENIC +PYROXENITE +PYROXENITES +PYROXENITIC +PYROXENOID +PYROXENOIDS +PYROXYLIN +PYROXYLINS +PYRRHIC +PYRRHICS +PYRRHOTITE +PYRRHOTITES +PYRROL +PYRROLE +PYRROLES +PYRROLIC +PYRROLS +PYRUVATE +PYRUVATES +PYTHON +PYTHONESS +PYTHONESSES +PYTHONIC +PYTHONS +PYURIA +PYURIAS +PYX +PYXES +PYXIDES +PYXIDIA +PYXIDIUM +PYXIE +PYXIES +PYXIS +QABALA +QABALAH +QABALAHS +QABALAS +QADI +QADIS +QAID +QAIDS +QANAT +QANATS +QAT +QATS +QI +QINDAR +QINDARKA +QINDARS +QINTAR +QINTARS +QIS +QIVIUT +QIVIUTS +QOPH +QOPHS +QUA +QUAALUDE +QUAALUDES +QUACK +QUACKED +QUACKERIES +QUACKERY +QUACKIER +QUACKIEST +QUACKING +QUACKISH +QUACKISM +QUACKISMS +QUACKS +QUACKSALVER +QUACKSALVERS +QUACKY +QUAD +QUADDED +QUADDING +QUADPLEX +QUADPLEXES +QUADRANGLE +QUADRANGLES +QUADRANGULAR +QUADRANS +QUADRANT +QUADRANTAL +QUADRANTES +QUADRANTS +QUADRAPHONIC +QUADRAPHONICS +QUADRAT +QUADRATE +QUADRATED +QUADRATES +QUADRATIC +QUADRATICALLY +QUADRATICS +QUADRATING +QUADRATS +QUADRATURE +QUADRATURES +QUADRENNIA +QUADRENNIAL +QUADRENNIALLY +QUADRENNIALS +QUADRENNIUM +QUADRENNIUMS +QUADRIC +QUADRICEP +QUADRICEPS +QUADRICEPSES +QUADRICS +QUADRIFID +QUADRIGA +QUADRIGAE +QUADRILATERAL +QUADRILATERALS +QUADRILLE +QUADRILLES +QUADRILLION +QUADRILLIONS +QUADRILLIONTH +QUADRILLIONTHS +QUADRIPARTITE +QUADRIPHONIC +QUADRIPHONICS +QUADRIPLEGIA +QUADRIPLEGIAS +QUADRIPLEGIC +QUADRIPLEGICS +QUADRIVALENT +QUADRIVALENTS +QUADRIVIA +QUADRIVIAL +QUADRIVIUM +QUADROON +QUADROONS +QUADRUMANOUS +QUADRUMVIR +QUADRUMVIRATE +QUADRUMVIRATES +QUADRUMVIRS +QUADRUPED +QUADRUPEDAL +QUADRUPEDS +QUADRUPLE +QUADRUPLED +QUADRUPLES +QUADRUPLET +QUADRUPLETS +QUADRUPLICATE +QUADRUPLICATED +QUADRUPLICATES +QUADRUPLICATING +QUADRUPLICATION +QUADRUPLICITIES +QUADRUPLICITY +QUADRUPLING +QUADRUPLY +QUADRUPOLE +QUADRUPOLES +QUADS +QUAERE +QUAERES +QUAESTOR +QUAESTORS +QUAFF +QUAFFED +QUAFFER +QUAFFERS +QUAFFING +QUAFFS +QUAG +QUAGGA +QUAGGAS +QUAGGIER +QUAGGIEST +QUAGGY +QUAGMIRE +QUAGMIRES +QUAGMIRIER +QUAGMIRIEST +QUAGMIRY +QUAGS +QUAHAUG +QUAHAUGS +QUAHOG +QUAHOGS +QUAI +QUAICH +QUAICHES +QUAICHS +QUAIGH +QUAIGHS +QUAIL +QUAILED +QUAILING +QUAILS +QUAINT +QUAINTER +QUAINTEST +QUAINTLY +QUAINTNESS +QUAINTNESSES +QUAIS +QUAKE +QUAKED +QUAKER +QUAKERS +QUAKES +QUAKIER +QUAKIEST +QUAKILY +QUAKINESS +QUAKINESSES +QUAKING +QUAKINGLY +QUAKY +QUALE +QUALIA +QUALIFIABLE +QUALIFICATION +QUALIFICATIONS +QUALIFIED +QUALIFIEDLY +QUALIFIER +QUALIFIERS +QUALIFIES +QUALIFY +QUALIFYING +QUALITATIVE +QUALITATIVELY +QUALITIES +QUALITY +QUALM +QUALMIER +QUALMIEST +QUALMISH +QUALMISHLY +QUALMISHNESS +QUALMISHNESSES +QUALMS +QUALMY +QUAMASH +QUAMASHES +QUANDANG +QUANDANGS +QUANDARIES +QUANDARY +QUANDONG +QUANDONGS +QUANGO +QUANGOS +QUANT +QUANTA +QUANTAL +QUANTALLY +QUANTED +QUANTIC +QUANTICS +QUANTIFIABLE +QUANTIFICATION +QUANTIFICATIONS +QUANTIFIED +QUANTIFIER +QUANTIFIERS +QUANTIFIES +QUANTIFY +QUANTIFYING +QUANTILE +QUANTILES +QUANTING +QUANTITATE +QUANTITATED +QUANTITATES +QUANTITATING +QUANTITATION +QUANTITATIONS +QUANTITATIVE +QUANTITATIVELY +QUANTITIES +QUANTITY +QUANTIZATION +QUANTIZATIONS +QUANTIZE +QUANTIZED +QUANTIZER +QUANTIZERS +QUANTIZES +QUANTIZING +QUANTONG +QUANTONGS +QUANTS +QUANTUM +QUARANTINE +QUARANTINED +QUARANTINES +QUARANTINING +QUARE +QUARK +QUARKS +QUARREL +QUARRELED +QUARRELER +QUARRELERS +QUARRELING +QUARRELLED +QUARRELLER +QUARRELLERS +QUARRELLING +QUARRELS +QUARRELSOME +QUARRELSOMELY +QUARRELSOMENESS +QUARRIED +QUARRIER +QUARRIERS +QUARRIES +QUARRY +QUARRYING +QUARRYINGS +QUARRYMAN +QUARRYMEN +QUART +QUARTAN +QUARTANS +QUARTE +QUARTER +QUARTERAGE +QUARTERAGES +QUARTERBACK +QUARTERBACKED +QUARTERBACKING +QUARTERBACKS +QUARTERDECK +QUARTERDECKS +QUARTERED +QUARTERER +QUARTERERS +QUARTERFINAL +QUARTERFINALIST +QUARTERFINALS +QUARTERING +QUARTERINGS +QUARTERLIES +QUARTERLY +QUARTERMASTER +QUARTERMASTERS +QUARTERN +QUARTERNS +QUARTERS +QUARTERSAWED +QUARTERSAWN +QUARTERSTAFF +QUARTERSTAVES +QUARTES +QUARTET +QUARTETS +QUARTETTE +QUARTETTES +QUARTIC +QUARTICS +QUARTIER +QUARTIERS +QUARTILE +QUARTILES +QUARTO +QUARTOS +QUARTS +QUARTZ +QUARTZES +QUARTZITE +QUARTZITES +QUARTZITIC +QUARTZOSE +QUARTZOUS +QUASAR +QUASARS +QUASH +QUASHED +QUASHER +QUASHERS +QUASHES +QUASHING +QUASI +QUASICRYSTAL +QUASICRYSTALS +QUASIPARTICLE +QUASIPARTICLES +QUASIPERIODIC +QUASS +QUASSES +QUASSIA +QUASSIAS +QUASSIN +QUASSINS +QUATE +QUATERCENTENARY +QUATERNARIES +QUATERNARY +QUATERNION +QUATERNIONS +QUATERNITIES +QUATERNITY +QUATORZE +QUATORZES +QUATRAIN +QUATRAINS +QUATRE +QUATREFOIL +QUATREFOILS +QUATRES +QUATTROCENTO +QUATTROCENTOS +QUAVER +QUAVERED +QUAVERER +QUAVERERS +QUAVERING +QUAVERINGLY +QUAVERS +QUAVERY +QUAY +QUAYAGE +QUAYAGES +QUAYLIKE +QUAYS +QUAYSIDE +QUAYSIDES +QUBIT +QUBITS +QUBYTE +QUBYTES +QUEAN +QUEANS +QUEASIER +QUEASIEST +QUEASILY +QUEASINESS +QUEASINESSES +QUEASY +QUEAZIER +QUEAZIEST +QUEAZY +QUEBRACHO +QUEBRACHOS +QUEEN +QUEENDOM +QUEENDOMS +QUEENED +QUEENING +QUEENLIER +QUEENLIEST +QUEENLINESS +QUEENLINESSES +QUEENLY +QUEENS +QUEENSHIP +QUEENSHIPS +QUEENSIDE +QUEENSIDES +QUEER +QUEERED +QUEERER +QUEEREST +QUEERING +QUEERISH +QUEERLY +QUEERNESS +QUEERNESSES +QUEERS +QUELEA +QUELEAS +QUELL +QUELLABLE +QUELLED +QUELLER +QUELLERS +QUELLING +QUELLS +QUENCH +QUENCHABLE +QUENCHED +QUENCHER +QUENCHERS +QUENCHES +QUENCHING +QUENCHLESS +QUENELLE +QUENELLES +QUERCETIC +QUERCETIN +QUERCETINS +QUERCINE +QUERCITRON +QUERCITRONS +QUERIDA +QUERIDAS +QUERIED +QUERIER +QUERIERS +QUERIES +QUERIST +QUERISTS +QUERN +QUERNS +QUERULOUS +QUERULOUSLY +QUERULOUSNESS +QUERULOUSNESSES +QUERY +QUERYING +QUESADILLA +QUESADILLAS +QUEST +QUESTED +QUESTER +QUESTERS +QUESTING +QUESTION +QUESTIONABLE +QUESTIONABLY +QUESTIONARIES +QUESTIONARY +QUESTIONED +QUESTIONER +QUESTIONERS +QUESTIONING +QUESTIONLESS +QUESTIONNAIRE +QUESTIONNAIRES +QUESTIONS +QUESTOR +QUESTORS +QUESTS +QUETZAL +QUETZALES +QUETZALS +QUEUE +QUEUED +QUEUEING +QUEUER +QUEUERS +QUEUES +QUEUING +QUEY +QUEYS +QUEZAL +QUEZALES +QUEZALS +QUIBBLE +QUIBBLED +QUIBBLER +QUIBBLERS +QUIBBLES +QUIBBLING +QUICHE +QUICHES +QUICK +QUICKEN +QUICKENED +QUICKENER +QUICKENERS +QUICKENING +QUICKENS +QUICKER +QUICKEST +QUICKIE +QUICKIES +QUICKLIME +QUICKLIMES +QUICKLY +QUICKNESS +QUICKNESSES +QUICKS +QUICKSAND +QUICKSANDS +QUICKSET +QUICKSETS +QUICKSILVER +QUICKSILVERS +QUICKSTEP +QUICKSTEPS +QUID +QUIDDITIES +QUIDDITY +QUIDNUNC +QUIDNUNCS +QUIDS +QUIESCENCE +QUIESCENCES +QUIESCENT +QUIESCENTLY +QUIET +QUIETED +QUIETEN +QUIETENED +QUIETENER +QUIETENERS +QUIETENING +QUIETENS +QUIETER +QUIETERS +QUIETEST +QUIETING +QUIETISM +QUIETISMS +QUIETIST +QUIETISTIC +QUIETISTS +QUIETLY +QUIETNESS +QUIETNESSES +QUIETS +QUIETUDE +QUIETUDES +QUIETUS +QUIETUSES +QUIFF +QUIFFS +QUILL +QUILLAI +QUILLAIA +QUILLAIAS +QUILLAIS +QUILLAJA +QUILLAJAS +QUILLBACK +QUILLBACKS +QUILLED +QUILLET +QUILLETS +QUILLING +QUILLINGS +QUILLS +QUILLWORK +QUILLWORKS +QUILLWORT +QUILLWORTS +QUILT +QUILTED +QUILTER +QUILTERS +QUILTING +QUILTINGS +QUILTS +QUIN +QUINACRINE +QUINACRINES +QUINARIES +QUINARY +QUINATE +QUINCE +QUINCENTENARIES +QUINCENTENARY +QUINCENTENNIAL +QUINCENTENNIALS +QUINCES +QUINCUNCIAL +QUINCUNX +QUINCUNXES +QUINCUNXIAL +QUINDECILLION +QUINDECILLIONS +QUINELA +QUINELAS +QUINELLA +QUINELLAS +QUINIC +QUINIDINE +QUINIDINES +QUINIELA +QUINIELAS +QUININ +QUININA +QUININAS +QUININE +QUININES +QUININS +QUINNAT +QUINNATS +QUINOA +QUINOAS +QUINOID +QUINOIDAL +QUINOIDS +QUINOL +QUINOLIN +QUINOLINE +QUINOLINES +QUINOLINS +QUINOLONE +QUINOLONES +QUINOLS +QUINONE +QUINONES +QUINONOID +QUINQUENNIA +QUINQUENNIAL +QUINQUENNIALLY +QUINQUENNIALS +QUINQUENNIUM +QUINQUENNIUMS +QUINS +QUINSIED +QUINSIES +QUINSY +QUINT +QUINTA +QUINTAIN +QUINTAINS +QUINTAL +QUINTALS +QUINTAN +QUINTANS +QUINTAR +QUINTARS +QUINTAS +QUINTE +QUINTES +QUINTESSENCE +QUINTESSENCES +QUINTESSENTIAL +QUINTET +QUINTETS +QUINTETTE +QUINTETTES +QUINTIC +QUINTICS +QUINTILE +QUINTILES +QUINTILLION +QUINTILLIONS +QUINTILLIONTH +QUINTILLIONTHS +QUINTIN +QUINTINS +QUINTS +QUINTUPLE +QUINTUPLED +QUINTUPLES +QUINTUPLET +QUINTUPLETS +QUINTUPLICATE +QUINTUPLICATED +QUINTUPLICATES +QUINTUPLICATING +QUINTUPLING +QUINTUPLY +QUIP +QUIPPED +QUIPPER +QUIPPERS +QUIPPIER +QUIPPIEST +QUIPPING +QUIPPISH +QUIPPU +QUIPPUS +QUIPPY +QUIPS +QUIPSTER +QUIPSTERS +QUIPU +QUIPUS +QUIRE +QUIRED +QUIRES +QUIRING +QUIRK +QUIRKED +QUIRKIER +QUIRKIEST +QUIRKILY +QUIRKINESS +QUIRKINESSES +QUIRKING +QUIRKISH +QUIRKS +QUIRKY +QUIRT +QUIRTED +QUIRTING +QUIRTS +QUISLING +QUISLINGISM +QUISLINGISMS +QUISLINGS +QUIT +QUITCH +QUITCHES +QUITCLAIM +QUITCLAIMED +QUITCLAIMING +QUITCLAIMS +QUITE +QUITRENT +QUITRENTS +QUITS +QUITTANCE +QUITTANCES +QUITTED +QUITTER +QUITTERS +QUITTING +QUITTOR +QUITTORS +QUIVER +QUIVERED +QUIVERER +QUIVERERS +QUIVERING +QUIVERINGLY +QUIVERS +QUIVERY +QUIXOTE +QUIXOTES +QUIXOTIC +QUIXOTICAL +QUIXOTICALLY +QUIXOTISM +QUIXOTISMS +QUIXOTRIES +QUIXOTRY +QUIZ +QUIZMASTER +QUIZMASTERS +QUIZZED +QUIZZER +QUIZZERS +QUIZZES +QUIZZICAL +QUIZZICALITIES +QUIZZICALITY +QUIZZICALLY +QUIZZING +QUOD +QUODLIBET +QUODLIBETS +QUODS +QUOHOG +QUOHOGS +QUOIN +QUOINED +QUOINING +QUOINS +QUOIT +QUOITED +QUOITING +QUOITS +QUOKKA +QUOKKAS +QUOLL +QUOLLS +QUOMODO +QUOMODOS +QUONDAM +QUORUM +QUORUMS +QUOTA +QUOTABILITIES +QUOTABILITY +QUOTABLE +QUOTABLY +QUOTAS +QUOTATION +QUOTATIONS +QUOTE +QUOTED +QUOTER +QUOTERS +QUOTES +QUOTH +QUOTHA +QUOTIDIAN +QUOTIDIANS +QUOTIENT +QUOTIENTS +QUOTING +QURSH +QURSHES +QURUSH +QURUSHES +QWERTY +QWERTYS +RABAT +RABATO +RABATOS +RABATS +RABBET +RABBETED +RABBETING +RABBETS +RABBI +RABBIES +RABBIN +RABBINATE +RABBINATES +RABBINIC +RABBINICAL +RABBINICALLY +RABBINISM +RABBINISMS +RABBINS +RABBIS +RABBIT +RABBITBRUSH +RABBITBRUSHES +RABBITED +RABBITER +RABBITERS +RABBITING +RABBITRIES +RABBITRY +RABBITS +RABBITY +RABBLE +RABBLED +RABBLEMENT +RABBLEMENTS +RABBLER +RABBLERS +RABBLES +RABBLING +RABBONI +RABBONIS +RABIC +RABID +RABIDITIES +RABIDITY +RABIDLY +RABIDNESS +RABIDNESSES +RABIES +RABIETIC +RACCOON +RACCOONS +RACE +RACECOURSE +RACECOURSES +RACED +RACEHORSE +RACEHORSES +RACEMATE +RACEMATES +RACEME +RACEMED +RACEMES +RACEMIC +RACEMISM +RACEMISMS +RACEMIZATION +RACEMIZATIONS +RACEMIZE +RACEMIZED +RACEMIZES +RACEMIZING +RACEMOID +RACEMOSE +RACEMOUS +RACER +RACERS +RACES +RACETRACK +RACETRACKER +RACETRACKERS +RACETRACKS +RACEWALK +RACEWALKED +RACEWALKER +RACEWALKERS +RACEWALKING +RACEWALKINGS +RACEWALKS +RACEWAY +RACEWAYS +RACHET +RACHETED +RACHETING +RACHETS +RACHIAL +RACHIDES +RACHILLA +RACHILLAE +RACHIS +RACHISES +RACHITIC +RACHITIDES +RACHITIS +RACIAL +RACIALISM +RACIALISMS +RACIALIST +RACIALISTIC +RACIALISTS +RACIALIZE +RACIALIZED +RACIALIZES +RACIALIZING +RACIALLY +RACIER +RACIEST +RACILY +RACINESS +RACINESSES +RACING +RACINGS +RACISM +RACISMS +RACIST +RACISTS +RACK +RACKED +RACKER +RACKERS +RACKET +RACKETED +RACKETEER +RACKETEERED +RACKETEERING +RACKETEERS +RACKETIER +RACKETIEST +RACKETING +RACKETS +RACKETY +RACKFUL +RACKFULS +RACKING +RACKINGLY +RACKLE +RACKS +RACKWORK +RACKWORKS +RACLETTE +RACLETTES +RACON +RACONS +RACONTEUR +RACONTEURS +RACOON +RACOONS +RACQUET +RACQUETBALL +RACQUETBALLS +RACQUETS +RACY +RAD +RADAR +RADARS +RADARSCOPE +RADARSCOPES +RADDED +RADDING +RADDLE +RADDLED +RADDLES +RADDLING +RADIABLE +RADIAL +RADIALE +RADIALIA +RADIALLY +RADIALS +RADIAN +RADIANCE +RADIANCES +RADIANCIES +RADIANCY +RADIANS +RADIANT +RADIANTLY +RADIANTS +RADIATE +RADIATED +RADIATELY +RADIATES +RADIATING +RADIATION +RADIATIONAL +RADIATIONLESS +RADIATIONS +RADIATIVE +RADIATOR +RADIATORS +RADICAL +RADICALISE +RADICALISED +RADICALISES +RADICALISING +RADICALISM +RADICALISMS +RADICALIZATION +RADICALIZATIONS +RADICALIZE +RADICALIZED +RADICALIZES +RADICALIZING +RADICALLY +RADICALNESS +RADICALNESSES +RADICALS +RADICAND +RADICANDS +RADICATE +RADICATED +RADICATES +RADICATING +RADICCHIO +RADICCHIOS +RADICEL +RADICELS +RADICES +RADICLE +RADICLES +RADICULAR +RADII +RADIO +RADIOACTIVE +RADIOACTIVELY +RADIOACTIVITIES +RADIOACTIVITY +RADIOAUTOGRAPH +RADIOAUTOGRAPHS +RADIOAUTOGRAPHY +RADIOBIOLOGIC +RADIOBIOLOGICAL +RADIOBIOLOGIES +RADIOBIOLOGIST +RADIOBIOLOGISTS +RADIOBIOLOGY +RADIOCARBON +RADIOCARBONS +RADIOCHEMICAL +RADIOCHEMICALLY +RADIOCHEMIST +RADIOCHEMISTRY +RADIOCHEMISTS +RADIOECOLOGIES +RADIOECOLOGY +RADIOED +RADIOELEMENT +RADIOELEMENTS +RADIOGENIC +RADIOGRAM +RADIOGRAMS +RADIOGRAPH +RADIOGRAPHED +RADIOGRAPHIC +RADIOGRAPHIES +RADIOGRAPHING +RADIOGRAPHS +RADIOGRAPHY +RADIOING +RADIOISOTOPE +RADIOISOTOPES +RADIOISOTOPIC +RADIOLABEL +RADIOLABELED +RADIOLABELING +RADIOLABELLED +RADIOLABELLING +RADIOLABELS +RADIOLARIAN +RADIOLARIANS +RADIOLOGIC +RADIOLOGICAL +RADIOLOGICALLY +RADIOLOGIES +RADIOLOGIST +RADIOLOGISTS +RADIOLOGY +RADIOLUCENCIES +RADIOLUCENCY +RADIOLUCENT +RADIOLYSES +RADIOLYSIS +RADIOLYTIC +RADIOMAN +RADIOMEN +RADIOMETER +RADIOMETERS +RADIOMETRIC +RADIOMETRICALLY +RADIOMETRIES +RADIOMETRY +RADIOMIMETIC +RADIONICS +RADIONUCLIDE +RADIONUCLIDES +RADIOPAQUE +RADIOPHONE +RADIOPHONES +RADIOPHOTO +RADIOPHOTOS +RADIOPROTECTION +RADIOPROTECTIVE +RADIOS +RADIOSENSITIVE +RADIOSONDE +RADIOSONDES +RADIOSTRONTIUM +RADIOSTRONTIUMS +RADIOTELEGRAPH +RADIOTELEGRAPHS +RADIOTELEGRAPHY +RADIOTELEMETRIC +RADIOTELEMETRY +RADIOTELEPHONE +RADIOTELEPHONES +RADIOTELEPHONY +RADIOTHERAPIES +RADIOTHERAPIST +RADIOTHERAPISTS +RADIOTHERAPY +RADIOTHORIUM +RADIOTHORIUMS +RADIOTRACER +RADIOTRACERS +RADISH +RADISHES +RADIUM +RADIUMS +RADIUS +RADIUSES +RADIX +RADIXES +RADOME +RADOMES +RADON +RADONS +RADS +RADULA +RADULAE +RADULAR +RADULAS +RADWASTE +RADWASTES +RAFF +RAFFIA +RAFFIAS +RAFFINATE +RAFFINATES +RAFFINOSE +RAFFINOSES +RAFFISH +RAFFISHLY +RAFFISHNESS +RAFFISHNESSES +RAFFLE +RAFFLED +RAFFLER +RAFFLERS +RAFFLES +RAFFLESIA +RAFFLESIAS +RAFFLING +RAFFS +RAFT +RAFTED +RAFTER +RAFTERED +RAFTERS +RAFTING +RAFTS +RAFTSMAN +RAFTSMEN +RAG +RAGA +RAGAMUFFIN +RAGAMUFFINS +RAGAS +RAGBAG +RAGBAGS +RAGE +RAGED +RAGEE +RAGEES +RAGES +RAGG +RAGGED +RAGGEDER +RAGGEDEST +RAGGEDIER +RAGGEDIEST +RAGGEDLY +RAGGEDNESS +RAGGEDNESSES +RAGGEDY +RAGGEE +RAGGEES +RAGGIES +RAGGING +RAGGLE +RAGGLES +RAGGS +RAGGY +RAGI +RAGING +RAGINGLY +RAGIS +RAGLAN +RAGLANS +RAGMAN +RAGMEN +RAGOUT +RAGOUTED +RAGOUTING +RAGOUTS +RAGPICKER +RAGPICKERS +RAGS +RAGTAG +RAGTAGS +RAGTIME +RAGTIMES +RAGTOP +RAGTOPS +RAGWEED +RAGWEEDS +RAGWORT +RAGWORTS +RAH +RAI +RAIA +RAIAS +RAID +RAIDED +RAIDER +RAIDERS +RAIDING +RAIDS +RAIL +RAILBIRD +RAILBIRDS +RAILBUS +RAILBUSES +RAILBUSSES +RAILCAR +RAILCARS +RAILED +RAILER +RAILERS +RAILHEAD +RAILHEADS +RAILING +RAILINGS +RAILLERIES +RAILLERY +RAILROAD +RAILROADED +RAILROADER +RAILROADERS +RAILROADING +RAILROADINGS +RAILROADS +RAILS +RAILWAY +RAILWAYS +RAIMENT +RAIMENTS +RAIN +RAINBAND +RAINBANDS +RAINBIRD +RAINBIRDS +RAINBOW +RAINBOWLIKE +RAINBOWS +RAINCHECK +RAINCHECKS +RAINCOAT +RAINCOATS +RAINDROP +RAINDROPS +RAINED +RAINFALL +RAINFALLS +RAINIER +RAINIEST +RAINILY +RAININESS +RAININESSES +RAINING +RAINLESS +RAINMAKER +RAINMAKERS +RAINMAKING +RAINMAKINGS +RAINOUT +RAINOUTS +RAINPROOF +RAINPROOFED +RAINPROOFING +RAINPROOFS +RAINS +RAINSPOUT +RAINSPOUTS +RAINSQUALL +RAINSQUALLS +RAINSTORM +RAINSTORMS +RAINWASH +RAINWASHED +RAINWASHES +RAINWASHING +RAINWATER +RAINWATERS +RAINWEAR +RAINY +RAIS +RAISABLE +RAISE +RAISEABLE +RAISED +RAISER +RAISERS +RAISES +RAISIN +RAISING +RAISINGS +RAISINS +RAISINY +RAISONNE +RAITA +RAITAS +RAJ +RAJA +RAJAH +RAJAHS +RAJAS +RAJES +RAKE +RAKED +RAKEE +RAKEES +RAKEHELL +RAKEHELLS +RAKEHELLY +RAKEOFF +RAKEOFFS +RAKER +RAKERS +RAKES +RAKI +RAKING +RAKIS +RAKISH +RAKISHLY +RAKISHNESS +RAKISHNESSES +RAKU +RAKUS +RALE +RALES +RALLENTANDO +RALLIED +RALLIER +RALLIERS +RALLIES +RALLIFORM +RALLINE +RALLY +RALLYE +RALLYES +RALLYING +RALLYINGS +RALLYIST +RALLYISTS +RALPH +RALPHED +RALPHING +RALPHS +RAM +RAMADA +RAMADAS +RAMAL +RAMATE +RAMBLA +RAMBLAS +RAMBLE +RAMBLED +RAMBLER +RAMBLERS +RAMBLES +RAMBLING +RAMBLINGLY +RAMBOUILLET +RAMBOUILLETS +RAMBUNCTIOUS +RAMBUNCTIOUSLY +RAMBUTAN +RAMBUTANS +RAMEE +RAMEES +RAMEKIN +RAMEKINS +RAMEN +RAMENTA +RAMENTUM +RAMEQUIN +RAMEQUINS +RAMET +RAMETS +RAMI +RAMIE +RAMIES +RAMIFICATION +RAMIFICATIONS +RAMIFIED +RAMIFIES +RAMIFORM +RAMIFY +RAMIFYING +RAMILIE +RAMILIES +RAMILLIE +RAMILLIES +RAMJET +RAMJETS +RAMMED +RAMMER +RAMMERS +RAMMIER +RAMMIEST +RAMMING +RAMMISH +RAMMY +RAMONA +RAMONAS +RAMOSE +RAMOSELY +RAMOSITIES +RAMOSITY +RAMOUS +RAMP +RAMPAGE +RAMPAGED +RAMPAGEOUS +RAMPAGEOUSLY +RAMPAGEOUSNESS +RAMPAGER +RAMPAGERS +RAMPAGES +RAMPAGING +RAMPANCIES +RAMPANCY +RAMPANT +RAMPANTLY +RAMPART +RAMPARTED +RAMPARTING +RAMPARTS +RAMPED +RAMPIKE +RAMPIKES +RAMPING +RAMPION +RAMPIONS +RAMPOLE +RAMPOLES +RAMPS +RAMROD +RAMRODDED +RAMRODDING +RAMRODS +RAMS +RAMSHACKLE +RAMSHORN +RAMSHORNS +RAMSON +RAMSONS +RAMTIL +RAMTILLA +RAMTILLAS +RAMTILS +RAMULOSE +RAMULOUS +RAMUS +RAN +RANCE +RANCES +RANCH +RANCHED +RANCHER +RANCHERIA +RANCHERIAS +RANCHERO +RANCHEROS +RANCHERS +RANCHES +RANCHING +RANCHLESS +RANCHLIKE +RANCHMAN +RANCHMEN +RANCHO +RANCHOS +RANCID +RANCIDITIES +RANCIDITY +RANCIDLY +RANCIDNESS +RANCIDNESSES +RANCOR +RANCORED +RANCOROUS +RANCOROUSLY +RANCORS +RANCOUR +RANCOURED +RANCOURS +RAND +RANDAN +RANDANS +RANDIER +RANDIES +RANDIEST +RANDINESS +RANDINESSES +RANDOM +RANDOMIZATION +RANDOMIZATIONS +RANDOMIZE +RANDOMIZED +RANDOMIZER +RANDOMIZERS +RANDOMIZES +RANDOMIZING +RANDOMLY +RANDOMNESS +RANDOMNESSES +RANDOMS +RANDS +RANDY +RANEE +RANEES +RANG +RANGE +RANGED +RANGELAND +RANGELANDS +RANGER +RANGERS +RANGES +RANGIER +RANGIEST +RANGINESS +RANGINESSES +RANGING +RANGY +RANI +RANID +RANIDS +RANIS +RANK +RANKED +RANKER +RANKERS +RANKEST +RANKING +RANKINGS +RANKISH +RANKLE +RANKLED +RANKLES +RANKLESS +RANKLING +RANKLY +RANKNESS +RANKNESSES +RANKS +RANPIKE +RANPIKES +RANSACK +RANSACKED +RANSACKER +RANSACKERS +RANSACKING +RANSACKS +RANSOM +RANSOMED +RANSOMER +RANSOMERS +RANSOMING +RANSOMS +RANT +RANTED +RANTER +RANTERS +RANTING +RANTINGLY +RANTS +RANULA +RANULAR +RANULAS +RANUNCULI +RANUNCULUS +RANUNCULUSES +RAP +RAPACIOUS +RAPACIOUSLY +RAPACIOUSNESS +RAPACIOUSNESSES +RAPACITIES +RAPACITY +RAPE +RAPED +RAPER +RAPERS +RAPES +RAPESEED +RAPESEEDS +RAPHAE +RAPHE +RAPHES +RAPHIA +RAPHIAS +RAPHIDE +RAPHIDES +RAPHIS +RAPID +RAPIDER +RAPIDEST +RAPIDITIES +RAPIDITY +RAPIDLY +RAPIDNESS +RAPIDNESSES +RAPIDS +RAPIER +RAPIERED +RAPIERS +RAPINE +RAPINES +RAPING +RAPINI +RAPIST +RAPISTS +RAPPAREE +RAPPAREES +RAPPED +RAPPEE +RAPPEES +RAPPEL +RAPPELED +RAPPELING +RAPPELLED +RAPPELLING +RAPPELS +RAPPEN +RAPPER +RAPPERS +RAPPING +RAPPINI +RAPPORT +RAPPORTEUR +RAPPORTEURS +RAPPORTS +RAPPROCHEMENT +RAPPROCHEMENTS +RAPS +RAPSCALLION +RAPSCALLIONS +RAPT +RAPTLY +RAPTNESS +RAPTNESSES +RAPTOR +RAPTORIAL +RAPTORS +RAPTURE +RAPTURED +RAPTURES +RAPTURING +RAPTUROUS +RAPTUROUSLY +RAPTUROUSNESS +RAPTUROUSNESSES +RARE +RAREBIT +RAREBITS +RARED +RAREFACTION +RAREFACTIONAL +RAREFACTIONS +RAREFIED +RAREFIER +RAREFIERS +RAREFIES +RAREFY +RAREFYING +RARELY +RARENESS +RARENESSES +RARER +RARERIPE +RARERIPES +RARES +RAREST +RARIFIED +RARIFIES +RARIFY +RARIFYING +RARING +RARITIES +RARITY +RAS +RASBORA +RASBORAS +RASCAL +RASCALITIES +RASCALITY +RASCALLY +RASCALS +RASE +RASED +RASER +RASERS +RASES +RASH +RASHER +RASHERS +RASHES +RASHEST +RASHLIKE +RASHLY +RASHNESS +RASHNESSES +RASING +RASORIAL +RASP +RASPBERRIES +RASPBERRY +RASPED +RASPER +RASPERS +RASPIER +RASPIEST +RASPINESS +RASPINESSES +RASPING +RASPINGLY +RASPINGS +RASPISH +RASPS +RASPY +RASSLE +RASSLED +RASSLES +RASSLING +RASTER +RASTERS +RASURE +RASURES +RAT +RATABLE +RATABLES +RATABLY +RATAFEE +RATAFEES +RATAFIA +RATAFIAS +RATAL +RATALS +RATAN +RATANIES +RATANS +RATANY +RATAPLAN +RATAPLANNED +RATAPLANNING +RATAPLANS +RATATAT +RATATATS +RATATOUILLE +RATATOUILLES +RATBAG +RATBAGS +RATCH +RATCHES +RATCHET +RATCHETED +RATCHETING +RATCHETS +RATE +RATEABLE +RATEABLY +RATED +RATEL +RATELS +RATEMETER +RATEMETERS +RATEPAYER +RATEPAYERS +RATER +RATERS +RATES +RATFINK +RATFINKS +RATFISH +RATFISHES +RATH +RATHE +RATHER +RATHOLE +RATHOLES +RATHSKELLER +RATHSKELLERS +RATICIDE +RATICIDES +RATIFICATION +RATIFICATIONS +RATIFIED +RATIFIER +RATIFIERS +RATIFIES +RATIFY +RATIFYING +RATINE +RATINES +RATING +RATINGS +RATIO +RATIOCINATE +RATIOCINATED +RATIOCINATES +RATIOCINATING +RATIOCINATION +RATIOCINATIONS +RATIOCINATIVE +RATIOCINATOR +RATIOCINATORS +RATION +RATIONAL +RATIONALE +RATIONALES +RATIONALISE +RATIONALISED +RATIONALISES +RATIONALISING +RATIONALISM +RATIONALISMS +RATIONALIST +RATIONALISTIC +RATIONALISTS +RATIONALITIES +RATIONALITY +RATIONALIZABLE +RATIONALIZATION +RATIONALIZE +RATIONALIZED +RATIONALIZER +RATIONALIZERS +RATIONALIZES +RATIONALIZING +RATIONALLY +RATIONALNESS +RATIONALNESSES +RATIONALS +RATIONED +RATIONING +RATIONS +RATIOS +RATITE +RATITES +RATLIKE +RATLIN +RATLINE +RATLINES +RATLINS +RATO +RATOON +RATOONED +RATOONER +RATOONERS +RATOONING +RATOONS +RATOS +RATS +RATSBANE +RATSBANES +RATTAIL +RATTAILED +RATTAILS +RATTAN +RATTANS +RATTED +RATTEEN +RATTEENS +RATTEN +RATTENED +RATTENER +RATTENERS +RATTENING +RATTENS +RATTER +RATTERS +RATTIER +RATTIEST +RATTING +RATTISH +RATTLE +RATTLEBOX +RATTLEBOXES +RATTLEBRAIN +RATTLEBRAINED +RATTLEBRAINS +RATTLED +RATTLER +RATTLERS +RATTLES +RATTLESNAKE +RATTLESNAKES +RATTLETRAP +RATTLETRAPS +RATTLING +RATTLINGLY +RATTLINGS +RATTLY +RATTON +RATTONS +RATTOON +RATTOONED +RATTOONING +RATTOONS +RATTRAP +RATTRAPS +RATTY +RAUCITIES +RAUCITY +RAUCOUS +RAUCOUSLY +RAUCOUSNESS +RAUCOUSNESSES +RAUNCH +RAUNCHES +RAUNCHIER +RAUNCHIEST +RAUNCHILY +RAUNCHINESS +RAUNCHINESSES +RAUNCHY +RAUWOLFIA +RAUWOLFIAS +RAVAGE +RAVAGED +RAVAGEMENT +RAVAGEMENTS +RAVAGER +RAVAGERS +RAVAGES +RAVAGING +RAVE +RAVED +RAVEL +RAVELED +RAVELER +RAVELERS +RAVELIN +RAVELING +RAVELINGS +RAVELINS +RAVELLED +RAVELLER +RAVELLERS +RAVELLING +RAVELLINGS +RAVELLY +RAVELMENT +RAVELMENTS +RAVELS +RAVEN +RAVENED +RAVENER +RAVENERS +RAVENING +RAVENINGS +RAVENLIKE +RAVENOUS +RAVENOUSLY +RAVENOUSNESS +RAVENOUSNESSES +RAVENS +RAVER +RAVERS +RAVES +RAVIGOTE +RAVIGOTES +RAVIGOTTE +RAVIGOTTES +RAVIN +RAVINE +RAVINED +RAVINES +RAVING +RAVINGLY +RAVINGS +RAVINING +RAVINS +RAVIOLI +RAVIOLIS +RAVISH +RAVISHED +RAVISHER +RAVISHERS +RAVISHES +RAVISHING +RAVISHINGLY +RAVISHMENT +RAVISHMENTS +RAW +RAWBONED +RAWER +RAWEST +RAWHIDE +RAWHIDED +RAWHIDES +RAWHIDING +RAWIN +RAWINS +RAWINSONDE +RAWINSONDES +RAWISH +RAWLY +RAWNESS +RAWNESSES +RAWS +RAX +RAXED +RAXES +RAXING +RAY +RAYA +RAYAH +RAYAHS +RAYAS +RAYED +RAYGRASS +RAYGRASSES +RAYING +RAYLESS +RAYLESSNESS +RAYLESSNESSES +RAYLIKE +RAYON +RAYONS +RAYS +RAZE +RAZED +RAZEE +RAZEED +RAZEEING +RAZEES +RAZER +RAZERS +RAZES +RAZING +RAZOR +RAZORBACK +RAZORBACKS +RAZORBILL +RAZORBILLS +RAZORED +RAZORING +RAZORS +RAZZ +RAZZAMATAZZ +RAZZAMATAZZES +RAZZBERRIES +RAZZBERRY +RAZZED +RAZZES +RAZZING +RAZZMATAZZ +RAZZMATAZZES +RE +REABSORB +REABSORBED +REABSORBING +REABSORBS +REACCEDE +REACCEDED +REACCEDES +REACCEDING +REACCELERATE +REACCELERATED +REACCELERATES +REACCELERATING +REACCENT +REACCENTED +REACCENTING +REACCENTS +REACCEPT +REACCEPTED +REACCEPTING +REACCEPTS +REACCESSION +REACCESSIONS +REACCLAIM +REACCLAIMED +REACCLAIMING +REACCLAIMS +REACCLIMATIZE +REACCLIMATIZED +REACCLIMATIZES +REACCLIMATIZING +REACCREDIT +REACCREDITATION +REACCREDITED +REACCREDITING +REACCREDITS +REACCUSE +REACCUSED +REACCUSES +REACCUSING +REACH +REACHABLE +REACHED +REACHER +REACHERS +REACHES +REACHING +REACQUAINT +REACQUAINTED +REACQUAINTING +REACQUAINTS +REACQUIRE +REACQUIRED +REACQUIRES +REACQUIRING +REACQUISITION +REACQUISITIONS +REACT +REACTANCE +REACTANCES +REACTANT +REACTANTS +REACTED +REACTING +REACTION +REACTIONARIES +REACTIONARY +REACTIONARYISM +REACTIONARYISMS +REACTIONS +REACTIVATE +REACTIVATED +REACTIVATES +REACTIVATING +REACTIVATION +REACTIVATIONS +REACTIVE +REACTIVELY +REACTIVENESS +REACTIVENESSES +REACTIVITIES +REACTIVITY +REACTOR +REACTORS +REACTS +READ +READABILITIES +READABILITY +READABLE +READABLENESS +READABLENESSES +READABLY +READAPT +READAPTED +READAPTING +READAPTS +READD +READDED +READDICT +READDICTED +READDICTING +READDICTS +READDING +READDRESS +READDRESSED +READDRESSES +READDRESSING +READDS +READER +READERLY +READERS +READERSHIP +READERSHIPS +READIED +READIER +READIES +READIEST +READILY +READINESS +READINESSES +READING +READINGS +READJUST +READJUSTED +READJUSTING +READJUSTMENT +READJUSTMENTS +READJUSTS +READMISSION +READMISSIONS +READMIT +READMITS +READMITTED +READMITTING +READOPT +READOPTED +READOPTING +READOPTS +READORN +READORNED +READORNING +READORNS +READOUT +READOUTS +READS +READY +READYING +READYMADE +READYMADES +REAFFIRM +REAFFIRMATION +REAFFIRMATIONS +REAFFIRMED +REAFFIRMING +REAFFIRMS +REAFFIX +REAFFIXED +REAFFIXES +REAFFIXING +REAFFOREST +REAFFORESTATION +REAFFORESTED +REAFFORESTING +REAFFORESTS +REAGENT +REAGENTS +REAGGREGATE +REAGGREGATED +REAGGREGATES +REAGGREGATING +REAGGREGATION +REAGGREGATIONS +REAGIN +REAGINIC +REAGINS +REAL +REALER +REALES +REALEST +REALGAR +REALGARS +REALIA +REALIGN +REALIGNED +REALIGNING +REALIGNMENT +REALIGNMENTS +REALIGNS +REALISE +REALISED +REALISER +REALISERS +REALISES +REALISING +REALISM +REALISMS +REALIST +REALISTIC +REALISTICALLY +REALISTS +REALITIES +REALITY +REALIZABLE +REALIZATION +REALIZATIONS +REALIZE +REALIZED +REALIZER +REALIZERS +REALIZES +REALIZING +REALLOCATE +REALLOCATED +REALLOCATES +REALLOCATING +REALLOCATION +REALLOCATIONS +REALLOT +REALLOTS +REALLOTTED +REALLOTTING +REALLY +REALM +REALMS +REALNESS +REALNESSES +REALPOLITIK +REALPOLITIKS +REALS +REALTER +REALTERED +REALTERING +REALTERS +REALTIES +REALTOR +REALTORS +REALTY +REAM +REAMED +REAMER +REAMERS +REAMING +REAMS +REANALYSES +REANALYSIS +REANALYZE +REANALYZED +REANALYZES +REANALYZING +REANIMATE +REANIMATED +REANIMATES +REANIMATING +REANIMATION +REANIMATIONS +REANNEX +REANNEXATION +REANNEXATIONS +REANNEXED +REANNEXES +REANNEXING +REANOINT +REANOINTED +REANOINTING +REANOINTS +REAP +REAPABLE +REAPED +REAPER +REAPERS +REAPHOOK +REAPHOOKS +REAPING +REAPPEAR +REAPPEARANCE +REAPPEARANCES +REAPPEARED +REAPPEARING +REAPPEARS +REAPPLICATION +REAPPLICATIONS +REAPPLIED +REAPPLIES +REAPPLY +REAPPLYING +REAPPOINT +REAPPOINTED +REAPPOINTING +REAPPOINTMENT +REAPPOINTMENTS +REAPPOINTS +REAPPORTION +REAPPORTIONED +REAPPORTIONING +REAPPORTIONMENT +REAPPORTIONS +REAPPRAISAL +REAPPRAISALS +REAPPRAISE +REAPPRAISED +REAPPRAISES +REAPPRAISING +REAPPROPRIATE +REAPPROPRIATED +REAPPROPRIATES +REAPPROPRIATING +REAPPROVE +REAPPROVED +REAPPROVES +REAPPROVING +REAPS +REAR +REARED +REARER +REARERS +REARGUARD +REARGUE +REARGUED +REARGUES +REARGUING +REARGUMENT +REARGUMENTS +REARING +REARM +REARMAMENT +REARMAMENTS +REARMED +REARMICE +REARMING +REARMOST +REARMOUSE +REARMS +REAROUSAL +REAROUSALS +REAROUSE +REAROUSED +REAROUSES +REAROUSING +REARRANGE +REARRANGED +REARRANGEMENT +REARRANGEMENTS +REARRANGES +REARRANGING +REARREST +REARRESTED +REARRESTING +REARRESTS +REARS +REARTICULATE +REARTICULATED +REARTICULATES +REARTICULATING +REARWARD +REARWARDS +REASCEND +REASCENDED +REASCENDING +REASCENDS +REASCENT +REASCENTS +REASON +REASONABILITIES +REASONABILITY +REASONABLE +REASONABLENESS +REASONABLY +REASONED +REASONER +REASONERS +REASONING +REASONINGS +REASONLESS +REASONLESSLY +REASONS +REASSAIL +REASSAILED +REASSAILING +REASSAILS +REASSEMBLAGE +REASSEMBLAGES +REASSEMBLE +REASSEMBLED +REASSEMBLES +REASSEMBLIES +REASSEMBLING +REASSEMBLY +REASSERT +REASSERTED +REASSERTING +REASSERTION +REASSERTIONS +REASSERTS +REASSESS +REASSESSED +REASSESSES +REASSESSING +REASSESSMENT +REASSESSMENTS +REASSIGN +REASSIGNED +REASSIGNING +REASSIGNMENT +REASSIGNMENTS +REASSIGNS +REASSORT +REASSORTED +REASSORTING +REASSORTS +REASSUME +REASSUMED +REASSUMES +REASSUMING +REASSURANCE +REASSURANCES +REASSURE +REASSURED +REASSURES +REASSURING +REASSURINGLY +REATA +REATAS +REATTACH +REATTACHED +REATTACHES +REATTACHING +REATTACHMENT +REATTACHMENTS +REATTACK +REATTACKED +REATTACKING +REATTACKS +REATTAIN +REATTAINED +REATTAINING +REATTAINS +REATTEMPT +REATTEMPTED +REATTEMPTING +REATTEMPTS +REATTRIBUTE +REATTRIBUTED +REATTRIBUTES +REATTRIBUTING +REATTRIBUTION +REATTRIBUTIONS +REAUTHORIZATION +REAUTHORIZE +REAUTHORIZED +REAUTHORIZES +REAUTHORIZING +REAVAIL +REAVAILED +REAVAILING +REAVAILS +REAVE +REAVED +REAVER +REAVERS +REAVES +REAVING +REAVOW +REAVOWED +REAVOWING +REAVOWS +REAWAKE +REAWAKED +REAWAKEN +REAWAKENED +REAWAKENING +REAWAKENS +REAWAKES +REAWAKING +REAWOKE +REAWOKEN +REB +REBAIT +REBAITED +REBAITING +REBAITS +REBALANCE +REBALANCED +REBALANCES +REBALANCING +REBAPTISM +REBAPTISMS +REBAPTIZE +REBAPTIZED +REBAPTIZES +REBAPTIZING +REBAR +REBARBATIVE +REBARBATIVELY +REBARS +REBATE +REBATED +REBATER +REBATERS +REBATES +REBATING +REBATO +REBATOS +REBBE +REBBES +REBBETZIN +REBBETZINS +REBEC +REBECK +REBECKS +REBECS +REBEGAN +REBEGIN +REBEGINNING +REBEGINS +REBEGUN +REBEL +REBELDOM +REBELDOMS +REBELLED +REBELLING +REBELLION +REBELLIONS +REBELLIOUS +REBELLIOUSLY +REBELLIOUSNESS +REBELS +REBID +REBIDDEN +REBIDDING +REBIDS +REBILL +REBILLED +REBILLING +REBILLS +REBIND +REBINDING +REBINDS +REBIRTH +REBIRTHS +REBLEND +REBLENDED +REBLENDING +REBLENDS +REBLENT +REBLOOM +REBLOOMED +REBLOOMING +REBLOOMS +REBOANT +REBOARD +REBOARDED +REBOARDING +REBOARDS +REBODIED +REBODIES +REBODY +REBODYING +REBOIL +REBOILED +REBOILING +REBOILS +REBOOK +REBOOKED +REBOOKING +REBOOKS +REBOOT +REBOOTED +REBOOTING +REBOOTS +REBOP +REBOPS +REBORE +REBORED +REBORES +REBORING +REBORN +REBOTTLE +REBOTTLED +REBOTTLES +REBOTTLING +REBOUGHT +REBOUND +REBOUNDED +REBOUNDER +REBOUNDERS +REBOUNDING +REBOUNDS +REBOZO +REBOZOS +REBRANCH +REBRANCHED +REBRANCHES +REBRANCHING +REBRED +REBREED +REBREEDING +REBREEDS +REBROADCAST +REBROADCASTING +REBROADCASTS +REBS +REBUFF +REBUFFED +REBUFFING +REBUFFS +REBUILD +REBUILDED +REBUILDING +REBUILDS +REBUILT +REBUKE +REBUKED +REBUKER +REBUKERS +REBUKES +REBUKING +REBURIAL +REBURIALS +REBURIED +REBURIES +REBURY +REBURYING +REBUS +REBUSES +REBUT +REBUTS +REBUTTABLE +REBUTTAL +REBUTTALS +REBUTTED +REBUTTER +REBUTTERS +REBUTTING +REBUTTON +REBUTTONED +REBUTTONING +REBUTTONS +REBUY +REBUYING +REBUYS +REC +RECALCITRANCE +RECALCITRANCES +RECALCITRANCIES +RECALCITRANCY +RECALCITRANT +RECALCITRANTS +RECALCULATE +RECALCULATED +RECALCULATES +RECALCULATING +RECALCULATION +RECALCULATIONS +RECALIBRATE +RECALIBRATED +RECALIBRATES +RECALIBRATING +RECALIBRATION +RECALIBRATIONS +RECALL +RECALLABILITIES +RECALLABILITY +RECALLABLE +RECALLED +RECALLER +RECALLERS +RECALLING +RECALLS +RECAMIER +RECAMIERS +RECANALIZATION +RECANALIZATIONS +RECANALIZE +RECANALIZED +RECANALIZES +RECANALIZING +RECANE +RECANED +RECANES +RECANING +RECANT +RECANTATION +RECANTATIONS +RECANTED +RECANTER +RECANTERS +RECANTING +RECANTS +RECAP +RECAPITALIZE +RECAPITALIZED +RECAPITALIZES +RECAPITALIZING +RECAPITULATE +RECAPITULATED +RECAPITULATES +RECAPITULATING +RECAPITULATION +RECAPITULATIONS +RECAPPABLE +RECAPPED +RECAPPING +RECAPS +RECAPTURE +RECAPTURED +RECAPTURES +RECAPTURING +RECARPET +RECARPETED +RECARPETING +RECARPETS +RECARRIED +RECARRIES +RECARRY +RECARRYING +RECAST +RECASTING +RECASTS +RECATALOG +RECATALOGED +RECATALOGING +RECATALOGS +RECAUTION +RECAUTIONED +RECAUTIONING +RECAUTIONS +RECCE +RECCES +RECEDE +RECEDED +RECEDES +RECEDING +RECEIPT +RECEIPTED +RECEIPTING +RECEIPTOR +RECEIPTORS +RECEIPTS +RECEIVABLE +RECEIVABLES +RECEIVE +RECEIVED +RECEIVER +RECEIVERS +RECEIVERSHIP +RECEIVERSHIPS +RECEIVES +RECEIVING +RECEMENT +RECEMENTED +RECEMENTING +RECEMENTS +RECENCIES +RECENCY +RECENSION +RECENSIONS +RECENSOR +RECENSORED +RECENSORING +RECENSORS +RECENT +RECENTER +RECENTEST +RECENTLY +RECENTNESS +RECENTNESSES +RECENTRIFUGE +RECENTRIFUGED +RECENTRIFUGES +RECENTRIFUGING +RECEPT +RECEPTACLE +RECEPTACLES +RECEPTION +RECEPTIONIST +RECEPTIONISTS +RECEPTIONS +RECEPTIVE +RECEPTIVELY +RECEPTIVENESS +RECEPTIVENESSES +RECEPTIVITIES +RECEPTIVITY +RECEPTOR +RECEPTORS +RECEPTS +RECERTIFICATION +RECERTIFIED +RECERTIFIES +RECERTIFY +RECERTIFYING +RECESS +RECESSED +RECESSES +RECESSING +RECESSION +RECESSIONAL +RECESSIONALS +RECESSIONARY +RECESSIONS +RECESSIVE +RECESSIVELY +RECESSIVENESS +RECESSIVENESSES +RECESSIVES +RECHALLENGE +RECHALLENGED +RECHALLENGES +RECHALLENGING +RECHANGE +RECHANGED +RECHANGES +RECHANGING +RECHANNEL +RECHANNELED +RECHANNELING +RECHANNELLED +RECHANNELLING +RECHANNELS +RECHARGE +RECHARGEABLE +RECHARGED +RECHARGER +RECHARGERS +RECHARGES +RECHARGING +RECHART +RECHARTED +RECHARTER +RECHARTERED +RECHARTERING +RECHARTERS +RECHARTING +RECHARTS +RECHAUFFE +RECHAUFFES +RECHEAT +RECHEATS +RECHECK +RECHECKED +RECHECKING +RECHECKS +RECHERCHE +RECHEW +RECHEWED +RECHEWING +RECHEWS +RECHOOSE +RECHOOSES +RECHOOSING +RECHOREOGRAPH +RECHOREOGRAPHED +RECHOREOGRAPHS +RECHOSE +RECHOSEN +RECHRISTEN +RECHRISTENED +RECHRISTENING +RECHRISTENS +RECHROMATOGRAPH +RECIDIVISM +RECIDIVISMS +RECIDIVIST +RECIDIVISTIC +RECIDIVISTS +RECIPE +RECIPES +RECIPIENT +RECIPIENTS +RECIPROCAL +RECIPROCALLY +RECIPROCALS +RECIPROCATE +RECIPROCATED +RECIPROCATES +RECIPROCATING +RECIPROCATION +RECIPROCATIONS +RECIPROCATIVE +RECIPROCATOR +RECIPROCATORS +RECIPROCITIES +RECIPROCITY +RECIRCLE +RECIRCLED +RECIRCLES +RECIRCLING +RECIRCULATE +RECIRCULATED +RECIRCULATES +RECIRCULATING +RECIRCULATION +RECIRCULATIONS +RECISION +RECISIONS +RECIT +RECITAL +RECITALIST +RECITALISTS +RECITALS +RECITATION +RECITATIONS +RECITATIVE +RECITATIVES +RECITATIVI +RECITATIVO +RECITATIVOS +RECITE +RECITED +RECITER +RECITERS +RECITES +RECITING +RECITS +RECK +RECKED +RECKING +RECKLESS +RECKLESSLY +RECKLESSNESS +RECKLESSNESSES +RECKON +RECKONED +RECKONER +RECKONERS +RECKONING +RECKONINGS +RECKONS +RECKS +RECLAD +RECLADDED +RECLADDING +RECLADS +RECLAIM +RECLAIMABLE +RECLAIMED +RECLAIMER +RECLAIMERS +RECLAIMING +RECLAIMS +RECLAMATION +RECLAMATIONS +RECLAME +RECLAMES +RECLASP +RECLASPED +RECLASPING +RECLASPS +RECLASSIFIED +RECLASSIFIES +RECLASSIFY +RECLASSIFYING +RECLEAN +RECLEANED +RECLEANING +RECLEANS +RECLINATE +RECLINE +RECLINED +RECLINER +RECLINERS +RECLINES +RECLINING +RECLOSABLE +RECLOTHE +RECLOTHED +RECLOTHES +RECLOTHING +RECLUSE +RECLUSES +RECLUSION +RECLUSIONS +RECLUSIVE +RECLUSIVELY +RECLUSIVENESS +RECLUSIVENESSES +RECOAL +RECOALED +RECOALING +RECOALS +RECOAT +RECOATED +RECOATING +RECOATS +RECOCK +RECOCKED +RECOCKING +RECOCKS +RECODE +RECODED +RECODES +RECODIFICATION +RECODIFICATIONS +RECODIFIED +RECODIFIES +RECODIFY +RECODIFYING +RECODING +RECOGNISE +RECOGNISED +RECOGNISES +RECOGNISING +RECOGNITION +RECOGNITIONS +RECOGNIZABILITY +RECOGNIZABLE +RECOGNIZABLY +RECOGNIZANCE +RECOGNIZANCES +RECOGNIZE +RECOGNIZED +RECOGNIZER +RECOGNIZERS +RECOGNIZES +RECOGNIZING +RECOIL +RECOILED +RECOILER +RECOILERS +RECOILING +RECOILLESS +RECOILS +RECOIN +RECOINAGE +RECOINAGES +RECOINED +RECOINING +RECOINS +RECOLLECT +RECOLLECTED +RECOLLECTING +RECOLLECTION +RECOLLECTIONS +RECOLLECTS +RECOLONIZATION +RECOLONIZATIONS +RECOLONIZE +RECOLONIZED +RECOLONIZES +RECOLONIZING +RECOLOR +RECOLORED +RECOLORING +RECOLORS +RECOMB +RECOMBED +RECOMBINANT +RECOMBINANTS +RECOMBINATION +RECOMBINATIONAL +RECOMBINATIONS +RECOMBINE +RECOMBINED +RECOMBINES +RECOMBING +RECOMBINING +RECOMBS +RECOMMENCE +RECOMMENCED +RECOMMENCEMENT +RECOMMENCEMENTS +RECOMMENCES +RECOMMENCING +RECOMMEND +RECOMMENDABLE +RECOMMENDATION +RECOMMENDATIONS +RECOMMENDATORY +RECOMMENDED +RECOMMENDER +RECOMMENDERS +RECOMMENDING +RECOMMENDS +RECOMMISSION +RECOMMISSIONED +RECOMMISSIONING +RECOMMISSIONS +RECOMMIT +RECOMMITMENT +RECOMMITMENTS +RECOMMITS +RECOMMITTAL +RECOMMITTALS +RECOMMITTED +RECOMMITTING +RECOMPENSE +RECOMPENSED +RECOMPENSES +RECOMPENSING +RECOMPILATION +RECOMPILATIONS +RECOMPILE +RECOMPILED +RECOMPILES +RECOMPILING +RECOMPOSE +RECOMPOSED +RECOMPOSES +RECOMPOSING +RECOMPOSITION +RECOMPOSITIONS +RECOMPUTATION +RECOMPUTATIONS +RECOMPUTE +RECOMPUTED +RECOMPUTES +RECOMPUTING +RECON +RECONCEIVE +RECONCEIVED +RECONCEIVES +RECONCEIVING +RECONCENTRATE +RECONCENTRATED +RECONCENTRATES +RECONCENTRATING +RECONCENTRATION +RECONCEPTION +RECONCEPTIONS +RECONCEPTUALIZE +RECONCILABILITY +RECONCILABLE +RECONCILE +RECONCILED +RECONCILEMENT +RECONCILEMENTS +RECONCILER +RECONCILERS +RECONCILES +RECONCILIATION +RECONCILIATIONS +RECONCILIATORY +RECONCILING +RECONDENSE +RECONDENSED +RECONDENSES +RECONDENSING +RECONDITE +RECONDITELY +RECONDITENESS +RECONDITENESSES +RECONDITION +RECONDITIONED +RECONDITIONING +RECONDITIONS +RECONDUCT +RECONDUCTED +RECONDUCTING +RECONDUCTS +RECONFER +RECONFERRED +RECONFERRING +RECONFERS +RECONFIGURATION +RECONFIGURE +RECONFIGURED +RECONFIGURES +RECONFIGURING +RECONFINE +RECONFINED +RECONFINES +RECONFINING +RECONFIRM +RECONFIRMATION +RECONFIRMATIONS +RECONFIRMED +RECONFIRMING +RECONFIRMS +RECONNAISSANCE +RECONNAISSANCES +RECONNECT +RECONNECTED +RECONNECTING +RECONNECTION +RECONNECTIONS +RECONNECTS +RECONNED +RECONNING +RECONNOITER +RECONNOITERED +RECONNOITERING +RECONNOITERS +RECONNOITRE +RECONNOITRED +RECONNOITRES +RECONNOITRING +RECONQUER +RECONQUERED +RECONQUERING +RECONQUERS +RECONQUEST +RECONQUESTS +RECONS +RECONSECRATE +RECONSECRATED +RECONSECRATES +RECONSECRATING +RECONSECRATION +RECONSECRATIONS +RECONSIDER +RECONSIDERATION +RECONSIDERED +RECONSIDERING +RECONSIDERS +RECONSIGN +RECONSIGNED +RECONSIGNING +RECONSIGNS +RECONSOLE +RECONSOLED +RECONSOLES +RECONSOLIDATE +RECONSOLIDATED +RECONSOLIDATES +RECONSOLIDATING +RECONSOLING +RECONSTITUTE +RECONSTITUTED +RECONSTITUTES +RECONSTITUTING +RECONSTITUTION +RECONSTITUTIONS +RECONSTRUCT +RECONSTRUCTED +RECONSTRUCTIBLE +RECONSTRUCTING +RECONSTRUCTION +RECONSTRUCTIONS +RECONSTRUCTIVE +RECONSTRUCTOR +RECONSTRUCTORS +RECONSTRUCTS +RECONSULT +RECONSULTED +RECONSULTING +RECONSULTS +RECONTACT +RECONTACTED +RECONTACTING +RECONTACTS +RECONTAMINATE +RECONTAMINATED +RECONTAMINATES +RECONTAMINATING +RECONTAMINATION +RECONTEXTUALIZE +RECONTOUR +RECONTOURED +RECONTOURING +RECONTOURS +RECONVENE +RECONVENED +RECONVENES +RECONVENING +RECONVERSION +RECONVERSIONS +RECONVERT +RECONVERTED +RECONVERTING +RECONVERTS +RECONVEY +RECONVEYANCE +RECONVEYANCES +RECONVEYED +RECONVEYING +RECONVEYS +RECONVICT +RECONVICTED +RECONVICTING +RECONVICTION +RECONVICTIONS +RECONVICTS +RECONVINCE +RECONVINCED +RECONVINCES +RECONVINCING +RECOOK +RECOOKED +RECOOKING +RECOOKS +RECOPIED +RECOPIES +RECOPY +RECOPYING +RECORD +RECORDABLE +RECORDATION +RECORDATIONS +RECORDED +RECORDER +RECORDERS +RECORDING +RECORDINGS +RECORDIST +RECORDISTS +RECORDS +RECORK +RECORKED +RECORKING +RECORKS +RECOUNT +RECOUNTAL +RECOUNTALS +RECOUNTED +RECOUNTER +RECOUNTERS +RECOUNTING +RECOUNTS +RECOUP +RECOUPABLE +RECOUPE +RECOUPED +RECOUPING +RECOUPLE +RECOUPLED +RECOUPLES +RECOUPLING +RECOUPMENT +RECOUPMENTS +RECOUPS +RECOURSE +RECOURSES +RECOVER +RECOVERABILITY +RECOVERABLE +RECOVERED +RECOVERER +RECOVERERS +RECOVERIES +RECOVERING +RECOVERS +RECOVERY +RECRATE +RECRATED +RECRATES +RECRATING +RECREANCE +RECREANCES +RECREANCIES +RECREANCY +RECREANT +RECREANTS +RECREATE +RECREATED +RECREATES +RECREATING +RECREATION +RECREATIONAL +RECREATIONIST +RECREATIONISTS +RECREATIONS +RECREATIVE +RECREMENT +RECREMENTS +RECRIMINATE +RECRIMINATED +RECRIMINATES +RECRIMINATING +RECRIMINATION +RECRIMINATIONS +RECRIMINATIVE +RECRIMINATORY +RECROSS +RECROSSED +RECROSSES +RECROSSING +RECROWN +RECROWNED +RECROWNING +RECROWNS +RECRUDESCE +RECRUDESCED +RECRUDESCENCE +RECRUDESCENCES +RECRUDESCENT +RECRUDESCES +RECRUDESCING +RECRUIT +RECRUITED +RECRUITER +RECRUITERS +RECRUITING +RECRUITMENT +RECRUITMENTS +RECRUITS +RECRYSTALLIZE +RECRYSTALLIZED +RECRYSTALLIZES +RECRYSTALLIZING +RECS +RECTA +RECTAL +RECTALLY +RECTANGLE +RECTANGLES +RECTANGULAR +RECTANGULARITY +RECTANGULARLY +RECTI +RECTIFIABILITY +RECTIFIABLE +RECTIFICATION +RECTIFICATIONS +RECTIFIED +RECTIFIER +RECTIFIERS +RECTIFIES +RECTIFY +RECTIFYING +RECTILINEAR +RECTILINEARLY +RECTITUDE +RECTITUDES +RECTITUDINOUS +RECTO +RECTOCELE +RECTOCELES +RECTOR +RECTORATE +RECTORATES +RECTORIAL +RECTORIES +RECTORS +RECTORSHIP +RECTORSHIPS +RECTORY +RECTOS +RECTRICES +RECTRIX +RECTUM +RECTUMS +RECTUS +RECULTIVATE +RECULTIVATED +RECULTIVATES +RECULTIVATING +RECUMBENCIES +RECUMBENCY +RECUMBENT +RECUPERATE +RECUPERATED +RECUPERATES +RECUPERATING +RECUPERATION +RECUPERATIONS +RECUPERATIVE +RECUR +RECURRED +RECURRENCE +RECURRENCES +RECURRENT +RECURRENTLY +RECURRING +RECURS +RECURSION +RECURSIONS +RECURSIVE +RECURSIVELY +RECURSIVENESS +RECURSIVENESSES +RECURVATE +RECURVE +RECURVED +RECURVES +RECURVING +RECUSAL +RECUSALS +RECUSANCIES +RECUSANCY +RECUSANT +RECUSANTS +RECUSE +RECUSED +RECUSES +RECUSING +RECUT +RECUTS +RECUTTING +RECYCLABLE +RECYCLABLES +RECYCLE +RECYCLED +RECYCLER +RECYCLERS +RECYCLES +RECYCLING +RED +REDACT +REDACTED +REDACTING +REDACTION +REDACTIONAL +REDACTIONS +REDACTOR +REDACTORS +REDACTS +REDAMAGE +REDAMAGED +REDAMAGES +REDAMAGING +REDAN +REDANS +REDARGUE +REDARGUED +REDARGUES +REDARGUING +REDATE +REDATED +REDATES +REDATING +REDBAIT +REDBAITED +REDBAITER +REDBAITERS +REDBAITING +REDBAITS +REDBAY +REDBAYS +REDBIRD +REDBIRDS +REDBONE +REDBONES +REDBREAST +REDBREASTS +REDBRICK +REDBRICKS +REDBUD +REDBUDS +REDBUG +REDBUGS +REDCAP +REDCAPS +REDCOAT +REDCOATS +REDD +REDDED +REDDEN +REDDENED +REDDENING +REDDENS +REDDER +REDDERS +REDDEST +REDDING +REDDISH +REDDISHNESS +REDDISHNESSES +REDDLE +REDDLED +REDDLES +REDDLING +REDDS +REDE +REDEAR +REDEARS +REDECIDE +REDECIDED +REDECIDES +REDECIDING +REDECORATE +REDECORATED +REDECORATES +REDECORATING +REDECORATION +REDECORATIONS +REDECORATOR +REDECORATORS +REDED +REDEDICATE +REDEDICATED +REDEDICATES +REDEDICATING +REDEDICATION +REDEDICATIONS +REDEEM +REDEEMABLE +REDEEMED +REDEEMER +REDEEMERS +REDEEMING +REDEEMS +REDEFEAT +REDEFEATED +REDEFEATING +REDEFEATS +REDEFECT +REDEFECTED +REDEFECTING +REDEFECTS +REDEFIED +REDEFIES +REDEFINE +REDEFINED +REDEFINES +REDEFINING +REDEFINITION +REDEFINITIONS +REDEFY +REDEFYING +REDELIVER +REDELIVERED +REDELIVERIES +REDELIVERING +REDELIVERS +REDELIVERY +REDEMAND +REDEMANDED +REDEMANDING +REDEMANDS +REDEMPTION +REDEMPTIONER +REDEMPTIONERS +REDEMPTIONS +REDEMPTIVE +REDEMPTORY +REDENIED +REDENIES +REDENY +REDENYING +REDEPLOY +REDEPLOYED +REDEPLOYING +REDEPLOYMENT +REDEPLOYMENTS +REDEPLOYS +REDEPOSIT +REDEPOSITED +REDEPOSITING +REDEPOSITS +REDES +REDESCEND +REDESCENDED +REDESCENDING +REDESCENDS +REDESCRIBE +REDESCRIBED +REDESCRIBES +REDESCRIBING +REDESCRIPTION +REDESCRIPTIONS +REDESIGN +REDESIGNED +REDESIGNING +REDESIGNS +REDETERMINATION +REDETERMINE +REDETERMINED +REDETERMINES +REDETERMINING +REDEVELOP +REDEVELOPED +REDEVELOPER +REDEVELOPERS +REDEVELOPING +REDEVELOPMENT +REDEVELOPMENTS +REDEVELOPS +REDEYE +REDEYES +REDFIN +REDFINS +REDFISH +REDFISHES +REDHEAD +REDHEADED +REDHEADS +REDHORSE +REDHORSES +REDIA +REDIAE +REDIAL +REDIALED +REDIALING +REDIALLED +REDIALLING +REDIALS +REDIAS +REDICTATE +REDICTATED +REDICTATES +REDICTATING +REDID +REDIGEST +REDIGESTED +REDIGESTING +REDIGESTION +REDIGESTIONS +REDIGESTS +REDIGRESS +REDIGRESSED +REDIGRESSES +REDIGRESSING +REDING +REDINGOTE +REDINGOTES +REDINTEGRATE +REDINTEGRATED +REDINTEGRATES +REDINTEGRATING +REDINTEGRATION +REDINTEGRATIONS +REDINTEGRATIVE +REDIP +REDIPPED +REDIPPING +REDIPS +REDIPT +REDIRECT +REDIRECTED +REDIRECTING +REDIRECTION +REDIRECTIONS +REDIRECTS +REDISCOUNT +REDISCOUNTABLE +REDISCOUNTED +REDISCOUNTING +REDISCOUNTS +REDISCOVER +REDISCOVERED +REDISCOVERIES +REDISCOVERING +REDISCOVERS +REDISCOVERY +REDISCUSS +REDISCUSSED +REDISCUSSES +REDISCUSSING +REDISPLAY +REDISPLAYED +REDISPLAYING +REDISPLAYS +REDISPOSE +REDISPOSED +REDISPOSES +REDISPOSING +REDISPOSITION +REDISPOSITIONS +REDISSOLVE +REDISSOLVED +REDISSOLVES +REDISSOLVING +REDISTILL +REDISTILLATION +REDISTILLATIONS +REDISTILLED +REDISTILLING +REDISTILLS +REDISTRIBUTE +REDISTRIBUTED +REDISTRIBUTES +REDISTRIBUTING +REDISTRIBUTION +REDISTRIBUTIONS +REDISTRIBUTIVE +REDISTRICT +REDISTRICTED +REDISTRICTING +REDISTRICTS +REDIVIDE +REDIVIDED +REDIVIDES +REDIVIDING +REDIVISION +REDIVISIONS +REDIVIVUS +REDIVORCE +REDIVORCED +REDIVORCES +REDIVORCING +REDLEG +REDLEGS +REDLINE +REDLINED +REDLINER +REDLINERS +REDLINES +REDLINING +REDLININGS +REDLY +REDNECK +REDNECKED +REDNECKS +REDNESS +REDNESSES +REDO +REDOCK +REDOCKED +REDOCKING +REDOCKS +REDOES +REDOING +REDOLENCE +REDOLENCES +REDOLENCIES +REDOLENCY +REDOLENT +REDOLENTLY +REDON +REDONE +REDONNED +REDONNING +REDONS +REDOS +REDOUBLE +REDOUBLED +REDOUBLER +REDOUBLERS +REDOUBLES +REDOUBLING +REDOUBT +REDOUBTABLE +REDOUBTABLY +REDOUBTS +REDOUND +REDOUNDED +REDOUNDING +REDOUNDS +REDOUT +REDOUTS +REDOWA +REDOWAS +REDOX +REDOXES +REDPOLL +REDPOLLS +REDRAFT +REDRAFTED +REDRAFTING +REDRAFTS +REDRAW +REDRAWER +REDRAWERS +REDRAWING +REDRAWN +REDRAWS +REDREAM +REDREAMED +REDREAMING +REDREAMS +REDREAMT +REDRESS +REDRESSED +REDRESSER +REDRESSERS +REDRESSES +REDRESSING +REDRESSOR +REDRESSORS +REDREW +REDRIED +REDRIES +REDRILL +REDRILLED +REDRILLING +REDRILLS +REDRIVE +REDRIVEN +REDRIVES +REDRIVING +REDROOT +REDROOTS +REDROVE +REDRY +REDRYING +REDS +REDSHANK +REDSHANKS +REDSHIFT +REDSHIFTED +REDSHIFTS +REDSHIRT +REDSHIRTED +REDSHIRTING +REDSHIRTS +REDSKIN +REDSKINS +REDSTART +REDSTARTS +REDTAIL +REDTAILS +REDTOP +REDTOPS +REDUB +REDUBBED +REDUBBING +REDUBS +REDUCE +REDUCED +REDUCER +REDUCERS +REDUCES +REDUCIBILITIES +REDUCIBILITY +REDUCIBLE +REDUCIBLY +REDUCING +REDUCTANT +REDUCTANTS +REDUCTASE +REDUCTASES +REDUCTION +REDUCTIONAL +REDUCTIONISM +REDUCTIONISMS +REDUCTIONIST +REDUCTIONISTIC +REDUCTIONISTS +REDUCTIONS +REDUCTIVE +REDUCTIVELY +REDUCTIVENESS +REDUCTIVENESSES +REDUCTOR +REDUCTORS +REDUNDANCIES +REDUNDANCY +REDUNDANT +REDUNDANTLY +REDUPLICATE +REDUPLICATED +REDUPLICATES +REDUPLICATING +REDUPLICATION +REDUPLICATIONS +REDUPLICATIVE +REDUPLICATIVELY +REDUVIID +REDUVIIDS +REDUX +REDWARE +REDWARES +REDWING +REDWINGS +REDWOOD +REDWOODS +REDYE +REDYED +REDYEING +REDYES +REE +REEARN +REEARNED +REEARNING +REEARNS +REECHIER +REECHIEST +REECHO +REECHOED +REECHOES +REECHOING +REECHY +REED +REEDBIRD +REEDBIRDS +REEDBUCK +REEDBUCKS +REEDED +REEDIER +REEDIEST +REEDIFIED +REEDIFIES +REEDIFY +REEDIFYING +REEDILY +REEDINESS +REEDINESSES +REEDING +REEDINGS +REEDIT +REEDITED +REEDITING +REEDITION +REEDITIONS +REEDITS +REEDLIKE +REEDLING +REEDLINGS +REEDMAN +REEDMEN +REEDS +REEDUCATE +REEDUCATED +REEDUCATES +REEDUCATING +REEDUCATION +REEDUCATIONS +REEDUCATIVE +REEDY +REEF +REEFABLE +REEFED +REEFER +REEFERS +REEFIER +REEFIEST +REEFING +REEFS +REEFY +REEJECT +REEJECTED +REEJECTING +REEJECTS +REEK +REEKED +REEKER +REEKERS +REEKIER +REEKIEST +REEKING +REEKS +REEKY +REEL +REELABLE +REELECT +REELECTED +REELECTING +REELECTION +REELECTIONS +REELECTS +REELED +REELER +REELERS +REELEVATE +REELEVATED +REELEVATES +REELEVATING +REELIGIBILITIES +REELIGIBILITY +REELIGIBLE +REELING +REELINGS +REELS +REEMBARK +REEMBARKED +REEMBARKING +REEMBARKS +REEMBODIED +REEMBODIES +REEMBODY +REEMBODYING +REEMBRACE +REEMBRACED +REEMBRACES +REEMBRACING +REEMBROIDER +REEMBROIDERED +REEMBROIDERING +REEMBROIDERS +REEMERGE +REEMERGED +REEMERGENCE +REEMERGENCES +REEMERGES +REEMERGING +REEMISSION +REEMISSIONS +REEMIT +REEMITS +REEMITTED +REEMITTING +REEMPHASES +REEMPHASIS +REEMPHASIZE +REEMPHASIZED +REEMPHASIZES +REEMPHASIZING +REEMPLOY +REEMPLOYED +REEMPLOYING +REEMPLOYMENT +REEMPLOYMENTS +REEMPLOYS +REENACT +REENACTED +REENACTING +REENACTMENT +REENACTMENTS +REENACTOR +REENACTORS +REENACTS +REENCOUNTER +REENCOUNTERED +REENCOUNTERING +REENCOUNTERS +REENDOW +REENDOWED +REENDOWING +REENDOWS +REENERGIZE +REENERGIZED +REENERGIZES +REENERGIZING +REENFORCE +REENFORCED +REENFORCES +REENFORCING +REENGAGE +REENGAGED +REENGAGEMENT +REENGAGEMENTS +REENGAGES +REENGAGING +REENGINEER +REENGINEERED +REENGINEERING +REENGINEERS +REENGRAVE +REENGRAVED +REENGRAVES +REENGRAVING +REENJOY +REENJOYED +REENJOYING +REENJOYS +REENLARGE +REENLARGED +REENLARGES +REENLARGING +REENLIST +REENLISTED +REENLISTING +REENLISTMENT +REENLISTMENTS +REENLISTS +REENROLL +REENROLLED +REENROLLING +REENROLLS +REENSLAVE +REENSLAVED +REENSLAVES +REENSLAVING +REENTER +REENTERED +REENTERING +REENTERS +REENTHRONE +REENTHRONED +REENTHRONES +REENTHRONING +REENTRANCE +REENTRANCES +REENTRANT +REENTRANTS +REENTRIES +REENTRY +REEQUIP +REEQUIPMENT +REEQUIPMENTS +REEQUIPPED +REEQUIPPING +REEQUIPS +REERECT +REERECTED +REERECTING +REERECTS +REES +REESCALATE +REESCALATED +REESCALATES +REESCALATING +REESCALATION +REESCALATIONS +REEST +REESTABLISH +REESTABLISHED +REESTABLISHES +REESTABLISHING +REESTABLISHMENT +REESTED +REESTIMATE +REESTIMATED +REESTIMATES +REESTIMATING +REESTING +REESTS +REEVALUATE +REEVALUATED +REEVALUATES +REEVALUATING +REEVALUATION +REEVALUATIONS +REEVE +REEVED +REEVES +REEVING +REEVOKE +REEVOKED +REEVOKES +REEVOKING +REEXAMINATION +REEXAMINATIONS +REEXAMINE +REEXAMINED +REEXAMINES +REEXAMINING +REEXECUTE +REEXECUTED +REEXECUTES +REEXECUTING +REEXHIBIT +REEXHIBITED +REEXHIBITING +REEXHIBITS +REEXPEL +REEXPELLED +REEXPELLING +REEXPELS +REEXPERIENCE +REEXPERIENCED +REEXPERIENCES +REEXPERIENCING +REEXPLAIN +REEXPLAINED +REEXPLAINING +REEXPLAINS +REEXPLORE +REEXPLORED +REEXPLORES +REEXPLORING +REEXPORT +REEXPORTATION +REEXPORTATIONS +REEXPORTED +REEXPORTING +REEXPORTS +REEXPOSE +REEXPOSED +REEXPOSES +REEXPOSING +REEXPOSURE +REEXPOSURES +REEXPRESS +REEXPRESSED +REEXPRESSES +REEXPRESSING +REF +REFACE +REFACED +REFACES +REFACING +REFALL +REFALLEN +REFALLING +REFALLS +REFASHION +REFASHIONED +REFASHIONING +REFASHIONS +REFASTEN +REFASTENED +REFASTENING +REFASTENS +REFECT +REFECTED +REFECTING +REFECTION +REFECTIONS +REFECTIVE +REFECTORIES +REFECTORY +REFECTS +REFED +REFEED +REFEEDING +REFEEDS +REFEEL +REFEELING +REFEELS +REFEL +REFELL +REFELLED +REFELLING +REFELS +REFELT +REFENCE +REFENCED +REFENCES +REFENCING +REFER +REFERABLE +REFEREE +REFEREED +REFEREEING +REFEREES +REFERENCE +REFERENCED +REFERENCES +REFERENCING +REFERENDA +REFERENDUM +REFERENDUMS +REFERENT +REFERENTIAL +REFERENTIALITY +REFERENTIALLY +REFERENTS +REFERRAL +REFERRALS +REFERRED +REFERRER +REFERRERS +REFERRING +REFERS +REFFED +REFFING +REFIGHT +REFIGHTING +REFIGHTS +REFIGURE +REFIGURED +REFIGURES +REFIGURING +REFILE +REFILED +REFILES +REFILING +REFILL +REFILLABLE +REFILLED +REFILLING +REFILLS +REFILM +REFILMED +REFILMING +REFILMS +REFILTER +REFILTERED +REFILTERING +REFILTERS +REFINABLE +REFINANCE +REFINANCED +REFINANCES +REFINANCING +REFIND +REFINDING +REFINDS +REFINE +REFINED +REFINEMENT +REFINEMENTS +REFINER +REFINERIES +REFINERS +REFINERY +REFINES +REFINING +REFINISH +REFINISHED +REFINISHER +REFINISHERS +REFINISHES +REFINISHING +REFIRE +REFIRED +REFIRES +REFIRING +REFIT +REFITS +REFITTED +REFITTING +REFIX +REFIXED +REFIXES +REFIXING +REFLAG +REFLAGGED +REFLAGGING +REFLAGS +REFLATE +REFLATED +REFLATES +REFLATING +REFLATION +REFLATIONARY +REFLATIONS +REFLECT +REFLECTANCE +REFLECTANCES +REFLECTED +REFLECTING +REFLECTION +REFLECTIONAL +REFLECTIONS +REFLECTIVE +REFLECTIVELY +REFLECTIVENESS +REFLECTIVITIES +REFLECTIVITY +REFLECTOMETER +REFLECTOMETERS +REFLECTOMETRIES +REFLECTOMETRY +REFLECTOR +REFLECTORIZE +REFLECTORIZED +REFLECTORIZES +REFLECTORIZING +REFLECTORS +REFLECTS +REFLET +REFLETS +REFLEW +REFLEX +REFLEXED +REFLEXES +REFLEXING +REFLEXION +REFLEXIONS +REFLEXIVE +REFLEXIVELY +REFLEXIVENESS +REFLEXIVENESSES +REFLEXIVES +REFLEXIVITIES +REFLEXIVITY +REFLEXLY +REFLEXOLOGIES +REFLEXOLOGY +REFLIES +REFLOAT +REFLOATED +REFLOATING +REFLOATS +REFLOOD +REFLOODED +REFLOODING +REFLOODS +REFLOW +REFLOWED +REFLOWER +REFLOWERED +REFLOWERING +REFLOWERS +REFLOWING +REFLOWN +REFLOWS +REFLUENCE +REFLUENCES +REFLUENT +REFLUX +REFLUXED +REFLUXES +REFLUXING +REFLY +REFLYING +REFOCUS +REFOCUSED +REFOCUSES +REFOCUSING +REFOCUSSED +REFOCUSSES +REFOCUSSING +REFOLD +REFOLDED +REFOLDING +REFOLDS +REFOREST +REFORESTATION +REFORESTATIONS +REFORESTED +REFORESTING +REFORESTS +REFORGE +REFORGED +REFORGES +REFORGING +REFORM +REFORMABILITIES +REFORMABILITY +REFORMABLE +REFORMAT +REFORMATE +REFORMATES +REFORMATION +REFORMATIONAL +REFORMATIONS +REFORMATIVE +REFORMATORIES +REFORMATORY +REFORMATS +REFORMATTED +REFORMATTING +REFORMED +REFORMER +REFORMERS +REFORMING +REFORMISM +REFORMISMS +REFORMIST +REFORMISTS +REFORMS +REFORMULATE +REFORMULATED +REFORMULATES +REFORMULATING +REFORMULATION +REFORMULATIONS +REFORTIFICATION +REFORTIFIED +REFORTIFIES +REFORTIFY +REFORTIFYING +REFOUGHT +REFOUND +REFOUNDATION +REFOUNDATIONS +REFOUNDED +REFOUNDING +REFOUNDS +REFRACT +REFRACTED +REFRACTILE +REFRACTING +REFRACTION +REFRACTIONS +REFRACTIVE +REFRACTIVELY +REFRACTIVENESS +REFRACTIVITIES +REFRACTIVITY +REFRACTOMETER +REFRACTOMETERS +REFRACTOMETRIC +REFRACTOMETRIES +REFRACTOMETRY +REFRACTOR +REFRACTORIES +REFRACTORILY +REFRACTORINESS +REFRACTORS +REFRACTORY +REFRACTS +REFRAIN +REFRAINED +REFRAINER +REFRAINERS +REFRAINING +REFRAINMENT +REFRAINMENTS +REFRAINS +REFRAME +REFRAMED +REFRAMES +REFRAMING +REFRANGIBILITY +REFRANGIBLE +REFRANGIBLENESS +REFREEZE +REFREEZES +REFREEZING +REFRESH +REFRESHED +REFRESHEN +REFRESHENED +REFRESHENING +REFRESHENS +REFRESHER +REFRESHERS +REFRESHES +REFRESHING +REFRESHINGLY +REFRESHMENT +REFRESHMENTS +REFRIED +REFRIES +REFRIGERANT +REFRIGERANTS +REFRIGERATE +REFRIGERATED +REFRIGERATES +REFRIGERATING +REFRIGERATION +REFRIGERATIONS +REFRIGERATOR +REFRIGERATORS +REFRONT +REFRONTED +REFRONTING +REFRONTS +REFROZE +REFROZEN +REFRY +REFRYING +REFS +REFT +REFUEL +REFUELED +REFUELING +REFUELLED +REFUELLING +REFUELS +REFUGE +REFUGED +REFUGEE +REFUGEEISM +REFUGEEISMS +REFUGEES +REFUGES +REFUGIA +REFUGING +REFUGIUM +REFULGENCE +REFULGENCES +REFULGENT +REFUND +REFUNDABILITIES +REFUNDABILITY +REFUNDABLE +REFUNDED +REFUNDER +REFUNDERS +REFUNDING +REFUNDS +REFURBISH +REFURBISHED +REFURBISHER +REFURBISHERS +REFURBISHES +REFURBISHING +REFURBISHMENT +REFURBISHMENTS +REFURNISH +REFURNISHED +REFURNISHES +REFURNISHING +REFUSABLE +REFUSAL +REFUSALS +REFUSE +REFUSED +REFUSENIK +REFUSENIKS +REFUSER +REFUSERS +REFUSES +REFUSING +REFUSNIK +REFUSNIKS +REFUTABLE +REFUTABLY +REFUTAL +REFUTALS +REFUTATION +REFUTATIONS +REFUTE +REFUTED +REFUTER +REFUTERS +REFUTES +REFUTING +REG +REGAIN +REGAINED +REGAINER +REGAINERS +REGAINING +REGAINS +REGAL +REGALE +REGALED +REGALER +REGALERS +REGALES +REGALIA +REGALING +REGALITIES +REGALITY +REGALLY +REGALNESS +REGALNESSES +REGARD +REGARDANT +REGARDED +REGARDFUL +REGARDFULLY +REGARDFULNESS +REGARDFULNESSES +REGARDING +REGARDLESS +REGARDLESSLY +REGARDLESSNESS +REGARDS +REGATHER +REGATHERED +REGATHERING +REGATHERS +REGATTA +REGATTAS +REGAUGE +REGAUGED +REGAUGES +REGAUGING +REGAVE +REGEAR +REGEARED +REGEARING +REGEARS +REGELATE +REGELATED +REGELATES +REGELATING +REGENCIES +REGENCY +REGENERABLE +REGENERACIES +REGENERACY +REGENERATE +REGENERATED +REGENERATELY +REGENERATENESS +REGENERATES +REGENERATING +REGENERATION +REGENERATIONS +REGENERATIVE +REGENERATOR +REGENERATORS +REGENT +REGENTAL +REGENTS +REGES +REGGAE +REGGAES +REGICIDAL +REGICIDE +REGICIDES +REGILD +REGILDED +REGILDING +REGILDS +REGILT +REGIME +REGIMEN +REGIMENS +REGIMENT +REGIMENTAL +REGIMENTALS +REGIMENTATION +REGIMENTATIONS +REGIMENTED +REGIMENTING +REGIMENTS +REGIMES +REGINA +REGINAE +REGINAL +REGINAS +REGION +REGIONAL +REGIONALISM +REGIONALISMS +REGIONALIST +REGIONALISTIC +REGIONALISTS +REGIONALIZATION +REGIONALIZE +REGIONALIZED +REGIONALIZES +REGIONALIZING +REGIONALLY +REGIONALS +REGIONS +REGISSEUR +REGISSEURS +REGISTER +REGISTERABLE +REGISTERED +REGISTERING +REGISTERS +REGISTRABLE +REGISTRANT +REGISTRANTS +REGISTRAR +REGISTRARS +REGISTRATION +REGISTRATIONS +REGISTRIES +REGISTRY +REGIUS +REGIVE +REGIVEN +REGIVES +REGIVING +REGLAZE +REGLAZED +REGLAZES +REGLAZING +REGLET +REGLETS +REGLORIFIED +REGLORIFIES +REGLORIFY +REGLORIFYING +REGLOSS +REGLOSSED +REGLOSSES +REGLOSSING +REGLOW +REGLOWED +REGLOWING +REGLOWS +REGLUE +REGLUED +REGLUES +REGLUING +REGMA +REGMATA +REGNA +REGNAL +REGNANCIES +REGNANCY +REGNANT +REGNUM +REGOLITH +REGOLITHS +REGORGE +REGORGED +REGORGES +REGORGING +REGOSOL +REGOSOLS +REGRADE +REGRADED +REGRADES +REGRADING +REGRAFT +REGRAFTED +REGRAFTING +REGRAFTS +REGRANT +REGRANTED +REGRANTING +REGRANTS +REGRATE +REGRATED +REGRATES +REGRATING +REGREEN +REGREENED +REGREENING +REGREENS +REGREET +REGREETED +REGREETING +REGREETS +REGRESS +REGRESSED +REGRESSES +REGRESSING +REGRESSION +REGRESSIONS +REGRESSIVE +REGRESSIVELY +REGRESSIVENESS +REGRESSIVITIES +REGRESSIVITY +REGRESSOR +REGRESSORS +REGRET +REGRETFUL +REGRETFULLY +REGRETFULNESS +REGRETFULNESSES +REGRETS +REGRETTABLE +REGRETTABLY +REGRETTED +REGRETTER +REGRETTERS +REGRETTING +REGREW +REGRIND +REGRINDING +REGRINDS +REGROOM +REGROOMED +REGROOMING +REGROOMS +REGROOVE +REGROOVED +REGROOVES +REGROOVING +REGROUND +REGROUP +REGROUPED +REGROUPING +REGROUPS +REGROW +REGROWING +REGROWN +REGROWS +REGROWTH +REGROWTHS +REGS +REGULABLE +REGULAR +REGULARITIES +REGULARITY +REGULARIZATION +REGULARIZATIONS +REGULARIZE +REGULARIZED +REGULARIZES +REGULARIZING +REGULARLY +REGULARS +REGULATE +REGULATED +REGULATES +REGULATING +REGULATION +REGULATIONS +REGULATIVE +REGULATOR +REGULATORS +REGULATORY +REGULI +REGULINE +REGULUS +REGULUSES +REGURGITATE +REGURGITATED +REGURGITATES +REGURGITATING +REGURGITATION +REGURGITATIONS +REHAB +REHABBED +REHABBER +REHABBERS +REHABBING +REHABILITANT +REHABILITANTS +REHABILITATE +REHABILITATED +REHABILITATES +REHABILITATING +REHABILITATION +REHABILITATIONS +REHABILITATIVE +REHABILITATOR +REHABILITATORS +REHABS +REHAMMER +REHAMMERED +REHAMMERING +REHAMMERS +REHANDLE +REHANDLED +REHANDLES +REHANDLING +REHANG +REHANGED +REHANGING +REHANGS +REHARDEN +REHARDENED +REHARDENING +REHARDENS +REHASH +REHASHED +REHASHES +REHASHING +REHEAR +REHEARD +REHEARING +REHEARINGS +REHEARS +REHEARSAL +REHEARSALS +REHEARSE +REHEARSED +REHEARSER +REHEARSERS +REHEARSES +REHEARSING +REHEAT +REHEATED +REHEATER +REHEATERS +REHEATING +REHEATS +REHEEL +REHEELED +REHEELING +REHEELS +REHEM +REHEMMED +REHEMMING +REHEMS +REHINGE +REHINGED +REHINGES +REHINGING +REHIRE +REHIRED +REHIRES +REHIRING +REHOBOAM +REHOBOAMS +REHOSPITALIZE +REHOSPITALIZED +REHOSPITALIZES +REHOSPITALIZING +REHOUSE +REHOUSED +REHOUSES +REHOUSING +REHUMANIZE +REHUMANIZED +REHUMANIZES +REHUMANIZING +REHUNG +REHYDRATABLE +REHYDRATE +REHYDRATED +REHYDRATES +REHYDRATING +REHYDRATION +REHYDRATIONS +REHYPNOTIZE +REHYPNOTIZED +REHYPNOTIZES +REHYPNOTIZING +REI +REICHSMARK +REICHSMARKS +REIDENTIFIED +REIDENTIFIES +REIDENTIFY +REIDENTIFYING +REIF +REIFICATION +REIFICATIONS +REIFIED +REIFIER +REIFIERS +REIFIES +REIFS +REIFY +REIFYING +REIGN +REIGNED +REIGNING +REIGNITE +REIGNITED +REIGNITES +REIGNITING +REIGNITION +REIGNITIONS +REIGNS +REIMAGE +REIMAGED +REIMAGES +REIMAGINE +REIMAGINED +REIMAGINES +REIMAGING +REIMAGINING +REIMBURSABLE +REIMBURSE +REIMBURSED +REIMBURSEMENT +REIMBURSEMENTS +REIMBURSES +REIMBURSING +REIMMERSE +REIMMERSED +REIMMERSES +REIMMERSING +REIMPLANT +REIMPLANTATION +REIMPLANTATIONS +REIMPLANTED +REIMPLANTING +REIMPLANTS +REIMPORT +REIMPORTATION +REIMPORTATIONS +REIMPORTED +REIMPORTING +REIMPORTS +REIMPOSE +REIMPOSED +REIMPOSES +REIMPOSING +REIMPOSITION +REIMPOSITIONS +REIMPRESSION +REIMPRESSIONS +REIN +REINCARNATE +REINCARNATED +REINCARNATES +REINCARNATING +REINCARNATION +REINCARNATIONS +REINCITE +REINCITED +REINCITES +REINCITING +REINCORPORATE +REINCORPORATED +REINCORPORATES +REINCORPORATING +REINCORPORATION +REINCUR +REINCURRED +REINCURRING +REINCURS +REINDEER +REINDEERS +REINDEX +REINDEXED +REINDEXES +REINDEXING +REINDICT +REINDICTED +REINDICTING +REINDICTMENT +REINDICTMENTS +REINDICTS +REINDUCE +REINDUCED +REINDUCES +REINDUCING +REINDUCT +REINDUCTED +REINDUCTING +REINDUCTS +REINDUSTRIALIZE +REINED +REINFECT +REINFECTED +REINFECTING +REINFECTION +REINFECTIONS +REINFECTS +REINFESTATION +REINFESTATIONS +REINFLAME +REINFLAMED +REINFLAMES +REINFLAMING +REINFLATE +REINFLATED +REINFLATES +REINFLATING +REINFLATION +REINFLATIONS +REINFORCE +REINFORCEABLE +REINFORCED +REINFORCEMENT +REINFORCEMENTS +REINFORCER +REINFORCERS +REINFORCES +REINFORCING +REINFORM +REINFORMED +REINFORMING +REINFORMS +REINFUSE +REINFUSED +REINFUSES +REINFUSING +REINHABIT +REINHABITED +REINHABITING +REINHABITS +REINING +REINITIATE +REINITIATED +REINITIATES +REINITIATING +REINJECT +REINJECTED +REINJECTING +REINJECTION +REINJECTIONS +REINJECTS +REINJURE +REINJURED +REINJURES +REINJURIES +REINJURING +REINJURY +REINK +REINKED +REINKING +REINKS +REINLESS +REINNERVATE +REINNERVATED +REINNERVATES +REINNERVATING +REINNERVATION +REINNERVATIONS +REINOCULATE +REINOCULATED +REINOCULATES +REINOCULATING +REINOCULATION +REINOCULATIONS +REINS +REINSERT +REINSERTED +REINSERTING +REINSERTION +REINSERTIONS +REINSERTS +REINSMAN +REINSMEN +REINSPECT +REINSPECTED +REINSPECTING +REINSPECTION +REINSPECTIONS +REINSPECTS +REINSPIRE +REINSPIRED +REINSPIRES +REINSPIRING +REINSTALL +REINSTALLATION +REINSTALLATIONS +REINSTALLED +REINSTALLING +REINSTALLS +REINSTATE +REINSTATED +REINSTATEMENT +REINSTATEMENTS +REINSTATES +REINSTATING +REINSTITUTE +REINSTITUTED +REINSTITUTES +REINSTITUTING +REINSURANCE +REINSURANCES +REINSURE +REINSURED +REINSURER +REINSURERS +REINSURES +REINSURING +REINTEGRATE +REINTEGRATED +REINTEGRATES +REINTEGRATING +REINTEGRATION +REINTEGRATIONS +REINTEGRATIVE +REINTER +REINTERPRET +REINTERPRETED +REINTERPRETING +REINTERPRETS +REINTERRED +REINTERRING +REINTERS +REINTERVIEW +REINTERVIEWED +REINTERVIEWING +REINTERVIEWS +REINTRODUCE +REINTRODUCED +REINTRODUCES +REINTRODUCING +REINTRODUCTION +REINTRODUCTIONS +REINVADE +REINVADED +REINVADES +REINVADING +REINVASION +REINVASIONS +REINVENT +REINVENTED +REINVENTING +REINVENTION +REINVENTIONS +REINVENTS +REINVEST +REINVESTED +REINVESTIGATE +REINVESTIGATED +REINVESTIGATES +REINVESTIGATING +REINVESTIGATION +REINVESTING +REINVESTMENT +REINVESTMENTS +REINVESTS +REINVIGORATE +REINVIGORATED +REINVIGORATES +REINVIGORATING +REINVIGORATION +REINVIGORATIONS +REINVIGORATOR +REINVIGORATORS +REINVITE +REINVITED +REINVITES +REINVITING +REINVOKE +REINVOKED +REINVOKES +REINVOKING +REINVOLVE +REINVOLVED +REINVOLVES +REINVOLVING +REIS +REISSUE +REISSUED +REISSUER +REISSUERS +REISSUES +REISSUING +REITBOK +REITBOKS +REITERATE +REITERATED +REITERATES +REITERATING +REITERATION +REITERATIONS +REITERATIVE +REITERATIVELY +REIVE +REIVED +REIVER +REIVERS +REIVES +REIVING +REJACKET +REJACKETED +REJACKETING +REJACKETS +REJECT +REJECTED +REJECTEE +REJECTEES +REJECTER +REJECTERS +REJECTING +REJECTINGLY +REJECTION +REJECTIONS +REJECTIVE +REJECTOR +REJECTORS +REJECTS +REJIG +REJIGGED +REJIGGER +REJIGGERED +REJIGGERING +REJIGGERS +REJIGGING +REJIGS +REJOICE +REJOICED +REJOICER +REJOICERS +REJOICES +REJOICING +REJOICINGLY +REJOICINGS +REJOIN +REJOINDER +REJOINDERS +REJOINED +REJOINING +REJOINS +REJUDGE +REJUDGED +REJUDGES +REJUDGING +REJUGGLE +REJUGGLED +REJUGGLES +REJUGGLING +REJUSTIFIED +REJUSTIFIES +REJUSTIFY +REJUSTIFYING +REJUVENATE +REJUVENATED +REJUVENATES +REJUVENATING +REJUVENATION +REJUVENATIONS +REJUVENATOR +REJUVENATORS +REJUVENESCENCE +REJUVENESCENCES +REJUVENESCENT +REKEY +REKEYBOARD +REKEYBOARDED +REKEYBOARDING +REKEYBOARDS +REKEYED +REKEYING +REKEYS +REKINDLE +REKINDLED +REKINDLES +REKINDLING +REKNIT +REKNITS +REKNITTED +REKNITTING +REKNOT +REKNOTS +REKNOTTED +REKNOTTING +RELABEL +RELABELED +RELABELING +RELABELLED +RELABELLING +RELABELS +RELACE +RELACED +RELACES +RELACING +RELACQUER +RELACQUERED +RELACQUERING +RELACQUERS +RELAID +RELAND +RELANDED +RELANDING +RELANDS +RELANDSCAPE +RELANDSCAPED +RELANDSCAPES +RELANDSCAPING +RELAPSE +RELAPSED +RELAPSER +RELAPSERS +RELAPSES +RELAPSING +RELATABLE +RELATE +RELATED +RELATEDLY +RELATEDNESS +RELATEDNESSES +RELATER +RELATERS +RELATES +RELATING +RELATION +RELATIONAL +RELATIONALLY +RELATIONS +RELATIONSHIP +RELATIONSHIPS +RELATIVE +RELATIVELY +RELATIVES +RELATIVISM +RELATIVISMS +RELATIVIST +RELATIVISTIC +RELATIVISTS +RELATIVITIES +RELATIVITY +RELATIVIZE +RELATIVIZED +RELATIVIZES +RELATIVIZING +RELATOR +RELATORS +RELAUNCH +RELAUNCHED +RELAUNCHES +RELAUNCHING +RELAUNDER +RELAUNDERED +RELAUNDERING +RELAUNDERS +RELAX +RELAXABLE +RELAXANT +RELAXANTS +RELAXATION +RELAXATIONS +RELAXED +RELAXEDLY +RELAXEDNESS +RELAXEDNESSES +RELAXER +RELAXERS +RELAXES +RELAXIN +RELAXING +RELAXINS +RELAY +RELAYED +RELAYING +RELAYS +RELEARN +RELEARNED +RELEARNING +RELEARNS +RELEARNT +RELEASABLE +RELEASE +RELEASED +RELEASER +RELEASERS +RELEASES +RELEASING +RELEGABLE +RELEGATE +RELEGATED +RELEGATES +RELEGATING +RELEGATION +RELEGATIONS +RELEND +RELENDING +RELENDS +RELENT +RELENTED +RELENTING +RELENTLESS +RELENTLESSLY +RELENTLESSNESS +RELENTS +RELET +RELETS +RELETTER +RELETTERED +RELETTERING +RELETTERS +RELETTING +RELEVANCE +RELEVANCES +RELEVANCIES +RELEVANCY +RELEVANT +RELEVANTLY +RELEVE +RELEVES +RELIABILITIES +RELIABILITY +RELIABLE +RELIABLENESS +RELIABLENESSES +RELIABLES +RELIABLY +RELIANCE +RELIANCES +RELIANT +RELIANTLY +RELIC +RELICENSE +RELICENSED +RELICENSES +RELICENSING +RELICENSURE +RELICENSURES +RELICS +RELICT +RELICTION +RELICTIONS +RELICTS +RELIED +RELIEF +RELIEFS +RELIER +RELIERS +RELIES +RELIEVABLE +RELIEVE +RELIEVED +RELIEVEDLY +RELIEVER +RELIEVERS +RELIEVES +RELIEVING +RELIEVO +RELIEVOS +RELIGHT +RELIGHTED +RELIGHTING +RELIGHTS +RELIGION +RELIGIONIST +RELIGIONISTS +RELIGIONLESS +RELIGIONS +RELIGIOSE +RELIGIOSITIES +RELIGIOSITY +RELIGIOUS +RELIGIOUSLY +RELIGIOUSNESS +RELIGIOUSNESSES +RELINE +RELINED +RELINES +RELINING +RELINK +RELINKED +RELINKING +RELINKS +RELINQUISH +RELINQUISHED +RELINQUISHES +RELINQUISHING +RELINQUISHMENT +RELINQUISHMENTS +RELIQUARIES +RELIQUARY +RELIQUE +RELIQUEFIED +RELIQUEFIES +RELIQUEFY +RELIQUEFYING +RELIQUES +RELIQUIAE +RELISH +RELISHABLE +RELISHED +RELISHES +RELISHING +RELIST +RELISTED +RELISTING +RELISTS +RELIT +RELIVABLE +RELIVE +RELIVED +RELIVES +RELIVING +RELLENO +RELLENOS +RELOAD +RELOADED +RELOADER +RELOADERS +RELOADING +RELOADS +RELOAN +RELOANED +RELOANING +RELOANS +RELOCATABLE +RELOCATE +RELOCATED +RELOCATEE +RELOCATEES +RELOCATES +RELOCATING +RELOCATION +RELOCATIONS +RELOCK +RELOCKED +RELOCKING +RELOCKS +RELOOK +RELOOKED +RELOOKING +RELOOKS +RELUBRICATE +RELUBRICATED +RELUBRICATES +RELUBRICATING +RELUBRICATION +RELUBRICATIONS +RELUCENT +RELUCT +RELUCTANCE +RELUCTANCES +RELUCTANCIES +RELUCTANCY +RELUCTANT +RELUCTANTLY +RELUCTATE +RELUCTATED +RELUCTATES +RELUCTATING +RELUCTATION +RELUCTATIONS +RELUCTED +RELUCTING +RELUCTS +RELUME +RELUMED +RELUMES +RELUMINE +RELUMINED +RELUMINES +RELUMING +RELUMINING +RELY +RELYING +REM +REMADE +REMAIL +REMAILED +REMAILING +REMAILS +REMAIN +REMAINDER +REMAINDERED +REMAINDERING +REMAINDERS +REMAINED +REMAINING +REMAINS +REMAKE +REMAKER +REMAKERS +REMAKES +REMAKING +REMAN +REMAND +REMANDED +REMANDING +REMANDS +REMANENCE +REMANENCES +REMANENT +REMANNED +REMANNING +REMANS +REMANUFACTURE +REMANUFACTURED +REMANUFACTURER +REMANUFACTURERS +REMANUFACTURES +REMANUFACTURING +REMAP +REMAPPED +REMAPPING +REMAPS +REMARK +REMARKABLE +REMARKABLENESS +REMARKABLY +REMARKED +REMARKER +REMARKERS +REMARKET +REMARKETED +REMARKETING +REMARKETS +REMARKING +REMARKS +REMARQUE +REMARQUES +REMARRIAGE +REMARRIAGES +REMARRIED +REMARRIES +REMARRY +REMARRYING +REMASTER +REMASTERED +REMASTERING +REMASTERS +REMATCH +REMATCHED +REMATCHES +REMATCHING +REMATE +REMATED +REMATERIALIZE +REMATERIALIZED +REMATERIALIZES +REMATERIALIZING +REMATES +REMATING +REMEASURE +REMEASURED +REMEASUREMENT +REMEASUREMENTS +REMEASURES +REMEASURING +REMEDIABILITIES +REMEDIABILITY +REMEDIABLE +REMEDIAL +REMEDIALLY +REMEDIATE +REMEDIATED +REMEDIATES +REMEDIATING +REMEDIATION +REMEDIATIONS +REMEDIED +REMEDIES +REMEDILESS +REMEDY +REMEDYING +REMEET +REMEETING +REMEETS +REMELT +REMELTED +REMELTING +REMELTS +REMEMBER +REMEMBERABILITY +REMEMBERABLE +REMEMBERED +REMEMBERER +REMEMBERERS +REMEMBERING +REMEMBERS +REMEMBRANCE +REMEMBRANCER +REMEMBRANCERS +REMEMBRANCES +REMEND +REMENDED +REMENDING +REMENDS +REMERGE +REMERGED +REMERGES +REMERGING +REMET +REMEX +REMIGES +REMIGIAL +REMIGRATE +REMIGRATED +REMIGRATES +REMIGRATING +REMIGRATION +REMIGRATIONS +REMILITARIZE +REMILITARIZED +REMILITARIZES +REMILITARIZING +REMIND +REMINDED +REMINDER +REMINDERS +REMINDFUL +REMINDING +REMINDS +REMINISCE +REMINISCED +REMINISCENCE +REMINISCENCES +REMINISCENT +REMINISCENTIAL +REMINISCENTLY +REMINISCER +REMINISCERS +REMINISCES +REMINISCING +REMINT +REMINTED +REMINTING +REMINTS +REMISE +REMISED +REMISES +REMISING +REMISS +REMISSIBLE +REMISSIBLY +REMISSION +REMISSIONS +REMISSIVE +REMISSLY +REMISSNESS +REMISSNESSES +REMIT +REMITMENT +REMITMENTS +REMITS +REMITTABLE +REMITTAL +REMITTALS +REMITTANCE +REMITTANCES +REMITTED +REMITTENT +REMITTER +REMITTERS +REMITTING +REMITTOR +REMITTORS +REMIX +REMIXED +REMIXES +REMIXING +REMIXT +REMIXTURE +REMIXTURES +REMNANT +REMNANTAL +REMNANTS +REMOBILIZATION +REMOBILIZATIONS +REMOBILIZE +REMOBILIZED +REMOBILIZES +REMOBILIZING +REMODEL +REMODELED +REMODELER +REMODELERS +REMODELING +REMODELLED +REMODELLING +REMODELS +REMODIFIED +REMODIFIES +REMODIFY +REMODIFYING +REMOISTEN +REMOISTENED +REMOISTENING +REMOISTENS +REMOLADE +REMOLADES +REMOLD +REMOLDED +REMOLDING +REMOLDS +REMONETIZATION +REMONETIZATIONS +REMONETIZE +REMONETIZED +REMONETIZES +REMONETIZING +REMONSTRANCE +REMONSTRANCES +REMONSTRANT +REMONSTRANTLY +REMONSTRANTS +REMONSTRATE +REMONSTRATED +REMONSTRATES +REMONSTRATING +REMONSTRATION +REMONSTRATIONS +REMONSTRATIVE +REMONSTRATIVELY +REMONSTRATOR +REMONSTRATORS +REMONTANT +REMONTANTS +REMORA +REMORAS +REMORID +REMORSE +REMORSEFUL +REMORSEFULLY +REMORSEFULNESS +REMORSELESS +REMORSELESSLY +REMORSELESSNESS +REMORSES +REMOTE +REMOTELY +REMOTENESS +REMOTENESSES +REMOTER +REMOTES +REMOTEST +REMOTION +REMOTIONS +REMOTIVATE +REMOTIVATED +REMOTIVATES +REMOTIVATING +REMOTIVATION +REMOTIVATIONS +REMOULADE +REMOULADES +REMOUNT +REMOUNTED +REMOUNTING +REMOUNTS +REMOVABILITIES +REMOVABILITY +REMOVABLE +REMOVABLENESS +REMOVABLENESSES +REMOVABLY +REMOVAL +REMOVALS +REMOVE +REMOVEABLE +REMOVED +REMOVEDLY +REMOVER +REMOVERS +REMOVES +REMOVING +REMS +REMUDA +REMUDAS +REMUNERATE +REMUNERATED +REMUNERATES +REMUNERATING +REMUNERATION +REMUNERATIONS +REMUNERATIVE +REMUNERATIVELY +REMUNERATOR +REMUNERATORS +REMUNERATORY +REMYTHOLOGIZE +REMYTHOLOGIZED +REMYTHOLOGIZES +REMYTHOLOGIZING +RENAIL +RENAILED +RENAILING +RENAILS +RENAISSANCE +RENAISSANCES +RENAL +RENAME +RENAMED +RENAMES +RENAMING +RENASCENCE +RENASCENCES +RENASCENT +RENATIONALIZE +RENATIONALIZED +RENATIONALIZES +RENATIONALIZING +RENATURATION +RENATURATIONS +RENATURE +RENATURED +RENATURES +RENATURING +RENCONTRE +RENCONTRES +RENCOUNTER +RENCOUNTERED +RENCOUNTERING +RENCOUNTERS +REND +RENDED +RENDER +RENDERABLE +RENDERED +RENDERER +RENDERERS +RENDERING +RENDERINGS +RENDERS +RENDEZVOUS +RENDEZVOUSED +RENDEZVOUSES +RENDEZVOUSING +RENDIBLE +RENDING +RENDITION +RENDITIONS +RENDS +RENDZINA +RENDZINAS +RENEGADE +RENEGADED +RENEGADES +RENEGADING +RENEGADO +RENEGADOES +RENEGADOS +RENEGE +RENEGED +RENEGER +RENEGERS +RENEGES +RENEGING +RENEGOTIABLE +RENEGOTIATE +RENEGOTIATED +RENEGOTIATES +RENEGOTIATING +RENEGOTIATION +RENEGOTIATIONS +RENEST +RENESTED +RENESTING +RENESTS +RENEW +RENEWABILITIES +RENEWABILITY +RENEWABLE +RENEWABLES +RENEWABLY +RENEWAL +RENEWALS +RENEWED +RENEWEDLY +RENEWER +RENEWERS +RENEWING +RENEWS +RENIFORM +RENIG +RENIGGED +RENIGGING +RENIGS +RENIN +RENINS +RENITENCE +RENITENCES +RENITENCIES +RENITENCY +RENITENT +RENMINBI +RENNASE +RENNASES +RENNET +RENNETS +RENNIN +RENNINS +RENOGRAM +RENOGRAMS +RENOGRAPHIC +RENOGRAPHIES +RENOGRAPHY +RENOMINATE +RENOMINATED +RENOMINATES +RENOMINATING +RENOMINATION +RENOMINATIONS +RENOTIFIED +RENOTIFIES +RENOTIFY +RENOTIFYING +RENOUNCE +RENOUNCED +RENOUNCEMENT +RENOUNCEMENTS +RENOUNCER +RENOUNCERS +RENOUNCES +RENOUNCING +RENOVASCULAR +RENOVATE +RENOVATED +RENOVATES +RENOVATING +RENOVATION +RENOVATIONS +RENOVATIVE +RENOVATOR +RENOVATORS +RENOWN +RENOWNED +RENOWNING +RENOWNS +RENT +RENTABILITIES +RENTABILITY +RENTABLE +RENTAL +RENTALS +RENTE +RENTED +RENTER +RENTERS +RENTES +RENTIER +RENTIERS +RENTING +RENTS +RENUMBER +RENUMBERED +RENUMBERING +RENUMBERS +RENUNCIATION +RENUNCIATIONS +RENUNCIATIVE +RENUNCIATORY +RENVOI +RENVOIS +REOBJECT +REOBJECTED +REOBJECTING +REOBJECTS +REOBSERVE +REOBSERVED +REOBSERVES +REOBSERVING +REOBTAIN +REOBTAINED +REOBTAINING +REOBTAINS +REOCCUPATION +REOCCUPATIONS +REOCCUPIED +REOCCUPIES +REOCCUPY +REOCCUPYING +REOCCUR +REOCCURRED +REOCCURRENCE +REOCCURRENCES +REOCCURRING +REOCCURS +REOFFER +REOFFERED +REOFFERING +REOFFERS +REOIL +REOILED +REOILING +REOILS +REOPEN +REOPENED +REOPENING +REOPENS +REOPERATE +REOPERATED +REOPERATES +REOPERATING +REOPERATION +REOPERATIONS +REOPPOSE +REOPPOSED +REOPPOSES +REOPPOSING +REORCHESTRATE +REORCHESTRATED +REORCHESTRATES +REORCHESTRATING +REORCHESTRATION +REORDAIN +REORDAINED +REORDAINING +REORDAINS +REORDER +REORDERED +REORDERING +REORDERS +REORGANIZATION +REORGANIZATIONS +REORGANIZE +REORGANIZED +REORGANIZER +REORGANIZERS +REORGANIZES +REORGANIZING +REORIENT +REORIENTATE +REORIENTATED +REORIENTATES +REORIENTATING +REORIENTATION +REORIENTATIONS +REORIENTED +REORIENTING +REORIENTS +REOUTFIT +REOUTFITS +REOUTFITTED +REOUTFITTING +REOVIRUS +REOVIRUSES +REOXIDATION +REOXIDATIONS +REOXIDIZE +REOXIDIZED +REOXIDIZES +REOXIDIZING +REP +REPACIFIED +REPACIFIES +REPACIFY +REPACIFYING +REPACK +REPACKAGE +REPACKAGED +REPACKAGER +REPACKAGERS +REPACKAGES +REPACKAGING +REPACKED +REPACKING +REPACKS +REPAID +REPAINT +REPAINTED +REPAINTING +REPAINTS +REPAIR +REPAIRABILITIES +REPAIRABILITY +REPAIRABLE +REPAIRED +REPAIRER +REPAIRERS +REPAIRING +REPAIRMAN +REPAIRMEN +REPAIRS +REPAND +REPANDLY +REPANEL +REPANELED +REPANELING +REPANELLED +REPANELLING +REPANELS +REPAPER +REPAPERED +REPAPERING +REPAPERS +REPARABLE +REPARABLY +REPARATION +REPARATIONS +REPARATIVE +REPARK +REPARKED +REPARKING +REPARKS +REPARTEE +REPARTEES +REPARTITION +REPARTITIONS +REPASS +REPASSAGE +REPASSAGES +REPASSED +REPASSES +REPASSING +REPAST +REPASTED +REPASTING +REPASTS +REPATCH +REPATCHED +REPATCHES +REPATCHING +REPATRIATE +REPATRIATED +REPATRIATES +REPATRIATING +REPATRIATION +REPATRIATIONS +REPATTERN +REPATTERNED +REPATTERNING +REPATTERNS +REPAVE +REPAVED +REPAVES +REPAVING +REPAY +REPAYABLE +REPAYING +REPAYMENT +REPAYMENTS +REPAYS +REPEAL +REPEALABLE +REPEALED +REPEALER +REPEALERS +REPEALING +REPEALS +REPEAT +REPEATABILITIES +REPEATABILITY +REPEATABLE +REPEATED +REPEATEDLY +REPEATER +REPEATERS +REPEATING +REPEATS +REPECHAGE +REPECHAGES +REPEG +REPEGGED +REPEGGING +REPEGS +REPEL +REPELLANT +REPELLANTS +REPELLED +REPELLENCIES +REPELLENCY +REPELLENT +REPELLENTLY +REPELLENTS +REPELLER +REPELLERS +REPELLING +REPELS +REPENT +REPENTANCE +REPENTANCES +REPENTANT +REPENTANTLY +REPENTED +REPENTER +REPENTERS +REPENTING +REPENTS +REPEOPLE +REPEOPLED +REPEOPLES +REPEOPLING +REPERCUSSION +REPERCUSSIONS +REPERCUSSIVE +REPERK +REPERKED +REPERKING +REPERKS +REPERTOIRE +REPERTOIRES +REPERTORIES +REPERTORY +REPETEND +REPETENDS +REPETITION +REPETITIONAL +REPETITIONS +REPETITIOUS +REPETITIOUSLY +REPETITIOUSNESS +REPETITIVE +REPETITIVELY +REPETITIVENESS +REPHOTOGRAPH +REPHOTOGRAPHED +REPHOTOGRAPHING +REPHOTOGRAPHS +REPHRASE +REPHRASED +REPHRASES +REPHRASING +REPIGMENT +REPIGMENTED +REPIGMENTING +REPIGMENTS +REPIN +REPINE +REPINED +REPINER +REPINERS +REPINES +REPINING +REPINNED +REPINNING +REPINS +REPLACE +REPLACEABLE +REPLACED +REPLACEMENT +REPLACEMENTS +REPLACER +REPLACERS +REPLACES +REPLACING +REPLAN +REPLANNED +REPLANNING +REPLANS +REPLANT +REPLANTATION +REPLANTATIONS +REPLANTED +REPLANTING +REPLANTS +REPLASTER +REPLASTERED +REPLASTERING +REPLASTERS +REPLATE +REPLATED +REPLATES +REPLATING +REPLAY +REPLAYED +REPLAYING +REPLAYS +REPLEAD +REPLEADED +REPLEADER +REPLEADERS +REPLEADING +REPLEADS +REPLED +REPLEDGE +REPLEDGED +REPLEDGES +REPLEDGING +REPLENISH +REPLENISHABLE +REPLENISHED +REPLENISHER +REPLENISHERS +REPLENISHES +REPLENISHING +REPLENISHMENT +REPLENISHMENTS +REPLETE +REPLETELY +REPLETENESS +REPLETENESSES +REPLETES +REPLETION +REPLETIONS +REPLEVIABLE +REPLEVIED +REPLEVIES +REPLEVIN +REPLEVINED +REPLEVINING +REPLEVINS +REPLEVY +REPLEVYING +REPLICA +REPLICABILITIES +REPLICABILITY +REPLICABLE +REPLICAS +REPLICASE +REPLICASES +REPLICATE +REPLICATED +REPLICATES +REPLICATING +REPLICATION +REPLICATIONS +REPLICATIVE +REPLICON +REPLICONS +REPLIED +REPLIER +REPLIERS +REPLIES +REPLOT +REPLOTS +REPLOTTED +REPLOTTING +REPLOW +REPLOWED +REPLOWING +REPLOWS +REPLUMB +REPLUMBED +REPLUMBING +REPLUMBS +REPLUNGE +REPLUNGED +REPLUNGES +REPLUNGING +REPLY +REPLYING +REPO +REPOLARIZATION +REPOLARIZATIONS +REPOLARIZE +REPOLARIZED +REPOLARIZES +REPOLARIZING +REPOLISH +REPOLISHED +REPOLISHES +REPOLISHING +REPOLL +REPOLLED +REPOLLING +REPOLLS +REPOPULARIZE +REPOPULARIZED +REPOPULARIZES +REPOPULARIZING +REPOPULATE +REPOPULATED +REPOPULATES +REPOPULATING +REPOPULATION +REPOPULATIONS +REPORT +REPORTABLE +REPORTAGE +REPORTAGES +REPORTED +REPORTEDLY +REPORTER +REPORTERS +REPORTING +REPORTORIAL +REPORTORIALLY +REPORTS +REPOS +REPOSAL +REPOSALS +REPOSE +REPOSED +REPOSEDLY +REPOSEFUL +REPOSEFULLY +REPOSEFULNESS +REPOSEFULNESSES +REPOSER +REPOSERS +REPOSES +REPOSING +REPOSIT +REPOSITED +REPOSITING +REPOSITION +REPOSITIONED +REPOSITIONING +REPOSITIONS +REPOSITORIES +REPOSITORY +REPOSITS +REPOSSESS +REPOSSESSED +REPOSSESSES +REPOSSESSING +REPOSSESSION +REPOSSESSIONS +REPOSSESSOR +REPOSSESSORS +REPOT +REPOTS +REPOTTED +REPOTTING +REPOUR +REPOURED +REPOURING +REPOURS +REPOUSSE +REPOUSSES +REPOWER +REPOWERED +REPOWERING +REPOWERS +REPP +REPPED +REPPING +REPPS +REPREHEND +REPREHENDED +REPREHENDING +REPREHENDS +REPREHENSIBLE +REPREHENSIBLY +REPREHENSION +REPREHENSIONS +REPREHENSIVE +REPRESENT +REPRESENTABLE +REPRESENTATION +REPRESENTATIONS +REPRESENTATIVE +REPRESENTATIVES +REPRESENTED +REPRESENTER +REPRESENTERS +REPRESENTING +REPRESENTS +REPRESS +REPRESSED +REPRESSER +REPRESSERS +REPRESSES +REPRESSIBILITY +REPRESSIBLE +REPRESSING +REPRESSION +REPRESSIONIST +REPRESSIONS +REPRESSIVE +REPRESSIVELY +REPRESSIVENESS +REPRESSOR +REPRESSORS +REPRESSURIZE +REPRESSURIZED +REPRESSURIZES +REPRESSURIZING +REPRICE +REPRICED +REPRICES +REPRICING +REPRIEVAL +REPRIEVALS +REPRIEVE +REPRIEVED +REPRIEVES +REPRIEVING +REPRIMAND +REPRIMANDED +REPRIMANDING +REPRIMANDS +REPRINT +REPRINTED +REPRINTER +REPRINTERS +REPRINTING +REPRINTS +REPRISAL +REPRISALS +REPRISE +REPRISED +REPRISES +REPRISING +REPRISTINATE +REPRISTINATED +REPRISTINATES +REPRISTINATING +REPRISTINATION +REPRISTINATIONS +REPRIVATIZATION +REPRIVATIZE +REPRIVATIZED +REPRIVATIZES +REPRIVATIZING +REPRO +REPROACH +REPROACHABLE +REPROACHED +REPROACHER +REPROACHERS +REPROACHES +REPROACHFUL +REPROACHFULLY +REPROACHFULNESS +REPROACHING +REPROACHINGLY +REPROBANCE +REPROBANCES +REPROBATE +REPROBATED +REPROBATES +REPROBATING +REPROBATION +REPROBATIONS +REPROBATIVE +REPROBATORY +REPROBE +REPROBED +REPROBES +REPROBING +REPROCESS +REPROCESSED +REPROCESSES +REPROCESSING +REPRODUCE +REPRODUCED +REPRODUCER +REPRODUCERS +REPRODUCES +REPRODUCIBILITY +REPRODUCIBLE +REPRODUCIBLES +REPRODUCIBLY +REPRODUCING +REPRODUCTION +REPRODUCTIONS +REPRODUCTIVE +REPRODUCTIVELY +REPRODUCTIVES +REPROGRAM +REPROGRAMED +REPROGRAMING +REPROGRAMMABLE +REPROGRAMMED +REPROGRAMMING +REPROGRAMS +REPROGRAPHER +REPROGRAPHERS +REPROGRAPHIC +REPROGRAPHICS +REPROGRAPHIES +REPROGRAPHY +REPROOF +REPROOFS +REPROS +REPROVAL +REPROVALS +REPROVE +REPROVED +REPROVER +REPROVERS +REPROVES +REPROVING +REPROVINGLY +REPROVISION +REPROVISIONED +REPROVISIONING +REPROVISIONS +REPS +REPTANT +REPTILE +REPTILES +REPTILIA +REPTILIAN +REPTILIANS +REPTILIUM +REPUBLIC +REPUBLICAN +REPUBLICANISM +REPUBLICANISMS +REPUBLICANIZE +REPUBLICANIZED +REPUBLICANIZES +REPUBLICANIZING +REPUBLICANS +REPUBLICATION +REPUBLICATIONS +REPUBLICS +REPUBLISH +REPUBLISHED +REPUBLISHER +REPUBLISHERS +REPUBLISHES +REPUBLISHING +REPUDIATE +REPUDIATED +REPUDIATES +REPUDIATING +REPUDIATION +REPUDIATIONIST +REPUDIATIONISTS +REPUDIATIONS +REPUDIATOR +REPUDIATORS +REPUGN +REPUGNANCE +REPUGNANCES +REPUGNANCIES +REPUGNANCY +REPUGNANT +REPUGNANTLY +REPUGNED +REPUGNING +REPUGNS +REPULSE +REPULSED +REPULSER +REPULSERS +REPULSES +REPULSING +REPULSION +REPULSIONS +REPULSIVE +REPULSIVELY +REPULSIVENESS +REPULSIVENESSES +REPUMP +REPUMPED +REPUMPING +REPUMPS +REPUNCTUATION +REPUNCTUATIONS +REPURCHASE +REPURCHASED +REPURCHASES +REPURCHASING +REPURIFIED +REPURIFIES +REPURIFY +REPURIFYING +REPURPOSE +REPURPOSED +REPURPOSES +REPURPOSING +REPURSUE +REPURSUED +REPURSUES +REPURSUING +REPUTABILITIES +REPUTABILITY +REPUTABLE +REPUTABLY +REPUTATION +REPUTATIONAL +REPUTATIONS +REPUTE +REPUTED +REPUTEDLY +REPUTES +REPUTING +REQUALIFIED +REQUALIFIES +REQUALIFY +REQUALIFYING +REQUEST +REQUESTED +REQUESTER +REQUESTERS +REQUESTING +REQUESTOR +REQUESTORS +REQUESTS +REQUIEM +REQUIEMS +REQUIESCAT +REQUIESCATS +REQUIN +REQUINS +REQUIRE +REQUIRED +REQUIREMENT +REQUIREMENTS +REQUIRER +REQUIRERS +REQUIRES +REQUIRING +REQUISITE +REQUISITENESS +REQUISITENESSES +REQUISITES +REQUISITION +REQUISITIONED +REQUISITIONING +REQUISITIONS +REQUITAL +REQUITALS +REQUITE +REQUITED +REQUITER +REQUITERS +REQUITES +REQUITING +RERACK +RERACKED +RERACKING +RERACKS +RERADIATE +RERADIATED +RERADIATES +RERADIATING +RERADIATION +RERADIATIONS +RERAISE +RERAISED +RERAISES +RERAISING +RERAN +REREAD +REREADING +REREADINGS +REREADS +REREBRACE +REREBRACES +RERECORD +RERECORDED +RERECORDING +RERECORDS +REREDOS +REREDOSES +REREGISTER +REREGISTERED +REREGISTERING +REREGISTERS +REREGISTRATION +REREGISTRATIONS +REREGULATE +REREGULATED +REREGULATES +REREGULATING +REREGULATION +REREGULATIONS +RERELEASE +RERELEASED +RERELEASES +RERELEASING +REREMICE +REREMIND +REREMINDED +REREMINDING +REREMINDS +REREMOUSE +RERENT +RERENTED +RERENTING +RERENTS +REREPEAT +REREPEATED +REREPEATING +REREPEATS +REREVIEW +REREVIEWED +REREVIEWING +REREVIEWS +REREWARD +REREWARDS +RERIG +RERIGGED +RERIGGING +RERIGS +RERISE +RERISEN +RERISES +RERISING +REROLL +REROLLED +REROLLER +REROLLERS +REROLLING +REROLLS +REROOF +REROOFED +REROOFING +REROOFS +REROSE +REROUTE +REROUTED +REROUTES +REROUTING +RERUN +RERUNNING +RERUNS +RES +RESADDLE +RESADDLED +RESADDLES +RESADDLING +RESAID +RESAIL +RESAILED +RESAILING +RESAILS +RESALABLE +RESALE +RESALES +RESALUTE +RESALUTED +RESALUTES +RESALUTING +RESAMPLE +RESAMPLED +RESAMPLES +RESAMPLING +RESAT +RESAW +RESAWED +RESAWING +RESAWN +RESAWS +RESAY +RESAYING +RESAYS +RESCALE +RESCALED +RESCALES +RESCALING +RESCHEDULE +RESCHEDULED +RESCHEDULES +RESCHEDULING +RESCHOOL +RESCHOOLED +RESCHOOLING +RESCHOOLS +RESCIND +RESCINDED +RESCINDER +RESCINDERS +RESCINDING +RESCINDMENT +RESCINDMENTS +RESCINDS +RESCISSION +RESCISSIONS +RESCISSORY +RESCORE +RESCORED +RESCORES +RESCORING +RESCREEN +RESCREENED +RESCREENING +RESCREENS +RESCRIPT +RESCRIPTS +RESCUABLE +RESCUE +RESCUED +RESCUER +RESCUERS +RESCUES +RESCUING +RESCULPT +RESCULPTED +RESCULPTING +RESCULPTS +RESEAL +RESEALABLE +RESEALED +RESEALING +RESEALS +RESEARCH +RESEARCHABLE +RESEARCHED +RESEARCHER +RESEARCHERS +RESEARCHES +RESEARCHING +RESEARCHIST +RESEARCHISTS +RESEASON +RESEASONED +RESEASONING +RESEASONS +RESEAT +RESEATED +RESEATING +RESEATS +RESEAU +RESEAUS +RESEAUX +RESECT +RESECTABILITIES +RESECTABILITY +RESECTABLE +RESECTED +RESECTING +RESECTION +RESECTIONS +RESECTS +RESECURE +RESECURED +RESECURES +RESECURING +RESEDA +RESEDAS +RESEE +RESEED +RESEEDED +RESEEDING +RESEEDS +RESEEING +RESEEK +RESEEKING +RESEEKS +RESEEN +RESEES +RESEGREGATE +RESEGREGATED +RESEGREGATES +RESEGREGATING +RESEGREGATION +RESEGREGATIONS +RESEIZE +RESEIZED +RESEIZES +RESEIZING +RESEIZURE +RESEIZURES +RESELECT +RESELECTED +RESELECTING +RESELECTS +RESELL +RESELLER +RESELLERS +RESELLING +RESELLS +RESEMBLANCE +RESEMBLANCES +RESEMBLANT +RESEMBLE +RESEMBLED +RESEMBLER +RESEMBLERS +RESEMBLES +RESEMBLING +RESEND +RESENDING +RESENDS +RESENSITIZE +RESENSITIZED +RESENSITIZES +RESENSITIZING +RESENT +RESENTED +RESENTENCE +RESENTENCED +RESENTENCES +RESENTENCING +RESENTFUL +RESENTFULLY +RESENTFULNESS +RESENTFULNESSES +RESENTING +RESENTIVE +RESENTMENT +RESENTMENTS +RESENTS +RESERPINE +RESERPINES +RESERVABLE +RESERVATION +RESERVATIONIST +RESERVATIONISTS +RESERVATIONS +RESERVE +RESERVED +RESERVEDLY +RESERVEDNESS +RESERVEDNESSES +RESERVER +RESERVERS +RESERVES +RESERVICE +RESERVICED +RESERVICES +RESERVICING +RESERVING +RESERVIST +RESERVISTS +RESERVOIR +RESERVOIRS +RESET +RESETS +RESETTABLE +RESETTER +RESETTERS +RESETTING +RESETTLE +RESETTLED +RESETTLEMENT +RESETTLEMENTS +RESETTLES +RESETTLING +RESEW +RESEWED +RESEWING +RESEWN +RESEWS +RESH +RESHAPE +RESHAPED +RESHAPER +RESHAPERS +RESHAPES +RESHAPING +RESHARPEN +RESHARPENED +RESHARPENING +RESHARPENS +RESHAVE +RESHAVED +RESHAVEN +RESHAVES +RESHAVING +RESHES +RESHINE +RESHINED +RESHINES +RESHINGLE +RESHINGLED +RESHINGLES +RESHINGLING +RESHINING +RESHIP +RESHIPPED +RESHIPPER +RESHIPPERS +RESHIPPING +RESHIPS +RESHOD +RESHOE +RESHOED +RESHOEING +RESHOES +RESHONE +RESHOOT +RESHOOTING +RESHOOTS +RESHOT +RESHOW +RESHOWED +RESHOWER +RESHOWERED +RESHOWERING +RESHOWERS +RESHOWING +RESHOWN +RESHOWS +RESHUFFLE +RESHUFFLED +RESHUFFLES +RESHUFFLING +RESID +RESIDE +RESIDED +RESIDENCE +RESIDENCES +RESIDENCIES +RESIDENCY +RESIDENT +RESIDENTIAL +RESIDENTIALLY +RESIDENTS +RESIDER +RESIDERS +RESIDES +RESIDING +RESIDS +RESIDUA +RESIDUAL +RESIDUALLY +RESIDUALS +RESIDUARY +RESIDUE +RESIDUES +RESIDUUM +RESIDUUMS +RESIFT +RESIFTED +RESIFTING +RESIFTS +RESIGHT +RESIGHTED +RESIGHTING +RESIGHTS +RESIGN +RESIGNATION +RESIGNATIONS +RESIGNED +RESIGNEDLY +RESIGNEDNESS +RESIGNEDNESSES +RESIGNER +RESIGNERS +RESIGNING +RESIGNS +RESILE +RESILED +RESILES +RESILIENCE +RESILIENCES +RESILIENCIES +RESILIENCY +RESILIENT +RESILIENTLY +RESILIN +RESILING +RESILINS +RESILVER +RESILVERED +RESILVERING +RESILVERS +RESIN +RESINATE +RESINATED +RESINATES +RESINATING +RESINED +RESINIFIED +RESINIFIES +RESINIFY +RESINIFYING +RESINING +RESINLIKE +RESINOID +RESINOIDS +RESINOUS +RESINS +RESINY +RESIST +RESISTANCE +RESISTANCES +RESISTANT +RESISTANTS +RESISTED +RESISTER +RESISTERS +RESISTIBILITIES +RESISTIBILITY +RESISTIBLE +RESISTING +RESISTIVE +RESISTIVELY +RESISTIVENESS +RESISTIVENESSES +RESISTIVITIES +RESISTIVITY +RESISTLESS +RESISTLESSLY +RESISTLESSNESS +RESISTOR +RESISTORS +RESISTS +RESIT +RESITE +RESITED +RESITES +RESITING +RESITS +RESITTING +RESITTINGS +RESITUATE +RESITUATED +RESITUATES +RESITUATING +RESIZE +RESIZED +RESIZES +RESIZING +RESKETCH +RESKETCHED +RESKETCHES +RESKETCHING +RESLATE +RESLATED +RESLATES +RESLATING +RESMELT +RESMELTED +RESMELTING +RESMELTS +RESMOOTH +RESMOOTHED +RESMOOTHING +RESMOOTHS +RESOAK +RESOAKED +RESOAKING +RESOAKS +RESOCIALIZATION +RESOCIALIZE +RESOCIALIZED +RESOCIALIZES +RESOCIALIZING +RESOD +RESODDED +RESODDING +RESODS +RESOFTEN +RESOFTENED +RESOFTENING +RESOFTENS +RESOJET +RESOJETS +RESOLD +RESOLDER +RESOLDERED +RESOLDERING +RESOLDERS +RESOLE +RESOLED +RESOLES +RESOLIDIFIED +RESOLIDIFIES +RESOLIDIFY +RESOLIDIFYING +RESOLING +RESOLUBLE +RESOLUTE +RESOLUTELY +RESOLUTENESS +RESOLUTENESSES +RESOLUTER +RESOLUTES +RESOLUTEST +RESOLUTION +RESOLUTIONS +RESOLVABLE +RESOLVE +RESOLVED +RESOLVENT +RESOLVENTS +RESOLVER +RESOLVERS +RESOLVES +RESOLVING +RESONANCE +RESONANCES +RESONANT +RESONANTLY +RESONANTS +RESONATE +RESONATED +RESONATES +RESONATING +RESONATOR +RESONATORS +RESORB +RESORBED +RESORBING +RESORBS +RESORCIN +RESORCINOL +RESORCINOLS +RESORCINS +RESORPTION +RESORPTIONS +RESORPTIVE +RESORT +RESORTED +RESORTER +RESORTERS +RESORTING +RESORTS +RESOUGHT +RESOUND +RESOUNDED +RESOUNDING +RESOUNDINGLY +RESOUNDS +RESOURCE +RESOURCEFUL +RESOURCEFULLY +RESOURCEFULNESS +RESOURCES +RESOW +RESOWED +RESOWING +RESOWN +RESOWS +RESPACE +RESPACED +RESPACES +RESPACING +RESPADE +RESPADED +RESPADES +RESPADING +RESPEAK +RESPEAKING +RESPEAKS +RESPECIFIED +RESPECIFIES +RESPECIFY +RESPECIFYING +RESPECT +RESPECTABILITY +RESPECTABLE +RESPECTABLENESS +RESPECTABLES +RESPECTABLY +RESPECTED +RESPECTER +RESPECTERS +RESPECTFUL +RESPECTFULLY +RESPECTFULNESS +RESPECTING +RESPECTIVE +RESPECTIVELY +RESPECTIVENESS +RESPECTS +RESPELL +RESPELLED +RESPELLING +RESPELLINGS +RESPELLS +RESPELT +RESPIRABLE +RESPIRATION +RESPIRATIONS +RESPIRATOR +RESPIRATORS +RESPIRATORY +RESPIRE +RESPIRED +RESPIRES +RESPIRING +RESPIRITUALIZE +RESPIRITUALIZED +RESPIRITUALIZES +RESPIROMETER +RESPIROMETERS +RESPIROMETRIC +RESPIROMETRIES +RESPIROMETRY +RESPITE +RESPITED +RESPITES +RESPITING +RESPLENDENCE +RESPLENDENCES +RESPLENDENCIES +RESPLENDENCY +RESPLENDENT +RESPLENDENTLY +RESPLICE +RESPLICED +RESPLICES +RESPLICING +RESPLIT +RESPLITS +RESPLITTING +RESPOKE +RESPOKEN +RESPOND +RESPONDED +RESPONDENT +RESPONDENTS +RESPONDER +RESPONDERS +RESPONDING +RESPONDS +RESPONSA +RESPONSE +RESPONSES +RESPONSIBILITY +RESPONSIBLE +RESPONSIBLENESS +RESPONSIBLY +RESPONSIONS +RESPONSIVE +RESPONSIVELY +RESPONSIVENESS +RESPONSORIES +RESPONSORY +RESPONSUM +RESPOOL +RESPOOLED +RESPOOLING +RESPOOLS +RESPOT +RESPOTS +RESPOTTED +RESPOTTING +RESPRANG +RESPRAY +RESPRAYED +RESPRAYING +RESPRAYS +RESPREAD +RESPREADING +RESPREADS +RESPRING +RESPRINGING +RESPRINGS +RESPROUT +RESPROUTED +RESPROUTING +RESPROUTS +RESPRUNG +RESSENTIMENT +RESSENTIMENTS +REST +RESTABILIZE +RESTABILIZED +RESTABILIZES +RESTABILIZING +RESTABLE +RESTABLED +RESTABLES +RESTABLING +RESTACK +RESTACKED +RESTACKING +RESTACKS +RESTAFF +RESTAFFED +RESTAFFING +RESTAFFS +RESTAGE +RESTAGED +RESTAGES +RESTAGING +RESTAMP +RESTAMPED +RESTAMPING +RESTAMPS +RESTART +RESTARTABLE +RESTARTED +RESTARTING +RESTARTS +RESTATE +RESTATED +RESTATEMENT +RESTATEMENTS +RESTATES +RESTATING +RESTATION +RESTATIONED +RESTATIONING +RESTATIONS +RESTAURANT +RESTAURANTEUR +RESTAURANTEURS +RESTAURANTS +RESTAURATEUR +RESTAURATEURS +RESTED +RESTER +RESTERS +RESTFUL +RESTFULLER +RESTFULLEST +RESTFULLY +RESTFULNESS +RESTFULNESSES +RESTIFORM +RESTIMULATE +RESTIMULATED +RESTIMULATES +RESTIMULATING +RESTIMULATION +RESTIMULATIONS +RESTING +RESTITCH +RESTITCHED +RESTITCHES +RESTITCHING +RESTITUTE +RESTITUTED +RESTITUTES +RESTITUTING +RESTITUTION +RESTITUTIONS +RESTIVE +RESTIVELY +RESTIVENESS +RESTIVENESSES +RESTLESS +RESTLESSLY +RESTLESSNESS +RESTLESSNESSES +RESTOCK +RESTOCKED +RESTOCKING +RESTOCKS +RESTOKE +RESTOKED +RESTOKES +RESTOKING +RESTORABLE +RESTORAL +RESTORALS +RESTORATION +RESTORATIONS +RESTORATIVE +RESTORATIVES +RESTORE +RESTORED +RESTORER +RESTORERS +RESTORES +RESTORING +RESTRAIN +RESTRAINABLE +RESTRAINED +RESTRAINEDLY +RESTRAINER +RESTRAINERS +RESTRAINING +RESTRAINS +RESTRAINT +RESTRAINTS +RESTRENGTHEN +RESTRENGTHENED +RESTRENGTHENING +RESTRENGTHENS +RESTRESS +RESTRESSED +RESTRESSES +RESTRESSING +RESTRETCH +RESTRETCHED +RESTRETCHES +RESTRETCHING +RESTRICKEN +RESTRICT +RESTRICTED +RESTRICTEDLY +RESTRICTING +RESTRICTION +RESTRICTIONISM +RESTRICTIONISMS +RESTRICTIONIST +RESTRICTIONISTS +RESTRICTIONS +RESTRICTIVE +RESTRICTIVELY +RESTRICTIVENESS +RESTRICTIVES +RESTRICTS +RESTRIKE +RESTRIKES +RESTRIKING +RESTRING +RESTRINGING +RESTRINGS +RESTRIVE +RESTRIVEN +RESTRIVES +RESTRIVING +RESTROOM +RESTROOMS +RESTROVE +RESTRUCK +RESTRUCTURE +RESTRUCTURED +RESTRUCTURES +RESTRUCTURING +RESTRUNG +RESTS +RESTUDIED +RESTUDIES +RESTUDY +RESTUDYING +RESTUFF +RESTUFFED +RESTUFFING +RESTUFFS +RESTYLE +RESTYLED +RESTYLES +RESTYLING +RESUBJECT +RESUBJECTED +RESUBJECTING +RESUBJECTS +RESUBMISSION +RESUBMISSIONS +RESUBMIT +RESUBMITS +RESUBMITTED +RESUBMITTING +RESULT +RESULTANT +RESULTANTLY +RESULTANTS +RESULTED +RESULTFUL +RESULTING +RESULTLESS +RESULTS +RESUMABLE +RESUME +RESUMED +RESUMER +RESUMERS +RESUMES +RESUMING +RESUMMON +RESUMMONED +RESUMMONING +RESUMMONS +RESUMPTION +RESUMPTIONS +RESUPINATE +RESUPINE +RESUPPLIED +RESUPPLIES +RESUPPLY +RESUPPLYING +RESURFACE +RESURFACED +RESURFACER +RESURFACERS +RESURFACES +RESURFACING +RESURGE +RESURGED +RESURGENCE +RESURGENCES +RESURGENT +RESURGES +RESURGING +RESURRECT +RESURRECTED +RESURRECTING +RESURRECTION +RESURRECTIONAL +RESURRECTIONIST +RESURRECTIONS +RESURRECTS +RESURVEY +RESURVEYED +RESURVEYING +RESURVEYS +RESUSCITATE +RESUSCITATED +RESUSCITATES +RESUSCITATING +RESUSCITATION +RESUSCITATIONS +RESUSCITATIVE +RESUSCITATOR +RESUSCITATORS +RESUSPEND +RESUSPENDED +RESUSPENDING +RESUSPENDS +RESWALLOW +RESWALLOWED +RESWALLOWING +RESWALLOWS +RESYNTHESES +RESYNTHESIS +RESYNTHESIZE +RESYNTHESIZED +RESYNTHESIZES +RESYNTHESIZING +RESYSTEMATIZE +RESYSTEMATIZED +RESYSTEMATIZES +RESYSTEMATIZING +RET +RETABLE +RETABLES +RETACK +RETACKED +RETACKING +RETACKLE +RETACKLED +RETACKLES +RETACKLING +RETACKS +RETAG +RETAGGED +RETAGGING +RETAGS +RETAIL +RETAILED +RETAILER +RETAILERS +RETAILING +RETAILINGS +RETAILOR +RETAILORED +RETAILORING +RETAILORS +RETAILS +RETAIN +RETAINED +RETAINER +RETAINERS +RETAINING +RETAINS +RETAKE +RETAKEN +RETAKER +RETAKERS +RETAKES +RETAKING +RETALIATE +RETALIATED +RETALIATES +RETALIATING +RETALIATION +RETALIATIONS +RETALIATIVE +RETALIATORY +RETALLIED +RETALLIES +RETALLY +RETALLYING +RETAPE +RETAPED +RETAPES +RETAPING +RETARD +RETARDANT +RETARDANTS +RETARDATE +RETARDATES +RETARDATION +RETARDATIONS +RETARDED +RETARDER +RETARDERS +RETARDING +RETARDS +RETARGET +RETARGETED +RETARGETING +RETARGETS +RETASTE +RETASTED +RETASTES +RETASTING +RETAUGHT +RETAX +RETAXED +RETAXES +RETAXING +RETCH +RETCHED +RETCHES +RETCHING +RETE +RETEACH +RETEACHES +RETEACHING +RETEAM +RETEAMED +RETEAMING +RETEAMS +RETEAR +RETEARING +RETEARS +RETELL +RETELLING +RETELLINGS +RETELLS +RETEM +RETEMPER +RETEMPERED +RETEMPERING +RETEMPERS +RETEMS +RETENE +RETENES +RETENTION +RETENTIONS +RETENTIVE +RETENTIVELY +RETENTIVENESS +RETENTIVENESSES +RETENTIVITIES +RETENTIVITY +RETEST +RETESTED +RETESTIFIED +RETESTIFIES +RETESTIFY +RETESTIFYING +RETESTING +RETESTS +RETEXTURE +RETEXTURED +RETEXTURES +RETEXTURING +RETHINK +RETHINKER +RETHINKERS +RETHINKING +RETHINKS +RETHOUGHT +RETHREAD +RETHREADED +RETHREADING +RETHREADS +RETIA +RETIAL +RETIARII +RETIARIUS +RETIARY +RETICENCE +RETICENCES +RETICENCIES +RETICENCY +RETICENT +RETICENTLY +RETICLE +RETICLES +RETICULA +RETICULAR +RETICULATE +RETICULATED +RETICULATELY +RETICULATES +RETICULATING +RETICULATION +RETICULATIONS +RETICULE +RETICULES +RETICULOCYTE +RETICULOCYTES +RETICULUM +RETICULUMS +RETIE +RETIED +RETIEING +RETIES +RETIFORM +RETIGHTEN +RETIGHTENED +RETIGHTENING +RETIGHTENS +RETILE +RETILED +RETILES +RETILING +RETIME +RETIMED +RETIMES +RETIMING +RETINA +RETINACULA +RETINACULUM +RETINAE +RETINAL +RETINALS +RETINAS +RETINE +RETINENE +RETINENES +RETINES +RETINITE +RETINITES +RETINITIDES +RETINITIS +RETINITISES +RETINOBLASTOMA +RETINOBLASTOMAS +RETINOID +RETINOIDS +RETINOL +RETINOLS +RETINOPATHIES +RETINOPATHY +RETINOSCOPIES +RETINOSCOPY +RETINOTECTAL +RETINT +RETINTED +RETINTING +RETINTS +RETINUE +RETINUED +RETINUES +RETINULA +RETINULAE +RETINULAR +RETINULAS +RETIRANT +RETIRANTS +RETIRE +RETIRED +RETIREDLY +RETIREDNESS +RETIREDNESSES +RETIREE +RETIREES +RETIREMENT +RETIREMENTS +RETIRER +RETIRERS +RETIRES +RETIRING +RETIRINGLY +RETIRINGNESS +RETIRINGNESSES +RETITLE +RETITLED +RETITLES +RETITLING +RETOLD +RETOOK +RETOOL +RETOOLED +RETOOLING +RETOOLS +RETORE +RETORN +RETORSION +RETORSIONS +RETORT +RETORTED +RETORTER +RETORTERS +RETORTING +RETORTION +RETORTIONS +RETORTS +RETOTAL +RETOTALED +RETOTALING +RETOTALLED +RETOTALLING +RETOTALS +RETOUCH +RETOUCHED +RETOUCHER +RETOUCHERS +RETOUCHES +RETOUCHING +RETRACE +RETRACED +RETRACER +RETRACERS +RETRACES +RETRACING +RETRACK +RETRACKED +RETRACKING +RETRACKS +RETRACT +RETRACTABLE +RETRACTED +RETRACTILE +RETRACTILITIES +RETRACTILITY +RETRACTING +RETRACTION +RETRACTIONS +RETRACTOR +RETRACTORS +RETRACTS +RETRAIN +RETRAINABLE +RETRAINED +RETRAINEE +RETRAINEES +RETRAINING +RETRAINS +RETRAL +RETRALLY +RETRANSFER +RETRANSFERRED +RETRANSFERRING +RETRANSFERS +RETRANSFORM +RETRANSFORMED +RETRANSFORMING +RETRANSFORMS +RETRANSLATE +RETRANSLATED +RETRANSLATES +RETRANSLATING +RETRANSLATION +RETRANSLATIONS +RETRANSMISSION +RETRANSMISSIONS +RETRANSMIT +RETRANSMITS +RETRANSMITTED +RETRANSMITTING +RETREAD +RETREADED +RETREADING +RETREADS +RETREAT +RETREATANT +RETREATANTS +RETREATED +RETREATER +RETREATERS +RETREATING +RETREATS +RETRENCH +RETRENCHED +RETRENCHES +RETRENCHING +RETRENCHMENT +RETRENCHMENTS +RETRIAL +RETRIALS +RETRIBUTION +RETRIBUTIONS +RETRIBUTIVE +RETRIBUTIVELY +RETRIBUTORY +RETRIED +RETRIES +RETRIEVABILITY +RETRIEVABLE +RETRIEVAL +RETRIEVALS +RETRIEVE +RETRIEVED +RETRIEVER +RETRIEVERS +RETRIEVES +RETRIEVING +RETRIM +RETRIMMED +RETRIMMING +RETRIMS +RETRO +RETROACT +RETROACTED +RETROACTING +RETROACTION +RETROACTIONS +RETROACTIVE +RETROACTIVELY +RETROACTIVITIES +RETROACTIVITY +RETROACTS +RETROCEDE +RETROCEDED +RETROCEDES +RETROCEDING +RETROCESSION +RETROCESSIONS +RETRODICT +RETRODICTED +RETRODICTING +RETRODICTION +RETRODICTIONS +RETRODICTIVE +RETRODICTS +RETROFIRE +RETROFIRED +RETROFIRES +RETROFIRING +RETROFIT +RETROFITS +RETROFITTED +RETROFITTING +RETROFLECTION +RETROFLECTIONS +RETROFLEX +RETROFLEXES +RETROFLEXION +RETROFLEXIONS +RETROGRADATION +RETROGRADATIONS +RETROGRADE +RETROGRADED +RETROGRADELY +RETROGRADES +RETROGRADING +RETROGRESS +RETROGRESSED +RETROGRESSES +RETROGRESSING +RETROGRESSION +RETROGRESSIONS +RETROGRESSIVE +RETROGRESSIVELY +RETRONYM +RETRONYMS +RETROPACK +RETROPACKS +RETROPERITONEAL +RETROREFLECTION +RETROREFLECTIVE +RETROREFLECTOR +RETROREFLECTORS +RETRORSE +RETROS +RETROSPECT +RETROSPECTED +RETROSPECTING +RETROSPECTION +RETROSPECTIONS +RETROSPECTIVE +RETROSPECTIVELY +RETROSPECTIVES +RETROSPECTS +RETROUSSE +RETROVERSION +RETROVERSIONS +RETROVIRAL +RETROVIRUS +RETROVIRUSES +RETRY +RETRYING +RETS +RETSINA +RETSINAS +RETTED +RETTING +RETUNE +RETUNED +RETUNES +RETUNING +RETURN +RETURNABLE +RETURNABLES +RETURNED +RETURNEE +RETURNEES +RETURNER +RETURNERS +RETURNING +RETURNS +RETUSE +RETWIST +RETWISTED +RETWISTING +RETWISTS +RETYING +RETYPE +RETYPED +RETYPES +RETYPING +REUNIFICATION +REUNIFICATIONS +REUNIFIED +REUNIFIES +REUNIFY +REUNIFYING +REUNION +REUNIONIST +REUNIONISTIC +REUNIONISTS +REUNIONS +REUNITE +REUNITED +REUNITER +REUNITERS +REUNITES +REUNITING +REUPHOLSTER +REUPHOLSTERED +REUPHOLSTERING +REUPHOLSTERS +REUPTAKE +REUPTAKES +REUSABILITIES +REUSABILITY +REUSABLE +REUSABLES +REUSE +REUSED +REUSES +REUSING +REUTILIZATION +REUTILIZATIONS +REUTILIZE +REUTILIZED +REUTILIZES +REUTILIZING +REUTTER +REUTTERED +REUTTERING +REUTTERS +REV +REVACCINATE +REVACCINATED +REVACCINATES +REVACCINATING +REVACCINATION +REVACCINATIONS +REVALIDATE +REVALIDATED +REVALIDATES +REVALIDATING +REVALIDATION +REVALIDATIONS +REVALORIZATION +REVALORIZATIONS +REVALORIZE +REVALORIZED +REVALORIZES +REVALORIZING +REVALUATE +REVALUATED +REVALUATES +REVALUATING +REVALUATION +REVALUATIONS +REVALUE +REVALUED +REVALUES +REVALUING +REVAMP +REVAMPED +REVAMPER +REVAMPERS +REVAMPING +REVAMPS +REVANCHE +REVANCHES +REVANCHISM +REVANCHISMS +REVANCHIST +REVANCHISTS +REVARNISH +REVARNISHED +REVARNISHES +REVARNISHING +REVEAL +REVEALABLE +REVEALED +REVEALER +REVEALERS +REVEALING +REVEALINGLY +REVEALMENT +REVEALMENTS +REVEALS +REVEGETATE +REVEGETATED +REVEGETATES +REVEGETATING +REVEGETATION +REVEGETATIONS +REVEHENT +REVEILLE +REVEILLES +REVEL +REVELATION +REVELATIONS +REVELATOR +REVELATORS +REVELATORY +REVELED +REVELER +REVELERS +REVELING +REVELLED +REVELLER +REVELLERS +REVELLING +REVELMENT +REVELMENTS +REVELRIES +REVELROUS +REVELRY +REVELS +REVENANT +REVENANTS +REVENGE +REVENGED +REVENGEFUL +REVENGEFULLY +REVENGEFULNESS +REVENGER +REVENGERS +REVENGES +REVENGING +REVENUAL +REVENUE +REVENUED +REVENUER +REVENUERS +REVENUES +REVERABLE +REVERB +REVERBED +REVERBERANT +REVERBERANTLY +REVERBERATE +REVERBERATED +REVERBERATES +REVERBERATING +REVERBERATION +REVERBERATIONS +REVERBERATIVE +REVERBERATORY +REVERBING +REVERBS +REVERE +REVERED +REVERENCE +REVERENCED +REVERENCER +REVERENCERS +REVERENCES +REVERENCING +REVEREND +REVERENDS +REVERENT +REVERENTIAL +REVERENTIALLY +REVERENTLY +REVERER +REVERERS +REVERES +REVERIE +REVERIES +REVERIFIED +REVERIFIES +REVERIFY +REVERIFYING +REVERING +REVERS +REVERSAL +REVERSALS +REVERSE +REVERSED +REVERSELY +REVERSER +REVERSERS +REVERSES +REVERSIBILITIES +REVERSIBILITY +REVERSIBLE +REVERSIBLES +REVERSIBLY +REVERSING +REVERSION +REVERSIONAL +REVERSIONARY +REVERSIONER +REVERSIONERS +REVERSIONS +REVERSO +REVERSOS +REVERT +REVERTANT +REVERTANTS +REVERTED +REVERTER +REVERTERS +REVERTIBLE +REVERTING +REVERTIVE +REVERTS +REVERY +REVEST +REVESTED +REVESTING +REVESTS +REVET +REVETMENT +REVETMENTS +REVETS +REVETTED +REVETTING +REVIBRATE +REVIBRATED +REVIBRATES +REVIBRATING +REVICTUAL +REVICTUALED +REVICTUALING +REVICTUALLED +REVICTUALLING +REVICTUALS +REVIEW +REVIEWABLE +REVIEWAL +REVIEWALS +REVIEWED +REVIEWER +REVIEWERS +REVIEWING +REVIEWS +REVILE +REVILED +REVILEMENT +REVILEMENTS +REVILER +REVILERS +REVILES +REVILING +REVIOLATE +REVIOLATED +REVIOLATES +REVIOLATING +REVISABLE +REVISAL +REVISALS +REVISE +REVISED +REVISER +REVISERS +REVISES +REVISING +REVISION +REVISIONARY +REVISIONISM +REVISIONISMS +REVISIONIST +REVISIONISTS +REVISIONS +REVISIT +REVISITED +REVISITING +REVISITS +REVISOR +REVISORS +REVISORY +REVISUALIZATION +REVITALISE +REVITALISED +REVITALISES +REVITALISING +REVITALIZATION +REVITALIZATIONS +REVITALIZE +REVITALIZED +REVITALIZES +REVITALIZING +REVIVABLE +REVIVAL +REVIVALISM +REVIVALISMS +REVIVALIST +REVIVALISTIC +REVIVALISTS +REVIVALS +REVIVE +REVIVED +REVIVER +REVIVERS +REVIVES +REVIVIFICATION +REVIVIFICATIONS +REVIVIFIED +REVIVIFIES +REVIVIFY +REVIVIFYING +REVIVING +REVIVISCENCE +REVIVISCENCES +REVIVISCENT +REVOCABLE +REVOCABLY +REVOCATION +REVOCATIONS +REVOICE +REVOICED +REVOICES +REVOICING +REVOKABLE +REVOKE +REVOKED +REVOKER +REVOKERS +REVOKES +REVOKING +REVOLT +REVOLTED +REVOLTER +REVOLTERS +REVOLTING +REVOLTINGLY +REVOLTS +REVOLUTE +REVOLUTION +REVOLUTIONARIES +REVOLUTIONARILY +REVOLUTIONARY +REVOLUTIONISE +REVOLUTIONISED +REVOLUTIONISES +REVOLUTIONISING +REVOLUTIONIST +REVOLUTIONISTS +REVOLUTIONIZE +REVOLUTIONIZED +REVOLUTIONIZER +REVOLUTIONIZERS +REVOLUTIONIZES +REVOLUTIONIZING +REVOLUTIONS +REVOLVABLE +REVOLVE +REVOLVED +REVOLVER +REVOLVERS +REVOLVES +REVOLVING +REVOTE +REVOTED +REVOTES +REVOTING +REVS +REVUE +REVUES +REVUIST +REVUISTS +REVULSED +REVULSION +REVULSIONS +REVULSIVE +REVVED +REVVING +REWAKE +REWAKED +REWAKEN +REWAKENED +REWAKENING +REWAKENS +REWAKES +REWAKING +REWAN +REWARD +REWARDABLE +REWARDED +REWARDER +REWARDERS +REWARDING +REWARDINGLY +REWARDS +REWARM +REWARMED +REWARMING +REWARMS +REWASH +REWASHED +REWASHES +REWASHING +REWAX +REWAXED +REWAXES +REWAXING +REWEAR +REWEARING +REWEARS +REWEAVE +REWEAVED +REWEAVES +REWEAVING +REWED +REWEDDED +REWEDDING +REWEDS +REWEIGH +REWEIGHED +REWEIGHING +REWEIGHS +REWELD +REWELDED +REWELDING +REWELDS +REWET +REWETS +REWETTED +REWETTING +REWIDEN +REWIDENED +REWIDENING +REWIDENS +REWIN +REWIND +REWINDED +REWINDER +REWINDERS +REWINDING +REWINDS +REWINNING +REWINS +REWIRE +REWIRED +REWIRES +REWIRING +REWOKE +REWOKEN +REWON +REWORD +REWORDED +REWORDING +REWORDS +REWORE +REWORK +REWORKED +REWORKING +REWORKS +REWORN +REWOUND +REWOVE +REWOVEN +REWRAP +REWRAPPED +REWRAPPING +REWRAPS +REWRAPT +REWRITE +REWRITER +REWRITERS +REWRITES +REWRITING +REWRITTEN +REWROTE +REWROUGHT +REX +REXES +REXINE +REXINES +REYNARD +REYNARDS +REZERO +REZEROED +REZEROES +REZEROING +REZEROS +REZONE +REZONED +REZONES +REZONING +RHABDOCOELE +RHABDOCOELES +RHABDOM +RHABDOMAL +RHABDOMANCER +RHABDOMANCERS +RHABDOMANCIES +RHABDOMANCY +RHABDOME +RHABDOMERE +RHABDOMERES +RHABDOMES +RHABDOMS +RHABDOVIRUS +RHABDOVIRUSES +RHACHIDES +RHACHIS +RHACHISES +RHADAMANTHINE +RHAMNOSE +RHAMNOSES +RHAMNUS +RHAMNUSES +RHAPHAE +RHAPHE +RHAPHES +RHAPSODE +RHAPSODES +RHAPSODIC +RHAPSODICAL +RHAPSODICALLY +RHAPSODIES +RHAPSODIST +RHAPSODISTS +RHAPSODIZE +RHAPSODIZED +RHAPSODIZES +RHAPSODIZING +RHAPSODY +RHATANIES +RHATANY +RHEA +RHEAS +RHEBOK +RHEBOKS +RHEMATIC +RHEME +RHEMES +RHENIUM +RHENIUMS +RHEOBASE +RHEOBASES +RHEOBASIC +RHEOLOGIC +RHEOLOGICAL +RHEOLOGICALLY +RHEOLOGIES +RHEOLOGIST +RHEOLOGISTS +RHEOLOGY +RHEOMETER +RHEOMETERS +RHEOPHIL +RHEOPHILE +RHEOPHILES +RHEOSTAT +RHEOSTATIC +RHEOSTATS +RHEOTAXES +RHEOTAXIS +RHESUS +RHESUSES +RHETOR +RHETORIC +RHETORICAL +RHETORICALLY +RHETORICIAN +RHETORICIANS +RHETORICS +RHETORS +RHEUM +RHEUMATIC +RHEUMATICALLY +RHEUMATICS +RHEUMATISM +RHEUMATISMS +RHEUMATIZ +RHEUMATIZES +RHEUMATOID +RHEUMATOLOGIES +RHEUMATOLOGIST +RHEUMATOLOGISTS +RHEUMATOLOGY +RHEUMIC +RHEUMIER +RHEUMIEST +RHEUMS +RHEUMY +RHIGOLENE +RHIGOLENES +RHINAL +RHINENCEPHALA +RHINENCEPHALIC +RHINENCEPHALON +RHINESTONE +RHINESTONED +RHINESTONES +RHINITIDES +RHINITIS +RHINO +RHINOCERI +RHINOCEROS +RHINOCEROSES +RHINOLOGIES +RHINOLOGY +RHINOPLASTIES +RHINOPLASTY +RHINOS +RHINOSCOPIES +RHINOSCOPY +RHINOVIRUS +RHINOVIRUSES +RHIZOBIA +RHIZOBIAL +RHIZOBIUM +RHIZOCTONIA +RHIZOCTONIAS +RHIZOID +RHIZOIDAL +RHIZOIDS +RHIZOMA +RHIZOMATA +RHIZOMATOUS +RHIZOME +RHIZOMES +RHIZOMIC +RHIZOPI +RHIZOPLANE +RHIZOPLANES +RHIZOPOD +RHIZOPODS +RHIZOPUS +RHIZOPUSES +RHIZOSPHERE +RHIZOSPHERES +RHIZOTOMIES +RHIZOTOMY +RHO +RHODAMIN +RHODAMINE +RHODAMINES +RHODAMINS +RHODIC +RHODIUM +RHODIUMS +RHODOCHROSITE +RHODOCHROSITES +RHODODENDRON +RHODODENDRONS +RHODOLITE +RHODOLITES +RHODOMONTADE +RHODOMONTADES +RHODONITE +RHODONITES +RHODOPSIN +RHODOPSINS +RHODORA +RHODORAS +RHOMB +RHOMBENCEPHALA +RHOMBENCEPHALON +RHOMBI +RHOMBIC +RHOMBICAL +RHOMBOHEDRA +RHOMBOHEDRAL +RHOMBOHEDRON +RHOMBOHEDRONS +RHOMBOID +RHOMBOIDAL +RHOMBOIDEI +RHOMBOIDEUS +RHOMBOIDS +RHOMBS +RHOMBUS +RHOMBUSES +RHONCHAL +RHONCHI +RHONCHIAL +RHONCHUS +RHOS +RHOTACISM +RHOTACISMS +RHOTIC +RHUBARB +RHUBARBS +RHUMB +RHUMBA +RHUMBAED +RHUMBAING +RHUMBAS +RHUMBS +RHUS +RHUSES +RHYME +RHYMED +RHYMELESS +RHYMER +RHYMERS +RHYMES +RHYMESTER +RHYMESTERS +RHYMING +RHYOLITE +RHYOLITES +RHYOLITIC +RHYTA +RHYTHM +RHYTHMIC +RHYTHMICAL +RHYTHMICALLY +RHYTHMICITIES +RHYTHMICITY +RHYTHMICS +RHYTHMIST +RHYTHMISTS +RHYTHMIZATION +RHYTHMIZATIONS +RHYTHMIZE +RHYTHMIZED +RHYTHMIZES +RHYTHMIZING +RHYTHMS +RHYTIDOME +RHYTIDOMES +RHYTON +RHYTONS +RIA +RIAL +RIALS +RIALTO +RIALTOS +RIANT +RIANTLY +RIAS +RIATA +RIATAS +RIB +RIBALD +RIBALDLY +RIBALDRIES +RIBALDRY +RIBALDS +RIBAND +RIBANDS +RIBAVIRIN +RIBAVIRINS +RIBBAND +RIBBANDS +RIBBED +RIBBER +RIBBERS +RIBBIER +RIBBIEST +RIBBING +RIBBINGS +RIBBON +RIBBONED +RIBBONFISH +RIBBONFISHES +RIBBONING +RIBBONLIKE +RIBBONS +RIBBONY +RIBBY +RIBES +RIBGRASS +RIBGRASSES +RIBIER +RIBIERS +RIBLESS +RIBLET +RIBLETS +RIBLIKE +RIBOFLAVIN +RIBOFLAVINS +RIBONUCLEASE +RIBONUCLEASES +RIBONUCLEOSIDE +RIBONUCLEOSIDES +RIBONUCLEOTIDE +RIBONUCLEOTIDES +RIBOSE +RIBOSES +RIBOSOMAL +RIBOSOME +RIBOSOMES +RIBOZYMAL +RIBOZYME +RIBOZYMES +RIBS +RIBWORT +RIBWORTS +RICE +RICEBIRD +RICEBIRDS +RICED +RICER +RICERCAR +RICERCARE +RICERCARI +RICERCARS +RICERS +RICES +RICH +RICHEN +RICHENED +RICHENING +RICHENS +RICHER +RICHES +RICHEST +RICHLY +RICHNESS +RICHNESSES +RICHWEED +RICHWEEDS +RICIN +RICING +RICINS +RICINUS +RICINUSES +RICK +RICKED +RICKETIER +RICKETIEST +RICKETS +RICKETTSIA +RICKETTSIAE +RICKETTSIAL +RICKETTSIAS +RICKETY +RICKEY +RICKEYS +RICKING +RICKRACK +RICKRACKS +RICKS +RICKSHA +RICKSHAS +RICKSHAW +RICKSHAWS +RICOCHET +RICOCHETED +RICOCHETING +RICOCHETS +RICOCHETTED +RICOCHETTING +RICOTTA +RICOTTAS +RICRAC +RICRACS +RICTAL +RICTUS +RICTUSES +RID +RIDABLE +RIDDANCE +RIDDANCES +RIDDED +RIDDEN +RIDDER +RIDDERS +RIDDING +RIDDLE +RIDDLED +RIDDLER +RIDDLERS +RIDDLES +RIDDLING +RIDE +RIDEABLE +RIDENT +RIDER +RIDERLESS +RIDERS +RIDERSHIP +RIDERSHIPS +RIDES +RIDGE +RIDGEBACK +RIDGEBACKS +RIDGED +RIDGEL +RIDGELINE +RIDGELINES +RIDGELING +RIDGELINGS +RIDGELS +RIDGEPOLE +RIDGEPOLES +RIDGES +RIDGETOP +RIDGETOPS +RIDGIER +RIDGIEST +RIDGIL +RIDGILS +RIDGING +RIDGLING +RIDGLINGS +RIDGY +RIDICULE +RIDICULED +RIDICULER +RIDICULERS +RIDICULES +RIDICULING +RIDICULOUS +RIDICULOUSLY +RIDICULOUSNESS +RIDING +RIDINGS +RIDLEY +RIDLEYS +RIDOTTO +RIDOTTOS +RIDS +RIEL +RIELS +RIESLING +RIESLINGS +RIEVER +RIEVERS +RIF +RIFAMPICIN +RIFAMPICINS +RIFAMPIN +RIFAMPINS +RIFAMYCIN +RIFAMYCINS +RIFE +RIFELY +RIFENESS +RIFENESSES +RIFER +RIFEST +RIFF +RIFFED +RIFFING +RIFFLE +RIFFLED +RIFFLER +RIFFLERS +RIFFLES +RIFFLING +RIFFRAFF +RIFFRAFFS +RIFFS +RIFLE +RIFLEBIRD +RIFLEBIRDS +RIFLED +RIFLEMAN +RIFLEMEN +RIFLER +RIFLERIES +RIFLERS +RIFLERY +RIFLES +RIFLING +RIFLINGS +RIFLIP +RIFLIPS +RIFS +RIFT +RIFTED +RIFTING +RIFTLESS +RIFTS +RIG +RIGADOON +RIGADOONS +RIGAMAROLE +RIGAMAROLES +RIGATONI +RIGATONIS +RIGAUDON +RIGAUDONS +RIGGED +RIGGER +RIGGERS +RIGGING +RIGGINGS +RIGHT +RIGHTED +RIGHTEOUS +RIGHTEOUSLY +RIGHTEOUSNESS +RIGHTEOUSNESSES +RIGHTER +RIGHTERS +RIGHTEST +RIGHTFUL +RIGHTFULLY +RIGHTFULNESS +RIGHTFULNESSES +RIGHTIES +RIGHTING +RIGHTISM +RIGHTISMS +RIGHTIST +RIGHTISTS +RIGHTLY +RIGHTMOST +RIGHTNESS +RIGHTNESSES +RIGHTO +RIGHTS +RIGHTSIZE +RIGHTSIZED +RIGHTSIZES +RIGHTSIZING +RIGHTWARD +RIGHTY +RIGID +RIGIDIFICATION +RIGIDIFICATIONS +RIGIDIFIED +RIGIDIFIES +RIGIDIFY +RIGIDIFYING +RIGIDITIES +RIGIDITY +RIGIDLY +RIGIDNESS +RIGIDNESSES +RIGMAROLE +RIGMAROLES +RIGOR +RIGORISM +RIGORISMS +RIGORIST +RIGORISTIC +RIGORISTS +RIGOROUS +RIGOROUSLY +RIGOROUSNESS +RIGOROUSNESSES +RIGORS +RIGOUR +RIGOURS +RIGS +RIJSTAFEL +RIJSTAFELS +RIJSTTAFEL +RIJSTTAFELS +RIKISHA +RIKISHAS +RIKSHAW +RIKSHAWS +RILE +RILED +RILES +RILEY +RILIEVI +RILIEVO +RILING +RILL +RILLE +RILLED +RILLES +RILLET +RILLETS +RILLETTES +RILLING +RILLS +RIM +RIME +RIMED +RIMER +RIMERS +RIMES +RIMESTER +RIMESTERS +RIMFIRE +RIMFIRES +RIMIER +RIMIEST +RIMINESS +RIMINESSES +RIMING +RIMLAND +RIMLANDS +RIMLESS +RIMMED +RIMMER +RIMMERS +RIMMING +RIMOSE +RIMOSELY +RIMOSITIES +RIMOSITY +RIMOUS +RIMPLE +RIMPLED +RIMPLES +RIMPLING +RIMROCK +RIMROCKS +RIMS +RIMSHOT +RIMSHOTS +RIMY +RIN +RIND +RINDED +RINDERPEST +RINDERPESTS +RINDLESS +RINDS +RINDY +RING +RINGBARK +RINGBARKED +RINGBARKING +RINGBARKS +RINGBOLT +RINGBOLTS +RINGBONE +RINGBONES +RINGDOVE +RINGDOVES +RINGED +RINGENT +RINGER +RINGERS +RINGGIT +RINGGITS +RINGHALS +RINGHALSES +RINGING +RINGINGLY +RINGLEADER +RINGLEADERS +RINGLET +RINGLETED +RINGLETS +RINGLIKE +RINGMASTER +RINGMASTERS +RINGNECK +RINGNECKS +RINGS +RINGSIDE +RINGSIDES +RINGSTRAKED +RINGTAIL +RINGTAILS +RINGTAW +RINGTAWS +RINGTOSS +RINGTOSSES +RINGWORM +RINGWORMS +RINK +RINKS +RINNING +RINS +RINSABLE +RINSE +RINSED +RINSER +RINSERS +RINSES +RINSIBLE +RINSING +RINSINGS +RIOJA +RIOJAS +RIOT +RIOTED +RIOTER +RIOTERS +RIOTING +RIOTOUS +RIOTOUSLY +RIOTOUSNESS +RIOTOUSNESSES +RIOTS +RIP +RIPARIAN +RIPCORD +RIPCORDS +RIPE +RIPED +RIPELY +RIPEN +RIPENED +RIPENER +RIPENERS +RIPENESS +RIPENESSES +RIPENING +RIPENS +RIPER +RIPES +RIPEST +RIPIENI +RIPIENO +RIPIENOS +RIPING +RIPOFF +RIPOFFS +RIPOST +RIPOSTE +RIPOSTED +RIPOSTES +RIPOSTING +RIPOSTS +RIPPABLE +RIPPED +RIPPER +RIPPERS +RIPPING +RIPPINGLY +RIPPLE +RIPPLED +RIPPLER +RIPPLERS +RIPPLES +RIPPLET +RIPPLETS +RIPPLIER +RIPPLIEST +RIPPLING +RIPPLY +RIPRAP +RIPRAPPED +RIPRAPPING +RIPRAPS +RIPS +RIPSAW +RIPSAWED +RIPSAWING +RIPSAWN +RIPSAWS +RIPSNORTER +RIPSNORTERS +RIPSNORTING +RIPSTOP +RIPSTOPS +RIPTIDE +RIPTIDES +RISE +RISEN +RISER +RISERS +RISES +RISHI +RISHIS +RISIBILITIES +RISIBILITY +RISIBLE +RISIBLES +RISIBLY +RISING +RISINGS +RISK +RISKED +RISKER +RISKERS +RISKIER +RISKIEST +RISKILY +RISKINESS +RISKINESSES +RISKING +RISKLESS +RISKS +RISKY +RISORGIMENTO +RISORGIMENTOS +RISOTTO +RISOTTOS +RISQUE +RISSOLE +RISSOLES +RISTRA +RISTRAS +RISUS +RISUSES +RITARD +RITARDANDO +RITARDANDOS +RITARDS +RITE +RITES +RITONAVIR +RITONAVIRS +RITORNELLI +RITORNELLO +RITORNELLOS +RITTER +RITTERS +RITUAL +RITUALISM +RITUALISMS +RITUALIST +RITUALISTIC +RITUALISTICALLY +RITUALISTS +RITUALIZATION +RITUALIZATIONS +RITUALIZE +RITUALIZED +RITUALIZES +RITUALIZING +RITUALLY +RITUALS +RITZ +RITZES +RITZIER +RITZIEST +RITZILY +RITZINESS +RITZINESSES +RITZY +RIVAGE +RIVAGES +RIVAL +RIVALED +RIVALING +RIVALLED +RIVALLING +RIVALRIES +RIVALROUS +RIVALRY +RIVALS +RIVE +RIVED +RIVEN +RIVER +RIVERBANK +RIVERBANKS +RIVERBED +RIVERBEDS +RIVERBOAT +RIVERBOATS +RIVERFRONT +RIVERFRONTS +RIVERHEAD +RIVERHEADS +RIVERINE +RIVERLESS +RIVERLIKE +RIVERS +RIVERSIDE +RIVERSIDES +RIVERWARD +RIVERWARDS +RIVERWEED +RIVERWEEDS +RIVES +RIVET +RIVETED +RIVETER +RIVETERS +RIVETING +RIVETINGLY +RIVETS +RIVETTED +RIVETTING +RIVIERA +RIVIERAS +RIVIERE +RIVIERES +RIVING +RIVULET +RIVULETS +RIVULOSE +RIYAL +RIYALS +ROACH +ROACHED +ROACHES +ROACHING +ROAD +ROADABILITIES +ROADABILITY +ROADBED +ROADBEDS +ROADBLOCK +ROADBLOCKED +ROADBLOCKING +ROADBLOCKS +ROADEO +ROADEOS +ROADHOLDING +ROADHOLDINGS +ROADHOUSE +ROADHOUSES +ROADIE +ROADIES +ROADKILL +ROADKILLS +ROADLESS +ROADRUNNER +ROADRUNNERS +ROADS +ROADSHOW +ROADSHOWS +ROADSIDE +ROADSIDES +ROADSTEAD +ROADSTEADS +ROADSTER +ROADSTERS +ROADWAY +ROADWAYS +ROADWORK +ROADWORKS +ROADWORTHINESS +ROADWORTHY +ROAM +ROAMED +ROAMER +ROAMERS +ROAMING +ROAMS +ROAN +ROANS +ROAR +ROARED +ROARER +ROARERS +ROARING +ROARINGLY +ROARINGS +ROARS +ROAST +ROASTED +ROASTER +ROASTERS +ROASTING +ROASTS +ROB +ROBALO +ROBALOS +ROBAND +ROBANDS +ROBBED +ROBBER +ROBBERIES +ROBBERS +ROBBERY +ROBBIN +ROBBING +ROBBINS +ROBE +ROBED +ROBES +ROBIN +ROBING +ROBINS +ROBLE +ROBLES +ROBORANT +ROBORANTS +ROBOT +ROBOTIC +ROBOTICALLY +ROBOTICS +ROBOTISM +ROBOTISMS +ROBOTIZATION +ROBOTIZATIONS +ROBOTIZE +ROBOTIZED +ROBOTIZES +ROBOTIZING +ROBOTRIES +ROBOTRY +ROBOTS +ROBS +ROBUST +ROBUSTA +ROBUSTAS +ROBUSTER +ROBUSTEST +ROBUSTIOUS +ROBUSTIOUSLY +ROBUSTIOUSNESS +ROBUSTLY +ROBUSTNESS +ROBUSTNESSES +ROC +ROCAILLE +ROCAILLES +ROCAMBOLE +ROCAMBOLES +ROCHET +ROCHETS +ROCK +ROCKABIES +ROCKABILLIES +ROCKABILLY +ROCKABLE +ROCKABY +ROCKABYE +ROCKABYES +ROCKAWAY +ROCKAWAYS +ROCKBOUND +ROCKED +ROCKER +ROCKERIES +ROCKERS +ROCKERY +ROCKET +ROCKETED +ROCKETEER +ROCKETEERS +ROCKETER +ROCKETERS +ROCKETING +ROCKETRIES +ROCKETRY +ROCKETS +ROCKFALL +ROCKFALLS +ROCKFISH +ROCKFISHES +ROCKHOPPER +ROCKHOPPERS +ROCKHOUND +ROCKHOUNDING +ROCKHOUNDINGS +ROCKHOUNDS +ROCKIER +ROCKIEST +ROCKINESS +ROCKINESSES +ROCKING +ROCKINGLY +ROCKLESS +ROCKLIKE +ROCKLING +ROCKLINGS +ROCKOON +ROCKOONS +ROCKROSE +ROCKROSES +ROCKS +ROCKSHAFT +ROCKSHAFTS +ROCKSLIDE +ROCKSLIDES +ROCKWEED +ROCKWEEDS +ROCKWORK +ROCKWORKS +ROCKY +ROCOCO +ROCOCOS +ROCS +ROD +RODDED +RODDING +RODE +RODENT +RODENTICIDE +RODENTICIDES +RODENTS +RODEO +RODEOED +RODEOING +RODEOS +RODES +RODLESS +RODLIKE +RODMAN +RODMEN +RODOMONTADE +RODOMONTADES +RODS +RODSMAN +RODSMEN +ROE +ROEBUCK +ROEBUCKS +ROENTGEN +ROENTGENOGRAM +ROENTGENOGRAMS +ROENTGENOGRAPHY +ROENTGENOLOGIC +ROENTGENOLOGIES +ROENTGENOLOGIST +ROENTGENOLOGY +ROENTGENS +ROES +ROGATION +ROGATIONS +ROGATORY +ROGER +ROGERED +ROGERING +ROGERS +ROGUE +ROGUED +ROGUEING +ROGUERIES +ROGUERY +ROGUES +ROGUING +ROGUISH +ROGUISHLY +ROGUISHNESS +ROGUISHNESSES +ROIL +ROILED +ROILIER +ROILIEST +ROILING +ROILS +ROILY +ROISTER +ROISTERED +ROISTERER +ROISTERERS +ROISTERING +ROISTEROUS +ROISTEROUSLY +ROISTERS +ROLAMITE +ROLAMITES +ROLE +ROLES +ROLF +ROLFED +ROLFER +ROLFERS +ROLFING +ROLFS +ROLL +ROLLAWAY +ROLLAWAYS +ROLLBACK +ROLLBACKS +ROLLED +ROLLER +ROLLERS +ROLLICK +ROLLICKED +ROLLICKING +ROLLICKS +ROLLICKY +ROLLING +ROLLINGS +ROLLMOP +ROLLMOPS +ROLLOUT +ROLLOUTS +ROLLOVER +ROLLOVERS +ROLLS +ROLLTOP +ROLLWAY +ROLLWAYS +ROM +ROMAINE +ROMAINES +ROMAJI +ROMAJIS +ROMAN +ROMANCE +ROMANCED +ROMANCER +ROMANCERS +ROMANCES +ROMANCING +ROMANISE +ROMANISED +ROMANISES +ROMANISING +ROMANIZATION +ROMANIZATIONS +ROMANIZE +ROMANIZED +ROMANIZES +ROMANIZING +ROMANO +ROMANOS +ROMANS +ROMANTIC +ROMANTICALLY +ROMANTICISE +ROMANTICISED +ROMANTICISES +ROMANTICISING +ROMANTICISM +ROMANTICISMS +ROMANTICIST +ROMANTICISTS +ROMANTICIZATION +ROMANTICIZE +ROMANTICIZED +ROMANTICIZES +ROMANTICIZING +ROMANTICS +ROMAUNT +ROMAUNTS +ROMELDALE +ROMELDALES +ROMEO +ROMEOS +ROMP +ROMPED +ROMPER +ROMPERS +ROMPING +ROMPINGLY +ROMPISH +ROMPS +ROMS +RONDEAU +RONDEAUX +RONDEL +RONDELET +RONDELETS +RONDELLE +RONDELLES +RONDELS +RONDO +RONDOS +RONDURE +RONDURES +RONION +RONIONS +RONNEL +RONNELS +RONTGEN +RONTGENS +RONYON +RONYONS +ROOD +ROODS +ROOF +ROOFED +ROOFER +ROOFERS +ROOFIE +ROOFIES +ROOFING +ROOFINGS +ROOFLESS +ROOFLIKE +ROOFLINE +ROOFLINES +ROOFS +ROOFTOP +ROOFTOPS +ROOFTREE +ROOFTREES +ROOK +ROOKED +ROOKERIES +ROOKERY +ROOKIE +ROOKIER +ROOKIES +ROOKIEST +ROOKING +ROOKS +ROOKY +ROOM +ROOMED +ROOMER +ROOMERS +ROOMETTE +ROOMETTES +ROOMFUL +ROOMFULS +ROOMIE +ROOMIER +ROOMIES +ROOMIEST +ROOMILY +ROOMINESS +ROOMINESSES +ROOMING +ROOMMATE +ROOMMATES +ROOMS +ROOMY +ROORBACH +ROORBACHS +ROORBACK +ROORBACKS +ROOSE +ROOSED +ROOSER +ROOSERS +ROOSES +ROOSING +ROOST +ROOSTED +ROOSTER +ROOSTERS +ROOSTING +ROOSTS +ROOT +ROOTAGE +ROOTAGES +ROOTCAP +ROOTCAPS +ROOTED +ROOTEDNESS +ROOTEDNESSES +ROOTER +ROOTERS +ROOTHOLD +ROOTHOLDS +ROOTIER +ROOTIEST +ROOTINESS +ROOTINESSES +ROOTING +ROOTLE +ROOTLED +ROOTLES +ROOTLESS +ROOTLESSNESS +ROOTLESSNESSES +ROOTLET +ROOTLETS +ROOTLIKE +ROOTLING +ROOTS +ROOTSTALK +ROOTSTALKS +ROOTSTOCK +ROOTSTOCKS +ROOTWORM +ROOTWORMS +ROOTY +ROPABLE +ROPE +ROPED +ROPEDANCER +ROPEDANCERS +ROPEDANCING +ROPEDANCINGS +ROPELIKE +ROPER +ROPERIES +ROPERS +ROPERY +ROPES +ROPEWALK +ROPEWALKER +ROPEWALKERS +ROPEWALKS +ROPEWAY +ROPEWAYS +ROPEY +ROPIER +ROPIEST +ROPILY +ROPINESS +ROPINESSES +ROPING +ROPY +ROQUE +ROQUELAURE +ROQUELAURES +ROQUES +ROQUET +ROQUETED +ROQUETING +ROQUETS +ROQUETTE +ROQUETTES +RORQUAL +RORQUALS +ROSACEA +ROSACEAS +ROSACEOUS +ROSANILIN +ROSANILINS +ROSARIA +ROSARIAN +ROSARIANS +ROSARIES +ROSARIUM +ROSARIUMS +ROSARY +ROSCOE +ROSCOES +ROSE +ROSEATE +ROSEATELY +ROSEBAY +ROSEBAYS +ROSEBUD +ROSEBUDS +ROSEBUSH +ROSEBUSHES +ROSED +ROSEFISH +ROSEFISHES +ROSEHIP +ROSEHIPS +ROSELIKE +ROSELLE +ROSELLES +ROSEMALING +ROSEMALINGS +ROSEMARIES +ROSEMARY +ROSEOLA +ROSEOLAR +ROSEOLAS +ROSERIES +ROSEROOT +ROSEROOTS +ROSERY +ROSES +ROSESLUG +ROSESLUGS +ROSET +ROSETS +ROSETTE +ROSETTES +ROSEWATER +ROSEWOOD +ROSEWOODS +ROSHI +ROSHIS +ROSIER +ROSIEST +ROSILY +ROSIN +ROSINED +ROSINESS +ROSINESSES +ROSING +ROSINING +ROSINOL +ROSINOLS +ROSINOUS +ROSINS +ROSINWEED +ROSINWEEDS +ROSINY +ROSOLIO +ROSOLIOS +ROSTELLA +ROSTELLAR +ROSTELLUM +ROSTELLUMS +ROSTER +ROSTERS +ROSTRA +ROSTRAL +ROSTRALLY +ROSTRATE +ROSTRUM +ROSTRUMS +ROSULATE +ROSY +ROT +ROTA +ROTAMETER +ROTAMETERS +ROTARIES +ROTARY +ROTAS +ROTATABLE +ROTATE +ROTATED +ROTATES +ROTATING +ROTATION +ROTATIONAL +ROTATIONS +ROTATIVE +ROTATIVELY +ROTATOR +ROTATORES +ROTATORS +ROTATORY +ROTAVIRUS +ROTAVIRUSES +ROTCH +ROTCHE +ROTCHES +ROTE +ROTENONE +ROTENONES +ROTES +ROTGUT +ROTGUTS +ROTI +ROTIFER +ROTIFERAL +ROTIFERAN +ROTIFERANS +ROTIFERS +ROTIFORM +ROTIS +ROTISSERIE +ROTISSERIES +ROTL +ROTLS +ROTO +ROTOGRAVURE +ROTOGRAVURES +ROTOR +ROTORCRAFT +ROTORS +ROTOS +ROTOTILL +ROTOTILLED +ROTOTILLER +ROTOTILLERS +ROTOTILLING +ROTOTILLS +ROTS +ROTTE +ROTTED +ROTTEN +ROTTENER +ROTTENEST +ROTTENLY +ROTTENNESS +ROTTENNESSES +ROTTENSTONE +ROTTENSTONES +ROTTER +ROTTERS +ROTTES +ROTTING +ROTTWEILER +ROTTWEILERS +ROTUND +ROTUNDA +ROTUNDAS +ROTUNDITIES +ROTUNDITY +ROTUNDLY +ROTUNDNESS +ROTUNDNESSES +ROTURIER +ROTURIERS +ROUBLE +ROUBLES +ROUCHE +ROUCHES +ROUE +ROUEN +ROUENS +ROUES +ROUGE +ROUGED +ROUGES +ROUGH +ROUGHAGE +ROUGHAGES +ROUGHBACK +ROUGHBACKS +ROUGHCAST +ROUGHCASTING +ROUGHCASTS +ROUGHDRIED +ROUGHDRIES +ROUGHDRY +ROUGHDRYING +ROUGHED +ROUGHEN +ROUGHENED +ROUGHENING +ROUGHENS +ROUGHER +ROUGHERS +ROUGHEST +ROUGHHEW +ROUGHHEWED +ROUGHHEWING +ROUGHHEWN +ROUGHHEWS +ROUGHHOUSE +ROUGHHOUSED +ROUGHHOUSES +ROUGHHOUSING +ROUGHIES +ROUGHING +ROUGHISH +ROUGHLEG +ROUGHLEGS +ROUGHLY +ROUGHNECK +ROUGHNECKED +ROUGHNECKING +ROUGHNECKS +ROUGHNESS +ROUGHNESSES +ROUGHRIDER +ROUGHRIDERS +ROUGHS +ROUGHSHOD +ROUGHY +ROUGING +ROUILLE +ROUILLES +ROULADE +ROULADES +ROULEAU +ROULEAUS +ROULEAUX +ROULETTE +ROULETTED +ROULETTES +ROULETTING +ROUND +ROUNDABOUT +ROUNDABOUTNESS +ROUNDABOUTS +ROUNDBALL +ROUNDBALLS +ROUNDED +ROUNDEDNESS +ROUNDEDNESSES +ROUNDEL +ROUNDELAY +ROUNDELAYS +ROUNDELS +ROUNDER +ROUNDERS +ROUNDEST +ROUNDHEADED +ROUNDHEADEDNESS +ROUNDHEEL +ROUNDHEELS +ROUNDHOUSE +ROUNDHOUSES +ROUNDING +ROUNDISH +ROUNDLET +ROUNDLETS +ROUNDLY +ROUNDNESS +ROUNDNESSES +ROUNDS +ROUNDSMAN +ROUNDSMEN +ROUNDTABLE +ROUNDTABLES +ROUNDTRIP +ROUNDTRIPS +ROUNDUP +ROUNDUPS +ROUNDWOOD +ROUNDWOODS +ROUNDWORM +ROUNDWORMS +ROUP +ROUPED +ROUPET +ROUPIER +ROUPIEST +ROUPILY +ROUPING +ROUPS +ROUPY +ROUSE +ROUSEABOUT +ROUSEABOUTS +ROUSED +ROUSEMENT +ROUSEMENTS +ROUSER +ROUSERS +ROUSES +ROUSING +ROUSINGLY +ROUSSEAU +ROUSSEAUS +ROUST +ROUSTABOUT +ROUSTABOUTS +ROUSTED +ROUSTER +ROUSTERS +ROUSTING +ROUSTS +ROUT +ROUTE +ROUTED +ROUTEMAN +ROUTEMEN +ROUTER +ROUTERS +ROUTES +ROUTEWAY +ROUTEWAYS +ROUTH +ROUTHS +ROUTINE +ROUTINELY +ROUTINES +ROUTING +ROUTINISM +ROUTINISMS +ROUTINIST +ROUTINISTS +ROUTINIZATION +ROUTINIZATIONS +ROUTINIZE +ROUTINIZED +ROUTINIZES +ROUTINIZING +ROUTS +ROUX +ROVE +ROVED +ROVEN +ROVER +ROVERS +ROVES +ROVING +ROVINGLY +ROVINGS +ROW +ROWABLE +ROWAN +ROWANBERRIES +ROWANBERRY +ROWANS +ROWBOAT +ROWBOATS +ROWDIER +ROWDIES +ROWDIEST +ROWDILY +ROWDINESS +ROWDINESSES +ROWDY +ROWDYISH +ROWDYISM +ROWDYISMS +ROWED +ROWEL +ROWELED +ROWELING +ROWELLED +ROWELLING +ROWELS +ROWEN +ROWENS +ROWER +ROWERS +ROWING +ROWINGS +ROWLOCK +ROWLOCKS +ROWS +ROWTH +ROWTHS +ROYAL +ROYALISM +ROYALISMS +ROYALIST +ROYALISTS +ROYALLY +ROYALMAST +ROYALMASTS +ROYALS +ROYALTIES +ROYALTY +ROYSTER +ROYSTERED +ROYSTERING +ROYSTERS +ROZZER +ROZZERS +RUANA +RUANAS +RUB +RUBABOO +RUBABOOS +RUBACE +RUBACES +RUBAIYAT +RUBASSE +RUBASSES +RUBATI +RUBATO +RUBATOS +RUBBABOO +RUBBABOOS +RUBBED +RUBBER +RUBBERED +RUBBERIER +RUBBERIEST +RUBBERING +RUBBERIZE +RUBBERIZED +RUBBERIZES +RUBBERIZING +RUBBERLIKE +RUBBERNECK +RUBBERNECKED +RUBBERNECKER +RUBBERNECKERS +RUBBERNECKING +RUBBERNECKS +RUBBERS +RUBBERY +RUBBIES +RUBBING +RUBBINGS +RUBBISH +RUBBISHES +RUBBISHY +RUBBLE +RUBBLED +RUBBLES +RUBBLIER +RUBBLIEST +RUBBLING +RUBBLY +RUBBOARD +RUBBOARDS +RUBBY +RUBDOWN +RUBDOWNS +RUBE +RUBEFACIENT +RUBEFACIENTS +RUBEL +RUBELLA +RUBELLAS +RUBELLITE +RUBELLITES +RUBELS +RUBEOLA +RUBEOLAR +RUBEOLAS +RUBES +RUBESCENT +RUBICUND +RUBICUNDITIES +RUBICUNDITY +RUBIDIC +RUBIDIUM +RUBIDIUMS +RUBIED +RUBIER +RUBIES +RUBIEST +RUBIGO +RUBIGOS +RUBIOUS +RUBLE +RUBLES +RUBOFF +RUBOFFS +RUBOUT +RUBOUTS +RUBRIC +RUBRICAL +RUBRICALLY +RUBRICATE +RUBRICATED +RUBRICATES +RUBRICATING +RUBRICATION +RUBRICATIONS +RUBRICATOR +RUBRICATORS +RUBRICIAN +RUBRICIANS +RUBRICS +RUBS +RUBUS +RUBY +RUBYING +RUBYLIKE +RUBYTHROAT +RUBYTHROATS +RUCHE +RUCHED +RUCHES +RUCHING +RUCHINGS +RUCK +RUCKED +RUCKING +RUCKLE +RUCKLED +RUCKLES +RUCKLING +RUCKS +RUCKSACK +RUCKSACKS +RUCKUS +RUCKUSES +RUCTION +RUCTIONS +RUCTIOUS +RUDBECKIA +RUDBECKIAS +RUDD +RUDDER +RUDDERLESS +RUDDERPOST +RUDDERPOSTS +RUDDERS +RUDDIER +RUDDIEST +RUDDILY +RUDDINESS +RUDDINESSES +RUDDLE +RUDDLED +RUDDLEMAN +RUDDLEMEN +RUDDLES +RUDDLING +RUDDOCK +RUDDOCKS +RUDDS +RUDDY +RUDE +RUDELY +RUDENESS +RUDENESSES +RUDER +RUDERAL +RUDERALS +RUDERIES +RUDERY +RUDESBIES +RUDESBY +RUDEST +RUDIMENT +RUDIMENTAL +RUDIMENTARILY +RUDIMENTARINESS +RUDIMENTARY +RUDIMENTS +RUE +RUED +RUEFUL +RUEFULLY +RUEFULNESS +RUEFULNESSES +RUER +RUERS +RUES +RUFESCENT +RUFF +RUFFE +RUFFED +RUFFES +RUFFIAN +RUFFIANISM +RUFFIANISMS +RUFFIANLY +RUFFIANS +RUFFING +RUFFLE +RUFFLED +RUFFLER +RUFFLERS +RUFFLES +RUFFLIER +RUFFLIEST +RUFFLIKE +RUFFLING +RUFFLY +RUFFS +RUFIYAA +RUFOUS +RUG +RUGA +RUGAE +RUGAL +RUGALACH +RUGATE +RUGBIES +RUGBY +RUGELACH +RUGGED +RUGGEDER +RUGGEDEST +RUGGEDIZATION +RUGGEDIZATIONS +RUGGEDIZE +RUGGEDIZED +RUGGEDIZES +RUGGEDIZING +RUGGEDLY +RUGGEDNESS +RUGGEDNESSES +RUGGER +RUGGERS +RUGGING +RUGLIKE +RUGOLA +RUGOLAS +RUGOSA +RUGOSAS +RUGOSE +RUGOSELY +RUGOSITIES +RUGOSITY +RUGOUS +RUGS +RUGULOSE +RUIN +RUINABLE +RUINATE +RUINATED +RUINATES +RUINATING +RUINATION +RUINATIONS +RUINED +RUINER +RUINERS +RUING +RUINING +RUINOUS +RUINOUSLY +RUINOUSNESS +RUINOUSNESSES +RUINS +RULABLE +RULE +RULED +RULELESS +RULER +RULERS +RULERSHIP +RULERSHIPS +RULES +RULIER +RULIEST +RULING +RULINGS +RULY +RUM +RUMAKI +RUMAKIS +RUMBA +RUMBAED +RUMBAING +RUMBAS +RUMBLE +RUMBLED +RUMBLER +RUMBLERS +RUMBLES +RUMBLING +RUMBLINGS +RUMBLY +RUMBUSTIOUS +RUMBUSTIOUSLY +RUMBUSTIOUSNESS +RUMEN +RUMENS +RUMINA +RUMINAL +RUMINANT +RUMINANTLY +RUMINANTS +RUMINATE +RUMINATED +RUMINATES +RUMINATING +RUMINATION +RUMINATIONS +RUMINATIVE +RUMINATIVELY +RUMINATOR +RUMINATORS +RUMMAGE +RUMMAGED +RUMMAGER +RUMMAGERS +RUMMAGES +RUMMAGING +RUMMER +RUMMERS +RUMMEST +RUMMIER +RUMMIES +RUMMIEST +RUMMY +RUMOR +RUMORED +RUMORING +RUMORMONGER +RUMORMONGERING +RUMORMONGERINGS +RUMORMONGERS +RUMORS +RUMOUR +RUMOURED +RUMOURING +RUMOURS +RUMP +RUMPLE +RUMPLED +RUMPLES +RUMPLESS +RUMPLIER +RUMPLIEST +RUMPLING +RUMPLY +RUMPS +RUMPUS +RUMPUSES +RUMRUNNER +RUMRUNNERS +RUMS +RUN +RUNABOUT +RUNABOUTS +RUNAGATE +RUNAGATES +RUNAROUND +RUNAROUNDS +RUNAWAY +RUNAWAYS +RUNBACK +RUNBACKS +RUNCINATE +RUNDLE +RUNDLES +RUNDLET +RUNDLETS +RUNDOWN +RUNDOWNS +RUNE +RUNELIKE +RUNES +RUNG +RUNGLESS +RUNGS +RUNIC +RUNKLE +RUNKLED +RUNKLES +RUNKLING +RUNLESS +RUNLET +RUNLETS +RUNNEL +RUNNELS +RUNNER +RUNNERS +RUNNIER +RUNNIEST +RUNNINESS +RUNNINESSES +RUNNING +RUNNINGS +RUNNY +RUNOFF +RUNOFFS +RUNOUT +RUNOUTS +RUNOVER +RUNOVERS +RUNROUND +RUNROUNDS +RUNS +RUNT +RUNTIER +RUNTIEST +RUNTINESS +RUNTINESSES +RUNTISH +RUNTISHLY +RUNTS +RUNTY +RUNWAY +RUNWAYS +RUPEE +RUPEES +RUPIAH +RUPIAHS +RUPTURE +RUPTURED +RUPTURES +RUPTURING +RURAL +RURALISE +RURALISED +RURALISES +RURALISING +RURALISM +RURALISMS +RURALIST +RURALISTS +RURALITE +RURALITES +RURALITIES +RURALITY +RURALIZE +RURALIZED +RURALIZES +RURALIZING +RURALLY +RURBAN +RUSE +RUSES +RUSH +RUSHED +RUSHEE +RUSHEES +RUSHER +RUSHERS +RUSHES +RUSHIER +RUSHIEST +RUSHING +RUSHINGS +RUSHLIGHT +RUSHLIGHTS +RUSHLIKE +RUSHY +RUSINE +RUSK +RUSKS +RUSSET +RUSSETING +RUSSETINGS +RUSSETS +RUSSETTING +RUSSETTINGS +RUSSETY +RUSSIFIED +RUSSIFIES +RUSSIFY +RUSSIFYING +RUST +RUSTABLE +RUSTED +RUSTIC +RUSTICAL +RUSTICALLY +RUSTICALS +RUSTICATE +RUSTICATED +RUSTICATES +RUSTICATING +RUSTICATION +RUSTICATIONS +RUSTICATOR +RUSTICATORS +RUSTICITIES +RUSTICITY +RUSTICLY +RUSTICS +RUSTIER +RUSTIEST +RUSTILY +RUSTINESS +RUSTINESSES +RUSTING +RUSTLE +RUSTLED +RUSTLER +RUSTLERS +RUSTLES +RUSTLESS +RUSTLING +RUSTPROOF +RUSTPROOFED +RUSTPROOFING +RUSTPROOFS +RUSTS +RUSTY +RUT +RUTABAGA +RUTABAGAS +RUTH +RUTHENIC +RUTHENIUM +RUTHENIUMS +RUTHERFORDIUM +RUTHERFORDIUMS +RUTHFUL +RUTHFULLY +RUTHFULNESS +RUTHFULNESSES +RUTHLESS +RUTHLESSLY +RUTHLESSNESS +RUTHLESSNESSES +RUTHS +RUTILANT +RUTILE +RUTILES +RUTIN +RUTINS +RUTS +RUTTED +RUTTIER +RUTTIEST +RUTTILY +RUTTINESS +RUTTINESSES +RUTTING +RUTTISH +RUTTISHLY +RUTTISHNESS +RUTTISHNESSES +RUTTY +RYA +RYAS +RYE +RYEGRASS +RYEGRASSES +RYES +RYKE +RYKED +RYKES +RYKING +RYND +RYNDS +RYOKAN +RYOKANS +RYOT +RYOTS +SAB +SABADILLA +SABADILLAS +SABAL +SABALS +SABATON +SABATONS +SABAYON +SABAYONS +SABBAT +SABBATH +SABBATHS +SABBATIC +SABBATICAL +SABBATICALS +SABBATICS +SABBATS +SABBED +SABBING +SABE +SABED +SABEING +SABER +SABERED +SABERING +SABERLIKE +SABERMETRICIAN +SABERMETRICIANS +SABERMETRICS +SABERS +SABES +SABIN +SABINE +SABINES +SABINS +SABIR +SABIRS +SABLE +SABLEFISH +SABLEFISHES +SABLES +SABOT +SABOTAGE +SABOTAGED +SABOTAGES +SABOTAGING +SABOTEUR +SABOTEURS +SABOTS +SABRA +SABRAS +SABRE +SABRED +SABRES +SABRING +SABS +SABULOSE +SABULOUS +SAC +SACAHUISTA +SACAHUISTAS +SACAHUISTE +SACAHUISTES +SACATON +SACATONS +SACBUT +SACBUTS +SACCADE +SACCADES +SACCADIC +SACCATE +SACCHARASE +SACCHARASES +SACCHARIC +SACCHARIDE +SACCHARIDES +SACCHARIFIED +SACCHARIFIES +SACCHARIFY +SACCHARIFYING +SACCHARIMETER +SACCHARIMETERS +SACCHARIN +SACCHARINE +SACCHARINITIES +SACCHARINITY +SACCHARINS +SACCHAROIDAL +SACCHAROMETER +SACCHAROMETERS +SACCHAROMYCES +SACCHAROMYCETES +SACCULAR +SACCULATE +SACCULATED +SACCULATION +SACCULATIONS +SACCULE +SACCULES +SACCULI +SACCULUS +SACERDOTAL +SACERDOTALISM +SACERDOTALISMS +SACERDOTALIST +SACERDOTALISTS +SACERDOTALLY +SACHEM +SACHEMIC +SACHEMS +SACHET +SACHETED +SACHETS +SACK +SACKBUT +SACKBUTS +SACKCLOTH +SACKCLOTHS +SACKED +SACKER +SACKERS +SACKFUL +SACKFULS +SACKING +SACKINGS +SACKLIKE +SACKS +SACKSFUL +SACLIKE +SACQUE +SACQUES +SACRA +SACRAL +SACRALIZE +SACRALIZED +SACRALIZES +SACRALIZING +SACRALS +SACRAMENT +SACRAMENTAL +SACRAMENTALISM +SACRAMENTALISMS +SACRAMENTALIST +SACRAMENTALISTS +SACRAMENTALLY +SACRAMENTALS +SACRAMENTS +SACRARIA +SACRARIAL +SACRARIUM +SACRED +SACREDLY +SACREDNESS +SACREDNESSES +SACRIFICE +SACRIFICED +SACRIFICER +SACRIFICERS +SACRIFICES +SACRIFICIAL +SACRIFICIALLY +SACRIFICING +SACRILEGE +SACRILEGES +SACRILEGIOUS +SACRILEGIOUSLY +SACRING +SACRINGS +SACRIST +SACRISTAN +SACRISTANS +SACRISTIES +SACRISTS +SACRISTY +SACROILIAC +SACROILIACS +SACROSANCT +SACROSANCTITIES +SACROSANCTITY +SACRUM +SACRUMS +SACS +SAD +SADDEN +SADDENED +SADDENING +SADDENS +SADDER +SADDEST +SADDHU +SADDHUS +SADDLE +SADDLEBAG +SADDLEBAGS +SADDLEBOW +SADDLEBOWS +SADDLEBRED +SADDLEBREDS +SADDLECLOTH +SADDLECLOTHS +SADDLED +SADDLELESS +SADDLER +SADDLERIES +SADDLERS +SADDLERY +SADDLES +SADDLETREE +SADDLETREES +SADDLING +SADE +SADES +SADHE +SADHES +SADHU +SADHUS +SADI +SADIRON +SADIRONS +SADIS +SADISM +SADISMS +SADIST +SADISTIC +SADISTICALLY +SADISTS +SADLY +SADNESS +SADNESSES +SADOMASOCHISM +SADOMASOCHISMS +SADOMASOCHIST +SADOMASOCHISTIC +SADOMASOCHISTS +SAE +SAFARI +SAFARIED +SAFARIING +SAFARIS +SAFE +SAFECRACKER +SAFECRACKERS +SAFECRACKING +SAFECRACKINGS +SAFEGUARD +SAFEGUARDED +SAFEGUARDING +SAFEGUARDS +SAFEKEEPING +SAFEKEEPINGS +SAFELIGHT +SAFELIGHTS +SAFELY +SAFENESS +SAFENESSES +SAFER +SAFES +SAFEST +SAFETIED +SAFETIES +SAFETY +SAFETYING +SAFETYMAN +SAFETYMEN +SAFFLOWER +SAFFLOWERS +SAFFRON +SAFFRONS +SAFRANIN +SAFRANINE +SAFRANINES +SAFRANINS +SAFROL +SAFROLE +SAFROLES +SAFROLS +SAG +SAGA +SAGACIOUS +SAGACIOUSLY +SAGACIOUSNESS +SAGACIOUSNESSES +SAGACITIES +SAGACITY +SAGAMAN +SAGAMEN +SAGAMORE +SAGAMORES +SAGANASH +SAGANASHES +SAGAS +SAGBUT +SAGBUTS +SAGE +SAGEBRUSH +SAGEBRUSHES +SAGELY +SAGENESS +SAGENESSES +SAGER +SAGES +SAGEST +SAGGAR +SAGGARD +SAGGARDS +SAGGARED +SAGGARING +SAGGARS +SAGGED +SAGGER +SAGGERED +SAGGERING +SAGGERS +SAGGIER +SAGGIEST +SAGGING +SAGGY +SAGIER +SAGIEST +SAGITTAL +SAGITTALLY +SAGITTARIES +SAGITTARY +SAGITTATE +SAGO +SAGOS +SAGS +SAGUARO +SAGUAROS +SAGUM +SAGY +SAHIB +SAHIBS +SAHIWAL +SAHIWALS +SAHUARO +SAHUAROS +SAICE +SAICES +SAID +SAIDS +SAIGA +SAIGAS +SAIL +SAILABLE +SAILBOARD +SAILBOARDED +SAILBOARDING +SAILBOARDINGS +SAILBOARDS +SAILBOAT +SAILBOATER +SAILBOATERS +SAILBOATING +SAILBOATINGS +SAILBOATS +SAILCLOTH +SAILCLOTHS +SAILED +SAILER +SAILERS +SAILFISH +SAILFISHES +SAILING +SAILINGS +SAILLESS +SAILMAKER +SAILMAKERS +SAILOR +SAILORLY +SAILORS +SAILPLANE +SAILPLANED +SAILPLANER +SAILPLANERS +SAILPLANES +SAILPLANING +SAILS +SAIMIN +SAIMINS +SAIN +SAINED +SAINFOIN +SAINFOINS +SAINING +SAINS +SAINT +SAINTDOM +SAINTDOMS +SAINTED +SAINTHOOD +SAINTHOODS +SAINTING +SAINTLIER +SAINTLIEST +SAINTLIKE +SAINTLINESS +SAINTLINESSES +SAINTLY +SAINTS +SAINTSHIP +SAINTSHIPS +SAITH +SAITHE +SAIYID +SAIYIDS +SAJOU +SAJOUS +SAKE +SAKER +SAKERS +SAKES +SAKI +SAKIS +SAL +SALAAM +SALAAMED +SALAAMING +SALAAMS +SALABILITIES +SALABILITY +SALABLE +SALABLY +SALACIOUS +SALACIOUSLY +SALACIOUSNESS +SALACIOUSNESSES +SALACITIES +SALACITY +SALAD +SALADANG +SALADANGS +SALADS +SALAL +SALALS +SALAMANDER +SALAMANDERS +SALAMANDRINE +SALAMI +SALAMIS +SALARIAT +SALARIATS +SALARIED +SALARIES +SALARY +SALARYING +SALARYMAN +SALARYMEN +SALCHOW +SALCHOWS +SALE +SALEABLE +SALEABLY +SALEP +SALEPS +SALERATUS +SALERATUSES +SALEROOM +SALEROOMS +SALES +SALESCLERK +SALESCLERKS +SALESGIRL +SALESGIRLS +SALESLADIES +SALESLADY +SALESMAN +SALESMANSHIP +SALESMANSHIPS +SALESMEN +SALESPEOPLE +SALESPERSON +SALESPERSONS +SALESROOM +SALESROOMS +SALESWOMAN +SALESWOMEN +SALIC +SALICIN +SALICINE +SALICINES +SALICINS +SALICYLATE +SALICYLATES +SALIENCE +SALIENCES +SALIENCIES +SALIENCY +SALIENT +SALIENTLY +SALIENTS +SALIFIED +SALIFIES +SALIFY +SALIFYING +SALIMETER +SALIMETERS +SALIMETRIES +SALIMETRY +SALINA +SALINAS +SALINE +SALINES +SALINITIES +SALINITY +SALINIZATION +SALINIZATIONS +SALINIZE +SALINIZED +SALINIZES +SALINIZING +SALINOMETER +SALINOMETERS +SALIVA +SALIVARY +SALIVAS +SALIVATE +SALIVATED +SALIVATES +SALIVATING +SALIVATION +SALIVATIONS +SALIVATOR +SALIVATORS +SALL +SALLET +SALLETS +SALLIED +SALLIER +SALLIERS +SALLIES +SALLOW +SALLOWED +SALLOWER +SALLOWEST +SALLOWING +SALLOWISH +SALLOWLY +SALLOWNESS +SALLOWNESSES +SALLOWS +SALLOWY +SALLY +SALLYING +SALMAGUNDI +SALMAGUNDIS +SALMI +SALMIS +SALMON +SALMONBERRIES +SALMONBERRY +SALMONELLA +SALMONELLAE +SALMONELLAS +SALMONELLOSES +SALMONELLOSIS +SALMONID +SALMONIDS +SALMONOID +SALMONOIDS +SALMONS +SALOL +SALOLS +SALOMETER +SALOMETERS +SALON +SALONS +SALOON +SALOONS +SALOOP +SALOOPS +SALP +SALPA +SALPAE +SALPAS +SALPIAN +SALPIANS +SALPID +SALPIDS +SALPIFORM +SALPIGLOSSES +SALPIGLOSSIS +SALPINGES +SALPINGITIS +SALPINGITISES +SALPINX +SALPS +SALS +SALSA +SALSAS +SALSIFIES +SALSIFY +SALSILLA +SALSILLAS +SALT +SALTANT +SALTARELLO +SALTARELLOS +SALTATION +SALTATIONS +SALTATORIAL +SALTATORY +SALTBOX +SALTBOXES +SALTBUSH +SALTBUSHES +SALTCELLAR +SALTCELLARS +SALTCHUCK +SALTCHUCKS +SALTED +SALTER +SALTERN +SALTERNS +SALTERS +SALTEST +SALTIE +SALTIER +SALTIERS +SALTIES +SALTIEST +SALTILY +SALTIMBOCCA +SALTIMBOCCAS +SALTINE +SALTINES +SALTINESS +SALTINESSES +SALTING +SALTINGS +SALTIRE +SALTIRES +SALTISH +SALTLESS +SALTLIKE +SALTNESS +SALTNESSES +SALTPAN +SALTPANS +SALTPETER +SALTPETERS +SALTPETRE +SALTPETRES +SALTS +SALTSHAKER +SALTSHAKERS +SALTWATER +SALTWORK +SALTWORKS +SALTWORT +SALTWORTS +SALTY +SALUBRIOUS +SALUBRIOUSLY +SALUBRIOUSNESS +SALUBRITIES +SALUBRITY +SALUKI +SALUKIS +SALURETIC +SALURETICS +SALUTARILY +SALUTARINESS +SALUTARINESSES +SALUTARY +SALUTATION +SALUTATIONAL +SALUTATIONS +SALUTATORIAN +SALUTATORIANS +SALUTATORIES +SALUTATORY +SALUTE +SALUTED +SALUTER +SALUTERS +SALUTES +SALUTIFEROUS +SALUTING +SALVABLE +SALVABLY +SALVAGE +SALVAGEABILITY +SALVAGEABLE +SALVAGED +SALVAGEE +SALVAGEES +SALVAGER +SALVAGERS +SALVAGES +SALVAGING +SALVARSAN +SALVARSANS +SALVATION +SALVATIONAL +SALVATIONISM +SALVATIONISMS +SALVATIONIST +SALVATIONISTS +SALVATIONS +SALVE +SALVED +SALVER +SALVERFORM +SALVERS +SALVES +SALVIA +SALVIAS +SALVIFIC +SALVING +SALVO +SALVOED +SALVOES +SALVOING +SALVOR +SALVORS +SALVOS +SAMADHI +SAMADHIS +SAMARA +SAMARAS +SAMARITAN +SAMARITANS +SAMARIUM +SAMARIUMS +SAMARSKITE +SAMARSKITES +SAMBA +SAMBAED +SAMBAING +SAMBAL +SAMBALS +SAMBAR +SAMBARS +SAMBAS +SAMBHAR +SAMBHARS +SAMBHUR +SAMBHURS +SAMBO +SAMBOS +SAMBUCA +SAMBUCAS +SAMBUKE +SAMBUKES +SAMBUR +SAMBURS +SAME +SAMECH +SAMECHS +SAMEK +SAMEKH +SAMEKHS +SAMEKS +SAMENESS +SAMENESSES +SAMIEL +SAMIELS +SAMISEN +SAMISENS +SAMITE +SAMITES +SAMIZDAT +SAMIZDATS +SAMLET +SAMLETS +SAMOSA +SAMOSAS +SAMOVAR +SAMOVARS +SAMOYED +SAMOYEDS +SAMP +SAMPAN +SAMPANS +SAMPHIRE +SAMPHIRES +SAMPLE +SAMPLED +SAMPLER +SAMPLERS +SAMPLES +SAMPLING +SAMPLINGS +SAMPS +SAMSARA +SAMSARAS +SAMSHU +SAMSHUS +SAMURAI +SAMURAIS +SANATIVE +SANATORIA +SANATORIUM +SANATORIUMS +SANBENITO +SANBENITOS +SANCTA +SANCTIFICATION +SANCTIFICATIONS +SANCTIFIED +SANCTIFIER +SANCTIFIERS +SANCTIFIES +SANCTIFY +SANCTIFYING +SANCTIMONIES +SANCTIMONIOUS +SANCTIMONIOUSLY +SANCTIMONY +SANCTION +SANCTIONABLE +SANCTIONED +SANCTIONING +SANCTIONS +SANCTITIES +SANCTITY +SANCTUARIES +SANCTUARY +SANCTUM +SANCTUMS +SAND +SANDABLE +SANDAL +SANDALED +SANDALING +SANDALLED +SANDALLING +SANDALS +SANDALWOOD +SANDALWOODS +SANDARAC +SANDARACS +SANDBAG +SANDBAGGED +SANDBAGGER +SANDBAGGERS +SANDBAGGING +SANDBAGS +SANDBANK +SANDBANKS +SANDBAR +SANDBARS +SANDBLAST +SANDBLASTED +SANDBLASTER +SANDBLASTERS +SANDBLASTING +SANDBLASTS +SANDBOX +SANDBOXES +SANDBUR +SANDBURR +SANDBURRS +SANDBURS +SANDCRACK +SANDCRACKS +SANDDAB +SANDDABS +SANDED +SANDER +SANDERLING +SANDERLINGS +SANDERS +SANDFISH +SANDFISHES +SANDFLIES +SANDFLY +SANDGLASS +SANDGLASSES +SANDGROUSE +SANDGROUSES +SANDHI +SANDHIS +SANDHOG +SANDHOGS +SANDIER +SANDIEST +SANDINESS +SANDINESSES +SANDING +SANDLESS +SANDLIKE +SANDLING +SANDLINGS +SANDLOT +SANDLOTS +SANDLOTTER +SANDLOTTERS +SANDMAN +SANDMEN +SANDPAINTING +SANDPAINTINGS +SANDPAPER +SANDPAPERED +SANDPAPERING +SANDPAPERS +SANDPAPERY +SANDPEEP +SANDPEEPS +SANDPILE +SANDPILES +SANDPIPER +SANDPIPERS +SANDPIT +SANDPITS +SANDS +SANDSHOE +SANDSHOES +SANDSOAP +SANDSOAPS +SANDSPUR +SANDSPURS +SANDSTONE +SANDSTONES +SANDSTORM +SANDSTORMS +SANDWICH +SANDWICHED +SANDWICHES +SANDWICHING +SANDWORM +SANDWORMS +SANDWORT +SANDWORTS +SANDY +SANE +SANED +SANELY +SANENESS +SANENESSES +SANER +SANES +SANEST +SANG +SANGA +SANGAR +SANGAREE +SANGAREES +SANGARS +SANGAS +SANGER +SANGERS +SANGFROID +SANGFROIDS +SANGH +SANGHS +SANGRIA +SANGRIAS +SANGUINARIA +SANGUINARIAS +SANGUINARILY +SANGUINARY +SANGUINE +SANGUINELY +SANGUINENESS +SANGUINENESSES +SANGUINEOUS +SANGUINES +SANGUINITIES +SANGUINITY +SANICLE +SANICLES +SANIDINE +SANIDINES +SANIES +SANING +SANIOUS +SANITARIA +SANITARIAN +SANITARIANS +SANITARIES +SANITARILY +SANITARIUM +SANITARIUMS +SANITARY +SANITATE +SANITATED +SANITATES +SANITATING +SANITATION +SANITATIONS +SANITIES +SANITISE +SANITISED +SANITISES +SANITISING +SANITIZATION +SANITIZATIONS +SANITIZE +SANITIZED +SANITIZER +SANITIZERS +SANITIZES +SANITIZING +SANITORIA +SANITORIUM +SANITORIUMS +SANITY +SANJAK +SANJAKS +SANK +SANNOP +SANNOPS +SANNUP +SANNUPS +SANNYASI +SANNYASIN +SANNYASINS +SANNYASIS +SANS +SANSAR +SANSARS +SANSCULOTTE +SANSCULOTTES +SANSCULOTTIC +SANSCULOTTISH +SANSCULOTTISM +SANSCULOTTISMS +SANSEI +SANSEIS +SANSERIF +SANSERIFS +SANSEVIERIA +SANSEVIERIAS +SANTALIC +SANTALOL +SANTALOLS +SANTERA +SANTERAS +SANTERIA +SANTERIAS +SANTERO +SANTEROS +SANTIMI +SANTIMS +SANTIMU +SANTIR +SANTIRS +SANTO +SANTOL +SANTOLINA +SANTOLINAS +SANTOLS +SANTONICA +SANTONICAS +SANTONIN +SANTONINS +SANTOOR +SANTOORS +SANTOS +SANTOUR +SANTOURS +SANTUR +SANTURS +SAP +SAPAJOU +SAPAJOUS +SAPANWOOD +SAPANWOODS +SAPHEAD +SAPHEADED +SAPHEADS +SAPHENA +SAPHENAE +SAPHENAS +SAPHENOUS +SAPID +SAPIDITIES +SAPIDITY +SAPIENCE +SAPIENCES +SAPIENCIES +SAPIENCY +SAPIENS +SAPIENT +SAPIENTLY +SAPIENTS +SAPLESS +SAPLESSNESS +SAPLESSNESSES +SAPLING +SAPLINGS +SAPODILLA +SAPODILLAS +SAPOGENIN +SAPOGENINS +SAPONACEOUS +SAPONACEOUSNESS +SAPONATED +SAPONIFIABLE +SAPONIFICATION +SAPONIFICATIONS +SAPONIFIED +SAPONIFIER +SAPONIFIERS +SAPONIFIES +SAPONIFY +SAPONIFYING +SAPONIN +SAPONINE +SAPONINES +SAPONINS +SAPONITE +SAPONITES +SAPOR +SAPORIFIC +SAPOROUS +SAPORS +SAPOTA +SAPOTAS +SAPOTE +SAPOTES +SAPOUR +SAPOURS +SAPPED +SAPPER +SAPPERS +SAPPHIC +SAPPHICS +SAPPHIRE +SAPPHIRES +SAPPHIRINE +SAPPHISM +SAPPHISMS +SAPPHIST +SAPPHISTS +SAPPIER +SAPPIEST +SAPPILY +SAPPINESS +SAPPINESSES +SAPPING +SAPPY +SAPRAEMIA +SAPRAEMIAS +SAPREMIA +SAPREMIAS +SAPREMIC +SAPROBE +SAPROBES +SAPROBIAL +SAPROBIC +SAPROGENIC +SAPROGENICITIES +SAPROGENICITY +SAPROLITE +SAPROLITES +SAPROPEL +SAPROPELS +SAPROPHAGOUS +SAPROPHYTE +SAPROPHYTES +SAPROPHYTIC +SAPROPHYTICALLY +SAPROZOIC +SAPS +SAPSAGO +SAPSAGOS +SAPSUCKER +SAPSUCKERS +SAPWOOD +SAPWOODS +SARABAND +SARABANDE +SARABANDES +SARABANDS +SARAN +SARANS +SARAPE +SARAPES +SARCASM +SARCASMS +SARCASTIC +SARCASTICALLY +SARCENET +SARCENETS +SARCINA +SARCINAE +SARCINAS +SARCOCARP +SARCOCARPS +SARCOID +SARCOIDOSES +SARCOIDOSIS +SARCOIDS +SARCOLEMMA +SARCOLEMMAL +SARCOLEMMAS +SARCOLOGIES +SARCOLOGY +SARCOMA +SARCOMAS +SARCOMATA +SARCOMATOSES +SARCOMATOSIS +SARCOMATOUS +SARCOMERE +SARCOMERES +SARCOPHAGI +SARCOPHAGUS +SARCOPHAGUSES +SARCOPLASM +SARCOPLASMIC +SARCOPLASMS +SARCOSOMAL +SARCOSOME +SARCOSOMES +SARCOUS +SARD +SARDANA +SARDANAS +SARDAR +SARDARS +SARDINE +SARDINED +SARDINES +SARDINING +SARDIUS +SARDIUSES +SARDONIC +SARDONICALLY +SARDONICISM +SARDONICISMS +SARDONYX +SARDONYXES +SARDS +SAREE +SAREES +SARGASSO +SARGASSOS +SARGASSUM +SARGASSUMS +SARGE +SARGES +SARGO +SARGOS +SARI +SARIN +SARINS +SARIS +SARK +SARKIER +SARKIEST +SARKS +SARKY +SARMENT +SARMENTA +SARMENTS +SARMENTUM +SAROD +SARODE +SARODES +SARODIST +SARODISTS +SARODS +SARONG +SARONGS +SAROS +SAROSES +SARRACENIA +SARRACENIAS +SARSAPARILLA +SARSAPARILLAS +SARSAR +SARSARS +SARSEN +SARSENET +SARSENETS +SARSENS +SARSNET +SARSNETS +SARTOR +SARTORIAL +SARTORIALLY +SARTORII +SARTORIUS +SARTORS +SASH +SASHAY +SASHAYED +SASHAYING +SASHAYS +SASHED +SASHES +SASHIMI +SASHIMIS +SASHING +SASHLESS +SASIN +SASINS +SASKATOON +SASKATOONS +SASQUATCH +SASQUATCHES +SASS +SASSABIES +SASSABY +SASSAFRAS +SASSAFRASES +SASSED +SASSES +SASSIER +SASSIES +SASSIEST +SASSILY +SASSINESS +SASSINESSES +SASSING +SASSWOOD +SASSWOODS +SASSY +SASSYWOOD +SASSYWOODS +SASTRUGA +SASTRUGI +SAT +SATANG +SATANGS +SATANIC +SATANICAL +SATANICALLY +SATANISM +SATANISMS +SATANIST +SATANISTS +SATARA +SATARAS +SATAY +SATAYS +SATCHEL +SATCHELED +SATCHELFUL +SATCHELFULS +SATCHELS +SATCHELSFUL +SATE +SATED +SATEEN +SATEENS +SATELLITE +SATELLITES +SATEM +SATES +SATI +SATIABLE +SATIABLY +SATIATE +SATIATED +SATIATES +SATIATING +SATIATION +SATIATIONS +SATIETIES +SATIETY +SATIN +SATINET +SATINETS +SATINETTE +SATINETTES +SATING +SATINPOD +SATINPODS +SATINS +SATINWOOD +SATINWOODS +SATINY +SATIRE +SATIRES +SATIRIC +SATIRICAL +SATIRICALLY +SATIRISE +SATIRISED +SATIRISES +SATIRISING +SATIRIST +SATIRISTS +SATIRIZABLE +SATIRIZE +SATIRIZED +SATIRIZER +SATIRIZERS +SATIRIZES +SATIRIZING +SATIS +SATISFACTION +SATISFACTIONS +SATISFACTORILY +SATISFACTORY +SATISFIABLE +SATISFICE +SATISFICED +SATISFICES +SATISFICING +SATISFIED +SATISFIER +SATISFIERS +SATISFIES +SATISFY +SATISFYING +SATISFYINGLY +SATORI +SATORIS +SATRAP +SATRAPIES +SATRAPS +SATRAPY +SATSUMA +SATSUMAS +SATURABLE +SATURANT +SATURANTS +SATURATE +SATURATED +SATURATER +SATURATERS +SATURATES +SATURATING +SATURATION +SATURATIONS +SATURATOR +SATURATORS +SATURNALIA +SATURNALIAN +SATURNALIANLY +SATURNALIAS +SATURNIID +SATURNIIDS +SATURNINE +SATURNISM +SATURNISMS +SATYAGRAHA +SATYAGRAHAS +SATYR +SATYRIASES +SATYRIASIS +SATYRIC +SATYRICAL +SATYRID +SATYRIDS +SATYRLIKE +SATYRS +SAU +SAUCE +SAUCEBOAT +SAUCEBOATS +SAUCEBOX +SAUCEBOXES +SAUCED +SAUCEPAN +SAUCEPANS +SAUCEPOT +SAUCEPOTS +SAUCER +SAUCERLIKE +SAUCERS +SAUCES +SAUCH +SAUCHS +SAUCIER +SAUCIERS +SAUCIEST +SAUCILY +SAUCINESS +SAUCINESSES +SAUCING +SAUCY +SAUERBRATEN +SAUERBRATENS +SAUERKRAUT +SAUERKRAUTS +SAUGER +SAUGERS +SAUGH +SAUGHS +SAUGHY +SAUL +SAULS +SAULT +SAULTS +SAUNA +SAUNAED +SAUNAING +SAUNAS +SAUNTER +SAUNTERED +SAUNTERER +SAUNTERERS +SAUNTERING +SAUNTERS +SAUREL +SAURELS +SAURIAN +SAURIANS +SAURIES +SAURISCHIAN +SAURISCHIANS +SAUROPOD +SAUROPODS +SAURY +SAUSAGE +SAUSAGES +SAUTE +SAUTED +SAUTEED +SAUTEING +SAUTERNE +SAUTERNES +SAUTES +SAUTOIR +SAUTOIRE +SAUTOIRES +SAUTOIRS +SAVABLE +SAVAGE +SAVAGED +SAVAGELY +SAVAGENESS +SAVAGENESSES +SAVAGER +SAVAGERIES +SAVAGERY +SAVAGES +SAVAGEST +SAVAGING +SAVAGISM +SAVAGISMS +SAVANNA +SAVANNAH +SAVANNAHS +SAVANNAS +SAVANT +SAVANTS +SAVARIN +SAVARINS +SAVATE +SAVATES +SAVE +SAVEABLE +SAVED +SAVELOY +SAVELOYS +SAVER +SAVERS +SAVES +SAVIN +SAVINE +SAVINES +SAVING +SAVINGLY +SAVINGS +SAVINS +SAVIOR +SAVIORS +SAVIOUR +SAVIOURS +SAVOR +SAVORED +SAVORER +SAVORERS +SAVORIER +SAVORIES +SAVORIEST +SAVORILY +SAVORINESS +SAVORINESSES +SAVORING +SAVORLESS +SAVOROUS +SAVORS +SAVORY +SAVOUR +SAVOURED +SAVOURER +SAVOURERS +SAVOURIER +SAVOURIES +SAVOURIEST +SAVOURING +SAVOURS +SAVOURY +SAVOY +SAVOYS +SAVVIED +SAVVIER +SAVVIES +SAVVIEST +SAVVILY +SAVVINESS +SAVVINESSES +SAVVY +SAVVYING +SAW +SAWBILL +SAWBILLS +SAWBONES +SAWBONESES +SAWBUCK +SAWBUCKS +SAWDUST +SAWDUSTS +SAWDUSTY +SAWED +SAWER +SAWERS +SAWFISH +SAWFISHES +SAWFLIES +SAWFLY +SAWHORSE +SAWHORSES +SAWING +SAWLIKE +SAWLOG +SAWLOGS +SAWMILL +SAWMILLS +SAWN +SAWNEY +SAWNEYS +SAWS +SAWTEETH +SAWTIMBER +SAWTIMBERS +SAWTOOTH +SAWYER +SAWYERS +SAX +SAXATILE +SAXES +SAXHORN +SAXHORNS +SAXICOLOUS +SAXIFRAGE +SAXIFRAGES +SAXITOXIN +SAXITOXINS +SAXONIES +SAXONY +SAXOPHONE +SAXOPHONES +SAXOPHONIC +SAXOPHONIST +SAXOPHONISTS +SAXTUBA +SAXTUBAS +SAY +SAYABLE +SAYED +SAYEDS +SAYER +SAYERS +SAYEST +SAYID +SAYIDS +SAYING +SAYINGS +SAYONARA +SAYONARAS +SAYS +SAYST +SAYYID +SAYYIDS +SCAB +SCABBARD +SCABBARDED +SCABBARDING +SCABBARDS +SCABBED +SCABBIER +SCABBIEST +SCABBILY +SCABBING +SCABBLE +SCABBLED +SCABBLES +SCABBLING +SCABBY +SCABIES +SCABIETIC +SCABIOSA +SCABIOSAS +SCABIOUS +SCABIOUSES +SCABLAND +SCABLANDS +SCABLIKE +SCABROUS +SCABROUSLY +SCABROUSNESS +SCABROUSNESSES +SCABS +SCAD +SCADS +SCAFFOLD +SCAFFOLDED +SCAFFOLDING +SCAFFOLDINGS +SCAFFOLDS +SCAG +SCAGLIOLA +SCAGLIOLAS +SCAGS +SCALABLE +SCALABLY +SCALADE +SCALADES +SCALADO +SCALADOS +SCALAGE +SCALAGES +SCALAR +SCALARE +SCALARES +SCALARIFORM +SCALARIFORMLY +SCALARS +SCALATION +SCALATIONS +SCALAWAG +SCALAWAGS +SCALD +SCALDED +SCALDIC +SCALDING +SCALDS +SCALE +SCALED +SCALELESS +SCALELIKE +SCALENE +SCALENI +SCALENUS +SCALEPAN +SCALEPANS +SCALER +SCALERS +SCALES +SCALETAIL +SCALETAILS +SCALEUP +SCALEUPS +SCALIER +SCALIEST +SCALINESS +SCALINESSES +SCALING +SCALL +SCALLAWAG +SCALLAWAGS +SCALLION +SCALLIONS +SCALLOP +SCALLOPED +SCALLOPER +SCALLOPERS +SCALLOPING +SCALLOPINI +SCALLOPINIS +SCALLOPS +SCALLS +SCALLYWAG +SCALLYWAGS +SCALOGRAM +SCALOGRAMS +SCALOPPINE +SCALOPPINES +SCALP +SCALPED +SCALPEL +SCALPELS +SCALPER +SCALPERS +SCALPING +SCALPS +SCALY +SCAM +SCAMMED +SCAMMER +SCAMMERS +SCAMMING +SCAMMONIES +SCAMMONY +SCAMP +SCAMPED +SCAMPER +SCAMPERED +SCAMPERER +SCAMPERERS +SCAMPERING +SCAMPERS +SCAMPI +SCAMPIES +SCAMPING +SCAMPISH +SCAMPS +SCAMS +SCAMSTER +SCAMSTERS +SCAN +SCANDAL +SCANDALED +SCANDALING +SCANDALISE +SCANDALISED +SCANDALISES +SCANDALISING +SCANDALIZE +SCANDALIZED +SCANDALIZES +SCANDALIZING +SCANDALLED +SCANDALLING +SCANDALMONGER +SCANDALMONGERS +SCANDALOUS +SCANDALOUSLY +SCANDALOUSNESS +SCANDALS +SCANDENT +SCANDIA +SCANDIAS +SCANDIC +SCANDIUM +SCANDIUMS +SCANNABLE +SCANNED +SCANNER +SCANNERS +SCANNING +SCANNINGS +SCANS +SCANSION +SCANSIONS +SCANT +SCANTED +SCANTER +SCANTEST +SCANTIER +SCANTIES +SCANTIEST +SCANTILY +SCANTINESS +SCANTINESSES +SCANTING +SCANTLING +SCANTLINGS +SCANTLY +SCANTNESS +SCANTNESSES +SCANTS +SCANTY +SCAPE +SCAPED +SCAPEGOAT +SCAPEGOATED +SCAPEGOATING +SCAPEGOATISM +SCAPEGOATISMS +SCAPEGOATS +SCAPEGRACE +SCAPEGRACES +SCAPES +SCAPHOID +SCAPHOIDS +SCAPHOPOD +SCAPHOPODS +SCAPING +SCAPOLITE +SCAPOLITES +SCAPOSE +SCAPULA +SCAPULAE +SCAPULAR +SCAPULARS +SCAPULARY +SCAPULAS +SCAR +SCARAB +SCARABAEI +SCARABAEUS +SCARABAEUSES +SCARABOID +SCARABS +SCARAMOUCH +SCARAMOUCHE +SCARAMOUCHES +SCARCE +SCARCELY +SCARCENESS +SCARCENESSES +SCARCER +SCARCEST +SCARCITIES +SCARCITY +SCARE +SCARECROW +SCARECROWS +SCARED +SCAREDER +SCAREDEST +SCAREHEAD +SCAREHEADS +SCAREMONGER +SCAREMONGERS +SCARER +SCARERS +SCARES +SCAREY +SCARF +SCARFED +SCARFER +SCARFERS +SCARFING +SCARFPIN +SCARFPINS +SCARFS +SCARFSKIN +SCARFSKINS +SCARIER +SCARIEST +SCARIFICATION +SCARIFICATIONS +SCARIFIED +SCARIFIER +SCARIFIERS +SCARIFIES +SCARIFY +SCARIFYING +SCARIFYINGLY +SCARILY +SCARINESS +SCARINESSES +SCARING +SCARIOSE +SCARIOUS +SCARLATINA +SCARLATINAL +SCARLATINAS +SCARLESS +SCARLET +SCARLETS +SCARP +SCARPED +SCARPER +SCARPERED +SCARPERING +SCARPERS +SCARPH +SCARPHED +SCARPHING +SCARPHS +SCARPING +SCARPS +SCARRED +SCARRIER +SCARRIEST +SCARRING +SCARRY +SCARS +SCART +SCARTED +SCARTING +SCARTS +SCARVES +SCARY +SCAT +SCATBACK +SCATBACKS +SCATHE +SCATHED +SCATHELESS +SCATHES +SCATHING +SCATHINGLY +SCATOLOGICAL +SCATOLOGIES +SCATOLOGY +SCATS +SCATT +SCATTED +SCATTER +SCATTERATION +SCATTERATIONS +SCATTERBRAIN +SCATTERBRAINED +SCATTERBRAINS +SCATTERED +SCATTERER +SCATTERERS +SCATTERGOOD +SCATTERGOODS +SCATTERGRAM +SCATTERGRAMS +SCATTERGUN +SCATTERGUNS +SCATTERING +SCATTERINGLY +SCATTERINGS +SCATTERS +SCATTERSHOT +SCATTIER +SCATTIEST +SCATTING +SCATTS +SCATTY +SCAUP +SCAUPER +SCAUPERS +SCAUPS +SCAUR +SCAURS +SCAVENGE +SCAVENGED +SCAVENGER +SCAVENGERS +SCAVENGES +SCAVENGING +SCENA +SCENARIO +SCENARIOS +SCENARIST +SCENARISTS +SCENAS +SCEND +SCENDED +SCENDING +SCENDS +SCENE +SCENERIES +SCENERY +SCENES +SCENESHIFTER +SCENESHIFTERS +SCENIC +SCENICAL +SCENICALLY +SCENICS +SCENOGRAPHER +SCENOGRAPHERS +SCENOGRAPHIC +SCENOGRAPHIES +SCENOGRAPHY +SCENT +SCENTED +SCENTING +SCENTLESS +SCENTS +SCEPTER +SCEPTERED +SCEPTERING +SCEPTERS +SCEPTIC +SCEPTICAL +SCEPTICISM +SCEPTICISMS +SCEPTICS +SCEPTRAL +SCEPTRE +SCEPTRED +SCEPTRES +SCEPTRING +SCHADENFREUDE +SCHADENFREUDES +SCHAPPE +SCHAPPES +SCHATCHEN +SCHATCHENS +SCHAV +SCHAVS +SCHEDULAR +SCHEDULE +SCHEDULED +SCHEDULER +SCHEDULERS +SCHEDULES +SCHEDULING +SCHEELITE +SCHEELITES +SCHEMA +SCHEMAS +SCHEMATA +SCHEMATIC +SCHEMATICALLY +SCHEMATICS +SCHEMATISM +SCHEMATISMS +SCHEMATIZATION +SCHEMATIZATIONS +SCHEMATIZE +SCHEMATIZED +SCHEMATIZES +SCHEMATIZING +SCHEME +SCHEMED +SCHEMER +SCHEMERS +SCHEMES +SCHEMING +SCHERZANDO +SCHERZANDOS +SCHERZI +SCHERZO +SCHERZOS +SCHILLER +SCHILLERS +SCHILLING +SCHILLINGS +SCHIPPERKE +SCHIPPERKES +SCHISM +SCHISMATIC +SCHISMATICAL +SCHISMATICALLY +SCHISMATICS +SCHISMATIZE +SCHISMATIZED +SCHISMATIZES +SCHISMATIZING +SCHISMS +SCHIST +SCHISTOSE +SCHISTOSITIES +SCHISTOSITY +SCHISTOSOMAL +SCHISTOSOME +SCHISTOSOMES +SCHISTOSOMIASES +SCHISTOSOMIASIS +SCHISTOUS +SCHISTS +SCHIZIER +SCHIZIEST +SCHIZO +SCHIZOCARP +SCHIZOCARPS +SCHIZOGONIC +SCHIZOGONIES +SCHIZOGONOUS +SCHIZOGONY +SCHIZOID +SCHIZOIDS +SCHIZONT +SCHIZONTS +SCHIZOPHRENE +SCHIZOPHRENES +SCHIZOPHRENIA +SCHIZOPHRENIAS +SCHIZOPHRENIC +SCHIZOPHRENICS +SCHIZOPOD +SCHIZOPODS +SCHIZOS +SCHIZY +SCHIZZIER +SCHIZZIEST +SCHIZZY +SCHLEMIEL +SCHLEMIELS +SCHLEMIHL +SCHLEMIHLS +SCHLEP +SCHLEPP +SCHLEPPED +SCHLEPPING +SCHLEPPS +SCHLEPS +SCHLIERE +SCHLIEREN +SCHLIERIC +SCHLOCK +SCHLOCKIER +SCHLOCKIEST +SCHLOCKS +SCHLOCKY +SCHLUB +SCHLUBS +SCHLUMP +SCHLUMPED +SCHLUMPIER +SCHLUMPIEST +SCHLUMPING +SCHLUMPS +SCHLUMPY +SCHMALTZ +SCHMALTZES +SCHMALTZIER +SCHMALTZIEST +SCHMALTZY +SCHMALZ +SCHMALZES +SCHMALZIER +SCHMALZIEST +SCHMALZY +SCHMATTE +SCHMATTES +SCHMEAR +SCHMEARED +SCHMEARING +SCHMEARS +SCHMEER +SCHMEERED +SCHMEERING +SCHMEERS +SCHMELZE +SCHMELZES +SCHMO +SCHMOE +SCHMOES +SCHMOOS +SCHMOOSE +SCHMOOSED +SCHMOOSES +SCHMOOSING +SCHMOOZE +SCHMOOZED +SCHMOOZER +SCHMOOZERS +SCHMOOZES +SCHMOOZIER +SCHMOOZIEST +SCHMOOZING +SCHMOOZY +SCHMOS +SCHMUCK +SCHMUCKS +SCHNAPPER +SCHNAPPERS +SCHNAPPS +SCHNAPS +SCHNAUZER +SCHNAUZERS +SCHNECKE +SCHNECKEN +SCHNITZEL +SCHNITZELS +SCHNOOK +SCHNOOKS +SCHNORKEL +SCHNORKELED +SCHNORKELING +SCHNORKELS +SCHNORRER +SCHNORRERS +SCHNOZ +SCHNOZES +SCHNOZZ +SCHNOZZES +SCHNOZZLE +SCHNOZZLES +SCHOLAR +SCHOLARLY +SCHOLARS +SCHOLARSHIP +SCHOLARSHIPS +SCHOLASTIC +SCHOLASTICALLY +SCHOLASTICATE +SCHOLASTICATES +SCHOLASTICISM +SCHOLASTICISMS +SCHOLASTICS +SCHOLIA +SCHOLIAST +SCHOLIASTIC +SCHOLIASTS +SCHOLIUM +SCHOLIUMS +SCHOOL +SCHOOLBAG +SCHOOLBAGS +SCHOOLBOOK +SCHOOLBOOKS +SCHOOLBOY +SCHOOLBOYISH +SCHOOLBOYS +SCHOOLCHILD +SCHOOLCHILDREN +SCHOOLED +SCHOOLFELLOW +SCHOOLFELLOWS +SCHOOLGIRL +SCHOOLGIRLS +SCHOOLHOUSE +SCHOOLHOUSES +SCHOOLING +SCHOOLINGS +SCHOOLKID +SCHOOLKIDS +SCHOOLMAN +SCHOOLMARM +SCHOOLMARMISH +SCHOOLMARMS +SCHOOLMASTER +SCHOOLMASTERISH +SCHOOLMASTERLY +SCHOOLMASTERS +SCHOOLMATE +SCHOOLMATES +SCHOOLMEN +SCHOOLMISTRESS +SCHOOLROOM +SCHOOLROOMS +SCHOOLS +SCHOOLTEACHER +SCHOOLTEACHERS +SCHOOLTIME +SCHOOLTIMES +SCHOOLWORK +SCHOOLWORKS +SCHOONER +SCHOONERS +SCHORL +SCHORLS +SCHOTTISCHE +SCHOTTISCHES +SCHRIK +SCHRIKS +SCHROD +SCHRODS +SCHTICK +SCHTICKS +SCHTIK +SCHTIKS +SCHUIT +SCHUITS +SCHUL +SCHULN +SCHULS +SCHUSS +SCHUSSBOOMER +SCHUSSBOOMERS +SCHUSSED +SCHUSSER +SCHUSSERS +SCHUSSES +SCHUSSING +SCHVARTZE +SCHVARTZES +SCHWA +SCHWARMEREI +SCHWARMEREIS +SCHWARTZE +SCHWARTZES +SCHWAS +SCIAENID +SCIAENIDS +SCIAENOID +SCIAENOIDS +SCIAMACHIES +SCIAMACHY +SCIATIC +SCIATICA +SCIATICAS +SCIATICS +SCIENCE +SCIENCES +SCIENTIAL +SCIENTIFIC +SCIENTIFICALLY +SCIENTISM +SCIENTISMS +SCIENTIST +SCIENTISTS +SCIENTIZE +SCIENTIZED +SCIENTIZES +SCIENTIZING +SCILICET +SCILLA +SCILLAS +SCIMETAR +SCIMETARS +SCIMITAR +SCIMITARS +SCIMITER +SCIMITERS +SCINCOID +SCINCOIDS +SCINTIGRAPHIC +SCINTIGRAPHIES +SCINTIGRAPHY +SCINTILLA +SCINTILLAE +SCINTILLANT +SCINTILLANTLY +SCINTILLAS +SCINTILLATE +SCINTILLATED +SCINTILLATES +SCINTILLATING +SCINTILLATION +SCINTILLATIONS +SCINTILLATOR +SCINTILLATORS +SCINTILLOMETER +SCINTILLOMETERS +SCIOLISM +SCIOLISMS +SCIOLIST +SCIOLISTIC +SCIOLISTS +SCION +SCIONS +SCIROCCO +SCIROCCOS +SCIRRHI +SCIRRHOID +SCIRRHOUS +SCIRRHUS +SCIRRHUSES +SCISSILE +SCISSION +SCISSIONS +SCISSOR +SCISSORED +SCISSORING +SCISSORS +SCISSORTAIL +SCISSORTAILS +SCISSURE +SCISSURES +SCIURID +SCIURIDS +SCIURINE +SCIURINES +SCIUROID +SCLAFF +SCLAFFED +SCLAFFER +SCLAFFERS +SCLAFFING +SCLAFFS +SCLERA +SCLERAE +SCLERAL +SCLERAS +SCLEREID +SCLEREIDS +SCLERENCHYMA +SCLERENCHYMAS +SCLERITE +SCLERITES +SCLERITIC +SCLERITIS +SCLERITISES +SCLERODERMA +SCLERODERMAS +SCLERODERMATA +SCLEROID +SCLEROMA +SCLEROMAS +SCLEROMATA +SCLEROMETER +SCLEROMETERS +SCLEROPROTEIN +SCLEROPROTEINS +SCLEROSAL +SCLEROSE +SCLEROSED +SCLEROSES +SCLEROSING +SCLEROSIS +SCLEROTIA +SCLEROTIAL +SCLEROTIC +SCLEROTICS +SCLEROTIN +SCLEROTINS +SCLEROTIUM +SCLEROTIZATION +SCLEROTIZATIONS +SCLEROTIZED +SCLEROUS +SCOFF +SCOFFED +SCOFFER +SCOFFERS +SCOFFING +SCOFFLAW +SCOFFLAWS +SCOFFS +SCOLD +SCOLDED +SCOLDER +SCOLDERS +SCOLDING +SCOLDINGS +SCOLDS +SCOLECES +SCOLECITE +SCOLECITES +SCOLEX +SCOLICES +SCOLIOMA +SCOLIOMAS +SCOLIOSES +SCOLIOSIS +SCOLIOTIC +SCOLLOP +SCOLLOPED +SCOLLOPING +SCOLLOPS +SCOLOPENDRA +SCOLOPENDRAS +SCOMBRID +SCOMBRIDS +SCOMBROID +SCOMBROIDS +SCONCE +SCONCED +SCONCES +SCONCHEON +SCONCHEONS +SCONCING +SCONE +SCONES +SCOOCH +SCOOCHED +SCOOCHES +SCOOCHING +SCOOP +SCOOPABLE +SCOOPED +SCOOPER +SCOOPERS +SCOOPFUL +SCOOPFULS +SCOOPING +SCOOPS +SCOOPSFUL +SCOOT +SCOOTCH +SCOOTCHED +SCOOTCHES +SCOOTCHING +SCOOTED +SCOOTER +SCOOTERS +SCOOTING +SCOOTS +SCOP +SCOPE +SCOPED +SCOPES +SCOPING +SCOPOLAMINE +SCOPOLAMINES +SCOPS +SCOPULA +SCOPULAE +SCOPULAS +SCOPULATE +SCORBUTIC +SCORCH +SCORCHED +SCORCHER +SCORCHERS +SCORCHES +SCORCHING +SCORCHINGLY +SCORE +SCOREBOARD +SCOREBOARDS +SCORECARD +SCORECARDS +SCORED +SCOREKEEPER +SCOREKEEPERS +SCORELESS +SCOREPAD +SCOREPADS +SCORER +SCORERS +SCORES +SCORIA +SCORIACEOUS +SCORIAE +SCORIFIED +SCORIFIER +SCORIFIERS +SCORIFIES +SCORIFY +SCORIFYING +SCORING +SCORN +SCORNED +SCORNER +SCORNERS +SCORNFUL +SCORNFULLY +SCORNFULNESS +SCORNFULNESSES +SCORNING +SCORNS +SCORPAENID +SCORPAENIDS +SCORPIOID +SCORPION +SCORPIONS +SCOT +SCOTCH +SCOTCHED +SCOTCHES +SCOTCHING +SCOTER +SCOTERS +SCOTIA +SCOTIAS +SCOTOMA +SCOTOMAS +SCOTOMATA +SCOTOPHIL +SCOTOPIA +SCOTOPIAS +SCOTOPIC +SCOTS +SCOTTIE +SCOTTIES +SCOUNDREL +SCOUNDRELLY +SCOUNDRELS +SCOUR +SCOURED +SCOURER +SCOURERS +SCOURGE +SCOURGED +SCOURGER +SCOURGERS +SCOURGES +SCOURGING +SCOURING +SCOURINGS +SCOURS +SCOUSE +SCOUSES +SCOUT +SCOUTCRAFT +SCOUTCRAFTS +SCOUTED +SCOUTER +SCOUTERS +SCOUTH +SCOUTHER +SCOUTHERED +SCOUTHERING +SCOUTHERS +SCOUTHS +SCOUTING +SCOUTINGS +SCOUTMASTER +SCOUTMASTERS +SCOUTS +SCOW +SCOWDER +SCOWDERED +SCOWDERING +SCOWDERS +SCOWED +SCOWING +SCOWL +SCOWLED +SCOWLER +SCOWLERS +SCOWLING +SCOWLINGLY +SCOWLS +SCOWS +SCRABBLE +SCRABBLED +SCRABBLER +SCRABBLERS +SCRABBLES +SCRABBLIER +SCRABBLIEST +SCRABBLING +SCRABBLY +SCRAG +SCRAGGED +SCRAGGIER +SCRAGGIEST +SCRAGGILY +SCRAGGING +SCRAGGLIER +SCRAGGLIEST +SCRAGGLY +SCRAGGY +SCRAGS +SCRAICH +SCRAICHED +SCRAICHING +SCRAICHS +SCRAIGH +SCRAIGHED +SCRAIGHING +SCRAIGHS +SCRAM +SCRAMBLE +SCRAMBLED +SCRAMBLER +SCRAMBLERS +SCRAMBLES +SCRAMBLING +SCRAMJET +SCRAMJETS +SCRAMMED +SCRAMMING +SCRAMS +SCRANNEL +SCRANNELS +SCRAP +SCRAPBOOK +SCRAPBOOKS +SCRAPE +SCRAPED +SCRAPER +SCRAPERS +SCRAPES +SCRAPHEAP +SCRAPHEAPS +SCRAPIE +SCRAPIES +SCRAPING +SCRAPINGS +SCRAPPAGE +SCRAPPAGES +SCRAPPED +SCRAPPER +SCRAPPERS +SCRAPPIER +SCRAPPIEST +SCRAPPILY +SCRAPPINESS +SCRAPPINESSES +SCRAPPING +SCRAPPLE +SCRAPPLES +SCRAPPY +SCRAPS +SCRATCH +SCRATCHBOARD +SCRATCHBOARDS +SCRATCHED +SCRATCHER +SCRATCHERS +SCRATCHES +SCRATCHIER +SCRATCHIEST +SCRATCHILY +SCRATCHINESS +SCRATCHINESSES +SCRATCHING +SCRATCHY +SCRAWL +SCRAWLED +SCRAWLER +SCRAWLERS +SCRAWLIER +SCRAWLIEST +SCRAWLING +SCRAWLS +SCRAWLY +SCRAWNIER +SCRAWNIEST +SCRAWNINESS +SCRAWNINESSES +SCRAWNY +SCREAK +SCREAKED +SCREAKING +SCREAKS +SCREAKY +SCREAM +SCREAMED +SCREAMER +SCREAMERS +SCREAMING +SCREAMINGLY +SCREAMS +SCREE +SCREECH +SCREECHED +SCREECHER +SCREECHERS +SCREECHES +SCREECHIER +SCREECHIEST +SCREECHING +SCREECHY +SCREED +SCREEDED +SCREEDING +SCREEDS +SCREEN +SCREENABLE +SCREENED +SCREENER +SCREENERS +SCREENFUL +SCREENFULS +SCREENING +SCREENINGS +SCREENLAND +SCREENLANDS +SCREENPLAY +SCREENPLAYS +SCREENS +SCREENWRITER +SCREENWRITERS +SCREES +SCREW +SCREWABLE +SCREWBALL +SCREWBALLS +SCREWBEAN +SCREWBEANS +SCREWDRIVER +SCREWDRIVERS +SCREWED +SCREWER +SCREWERS +SCREWIER +SCREWIEST +SCREWINESS +SCREWINESSES +SCREWING +SCREWLIKE +SCREWS +SCREWUP +SCREWUPS +SCREWWORM +SCREWWORMS +SCREWY +SCRIBAL +SCRIBBLE +SCRIBBLED +SCRIBBLER +SCRIBBLERS +SCRIBBLES +SCRIBBLING +SCRIBBLY +SCRIBE +SCRIBED +SCRIBER +SCRIBERS +SCRIBES +SCRIBING +SCRIED +SCRIES +SCRIEVE +SCRIEVED +SCRIEVES +SCRIEVING +SCRIM +SCRIMMAGE +SCRIMMAGED +SCRIMMAGER +SCRIMMAGERS +SCRIMMAGES +SCRIMMAGING +SCRIMP +SCRIMPED +SCRIMPER +SCRIMPERS +SCRIMPIER +SCRIMPIEST +SCRIMPILY +SCRIMPING +SCRIMPIT +SCRIMPS +SCRIMPY +SCRIMS +SCRIMSHANDER +SCRIMSHANDERS +SCRIMSHAW +SCRIMSHAWED +SCRIMSHAWING +SCRIMSHAWS +SCRIP +SCRIPS +SCRIPT +SCRIPTED +SCRIPTER +SCRIPTERS +SCRIPTING +SCRIPTORIA +SCRIPTORIUM +SCRIPTS +SCRIPTURAL +SCRIPTURALLY +SCRIPTURE +SCRIPTURES +SCRIPTWRITER +SCRIPTWRITERS +SCRIVE +SCRIVED +SCRIVENER +SCRIVENERS +SCRIVES +SCRIVING +SCROD +SCRODS +SCROFULA +SCROFULAS +SCROFULOUS +SCROGGIER +SCROGGIEST +SCROGGY +SCROLL +SCROLLED +SCROLLING +SCROLLS +SCROLLWORK +SCROLLWORKS +SCROOCH +SCROOCHED +SCROOCHES +SCROOCHING +SCROOGE +SCROOGES +SCROOP +SCROOPED +SCROOPING +SCROOPS +SCROOTCH +SCROOTCHED +SCROOTCHES +SCROOTCHING +SCROTA +SCROTAL +SCROTUM +SCROTUMS +SCROUGE +SCROUGED +SCROUGES +SCROUGING +SCROUNGE +SCROUNGED +SCROUNGER +SCROUNGERS +SCROUNGES +SCROUNGIER +SCROUNGIEST +SCROUNGING +SCROUNGY +SCRUB +SCRUBBABLE +SCRUBBED +SCRUBBER +SCRUBBERS +SCRUBBIER +SCRUBBIEST +SCRUBBILY +SCRUBBING +SCRUBBY +SCRUBLAND +SCRUBLANDS +SCRUBS +SCRUBWOMAN +SCRUBWOMEN +SCRUFF +SCRUFFIER +SCRUFFIEST +SCRUFFILY +SCRUFFINESS +SCRUFFINESSES +SCRUFFS +SCRUFFY +SCRUM +SCRUMMAGE +SCRUMMAGED +SCRUMMAGES +SCRUMMAGING +SCRUMMED +SCRUMMING +SCRUMPTIOUS +SCRUMPTIOUSLY +SCRUMS +SCRUNCH +SCRUNCHED +SCRUNCHES +SCRUNCHIE +SCRUNCHIES +SCRUNCHING +SCRUNCHY +SCRUPLE +SCRUPLED +SCRUPLES +SCRUPLING +SCRUPULOSITIES +SCRUPULOSITY +SCRUPULOUS +SCRUPULOUSLY +SCRUPULOUSNESS +SCRUTABLE +SCRUTINEER +SCRUTINEERS +SCRUTINIES +SCRUTINISE +SCRUTINISED +SCRUTINISES +SCRUTINISING +SCRUTINIZE +SCRUTINIZED +SCRUTINIZER +SCRUTINIZERS +SCRUTINIZES +SCRUTINIZING +SCRUTINY +SCRY +SCRYING +SCUBA +SCUBAED +SCUBAING +SCUBAS +SCUD +SCUDDED +SCUDDING +SCUDI +SCUDO +SCUDS +SCUFF +SCUFFED +SCUFFER +SCUFFERS +SCUFFING +SCUFFLE +SCUFFLED +SCUFFLER +SCUFFLERS +SCUFFLES +SCUFFLING +SCUFFS +SCULCH +SCULCHES +SCULK +SCULKED +SCULKER +SCULKERS +SCULKING +SCULKS +SCULL +SCULLED +SCULLER +SCULLERIES +SCULLERS +SCULLERY +SCULLING +SCULLION +SCULLIONS +SCULLS +SCULP +SCULPED +SCULPIN +SCULPING +SCULPINS +SCULPS +SCULPT +SCULPTED +SCULPTING +SCULPTOR +SCULPTORS +SCULPTRESS +SCULPTRESSES +SCULPTS +SCULPTURAL +SCULPTURALLY +SCULPTURE +SCULPTURED +SCULPTURES +SCULPTURESQUE +SCULPTURESQUELY +SCULPTURING +SCULTCH +SCULTCHES +SCUM +SCUMBAG +SCUMBAGS +SCUMBLE +SCUMBLED +SCUMBLES +SCUMBLING +SCUMLESS +SCUMLIKE +SCUMMED +SCUMMER +SCUMMERS +SCUMMIER +SCUMMIEST +SCUMMILY +SCUMMING +SCUMMY +SCUMS +SCUNCHEON +SCUNCHEONS +SCUNGILLI +SCUNGILLIS +SCUNNER +SCUNNERED +SCUNNERING +SCUNNERS +SCUP +SCUPPAUG +SCUPPAUGS +SCUPPER +SCUPPERED +SCUPPERING +SCUPPERNONG +SCUPPERNONGS +SCUPPERS +SCUPS +SCURF +SCURFIER +SCURFIEST +SCURFS +SCURFY +SCURRIED +SCURRIES +SCURRIL +SCURRILE +SCURRILITIES +SCURRILITY +SCURRILOUS +SCURRILOUSLY +SCURRILOUSNESS +SCURRY +SCURRYING +SCURVIER +SCURVIES +SCURVIEST +SCURVILY +SCURVINESS +SCURVINESSES +SCURVY +SCUT +SCUTA +SCUTAGE +SCUTAGES +SCUTATE +SCUTCH +SCUTCHED +SCUTCHEON +SCUTCHEONS +SCUTCHER +SCUTCHERS +SCUTCHES +SCUTCHING +SCUTE +SCUTELLA +SCUTELLAR +SCUTELLATE +SCUTELLATED +SCUTELLUM +SCUTES +SCUTIFORM +SCUTS +SCUTTER +SCUTTERED +SCUTTERING +SCUTTERS +SCUTTLE +SCUTTLEBUTT +SCUTTLEBUTTS +SCUTTLED +SCUTTLES +SCUTTLING +SCUTUM +SCUTWORK +SCUTWORKS +SCUZZ +SCUZZBALL +SCUZZBALLS +SCUZZES +SCUZZIER +SCUZZIEST +SCUZZY +SCYPHATE +SCYPHI +SCYPHISTOMA +SCYPHISTOMAE +SCYPHISTOMAS +SCYPHOZOAN +SCYPHOZOANS +SCYPHUS +SCYTHE +SCYTHED +SCYTHES +SCYTHING +SEA +SEABAG +SEABAGS +SEABEACH +SEABEACHES +SEABED +SEABEDS +SEABIRD +SEABIRDS +SEABOARD +SEABOARDS +SEABOOT +SEABOOTS +SEABORGIUM +SEABORGIUMS +SEABORNE +SEACOAST +SEACOASTS +SEACOCK +SEACOCKS +SEACRAFT +SEACRAFTS +SEADOG +SEADOGS +SEADROME +SEADROMES +SEAFARER +SEAFARERS +SEAFARING +SEAFARINGS +SEAFLOOR +SEAFLOORS +SEAFOOD +SEAFOODS +SEAFOWL +SEAFOWLS +SEAFRONT +SEAFRONTS +SEAGIRT +SEAGOING +SEAGULL +SEAGULLS +SEAHORSE +SEAHORSES +SEAL +SEALABLE +SEALANT +SEALANTS +SEALED +SEALER +SEALERIES +SEALERS +SEALERY +SEALIFT +SEALIFTED +SEALIFTING +SEALIFTS +SEALING +SEALLIKE +SEALS +SEALSKIN +SEALSKINS +SEAM +SEAMAN +SEAMANLIKE +SEAMANLY +SEAMANSHIP +SEAMANSHIPS +SEAMARK +SEAMARKS +SEAMED +SEAMEN +SEAMER +SEAMERS +SEAMIER +SEAMIEST +SEAMINESS +SEAMINESSES +SEAMING +SEAMLESS +SEAMLESSLY +SEAMLESSNESS +SEAMLESSNESSES +SEAMLIKE +SEAMOUNT +SEAMOUNTS +SEAMS +SEAMSTER +SEAMSTERS +SEAMSTRESS +SEAMSTRESSES +SEAMY +SEANCE +SEANCES +SEAPIECE +SEAPIECES +SEAPLANE +SEAPLANES +SEAPORT +SEAPORTS +SEAQUAKE +SEAQUAKES +SEAR +SEARCH +SEARCHABLE +SEARCHED +SEARCHER +SEARCHERS +SEARCHES +SEARCHING +SEARCHINGLY +SEARCHLESS +SEARCHLIGHT +SEARCHLIGHTS +SEARED +SEARER +SEAREST +SEARING +SEARINGLY +SEAROBIN +SEAROBINS +SEARS +SEAS +SEASCAPE +SEASCAPES +SEASCOUT +SEASCOUTS +SEASHELL +SEASHELLS +SEASHORE +SEASHORES +SEASICK +SEASICKNESS +SEASICKNESSES +SEASIDE +SEASIDES +SEASON +SEASONABLE +SEASONABLENESS +SEASONABLY +SEASONAL +SEASONALITIES +SEASONALITY +SEASONALLY +SEASONALS +SEASONED +SEASONER +SEASONERS +SEASONING +SEASONINGS +SEASONLESS +SEASONS +SEASTRAND +SEASTRANDS +SEAT +SEATBACK +SEATBACKS +SEATBELT +SEATBELTS +SEATED +SEATER +SEATERS +SEATING +SEATINGS +SEATLESS +SEATMATE +SEATMATES +SEATRAIN +SEATRAINS +SEATROUT +SEATROUTS +SEATS +SEATWORK +SEATWORKS +SEAWALL +SEAWALLS +SEAWAN +SEAWANS +SEAWANT +SEAWANTS +SEAWARD +SEAWARDS +SEAWARE +SEAWARES +SEAWATER +SEAWATERS +SEAWAY +SEAWAYS +SEAWEED +SEAWEEDS +SEAWORTHIER +SEAWORTHIEST +SEAWORTHINESS +SEAWORTHINESSES +SEAWORTHY +SEBACEOUS +SEBACIC +SEBASIC +SEBORRHEA +SEBORRHEAS +SEBORRHEIC +SEBUM +SEBUMS +SEC +SECALOSE +SECALOSES +SECANT +SECANTLY +SECANTS +SECATEUR +SECATEURS +SECCO +SECCOS +SECEDE +SECEDED +SECEDER +SECEDERS +SECEDES +SECEDING +SECERN +SECERNED +SECERNING +SECERNS +SECESSION +SECESSIONISM +SECESSIONISMS +SECESSIONIST +SECESSIONISTS +SECESSIONS +SECLUDE +SECLUDED +SECLUDEDLY +SECLUDEDNESS +SECLUDEDNESSES +SECLUDES +SECLUDING +SECLUSION +SECLUSIONS +SECLUSIVE +SECLUSIVELY +SECLUSIVENESS +SECLUSIVENESSES +SECOBARBITAL +SECOBARBITALS +SECONAL +SECONALS +SECOND +SECONDARIES +SECONDARILY +SECONDARINESS +SECONDARINESSES +SECONDARY +SECONDE +SECONDED +SECONDER +SECONDERS +SECONDES +SECONDHAND +SECONDI +SECONDING +SECONDLY +SECONDO +SECONDS +SECPAR +SECPARS +SECRECIES +SECRECY +SECRET +SECRETAGOGUE +SECRETAGOGUES +SECRETARIAL +SECRETARIAT +SECRETARIATS +SECRETARIES +SECRETARY +SECRETARYSHIP +SECRETARYSHIPS +SECRETE +SECRETED +SECRETER +SECRETES +SECRETEST +SECRETIN +SECRETING +SECRETINS +SECRETION +SECRETIONARY +SECRETIONS +SECRETIVE +SECRETIVELY +SECRETIVENESS +SECRETIVENESSES +SECRETLY +SECRETOR +SECRETORIES +SECRETORS +SECRETORY +SECRETS +SECS +SECT +SECTARIAN +SECTARIANISM +SECTARIANISMS +SECTARIANIZE +SECTARIANIZED +SECTARIANIZES +SECTARIANIZING +SECTARIANS +SECTARIES +SECTARY +SECTILE +SECTILITIES +SECTILITY +SECTION +SECTIONAL +SECTIONALISM +SECTIONALISMS +SECTIONALLY +SECTIONALS +SECTIONED +SECTIONING +SECTIONS +SECTOR +SECTORAL +SECTORED +SECTORIAL +SECTORIALS +SECTORING +SECTORS +SECTS +SECULAR +SECULARISE +SECULARISED +SECULARISES +SECULARISING +SECULARISM +SECULARISMS +SECULARIST +SECULARISTIC +SECULARISTS +SECULARITIES +SECULARITY +SECULARIZATION +SECULARIZATIONS +SECULARIZE +SECULARIZED +SECULARIZER +SECULARIZERS +SECULARIZES +SECULARIZING +SECULARLY +SECULARS +SECUND +SECUNDLY +SECUNDUM +SECURABLE +SECURANCE +SECURANCES +SECURE +SECURED +SECURELY +SECUREMENT +SECUREMENTS +SECURENESS +SECURENESSES +SECURER +SECURERS +SECURES +SECUREST +SECURING +SECURITIES +SECURITIZATION +SECURITIZATIONS +SECURITIZE +SECURITIZED +SECURITIZES +SECURITIZING +SECURITY +SEDAN +SEDANS +SEDARIM +SEDATE +SEDATED +SEDATELY +SEDATENESS +SEDATENESSES +SEDATER +SEDATES +SEDATEST +SEDATING +SEDATION +SEDATIONS +SEDATIVE +SEDATIVES +SEDENTARY +SEDER +SEDERS +SEDERUNT +SEDERUNTS +SEDGE +SEDGES +SEDGIER +SEDGIEST +SEDGY +SEDILE +SEDILIA +SEDILIUM +SEDIMENT +SEDIMENTABLE +SEDIMENTARY +SEDIMENTATION +SEDIMENTATIONS +SEDIMENTED +SEDIMENTING +SEDIMENTOLOGIC +SEDIMENTOLOGIES +SEDIMENTOLOGIST +SEDIMENTOLOGY +SEDIMENTS +SEDITION +SEDITIONS +SEDITIOUS +SEDITIOUSLY +SEDITIOUSNESS +SEDITIOUSNESSES +SEDUCE +SEDUCED +SEDUCEMENT +SEDUCEMENTS +SEDUCER +SEDUCERS +SEDUCES +SEDUCIBLE +SEDUCING +SEDUCIVE +SEDUCTION +SEDUCTIONS +SEDUCTIVE +SEDUCTIVELY +SEDUCTIVENESS +SEDUCTIVENESSES +SEDUCTRESS +SEDUCTRESSES +SEDULITIES +SEDULITY +SEDULOUS +SEDULOUSLY +SEDULOUSNESS +SEDULOUSNESSES +SEDUM +SEDUMS +SEE +SEEABLE +SEECATCH +SEECATCHIE +SEED +SEEDBED +SEEDBEDS +SEEDCAKE +SEEDCAKES +SEEDCASE +SEEDCASES +SEEDEATER +SEEDEATERS +SEEDED +SEEDER +SEEDERS +SEEDIER +SEEDIEST +SEEDILY +SEEDINESS +SEEDINESSES +SEEDING +SEEDLESS +SEEDLIKE +SEEDLING +SEEDLINGS +SEEDMAN +SEEDMEN +SEEDPOD +SEEDPODS +SEEDS +SEEDSMAN +SEEDSMEN +SEEDSTOCK +SEEDSTOCKS +SEEDTIME +SEEDTIMES +SEEDY +SEEING +SEEINGS +SEEK +SEEKER +SEEKERS +SEEKING +SEEKS +SEEL +SEELED +SEELING +SEELS +SEELY +SEEM +SEEMED +SEEMER +SEEMERS +SEEMING +SEEMINGLY +SEEMINGS +SEEMLIER +SEEMLIEST +SEEMLINESS +SEEMLINESSES +SEEMLY +SEEMS +SEEN +SEEP +SEEPAGE +SEEPAGES +SEEPED +SEEPIER +SEEPIEST +SEEPING +SEEPS +SEEPY +SEER +SEERESS +SEERESSES +SEERS +SEERSUCKER +SEERSUCKERS +SEES +SEESAW +SEESAWED +SEESAWING +SEESAWS +SEETHE +SEETHED +SEETHES +SEETHING +SEG +SEGETAL +SEGGAR +SEGGARS +SEGMENT +SEGMENTAL +SEGMENTALLY +SEGMENTARY +SEGMENTATION +SEGMENTATIONS +SEGMENTED +SEGMENTING +SEGMENTS +SEGNI +SEGNO +SEGNOS +SEGO +SEGOS +SEGREGANT +SEGREGANTS +SEGREGATE +SEGREGATED +SEGREGATES +SEGREGATING +SEGREGATION +SEGREGATIONIST +SEGREGATIONISTS +SEGREGATIONS +SEGREGATIVE +SEGS +SEGUE +SEGUED +SEGUEING +SEGUES +SEGUIDILLA +SEGUIDILLAS +SEI +SEICENTO +SEICENTOS +SEICHE +SEICHES +SEIDEL +SEIDELS +SEIF +SEIFS +SEIGNEUR +SEIGNEURIAL +SEIGNEURIES +SEIGNEURS +SEIGNEURY +SEIGNIOR +SEIGNIORAGE +SEIGNIORAGES +SEIGNIORIES +SEIGNIORS +SEIGNIORY +SEIGNORAGE +SEIGNORAGES +SEIGNORIAL +SEIGNORIES +SEIGNORY +SEINE +SEINED +SEINER +SEINERS +SEINES +SEINING +SEIS +SEISABLE +SEISE +SEISED +SEISER +SEISERS +SEISES +SEISIN +SEISING +SEISINGS +SEISINS +SEISM +SEISMAL +SEISMIC +SEISMICAL +SEISMICALLY +SEISMICITIES +SEISMICITY +SEISMISM +SEISMISMS +SEISMOGRAM +SEISMOGRAMS +SEISMOGRAPH +SEISMOGRAPHER +SEISMOGRAPHERS +SEISMOGRAPHIC +SEISMOGRAPHIES +SEISMOGRAPHS +SEISMOGRAPHY +SEISMOLOGICAL +SEISMOLOGIES +SEISMOLOGIST +SEISMOLOGISTS +SEISMOLOGY +SEISMOMETER +SEISMOMETERS +SEISMOMETRIC +SEISMOMETRIES +SEISMOMETRY +SEISMS +SEISOR +SEISORS +SEISURE +SEISURES +SEITAN +SEITANS +SEIZABLE +SEIZE +SEIZED +SEIZER +SEIZERS +SEIZES +SEIZIN +SEIZING +SEIZINGS +SEIZINS +SEIZOR +SEIZORS +SEIZURE +SEIZURES +SEJANT +SEJEANT +SEL +SELACHIAN +SELACHIANS +SELADANG +SELADANGS +SELAGINELLA +SELAGINELLAS +SELAH +SELAHS +SELAMLIK +SELAMLIKS +SELCOUTH +SELDOM +SELDOMLY +SELECT +SELECTABLE +SELECTED +SELECTEE +SELECTEES +SELECTING +SELECTION +SELECTIONIST +SELECTIONISTS +SELECTIONS +SELECTIVE +SELECTIVELY +SELECTIVENESS +SELECTIVENESSES +SELECTIVITIES +SELECTIVITY +SELECTLY +SELECTMAN +SELECTMEN +SELECTNESS +SELECTNESSES +SELECTOR +SELECTORS +SELECTS +SELENATE +SELENATES +SELENIC +SELENIDE +SELENIDES +SELENIFEROUS +SELENIOUS +SELENITE +SELENITES +SELENITIC +SELENIUM +SELENIUMS +SELENOCENTRIC +SELENOLOGICAL +SELENOLOGIES +SELENOLOGIST +SELENOLOGISTS +SELENOLOGY +SELENOSES +SELENOSIS +SELENOUS +SELF +SELFDOM +SELFDOMS +SELFED +SELFHEAL +SELFHEALS +SELFHOOD +SELFHOODS +SELFING +SELFISH +SELFISHLY +SELFISHNESS +SELFISHNESSES +SELFLESS +SELFLESSLY +SELFLESSNESS +SELFLESSNESSES +SELFNESS +SELFNESSES +SELFS +SELFSAME +SELFSAMENESS +SELFSAMENESSES +SELFWARD +SELFWARDS +SELKIE +SELKIES +SELL +SELLABLE +SELLE +SELLER +SELLERS +SELLES +SELLING +SELLOFF +SELLOFFS +SELLOTAPE +SELLOTAPED +SELLOTAPES +SELLOTAPING +SELLOUT +SELLOUTS +SELLS +SELS +SELSYN +SELSYNS +SELTZER +SELTZERS +SELVA +SELVAGE +SELVAGED +SELVAGES +SELVAS +SELVEDGE +SELVEDGED +SELVEDGES +SELVES +SEMAINIER +SEMAINIERS +SEMANTEME +SEMANTEMES +SEMANTIC +SEMANTICAL +SEMANTICALLY +SEMANTICIST +SEMANTICISTS +SEMANTICS +SEMAPHORE +SEMAPHORED +SEMAPHORES +SEMAPHORING +SEMASIOLOGICAL +SEMASIOLOGIES +SEMASIOLOGY +SEMATIC +SEMBLABLE +SEMBLABLES +SEMBLABLY +SEMBLANCE +SEMBLANCES +SEME +SEMEIOLOGIES +SEMEIOLOGY +SEMEIOTIC +SEMEIOTICS +SEMEME +SEMEMES +SEMEMIC +SEMEN +SEMENS +SEMES +SEMESTER +SEMESTERS +SEMESTRAL +SEMESTRIAL +SEMI +SEMIABSTRACT +SEMIABSTRACTION +SEMIANGLE +SEMIANGLES +SEMIANNUAL +SEMIANNUALLY +SEMIAQUATIC +SEMIARBOREAL +SEMIARID +SEMIARIDITIES +SEMIARIDITY +SEMIAUTOMATIC +SEMIAUTOMATICS +SEMIAUTONOMOUS +SEMIBALD +SEMIBREVE +SEMIBREVES +SEMICENTENNIAL +SEMICENTENNIALS +SEMICIRCLE +SEMICIRCLES +SEMICIRCULAR +SEMICIVILIZED +SEMICLASSIC +SEMICLASSICAL +SEMICLASSICS +SEMICOLON +SEMICOLONIAL +SEMICOLONIALISM +SEMICOLONIES +SEMICOLONS +SEMICOLONY +SEMICOMA +SEMICOMAS +SEMICOMMERCIAL +SEMICONDUCTING +SEMICONDUCTOR +SEMICONDUCTORS +SEMICONSCIOUS +SEMICRYSTALLINE +SEMICURED +SEMICYLINDRICAL +SEMIDARKNESS +SEMIDARKNESSES +SEMIDEAF +SEMIDEIFIED +SEMIDEIFIES +SEMIDEIFY +SEMIDEIFYING +SEMIDESERT +SEMIDESERTS +SEMIDETACHED +SEMIDIAMETER +SEMIDIAMETERS +SEMIDIURNAL +SEMIDIVINE +SEMIDOCUMENTARY +SEMIDOME +SEMIDOMED +SEMIDOMES +SEMIDOMINANT +SEMIDRY +SEMIDRYING +SEMIDWARF +SEMIDWARFS +SEMIDWARVES +SEMIEMPIRICAL +SEMIERECT +SEMIEVERGREEN +SEMIFEUDAL +SEMIFINAL +SEMIFINALIST +SEMIFINALISTS +SEMIFINALS +SEMIFINISHED +SEMIFIT +SEMIFITTED +SEMIFLEXIBLE +SEMIFLUID +SEMIFLUIDS +SEMIFORMAL +SEMIGALA +SEMIGLOSS +SEMIGLOSSES +SEMIGROUP +SEMIGROUPS +SEMIHARD +SEMIHIGH +SEMIHOBO +SEMIHOBOES +SEMIHOBOS +SEMILEGENDARY +SEMILETHAL +SEMILETHALS +SEMILIQUID +SEMILIQUIDS +SEMILITERATE +SEMILITERATES +SEMILLON +SEMILLONS +SEMILOG +SEMILOGARITHMIC +SEMILUNAR +SEMILUSTROUS +SEMIMAT +SEMIMATT +SEMIMATTE +SEMIMETAL +SEMIMETALLIC +SEMIMETALS +SEMIMICRO +SEMIMILD +SEMIMOIST +SEMIMONASTIC +SEMIMONTHLIES +SEMIMONTHLY +SEMIMUTE +SEMIMYSTICAL +SEMINA +SEMINAL +SEMINALLY +SEMINAR +SEMINARIAN +SEMINARIANS +SEMINARIES +SEMINARIST +SEMINARISTS +SEMINARS +SEMINARY +SEMINATURAL +SEMINIFEROUS +SEMINOMA +SEMINOMAD +SEMINOMADIC +SEMINOMADS +SEMINOMAS +SEMINOMATA +SEMINUDE +SEMINUDITIES +SEMINUDITY +SEMIOFFICIAL +SEMIOFFICIALLY +SEMIOLOGICAL +SEMIOLOGICALLY +SEMIOLOGIES +SEMIOLOGIST +SEMIOLOGISTS +SEMIOLOGY +SEMIOPAQUE +SEMIOPEN +SEMIOSES +SEMIOSIS +SEMIOTIC +SEMIOTICIAN +SEMIOTICIANS +SEMIOTICIST +SEMIOTICISTS +SEMIOTICS +SEMIOVAL +SEMIPALMATED +SEMIPARASITE +SEMIPARASITES +SEMIPARASITIC +SEMIPERMANENT +SEMIPERMEABLE +SEMIPIOUS +SEMIPOLITICAL +SEMIPOPULAR +SEMIPORCELAIN +SEMIPORCELAINS +SEMIPORNOGRAPHY +SEMIPOSTAL +SEMIPOSTALS +SEMIPRECIOUS +SEMIPRIVATE +SEMIPRO +SEMIPROS +SEMIPUBLIC +SEMIQUAVER +SEMIQUAVERS +SEMIRAW +SEMIRELIGIOUS +SEMIRETIRED +SEMIRETIREMENT +SEMIRETIREMENTS +SEMIRIGID +SEMIROUND +SEMIROUNDS +SEMIRURAL +SEMIS +SEMISACRED +SEMISECRET +SEMISEDENTARY +SEMISES +SEMISHRUBBY +SEMISKILLED +SEMISOFT +SEMISOLID +SEMISOLIDS +SEMISTIFF +SEMISUBMERSIBLE +SEMISWEET +SEMISYNTHETIC +SEMITERRESTRIAL +SEMITIST +SEMITISTS +SEMITONAL +SEMITONALLY +SEMITONE +SEMITONES +SEMITONIC +SEMITONICALLY +SEMITRAILER +SEMITRAILERS +SEMITRANSLUCENT +SEMITRANSPARENT +SEMITROPIC +SEMITROPICAL +SEMITROPICS +SEMITRUCK +SEMITRUCKS +SEMIURBAN +SEMIVOWEL +SEMIVOWELS +SEMIWEEKLIES +SEMIWEEKLY +SEMIWILD +SEMIWORKS +SEMIYEARLY +SEMOLINA +SEMOLINAS +SEMPERVIVUM +SEMPERVIVUMS +SEMPITERNAL +SEMPITERNALLY +SEMPITERNITIES +SEMPITERNITY +SEMPLE +SEMPLICE +SEMPRE +SEMPSTRESS +SEMPSTRESSES +SEN +SENARII +SENARIUS +SENARY +SENATE +SENATES +SENATOR +SENATORIAL +SENATORIAN +SENATORS +SENATORSHIP +SENATORSHIPS +SEND +SENDABLE +SENDAL +SENDALS +SENDED +SENDER +SENDERS +SENDING +SENDOFF +SENDOFFS +SENDS +SENDUP +SENDUPS +SENE +SENECA +SENECAS +SENECIO +SENECIOS +SENECTITUDE +SENECTITUDES +SENEGA +SENEGAS +SENESCENCE +SENESCENCES +SENESCENT +SENESCHAL +SENESCHALS +SENGI +SENHOR +SENHORA +SENHORAS +SENHORES +SENHORITA +SENHORITAS +SENHORS +SENILE +SENILELY +SENILES +SENILITIES +SENILITY +SENIOR +SENIORITIES +SENIORITY +SENIORS +SENITI +SENNA +SENNACHIE +SENNACHIES +SENNAS +SENNET +SENNETS +SENNIGHT +SENNIGHTS +SENNIT +SENNITS +SENOPIA +SENOPIAS +SENOR +SENORA +SENORAS +SENORES +SENORITA +SENORITAS +SENORS +SENRYU +SENSA +SENSATE +SENSATED +SENSATELY +SENSATES +SENSATING +SENSATION +SENSATIONAL +SENSATIONALISE +SENSATIONALISED +SENSATIONALISES +SENSATIONALISM +SENSATIONALISMS +SENSATIONALIST +SENSATIONALISTS +SENSATIONALIZE +SENSATIONALIZED +SENSATIONALIZES +SENSATIONALLY +SENSATIONS +SENSE +SENSED +SENSEFUL +SENSEI +SENSEIS +SENSELESS +SENSELESSLY +SENSELESSNESS +SENSELESSNESSES +SENSES +SENSIBILIA +SENSIBILITIES +SENSIBILITY +SENSIBLE +SENSIBLENESS +SENSIBLENESSES +SENSIBLER +SENSIBLES +SENSIBLEST +SENSIBLY +SENSILLA +SENSILLAE +SENSILLUM +SENSING +SENSITISATION +SENSITISATIONS +SENSITISE +SENSITISED +SENSITISES +SENSITISING +SENSITIVE +SENSITIVELY +SENSITIVENESS +SENSITIVENESSES +SENSITIVES +SENSITIVITIES +SENSITIVITY +SENSITIZATION +SENSITIZATIONS +SENSITIZE +SENSITIZED +SENSITIZER +SENSITIZERS +SENSITIZES +SENSITIZING +SENSITOMETER +SENSITOMETERS +SENSITOMETRIC +SENSITOMETRIES +SENSITOMETRY +SENSOR +SENSORIA +SENSORIAL +SENSORIALLY +SENSORIMOTOR +SENSORINEURAL +SENSORIUM +SENSORIUMS +SENSORS +SENSORY +SENSUAL +SENSUALISM +SENSUALISMS +SENSUALIST +SENSUALISTIC +SENSUALISTS +SENSUALITIES +SENSUALITY +SENSUALIZATION +SENSUALIZATIONS +SENSUALIZE +SENSUALIZED +SENSUALIZES +SENSUALIZING +SENSUALLY +SENSUM +SENSUOSITIES +SENSUOSITY +SENSUOUS +SENSUOUSLY +SENSUOUSNESS +SENSUOUSNESSES +SENT +SENTE +SENTENCE +SENTENCED +SENTENCER +SENTENCERS +SENTENCES +SENTENCING +SENTENTIA +SENTENTIAE +SENTENTIAL +SENTENTIOUS +SENTENTIOUSLY +SENTENTIOUSNESS +SENTI +SENTIENCE +SENTIENCES +SENTIENCIES +SENTIENCY +SENTIENT +SENTIENTLY +SENTIENTS +SENTIMENT +SENTIMENTAL +SENTIMENTALISE +SENTIMENTALISED +SENTIMENTALISES +SENTIMENTALISM +SENTIMENTALISMS +SENTIMENTALIST +SENTIMENTALISTS +SENTIMENTALITY +SENTIMENTALIZE +SENTIMENTALIZED +SENTIMENTALIZES +SENTIMENTALLY +SENTIMENTS +SENTIMO +SENTIMOS +SENTINEL +SENTINELED +SENTINELING +SENTINELLED +SENTINELLING +SENTINELS +SENTRIES +SENTRY +SEPAL +SEPALED +SEPALINE +SEPALLED +SEPALOID +SEPALOUS +SEPALS +SEPARABILITIES +SEPARABILITY +SEPARABLE +SEPARABLENESS +SEPARABLENESSES +SEPARABLY +SEPARATE +SEPARATED +SEPARATELY +SEPARATENESS +SEPARATENESSES +SEPARATES +SEPARATING +SEPARATION +SEPARATIONIST +SEPARATIONISTS +SEPARATIONS +SEPARATISM +SEPARATISMS +SEPARATIST +SEPARATISTIC +SEPARATISTS +SEPARATIVE +SEPARATOR +SEPARATORS +SEPIA +SEPIAS +SEPIC +SEPIOLITE +SEPIOLITES +SEPOY +SEPOYS +SEPPUKU +SEPPUKUS +SEPSES +SEPSIS +SEPT +SEPTA +SEPTAGE +SEPTAGES +SEPTAL +SEPTARIA +SEPTARIAN +SEPTARIUM +SEPTATE +SEPTENARIES +SEPTENARII +SEPTENARIUS +SEPTENARY +SEPTENDECILLION +SEPTENNIAL +SEPTENNIALLY +SEPTENTRION +SEPTENTRIONAL +SEPTENTRIONS +SEPTET +SEPTETS +SEPTETTE +SEPTETTES +SEPTIC +SEPTICAL +SEPTICEMIA +SEPTICEMIAS +SEPTICEMIC +SEPTICIDAL +SEPTICITIES +SEPTICITY +SEPTICS +SEPTILLION +SEPTILLIONS +SEPTIME +SEPTIMES +SEPTS +SEPTUAGENARIAN +SEPTUAGENARIANS +SEPTUM +SEPTUMS +SEPTUPLE +SEPTUPLED +SEPTUPLES +SEPTUPLET +SEPTUPLETS +SEPTUPLING +SEPULCHER +SEPULCHERED +SEPULCHERING +SEPULCHERS +SEPULCHRAL +SEPULCHRALLY +SEPULCHRE +SEPULCHRED +SEPULCHRES +SEPULCHRING +SEPULTURE +SEPULTURES +SEQUACIOUS +SEQUACIOUSLY +SEQUACITIES +SEQUACITY +SEQUEL +SEQUELA +SEQUELAE +SEQUELIZE +SEQUELIZED +SEQUELIZES +SEQUELIZING +SEQUELS +SEQUENCE +SEQUENCED +SEQUENCER +SEQUENCERS +SEQUENCES +SEQUENCIES +SEQUENCING +SEQUENCY +SEQUENT +SEQUENTIAL +SEQUENTIALLY +SEQUENTS +SEQUESTER +SEQUESTERED +SEQUESTERING +SEQUESTERS +SEQUESTRA +SEQUESTRATE +SEQUESTRATED +SEQUESTRATES +SEQUESTRATING +SEQUESTRATION +SEQUESTRATIONS +SEQUESTRUM +SEQUESTRUMS +SEQUIN +SEQUINED +SEQUINING +SEQUINNED +SEQUINS +SEQUITUR +SEQUITURS +SEQUOIA +SEQUOIAS +SER +SERA +SERAC +SERACS +SERAGLIO +SERAGLIOS +SERAI +SERAIL +SERAILS +SERAIS +SERAL +SERAPE +SERAPES +SERAPH +SERAPHIC +SERAPHICALLY +SERAPHIM +SERAPHIMS +SERAPHIN +SERAPHS +SERDAB +SERDABS +SERE +SERED +SEREIN +SEREINS +SERENADE +SERENADED +SERENADER +SERENADERS +SERENADES +SERENADING +SERENATA +SERENATAS +SERENATE +SERENDIPITIES +SERENDIPITOUS +SERENDIPITOUSLY +SERENDIPITY +SERENE +SERENELY +SERENENESS +SERENENESSES +SERENER +SERENES +SERENEST +SERENITIES +SERENITY +SERER +SERES +SEREST +SERF +SERFAGE +SERFAGES +SERFDOM +SERFDOMS +SERFHOOD +SERFHOODS +SERFISH +SERFLIKE +SERFS +SERGE +SERGEANCIES +SERGEANCY +SERGEANT +SERGEANTIES +SERGEANTS +SERGEANTY +SERGED +SERGER +SERGERS +SERGES +SERGING +SERGINGS +SERIAL +SERIALISE +SERIALISED +SERIALISES +SERIALISING +SERIALISM +SERIALISMS +SERIALIST +SERIALISTS +SERIALIZATION +SERIALIZATIONS +SERIALIZE +SERIALIZED +SERIALIZES +SERIALIZING +SERIALLY +SERIALS +SERIATE +SERIATED +SERIATELY +SERIATES +SERIATIM +SERIATING +SERIATION +SERIATIONS +SERICEOUS +SERICIN +SERICINS +SERICULTURAL +SERICULTURE +SERICULTURES +SERICULTURIST +SERICULTURISTS +SERIEMA +SERIEMAS +SERIES +SERIF +SERIFED +SERIFFED +SERIFS +SERIGRAPH +SERIGRAPHER +SERIGRAPHERS +SERIGRAPHIES +SERIGRAPHS +SERIGRAPHY +SERIN +SERINE +SERINES +SERING +SERINGA +SERINGAS +SERINS +SERIOCOMIC +SERIOCOMICALLY +SERIOUS +SERIOUSLY +SERIOUSNESS +SERIOUSNESSES +SERJEANT +SERJEANTIES +SERJEANTS +SERJEANTY +SERMON +SERMONETTE +SERMONETTES +SERMONIC +SERMONIZE +SERMONIZED +SERMONIZER +SERMONIZERS +SERMONIZES +SERMONIZING +SERMONS +SEROCONVERSION +SEROCONVERSIONS +SERODIAGNOSES +SERODIAGNOSIS +SERODIAGNOSTIC +SEROLOGIC +SEROLOGICAL +SEROLOGICALLY +SEROLOGIES +SEROLOGIST +SEROLOGISTS +SEROLOGY +SERONEGATIVE +SERONEGATIVITY +SEROPOSITIVE +SEROPOSITIVITY +SEROPURULENT +SEROSA +SEROSAE +SEROSAL +SEROSAS +SEROSITIES +SEROSITY +SEROTINAL +SEROTINE +SEROTINES +SEROTINIES +SEROTINOUS +SEROTINY +SEROTONERGIC +SEROTONIN +SEROTONINERGIC +SEROTONINS +SEROTYPE +SEROTYPED +SEROTYPES +SEROTYPING +SEROUS +SEROVAR +SEROVARS +SEROW +SEROWS +SERPENT +SERPENTINE +SERPENTINELY +SERPENTINES +SERPENTS +SERPIGINES +SERPIGINOUS +SERPIGINOUSLY +SERPIGO +SERPIGOES +SERPIGOS +SERRANID +SERRANIDS +SERRANO +SERRANOID +SERRANOS +SERRATE +SERRATED +SERRATES +SERRATING +SERRATION +SERRATIONS +SERRATURE +SERRATURES +SERRIED +SERRIEDLY +SERRIEDNESS +SERRIEDNESSES +SERRIES +SERRULATE +SERRY +SERRYING +SERS +SERUM +SERUMAL +SERUMS +SERVABLE +SERVAL +SERVALS +SERVANT +SERVANTHOOD +SERVANTHOODS +SERVANTLESS +SERVANTS +SERVE +SERVED +SERVER +SERVERS +SERVES +SERVICE +SERVICEABILITY +SERVICEABLE +SERVICEABLENESS +SERVICEABLY +SERVICEBERRIES +SERVICEBERRY +SERVICED +SERVICEMAN +SERVICEMEN +SERVICER +SERVICERS +SERVICES +SERVICEWOMAN +SERVICEWOMEN +SERVICING +SERVIETTE +SERVIETTES +SERVILE +SERVILELY +SERVILENESS +SERVILENESSES +SERVILITIES +SERVILITY +SERVING +SERVINGS +SERVITOR +SERVITORS +SERVITUDE +SERVITUDES +SERVO +SERVOMECHANISM +SERVOMECHANISMS +SERVOMOTOR +SERVOMOTORS +SERVOS +SESAME +SESAMES +SESAMOID +SESAMOIDS +SESQUICARBONATE +SESQUICENTENARY +SESQUIPEDALIAN +SESQUITERPENE +SESQUITERPENES +SESSILE +SESSILITIES +SESSILITY +SESSION +SESSIONAL +SESSIONS +SESSPOOL +SESSPOOLS +SESTERCE +SESTERCES +SESTERTIA +SESTERTIUM +SESTET +SESTETS +SESTINA +SESTINAS +SESTINE +SESTINES +SET +SETA +SETACEOUS +SETAE +SETAL +SETBACK +SETBACKS +SETENANT +SETENANTS +SETIFORM +SETLINE +SETLINES +SETOFF +SETOFFS +SETON +SETONS +SETOSE +SETOUS +SETOUT +SETOUTS +SETS +SETSCREW +SETSCREWS +SETT +SETTEE +SETTEES +SETTER +SETTERS +SETTING +SETTINGS +SETTLE +SETTLEABLE +SETTLED +SETTLEMENT +SETTLEMENTS +SETTLER +SETTLERS +SETTLES +SETTLING +SETTLINGS +SETTLOR +SETTLORS +SETTS +SETULOSE +SETULOUS +SETUP +SETUPS +SEVEN +SEVENFOLD +SEVENS +SEVENTEEN +SEVENTEENS +SEVENTEENTH +SEVENTEENTHS +SEVENTH +SEVENTHLY +SEVENTHS +SEVENTIES +SEVENTIETH +SEVENTIETHS +SEVENTY +SEVER +SEVERABILITIES +SEVERABILITY +SEVERABLE +SEVERAL +SEVERALFOLD +SEVERALLY +SEVERALS +SEVERALTIES +SEVERALTY +SEVERANCE +SEVERANCES +SEVERE +SEVERED +SEVERELY +SEVERENESS +SEVERENESSES +SEVERER +SEVEREST +SEVERING +SEVERITIES +SEVERITY +SEVERS +SEVICHE +SEVICHES +SEVRUGA +SEVRUGAS +SEW +SEWABILITIES +SEWABILITY +SEWABLE +SEWAGE +SEWAGES +SEWAN +SEWANS +SEWAR +SEWARS +SEWED +SEWER +SEWERAGE +SEWERAGES +SEWERED +SEWERING +SEWERLESS +SEWERLIKE +SEWERS +SEWING +SEWINGS +SEWN +SEWS +SEX +SEXAGENARIAN +SEXAGENARIANS +SEXAGESIMAL +SEXAGESIMALS +SEXDECILLION +SEXDECILLIONS +SEXED +SEXENNIAL +SEXENNIALS +SEXES +SEXIER +SEXIEST +SEXILY +SEXINESS +SEXINESSES +SEXING +SEXISM +SEXISMS +SEXIST +SEXISTS +SEXLESS +SEXLESSLY +SEXLESSNESS +SEXLESSNESSES +SEXOLOGIC +SEXOLOGIES +SEXOLOGIST +SEXOLOGISTS +SEXOLOGY +SEXPLOITATION +SEXPLOITATIONS +SEXPOT +SEXPOTS +SEXT +SEXTAIN +SEXTAINS +SEXTAN +SEXTANS +SEXTANT +SEXTANTS +SEXTARII +SEXTARIUS +SEXTET +SEXTETS +SEXTETTE +SEXTETTES +SEXTILE +SEXTILES +SEXTILLION +SEXTILLIONS +SEXTO +SEXTODECIMO +SEXTODECIMOS +SEXTON +SEXTONS +SEXTOS +SEXTS +SEXTUPLE +SEXTUPLED +SEXTUPLES +SEXTUPLET +SEXTUPLETS +SEXTUPLICATE +SEXTUPLICATED +SEXTUPLICATES +SEXTUPLICATING +SEXTUPLING +SEXTUPLY +SEXUAL +SEXUALITIES +SEXUALITY +SEXUALIZE +SEXUALIZED +SEXUALIZES +SEXUALIZING +SEXUALLY +SEXY +SFERICS +SFORZANDI +SFORZANDO +SFORZANDOS +SFORZATO +SFORZATOS +SFUMATO +SFUMATOS +SGRAFFITI +SGRAFFITO +SH +SHA +SHABBATOT +SHABBIER +SHABBIEST +SHABBILY +SHABBINESS +SHABBINESSES +SHABBY +SHACK +SHACKED +SHACKING +SHACKLE +SHACKLEBONE +SHACKLEBONES +SHACKLED +SHACKLER +SHACKLERS +SHACKLES +SHACKLING +SHACKO +SHACKOES +SHACKOS +SHACKS +SHAD +SHADBERRIES +SHADBERRY +SHADBLOW +SHADBLOWS +SHADBUSH +SHADBUSHES +SHADCHAN +SHADCHANIM +SHADCHANS +SHADDOCK +SHADDOCKS +SHADE +SHADED +SHADELESS +SHADER +SHADERS +SHADES +SHADFLIES +SHADFLY +SHADIER +SHADIEST +SHADILY +SHADINESS +SHADINESSES +SHADING +SHADINGS +SHADKHAN +SHADKHANIM +SHADKHANS +SHADOOF +SHADOOFS +SHADOW +SHADOWBOX +SHADOWBOXED +SHADOWBOXES +SHADOWBOXING +SHADOWED +SHADOWER +SHADOWERS +SHADOWGRAPH +SHADOWGRAPHIES +SHADOWGRAPHS +SHADOWGRAPHY +SHADOWIER +SHADOWIEST +SHADOWILY +SHADOWINESS +SHADOWINESSES +SHADOWING +SHADOWLESS +SHADOWLIKE +SHADOWS +SHADOWY +SHADRACH +SHADRACHS +SHADS +SHADUF +SHADUFS +SHADY +SHAFT +SHAFTED +SHAFTING +SHAFTINGS +SHAFTS +SHAG +SHAGBARK +SHAGBARKS +SHAGGED +SHAGGIER +SHAGGIEST +SHAGGILY +SHAGGINESS +SHAGGINESSES +SHAGGING +SHAGGY +SHAGGYMANE +SHAGGYMANES +SHAGREEN +SHAGREENS +SHAGS +SHAH +SHAHDOM +SHAHDOMS +SHAHS +SHAIRD +SHAIRDS +SHAIRN +SHAIRNS +SHAITAN +SHAITANS +SHAKABLE +SHAKE +SHAKEABLE +SHAKEDOWN +SHAKEDOWNS +SHAKEN +SHAKEOUT +SHAKEOUTS +SHAKER +SHAKERS +SHAKES +SHAKEUP +SHAKEUPS +SHAKIER +SHAKIEST +SHAKILY +SHAKINESS +SHAKINESSES +SHAKING +SHAKO +SHAKOES +SHAKOS +SHAKY +SHALE +SHALED +SHALELIKE +SHALES +SHALEY +SHALIER +SHALIEST +SHALL +SHALLOON +SHALLOONS +SHALLOP +SHALLOPS +SHALLOT +SHALLOTS +SHALLOW +SHALLOWED +SHALLOWER +SHALLOWEST +SHALLOWING +SHALLOWLY +SHALLOWNESS +SHALLOWNESSES +SHALLOWS +SHALOM +SHALOMS +SHALT +SHALY +SHAM +SHAMABLE +SHAMABLY +SHAMAN +SHAMANIC +SHAMANISM +SHAMANISMS +SHAMANIST +SHAMANISTIC +SHAMANISTS +SHAMANS +SHAMAS +SHAMBLE +SHAMBLED +SHAMBLES +SHAMBLING +SHAMBOLIC +SHAME +SHAMEABLE +SHAMEABLY +SHAMED +SHAMEFACED +SHAMEFACEDLY +SHAMEFACEDNESS +SHAMEFAST +SHAMEFUL +SHAMEFULLY +SHAMEFULNESS +SHAMEFULNESSES +SHAMELESS +SHAMELESSLY +SHAMELESSNESS +SHAMELESSNESSES +SHAMES +SHAMING +SHAMISEN +SHAMISENS +SHAMMAS +SHAMMASH +SHAMMASHIM +SHAMMASIM +SHAMMED +SHAMMER +SHAMMERS +SHAMMES +SHAMMIED +SHAMMIES +SHAMMING +SHAMMOS +SHAMMOSIM +SHAMMY +SHAMMYING +SHAMOIS +SHAMOS +SHAMOSIM +SHAMOY +SHAMOYED +SHAMOYING +SHAMOYS +SHAMPOO +SHAMPOOED +SHAMPOOER +SHAMPOOERS +SHAMPOOING +SHAMPOOS +SHAMROCK +SHAMROCKS +SHAMS +SHAMUS +SHAMUSES +SHANACHIE +SHANACHIES +SHANDIES +SHANDY +SHANDYGAFF +SHANDYGAFFS +SHANGHAI +SHANGHAIED +SHANGHAIER +SHANGHAIERS +SHANGHAIING +SHANGHAIS +SHANK +SHANKED +SHANKING +SHANKPIECE +SHANKPIECES +SHANKS +SHANNIES +SHANNY +SHANTEY +SHANTEYS +SHANTI +SHANTIES +SHANTIH +SHANTIHS +SHANTIS +SHANTUNG +SHANTUNGS +SHANTY +SHANTYMAN +SHANTYMEN +SHANTYTOWN +SHANTYTOWNS +SHAPABLE +SHAPE +SHAPEABLE +SHAPED +SHAPELESS +SHAPELESSLY +SHAPELESSNESS +SHAPELESSNESSES +SHAPELIER +SHAPELIEST +SHAPELINESS +SHAPELINESSES +SHAPELY +SHAPEN +SHAPER +SHAPERS +SHAPES +SHAPEUP +SHAPEUPS +SHAPEWEAR +SHAPING +SHARABLE +SHARD +SHARDS +SHARE +SHAREABILITIES +SHAREABILITY +SHAREABLE +SHARECROP +SHARECROPPED +SHARECROPPER +SHARECROPPERS +SHARECROPPING +SHARECROPS +SHARED +SHAREHOLDER +SHAREHOLDERS +SHARER +SHARERS +SHARES +SHAREWARE +SHAREWARES +SHARIA +SHARIAH +SHARIAHS +SHARIAS +SHARIF +SHARIFIAN +SHARIFS +SHARING +SHARK +SHARKED +SHARKER +SHARKERS +SHARKING +SHARKLIKE +SHARKS +SHARKSKIN +SHARKSKINS +SHARN +SHARNS +SHARNY +SHARP +SHARPED +SHARPEN +SHARPENED +SHARPENER +SHARPENERS +SHARPENING +SHARPENS +SHARPER +SHARPERS +SHARPEST +SHARPIE +SHARPIES +SHARPING +SHARPLY +SHARPNESS +SHARPNESSES +SHARPS +SHARPSHOOTER +SHARPSHOOTERS +SHARPSHOOTING +SHARPSHOOTINGS +SHARPY +SHASHLICK +SHASHLICKS +SHASHLIK +SHASHLIKS +SHASLIK +SHASLIKS +SHAT +SHATTER +SHATTERED +SHATTERER +SHATTERERS +SHATTERING +SHATTERINGLY +SHATTERPROOF +SHATTERS +SHAUGH +SHAUGHS +SHAUL +SHAULED +SHAULING +SHAULS +SHAVABLE +SHAVE +SHAVED +SHAVELING +SHAVELINGS +SHAVEN +SHAVER +SHAVERS +SHAVES +SHAVETAIL +SHAVETAILS +SHAVIE +SHAVIES +SHAVING +SHAVINGS +SHAW +SHAWED +SHAWING +SHAWL +SHAWLED +SHAWLING +SHAWLS +SHAWM +SHAWMS +SHAWN +SHAWS +SHAY +SHAYS +SHAZAM +SHE +SHEA +SHEAF +SHEAFED +SHEAFING +SHEAFLIKE +SHEAFS +SHEAL +SHEALING +SHEALINGS +SHEALS +SHEAR +SHEARED +SHEARER +SHEARERS +SHEARING +SHEARINGS +SHEARLEGS +SHEARLING +SHEARLINGS +SHEARS +SHEARWATER +SHEARWATERS +SHEAS +SHEATFISH +SHEATFISHES +SHEATH +SHEATHBILL +SHEATHBILLS +SHEATHE +SHEATHED +SHEATHER +SHEATHERS +SHEATHES +SHEATHING +SHEATHINGS +SHEATHS +SHEAVE +SHEAVED +SHEAVES +SHEAVING +SHEBANG +SHEBANGS +SHEBEAN +SHEBEANS +SHEBEEN +SHEBEENS +SHED +SHEDABLE +SHEDDABLE +SHEDDED +SHEDDER +SHEDDERS +SHEDDING +SHEDLIKE +SHEDS +SHEEN +SHEENED +SHEENEY +SHEENEYS +SHEENFUL +SHEENIE +SHEENIER +SHEENIES +SHEENIEST +SHEENING +SHEENS +SHEENY +SHEEP +SHEEPBERRIES +SHEEPBERRY +SHEEPCOT +SHEEPCOTE +SHEEPCOTES +SHEEPCOTS +SHEEPDOG +SHEEPDOGS +SHEEPFOLD +SHEEPFOLDS +SHEEPHEAD +SHEEPHEADS +SHEEPHERDER +SHEEPHERDERS +SHEEPHERDING +SHEEPHERDINGS +SHEEPISH +SHEEPISHLY +SHEEPISHNESS +SHEEPISHNESSES +SHEEPMAN +SHEEPMEN +SHEEPSHANK +SHEEPSHANKS +SHEEPSHEAD +SHEEPSHEADS +SHEEPSHEARER +SHEEPSHEARERS +SHEEPSHEARING +SHEEPSHEARINGS +SHEEPSKIN +SHEEPSKINS +SHEEPWALK +SHEEPWALKS +SHEER +SHEERED +SHEERER +SHEEREST +SHEERING +SHEERLEGS +SHEERLY +SHEERNESS +SHEERNESSES +SHEERS +SHEESH +SHEET +SHEETED +SHEETER +SHEETERS +SHEETFED +SHEETING +SHEETINGS +SHEETLESS +SHEETLIKE +SHEETROCK +SHEETROCKED +SHEETROCKING +SHEETROCKS +SHEETS +SHEEVE +SHEEVES +SHEGETZ +SHEIK +SHEIKDOM +SHEIKDOMS +SHEIKH +SHEIKHDOM +SHEIKHDOMS +SHEIKHS +SHEIKS +SHEILA +SHEILAS +SHEITAN +SHEITANS +SHEKALIM +SHEKEL +SHEKELIM +SHEKELS +SHELDRAKE +SHELDRAKES +SHELDUCK +SHELDUCKS +SHELF +SHELFFUL +SHELFFULS +SHELFLIKE +SHELL +SHELLAC +SHELLACK +SHELLACKED +SHELLACKING +SHELLACKINGS +SHELLACKS +SHELLACS +SHELLBACK +SHELLBACKS +SHELLBARK +SHELLBARKS +SHELLCRACKER +SHELLCRACKERS +SHELLED +SHELLER +SHELLERS +SHELLFIRE +SHELLFIRES +SHELLFISH +SHELLFISHERIES +SHELLFISHERY +SHELLFISHES +SHELLIER +SHELLIEST +SHELLING +SHELLPROOF +SHELLS +SHELLWORK +SHELLWORKS +SHELLY +SHELTA +SHELTAS +SHELTER +SHELTERBELT +SHELTERBELTS +SHELTERED +SHELTERER +SHELTERERS +SHELTERING +SHELTERLESS +SHELTERS +SHELTIE +SHELTIES +SHELTY +SHELVE +SHELVED +SHELVER +SHELVERS +SHELVES +SHELVIER +SHELVIEST +SHELVING +SHELVINGS +SHELVY +SHENANIGAN +SHENANIGANS +SHEND +SHENDING +SHENDS +SHENT +SHEOL +SHEOLS +SHEPHERD +SHEPHERDED +SHEPHERDESS +SHEPHERDESSES +SHEPHERDING +SHEPHERDS +SHEQALIM +SHEQEL +SHEQELS +SHERBERT +SHERBERTS +SHERBET +SHERBETS +SHERD +SHERDS +SHEREEF +SHEREEFS +SHERGOTTITE +SHERGOTTITES +SHERIF +SHERIFF +SHERIFFDOM +SHERIFFDOMS +SHERIFFS +SHERIFS +SHERLOCK +SHERLOCKS +SHEROOT +SHEROOTS +SHERPA +SHERPAS +SHERRIES +SHERRIS +SHERRISES +SHERRY +SHES +SHETLAND +SHETLANDS +SHEUCH +SHEUCHS +SHEUGH +SHEUGHS +SHEW +SHEWBREAD +SHEWBREADS +SHEWED +SHEWER +SHEWERS +SHEWING +SHEWN +SHEWS +SHH +SHIATSU +SHIATSUS +SHIATZU +SHIATZUS +SHIBAH +SHIBAHS +SHIBBOLETH +SHIBBOLETHS +SHICKER +SHICKERED +SHICKERS +SHICKSA +SHICKSAS +SHIED +SHIEL +SHIELD +SHIELDED +SHIELDER +SHIELDERS +SHIELDING +SHIELDS +SHIELING +SHIELINGS +SHIELS +SHIER +SHIERS +SHIES +SHIEST +SHIFT +SHIFTABLE +SHIFTED +SHIFTER +SHIFTERS +SHIFTIER +SHIFTIEST +SHIFTILY +SHIFTINESS +SHIFTINESSES +SHIFTING +SHIFTLESS +SHIFTLESSLY +SHIFTLESSNESS +SHIFTLESSNESSES +SHIFTS +SHIFTY +SHIGELLA +SHIGELLAE +SHIGELLAS +SHIGELLOSES +SHIGELLOSIS +SHIITAKE +SHIITAKES +SHIKAR +SHIKAREE +SHIKAREES +SHIKARI +SHIKARIS +SHIKARRED +SHIKARRING +SHIKARS +SHIKKER +SHIKKERS +SHIKSA +SHIKSAS +SHIKSE +SHIKSEH +SHIKSEHS +SHIKSES +SHILINGI +SHILL +SHILLALA +SHILLALAH +SHILLALAHS +SHILLALAS +SHILLED +SHILLELAGH +SHILLELAGHS +SHILLELAH +SHILLELAHS +SHILLING +SHILLINGS +SHILLS +SHILPIT +SHILY +SHIM +SHIMMED +SHIMMER +SHIMMERED +SHIMMERING +SHIMMERS +SHIMMERY +SHIMMIED +SHIMMIES +SHIMMING +SHIMMY +SHIMMYING +SHIMS +SHIN +SHINBONE +SHINBONES +SHINDIES +SHINDIG +SHINDIGS +SHINDY +SHINDYS +SHINE +SHINED +SHINER +SHINERS +SHINES +SHINGLE +SHINGLED +SHINGLER +SHINGLERS +SHINGLES +SHINGLING +SHINGLY +SHINGUARD +SHINGUARDS +SHINIER +SHINIEST +SHINILY +SHININESS +SHININESSES +SHINING +SHININGLY +SHINLEAF +SHINLEAFS +SHINLEAVES +SHINNED +SHINNERIES +SHINNERY +SHINNEY +SHINNEYED +SHINNEYING +SHINNEYS +SHINNIED +SHINNIES +SHINNING +SHINNY +SHINNYING +SHINPLASTER +SHINPLASTERS +SHINS +SHINSPLINTS +SHINY +SHIP +SHIPBOARD +SHIPBOARDS +SHIPBORNE +SHIPBUILDER +SHIPBUILDERS +SHIPBUILDING +SHIPBUILDINGS +SHIPFITTER +SHIPFITTERS +SHIPLAP +SHIPLAPS +SHIPLESS +SHIPLOAD +SHIPLOADS +SHIPMAN +SHIPMASTER +SHIPMASTERS +SHIPMATE +SHIPMATES +SHIPMEN +SHIPMENT +SHIPMENTS +SHIPOWNER +SHIPOWNERS +SHIPPABLE +SHIPPED +SHIPPEN +SHIPPENS +SHIPPER +SHIPPERS +SHIPPING +SHIPPINGS +SHIPPON +SHIPPONS +SHIPS +SHIPSHAPE +SHIPSIDE +SHIPSIDES +SHIPWAY +SHIPWAYS +SHIPWORM +SHIPWORMS +SHIPWRECK +SHIPWRECKED +SHIPWRECKING +SHIPWRECKS +SHIPWRIGHT +SHIPWRIGHTS +SHIPYARD +SHIPYARDS +SHIRE +SHIRES +SHIRK +SHIRKED +SHIRKER +SHIRKERS +SHIRKING +SHIRKS +SHIRR +SHIRRED +SHIRRING +SHIRRINGS +SHIRRS +SHIRT +SHIRTDRESS +SHIRTDRESSES +SHIRTFRONT +SHIRTFRONTS +SHIRTIER +SHIRTIEST +SHIRTING +SHIRTINGS +SHIRTLESS +SHIRTMAKER +SHIRTMAKERS +SHIRTS +SHIRTSLEEVE +SHIRTSLEEVED +SHIRTSLEEVES +SHIRTTAIL +SHIRTTAILED +SHIRTTAILING +SHIRTTAILS +SHIRTWAIST +SHIRTWAISTS +SHIRTY +SHIST +SHISTS +SHIT +SHITAKE +SHITAKES +SHITFACED +SHITHEAD +SHITHEADS +SHITLESS +SHITLIST +SHITLISTS +SHITLOAD +SHITLOADS +SHITS +SHITTAH +SHITTAHS +SHITTED +SHITTIER +SHITTIEST +SHITTIM +SHITTIMS +SHITTIMWOOD +SHITTIMWOODS +SHITTING +SHITTY +SHIV +SHIVA +SHIVAH +SHIVAHS +SHIVAREE +SHIVAREED +SHIVAREEING +SHIVAREES +SHIVAS +SHIVE +SHIVER +SHIVERED +SHIVERER +SHIVERERS +SHIVERING +SHIVERS +SHIVERY +SHIVES +SHIVITI +SHIVITIS +SHIVS +SHKOTZIM +SHLEMIEHL +SHLEMIEHLS +SHLEMIEL +SHLEMIELS +SHLEP +SHLEPP +SHLEPPED +SHLEPPING +SHLEPPS +SHLEPS +SHLIMAZEL +SHLIMAZELS +SHLOCK +SHLOCKIER +SHLOCKIEST +SHLOCKS +SHLOCKY +SHLUB +SHLUBS +SHLUMP +SHLUMPED +SHLUMPING +SHLUMPS +SHLUMPY +SHMALTZ +SHMALTZES +SHMALTZIER +SHMALTZIEST +SHMALTZY +SHMEAR +SHMEARS +SHMO +SHMOES +SHMOOZE +SHMOOZED +SHMOOZES +SHMOOZING +SHMUCK +SHMUCKS +SHNAPPS +SHNAPS +SHNOOK +SHNOOKS +SHNORRER +SHNORRERS +SHOAL +SHOALED +SHOALER +SHOALEST +SHOALIER +SHOALIEST +SHOALING +SHOALS +SHOALY +SHOAT +SHOATS +SHOCK +SHOCKABLE +SHOCKED +SHOCKER +SHOCKERS +SHOCKING +SHOCKINGLY +SHOCKPROOF +SHOCKS +SHOD +SHODDEN +SHODDIER +SHODDIES +SHODDIEST +SHODDILY +SHODDINESS +SHODDINESSES +SHODDY +SHOE +SHOEBILL +SHOEBILLS +SHOEBLACK +SHOEBLACKS +SHOEBOX +SHOEBOXES +SHOED +SHOEHORN +SHOEHORNED +SHOEHORNING +SHOEHORNS +SHOEING +SHOELACE +SHOELACES +SHOELESS +SHOEMAKER +SHOEMAKERS +SHOEPAC +SHOEPACK +SHOEPACKS +SHOEPACS +SHOER +SHOERS +SHOES +SHOESHINE +SHOESHINES +SHOESTRING +SHOESTRINGS +SHOETREE +SHOETREES +SHOFAR +SHOFARS +SHOFROTH +SHOG +SHOGGED +SHOGGING +SHOGI +SHOGIS +SHOGS +SHOGUN +SHOGUNAL +SHOGUNATE +SHOGUNATES +SHOGUNS +SHOJI +SHOJIS +SHOLOM +SHOLOMS +SHONE +SHOO +SHOOED +SHOOFLIES +SHOOFLY +SHOOING +SHOOK +SHOOKS +SHOOL +SHOOLED +SHOOLING +SHOOLS +SHOON +SHOOS +SHOOT +SHOOTDOWN +SHOOTDOWNS +SHOOTER +SHOOTERS +SHOOTING +SHOOTINGS +SHOOTOUT +SHOOTOUTS +SHOOTS +SHOP +SHOPBOY +SHOPBOYS +SHOPGIRL +SHOPGIRLS +SHOPHAR +SHOPHARS +SHOPHROTH +SHOPKEEPER +SHOPKEEPERS +SHOPLIFT +SHOPLIFTED +SHOPLIFTER +SHOPLIFTERS +SHOPLIFTING +SHOPLIFTS +SHOPMAN +SHOPMEN +SHOPPE +SHOPPED +SHOPPER +SHOPPERS +SHOPPES +SHOPPING +SHOPPINGS +SHOPS +SHOPTALK +SHOPTALKS +SHOPWINDOW +SHOPWINDOWS +SHOPWORN +SHORAN +SHORANS +SHORE +SHOREBIRD +SHOREBIRDS +SHORED +SHOREFRONT +SHOREFRONTS +SHORELESS +SHORELINE +SHORELINES +SHORES +SHORESIDE +SHOREWARD +SHOREWARDS +SHORING +SHORINGS +SHORL +SHORLS +SHORN +SHORT +SHORTAGE +SHORTAGES +SHORTBREAD +SHORTBREADS +SHORTCAKE +SHORTCAKES +SHORTCHANGE +SHORTCHANGED +SHORTCHANGER +SHORTCHANGERS +SHORTCHANGES +SHORTCHANGING +SHORTCOMING +SHORTCOMINGS +SHORTCUT +SHORTCUTS +SHORTCUTTING +SHORTED +SHORTEN +SHORTENED +SHORTENER +SHORTENERS +SHORTENING +SHORTENINGS +SHORTENS +SHORTER +SHORTEST +SHORTFALL +SHORTFALLS +SHORTHAIR +SHORTHAIRED +SHORTHAIRS +SHORTHAND +SHORTHANDED +SHORTHANDS +SHORTHEAD +SHORTHEADS +SHORTHORN +SHORTHORNS +SHORTIA +SHORTIAS +SHORTIE +SHORTIES +SHORTING +SHORTISH +SHORTLIST +SHORTLISTED +SHORTLISTING +SHORTLISTS +SHORTLY +SHORTNESS +SHORTNESSES +SHORTS +SHORTSIGHTED +SHORTSIGHTEDLY +SHORTSTOP +SHORTSTOPS +SHORTWAVE +SHORTWAVED +SHORTWAVES +SHORTWAVING +SHORTY +SHOT +SHOTE +SHOTES +SHOTGUN +SHOTGUNNED +SHOTGUNNER +SHOTGUNNERS +SHOTGUNNING +SHOTGUNS +SHOTHOLE +SHOTHOLES +SHOTS +SHOTT +SHOTTED +SHOTTEN +SHOTTING +SHOTTS +SHOULD +SHOULDER +SHOULDERED +SHOULDERING +SHOULDERS +SHOULDEST +SHOULDST +SHOUT +SHOUTED +SHOUTER +SHOUTERS +SHOUTING +SHOUTS +SHOVE +SHOVED +SHOVEL +SHOVELED +SHOVELER +SHOVELERS +SHOVELFUL +SHOVELFULS +SHOVELING +SHOVELLED +SHOVELLER +SHOVELLERS +SHOVELLING +SHOVELNOSE +SHOVELNOSES +SHOVELS +SHOVELSFUL +SHOVER +SHOVERS +SHOVES +SHOVING +SHOW +SHOWABLE +SHOWBIZ +SHOWBIZZES +SHOWBIZZY +SHOWBOAT +SHOWBOATED +SHOWBOATING +SHOWBOATS +SHOWBREAD +SHOWBREADS +SHOWCASE +SHOWCASED +SHOWCASES +SHOWCASING +SHOWDOWN +SHOWDOWNS +SHOWED +SHOWER +SHOWERED +SHOWERER +SHOWERERS +SHOWERHEAD +SHOWERHEADS +SHOWERING +SHOWERLESS +SHOWERS +SHOWERY +SHOWGIRL +SHOWGIRLS +SHOWIER +SHOWIEST +SHOWILY +SHOWINESS +SHOWINESSES +SHOWING +SHOWINGS +SHOWMAN +SHOWMANLY +SHOWMANSHIP +SHOWMANSHIPS +SHOWMEN +SHOWN +SHOWOFF +SHOWOFFS +SHOWPIECE +SHOWPIECES +SHOWPLACE +SHOWPLACES +SHOWRING +SHOWRINGS +SHOWROOM +SHOWROOMS +SHOWS +SHOWSTOPPER +SHOWSTOPPERS +SHOWSTOPPING +SHOWTIME +SHOWTIMES +SHOWY +SHOYU +SHOYUS +SHRANK +SHRAPNEL +SHRED +SHREDDED +SHREDDER +SHREDDERS +SHREDDING +SHREDS +SHREW +SHREWD +SHREWDER +SHREWDEST +SHREWDIE +SHREWDIES +SHREWDLY +SHREWDNESS +SHREWDNESSES +SHREWED +SHREWING +SHREWISH +SHREWISHLY +SHREWISHNESS +SHREWISHNESSES +SHREWLIKE +SHREWMICE +SHREWMOUSE +SHREWS +SHRI +SHRIEK +SHRIEKED +SHRIEKER +SHRIEKERS +SHRIEKIER +SHRIEKIEST +SHRIEKING +SHRIEKS +SHRIEKY +SHRIEVAL +SHRIEVALTIES +SHRIEVALTY +SHRIEVE +SHRIEVED +SHRIEVES +SHRIEVING +SHRIFT +SHRIFTS +SHRIKE +SHRIKES +SHRILL +SHRILLED +SHRILLER +SHRILLEST +SHRILLING +SHRILLNESS +SHRILLNESSES +SHRILLS +SHRILLY +SHRIMP +SHRIMPED +SHRIMPER +SHRIMPERS +SHRIMPIER +SHRIMPIEST +SHRIMPING +SHRIMPLIKE +SHRIMPS +SHRIMPY +SHRINE +SHRINED +SHRINES +SHRINING +SHRINK +SHRINKABLE +SHRINKAGE +SHRINKAGES +SHRINKER +SHRINKERS +SHRINKING +SHRINKS +SHRIS +SHRIVE +SHRIVED +SHRIVEL +SHRIVELED +SHRIVELING +SHRIVELLED +SHRIVELLING +SHRIVELS +SHRIVEN +SHRIVER +SHRIVERS +SHRIVES +SHRIVING +SHROFF +SHROFFED +SHROFFING +SHROFFS +SHROUD +SHROUDED +SHROUDING +SHROUDS +SHROVE +SHRUB +SHRUBBERIES +SHRUBBERY +SHRUBBIER +SHRUBBIEST +SHRUBBY +SHRUBLAND +SHRUBLANDS +SHRUBLIKE +SHRUBS +SHRUG +SHRUGGED +SHRUGGING +SHRUGS +SHRUNK +SHRUNKEN +SHTETEL +SHTETELS +SHTETL +SHTETLACH +SHTETLS +SHTICK +SHTICKIER +SHTICKIEST +SHTICKS +SHTICKY +SHTIK +SHTIKS +SHUCK +SHUCKED +SHUCKER +SHUCKERS +SHUCKING +SHUCKINGS +SHUCKS +SHUDDER +SHUDDERED +SHUDDERING +SHUDDERS +SHUDDERY +SHUFFLE +SHUFFLEBOARD +SHUFFLEBOARDS +SHUFFLED +SHUFFLER +SHUFFLERS +SHUFFLES +SHUFFLING +SHUL +SHULN +SHULS +SHUN +SHUNNABLE +SHUNNED +SHUNNER +SHUNNERS +SHUNNING +SHUNPIKE +SHUNPIKED +SHUNPIKER +SHUNPIKERS +SHUNPIKES +SHUNPIKING +SHUNPIKINGS +SHUNS +SHUNT +SHUNTED +SHUNTER +SHUNTERS +SHUNTING +SHUNTS +SHUSH +SHUSHED +SHUSHER +SHUSHERS +SHUSHES +SHUSHING +SHUT +SHUTDOWN +SHUTDOWNS +SHUTE +SHUTED +SHUTES +SHUTEYE +SHUTEYES +SHUTING +SHUTOFF +SHUTOFFS +SHUTOUT +SHUTOUTS +SHUTS +SHUTTER +SHUTTERBUG +SHUTTERBUGS +SHUTTERED +SHUTTERING +SHUTTERLESS +SHUTTERS +SHUTTING +SHUTTLE +SHUTTLECOCK +SHUTTLECOCKED +SHUTTLECOCKING +SHUTTLECOCKS +SHUTTLED +SHUTTLELESS +SHUTTLER +SHUTTLERS +SHUTTLES +SHUTTLING +SHVARTZE +SHVARTZES +SHWA +SHWANPAN +SHWANPANS +SHWAS +SHY +SHYER +SHYERS +SHYEST +SHYING +SHYLOCK +SHYLOCKED +SHYLOCKING +SHYLOCKS +SHYLY +SHYNESS +SHYNESSES +SHYSTER +SHYSTERS +SI +SIAL +SIALAGOGUE +SIALAGOGUES +SIALIC +SIALID +SIALIDAN +SIALIDANS +SIALIDS +SIALOID +SIALS +SIAMANG +SIAMANGS +SIAMESE +SIAMESES +SIB +SIBB +SIBBS +SIBILANCE +SIBILANCES +SIBILANCIES +SIBILANCY +SIBILANT +SIBILANTLY +SIBILANTS +SIBILATE +SIBILATED +SIBILATES +SIBILATING +SIBILATION +SIBILATIONS +SIBILATOR +SIBILATORS +SIBLING +SIBLINGS +SIBS +SIBYL +SIBYLIC +SIBYLLIC +SIBYLLINE +SIBYLS +SIC +SICCAN +SICCATIVE +SICCATIVES +SICCED +SICCING +SICE +SICES +SICK +SICKBAY +SICKBAYS +SICKBED +SICKBEDS +SICKED +SICKEE +SICKEES +SICKEN +SICKENED +SICKENER +SICKENERS +SICKENING +SICKENINGLY +SICKENS +SICKER +SICKERLY +SICKEST +SICKIE +SICKIES +SICKING +SICKISH +SICKISHLY +SICKISHNESS +SICKISHNESSES +SICKLE +SICKLED +SICKLEMIA +SICKLEMIAS +SICKLEMIC +SICKLES +SICKLIED +SICKLIER +SICKLIES +SICKLIEST +SICKLILY +SICKLINESS +SICKLINESSES +SICKLING +SICKLY +SICKLYING +SICKNESS +SICKNESSES +SICKO +SICKOS +SICKOUT +SICKOUTS +SICKROOM +SICKROOMS +SICKS +SICS +SIDDUR +SIDDURIM +SIDDURS +SIDE +SIDEARM +SIDEARMS +SIDEBAND +SIDEBANDS +SIDEBAR +SIDEBARS +SIDEBOARD +SIDEBOARDS +SIDEBURNED +SIDEBURNS +SIDECAR +SIDECARS +SIDECHECK +SIDECHECKS +SIDED +SIDEDNESS +SIDEDNESSES +SIDEDRESS +SIDEDRESSES +SIDEHILL +SIDEHILLS +SIDEKICK +SIDEKICKS +SIDELIGHT +SIDELIGHTS +SIDELINE +SIDELINED +SIDELINER +SIDELINERS +SIDELINES +SIDELING +SIDELINING +SIDELONG +SIDEMAN +SIDEMEN +SIDEPIECE +SIDEPIECES +SIDEREAL +SIDERITE +SIDERITES +SIDERITIC +SIDEROLITE +SIDEROLITES +SIDEROSES +SIDEROSIS +SIDEROTIC +SIDES +SIDESADDLE +SIDESADDLES +SIDESHOW +SIDESHOWS +SIDESLIP +SIDESLIPPED +SIDESLIPPING +SIDESLIPS +SIDESPIN +SIDESPINS +SIDESPLITTING +SIDESPLITTINGLY +SIDESTEP +SIDESTEPPED +SIDESTEPPER +SIDESTEPPERS +SIDESTEPPING +SIDESTEPS +SIDESTREAM +SIDESTROKE +SIDESTROKES +SIDESWIPE +SIDESWIPED +SIDESWIPES +SIDESWIPING +SIDETRACK +SIDETRACKED +SIDETRACKING +SIDETRACKS +SIDEWALK +SIDEWALKS +SIDEWALL +SIDEWALLS +SIDEWARD +SIDEWARDS +SIDEWAY +SIDEWAYS +SIDEWINDER +SIDEWINDERS +SIDEWISE +SIDH +SIDHE +SIDING +SIDINGS +SIDLE +SIDLED +SIDLER +SIDLERS +SIDLES +SIDLING +SIDLINGLY +SIEGE +SIEGED +SIEGES +SIEGING +SIEMENS +SIENITE +SIENITES +SIENNA +SIENNAS +SIEROZEM +SIEROZEMS +SIERRA +SIERRAN +SIERRAS +SIESTA +SIESTAS +SIEUR +SIEURS +SIEVE +SIEVED +SIEVERT +SIEVERTS +SIEVES +SIEVING +SIFAKA +SIFAKAS +SIFFLEUR +SIFFLEURS +SIFT +SIFTED +SIFTER +SIFTERS +SIFTING +SIFTINGS +SIFTS +SIGANID +SIGANIDS +SIGH +SIGHED +SIGHER +SIGHERS +SIGHING +SIGHLESS +SIGHLIKE +SIGHS +SIGHT +SIGHTED +SIGHTER +SIGHTERS +SIGHTING +SIGHTINGS +SIGHTLESS +SIGHTLESSLY +SIGHTLESSNESS +SIGHTLESSNESSES +SIGHTLIER +SIGHTLIEST +SIGHTLINE +SIGHTLINES +SIGHTLINESS +SIGHTLINESSES +SIGHTLY +SIGHTS +SIGHTSAW +SIGHTSEE +SIGHTSEEING +SIGHTSEEN +SIGHTSEER +SIGHTSEERS +SIGHTSEES +SIGIL +SIGILS +SIGLA +SIGLOI +SIGLOS +SIGLUM +SIGMA +SIGMAS +SIGMATE +SIGMOID +SIGMOIDAL +SIGMOIDALLY +SIGMOIDOSCOPIES +SIGMOIDOSCOPY +SIGMOIDS +SIGN +SIGNA +SIGNAGE +SIGNAGES +SIGNAL +SIGNALED +SIGNALER +SIGNALERS +SIGNALING +SIGNALISE +SIGNALISED +SIGNALISES +SIGNALISING +SIGNALIZATION +SIGNALIZATIONS +SIGNALIZE +SIGNALIZED +SIGNALIZES +SIGNALIZING +SIGNALLED +SIGNALLER +SIGNALLERS +SIGNALLING +SIGNALLY +SIGNALMAN +SIGNALMEN +SIGNALMENT +SIGNALMENTS +SIGNALS +SIGNATORIES +SIGNATORY +SIGNATURE +SIGNATURES +SIGNBOARD +SIGNBOARDS +SIGNED +SIGNEE +SIGNEES +SIGNER +SIGNERS +SIGNET +SIGNETED +SIGNETING +SIGNETS +SIGNIFICANCE +SIGNIFICANCES +SIGNIFICANCIES +SIGNIFICANCY +SIGNIFICANT +SIGNIFICANTLY +SIGNIFICATION +SIGNIFICATIONS +SIGNIFICATIVE +SIGNIFICS +SIGNIFIED +SIGNIFIEDS +SIGNIFIER +SIGNIFIERS +SIGNIFIES +SIGNIFY +SIGNIFYING +SIGNIFYINGS +SIGNING +SIGNIOR +SIGNIORI +SIGNIORIES +SIGNIORS +SIGNIORY +SIGNOR +SIGNORA +SIGNORAS +SIGNORE +SIGNORI +SIGNORIES +SIGNORINA +SIGNORINAS +SIGNORINE +SIGNORS +SIGNORY +SIGNPOST +SIGNPOSTED +SIGNPOSTING +SIGNPOSTS +SIGNS +SIKA +SIKAS +SIKE +SIKER +SIKES +SILAGE +SILAGES +SILANE +SILANES +SILD +SILDS +SILENCE +SILENCED +SILENCER +SILENCERS +SILENCES +SILENCING +SILENI +SILENT +SILENTER +SILENTEST +SILENTLY +SILENTNESS +SILENTNESSES +SILENTS +SILENUS +SILESIA +SILESIAS +SILEX +SILEXES +SILHOUETTE +SILHOUETTED +SILHOUETTES +SILHOUETTING +SILHOUETTIST +SILHOUETTISTS +SILICA +SILICAS +SILICATE +SILICATES +SILICEOUS +SILICIC +SILICIDE +SILICIDES +SILICIFICATION +SILICIFICATIONS +SILICIFIED +SILICIFIES +SILICIFY +SILICIFYING +SILICIOUS +SILICIUM +SILICIUMS +SILICLE +SILICLES +SILICON +SILICONE +SILICONES +SILICONIZED +SILICONS +SILICOSES +SILICOSIS +SILICOTIC +SILICOTICS +SILICULA +SILICULAE +SILIQUA +SILIQUAE +SILIQUE +SILIQUES +SILIQUOSE +SILIQUOUS +SILK +SILKALINE +SILKALINES +SILKED +SILKEN +SILKIE +SILKIER +SILKIES +SILKIEST +SILKILY +SILKINESS +SILKINESSES +SILKING +SILKLIKE +SILKOLINE +SILKOLINES +SILKS +SILKWEED +SILKWEEDS +SILKWORM +SILKWORMS +SILKY +SILL +SILLABUB +SILLABUBS +SILLER +SILLERS +SILLIBUB +SILLIBUBS +SILLIER +SILLIES +SILLIEST +SILLILY +SILLIMANITE +SILLIMANITES +SILLINESS +SILLINESSES +SILLS +SILLY +SILO +SILOED +SILOING +SILOS +SILOXANE +SILOXANES +SILT +SILTATION +SILTATIONS +SILTED +SILTIER +SILTIEST +SILTING +SILTS +SILTSTONE +SILTSTONES +SILTY +SILURIAN +SILURID +SILURIDS +SILUROID +SILUROIDS +SILVA +SILVAE +SILVAN +SILVANS +SILVAS +SILVER +SILVERBACK +SILVERBACKS +SILVERBERRIES +SILVERBERRY +SILVERED +SILVERER +SILVERERS +SILVERFISH +SILVERFISHES +SILVERINESS +SILVERINESSES +SILVERING +SILVERINGS +SILVERLY +SILVERN +SILVERPOINT +SILVERPOINTS +SILVERS +SILVERSIDE +SILVERSIDES +SILVERSMITH +SILVERSMITHING +SILVERSMITHINGS +SILVERSMITHS +SILVERWARE +SILVERWARES +SILVERWEED +SILVERWEEDS +SILVERY +SILVEX +SILVEXES +SILVICAL +SILVICS +SILVICULTURAL +SILVICULTURALLY +SILVICULTURE +SILVICULTURES +SILVICULTURIST +SILVICULTURISTS +SIM +SIMA +SIMAR +SIMARS +SIMARUBA +SIMARUBAS +SIMAS +SIMAZINE +SIMAZINES +SIMIAN +SIMIANS +SIMILAR +SIMILARITIES +SIMILARITY +SIMILARLY +SIMILE +SIMILES +SIMILITUDE +SIMILITUDES +SIMIOID +SIMIOUS +SIMITAR +SIMITARS +SIMLIN +SIMLINS +SIMMER +SIMMERED +SIMMERING +SIMMERS +SIMNEL +SIMNELS +SIMOLEON +SIMOLEONS +SIMONIAC +SIMONIACAL +SIMONIACALLY +SIMONIACS +SIMONIES +SIMONIST +SIMONISTS +SIMONIZE +SIMONIZED +SIMONIZES +SIMONIZING +SIMONY +SIMOOM +SIMOOMS +SIMOON +SIMOONS +SIMP +SIMPATICO +SIMPER +SIMPERED +SIMPERER +SIMPERERS +SIMPERING +SIMPERS +SIMPLE +SIMPLEMINDED +SIMPLEMINDEDLY +SIMPLENESS +SIMPLENESSES +SIMPLER +SIMPLES +SIMPLEST +SIMPLETON +SIMPLETONS +SIMPLEX +SIMPLEXES +SIMPLICES +SIMPLICIA +SIMPLICIAL +SIMPLICIALLY +SIMPLICITIES +SIMPLICITY +SIMPLIFICATION +SIMPLIFICATIONS +SIMPLIFIED +SIMPLIFIER +SIMPLIFIERS +SIMPLIFIES +SIMPLIFY +SIMPLIFYING +SIMPLISM +SIMPLISMS +SIMPLIST +SIMPLISTIC +SIMPLISTICALLY +SIMPLISTS +SIMPLY +SIMPS +SIMS +SIMULACRA +SIMULACRE +SIMULACRES +SIMULACRUM +SIMULACRUMS +SIMULANT +SIMULANTS +SIMULAR +SIMULARS +SIMULATE +SIMULATED +SIMULATES +SIMULATING +SIMULATION +SIMULATIONS +SIMULATIVE +SIMULATOR +SIMULATORS +SIMULCAST +SIMULCASTED +SIMULCASTING +SIMULCASTS +SIMULTANEITIES +SIMULTANEITY +SIMULTANEOUS +SIMULTANEOUSLY +SIN +SINAPISM +SINAPISMS +SINCE +SINCERE +SINCERELY +SINCERENESS +SINCERENESSES +SINCERER +SINCEREST +SINCERITIES +SINCERITY +SINCIPITA +SINCIPITAL +SINCIPUT +SINCIPUTS +SINE +SINECURE +SINECURES +SINES +SINEW +SINEWED +SINEWING +SINEWLESS +SINEWS +SINEWY +SINFONIA +SINFONIAS +SINFONIE +SINFONIETTA +SINFONIETTAS +SINFUL +SINFULLY +SINFULNESS +SINFULNESSES +SING +SINGABLE +SINGALONG +SINGALONGS +SINGE +SINGED +SINGEING +SINGER +SINGERS +SINGES +SINGING +SINGLE +SINGLED +SINGLENESS +SINGLENESSES +SINGLES +SINGLESTICK +SINGLESTICKS +SINGLET +SINGLETON +SINGLETONS +SINGLETREE +SINGLETREES +SINGLETS +SINGLING +SINGLY +SINGS +SINGSONG +SINGSONGS +SINGSONGY +SINGSPIEL +SINGSPIELS +SINGULAR +SINGULARITIES +SINGULARITY +SINGULARIZE +SINGULARIZED +SINGULARIZES +SINGULARIZING +SINGULARLY +SINGULARS +SINH +SINHS +SINICIZE +SINICIZED +SINICIZES +SINICIZING +SINISTER +SINISTERLY +SINISTERNESS +SINISTERNESSES +SINISTRAL +SINISTROUS +SINK +SINKABLE +SINKAGE +SINKAGES +SINKER +SINKERS +SINKHOLE +SINKHOLES +SINKING +SINKS +SINLESS +SINLESSLY +SINLESSNESS +SINLESSNESSES +SINNED +SINNER +SINNERS +SINNING +SINOATRIAL +SINOLOGICAL +SINOLOGIES +SINOLOGIST +SINOLOGISTS +SINOLOGUE +SINOLOGUES +SINOLOGY +SINOPIA +SINOPIAS +SINOPIE +SINS +SINSEMILLA +SINSEMILLAS +SINSYNE +SINTER +SINTERABILITIES +SINTERABILITY +SINTERED +SINTERING +SINTERS +SINUATE +SINUATED +SINUATELY +SINUATES +SINUATING +SINUATION +SINUATIONS +SINUOSITIES +SINUOSITY +SINUOUS +SINUOUSLY +SINUOUSNESS +SINUOUSNESSES +SINUS +SINUSES +SINUSITIS +SINUSITISES +SINUSLIKE +SINUSOID +SINUSOIDAL +SINUSOIDALLY +SINUSOIDS +SIP +SIPE +SIPED +SIPES +SIPHON +SIPHONAGE +SIPHONAGES +SIPHONAL +SIPHONED +SIPHONIC +SIPHONING +SIPHONOPHORE +SIPHONOPHORES +SIPHONOSTELE +SIPHONOSTELES +SIPHONS +SIPING +SIPPED +SIPPER +SIPPERS +SIPPET +SIPPETS +SIPPING +SIPS +SIR +SIRDAR +SIRDARS +SIRE +SIRED +SIREE +SIREES +SIREN +SIRENIAN +SIRENIANS +SIRENS +SIRES +SIRING +SIRLOIN +SIRLOINS +SIROCCO +SIROCCOS +SIRRA +SIRRAH +SIRRAHS +SIRRAS +SIRREE +SIRREES +SIRS +SIRUP +SIRUPED +SIRUPIER +SIRUPIEST +SIRUPING +SIRUPS +SIRUPY +SIRVENTE +SIRVENTES +SIS +SISAL +SISALS +SISES +SISKIN +SISKINS +SISSES +SISSIER +SISSIES +SISSIEST +SISSIFIED +SISSINESS +SISSINESSES +SISSY +SISSYISH +SISSYNESS +SISSYNESSES +SISTER +SISTERED +SISTERHOOD +SISTERHOODS +SISTERING +SISTERLY +SISTERS +SISTRA +SISTROID +SISTRUM +SISTRUMS +SIT +SITAR +SITARIST +SITARISTS +SITARS +SITCOM +SITCOMS +SITE +SITED +SITES +SITH +SITHENCE +SITHENS +SITING +SITOLOGIES +SITOLOGY +SITOSTEROL +SITOSTEROLS +SITS +SITTEN +SITTER +SITTERS +SITTING +SITTINGS +SITUATE +SITUATED +SITUATES +SITUATING +SITUATION +SITUATIONAL +SITUATIONALLY +SITUATIONS +SITUP +SITUPS +SITUS +SITUSES +SITZMARK +SITZMARKS +SIVER +SIVERS +SIX +SIXES +SIXFOLD +SIXMO +SIXMOS +SIXPENCE +SIXPENCES +SIXPENNY +SIXTE +SIXTEEN +SIXTEENMO +SIXTEENMOS +SIXTEENS +SIXTEENTH +SIXTEENTHS +SIXTES +SIXTH +SIXTHLY +SIXTHS +SIXTIES +SIXTIETH +SIXTIETHS +SIXTY +SIXTYISH +SIZABLE +SIZABLENESS +SIZABLENESSES +SIZABLY +SIZAR +SIZARS +SIZARSHIP +SIZARSHIPS +SIZE +SIZEABLE +SIZEABLY +SIZED +SIZER +SIZERS +SIZES +SIZIER +SIZIEST +SIZINESS +SIZINESSES +SIZING +SIZINGS +SIZY +SIZZLE +SIZZLED +SIZZLER +SIZZLERS +SIZZLES +SIZZLING +SJAMBOK +SJAMBOKED +SJAMBOKING +SJAMBOKS +SKA +SKAG +SKAGS +SKALD +SKALDIC +SKALDS +SKALDSHIP +SKALDSHIPS +SKANK +SKANKED +SKANKER +SKANKERS +SKANKIER +SKANKIEST +SKANKING +SKANKS +SKANKY +SKAS +SKAT +SKATE +SKATEBOARD +SKATEBOARDER +SKATEBOARDERS +SKATEBOARDING +SKATEBOARDINGS +SKATEBOARDS +SKATED +SKATER +SKATERS +SKATES +SKATING +SKATINGS +SKATOL +SKATOLE +SKATOLES +SKATOLS +SKATS +SKEAN +SKEANE +SKEANES +SKEANS +SKEDADDLE +SKEDADDLED +SKEDADDLER +SKEDADDLERS +SKEDADDLES +SKEDADDLING +SKEE +SKEED +SKEEING +SKEEN +SKEENS +SKEES +SKEET +SKEETER +SKEETERS +SKEETS +SKEG +SKEGS +SKEIGH +SKEIN +SKEINED +SKEINING +SKEINS +SKELETAL +SKELETALLY +SKELETON +SKELETONIC +SKELETONISE +SKELETONISED +SKELETONISES +SKELETONISING +SKELETONIZE +SKELETONIZED +SKELETONIZER +SKELETONIZERS +SKELETONIZES +SKELETONIZING +SKELETONS +SKELL +SKELLS +SKELLUM +SKELLUMS +SKELM +SKELMS +SKELP +SKELPED +SKELPING +SKELPIT +SKELPS +SKELTER +SKELTERED +SKELTERING +SKELTERS +SKENE +SKENES +SKEP +SKEPS +SKEPSIS +SKEPSISES +SKEPTIC +SKEPTICAL +SKEPTICALLY +SKEPTICISM +SKEPTICISMS +SKEPTICS +SKERRIES +SKERRY +SKETCH +SKETCHBOOK +SKETCHBOOKS +SKETCHED +SKETCHER +SKETCHERS +SKETCHES +SKETCHIER +SKETCHIEST +SKETCHILY +SKETCHINESS +SKETCHINESSES +SKETCHING +SKETCHPAD +SKETCHPADS +SKETCHY +SKEW +SKEWBACK +SKEWBACKS +SKEWBALD +SKEWBALDS +SKEWED +SKEWER +SKEWERED +SKEWERING +SKEWERS +SKEWING +SKEWNESS +SKEWNESSES +SKEWS +SKI +SKIABLE +SKIAGRAM +SKIAGRAMS +SKIAGRAPH +SKIAGRAPHS +SKIASCOPE +SKIASCOPES +SKIASCOPIES +SKIASCOPY +SKIBOB +SKIBOBBER +SKIBOBBERS +SKIBOBBING +SKIBOBBINGS +SKIBOBS +SKID +SKIDDED +SKIDDER +SKIDDERS +SKIDDIER +SKIDDIEST +SKIDDING +SKIDDOO +SKIDDOOED +SKIDDOOING +SKIDDOOS +SKIDDY +SKIDOO +SKIDOOED +SKIDOOING +SKIDOOS +SKIDPROOF +SKIDS +SKIDWAY +SKIDWAYS +SKIED +SKIER +SKIERS +SKIES +SKIEY +SKIFF +SKIFFLE +SKIFFLED +SKIFFLES +SKIFFLESS +SKIFFLING +SKIFFS +SKIING +SKIINGS +SKIJORER +SKIJORERS +SKIJORING +SKIJORINGS +SKILFUL +SKILFULLY +SKILL +SKILLED +SKILLESS +SKILLESSNESS +SKILLESSNESSES +SKILLET +SKILLETS +SKILLFUL +SKILLFULLY +SKILLFULNESS +SKILLFULNESSES +SKILLING +SKILLINGS +SKILLS +SKIM +SKIMBOARD +SKIMBOARDS +SKIMMED +SKIMMER +SKIMMERS +SKIMMING +SKIMMINGS +SKIMO +SKIMOBILE +SKIMOBILED +SKIMOBILES +SKIMOBILING +SKIMOS +SKIMP +SKIMPED +SKIMPIER +SKIMPIEST +SKIMPILY +SKIMPINESS +SKIMPINESSES +SKIMPING +SKIMPS +SKIMPY +SKIMS +SKIN +SKINFLICK +SKINFLICKS +SKINFLINT +SKINFLINTS +SKINFUL +SKINFULS +SKINHEAD +SKINHEADS +SKINK +SKINKED +SKINKER +SKINKERS +SKINKING +SKINKS +SKINLESS +SKINLIKE +SKINNED +SKINNER +SKINNERS +SKINNIER +SKINNIEST +SKINNINESS +SKINNINESSES +SKINNING +SKINNY +SKINS +SKINT +SKINTIGHT +SKIORING +SKIORINGS +SKIP +SKIPJACK +SKIPJACKS +SKIPLANE +SKIPLANES +SKIPPABLE +SKIPPED +SKIPPER +SKIPPERED +SKIPPERING +SKIPPERS +SKIPPET +SKIPPETS +SKIPPING +SKIPS +SKIRL +SKIRLED +SKIRLING +SKIRLS +SKIRMISH +SKIRMISHED +SKIRMISHER +SKIRMISHERS +SKIRMISHES +SKIRMISHING +SKIRR +SKIRRED +SKIRRET +SKIRRETS +SKIRRING +SKIRRS +SKIRT +SKIRTED +SKIRTER +SKIRTERS +SKIRTING +SKIRTINGS +SKIRTLESS +SKIRTLIKE +SKIRTS +SKIS +SKIT +SKITE +SKITED +SKITES +SKITING +SKITS +SKITTER +SKITTERED +SKITTERIER +SKITTERIEST +SKITTERING +SKITTERS +SKITTERY +SKITTISH +SKITTISHLY +SKITTISHNESS +SKITTISHNESSES +SKITTLE +SKITTLES +SKIVE +SKIVED +SKIVER +SKIVERS +SKIVES +SKIVING +SKIVVIED +SKIVVIES +SKIVVY +SKIVVYING +SKIWEAR +SKLENT +SKLENTED +SKLENTING +SKLENTS +SKOAL +SKOALED +SKOALING +SKOALS +SKOOKUM +SKORT +SKORTS +SKOSH +SKOSHES +SKREEGH +SKREEGHED +SKREEGHING +SKREEGHS +SKREIGH +SKREIGHED +SKREIGHING +SKREIGHS +SKUA +SKUAS +SKULDUGGERIES +SKULDUGGERY +SKULK +SKULKED +SKULKER +SKULKERS +SKULKING +SKULKS +SKULL +SKULLCAP +SKULLCAPS +SKULLDUGGERIES +SKULLDUGGERY +SKULLED +SKULLING +SKULLS +SKUNK +SKUNKED +SKUNKIER +SKUNKIEST +SKUNKING +SKUNKS +SKUNKWEED +SKUNKWEEDS +SKUNKY +SKY +SKYBOARD +SKYBOARDS +SKYBORNE +SKYBOX +SKYBOXES +SKYBRIDGE +SKYBRIDGES +SKYCAP +SKYCAPS +SKYDIVE +SKYDIVED +SKYDIVER +SKYDIVERS +SKYDIVES +SKYDIVING +SKYDIVINGS +SKYDOVE +SKYED +SKYEY +SKYHOOK +SKYHOOKS +SKYING +SKYJACK +SKYJACKED +SKYJACKER +SKYJACKERS +SKYJACKING +SKYJACKINGS +SKYJACKS +SKYLARK +SKYLARKED +SKYLARKER +SKYLARKERS +SKYLARKING +SKYLARKS +SKYLIGHT +SKYLIGHTED +SKYLIGHTS +SKYLIKE +SKYLINE +SKYLINES +SKYLIT +SKYMAN +SKYMEN +SKYPHOI +SKYPHOS +SKYROCKET +SKYROCKETED +SKYROCKETING +SKYROCKETS +SKYSAIL +SKYSAILS +SKYSCRAPER +SKYSCRAPERS +SKYSURF +SKYSURFED +SKYSURFER +SKYSURFERS +SKYSURFING +SKYSURFS +SKYWALK +SKYWALKS +SKYWARD +SKYWARDS +SKYWAY +SKYWAYS +SKYWRITE +SKYWRITER +SKYWRITERS +SKYWRITES +SKYWRITING +SKYWRITINGS +SKYWRITTEN +SKYWROTE +SLAB +SLABBED +SLABBER +SLABBERED +SLABBERING +SLABBERS +SLABBERY +SLABBING +SLABLIKE +SLABS +SLACK +SLACKED +SLACKEN +SLACKENED +SLACKENER +SLACKENERS +SLACKENING +SLACKENS +SLACKER +SLACKERS +SLACKEST +SLACKING +SLACKLY +SLACKNESS +SLACKNESSES +SLACKS +SLAG +SLAGGED +SLAGGIER +SLAGGIEST +SLAGGING +SLAGGY +SLAGS +SLAIN +SLAINTE +SLAKABLE +SLAKE +SLAKED +SLAKER +SLAKERS +SLAKES +SLAKING +SLALOM +SLALOMED +SLALOMER +SLALOMERS +SLALOMING +SLALOMIST +SLALOMISTS +SLALOMS +SLAM +SLAMDANCE +SLAMDANCED +SLAMDANCES +SLAMDANCING +SLAMMED +SLAMMER +SLAMMERS +SLAMMING +SLAMMINGS +SLAMS +SLANDER +SLANDERED +SLANDERER +SLANDERERS +SLANDERING +SLANDEROUS +SLANDEROUSLY +SLANDEROUSNESS +SLANDERS +SLANG +SLANGED +SLANGIER +SLANGIEST +SLANGILY +SLANGINESS +SLANGINESSES +SLANGING +SLANGS +SLANGUAGE +SLANGUAGES +SLANGY +SLANK +SLANT +SLANTED +SLANTING +SLANTINGLY +SLANTLY +SLANTS +SLANTWAYS +SLANTWISE +SLANTY +SLAP +SLAPDASH +SLAPDASHES +SLAPHAPPIER +SLAPHAPPIEST +SLAPHAPPY +SLAPJACK +SLAPJACKS +SLAPPED +SLAPPER +SLAPPERS +SLAPPING +SLAPS +SLAPSTICK +SLAPSTICKS +SLASH +SLASHED +SLASHER +SLASHERS +SLASHES +SLASHING +SLASHINGLY +SLASHINGS +SLAT +SLATCH +SLATCHES +SLATE +SLATED +SLATELIKE +SLATER +SLATERS +SLATES +SLATEY +SLATHER +SLATHERED +SLATHERING +SLATHERS +SLATIER +SLATIEST +SLATINESS +SLATINESSES +SLATING +SLATINGS +SLATS +SLATTED +SLATTERN +SLATTERNLINESS +SLATTERNLY +SLATTERNS +SLATTING +SLATTINGS +SLATY +SLAUGHTER +SLAUGHTERED +SLAUGHTERER +SLAUGHTERERS +SLAUGHTERHOUSE +SLAUGHTERHOUSES +SLAUGHTERING +SLAUGHTEROUS +SLAUGHTEROUSLY +SLAUGHTERS +SLAVE +SLAVED +SLAVEHOLDER +SLAVEHOLDERS +SLAVEHOLDING +SLAVEHOLDINGS +SLAVER +SLAVERED +SLAVERER +SLAVERERS +SLAVERIES +SLAVERING +SLAVERS +SLAVERY +SLAVES +SLAVEY +SLAVEYS +SLAVING +SLAVISH +SLAVISHLY +SLAVISHNESS +SLAVISHNESSES +SLAVOCRACIES +SLAVOCRACY +SLAVOCRAT +SLAVOCRATS +SLAW +SLAWS +SLAY +SLAYABLE +SLAYED +SLAYER +SLAYERS +SLAYING +SLAYS +SLEAVE +SLEAVED +SLEAVES +SLEAVING +SLEAZE +SLEAZEBAG +SLEAZEBAGS +SLEAZEBALL +SLEAZEBALLS +SLEAZES +SLEAZIER +SLEAZIEST +SLEAZILY +SLEAZINESS +SLEAZINESSES +SLEAZO +SLEAZOID +SLEAZOIDS +SLEAZY +SLED +SLEDDED +SLEDDER +SLEDDERS +SLEDDING +SLEDDINGS +SLEDGE +SLEDGED +SLEDGEHAMMER +SLEDGEHAMMERED +SLEDGEHAMMERING +SLEDGEHAMMERS +SLEDGES +SLEDGING +SLEDS +SLEEK +SLEEKED +SLEEKEN +SLEEKENED +SLEEKENING +SLEEKENS +SLEEKER +SLEEKERS +SLEEKEST +SLEEKIER +SLEEKIEST +SLEEKING +SLEEKIT +SLEEKLY +SLEEKNESS +SLEEKNESSES +SLEEKS +SLEEKY +SLEEP +SLEEPAWAY +SLEEPER +SLEEPERS +SLEEPIER +SLEEPIEST +SLEEPILY +SLEEPINESS +SLEEPINESSES +SLEEPING +SLEEPINGS +SLEEPLESS +SLEEPLESSLY +SLEEPLESSNESS +SLEEPLESSNESSES +SLEEPLIKE +SLEEPOVER +SLEEPOVERS +SLEEPS +SLEEPWALK +SLEEPWALKED +SLEEPWALKER +SLEEPWALKERS +SLEEPWALKING +SLEEPWALKS +SLEEPWEAR +SLEEPY +SLEEPYHEAD +SLEEPYHEADS +SLEET +SLEETED +SLEETIER +SLEETIEST +SLEETING +SLEETS +SLEETY +SLEEVE +SLEEVED +SLEEVELESS +SLEEVELET +SLEEVELETS +SLEEVES +SLEEVING +SLEIGH +SLEIGHED +SLEIGHER +SLEIGHERS +SLEIGHING +SLEIGHS +SLEIGHT +SLEIGHTS +SLENDER +SLENDERER +SLENDEREST +SLENDERIZE +SLENDERIZED +SLENDERIZES +SLENDERIZING +SLENDERLY +SLENDERNESS +SLENDERNESSES +SLEPT +SLEUTH +SLEUTHED +SLEUTHHOUND +SLEUTHHOUNDS +SLEUTHING +SLEUTHS +SLEW +SLEWED +SLEWING +SLEWS +SLICE +SLICEABLE +SLICED +SLICER +SLICERS +SLICES +SLICING +SLICK +SLICKED +SLICKEN +SLICKENED +SLICKENER +SLICKENERS +SLICKENING +SLICKENS +SLICKENSIDE +SLICKENSIDES +SLICKER +SLICKERS +SLICKEST +SLICKING +SLICKLY +SLICKNESS +SLICKNESSES +SLICKROCK +SLICKROCKS +SLICKS +SLICKSTER +SLICKSTERS +SLID +SLIDABLE +SLIDDEN +SLIDE +SLIDER +SLIDERS +SLIDES +SLIDEWAY +SLIDEWAYS +SLIDING +SLIER +SLIEST +SLIEVE +SLIEVES +SLIGHT +SLIGHTED +SLIGHTER +SLIGHTERS +SLIGHTEST +SLIGHTING +SLIGHTINGLY +SLIGHTLY +SLIGHTNESS +SLIGHTNESSES +SLIGHTS +SLILY +SLIM +SLIME +SLIMEBALL +SLIMEBALLS +SLIMED +SLIMES +SLIMIER +SLIMIEST +SLIMILY +SLIMINESS +SLIMINESSES +SLIMING +SLIMLY +SLIMMED +SLIMMER +SLIMMERS +SLIMMEST +SLIMMING +SLIMNASTICS +SLIMNESS +SLIMNESSES +SLIMPSIER +SLIMPSIEST +SLIMPSY +SLIMS +SLIMSIER +SLIMSIEST +SLIMSY +SLIMY +SLING +SLINGBACK +SLINGBACKS +SLINGER +SLINGERS +SLINGING +SLINGS +SLINGSHOT +SLINGSHOTS +SLINK +SLINKED +SLINKIER +SLINKIEST +SLINKILY +SLINKINESS +SLINKINESSES +SLINKING +SLINKS +SLINKY +SLIP +SLIPCASE +SLIPCASED +SLIPCASES +SLIPCOVER +SLIPCOVERED +SLIPCOVERING +SLIPCOVERS +SLIPDRESS +SLIPDRESSES +SLIPE +SLIPED +SLIPES +SLIPFORM +SLIPFORMED +SLIPFORMING +SLIPFORMS +SLIPING +SLIPKNOT +SLIPKNOTS +SLIPLESS +SLIPOUT +SLIPOUTS +SLIPOVER +SLIPOVERS +SLIPPAGE +SLIPPAGES +SLIPPED +SLIPPER +SLIPPERED +SLIPPERIER +SLIPPERIEST +SLIPPERINESS +SLIPPERINESSES +SLIPPERS +SLIPPERY +SLIPPIER +SLIPPIEST +SLIPPILY +SLIPPING +SLIPPY +SLIPS +SLIPSHEET +SLIPSHEETED +SLIPSHEETING +SLIPSHEETS +SLIPSHOD +SLIPSLOP +SLIPSLOPS +SLIPSOLE +SLIPSOLES +SLIPSTREAM +SLIPSTREAMED +SLIPSTREAMING +SLIPSTREAMS +SLIPT +SLIPUP +SLIPUPS +SLIPWARE +SLIPWARES +SLIPWAY +SLIPWAYS +SLIT +SLITHER +SLITHERED +SLITHERING +SLITHERS +SLITHERY +SLITLESS +SLITLIKE +SLITS +SLITTED +SLITTER +SLITTERS +SLITTIER +SLITTIEST +SLITTING +SLITTY +SLIVER +SLIVERED +SLIVERER +SLIVERERS +SLIVERING +SLIVERS +SLIVOVIC +SLIVOVICES +SLIVOVITZ +SLIVOVITZES +SLOB +SLOBBER +SLOBBERED +SLOBBERER +SLOBBERERS +SLOBBERING +SLOBBERS +SLOBBERY +SLOBBIER +SLOBBIEST +SLOBBISH +SLOBBY +SLOBS +SLOE +SLOES +SLOG +SLOGAN +SLOGANEER +SLOGANEERED +SLOGANEERING +SLOGANEERS +SLOGANIZE +SLOGANIZED +SLOGANIZES +SLOGANIZING +SLOGANS +SLOGGED +SLOGGER +SLOGGERS +SLOGGING +SLOGS +SLOID +SLOIDS +SLOJD +SLOJDS +SLOOP +SLOOPS +SLOP +SLOPE +SLOPED +SLOPER +SLOPERS +SLOPES +SLOPING +SLOPINGLY +SLOPPED +SLOPPIER +SLOPPIEST +SLOPPILY +SLOPPINESS +SLOPPINESSES +SLOPPING +SLOPPY +SLOPS +SLOPWORK +SLOPWORKS +SLOSH +SLOSHED +SLOSHES +SLOSHIER +SLOSHIEST +SLOSHING +SLOSHY +SLOT +SLOTBACK +SLOTBACKS +SLOTH +SLOTHFUL +SLOTHFULLY +SLOTHFULNESS +SLOTHFULNESSES +SLOTHS +SLOTS +SLOTTED +SLOTTER +SLOTTERS +SLOTTING +SLOUCH +SLOUCHED +SLOUCHER +SLOUCHERS +SLOUCHES +SLOUCHIER +SLOUCHIEST +SLOUCHILY +SLOUCHINESS +SLOUCHINESSES +SLOUCHING +SLOUCHY +SLOUGH +SLOUGHED +SLOUGHIER +SLOUGHIEST +SLOUGHING +SLOUGHS +SLOUGHY +SLOVEN +SLOVENLIER +SLOVENLIEST +SLOVENLINESS +SLOVENLINESSES +SLOVENLY +SLOVENS +SLOW +SLOWDOWN +SLOWDOWNS +SLOWED +SLOWER +SLOWEST +SLOWING +SLOWISH +SLOWLY +SLOWNESS +SLOWNESSES +SLOWPOKE +SLOWPOKES +SLOWS +SLOWWORM +SLOWWORMS +SLOYD +SLOYDS +SLUB +SLUBBED +SLUBBER +SLUBBERED +SLUBBERING +SLUBBERS +SLUBBING +SLUBBINGS +SLUBS +SLUDGE +SLUDGED +SLUDGES +SLUDGIER +SLUDGIEST +SLUDGING +SLUDGY +SLUE +SLUED +SLUES +SLUFF +SLUFFED +SLUFFING +SLUFFS +SLUG +SLUGABED +SLUGABEDS +SLUGFEST +SLUGFESTS +SLUGGARD +SLUGGARDLY +SLUGGARDNESS +SLUGGARDNESSES +SLUGGARDS +SLUGGED +SLUGGER +SLUGGERS +SLUGGING +SLUGGISH +SLUGGISHLY +SLUGGISHNESS +SLUGGISHNESSES +SLUGS +SLUICE +SLUICED +SLUICES +SLUICEWAY +SLUICEWAYS +SLUICING +SLUICY +SLUING +SLUM +SLUMBER +SLUMBERED +SLUMBERER +SLUMBERERS +SLUMBERING +SLUMBEROUS +SLUMBERS +SLUMBERY +SLUMBROUS +SLUMGULLION +SLUMGULLIONS +SLUMGUM +SLUMGUMS +SLUMISM +SLUMISMS +SLUMLORD +SLUMLORDS +SLUMMED +SLUMMER +SLUMMERS +SLUMMIER +SLUMMIEST +SLUMMING +SLUMMY +SLUMP +SLUMPED +SLUMPFLATION +SLUMPFLATIONS +SLUMPING +SLUMPS +SLUMS +SLUNG +SLUNGSHOT +SLUNGSHOTS +SLUNK +SLUR +SLURB +SLURBAN +SLURBS +SLURP +SLURPED +SLURPING +SLURPS +SLURRED +SLURRIED +SLURRIES +SLURRING +SLURRY +SLURRYING +SLURS +SLUSH +SLUSHED +SLUSHES +SLUSHIER +SLUSHIEST +SLUSHILY +SLUSHINESS +SLUSHINESSES +SLUSHING +SLUSHY +SLUT +SLUTS +SLUTTIER +SLUTTIEST +SLUTTISH +SLUTTISHLY +SLUTTISHNESS +SLUTTISHNESSES +SLUTTY +SLY +SLYBOOTS +SLYER +SLYEST +SLYLY +SLYNESS +SLYNESSES +SLYPE +SLYPES +SMACK +SMACKED +SMACKER +SMACKERS +SMACKING +SMACKS +SMALL +SMALLAGE +SMALLAGES +SMALLCLOTHES +SMALLER +SMALLEST +SMALLHOLDER +SMALLHOLDERS +SMALLHOLDING +SMALLHOLDINGS +SMALLISH +SMALLMOUTH +SMALLMOUTHS +SMALLNESS +SMALLNESSES +SMALLPOX +SMALLPOXES +SMALLS +SMALLSWORD +SMALLSWORDS +SMALLTIME +SMALT +SMALTI +SMALTINE +SMALTINES +SMALTITE +SMALTITES +SMALTO +SMALTOS +SMALTS +SMARAGD +SMARAGDE +SMARAGDES +SMARAGDINE +SMARAGDITE +SMARAGDITES +SMARAGDS +SMARM +SMARMIER +SMARMIEST +SMARMILY +SMARMINESS +SMARMINESSES +SMARMS +SMARMY +SMART +SMARTASS +SMARTASSES +SMARTED +SMARTEN +SMARTENED +SMARTENING +SMARTENS +SMARTER +SMARTEST +SMARTIE +SMARTIES +SMARTING +SMARTLY +SMARTNESS +SMARTNESSES +SMARTS +SMARTWEED +SMARTWEEDS +SMARTY +SMASH +SMASHED +SMASHER +SMASHERS +SMASHES +SMASHING +SMASHINGLY +SMASHUP +SMASHUPS +SMATTER +SMATTERED +SMATTERER +SMATTERERS +SMATTERING +SMATTERINGS +SMATTERS +SMAZE +SMAZES +SMEAR +SMEARCASE +SMEARCASES +SMEARED +SMEARER +SMEARERS +SMEARIER +SMEARIEST +SMEARING +SMEARS +SMEARY +SMECTIC +SMECTITE +SMECTITES +SMECTITIC +SMEDDUM +SMEDDUMS +SMEEK +SMEEKED +SMEEKING +SMEEKS +SMEGMA +SMEGMAS +SMELL +SMELLED +SMELLER +SMELLERS +SMELLIER +SMELLIEST +SMELLING +SMELLS +SMELLY +SMELT +SMELTED +SMELTER +SMELTERIES +SMELTERS +SMELTERY +SMELTING +SMELTS +SMERK +SMERKED +SMERKING +SMERKS +SMEW +SMEWS +SMIDGE +SMIDGEN +SMIDGENS +SMIDGEON +SMIDGEONS +SMIDGES +SMIDGIN +SMIDGINS +SMIERCASE +SMIERCASES +SMILAX +SMILAXES +SMILE +SMILED +SMILELESS +SMILER +SMILERS +SMILES +SMILEY +SMILEYS +SMILING +SMILINGLY +SMIRCH +SMIRCHED +SMIRCHES +SMIRCHING +SMIRK +SMIRKED +SMIRKER +SMIRKERS +SMIRKIER +SMIRKIEST +SMIRKILY +SMIRKING +SMIRKS +SMIRKY +SMIT +SMITE +SMITER +SMITERS +SMITES +SMITH +SMITHEREENS +SMITHERIES +SMITHERS +SMITHERY +SMITHIES +SMITHS +SMITHSONITE +SMITHSONITES +SMITHY +SMITING +SMITTEN +SMOCK +SMOCKED +SMOCKING +SMOCKINGS +SMOCKS +SMOG +SMOGGIER +SMOGGIEST +SMOGGY +SMOGLESS +SMOGS +SMOKABLE +SMOKE +SMOKEABLE +SMOKED +SMOKEHOUSE +SMOKEHOUSES +SMOKEJACK +SMOKEJACKS +SMOKELESS +SMOKELIKE +SMOKEPOT +SMOKEPOTS +SMOKER +SMOKERS +SMOKES +SMOKESTACK +SMOKESTACKS +SMOKEY +SMOKIER +SMOKIEST +SMOKILY +SMOKINESS +SMOKINESSES +SMOKING +SMOKY +SMOLDER +SMOLDERED +SMOLDERING +SMOLDERS +SMOLT +SMOLTS +SMOOCH +SMOOCHED +SMOOCHER +SMOOCHERS +SMOOCHES +SMOOCHING +SMOOCHY +SMOOSH +SMOOSHED +SMOOSHES +SMOOSHING +SMOOTH +SMOOTHBORE +SMOOTHBORES +SMOOTHED +SMOOTHEN +SMOOTHENED +SMOOTHENING +SMOOTHENS +SMOOTHER +SMOOTHERS +SMOOTHES +SMOOTHEST +SMOOTHIE +SMOOTHIES +SMOOTHING +SMOOTHLY +SMOOTHNESS +SMOOTHNESSES +SMOOTHS +SMOOTHY +SMORGASBORD +SMORGASBORDS +SMOTE +SMOTHER +SMOTHERED +SMOTHERER +SMOTHERERS +SMOTHERING +SMOTHERS +SMOTHERY +SMOULDER +SMOULDERED +SMOULDERING +SMOULDERS +SMUDGE +SMUDGED +SMUDGES +SMUDGIER +SMUDGIEST +SMUDGILY +SMUDGINESS +SMUDGINESSES +SMUDGING +SMUDGY +SMUG +SMUGGER +SMUGGEST +SMUGGLE +SMUGGLED +SMUGGLER +SMUGGLERS +SMUGGLES +SMUGGLING +SMUGLY +SMUGNESS +SMUGNESSES +SMUSH +SMUSHED +SMUSHES +SMUSHING +SMUT +SMUTCH +SMUTCHED +SMUTCHES +SMUTCHIER +SMUTCHIEST +SMUTCHING +SMUTCHY +SMUTS +SMUTTED +SMUTTIER +SMUTTIEST +SMUTTILY +SMUTTINESS +SMUTTINESSES +SMUTTING +SMUTTY +SNACK +SNACKED +SNACKER +SNACKERS +SNACKING +SNACKS +SNAFFLE +SNAFFLED +SNAFFLES +SNAFFLING +SNAFU +SNAFUED +SNAFUING +SNAFUS +SNAG +SNAGGED +SNAGGIER +SNAGGIEST +SNAGGING +SNAGGLETEETH +SNAGGLETOOTH +SNAGGLETOOTHED +SNAGGY +SNAGLIKE +SNAGS +SNAIL +SNAILED +SNAILING +SNAILLIKE +SNAILS +SNAKE +SNAKEBIRD +SNAKEBIRDS +SNAKEBIT +SNAKEBITE +SNAKEBITES +SNAKEBITTEN +SNAKED +SNAKEFISH +SNAKEFISHES +SNAKEHEAD +SNAKEHEADS +SNAKELIKE +SNAKEPIT +SNAKEPITS +SNAKEROOT +SNAKEROOTS +SNAKES +SNAKESKIN +SNAKESKINS +SNAKEWEED +SNAKEWEEDS +SNAKEY +SNAKIER +SNAKIEST +SNAKILY +SNAKINESS +SNAKINESSES +SNAKING +SNAKY +SNAP +SNAPBACK +SNAPBACKS +SNAPDRAGON +SNAPDRAGONS +SNAPLESS +SNAPPED +SNAPPER +SNAPPERS +SNAPPIER +SNAPPIEST +SNAPPILY +SNAPPINESS +SNAPPINESSES +SNAPPING +SNAPPISH +SNAPPISHLY +SNAPPISHNESS +SNAPPISHNESSES +SNAPPY +SNAPS +SNAPSHOOTER +SNAPSHOOTERS +SNAPSHOT +SNAPSHOTS +SNAPSHOTTED +SNAPSHOTTING +SNAPWEED +SNAPWEEDS +SNARE +SNARED +SNARER +SNARERS +SNARES +SNARF +SNARFED +SNARFING +SNARFS +SNARING +SNARK +SNARKIER +SNARKIEST +SNARKILY +SNARKS +SNARKY +SNARL +SNARLED +SNARLER +SNARLERS +SNARLIER +SNARLIEST +SNARLING +SNARLS +SNARLY +SNASH +SNASHES +SNATCH +SNATCHED +SNATCHER +SNATCHERS +SNATCHES +SNATCHIER +SNATCHIEST +SNATCHING +SNATCHY +SNATH +SNATHE +SNATHES +SNATHS +SNAW +SNAWED +SNAWING +SNAWS +SNAZZIER +SNAZZIEST +SNAZZY +SNEAK +SNEAKED +SNEAKER +SNEAKERED +SNEAKERS +SNEAKIER +SNEAKIEST +SNEAKILY +SNEAKINESS +SNEAKINESSES +SNEAKING +SNEAKINGLY +SNEAKS +SNEAKY +SNEAP +SNEAPED +SNEAPING +SNEAPS +SNECK +SNECKS +SNED +SNEDDED +SNEDDING +SNEDS +SNEER +SNEERED +SNEERER +SNEERERS +SNEERFUL +SNEERIER +SNEERIEST +SNEERING +SNEERS +SNEERY +SNEESH +SNEESHES +SNEEZE +SNEEZED +SNEEZER +SNEEZERS +SNEEZES +SNEEZEWEED +SNEEZEWEEDS +SNEEZIER +SNEEZIEST +SNEEZING +SNEEZY +SNELL +SNELLED +SNELLER +SNELLEST +SNELLING +SNELLS +SNIB +SNIBBED +SNIBBING +SNIBS +SNICK +SNICKED +SNICKER +SNICKERED +SNICKERER +SNICKERERS +SNICKERING +SNICKERS +SNICKERSNEE +SNICKERSNEES +SNICKERY +SNICKING +SNICKS +SNIDE +SNIDELY +SNIDENESS +SNIDENESSES +SNIDER +SNIDEST +SNIFF +SNIFFABLE +SNIFFED +SNIFFER +SNIFFERS +SNIFFIER +SNIFFIEST +SNIFFILY +SNIFFINESS +SNIFFINESSES +SNIFFING +SNIFFISH +SNIFFISHLY +SNIFFISHNESS +SNIFFISHNESSES +SNIFFLE +SNIFFLED +SNIFFLER +SNIFFLERS +SNIFFLES +SNIFFLING +SNIFFLY +SNIFFS +SNIFFY +SNIFTER +SNIFTERS +SNIGGER +SNIGGERED +SNIGGERER +SNIGGERERS +SNIGGERING +SNIGGERS +SNIGGLE +SNIGGLED +SNIGGLER +SNIGGLERS +SNIGGLES +SNIGGLING +SNIGLET +SNIGLETS +SNIP +SNIPE +SNIPED +SNIPER +SNIPERS +SNIPERSCOPE +SNIPERSCOPES +SNIPES +SNIPING +SNIPPED +SNIPPER +SNIPPERS +SNIPPERSNAPPER +SNIPPERSNAPPERS +SNIPPET +SNIPPETIER +SNIPPETIEST +SNIPPETS +SNIPPETY +SNIPPIER +SNIPPIEST +SNIPPILY +SNIPPING +SNIPPY +SNIPS +SNIT +SNITCH +SNITCHED +SNITCHER +SNITCHERS +SNITCHES +SNITCHING +SNITS +SNIVEL +SNIVELED +SNIVELER +SNIVELERS +SNIVELING +SNIVELLED +SNIVELLER +SNIVELLERS +SNIVELLING +SNIVELS +SNOB +SNOBBERIES +SNOBBERY +SNOBBIER +SNOBBIEST +SNOBBILY +SNOBBISH +SNOBBISHLY +SNOBBISHNESS +SNOBBISHNESSES +SNOBBISM +SNOBBISMS +SNOBBY +SNOBS +SNOG +SNOGGED +SNOGGING +SNOGS +SNOLLYGOSTER +SNOLLYGOSTERS +SNOOD +SNOODED +SNOODING +SNOODS +SNOOK +SNOOKED +SNOOKER +SNOOKERED +SNOOKERING +SNOOKERS +SNOOKING +SNOOKS +SNOOL +SNOOLED +SNOOLING +SNOOLS +SNOOP +SNOOPED +SNOOPER +SNOOPERS +SNOOPIER +SNOOPIEST +SNOOPILY +SNOOPING +SNOOPS +SNOOPY +SNOOT +SNOOTED +SNOOTIER +SNOOTIEST +SNOOTILY +SNOOTINESS +SNOOTINESSES +SNOOTING +SNOOTS +SNOOTY +SNOOZE +SNOOZED +SNOOZER +SNOOZERS +SNOOZES +SNOOZIER +SNOOZIEST +SNOOZING +SNOOZLE +SNOOZLED +SNOOZLES +SNOOZLING +SNOOZY +SNORE +SNORED +SNORER +SNORERS +SNORES +SNORING +SNORKEL +SNORKELED +SNORKELER +SNORKELERS +SNORKELING +SNORKELS +SNORT +SNORTED +SNORTER +SNORTERS +SNORTING +SNORTS +SNOT +SNOTS +SNOTTIER +SNOTTIEST +SNOTTILY +SNOTTINESS +SNOTTINESSES +SNOTTY +SNOUT +SNOUTED +SNOUTIER +SNOUTIEST +SNOUTING +SNOUTISH +SNOUTS +SNOUTY +SNOW +SNOWBALL +SNOWBALLED +SNOWBALLING +SNOWBALLS +SNOWBANK +SNOWBANKS +SNOWBELL +SNOWBELLS +SNOWBELT +SNOWBELTS +SNOWBERRIES +SNOWBERRY +SNOWBIRD +SNOWBIRDS +SNOWBLINK +SNOWBLINKS +SNOWBLOWER +SNOWBLOWERS +SNOWBOARD +SNOWBOARDED +SNOWBOARDER +SNOWBOARDERS +SNOWBOARDING +SNOWBOARDINGS +SNOWBOARDS +SNOWBOUND +SNOWBRUSH +SNOWBRUSHES +SNOWBUSH +SNOWBUSHES +SNOWCAP +SNOWCAPPED +SNOWCAPS +SNOWCAT +SNOWCATS +SNOWDRIFT +SNOWDRIFTS +SNOWDROP +SNOWDROPS +SNOWED +SNOWFALL +SNOWFALLS +SNOWFIELD +SNOWFIELDS +SNOWFLAKE +SNOWFLAKES +SNOWIER +SNOWIEST +SNOWILY +SNOWINESS +SNOWINESSES +SNOWING +SNOWLAND +SNOWLANDS +SNOWLESS +SNOWLIKE +SNOWMAKER +SNOWMAKERS +SNOWMAKING +SNOWMAN +SNOWMELT +SNOWMELTS +SNOWMEN +SNOWMOBILE +SNOWMOBILER +SNOWMOBILERS +SNOWMOBILES +SNOWMOBILING +SNOWMOBILINGS +SNOWMOBILIST +SNOWMOBILISTS +SNOWMOLD +SNOWMOLDS +SNOWPACK +SNOWPACKS +SNOWPLOW +SNOWPLOWED +SNOWPLOWING +SNOWPLOWS +SNOWS +SNOWSCAPE +SNOWSCAPES +SNOWSHED +SNOWSHEDS +SNOWSHOE +SNOWSHOED +SNOWSHOEING +SNOWSHOER +SNOWSHOERS +SNOWSHOES +SNOWSLIDE +SNOWSLIDES +SNOWSTORM +SNOWSTORMS +SNOWSUIT +SNOWSUITS +SNOWY +SNUB +SNUBBED +SNUBBER +SNUBBERS +SNUBBIER +SNUBBIEST +SNUBBINESS +SNUBBINESSES +SNUBBING +SNUBBY +SNUBNESS +SNUBNESSES +SNUBS +SNUCK +SNUFF +SNUFFBOX +SNUFFBOXES +SNUFFED +SNUFFER +SNUFFERS +SNUFFIER +SNUFFIEST +SNUFFILY +SNUFFING +SNUFFLE +SNUFFLED +SNUFFLER +SNUFFLERS +SNUFFLES +SNUFFLIER +SNUFFLIEST +SNUFFLING +SNUFFLY +SNUFFS +SNUFFY +SNUG +SNUGGED +SNUGGER +SNUGGERIE +SNUGGERIES +SNUGGERY +SNUGGEST +SNUGGIES +SNUGGING +SNUGGLE +SNUGGLED +SNUGGLES +SNUGGLING +SNUGLY +SNUGNESS +SNUGNESSES +SNUGS +SNYE +SNYES +SO +SOAK +SOAKAGE +SOAKAGES +SOAKED +SOAKER +SOAKERS +SOAKING +SOAKS +SOAP +SOAPBARK +SOAPBARKS +SOAPBERRIES +SOAPBERRY +SOAPBOX +SOAPBOXED +SOAPBOXES +SOAPBOXING +SOAPED +SOAPER +SOAPERS +SOAPIER +SOAPIEST +SOAPILY +SOAPINESS +SOAPINESSES +SOAPING +SOAPLESS +SOAPLIKE +SOAPS +SOAPSTONE +SOAPSTONES +SOAPSUDS +SOAPSUDSY +SOAPWORT +SOAPWORTS +SOAPY +SOAR +SOARED +SOARER +SOARERS +SOARING +SOARINGLY +SOARINGS +SOARS +SOAVE +SOAVES +SOB +SOBA +SOBAS +SOBBED +SOBBER +SOBBERS +SOBBING +SOBBINGLY +SOBEIT +SOBER +SOBERED +SOBERER +SOBEREST +SOBERING +SOBERIZE +SOBERIZED +SOBERIZES +SOBERIZING +SOBERLY +SOBERNESS +SOBERNESSES +SOBERS +SOBERSIDED +SOBERSIDEDNESS +SOBERSIDES +SOBFUL +SOBRIETIES +SOBRIETY +SOBRIQUET +SOBRIQUETS +SOBS +SOCA +SOCAGE +SOCAGER +SOCAGERS +SOCAGES +SOCAS +SOCCAGE +SOCCAGES +SOCCER +SOCCERS +SOCIABILITIES +SOCIABILITY +SOCIABLE +SOCIABLENESS +SOCIABLENESSES +SOCIABLES +SOCIABLY +SOCIAL +SOCIALISE +SOCIALISED +SOCIALISES +SOCIALISING +SOCIALISM +SOCIALISMS +SOCIALIST +SOCIALISTIC +SOCIALISTICALLY +SOCIALISTS +SOCIALITE +SOCIALITES +SOCIALITIES +SOCIALITY +SOCIALIZATION +SOCIALIZATIONS +SOCIALIZE +SOCIALIZED +SOCIALIZER +SOCIALIZERS +SOCIALIZES +SOCIALIZING +SOCIALLY +SOCIALS +SOCIETAL +SOCIETALLY +SOCIETIES +SOCIETY +SOCIOBIOLOGICAL +SOCIOBIOLOGIES +SOCIOBIOLOGIST +SOCIOBIOLOGISTS +SOCIOBIOLOGY +SOCIOCULTURAL +SOCIOCULTURALLY +SOCIOECONOMIC +SOCIOGRAM +SOCIOGRAMS +SOCIOHISTORICAL +SOCIOLECT +SOCIOLECTS +SOCIOLINGUIST +SOCIOLINGUISTIC +SOCIOLINGUISTS +SOCIOLOGESE +SOCIOLOGESES +SOCIOLOGIC +SOCIOLOGICAL +SOCIOLOGICALLY +SOCIOLOGIES +SOCIOLOGIST +SOCIOLOGISTS +SOCIOLOGY +SOCIOMETRIC +SOCIOMETRIES +SOCIOMETRY +SOCIOPATH +SOCIOPATHIC +SOCIOPATHS +SOCIOPOLITICAL +SOCIORELIGIOUS +SOCIOSEXUAL +SOCK +SOCKDOLAGER +SOCKDOLAGERS +SOCKDOLOGER +SOCKDOLOGERS +SOCKED +SOCKET +SOCKETED +SOCKETING +SOCKETS +SOCKEYE +SOCKEYES +SOCKING +SOCKLESS +SOCKMAN +SOCKMEN +SOCKO +SOCKS +SOCLE +SOCLES +SOCMAN +SOCMEN +SOD +SODA +SODALESS +SODALIST +SODALISTS +SODALITE +SODALITES +SODALITIES +SODALITY +SODAMIDE +SODAMIDES +SODAS +SODBUSTER +SODBUSTERS +SODDED +SODDEN +SODDENED +SODDENING +SODDENLY +SODDENNESS +SODDENNESSES +SODDENS +SODDIES +SODDING +SODDY +SODIC +SODIUM +SODIUMS +SODOM +SODOMIES +SODOMIST +SODOMISTS +SODOMITE +SODOMITES +SODOMITIC +SODOMITICAL +SODOMIZE +SODOMIZED +SODOMIZES +SODOMIZING +SODOMS +SODOMY +SODS +SOEVER +SOFA +SOFABED +SOFABEDS +SOFAR +SOFARS +SOFAS +SOFFIT +SOFFITS +SOFT +SOFTA +SOFTAS +SOFTBACK +SOFTBACKS +SOFTBALL +SOFTBALLER +SOFTBALLERS +SOFTBALLS +SOFTBOUND +SOFTBOUNDS +SOFTCORE +SOFTCOVER +SOFTCOVERS +SOFTEN +SOFTENED +SOFTENER +SOFTENERS +SOFTENING +SOFTENS +SOFTER +SOFTEST +SOFTGOODS +SOFTHEAD +SOFTHEADED +SOFTHEADEDLY +SOFTHEADEDNESS +SOFTHEADS +SOFTHEARTED +SOFTHEARTEDLY +SOFTHEARTEDNESS +SOFTIE +SOFTIES +SOFTISH +SOFTLY +SOFTNESS +SOFTNESSES +SOFTS +SOFTSHELL +SOFTSHELLS +SOFTWARE +SOFTWARES +SOFTWOOD +SOFTWOODS +SOFTY +SOGGED +SOGGIER +SOGGIEST +SOGGILY +SOGGINESS +SOGGINESSES +SOGGY +SOIGNE +SOIGNEE +SOIL +SOILAGE +SOILAGES +SOILBORNE +SOILED +SOILING +SOILLESS +SOILS +SOILURE +SOILURES +SOIREE +SOIREES +SOJA +SOJAS +SOJOURN +SOJOURNED +SOJOURNER +SOJOURNERS +SOJOURNING +SOJOURNS +SOKE +SOKEMAN +SOKEMEN +SOKES +SOKOL +SOKOLS +SOL +SOLA +SOLACE +SOLACED +SOLACEMENT +SOLACEMENTS +SOLACER +SOLACERS +SOLACES +SOLACING +SOLAN +SOLANACEOUS +SOLAND +SOLANDER +SOLANDERS +SOLANDS +SOLANIN +SOLANINE +SOLANINES +SOLANINS +SOLANO +SOLANOS +SOLANS +SOLANUM +SOLANUMS +SOLAR +SOLARIA +SOLARISE +SOLARISED +SOLARISES +SOLARISING +SOLARISM +SOLARISMS +SOLARIUM +SOLARIUMS +SOLARIZATION +SOLARIZATIONS +SOLARIZE +SOLARIZED +SOLARIZES +SOLARIZING +SOLATE +SOLATED +SOLATES +SOLATIA +SOLATING +SOLATION +SOLATIONS +SOLATIUM +SOLD +SOLDAN +SOLDANS +SOLDER +SOLDERABILITIES +SOLDERABILITY +SOLDERED +SOLDERER +SOLDERERS +SOLDERING +SOLDERS +SOLDI +SOLDIER +SOLDIERED +SOLDIERIES +SOLDIERING +SOLDIERINGS +SOLDIERLY +SOLDIERS +SOLDIERSHIP +SOLDIERSHIPS +SOLDIERY +SOLDO +SOLE +SOLECISE +SOLECISED +SOLECISES +SOLECISING +SOLECISM +SOLECISMS +SOLECIST +SOLECISTIC +SOLECISTS +SOLECIZE +SOLECIZED +SOLECIZES +SOLECIZING +SOLED +SOLEI +SOLELESS +SOLELY +SOLEMN +SOLEMNER +SOLEMNEST +SOLEMNIFIED +SOLEMNIFIES +SOLEMNIFY +SOLEMNIFYING +SOLEMNITIES +SOLEMNITY +SOLEMNIZATION +SOLEMNIZATIONS +SOLEMNIZE +SOLEMNIZED +SOLEMNIZES +SOLEMNIZING +SOLEMNLY +SOLEMNNESS +SOLEMNNESSES +SOLENESS +SOLENESSES +SOLENODON +SOLENODONS +SOLENOID +SOLENOIDAL +SOLENOIDS +SOLEPLATE +SOLEPLATES +SOLEPRINT +SOLEPRINTS +SOLERET +SOLERETS +SOLES +SOLEUS +SOLEUSES +SOLFATARA +SOLFATARAS +SOLFEGE +SOLFEGES +SOLFEGGI +SOLFEGGIO +SOLFEGGIOS +SOLFERINO +SOLFERINOS +SOLGEL +SOLI +SOLICIT +SOLICITANT +SOLICITANTS +SOLICITATION +SOLICITATIONS +SOLICITED +SOLICITING +SOLICITOR +SOLICITORS +SOLICITORSHIP +SOLICITORSHIPS +SOLICITOUS +SOLICITOUSLY +SOLICITOUSNESS +SOLICITS +SOLICITUDE +SOLICITUDES +SOLID +SOLIDAGO +SOLIDAGOS +SOLIDARISM +SOLIDARISMS +SOLIDARIST +SOLIDARISTIC +SOLIDARISTS +SOLIDARITIES +SOLIDARITY +SOLIDARY +SOLIDER +SOLIDEST +SOLIDI +SOLIDIFICATION +SOLIDIFICATIONS +SOLIDIFIED +SOLIDIFIES +SOLIDIFY +SOLIDIFYING +SOLIDITIES +SOLIDITY +SOLIDLY +SOLIDNESS +SOLIDNESSES +SOLIDS +SOLIDUS +SOLIFLUCTION +SOLIFLUCTIONS +SOLILOQUIES +SOLILOQUISE +SOLILOQUISED +SOLILOQUISES +SOLILOQUISING +SOLILOQUIST +SOLILOQUISTS +SOLILOQUIZE +SOLILOQUIZED +SOLILOQUIZER +SOLILOQUIZERS +SOLILOQUIZES +SOLILOQUIZING +SOLILOQUY +SOLING +SOLION +SOLIONS +SOLIPSISM +SOLIPSISMS +SOLIPSIST +SOLIPSISTIC +SOLIPSISTICALLY +SOLIPSISTS +SOLIQUID +SOLIQUIDS +SOLITAIRE +SOLITAIRES +SOLITARIES +SOLITARILY +SOLITARINESS +SOLITARINESSES +SOLITARY +SOLITON +SOLITONS +SOLITUDE +SOLITUDES +SOLITUDINARIAN +SOLITUDINARIANS +SOLLERET +SOLLERETS +SOLMIZATION +SOLMIZATIONS +SOLO +SOLOED +SOLOING +SOLOIST +SOLOISTIC +SOLOISTS +SOLON +SOLONCHAK +SOLONCHAKS +SOLONETS +SOLONETSES +SOLONETZ +SOLONETZES +SOLONETZIC +SOLONS +SOLOS +SOLS +SOLSTICE +SOLSTICES +SOLSTITIAL +SOLUBILISE +SOLUBILISED +SOLUBILISES +SOLUBILISING +SOLUBILITIES +SOLUBILITY +SOLUBILIZATION +SOLUBILIZATIONS +SOLUBILIZE +SOLUBILIZED +SOLUBILIZES +SOLUBILIZING +SOLUBLE +SOLUBLES +SOLUBLY +SOLUM +SOLUMS +SOLUNAR +SOLUS +SOLUTE +SOLUTES +SOLUTION +SOLUTIONS +SOLVABILITIES +SOLVABILITY +SOLVABLE +SOLVATE +SOLVATED +SOLVATES +SOLVATING +SOLVATION +SOLVATIONS +SOLVE +SOLVED +SOLVENCIES +SOLVENCY +SOLVENT +SOLVENTLESS +SOLVENTLY +SOLVENTS +SOLVER +SOLVERS +SOLVES +SOLVING +SOLVOLYSES +SOLVOLYSIS +SOLVOLYTIC +SOM +SOMA +SOMAN +SOMANS +SOMAS +SOMATA +SOMATIC +SOMATICALLY +SOMATOLOGICAL +SOMATOLOGIES +SOMATOLOGY +SOMATOMEDIN +SOMATOMEDINS +SOMATOPLEURE +SOMATOPLEURES +SOMATOSENSORY +SOMATOSTATIN +SOMATOSTATINS +SOMATOTROPHIN +SOMATOTROPHINS +SOMATOTROPIN +SOMATOTROPINS +SOMATOTYPE +SOMATOTYPES +SOMBER +SOMBERLY +SOMBERNESS +SOMBERNESSES +SOMBRE +SOMBRELY +SOMBRERO +SOMBREROS +SOMBROUS +SOME +SOMEBODIES +SOMEBODY +SOMEDAY +SOMEDEAL +SOMEHOW +SOMEONE +SOMEONES +SOMEPLACE +SOMEPLACES +SOMERSAULT +SOMERSAULTED +SOMERSAULTING +SOMERSAULTS +SOMERSET +SOMERSETED +SOMERSETING +SOMERSETS +SOMERSETTED +SOMERSETTING +SOMETHING +SOMETHINGS +SOMETIME +SOMETIMES +SOMEWAY +SOMEWAYS +SOMEWHAT +SOMEWHATS +SOMEWHEN +SOMEWHERE +SOMEWHERES +SOMEWHITHER +SOMEWISE +SOMITAL +SOMITE +SOMITES +SOMITIC +SOMMELIER +SOMMELIERS +SOMNAMBULANT +SOMNAMBULATE +SOMNAMBULATED +SOMNAMBULATES +SOMNAMBULATING +SOMNAMBULATION +SOMNAMBULATIONS +SOMNAMBULISM +SOMNAMBULISMS +SOMNAMBULIST +SOMNAMBULISTIC +SOMNAMBULISTS +SOMNIFACIENT +SOMNIFACIENTS +SOMNIFEROUS +SOMNOLENCE +SOMNOLENCES +SOMNOLENT +SOMNOLENTLY +SOMONI +SOMS +SON +SONANCE +SONANCES +SONANT +SONANTAL +SONANTIC +SONANTS +SONAR +SONARMAN +SONARMEN +SONARS +SONATA +SONATAS +SONATINA +SONATINAS +SONATINE +SONDE +SONDER +SONDERS +SONDES +SONE +SONES +SONG +SONGBIRD +SONGBIRDS +SONGBOOK +SONGBOOKS +SONGFEST +SONGFESTS +SONGFUL +SONGFULLY +SONGFULNESS +SONGFULNESSES +SONGLESS +SONGLESSLY +SONGLIKE +SONGS +SONGSMITH +SONGSMITHS +SONGSTER +SONGSTERS +SONGSTRESS +SONGSTRESSES +SONGWRITER +SONGWRITERS +SONGWRITING +SONGWRITINGS +SONHOOD +SONHOODS +SONIC +SONICALLY +SONICATE +SONICATED +SONICATES +SONICATING +SONICATION +SONICATIONS +SONICATOR +SONICATORS +SONICS +SONLESS +SONLIKE +SONLY +SONNET +SONNETED +SONNETEER +SONNETEERING +SONNETEERINGS +SONNETEERS +SONNETING +SONNETIZE +SONNETIZED +SONNETIZES +SONNETIZING +SONNETS +SONNETTED +SONNETTING +SONNIES +SONNY +SONOBUOY +SONOBUOYS +SONOGRAM +SONOGRAMS +SONOGRAPHIES +SONOGRAPHY +SONORANT +SONORANTS +SONORITIES +SONORITY +SONOROUS +SONOROUSLY +SONOROUSNESS +SONOROUSNESSES +SONOVOX +SONOVOXES +SONS +SONSHIP +SONSHIPS +SONSIE +SONSIER +SONSIEST +SONSY +SOOCHONG +SOOCHONGS +SOOEY +SOOK +SOOKS +SOON +SOONER +SOONERS +SOONEST +SOOT +SOOTED +SOOTH +SOOTHE +SOOTHED +SOOTHER +SOOTHERS +SOOTHES +SOOTHEST +SOOTHFAST +SOOTHING +SOOTHINGLY +SOOTHINGNESS +SOOTHINGNESSES +SOOTHLY +SOOTHS +SOOTHSAID +SOOTHSAY +SOOTHSAYER +SOOTHSAYERS +SOOTHSAYING +SOOTHSAYINGS +SOOTHSAYS +SOOTIER +SOOTIEST +SOOTILY +SOOTINESS +SOOTINESSES +SOOTING +SOOTS +SOOTY +SOP +SOPAIPILLA +SOPAIPILLAS +SOPAPILLA +SOPAPILLAS +SOPH +SOPHIES +SOPHISM +SOPHISMS +SOPHIST +SOPHISTIC +SOPHISTICAL +SOPHISTICALLY +SOPHISTICATE +SOPHISTICATED +SOPHISTICATEDLY +SOPHISTICATES +SOPHISTICATING +SOPHISTICATION +SOPHISTICATIONS +SOPHISTRIES +SOPHISTRY +SOPHISTS +SOPHOMORE +SOPHOMORES +SOPHOMORIC +SOPHS +SOPHY +SOPITE +SOPITED +SOPITES +SOPITING +SOPOR +SOPORIFEROUS +SOPORIFIC +SOPORIFICS +SOPORS +SOPPED +SOPPIER +SOPPIEST +SOPPINESS +SOPPINESSES +SOPPING +SOPPY +SOPRANI +SOPRANINO +SOPRANINOS +SOPRANO +SOPRANOS +SOPS +SORA +SORAS +SORB +SORBABILITIES +SORBABILITY +SORBABLE +SORBATE +SORBATES +SORBED +SORBENT +SORBENTS +SORBET +SORBETS +SORBIC +SORBING +SORBITOL +SORBITOLS +SORBOSE +SORBOSES +SORBS +SORCERER +SORCERERS +SORCERESS +SORCERESSES +SORCERIES +SORCEROUS +SORCERY +SORD +SORDID +SORDIDLY +SORDIDNESS +SORDIDNESSES +SORDINE +SORDINES +SORDINI +SORDINO +SORDOR +SORDORS +SORDS +SORE +SORED +SOREHEAD +SOREHEADED +SOREHEADS +SOREL +SORELS +SORELY +SORENESS +SORENESSES +SORER +SORES +SOREST +SORGHO +SORGHOS +SORGHUM +SORGHUMS +SORGO +SORGOS +SORI +SORICINE +SORING +SORINGS +SORITES +SORITIC +SORN +SORNED +SORNER +SORNERS +SORNING +SORNS +SOROCHE +SOROCHES +SORORAL +SORORALLY +SORORATE +SORORATES +SORORITIES +SORORITY +SOROSES +SOROSIS +SOROSISES +SORPTION +SORPTIONS +SORPTIVE +SORREL +SORRELS +SORRIER +SORRIEST +SORRILY +SORRINESS +SORRINESSES +SORROW +SORROWED +SORROWER +SORROWERS +SORROWFUL +SORROWFULLY +SORROWFULNESS +SORROWFULNESSES +SORROWING +SORROWS +SORRY +SORT +SORTA +SORTABLE +SORTABLY +SORTED +SORTER +SORTERS +SORTIE +SORTIED +SORTIEING +SORTIES +SORTILEGE +SORTILEGES +SORTING +SORTITION +SORTITIONS +SORTS +SORUS +SOS +SOSTENUTI +SOSTENUTO +SOSTENUTOS +SOT +SOTERIOLOGICAL +SOTERIOLOGIES +SOTERIOLOGY +SOTH +SOTHS +SOTOL +SOTOLS +SOTS +SOTTED +SOTTEDLY +SOTTISH +SOTTISHLY +SOTTISHNESS +SOTTISHNESSES +SOU +SOUARI +SOUARIS +SOUBISE +SOUBISES +SOUBRETTE +SOUBRETTES +SOUBRIQUET +SOUBRIQUETS +SOUCAR +SOUCARS +SOUCHONG +SOUCHONGS +SOUDAN +SOUDANS +SOUFFLE +SOUFFLED +SOUFFLEED +SOUFFLES +SOUGH +SOUGHED +SOUGHING +SOUGHS +SOUGHT +SOUK +SOUKOUS +SOUKOUSES +SOUKS +SOUL +SOULED +SOULFUL +SOULFULLY +SOULFULNESS +SOULFULNESSES +SOULLESS +SOULLESSLY +SOULLESSNESS +SOULLESSNESSES +SOULLIKE +SOULMATE +SOULMATES +SOULS +SOUND +SOUNDABLE +SOUNDALIKE +SOUNDALIKES +SOUNDBOARD +SOUNDBOARDS +SOUNDBOX +SOUNDBOXES +SOUNDED +SOUNDER +SOUNDERS +SOUNDEST +SOUNDING +SOUNDINGLY +SOUNDINGS +SOUNDLESS +SOUNDLESSLY +SOUNDLY +SOUNDMAN +SOUNDMEN +SOUNDNESS +SOUNDNESSES +SOUNDPROOF +SOUNDPROOFED +SOUNDPROOFING +SOUNDPROOFS +SOUNDS +SOUNDSTAGE +SOUNDSTAGES +SOUP +SOUPCON +SOUPCONS +SOUPED +SOUPIER +SOUPIEST +SOUPING +SOUPLESS +SOUPLIKE +SOUPS +SOUPSPOON +SOUPSPOONS +SOUPY +SOUR +SOURBALL +SOURBALLS +SOURCE +SOURCEBOOK +SOURCEBOOKS +SOURCED +SOURCEFUL +SOURCELESS +SOURCES +SOURCING +SOURDINE +SOURDINES +SOURDOUGH +SOURDOUGHS +SOURED +SOURER +SOUREST +SOURING +SOURISH +SOURLY +SOURNESS +SOURNESSES +SOURPUSS +SOURPUSSES +SOURS +SOURSOP +SOURSOPS +SOURWOOD +SOURWOODS +SOUS +SOUSAPHONE +SOUSAPHONES +SOUSE +SOUSED +SOUSES +SOUSING +SOUSLIK +SOUSLIKS +SOUTACHE +SOUTACHES +SOUTANE +SOUTANES +SOUTER +SOUTERS +SOUTH +SOUTHBOUND +SOUTHEAST +SOUTHEASTER +SOUTHEASTERLY +SOUTHEASTERN +SOUTHEASTERS +SOUTHEASTS +SOUTHEASTWARD +SOUTHEASTWARDS +SOUTHED +SOUTHER +SOUTHERLIES +SOUTHERLY +SOUTHERN +SOUTHERNMOST +SOUTHERNNESS +SOUTHERNNESSES +SOUTHERNS +SOUTHERNWOOD +SOUTHERNWOODS +SOUTHERS +SOUTHING +SOUTHINGS +SOUTHLAND +SOUTHLANDS +SOUTHPAW +SOUTHPAWS +SOUTHRON +SOUTHRONS +SOUTHS +SOUTHWARD +SOUTHWARDS +SOUTHWEST +SOUTHWESTER +SOUTHWESTERLY +SOUTHWESTERN +SOUTHWESTERS +SOUTHWESTS +SOUTHWESTWARD +SOUTHWESTWARDS +SOUVENIR +SOUVENIRS +SOUVLAKI +SOUVLAKIA +SOUVLAKIAS +SOUVLAKIS +SOVEREIGN +SOVEREIGNLY +SOVEREIGNS +SOVEREIGNTIES +SOVEREIGNTY +SOVIET +SOVIETISM +SOVIETISMS +SOVIETIZATION +SOVIETIZATIONS +SOVIETIZE +SOVIETIZED +SOVIETIZES +SOVIETIZING +SOVIETS +SOVKHOZ +SOVKHOZES +SOVKHOZY +SOVRAN +SOVRANLY +SOVRANS +SOVRANTIES +SOVRANTY +SOW +SOWABLE +SOWANS +SOWAR +SOWARS +SOWBELLIES +SOWBELLY +SOWBREAD +SOWBREADS +SOWCAR +SOWCARS +SOWED +SOWENS +SOWER +SOWERS +SOWING +SOWN +SOWS +SOX +SOY +SOYA +SOYAS +SOYBEAN +SOYBEANS +SOYMILK +SOYMILKS +SOYS +SOYUZ +SOYUZES +SOZIN +SOZINE +SOZINES +SOZINS +SOZZLED +SPA +SPACE +SPACEBAND +SPACEBANDS +SPACECRAFT +SPACECRAFTS +SPACED +SPACEFLIGHT +SPACEFLIGHTS +SPACELESS +SPACEMAN +SPACEMEN +SPACEPORT +SPACEPORTS +SPACER +SPACERS +SPACES +SPACESHIP +SPACESHIPS +SPACESUIT +SPACESUITS +SPACEWALK +SPACEWALKED +SPACEWALKER +SPACEWALKERS +SPACEWALKING +SPACEWALKS +SPACEWARD +SPACEY +SPACIAL +SPACIALLY +SPACIER +SPACIEST +SPACINESS +SPACINESSES +SPACING +SPACINGS +SPACIOUS +SPACIOUSLY +SPACIOUSNESS +SPACIOUSNESSES +SPACKLE +SPACKLED +SPACKLES +SPACKLING +SPACY +SPADE +SPADED +SPADEFISH +SPADEFISHES +SPADEFUL +SPADEFULS +SPADER +SPADERS +SPADES +SPADEWORK +SPADEWORKS +SPADICES +SPADILLE +SPADILLES +SPADING +SPADIX +SPADIXES +SPADO +SPADONES +SPAE +SPAED +SPAEING +SPAEINGS +SPAES +SPAETZLE +SPAETZLES +SPAGHETTI +SPAGHETTILIKE +SPAGHETTINI +SPAGHETTINIS +SPAGHETTIS +SPAGYRIC +SPAGYRICS +SPAHEE +SPAHEES +SPAHI +SPAHIS +SPAIL +SPAILS +SPAIT +SPAITS +SPAKE +SPALDEEN +SPALDEENS +SPALE +SPALES +SPALL +SPALLABLE +SPALLATION +SPALLATIONS +SPALLED +SPALLER +SPALLERS +SPALLING +SPALLS +SPALPEEN +SPALPEENS +SPAM +SPAMBOT +SPAMBOTS +SPAMMED +SPAMMER +SPAMMERS +SPAMMING +SPAMS +SPAN +SPANAKOPITA +SPANAKOPITAS +SPANCEL +SPANCELED +SPANCELING +SPANCELLED +SPANCELLING +SPANCELS +SPANDEX +SPANDEXES +SPANDREL +SPANDRELS +SPANDRIL +SPANDRILS +SPANG +SPANGLE +SPANGLED +SPANGLES +SPANGLIER +SPANGLIEST +SPANGLING +SPANGLY +SPANIEL +SPANIELS +SPANK +SPANKED +SPANKER +SPANKERS +SPANKING +SPANKINGS +SPANKS +SPANLESS +SPANNED +SPANNER +SPANNERS +SPANNING +SPANOKOPITA +SPANOKOPITAS +SPANS +SPANSULE +SPANSULES +SPANWORM +SPANWORMS +SPAR +SPARABLE +SPARABLES +SPARE +SPAREABLE +SPARED +SPARELY +SPARENESS +SPARENESSES +SPARER +SPARERIB +SPARERIBS +SPARERS +SPARES +SPAREST +SPARGE +SPARGED +SPARGER +SPARGERS +SPARGES +SPARGING +SPARID +SPARIDS +SPARING +SPARINGLY +SPARK +SPARKED +SPARKER +SPARKERS +SPARKIER +SPARKIEST +SPARKILY +SPARKING +SPARKISH +SPARKLE +SPARKLED +SPARKLER +SPARKLERS +SPARKLES +SPARKLET +SPARKLETS +SPARKLIER +SPARKLIEST +SPARKLING +SPARKLY +SPARKPLUG +SPARKPLUGGED +SPARKPLUGGING +SPARKPLUGS +SPARKS +SPARKY +SPARLIKE +SPARLING +SPARLINGS +SPAROID +SPAROIDS +SPARRED +SPARRIER +SPARRIEST +SPARRING +SPARROW +SPARROWLIKE +SPARROWS +SPARRY +SPARS +SPARSE +SPARSELY +SPARSENESS +SPARSENESSES +SPARSER +SPARSEST +SPARSITIES +SPARSITY +SPARTAN +SPARTEINE +SPARTEINES +SPARTINA +SPARTINAS +SPAS +SPASM +SPASMED +SPASMING +SPASMODIC +SPASMODICALLY +SPASMOLYTIC +SPASMOLYTICS +SPASMS +SPASTIC +SPASTICALLY +SPASTICITIES +SPASTICITY +SPASTICS +SPAT +SPATE +SPATES +SPATHAL +SPATHE +SPATHED +SPATHES +SPATHIC +SPATHOSE +SPATHULATE +SPATIAL +SPATIALITIES +SPATIALITY +SPATIALLY +SPATIOTEMPORAL +SPATS +SPATTED +SPATTER +SPATTERDOCK +SPATTERDOCKS +SPATTERED +SPATTERING +SPATTERS +SPATTING +SPATULA +SPATULAR +SPATULAS +SPATULATE +SPATZLE +SPATZLES +SPAVIE +SPAVIES +SPAVIET +SPAVIN +SPAVINED +SPAVINS +SPAWN +SPAWNED +SPAWNER +SPAWNERS +SPAWNING +SPAWNS +SPAY +SPAYED +SPAYING +SPAYS +SPAZ +SPAZZ +SPAZZES +SPEAK +SPEAKABLE +SPEAKEASIES +SPEAKEASY +SPEAKER +SPEAKERPHONE +SPEAKERPHONES +SPEAKERS +SPEAKERSHIP +SPEAKERSHIPS +SPEAKING +SPEAKINGS +SPEAKS +SPEAN +SPEANED +SPEANING +SPEANS +SPEAR +SPEARED +SPEARER +SPEARERS +SPEARFISH +SPEARFISHED +SPEARFISHES +SPEARFISHING +SPEARGUN +SPEARGUNS +SPEARHEAD +SPEARHEADED +SPEARHEADING +SPEARHEADS +SPEARING +SPEARLIKE +SPEARMAN +SPEARMEN +SPEARMINT +SPEARMINTS +SPEARS +SPEARWORT +SPEARWORTS +SPEC +SPECCED +SPECCING +SPECIAL +SPECIALER +SPECIALEST +SPECIALISATION +SPECIALISATIONS +SPECIALISE +SPECIALISED +SPECIALISES +SPECIALISING +SPECIALISM +SPECIALISMS +SPECIALIST +SPECIALISTIC +SPECIALISTS +SPECIALITIES +SPECIALITY +SPECIALIZATION +SPECIALIZATIONS +SPECIALIZE +SPECIALIZED +SPECIALIZES +SPECIALIZING +SPECIALLY +SPECIALNESS +SPECIALNESSES +SPECIALS +SPECIALTIES +SPECIALTY +SPECIATE +SPECIATED +SPECIATES +SPECIATING +SPECIATION +SPECIATIONAL +SPECIATIONS +SPECIE +SPECIES +SPECIESISM +SPECIESISMS +SPECIFIABLE +SPECIFIC +SPECIFICALLY +SPECIFICATION +SPECIFICATIONS +SPECIFICITIES +SPECIFICITY +SPECIFICS +SPECIFIED +SPECIFIER +SPECIFIERS +SPECIFIES +SPECIFY +SPECIFYING +SPECIMEN +SPECIMENS +SPECIOSITIES +SPECIOSITY +SPECIOUS +SPECIOUSLY +SPECIOUSNESS +SPECIOUSNESSES +SPECK +SPECKED +SPECKING +SPECKLE +SPECKLED +SPECKLES +SPECKLING +SPECKS +SPECS +SPECTACLE +SPECTACLED +SPECTACLES +SPECTACULAR +SPECTACULARLY +SPECTACULARS +SPECTATE +SPECTATED +SPECTATES +SPECTATING +SPECTATOR +SPECTATORIAL +SPECTATORS +SPECTATORSHIP +SPECTATORSHIPS +SPECTER +SPECTERS +SPECTINOMYCIN +SPECTINOMYCINS +SPECTRA +SPECTRAL +SPECTRALLY +SPECTRE +SPECTRES +SPECTROGRAM +SPECTROGRAMS +SPECTROGRAPH +SPECTROGRAPHIC +SPECTROGRAPHIES +SPECTROGRAPHS +SPECTROGRAPHY +SPECTROMETER +SPECTROMETERS +SPECTROMETRIC +SPECTROMETRIES +SPECTROMETRY +SPECTROSCOPE +SPECTROSCOPES +SPECTROSCOPIC +SPECTROSCOPIES +SPECTROSCOPIST +SPECTROSCOPISTS +SPECTROSCOPY +SPECTRUM +SPECTRUMS +SPECULA +SPECULAR +SPECULARITIES +SPECULARITY +SPECULARLY +SPECULATE +SPECULATED +SPECULATES +SPECULATING +SPECULATION +SPECULATIONS +SPECULATIVE +SPECULATIVELY +SPECULATOR +SPECULATORS +SPECULUM +SPECULUMS +SPED +SPEECH +SPEECHES +SPEECHIFIED +SPEECHIFIES +SPEECHIFY +SPEECHIFYING +SPEECHLESS +SPEECHLESSLY +SPEECHLESSNESS +SPEECHWRITER +SPEECHWRITERS +SPEED +SPEEDBALL +SPEEDBALLED +SPEEDBALLING +SPEEDBALLS +SPEEDBOAT +SPEEDBOATING +SPEEDBOATINGS +SPEEDBOATS +SPEEDED +SPEEDER +SPEEDERS +SPEEDIER +SPEEDIEST +SPEEDILY +SPEEDINESS +SPEEDINESSES +SPEEDING +SPEEDINGS +SPEEDO +SPEEDOMETER +SPEEDOMETERS +SPEEDOS +SPEEDREAD +SPEEDREADING +SPEEDREADS +SPEEDS +SPEEDSTER +SPEEDSTERS +SPEEDUP +SPEEDUPS +SPEEDWAY +SPEEDWAYS +SPEEDWELL +SPEEDWELLS +SPEEDY +SPEEL +SPEELED +SPEELING +SPEELS +SPEER +SPEERED +SPEERING +SPEERINGS +SPEERS +SPEIL +SPEILED +SPEILING +SPEILS +SPEIR +SPEIRED +SPEIRING +SPEIRS +SPEISE +SPEISES +SPEISS +SPEISSES +SPELAEAN +SPELEAN +SPELEOLOGICAL +SPELEOLOGIES +SPELEOLOGIST +SPELEOLOGISTS +SPELEOLOGY +SPELL +SPELLBIND +SPELLBINDER +SPELLBINDERS +SPELLBINDING +SPELLBINDINGLY +SPELLBINDS +SPELLBOUND +SPELLDOWN +SPELLDOWNS +SPELLED +SPELLER +SPELLERS +SPELLING +SPELLINGS +SPELLS +SPELT +SPELTER +SPELTERS +SPELTS +SPELTZ +SPELTZES +SPELUNK +SPELUNKED +SPELUNKER +SPELUNKERS +SPELUNKING +SPELUNKINGS +SPELUNKS +SPENCE +SPENCER +SPENCERS +SPENCES +SPEND +SPENDABLE +SPENDER +SPENDERS +SPENDIER +SPENDIEST +SPENDING +SPENDS +SPENDTHRIFT +SPENDTHRIFTS +SPENDY +SPENSE +SPENSES +SPENT +SPERM +SPERMACETI +SPERMACETIS +SPERMAGONIA +SPERMAGONIUM +SPERMARIES +SPERMARY +SPERMATHECA +SPERMATHECAE +SPERMATIA +SPERMATIAL +SPERMATIC +SPERMATID +SPERMATIDS +SPERMATIUM +SPERMATOCYTE +SPERMATOCYTES +SPERMATOGENESES +SPERMATOGENESIS +SPERMATOGENIC +SPERMATOGONIA +SPERMATOGONIAL +SPERMATOGONIUM +SPERMATOPHORE +SPERMATOPHORES +SPERMATOPHYTE +SPERMATOPHYTES +SPERMATOPHYTIC +SPERMATOZOA +SPERMATOZOAL +SPERMATOZOAN +SPERMATOZOANS +SPERMATOZOID +SPERMATOZOIDS +SPERMATOZOON +SPERMIC +SPERMICIDAL +SPERMICIDE +SPERMICIDES +SPERMINE +SPERMINES +SPERMIOGENESES +SPERMIOGENESIS +SPERMOPHILE +SPERMOPHILES +SPERMOUS +SPERMS +SPERRYLITE +SPERRYLITES +SPESSARTINE +SPESSARTINES +SPESSARTITE +SPESSARTITES +SPEW +SPEWED +SPEWER +SPEWERS +SPEWING +SPEWS +SPHAGNOUS +SPHAGNUM +SPHAGNUMS +SPHALERITE +SPHALERITES +SPHENE +SPHENES +SPHENIC +SPHENODON +SPHENODONS +SPHENODONT +SPHENOID +SPHENOIDAL +SPHENOIDS +SPHENOPSID +SPHENOPSIDS +SPHERAL +SPHERE +SPHERED +SPHERES +SPHERIC +SPHERICAL +SPHERICALLY +SPHERICITIES +SPHERICITY +SPHERICS +SPHERIER +SPHERIEST +SPHERING +SPHEROID +SPHEROIDAL +SPHEROIDALLY +SPHEROIDS +SPHEROMETER +SPHEROMETERS +SPHEROPLAST +SPHEROPLASTS +SPHERULAR +SPHERULE +SPHERULES +SPHERULITE +SPHERULITES +SPHERULITIC +SPHERY +SPHINCTER +SPHINCTERIC +SPHINCTERS +SPHINGES +SPHINGID +SPHINGIDS +SPHINGOSINE +SPHINGOSINES +SPHINX +SPHINXES +SPHINXLIKE +SPHYGMIC +SPHYGMOGRAPH +SPHYGMOGRAPHS +SPHYGMUS +SPHYGMUSES +SPHYNX +SPHYNXES +SPIC +SPICA +SPICAE +SPICAS +SPICATE +SPICATED +SPICCATO +SPICCATOS +SPICE +SPICEBUSH +SPICEBUSHES +SPICED +SPICELESS +SPICER +SPICERIES +SPICERS +SPICERY +SPICES +SPICEY +SPICIER +SPICIEST +SPICILY +SPICINESS +SPICINESSES +SPICING +SPICK +SPICKS +SPICS +SPICULA +SPICULAE +SPICULAR +SPICULATE +SPICULATION +SPICULATIONS +SPICULE +SPICULES +SPICULUM +SPICY +SPIDER +SPIDERIER +SPIDERIEST +SPIDERISH +SPIDERLIKE +SPIDERS +SPIDERWEB +SPIDERWEBS +SPIDERWORT +SPIDERWORTS +SPIDERY +SPIED +SPIEGEL +SPIEGELEISEN +SPIEGELEISENS +SPIEGELS +SPIEL +SPIELED +SPIELER +SPIELERS +SPIELING +SPIELS +SPIER +SPIERED +SPIERING +SPIERS +SPIES +SPIFF +SPIFFED +SPIFFIED +SPIFFIER +SPIFFIES +SPIFFIEST +SPIFFILY +SPIFFINESS +SPIFFINESSES +SPIFFING +SPIFFS +SPIFFY +SPIFFYING +SPIGOT +SPIGOTS +SPIK +SPIKE +SPIKED +SPIKELET +SPIKELETS +SPIKELIKE +SPIKENARD +SPIKENARDS +SPIKER +SPIKERS +SPIKES +SPIKEY +SPIKIER +SPIKIEST +SPIKILY +SPIKINESS +SPIKINESSES +SPIKING +SPIKS +SPIKY +SPILE +SPILED +SPILES +SPILIKIN +SPILIKINS +SPILING +SPILINGS +SPILL +SPILLABLE +SPILLAGE +SPILLAGES +SPILLED +SPILLER +SPILLERS +SPILLIKIN +SPILLIKINS +SPILLING +SPILLOVER +SPILLOVERS +SPILLS +SPILLWAY +SPILLWAYS +SPILT +SPILTH +SPILTHS +SPIN +SPINACH +SPINACHES +SPINACHLIKE +SPINACHY +SPINAGE +SPINAGES +SPINAL +SPINALLY +SPINALS +SPINATE +SPINDLE +SPINDLED +SPINDLER +SPINDLERS +SPINDLES +SPINDLIER +SPINDLIEST +SPINDLING +SPINDLY +SPINDRIFT +SPINDRIFTS +SPINE +SPINED +SPINEL +SPINELESS +SPINELESSLY +SPINELESSNESS +SPINELESSNESSES +SPINELIKE +SPINELLE +SPINELLES +SPINELS +SPINES +SPINET +SPINETS +SPINIER +SPINIEST +SPINIFEX +SPINIFEXES +SPININESS +SPININESSES +SPINLESS +SPINNAKER +SPINNAKERS +SPINNER +SPINNERET +SPINNERETS +SPINNERETTE +SPINNERETTES +SPINNERIES +SPINNERS +SPINNERY +SPINNEY +SPINNEYS +SPINNIES +SPINNING +SPINNINGS +SPINNY +SPINOFF +SPINOFFS +SPINOR +SPINORS +SPINOSE +SPINOSELY +SPINOSITIES +SPINOSITY +SPINOUS +SPINOUT +SPINOUTS +SPINS +SPINSTER +SPINSTERHOOD +SPINSTERHOODS +SPINSTERISH +SPINSTERLY +SPINSTERS +SPINTHARISCOPE +SPINTHARISCOPES +SPINTO +SPINTOS +SPINULA +SPINULAE +SPINULE +SPINULES +SPINULOSE +SPINY +SPIRACLE +SPIRACLES +SPIRACULAR +SPIRAEA +SPIRAEAS +SPIRAL +SPIRALED +SPIRALING +SPIRALITIES +SPIRALITY +SPIRALLED +SPIRALLING +SPIRALLY +SPIRALS +SPIRANT +SPIRANTS +SPIRE +SPIREA +SPIREAS +SPIRED +SPIREM +SPIREME +SPIREMES +SPIREMS +SPIRES +SPIRIER +SPIRIEST +SPIRILLA +SPIRILLUM +SPIRING +SPIRIT +SPIRITED +SPIRITEDLY +SPIRITEDNESS +SPIRITEDNESSES +SPIRITING +SPIRITISM +SPIRITISMS +SPIRITIST +SPIRITISTIC +SPIRITISTS +SPIRITLESS +SPIRITLESSLY +SPIRITLESSNESS +SPIRITOSO +SPIRITOUS +SPIRITS +SPIRITUAL +SPIRITUALISM +SPIRITUALISMS +SPIRITUALIST +SPIRITUALISTIC +SPIRITUALISTS +SPIRITUALITIES +SPIRITUALITY +SPIRITUALIZE +SPIRITUALIZED +SPIRITUALIZES +SPIRITUALIZING +SPIRITUALLY +SPIRITUALNESS +SPIRITUALNESSES +SPIRITUALS +SPIRITUALTIES +SPIRITUALTY +SPIRITUEL +SPIRITUELLE +SPIRITUOUS +SPIROCHAETE +SPIROCHAETES +SPIROCHETAL +SPIROCHETE +SPIROCHETES +SPIROCHETOSES +SPIROCHETOSIS +SPIROGYRA +SPIROGYRAS +SPIROID +SPIROMETER +SPIROMETERS +SPIROMETRIC +SPIROMETRIES +SPIROMETRY +SPIRT +SPIRTED +SPIRTING +SPIRTS +SPIRULA +SPIRULAE +SPIRULAS +SPIRULINA +SPIRULINAS +SPIRY +SPIT +SPITAL +SPITALS +SPITBALL +SPITBALLS +SPITE +SPITED +SPITEFUL +SPITEFULLER +SPITEFULLEST +SPITEFULLY +SPITEFULNESS +SPITEFULNESSES +SPITES +SPITFIRE +SPITFIRES +SPITING +SPITS +SPITTED +SPITTER +SPITTERS +SPITTING +SPITTLE +SPITTLEBUG +SPITTLEBUGS +SPITTLES +SPITTOON +SPITTOONS +SPITZ +SPITZES +SPIV +SPIVS +SPIVVY +SPLAKE +SPLAKES +SPLANCHNIC +SPLASH +SPLASHBOARD +SPLASHBOARDS +SPLASHDOWN +SPLASHDOWNS +SPLASHED +SPLASHER +SPLASHERS +SPLASHES +SPLASHIER +SPLASHIEST +SPLASHILY +SPLASHINESS +SPLASHINESSES +SPLASHING +SPLASHY +SPLAT +SPLATS +SPLATTED +SPLATTER +SPLATTERED +SPLATTERING +SPLATTERS +SPLATTING +SPLAY +SPLAYED +SPLAYFEET +SPLAYFOOT +SPLAYFOOTED +SPLAYING +SPLAYS +SPLEEN +SPLEENFUL +SPLEENIER +SPLEENIEST +SPLEENISH +SPLEENS +SPLEENWORT +SPLEENWORTS +SPLEENY +SPLENDENT +SPLENDID +SPLENDIDER +SPLENDIDEST +SPLENDIDLY +SPLENDIDNESS +SPLENDIDNESSES +SPLENDIFEROUS +SPLENDIFEROUSLY +SPLENDOR +SPLENDOROUS +SPLENDORS +SPLENDOUR +SPLENDOURS +SPLENDROUS +SPLENECTOMIES +SPLENECTOMIZE +SPLENECTOMIZED +SPLENECTOMIZES +SPLENECTOMIZING +SPLENECTOMY +SPLENETIC +SPLENETICALLY +SPLENETICS +SPLENIA +SPLENIAL +SPLENIC +SPLENII +SPLENIUM +SPLENIUS +SPLENOMEGALIES +SPLENOMEGALY +SPLENT +SPLENTS +SPLEUCHAN +SPLEUCHANS +SPLICE +SPLICED +SPLICER +SPLICERS +SPLICES +SPLICING +SPLIFF +SPLIFFS +SPLINE +SPLINED +SPLINES +SPLINING +SPLINT +SPLINTED +SPLINTER +SPLINTERED +SPLINTERING +SPLINTERS +SPLINTERY +SPLINTING +SPLINTS +SPLIT +SPLITS +SPLITTER +SPLITTERS +SPLITTING +SPLODGE +SPLODGED +SPLODGES +SPLODGING +SPLORE +SPLORES +SPLOSH +SPLOSHED +SPLOSHES +SPLOSHING +SPLOTCH +SPLOTCHED +SPLOTCHES +SPLOTCHIER +SPLOTCHIEST +SPLOTCHING +SPLOTCHY +SPLURGE +SPLURGED +SPLURGER +SPLURGERS +SPLURGES +SPLURGIER +SPLURGIEST +SPLURGING +SPLURGY +SPLUTTER +SPLUTTERED +SPLUTTERER +SPLUTTERERS +SPLUTTERING +SPLUTTERS +SPLUTTERY +SPODE +SPODES +SPODOSOL +SPODOSOLS +SPODUMENE +SPODUMENES +SPOIL +SPOILABLE +SPOILAGE +SPOILAGES +SPOILED +SPOILER +SPOILERS +SPOILING +SPOILS +SPOILSMAN +SPOILSMEN +SPOILSPORT +SPOILSPORTS +SPOILT +SPOKE +SPOKED +SPOKEN +SPOKES +SPOKESHAVE +SPOKESHAVES +SPOKESMAN +SPOKESMANSHIP +SPOKESMANSHIPS +SPOKESMEN +SPOKESPEOPLE +SPOKESPERSON +SPOKESPERSONS +SPOKESWOMAN +SPOKESWOMEN +SPOKING +SPOLIATE +SPOLIATED +SPOLIATES +SPOLIATING +SPOLIATION +SPOLIATIONS +SPOLIATOR +SPOLIATORS +SPONDAIC +SPONDAICS +SPONDEE +SPONDEES +SPONDYLITIS +SPONDYLITISES +SPONGE +SPONGED +SPONGER +SPONGERS +SPONGES +SPONGEWARE +SPONGEWARES +SPONGIER +SPONGIEST +SPONGILY +SPONGIN +SPONGINESS +SPONGINESSES +SPONGING +SPONGINS +SPONGY +SPONSAL +SPONSION +SPONSIONS +SPONSON +SPONSONS +SPONSOR +SPONSORED +SPONSORIAL +SPONSORING +SPONSORS +SPONSORSHIP +SPONSORSHIPS +SPONTANEITIES +SPONTANEITY +SPONTANEOUS +SPONTANEOUSLY +SPONTANEOUSNESS +SPONTOON +SPONTOONS +SPOOF +SPOOFED +SPOOFER +SPOOFERIES +SPOOFERS +SPOOFERY +SPOOFING +SPOOFS +SPOOFY +SPOOK +SPOOKED +SPOOKERIES +SPOOKERY +SPOOKIER +SPOOKIEST +SPOOKILY +SPOOKINESS +SPOOKINESSES +SPOOKING +SPOOKISH +SPOOKS +SPOOKY +SPOOL +SPOOLED +SPOOLER +SPOOLERS +SPOOLING +SPOOLINGS +SPOOLS +SPOON +SPOONBILL +SPOONBILLS +SPOONED +SPOONERISM +SPOONERISMS +SPOONEY +SPOONEYS +SPOONFUL +SPOONFULS +SPOONIER +SPOONIES +SPOONIEST +SPOONILY +SPOONING +SPOONS +SPOONSFUL +SPOONY +SPOOR +SPOORED +SPOORING +SPOORS +SPORADIC +SPORADICALLY +SPORAL +SPORANGIA +SPORANGIAL +SPORANGIOPHORE +SPORANGIOPHORES +SPORANGIUM +SPORE +SPORED +SPORES +SPORICIDAL +SPORICIDE +SPORICIDES +SPORING +SPOROCARP +SPOROCARPS +SPOROCYST +SPOROCYSTS +SPOROGENESES +SPOROGENESIS +SPOROGENIC +SPOROGENOUS +SPOROGONIA +SPOROGONIC +SPOROGONIES +SPOROGONIUM +SPOROGONY +SPOROID +SPOROPHORE +SPOROPHORES +SPOROPHYL +SPOROPHYLL +SPOROPHYLLS +SPOROPHYLS +SPOROPHYTE +SPOROPHYTES +SPOROPHYTIC +SPOROPOLLENIN +SPOROPOLLENINS +SPOROTRICHOSES +SPOROTRICHOSIS +SPOROZOA +SPOROZOAL +SPOROZOAN +SPOROZOANS +SPOROZOIC +SPOROZOITE +SPOROZOITES +SPOROZOON +SPORRAN +SPORRANS +SPORT +SPORTED +SPORTER +SPORTERS +SPORTFISHERMAN +SPORTFISHERMEN +SPORTFISHING +SPORTFISHINGS +SPORTFUL +SPORTFULLY +SPORTFULNESS +SPORTFULNESSES +SPORTIER +SPORTIEST +SPORTIF +SPORTILY +SPORTINESS +SPORTINESSES +SPORTING +SPORTINGLY +SPORTIVE +SPORTIVELY +SPORTIVENESS +SPORTIVENESSES +SPORTS +SPORTSCAST +SPORTSCASTER +SPORTSCASTERS +SPORTSCASTS +SPORTSMAN +SPORTSMANLIKE +SPORTSMANLY +SPORTSMANSHIP +SPORTSMANSHIPS +SPORTSMEN +SPORTSWEAR +SPORTSWEARS +SPORTSWOMAN +SPORTSWOMEN +SPORTSWRITER +SPORTSWRITERS +SPORTSWRITING +SPORTSWRITINGS +SPORTY +SPORULAR +SPORULATE +SPORULATED +SPORULATES +SPORULATING +SPORULATION +SPORULATIONS +SPORULATIVE +SPORULE +SPORULES +SPOT +SPOTLESS +SPOTLESSLY +SPOTLESSNESS +SPOTLESSNESSES +SPOTLIGHT +SPOTLIGHTED +SPOTLIGHTING +SPOTLIGHTS +SPOTLIT +SPOTS +SPOTTABLE +SPOTTED +SPOTTER +SPOTTERS +SPOTTIER +SPOTTIEST +SPOTTILY +SPOTTINESS +SPOTTINESSES +SPOTTING +SPOTTY +SPOUSAL +SPOUSALLY +SPOUSALS +SPOUSE +SPOUSED +SPOUSES +SPOUSING +SPOUT +SPOUTED +SPOUTER +SPOUTERS +SPOUTING +SPOUTINGS +SPOUTLESS +SPOUTS +SPRACHGEFUHL +SPRACHGEFUHLS +SPRADDLE +SPRADDLED +SPRADDLES +SPRADDLING +SPRAG +SPRAGS +SPRAIN +SPRAINED +SPRAINING +SPRAINS +SPRANG +SPRANGS +SPRAT +SPRATS +SPRATTLE +SPRATTLED +SPRATTLES +SPRATTLING +SPRAWL +SPRAWLED +SPRAWLER +SPRAWLERS +SPRAWLIER +SPRAWLIEST +SPRAWLING +SPRAWLS +SPRAWLY +SPRAY +SPRAYED +SPRAYER +SPRAYERS +SPRAYING +SPRAYS +SPREAD +SPREADABILITIES +SPREADABILITY +SPREADABLE +SPREADER +SPREADERS +SPREADING +SPREADS +SPREADSHEET +SPREADSHEETS +SPREE +SPREES +SPRENT +SPRIER +SPRIEST +SPRIG +SPRIGGED +SPRIGGER +SPRIGGERS +SPRIGGIER +SPRIGGIEST +SPRIGGING +SPRIGGY +SPRIGHT +SPRIGHTFUL +SPRIGHTFULLY +SPRIGHTFULNESS +SPRIGHTLIER +SPRIGHTLIEST +SPRIGHTLINESS +SPRIGHTLINESSES +SPRIGHTLY +SPRIGHTS +SPRIGS +SPRIGTAIL +SPRIGTAILS +SPRING +SPRINGAL +SPRINGALD +SPRINGALDS +SPRINGALS +SPRINGBOARD +SPRINGBOARDS +SPRINGBOK +SPRINGBOKS +SPRINGE +SPRINGED +SPRINGEING +SPRINGER +SPRINGERS +SPRINGES +SPRINGHEAD +SPRINGHEADS +SPRINGHOUSE +SPRINGHOUSES +SPRINGIER +SPRINGIEST +SPRINGILY +SPRINGINESS +SPRINGINESSES +SPRINGING +SPRINGINGS +SPRINGLET +SPRINGLETS +SPRINGLIKE +SPRINGS +SPRINGTAIL +SPRINGTAILS +SPRINGTIDE +SPRINGTIDES +SPRINGTIME +SPRINGTIMES +SPRINGWATER +SPRINGWATERS +SPRINGWOOD +SPRINGWOODS +SPRINGY +SPRINKLE +SPRINKLED +SPRINKLER +SPRINKLERED +SPRINKLERING +SPRINKLERS +SPRINKLES +SPRINKLING +SPRINKLINGS +SPRINT +SPRINTED +SPRINTER +SPRINTERS +SPRINTING +SPRINTS +SPRIT +SPRITE +SPRITES +SPRITS +SPRITSAIL +SPRITSAILS +SPRITZ +SPRITZED +SPRITZER +SPRITZERS +SPRITZES +SPRITZING +SPROCKET +SPROCKETS +SPROUT +SPROUTED +SPROUTING +SPROUTS +SPRUCE +SPRUCED +SPRUCELY +SPRUCENESS +SPRUCENESSES +SPRUCER +SPRUCES +SPRUCEST +SPRUCIER +SPRUCIEST +SPRUCING +SPRUCY +SPRUE +SPRUES +SPRUG +SPRUGS +SPRUNG +SPRY +SPRYER +SPRYEST +SPRYLY +SPRYNESS +SPRYNESSES +SPUD +SPUDDED +SPUDDER +SPUDDERS +SPUDDING +SPUDS +SPUE +SPUED +SPUES +SPUING +SPUME +SPUMED +SPUMES +SPUMIER +SPUMIEST +SPUMING +SPUMONE +SPUMONES +SPUMONI +SPUMONIS +SPUMOUS +SPUMY +SPUN +SPUNBONDED +SPUNK +SPUNKED +SPUNKIE +SPUNKIER +SPUNKIES +SPUNKIEST +SPUNKILY +SPUNKINESS +SPUNKINESSES +SPUNKING +SPUNKS +SPUNKY +SPUR +SPURGALL +SPURGALLED +SPURGALLING +SPURGALLS +SPURGE +SPURGES +SPURIOUS +SPURIOUSLY +SPURIOUSNESS +SPURIOUSNESSES +SPURN +SPURNED +SPURNER +SPURNERS +SPURNING +SPURNS +SPURRED +SPURRER +SPURRERS +SPURREY +SPURREYS +SPURRIER +SPURRIERS +SPURRIES +SPURRING +SPURRY +SPURS +SPURT +SPURTED +SPURTER +SPURTERS +SPURTING +SPURTLE +SPURTLES +SPURTS +SPUTA +SPUTNIK +SPUTNIKS +SPUTTER +SPUTTERED +SPUTTERER +SPUTTERERS +SPUTTERING +SPUTTERS +SPUTTERY +SPUTUM +SPY +SPYGLASS +SPYGLASSES +SPYING +SPYMASTER +SPYMASTERS +SQUAB +SQUABBIER +SQUABBIEST +SQUABBLE +SQUABBLED +SQUABBLER +SQUABBLERS +SQUABBLES +SQUABBLING +SQUABBY +SQUABS +SQUAD +SQUADDED +SQUADDING +SQUADRON +SQUADRONED +SQUADRONING +SQUADRONS +SQUADS +SQUALENE +SQUALENES +SQUALID +SQUALIDER +SQUALIDEST +SQUALIDLY +SQUALIDNESS +SQUALIDNESSES +SQUALL +SQUALLED +SQUALLER +SQUALLERS +SQUALLIER +SQUALLIEST +SQUALLING +SQUALLISH +SQUALLS +SQUALLY +SQUALOR +SQUALORS +SQUAMA +SQUAMAE +SQUAMATE +SQUAMATES +SQUAMATION +SQUAMATIONS +SQUAMOSAL +SQUAMOSALS +SQUAMOSE +SQUAMOUS +SQUAMULOSE +SQUANDER +SQUANDERED +SQUANDERER +SQUANDERERS +SQUANDERING +SQUANDERS +SQUARE +SQUARED +SQUARELY +SQUARENESS +SQUARENESSES +SQUARER +SQUARERS +SQUARES +SQUAREST +SQUARING +SQUARISH +SQUARISHLY +SQUARISHNESS +SQUARISHNESSES +SQUARK +SQUARKS +SQUARROSE +SQUASH +SQUASHED +SQUASHER +SQUASHERS +SQUASHES +SQUASHIER +SQUASHIEST +SQUASHILY +SQUASHINESS +SQUASHINESSES +SQUASHING +SQUASHY +SQUAT +SQUATLY +SQUATNESS +SQUATNESSES +SQUATS +SQUATTED +SQUATTER +SQUATTERED +SQUATTERING +SQUATTERS +SQUATTEST +SQUATTIER +SQUATTIEST +SQUATTILY +SQUATTING +SQUATTY +SQUAW +SQUAWBUSH +SQUAWBUSHES +SQUAWFISH +SQUAWFISHES +SQUAWK +SQUAWKED +SQUAWKER +SQUAWKERS +SQUAWKING +SQUAWKS +SQUAWROOT +SQUAWROOTS +SQUAWS +SQUEAK +SQUEAKED +SQUEAKER +SQUEAKERS +SQUEAKIER +SQUEAKIEST +SQUEAKILY +SQUEAKING +SQUEAKS +SQUEAKY +SQUEAL +SQUEALED +SQUEALER +SQUEALERS +SQUEALING +SQUEALS +SQUEAMISH +SQUEAMISHLY +SQUEAMISHNESS +SQUEAMISHNESSES +SQUEEGEE +SQUEEGEED +SQUEEGEEING +SQUEEGEES +SQUEEZABILITIES +SQUEEZABILITY +SQUEEZABLE +SQUEEZE +SQUEEZED +SQUEEZER +SQUEEZERS +SQUEEZES +SQUEEZING +SQUEG +SQUEGGED +SQUEGGING +SQUEGS +SQUELCH +SQUELCHED +SQUELCHER +SQUELCHERS +SQUELCHES +SQUELCHIER +SQUELCHIEST +SQUELCHING +SQUELCHY +SQUETEAGUE +SQUIB +SQUIBBED +SQUIBBING +SQUIBS +SQUID +SQUIDDED +SQUIDDING +SQUIDS +SQUIFFED +SQUIFFIER +SQUIFFIEST +SQUIFFY +SQUIGGLE +SQUIGGLED +SQUIGGLES +SQUIGGLIER +SQUIGGLIEST +SQUIGGLING +SQUIGGLY +SQUILGEE +SQUILGEED +SQUILGEEING +SQUILGEES +SQUILL +SQUILLA +SQUILLAE +SQUILLAS +SQUILLS +SQUINCH +SQUINCHED +SQUINCHES +SQUINCHING +SQUINNIED +SQUINNIER +SQUINNIES +SQUINNIEST +SQUINNY +SQUINNYING +SQUINT +SQUINTED +SQUINTER +SQUINTERS +SQUINTEST +SQUINTIER +SQUINTIEST +SQUINTING +SQUINTINGLY +SQUINTS +SQUINTY +SQUIRARCHIES +SQUIRARCHY +SQUIRE +SQUIREARCHIES +SQUIREARCHY +SQUIRED +SQUIREEN +SQUIREENS +SQUIRES +SQUIRING +SQUIRISH +SQUIRM +SQUIRMED +SQUIRMER +SQUIRMERS +SQUIRMIER +SQUIRMIEST +SQUIRMING +SQUIRMS +SQUIRMY +SQUIRREL +SQUIRRELED +SQUIRRELING +SQUIRRELLED +SQUIRRELLING +SQUIRRELLY +SQUIRRELS +SQUIRRELY +SQUIRT +SQUIRTED +SQUIRTER +SQUIRTERS +SQUIRTING +SQUIRTS +SQUISH +SQUISHED +SQUISHES +SQUISHIER +SQUISHIEST +SQUISHINESS +SQUISHINESSES +SQUISHING +SQUISHY +SQUOOSH +SQUOOSHED +SQUOOSHES +SQUOOSHIER +SQUOOSHIEST +SQUOOSHING +SQUOOSHY +SQUUSH +SQUUSHED +SQUUSHES +SQUUSHING +SRADDHA +SRADDHAS +SRADHA +SRADHAS +SRI +SRIS +STAB +STABBED +STABBER +STABBERS +STABBING +STABILE +STABILES +STABILISE +STABILISED +STABILISES +STABILISING +STABILITIES +STABILITY +STABILIZATION +STABILIZATIONS +STABILIZE +STABILIZED +STABILIZER +STABILIZERS +STABILIZES +STABILIZING +STABLE +STABLEBOY +STABLEBOYS +STABLED +STABLEMAN +STABLEMATE +STABLEMATES +STABLEMEN +STABLENESS +STABLENESSES +STABLER +STABLERS +STABLES +STABLEST +STABLING +STABLINGS +STABLISH +STABLISHED +STABLISHES +STABLISHING +STABLISHMENT +STABLISHMENTS +STABLY +STABS +STACCATI +STACCATO +STACCATOS +STACK +STACKABLE +STACKED +STACKER +STACKERS +STACKING +STACKLESS +STACKS +STACKUP +STACKUPS +STACTE +STACTES +STADDLE +STADDLES +STADE +STADES +STADIA +STADIAS +STADIUM +STADIUMS +STADTHOLDER +STADTHOLDERATE +STADTHOLDERATES +STADTHOLDERS +STADTHOLDERSHIP +STAFF +STAFFED +STAFFER +STAFFERS +STAFFING +STAFFS +STAG +STAGE +STAGEABLE +STAGECOACH +STAGECOACHES +STAGECRAFT +STAGECRAFTS +STAGED +STAGEFUL +STAGEFULS +STAGEHAND +STAGEHANDS +STAGELIKE +STAGER +STAGERS +STAGES +STAGESTRUCK +STAGEY +STAGFLATION +STAGFLATIONARY +STAGFLATIONS +STAGGARD +STAGGARDS +STAGGART +STAGGARTS +STAGGED +STAGGER +STAGGERBUSH +STAGGERBUSHES +STAGGERED +STAGGERER +STAGGERERS +STAGGERING +STAGGERINGLY +STAGGERS +STAGGERY +STAGGIE +STAGGIER +STAGGIES +STAGGIEST +STAGGING +STAGGY +STAGHOUND +STAGHOUNDS +STAGIER +STAGIEST +STAGILY +STAGINESS +STAGINESSES +STAGING +STAGINGS +STAGNANCE +STAGNANCES +STAGNANCIES +STAGNANCY +STAGNANT +STAGNANTLY +STAGNATE +STAGNATED +STAGNATES +STAGNATING +STAGNATION +STAGNATIONS +STAGS +STAGY +STAID +STAIDER +STAIDEST +STAIDLY +STAIDNESS +STAIDNESSES +STAIG +STAIGS +STAIN +STAINABILITIES +STAINABILITY +STAINABLE +STAINED +STAINER +STAINERS +STAINING +STAINLESS +STAINLESSES +STAINLESSLY +STAINPROOF +STAINS +STAIR +STAIRCASE +STAIRCASES +STAIRHEAD +STAIRHEADS +STAIRLESS +STAIRLIKE +STAIRS +STAIRSTEP +STAIRSTEPPED +STAIRSTEPPING +STAIRSTEPS +STAIRWAY +STAIRWAYS +STAIRWELL +STAIRWELLS +STAITHE +STAITHES +STAKE +STAKED +STAKEHOLDER +STAKEHOLDERS +STAKEOUT +STAKEOUTS +STAKES +STAKING +STALACTITE +STALACTITES +STALACTITIC +STALAG +STALAGMITE +STALAGMITES +STALAGMITIC +STALAGS +STALE +STALED +STALELY +STALEMATE +STALEMATED +STALEMATES +STALEMATING +STALENESS +STALENESSES +STALER +STALES +STALEST +STALING +STALK +STALKED +STALKER +STALKERS +STALKIER +STALKIEST +STALKILY +STALKING +STALKINGS +STALKLESS +STALKLIKE +STALKS +STALKY +STALL +STALLED +STALLHOLDER +STALLHOLDERS +STALLING +STALLION +STALLIONS +STALLS +STALWART +STALWARTLY +STALWARTNESS +STALWARTNESSES +STALWARTS +STALWORTH +STALWORTHS +STAMEN +STAMENED +STAMENS +STAMINA +STAMINAL +STAMINAS +STAMINATE +STAMINEAL +STAMINODE +STAMINODES +STAMINODIA +STAMINODIES +STAMINODIUM +STAMINODY +STAMMEL +STAMMELS +STAMMER +STAMMERED +STAMMERER +STAMMERERS +STAMMERING +STAMMERS +STAMP +STAMPED +STAMPEDE +STAMPEDED +STAMPEDER +STAMPEDERS +STAMPEDES +STAMPEDING +STAMPER +STAMPERS +STAMPING +STAMPLESS +STAMPS +STANCE +STANCES +STANCH +STANCHED +STANCHER +STANCHERS +STANCHES +STANCHEST +STANCHING +STANCHION +STANCHIONED +STANCHIONING +STANCHIONS +STANCHLY +STAND +STANDARD +STANDARDBRED +STANDARDBREDS +STANDARDISE +STANDARDISED +STANDARDISES +STANDARDISING +STANDARDIZATION +STANDARDIZE +STANDARDIZED +STANDARDIZES +STANDARDIZING +STANDARDLESS +STANDARDLY +STANDARDS +STANDAWAY +STANDBY +STANDBYS +STANDDOWN +STANDDOWNS +STANDEE +STANDEES +STANDER +STANDERS +STANDFAST +STANDFASTS +STANDING +STANDINGS +STANDISH +STANDISHES +STANDOFF +STANDOFFISH +STANDOFFISHLY +STANDOFFISHNESS +STANDOFFS +STANDOUT +STANDOUTS +STANDPAT +STANDPATTER +STANDPATTERS +STANDPATTISM +STANDPATTISMS +STANDPIPE +STANDPIPES +STANDPOINT +STANDPOINTS +STANDS +STANDSTILL +STANDSTILLS +STANDUP +STANDUPS +STANE +STANED +STANES +STANG +STANGED +STANGING +STANGS +STANHOPE +STANHOPES +STANINE +STANINES +STANING +STANK +STANKS +STANNARIES +STANNARY +STANNIC +STANNITE +STANNITES +STANNOUS +STANNUM +STANNUMS +STANOL +STANOLS +STANZA +STANZAED +STANZAIC +STANZAS +STAPEDECTOMIES +STAPEDECTOMY +STAPEDES +STAPEDIAL +STAPELIA +STAPELIAS +STAPES +STAPH +STAPHS +STAPHYLINID +STAPHYLINIDS +STAPHYLOCOCCAL +STAPHYLOCOCCI +STAPHYLOCOCCIC +STAPHYLOCOCCUS +STAPLE +STAPLED +STAPLER +STAPLERS +STAPLES +STAPLING +STAR +STARBOARD +STARBOARDED +STARBOARDING +STARBOARDS +STARBURST +STARBURSTS +STARCH +STARCHED +STARCHES +STARCHIER +STARCHIEST +STARCHILY +STARCHINESS +STARCHINESSES +STARCHING +STARCHY +STARDOM +STARDOMS +STARDUST +STARDUSTS +STARE +STARED +STARER +STARERS +STARES +STARETS +STARFISH +STARFISHES +STARFLOWER +STARFLOWERS +STARFRUIT +STARFRUITS +STARGAZE +STARGAZED +STARGAZER +STARGAZERS +STARGAZES +STARGAZING +STARGAZINGS +STARING +STARINGLY +STARK +STARKER +STARKERS +STARKEST +STARKLY +STARKNESS +STARKNESSES +STARLESS +STARLET +STARLETS +STARLIGHT +STARLIGHTS +STARLIKE +STARLING +STARLINGS +STARLIT +STARNOSE +STARNOSES +STARRED +STARRIER +STARRIEST +STARRING +STARRY +STARS +STARSHIP +STARSHIPS +STARSTRUCK +START +STARTED +STARTER +STARTERS +STARTING +STARTLE +STARTLED +STARTLEMENT +STARTLEMENTS +STARTLER +STARTLERS +STARTLES +STARTLING +STARTLINGLY +STARTS +STARTSY +STARTUP +STARTUPS +STARVATION +STARVATIONS +STARVE +STARVED +STARVELING +STARVELINGS +STARVER +STARVERS +STARVES +STARVING +STARWORT +STARWORTS +STASES +STASH +STASHED +STASHES +STASHING +STASIMA +STASIMON +STASIS +STAT +STATABLE +STATAL +STATANT +STATE +STATEABLE +STATECRAFT +STATECRAFTS +STATED +STATEDLY +STATEHOOD +STATEHOODS +STATEHOUSE +STATEHOUSES +STATELESS +STATELESSNESS +STATELESSNESSES +STATELIER +STATELIEST +STATELINESS +STATELINESSES +STATELY +STATEMENT +STATEMENTS +STATER +STATEROOM +STATEROOMS +STATERS +STATES +STATESIDE +STATESMAN +STATESMANLIKE +STATESMANLY +STATESMANSHIP +STATESMANSHIPS +STATESMEN +STATEWIDE +STATIC +STATICAL +STATICALLY +STATICE +STATICES +STATICKY +STATICS +STATIN +STATING +STATINS +STATION +STATIONAL +STATIONARY +STATIONED +STATIONER +STATIONERIES +STATIONERS +STATIONERY +STATIONING +STATIONMASTER +STATIONMASTERS +STATIONS +STATISM +STATISMS +STATIST +STATISTIC +STATISTICAL +STATISTICALLY +STATISTICIAN +STATISTICIANS +STATISTICS +STATISTS +STATIVE +STATIVES +STATOBLAST +STATOBLASTS +STATOCYST +STATOCYSTS +STATOLITH +STATOLITHS +STATOR +STATORS +STATOSCOPE +STATOSCOPES +STATS +STATUARIES +STATUARY +STATUE +STATUED +STATUES +STATUESQUE +STATUESQUELY +STATUETTE +STATUETTES +STATURE +STATURES +STATUS +STATUSES +STATUSY +STATUTABLE +STATUTE +STATUTES +STATUTORILY +STATUTORY +STAUMREL +STAUMRELS +STAUNCH +STAUNCHED +STAUNCHER +STAUNCHES +STAUNCHEST +STAUNCHING +STAUNCHLY +STAUNCHNESS +STAUNCHNESSES +STAUROLITE +STAUROLITES +STAUROLITIC +STAVE +STAVED +STAVES +STAVESACRE +STAVESACRES +STAVING +STAVUDINE +STAVUDINES +STAW +STAY +STAYED +STAYER +STAYERS +STAYING +STAYS +STAYSAIL +STAYSAILS +STEAD +STEADED +STEADFAST +STEADFASTLY +STEADFASTNESS +STEADFASTNESSES +STEADIED +STEADIER +STEADIERS +STEADIES +STEADIEST +STEADILY +STEADINESS +STEADINESSES +STEADING +STEADINGS +STEADS +STEADY +STEADYING +STEAK +STEAKS +STEAL +STEALABLE +STEALAGE +STEALAGES +STEALER +STEALERS +STEALING +STEALINGS +STEALS +STEALTH +STEALTHIER +STEALTHIEST +STEALTHILY +STEALTHINESS +STEALTHINESSES +STEALTHS +STEALTHY +STEAM +STEAMBOAT +STEAMBOATS +STEAMED +STEAMER +STEAMERED +STEAMERING +STEAMERS +STEAMFITTER +STEAMFITTERS +STEAMIER +STEAMIEST +STEAMILY +STEAMINESS +STEAMINESSES +STEAMING +STEAMROLL +STEAMROLLED +STEAMROLLER +STEAMROLLERED +STEAMROLLERING +STEAMROLLERS +STEAMROLLING +STEAMROLLS +STEAMS +STEAMSHIP +STEAMSHIPS +STEAMY +STEAPSIN +STEAPSINS +STEARATE +STEARATES +STEARIC +STEARIN +STEARINE +STEARINES +STEARINS +STEATITE +STEATITES +STEATITIC +STEATOPYGIA +STEATOPYGIAS +STEATOPYGIC +STEATOPYGOUS +STEATORRHEA +STEATORRHEAS +STEDFAST +STEED +STEEDLIKE +STEEDS +STEEK +STEEKED +STEEKING +STEEKS +STEEL +STEELED +STEELHEAD +STEELHEADS +STEELIE +STEELIER +STEELIES +STEELIEST +STEELINESS +STEELINESSES +STEELING +STEELMAKER +STEELMAKERS +STEELMAKING +STEELMAKINGS +STEELS +STEELWORK +STEELWORKER +STEELWORKERS +STEELWORKS +STEELY +STEELYARD +STEELYARDS +STEENBOK +STEENBOKS +STEENBUCK +STEENBUCKS +STEEP +STEEPED +STEEPEN +STEEPENED +STEEPENING +STEEPENS +STEEPER +STEEPERS +STEEPEST +STEEPING +STEEPISH +STEEPLE +STEEPLEBUSH +STEEPLEBUSHES +STEEPLECHASE +STEEPLECHASER +STEEPLECHASERS +STEEPLECHASES +STEEPLECHASING +STEEPLECHASINGS +STEEPLED +STEEPLEJACK +STEEPLEJACKS +STEEPLES +STEEPLY +STEEPNESS +STEEPNESSES +STEEPS +STEER +STEERABLE +STEERAGE +STEERAGES +STEERAGEWAY +STEERAGEWAYS +STEERED +STEERER +STEERERS +STEERING +STEERS +STEERSMAN +STEERSMEN +STEEVE +STEEVED +STEEVES +STEEVING +STEEVINGS +STEGODON +STEGODONS +STEGOSAUR +STEGOSAURS +STEGOSAURUS +STEGOSAURUSES +STEIN +STEINBOK +STEINBOKS +STEINS +STELA +STELAE +STELAI +STELAR +STELE +STELENE +STELES +STELIC +STELLA +STELLAR +STELLAS +STELLATE +STELLATED +STELLIFIED +STELLIFIES +STELLIFY +STELLIFYING +STELLITE +STELLITES +STELLULAR +STEM +STEMLESS +STEMLIKE +STEMMA +STEMMAS +STEMMATA +STEMMATIC +STEMMED +STEMMER +STEMMERIES +STEMMERS +STEMMERY +STEMMIER +STEMMIEST +STEMMING +STEMMY +STEMS +STEMSON +STEMSONS +STEMWARE +STEMWARES +STENCH +STENCHES +STENCHFUL +STENCHIER +STENCHIEST +STENCHY +STENCIL +STENCILED +STENCILER +STENCILERS +STENCILING +STENCILLED +STENCILLER +STENCILLERS +STENCILLING +STENCILS +STENGAH +STENGAHS +STENO +STENOBATH +STENOBATHIC +STENOBATHS +STENOGRAPHER +STENOGRAPHERS +STENOGRAPHIC +STENOGRAPHIES +STENOGRAPHY +STENOHALINE +STENOKIES +STENOKOUS +STENOKY +STENOS +STENOSED +STENOSES +STENOSIS +STENOTHERM +STENOTHERMAL +STENOTHERMS +STENOTIC +STENOTOPIC +STENOTYPE +STENOTYPED +STENOTYPES +STENOTYPIES +STENOTYPING +STENOTYPIST +STENOTYPISTS +STENOTYPY +STENT +STENTOR +STENTORIAN +STENTORS +STENTS +STEP +STEPBROTHER +STEPBROTHERS +STEPCHILD +STEPCHILDREN +STEPDAME +STEPDAMES +STEPDAUGHTER +STEPDAUGHTERS +STEPFAMILIES +STEPFAMILY +STEPFATHER +STEPFATHERS +STEPHANOTIS +STEPHANOTISES +STEPLADDER +STEPLADDERS +STEPLIKE +STEPMOTHER +STEPMOTHERS +STEPPARENT +STEPPARENTING +STEPPARENTINGS +STEPPARENTS +STEPPE +STEPPED +STEPPER +STEPPERS +STEPPES +STEPPING +STEPS +STEPSISTER +STEPSISTERS +STEPSON +STEPSONS +STEPSTOOL +STEPSTOOLS +STEPWISE +STERADIAN +STERADIANS +STERCORACEOUS +STERCULIA +STERE +STEREO +STEREOCHEMICAL +STEREOCHEMISTRY +STEREOED +STEREOGRAM +STEREOGRAMS +STEREOGRAPH +STEREOGRAPHED +STEREOGRAPHIC +STEREOGRAPHIES +STEREOGRAPHING +STEREOGRAPHS +STEREOGRAPHY +STEREOING +STEREOISOMER +STEREOISOMERIC +STEREOISOMERISM +STEREOISOMERS +STEREOLOGICAL +STEREOLOGICALLY +STEREOLOGIES +STEREOLOGY +STEREOPHONIC +STEREOPHONIES +STEREOPHONY +STEREOPSES +STEREOPSIS +STEREOPTICON +STEREOPTICONS +STEREOREGULAR +STEREOS +STEREOSCOPE +STEREOSCOPES +STEREOSCOPIC +STEREOSCOPIES +STEREOSCOPY +STEREOSPECIFIC +STEREOTACTIC +STEREOTAXIC +STEREOTAXICALLY +STEREOTYPE +STEREOTYPED +STEREOTYPER +STEREOTYPERS +STEREOTYPES +STEREOTYPIC +STEREOTYPICAL +STEREOTYPICALLY +STEREOTYPIES +STEREOTYPING +STEREOTYPY +STERES +STERIC +STERICAL +STERICALLY +STERIGMA +STERIGMAS +STERIGMATA +STERILANT +STERILANTS +STERILE +STERILELY +STERILISE +STERILISED +STERILISES +STERILISING +STERILITIES +STERILITY +STERILIZATION +STERILIZATIONS +STERILIZE +STERILIZED +STERILIZER +STERILIZERS +STERILIZES +STERILIZING +STERLET +STERLETS +STERLING +STERLINGLY +STERLINGNESS +STERLINGNESSES +STERLINGS +STERN +STERNA +STERNAL +STERNER +STERNEST +STERNFOREMOST +STERNITE +STERNITES +STERNLY +STERNMOST +STERNNESS +STERNNESSES +STERNOCOSTAL +STERNPOST +STERNPOSTS +STERNS +STERNSON +STERNSONS +STERNUM +STERNUMS +STERNUTATION +STERNUTATIONS +STERNUTATOR +STERNUTATORS +STERNWARD +STERNWARDS +STERNWAY +STERNWAYS +STEROID +STEROIDAL +STEROIDOGENESES +STEROIDOGENESIS +STEROIDOGENIC +STEROIDS +STEROL +STEROLS +STERTOR +STERTOROUS +STERTOROUSLY +STERTORS +STET +STETHOSCOPE +STETHOSCOPES +STETHOSCOPIC +STETS +STETSON +STETSONS +STETTED +STETTING +STEVEDORE +STEVEDORED +STEVEDORES +STEVEDORING +STEW +STEWABLE +STEWARD +STEWARDED +STEWARDESS +STEWARDESSES +STEWARDING +STEWARDS +STEWARDSHIP +STEWARDSHIPS +STEWBUM +STEWBUMS +STEWED +STEWING +STEWPAN +STEWPANS +STEWS +STEWY +STEY +STHENIA +STHENIAS +STHENIC +STIBIAL +STIBINE +STIBINES +STIBIUM +STIBIUMS +STIBNITE +STIBNITES +STICH +STICHIC +STICHOMYTHIA +STICHOMYTHIAS +STICHOMYTHIC +STICHOMYTHIES +STICHOMYTHY +STICHS +STICK +STICKABLE +STICKBALL +STICKBALLS +STICKED +STICKER +STICKERS +STICKFUL +STICKFULS +STICKHANDLE +STICKHANDLED +STICKHANDLER +STICKHANDLERS +STICKHANDLES +STICKHANDLING +STICKIER +STICKIES +STICKIEST +STICKILY +STICKINESS +STICKINESSES +STICKING +STICKIT +STICKLE +STICKLEBACK +STICKLEBACKS +STICKLED +STICKLER +STICKLERS +STICKLES +STICKLIKE +STICKLING +STICKMAN +STICKMEN +STICKOUT +STICKOUTS +STICKPIN +STICKPINS +STICKS +STICKSEED +STICKSEEDS +STICKTIGHT +STICKTIGHTS +STICKUM +STICKUMS +STICKUP +STICKUPS +STICKWEED +STICKWEEDS +STICKWORK +STICKWORKS +STICKY +STICTION +STICTIONS +STIED +STIES +STIFF +STIFFED +STIFFEN +STIFFENED +STIFFENER +STIFFENERS +STIFFENING +STIFFENS +STIFFER +STIFFEST +STIFFIE +STIFFIES +STIFFING +STIFFISH +STIFFLY +STIFFNESS +STIFFNESSES +STIFFS +STIFLE +STIFLED +STIFLER +STIFLERS +STIFLES +STIFLING +STIFLINGLY +STIGMA +STIGMAL +STIGMAS +STIGMASTEROL +STIGMASTEROLS +STIGMATA +STIGMATIC +STIGMATICALLY +STIGMATICS +STIGMATIST +STIGMATISTS +STIGMATIZATION +STIGMATIZATIONS +STIGMATIZE +STIGMATIZED +STIGMATIZES +STIGMATIZING +STILBENE +STILBENES +STILBESTROL +STILBESTROLS +STILBITE +STILBITES +STILE +STILES +STILETTO +STILETTOED +STILETTOES +STILETTOING +STILETTOS +STILL +STILLBIRTH +STILLBIRTHS +STILLBORN +STILLBORNS +STILLED +STILLER +STILLEST +STILLIER +STILLIEST +STILLING +STILLMAN +STILLMEN +STILLNESS +STILLNESSES +STILLROOM +STILLROOMS +STILLS +STILLY +STILT +STILTED +STILTEDLY +STILTEDNESS +STILTEDNESSES +STILTING +STILTS +STIME +STIMES +STIMIED +STIMIES +STIMULANT +STIMULANTS +STIMULATE +STIMULATED +STIMULATES +STIMULATING +STIMULATION +STIMULATIONS +STIMULATIVE +STIMULATOR +STIMULATORS +STIMULATORY +STIMULI +STIMULUS +STIMY +STIMYING +STING +STINGAREE +STINGAREES +STINGER +STINGERS +STINGIER +STINGIEST +STINGILY +STINGINESS +STINGINESSES +STINGING +STINGINGLY +STINGLESS +STINGO +STINGOS +STINGRAY +STINGRAYS +STINGS +STINGY +STINK +STINKARD +STINKARDS +STINKBUG +STINKBUGS +STINKER +STINKEROO +STINKEROOS +STINKERS +STINKHORN +STINKHORNS +STINKIER +STINKIEST +STINKING +STINKINGLY +STINKO +STINKPOT +STINKPOTS +STINKS +STINKWEED +STINKWEEDS +STINKWOOD +STINKWOODS +STINKY +STINT +STINTED +STINTER +STINTERS +STINTING +STINTS +STIPE +STIPED +STIPEL +STIPELS +STIPEND +STIPENDIARIES +STIPENDIARY +STIPENDS +STIPES +STIPIFORM +STIPITATE +STIPITES +STIPPLE +STIPPLED +STIPPLER +STIPPLERS +STIPPLES +STIPPLING +STIPPLINGS +STIPULAR +STIPULATE +STIPULATED +STIPULATES +STIPULATING +STIPULATION +STIPULATIONS +STIPULATOR +STIPULATORS +STIPULATORY +STIPULE +STIPULED +STIPULES +STIR +STIRABOUT +STIRABOUTS +STIRK +STIRKS +STIRP +STIRPES +STIRPS +STIRRED +STIRRER +STIRRERS +STIRRING +STIRRINGS +STIRRUP +STIRRUPS +STIRS +STITCH +STITCHED +STITCHER +STITCHERIES +STITCHERS +STITCHERY +STITCHES +STITCHING +STITCHWORT +STITCHWORTS +STITHIED +STITHIES +STITHY +STITHYING +STIVER +STIVERS +STOA +STOAE +STOAI +STOAS +STOAT +STOATS +STOB +STOBBED +STOBBING +STOBS +STOCCADO +STOCCADOS +STOCCATA +STOCCATAS +STOCHASTIC +STOCHASTICALLY +STOCK +STOCKADE +STOCKADED +STOCKADES +STOCKADING +STOCKAGE +STOCKAGES +STOCKBREEDER +STOCKBREEDERS +STOCKBROKER +STOCKBROKERAGE +STOCKBROKERAGES +STOCKBROKERS +STOCKBROKING +STOCKBROKINGS +STOCKCAR +STOCKCARS +STOCKED +STOCKER +STOCKERS +STOCKFISH +STOCKFISHES +STOCKHOLDER +STOCKHOLDERS +STOCKIER +STOCKIEST +STOCKILY +STOCKINESS +STOCKINESSES +STOCKINET +STOCKINETS +STOCKINETTE +STOCKINETTES +STOCKING +STOCKINGED +STOCKINGS +STOCKISH +STOCKIST +STOCKISTS +STOCKJOBBER +STOCKJOBBERS +STOCKJOBBING +STOCKJOBBINGS +STOCKKEEPER +STOCKKEEPERS +STOCKMAN +STOCKMEN +STOCKPILE +STOCKPILED +STOCKPILER +STOCKPILERS +STOCKPILES +STOCKPILING +STOCKPOT +STOCKPOTS +STOCKROOM +STOCKROOMS +STOCKS +STOCKTAKING +STOCKTAKINGS +STOCKY +STOCKYARD +STOCKYARDS +STODGE +STODGED +STODGES +STODGIER +STODGIEST +STODGILY +STODGINESS +STODGINESSES +STODGING +STODGY +STOGEY +STOGEYS +STOGIE +STOGIES +STOGY +STOIC +STOICAL +STOICALLY +STOICHIOMETRIC +STOICHIOMETRIES +STOICHIOMETRY +STOICISM +STOICISMS +STOICS +STOKE +STOKED +STOKEHOLD +STOKEHOLDS +STOKEHOLE +STOKEHOLES +STOKER +STOKERS +STOKES +STOKESIA +STOKESIAS +STOKING +STOLE +STOLED +STOLEN +STOLES +STOLID +STOLIDER +STOLIDEST +STOLIDITIES +STOLIDITY +STOLIDLY +STOLLEN +STOLLENS +STOLON +STOLONATE +STOLONIC +STOLONIFEROUS +STOLONS +STOLPORT +STOLPORTS +STOMA +STOMACH +STOMACHACHE +STOMACHACHES +STOMACHED +STOMACHER +STOMACHERS +STOMACHIC +STOMACHICS +STOMACHING +STOMACHS +STOMACHY +STOMAL +STOMAS +STOMATA +STOMATAL +STOMATE +STOMATES +STOMATIC +STOMATITIDES +STOMATITIS +STOMATITISES +STOMATOPOD +STOMATOPODS +STOMATOUS +STOMODAEA +STOMODAEAL +STOMODAEUM +STOMODAEUMS +STOMODEA +STOMODEAL +STOMODEUM +STOMODEUMS +STOMP +STOMPED +STOMPER +STOMPERS +STOMPING +STOMPS +STONABLE +STONE +STONEBOAT +STONEBOATS +STONECHAT +STONECHATS +STONECROP +STONECROPS +STONECUTTER +STONECUTTERS +STONECUTTING +STONECUTTINGS +STONED +STONEFISH +STONEFISHES +STONEFLIES +STONEFLY +STONEMASON +STONEMASONRIES +STONEMASONRY +STONEMASONS +STONER +STONERS +STONES +STONEWALL +STONEWALLED +STONEWALLER +STONEWALLERS +STONEWALLING +STONEWALLS +STONEWARE +STONEWARES +STONEWASH +STONEWASHED +STONEWASHES +STONEWASHING +STONEWORK +STONEWORKS +STONEWORT +STONEWORTS +STONEY +STONIER +STONIEST +STONILY +STONINESS +STONINESSES +STONING +STONISH +STONISHED +STONISHES +STONISHING +STONY +STONYHEARTED +STOOD +STOOGE +STOOGED +STOOGES +STOOGING +STOOK +STOOKED +STOOKER +STOOKERS +STOOKING +STOOKS +STOOL +STOOLED +STOOLIE +STOOLIES +STOOLING +STOOLS +STOOP +STOOPBALL +STOOPBALLS +STOOPED +STOOPER +STOOPERS +STOOPING +STOOPS +STOP +STOPBANK +STOPBANKS +STOPCOCK +STOPCOCKS +STOPE +STOPED +STOPER +STOPERS +STOPES +STOPGAP +STOPGAPS +STOPING +STOPLIGHT +STOPLIGHTS +STOPOFF +STOPOFFS +STOPOVER +STOPOVERS +STOPPABLE +STOPPAGE +STOPPAGES +STOPPED +STOPPER +STOPPERED +STOPPERING +STOPPERS +STOPPING +STOPPLE +STOPPLED +STOPPLES +STOPPLING +STOPS +STOPT +STOPWATCH +STOPWATCHES +STOPWORD +STOPWORDS +STORABLE +STORABLES +STORAGE +STORAGES +STORAX +STORAXES +STORE +STORED +STOREFRONT +STOREFRONTS +STOREHOUSE +STOREHOUSES +STOREKEEPER +STOREKEEPERS +STORER +STOREROOM +STOREROOMS +STORERS +STORES +STORESHIP +STORESHIPS +STOREWIDE +STOREY +STOREYED +STOREYS +STORIED +STORIES +STORING +STORK +STORKS +STORKSBILL +STORKSBILLS +STORM +STORMBOUND +STORMED +STORMIER +STORMIEST +STORMILY +STORMINESS +STORMINESSES +STORMING +STORMS +STORMY +STORY +STORYBOARD +STORYBOARDED +STORYBOARDING +STORYBOARDS +STORYBOOK +STORYBOOKS +STORYING +STORYTELLER +STORYTELLERS +STORYTELLING +STORYTELLINGS +STOSS +STOT +STOTIN +STOTINKA +STOTINKI +STOTINOV +STOTINS +STOTS +STOTT +STOTTED +STOTTING +STOTTS +STOUND +STOUNDED +STOUNDING +STOUNDS +STOUP +STOUPS +STOUR +STOURE +STOURES +STOURIE +STOURS +STOURY +STOUT +STOUTEN +STOUTENED +STOUTENING +STOUTENS +STOUTER +STOUTEST +STOUTHEARTED +STOUTHEARTEDLY +STOUTISH +STOUTLY +STOUTNESS +STOUTNESSES +STOUTS +STOVE +STOVEPIPE +STOVEPIPES +STOVER +STOVERS +STOVES +STOW +STOWABLE +STOWAGE +STOWAGES +STOWAWAY +STOWAWAYS +STOWED +STOWING +STOWP +STOWPS +STOWS +STRABISMIC +STRABISMUS +STRABISMUSES +STRADDLE +STRADDLED +STRADDLER +STRADDLERS +STRADDLES +STRADDLING +STRAFE +STRAFED +STRAFER +STRAFERS +STRAFES +STRAFING +STRAGGLE +STRAGGLED +STRAGGLER +STRAGGLERS +STRAGGLES +STRAGGLIER +STRAGGLIEST +STRAGGLING +STRAGGLY +STRAIGHT +STRAIGHTAWAY +STRAIGHTAWAYS +STRAIGHTBRED +STRAIGHTBREDS +STRAIGHTED +STRAIGHTEDGE +STRAIGHTEDGES +STRAIGHTEN +STRAIGHTENED +STRAIGHTENER +STRAIGHTENERS +STRAIGHTENING +STRAIGHTENS +STRAIGHTER +STRAIGHTEST +STRAIGHTFORWARD +STRAIGHTING +STRAIGHTISH +STRAIGHTJACKET +STRAIGHTJACKETS +STRAIGHTLACED +STRAIGHTLY +STRAIGHTNESS +STRAIGHTNESSES +STRAIGHTS +STRAIGHTWAY +STRAIN +STRAINED +STRAINER +STRAINERS +STRAINING +STRAINS +STRAIT +STRAITEN +STRAITENED +STRAITENING +STRAITENS +STRAITER +STRAITEST +STRAITJACKET +STRAITJACKETED +STRAITJACKETING +STRAITJACKETS +STRAITLACED +STRAITLACEDLY +STRAITLACEDNESS +STRAITLY +STRAITNESS +STRAITNESSES +STRAITS +STRAKE +STRAKED +STRAKES +STRAMASH +STRAMASHES +STRAMONIES +STRAMONIUM +STRAMONIUMS +STRAMONY +STRAND +STRANDED +STRANDEDNESS +STRANDEDNESSES +STRANDER +STRANDERS +STRANDING +STRANDLINE +STRANDLINES +STRANDS +STRANG +STRANGE +STRANGELY +STRANGENESS +STRANGENESSES +STRANGER +STRANGERED +STRANGERING +STRANGERS +STRANGES +STRANGEST +STRANGLE +STRANGLED +STRANGLEHOLD +STRANGLEHOLDS +STRANGLER +STRANGLERS +STRANGLES +STRANGLING +STRANGULATE +STRANGULATED +STRANGULATES +STRANGULATING +STRANGULATION +STRANGULATIONS +STRANGURIES +STRANGURY +STRAP +STRAPHANG +STRAPHANGED +STRAPHANGER +STRAPHANGERS +STRAPHANGING +STRAPHANGS +STRAPHUNG +STRAPLESS +STRAPLESSES +STRAPPADO +STRAPPADOES +STRAPPADOS +STRAPPED +STRAPPER +STRAPPERS +STRAPPIER +STRAPPIEST +STRAPPING +STRAPPINGS +STRAPPY +STRAPS +STRASS +STRASSES +STRATA +STRATAGEM +STRATAGEMS +STRATAL +STRATAS +STRATEGIC +STRATEGICAL +STRATEGICALLY +STRATEGIES +STRATEGIST +STRATEGISTS +STRATEGIZE +STRATEGIZED +STRATEGIZES +STRATEGIZING +STRATEGY +STRATH +STRATHS +STRATHSPEY +STRATHSPEYS +STRATI +STRATIFICATION +STRATIFICATIONS +STRATIFIED +STRATIFIES +STRATIFORM +STRATIFY +STRATIFYING +STRATIGRAPHIC +STRATIGRAPHIES +STRATIGRAPHY +STRATOCRACIES +STRATOCRACY +STRATOCUMULI +STRATOCUMULUS +STRATOSPHERE +STRATOSPHERES +STRATOSPHERIC +STRATOUS +STRATOVOLCANO +STRATOVOLCANOES +STRATOVOLCANOS +STRATUM +STRATUMS +STRATUS +STRAVAGE +STRAVAGED +STRAVAGES +STRAVAGING +STRAVAIG +STRAVAIGED +STRAVAIGING +STRAVAIGS +STRAW +STRAWBERRIES +STRAWBERRY +STRAWED +STRAWFLOWER +STRAWFLOWERS +STRAWHAT +STRAWIER +STRAWIEST +STRAWING +STRAWS +STRAWWORM +STRAWWORMS +STRAWY +STRAY +STRAYED +STRAYER +STRAYERS +STRAYING +STRAYS +STREAK +STREAKED +STREAKER +STREAKERS +STREAKIER +STREAKIEST +STREAKILY +STREAKINESS +STREAKINESSES +STREAKING +STREAKINGS +STREAKS +STREAKY +STREAM +STREAMBED +STREAMBEDS +STREAMED +STREAMER +STREAMERS +STREAMIER +STREAMIEST +STREAMING +STREAMINGS +STREAMLET +STREAMLETS +STREAMLINE +STREAMLINED +STREAMLINER +STREAMLINERS +STREAMLINES +STREAMLINING +STREAMS +STREAMSIDE +STREAMSIDES +STREAMY +STREEK +STREEKED +STREEKER +STREEKERS +STREEKING +STREEKS +STREEL +STREELED +STREELING +STREELS +STREET +STREETCAR +STREETCARS +STREETLAMP +STREETLAMPS +STREETLIGHT +STREETLIGHTS +STREETS +STREETSCAPE +STREETSCAPES +STREETWALKER +STREETWALKERS +STREETWALKING +STREETWALKINGS +STREETWISE +STRENGTH +STRENGTHEN +STRENGTHENED +STRENGTHENER +STRENGTHENERS +STRENGTHENING +STRENGTHENS +STRENGTHS +STRENUOSITIES +STRENUOSITY +STRENUOUS +STRENUOUSLY +STRENUOUSNESS +STRENUOUSNESSES +STREP +STREPS +STREPTOBACILLI +STREPTOBACILLUS +STREPTOCOCCAL +STREPTOCOCCI +STREPTOCOCCIC +STREPTOCOCCUS +STREPTOKINASE +STREPTOKINASES +STREPTOLYSIN +STREPTOLYSINS +STREPTOMYCES +STREPTOMYCETE +STREPTOMYCETES +STREPTOMYCIN +STREPTOMYCINS +STREPTOTHRICIN +STREPTOTHRICINS +STRESS +STRESSED +STRESSES +STRESSFUL +STRESSFULLY +STRESSING +STRESSLESS +STRESSLESSNESS +STRESSOR +STRESSORS +STRETCH +STRETCHABILITY +STRETCHABLE +STRETCHED +STRETCHER +STRETCHERED +STRETCHERING +STRETCHERS +STRETCHES +STRETCHIER +STRETCHIEST +STRETCHING +STRETCHY +STRETTA +STRETTAS +STRETTE +STRETTI +STRETTO +STRETTOS +STREUSEL +STREUSELS +STREW +STREWED +STREWER +STREWERS +STREWING +STREWMENT +STREWMENTS +STREWN +STREWS +STRIA +STRIAE +STRIATA +STRIATE +STRIATED +STRIATES +STRIATING +STRIATION +STRIATIONS +STRIATUM +STRICK +STRICKEN +STRICKLE +STRICKLED +STRICKLES +STRICKLING +STRICKS +STRICT +STRICTER +STRICTEST +STRICTION +STRICTIONS +STRICTLY +STRICTNESS +STRICTNESSES +STRICTURE +STRICTURES +STRIDDEN +STRIDE +STRIDENCE +STRIDENCES +STRIDENCIES +STRIDENCY +STRIDENT +STRIDENTLY +STRIDER +STRIDERS +STRIDES +STRIDING +STRIDOR +STRIDORS +STRIDULATE +STRIDULATED +STRIDULATES +STRIDULATING +STRIDULATION +STRIDULATIONS +STRIDULATORY +STRIDULOUS +STRIDULOUSLY +STRIFE +STRIFEFUL +STRIFELESS +STRIFES +STRIGIL +STRIGILS +STRIGOSE +STRIKE +STRIKEBOUND +STRIKEBREAKER +STRIKEBREAKERS +STRIKEBREAKING +STRIKEBREAKINGS +STRIKEOUT +STRIKEOUTS +STRIKEOVER +STRIKEOVERS +STRIKER +STRIKERS +STRIKES +STRIKING +STRIKINGLY +STRING +STRINGCOURSE +STRINGCOURSES +STRINGED +STRINGENCIES +STRINGENCY +STRINGENDO +STRINGENT +STRINGENTLY +STRINGER +STRINGERS +STRINGHALT +STRINGHALTED +STRINGHALTS +STRINGIER +STRINGIEST +STRINGILY +STRINGINESS +STRINGINESSES +STRINGING +STRINGINGS +STRINGLESS +STRINGPIECE +STRINGPIECES +STRINGS +STRINGY +STRINGYBARK +STRINGYBARKS +STRIP +STRIPE +STRIPED +STRIPELESS +STRIPER +STRIPERS +STRIPES +STRIPIER +STRIPIEST +STRIPING +STRIPINGS +STRIPLING +STRIPLINGS +STRIPPABLE +STRIPPED +STRIPPER +STRIPPERS +STRIPPING +STRIPS +STRIPT +STRIPTEASE +STRIPTEASER +STRIPTEASERS +STRIPTEASES +STRIPY +STRIVE +STRIVED +STRIVEN +STRIVER +STRIVERS +STRIVES +STRIVING +STROBE +STROBES +STROBIC +STROBIL +STROBILA +STROBILAE +STROBILAR +STROBILATION +STROBILATIONS +STROBILE +STROBILES +STROBILI +STROBILS +STROBILUS +STROBOSCOPE +STROBOSCOPES +STROBOSCOPIC +STROBOTRON +STROBOTRONS +STRODE +STROKE +STROKED +STROKER +STROKERS +STROKES +STROKING +STROLL +STROLLED +STROLLER +STROLLERS +STROLLING +STROLLS +STROMA +STROMAL +STROMATA +STROMATIC +STROMATOLITE +STROMATOLITES +STROMATOLITIC +STRONG +STRONGBOX +STRONGBOXES +STRONGER +STRONGEST +STRONGHOLD +STRONGHOLDS +STRONGISH +STRONGLY +STRONGMAN +STRONGMEN +STRONGYL +STRONGYLE +STRONGYLES +STRONGYLOIDOSES +STRONGYLOIDOSIS +STRONGYLS +STRONTIA +STRONTIAN +STRONTIANITE +STRONTIANITES +STRONTIANS +STRONTIAS +STRONTIC +STRONTIUM +STRONTIUMS +STROOK +STROP +STROPHANTHIN +STROPHANTHINS +STROPHE +STROPHES +STROPHIC +STROPHOID +STROPHOIDS +STROPHULI +STROPHULUS +STROPPED +STROPPER +STROPPERS +STROPPIER +STROPPIEST +STROPPING +STROPPY +STROPS +STROUD +STROUDING +STROUDINGS +STROUDS +STROVE +STROW +STROWED +STROWING +STROWN +STROWS +STROY +STROYED +STROYER +STROYERS +STROYING +STROYS +STRUCK +STRUCKEN +STRUCTURAL +STRUCTURALISM +STRUCTURALISMS +STRUCTURALIST +STRUCTURALISTS +STRUCTURALIZE +STRUCTURALIZED +STRUCTURALIZES +STRUCTURALIZING +STRUCTURALLY +STRUCTURATION +STRUCTURATIONS +STRUCTURE +STRUCTURED +STRUCTURELESS +STRUCTURES +STRUCTURING +STRUDEL +STRUDELS +STRUGGLE +STRUGGLED +STRUGGLER +STRUGGLERS +STRUGGLES +STRUGGLING +STRUM +STRUMA +STRUMAE +STRUMAS +STRUMATIC +STRUMMED +STRUMMER +STRUMMERS +STRUMMING +STRUMOSE +STRUMOUS +STRUMPET +STRUMPETS +STRUMS +STRUNG +STRUNT +STRUNTED +STRUNTING +STRUNTS +STRUT +STRUTHIOUS +STRUTS +STRUTTED +STRUTTER +STRUTTERS +STRUTTING +STRYCHNIC +STRYCHNINE +STRYCHNINES +STUB +STUBBED +STUBBIER +STUBBIEST +STUBBILY +STUBBING +STUBBLE +STUBBLED +STUBBLES +STUBBLIER +STUBBLIEST +STUBBLY +STUBBORN +STUBBORNER +STUBBORNEST +STUBBORNLY +STUBBORNNESS +STUBBORNNESSES +STUBBY +STUBS +STUCCO +STUCCOED +STUCCOER +STUCCOERS +STUCCOES +STUCCOING +STUCCOS +STUCCOWORK +STUCCOWORKS +STUCK +STUD +STUDBOOK +STUDBOOKS +STUDDED +STUDDIE +STUDDIES +STUDDING +STUDDINGS +STUDENT +STUDENTS +STUDENTSHIP +STUDENTSHIPS +STUDFISH +STUDFISHES +STUDHORSE +STUDHORSES +STUDIED +STUDIEDLY +STUDIEDNESS +STUDIEDNESSES +STUDIER +STUDIERS +STUDIES +STUDIO +STUDIOS +STUDIOUS +STUDIOUSLY +STUDIOUSNESS +STUDIOUSNESSES +STUDLIER +STUDLIEST +STUDLY +STUDS +STUDWORK +STUDWORKS +STUDY +STUDYING +STUFF +STUFFED +STUFFER +STUFFERS +STUFFIER +STUFFIEST +STUFFILY +STUFFINESS +STUFFINESSES +STUFFING +STUFFINGS +STUFFLESS +STUFFS +STUFFY +STUIVER +STUIVERS +STULL +STULLS +STULTIFICATION +STULTIFICATIONS +STULTIFIED +STULTIFIES +STULTIFY +STULTIFYING +STUM +STUMBLE +STUMBLEBUM +STUMBLEBUMS +STUMBLED +STUMBLER +STUMBLERS +STUMBLES +STUMBLING +STUMBLINGLY +STUMMED +STUMMING +STUMP +STUMPAGE +STUMPAGES +STUMPED +STUMPER +STUMPERS +STUMPIER +STUMPIEST +STUMPING +STUMPS +STUMPY +STUMS +STUN +STUNG +STUNK +STUNNED +STUNNER +STUNNERS +STUNNING +STUNNINGLY +STUNS +STUNSAIL +STUNSAILS +STUNT +STUNTED +STUNTEDNESS +STUNTEDNESSES +STUNTING +STUNTMAN +STUNTMEN +STUNTS +STUNTWOMAN +STUNTWOMEN +STUPA +STUPAS +STUPE +STUPEFACTION +STUPEFACTIONS +STUPEFIED +STUPEFIER +STUPEFIERS +STUPEFIES +STUPEFY +STUPEFYING +STUPEFYINGLY +STUPENDOUS +STUPENDOUSLY +STUPENDOUSNESS +STUPES +STUPID +STUPIDER +STUPIDEST +STUPIDITIES +STUPIDITY +STUPIDLY +STUPIDNESS +STUPIDNESSES +STUPIDS +STUPOR +STUPOROUS +STUPORS +STURDIED +STURDIER +STURDIES +STURDIEST +STURDILY +STURDINESS +STURDINESSES +STURDY +STURGEON +STURGEONS +STURT +STURTS +STUTTER +STUTTERED +STUTTERER +STUTTERERS +STUTTERING +STUTTERS +STY +STYE +STYED +STYES +STYGIAN +STYING +STYLAR +STYLATE +STYLE +STYLEBOOK +STYLEBOOKS +STYLED +STYLELESS +STYLELESSNESS +STYLELESSNESSES +STYLER +STYLERS +STYLES +STYLET +STYLETS +STYLI +STYLIFORM +STYLING +STYLINGS +STYLISE +STYLISED +STYLISER +STYLISERS +STYLISES +STYLISH +STYLISHLY +STYLISHNESS +STYLISHNESSES +STYLISING +STYLIST +STYLISTIC +STYLISTICALLY +STYLISTICS +STYLISTS +STYLITE +STYLITES +STYLITIC +STYLITISM +STYLITISMS +STYLIZATION +STYLIZATIONS +STYLIZE +STYLIZED +STYLIZER +STYLIZERS +STYLIZES +STYLIZING +STYLOBATE +STYLOBATES +STYLOGRAPHIES +STYLOGRAPHY +STYLOID +STYLOLITE +STYLOLITES +STYLOPODIA +STYLOPODIUM +STYLUS +STYLUSES +STYMIE +STYMIED +STYMIEING +STYMIES +STYMY +STYMYING +STYPSIS +STYPSISES +STYPTIC +STYPTICAL +STYPTICS +STYRAX +STYRAXES +STYRENE +STYRENES +STYROFOAM +STYROFOAMS +SUABILITIES +SUABILITY +SUABLE +SUABLY +SUASION +SUASIONS +SUASIVE +SUASIVELY +SUASIVENESS +SUASIVENESSES +SUASORY +SUAVE +SUAVELY +SUAVENESS +SUAVENESSES +SUAVER +SUAVEST +SUAVITIES +SUAVITY +SUB +SUBA +SUBABBOT +SUBABBOTS +SUBACID +SUBACIDLY +SUBACIDNESS +SUBACIDNESSES +SUBACRID +SUBACUTE +SUBACUTELY +SUBADAR +SUBADARS +SUBADOLESCENT +SUBADOLESCENTS +SUBADULT +SUBADULTS +SUBAERIAL +SUBAERIALLY +SUBAGENCIES +SUBAGENCY +SUBAGENT +SUBAGENTS +SUBAH +SUBAHDAR +SUBAHDARS +SUBAHS +SUBALAR +SUBALLOCATION +SUBALLOCATIONS +SUBALPINE +SUBALTERN +SUBALTERNS +SUBANTARCTIC +SUBAPICAL +SUBAQUATIC +SUBAQUEOUS +SUBARACHNOID +SUBARACHNOIDAL +SUBARCTIC +SUBARCTICS +SUBAREA +SUBAREAS +SUBARID +SUBAS +SUBASSEMBLIES +SUBASSEMBLY +SUBASTRAL +SUBATMOSPHERIC +SUBATOM +SUBATOMIC +SUBATOMS +SUBAUDIBLE +SUBAUDITION +SUBAUDITIONS +SUBAURAL +SUBAVERAGE +SUBAXIAL +SUBBASE +SUBBASEMENT +SUBBASEMENTS +SUBBASES +SUBBASIN +SUBBASINS +SUBBASS +SUBBASSES +SUBBED +SUBBING +SUBBINGS +SUBBITUMINOUS +SUBBLOCK +SUBBLOCKS +SUBBRANCH +SUBBRANCHES +SUBBREED +SUBBREEDS +SUBBUREAU +SUBBUREAUS +SUBBUREAUX +SUBCABINET +SUBCAPSULAR +SUBCASTE +SUBCASTES +SUBCATEGORIES +SUBCATEGORIZE +SUBCATEGORIZED +SUBCATEGORIZES +SUBCATEGORIZING +SUBCATEGORY +SUBCAUSE +SUBCAUSES +SUBCAVITIES +SUBCAVITY +SUBCEILING +SUBCEILINGS +SUBCELL +SUBCELLAR +SUBCELLARS +SUBCELLS +SUBCELLULAR +SUBCENTER +SUBCENTERS +SUBCENTRAL +SUBCENTRALLY +SUBCHAPTER +SUBCHAPTERS +SUBCHASER +SUBCHASERS +SUBCHIEF +SUBCHIEFS +SUBCLAIM +SUBCLAIMS +SUBCLAN +SUBCLANS +SUBCLASS +SUBCLASSED +SUBCLASSES +SUBCLASSIFIED +SUBCLASSIFIES +SUBCLASSIFY +SUBCLASSIFYING +SUBCLASSING +SUBCLAUSE +SUBCLAUSES +SUBCLAVIAN +SUBCLAVIANS +SUBCLERK +SUBCLERKS +SUBCLIMAX +SUBCLIMAXES +SUBCLINICAL +SUBCLINICALLY +SUBCLUSTER +SUBCLUSTERED +SUBCLUSTERING +SUBCLUSTERS +SUBCODE +SUBCODES +SUBCOLLECTION +SUBCOLLECTIONS +SUBCOLLEGE +SUBCOLLEGIATE +SUBCOLONIES +SUBCOLONY +SUBCOMMISSION +SUBCOMMISSIONED +SUBCOMMISSIONS +SUBCOMMITTEE +SUBCOMMITTEES +SUBCOMMUNITIES +SUBCOMMUNITY +SUBCOMPACT +SUBCOMPACTS +SUBCOMPONENT +SUBCOMPONENTS +SUBCONSCIOUS +SUBCONSCIOUSES +SUBCONSCIOUSLY +SUBCONSUL +SUBCONSULS +SUBCONTINENT +SUBCONTINENTAL +SUBCONTINENTS +SUBCONTRACT +SUBCONTRACTED +SUBCONTRACTING +SUBCONTRACTOR +SUBCONTRACTORS +SUBCONTRACTS +SUBCONTRAOCTAVE +SUBCONTRARIES +SUBCONTRARY +SUBCOOL +SUBCOOLED +SUBCOOLING +SUBCOOLS +SUBCORDATE +SUBCORIACEOUS +SUBCORTEX +SUBCORTEXES +SUBCORTICAL +SUBCORTICES +SUBCOSTAL +SUBCOSTALS +SUBCOUNTIES +SUBCOUNTY +SUBCRITICAL +SUBCRUSTAL +SUBCULT +SUBCULTS +SUBCULTURAL +SUBCULTURALLY +SUBCULTURE +SUBCULTURED +SUBCULTURES +SUBCULTURING +SUBCURATIVE +SUBCUTANEOUS +SUBCUTANEOUSLY +SUBCUTES +SUBCUTIS +SUBCUTISES +SUBDEACON +SUBDEACONS +SUBDEALER +SUBDEALERS +SUBDEAN +SUBDEANS +SUBDEB +SUBDEBS +SUBDEBUTANTE +SUBDEBUTANTES +SUBDECISION +SUBDECISIONS +SUBDEPARTMENT +SUBDEPARTMENTS +SUBDEPOT +SUBDEPOTS +SUBDEPUTIES +SUBDEPUTY +SUBDERMAL +SUBDERMALLY +SUBDEVELOPMENT +SUBDEVELOPMENTS +SUBDIALECT +SUBDIALECTS +SUBDIRECTOR +SUBDIRECTORS +SUBDISCIPLINE +SUBDISCIPLINES +SUBDISTRICT +SUBDISTRICTS +SUBDIVIDABLE +SUBDIVIDE +SUBDIVIDED +SUBDIVIDER +SUBDIVIDERS +SUBDIVIDES +SUBDIVIDING +SUBDIVISION +SUBDIVISIONS +SUBDOMINANT +SUBDOMINANTS +SUBDUABLE +SUBDUABLY +SUBDUAL +SUBDUALS +SUBDUCE +SUBDUCED +SUBDUCES +SUBDUCING +SUBDUCT +SUBDUCTED +SUBDUCTING +SUBDUCTION +SUBDUCTIONS +SUBDUCTS +SUBDUE +SUBDUED +SUBDUEDLY +SUBDUER +SUBDUERS +SUBDUES +SUBDUING +SUBDURAL +SUBDWARF +SUBDWARFS +SUBECHO +SUBECHOES +SUBECONOMIES +SUBECONOMY +SUBEDIT +SUBEDITED +SUBEDITING +SUBEDITOR +SUBEDITORIAL +SUBEDITORS +SUBEDITS +SUBEMPLOYED +SUBEMPLOYMENT +SUBEMPLOYMENTS +SUBENTRIES +SUBENTRY +SUBEPIDERMAL +SUBEPOCH +SUBEPOCHS +SUBER +SUBERECT +SUBERIC +SUBERIN +SUBERINS +SUBERISE +SUBERISED +SUBERISES +SUBERISING +SUBERIZATION +SUBERIZATIONS +SUBERIZE +SUBERIZED +SUBERIZES +SUBERIZING +SUBEROSE +SUBEROUS +SUBERS +SUBFAMILIES +SUBFAMILY +SUBFIELD +SUBFIELDS +SUBFILE +SUBFILES +SUBFIX +SUBFIXES +SUBFLOOR +SUBFLOORS +SUBFLUID +SUBFOSSIL +SUBFOSSILS +SUBFRAME +SUBFRAMES +SUBFREEZING +SUBFUSC +SUBFUSCS +SUBGENERA +SUBGENERATION +SUBGENERATIONS +SUBGENRE +SUBGENRES +SUBGENUS +SUBGENUSES +SUBGLACIAL +SUBGLACIALLY +SUBGOAL +SUBGOALS +SUBGOVERNMENT +SUBGOVERNMENTS +SUBGRADE +SUBGRADES +SUBGRAPH +SUBGRAPHS +SUBGROUP +SUBGROUPED +SUBGROUPING +SUBGROUPS +SUBGUM +SUBGUMS +SUBHEAD +SUBHEADING +SUBHEADINGS +SUBHEADS +SUBHUMAN +SUBHUMANS +SUBHUMID +SUBIDEA +SUBIDEAS +SUBINDEX +SUBINDEXES +SUBINDICES +SUBINDUSTRIES +SUBINDUSTRY +SUBINFEUD +SUBINFEUDATE +SUBINFEUDATED +SUBINFEUDATES +SUBINFEUDATING +SUBINFEUDATION +SUBINFEUDATIONS +SUBINFEUDED +SUBINFEUDING +SUBINFEUDS +SUBINHIBITORY +SUBINTERVAL +SUBINTERVALS +SUBIRRIGATE +SUBIRRIGATED +SUBIRRIGATES +SUBIRRIGATING +SUBIRRIGATION +SUBIRRIGATIONS +SUBITEM +SUBITEMS +SUBITO +SUBJACENCIES +SUBJACENCY +SUBJACENT +SUBJACENTLY +SUBJECT +SUBJECTED +SUBJECTING +SUBJECTION +SUBJECTIONS +SUBJECTIVE +SUBJECTIVELY +SUBJECTIVENESS +SUBJECTIVES +SUBJECTIVISE +SUBJECTIVISED +SUBJECTIVISES +SUBJECTIVISING +SUBJECTIVISM +SUBJECTIVISMS +SUBJECTIVIST +SUBJECTIVISTIC +SUBJECTIVISTS +SUBJECTIVITIES +SUBJECTIVITY +SUBJECTIVIZE +SUBJECTIVIZED +SUBJECTIVIZES +SUBJECTIVIZING +SUBJECTLESS +SUBJECTS +SUBJOIN +SUBJOINED +SUBJOINING +SUBJOINS +SUBJUGATE +SUBJUGATED +SUBJUGATES +SUBJUGATING +SUBJUGATION +SUBJUGATIONS +SUBJUGATOR +SUBJUGATORS +SUBJUNCTION +SUBJUNCTIONS +SUBJUNCTIVE +SUBJUNCTIVES +SUBKINGDOM +SUBKINGDOMS +SUBLANGUAGE +SUBLANGUAGES +SUBLATE +SUBLATED +SUBLATES +SUBLATING +SUBLATION +SUBLATIONS +SUBLEASE +SUBLEASED +SUBLEASES +SUBLEASING +SUBLESSEE +SUBLESSEES +SUBLESSOR +SUBLESSORS +SUBLET +SUBLETHAL +SUBLETHALLY +SUBLETS +SUBLETTING +SUBLEVEL +SUBLEVELS +SUBLIBRARIAN +SUBLIBRARIANS +SUBLICENSE +SUBLICENSED +SUBLICENSES +SUBLICENSING +SUBLIEUTENANT +SUBLIEUTENANTS +SUBLIMABLE +SUBLIMATE +SUBLIMATED +SUBLIMATES +SUBLIMATING +SUBLIMATION +SUBLIMATIONS +SUBLIME +SUBLIMED +SUBLIMELY +SUBLIMENESS +SUBLIMENESSES +SUBLIMER +SUBLIMERS +SUBLIMES +SUBLIMEST +SUBLIMINAL +SUBLIMINALLY +SUBLIMING +SUBLIMIT +SUBLIMITIES +SUBLIMITS +SUBLIMITY +SUBLINE +SUBLINES +SUBLINGUAL +SUBLITERACIES +SUBLITERACY +SUBLITERARY +SUBLITERATE +SUBLITERATES +SUBLITERATURE +SUBLITERATURES +SUBLITTORAL +SUBLITTORALS +SUBLOT +SUBLOTS +SUBLUNAR +SUBLUNARY +SUBLUXATION +SUBLUXATIONS +SUBMANAGER +SUBMANAGERS +SUBMANDIBULAR +SUBMANDIBULARS +SUBMARGINAL +SUBMARINE +SUBMARINED +SUBMARINER +SUBMARINERS +SUBMARINES +SUBMARINING +SUBMARKET +SUBMARKETS +SUBMAXILLARIES +SUBMAXILLARY +SUBMAXIMAL +SUBMEDIANT +SUBMEDIANTS +SUBMENU +SUBMENUS +SUBMERGE +SUBMERGED +SUBMERGENCE +SUBMERGENCES +SUBMERGES +SUBMERGIBLE +SUBMERGING +SUBMERSE +SUBMERSED +SUBMERSES +SUBMERSIBLE +SUBMERSIBLES +SUBMERSING +SUBMERSION +SUBMERSIONS +SUBMETACENTRIC +SUBMETACENTRICS +SUBMICROGRAM +SUBMICRON +SUBMICROSCOPIC +SUBMILLIMETER +SUBMINIATURE +SUBMINIMAL +SUBMINISTER +SUBMINISTERS +SUBMISS +SUBMISSION +SUBMISSIONS +SUBMISSIVE +SUBMISSIVELY +SUBMISSIVENESS +SUBMIT +SUBMITS +SUBMITTAL +SUBMITTALS +SUBMITTED +SUBMITTER +SUBMITTERS +SUBMITTING +SUBMUCOSA +SUBMUCOSAE +SUBMUCOSAL +SUBMUCOSAS +SUBMULTIPLE +SUBMULTIPLES +SUBMUNITION +SUBMUNITIONS +SUBNASAL +SUBNATIONAL +SUBNET +SUBNETS +SUBNETWORK +SUBNETWORKED +SUBNETWORKING +SUBNETWORKS +SUBNICHE +SUBNICHES +SUBNODAL +SUBNORMAL +SUBNORMALITIES +SUBNORMALITY +SUBNORMALLY +SUBNORMALS +SUBNUCLEAR +SUBNUCLEI +SUBNUCLEUS +SUBNUCLEUSES +SUBOCEAN +SUBOCEANIC +SUBOPTIC +SUBOPTIMAL +SUBOPTIMIZATION +SUBOPTIMIZE +SUBOPTIMIZED +SUBOPTIMIZES +SUBOPTIMIZING +SUBOPTIMUM +SUBORAL +SUBORBICULAR +SUBORBITAL +SUBORDER +SUBORDERS +SUBORDINATE +SUBORDINATED +SUBORDINATELY +SUBORDINATENESS +SUBORDINATES +SUBORDINATING +SUBORDINATION +SUBORDINATIONS +SUBORDINATIVE +SUBORDINATOR +SUBORDINATORS +SUBORGANIZATION +SUBORN +SUBORNATION +SUBORNATIONS +SUBORNED +SUBORNER +SUBORNERS +SUBORNING +SUBORNS +SUBOSCINE +SUBOSCINES +SUBOVAL +SUBOVATE +SUBOXIDE +SUBOXIDES +SUBPANEL +SUBPANELS +SUBPAR +SUBPARAGRAPH +SUBPARAGRAPHS +SUBPARALLEL +SUBPART +SUBPARTS +SUBPENA +SUBPENAED +SUBPENAING +SUBPENAS +SUBPERIOD +SUBPERIODS +SUBPHASE +SUBPHASES +SUBPHYLA +SUBPHYLAR +SUBPHYLUM +SUBPLOT +SUBPLOTS +SUBPOENA +SUBPOENAED +SUBPOENAING +SUBPOENAS +SUBPOLAR +SUBPOPULATION +SUBPOPULATIONS +SUBPOTENCIES +SUBPOTENCY +SUBPOTENT +SUBPRIMATE +SUBPRIMATES +SUBPRINCIPAL +SUBPRINCIPALS +SUBPROBLEM +SUBPROBLEMS +SUBPROCESS +SUBPROCESSES +SUBPRODUCT +SUBPRODUCTS +SUBPROFESSIONAL +SUBPROGRAM +SUBPROGRAMS +SUBPROJECT +SUBPROJECTS +SUBPROLETARIAT +SUBPROLETARIATS +SUBPUBIC +SUBRACE +SUBRACES +SUBRATIONAL +SUBREGION +SUBREGIONAL +SUBREGIONS +SUBRENT +SUBRENTS +SUBREPTION +SUBREPTIONS +SUBREPTITIOUS +SUBREPTITIOUSLY +SUBRING +SUBRINGS +SUBROGATE +SUBROGATED +SUBROGATES +SUBROGATING +SUBROGATION +SUBROGATIONS +SUBROUTINE +SUBROUTINES +SUBRULE +SUBRULES +SUBS +SUBSALE +SUBSALES +SUBSAMPLE +SUBSAMPLED +SUBSAMPLES +SUBSAMPLING +SUBSATELLITE +SUBSATELLITES +SUBSATURATED +SUBSATURATION +SUBSATURATIONS +SUBSCALE +SUBSCALES +SUBSCIENCE +SUBSCIENCES +SUBSCRIBE +SUBSCRIBED +SUBSCRIBER +SUBSCRIBERS +SUBSCRIBES +SUBSCRIBING +SUBSCRIPT +SUBSCRIPTION +SUBSCRIPTIONS +SUBSCRIPTS +SUBSEA +SUBSECRETARIES +SUBSECRETARY +SUBSECT +SUBSECTION +SUBSECTIONS +SUBSECTOR +SUBSECTORS +SUBSECTS +SUBSEGMENT +SUBSEGMENTS +SUBSEIZURE +SUBSEIZURES +SUBSENSE +SUBSENSES +SUBSENTENCE +SUBSENTENCES +SUBSEQUENCE +SUBSEQUENCES +SUBSEQUENT +SUBSEQUENTLY +SUBSEQUENTS +SUBSERE +SUBSERES +SUBSERIES +SUBSERVE +SUBSERVED +SUBSERVES +SUBSERVIENCE +SUBSERVIENCES +SUBSERVIENCIES +SUBSERVIENCY +SUBSERVIENT +SUBSERVIENTLY +SUBSERVING +SUBSET +SUBSETS +SUBSHAFT +SUBSHAFTS +SUBSHELL +SUBSHELLS +SUBSHRUB +SUBSHRUBS +SUBSIDE +SUBSIDED +SUBSIDENCE +SUBSIDENCES +SUBSIDER +SUBSIDERS +SUBSIDES +SUBSIDIARIES +SUBSIDIARILY +SUBSIDIARITIES +SUBSIDIARITY +SUBSIDIARY +SUBSIDIES +SUBSIDING +SUBSIDISE +SUBSIDISED +SUBSIDISES +SUBSIDISING +SUBSIDIZATION +SUBSIDIZATIONS +SUBSIDIZE +SUBSIDIZED +SUBSIDIZER +SUBSIDIZERS +SUBSIDIZES +SUBSIDIZING +SUBSIDY +SUBSIST +SUBSISTED +SUBSISTENCE +SUBSISTENCES +SUBSISTENT +SUBSISTER +SUBSISTERS +SUBSISTING +SUBSISTS +SUBSITE +SUBSITES +SUBSKILL +SUBSKILLS +SUBSOCIAL +SUBSOCIETIES +SUBSOCIETY +SUBSOIL +SUBSOILED +SUBSOILER +SUBSOILERS +SUBSOILING +SUBSOILS +SUBSOLAR +SUBSONIC +SUBSONICALLY +SUBSPACE +SUBSPACES +SUBSPECIALIST +SUBSPECIALISTS +SUBSPECIALIZE +SUBSPECIALIZED +SUBSPECIALIZES +SUBSPECIALIZING +SUBSPECIALTIES +SUBSPECIALTY +SUBSPECIES +SUBSPECIFIC +SUBSTAGE +SUBSTAGES +SUBSTANCE +SUBSTANCELESS +SUBSTANCES +SUBSTANDARD +SUBSTANTIAL +SUBSTANTIALITY +SUBSTANTIALLY +SUBSTANTIALNESS +SUBSTANTIALS +SUBSTANTIATE +SUBSTANTIATED +SUBSTANTIATES +SUBSTANTIATING +SUBSTANTIATION +SUBSTANTIATIONS +SUBSTANTIATIVE +SUBSTANTIVAL +SUBSTANTIVALLY +SUBSTANTIVE +SUBSTANTIVELY +SUBSTANTIVENESS +SUBSTANTIVES +SUBSTANTIVIZE +SUBSTANTIVIZED +SUBSTANTIVIZES +SUBSTANTIVIZING +SUBSTATE +SUBSTATES +SUBSTATION +SUBSTATIONS +SUBSTITUENT +SUBSTITUENTS +SUBSTITUTABLE +SUBSTITUTE +SUBSTITUTED +SUBSTITUTES +SUBSTITUTING +SUBSTITUTION +SUBSTITUTIONAL +SUBSTITUTIONARY +SUBSTITUTIONS +SUBSTITUTIVE +SUBSTITUTIVELY +SUBSTRATA +SUBSTRATE +SUBSTRATES +SUBSTRATUM +SUBSTRATUMS +SUBSTRUCTURAL +SUBSTRUCTURE +SUBSTRUCTURES +SUBSUMABLE +SUBSUME +SUBSUMED +SUBSUMES +SUBSUMING +SUBSUMPTION +SUBSUMPTIONS +SUBSURFACE +SUBSURFACES +SUBSYSTEM +SUBSYSTEMS +SUBTASK +SUBTASKS +SUBTAXA +SUBTAXON +SUBTAXONS +SUBTEEN +SUBTEENS +SUBTEMPERATE +SUBTENANCIES +SUBTENANCY +SUBTENANT +SUBTENANTS +SUBTEND +SUBTENDED +SUBTENDING +SUBTENDS +SUBTERFUGE +SUBTERFUGES +SUBTERMINAL +SUBTERRANEAN +SUBTERRANEANLY +SUBTERRANEOUS +SUBTERRANEOUSLY +SUBTEST +SUBTESTS +SUBTEXT +SUBTEXTS +SUBTEXTUAL +SUBTHEME +SUBTHEMES +SUBTHERAPEUTIC +SUBTHRESHOLD +SUBTILE +SUBTILELY +SUBTILENESS +SUBTILENESSES +SUBTILER +SUBTILEST +SUBTILIN +SUBTILINS +SUBTILISIN +SUBTILISINS +SUBTILITIES +SUBTILITY +SUBTILIZATION +SUBTILIZATIONS +SUBTILIZE +SUBTILIZED +SUBTILIZES +SUBTILIZING +SUBTILTIES +SUBTILTY +SUBTITLE +SUBTITLED +SUBTITLES +SUBTITLING +SUBTLE +SUBTLENESS +SUBTLENESSES +SUBTLER +SUBTLEST +SUBTLETIES +SUBTLETY +SUBTLY +SUBTONE +SUBTONES +SUBTONIC +SUBTONICS +SUBTOPIA +SUBTOPIAS +SUBTOPIC +SUBTOPICS +SUBTORRID +SUBTOTAL +SUBTOTALED +SUBTOTALING +SUBTOTALLED +SUBTOTALLING +SUBTOTALLY +SUBTOTALS +SUBTRACT +SUBTRACTED +SUBTRACTER +SUBTRACTERS +SUBTRACTING +SUBTRACTION +SUBTRACTIONS +SUBTRACTIVE +SUBTRACTS +SUBTRAHEND +SUBTRAHENDS +SUBTREASURIES +SUBTREASURY +SUBTREND +SUBTRENDS +SUBTRIBE +SUBTRIBES +SUBTROPIC +SUBTROPICAL +SUBTROPICS +SUBTUNIC +SUBTUNICS +SUBTYPE +SUBTYPES +SUBULATE +SUBUMBRELLA +SUBUMBRELLAS +SUBUNIT +SUBUNITS +SUBURB +SUBURBAN +SUBURBANISE +SUBURBANISED +SUBURBANISES +SUBURBANISING +SUBURBANITE +SUBURBANITES +SUBURBANIZATION +SUBURBANIZE +SUBURBANIZED +SUBURBANIZES +SUBURBANIZING +SUBURBANS +SUBURBED +SUBURBIA +SUBURBIAS +SUBURBS +SUBVARIETIES +SUBVARIETY +SUBVASSAL +SUBVASSALS +SUBVENE +SUBVENED +SUBVENES +SUBVENING +SUBVENTION +SUBVENTIONARY +SUBVENTIONS +SUBVERSION +SUBVERSIONARY +SUBVERSIONS +SUBVERSIVE +SUBVERSIVELY +SUBVERSIVENESS +SUBVERSIVES +SUBVERT +SUBVERTED +SUBVERTER +SUBVERTERS +SUBVERTING +SUBVERTS +SUBVICAR +SUBVICARS +SUBVIRAL +SUBVIRUS +SUBVIRUSES +SUBVISIBLE +SUBVISUAL +SUBVOCAL +SUBVOCALIZATION +SUBVOCALIZE +SUBVOCALIZED +SUBVOCALIZES +SUBVOCALIZING +SUBVOCALLY +SUBWAY +SUBWAYED +SUBWAYING +SUBWAYS +SUBWOOFER +SUBWOOFERS +SUBWORLD +SUBWORLDS +SUBWRITER +SUBWRITERS +SUBZERO +SUBZONE +SUBZONES +SUCCAH +SUCCAHS +SUCCEDANEA +SUCCEDANEOUS +SUCCEDANEUM +SUCCEDANEUMS +SUCCEDENT +SUCCEED +SUCCEEDED +SUCCEEDER +SUCCEEDERS +SUCCEEDING +SUCCEEDS +SUCCESS +SUCCESSES +SUCCESSFUL +SUCCESSFULLY +SUCCESSFULNESS +SUCCESSION +SUCCESSIONAL +SUCCESSIONALLY +SUCCESSIONS +SUCCESSIVE +SUCCESSIVELY +SUCCESSIVENESS +SUCCESSOR +SUCCESSORS +SUCCINATE +SUCCINATES +SUCCINCT +SUCCINCTER +SUCCINCTEST +SUCCINCTLY +SUCCINCTNESS +SUCCINCTNESSES +SUCCINIC +SUCCINYL +SUCCINYLCHOLINE +SUCCINYLS +SUCCOR +SUCCORED +SUCCORER +SUCCORERS +SUCCORIES +SUCCORING +SUCCORS +SUCCORY +SUCCOTASH +SUCCOTASHES +SUCCOTH +SUCCOUR +SUCCOURED +SUCCOURING +SUCCOURS +SUCCUBA +SUCCUBAE +SUCCUBAS +SUCCUBI +SUCCUBUS +SUCCUBUSES +SUCCULENCE +SUCCULENCES +SUCCULENT +SUCCULENTLY +SUCCULENTS +SUCCUMB +SUCCUMBED +SUCCUMBING +SUCCUMBS +SUCCUSS +SUCCUSSED +SUCCUSSES +SUCCUSSING +SUCH +SUCHLIKE +SUCHNESS +SUCHNESSES +SUCK +SUCKED +SUCKER +SUCKERED +SUCKERING +SUCKERS +SUCKFISH +SUCKFISHES +SUCKIER +SUCKIEST +SUCKING +SUCKLE +SUCKLED +SUCKLER +SUCKLERS +SUCKLES +SUCKLESS +SUCKLING +SUCKLINGS +SUCKS +SUCKY +SUCRALOSE +SUCRALOSES +SUCRASE +SUCRASES +SUCRE +SUCRES +SUCROSE +SUCROSES +SUCTION +SUCTIONAL +SUCTIONED +SUCTIONING +SUCTIONS +SUCTORIAL +SUCTORIAN +SUCTORIANS +SUDARIA +SUDARIES +SUDARIUM +SUDARY +SUDATION +SUDATIONS +SUDATORIA +SUDATORIES +SUDATORIUM +SUDATORIUMS +SUDATORY +SUDD +SUDDEN +SUDDENLY +SUDDENNESS +SUDDENNESSES +SUDDENS +SUDDS +SUDOR +SUDORAL +SUDORIFEROUS +SUDORIFIC +SUDORIFICS +SUDORS +SUDS +SUDSED +SUDSER +SUDSERS +SUDSES +SUDSIER +SUDSIEST +SUDSING +SUDSLESS +SUDSY +SUE +SUED +SUEDE +SUEDED +SUEDES +SUEDING +SUER +SUERS +SUES +SUET +SUETS +SUETY +SUFFARI +SUFFARIS +SUFFER +SUFFERABLE +SUFFERABLENESS +SUFFERABLY +SUFFERANCE +SUFFERANCES +SUFFERED +SUFFERER +SUFFERERS +SUFFERING +SUFFERINGS +SUFFERS +SUFFICE +SUFFICED +SUFFICER +SUFFICERS +SUFFICES +SUFFICIENCIES +SUFFICIENCY +SUFFICIENT +SUFFICIENTLY +SUFFICING +SUFFIX +SUFFIXAL +SUFFIXATION +SUFFIXATIONS +SUFFIXED +SUFFIXES +SUFFIXING +SUFFIXION +SUFFIXIONS +SUFFLATE +SUFFLATED +SUFFLATES +SUFFLATING +SUFFOCATE +SUFFOCATED +SUFFOCATES +SUFFOCATING +SUFFOCATINGLY +SUFFOCATION +SUFFOCATIONS +SUFFOCATIVE +SUFFRAGAN +SUFFRAGANS +SUFFRAGE +SUFFRAGES +SUFFRAGETTE +SUFFRAGETTES +SUFFRAGIST +SUFFRAGISTS +SUFFUSE +SUFFUSED +SUFFUSES +SUFFUSING +SUFFUSION +SUFFUSIONS +SUFFUSIVE +SUGAR +SUGARBERRIES +SUGARBERRY +SUGARBUSH +SUGARBUSHES +SUGARCANE +SUGARCANES +SUGARCOAT +SUGARCOATED +SUGARCOATING +SUGARCOATS +SUGARED +SUGARER +SUGARERS +SUGARHOUSE +SUGARHOUSES +SUGARIER +SUGARIEST +SUGARING +SUGARLESS +SUGARLIKE +SUGARLOAF +SUGARLOAVES +SUGARPLUM +SUGARPLUMS +SUGARS +SUGARY +SUGGEST +SUGGESTED +SUGGESTER +SUGGESTERS +SUGGESTIBILITY +SUGGESTIBLE +SUGGESTING +SUGGESTION +SUGGESTIONS +SUGGESTIVE +SUGGESTIVELY +SUGGESTIVENESS +SUGGESTS +SUGH +SUGHED +SUGHING +SUGHS +SUICIDAL +SUICIDALLY +SUICIDE +SUICIDED +SUICIDES +SUICIDING +SUING +SUINT +SUINTS +SUIT +SUITABILITIES +SUITABILITY +SUITABLE +SUITABLENESS +SUITABLENESSES +SUITABLY +SUITCASE +SUITCASES +SUITE +SUITED +SUITER +SUITERS +SUITES +SUITING +SUITINGS +SUITLIKE +SUITOR +SUITORS +SUITS +SUK +SUKIYAKI +SUKIYAKIS +SUKKAH +SUKKAHS +SUKKOT +SUKKOTH +SUKS +SULCAL +SULCATE +SULCATED +SULCATION +SULCATIONS +SULCI +SULCUS +SULDAN +SULDANS +SULFA +SULFADIAZINE +SULFADIAZINES +SULFANILAMIDE +SULFANILAMIDES +SULFAS +SULFATASE +SULFATASES +SULFATE +SULFATED +SULFATES +SULFATING +SULFATION +SULFATIONS +SULFHYDRYL +SULFHYDRYLS +SULFID +SULFIDE +SULFIDES +SULFIDS +SULFINPYRAZONE +SULFINPYRAZONES +SULFINYL +SULFINYLS +SULFITE +SULFITES +SULFITIC +SULFO +SULFONAMIDE +SULFONAMIDES +SULFONATE +SULFONATED +SULFONATES +SULFONATING +SULFONATION +SULFONATIONS +SULFONE +SULFONES +SULFONIC +SULFONIUM +SULFONIUMS +SULFONYL +SULFONYLS +SULFONYLUREA +SULFONYLUREAS +SULFOXIDE +SULFOXIDES +SULFUR +SULFURATE +SULFURATED +SULFURATES +SULFURATING +SULFURED +SULFURET +SULFURETED +SULFURETING +SULFURETS +SULFURETTED +SULFURETTING +SULFURIC +SULFURING +SULFURIZE +SULFURIZED +SULFURIZES +SULFURIZING +SULFUROUS +SULFUROUSLY +SULFUROUSNESS +SULFUROUSNESSES +SULFURS +SULFURY +SULFURYL +SULFURYLS +SULK +SULKED +SULKER +SULKERS +SULKIER +SULKIES +SULKIEST +SULKILY +SULKINESS +SULKINESSES +SULKING +SULKS +SULKY +SULLAGE +SULLAGES +SULLEN +SULLENER +SULLENEST +SULLENLY +SULLENNESS +SULLENNESSES +SULLIABLE +SULLIED +SULLIES +SULLY +SULLYING +SULPHA +SULPHAS +SULPHATE +SULPHATED +SULPHATES +SULPHATING +SULPHID +SULPHIDE +SULPHIDES +SULPHIDS +SULPHITE +SULPHITES +SULPHONE +SULPHONES +SULPHUR +SULPHURED +SULPHUREOUS +SULPHURING +SULPHURISE +SULPHURISED +SULPHURISES +SULPHURISING +SULPHUROUS +SULPHURS +SULPHURY +SULTAN +SULTANA +SULTANAS +SULTANATE +SULTANATES +SULTANESS +SULTANESSES +SULTANIC +SULTANS +SULTRIER +SULTRIEST +SULTRILY +SULTRINESS +SULTRINESSES +SULTRY +SULU +SULUS +SUM +SUMAC +SUMACH +SUMACHS +SUMACS +SUMLESS +SUMMA +SUMMABILITIES +SUMMABILITY +SUMMABLE +SUMMAE +SUMMAND +SUMMANDS +SUMMARIES +SUMMARILY +SUMMARISE +SUMMARISED +SUMMARISES +SUMMARISING +SUMMARIST +SUMMARISTS +SUMMARIZABLE +SUMMARIZATION +SUMMARIZATIONS +SUMMARIZE +SUMMARIZED +SUMMARIZER +SUMMARIZERS +SUMMARIZES +SUMMARIZING +SUMMARY +SUMMAS +SUMMATE +SUMMATED +SUMMATES +SUMMATING +SUMMATION +SUMMATIONAL +SUMMATIONS +SUMMATIVE +SUMMED +SUMMER +SUMMERED +SUMMERHOUSE +SUMMERHOUSES +SUMMERIER +SUMMERIEST +SUMMERING +SUMMERLIKE +SUMMERLONG +SUMMERLY +SUMMERS +SUMMERSAULT +SUMMERSAULTED +SUMMERSAULTING +SUMMERSAULTS +SUMMERSET +SUMMERSETS +SUMMERSETTED +SUMMERSETTING +SUMMERTIME +SUMMERTIMES +SUMMERWOOD +SUMMERWOODS +SUMMERY +SUMMING +SUMMIT +SUMMITAL +SUMMITED +SUMMITEER +SUMMITEERS +SUMMITING +SUMMITRIES +SUMMITRY +SUMMITS +SUMMON +SUMMONABLE +SUMMONED +SUMMONER +SUMMONERS +SUMMONING +SUMMONS +SUMMONSED +SUMMONSES +SUMMONSING +SUMO +SUMOIST +SUMOISTS +SUMOS +SUMP +SUMPS +SUMPTER +SUMPTERS +SUMPTUARY +SUMPTUOUS +SUMPTUOUSLY +SUMPTUOUSNESS +SUMPTUOUSNESSES +SUMPWEED +SUMPWEEDS +SUMS +SUN +SUNBACK +SUNBAKED +SUNBATH +SUNBATHE +SUNBATHED +SUNBATHER +SUNBATHERS +SUNBATHES +SUNBATHING +SUNBATHS +SUNBEAM +SUNBEAMS +SUNBEAMY +SUNBELT +SUNBELTS +SUNBIRD +SUNBIRDS +SUNBLOCK +SUNBLOCKS +SUNBONNET +SUNBONNETS +SUNBOW +SUNBOWS +SUNBURN +SUNBURNED +SUNBURNING +SUNBURNS +SUNBURNT +SUNBURST +SUNBURSTS +SUNCHOKE +SUNCHOKES +SUNDAE +SUNDAES +SUNDECK +SUNDECKS +SUNDER +SUNDERED +SUNDERER +SUNDERERS +SUNDERING +SUNDERS +SUNDEW +SUNDEWS +SUNDIAL +SUNDIALS +SUNDOG +SUNDOGS +SUNDOWN +SUNDOWNED +SUNDOWNER +SUNDOWNERS +SUNDOWNING +SUNDOWNS +SUNDRESS +SUNDRESSES +SUNDRIES +SUNDRILY +SUNDROPS +SUNDRY +SUNFAST +SUNFISH +SUNFISHES +SUNFLOWER +SUNFLOWERS +SUNG +SUNGLASS +SUNGLASSES +SUNGLOW +SUNGLOWS +SUNK +SUNKEN +SUNKET +SUNKETS +SUNLAMP +SUNLAMPS +SUNLAND +SUNLANDS +SUNLESS +SUNLIGHT +SUNLIGHTS +SUNLIKE +SUNLIT +SUNN +SUNNA +SUNNAH +SUNNAHS +SUNNAS +SUNNED +SUNNIER +SUNNIEST +SUNNILY +SUNNINESS +SUNNINESSES +SUNNING +SUNNS +SUNNY +SUNPORCH +SUNPORCHES +SUNPROOF +SUNRAY +SUNRAYS +SUNRISE +SUNRISES +SUNROOF +SUNROOFS +SUNROOM +SUNROOMS +SUNS +SUNSCALD +SUNSCALDS +SUNSCREEN +SUNSCREENING +SUNSCREENS +SUNSEEKER +SUNSEEKERS +SUNSET +SUNSETS +SUNSHADE +SUNSHADES +SUNSHINE +SUNSHINES +SUNSHINY +SUNSPOT +SUNSPOTS +SUNSTONE +SUNSTONES +SUNSTROKE +SUNSTROKES +SUNSTRUCK +SUNSUIT +SUNSUITS +SUNTAN +SUNTANNED +SUNTANNING +SUNTANS +SUNUP +SUNUPS +SUNWARD +SUNWARDS +SUNWISE +SUP +SUPE +SUPER +SUPERABLE +SUPERABLENESS +SUPERABLENESSES +SUPERABLY +SUPERABOUND +SUPERABOUNDED +SUPERABOUNDING +SUPERABOUNDS +SUPERABSORBENT +SUPERABSORBENTS +SUPERABUNDANCE +SUPERABUNDANCES +SUPERABUNDANT +SUPERABUNDANTLY +SUPERACHIEVER +SUPERACHIEVERS +SUPERACTIVITIES +SUPERACTIVITY +SUPERADD +SUPERADDED +SUPERADDING +SUPERADDITION +SUPERADDITIONS +SUPERADDS +SUPERAGENCIES +SUPERAGENCY +SUPERAGENT +SUPERAGENTS +SUPERALLOY +SUPERALLOYS +SUPERALTERN +SUPERALTERNS +SUPERAMBITIOUS +SUPERANNUATE +SUPERANNUATED +SUPERANNUATES +SUPERANNUATING +SUPERANNUATION +SUPERANNUATIONS +SUPERATHLETE +SUPERATHLETES +SUPERATOM +SUPERATOMS +SUPERB +SUPERBAD +SUPERBANK +SUPERBANKS +SUPERBER +SUPERBEST +SUPERBITCH +SUPERBITCHES +SUPERBLOCK +SUPERBLOCKS +SUPERBLY +SUPERBNESS +SUPERBNESSES +SUPERBOARD +SUPERBOARDS +SUPERBOMB +SUPERBOMBER +SUPERBOMBERS +SUPERBOMBS +SUPERBRIGHT +SUPERBUG +SUPERBUGS +SUPERBUREAUCRAT +SUPERCABINET +SUPERCABINETS +SUPERCALENDER +SUPERCALENDERED +SUPERCALENDERS +SUPERCAR +SUPERCARGO +SUPERCARGOES +SUPERCARGOS +SUPERCARRIER +SUPERCARRIERS +SUPERCARS +SUPERCAUTIOUS +SUPERCEDE +SUPERCEDED +SUPERCEDES +SUPERCEDING +SUPERCENTER +SUPERCENTERS +SUPERCHARGE +SUPERCHARGED +SUPERCHARGER +SUPERCHARGERS +SUPERCHARGES +SUPERCHARGING +SUPERCHIC +SUPERCHURCH +SUPERCHURCHES +SUPERCILIARY +SUPERCILIOUS +SUPERCILIOUSLY +SUPERCITIES +SUPERCITY +SUPERCIVILIZED +SUPERCLASS +SUPERCLASSES +SUPERCLEAN +SUPERCLUB +SUPERCLUBS +SUPERCLUSTER +SUPERCLUSTERS +SUPERCOIL +SUPERCOILED +SUPERCOILING +SUPERCOILS +SUPERCOLLIDER +SUPERCOLLIDERS +SUPERCOLOSSAL +SUPERCOMPUTER +SUPERCOMPUTERS +SUPERCONDUCT +SUPERCONDUCTED +SUPERCONDUCTING +SUPERCONDUCTIVE +SUPERCONDUCTOR +SUPERCONDUCTORS +SUPERCONDUCTS +SUPERCONFIDENT +SUPERCONTINENT +SUPERCONTINENTS +SUPERCONVENIENT +SUPERCOOL +SUPERCOOLED +SUPERCOOLING +SUPERCOOLS +SUPERCOP +SUPERCOPS +SUPERCRIMINAL +SUPERCRIMINALS +SUPERCRITICAL +SUPERCURRENT +SUPERCURRENTS +SUPERCUTE +SUPERDELUXE +SUPERDIPLOMAT +SUPERDIPLOMATS +SUPERED +SUPEREFFECTIVE +SUPEREFFICIENCY +SUPEREFFICIENT +SUPEREGO +SUPEREGOIST +SUPEREGOISTS +SUPEREGOS +SUPERELEVATE +SUPERELEVATED +SUPERELEVATES +SUPERELEVATING +SUPERELEVATION +SUPERELEVATIONS +SUPERELITE +SUPEREMINENCE +SUPEREMINENCES +SUPEREMINENT +SUPEREMINENTLY +SUPEREROGATION +SUPEREROGATIONS +SUPEREROGATORY +SUPERETTE +SUPERETTES +SUPEREXPENSIVE +SUPEREXPRESS +SUPEREXPRESSES +SUPERFAMILIES +SUPERFAMILY +SUPERFAN +SUPERFANS +SUPERFARM +SUPERFARMS +SUPERFAST +SUPERFATTED +SUPERFETATION +SUPERFETATIONS +SUPERFICIAL +SUPERFICIALITY +SUPERFICIALLY +SUPERFICIES +SUPERFINE +SUPERFIRM +SUPERFIRMS +SUPERFIX +SUPERFIXES +SUPERFLACK +SUPERFLACKS +SUPERFLUID +SUPERFLUIDITIES +SUPERFLUIDITY +SUPERFLUIDS +SUPERFLUITIES +SUPERFLUITY +SUPERFLUOUS +SUPERFLUOUSLY +SUPERFLUOUSNESS +SUPERFUND +SUPERFUNDS +SUPERGENE +SUPERGENES +SUPERGIANT +SUPERGIANTS +SUPERGLUE +SUPERGLUED +SUPERGLUES +SUPERGLUING +SUPERGOOD +SUPERGOVERNMENT +SUPERGRAPHICS +SUPERGRAVITIES +SUPERGRAVITY +SUPERGROUP +SUPERGROUPS +SUPERGROWTH +SUPERGROWTHS +SUPERHARDEN +SUPERHARDENED +SUPERHARDENING +SUPERHARDENS +SUPERHEAT +SUPERHEATED +SUPERHEATER +SUPERHEATERS +SUPERHEATING +SUPERHEATS +SUPERHEAVIES +SUPERHEAVY +SUPERHELICAL +SUPERHELICES +SUPERHELIX +SUPERHELIXES +SUPERHERO +SUPERHEROES +SUPERHEROINE +SUPERHEROINES +SUPERHETERODYNE +SUPERHIGHWAY +SUPERHIGHWAYS +SUPERHIT +SUPERHITS +SUPERHOT +SUPERHUMAN +SUPERHUMANITIES +SUPERHUMANITY +SUPERHUMANLY +SUPERHUMANNESS +SUPERHYPE +SUPERHYPED +SUPERHYPES +SUPERHYPING +SUPERIMPOSABLE +SUPERIMPOSE +SUPERIMPOSED +SUPERIMPOSES +SUPERIMPOSING +SUPERIMPOSITION +SUPERINCUMBENT +SUPERINDIVIDUAL +SUPERINDUCE +SUPERINDUCED +SUPERINDUCES +SUPERINDUCING +SUPERINDUCTION +SUPERINDUCTIONS +SUPERINFECT +SUPERINFECTED +SUPERINFECTING +SUPERINFECTION +SUPERINFECTIONS +SUPERINFECTS +SUPERING +SUPERINSULATED +SUPERINTEND +SUPERINTENDED +SUPERINTENDENCE +SUPERINTENDENCY +SUPERINTENDENT +SUPERINTENDENTS +SUPERINTENDING +SUPERINTENDS +SUPERINTENSITY +SUPERIOR +SUPERIORITIES +SUPERIORITY +SUPERIORLY +SUPERIORS +SUPERJACENT +SUPERJET +SUPERJETS +SUPERJOCK +SUPERJOCKS +SUPERJUMBO +SUPERJUMBOS +SUPERLAIN +SUPERLARGE +SUPERLATIVE +SUPERLATIVELY +SUPERLATIVENESS +SUPERLATIVES +SUPERLAWYER +SUPERLAWYERS +SUPERLAY +SUPERLIE +SUPERLIES +SUPERLIGHT +SUPERLINER +SUPERLINERS +SUPERLOBBYIST +SUPERLOBBYISTS +SUPERLONG +SUPERLOYALIST +SUPERLOYALISTS +SUPERLUNAR +SUPERLUNARY +SUPERLUXURIOUS +SUPERLUXURY +SUPERLYING +SUPERMACHO +SUPERMAJORITIES +SUPERMAJORITY +SUPERMALE +SUPERMALES +SUPERMAN +SUPERMARKET +SUPERMARKETS +SUPERMASCULINE +SUPERMASSIVE +SUPERMEN +SUPERMICRO +SUPERMICROS +SUPERMILITANT +SUPERMILITANTS +SUPERMIND +SUPERMINDS +SUPERMINI +SUPERMINIS +SUPERMINISTER +SUPERMINISTERS +SUPERMODEL +SUPERMODELS +SUPERMODERN +SUPERMOM +SUPERMOMS +SUPERNAL +SUPERNALLY +SUPERNATANT +SUPERNATANTS +SUPERNATE +SUPERNATES +SUPERNATION +SUPERNATIONAL +SUPERNATIONS +SUPERNATURAL +SUPERNATURALISM +SUPERNATURALIST +SUPERNATURALLY +SUPERNATURALS +SUPERNATURE +SUPERNATURES +SUPERNORMAL +SUPERNORMALITY +SUPERNORMALLY +SUPERNOVA +SUPERNOVAE +SUPERNOVAS +SUPERNUMERARIES +SUPERNUMERARY +SUPERNUTRITION +SUPERNUTRITIONS +SUPERORDER +SUPERORDERS +SUPERORDINATE +SUPERORGANIC +SUPERORGANISM +SUPERORGANISMS +SUPERORGASM +SUPERORGASMS +SUPEROVULATE +SUPEROVULATED +SUPEROVULATES +SUPEROVULATING +SUPEROVULATION +SUPEROVULATIONS +SUPEROXIDE +SUPEROXIDES +SUPERPARASITISM +SUPERPATRIOT +SUPERPATRIOTIC +SUPERPATRIOTISM +SUPERPATRIOTS +SUPERPERSON +SUPERPERSONAL +SUPERPERSONS +SUPERPHENOMENA +SUPERPHENOMENON +SUPERPHOSPHATE +SUPERPHOSPHATES +SUPERPHYSICAL +SUPERPIMP +SUPERPIMPS +SUPERPLANE +SUPERPLANES +SUPERPLASTIC +SUPERPLASTICITY +SUPERPLAYER +SUPERPLAYERS +SUPERPOLITE +SUPERPORT +SUPERPORTS +SUPERPOSABLE +SUPERPOSE +SUPERPOSED +SUPERPOSES +SUPERPOSING +SUPERPOSITION +SUPERPOSITIONS +SUPERPOWER +SUPERPOWERED +SUPERPOWERFUL +SUPERPOWERS +SUPERPREMIUM +SUPERPREMIUMS +SUPERPRO +SUPERPROFIT +SUPERPROFITS +SUPERPROS +SUPERQUALITY +SUPERRACE +SUPERRACES +SUPERREAL +SUPERREALISM +SUPERREALISMS +SUPERREGIONAL +SUPERREGIONALS +SUPERRICH +SUPERROAD +SUPERROADS +SUPERROMANTIC +SUPERS +SUPERSAFE +SUPERSALE +SUPERSALES +SUPERSALESMAN +SUPERSALESMEN +SUPERSATURATE +SUPERSATURATED +SUPERSATURATES +SUPERSATURATING +SUPERSATURATION +SUPERSAUR +SUPERSAURS +SUPERSCALE +SUPERSCHOOL +SUPERSCHOOLS +SUPERSCOUT +SUPERSCOUTS +SUPERSCRIBE +SUPERSCRIBED +SUPERSCRIBES +SUPERSCRIBING +SUPERSCRIPT +SUPERSCRIPTION +SUPERSCRIPTIONS +SUPERSCRIPTS +SUPERSECRECIES +SUPERSECRECY +SUPERSECRET +SUPERSEDE +SUPERSEDEAS +SUPERSEDED +SUPERSEDER +SUPERSEDERS +SUPERSEDES +SUPERSEDING +SUPERSEDURE +SUPERSEDURES +SUPERSELL +SUPERSELLER +SUPERSELLERS +SUPERSELLING +SUPERSELLS +SUPERSENSIBLE +SUPERSENSITIVE +SUPERSENSORY +SUPERSESSION +SUPERSESSIONS +SUPERSEX +SUPERSEXES +SUPERSEXUALITY +SUPERSHARP +SUPERSHOW +SUPERSHOWS +SUPERSINGER +SUPERSINGERS +SUPERSIZE +SUPERSIZED +SUPERSIZES +SUPERSIZING +SUPERSLEUTH +SUPERSLEUTHS +SUPERSLICK +SUPERSMART +SUPERSMOOTH +SUPERSOFT +SUPERSOLD +SUPERSONIC +SUPERSONICALLY +SUPERSONICS +SUPERSPECIAL +SUPERSPECIALIST +SUPERSPECIALS +SUPERSPECTACLE +SUPERSPECTACLES +SUPERSPIES +SUPERSPY +SUPERSTAR +SUPERSTARDOM +SUPERSTARDOMS +SUPERSTARS +SUPERSTATE +SUPERSTATES +SUPERSTATION +SUPERSTATIONS +SUPERSTIMULATE +SUPERSTIMULATED +SUPERSTIMULATES +SUPERSTITION +SUPERSTITIONS +SUPERSTITIOUS +SUPERSTITIOUSLY +SUPERSTOCK +SUPERSTOCKS +SUPERSTORE +SUPERSTORES +SUPERSTRATA +SUPERSTRATUM +SUPERSTRENGTH +SUPERSTRENGTHS +SUPERSTRIKE +SUPERSTRIKES +SUPERSTRING +SUPERSTRINGS +SUPERSTRONG +SUPERSTRUCTURAL +SUPERSTRUCTURE +SUPERSTRUCTURES +SUPERSTUD +SUPERSTUDS +SUPERSUBTLE +SUPERSUBTLETIES +SUPERSUBTLETY +SUPERSURGEON +SUPERSURGEONS +SUPERSWEET +SUPERSYMMETRIC +SUPERSYMMETRIES +SUPERSYMMETRY +SUPERSYSTEM +SUPERSYSTEMS +SUPERTANKER +SUPERTANKERS +SUPERTAX +SUPERTAXES +SUPERTERRIFIC +SUPERTHICK +SUPERTHIN +SUPERTHRILLER +SUPERTHRILLERS +SUPERTIGHT +SUPERTONIC +SUPERTONICS +SUPERVENE +SUPERVENED +SUPERVENES +SUPERVENIENT +SUPERVENING +SUPERVENTION +SUPERVENTIONS +SUPERVIRILE +SUPERVIRTUOSI +SUPERVIRTUOSO +SUPERVIRTUOSOS +SUPERVISE +SUPERVISED +SUPERVISES +SUPERVISING +SUPERVISION +SUPERVISIONS +SUPERVISOR +SUPERVISORS +SUPERVISORY +SUPERWAVE +SUPERWAVES +SUPERWEAPON +SUPERWEAPONS +SUPERWIDE +SUPERWIDES +SUPERWIFE +SUPERWIVES +SUPERWOMAN +SUPERWOMEN +SUPES +SUPINATE +SUPINATED +SUPINATES +SUPINATING +SUPINATION +SUPINATIONS +SUPINATOR +SUPINATORS +SUPINE +SUPINELY +SUPINENESS +SUPINENESSES +SUPINES +SUPPED +SUPPER +SUPPERS +SUPPING +SUPPLANT +SUPPLANTATION +SUPPLANTATIONS +SUPPLANTED +SUPPLANTER +SUPPLANTERS +SUPPLANTING +SUPPLANTS +SUPPLE +SUPPLED +SUPPLEJACK +SUPPLEJACKS +SUPPLELY +SUPPLEMENT +SUPPLEMENTAL +SUPPLEMENTALS +SUPPLEMENTARY +SUPPLEMENTATION +SUPPLEMENTED +SUPPLEMENTER +SUPPLEMENTERS +SUPPLEMENTING +SUPPLEMENTS +SUPPLENESS +SUPPLENESSES +SUPPLER +SUPPLES +SUPPLEST +SUPPLETION +SUPPLETIONS +SUPPLETIVE +SUPPLETORY +SUPPLIANCE +SUPPLIANCES +SUPPLIANT +SUPPLIANTLY +SUPPLIANTS +SUPPLICANT +SUPPLICANTS +SUPPLICATE +SUPPLICATED +SUPPLICATES +SUPPLICATING +SUPPLICATION +SUPPLICATIONS +SUPPLICATORY +SUPPLIED +SUPPLIER +SUPPLIERS +SUPPLIES +SUPPLING +SUPPLY +SUPPLYING +SUPPORT +SUPPORTABILITY +SUPPORTABLE +SUPPORTED +SUPPORTER +SUPPORTERS +SUPPORTING +SUPPORTIVE +SUPPORTIVENESS +SUPPORTS +SUPPOSABLE +SUPPOSABLY +SUPPOSAL +SUPPOSALS +SUPPOSE +SUPPOSED +SUPPOSEDLY +SUPPOSER +SUPPOSERS +SUPPOSES +SUPPOSING +SUPPOSITION +SUPPOSITIONAL +SUPPOSITIONS +SUPPOSITIOUS +SUPPOSITITIOUS +SUPPOSITORIES +SUPPOSITORY +SUPPRESS +SUPPRESSANT +SUPPRESSANTS +SUPPRESSED +SUPPRESSES +SUPPRESSIBILITY +SUPPRESSIBLE +SUPPRESSING +SUPPRESSION +SUPPRESSIONS +SUPPRESSIVE +SUPPRESSIVENESS +SUPPRESSOR +SUPPRESSORS +SUPPURATE +SUPPURATED +SUPPURATES +SUPPURATING +SUPPURATION +SUPPURATIONS +SUPPURATIVE +SUPRA +SUPRALIMINAL +SUPRAMOLECULAR +SUPRANATIONAL +SUPRAOPTIC +SUPRAORBITAL +SUPRARATIONAL +SUPRARENAL +SUPRARENALS +SUPRASEGMENTAL +SUPRAVITAL +SUPRAVITALLY +SUPREMACIES +SUPREMACIST +SUPREMACISTS +SUPREMACY +SUPREMATISM +SUPREMATISMS +SUPREMATIST +SUPREMATISTS +SUPREME +SUPREMELY +SUPREMENESS +SUPREMENESSES +SUPREMER +SUPREMES +SUPREMEST +SUPREMO +SUPREMOS +SUPS +SUQ +SUQS +SURA +SURAH +SURAHS +SURAL +SURAS +SURBASE +SURBASED +SURBASES +SURCEASE +SURCEASED +SURCEASES +SURCEASING +SURCHARGE +SURCHARGED +SURCHARGES +SURCHARGING +SURCINGLE +SURCINGLED +SURCINGLES +SURCINGLING +SURCOAT +SURCOATS +SURCULOSE +SURD +SURDS +SURE +SUREFIRE +SUREFOOTED +SUREFOOTEDLY +SUREFOOTEDNESS +SURELY +SURENESS +SURENESSES +SURER +SUREST +SURETIES +SURETY +SURETYSHIP +SURETYSHIPS +SURF +SURFABLE +SURFACE +SURFACED +SURFACER +SURFACERS +SURFACES +SURFACING +SURFACINGS +SURFACTANT +SURFACTANTS +SURFBIRD +SURFBIRDS +SURFBOARD +SURFBOARDED +SURFBOARDER +SURFBOARDERS +SURFBOARDING +SURFBOARDS +SURFBOAT +SURFBOATS +SURFED +SURFEIT +SURFEITED +SURFEITER +SURFEITERS +SURFEITING +SURFEITS +SURFER +SURFERS +SURFFISH +SURFFISHES +SURFICIAL +SURFIER +SURFIEST +SURFING +SURFINGS +SURFLIKE +SURFMAN +SURFMEN +SURFPERCH +SURFPERCHES +SURFS +SURFSIDE +SURFY +SURGE +SURGED +SURGEON +SURGEONFISH +SURGEONFISHES +SURGEONS +SURGER +SURGERIES +SURGERS +SURGERY +SURGES +SURGICAL +SURGICALLY +SURGING +SURGY +SURICATE +SURICATES +SURIMI +SURIMIS +SURJECTION +SURJECTIONS +SURJECTIVE +SURLIER +SURLIEST +SURLILY +SURLINESS +SURLINESSES +SURLY +SURMISE +SURMISED +SURMISER +SURMISERS +SURMISES +SURMISING +SURMOUNT +SURMOUNTABLE +SURMOUNTED +SURMOUNTING +SURMOUNTS +SURMULLET +SURMULLETS +SURNAME +SURNAMED +SURNAMER +SURNAMERS +SURNAMES +SURNAMING +SURPASS +SURPASSABLE +SURPASSED +SURPASSER +SURPASSERS +SURPASSES +SURPASSING +SURPASSINGLY +SURPLICE +SURPLICED +SURPLICES +SURPLUS +SURPLUSAGE +SURPLUSAGES +SURPLUSED +SURPLUSES +SURPLUSING +SURPLUSSED +SURPLUSSES +SURPLUSSING +SURPRINT +SURPRINTED +SURPRINTING +SURPRINTS +SURPRISAL +SURPRISALS +SURPRISE +SURPRISED +SURPRISER +SURPRISERS +SURPRISES +SURPRISING +SURPRISINGLY +SURPRIZE +SURPRIZED +SURPRIZES +SURPRIZING +SURRA +SURRAS +SURREAL +SURREALISM +SURREALISMS +SURREALIST +SURREALISTIC +SURREALISTS +SURREALLY +SURREBUTTER +SURREBUTTERS +SURREJOINDER +SURREJOINDERS +SURRENDER +SURRENDERED +SURRENDERING +SURRENDERS +SURREPTITIOUS +SURREPTITIOUSLY +SURREY +SURREYS +SURROGACIES +SURROGACY +SURROGATE +SURROGATED +SURROGATES +SURROGATING +SURROUND +SURROUNDED +SURROUNDING +SURROUNDINGS +SURROUNDS +SURROYAL +SURROYALS +SURTAX +SURTAXED +SURTAXES +SURTAXING +SURTITLE +SURTITLES +SURTOUT +SURTOUTS +SURVEIL +SURVEILLANCE +SURVEILLANCES +SURVEILLANT +SURVEILLANTS +SURVEILLED +SURVEILLING +SURVEILS +SURVEY +SURVEYED +SURVEYING +SURVEYINGS +SURVEYOR +SURVEYORS +SURVEYS +SURVIVABILITIES +SURVIVABILITY +SURVIVABLE +SURVIVAL +SURVIVALIST +SURVIVALISTS +SURVIVALS +SURVIVANCE +SURVIVANCES +SURVIVE +SURVIVED +SURVIVER +SURVIVERS +SURVIVES +SURVIVING +SURVIVOR +SURVIVORS +SURVIVORSHIP +SURVIVORSHIPS +SUSCEPTIBILITY +SUSCEPTIBLE +SUSCEPTIBLENESS +SUSCEPTIBLY +SUSCEPTIVE +SUSCEPTIVENESS +SUSCEPTIVITIES +SUSCEPTIVITY +SUSHI +SUSHIS +SUSLIK +SUSLIKS +SUSPECT +SUSPECTED +SUSPECTING +SUSPECTS +SUSPEND +SUSPENDED +SUSPENDER +SUSPENDERED +SUSPENDERS +SUSPENDING +SUSPENDS +SUSPENSE +SUSPENSEFUL +SUSPENSEFULLY +SUSPENSEFULNESS +SUSPENSELESS +SUSPENSER +SUSPENSERS +SUSPENSES +SUSPENSION +SUSPENSIONS +SUSPENSIVE +SUSPENSIVELY +SUSPENSOR +SUSPENSORIES +SUSPENSORS +SUSPENSORY +SUSPICION +SUSPICIONED +SUSPICIONING +SUSPICIONS +SUSPICIOUS +SUSPICIOUSLY +SUSPICIOUSNESS +SUSPIRATION +SUSPIRATIONS +SUSPIRE +SUSPIRED +SUSPIRES +SUSPIRING +SUSS +SUSSED +SUSSES +SUSSING +SUSTAIN +SUSTAINABILITY +SUSTAINABLE +SUSTAINED +SUSTAINEDLY +SUSTAINER +SUSTAINERS +SUSTAINING +SUSTAINS +SUSTENANCE +SUSTENANCES +SUSTENTATION +SUSTENTATIONS +SUSTENTATIVE +SUSURRANT +SUSURRATE +SUSURRATED +SUSURRATES +SUSURRATING +SUSURRATION +SUSURRATIONS +SUSURROUS +SUSURRUS +SUSURRUSES +SUTLER +SUTLERS +SUTRA +SUTRAS +SUTTA +SUTTAS +SUTTEE +SUTTEES +SUTURAL +SUTURALLY +SUTURE +SUTURED +SUTURES +SUTURING +SUZERAIN +SUZERAINS +SUZERAINTIES +SUZERAINTY +SVARAJ +SVARAJES +SVEDBERG +SVEDBERGS +SVELTE +SVELTELY +SVELTENESS +SVELTENESSES +SVELTER +SVELTEST +SWAB +SWABBED +SWABBER +SWABBERS +SWABBIE +SWABBIES +SWABBING +SWABBY +SWABS +SWACKED +SWADDLE +SWADDLED +SWADDLES +SWADDLING +SWAG +SWAGE +SWAGED +SWAGER +SWAGERS +SWAGES +SWAGGED +SWAGGER +SWAGGERED +SWAGGERER +SWAGGERERS +SWAGGERING +SWAGGERINGLY +SWAGGERS +SWAGGIE +SWAGGIES +SWAGGING +SWAGING +SWAGMAN +SWAGMEN +SWAGS +SWAIL +SWAILS +SWAIN +SWAINISH +SWAINISHNESS +SWAINISHNESSES +SWAINS +SWALE +SWALES +SWALLOW +SWALLOWABLE +SWALLOWED +SWALLOWER +SWALLOWERS +SWALLOWING +SWALLOWS +SWALLOWTAIL +SWALLOWTAILS +SWAM +SWAMI +SWAMIES +SWAMIS +SWAMP +SWAMPED +SWAMPER +SWAMPERS +SWAMPIER +SWAMPIEST +SWAMPINESS +SWAMPINESSES +SWAMPING +SWAMPISH +SWAMPLAND +SWAMPLANDS +SWAMPS +SWAMPY +SWAMY +SWAN +SWANG +SWANHERD +SWANHERDS +SWANK +SWANKED +SWANKER +SWANKEST +SWANKIER +SWANKIEST +SWANKILY +SWANKINESS +SWANKINESSES +SWANKING +SWANKS +SWANKY +SWANLIKE +SWANNED +SWANNERIES +SWANNERY +SWANNING +SWANNY +SWANPAN +SWANPANS +SWANS +SWANSDOWN +SWANSDOWNS +SWANSKIN +SWANSKINS +SWAP +SWAPPED +SWAPPER +SWAPPERS +SWAPPING +SWAPS +SWARAJ +SWARAJES +SWARAJISM +SWARAJISMS +SWARAJIST +SWARAJISTS +SWARD +SWARDED +SWARDING +SWARDS +SWARE +SWARF +SWARFS +SWARM +SWARMED +SWARMER +SWARMERS +SWARMING +SWARMS +SWART +SWARTH +SWARTHIER +SWARTHIEST +SWARTHILY +SWARTHINESS +SWARTHINESSES +SWARTHS +SWARTHY +SWARTNESS +SWARTNESSES +SWARTY +SWASH +SWASHBUCKLE +SWASHBUCKLED +SWASHBUCKLER +SWASHBUCKLERS +SWASHBUCKLES +SWASHBUCKLING +SWASHED +SWASHER +SWASHERS +SWASHES +SWASHING +SWASTICA +SWASTICAS +SWASTIKA +SWASTIKAS +SWAT +SWATCH +SWATCHES +SWATH +SWATHE +SWATHED +SWATHER +SWATHERS +SWATHES +SWATHING +SWATHS +SWATS +SWATTED +SWATTER +SWATTERS +SWATTING +SWAY +SWAYABLE +SWAYBACK +SWAYBACKED +SWAYBACKS +SWAYED +SWAYER +SWAYERS +SWAYFUL +SWAYING +SWAYS +SWEAR +SWEARER +SWEARERS +SWEARING +SWEARS +SWEARWORD +SWEARWORDS +SWEAT +SWEATBAND +SWEATBANDS +SWEATBOX +SWEATBOXES +SWEATED +SWEATER +SWEATERDRESS +SWEATERDRESSES +SWEATERS +SWEATIER +SWEATIEST +SWEATILY +SWEATINESS +SWEATINESSES +SWEATING +SWEATPANTS +SWEATS +SWEATSHIRT +SWEATSHIRTS +SWEATSHOP +SWEATSHOPS +SWEATSUIT +SWEATSUITS +SWEATY +SWEDE +SWEDES +SWEENEY +SWEENEYS +SWEENIES +SWEENY +SWEEP +SWEEPBACK +SWEEPBACKS +SWEEPER +SWEEPERS +SWEEPIER +SWEEPIEST +SWEEPING +SWEEPINGLY +SWEEPINGNESS +SWEEPINGNESSES +SWEEPINGS +SWEEPS +SWEEPSTAKES +SWEEPY +SWEER +SWEET +SWEETBREAD +SWEETBREADS +SWEETBRIAR +SWEETBRIARS +SWEETBRIER +SWEETBRIERS +SWEETEN +SWEETENED +SWEETENER +SWEETENERS +SWEETENING +SWEETENINGS +SWEETENS +SWEETER +SWEETEST +SWEETHEART +SWEETHEARTS +SWEETIE +SWEETIES +SWEETING +SWEETINGS +SWEETISH +SWEETISHLY +SWEETLY +SWEETMEAT +SWEETMEATS +SWEETNESS +SWEETNESSES +SWEETS +SWEETSHOP +SWEETSHOPS +SWEETSOP +SWEETSOPS +SWELL +SWELLED +SWELLER +SWELLEST +SWELLFISH +SWELLFISHES +SWELLHEAD +SWELLHEADED +SWELLHEADEDNESS +SWELLHEADS +SWELLING +SWELLINGS +SWELLS +SWELTER +SWELTERED +SWELTERING +SWELTERINGLY +SWELTERS +SWELTRIER +SWELTRIEST +SWELTRY +SWEPT +SWEPTBACK +SWEPTWING +SWEPTWINGS +SWERVE +SWERVED +SWERVER +SWERVERS +SWERVES +SWERVING +SWEVEN +SWEVENS +SWIDDEN +SWIDDENS +SWIFT +SWIFTER +SWIFTERS +SWIFTEST +SWIFTLET +SWIFTLETS +SWIFTLY +SWIFTNESS +SWIFTNESSES +SWIFTS +SWIG +SWIGGED +SWIGGER +SWIGGERS +SWIGGING +SWIGS +SWILL +SWILLED +SWILLER +SWILLERS +SWILLING +SWILLS +SWIM +SWIMMABLE +SWIMMER +SWIMMERET +SWIMMERETS +SWIMMERS +SWIMMIER +SWIMMIEST +SWIMMILY +SWIMMING +SWIMMINGLY +SWIMMINGS +SWIMMY +SWIMS +SWIMSUIT +SWIMSUITS +SWIMWEAR +SWINDLE +SWINDLED +SWINDLER +SWINDLERS +SWINDLES +SWINDLING +SWINE +SWINEHERD +SWINEHERDS +SWINEPOX +SWINEPOXES +SWING +SWINGBY +SWINGBYS +SWINGE +SWINGED +SWINGEING +SWINGER +SWINGERS +SWINGES +SWINGIER +SWINGIEST +SWINGING +SWINGINGEST +SWINGINGLY +SWINGINGS +SWINGLE +SWINGLED +SWINGLES +SWINGLETREE +SWINGLETREES +SWINGLING +SWINGMAN +SWINGMEN +SWINGS +SWINGY +SWINISH +SWINISHLY +SWINISHNESS +SWINISHNESSES +SWINK +SWINKED +SWINKING +SWINKS +SWINNEY +SWINNEYS +SWIPE +SWIPED +SWIPES +SWIPING +SWIPLE +SWIPLES +SWIPPLE +SWIPPLES +SWIRL +SWIRLED +SWIRLIER +SWIRLIEST +SWIRLING +SWIRLINGLY +SWIRLS +SWIRLY +SWISH +SWISHED +SWISHER +SWISHERS +SWISHES +SWISHIER +SWISHIEST +SWISHING +SWISHINGLY +SWISHY +SWISS +SWISSES +SWITCH +SWITCHABLE +SWITCHBACK +SWITCHBACKED +SWITCHBACKING +SWITCHBACKS +SWITCHBLADE +SWITCHBLADES +SWITCHBOARD +SWITCHBOARDS +SWITCHED +SWITCHER +SWITCHEROO +SWITCHEROOS +SWITCHERS +SWITCHES +SWITCHGRASS +SWITCHGRASSES +SWITCHING +SWITCHMAN +SWITCHMEN +SWITCHYARD +SWITCHYARDS +SWITH +SWITHE +SWITHER +SWITHERED +SWITHERING +SWITHERS +SWITHLY +SWIVE +SWIVED +SWIVEL +SWIVELED +SWIVELING +SWIVELLED +SWIVELLING +SWIVELS +SWIVES +SWIVET +SWIVETS +SWIVING +SWIZZLE +SWIZZLED +SWIZZLER +SWIZZLERS +SWIZZLES +SWIZZLING +SWOB +SWOBBED +SWOBBER +SWOBBERS +SWOBBING +SWOBS +SWOLLEN +SWOON +SWOONED +SWOONER +SWOONERS +SWOONIER +SWOONIEST +SWOONING +SWOONINGLY +SWOONS +SWOONY +SWOOP +SWOOPED +SWOOPER +SWOOPERS +SWOOPIER +SWOOPIEST +SWOOPING +SWOOPS +SWOOPSTAKE +SWOOPY +SWOOSH +SWOOSHED +SWOOSHES +SWOOSHING +SWOP +SWOPPED +SWOPPING +SWOPS +SWORD +SWORDFISH +SWORDFISHES +SWORDLIKE +SWORDMAN +SWORDMEN +SWORDPLAY +SWORDPLAYER +SWORDPLAYERS +SWORDPLAYS +SWORDS +SWORDSMAN +SWORDSMANSHIP +SWORDSMANSHIPS +SWORDSMEN +SWORDTAIL +SWORDTAILS +SWORE +SWORN +SWOT +SWOTS +SWOTTED +SWOTTER +SWOTTERS +SWOTTING +SWOUN +SWOUND +SWOUNDED +SWOUNDING +SWOUNDS +SWOUNED +SWOUNING +SWOUNS +SWUM +SWUNG +SYBARITE +SYBARITES +SYBARITIC +SYBARITICALLY +SYBARITISM +SYBARITISMS +SYBO +SYBOES +SYCAMINE +SYCAMINES +SYCAMORE +SYCAMORES +SYCE +SYCEE +SYCEES +SYCES +SYCOMORE +SYCOMORES +SYCONIA +SYCONIUM +SYCOPHANCIES +SYCOPHANCY +SYCOPHANT +SYCOPHANTIC +SYCOPHANTICALLY +SYCOPHANTISH +SYCOPHANTISHLY +SYCOPHANTISM +SYCOPHANTISMS +SYCOPHANTLY +SYCOPHANTS +SYCOSES +SYCOSIS +SYENITE +SYENITES +SYENITIC +SYKE +SYKES +SYLI +SYLIS +SYLLABARIES +SYLLABARY +SYLLABI +SYLLABIC +SYLLABICALLY +SYLLABICATE +SYLLABICATED +SYLLABICATES +SYLLABICATING +SYLLABICATION +SYLLABICATIONS +SYLLABICITIES +SYLLABICITY +SYLLABICS +SYLLABIFICATION +SYLLABIFIED +SYLLABIFIES +SYLLABIFY +SYLLABIFYING +SYLLABISM +SYLLABISMS +SYLLABIZE +SYLLABIZED +SYLLABIZES +SYLLABIZING +SYLLABLE +SYLLABLED +SYLLABLES +SYLLABLING +SYLLABUB +SYLLABUBS +SYLLABUS +SYLLABUSES +SYLLEPSES +SYLLEPSIS +SYLLEPTIC +SYLLOGISM +SYLLOGISMS +SYLLOGIST +SYLLOGISTIC +SYLLOGISTICALLY +SYLLOGISTS +SYLLOGIZE +SYLLOGIZED +SYLLOGIZES +SYLLOGIZING +SYLPH +SYLPHIC +SYLPHID +SYLPHIDS +SYLPHISH +SYLPHLIKE +SYLPHS +SYLPHY +SYLVA +SYLVAE +SYLVAN +SYLVANITE +SYLVANITES +SYLVANS +SYLVAS +SYLVATIC +SYLVICULTURE +SYLVICULTURES +SYLVIN +SYLVINE +SYLVINES +SYLVINITE +SYLVINITES +SYLVINS +SYLVITE +SYLVITES +SYMBION +SYMBIONS +SYMBIONT +SYMBIONTS +SYMBIOSES +SYMBIOSIS +SYMBIOT +SYMBIOTE +SYMBIOTES +SYMBIOTIC +SYMBIOTICALLY +SYMBIOTS +SYMBOL +SYMBOLED +SYMBOLIC +SYMBOLICAL +SYMBOLICALLY +SYMBOLING +SYMBOLISE +SYMBOLISED +SYMBOLISES +SYMBOLISING +SYMBOLISM +SYMBOLISMS +SYMBOLIST +SYMBOLISTIC +SYMBOLISTS +SYMBOLIZATION +SYMBOLIZATIONS +SYMBOLIZE +SYMBOLIZED +SYMBOLIZER +SYMBOLIZERS +SYMBOLIZES +SYMBOLIZING +SYMBOLLED +SYMBOLLING +SYMBOLOGIES +SYMBOLOGY +SYMBOLS +SYMMETALLISM +SYMMETALLISMS +SYMMETRIC +SYMMETRICAL +SYMMETRICALLY +SYMMETRICALNESS +SYMMETRIES +SYMMETRIZATION +SYMMETRIZATIONS +SYMMETRIZE +SYMMETRIZED +SYMMETRIZES +SYMMETRIZING +SYMMETRY +SYMPATHECTOMIES +SYMPATHECTOMY +SYMPATHETIC +SYMPATHETICALLY +SYMPATHETICS +SYMPATHIES +SYMPATHIN +SYMPATHINS +SYMPATHISE +SYMPATHISED +SYMPATHISES +SYMPATHISING +SYMPATHIZE +SYMPATHIZED +SYMPATHIZER +SYMPATHIZERS +SYMPATHIZES +SYMPATHIZING +SYMPATHOLYTIC +SYMPATHOLYTICS +SYMPATHOMIMETIC +SYMPATHY +SYMPATICO +SYMPATRIC +SYMPATRICALLY +SYMPATRIES +SYMPATRY +SYMPETALIES +SYMPETALOUS +SYMPETALY +SYMPHONIC +SYMPHONICALLY +SYMPHONIES +SYMPHONIOUS +SYMPHONIOUSLY +SYMPHONIST +SYMPHONISTS +SYMPHONY +SYMPHYSEAL +SYMPHYSES +SYMPHYSIAL +SYMPHYSIS +SYMPODIA +SYMPODIAL +SYMPODIUM +SYMPOSIA +SYMPOSIAC +SYMPOSIACS +SYMPOSIARCH +SYMPOSIARCHS +SYMPOSIAST +SYMPOSIASTS +SYMPOSIUM +SYMPOSIUMS +SYMPTOM +SYMPTOMATIC +SYMPTOMATICALLY +SYMPTOMATOLOGIC +SYMPTOMATOLOGY +SYMPTOMLESS +SYMPTOMS +SYN +SYNAERESES +SYNAERESIS +SYNAESTHESES +SYNAESTHESIA +SYNAESTHESIAS +SYNAESTHESIS +SYNAGOG +SYNAGOGAL +SYNAGOGS +SYNAGOGUE +SYNAGOGUES +SYNALEPHA +SYNALEPHAS +SYNALOEPHA +SYNALOEPHAS +SYNANON +SYNANONS +SYNAPSE +SYNAPSED +SYNAPSES +SYNAPSID +SYNAPSIDS +SYNAPSING +SYNAPSIS +SYNAPTIC +SYNAPTICALLY +SYNAPTOSOMAL +SYNAPTOSOME +SYNAPTOSOMES +SYNARTHRODIAL +SYNARTHROSES +SYNARTHROSIS +SYNC +SYNCARP +SYNCARPIES +SYNCARPOUS +SYNCARPS +SYNCARPY +SYNCED +SYNCH +SYNCHED +SYNCHING +SYNCHRO +SYNCHROMESH +SYNCHROMESHES +SYNCHRONAL +SYNCHRONEITIES +SYNCHRONEITY +SYNCHRONIC +SYNCHRONICAL +SYNCHRONICALLY +SYNCHRONICITIES +SYNCHRONICITY +SYNCHRONIES +SYNCHRONISATION +SYNCHRONISE +SYNCHRONISED +SYNCHRONISES +SYNCHRONISING +SYNCHRONISM +SYNCHRONISMS +SYNCHRONISTIC +SYNCHRONIZATION +SYNCHRONIZE +SYNCHRONIZED +SYNCHRONIZER +SYNCHRONIZERS +SYNCHRONIZES +SYNCHRONIZING +SYNCHRONOUS +SYNCHRONOUSLY +SYNCHRONOUSNESS +SYNCHRONY +SYNCHROS +SYNCHROSCOPE +SYNCHROSCOPES +SYNCHROTRON +SYNCHROTRONS +SYNCHS +SYNCING +SYNCLINAL +SYNCLINE +SYNCLINES +SYNCOM +SYNCOMS +SYNCOPAL +SYNCOPATE +SYNCOPATED +SYNCOPATES +SYNCOPATING +SYNCOPATION +SYNCOPATIONS +SYNCOPATIVE +SYNCOPATOR +SYNCOPATORS +SYNCOPE +SYNCOPES +SYNCOPIC +SYNCRETIC +SYNCRETISE +SYNCRETISED +SYNCRETISES +SYNCRETISING +SYNCRETISM +SYNCRETISMS +SYNCRETIST +SYNCRETISTIC +SYNCRETISTS +SYNCRETIZE +SYNCRETIZED +SYNCRETIZES +SYNCRETIZING +SYNCS +SYNCYTIA +SYNCYTIAL +SYNCYTIUM +SYNDACTYL +SYNDACTYLIES +SYNDACTYLISM +SYNDACTYLISMS +SYNDACTYLS +SYNDACTYLY +SYNDESES +SYNDESIS +SYNDESISES +SYNDESMOSES +SYNDESMOSIS +SYNDET +SYNDETIC +SYNDETICALLY +SYNDETS +SYNDIC +SYNDICAL +SYNDICALISM +SYNDICALISMS +SYNDICALIST +SYNDICALISTS +SYNDICATE +SYNDICATED +SYNDICATES +SYNDICATING +SYNDICATION +SYNDICATIONS +SYNDICATOR +SYNDICATORS +SYNDICS +SYNDROME +SYNDROMES +SYNDROMIC +SYNE +SYNECDOCHE +SYNECDOCHES +SYNECDOCHIC +SYNECDOCHICAL +SYNECDOCHICALLY +SYNECOLOGICAL +SYNECOLOGIES +SYNECOLOGY +SYNECTIC +SYNERESES +SYNERESIS +SYNERGETIC +SYNERGIA +SYNERGIAS +SYNERGIC +SYNERGICALLY +SYNERGID +SYNERGIDS +SYNERGIES +SYNERGISM +SYNERGISMS +SYNERGIST +SYNERGISTIC +SYNERGISTICALLY +SYNERGISTS +SYNERGY +SYNESIS +SYNESISES +SYNESTHESIA +SYNESTHESIAS +SYNESTHETIC +SYNFUEL +SYNFUELS +SYNGAMIC +SYNGAMIES +SYNGAMOUS +SYNGAMY +SYNGAS +SYNGASES +SYNGASSES +SYNGENEIC +SYNGENIC +SYNIZESES +SYNIZESIS +SYNKARYA +SYNKARYON +SYNKARYONS +SYNOD +SYNODAL +SYNODIC +SYNODICAL +SYNODS +SYNOICOUS +SYNONYM +SYNONYME +SYNONYMES +SYNONYMIC +SYNONYMICAL +SYNONYMIES +SYNONYMIST +SYNONYMISTS +SYNONYMITIES +SYNONYMITY +SYNONYMIZE +SYNONYMIZED +SYNONYMIZES +SYNONYMIZING +SYNONYMOUS +SYNONYMOUSLY +SYNONYMS +SYNONYMY +SYNOPSES +SYNOPSIS +SYNOPSIZE +SYNOPSIZED +SYNOPSIZES +SYNOPSIZING +SYNOPTIC +SYNOPTICAL +SYNOPTICALLY +SYNOSTOSES +SYNOSTOSIS +SYNOVIA +SYNOVIAL +SYNOVIAS +SYNOVITIS +SYNOVITISES +SYNTACTIC +SYNTACTICAL +SYNTACTICALLY +SYNTACTICS +SYNTAGM +SYNTAGMA +SYNTAGMAS +SYNTAGMATA +SYNTAGMATIC +SYNTAGMS +SYNTAX +SYNTAXES +SYNTH +SYNTHESES +SYNTHESIS +SYNTHESIST +SYNTHESISTS +SYNTHESIZE +SYNTHESIZED +SYNTHESIZER +SYNTHESIZERS +SYNTHESIZES +SYNTHESIZING +SYNTHETASE +SYNTHETASES +SYNTHETIC +SYNTHETICALLY +SYNTHETICS +SYNTHPOP +SYNTHPOPS +SYNTHS +SYNTONIC +SYNTONIES +SYNTONY +SYNURA +SYNURAE +SYPH +SYPHER +SYPHERED +SYPHERING +SYPHERS +SYPHILIS +SYPHILISES +SYPHILITIC +SYPHILITICS +SYPHILOID +SYPHON +SYPHONED +SYPHONING +SYPHONS +SYPHS +SYREN +SYRENS +SYRETTE +SYRETTES +SYRINGA +SYRINGAS +SYRINGE +SYRINGEAL +SYRINGED +SYRINGES +SYRINGING +SYRINGOMYELIA +SYRINGOMYELIAS +SYRINGOMYELIC +SYRINX +SYRINXES +SYRPHIAN +SYRPHIANS +SYRPHID +SYRPHIDS +SYRUP +SYRUPED +SYRUPIER +SYRUPIEST +SYRUPING +SYRUPLIKE +SYRUPS +SYRUPY +SYSADMIN +SYSADMINS +SYSOP +SYSOPS +SYSTALTIC +SYSTEM +SYSTEMATIC +SYSTEMATICALLY +SYSTEMATICNESS +SYSTEMATICS +SYSTEMATISE +SYSTEMATISED +SYSTEMATISES +SYSTEMATISING +SYSTEMATISM +SYSTEMATISMS +SYSTEMATIST +SYSTEMATISTS +SYSTEMATIZATION +SYSTEMATIZE +SYSTEMATIZED +SYSTEMATIZER +SYSTEMATIZERS +SYSTEMATIZES +SYSTEMATIZING +SYSTEMIC +SYSTEMICALLY +SYSTEMICS +SYSTEMIZATION +SYSTEMIZATIONS +SYSTEMIZE +SYSTEMIZED +SYSTEMIZES +SYSTEMIZING +SYSTEMLESS +SYSTEMS +SYSTOLE +SYSTOLES +SYSTOLIC +SYZYGAL +SYZYGETIC +SYZYGIAL +SYZYGIES +SYZYGY +TA +TAB +TABANID +TABANIDS +TABARD +TABARDED +TABARDS +TABARET +TABARETS +TABBED +TABBIED +TABBIES +TABBING +TABBIS +TABBISES +TABBOULEH +TABBOULEHS +TABBY +TABBYING +TABER +TABERED +TABERING +TABERNACLE +TABERNACLED +TABERNACLES +TABERNACLING +TABERNACULAR +TABERS +TABES +TABETIC +TABETICS +TABID +TABLA +TABLAS +TABLATURE +TABLATURES +TABLE +TABLEAU +TABLEAUS +TABLEAUX +TABLECLOTH +TABLECLOTHS +TABLED +TABLEFUL +TABLEFULS +TABLELAND +TABLELANDS +TABLELESS +TABLEMATE +TABLEMATES +TABLES +TABLESFUL +TABLESPOON +TABLESPOONFUL +TABLESPOONFULS +TABLESPOONS +TABLESPOONSFUL +TABLET +TABLETED +TABLETING +TABLETOP +TABLETOPS +TABLETS +TABLETTED +TABLETTING +TABLEWARE +TABLEWARES +TABLING +TABLOID +TABLOIDS +TABOO +TABOOED +TABOOING +TABOOLEY +TABOOLEYS +TABOOS +TABOR +TABORED +TABORER +TABORERS +TABORET +TABORETS +TABORIN +TABORINE +TABORINES +TABORING +TABORINS +TABORS +TABOULEH +TABOULEHS +TABOULI +TABOULIS +TABOUR +TABOURED +TABOURER +TABOURERS +TABOURET +TABOURETS +TABOURING +TABOURS +TABS +TABU +TABUED +TABUING +TABULABLE +TABULAR +TABULARLY +TABULATE +TABULATED +TABULATES +TABULATING +TABULATION +TABULATIONS +TABULATOR +TABULATORS +TABULI +TABULIS +TABUN +TABUNS +TABUS +TACAMAHAC +TACAMAHACS +TACE +TACES +TACET +TACH +TACHE +TACHES +TACHINID +TACHINIDS +TACHISM +TACHISME +TACHISMES +TACHISMS +TACHIST +TACHISTE +TACHISTES +TACHISTOSCOPE +TACHISTOSCOPES +TACHISTOSCOPIC +TACHISTS +TACHOMETER +TACHOMETERS +TACHS +TACHYARRHYTHMIA +TACHYCARDIA +TACHYCARDIAS +TACHYLITE +TACHYLITES +TACHYLYTE +TACHYLYTES +TACHYON +TACHYONIC +TACHYONS +TACIT +TACITLY +TACITNESS +TACITNESSES +TACITURN +TACITURNITIES +TACITURNITY +TACK +TACKBOARD +TACKBOARDS +TACKED +TACKER +TACKERS +TACKET +TACKETS +TACKEY +TACKIER +TACKIEST +TACKIFIED +TACKIFIER +TACKIFIERS +TACKIFIES +TACKIFY +TACKIFYING +TACKILY +TACKINESS +TACKINESSES +TACKING +TACKLE +TACKLED +TACKLER +TACKLERS +TACKLES +TACKLESS +TACKLING +TACKLINGS +TACKS +TACKY +TACNODE +TACNODES +TACO +TACONITE +TACONITES +TACOS +TACRINE +TACRINES +TACT +TACTFUL +TACTFULLY +TACTFULNESS +TACTFULNESSES +TACTIC +TACTICAL +TACTICALLY +TACTICIAN +TACTICIANS +TACTICS +TACTILE +TACTILELY +TACTILITIES +TACTILITY +TACTION +TACTIONS +TACTLESS +TACTLESSLY +TACTLESSNESS +TACTLESSNESSES +TACTS +TACTUAL +TACTUALLY +TAD +TADPOLE +TADPOLES +TADS +TAE +TAEKWONDO +TAEKWONDOS +TAEL +TAELS +TAENIA +TAENIAE +TAENIAS +TAENIASES +TAENIASIS +TAFFAREL +TAFFARELS +TAFFEREL +TAFFERELS +TAFFETA +TAFFETAS +TAFFETIZED +TAFFIA +TAFFIAS +TAFFIES +TAFFRAIL +TAFFRAILS +TAFFY +TAFIA +TAFIAS +TAG +TAGALONG +TAGALONGS +TAGBOARD +TAGBOARDS +TAGGANT +TAGGANTS +TAGGED +TAGGER +TAGGERS +TAGGING +TAGLIATELLE +TAGLIATELLES +TAGLIKE +TAGLINE +TAGLINES +TAGMEME +TAGMEMES +TAGMEMIC +TAGMEMICS +TAGRAG +TAGRAGS +TAGS +TAHINI +TAHINIS +TAHR +TAHRS +TAHSIL +TAHSILDAR +TAHSILDARS +TAHSILS +TAIGA +TAIGAS +TAIGLACH +TAIL +TAILBACK +TAILBACKS +TAILBOARD +TAILBOARDS +TAILBONE +TAILBONES +TAILCOAT +TAILCOATED +TAILCOATS +TAILED +TAILENDER +TAILENDERS +TAILER +TAILERS +TAILFAN +TAILFANS +TAILFIN +TAILFINS +TAILGATE +TAILGATED +TAILGATER +TAILGATERS +TAILGATES +TAILGATING +TAILING +TAILINGS +TAILLAMP +TAILLAMPS +TAILLE +TAILLES +TAILLESS +TAILLEUR +TAILLEURS +TAILLIGHT +TAILLIGHTS +TAILLIKE +TAILOR +TAILORBIRD +TAILORBIRDS +TAILORED +TAILORING +TAILORINGS +TAILORS +TAILPIECE +TAILPIECES +TAILPIPE +TAILPIPES +TAILPLANE +TAILPLANES +TAILRACE +TAILRACES +TAILS +TAILSKID +TAILSKIDS +TAILSLIDE +TAILSLIDES +TAILSPIN +TAILSPINNED +TAILSPINNING +TAILSPINS +TAILSTOCK +TAILSTOCKS +TAILWATER +TAILWATERS +TAILWIND +TAILWINDS +TAIN +TAINS +TAINT +TAINTED +TAINTING +TAINTLESS +TAINTS +TAIPAN +TAIPANS +TAJ +TAJES +TAKA +TAKABLE +TAKAHE +TAKAHES +TAKAS +TAKE +TAKEABLE +TAKEAWAY +TAKEAWAYS +TAKEDOWN +TAKEDOWNS +TAKEN +TAKEOFF +TAKEOFFS +TAKEOUT +TAKEOUTS +TAKEOVER +TAKEOVERS +TAKER +TAKERS +TAKES +TAKEUP +TAKEUPS +TAKIN +TAKING +TAKINGLY +TAKINGS +TAKINS +TALA +TALAPOIN +TALAPOINS +TALAR +TALARIA +TALARS +TALAS +TALC +TALCED +TALCING +TALCKED +TALCKING +TALCKY +TALCOSE +TALCOUS +TALCS +TALCUM +TALCUMS +TALE +TALEBEARER +TALEBEARERS +TALEBEARING +TALEBEARINGS +TALEGGIO +TALEGGIOS +TALENT +TALENTED +TALENTLESS +TALENTS +TALER +TALERS +TALES +TALESMAN +TALESMEN +TALEYSIM +TALI +TALION +TALIONS +TALIPED +TALIPEDS +TALIPES +TALIPOT +TALIPOTS +TALISMAN +TALISMANIC +TALISMANICALLY +TALISMANS +TALK +TALKABLE +TALKATHON +TALKATHONS +TALKATIVE +TALKATIVELY +TALKATIVENESS +TALKATIVENESSES +TALKBACK +TALKBACKS +TALKED +TALKER +TALKERS +TALKIE +TALKIER +TALKIES +TALKIEST +TALKINESS +TALKINESSES +TALKING +TALKINGS +TALKS +TALKY +TALL +TALLAGE +TALLAGED +TALLAGES +TALLAGING +TALLAISIM +TALLBOY +TALLBOYS +TALLER +TALLEST +TALLGRASS +TALLGRASSES +TALLIED +TALLIER +TALLIERS +TALLIES +TALLIS +TALLISES +TALLISH +TALLISIM +TALLIT +TALLITH +TALLITHES +TALLITHIM +TALLITHS +TALLITIM +TALLITOTH +TALLITS +TALLNESS +TALLNESSES +TALLOL +TALLOLS +TALLOW +TALLOWED +TALLOWING +TALLOWS +TALLOWY +TALLS +TALLY +TALLYHO +TALLYHOED +TALLYHOING +TALLYHOS +TALLYING +TALLYMAN +TALLYMEN +TALMUDIC +TALMUDISM +TALMUDISMS +TALON +TALONED +TALONS +TALOOKA +TALOOKAS +TALUK +TALUKA +TALUKAS +TALUKS +TALUS +TALUSES +TAM +TAMABLE +TAMAL +TAMALE +TAMALES +TAMALS +TAMANDU +TAMANDUA +TAMANDUAS +TAMANDUS +TAMARACK +TAMARACKS +TAMARAO +TAMARAOS +TAMARAU +TAMARAUS +TAMARI +TAMARILLO +TAMARILLOS +TAMARIN +TAMARIND +TAMARINDS +TAMARINS +TAMARIS +TAMARISK +TAMARISKS +TAMASHA +TAMASHAS +TAMBAC +TAMBACS +TAMBAK +TAMBAKS +TAMBALA +TAMBALAS +TAMBOUR +TAMBOURA +TAMBOURAS +TAMBOURED +TAMBOURER +TAMBOURERS +TAMBOURIN +TAMBOURINE +TAMBOURINES +TAMBOURING +TAMBOURINS +TAMBOURS +TAMBUR +TAMBURA +TAMBURAS +TAMBURS +TAME +TAMEABLE +TAMED +TAMEIN +TAMEINS +TAMELESS +TAMELY +TAMENESS +TAMENESSES +TAMER +TAMERS +TAMES +TAMEST +TAMING +TAMIS +TAMISES +TAMMIE +TAMMIES +TAMMY +TAMOXIFEN +TAMOXIFENS +TAMP +TAMPALA +TAMPALAS +TAMPAN +TAMPANS +TAMPED +TAMPER +TAMPERED +TAMPERER +TAMPERERS +TAMPERING +TAMPERPROOF +TAMPERS +TAMPING +TAMPION +TAMPIONS +TAMPON +TAMPONED +TAMPONING +TAMPONS +TAMPS +TAMS +TAN +TANAGER +TANAGERS +TANBARK +TANBARKS +TANDEM +TANDEMS +TANDOOR +TANDOORI +TANDOORIS +TANDOORS +TANG +TANGA +TANGED +TANGELO +TANGELOS +TANGENCE +TANGENCES +TANGENCIES +TANGENCY +TANGENT +TANGENTAL +TANGENTIAL +TANGENTIALLY +TANGENTS +TANGERINE +TANGERINES +TANGIBILITIES +TANGIBILITY +TANGIBLE +TANGIBLENESS +TANGIBLENESSES +TANGIBLES +TANGIBLY +TANGIER +TANGIEST +TANGINESS +TANGINESSES +TANGING +TANGLE +TANGLED +TANGLEMENT +TANGLEMENTS +TANGLER +TANGLERS +TANGLES +TANGLIER +TANGLIEST +TANGLING +TANGLY +TANGO +TANGOED +TANGOING +TANGOLIKE +TANGOS +TANGRAM +TANGRAMS +TANGS +TANGY +TANIST +TANISTRIES +TANISTRY +TANISTS +TANK +TANKA +TANKAGE +TANKAGES +TANKARD +TANKARDS +TANKAS +TANKED +TANKER +TANKERS +TANKFUL +TANKFULS +TANKING +TANKINI +TANKINIS +TANKLESS +TANKLIKE +TANKS +TANKSHIP +TANKSHIPS +TANNABLE +TANNAGE +TANNAGES +TANNATE +TANNATES +TANNED +TANNER +TANNERIES +TANNERS +TANNERY +TANNEST +TANNIC +TANNIN +TANNING +TANNINGS +TANNINS +TANNISH +TANNOY +TANNOYS +TANREC +TANRECS +TANS +TANSIES +TANSY +TANTALATE +TANTALATES +TANTALIC +TANTALISE +TANTALISED +TANTALISES +TANTALISING +TANTALITE +TANTALITES +TANTALIZE +TANTALIZED +TANTALIZER +TANTALIZERS +TANTALIZES +TANTALIZING +TANTALIZINGLY +TANTALOUS +TANTALUM +TANTALUMS +TANTALUS +TANTALUSES +TANTAMOUNT +TANTARA +TANTARAS +TANTIVIES +TANTIVY +TANTO +TANTRA +TANTRAS +TANTRIC +TANTRISM +TANTRISMS +TANTRUM +TANTRUMS +TANUKI +TANUKIS +TANYARD +TANYARDS +TANZANITE +TANZANITES +TAO +TAOS +TAP +TAPA +TAPADERA +TAPADERAS +TAPADERO +TAPADEROS +TAPALO +TAPALOS +TAPAS +TAPE +TAPEABLE +TAPED +TAPELESS +TAPELIKE +TAPELINE +TAPELINES +TAPENADE +TAPENADES +TAPER +TAPERED +TAPERER +TAPERERS +TAPERING +TAPERS +TAPERSTICK +TAPERSTICKS +TAPES +TAPESTRIED +TAPESTRIES +TAPESTRY +TAPESTRYING +TAPETA +TAPETAL +TAPETUM +TAPEWORM +TAPEWORMS +TAPHOLE +TAPHOLES +TAPHONOMIC +TAPHONOMIES +TAPHONOMIST +TAPHONOMISTS +TAPHONOMY +TAPHOUSE +TAPHOUSES +TAPING +TAPIOCA +TAPIOCAS +TAPIR +TAPIRS +TAPIS +TAPISES +TAPPABLE +TAPPED +TAPPER +TAPPERS +TAPPET +TAPPETS +TAPPING +TAPPINGS +TAPROOM +TAPROOMS +TAPROOT +TAPROOTS +TAPS +TAPSTER +TAPSTERS +TAQUERIA +TAQUERIAS +TAR +TARADIDDLE +TARADIDDLES +TARAMA +TARAMAS +TARANTAS +TARANTASES +TARANTELLA +TARANTELLAS +TARANTISM +TARANTISMS +TARANTIST +TARANTISTS +TARANTULA +TARANTULAE +TARANTULAS +TARBOOSH +TARBOOSHES +TARBUSH +TARBUSHES +TARDIER +TARDIES +TARDIEST +TARDIGRADE +TARDIGRADES +TARDILY +TARDINESS +TARDINESSES +TARDIVE +TARDO +TARDY +TARDYON +TARDYONS +TARE +TARED +TARES +TARGE +TARGES +TARGET +TARGETABLE +TARGETED +TARGETING +TARGETS +TARIFF +TARIFFED +TARIFFING +TARIFFS +TARING +TARLATAN +TARLATANS +TARLETAN +TARLETANS +TARMAC +TARMACADAM +TARMACADAMS +TARMACKED +TARMACKING +TARMACS +TARN +TARNAL +TARNALLY +TARNATION +TARNATIONS +TARNISH +TARNISHABLE +TARNISHED +TARNISHES +TARNISHING +TARNS +TARO +TAROC +TAROCS +TAROK +TAROKS +TAROS +TAROT +TAROTS +TARP +TARPAN +TARPANS +TARPAPER +TARPAPERS +TARPAULIN +TARPAULINS +TARPON +TARPONS +TARPS +TARRADIDDLE +TARRADIDDLES +TARRAGON +TARRAGONS +TARRE +TARRED +TARRES +TARRIANCE +TARRIANCES +TARRIED +TARRIER +TARRIERS +TARRIES +TARRIEST +TARRINESS +TARRINESSES +TARRING +TARRY +TARRYING +TARS +TARSAL +TARSALS +TARSI +TARSIA +TARSIAS +TARSIER +TARSIERS +TARSOMETATARSI +TARSOMETATARSUS +TARSUS +TART +TARTAN +TARTANA +TARTANAS +TARTANS +TARTAR +TARTARE +TARTARIC +TARTAROUS +TARTARS +TARTED +TARTER +TARTEST +TARTIER +TARTIEST +TARTILY +TARTINESS +TARTINESSES +TARTING +TARTISH +TARTLET +TARTLETS +TARTLY +TARTNESS +TARTNESSES +TARTRATE +TARTRATED +TARTRATES +TARTS +TARTUFE +TARTUFES +TARTUFFE +TARTUFFES +TARTY +TARWEED +TARWEEDS +TARZAN +TARZANS +TAS +TASK +TASKBAR +TASKBARS +TASKED +TASKING +TASKMASTER +TASKMASTERS +TASKMISTRESS +TASKMISTRESSES +TASKS +TASKWORK +TASKWORKS +TASS +TASSE +TASSEL +TASSELED +TASSELING +TASSELLED +TASSELLING +TASSELS +TASSES +TASSET +TASSETS +TASSIE +TASSIES +TASTABLE +TASTE +TASTEABLE +TASTED +TASTEFUL +TASTEFULLY +TASTEFULNESS +TASTEFULNESSES +TASTELESS +TASTELESSLY +TASTELESSNESS +TASTELESSNESSES +TASTEMAKER +TASTEMAKERS +TASTER +TASTERS +TASTES +TASTIER +TASTIEST +TASTILY +TASTINESS +TASTINESSES +TASTING +TASTY +TAT +TATAMI +TATAMIS +TATAR +TATARS +TATE +TATER +TATERS +TATES +TATOUAY +TATOUAYS +TATS +TATSOI +TATSOIS +TATTED +TATTER +TATTERDEMALION +TATTERDEMALIONS +TATTERED +TATTERING +TATTERS +TATTERSALL +TATTERSALLS +TATTIE +TATTIER +TATTIES +TATTIEST +TATTILY +TATTINESS +TATTINESSES +TATTING +TATTINGS +TATTLE +TATTLED +TATTLER +TATTLERS +TATTLES +TATTLETALE +TATTLETALES +TATTLING +TATTOO +TATTOOED +TATTOOER +TATTOOERS +TATTOOING +TATTOOIST +TATTOOISTS +TATTOOS +TATTY +TAU +TAUGHT +TAUNT +TAUNTED +TAUNTER +TAUNTERS +TAUNTING +TAUNTINGLY +TAUNTS +TAUON +TAUONS +TAUPE +TAUPES +TAURINE +TAURINES +TAUS +TAUT +TAUTAUG +TAUTAUGS +TAUTED +TAUTEN +TAUTENED +TAUTENING +TAUTENS +TAUTER +TAUTEST +TAUTING +TAUTLY +TAUTNESS +TAUTNESSES +TAUTOG +TAUTOGS +TAUTOLOGICAL +TAUTOLOGICALLY +TAUTOLOGIES +TAUTOLOGOUS +TAUTOLOGOUSLY +TAUTOLOGY +TAUTOMER +TAUTOMERIC +TAUTOMERISM +TAUTOMERISMS +TAUTOMERS +TAUTONYM +TAUTONYMIES +TAUTONYMS +TAUTONYMY +TAUTS +TAV +TAVERN +TAVERNA +TAVERNAS +TAVERNER +TAVERNERS +TAVERNS +TAVS +TAW +TAWDRIER +TAWDRIES +TAWDRIEST +TAWDRILY +TAWDRINESS +TAWDRINESSES +TAWDRY +TAWED +TAWER +TAWERS +TAWIE +TAWING +TAWNEY +TAWNEYS +TAWNIER +TAWNIES +TAWNIEST +TAWNILY +TAWNINESS +TAWNINESSES +TAWNY +TAWPIE +TAWPIES +TAWS +TAWSE +TAWSED +TAWSES +TAWSING +TAX +TAXA +TAXABLE +TAXABLES +TAXABLY +TAXATION +TAXATIONS +TAXED +TAXEME +TAXEMES +TAXEMIC +TAXER +TAXERS +TAXES +TAXI +TAXICAB +TAXICABS +TAXIDERMIC +TAXIDERMIES +TAXIDERMIST +TAXIDERMISTS +TAXIDERMY +TAXIED +TAXIES +TAXIING +TAXIMAN +TAXIMEN +TAXIMETER +TAXIMETERS +TAXING +TAXINGLY +TAXIS +TAXITE +TAXITES +TAXITIC +TAXIWAY +TAXIWAYS +TAXLESS +TAXMAN +TAXMEN +TAXOL +TAXOLS +TAXON +TAXONOMIC +TAXONOMICALLY +TAXONOMIES +TAXONOMIST +TAXONOMISTS +TAXONOMY +TAXONS +TAXPAID +TAXPAYER +TAXPAYERS +TAXPAYING +TAXPAYINGS +TAXUS +TAXWISE +TAXYING +TAZZA +TAZZAS +TAZZE +TCHOTCHKE +TCHOTCHKES +TEA +TEABERRIES +TEABERRY +TEABOARD +TEABOARDS +TEABOWL +TEABOWLS +TEABOX +TEABOXES +TEACAKE +TEACAKES +TEACART +TEACARTS +TEACH +TEACHABLE +TEACHABLENESS +TEACHABLENESSES +TEACHABLY +TEACHER +TEACHERLY +TEACHERS +TEACHES +TEACHING +TEACHINGS +TEACUP +TEACUPFUL +TEACUPFULS +TEACUPS +TEACUPSFUL +TEAHOUSE +TEAHOUSES +TEAK +TEAKETTLE +TEAKETTLES +TEAKS +TEAKWOOD +TEAKWOODS +TEAL +TEALIKE +TEALS +TEAM +TEAMAKER +TEAMAKERS +TEAMED +TEAMING +TEAMMATE +TEAMMATES +TEAMS +TEAMSTER +TEAMSTERS +TEAMWORK +TEAMWORKS +TEAPOT +TEAPOTS +TEAPOY +TEAPOYS +TEAR +TEARABLE +TEARAWAY +TEARAWAYS +TEARDOWN +TEARDOWNS +TEARDROP +TEARDROPS +TEARED +TEARER +TEARERS +TEARFUL +TEARFULLY +TEARFULNESS +TEARFULNESSES +TEARGAS +TEARGASES +TEARGASSED +TEARGASSES +TEARGASSING +TEARIER +TEARIEST +TEARILY +TEARINESS +TEARINESSES +TEARING +TEARJERKER +TEARJERKERS +TEARLESS +TEAROOM +TEAROOMS +TEARS +TEARSTAIN +TEARSTAINED +TEARSTAINS +TEARSTRIP +TEARSTRIPS +TEARY +TEAS +TEASABLE +TEASE +TEASED +TEASEL +TEASELED +TEASELER +TEASELERS +TEASELING +TEASELLED +TEASELLER +TEASELLERS +TEASELLING +TEASELS +TEASER +TEASERS +TEASES +TEASHOP +TEASHOPS +TEASING +TEASINGLY +TEASPOON +TEASPOONFUL +TEASPOONFULS +TEASPOONS +TEASPOONSFUL +TEAT +TEATASTER +TEATASTERS +TEATED +TEATIME +TEATIMES +TEATS +TEAWARE +TEAWARES +TEAZEL +TEAZELED +TEAZELING +TEAZELLED +TEAZELLING +TEAZELS +TEAZLE +TEAZLED +TEAZLES +TEAZLING +TECH +TECHED +TECHIE +TECHIER +TECHIES +TECHIEST +TECHILY +TECHNETIUM +TECHNETIUMS +TECHNETRONIC +TECHNIC +TECHNICAL +TECHNICALITIES +TECHNICALITY +TECHNICALIZE +TECHNICALIZED +TECHNICALIZES +TECHNICALIZING +TECHNICALLY +TECHNICALS +TECHNICIAN +TECHNICIANS +TECHNICS +TECHNIQUE +TECHNIQUES +TECHNO +TECHNOBABBLE +TECHNOBABBLES +TECHNOCRACIES +TECHNOCRACY +TECHNOCRAT +TECHNOCRATIC +TECHNOCRATS +TECHNOLOGIC +TECHNOLOGICAL +TECHNOLOGICALLY +TECHNOLOGIES +TECHNOLOGIST +TECHNOLOGISTS +TECHNOLOGIZE +TECHNOLOGIZED +TECHNOLOGIZES +TECHNOLOGIZING +TECHNOLOGY +TECHNOPHILE +TECHNOPHILES +TECHNOPHOBE +TECHNOPHOBES +TECHNOPHOBIA +TECHNOPHOBIAS +TECHNOPHOBIC +TECHNOPOP +TECHNOPOPS +TECHNOS +TECHNOSTRUCTURE +TECHS +TECHY +TECTA +TECTAL +TECTITE +TECTITES +TECTONIC +TECTONICALLY +TECTONICS +TECTONISM +TECTONISMS +TECTORIAL +TECTRICES +TECTRIX +TECTUM +TECTUMS +TED +TEDDED +TEDDER +TEDDERED +TEDDERING +TEDDERS +TEDDIES +TEDDING +TEDDY +TEDIOUS +TEDIOUSLY +TEDIOUSNESS +TEDIOUSNESSES +TEDIUM +TEDIUMS +TEDS +TEE +TEED +TEEING +TEEL +TEELS +TEEM +TEEMED +TEEMER +TEEMERS +TEEMING +TEEMINGLY +TEEMINGNESS +TEEMINGNESSES +TEEMS +TEEN +TEENAGE +TEENAGED +TEENAGER +TEENAGERS +TEENER +TEENERS +TEENFUL +TEENIER +TEENIEST +TEENS +TEENSIER +TEENSIEST +TEENSY +TEENTSIER +TEENTSIEST +TEENTSY +TEENY +TEENYBOP +TEENYBOPPER +TEENYBOPPERS +TEEPEE +TEEPEES +TEES +TEETER +TEETERBOARD +TEETERBOARDS +TEETERED +TEETERING +TEETERS +TEETH +TEETHE +TEETHED +TEETHER +TEETHERS +TEETHES +TEETHING +TEETHINGS +TEETHLESS +TEETHRIDGE +TEETHRIDGES +TEETOTAL +TEETOTALED +TEETOTALER +TEETOTALERS +TEETOTALING +TEETOTALISM +TEETOTALISMS +TEETOTALIST +TEETOTALISTS +TEETOTALLED +TEETOTALLER +TEETOTALLERS +TEETOTALLING +TEETOTALLY +TEETOTALS +TEETOTUM +TEETOTUMS +TEFF +TEFFS +TEFILLIN +TEFLON +TEFLONS +TEG +TEGG +TEGGS +TEGMEN +TEGMENTA +TEGMENTAL +TEGMENTUM +TEGMINA +TEGMINAL +TEGS +TEGUA +TEGUAS +TEGULAR +TEGULARLY +TEGULATED +TEGUMEN +TEGUMENT +TEGUMENTS +TEGUMINA +TEIGLACH +TEIID +TEIIDS +TEIND +TEINDS +TEKKIE +TEKKIES +TEKTITE +TEKTITES +TEKTITIC +TEL +TELA +TELAE +TELAMON +TELAMONES +TELANGIECTASES +TELANGIECTASIA +TELANGIECTASIAS +TELANGIECTASIS +TELANGIECTATIC +TELCO +TELCOS +TELE +TELECAST +TELECASTED +TELECASTER +TELECASTERS +TELECASTING +TELECASTS +TELECOM +TELECOMMUTE +TELECOMMUTED +TELECOMMUTER +TELECOMMUTERS +TELECOMMUTES +TELECOMMUTING +TELECOMS +TELECONFERENCE +TELECONFERENCES +TELECOURSE +TELECOURSES +TELEDU +TELEDUS +TELEFACSIMILE +TELEFACSIMILES +TELEFAX +TELEFAXES +TELEFILM +TELEFILMS +TELEGA +TELEGAS +TELEGENIC +TELEGONIC +TELEGONIES +TELEGONY +TELEGRAM +TELEGRAMMED +TELEGRAMMING +TELEGRAMS +TELEGRAPH +TELEGRAPHED +TELEGRAPHER +TELEGRAPHERS +TELEGRAPHESE +TELEGRAPHESES +TELEGRAPHIC +TELEGRAPHICALLY +TELEGRAPHIES +TELEGRAPHING +TELEGRAPHIST +TELEGRAPHISTS +TELEGRAPHS +TELEGRAPHY +TELEKINESES +TELEKINESIS +TELEKINETIC +TELEKINETICALLY +TELEMAN +TELEMARK +TELEMARKETER +TELEMARKETERS +TELEMARKETING +TELEMARKETINGS +TELEMARKS +TELEMEN +TELEMETER +TELEMETERED +TELEMETERING +TELEMETERS +TELEMETRIC +TELEMETRICALLY +TELEMETRIES +TELEMETRY +TELENCEPHALA +TELENCEPHALIC +TELENCEPHALON +TELEOLOGIC +TELEOLOGICAL +TELEOLOGICALLY +TELEOLOGIES +TELEOLOGIST +TELEOLOGISTS +TELEOLOGY +TELEONOMIC +TELEONOMIES +TELEONOMY +TELEOST +TELEOSTEAN +TELEOSTS +TELEPATH +TELEPATHIC +TELEPATHICALLY +TELEPATHIES +TELEPATHS +TELEPATHY +TELEPHONE +TELEPHONED +TELEPHONER +TELEPHONERS +TELEPHONES +TELEPHONIC +TELEPHONICALLY +TELEPHONIES +TELEPHONING +TELEPHONIST +TELEPHONISTS +TELEPHONY +TELEPHOTO +TELEPHOTOGRAPHY +TELEPHOTOS +TELEPLAY +TELEPLAYS +TELEPORT +TELEPORTATION +TELEPORTATIONS +TELEPORTED +TELEPORTING +TELEPORTS +TELEPRINTER +TELEPRINTERS +TELEPROCESSING +TELEPROCESSINGS +TELERAN +TELERANS +TELES +TELESCOPE +TELESCOPED +TELESCOPES +TELESCOPIC +TELESCOPICALLY +TELESCOPIES +TELESCOPING +TELESCOPY +TELESES +TELESHOP +TELESHOPPED +TELESHOPPING +TELESHOPS +TELESIS +TELESTIC +TELESTICH +TELESTICHS +TELESTICS +TELETEXT +TELETEXTS +TELETHON +TELETHONS +TELETYPE +TELETYPED +TELETYPES +TELETYPEWRITER +TELETYPEWRITERS +TELETYPING +TELEUTOSPORE +TELEUTOSPORES +TELEVANGELISM +TELEVANGELISMS +TELEVANGELIST +TELEVANGELISTS +TELEVIEW +TELEVIEWED +TELEVIEWER +TELEVIEWERS +TELEVIEWING +TELEVIEWS +TELEVISE +TELEVISED +TELEVISES +TELEVISING +TELEVISION +TELEVISIONS +TELEVISOR +TELEVISORS +TELEVISUAL +TELEX +TELEXED +TELEXES +TELEXING +TELFER +TELFERED +TELFERING +TELFERS +TELFORD +TELFORDS +TELIA +TELIAL +TELIC +TELICALLY +TELIOSPORE +TELIOSPORES +TELIUM +TELL +TELLABLE +TELLER +TELLERS +TELLIES +TELLING +TELLINGLY +TELLS +TELLTALE +TELLTALES +TELLURIAN +TELLURIANS +TELLURIC +TELLURIDE +TELLURIDES +TELLURION +TELLURIONS +TELLURITE +TELLURITES +TELLURIUM +TELLURIUMS +TELLURIZE +TELLURIZED +TELLURIZES +TELLURIZING +TELLUROMETER +TELLUROMETERS +TELLUROUS +TELLY +TELLYS +TELNET +TELNETED +TELNETING +TELNETS +TELNETTED +TELNETTING +TELOCENTRIC +TELOCENTRICS +TELOI +TELOME +TELOMERE +TELOMERES +TELOMES +TELOMIC +TELOPHASE +TELOPHASES +TELOS +TELOTAXES +TELOTAXIS +TELPHER +TELPHERED +TELPHERING +TELPHERS +TELS +TELSON +TELSONIC +TELSONS +TEMBLOR +TEMBLORES +TEMBLORS +TEMERARIOUS +TEMERARIOUSLY +TEMERARIOUSNESS +TEMERITIES +TEMERITY +TEMP +TEMPED +TEMPEH +TEMPEHS +TEMPER +TEMPERA +TEMPERABLE +TEMPERAMENT +TEMPERAMENTAL +TEMPERAMENTALLY +TEMPERAMENTS +TEMPERANCE +TEMPERANCES +TEMPERAS +TEMPERATE +TEMPERATELY +TEMPERATENESS +TEMPERATENESSES +TEMPERATURE +TEMPERATURES +TEMPERED +TEMPERER +TEMPERERS +TEMPERING +TEMPERS +TEMPEST +TEMPESTED +TEMPESTING +TEMPESTS +TEMPESTUOUS +TEMPESTUOUSLY +TEMPESTUOUSNESS +TEMPI +TEMPING +TEMPLAR +TEMPLARS +TEMPLATE +TEMPLATES +TEMPLE +TEMPLED +TEMPLES +TEMPLET +TEMPLETS +TEMPO +TEMPORAL +TEMPORALITIES +TEMPORALITY +TEMPORALIZE +TEMPORALIZED +TEMPORALIZES +TEMPORALIZING +TEMPORALLY +TEMPORALS +TEMPORARIES +TEMPORARILY +TEMPORARINESS +TEMPORARINESSES +TEMPORARY +TEMPORISE +TEMPORISED +TEMPORISES +TEMPORISING +TEMPORIZATION +TEMPORIZATIONS +TEMPORIZE +TEMPORIZED +TEMPORIZER +TEMPORIZERS +TEMPORIZES +TEMPORIZING +TEMPOS +TEMPS +TEMPT +TEMPTABLE +TEMPTATION +TEMPTATIONS +TEMPTED +TEMPTER +TEMPTERS +TEMPTING +TEMPTINGLY +TEMPTRESS +TEMPTRESSES +TEMPTS +TEMPURA +TEMPURAS +TEN +TENABILITIES +TENABILITY +TENABLE +TENABLENESS +TENABLENESSES +TENABLY +TENACE +TENACES +TENACIOUS +TENACIOUSLY +TENACIOUSNESS +TENACIOUSNESSES +TENACITIES +TENACITY +TENACULA +TENACULUM +TENACULUMS +TENAIL +TENAILLE +TENAILLES +TENAILS +TENANCIES +TENANCY +TENANT +TENANTABLE +TENANTED +TENANTING +TENANTLESS +TENANTRIES +TENANTRY +TENANTS +TENCH +TENCHES +TEND +TENDANCE +TENDANCES +TENDED +TENDENCE +TENDENCES +TENDENCIES +TENDENCIOUS +TENDENCY +TENDENTIOUS +TENDENTIOUSLY +TENDENTIOUSNESS +TENDER +TENDERED +TENDERER +TENDERERS +TENDEREST +TENDERFEET +TENDERFOOT +TENDERFOOTS +TENDERHEARTED +TENDERHEARTEDLY +TENDERING +TENDERIZATION +TENDERIZATIONS +TENDERIZE +TENDERIZED +TENDERIZER +TENDERIZERS +TENDERIZES +TENDERIZING +TENDERLOIN +TENDERLOINS +TENDERLY +TENDERNESS +TENDERNESSES +TENDEROMETER +TENDEROMETERS +TENDERS +TENDING +TENDINITIS +TENDINITISES +TENDINOUS +TENDON +TENDONITIS +TENDONITISES +TENDONS +TENDRESSE +TENDRESSES +TENDRIL +TENDRILED +TENDRILLED +TENDRILOUS +TENDRILS +TENDS +TENDU +TENDUS +TENEBRAE +TENEBRIFIC +TENEBRIONID +TENEBRIONIDS +TENEBRIOUS +TENEBRISM +TENEBRISMS +TENEBRIST +TENEBRISTS +TENEBROUS +TENEMENT +TENEMENTS +TENESMIC +TENESMUS +TENESMUSES +TENET +TENETS +TENFOLD +TENFOLDS +TENGE +TENIA +TENIAE +TENIAS +TENIASES +TENIASIS +TENNER +TENNERS +TENNIES +TENNIS +TENNISES +TENNIST +TENNISTS +TENON +TENONED +TENONER +TENONERS +TENONING +TENONS +TENOR +TENORIST +TENORISTS +TENORITE +TENORITES +TENORS +TENOSYNOVITIS +TENOSYNOVITISES +TENOTOMIES +TENOTOMY +TENOUR +TENOURS +TENPENCE +TENPENCES +TENPENNY +TENPIN +TENPINS +TENPOUNDER +TENPOUNDERS +TENREC +TENRECS +TENS +TENSE +TENSED +TENSELY +TENSENESS +TENSENESSES +TENSER +TENSES +TENSEST +TENSIBLE +TENSIBLY +TENSILE +TENSILELY +TENSILITIES +TENSILITY +TENSING +TENSIOMETER +TENSIOMETERS +TENSIOMETRIC +TENSIOMETRIES +TENSIOMETRY +TENSION +TENSIONAL +TENSIONED +TENSIONER +TENSIONERS +TENSIONING +TENSIONLESS +TENSIONS +TENSITIES +TENSITY +TENSIVE +TENSOR +TENSORIAL +TENSORS +TENT +TENTACLE +TENTACLED +TENTACLES +TENTACULAR +TENTAGE +TENTAGES +TENTATIVE +TENTATIVELY +TENTATIVENESS +TENTATIVENESSES +TENTATIVES +TENTED +TENTER +TENTERED +TENTERHOOK +TENTERHOOKS +TENTERING +TENTERS +TENTH +TENTHLY +TENTHS +TENTIE +TENTIER +TENTIEST +TENTING +TENTLESS +TENTLIKE +TENTMAKER +TENTMAKERS +TENTORIA +TENTORIAL +TENTORIUM +TENTS +TENTY +TENUES +TENUIS +TENUITIES +TENUITY +TENUOUS +TENUOUSLY +TENUOUSNESS +TENUOUSNESSES +TENURABLE +TENURE +TENURED +TENURES +TENURIAL +TENURIALLY +TENURING +TENUTI +TENUTO +TENUTOS +TEOCALLI +TEOCALLIS +TEOPAN +TEOPANS +TEOSINTE +TEOSINTES +TEPA +TEPAL +TEPALS +TEPAS +TEPEE +TEPEES +TEPEFIED +TEPEFIES +TEPEFY +TEPEFYING +TEPHRA +TEPHRAS +TEPHRITE +TEPHRITES +TEPHRITIC +TEPID +TEPIDITIES +TEPIDITY +TEPIDLY +TEPIDNESS +TEPIDNESSES +TEPOY +TEPOYS +TEQUILA +TEQUILAS +TERABYTE +TERABYTES +TERAFLOP +TERAFLOPS +TERAHERTZ +TERAHERTZES +TERAI +TERAIS +TERAOHM +TERAOHMS +TERAPH +TERAPHIM +TERATISM +TERATISMS +TERATOCARCINOMA +TERATOGEN +TERATOGENESES +TERATOGENESIS +TERATOGENIC +TERATOGENICITY +TERATOGENS +TERATOID +TERATOLOGIC +TERATOLOGICAL +TERATOLOGIES +TERATOLOGIST +TERATOLOGISTS +TERATOLOGY +TERATOMA +TERATOMAS +TERATOMATA +TERAWATT +TERAWATTS +TERBIA +TERBIAS +TERBIC +TERBIUM +TERBIUMS +TERCE +TERCEL +TERCELET +TERCELETS +TERCELS +TERCENTENARIES +TERCENTENARY +TERCENTENNIAL +TERCENTENNIALS +TERCES +TERCET +TERCETS +TEREBENE +TEREBENES +TEREBIC +TEREBINTH +TEREBINTHS +TEREDINES +TEREDO +TEREDOS +TEREFAH +TEREPHTHALATE +TEREPHTHALATES +TERETE +TERGA +TERGAL +TERGITE +TERGITES +TERGIVERSATE +TERGIVERSATED +TERGIVERSATES +TERGIVERSATING +TERGIVERSATION +TERGIVERSATIONS +TERGIVERSATOR +TERGIVERSATORS +TERGUM +TERIYAKI +TERIYAKIS +TERM +TERMAGANT +TERMAGANTS +TERMED +TERMER +TERMERS +TERMINABLE +TERMINABLENESS +TERMINABLY +TERMINAL +TERMINALLY +TERMINALS +TERMINATE +TERMINATED +TERMINATES +TERMINATING +TERMINATION +TERMINATIONAL +TERMINATIONS +TERMINATIVE +TERMINATIVELY +TERMINATOR +TERMINATORS +TERMING +TERMINI +TERMINOLOGICAL +TERMINOLOGIES +TERMINOLOGY +TERMINUS +TERMINUSES +TERMITARIA +TERMITARIES +TERMITARIUM +TERMITARY +TERMITE +TERMITES +TERMITIC +TERMLESS +TERMLY +TERMOR +TERMORS +TERMS +TERMTIME +TERMTIMES +TERN +TERNARIES +TERNARY +TERNATE +TERNATELY +TERNE +TERNEPLATE +TERNEPLATES +TERNES +TERNION +TERNIONS +TERNS +TERPENE +TERPENELESS +TERPENES +TERPENIC +TERPENOID +TERPENOIDS +TERPINEOL +TERPINEOLS +TERPINOL +TERPINOLS +TERPOLYMER +TERPOLYMERS +TERPSICHOREAN +TERRA +TERRACE +TERRACED +TERRACES +TERRACING +TERRAE +TERRAFORM +TERRAFORMED +TERRAFORMING +TERRAFORMS +TERRAIN +TERRAINS +TERRANE +TERRANES +TERRAPIN +TERRAPINS +TERRAQUEOUS +TERRARIA +TERRARIUM +TERRARIUMS +TERRAS +TERRASES +TERRAZZO +TERRAZZOS +TERREEN +TERREENS +TERRELLA +TERRELLAS +TERRENE +TERRENELY +TERRENES +TERREPLEIN +TERREPLEINS +TERRESTRIAL +TERRESTRIALLY +TERRESTRIALS +TERRET +TERRETS +TERRIBLE +TERRIBLENESS +TERRIBLENESSES +TERRIBLY +TERRICOLOUS +TERRIER +TERRIERS +TERRIES +TERRIFIC +TERRIFICALLY +TERRIFIED +TERRIFIER +TERRIFIERS +TERRIFIES +TERRIFY +TERRIFYING +TERRIFYINGLY +TERRIGENOUS +TERRINE +TERRINES +TERRIT +TERRITORIAL +TERRITORIALISM +TERRITORIALISMS +TERRITORIALIST +TERRITORIALISTS +TERRITORIALITY +TERRITORIALIZE +TERRITORIALIZED +TERRITORIALIZES +TERRITORIALLY +TERRITORIALS +TERRITORIES +TERRITORY +TERRITS +TERROR +TERRORISE +TERRORISED +TERRORISES +TERRORISING +TERRORISM +TERRORISMS +TERRORIST +TERRORISTIC +TERRORISTS +TERRORIZATION +TERRORIZATIONS +TERRORIZE +TERRORIZED +TERRORIZES +TERRORIZING +TERRORLESS +TERRORS +TERRY +TERSE +TERSELY +TERSENESS +TERSENESSES +TERSER +TERSEST +TERTIAL +TERTIALS +TERTIAN +TERTIANS +TERTIARIES +TERTIARY +TERVALENT +TERYLENE +TERYLENES +TESLA +TESLAS +TESSELATE +TESSELATED +TESSELATES +TESSELATING +TESSELLATE +TESSELLATED +TESSELLATES +TESSELLATING +TESSELLATION +TESSELLATIONS +TESSERA +TESSERACT +TESSERACTS +TESSERAE +TESSITURA +TESSITURAS +TESSITURE +TEST +TESTA +TESTABILITIES +TESTABILITY +TESTABLE +TESTACEAN +TESTACEANS +TESTACEOUS +TESTACIES +TESTACY +TESTAE +TESTAMENT +TESTAMENTARY +TESTAMENTS +TESTATE +TESTATES +TESTATOR +TESTATORS +TESTATRICES +TESTATRIX +TESTATRIXES +TESTCROSS +TESTCROSSED +TESTCROSSES +TESTCROSSING +TESTED +TESTEE +TESTEES +TESTER +TESTERS +TESTES +TESTICLE +TESTICLES +TESTICULAR +TESTIER +TESTIEST +TESTIFIED +TESTIFIER +TESTIFIERS +TESTIFIES +TESTIFY +TESTIFYING +TESTILY +TESTIMONIAL +TESTIMONIALS +TESTIMONIES +TESTIMONY +TESTINESS +TESTINESSES +TESTING +TESTIS +TESTON +TESTONS +TESTOON +TESTOONS +TESTOSTERONE +TESTOSTERONES +TESTS +TESTUDINES +TESTUDO +TESTUDOS +TESTY +TET +TETANAL +TETANIC +TETANICAL +TETANICALLY +TETANICS +TETANIES +TETANISE +TETANISED +TETANISES +TETANISING +TETANIZATION +TETANIZATIONS +TETANIZE +TETANIZED +TETANIZES +TETANIZING +TETANOID +TETANUS +TETANUSES +TETANY +TETARTOHEDRAL +TETCHED +TETCHIER +TETCHIEST +TETCHILY +TETCHINESS +TETCHINESSES +TETCHY +TETH +TETHER +TETHERBALL +TETHERBALLS +TETHERED +TETHERING +TETHERS +TETHS +TETOTUM +TETOTUMS +TETRA +TETRACAINE +TETRACAINES +TETRACHLORIDE +TETRACHLORIDES +TETRACHORD +TETRACHORDS +TETRACID +TETRACIDS +TETRACYCLINE +TETRACYCLINES +TETRAD +TETRADIC +TETRADRACHM +TETRADRACHMS +TETRADS +TETRADYNAMOUS +TETRAFLUORIDE +TETRAFLUORIDES +TETRAGON +TETRAGONAL +TETRAGONALLY +TETRAGONS +TETRAGRAM +TETRAGRAMMATON +TETRAGRAMMATONS +TETRAGRAMS +TETRAHEDRA +TETRAHEDRAL +TETRAHEDRALLY +TETRAHEDRITE +TETRAHEDRITES +TETRAHEDRON +TETRAHEDRONS +TETRAHYDROFURAN +TETRAHYMENA +TETRAHYMENAS +TETRALOGIES +TETRALOGY +TETRAMER +TETRAMERIC +TETRAMEROUS +TETRAMERS +TETRAMETER +TETRAMETERS +TETRAMETHYLLEAD +TETRAPLOID +TETRAPLOIDIES +TETRAPLOIDS +TETRAPLOIDY +TETRAPOD +TETRAPODS +TETRAPYRROLE +TETRAPYRROLES +TETRARCH +TETRARCHIC +TETRARCHIES +TETRARCHS +TETRARCHY +TETRAS +TETRASPORE +TETRASPORES +TETRASPORIC +TETRAVALENT +TETRAZOLIUM +TETRAZOLIUMS +TETRAZZINI +TETRI +TETRIS +TETRODE +TETRODES +TETRODOTOXIN +TETRODOTOXINS +TETROXID +TETROXIDE +TETROXIDES +TETROXIDS +TETRYL +TETRYLS +TETS +TETTER +TETTERS +TEUCH +TEUGH +TEUGHLY +TEUTONIZE +TEUTONIZED +TEUTONIZES +TEUTONIZING +TEVATRON +TEVATRONS +TEW +TEWED +TEWING +TEWS +TEXAS +TEXASES +TEXT +TEXTBOOK +TEXTBOOKISH +TEXTBOOKS +TEXTILE +TEXTILES +TEXTLESS +TEXTS +TEXTUAL +TEXTUALLY +TEXTUARIES +TEXTUARY +TEXTURAL +TEXTURALLY +TEXTURE +TEXTURED +TEXTURELESS +TEXTURES +TEXTURING +TEXTURIZE +TEXTURIZED +TEXTURIZES +TEXTURIZING +THACK +THACKED +THACKING +THACKS +THAE +THAIRM +THAIRMS +THALAMI +THALAMIC +THALAMUS +THALASSAEMIA +THALASSAEMIAS +THALASSEMIA +THALASSEMIAS +THALASSEMIC +THALASSEMICS +THALASSIC +THALASSOCRACIES +THALASSOCRACY +THALASSOCRAT +THALASSOCRATS +THALER +THALERS +THALIDOMIDE +THALIDOMIDES +THALLI +THALLIC +THALLIOUS +THALLIUM +THALLIUMS +THALLOID +THALLOPHYTE +THALLOPHYTES +THALLOPHYTIC +THALLOUS +THALLUS +THALLUSES +THALWEG +THALWEGS +THAN +THANAGE +THANAGES +THANATOLOGICAL +THANATOLOGIES +THANATOLOGIST +THANATOLOGISTS +THANATOLOGY +THANATOS +THANATOSES +THANE +THANES +THANESHIP +THANESHIPS +THANK +THANKED +THANKER +THANKERS +THANKFUL +THANKFULLER +THANKFULLEST +THANKFULLY +THANKFULNESS +THANKFULNESSES +THANKING +THANKLESS +THANKLESSLY +THANKLESSNESS +THANKLESSNESSES +THANKS +THANKSGIVING +THANKSGIVINGS +THANKWORTHY +THARM +THARMS +THAT +THATAWAY +THATCH +THATCHED +THATCHER +THATCHERS +THATCHES +THATCHIER +THATCHIEST +THATCHING +THATCHINGS +THATCHY +THAUMATURGE +THAUMATURGES +THAUMATURGIC +THAUMATURGIES +THAUMATURGIST +THAUMATURGISTS +THAUMATURGY +THAW +THAWED +THAWER +THAWERS +THAWING +THAWLESS +THAWS +THE +THEARCHIES +THEARCHY +THEATER +THEATERGOER +THEATERGOERS +THEATERGOING +THEATERGOINGS +THEATERS +THEATRE +THEATRES +THEATRIC +THEATRICAL +THEATRICALISM +THEATRICALISMS +THEATRICALITIES +THEATRICALITY +THEATRICALIZE +THEATRICALIZED +THEATRICALIZES +THEATRICALIZING +THEATRICALLY +THEATRICALS +THEATRICS +THEBAINE +THEBAINES +THEBE +THEBES +THECA +THECAE +THECAL +THECATE +THECODONT +THECODONTS +THEE +THEELIN +THEELINS +THEELOL +THEELOLS +THEFT +THEFTS +THEGN +THEGNLY +THEGNS +THEIN +THEINE +THEINES +THEINS +THEIR +THEIRS +THEIRSELF +THEIRSELVES +THEISM +THEISMS +THEIST +THEISTIC +THEISTICAL +THEISTICALLY +THEISTS +THELITIS +THELITISES +THEM +THEMATIC +THEMATICALLY +THEMATICS +THEME +THEMED +THEMES +THEMING +THEMSELVES +THEN +THENAGE +THENAGES +THENAL +THENAR +THENARS +THENCE +THENCEFORTH +THENCEFORWARD +THENCEFORWARDS +THENS +THEOBROMINE +THEOBROMINES +THEOCENTRIC +THEOCENTRICITY +THEOCENTRISM +THEOCENTRISMS +THEOCRACIES +THEOCRACY +THEOCRAT +THEOCRATIC +THEOCRATICAL +THEOCRATICALLY +THEOCRATS +THEODICIES +THEODICY +THEODOLITE +THEODOLITES +THEOGONIC +THEOGONIES +THEOGONY +THEOLOG +THEOLOGIAN +THEOLOGIANS +THEOLOGIC +THEOLOGICAL +THEOLOGICALLY +THEOLOGIES +THEOLOGISE +THEOLOGISED +THEOLOGISES +THEOLOGISING +THEOLOGIZE +THEOLOGIZED +THEOLOGIZER +THEOLOGIZERS +THEOLOGIZES +THEOLOGIZING +THEOLOGS +THEOLOGUE +THEOLOGUES +THEOLOGY +THEOMACHIES +THEOMACHY +THEONOMIES +THEONOMOUS +THEONOMY +THEOPHANIC +THEOPHANIES +THEOPHANY +THEOPHYLLINE +THEOPHYLLINES +THEORBO +THEORBOS +THEOREM +THEOREMATIC +THEOREMS +THEORETIC +THEORETICAL +THEORETICALLY +THEORETICIAN +THEORETICIANS +THEORIES +THEORISE +THEORISED +THEORISES +THEORISING +THEORIST +THEORISTS +THEORIZATION +THEORIZATIONS +THEORIZE +THEORIZED +THEORIZER +THEORIZERS +THEORIZES +THEORIZING +THEORY +THEOSOPHICAL +THEOSOPHICALLY +THEOSOPHIES +THEOSOPHIST +THEOSOPHISTS +THEOSOPHY +THERAPEUSES +THERAPEUSIS +THERAPEUTIC +THERAPEUTICALLY +THERAPEUTICS +THERAPIES +THERAPIST +THERAPISTS +THERAPSID +THERAPSIDS +THERAPY +THERE +THEREABOUT +THEREABOUTS +THEREAFTER +THEREAT +THEREBY +THEREFOR +THEREFORE +THEREFROM +THEREIN +THEREINAFTER +THEREINTO +THEREMIN +THEREMINS +THEREOF +THEREON +THERES +THERETO +THERETOFORE +THEREUNDER +THEREUNTO +THEREUPON +THEREWITH +THEREWITHAL +THERIAC +THERIACA +THERIACAL +THERIACAS +THERIACS +THERIAN +THERIANS +THERIOMORPHIC +THERM +THERMAE +THERMAL +THERMALIZATION +THERMALIZATIONS +THERMALIZE +THERMALIZED +THERMALIZES +THERMALIZING +THERMALLY +THERMALS +THERME +THERMEL +THERMELS +THERMES +THERMIC +THERMICALLY +THERMIDOR +THERMIDORS +THERMION +THERMIONIC +THERMIONICS +THERMIONS +THERMISTOR +THERMISTORS +THERMIT +THERMITE +THERMITES +THERMITS +THERMOCHEMICAL +THERMOCHEMIST +THERMOCHEMISTRY +THERMOCHEMISTS +THERMOCLINE +THERMOCLINES +THERMOCOUPLE +THERMOCOUPLES +THERMODURIC +THERMODYNAMIC +THERMODYNAMICAL +THERMODYNAMICS +THERMOELECTRIC +THERMOELEMENT +THERMOELEMENTS +THERMOFORM +THERMOFORMABLE +THERMOFORMED +THERMOFORMING +THERMOFORMS +THERMOGRAM +THERMOGRAMS +THERMOGRAPH +THERMOGRAPHER +THERMOGRAPHERS +THERMOGRAPHIC +THERMOGRAPHIES +THERMOGRAPHS +THERMOGRAPHY +THERMOHALINE +THERMOJUNCTION +THERMOJUNCTIONS +THERMOLABILE +THERMOLABILITY +THERMOMAGNETIC +THERMOMETER +THERMOMETERS +THERMOMETRIC +THERMOMETRIES +THERMOMETRY +THERMONUCLEAR +THERMOPERIODISM +THERMOPHILE +THERMOPHILES +THERMOPHILIC +THERMOPHILOUS +THERMOPILE +THERMOPILES +THERMOPLASTIC +THERMOPLASTICS +THERMORECEPTOR +THERMORECEPTORS +THERMOREGULATE +THERMOREGULATED +THERMOREGULATES +THERMOREGULATOR +THERMOREMANENCE +THERMOREMANENT +THERMOS +THERMOSCOPE +THERMOSCOPES +THERMOSES +THERMOSET +THERMOSETS +THERMOSETTING +THERMOSPHERE +THERMOSPHERES +THERMOSPHERIC +THERMOSTABILITY +THERMOSTABLE +THERMOSTAT +THERMOSTATED +THERMOSTATIC +THERMOSTATING +THERMOSTATS +THERMOSTATTED +THERMOSTATTING +THERMOTACTIC +THERMOTAXES +THERMOTAXIS +THERMOTROPIC +THERMOTROPISM +THERMOTROPISMS +THERMS +THEROID +THEROPOD +THEROPODS +THESAURAL +THESAURI +THESAURUS +THESAURUSES +THESE +THESES +THESIS +THESP +THESPIAN +THESPIANS +THESPS +THETA +THETAS +THETIC +THETICAL +THETICALLY +THEURGIC +THEURGICAL +THEURGIES +THEURGIST +THEURGISTS +THEURGY +THEW +THEWIER +THEWIEST +THEWLESS +THEWS +THEWY +THEY +THIABENDAZOLE +THIABENDAZOLES +THIAMIN +THIAMINASE +THIAMINASES +THIAMINE +THIAMINES +THIAMINS +THIAZIDE +THIAZIDES +THIAZIN +THIAZINE +THIAZINES +THIAZINS +THIAZOL +THIAZOLE +THIAZOLES +THIAZOLS +THICK +THICKEN +THICKENED +THICKENER +THICKENERS +THICKENING +THICKENINGS +THICKENS +THICKER +THICKEST +THICKET +THICKETED +THICKETS +THICKETY +THICKHEAD +THICKHEADED +THICKHEADS +THICKISH +THICKLY +THICKNESS +THICKNESSES +THICKS +THICKSET +THICKSETS +THIEF +THIEVE +THIEVED +THIEVERIES +THIEVERY +THIEVES +THIEVING +THIEVISH +THIEVISHLY +THIEVISHNESS +THIEVISHNESSES +THIGH +THIGHBONE +THIGHBONES +THIGHED +THIGHS +THIGMOTAXES +THIGMOTAXIS +THIGMOTROPISM +THIGMOTROPISMS +THILL +THILLS +THIMBLE +THIMBLEBERRIES +THIMBLEBERRY +THIMBLEFUL +THIMBLEFULS +THIMBLERIG +THIMBLERIGGED +THIMBLERIGGER +THIMBLERIGGERS +THIMBLERIGGING +THIMBLERIGS +THIMBLES +THIMBLESFUL +THIMBLEWEED +THIMBLEWEEDS +THIMEROSAL +THIMEROSALS +THIN +THINCLAD +THINCLADS +THINDOWN +THINDOWNS +THINE +THING +THINGAMABOB +THINGAMABOBS +THINGAMAJIG +THINGAMAJIGS +THINGNESS +THINGNESSES +THINGS +THINGUMAJIG +THINGUMAJIGS +THINGUMMIES +THINGUMMY +THINK +THINKABLE +THINKABLENESS +THINKABLENESSES +THINKABLY +THINKER +THINKERS +THINKING +THINKINGLY +THINKINGNESS +THINKINGNESSES +THINKINGS +THINKS +THINLY +THINNED +THINNER +THINNERS +THINNESS +THINNESSES +THINNEST +THINNING +THINNISH +THINS +THIO +THIOCYANATE +THIOCYANATES +THIOL +THIOLIC +THIOLS +THIONATE +THIONATES +THIONIC +THIONIN +THIONINE +THIONINES +THIONINS +THIONYL +THIONYLS +THIOPENTAL +THIOPENTALS +THIOPHEN +THIOPHENE +THIOPHENES +THIOPHENS +THIORIDAZINE +THIORIDAZINES +THIOSULFATE +THIOSULFATES +THIOTEPA +THIOTEPAS +THIOURACIL +THIOURACILS +THIOUREA +THIOUREAS +THIR +THIRAM +THIRAMS +THIRD +THIRDHAND +THIRDLY +THIRDS +THIRL +THIRLAGE +THIRLAGES +THIRLED +THIRLING +THIRLS +THIRST +THIRSTED +THIRSTER +THIRSTERS +THIRSTIER +THIRSTIEST +THIRSTILY +THIRSTINESS +THIRSTINESSES +THIRSTING +THIRSTS +THIRSTY +THIRTEEN +THIRTEENS +THIRTEENTH +THIRTEENTHS +THIRTIES +THIRTIETH +THIRTIETHS +THIRTY +THIRTYISH +THIS +THISAWAY +THISTLE +THISTLEDOWN +THISTLEDOWNS +THISTLES +THISTLIER +THISTLIEST +THISTLY +THITHER +THITHERTO +THITHERWARD +THITHERWARDS +THIXOTROPIC +THIXOTROPIES +THIXOTROPY +THO +THOLE +THOLED +THOLEIITE +THOLEIITES +THOLEIITIC +THOLEPIN +THOLEPINS +THOLES +THOLING +THOLOI +THOLOS +THONG +THONGED +THONGS +THORACAL +THORACES +THORACIC +THORACICALLY +THORACOTOMIES +THORACOTOMY +THORAX +THORAXES +THORIA +THORIANITE +THORIANITES +THORIAS +THORIC +THORITE +THORITES +THORIUM +THORIUMS +THORN +THORNBACK +THORNBACKS +THORNBUSH +THORNBUSHES +THORNED +THORNIER +THORNIEST +THORNILY +THORNINESS +THORNINESSES +THORNING +THORNLESS +THORNLIKE +THORNS +THORNY +THORO +THORON +THORONS +THOROUGH +THOROUGHBASS +THOROUGHBASSES +THOROUGHBRACE +THOROUGHBRACES +THOROUGHBRED +THOROUGHBREDS +THOROUGHER +THOROUGHEST +THOROUGHFARE +THOROUGHFARES +THOROUGHGOING +THOROUGHLY +THOROUGHNESS +THOROUGHNESSES +THOROUGHPIN +THOROUGHPINS +THOROUGHWORT +THOROUGHWORTS +THORP +THORPE +THORPES +THORPS +THOSE +THOU +THOUED +THOUGH +THOUGHT +THOUGHTFUL +THOUGHTFULLY +THOUGHTFULNESS +THOUGHTLESS +THOUGHTLESSLY +THOUGHTLESSNESS +THOUGHTS +THOUGHTWAY +THOUGHTWAYS +THOUING +THOUS +THOUSAND +THOUSANDFOLD +THOUSANDS +THOUSANDTH +THOUSANDTHS +THOWLESS +THRALDOM +THRALDOMS +THRALL +THRALLDOM +THRALLDOMS +THRALLED +THRALLING +THRALLS +THRASH +THRASHED +THRASHER +THRASHERS +THRASHES +THRASHING +THRASHINGS +THRASONICAL +THRASONICALLY +THRAVE +THRAVES +THRAW +THRAWART +THRAWED +THRAWING +THRAWN +THRAWNLY +THRAWS +THREAD +THREADBARE +THREADBARENESS +THREADED +THREADER +THREADERS +THREADFIN +THREADFINS +THREADIER +THREADIEST +THREADINESS +THREADINESSES +THREADING +THREADLESS +THREADLIKE +THREADS +THREADWORM +THREADWORMS +THREADY +THREAP +THREAPED +THREAPER +THREAPERS +THREAPING +THREAPS +THREAT +THREATED +THREATEN +THREATENED +THREATENER +THREATENERS +THREATENING +THREATENINGLY +THREATENS +THREATING +THREATS +THREE +THREEFOLD +THREEP +THREEPED +THREEPENCE +THREEPENCES +THREEPENNY +THREEPING +THREEPS +THREES +THREESCORE +THREESOME +THREESOMES +THRENODE +THRENODES +THRENODIC +THRENODIES +THRENODIST +THRENODISTS +THRENODY +THREONINE +THREONINES +THRESH +THRESHED +THRESHER +THRESHERS +THRESHES +THRESHING +THRESHOLD +THRESHOLDS +THREW +THRICE +THRIFT +THRIFTIER +THRIFTIEST +THRIFTILY +THRIFTINESS +THRIFTINESSES +THRIFTLESS +THRIFTLESSLY +THRIFTLESSNESS +THRIFTS +THRIFTY +THRILL +THRILLED +THRILLER +THRILLERS +THRILLING +THRILLINGLY +THRILLS +THRIP +THRIPS +THRIVE +THRIVED +THRIVEN +THRIVER +THRIVERS +THRIVES +THRIVING +THRIVINGLY +THRO +THROAT +THROATED +THROATIER +THROATIEST +THROATILY +THROATINESS +THROATINESSES +THROATING +THROATLATCH +THROATLATCHES +THROATS +THROATY +THROB +THROBBED +THROBBER +THROBBERS +THROBBING +THROBS +THROE +THROES +THROMBI +THROMBIN +THROMBINS +THROMBOCYTE +THROMBOCYTES +THROMBOCYTIC +THROMBOEMBOLIC +THROMBOEMBOLISM +THROMBOKINASE +THROMBOKINASES +THROMBOLYTIC +THROMBOPLASTIC +THROMBOPLASTIN +THROMBOPLASTINS +THROMBOSE +THROMBOSED +THROMBOSES +THROMBOSING +THROMBOSIS +THROMBOTIC +THROMBOXANE +THROMBOXANES +THROMBUS +THRONE +THRONED +THRONES +THRONG +THRONGED +THRONGING +THRONGS +THRONING +THROSTLE +THROSTLES +THROTTLE +THROTTLEABLE +THROTTLED +THROTTLEHOLD +THROTTLEHOLDS +THROTTLER +THROTTLERS +THROTTLES +THROTTLING +THROUGH +THROUGHITHER +THROUGHLY +THROUGHOTHER +THROUGHOUT +THROUGHPUT +THROUGHPUTS +THROVE +THROW +THROWAWAY +THROWAWAYS +THROWBACK +THROWBACKS +THROWER +THROWERS +THROWING +THROWN +THROWS +THROWSTER +THROWSTERS +THRU +THRUM +THRUMMED +THRUMMER +THRUMMERS +THRUMMIER +THRUMMIEST +THRUMMING +THRUMMY +THRUMS +THRUPUT +THRUPUTS +THRUSH +THRUSHES +THRUST +THRUSTED +THRUSTER +THRUSTERS +THRUSTFUL +THRUSTING +THRUSTOR +THRUSTORS +THRUSTS +THRUWAY +THRUWAYS +THUD +THUDDED +THUDDING +THUDS +THUG +THUGGEE +THUGGEES +THUGGERIES +THUGGERY +THUGGISH +THUGS +THUJA +THUJAS +THULIA +THULIAS +THULIUM +THULIUMS +THUMB +THUMBED +THUMBHOLE +THUMBHOLES +THUMBING +THUMBKIN +THUMBKINS +THUMBLESS +THUMBNAIL +THUMBNAILS +THUMBNUT +THUMBNUTS +THUMBPRINT +THUMBPRINTS +THUMBS +THUMBSCREW +THUMBSCREWS +THUMBTACK +THUMBTACKED +THUMBTACKING +THUMBTACKS +THUMBWHEEL +THUMBWHEELS +THUMP +THUMPED +THUMPER +THUMPERS +THUMPING +THUMPS +THUNDER +THUNDERBIRD +THUNDERBIRDS +THUNDERBOLT +THUNDERBOLTS +THUNDERCLAP +THUNDERCLAPS +THUNDERCLOUD +THUNDERCLOUDS +THUNDERED +THUNDERER +THUNDERERS +THUNDERHEAD +THUNDERHEADS +THUNDERING +THUNDERINGLY +THUNDEROUS +THUNDEROUSLY +THUNDERS +THUNDERSHOWER +THUNDERSHOWERS +THUNDERSTONE +THUNDERSTONES +THUNDERSTORM +THUNDERSTORMS +THUNDERSTRICKEN +THUNDERSTRIKE +THUNDERSTRIKES +THUNDERSTRIKING +THUNDERSTROKE +THUNDERSTROKES +THUNDERSTRUCK +THUNDERY +THUNK +THUNKED +THUNKING +THUNKS +THURIBLE +THURIBLES +THURIFER +THURIFERS +THURL +THURLS +THUS +THUSLY +THUYA +THUYAS +THWACK +THWACKED +THWACKER +THWACKERS +THWACKING +THWACKS +THWART +THWARTED +THWARTER +THWARTERS +THWARTING +THWARTLY +THWARTS +THWARTWISE +THY +THYLACINE +THYLACINES +THYLAKOID +THYLAKOIDS +THYME +THYMECTOMIES +THYMECTOMIZE +THYMECTOMIZED +THYMECTOMIZES +THYMECTOMIZING +THYMECTOMY +THYMES +THYMEY +THYMI +THYMIC +THYMIDINE +THYMIDINES +THYMIER +THYMIEST +THYMINE +THYMINES +THYMOCYTE +THYMOCYTES +THYMOL +THYMOLS +THYMOSIN +THYMOSINS +THYMUS +THYMUSES +THYMY +THYRATRON +THYRATRONS +THYREOID +THYRISTOR +THYRISTORS +THYROCALCITONIN +THYROGLOBULIN +THYROGLOBULINS +THYROID +THYROIDAL +THYROIDECTOMIES +THYROIDECTOMY +THYROIDITIS +THYROIDITISES +THYROIDS +THYROTOXICOSES +THYROTOXICOSIS +THYROTROPHIC +THYROTROPHIN +THYROTROPHINS +THYROTROPIC +THYROTROPIN +THYROTROPINS +THYROXIN +THYROXINE +THYROXINES +THYROXINS +THYRSE +THYRSES +THYRSI +THYRSOID +THYRSUS +THYSANURAN +THYSANURANS +THYSELF +TI +TIARA +TIARAED +TIARAS +TIBIA +TIBIAE +TIBIAL +TIBIAS +TIBIOFIBULA +TIBIOFIBULAE +TIBIOFIBULAS +TIC +TICAL +TICALS +TICCED +TICCING +TICK +TICKED +TICKER +TICKERS +TICKET +TICKETED +TICKETING +TICKETLESS +TICKETS +TICKING +TICKINGS +TICKLE +TICKLED +TICKLER +TICKLERS +TICKLES +TICKLING +TICKLISH +TICKLISHLY +TICKLISHNESS +TICKLISHNESSES +TICKS +TICKSEED +TICKSEEDS +TICKTACK +TICKTACKED +TICKTACKING +TICKTACKS +TICKTACKTOE +TICKTACKTOES +TICKTOCK +TICKTOCKED +TICKTOCKING +TICKTOCKS +TICS +TICTAC +TICTACKED +TICTACKING +TICTACS +TICTOC +TICTOCKED +TICTOCKING +TICTOCS +TIDAL +TIDALLY +TIDBIT +TIDBITS +TIDDLEDYWINKS +TIDDLER +TIDDLERS +TIDDLY +TIDDLYWINKS +TIDE +TIDED +TIDELAND +TIDELANDS +TIDELESS +TIDELIKE +TIDEMARK +TIDEMARKS +TIDERIP +TIDERIPS +TIDES +TIDEWATER +TIDEWATERS +TIDEWAY +TIDEWAYS +TIDIED +TIDIER +TIDIERS +TIDIES +TIDIEST +TIDILY +TIDINESS +TIDINESSES +TIDING +TIDINGS +TIDY +TIDYING +TIDYTIPS +TIE +TIEBACK +TIEBACKS +TIEBREAK +TIEBREAKER +TIEBREAKERS +TIEBREAKS +TIECLASP +TIECLASPS +TIED +TIEING +TIELESS +TIEMANNITE +TIEMANNITES +TIEPIN +TIEPINS +TIER +TIERCE +TIERCED +TIERCEL +TIERCELS +TIERCERON +TIERCERONS +TIERCES +TIERED +TIERING +TIERS +TIES +TIFF +TIFFANIES +TIFFANY +TIFFED +TIFFIN +TIFFINED +TIFFING +TIFFINING +TIFFINS +TIFFS +TIGER +TIGEREYE +TIGEREYES +TIGERISH +TIGERISHLY +TIGERISHNESS +TIGERISHNESSES +TIGERLIKE +TIGERS +TIGHT +TIGHTEN +TIGHTENED +TIGHTENER +TIGHTENERS +TIGHTENING +TIGHTENS +TIGHTER +TIGHTEST +TIGHTFISTED +TIGHTFISTEDNESS +TIGHTKNIT +TIGHTLY +TIGHTNESS +TIGHTNESSES +TIGHTROPE +TIGHTROPES +TIGHTS +TIGHTWAD +TIGHTWADS +TIGHTWIRE +TIGHTWIRES +TIGLON +TIGLONS +TIGON +TIGONS +TIGRESS +TIGRESSES +TIGRISH +TIKE +TIKES +TIKI +TIKIS +TIKKA +TIKKAS +TIL +TILAK +TILAKS +TILAPIA +TILAPIAS +TILBURIES +TILBURY +TILDE +TILDES +TILE +TILED +TILEFISH +TILEFISHES +TILELIKE +TILER +TILERS +TILES +TILING +TILINGS +TILL +TILLABLE +TILLAGE +TILLAGES +TILLANDSIA +TILLANDSIAS +TILLED +TILLER +TILLERED +TILLERING +TILLERMAN +TILLERMEN +TILLERS +TILLING +TILLITE +TILLITES +TILLS +TILS +TILT +TILTABLE +TILTED +TILTER +TILTERS +TILTH +TILTHS +TILTING +TILTMETER +TILTMETERS +TILTROTOR +TILTROTORS +TILTS +TILTYARD +TILTYARDS +TIMARAU +TIMARAUS +TIMBAL +TIMBALE +TIMBALES +TIMBALS +TIMBER +TIMBERDOODLE +TIMBERDOODLES +TIMBERED +TIMBERHEAD +TIMBERHEADS +TIMBERING +TIMBERINGS +TIMBERLAND +TIMBERLANDS +TIMBERLINE +TIMBERLINES +TIMBERMAN +TIMBERMEN +TIMBERS +TIMBERWORK +TIMBERWORKS +TIMBERY +TIMBRAL +TIMBRE +TIMBREL +TIMBRELLED +TIMBRELS +TIMBRES +TIME +TIMECARD +TIMECARDS +TIMED +TIMEKEEPER +TIMEKEEPERS +TIMEKEEPING +TIMEKEEPINGS +TIMELESS +TIMELESSLY +TIMELESSNESS +TIMELESSNESSES +TIMELIER +TIMELIEST +TIMELINE +TIMELINES +TIMELINESS +TIMELINESSES +TIMELY +TIMEOUS +TIMEOUSLY +TIMEOUT +TIMEOUTS +TIMEPIECE +TIMEPIECES +TIMEPLEASER +TIMEPLEASERS +TIMER +TIMERS +TIMES +TIMESAVER +TIMESAVERS +TIMESAVING +TIMESCALE +TIMESCALES +TIMESERVER +TIMESERVERS +TIMESERVING +TIMESERVINGS +TIMETABLE +TIMETABLES +TIMEWORK +TIMEWORKER +TIMEWORKERS +TIMEWORKS +TIMEWORN +TIMID +TIMIDER +TIMIDEST +TIMIDITIES +TIMIDITY +TIMIDLY +TIMIDNESS +TIMIDNESSES +TIMING +TIMINGS +TIMOCRACIES +TIMOCRACY +TIMOCRATIC +TIMOCRATICAL +TIMOLOL +TIMOLOLS +TIMOROUS +TIMOROUSLY +TIMOROUSNESS +TIMOROUSNESSES +TIMOTHIES +TIMOTHY +TIMPANA +TIMPANI +TIMPANIST +TIMPANISTS +TIMPANO +TIMPANUM +TIMPANUMS +TIN +TINAMOU +TINAMOUS +TINCAL +TINCALS +TINCT +TINCTED +TINCTING +TINCTORIAL +TINCTORIALLY +TINCTS +TINCTURE +TINCTURED +TINCTURES +TINCTURING +TINDER +TINDERBOX +TINDERBOXES +TINDERS +TINDERY +TINE +TINEA +TINEAL +TINEAS +TINED +TINEID +TINEIDS +TINES +TINFOIL +TINFOILS +TINFUL +TINFULS +TING +TINGE +TINGED +TINGEING +TINGES +TINGING +TINGLE +TINGLED +TINGLER +TINGLERS +TINGLES +TINGLIER +TINGLIEST +TINGLING +TINGLINGLY +TINGLY +TINGS +TINHORN +TINHORNS +TINIER +TINIEST +TINILY +TININESS +TININESSES +TINING +TINKER +TINKERED +TINKERER +TINKERERS +TINKERING +TINKERS +TINKERTOY +TINKERTOYS +TINKLE +TINKLED +TINKLER +TINKLERS +TINKLES +TINKLIER +TINKLIEST +TINKLING +TINKLINGS +TINKLY +TINLIKE +TINMAN +TINMEN +TINNED +TINNER +TINNERS +TINNIER +TINNIEST +TINNILY +TINNINESS +TINNINESSES +TINNING +TINNITUS +TINNITUSES +TINNY +TINPLATE +TINPLATES +TINPOT +TINS +TINSEL +TINSELED +TINSELING +TINSELLED +TINSELLING +TINSELLY +TINSELS +TINSMITH +TINSMITHING +TINSMITHINGS +TINSMITHS +TINSNIPS +TINSTONE +TINSTONES +TINT +TINTED +TINTER +TINTERS +TINTING +TINTINGS +TINTINNABULARY +TINTLESS +TINTS +TINTYPE +TINTYPES +TINWARE +TINWARES +TINWORK +TINWORKS +TINY +TIP +TIPCART +TIPCARTS +TIPCAT +TIPCATS +TIPI +TIPIS +TIPLESS +TIPOFF +TIPOFFS +TIPPABLE +TIPPED +TIPPER +TIPPERS +TIPPET +TIPPETS +TIPPIER +TIPPIEST +TIPPING +TIPPLE +TIPPLED +TIPPLER +TIPPLERS +TIPPLES +TIPPLING +TIPPY +TIPPYTOE +TIPPYTOED +TIPPYTOEING +TIPPYTOES +TIPS +TIPSHEET +TIPSHEETS +TIPSIER +TIPSIEST +TIPSILY +TIPSINESS +TIPSINESSES +TIPSTAFF +TIPSTAFFS +TIPSTAVES +TIPSTER +TIPSTERS +TIPSTOCK +TIPSTOCKS +TIPSY +TIPTOE +TIPTOED +TIPTOEING +TIPTOES +TIPTOP +TIPTOPS +TIRADE +TIRADES +TIRAMISU +TIRAMISUS +TIRE +TIRED +TIREDER +TIREDEST +TIREDLY +TIREDNESS +TIREDNESSES +TIRELESS +TIRELESSLY +TIRELESSNESS +TIRELESSNESSES +TIRES +TIRESOME +TIRESOMELY +TIRESOMENESS +TIRESOMENESSES +TIREWOMAN +TIREWOMEN +TIRING +TIRL +TIRLED +TIRLING +TIRLS +TIRO +TIROS +TIRRIVEE +TIRRIVEES +TIS +TISANE +TISANES +TISSUAL +TISSUE +TISSUED +TISSUES +TISSUEY +TISSUING +TISSULAR +TIT +TITAN +TITANATE +TITANATES +TITANESS +TITANESSES +TITANIA +TITANIAS +TITANIC +TITANICALLY +TITANIFEROUS +TITANISM +TITANISMS +TITANITE +TITANITES +TITANIUM +TITANIUMS +TITANOUS +TITANS +TITBIT +TITBITS +TITER +TITERS +TITFER +TITFERS +TITHABLE +TITHE +TITHED +TITHER +TITHERS +TITHES +TITHING +TITHINGS +TITHONIA +TITHONIAS +TITI +TITIAN +TITIANS +TITILLATE +TITILLATED +TITILLATES +TITILLATING +TITILLATINGLY +TITILLATION +TITILLATIONS +TITILLATIVE +TITIS +TITIVATE +TITIVATED +TITIVATES +TITIVATING +TITIVATION +TITIVATIONS +TITLARK +TITLARKS +TITLE +TITLED +TITLEHOLDER +TITLEHOLDERS +TITLES +TITLING +TITLIST +TITLISTS +TITMAN +TITMEN +TITMICE +TITMOUSE +TITRABLE +TITRANT +TITRANTS +TITRATABLE +TITRATE +TITRATED +TITRATES +TITRATING +TITRATION +TITRATIONS +TITRATOR +TITRATORS +TITRE +TITRES +TITRIMETRIC +TITS +TITTER +TITTERED +TITTERER +TITTERERS +TITTERING +TITTERS +TITTIE +TITTIES +TITTIVATE +TITTIVATED +TITTIVATES +TITTIVATING +TITTLE +TITTLES +TITTUP +TITTUPED +TITTUPING +TITTUPPED +TITTUPPING +TITTUPPY +TITTUPS +TITTY +TITUBANT +TITULAR +TITULARIES +TITULARLY +TITULARS +TITULARY +TIVY +TIZZIES +TIZZY +TMESES +TMESIS +TO +TOAD +TOADEATER +TOADEATERS +TOADFISH +TOADFISHES +TOADFLAX +TOADFLAXES +TOADIED +TOADIES +TOADISH +TOADLESS +TOADLIKE +TOADS +TOADSTONE +TOADSTONES +TOADSTOOL +TOADSTOOLS +TOADY +TOADYING +TOADYISH +TOADYISM +TOADYISMS +TOAST +TOASTED +TOASTER +TOASTERS +TOASTIER +TOASTIEST +TOASTING +TOASTMASTER +TOASTMASTERS +TOASTMISTRESS +TOASTMISTRESSES +TOASTS +TOASTY +TOBACCO +TOBACCOES +TOBACCONIST +TOBACCONISTS +TOBACCOS +TOBIES +TOBOGGAN +TOBOGGANED +TOBOGGANER +TOBOGGANERS +TOBOGGANING +TOBOGGANINGS +TOBOGGANIST +TOBOGGANISTS +TOBOGGANS +TOBY +TOCCATA +TOCCATAS +TOCCATE +TOCHER +TOCHERED +TOCHERING +TOCHERS +TOCOLOGIES +TOCOLOGY +TOCOPHEROL +TOCOPHEROLS +TOCSIN +TOCSINS +TOD +TODAY +TODAYS +TODDIES +TODDLE +TODDLED +TODDLER +TODDLERHOOD +TODDLERHOODS +TODDLERS +TODDLES +TODDLING +TODDY +TODIES +TODS +TODY +TOE +TOEA +TOEAS +TOECAP +TOECAPS +TOED +TOEHOLD +TOEHOLDS +TOEING +TOELESS +TOELIKE +TOENAIL +TOENAILED +TOENAILING +TOENAILS +TOEPIECE +TOEPIECES +TOEPLATE +TOEPLATES +TOES +TOESHOE +TOESHOES +TOFF +TOFFEE +TOFFEES +TOFFIES +TOFFS +TOFFY +TOFT +TOFTS +TOFU +TOFUS +TOFUTTI +TOFUTTIS +TOG +TOGA +TOGAE +TOGAED +TOGAS +TOGATE +TOGATED +TOGAVIRUS +TOGAVIRUSES +TOGETHER +TOGETHERNESS +TOGETHERNESSES +TOGGED +TOGGERIES +TOGGERY +TOGGING +TOGGLE +TOGGLED +TOGGLER +TOGGLERS +TOGGLES +TOGGLING +TOGS +TOGUE +TOGUES +TOIL +TOILE +TOILED +TOILER +TOILERS +TOILES +TOILET +TOILETED +TOILETING +TOILETRIES +TOILETRY +TOILETS +TOILETTE +TOILETTES +TOILFUL +TOILFULLY +TOILING +TOILS +TOILSOME +TOILSOMELY +TOILSOMENESS +TOILSOMENESSES +TOILWORN +TOIT +TOITED +TOITING +TOITS +TOKAMAK +TOKAMAKS +TOKAY +TOKAYS +TOKE +TOKED +TOKEN +TOKENED +TOKENING +TOKENISM +TOKENISMS +TOKENS +TOKER +TOKERS +TOKES +TOKING +TOKOLOGIES +TOKOLOGY +TOKOMAK +TOKOMAKS +TOKONOMA +TOKONOMAS +TOLA +TOLAN +TOLANE +TOLANES +TOLANS +TOLAR +TOLARJEV +TOLARS +TOLAS +TOLBOOTH +TOLBOOTHS +TOLBUTAMIDE +TOLBUTAMIDES +TOLD +TOLE +TOLED +TOLEDO +TOLEDOS +TOLERABILITIES +TOLERABILITY +TOLERABLE +TOLERABLY +TOLERANCE +TOLERANCES +TOLERANT +TOLERANTLY +TOLERATE +TOLERATED +TOLERATES +TOLERATING +TOLERATION +TOLERATIONS +TOLERATIVE +TOLERATOR +TOLERATORS +TOLES +TOLIDIN +TOLIDINE +TOLIDINES +TOLIDINS +TOLING +TOLL +TOLLAGE +TOLLAGES +TOLLBAR +TOLLBARS +TOLLBOOTH +TOLLBOOTHS +TOLLED +TOLLER +TOLLERS +TOLLGATE +TOLLGATES +TOLLHOUSE +TOLLHOUSES +TOLLING +TOLLMAN +TOLLMEN +TOLLS +TOLLWAY +TOLLWAYS +TOLU +TOLUATE +TOLUATES +TOLUENE +TOLUENES +TOLUIC +TOLUID +TOLUIDE +TOLUIDES +TOLUIDIDE +TOLUIDIDES +TOLUIDIN +TOLUIDINE +TOLUIDINES +TOLUIDINS +TOLUIDS +TOLUOL +TOLUOLE +TOLUOLES +TOLUOLS +TOLUS +TOLUYL +TOLUYLS +TOLYL +TOLYLS +TOM +TOMAHAWK +TOMAHAWKED +TOMAHAWKING +TOMAHAWKS +TOMALLEY +TOMALLEYS +TOMAN +TOMANS +TOMATILLO +TOMATILLOES +TOMATILLOS +TOMATO +TOMATOES +TOMATOEY +TOMB +TOMBAC +TOMBACK +TOMBACKS +TOMBACS +TOMBAK +TOMBAKS +TOMBAL +TOMBED +TOMBING +TOMBLESS +TOMBLIKE +TOMBOLA +TOMBOLAS +TOMBOLO +TOMBOLOS +TOMBOY +TOMBOYISH +TOMBOYISHNESS +TOMBOYISHNESSES +TOMBOYS +TOMBS +TOMBSTONE +TOMBSTONES +TOMCAT +TOMCATS +TOMCATTED +TOMCATTING +TOMCOD +TOMCODS +TOME +TOMENTA +TOMENTOSE +TOMENTUM +TOMES +TOMFOOL +TOMFOOLERIES +TOMFOOLERY +TOMFOOLS +TOMMED +TOMMIES +TOMMING +TOMMY +TOMMYROT +TOMMYROTS +TOMOGRAM +TOMOGRAMS +TOMOGRAPH +TOMOGRAPHIC +TOMOGRAPHIES +TOMOGRAPHS +TOMOGRAPHY +TOMORROW +TOMORROWS +TOMPION +TOMPIONS +TOMS +TOMTIT +TOMTITS +TON +TONAL +TONALITIES +TONALITY +TONALLY +TONDI +TONDO +TONDOS +TONE +TONEARM +TONEARMS +TONED +TONELESS +TONELESSLY +TONELESSNESS +TONELESSNESSES +TONEME +TONEMES +TONEMIC +TONER +TONERS +TONES +TONETIC +TONETICALLY +TONETICS +TONETTE +TONETTES +TONEY +TONG +TONGA +TONGAS +TONGED +TONGER +TONGERS +TONGING +TONGMAN +TONGMEN +TONGS +TONGUE +TONGUED +TONGUELESS +TONGUELIKE +TONGUES +TONGUING +TONGUINGS +TONIC +TONICALLY +TONICITIES +TONICITY +TONICS +TONIER +TONIEST +TONIGHT +TONIGHTS +TONING +TONISH +TONISHLY +TONLET +TONLETS +TONNAGE +TONNAGES +TONNE +TONNEAU +TONNEAUS +TONNEAUX +TONNER +TONNERS +TONNES +TONNISH +TONOMETER +TONOMETERS +TONOMETRIES +TONOMETRY +TONOPLAST +TONOPLASTS +TONS +TONSIL +TONSILAR +TONSILLAR +TONSILLECTOMIES +TONSILLECTOMY +TONSILLITIS +TONSILLITISES +TONSILS +TONSORIAL +TONSURE +TONSURED +TONSURES +TONSURING +TONTINE +TONTINES +TONUS +TONUSES +TONY +TOO +TOOK +TOOL +TOOLBAR +TOOLBARS +TOOLBOX +TOOLBOXES +TOOLED +TOOLER +TOOLERS +TOOLHEAD +TOOLHEADS +TOOLHOLDER +TOOLHOLDERS +TOOLHOUSE +TOOLHOUSES +TOOLING +TOOLINGS +TOOLLESS +TOOLMAKER +TOOLMAKERS +TOOLMAKING +TOOLMAKINGS +TOOLROOM +TOOLROOMS +TOOLS +TOOLSHED +TOOLSHEDS +TOOM +TOON +TOONIE +TOONIES +TOONS +TOOT +TOOTED +TOOTER +TOOTERS +TOOTH +TOOTHACHE +TOOTHACHES +TOOTHBRUSH +TOOTHBRUSHES +TOOTHBRUSHING +TOOTHBRUSHINGS +TOOTHED +TOOTHIER +TOOTHIEST +TOOTHILY +TOOTHING +TOOTHLESS +TOOTHLIKE +TOOTHPASTE +TOOTHPASTES +TOOTHPICK +TOOTHPICKS +TOOTHS +TOOTHSOME +TOOTHSOMELY +TOOTHSOMENESS +TOOTHSOMENESSES +TOOTHWORT +TOOTHWORTS +TOOTHY +TOOTING +TOOTLE +TOOTLED +TOOTLER +TOOTLERS +TOOTLES +TOOTLING +TOOTS +TOOTSES +TOOTSIE +TOOTSIES +TOOTSY +TOP +TOPAZ +TOPAZES +TOPAZINE +TOPCOAT +TOPCOATS +TOPCROSS +TOPCROSSES +TOPDRESSING +TOPDRESSINGS +TOPE +TOPED +TOPEE +TOPEES +TOPER +TOPERS +TOPES +TOPFLIGHT +TOPFUL +TOPFULL +TOPGALLANT +TOPGALLANTS +TOPH +TOPHE +TOPHES +TOPHI +TOPHS +TOPHUS +TOPI +TOPIARIES +TOPIARY +TOPIC +TOPICAL +TOPICALITIES +TOPICALITY +TOPICALLY +TOPICS +TOPING +TOPIS +TOPKICK +TOPKICKS +TOPKNOT +TOPKNOTS +TOPLESS +TOPLESSNESS +TOPLESSNESSES +TOPLINE +TOPLINES +TOPLOFTICAL +TOPLOFTIER +TOPLOFTIEST +TOPLOFTILY +TOPLOFTINESS +TOPLOFTINESSES +TOPLOFTY +TOPMAST +TOPMASTS +TOPMINNOW +TOPMINNOWS +TOPMOST +TOPNOTCH +TOPNOTCHER +TOPNOTCHERS +TOPO +TOPOCENTRIC +TOPOGRAPH +TOPOGRAPHER +TOPOGRAPHERS +TOPOGRAPHIC +TOPOGRAPHICAL +TOPOGRAPHICALLY +TOPOGRAPHIES +TOPOGRAPHS +TOPOGRAPHY +TOPOI +TOPOLOGIC +TOPOLOGICAL +TOPOLOGICALLY +TOPOLOGIES +TOPOLOGIST +TOPOLOGISTS +TOPOLOGY +TOPONYM +TOPONYMIC +TOPONYMICAL +TOPONYMIES +TOPONYMIST +TOPONYMISTS +TOPONYMS +TOPONYMY +TOPOS +TOPOTYPE +TOPOTYPES +TOPPED +TOPPER +TOPPERS +TOPPING +TOPPINGS +TOPPLE +TOPPLED +TOPPLES +TOPPLING +TOPS +TOPSAIL +TOPSAILS +TOPSIDE +TOPSIDER +TOPSIDERS +TOPSIDES +TOPSOIL +TOPSOILED +TOPSOILING +TOPSOILS +TOPSPIN +TOPSPINS +TOPSTITCH +TOPSTITCHED +TOPSTITCHES +TOPSTITCHING +TOPSTONE +TOPSTONES +TOPWORK +TOPWORKED +TOPWORKING +TOPWORKS +TOQUE +TOQUES +TOQUET +TOQUETS +TOR +TORA +TORAH +TORAHS +TORAS +TORC +TORCH +TORCHABLE +TORCHBEARER +TORCHBEARERS +TORCHED +TORCHERE +TORCHERES +TORCHES +TORCHIER +TORCHIERE +TORCHIERES +TORCHIERS +TORCHIEST +TORCHING +TORCHLIGHT +TORCHLIGHTS +TORCHLIKE +TORCHON +TORCHONS +TORCHWOOD +TORCHWOODS +TORCHY +TORCS +TORE +TOREADOR +TOREADORS +TORERO +TOREROS +TORES +TOREUTIC +TOREUTICS +TORI +TORIC +TORICS +TORIES +TORII +TORMENT +TORMENTED +TORMENTER +TORMENTERS +TORMENTIL +TORMENTILS +TORMENTING +TORMENTOR +TORMENTORS +TORMENTS +TORN +TORNADIC +TORNADO +TORNADOES +TORNADOS +TORNILLO +TORNILLOS +TORO +TOROID +TOROIDAL +TOROIDALLY +TOROIDS +TOROS +TOROSE +TOROSITIES +TOROSITY +TOROT +TOROTH +TOROUS +TORPEDO +TORPEDOED +TORPEDOES +TORPEDOING +TORPEDOS +TORPID +TORPIDITIES +TORPIDITY +TORPIDLY +TORPIDS +TORPOR +TORPORS +TORQUATE +TORQUE +TORQUED +TORQUER +TORQUERS +TORQUES +TORQUESES +TORQUING +TORR +TORREFIED +TORREFIES +TORREFY +TORREFYING +TORRENT +TORRENTIAL +TORRENTIALLY +TORRENTS +TORRID +TORRIDER +TORRIDEST +TORRIDITIES +TORRIDITY +TORRIDLY +TORRIDNESS +TORRIDNESSES +TORRIFIED +TORRIFIES +TORRIFY +TORRIFYING +TORRS +TORS +TORSADE +TORSADES +TORSE +TORSES +TORSI +TORSION +TORSIONAL +TORSIONALLY +TORSIONS +TORSK +TORSKS +TORSO +TORSOS +TORT +TORTA +TORTAS +TORTE +TORTELLINI +TORTELLINIS +TORTEN +TORTES +TORTICOLLIS +TORTICOLLISES +TORTILE +TORTILLA +TORTILLAS +TORTIOUS +TORTIOUSLY +TORTOISE +TORTOISES +TORTOISESHELL +TORTOISESHELLS +TORTONI +TORTONIS +TORTRICID +TORTRICIDS +TORTRIX +TORTRIXES +TORTS +TORTUOSITIES +TORTUOSITY +TORTUOUS +TORTUOUSLY +TORTUOUSNESS +TORTUOUSNESSES +TORTURE +TORTURED +TORTURER +TORTURERS +TORTURES +TORTURING +TORTUROUS +TORTUROUSLY +TORULA +TORULAE +TORULAS +TORUS +TORY +TOSH +TOSHES +TOSS +TOSSED +TOSSER +TOSSERS +TOSSES +TOSSING +TOSSPOT +TOSSPOTS +TOSSUP +TOSSUPS +TOST +TOSTADA +TOSTADAS +TOSTADO +TOSTADOS +TOT +TOTABLE +TOTAL +TOTALED +TOTALING +TOTALISATOR +TOTALISATORS +TOTALISE +TOTALISED +TOTALISES +TOTALISING +TOTALISM +TOTALISMS +TOTALIST +TOTALISTIC +TOTALISTS +TOTALITARIAN +TOTALITARIANISM +TOTALITARIANIZE +TOTALITARIANS +TOTALITIES +TOTALITY +TOTALIZATOR +TOTALIZATORS +TOTALIZE +TOTALIZED +TOTALIZER +TOTALIZERS +TOTALIZES +TOTALIZING +TOTALLED +TOTALLING +TOTALLY +TOTALS +TOTAQUINE +TOTAQUINES +TOTE +TOTEABLE +TOTED +TOTEM +TOTEMIC +TOTEMISM +TOTEMISMS +TOTEMIST +TOTEMISTIC +TOTEMISTS +TOTEMITE +TOTEMITES +TOTEMS +TOTER +TOTERS +TOTES +TOTHER +TOTING +TOTIPOTENCIES +TOTIPOTENCY +TOTIPOTENT +TOTS +TOTTED +TOTTER +TOTTERED +TOTTERER +TOTTERERS +TOTTERING +TOTTERINGLY +TOTTERS +TOTTERY +TOTTING +TOUCAN +TOUCANS +TOUCH +TOUCHABLE +TOUCHBACK +TOUCHBACKS +TOUCHDOWN +TOUCHDOWNS +TOUCHE +TOUCHED +TOUCHER +TOUCHERS +TOUCHES +TOUCHHOLE +TOUCHHOLES +TOUCHIER +TOUCHIEST +TOUCHILY +TOUCHINESS +TOUCHINESSES +TOUCHING +TOUCHINGLY +TOUCHLINE +TOUCHLINES +TOUCHMARK +TOUCHMARKS +TOUCHPAD +TOUCHPADS +TOUCHSTONE +TOUCHSTONES +TOUCHTONE +TOUCHTONES +TOUCHUP +TOUCHUPS +TOUCHWOOD +TOUCHWOODS +TOUCHY +TOUGH +TOUGHED +TOUGHEN +TOUGHENED +TOUGHENER +TOUGHENERS +TOUGHENING +TOUGHENS +TOUGHER +TOUGHEST +TOUGHIE +TOUGHIES +TOUGHING +TOUGHISH +TOUGHLY +TOUGHNESS +TOUGHNESSES +TOUGHS +TOUGHY +TOUPEE +TOUPEES +TOUR +TOURACO +TOURACOS +TOURBILLION +TOURBILLIONS +TOURBILLON +TOURBILLONS +TOURED +TOURER +TOURERS +TOURING +TOURINGS +TOURISM +TOURISMS +TOURIST +TOURISTA +TOURISTAS +TOURISTED +TOURISTIC +TOURISTICALLY +TOURISTS +TOURISTY +TOURMALINE +TOURMALINES +TOURNAMENT +TOURNAMENTS +TOURNEDOS +TOURNEY +TOURNEYED +TOURNEYING +TOURNEYS +TOURNIQUET +TOURNIQUETS +TOURS +TOUSE +TOUSED +TOUSES +TOUSING +TOUSLE +TOUSLED +TOUSLES +TOUSLING +TOUT +TOUTED +TOUTER +TOUTERS +TOUTING +TOUTS +TOUZLE +TOUZLED +TOUZLES +TOUZLING +TOVARICH +TOVARICHES +TOVARISH +TOVARISHES +TOW +TOWABLE +TOWAGE +TOWAGES +TOWARD +TOWARDLINESS +TOWARDLINESSES +TOWARDLY +TOWARDS +TOWAWAY +TOWAWAYS +TOWBOAT +TOWBOATS +TOWED +TOWEL +TOWELED +TOWELETTE +TOWELETTES +TOWELING +TOWELINGS +TOWELLED +TOWELLING +TOWELLINGS +TOWELS +TOWER +TOWERED +TOWERIER +TOWERIEST +TOWERING +TOWERINGLY +TOWERLIKE +TOWERS +TOWERY +TOWHEAD +TOWHEADED +TOWHEADS +TOWHEE +TOWHEES +TOWIE +TOWIES +TOWING +TOWLINE +TOWLINES +TOWMOND +TOWMONDS +TOWMONT +TOWMONTS +TOWN +TOWNEE +TOWNEES +TOWNFOLK +TOWNHOME +TOWNHOMES +TOWNHOUSE +TOWNHOUSES +TOWNIE +TOWNIES +TOWNISH +TOWNLESS +TOWNLET +TOWNLETS +TOWNS +TOWNSCAPE +TOWNSCAPES +TOWNSFOLK +TOWNSHIP +TOWNSHIPS +TOWNSMAN +TOWNSMEN +TOWNSPEOPLE +TOWNSWOMAN +TOWNSWOMEN +TOWNWEAR +TOWNY +TOWPATH +TOWPATHS +TOWPLANE +TOWPLANES +TOWROPE +TOWROPES +TOWS +TOWSACK +TOWSACKS +TOWY +TOXAEMIA +TOXAEMIAS +TOXAEMIC +TOXAPHENE +TOXAPHENES +TOXEMIA +TOXEMIAS +TOXEMIC +TOXIC +TOXICAL +TOXICALLY +TOXICANT +TOXICANTS +TOXICITIES +TOXICITY +TOXICOLOGIC +TOXICOLOGICAL +TOXICOLOGICALLY +TOXICOLOGIES +TOXICOLOGIST +TOXICOLOGISTS +TOXICOLOGY +TOXICOSES +TOXICOSIS +TOXICS +TOXIGENIC +TOXIGENICITIES +TOXIGENICITY +TOXIN +TOXINE +TOXINES +TOXINS +TOXOID +TOXOIDS +TOXOPHILIES +TOXOPHILITE +TOXOPHILITES +TOXOPHILY +TOXOPLASMA +TOXOPLASMAS +TOXOPLASMIC +TOXOPLASMOSES +TOXOPLASMOSIS +TOY +TOYED +TOYER +TOYERS +TOYING +TOYISH +TOYLESS +TOYLIKE +TOYO +TOYON +TOYONS +TOYOS +TOYS +TOYSHOP +TOYSHOPS +TRABEATE +TRABEATED +TRABEATION +TRABEATIONS +TRABECULA +TRABECULAE +TRABECULAR +TRABECULAS +TRABECULATE +TRACE +TRACEABILITIES +TRACEABILITY +TRACEABLE +TRACEABLY +TRACED +TRACELESS +TRACER +TRACERIED +TRACERIES +TRACERS +TRACERY +TRACES +TRACHEA +TRACHEAE +TRACHEAL +TRACHEARY +TRACHEAS +TRACHEATE +TRACHEATED +TRACHEATES +TRACHEID +TRACHEIDS +TRACHEITIS +TRACHEITISES +TRACHEOLAR +TRACHEOLE +TRACHEOLES +TRACHEOPHYTE +TRACHEOPHYTES +TRACHEOSTOMIES +TRACHEOSTOMY +TRACHEOTOMIES +TRACHEOTOMY +TRACHLE +TRACHLED +TRACHLES +TRACHLING +TRACHOMA +TRACHOMAS +TRACHYTE +TRACHYTES +TRACHYTIC +TRACING +TRACINGS +TRACK +TRACKABLE +TRACKAGE +TRACKAGES +TRACKBALL +TRACKBALLS +TRACKED +TRACKER +TRACKERS +TRACKING +TRACKINGS +TRACKLAYER +TRACKLAYERS +TRACKLAYING +TRACKLAYINGS +TRACKLESS +TRACKMAN +TRACKMEN +TRACKPAD +TRACKPADS +TRACKS +TRACKSIDE +TRACKSIDES +TRACKSUIT +TRACKSUITS +TRACKWALKER +TRACKWALKERS +TRACKWAY +TRACKWAYS +TRACT +TRACTABILITIES +TRACTABILITY +TRACTABLE +TRACTABLENESS +TRACTABLENESSES +TRACTABLY +TRACTATE +TRACTATES +TRACTILE +TRACTION +TRACTIONAL +TRACTIONS +TRACTIVE +TRACTOR +TRACTORS +TRACTS +TRAD +TRADABLE +TRADE +TRADEABLE +TRADECRAFT +TRADECRAFTS +TRADED +TRADEMARK +TRADEMARKED +TRADEMARKING +TRADEMARKS +TRADEOFF +TRADEOFFS +TRADER +TRADERS +TRADES +TRADESCANTIA +TRADESCANTIAS +TRADESMAN +TRADESMEN +TRADESPEOPLE +TRADING +TRADITION +TRADITIONAL +TRADITIONALISM +TRADITIONALISMS +TRADITIONALIST +TRADITIONALISTS +TRADITIONALIZE +TRADITIONALIZED +TRADITIONALIZES +TRADITIONALLY +TRADITIONARY +TRADITIONLESS +TRADITIONS +TRADITIVE +TRADITOR +TRADITORES +TRADUCE +TRADUCED +TRADUCEMENT +TRADUCEMENTS +TRADUCER +TRADUCERS +TRADUCES +TRADUCING +TRAFFIC +TRAFFICABILITY +TRAFFICABLE +TRAFFICKED +TRAFFICKER +TRAFFICKERS +TRAFFICKING +TRAFFICS +TRAGACANTH +TRAGACANTHS +TRAGEDIAN +TRAGEDIANS +TRAGEDIENNE +TRAGEDIENNES +TRAGEDIES +TRAGEDY +TRAGI +TRAGIC +TRAGICAL +TRAGICALLY +TRAGICOMEDIES +TRAGICOMEDY +TRAGICOMIC +TRAGICOMICAL +TRAGICS +TRAGOPAN +TRAGOPANS +TRAGUS +TRAIK +TRAIKED +TRAIKING +TRAIKS +TRAIL +TRAILBLAZER +TRAILBLAZERS +TRAILBLAZING +TRAILBREAKER +TRAILBREAKERS +TRAILED +TRAILER +TRAILERABLE +TRAILERED +TRAILERING +TRAILERINGS +TRAILERIST +TRAILERISTS +TRAILERITE +TRAILERITES +TRAILERS +TRAILHEAD +TRAILHEADS +TRAILING +TRAILLESS +TRAILS +TRAILSIDE +TRAIN +TRAINABILITIES +TRAINABILITY +TRAINABLE +TRAINBAND +TRAINBANDS +TRAINBEARER +TRAINBEARERS +TRAINED +TRAINEE +TRAINEES +TRAINEESHIP +TRAINEESHIPS +TRAINER +TRAINERS +TRAINFUL +TRAINFULS +TRAINING +TRAININGS +TRAINLOAD +TRAINLOADS +TRAINMAN +TRAINMEN +TRAINS +TRAINWAY +TRAINWAYS +TRAIPSE +TRAIPSED +TRAIPSES +TRAIPSING +TRAIT +TRAITOR +TRAITORESS +TRAITORESSES +TRAITOROUS +TRAITOROUSLY +TRAITORS +TRAITRESS +TRAITRESSES +TRAITS +TRAJECT +TRAJECTED +TRAJECTING +TRAJECTION +TRAJECTIONS +TRAJECTORIES +TRAJECTORY +TRAJECTS +TRAM +TRAMCAR +TRAMCARS +TRAMEL +TRAMELED +TRAMELING +TRAMELL +TRAMELLED +TRAMELLING +TRAMELLS +TRAMELS +TRAMLESS +TRAMLINE +TRAMLINES +TRAMMED +TRAMMEL +TRAMMELED +TRAMMELER +TRAMMELERS +TRAMMELING +TRAMMELLED +TRAMMELLING +TRAMMELS +TRAMMING +TRAMONTANE +TRAMONTANES +TRAMP +TRAMPED +TRAMPER +TRAMPERS +TRAMPIER +TRAMPIEST +TRAMPING +TRAMPISH +TRAMPLE +TRAMPLED +TRAMPLER +TRAMPLERS +TRAMPLES +TRAMPLING +TRAMPOLINE +TRAMPOLINER +TRAMPOLINERS +TRAMPOLINES +TRAMPOLINING +TRAMPOLININGS +TRAMPOLINIST +TRAMPOLINISTS +TRAMPS +TRAMPY +TRAMROAD +TRAMROADS +TRAMS +TRAMWAY +TRAMWAYS +TRANCE +TRANCED +TRANCELIKE +TRANCES +TRANCHE +TRANCHES +TRANCING +TRANGAM +TRANGAMS +TRANK +TRANKS +TRANNIES +TRANNY +TRANQ +TRANQS +TRANQUIL +TRANQUILER +TRANQUILEST +TRANQUILITIES +TRANQUILITY +TRANQUILIZE +TRANQUILIZED +TRANQUILIZER +TRANQUILIZERS +TRANQUILIZES +TRANQUILIZING +TRANQUILLER +TRANQUILLEST +TRANQUILLITIES +TRANQUILLITY +TRANQUILLIZE +TRANQUILLIZED +TRANQUILLIZER +TRANQUILLIZERS +TRANQUILLIZES +TRANQUILLIZING +TRANQUILLY +TRANQUILNESS +TRANQUILNESSES +TRANS +TRANSACT +TRANSACTED +TRANSACTING +TRANSACTINIDE +TRANSACTION +TRANSACTIONAL +TRANSACTIONS +TRANSACTOR +TRANSACTORS +TRANSACTS +TRANSALPINE +TRANSAMINASE +TRANSAMINASES +TRANSAMINATION +TRANSAMINATIONS +TRANSATLANTIC +TRANSAXLE +TRANSAXLES +TRANSCEIVER +TRANSCEIVERS +TRANSCEND +TRANSCENDED +TRANSCENDENCE +TRANSCENDENCES +TRANSCENDENCIES +TRANSCENDENCY +TRANSCENDENT +TRANSCENDENTAL +TRANSCENDENTLY +TRANSCENDING +TRANSCENDS +TRANSCRIBE +TRANSCRIBED +TRANSCRIBER +TRANSCRIBERS +TRANSCRIBES +TRANSCRIBING +TRANSCRIPT +TRANSCRIPTASE +TRANSCRIPTASES +TRANSCRIPTION +TRANSCRIPTIONAL +TRANSCRIPTIONS +TRANSCRIPTS +TRANSCULTURAL +TRANSCUTANEOUS +TRANSDERMAL +TRANSDUCE +TRANSDUCED +TRANSDUCER +TRANSDUCERS +TRANSDUCES +TRANSDUCING +TRANSDUCTANT +TRANSDUCTANTS +TRANSDUCTION +TRANSDUCTIONAL +TRANSDUCTIONS +TRANSECT +TRANSECTED +TRANSECTING +TRANSECTION +TRANSECTIONS +TRANSECTS +TRANSEPT +TRANSEPTAL +TRANSEPTS +TRANSEUNT +TRANSFECT +TRANSFECTED +TRANSFECTING +TRANSFECTION +TRANSFECTIONS +TRANSFECTS +TRANSFER +TRANSFERABILITY +TRANSFERABLE +TRANSFERAL +TRANSFERALS +TRANSFERASE +TRANSFERASES +TRANSFEREE +TRANSFEREES +TRANSFERENCE +TRANSFERENCES +TRANSFERENTIAL +TRANSFEROR +TRANSFERORS +TRANSFERRABLE +TRANSFERRED +TRANSFERRER +TRANSFERRERS +TRANSFERRIN +TRANSFERRING +TRANSFERRINS +TRANSFERS +TRANSFIGURATION +TRANSFIGURE +TRANSFIGURED +TRANSFIGURES +TRANSFIGURING +TRANSFINITE +TRANSFIX +TRANSFIXED +TRANSFIXES +TRANSFIXING +TRANSFIXION +TRANSFIXIONS +TRANSFIXT +TRANSFORM +TRANSFORMABLE +TRANSFORMATION +TRANSFORMATIONS +TRANSFORMATIVE +TRANSFORMED +TRANSFORMER +TRANSFORMERS +TRANSFORMING +TRANSFORMS +TRANSFUSABLE +TRANSFUSE +TRANSFUSED +TRANSFUSES +TRANSFUSIBLE +TRANSFUSING +TRANSFUSION +TRANSFUSIONAL +TRANSFUSIONS +TRANSGENDER +TRANSGENDERED +TRANSGENE +TRANSGENES +TRANSGENIC +TRANSGRESS +TRANSGRESSED +TRANSGRESSES +TRANSGRESSING +TRANSGRESSION +TRANSGRESSIONS +TRANSGRESSIVE +TRANSGRESSOR +TRANSGRESSORS +TRANSHIP +TRANSHIPPED +TRANSHIPPING +TRANSHIPS +TRANSHISTORICAL +TRANSHUMANCE +TRANSHUMANCES +TRANSHUMANT +TRANSHUMANTS +TRANSIENCE +TRANSIENCES +TRANSIENCIES +TRANSIENCY +TRANSIENT +TRANSIENTLY +TRANSIENTS +TRANSILLUMINATE +TRANSISTOR +TRANSISTORISE +TRANSISTORISED +TRANSISTORISES +TRANSISTORISING +TRANSISTORIZE +TRANSISTORIZED +TRANSISTORIZES +TRANSISTORIZING +TRANSISTORS +TRANSIT +TRANSITED +TRANSITING +TRANSITION +TRANSITIONAL +TRANSITIONALLY +TRANSITIONS +TRANSITIVE +TRANSITIVELY +TRANSITIVENESS +TRANSITIVITIES +TRANSITIVITY +TRANSITORILY +TRANSITORINESS +TRANSITORY +TRANSITS +TRANSLATABILITY +TRANSLATABLE +TRANSLATE +TRANSLATED +TRANSLATES +TRANSLATING +TRANSLATION +TRANSLATIONAL +TRANSLATIONS +TRANSLATIVE +TRANSLATOR +TRANSLATORS +TRANSLATORY +TRANSLITERATE +TRANSLITERATED +TRANSLITERATES +TRANSLITERATING +TRANSLITERATION +TRANSLOCATE +TRANSLOCATED +TRANSLOCATES +TRANSLOCATING +TRANSLOCATION +TRANSLOCATIONS +TRANSLUCENCE +TRANSLUCENCES +TRANSLUCENCIES +TRANSLUCENCY +TRANSLUCENT +TRANSLUCENTLY +TRANSMARINE +TRANSMEMBRANE +TRANSMIGRATE +TRANSMIGRATED +TRANSMIGRATES +TRANSMIGRATING +TRANSMIGRATION +TRANSMIGRATIONS +TRANSMIGRATOR +TRANSMIGRATORS +TRANSMIGRATORY +TRANSMISSIBLE +TRANSMISSION +TRANSMISSIONS +TRANSMISSIVE +TRANSMISSIVITY +TRANSMISSOMETER +TRANSMIT +TRANSMITS +TRANSMITTABLE +TRANSMITTAL +TRANSMITTALS +TRANSMITTANCE +TRANSMITTANCES +TRANSMITTED +TRANSMITTER +TRANSMITTERS +TRANSMITTING +TRANSMOGRIFIED +TRANSMOGRIFIES +TRANSMOGRIFY +TRANSMOGRIFYING +TRANSMONTANE +TRANSMOUNTAIN +TRANSMUTABLE +TRANSMUTATION +TRANSMUTATIONS +TRANSMUTATIVE +TRANSMUTE +TRANSMUTED +TRANSMUTES +TRANSMUTING +TRANSNATIONAL +TRANSNATURAL +TRANSOCEANIC +TRANSOM +TRANSOMS +TRANSONIC +TRANSPACIFIC +TRANSPARENCE +TRANSPARENCES +TRANSPARENCIES +TRANSPARENCY +TRANSPARENT +TRANSPARENTIZE +TRANSPARENTIZED +TRANSPARENTIZES +TRANSPARENTLY +TRANSPARENTNESS +TRANSPERSONAL +TRANSPICUOUS +TRANSPIERCE +TRANSPIERCED +TRANSPIERCES +TRANSPIERCING +TRANSPIRATION +TRANSPIRATIONAL +TRANSPIRATIONS +TRANSPIRE +TRANSPIRED +TRANSPIRES +TRANSPIRING +TRANSPLACENTAL +TRANSPLANT +TRANSPLANTABLE +TRANSPLANTATION +TRANSPLANTED +TRANSPLANTER +TRANSPLANTERS +TRANSPLANTING +TRANSPLANTS +TRANSPOLAR +TRANSPONDER +TRANSPONDERS +TRANSPONTINE +TRANSPORT +TRANSPORTABLE +TRANSPORTATION +TRANSPORTATIONS +TRANSPORTED +TRANSPORTER +TRANSPORTERS +TRANSPORTING +TRANSPORTS +TRANSPOSABLE +TRANSPOSE +TRANSPOSED +TRANSPOSES +TRANSPOSING +TRANSPOSITION +TRANSPOSITIONAL +TRANSPOSITIONS +TRANSPOSON +TRANSPOSONS +TRANSSEXUAL +TRANSSEXUALISM +TRANSSEXUALISMS +TRANSSEXUALITY +TRANSSEXUALS +TRANSSHAPE +TRANSSHAPED +TRANSSHAPES +TRANSSHAPING +TRANSSHIP +TRANSSHIPMENT +TRANSSHIPMENTS +TRANSSHIPPED +TRANSSHIPPING +TRANSSHIPS +TRANSSONIC +TRANSTHORACIC +TRANSUBSTANTIAL +TRANSUDATE +TRANSUDATES +TRANSUDATION +TRANSUDATIONS +TRANSUDE +TRANSUDED +TRANSUDES +TRANSUDING +TRANSURANIC +TRANSURANICS +TRANSURANIUM +TRANSVALUATE +TRANSVALUATED +TRANSVALUATES +TRANSVALUATING +TRANSVALUATION +TRANSVALUATIONS +TRANSVALUE +TRANSVALUED +TRANSVALUES +TRANSVALUING +TRANSVERSAL +TRANSVERSALS +TRANSVERSE +TRANSVERSELY +TRANSVERSES +TRANSVESTISM +TRANSVESTISMS +TRANSVESTITE +TRANSVESTITES +TRAP +TRAPAN +TRAPANNED +TRAPANNING +TRAPANS +TRAPBALL +TRAPBALLS +TRAPDOOR +TRAPDOORS +TRAPES +TRAPESED +TRAPESES +TRAPESING +TRAPEZE +TRAPEZES +TRAPEZIA +TRAPEZIAL +TRAPEZII +TRAPEZIST +TRAPEZISTS +TRAPEZIUM +TRAPEZIUMS +TRAPEZIUS +TRAPEZIUSES +TRAPEZOHEDRA +TRAPEZOHEDRON +TRAPEZOHEDRONS +TRAPEZOID +TRAPEZOIDAL +TRAPEZOIDS +TRAPLIKE +TRAPLINE +TRAPLINES +TRAPNEST +TRAPNESTED +TRAPNESTING +TRAPNESTS +TRAPPEAN +TRAPPED +TRAPPER +TRAPPERS +TRAPPING +TRAPPINGS +TRAPPOSE +TRAPPOUS +TRAPROCK +TRAPROCKS +TRAPS +TRAPSHOOTER +TRAPSHOOTERS +TRAPSHOOTING +TRAPSHOOTINGS +TRAPT +TRAPUNTO +TRAPUNTOS +TRASH +TRASHED +TRASHER +TRASHERS +TRASHES +TRASHIER +TRASHIEST +TRASHILY +TRASHINESS +TRASHINESSES +TRASHING +TRASHMAN +TRASHMEN +TRASHY +TRASS +TRASSES +TRATTORIA +TRATTORIAS +TRATTORIE +TRAUCHLE +TRAUCHLED +TRAUCHLES +TRAUCHLING +TRAUMA +TRAUMAS +TRAUMATA +TRAUMATIC +TRAUMATICALLY +TRAUMATISE +TRAUMATISED +TRAUMATISES +TRAUMATISING +TRAUMATISM +TRAUMATISMS +TRAUMATIZATION +TRAUMATIZATIONS +TRAUMATIZE +TRAUMATIZED +TRAUMATIZES +TRAUMATIZING +TRAVAIL +TRAVAILED +TRAVAILING +TRAVAILS +TRAVE +TRAVEL +TRAVELED +TRAVELER +TRAVELERS +TRAVELING +TRAVELLED +TRAVELLER +TRAVELLERS +TRAVELLING +TRAVELOG +TRAVELOGS +TRAVELOGUE +TRAVELOGUES +TRAVELS +TRAVERSABLE +TRAVERSAL +TRAVERSALS +TRAVERSE +TRAVERSED +TRAVERSER +TRAVERSERS +TRAVERSES +TRAVERSING +TRAVERTINE +TRAVERTINES +TRAVES +TRAVESTIED +TRAVESTIES +TRAVESTY +TRAVESTYING +TRAVOIS +TRAVOISE +TRAVOISES +TRAWL +TRAWLED +TRAWLER +TRAWLERMAN +TRAWLERMEN +TRAWLERS +TRAWLEY +TRAWLEYS +TRAWLING +TRAWLNET +TRAWLNETS +TRAWLS +TRAY +TRAYFUL +TRAYFULS +TRAYS +TRAZODONE +TRAZODONES +TREACHERIES +TREACHEROUS +TREACHEROUSLY +TREACHEROUSNESS +TREACHERY +TREACLE +TREACLES +TREACLIER +TREACLIEST +TREACLY +TREAD +TREADED +TREADER +TREADERS +TREADING +TREADLE +TREADLED +TREADLER +TREADLERS +TREADLES +TREADLESS +TREADLING +TREADMILL +TREADMILLS +TREADS +TREASON +TREASONABLE +TREASONABLY +TREASONOUS +TREASONS +TREASURABLE +TREASURE +TREASURED +TREASURER +TREASURERS +TREASURERSHIP +TREASURERSHIPS +TREASURES +TREASURIES +TREASURING +TREASURY +TREAT +TREATABILITIES +TREATABILITY +TREATABLE +TREATED +TREATER +TREATERS +TREATIES +TREATING +TREATISE +TREATISES +TREATMENT +TREATMENTS +TREATS +TREATY +TREBBIANO +TREBBIANOS +TREBLE +TREBLED +TREBLES +TREBLING +TREBLY +TREBUCHET +TREBUCHETS +TREBUCKET +TREBUCKETS +TRECENTO +TRECENTOS +TREDDLE +TREDDLED +TREDDLES +TREDDLING +TREDECILLION +TREDECILLIONS +TREE +TREED +TREEHOPPER +TREEHOPPERS +TREEHOUSE +TREEHOUSES +TREEING +TREELAWN +TREELAWNS +TREELESS +TREELIKE +TREEN +TREENAIL +TREENAILS +TREENS +TREENWARE +TREENWARES +TREES +TREETOP +TREETOPS +TREF +TREFAH +TREFOIL +TREFOILS +TREHALA +TREHALAS +TREHALOSE +TREHALOSES +TREILLAGE +TREILLAGES +TREK +TREKKED +TREKKER +TREKKERS +TREKKING +TREKS +TRELLIS +TRELLISED +TRELLISES +TRELLISING +TRELLISWORK +TRELLISWORKS +TREMATODE +TREMATODES +TREMBLE +TREMBLED +TREMBLER +TREMBLERS +TREMBLES +TREMBLIER +TREMBLIEST +TREMBLING +TREMBLY +TREMENDOUS +TREMENDOUSLY +TREMENDOUSNESS +TREMOLITE +TREMOLITES +TREMOLITIC +TREMOLO +TREMOLOS +TREMOR +TREMOROUS +TREMORS +TREMULANT +TREMULOUS +TREMULOUSLY +TREMULOUSNESS +TREMULOUSNESSES +TRENAIL +TRENAILS +TRENCH +TRENCHANCIES +TRENCHANCY +TRENCHANT +TRENCHANTLY +TRENCHED +TRENCHER +TRENCHERMAN +TRENCHERMEN +TRENCHERS +TRENCHES +TRENCHING +TREND +TRENDED +TRENDIER +TRENDIES +TRENDIEST +TRENDILY +TRENDINESS +TRENDINESSES +TRENDING +TRENDOID +TRENDOIDS +TRENDS +TRENDSETTER +TRENDSETTERS +TRENDSETTING +TRENDY +TREPAN +TREPANATION +TREPANATIONS +TREPANG +TREPANGS +TREPANNED +TREPANNER +TREPANNERS +TREPANNING +TREPANS +TREPHINATION +TREPHINATIONS +TREPHINE +TREPHINED +TREPHINES +TREPHINING +TREPID +TREPIDANT +TREPIDATION +TREPIDATIONS +TREPONEMA +TREPONEMAL +TREPONEMAS +TREPONEMATA +TREPONEMATOSES +TREPONEMATOSIS +TREPONEME +TREPONEMES +TRES +TRESPASS +TRESPASSED +TRESPASSER +TRESPASSERS +TRESPASSES +TRESPASSING +TRESS +TRESSED +TRESSEL +TRESSELS +TRESSES +TRESSIER +TRESSIEST +TRESSOUR +TRESSOURS +TRESSURE +TRESSURES +TRESSY +TRESTLE +TRESTLES +TRESTLEWORK +TRESTLEWORKS +TRET +TRETINOIN +TRETINOINS +TRETS +TREVALLIES +TREVALLY +TREVALLYS +TREVET +TREVETS +TREWS +TREY +TREYS +TRIABLE +TRIAC +TRIACETATE +TRIACETATES +TRIACID +TRIACIDS +TRIACS +TRIAD +TRIADIC +TRIADICALLY +TRIADICS +TRIADISM +TRIADISMS +TRIADS +TRIAGE +TRIAGED +TRIAGES +TRIAGING +TRIAL +TRIALOGUE +TRIALOGUES +TRIALS +TRIAMCINOLONE +TRIAMCINOLONES +TRIANGLE +TRIANGLED +TRIANGLES +TRIANGULAR +TRIANGULARITIES +TRIANGULARITY +TRIANGULARLY +TRIANGULATE +TRIANGULATED +TRIANGULATES +TRIANGULATING +TRIANGULATION +TRIANGULATIONS +TRIARCHIES +TRIARCHY +TRIASSIC +TRIATHLETE +TRIATHLETES +TRIATHLON +TRIATHLONS +TRIATOMIC +TRIAXIAL +TRIAXIALITIES +TRIAXIALITY +TRIAZIN +TRIAZINE +TRIAZINES +TRIAZINS +TRIAZOLE +TRIAZOLES +TRIBADE +TRIBADES +TRIBADIC +TRIBADISM +TRIBADISMS +TRIBAL +TRIBALISM +TRIBALISMS +TRIBALIST +TRIBALISTS +TRIBALLY +TRIBALS +TRIBASIC +TRIBE +TRIBES +TRIBESMAN +TRIBESMEN +TRIBESPEOPLE +TRIBOELECTRIC +TRIBOLOGICAL +TRIBOLOGIES +TRIBOLOGIST +TRIBOLOGISTS +TRIBOLOGY +TRIBRACH +TRIBRACHIC +TRIBRACHS +TRIBULATE +TRIBULATED +TRIBULATES +TRIBULATING +TRIBULATION +TRIBULATIONS +TRIBUNAL +TRIBUNALS +TRIBUNARY +TRIBUNATE +TRIBUNATES +TRIBUNE +TRIBUNES +TRIBUNESHIP +TRIBUNESHIPS +TRIBUTARIES +TRIBUTARY +TRIBUTE +TRIBUTES +TRICARBOXYLIC +TRICE +TRICED +TRICEP +TRICEPS +TRICEPSES +TRICERATOPS +TRICERATOPSES +TRICES +TRICHIASES +TRICHIASIS +TRICHINA +TRICHINAE +TRICHINAL +TRICHINAS +TRICHINIZE +TRICHINIZED +TRICHINIZES +TRICHINIZING +TRICHINOSES +TRICHINOSIS +TRICHINOUS +TRICHITE +TRICHITES +TRICHLORFON +TRICHLORFONS +TRICHLORPHON +TRICHLORPHONS +TRICHOCYST +TRICHOCYSTS +TRICHOGYNE +TRICHOGYNES +TRICHOID +TRICHOLOGIES +TRICHOLOGIST +TRICHOLOGISTS +TRICHOLOGY +TRICHOME +TRICHOMES +TRICHOMIC +TRICHOMONACIDAL +TRICHOMONACIDE +TRICHOMONACIDES +TRICHOMONAD +TRICHOMONADS +TRICHOMONAL +TRICHOMONIASES +TRICHOMONIASIS +TRICHOPTERAN +TRICHOPTERANS +TRICHOSES +TRICHOSIS +TRICHOTHECENE +TRICHOTHECENES +TRICHOTOMIES +TRICHOTOMOUS +TRICHOTOMOUSLY +TRICHOTOMY +TRICHROIC +TRICHROMAT +TRICHROMATIC +TRICHROMATISM +TRICHROMATISMS +TRICHROMATS +TRICHROME +TRICING +TRICK +TRICKED +TRICKER +TRICKERIES +TRICKERS +TRICKERY +TRICKIE +TRICKIER +TRICKIEST +TRICKILY +TRICKINESS +TRICKINESSES +TRICKING +TRICKISH +TRICKISHLY +TRICKISHNESS +TRICKISHNESSES +TRICKLE +TRICKLED +TRICKLES +TRICKLIER +TRICKLIEST +TRICKLING +TRICKLY +TRICKS +TRICKSIER +TRICKSIEST +TRICKSINESS +TRICKSINESSES +TRICKSTER +TRICKSTERS +TRICKSY +TRICKY +TRICLAD +TRICLADS +TRICLINIA +TRICLINIC +TRICLINIUM +TRICLOSAN +TRICLOSANS +TRICOLETTE +TRICOLETTES +TRICOLOR +TRICOLORED +TRICOLORS +TRICOLOUR +TRICOLOURS +TRICORN +TRICORNE +TRICORNERED +TRICORNES +TRICORNS +TRICOT +TRICOTINE +TRICOTINES +TRICOTS +TRICROTIC +TRICTRAC +TRICTRACS +TRICUSPID +TRICUSPIDS +TRICYCLE +TRICYCLES +TRICYCLIC +TRICYCLICS +TRIDACTYL +TRIDENT +TRIDENTAL +TRIDENTS +TRIDIMENSIONAL +TRIDUUM +TRIDUUMS +TRIED +TRIENE +TRIENES +TRIENNIA +TRIENNIAL +TRIENNIALLY +TRIENNIALS +TRIENNIUM +TRIENNIUMS +TRIENS +TRIENTES +TRIER +TRIERARCH +TRIERARCHIES +TRIERARCHS +TRIERARCHY +TRIERS +TRIES +TRIETHYL +TRIFACIAL +TRIFACIALS +TRIFECTA +TRIFECTAS +TRIFID +TRIFLE +TRIFLED +TRIFLER +TRIFLERS +TRIFLES +TRIFLING +TRIFLINGS +TRIFLUOPERAZINE +TRIFLURALIN +TRIFLURALINS +TRIFOCAL +TRIFOCALS +TRIFOLD +TRIFOLIATE +TRIFOLIOLATE +TRIFOLIUM +TRIFOLIUMS +TRIFORIA +TRIFORIUM +TRIFORM +TRIFORMED +TRIFURCATE +TRIFURCATED +TRIFURCATES +TRIFURCATING +TRIFURCATION +TRIFURCATIONS +TRIG +TRIGEMINAL +TRIGEMINALS +TRIGGED +TRIGGER +TRIGGERED +TRIGGERFISH +TRIGGERFISHES +TRIGGERING +TRIGGERMAN +TRIGGERMEN +TRIGGERS +TRIGGEST +TRIGGING +TRIGLY +TRIGLYCERIDE +TRIGLYCERIDES +TRIGLYPH +TRIGLYPHIC +TRIGLYPHICAL +TRIGLYPHS +TRIGNESS +TRIGNESSES +TRIGO +TRIGON +TRIGONAL +TRIGONALLY +TRIGONOMETRIC +TRIGONOMETRICAL +TRIGONOMETRIES +TRIGONOMETRY +TRIGONOUS +TRIGONS +TRIGOS +TRIGRAM +TRIGRAMS +TRIGRAPH +TRIGRAPHIC +TRIGRAPHS +TRIGS +TRIHALOMETHANE +TRIHALOMETHANES +TRIHEDRA +TRIHEDRAL +TRIHEDRALS +TRIHEDRON +TRIHEDRONS +TRIHYBRID +TRIHYBRIDS +TRIHYDROXY +TRIJET +TRIJETS +TRIJUGATE +TRIJUGOUS +TRIKE +TRIKES +TRILATERAL +TRILBIES +TRILBY +TRILINEAR +TRILINGUAL +TRILINGUALLY +TRILITERAL +TRILITERALISM +TRILITERALISMS +TRILITERALS +TRILITH +TRILITHON +TRILITHONS +TRILITHS +TRILL +TRILLED +TRILLER +TRILLERS +TRILLING +TRILLION +TRILLIONS +TRILLIONTH +TRILLIONTHS +TRILLIUM +TRILLIUMS +TRILLS +TRILOBAL +TRILOBATE +TRILOBED +TRILOBITE +TRILOBITES +TRILOGIES +TRILOGY +TRIM +TRIMARAN +TRIMARANS +TRIMER +TRIMERIC +TRIMERISM +TRIMERISMS +TRIMEROUS +TRIMERS +TRIMESTER +TRIMESTERS +TRIMETER +TRIMETERS +TRIMETHOPRIM +TRIMETHOPRIMS +TRIMETRIC +TRIMETROGON +TRIMETROGONS +TRIMLY +TRIMMED +TRIMMER +TRIMMERS +TRIMMEST +TRIMMING +TRIMMINGS +TRIMNESS +TRIMNESSES +TRIMONTHLY +TRIMORPH +TRIMORPHIC +TRIMORPHS +TRIMOTOR +TRIMOTORS +TRIMS +TRINAL +TRINARY +TRINDLE +TRINDLED +TRINDLES +TRINDLING +TRINE +TRINED +TRINES +TRINING +TRINITARIAN +TRINITIES +TRINITROTOLUENE +TRINITY +TRINKET +TRINKETED +TRINKETER +TRINKETERS +TRINKETING +TRINKETRIES +TRINKETRY +TRINKETS +TRINKUMS +TRINOCULAR +TRINODAL +TRINOMIAL +TRINOMIALS +TRINUCLEOTIDE +TRINUCLEOTIDES +TRIO +TRIODE +TRIODES +TRIOL +TRIOLET +TRIOLETS +TRIOLS +TRIOS +TRIOSE +TRIOSES +TRIOXID +TRIOXIDE +TRIOXIDES +TRIOXIDS +TRIP +TRIPACK +TRIPACKS +TRIPART +TRIPARTITE +TRIPE +TRIPEDAL +TRIPES +TRIPHASE +TRIPHOSPHATE +TRIPHOSPHATES +TRIPHTHONG +TRIPHTHONGAL +TRIPHTHONGS +TRIPINNATE +TRIPINNATELY +TRIPLANE +TRIPLANES +TRIPLE +TRIPLED +TRIPLES +TRIPLET +TRIPLETAIL +TRIPLETAILS +TRIPLETS +TRIPLEX +TRIPLEXES +TRIPLICATE +TRIPLICATED +TRIPLICATES +TRIPLICATING +TRIPLICATION +TRIPLICATIONS +TRIPLICITIES +TRIPLICITY +TRIPLING +TRIPLITE +TRIPLITES +TRIPLOBLASTIC +TRIPLOID +TRIPLOIDIES +TRIPLOIDS +TRIPLOIDY +TRIPLY +TRIPOD +TRIPODAL +TRIPODIC +TRIPODIES +TRIPODS +TRIPODY +TRIPOLI +TRIPOLIS +TRIPOS +TRIPOSES +TRIPPED +TRIPPER +TRIPPERS +TRIPPET +TRIPPETS +TRIPPIER +TRIPPIEST +TRIPPING +TRIPPINGLY +TRIPPINGS +TRIPPY +TRIPS +TRIPTAN +TRIPTANE +TRIPTANES +TRIPTANS +TRIPTYCA +TRIPTYCAS +TRIPTYCH +TRIPTYCHS +TRIPWIRE +TRIPWIRES +TRIQUETROUS +TRIRADIATE +TRIREME +TRIREMES +TRISACCHARIDE +TRISACCHARIDES +TRISCELE +TRISCELES +TRISECT +TRISECTED +TRISECTING +TRISECTION +TRISECTIONS +TRISECTOR +TRISECTORS +TRISECTS +TRISEME +TRISEMES +TRISEMIC +TRISHAW +TRISHAWS +TRISKELE +TRISKELES +TRISKELIA +TRISKELION +TRISKELIONS +TRISMIC +TRISMUS +TRISMUSES +TRISOCTAHEDRA +TRISOCTAHEDRON +TRISOCTAHEDRONS +TRISODIUM +TRISOME +TRISOMES +TRISOMIC +TRISOMICS +TRISOMIES +TRISOMY +TRISTATE +TRISTE +TRISTEARIN +TRISTEARINS +TRISTEZA +TRISTEZAS +TRISTFUL +TRISTFULLY +TRISTFULNESS +TRISTFULNESSES +TRISTICH +TRISTICHS +TRISTIMULUS +TRISUBSTITUTED +TRISULFIDE +TRISULFIDES +TRISYLLABIC +TRISYLLABLE +TRISYLLABLES +TRITE +TRITELY +TRITENESS +TRITENESSES +TRITER +TRITEST +TRITHEISM +TRITHEISMS +TRITHEIST +TRITHEISTIC +TRITHEISTICAL +TRITHEISTS +TRITHING +TRITHINGS +TRITIATED +TRITICALE +TRITICALES +TRITICUM +TRITICUMS +TRITIUM +TRITIUMS +TRITOMA +TRITOMAS +TRITON +TRITONE +TRITONES +TRITONS +TRITURABLE +TRITURATE +TRITURATED +TRITURATES +TRITURATING +TRITURATION +TRITURATIONS +TRITURATOR +TRITURATORS +TRIUMPH +TRIUMPHAL +TRIUMPHALISM +TRIUMPHALISMS +TRIUMPHALIST +TRIUMPHALISTS +TRIUMPHANT +TRIUMPHANTLY +TRIUMPHED +TRIUMPHING +TRIUMPHS +TRIUMVIR +TRIUMVIRATE +TRIUMVIRATES +TRIUMVIRI +TRIUMVIRS +TRIUNE +TRIUNES +TRIUNITIES +TRIUNITY +TRIVALENT +TRIVALVE +TRIVALVES +TRIVET +TRIVETS +TRIVIA +TRIVIAL +TRIVIALISE +TRIVIALISED +TRIVIALISES +TRIVIALISING +TRIVIALIST +TRIVIALISTS +TRIVIALITIES +TRIVIALITY +TRIVIALIZATION +TRIVIALIZATIONS +TRIVIALIZE +TRIVIALIZED +TRIVIALIZES +TRIVIALIZING +TRIVIALLY +TRIVIUM +TRIWEEKLIES +TRIWEEKLY +TROAK +TROAKED +TROAKING +TROAKS +TROCAR +TROCARS +TROCHAIC +TROCHAICS +TROCHAL +TROCHANTER +TROCHANTERAL +TROCHANTERIC +TROCHANTERS +TROCHAR +TROCHARS +TROCHE +TROCHEE +TROCHEES +TROCHES +TROCHIL +TROCHILI +TROCHILS +TROCHILUS +TROCHLEA +TROCHLEAE +TROCHLEAR +TROCHLEARS +TROCHLEAS +TROCHOID +TROCHOIDAL +TROCHOIDS +TROCHOPHORE +TROCHOPHORES +TROCK +TROCKED +TROCKING +TROCKS +TROD +TRODDEN +TRODE +TROFFER +TROFFERS +TROG +TROGLODYTE +TROGLODYTES +TROGLODYTIC +TROGON +TROGONS +TROGS +TROIKA +TROIKAS +TROILISM +TROILISMS +TROILITE +TROILITES +TROILUS +TROILUSES +TROIS +TROKE +TROKED +TROKES +TROKING +TROLAND +TROLANDS +TROLL +TROLLED +TROLLER +TROLLERS +TROLLEY +TROLLEYBUS +TROLLEYBUSES +TROLLEYBUSSES +TROLLEYED +TROLLEYING +TROLLEYS +TROLLIED +TROLLIES +TROLLING +TROLLINGS +TROLLOP +TROLLOPS +TROLLOPY +TROLLS +TROLLY +TROLLYING +TROMBONE +TROMBONES +TROMBONIST +TROMBONISTS +TROMMEL +TROMMELS +TROMP +TROMPE +TROMPED +TROMPES +TROMPING +TROMPS +TRONA +TRONAS +TRONE +TRONES +TROOP +TROOPED +TROOPER +TROOPERS +TROOPIAL +TROOPIALS +TROOPING +TROOPS +TROOPSHIP +TROOPSHIPS +TROOSTITE +TROOSTITES +TROOZ +TROP +TROPAEOLA +TROPAEOLUM +TROPAEOLUMS +TROPE +TROPEOLIN +TROPEOLINS +TROPES +TROPHALLAXES +TROPHALLAXIS +TROPHIC +TROPHICALLY +TROPHIED +TROPHIES +TROPHOBLAST +TROPHOBLASTIC +TROPHOBLASTS +TROPHOZOITE +TROPHOZOITES +TROPHY +TROPHYING +TROPIC +TROPICAL +TROPICALIZE +TROPICALIZED +TROPICALIZES +TROPICALIZING +TROPICALLY +TROPICALS +TROPICS +TROPIN +TROPINE +TROPINES +TROPINS +TROPISM +TROPISMS +TROPISTIC +TROPOCOLLAGEN +TROPOCOLLAGENS +TROPOLOGIC +TROPOLOGICAL +TROPOLOGICALLY +TROPOLOGIES +TROPOLOGY +TROPOMYOSIN +TROPOMYOSINS +TROPONIN +TROPONINS +TROPOPAUSE +TROPOPAUSES +TROPOSPHERE +TROPOSPHERES +TROPOSPHERIC +TROPOTAXES +TROPOTAXIS +TROT +TROTH +TROTHED +TROTHING +TROTHPLIGHT +TROTHPLIGHTED +TROTHPLIGHTING +TROTHPLIGHTS +TROTHS +TROTLINE +TROTLINES +TROTS +TROTTED +TROTTER +TROTTERS +TROTTING +TROTYL +TROTYLS +TROUBADOUR +TROUBADOURS +TROUBLE +TROUBLED +TROUBLEMAKER +TROUBLEMAKERS +TROUBLEMAKING +TROUBLEMAKINGS +TROUBLER +TROUBLERS +TROUBLES +TROUBLESHOOT +TROUBLESHOOTER +TROUBLESHOOTERS +TROUBLESHOOTING +TROUBLESHOOTS +TROUBLESHOT +TROUBLESOME +TROUBLESOMELY +TROUBLESOMENESS +TROUBLING +TROUBLOUS +TROUBLOUSLY +TROUBLOUSNESS +TROUBLOUSNESSES +TROUGH +TROUGHS +TROUNCE +TROUNCED +TROUNCER +TROUNCERS +TROUNCES +TROUNCING +TROUPE +TROUPED +TROUPER +TROUPERS +TROUPES +TROUPIAL +TROUPIALS +TROUPING +TROUSER +TROUSERS +TROUSSEAU +TROUSSEAUS +TROUSSEAUX +TROUT +TROUTIER +TROUTIEST +TROUTS +TROUTY +TROUVERE +TROUVERES +TROUVEUR +TROUVEURS +TROVE +TROVER +TROVERS +TROVES +TROW +TROWED +TROWEL +TROWELED +TROWELER +TROWELERS +TROWELING +TROWELLED +TROWELLER +TROWELLERS +TROWELLING +TROWELS +TROWING +TROWS +TROWSERS +TROWTH +TROWTHS +TROY +TROYS +TRUANCIES +TRUANCY +TRUANT +TRUANTED +TRUANTING +TRUANTLY +TRUANTRIES +TRUANTRY +TRUANTS +TRUCE +TRUCED +TRUCELESS +TRUCES +TRUCING +TRUCK +TRUCKABLE +TRUCKAGE +TRUCKAGES +TRUCKED +TRUCKER +TRUCKERS +TRUCKFUL +TRUCKFULS +TRUCKING +TRUCKINGS +TRUCKLE +TRUCKLED +TRUCKLER +TRUCKLERS +TRUCKLES +TRUCKLINE +TRUCKLINES +TRUCKLING +TRUCKLOAD +TRUCKLOADS +TRUCKMAN +TRUCKMASTER +TRUCKMASTERS +TRUCKMEN +TRUCKS +TRUCULENCE +TRUCULENCES +TRUCULENCIES +TRUCULENCY +TRUCULENT +TRUCULENTLY +TRUDGE +TRUDGED +TRUDGEN +TRUDGENS +TRUDGEON +TRUDGEONS +TRUDGER +TRUDGERS +TRUDGES +TRUDGING +TRUE +TRUEBLUE +TRUEBLUES +TRUEBORN +TRUEBRED +TRUED +TRUEHEARTED +TRUEHEARTEDNESS +TRUEING +TRUELOVE +TRUELOVES +TRUENESS +TRUENESSES +TRUEPENNIES +TRUEPENNY +TRUER +TRUES +TRUEST +TRUFFE +TRUFFES +TRUFFLE +TRUFFLED +TRUFFLES +TRUG +TRUGS +TRUING +TRUISM +TRUISMS +TRUISTIC +TRULL +TRULLS +TRULY +TRUMEAU +TRUMEAUX +TRUMP +TRUMPED +TRUMPERIES +TRUMPERY +TRUMPET +TRUMPETED +TRUMPETER +TRUMPETERS +TRUMPETING +TRUMPETLIKE +TRUMPETS +TRUMPING +TRUMPS +TRUNCATE +TRUNCATED +TRUNCATES +TRUNCATING +TRUNCATION +TRUNCATIONS +TRUNCHEON +TRUNCHEONED +TRUNCHEONING +TRUNCHEONS +TRUNDLE +TRUNDLED +TRUNDLER +TRUNDLERS +TRUNDLES +TRUNDLING +TRUNK +TRUNKED +TRUNKFISH +TRUNKFISHES +TRUNKFUL +TRUNKFULS +TRUNKS +TRUNNEL +TRUNNELS +TRUNNION +TRUNNIONS +TRUSS +TRUSSED +TRUSSER +TRUSSERS +TRUSSES +TRUSSING +TRUSSINGS +TRUST +TRUSTABILITIES +TRUSTABILITY +TRUSTABLE +TRUSTBUSTER +TRUSTBUSTERS +TRUSTED +TRUSTEE +TRUSTEED +TRUSTEEING +TRUSTEES +TRUSTEESHIP +TRUSTEESHIPS +TRUSTER +TRUSTERS +TRUSTFUL +TRUSTFULLY +TRUSTFULNESS +TRUSTFULNESSES +TRUSTIER +TRUSTIES +TRUSTIEST +TRUSTILY +TRUSTINESS +TRUSTINESSES +TRUSTING +TRUSTINGLY +TRUSTINGNESS +TRUSTINGNESSES +TRUSTLESS +TRUSTOR +TRUSTORS +TRUSTS +TRUSTWORTHILY +TRUSTWORTHINESS +TRUSTWORTHY +TRUSTY +TRUTH +TRUTHFUL +TRUTHFULLY +TRUTHFULNESS +TRUTHFULNESSES +TRUTHLESS +TRUTHS +TRY +TRYING +TRYINGLY +TRYMA +TRYMATA +TRYOUT +TRYOUTS +TRYPANOSOME +TRYPANOSOMES +TRYPANOSOMIASES +TRYPANOSOMIASIS +TRYPSIN +TRYPSINOGEN +TRYPSINOGENS +TRYPSINS +TRYPTAMINE +TRYPTAMINES +TRYPTIC +TRYPTOPHAN +TRYPTOPHANE +TRYPTOPHANES +TRYPTOPHANS +TRYSAIL +TRYSAILS +TRYST +TRYSTE +TRYSTED +TRYSTER +TRYSTERS +TRYSTES +TRYSTING +TRYSTS +TRYWORKS +TSADDIK +TSADDIKIM +TSADE +TSADES +TSADI +TSADIS +TSAR +TSARDOM +TSARDOMS +TSAREVNA +TSAREVNAS +TSARINA +TSARINAS +TSARISM +TSARISMS +TSARIST +TSARISTS +TSARITZA +TSARITZAS +TSARS +TSATSKE +TSATSKES +TSETSE +TSETSES +TSIMMES +TSK +TSKED +TSKING +TSKS +TSKTSK +TSKTSKED +TSKTSKING +TSKTSKS +TSOORIS +TSORES +TSORIS +TSORRISS +TSOURIS +TSUBA +TSUNAMI +TSUNAMIC +TSUNAMIS +TSURIS +TSUTSUGAMUSHI +TSUTSUGAMUSHIS +TUATARA +TUATARAS +TUATERA +TUATERAS +TUB +TUBA +TUBAE +TUBAIST +TUBAISTS +TUBAL +TUBAS +TUBATE +TUBBABLE +TUBBED +TUBBER +TUBBERS +TUBBIER +TUBBIEST +TUBBINESS +TUBBINESSES +TUBBING +TUBBY +TUBE +TUBED +TUBELESS +TUBELIKE +TUBENOSE +TUBENOSES +TUBER +TUBERCLE +TUBERCLES +TUBERCULAR +TUBERCULARS +TUBERCULATE +TUBERCULATED +TUBERCULIN +TUBERCULINS +TUBERCULOID +TUBERCULOSES +TUBERCULOSIS +TUBERCULOUS +TUBEROID +TUBEROSE +TUBEROSES +TUBEROSITIES +TUBEROSITY +TUBEROUS +TUBERS +TUBES +TUBEWORK +TUBEWORKS +TUBEWORM +TUBEWORMS +TUBFUL +TUBFULS +TUBIFEX +TUBIFEXES +TUBIFICID +TUBIFICIDS +TUBIFORM +TUBING +TUBINGS +TUBIST +TUBISTS +TUBLIKE +TUBOCURARINE +TUBOCURARINES +TUBS +TUBULAR +TUBULARLY +TUBULATE +TUBULATED +TUBULATES +TUBULATING +TUBULATOR +TUBULATORS +TUBULE +TUBULES +TUBULIN +TUBULINS +TUBULOSE +TUBULOUS +TUBULURE +TUBULURES +TUCHUN +TUCHUNS +TUCK +TUCKAHOE +TUCKAHOES +TUCKED +TUCKER +TUCKERED +TUCKERING +TUCKERS +TUCKET +TUCKETS +TUCKING +TUCKS +TUCKSHOP +TUCKSHOPS +TUFA +TUFACEOUS +TUFAS +TUFF +TUFFACEOUS +TUFFET +TUFFETS +TUFFS +TUFOLI +TUFT +TUFTED +TUFTER +TUFTERS +TUFTIER +TUFTIEST +TUFTILY +TUFTING +TUFTINGS +TUFTS +TUFTY +TUG +TUGBOAT +TUGBOATS +TUGGED +TUGGER +TUGGERS +TUGGING +TUGHRIK +TUGHRIKS +TUGLESS +TUGRIK +TUGRIKS +TUGS +TUI +TUILLE +TUILLES +TUIS +TUITION +TUITIONAL +TUITIONS +TULADI +TULADIS +TULAREMIA +TULAREMIAS +TULAREMIC +TULE +TULES +TULIP +TULIPLIKE +TULIPS +TULIPWOOD +TULIPWOODS +TULLE +TULLES +TULLIBEE +TULLIBEES +TUMBLE +TUMBLEBUG +TUMBLEBUGS +TUMBLED +TUMBLEDOWN +TUMBLER +TUMBLERFUL +TUMBLERFULS +TUMBLERS +TUMBLERSFUL +TUMBLES +TUMBLESET +TUMBLESETS +TUMBLEWEED +TUMBLEWEEDS +TUMBLING +TUMBLINGS +TUMBREL +TUMBRELS +TUMBRIL +TUMBRILS +TUMEFACTION +TUMEFACTIONS +TUMEFIED +TUMEFIES +TUMEFY +TUMEFYING +TUMESCE +TUMESCED +TUMESCENCE +TUMESCENCES +TUMESCENT +TUMESCES +TUMESCING +TUMID +TUMIDITIES +TUMIDITY +TUMIDLY +TUMIDNESS +TUMIDNESSES +TUMMIES +TUMMLER +TUMMLERS +TUMMY +TUMOR +TUMORAL +TUMORIGENESES +TUMORIGENESIS +TUMORIGENIC +TUMORIGENICITY +TUMORLIKE +TUMOROUS +TUMORS +TUMOUR +TUMOURS +TUMP +TUMPED +TUMPING +TUMPLINE +TUMPLINES +TUMPS +TUMULAR +TUMULI +TUMULOSE +TUMULOUS +TUMULT +TUMULTS +TUMULTUARY +TUMULTUOUS +TUMULTUOUSLY +TUMULTUOUSNESS +TUMULUS +TUMULUSES +TUN +TUNA +TUNABILITIES +TUNABILITY +TUNABLE +TUNABLENESS +TUNABLENESSES +TUNABLY +TUNAS +TUNDISH +TUNDISHES +TUNDRA +TUNDRAS +TUNE +TUNEABLE +TUNEABLY +TUNED +TUNEFUL +TUNEFULLY +TUNEFULNESS +TUNEFULNESSES +TUNELESS +TUNELESSLY +TUNER +TUNERS +TUNES +TUNESMITH +TUNESMITHS +TUNEUP +TUNEUPS +TUNG +TUNGS +TUNGSTATE +TUNGSTATES +TUNGSTEN +TUNGSTENS +TUNGSTIC +TUNGSTITE +TUNGSTITES +TUNIC +TUNICA +TUNICAE +TUNICATE +TUNICATED +TUNICATES +TUNICLE +TUNICLES +TUNICS +TUNING +TUNNAGE +TUNNAGES +TUNNED +TUNNEL +TUNNELED +TUNNELER +TUNNELERS +TUNNELING +TUNNELINGS +TUNNELLED +TUNNELLER +TUNNELLERS +TUNNELLIKE +TUNNELLING +TUNNELS +TUNNIES +TUNNING +TUNNY +TUNS +TUP +TUPELO +TUPELOS +TUPIK +TUPIKS +TUPPED +TUPPENCE +TUPPENCES +TUPPENNY +TUPPING +TUPS +TUQUE +TUQUES +TURACO +TURACOS +TURACOU +TURACOUS +TURBAN +TURBANED +TURBANNED +TURBANS +TURBARIES +TURBARY +TURBELLARIAN +TURBELLARIANS +TURBETH +TURBETHS +TURBID +TURBIDIMETER +TURBIDIMETERS +TURBIDIMETRIC +TURBIDIMETRIES +TURBIDIMETRY +TURBIDITE +TURBIDITES +TURBIDITIES +TURBIDITY +TURBIDLY +TURBIDNESS +TURBIDNESSES +TURBINAL +TURBINALS +TURBINATE +TURBINATED +TURBINATES +TURBINE +TURBINES +TURBIT +TURBITH +TURBITHS +TURBITS +TURBO +TURBOCAR +TURBOCARS +TURBOCHARGED +TURBOCHARGER +TURBOCHARGERS +TURBOELECTRIC +TURBOFAN +TURBOFANS +TURBOGENERATOR +TURBOGENERATORS +TURBOJET +TURBOJETS +TURBOMACHINERY +TURBOPROP +TURBOPROPS +TURBOS +TURBOSHAFT +TURBOSHAFTS +TURBOT +TURBOTS +TURBULENCE +TURBULENCES +TURBULENCIES +TURBULENCY +TURBULENT +TURBULENTLY +TURD +TURDINE +TURDS +TUREEN +TUREENS +TURF +TURFED +TURFGRASS +TURFGRASSES +TURFIER +TURFIEST +TURFING +TURFLESS +TURFLIKE +TURFMAN +TURFMEN +TURFS +TURFSKI +TURFSKIING +TURFSKIINGS +TURFSKIS +TURFY +TURGENCIES +TURGENCY +TURGENT +TURGESCENCE +TURGESCENCES +TURGESCENT +TURGID +TURGIDITIES +TURGIDITY +TURGIDLY +TURGIDNESS +TURGIDNESSES +TURGITE +TURGITES +TURGOR +TURGORS +TURION +TURIONS +TURISTA +TURISTAS +TURK +TURKEY +TURKEYS +TURKOIS +TURKOISES +TURKS +TURMERIC +TURMERICS +TURMOIL +TURMOILED +TURMOILING +TURMOILS +TURN +TURNABLE +TURNABOUT +TURNABOUTS +TURNAROUND +TURNAROUNDS +TURNBUCKLE +TURNBUCKLES +TURNCOAT +TURNCOATS +TURNDOWN +TURNDOWNS +TURNED +TURNER +TURNERIES +TURNERS +TURNERY +TURNHALL +TURNHALLS +TURNING +TURNINGS +TURNIP +TURNIPS +TURNKEY +TURNKEYS +TURNOFF +TURNOFFS +TURNON +TURNONS +TURNOUT +TURNOUTS +TURNOVER +TURNOVERS +TURNPIKE +TURNPIKES +TURNS +TURNSOLE +TURNSOLES +TURNSPIT +TURNSPITS +TURNSTILE +TURNSTILES +TURNSTONE +TURNSTONES +TURNTABLE +TURNTABLES +TURNUP +TURNUPS +TURNVEREIN +TURNVEREINS +TUROPHILE +TUROPHILES +TURPENTINE +TURPENTINED +TURPENTINES +TURPENTINING +TURPETH +TURPETHS +TURPITUDE +TURPITUDES +TURPS +TURQUOIS +TURQUOISE +TURQUOISES +TURRET +TURRETED +TURRETS +TURRICAL +TURTLE +TURTLEBACK +TURTLEBACKS +TURTLED +TURTLEDOVE +TURTLEDOVES +TURTLEHEAD +TURTLEHEADS +TURTLENECK +TURTLENECKED +TURTLENECKS +TURTLER +TURTLERS +TURTLES +TURTLING +TURTLINGS +TURVES +TUSCHE +TUSCHES +TUSH +TUSHED +TUSHERIES +TUSHERY +TUSHES +TUSHIE +TUSHIES +TUSHING +TUSHY +TUSK +TUSKED +TUSKER +TUSKERS +TUSKING +TUSKLESS +TUSKLIKE +TUSKS +TUSSAH +TUSSAHS +TUSSAL +TUSSAR +TUSSARS +TUSSEH +TUSSEHS +TUSSER +TUSSERS +TUSSES +TUSSIS +TUSSISES +TUSSIVE +TUSSLE +TUSSLED +TUSSLES +TUSSLING +TUSSOCK +TUSSOCKED +TUSSOCKS +TUSSOCKY +TUSSOR +TUSSORE +TUSSORES +TUSSORS +TUSSUCK +TUSSUCKS +TUSSUR +TUSSURS +TUT +TUTEE +TUTEES +TUTELAGE +TUTELAGES +TUTELAR +TUTELARIES +TUTELARS +TUTELARY +TUTOR +TUTORAGE +TUTORAGES +TUTORED +TUTORESS +TUTORESSES +TUTORIAL +TUTORIALS +TUTORING +TUTORS +TUTORSHIP +TUTORSHIPS +TUTOYED +TUTOYER +TUTOYERED +TUTOYERING +TUTOYERS +TUTS +TUTTED +TUTTI +TUTTIES +TUTTING +TUTTIS +TUTTY +TUTU +TUTUED +TUTUS +TUX +TUXEDO +TUXEDOED +TUXEDOES +TUXEDOS +TUXES +TUYER +TUYERE +TUYERES +TUYERS +TWA +TWADDLE +TWADDLED +TWADDLER +TWADDLERS +TWADDLES +TWADDLING +TWAE +TWAES +TWAIN +TWAINS +TWANG +TWANGED +TWANGER +TWANGERS +TWANGIER +TWANGIEST +TWANGING +TWANGLE +TWANGLED +TWANGLER +TWANGLERS +TWANGLES +TWANGLING +TWANGS +TWANGY +TWANKIES +TWANKY +TWAS +TWASOME +TWASOMES +TWAT +TWATS +TWATTLE +TWATTLED +TWATTLES +TWATTLING +TWAYBLADE +TWAYBLADES +TWEAK +TWEAKED +TWEAKIER +TWEAKIEST +TWEAKING +TWEAKS +TWEAKY +TWEE +TWEED +TWEEDIER +TWEEDIEST +TWEEDINESS +TWEEDINESSES +TWEEDLE +TWEEDLED +TWEEDLES +TWEEDLING +TWEEDS +TWEEDY +TWEEN +TWEENER +TWEENERS +TWEENESS +TWEENESSES +TWEENIES +TWEENS +TWEENY +TWEET +TWEETED +TWEETER +TWEETERS +TWEETING +TWEETS +TWEEZE +TWEEZED +TWEEZER +TWEEZERS +TWEEZES +TWEEZING +TWELFTH +TWELFTHS +TWELVE +TWELVEMO +TWELVEMONTH +TWELVEMONTHS +TWELVEMOS +TWELVES +TWENTIES +TWENTIETH +TWENTIETHS +TWENTY +TWERP +TWERPS +TWIBIL +TWIBILL +TWIBILLS +TWIBILS +TWICE +TWIDDLE +TWIDDLED +TWIDDLER +TWIDDLERS +TWIDDLES +TWIDDLIER +TWIDDLIEST +TWIDDLING +TWIDDLY +TWIER +TWIERS +TWIG +TWIGGED +TWIGGEN +TWIGGIER +TWIGGIEST +TWIGGING +TWIGGY +TWIGLESS +TWIGLIKE +TWIGS +TWILIGHT +TWILIGHTS +TWILIT +TWILL +TWILLED +TWILLING +TWILLINGS +TWILLS +TWIN +TWINBERRIES +TWINBERRY +TWINBORN +TWINE +TWINED +TWINER +TWINERS +TWINES +TWINFLOWER +TWINFLOWERS +TWINGE +TWINGED +TWINGEING +TWINGES +TWINGING +TWINIER +TWINIEST +TWINIGHT +TWINING +TWINJET +TWINJETS +TWINKIE +TWINKIES +TWINKLE +TWINKLED +TWINKLER +TWINKLERS +TWINKLES +TWINKLING +TWINKLINGS +TWINKLY +TWINNED +TWINNING +TWINNINGS +TWINS +TWINSET +TWINSETS +TWINSHIP +TWINSHIPS +TWINY +TWIRL +TWIRLED +TWIRLER +TWIRLERS +TWIRLIER +TWIRLIEST +TWIRLING +TWIRLS +TWIRLY +TWIRP +TWIRPS +TWIST +TWISTABLE +TWISTED +TWISTER +TWISTERS +TWISTIER +TWISTIEST +TWISTING +TWISTINGS +TWISTS +TWISTY +TWIT +TWITCH +TWITCHED +TWITCHER +TWITCHERS +TWITCHES +TWITCHIER +TWITCHIEST +TWITCHILY +TWITCHING +TWITCHY +TWITS +TWITTED +TWITTER +TWITTERED +TWITTERER +TWITTERERS +TWITTERING +TWITTERS +TWITTERY +TWITTING +TWIXT +TWO +TWOFER +TWOFERS +TWOFOLD +TWOFOLDS +TWOONIE +TWOONIES +TWOPENCE +TWOPENCES +TWOPENNY +TWOS +TWOSOME +TWOSOMES +TWYER +TWYERS +TYCOON +TYCOONS +TYE +TYEE +TYEES +TYER +TYERS +TYES +TYIN +TYING +TYIYN +TYKE +TYKES +TYLOSIN +TYLOSINS +TYMBAL +TYMBALS +TYMPAN +TYMPANA +TYMPANAL +TYMPANI +TYMPANIC +TYMPANIES +TYMPANIST +TYMPANISTS +TYMPANITES +TYMPANITESES +TYMPANITIC +TYMPANO +TYMPANS +TYMPANUM +TYMPANUMS +TYMPANY +TYNE +TYNED +TYNES +TYNING +TYPABLE +TYPAL +TYPE +TYPEABLE +TYPEBAR +TYPEBARS +TYPECASE +TYPECASES +TYPECAST +TYPECASTING +TYPECASTS +TYPED +TYPEFACE +TYPEFACES +TYPEFOUNDER +TYPEFOUNDERS +TYPEFOUNDING +TYPEFOUNDINGS +TYPES +TYPESCRIPT +TYPESCRIPTS +TYPESET +TYPESETS +TYPESETTER +TYPESETTERS +TYPESETTING +TYPESETTINGS +TYPESTYLE +TYPESTYLES +TYPEWRITE +TYPEWRITER +TYPEWRITERS +TYPEWRITES +TYPEWRITING +TYPEWRITINGS +TYPEWRITTEN +TYPEWROTE +TYPEY +TYPHLITIC +TYPHLITIS +TYPHLITISES +TYPHLOSOLE +TYPHLOSOLES +TYPHOID +TYPHOIDAL +TYPHOIDS +TYPHON +TYPHONIC +TYPHONS +TYPHOON +TYPHOONS +TYPHOSE +TYPHOUS +TYPHUS +TYPHUSES +TYPIC +TYPICAL +TYPICALITIES +TYPICALITY +TYPICALLY +TYPICALNESS +TYPICALNESSES +TYPIER +TYPIEST +TYPIFICATION +TYPIFICATIONS +TYPIFIED +TYPIFIER +TYPIFIERS +TYPIFIES +TYPIFY +TYPIFYING +TYPING +TYPIST +TYPISTS +TYPO +TYPOGRAPH +TYPOGRAPHED +TYPOGRAPHER +TYPOGRAPHERS +TYPOGRAPHIC +TYPOGRAPHICAL +TYPOGRAPHICALLY +TYPOGRAPHIES +TYPOGRAPHING +TYPOGRAPHS +TYPOGRAPHY +TYPOLOGIC +TYPOLOGICAL +TYPOLOGICALLY +TYPOLOGIES +TYPOLOGIST +TYPOLOGISTS +TYPOLOGY +TYPOS +TYPP +TYPPS +TYPY +TYRAMINE +TYRAMINES +TYRANNIC +TYRANNICAL +TYRANNICALLY +TYRANNICALNESS +TYRANNICIDE +TYRANNICIDES +TYRANNIES +TYRANNISE +TYRANNISED +TYRANNISES +TYRANNISING +TYRANNIZE +TYRANNIZED +TYRANNIZER +TYRANNIZERS +TYRANNIZES +TYRANNIZING +TYRANNOSAUR +TYRANNOSAURS +TYRANNOSAURUS +TYRANNOSAURUSES +TYRANNOUS +TYRANNOUSLY +TYRANNY +TYRANT +TYRANTS +TYRE +TYRED +TYRES +TYRING +TYRO +TYROCIDIN +TYROCIDINE +TYROCIDINES +TYROCIDINS +TYRONIC +TYROS +TYROSINASE +TYROSINASES +TYROSINE +TYROSINES +TYROTHRICIN +TYROTHRICINS +TYTHE +TYTHED +TYTHES +TYTHING +TZADDIK +TZADDIKIM +TZAR +TZARDOM +TZARDOMS +TZAREVNA +TZAREVNAS +TZARINA +TZARINAS +TZARISM +TZARISMS +TZARIST +TZARISTS +TZARITZA +TZARITZAS +TZARS +TZETZE +TZETZES +TZIGANE +TZIGANES +TZIMMES +TZITZIS +TZITZIT +TZITZITH +TZURIS +UAKARI +UAKARIS +UBIETIES +UBIETY +UBIQUE +UBIQUINONE +UBIQUINONES +UBIQUITIES +UBIQUITOUS +UBIQUITOUSLY +UBIQUITOUSNESS +UBIQUITY +UDDER +UDDERS +UDO +UDOMETER +UDOMETERS +UDOMETRIES +UDOMETRY +UDON +UDONS +UDOS +UFOLOGICAL +UFOLOGIES +UFOLOGIST +UFOLOGISTS +UFOLOGY +UGH +UGHS +UGLIER +UGLIES +UGLIEST +UGLIFICATION +UGLIFICATIONS +UGLIFIED +UGLIFIER +UGLIFIERS +UGLIFIES +UGLIFY +UGLIFYING +UGLILY +UGLINESS +UGLINESSES +UGLY +UGSOME +UH +UHLAN +UHLANS +UINTAHITE +UINTAHITES +UINTAITE +UINTAITES +UITLANDER +UITLANDERS +UKASE +UKASES +UKE +UKELELE +UKELELES +UKES +UKULELE +UKULELES +ULAMA +ULAMAS +ULAN +ULANS +ULCER +ULCERATE +ULCERATED +ULCERATES +ULCERATING +ULCERATION +ULCERATIONS +ULCERATIVE +ULCERED +ULCERING +ULCEROGENIC +ULCEROUS +ULCERS +ULEMA +ULEMAS +ULEXITE +ULEXITES +ULLAGE +ULLAGED +ULLAGES +ULNA +ULNAD +ULNAE +ULNAR +ULNAS +ULPAN +ULPANIM +ULSTER +ULSTERS +ULTERIOR +ULTERIORLY +ULTIMA +ULTIMACIES +ULTIMACY +ULTIMAS +ULTIMATA +ULTIMATE +ULTIMATED +ULTIMATELY +ULTIMATENESS +ULTIMATENESSES +ULTIMATES +ULTIMATING +ULTIMATUM +ULTIMATUMS +ULTIMO +ULTIMOGENITURE +ULTIMOGENITURES +ULTRA +ULTRABASIC +ULTRABASICS +ULTRACAREFUL +ULTRACASUAL +ULTRACAUTIOUS +ULTRACENTRIFUGE +ULTRACHIC +ULTRACIVILIZED +ULTRACLEAN +ULTRACOLD +ULTRACOMMERCIAL +ULTRACOMPACT +ULTRACOMPETENT +ULTRACONVENIENT +ULTRACOOL +ULTRACRITICAL +ULTRADEMOCRATIC +ULTRADENSE +ULTRADISTANCE +ULTRADISTANT +ULTRADRY +ULTRAEFFICIENT +ULTRAENERGETIC +ULTRAEXCLUSIVE +ULTRAFAMILIAR +ULTRAFAST +ULTRAFASTIDIOUS +ULTRAFEMININE +ULTRAFICHE +ULTRAFICHES +ULTRAFILTRATE +ULTRAFILTRATES +ULTRAFILTRATION +ULTRAFINE +ULTRAGLAMOROUS +ULTRAHAZARDOUS +ULTRAHEAT +ULTRAHEATED +ULTRAHEATING +ULTRAHEATS +ULTRAHEAVY +ULTRAHIGH +ULTRAHIP +ULTRAHOT +ULTRAHUMAN +ULTRAISM +ULTRAISMS +ULTRAIST +ULTRAISTIC +ULTRAISTS +ULTRALEFT +ULTRALEFTISM +ULTRALEFTISMS +ULTRALEFTIST +ULTRALEFTISTS +ULTRALIBERAL +ULTRALIBERALISM +ULTRALIBERALS +ULTRALIGHT +ULTRALIGHTS +ULTRALOW +ULTRAMAFIC +ULTRAMARATHON +ULTRAMARATHONER +ULTRAMARATHONS +ULTRAMARINE +ULTRAMARINES +ULTRAMASCULINE +ULTRAMICRO +ULTRAMICROSCOPE +ULTRAMICROTOME +ULTRAMICROTOMES +ULTRAMICROTOMY +ULTRAMILITANT +ULTRAMILITANTS +ULTRAMINIATURE +ULTRAMODERN +ULTRAMODERNIST +ULTRAMODERNISTS +ULTRAMONTANE +ULTRAMONTANES +ULTRAMONTANISM +ULTRAMONTANISMS +ULTRAORTHODOX +ULTRAPATRIOTIC +ULTRAPHYSICAL +ULTRAPOSH +ULTRAPOWERFUL +ULTRAPRACTICAL +ULTRAPRECISE +ULTRAPRECISION +ULTRAPURE +ULTRAQUIET +ULTRARADICAL +ULTRARADICALS +ULTRARAPID +ULTRARARE +ULTRARAREFIED +ULTRARATIONAL +ULTRAREALISM +ULTRAREALISMS +ULTRAREALIST +ULTRAREALISTIC +ULTRAREALISTS +ULTRARED +ULTRAREDS +ULTRAREFINED +ULTRARELIABLE +ULTRARICH +ULTRARIGHT +ULTRARIGHTIST +ULTRARIGHTISTS +ULTRAROMANTIC +ULTRAROYALIST +ULTRAROYALISTS +ULTRAS +ULTRASAFE +ULTRASECRET +ULTRASENSITIVE +ULTRASERIOUS +ULTRASHARP +ULTRASHORT +ULTRASIMPLE +ULTRASLICK +ULTRASLOW +ULTRASMALL +ULTRASMART +ULTRASMOOTH +ULTRASOFT +ULTRASONIC +ULTRASONICALLY +ULTRASONICS +ULTRASONOGRAPHY +ULTRASOUND +ULTRASOUNDS +ULTRASTRUCTURAL +ULTRASTRUCTURE +ULTRASTRUCTURES +ULTRATHIN +ULTRATINY +ULTRAVACUA +ULTRAVACUUM +ULTRAVACUUMS +ULTRAVIOLENCE +ULTRAVIOLENCES +ULTRAVIOLENT +ULTRAVIOLET +ULTRAVIOLETS +ULTRAVIRILE +ULTRAVIRILITIES +ULTRAVIRILITY +ULTRAWIDE +ULU +ULULANT +ULULATE +ULULATED +ULULATES +ULULATING +ULULATION +ULULATIONS +ULUS +ULVA +ULVAS +UM +UMAMI +UMAMIS +UMANGITE +UMANGITES +UMBEL +UMBELED +UMBELLAR +UMBELLATE +UMBELLED +UMBELLET +UMBELLETS +UMBELLIFER +UMBELLIFEROUS +UMBELLIFERS +UMBELLULE +UMBELLULES +UMBELS +UMBER +UMBERED +UMBERING +UMBERS +UMBILICAL +UMBILICALS +UMBILICATE +UMBILICATED +UMBILICATION +UMBILICATIONS +UMBILICI +UMBILICUS +UMBILICUSES +UMBLES +UMBO +UMBONAL +UMBONATE +UMBONES +UMBONIC +UMBOS +UMBRA +UMBRAE +UMBRAGE +UMBRAGEOUS +UMBRAGEOUSLY +UMBRAGEOUSNESS +UMBRAGES +UMBRAL +UMBRAS +UMBRELLA +UMBRELLAED +UMBRELLAING +UMBRELLAS +UMBRETTE +UMBRETTES +UMIAC +UMIACK +UMIACKS +UMIACS +UMIAK +UMIAKS +UMIAQ +UMIAQS +UMLAUT +UMLAUTED +UMLAUTING +UMLAUTS +UMM +UMP +UMPED +UMPING +UMPIRAGE +UMPIRAGES +UMPIRE +UMPIRED +UMPIRES +UMPIRING +UMPS +UMPTEEN +UMPTEENTH +UMTEENTH +UN +UNABASHED +UNABASHEDLY +UNABATED +UNABATEDLY +UNABATING +UNABETTED +UNABIDING +UNABJURED +UNABLE +UNABORTED +UNABRADED +UNABRIDGED +UNABSORBED +UNABSORBENT +UNABUSED +UNABUSIVE +UNACADEMIC +UNACADEMICALLY +UNACCENTED +UNACCEPTABILITY +UNACCEPTABLE +UNACCEPTABLY +UNACCEPTED +UNACCLIMATED +UNACCLIMATIZED +UNACCOMMODATED +UNACCOMMODATING +UNACCOMPANIED +UNACCOUNTABLE +UNACCOUNTABLY +UNACCOUNTED +UNACCREDITED +UNACCRUED +UNACCULTURATED +UNACCUSTOMED +UNACCUSTOMEDLY +UNACERBIC +UNACHIEVED +UNACIDIC +UNACKNOWLEDGED +UNACQUAINTED +UNACTABLE +UNACTED +UNACTORISH +UNADAPTABLE +UNADAPTED +UNADDED +UNADDRESSED +UNADEPT +UNADEPTLY +UNADJUDICATED +UNADJUSTED +UNADMIRED +UNADMITTED +UNADOPTABLE +UNADOPTED +UNADORNED +UNADULT +UNADULTERATED +UNADULTERATEDLY +UNADVENTUROUS +UNADVERTISED +UNADVISED +UNADVISEDLY +UNAESTHETIC +UNAFFECTED +UNAFFECTEDLY +UNAFFECTEDNESS +UNAFFECTING +UNAFFECTIONATE +UNAFFILIATED +UNAFFLUENT +UNAFFORDABLE +UNAFRAID +UNAGED +UNAGEING +UNAGGRESSIVE +UNAGILE +UNAGING +UNAGREED +UNAI +UNAIDED +UNAIDEDLY +UNAIMED +UNAIRED +UNAIS +UNAKIN +UNAKITE +UNAKITES +UNALARMED +UNALERTED +UNALIENABLE +UNALIENATED +UNALIGNED +UNALIKE +UNALLAYED +UNALLEGED +UNALLEVIATED +UNALLIED +UNALLOCATED +UNALLOWED +UNALLOYED +UNALLURING +UNALTERABILITY +UNALTERABLE +UNALTERABLENESS +UNALTERABLY +UNALTERED +UNAMASSED +UNAMAZED +UNAMBIGUOUS +UNAMBIGUOUSLY +UNAMBITIOUS +UNAMBIVALENT +UNAMBIVALENTLY +UNAMENABLE +UNAMENDED +UNAMIABLE +UNAMORTIZED +UNAMPLIFIED +UNAMUSED +UNAMUSING +UNANALYZABLE +UNANALYZED +UNANCHOR +UNANCHORED +UNANCHORING +UNANCHORS +UNANELED +UNANESTHETIZED +UNANIMITIES +UNANIMITY +UNANIMOUS +UNANIMOUSLY +UNANNEXED +UNANNOTATED +UNANNOUNCED +UNANNOYED +UNANSWERABILITY +UNANSWERABLE +UNANSWERABLY +UNANSWERED +UNANTICIPATED +UNANTICIPATEDLY +UNAPOLOGETIC +UNAPOLOGIZING +UNAPPARENT +UNAPPEALABLE +UNAPPEALING +UNAPPEALINGLY +UNAPPEASABLE +UNAPPEASABLY +UNAPPEASED +UNAPPETIZING +UNAPPETIZINGLY +UNAPPLIED +UNAPPRECIATED +UNAPPRECIATION +UNAPPRECIATIONS +UNAPPRECIATIVE +UNAPPROACHABLE +UNAPPROACHABLY +UNAPPROPRIATED +UNAPPROVED +UNAPT +UNAPTLY +UNAPTNESS +UNAPTNESSES +UNARCHED +UNARGUABLE +UNARGUABLY +UNARGUED +UNARM +UNARMED +UNARMING +UNARMORED +UNARMS +UNAROUSED +UNARRAYED +UNARROGANT +UNARTFUL +UNARTICULATED +UNARTISTIC +UNARY +UNASHAMED +UNASHAMEDLY +UNASKED +UNASPIRATED +UNASSAILABILITY +UNASSAILABLE +UNASSAILABLY +UNASSAILED +UNASSAYED +UNASSEMBLED +UNASSERTIVE +UNASSERTIVELY +UNASSIGNED +UNASSIMILABLE +UNASSIMILATED +UNASSISTED +UNASSOCIATED +UNASSUAGEABLE +UNASSUAGED +UNASSUMING +UNASSUMINGNESS +UNASSURED +UNATHLETIC +UNATONED +UNATTACHED +UNATTAINABLE +UNATTENDED +UNATTENUATED +UNATTESTED +UNATTIRED +UNATTRACTIVE +UNATTRACTIVELY +UNATTRIBUTABLE +UNATTRIBUTED +UNATTUNED +UNAU +UNAUDITED +UNAUS +UNAUTHENTIC +UNAUTHORIZED +UNAUTOMATED +UNAVAILABILITY +UNAVAILABLE +UNAVAILING +UNAVAILINGLY +UNAVAILINGNESS +UNAVENGED +UNAVERAGE +UNAVERTED +UNAVOIDABLE +UNAVOIDABLY +UNAVOWED +UNAWAKE +UNAWAKED +UNAWAKENED +UNAWARDED +UNAWARE +UNAWARELY +UNAWARENESS +UNAWARENESSES +UNAWARES +UNAWED +UNAWESOME +UNAXED +UNBACKED +UNBAKED +UNBALANCE +UNBALANCED +UNBALANCES +UNBALANCING +UNBALE +UNBALED +UNBALES +UNBALING +UNBALLASTED +UNBAN +UNBANDAGE +UNBANDAGED +UNBANDAGES +UNBANDAGING +UNBANDED +UNBANNED +UNBANNING +UNBANS +UNBAPTIZED +UNBAR +UNBARBED +UNBARBERED +UNBARRED +UNBARRICADED +UNBARRING +UNBARS +UNBASED +UNBASTED +UNBATED +UNBATHED +UNBE +UNBEAR +UNBEARABLE +UNBEARABLY +UNBEARDED +UNBEARED +UNBEARING +UNBEARS +UNBEATABLE +UNBEATABLY +UNBEATEN +UNBEAUTIFUL +UNBEAUTIFULLY +UNBECOMING +UNBECOMINGLY +UNBECOMINGNESS +UNBEHOLDEN +UNBEING +UNBEKNOWN +UNBEKNOWNST +UNBELIEF +UNBELIEFS +UNBELIEVABLE +UNBELIEVABLY +UNBELIEVER +UNBELIEVERS +UNBELIEVING +UNBELIEVINGLY +UNBELLIGERENT +UNBELOVED +UNBELT +UNBELTED +UNBELTING +UNBELTS +UNBEMUSED +UNBEND +UNBENDABLE +UNBENDED +UNBENDING +UNBENDINGS +UNBENDS +UNBENIGN +UNBENT +UNBESEEMING +UNBIASED +UNBIASEDNESS +UNBIASEDNESSES +UNBIASSED +UNBIBLICAL +UNBID +UNBIDDEN +UNBIGOTED +UNBILLED +UNBIND +UNBINDING +UNBINDS +UNBITTED +UNBITTEN +UNBITTER +UNBLAMED +UNBLEACHED +UNBLEMISHED +UNBLENCHED +UNBLENDED +UNBLESSED +UNBLEST +UNBLINDED +UNBLINKING +UNBLINKINGLY +UNBLOCK +UNBLOCKED +UNBLOCKING +UNBLOCKS +UNBLOODED +UNBLOODY +UNBLURRED +UNBLUSHING +UNBLUSHINGLY +UNBOARDED +UNBOBBED +UNBODIED +UNBOILED +UNBOLT +UNBOLTED +UNBOLTING +UNBOLTS +UNBONDED +UNBONED +UNBONNET +UNBONNETED +UNBONNETING +UNBONNETS +UNBOOKISH +UNBOOTED +UNBORN +UNBOSOM +UNBOSOMED +UNBOSOMER +UNBOSOMERS +UNBOSOMING +UNBOSOMS +UNBOTTLE +UNBOTTLED +UNBOTTLES +UNBOTTLING +UNBOUGHT +UNBOUNCY +UNBOUND +UNBOUNDED +UNBOUNDEDNESS +UNBOUNDEDNESSES +UNBOWDLERIZED +UNBOWED +UNBOWING +UNBOX +UNBOXED +UNBOXES +UNBOXING +UNBRACE +UNBRACED +UNBRACES +UNBRACING +UNBRACKETED +UNBRAID +UNBRAIDED +UNBRAIDING +UNBRAIDS +UNBRAKE +UNBRAKED +UNBRAKES +UNBRAKING +UNBRANCHED +UNBRANDED +UNBREACHABLE +UNBREAKABLE +UNBREATHABLE +UNBRED +UNBREECH +UNBREECHED +UNBREECHES +UNBREECHING +UNBRIDGEABLE +UNBRIDGED +UNBRIDLE +UNBRIDLED +UNBRIDLES +UNBRIDLING +UNBRIEFED +UNBRIGHT +UNBRILLIANT +UNBROILED +UNBROKE +UNBROKEN +UNBROWNED +UNBRUISED +UNBRUSHED +UNBUCKLE +UNBUCKLED +UNBUCKLES +UNBUCKLING +UNBUDGEABLE +UNBUDGEABLY +UNBUDGETED +UNBUDGING +UNBUDGINGLY +UNBUFFERED +UNBUILD +UNBUILDABLE +UNBUILDING +UNBUILDS +UNBUILT +UNBULKY +UNBUNDLE +UNBUNDLED +UNBUNDLES +UNBUNDLING +UNBURDEN +UNBURDENED +UNBURDENING +UNBURDENS +UNBUREAUCRATIC +UNBURIED +UNBURNABLE +UNBURNED +UNBURNT +UNBUSINESSLIKE +UNBUSTED +UNBUSY +UNBUTTERED +UNBUTTON +UNBUTTONED +UNBUTTONING +UNBUTTONS +UNCAGE +UNCAGED +UNCAGES +UNCAGING +UNCAKE +UNCAKED +UNCAKES +UNCAKING +UNCALCIFIED +UNCALCINED +UNCALCULATED +UNCALCULATING +UNCALIBRATED +UNCALLED +UNCALLOUSED +UNCANCELED +UNCANDID +UNCANDIDLY +UNCANDLED +UNCANNED +UNCANNIER +UNCANNIEST +UNCANNILY +UNCANNINESS +UNCANNINESSES +UNCANNY +UNCANONICAL +UNCAP +UNCAPABLE +UNCAPITALIZED +UNCAPPED +UNCAPPING +UNCAPS +UNCAPTIONED +UNCAPTURABLE +UNCARDED +UNCARING +UNCARPETED +UNCARTED +UNCARVED +UNCASE +UNCASED +UNCASES +UNCASHED +UNCASING +UNCASKED +UNCAST +UNCASTRATED +UNCATALOGED +UNCATCHABLE +UNCATCHY +UNCATEGORIZABLE +UNCATERED +UNCAUGHT +UNCAUSED +UNCEASING +UNCEASINGLY +UNCEDED +UNCELEBRATED +UNCENSORED +UNCENSORIOUS +UNCENSURED +UNCEREMONIOUS +UNCEREMONIOUSLY +UNCERTAIN +UNCERTAINLY +UNCERTAINNESS +UNCERTAINNESSES +UNCERTAINTIES +UNCERTAINTY +UNCERTIFIED +UNCHAIN +UNCHAINED +UNCHAINING +UNCHAINS +UNCHAIR +UNCHAIRED +UNCHAIRING +UNCHAIRS +UNCHALLENGEABLE +UNCHALLENGED +UNCHALLENGING +UNCHANCY +UNCHANGEABILITY +UNCHANGEABLE +UNCHANGEABLY +UNCHANGED +UNCHANGING +UNCHANGINGLY +UNCHANGINGNESS +UNCHANNELED +UNCHAPERONED +UNCHARGE +UNCHARGED +UNCHARGES +UNCHARGING +UNCHARISMATIC +UNCHARITABLE +UNCHARITABLY +UNCHARMING +UNCHARRED +UNCHARTED +UNCHARTERED +UNCHARY +UNCHASTE +UNCHASTELY +UNCHASTENESS +UNCHASTENESSES +UNCHASTER +UNCHASTEST +UNCHASTITIES +UNCHASTITY +UNCHAUVINISTIC +UNCHECKABLE +UNCHECKED +UNCHEWABLE +UNCHEWED +UNCHIC +UNCHICLY +UNCHILDLIKE +UNCHILLED +UNCHIVALROUS +UNCHIVALROUSLY +UNCHLORINATED +UNCHOKE +UNCHOKED +UNCHOKES +UNCHOKING +UNCHOREOGRAPHED +UNCHOSEN +UNCHRISTENED +UNCHRISTIAN +UNCHRONICLED +UNCHRONOLOGICAL +UNCHURCH +UNCHURCHED +UNCHURCHES +UNCHURCHING +UNCHURCHLY +UNCI +UNCIA +UNCIAE +UNCIAL +UNCIALLY +UNCIALS +UNCIFORM +UNCIFORMS +UNCILIATED +UNCINAL +UNCINARIA +UNCINARIAS +UNCINARIASES +UNCINARIASIS +UNCINATE +UNCINEMATIC +UNCINI +UNCINUS +UNCIRCULATED +UNCIRCUMCISED +UNCIRCUMCISION +UNCIRCUMCISIONS +UNCIVIL +UNCIVILIZED +UNCIVILLY +UNCLAD +UNCLAIMED +UNCLAMP +UNCLAMPED +UNCLAMPING +UNCLAMPS +UNCLARIFIED +UNCLARITIES +UNCLARITY +UNCLASP +UNCLASPED +UNCLASPING +UNCLASPS +UNCLASSICAL +UNCLASSIFIABLE +UNCLASSIFIED +UNCLASSY +UNCLAWED +UNCLE +UNCLEAN +UNCLEANED +UNCLEANER +UNCLEANEST +UNCLEANLIER +UNCLEANLIEST +UNCLEANLINESS +UNCLEANLINESSES +UNCLEANLY +UNCLEANNESS +UNCLEANNESSES +UNCLEAR +UNCLEARED +UNCLEARER +UNCLEAREST +UNCLEARLY +UNCLEFT +UNCLENCH +UNCLENCHED +UNCLENCHES +UNCLENCHING +UNCLES +UNCLICHED +UNCLIMBABLE +UNCLIMBABLENESS +UNCLINCH +UNCLINCHED +UNCLINCHES +UNCLINCHING +UNCLIP +UNCLIPPED +UNCLIPPING +UNCLIPS +UNCLOAK +UNCLOAKED +UNCLOAKING +UNCLOAKS +UNCLOG +UNCLOGGED +UNCLOGGING +UNCLOGS +UNCLOSE +UNCLOSED +UNCLOSES +UNCLOSING +UNCLOTHE +UNCLOTHED +UNCLOTHES +UNCLOTHING +UNCLOUD +UNCLOUDED +UNCLOUDEDLY +UNCLOUDING +UNCLOUDS +UNCLOUDY +UNCLOYED +UNCLOYING +UNCLUBBABLE +UNCLUTTER +UNCLUTTERED +UNCLUTTERING +UNCLUTTERS +UNCO +UNCOALESCE +UNCOALESCED +UNCOALESCES +UNCOALESCING +UNCOATED +UNCOATING +UNCOATINGS +UNCOBBLED +UNCOCK +UNCOCKED +UNCOCKING +UNCOCKS +UNCODED +UNCODIFIED +UNCOERCED +UNCOERCIVE +UNCOERCIVELY +UNCOFFIN +UNCOFFINED +UNCOFFINING +UNCOFFINS +UNCOIL +UNCOILED +UNCOILING +UNCOILS +UNCOINED +UNCOLLECTED +UNCOLLECTIBLE +UNCOLLECTIBLES +UNCOLORED +UNCOMBATIVE +UNCOMBED +UNCOMBINED +UNCOMELY +UNCOMFORTABLE +UNCOMFORTABLY +UNCOMIC +UNCOMMERCIAL +UNCOMMITTED +UNCOMMON +UNCOMMONER +UNCOMMONEST +UNCOMMONLY +UNCOMMONNESS +UNCOMMONNESSES +UNCOMMUNICABLE +UNCOMMUNICATIVE +UNCOMPASSIONATE +UNCOMPELLING +UNCOMPENSATED +UNCOMPETITIVE +UNCOMPLACENT +UNCOMPLAINING +UNCOMPLAININGLY +UNCOMPLETED +UNCOMPLICATED +UNCOMPLIMENTARY +UNCOMPOUNDED +UNCOMPREHENDED +UNCOMPREHENDING +UNCOMPROMISABLE +UNCOMPROMISING +UNCOMPUTERIZED +UNCONCEALED +UNCONCEIVABLE +UNCONCERN +UNCONCERNED +UNCONCERNEDLY +UNCONCERNEDNESS +UNCONCERNS +UNCONDITIONAL +UNCONDITIONALLY +UNCONDITIONED +UNCONFESSED +UNCONFINED +UNCONFIRMED +UNCONFORMABLE +UNCONFORMABLY +UNCONFORMITIES +UNCONFORMITY +UNCONFOUNDED +UNCONFUSE +UNCONFUSED +UNCONFUSES +UNCONFUSING +UNCONGENIAL +UNCONGENIALITY +UNCONJUGATED +UNCONNECTED +UNCONQUERABLE +UNCONQUERABLY +UNCONQUERED +UNCONSCIONABLE +UNCONSCIONABLY +UNCONSCIOUS +UNCONSCIOUSES +UNCONSCIOUSLY +UNCONSCIOUSNESS +UNCONSECRATED +UNCONSIDERED +UNCONSOLIDATED +UNCONSTRAINED +UNCONSTRAINT +UNCONSTRAINTS +UNCONSTRICTED +UNCONSTRUCTED +UNCONSTRUCTIVE +UNCONSUMED +UNCONSUMMATED +UNCONTAINABLE +UNCONTAMINATED +UNCONTEMPLATED +UNCONTEMPORARY +UNCONTENTIOUS +UNCONTESTED +UNCONTRACTED +UNCONTRADICTED +UNCONTRIVED +UNCONTROLLABLE +UNCONTROLLABLY +UNCONTROLLED +UNCONTROVERSIAL +UNCONVENTIONAL +UNCONVERTED +UNCONVINCED +UNCONVINCING +UNCONVINCINGLY +UNCONVOYED +UNCOOKED +UNCOOL +UNCOOLED +UNCOOPERATIVE +UNCOORDINATED +UNCOPYRIGHTABLE +UNCORK +UNCORKED +UNCORKING +UNCORKS +UNCORRECTABLE +UNCORRECTED +UNCORRELATED +UNCORROBORATED +UNCORRUPT +UNCORSETED +UNCOS +UNCOUNTABLE +UNCOUNTED +UNCOUPLE +UNCOUPLED +UNCOUPLER +UNCOUPLERS +UNCOUPLES +UNCOUPLING +UNCOURAGEOUS +UNCOUTH +UNCOUTHLY +UNCOUTHNESS +UNCOUTHNESSES +UNCOVENANTED +UNCOVER +UNCOVERED +UNCOVERING +UNCOVERS +UNCOY +UNCRACKED +UNCRATE +UNCRATED +UNCRATES +UNCRATING +UNCRAZY +UNCREATE +UNCREATED +UNCREATES +UNCREATING +UNCREATIVE +UNCREDENTIALED +UNCREDITED +UNCREWED +UNCRIPPLED +UNCRITICAL +UNCRITICALLY +UNCROPPED +UNCROSS +UNCROSSABLE +UNCROSSED +UNCROSSES +UNCROSSING +UNCROWDED +UNCROWN +UNCROWNED +UNCROWNING +UNCROWNS +UNCRUMPLE +UNCRUMPLED +UNCRUMPLES +UNCRUMPLING +UNCRUSHABLE +UNCRUSHED +UNCRYSTALLIZED +UNCTION +UNCTIONS +UNCTUOUS +UNCTUOUSLY +UNCTUOUSNESS +UNCTUOUSNESSES +UNCUFF +UNCUFFED +UNCUFFING +UNCUFFS +UNCULTIVABLE +UNCULTIVATED +UNCULTURED +UNCURABLE +UNCURABLY +UNCURB +UNCURBED +UNCURBING +UNCURBS +UNCURED +UNCURIOUS +UNCURL +UNCURLED +UNCURLING +UNCURLS +UNCURRENT +UNCURSED +UNCURTAINED +UNCUS +UNCUSTOMARILY +UNCUSTOMARY +UNCUT +UNCUTE +UNCYNICAL +UNCYNICALLY +UNDAMAGED +UNDAMPED +UNDANCEABLE +UNDARING +UNDATABLE +UNDATED +UNDAUNTABLE +UNDAUNTED +UNDAUNTEDLY +UNDE +UNDEAD +UNDEBATABLE +UNDEBATABLY +UNDEBATED +UNDECADENT +UNDECAYED +UNDECEIVE +UNDECEIVED +UNDECEIVES +UNDECEIVING +UNDECIDABILITY +UNDECIDABLE +UNDECIDED +UNDECIDEDS +UNDECILLION +UNDECILLIONS +UNDECIPHERABLE +UNDECIPHERED +UNDECKED +UNDECLARED +UNDECOMPOSED +UNDECORATED +UNDEDICATED +UNDEE +UNDEFACED +UNDEFEATED +UNDEFENDED +UNDEFILED +UNDEFINABLE +UNDEFINED +UNDEFOLIATED +UNDEFORMED +UNDELEGATED +UNDELETED +UNDELIVERABLE +UNDELIVERED +UNDELUDED +UNDEMANDING +UNDEMOCRATIC +UNDEMONSTRATIVE +UNDENIABLE +UNDENIABLENESS +UNDENIABLY +UNDENIED +UNDENTED +UNDEPENDABLE +UNDER +UNDERACHIEVE +UNDERACHIEVED +UNDERACHIEVER +UNDERACHIEVERS +UNDERACHIEVES +UNDERACHIEVING +UNDERACT +UNDERACTED +UNDERACTING +UNDERACTIVE +UNDERACTIVITIES +UNDERACTIVITY +UNDERACTS +UNDERAGE +UNDERAGED +UNDERAGES +UNDERARM +UNDERARMS +UNDERATE +UNDERBAKE +UNDERBAKED +UNDERBAKES +UNDERBAKING +UNDERBELLIES +UNDERBELLY +UNDERBID +UNDERBIDDER +UNDERBIDDERS +UNDERBIDDING +UNDERBIDS +UNDERBITE +UNDERBITES +UNDERBODIES +UNDERBODY +UNDERBOSS +UNDERBOSSES +UNDERBOUGHT +UNDERBRED +UNDERBRIM +UNDERBRIMS +UNDERBRUSH +UNDERBRUSHES +UNDERBUD +UNDERBUDDED +UNDERBUDDING +UNDERBUDGETED +UNDERBUDS +UNDERBUY +UNDERBUYING +UNDERBUYS +UNDERCARD +UNDERCARDS +UNDERCARRIAGE +UNDERCARRIAGES +UNDERCHARGE +UNDERCHARGED +UNDERCHARGES +UNDERCHARGING +UNDERCLAD +UNDERCLASS +UNDERCLASSES +UNDERCLASSMAN +UNDERCLASSMEN +UNDERCLAY +UNDERCLAYS +UNDERCLOTHES +UNDERCLOTHING +UNDERCLOTHINGS +UNDERCOAT +UNDERCOATED +UNDERCOATING +UNDERCOATINGS +UNDERCOATS +UNDERCOOK +UNDERCOOKED +UNDERCOOKING +UNDERCOOKS +UNDERCOOL +UNDERCOOLED +UNDERCOOLING +UNDERCOOLS +UNDERCOUNT +UNDERCOUNTED +UNDERCOUNTING +UNDERCOUNTS +UNDERCOVER +UNDERCROFT +UNDERCROFTS +UNDERCURRENT +UNDERCURRENTS +UNDERCUT +UNDERCUTS +UNDERCUTTING +UNDERDEVELOPED +UNDERDID +UNDERDO +UNDERDOES +UNDERDOG +UNDERDOGS +UNDERDOING +UNDERDONE +UNDERDOSE +UNDERDOSED +UNDERDOSES +UNDERDOSING +UNDERDRAWERS +UNDEREAT +UNDEREATEN +UNDEREATING +UNDEREATS +UNDEREDUCATED +UNDEREMPHASES +UNDEREMPHASIS +UNDEREMPHASIZE +UNDEREMPHASIZED +UNDEREMPHASIZES +UNDEREMPLOYED +UNDEREMPLOYMENT +UNDERESTIMATE +UNDERESTIMATED +UNDERESTIMATES +UNDERESTIMATING +UNDERESTIMATION +UNDEREXPOSE +UNDEREXPOSED +UNDEREXPOSES +UNDEREXPOSING +UNDEREXPOSURE +UNDEREXPOSURES +UNDERFED +UNDERFEED +UNDERFEEDING +UNDERFEEDS +UNDERFINANCED +UNDERFLOW +UNDERFLOWS +UNDERFOOT +UNDERFUND +UNDERFUNDED +UNDERFUNDING +UNDERFUNDS +UNDERFUR +UNDERFURS +UNDERGARMENT +UNDERGARMENTS +UNDERGIRD +UNDERGIRDED +UNDERGIRDING +UNDERGIRDS +UNDERGIRT +UNDERGLAZE +UNDERGLAZES +UNDERGO +UNDERGOD +UNDERGODS +UNDERGOER +UNDERGOERS +UNDERGOES +UNDERGOING +UNDERGONE +UNDERGRAD +UNDERGRADS +UNDERGRADUATE +UNDERGRADUATES +UNDERGROUND +UNDERGROUNDER +UNDERGROUNDERS +UNDERGROUNDS +UNDERGROWTH +UNDERGROWTHS +UNDERHAIR +UNDERHAIRS +UNDERHAND +UNDERHANDED +UNDERHANDEDLY +UNDERHANDEDNESS +UNDERHANDS +UNDERHEAT +UNDERHEATED +UNDERHEATING +UNDERHEATS +UNDERHUNG +UNDERINFLATED +UNDERINFLATION +UNDERINFLATIONS +UNDERINSURED +UNDERINVESTMENT +UNDERIVED +UNDERJAW +UNDERJAWS +UNDERKILL +UNDERKILLS +UNDERLAID +UNDERLAIN +UNDERLAP +UNDERLAPPED +UNDERLAPPING +UNDERLAPS +UNDERLAY +UNDERLAYING +UNDERLAYMENT +UNDERLAYMENTS +UNDERLAYS +UNDERLET +UNDERLETS +UNDERLETTING +UNDERLIE +UNDERLIES +UNDERLINE +UNDERLINED +UNDERLINES +UNDERLING +UNDERLINGS +UNDERLINING +UNDERLIP +UNDERLIPS +UNDERLIT +UNDERLOAD +UNDERLOADED +UNDERLOADING +UNDERLOADS +UNDERLYING +UNDERLYINGLY +UNDERMANNED +UNDERMINE +UNDERMINED +UNDERMINES +UNDERMINING +UNDERMOST +UNDERNEATH +UNDERNOURISHED +UNDERNUTRITION +UNDERNUTRITIONS +UNDERPAID +UNDERPAINTING +UNDERPAINTINGS +UNDERPANTS +UNDERPART +UNDERPARTS +UNDERPASS +UNDERPASSES +UNDERPAY +UNDERPAYING +UNDERPAYMENT +UNDERPAYMENTS +UNDERPAYS +UNDERPIN +UNDERPINNED +UNDERPINNING +UNDERPINNINGS +UNDERPINS +UNDERPLAY +UNDERPLAYED +UNDERPLAYING +UNDERPLAYS +UNDERPLOT +UNDERPLOTS +UNDERPOPULATED +UNDERPOWERED +UNDERPREPARED +UNDERPRICE +UNDERPRICED +UNDERPRICES +UNDERPRICING +UNDERPRIVILEGED +UNDERPRODUCTION +UNDERPROOF +UNDERPROP +UNDERPROPPED +UNDERPROPPING +UNDERPROPS +UNDERPUBLICIZED +UNDERRAN +UNDERRATE +UNDERRATED +UNDERRATES +UNDERRATING +UNDERREACT +UNDERREACTED +UNDERREACTING +UNDERREACTS +UNDERREPORT +UNDERREPORTED +UNDERREPORTING +UNDERREPORTS +UNDERRIPE +UNDERRUN +UNDERRUNNING +UNDERRUNS +UNDERSATURATED +UNDERSCORE +UNDERSCORED +UNDERSCORES +UNDERSCORING +UNDERSEA +UNDERSEAS +UNDERSECRETARY +UNDERSELL +UNDERSELLING +UNDERSELLS +UNDERSERVED +UNDERSET +UNDERSETS +UNDERSEXED +UNDERSHIRT +UNDERSHIRTED +UNDERSHIRTS +UNDERSHOOT +UNDERSHOOTING +UNDERSHOOTS +UNDERSHORTS +UNDERSHOT +UNDERSHRUB +UNDERSHRUBS +UNDERSIDE +UNDERSIDES +UNDERSIGN +UNDERSIGNED +UNDERSIGNING +UNDERSIGNS +UNDERSIZE +UNDERSIZED +UNDERSKIRT +UNDERSKIRTS +UNDERSLUNG +UNDERSOIL +UNDERSOILS +UNDERSOLD +UNDERSONG +UNDERSONGS +UNDERSPIN +UNDERSPINS +UNDERSTAFFED +UNDERSTAFFING +UNDERSTAFFINGS +UNDERSTAND +UNDERSTANDABLE +UNDERSTANDABLY +UNDERSTANDING +UNDERSTANDINGLY +UNDERSTANDINGS +UNDERSTANDS +UNDERSTATE +UNDERSTATED +UNDERSTATEDLY +UNDERSTATEMENT +UNDERSTATEMENTS +UNDERSTATES +UNDERSTATING +UNDERSTEER +UNDERSTEERED +UNDERSTEERING +UNDERSTEERS +UNDERSTOOD +UNDERSTORIES +UNDERSTORY +UNDERSTRAPPER +UNDERSTRAPPERS +UNDERSTRENGTH +UNDERSTUDIED +UNDERSTUDIES +UNDERSTUDY +UNDERSTUDYING +UNDERSUPPLIES +UNDERSUPPLY +UNDERSURFACE +UNDERSURFACES +UNDERTAKE +UNDERTAKEN +UNDERTAKER +UNDERTAKERS +UNDERTAKES +UNDERTAKING +UNDERTAKINGS +UNDERTAX +UNDERTAXED +UNDERTAXES +UNDERTAXING +UNDERTENANT +UNDERTENANTS +UNDERTHRUST +UNDERTHRUSTING +UNDERTHRUSTS +UNDERTINT +UNDERTINTS +UNDERTONE +UNDERTONES +UNDERTOOK +UNDERTOW +UNDERTOWS +UNDERTRICK +UNDERTRICKS +UNDERUSE +UNDERUSED +UNDERUSES +UNDERUSING +UNDERUTILIZE +UNDERUTILIZED +UNDERUTILIZES +UNDERUTILIZING +UNDERVALUATION +UNDERVALUATIONS +UNDERVALUE +UNDERVALUED +UNDERVALUES +UNDERVALUING +UNDERVEST +UNDERVESTS +UNDERVOTE +UNDERVOTES +UNDERWATER +UNDERWAY +UNDERWEAR +UNDERWEIGHT +UNDERWEIGHTS +UNDERWENT +UNDERWHELM +UNDERWHELMED +UNDERWHELMING +UNDERWHELMS +UNDERWING +UNDERWINGS +UNDERWIRE +UNDERWIRES +UNDERWOOD +UNDERWOODS +UNDERWOOL +UNDERWOOLS +UNDERWORK +UNDERWORKED +UNDERWORKING +UNDERWORKS +UNDERWORLD +UNDERWORLDS +UNDERWRITE +UNDERWRITER +UNDERWRITERS +UNDERWRITES +UNDERWRITING +UNDERWRITTEN +UNDERWROTE +UNDESCENDED +UNDESCRIBABLE +UNDESERVED +UNDESERVING +UNDESIGNATED +UNDESIGNING +UNDESIRABILITY +UNDESIRABLE +UNDESIRABLENESS +UNDESIRABLES +UNDESIRABLY +UNDESIRED +UNDETECTABLE +UNDETECTED +UNDETERMINABLE +UNDETERMINED +UNDETERRED +UNDEVELOPED +UNDEVIATING +UNDEVIATINGLY +UNDEVOUT +UNDIAGNOSABLE +UNDIAGNOSED +UNDIALECTICAL +UNDID +UNDIDACTIC +UNDIES +UNDIGESTED +UNDIGESTIBLE +UNDIGNIFIED +UNDILUTED +UNDIMINISHED +UNDIMMED +UNDINE +UNDINES +UNDIPLOMATIC +UNDIRECTED +UNDISCHARGED +UNDISCIPLINED +UNDISCLOSED +UNDISCOURAGED +UNDISCOVERABLE +UNDISCOVERED +UNDISCUSSED +UNDISGUISED +UNDISGUISEDLY +UNDISMAYED +UNDISPUTABLE +UNDISPUTED +UNDISSOCIATED +UNDISSOLVED +UNDISTINGUISHED +UNDISTORTED +UNDISTRACTED +UNDISTRIBUTED +UNDISTURBED +UNDIVIDED +UNDO +UNDOABLE +UNDOCILE +UNDOCK +UNDOCKED +UNDOCKING +UNDOCKS +UNDOCTORED +UNDOCTRINAIRE +UNDOCUMENTED +UNDOER +UNDOERS +UNDOES +UNDOGMATIC +UNDOGMATICALLY +UNDOING +UNDOINGS +UNDOMESTIC +UNDOMESTICATED +UNDONE +UNDOTTED +UNDOUBLE +UNDOUBLED +UNDOUBLES +UNDOUBLING +UNDOUBTABLE +UNDOUBTED +UNDOUBTEDLY +UNDOUBTING +UNDRAINED +UNDRAMATIC +UNDRAMATICALLY +UNDRAMATIZED +UNDRAPE +UNDRAPED +UNDRAPES +UNDRAPING +UNDRAW +UNDRAWING +UNDRAWN +UNDRAWS +UNDREAMED +UNDREAMT +UNDRESS +UNDRESSED +UNDRESSES +UNDRESSING +UNDREST +UNDREW +UNDRIED +UNDRILLED +UNDRINKABLE +UNDRUNK +UNDUBBED +UNDUE +UNDULANCE +UNDULANCES +UNDULANT +UNDULAR +UNDULATE +UNDULATED +UNDULATES +UNDULATING +UNDULATION +UNDULATIONS +UNDULATOR +UNDULATORS +UNDULATORY +UNDULLED +UNDULY +UNDUPLICATED +UNDUTIFUL +UNDUTIFULLY +UNDUTIFULNESS +UNDUTIFULNESSES +UNDY +UNDYED +UNDYING +UNDYINGLY +UNDYNAMIC +UNEAGER +UNEAGERLY +UNEARMARKED +UNEARNED +UNEARTH +UNEARTHED +UNEARTHING +UNEARTHLIER +UNEARTHLIEST +UNEARTHLINESS +UNEARTHLINESSES +UNEARTHLY +UNEARTHS +UNEASE +UNEASES +UNEASIER +UNEASIEST +UNEASILY +UNEASINESS +UNEASINESSES +UNEASY +UNEATABLE +UNEATEN +UNECCENTRIC +UNECOLOGICAL +UNECONOMIC +UNECONOMICAL +UNEDIBLE +UNEDIFYING +UNEDITED +UNEDUCABLE +UNEDUCATED +UNEFFACED +UNELABORATE +UNELECTABLE +UNELECTED +UNELECTRIFIED +UNEMBARRASSED +UNEMBELLISHED +UNEMBITTERED +UNEMOTIONAL +UNEMOTIONALLY +UNEMPHATIC +UNEMPHATICALLY +UNEMPIRICAL +UNEMPLOYABILITY +UNEMPLOYABLE +UNEMPLOYABLES +UNEMPLOYED +UNEMPLOYEDS +UNEMPLOYMENT +UNEMPLOYMENTS +UNENCHANTED +UNENCLOSED +UNENCOURAGING +UNENCUMBERED +UNENDEARING +UNENDED +UNENDING +UNENDINGLY +UNENDOWED +UNENDURABLE +UNENDURABLENESS +UNENDURABLY +UNENFORCEABLE +UNENFORCED +UNENGAGED +UNENJOYED +UNENLARGED +UNENLIGHTENED +UNENLIGHTENING +UNENRICHED +UNENSURED +UNENTERED +UNENTERPRISING +UNENTHUSIASTIC +UNENVIABLE +UNENVIED +UNENVIOUS +UNEQUAL +UNEQUALED +UNEQUALLED +UNEQUALLY +UNEQUALS +UNEQUIVOCABLY +UNEQUIVOCAL +UNEQUIVOCALLY +UNERASED +UNEROTIC +UNERRING +UNERRINGLY +UNESCAPABLE +UNESSAYED +UNESSENTIAL +UNESTABLISHED +UNETHICAL +UNEVADED +UNEVALUATED +UNEVEN +UNEVENER +UNEVENEST +UNEVENLY +UNEVENNESS +UNEVENNESSES +UNEVENTFUL +UNEVENTFULLY +UNEVENTFULNESS +UNEVOLVED +UNEXALTED +UNEXAMINED +UNEXAMPLED +UNEXCELLED +UNEXCEPTIONABLE +UNEXCEPTIONABLY +UNEXCEPTIONAL +UNEXCITABLE +UNEXCITED +UNEXCITING +UNEXCUSED +UNEXERCISED +UNEXOTIC +UNEXPECTED +UNEXPECTEDLY +UNEXPECTEDNESS +UNEXPENDED +UNEXPERT +UNEXPIRED +UNEXPLAINABLE +UNEXPLAINED +UNEXPLODED +UNEXPLOITED +UNEXPLORED +UNEXPOSED +UNEXPRESSED +UNEXPRESSIVE +UNEXPURGATED +UNEXTRAORDINARY +UNFADED +UNFADING +UNFADINGLY +UNFAILING +UNFAILINGLY +UNFAIR +UNFAIRER +UNFAIREST +UNFAIRLY +UNFAIRNESS +UNFAIRNESSES +UNFAITH +UNFAITHFUL +UNFAITHFULLY +UNFAITHFULNESS +UNFAITHS +UNFAKED +UNFALLEN +UNFALSIFIABLE +UNFALTERING +UNFALTERINGLY +UNFAMILIAR +UNFAMILIARITIES +UNFAMILIARITY +UNFAMILIARLY +UNFAMOUS +UNFANCY +UNFASHIONABLE +UNFASHIONABLY +UNFASTEN +UNFASTENED +UNFASTENING +UNFASTENS +UNFASTIDIOUS +UNFATHERED +UNFATHOMABLE +UNFAVORABLE +UNFAVORABLENESS +UNFAVORABLY +UNFAVORED +UNFAVORITE +UNFAZED +UNFEARED +UNFEARFUL +UNFEARING +UNFEASIBLE +UNFED +UNFEELING +UNFEELINGLY +UNFEELINGNESS +UNFEELINGNESSES +UNFEIGNED +UNFEIGNEDLY +UNFELT +UNFELTED +UNFEMININE +UNFENCE +UNFENCED +UNFENCES +UNFENCING +UNFERMENTED +UNFERTILE +UNFERTILIZED +UNFETTER +UNFETTERED +UNFETTERING +UNFETTERS +UNFILIAL +UNFILIALLY +UNFILLED +UNFILMED +UNFILTERED +UNFINDABLE +UNFINISHED +UNFIRED +UNFISHED +UNFIT +UNFITLY +UNFITNESS +UNFITNESSES +UNFITS +UNFITTED +UNFITTING +UNFIX +UNFIXED +UNFIXES +UNFIXING +UNFIXT +UNFLAGGING +UNFLAGGINGLY +UNFLAMBOYANT +UNFLAPPABILITY +UNFLAPPABLE +UNFLAPPABLY +UNFLAPPED +UNFLASHY +UNFLATTERING +UNFLATTERINGLY +UNFLAWED +UNFLEDGED +UNFLEXED +UNFLINCHING +UNFLINCHINGLY +UNFLUTED +UNFLYABLE +UNFOCUSED +UNFOCUSSED +UNFOILED +UNFOLD +UNFOLDED +UNFOLDER +UNFOLDERS +UNFOLDING +UNFOLDMENT +UNFOLDMENTS +UNFOLDS +UNFOND +UNFORCED +UNFORESEEABLE +UNFORESEEN +UNFORESTED +UNFORGED +UNFORGETTABLE +UNFORGETTABLY +UNFORGIVABLE +UNFORGIVING +UNFORGIVINGNESS +UNFORGOT +UNFORKED +UNFORMED +UNFORMULATED +UNFORTHCOMING +UNFORTIFIED +UNFORTUNATE +UNFORTUNATELY +UNFORTUNATES +UNFOSSILIFEROUS +UNFOUGHT +UNFOUND +UNFOUNDED +UNFRAMED +UNFREE +UNFREED +UNFREEDOM +UNFREEDOMS +UNFREEING +UNFREES +UNFREEZE +UNFREEZES +UNFREEZING +UNFREQUENTED +UNFRIENDED +UNFRIENDLINESS +UNFRIENDLY +UNFRIVOLOUS +UNFROCK +UNFROCKED +UNFROCKING +UNFROCKS +UNFROZE +UNFROZEN +UNFRUITFUL +UNFRUITFULLY +UNFRUITFULNESS +UNFULFILLABLE +UNFULFILLED +UNFUNDED +UNFUNNY +UNFURL +UNFURLED +UNFURLING +UNFURLS +UNFURNISHED +UNFUSED +UNFUSSILY +UNFUSSY +UNGAINLIER +UNGAINLIEST +UNGAINLINESS +UNGAINLINESSES +UNGAINLY +UNGALLANT +UNGALLANTLY +UNGALLED +UNGARBED +UNGARNISHED +UNGATED +UNGAZING +UNGELDED +UNGENEROSITIES +UNGENEROSITY +UNGENEROUS +UNGENEROUSLY +UNGENIAL +UNGENTEEL +UNGENTLE +UNGENTLEMANLY +UNGENTLY +UNGENTRIFIED +UNGENUINE +UNGERMINATED +UNGIFTED +UNGIMMICKY +UNGIRD +UNGIRDED +UNGIRDING +UNGIRDS +UNGIRT +UNGIVING +UNGLAMORIZED +UNGLAMOROUS +UNGLAZED +UNGLOSSED +UNGLOVE +UNGLOVED +UNGLOVES +UNGLOVING +UNGLUE +UNGLUED +UNGLUES +UNGLUING +UNGODLIER +UNGODLIEST +UNGODLINESS +UNGODLINESSES +UNGODLY +UNGOT +UNGOTTEN +UNGOVERNABLE +UNGOWNED +UNGRACED +UNGRACEFUL +UNGRACEFULLY +UNGRACIOUS +UNGRACIOUSLY +UNGRACIOUSNESS +UNGRADED +UNGRAMMATICAL +UNGRASPABLE +UNGRATEFUL +UNGRATEFULLY +UNGRATEFULNESS +UNGREASED +UNGREEDY +UNGROOMED +UNGROUND +UNGROUPED +UNGRUDGING +UNGUAL +UNGUARD +UNGUARDED +UNGUARDEDLY +UNGUARDEDNESS +UNGUARDEDNESSES +UNGUARDING +UNGUARDS +UNGUENT +UNGUENTA +UNGUENTS +UNGUENTUM +UNGUES +UNGUESSABLE +UNGUIDED +UNGUINOUS +UNGUIS +UNGULA +UNGULAE +UNGULAR +UNGULATE +UNGULATES +UNHACKNEYED +UNHAILED +UNHAIR +UNHAIRED +UNHAIRER +UNHAIRERS +UNHAIRING +UNHAIRS +UNHALLOW +UNHALLOWED +UNHALLOWING +UNHALLOWS +UNHALVED +UNHAMPERED +UNHAND +UNHANDED +UNHANDIER +UNHANDIEST +UNHANDILY +UNHANDINESS +UNHANDINESSES +UNHANDING +UNHANDLED +UNHANDS +UNHANDSOME +UNHANDSOMELY +UNHANDY +UNHANG +UNHANGED +UNHANGING +UNHANGS +UNHAPPIER +UNHAPPIEST +UNHAPPILY +UNHAPPINESS +UNHAPPINESSES +UNHAPPY +UNHARMED +UNHARMFUL +UNHARNESS +UNHARNESSED +UNHARNESSES +UNHARNESSING +UNHARRIED +UNHARVESTED +UNHASTY +UNHAT +UNHATCHED +UNHATS +UNHATTED +UNHATTING +UNHEALED +UNHEALTHFUL +UNHEALTHIER +UNHEALTHIEST +UNHEALTHILY +UNHEALTHINESS +UNHEALTHINESSES +UNHEALTHY +UNHEARD +UNHEATED +UNHEDGED +UNHEEDED +UNHEEDFUL +UNHEEDING +UNHELM +UNHELMED +UNHELMING +UNHELMS +UNHELPED +UNHELPFUL +UNHELPFULLY +UNHERALDED +UNHEROIC +UNHESITATING +UNHESITATINGLY +UNHEWN +UNHINDERED +UNHINGE +UNHINGED +UNHINGES +UNHINGING +UNHIP +UNHIRABLE +UNHIRED +UNHISTORICAL +UNHITCH +UNHITCHED +UNHITCHES +UNHITCHING +UNHOLIER +UNHOLIEST +UNHOLILY +UNHOLINESS +UNHOLINESSES +UNHOLY +UNHOMOGENIZED +UNHONORED +UNHOOD +UNHOODED +UNHOODING +UNHOODS +UNHOOK +UNHOOKED +UNHOOKING +UNHOOKS +UNHOPED +UNHOPEFUL +UNHORSE +UNHORSED +UNHORSES +UNHORSING +UNHOSTILE +UNHOUSE +UNHOUSED +UNHOUSELED +UNHOUSES +UNHOUSING +UNHUMAN +UNHUMANLY +UNHUMBLED +UNHUMOROUS +UNHUNG +UNHURRIED +UNHURRIEDLY +UNHURT +UNHUSK +UNHUSKED +UNHUSKING +UNHUSKS +UNHYDROLYZED +UNHYGIENIC +UNHYPHENATED +UNHYSTERICAL +UNHYSTERICALLY +UNIALGAL +UNIAXIAL +UNIBODY +UNICAMERAL +UNICAMERALLY +UNICELLULAR +UNICOLOR +UNICORN +UNICORNS +UNICYCLE +UNICYCLED +UNICYCLES +UNICYCLING +UNICYCLIST +UNICYCLISTS +UNIDEAED +UNIDEAL +UNIDENTIFIABLE +UNIDENTIFIED +UNIDEOLOGICAL +UNIDIMENSIONAL +UNIDIOMATIC +UNIDIRECTIONAL +UNIFACE +UNIFACES +UNIFIABLE +UNIFIC +UNIFICATION +UNIFICATIONS +UNIFIED +UNIFIER +UNIFIERS +UNIFIES +UNIFILAR +UNIFOLIATE +UNIFOLIOLATE +UNIFORM +UNIFORMED +UNIFORMER +UNIFORMEST +UNIFORMING +UNIFORMITARIAN +UNIFORMITARIANS +UNIFORMITIES +UNIFORMITY +UNIFORMLY +UNIFORMNESS +UNIFORMNESSES +UNIFORMS +UNIFY +UNIFYING +UNIGNORABLE +UNIJUGATE +UNILATERAL +UNILATERALLY +UNILINEAL +UNILINEAR +UNILINGUAL +UNILLUMINATING +UNILLUSIONED +UNILOBED +UNILOCULAR +UNIMAGINABLE +UNIMAGINABLY +UNIMAGINATIVE +UNIMAGINATIVELY +UNIMBUED +UNIMMUNIZED +UNIMPAIRED +UNIMPASSIONED +UNIMPEACHABLE +UNIMPEACHABLY +UNIMPEDED +UNIMPORTANT +UNIMPOSING +UNIMPRESSED +UNIMPRESSIVE +UNIMPROVED +UNINCORPORATED +UNINDEXED +UNINDICTED +UNINFECTED +UNINFLATED +UNINFLECTED +UNINFLUENCED +UNINFORMATIVE +UNINFORMATIVELY +UNINFORMED +UNINGRATIATING +UNINHABITABLE +UNINHABITED +UNINHIBITED +UNINHIBITEDLY +UNINHIBITEDNESS +UNINITIATE +UNINITIATED +UNINITIATES +UNINJURED +UNINOCULATED +UNINSPECTED +UNINSPIRED +UNINSPIRING +UNINSTALL +UNINSTALLED +UNINSTALLING +UNINSTALLS +UNINSTRUCTED +UNINSTRUCTIVE +UNINSULATED +UNINSURABLE +UNINSURED +UNINSUREDS +UNINTEGRATED +UNINTELLECTUAL +UNINTELLIGENT +UNINTELLIGENTLY +UNINTELLIGIBLE +UNINTELLIGIBLY +UNINTENDED +UNINTENTIONAL +UNINTENTIONALLY +UNINTEREST +UNINTERESTED +UNINTERESTING +UNINTERESTS +UNINTERRUPTED +UNINTERRUPTEDLY +UNINTIMIDATED +UNINUCLEATE +UNINVENTIVE +UNINVITED +UNINVITING +UNINVOKED +UNINVOLVED +UNION +UNIONISATION +UNIONISATIONS +UNIONISE +UNIONISED +UNIONISES +UNIONISING +UNIONISM +UNIONISMS +UNIONIST +UNIONISTS +UNIONIZATION +UNIONIZATIONS +UNIONIZE +UNIONIZED +UNIONIZER +UNIONIZERS +UNIONIZES +UNIONIZING +UNIONS +UNIPARENTAL +UNIPARENTALLY +UNIPAROUS +UNIPLANAR +UNIPOD +UNIPODS +UNIPOLAR +UNIPOTENT +UNIQUE +UNIQUELY +UNIQUENESS +UNIQUENESSES +UNIQUER +UNIQUES +UNIQUEST +UNIRAMOUS +UNIRONED +UNIRONIC +UNIRONICALLY +UNIRRADIATED +UNIRRIGATED +UNISEX +UNISEXES +UNISEXUAL +UNISEXUALITIES +UNISEXUALITY +UNISIZE +UNISON +UNISONAL +UNISONANT +UNISONOUS +UNISONS +UNISSUED +UNIT +UNITAGE +UNITAGES +UNITARD +UNITARDS +UNITARIAN +UNITARIANISM +UNITARIANISMS +UNITARIANS +UNITARILY +UNITARY +UNITE +UNITED +UNITEDLY +UNITER +UNITERS +UNITES +UNITIES +UNITING +UNITIVE +UNITIVELY +UNITIZATION +UNITIZATIONS +UNITIZE +UNITIZED +UNITIZER +UNITIZERS +UNITIZES +UNITIZING +UNITRUST +UNITRUSTS +UNITS +UNITY +UNIVALENT +UNIVALENTS +UNIVALVE +UNIVALVED +UNIVALVES +UNIVARIATE +UNIVERSAL +UNIVERSALISM +UNIVERSALISMS +UNIVERSALIST +UNIVERSALISTIC +UNIVERSALISTS +UNIVERSALITIES +UNIVERSALITY +UNIVERSALIZE +UNIVERSALIZED +UNIVERSALIZES +UNIVERSALIZING +UNIVERSALLY +UNIVERSALNESS +UNIVERSALNESSES +UNIVERSALS +UNIVERSE +UNIVERSES +UNIVERSITIES +UNIVERSITY +UNIVOCAL +UNIVOCALLY +UNIVOCALS +UNJADED +UNJAM +UNJAMMED +UNJAMMING +UNJAMS +UNJOINED +UNJOINT +UNJOINTED +UNJOINTING +UNJOINTS +UNJOYFUL +UNJUDGED +UNJUST +UNJUSTIFIABLE +UNJUSTIFIABLY +UNJUSTIFIED +UNJUSTLY +UNJUSTNESS +UNJUSTNESSES +UNKEELED +UNKEMPT +UNKEND +UNKENNED +UNKENNEL +UNKENNELED +UNKENNELING +UNKENNELLED +UNKENNELLING +UNKENNELS +UNKENT +UNKEPT +UNKIND +UNKINDER +UNKINDEST +UNKINDLED +UNKINDLIER +UNKINDLIEST +UNKINDLINESS +UNKINDLINESSES +UNKINDLY +UNKINDNESS +UNKINDNESSES +UNKINGLY +UNKINK +UNKINKED +UNKINKING +UNKINKS +UNKISSED +UNKNIT +UNKNITS +UNKNITTED +UNKNITTING +UNKNOT +UNKNOTS +UNKNOTTED +UNKNOTTING +UNKNOWABILITIES +UNKNOWABILITY +UNKNOWABLE +UNKNOWING +UNKNOWINGLY +UNKNOWINGS +UNKNOWLEDGEABLE +UNKNOWN +UNKNOWNS +UNKOSHER +UNLABELED +UNLABORED +UNLACE +UNLACED +UNLACES +UNLACING +UNLADE +UNLADED +UNLADEN +UNLADES +UNLADING +UNLADYLIKE +UNLAID +UNLAMENTED +UNLASH +UNLASHED +UNLASHES +UNLASHING +UNLATCH +UNLATCHED +UNLATCHES +UNLATCHING +UNLAUNDERED +UNLAWFUL +UNLAWFULLY +UNLAWFULNESS +UNLAWFULNESSES +UNLAY +UNLAYING +UNLAYS +UNLEAD +UNLEADED +UNLEADEDS +UNLEADING +UNLEADS +UNLEARN +UNLEARNABLE +UNLEARNED +UNLEARNING +UNLEARNS +UNLEARNT +UNLEASED +UNLEASH +UNLEASHED +UNLEASHES +UNLEASHING +UNLEAVENED +UNLED +UNLESS +UNLET +UNLETHAL +UNLETTED +UNLETTERED +UNLEVEL +UNLEVELED +UNLEVELING +UNLEVELLED +UNLEVELLING +UNLEVELS +UNLEVIED +UNLIBERATED +UNLICENSED +UNLICKED +UNLIGHTED +UNLIKABLE +UNLIKE +UNLIKED +UNLIKELIER +UNLIKELIEST +UNLIKELIHOOD +UNLIKELIHOODS +UNLIKELINESS +UNLIKELINESSES +UNLIKELY +UNLIKENESS +UNLIKENESSES +UNLIMBER +UNLIMBERED +UNLIMBERING +UNLIMBERS +UNLIMITED +UNLIMITEDLY +UNLINED +UNLINK +UNLINKED +UNLINKING +UNLINKS +UNLISTED +UNLISTENABLE +UNLIT +UNLITERARY +UNLIVABLE +UNLIVE +UNLIVED +UNLIVELY +UNLIVES +UNLIVING +UNLOAD +UNLOADED +UNLOADER +UNLOADERS +UNLOADING +UNLOADS +UNLOBED +UNLOCALIZED +UNLOCATED +UNLOCK +UNLOCKED +UNLOCKING +UNLOCKS +UNLOOSE +UNLOOSED +UNLOOSEN +UNLOOSENED +UNLOOSENING +UNLOOSENS +UNLOOSES +UNLOOSING +UNLOVABLE +UNLOVED +UNLOVELIER +UNLOVELIEST +UNLOVELINESS +UNLOVELINESSES +UNLOVELY +UNLOVING +UNLUCKIER +UNLUCKIEST +UNLUCKILY +UNLUCKINESS +UNLUCKINESSES +UNLUCKY +UNLYRICAL +UNMACHO +UNMADE +UNMAGNIFIED +UNMAILED +UNMAKE +UNMAKER +UNMAKERS +UNMAKES +UNMAKING +UNMALICIOUS +UNMALICIOUSLY +UNMAN +UNMANAGEABLE +UNMANAGEABLY +UNMANAGED +UNMANFUL +UNMANIPULATED +UNMANLIER +UNMANLIEST +UNMANLINESS +UNMANLINESSES +UNMANLY +UNMANNED +UNMANNERED +UNMANNEREDLY +UNMANNERLINESS +UNMANNERLY +UNMANNING +UNMANNISH +UNMANS +UNMAPPED +UNMARKED +UNMARKETABLE +UNMARRED +UNMARRIED +UNMARRIEDS +UNMASCULINE +UNMASK +UNMASKED +UNMASKER +UNMASKERS +UNMASKING +UNMASKS +UNMATCHABLE +UNMATCHED +UNMATED +UNMATTED +UNMATURED +UNMEANING +UNMEANT +UNMEASURABLE +UNMEASURED +UNMECHANIZED +UNMEDIATED +UNMEDICATED +UNMEET +UNMEETLY +UNMELLOW +UNMELODIOUS +UNMELODIOUSNESS +UNMELTED +UNMEMORABLE +UNMEMORABLY +UNMENDED +UNMENTIONABLE +UNMENTIONABLES +UNMERCIFUL +UNMERCIFULLY +UNMERITED +UNMERRY +UNMESH +UNMESHED +UNMESHES +UNMESHING +UNMET +UNMETABOLIZED +UNMEW +UNMEWED +UNMEWING +UNMEWS +UNMILITARY +UNMILLED +UNMINDFUL +UNMINED +UNMINGLE +UNMINGLED +UNMINGLES +UNMINGLING +UNMISTAKABLE +UNMISTAKABLY +UNMITER +UNMITERED +UNMITERING +UNMITERS +UNMITIGATED +UNMITIGATEDLY +UNMITIGATEDNESS +UNMITRE +UNMITRED +UNMITRES +UNMITRING +UNMIX +UNMIXABLE +UNMIXED +UNMIXEDLY +UNMIXES +UNMIXING +UNMIXT +UNMODERNIZED +UNMODIFIED +UNMODISH +UNMOLD +UNMOLDED +UNMOLDING +UNMOLDS +UNMOLESTED +UNMOLTEN +UNMONITORED +UNMOOR +UNMOORED +UNMOORING +UNMOORS +UNMORAL +UNMORALITIES +UNMORALITY +UNMORALLY +UNMORTISE +UNMORTISED +UNMORTISES +UNMORTISING +UNMOTIVATED +UNMOUNTED +UNMOURNED +UNMOVABLE +UNMOVED +UNMOVING +UNMOWN +UNMUFFLE +UNMUFFLED +UNMUFFLES +UNMUFFLING +UNMUSICAL +UNMUZZLE +UNMUZZLED +UNMUZZLES +UNMUZZLING +UNMYELINATED +UNNAIL +UNNAILED +UNNAILING +UNNAILS +UNNAMABLE +UNNAMEABLE +UNNAMED +UNNATURAL +UNNATURALLY +UNNATURALNESS +UNNATURALNESSES +UNNECESSARILY +UNNECESSARY +UNNEEDED +UNNEEDFUL +UNNEGOTIABLE +UNNERVE +UNNERVED +UNNERVES +UNNERVING +UNNERVINGLY +UNNEUROTIC +UNNEWSWORTHY +UNNILHEXIUM +UNNILHEXIUMS +UNNILPENTIUM +UNNILPENTIUMS +UNNILQUADIUM +UNNILQUADIUMS +UNNOISY +UNNOTED +UNNOTICEABLE +UNNOTICED +UNNOURISHING +UNNUANCED +UNNUMBERED +UNOBJECTIONABLE +UNOBSERVABLE +UNOBSERVED +UNOBSTRUCTED +UNOBTAINABLE +UNOBTRUSIVE +UNOBTRUSIVELY +UNOBTRUSIVENESS +UNOCCUPIED +UNOFFERED +UNOFFICIAL +UNOFFICIALLY +UNOILED +UNOPEN +UNOPENABLE +UNOPENED +UNOPPOSED +UNORDERED +UNORDERLY +UNORGANIZED +UNORIGINAL +UNORNAMENTED +UNORNATE +UNORTHODOX +UNORTHODOXIES +UNORTHODOXLY +UNORTHODOXY +UNOSTENTATIOUS +UNOWNED +UNOXYGENATED +UNPACK +UNPACKED +UNPACKER +UNPACKERS +UNPACKING +UNPACKS +UNPADDED +UNPAGED +UNPAID +UNPAINFUL +UNPAINTED +UNPAIRED +UNPALATABILITY +UNPALATABLE +UNPARALLELED +UNPARASITIZED +UNPARDONABLE +UNPARLIAMENTARY +UNPARTED +UNPASSABLE +UNPASTEURIZED +UNPASTORAL +UNPATCHED +UNPATENTABLE +UNPATRIOTIC +UNPAVED +UNPAYING +UNPEDANTIC +UNPEELED +UNPEG +UNPEGGED +UNPEGGING +UNPEGS +UNPEN +UNPENNED +UNPENNING +UNPENS +UNPENT +UNPEOPLE +UNPEOPLED +UNPEOPLES +UNPEOPLING +UNPERCEIVED +UNPERCEPTIVE +UNPERFECT +UNPERFORMABLE +UNPERFORMED +UNPERSON +UNPERSONS +UNPERSUADED +UNPERSUASIVE +UNPERTURBED +UNPICK +UNPICKED +UNPICKING +UNPICKS +UNPICTURESQUE +UNPIERCED +UNPILE +UNPILED +UNPILES +UNPILING +UNPIN +UNPINNED +UNPINNING +UNPINS +UNPITIED +UNPITTED +UNPITYING +UNPLACED +UNPLAIT +UNPLAITED +UNPLAITING +UNPLAITS +UNPLANNED +UNPLANTED +UNPLAUSIBLE +UNPLAYABLE +UNPLAYED +UNPLEASANT +UNPLEASANTLY +UNPLEASANTNESS +UNPLEASED +UNPLEASING +UNPLEDGED +UNPLIABLE +UNPLIANT +UNPLOWED +UNPLUCKED +UNPLUG +UNPLUGGED +UNPLUGGING +UNPLUGS +UNPLUMBED +UNPOETIC +UNPOINTED +UNPOISED +UNPOLARIZED +UNPOLICED +UNPOLISHED +UNPOLITE +UNPOLITIC +UNPOLITICAL +UNPOLLED +UNPOLLUTED +UNPOPULAR +UNPOPULARITIES +UNPOPULARITY +UNPOSED +UNPOSTED +UNPOTTED +UNPRACTICAL +UNPRECEDENTED +UNPRECEDENTEDLY +UNPREDICTABLE +UNPREDICTABLES +UNPREDICTABLY +UNPREGNANT +UNPREJUDICED +UNPREMEDITATED +UNPREPARED +UNPREPAREDNESS +UNPREPOSSESSING +UNPRESSED +UNPRESSURED +UNPRESSURIZED +UNPRETENDING +UNPRETENTIOUS +UNPRETENTIOUSLY +UNPRETTY +UNPRICED +UNPRIMED +UNPRINCIPLED +UNPRINTABLE +UNPRINTED +UNPRIVILEGED +UNPRIZED +UNPROBED +UNPROBLEMATIC +UNPROCESSED +UNPRODUCED +UNPRODUCTIVE +UNPROFESSED +UNPROFESSIONAL +UNPROFESSIONALS +UNPROFITABLE +UNPROFITABLY +UNPROGRAMMABLE +UNPROGRAMMED +UNPROGRESSIVE +UNPROMISING +UNPROMISINGLY +UNPROMPTED +UNPRONOUNCEABLE +UNPRONOUNCED +UNPROPITIOUS +UNPROSPEROUS +UNPROTECTED +UNPROVABLE +UNPROVED +UNPROVEN +UNPROVOKED +UNPRUNED +UNPUBLICIZED +UNPUBLISHABLE +UNPUBLISHED +UNPUCKER +UNPUCKERED +UNPUCKERING +UNPUCKERS +UNPUNCTUAL +UNPUNCTUALITIES +UNPUNCTUALITY +UNPUNCTUATED +UNPUNISHED +UNPURE +UNPURELY +UNPURGED +UNPUZZLE +UNPUZZLED +UNPUZZLES +UNPUZZLING +UNQUAKING +UNQUALIFIED +UNQUALIFIEDLY +UNQUANTIFIABLE +UNQUELLED +UNQUENCHABLE +UNQUESTIONABLE +UNQUESTIONABLY +UNQUESTIONED +UNQUESTIONING +UNQUESTIONINGLY +UNQUIET +UNQUIETER +UNQUIETEST +UNQUIETLY +UNQUIETNESS +UNQUIETNESSES +UNQUIETS +UNQUOTE +UNQUOTED +UNQUOTES +UNQUOTING +UNRAISED +UNRAKED +UNRANKED +UNRATED +UNRAVAGED +UNRAVEL +UNRAVELED +UNRAVELING +UNRAVELLED +UNRAVELLING +UNRAVELS +UNRAVISHED +UNRAZED +UNREACHABLE +UNREACHED +UNREAD +UNREADABLE +UNREADIER +UNREADIEST +UNREADILY +UNREADINESS +UNREADINESSES +UNREADY +UNREAL +UNREALISTIC +UNREALISTICALLY +UNREALITIES +UNREALITY +UNREALIZABLE +UNREALIZED +UNREALLY +UNREASON +UNREASONABLE +UNREASONABLY +UNREASONED +UNREASONING +UNREASONINGLY +UNREASONS +UNREBUKED +UNRECEPTIVE +UNRECLAIMABLE +UNRECLAIMED +UNRECOGNIZABLE +UNRECOGNIZABLY +UNRECOGNIZED +UNRECONCILABLE +UNRECONCILED +UNRECONSTRUCTED +UNRECORDED +UNRECOVERABLE +UNRECOVERED +UNRECYCLABLE +UNREDEEMABLE +UNREDEEMED +UNREDRESSED +UNREEL +UNREELED +UNREELER +UNREELERS +UNREELING +UNREELS +UNREEVE +UNREEVED +UNREEVES +UNREEVING +UNREFINED +UNREFLECTIVE +UNREFORMED +UNREFRIGERATED +UNREGENERATE +UNREGENERATELY +UNREGISTERED +UNREGULATED +UNREHEARSED +UNREINFORCED +UNRELATED +UNRELAXED +UNRELENTING +UNRELENTINGLY +UNRELIABILITIES +UNRELIABILITY +UNRELIABLE +UNRELIEVED +UNRELIEVEDLY +UNRELUCTANT +UNREMARKABLE +UNREMARKABLY +UNREMARKED +UNREMEMBERED +UNREMINISCENT +UNREMITTING +UNREMITTINGLY +UNREMOVABLE +UNRENEWED +UNRENT +UNRENTED +UNREPAID +UNREPAIR +UNREPAIRS +UNREPEATABLE +UNREPENTANT +UNREPENTANTLY +UNREPORTED +UNREPRESENTED +UNREPRESSED +UNREQUITED +UNRESERVE +UNRESERVED +UNRESERVEDLY +UNRESERVEDNESS +UNRESERVES +UNRESISTANT +UNRESOLVABLE +UNRESOLVED +UNRESPECTABLE +UNRESPONSIVE +UNRESPONSIVELY +UNREST +UNRESTED +UNRESTFUL +UNRESTING +UNRESTORED +UNRESTRAINED +UNRESTRAINEDLY +UNRESTRAINT +UNRESTRAINTS +UNRESTRICTED +UNRESTS +UNRETIRE +UNRETIRED +UNRETIRES +UNRETIRING +UNRETOUCHED +UNRETURNABLE +UNREVEALED +UNREVIEWABLE +UNREVIEWED +UNREVISED +UNREVOKED +UNREVOLUTIONARY +UNREWARDED +UNREWARDING +UNRHETORICAL +UNRHYMED +UNRHYTHMIC +UNRIBBED +UNRIDABLE +UNRIDDLE +UNRIDDLED +UNRIDDLER +UNRIDDLERS +UNRIDDLES +UNRIDDLING +UNRIFLED +UNRIG +UNRIGGED +UNRIGGING +UNRIGHTEOUS +UNRIGHTEOUSLY +UNRIGHTEOUSNESS +UNRIGS +UNRIMED +UNRINSED +UNRIP +UNRIPE +UNRIPELY +UNRIPENED +UNRIPENESS +UNRIPENESSES +UNRIPER +UNRIPEST +UNRIPPED +UNRIPPING +UNRIPS +UNRISEN +UNRIVALED +UNRIVALLED +UNROASTED +UNROBE +UNROBED +UNROBES +UNROBING +UNROLL +UNROLLED +UNROLLING +UNROLLS +UNROMANTIC +UNROMANTICALLY +UNROMANTICIZED +UNROOF +UNROOFED +UNROOFING +UNROOFS +UNROOT +UNROOTED +UNROOTING +UNROOTS +UNROPED +UNROUGH +UNROUND +UNROUNDED +UNROUNDING +UNROUNDS +UNROVE +UNROVEN +UNRUFFLED +UNRULED +UNRULIER +UNRULIEST +UNRULINESS +UNRULINESSES +UNRULY +UNRUMPLED +UNRUSHED +UNRUSTED +UNS +UNSADDLE +UNSADDLED +UNSADDLES +UNSADDLING +UNSAFE +UNSAFELY +UNSAFETIES +UNSAFETY +UNSAID +UNSAINTLY +UNSALABLE +UNSALABLY +UNSALARIED +UNSALTED +UNSALVAGEABLE +UNSAMPLED +UNSANCTIONED +UNSANITARY +UNSATED +UNSATISFACTORY +UNSATISFIED +UNSATURATE +UNSATURATED +UNSATURATES +UNSAVED +UNSAVORY +UNSAVOURY +UNSAWED +UNSAWN +UNSAY +UNSAYABLE +UNSAYABLES +UNSAYING +UNSAYS +UNSCALABLE +UNSCALED +UNSCANNED +UNSCARRED +UNSCATHED +UNSCENTED +UNSCHEDULED +UNSCHOLARLY +UNSCHOOLED +UNSCIENTIFIC +UNSCRAMBLE +UNSCRAMBLED +UNSCRAMBLER +UNSCRAMBLERS +UNSCRAMBLES +UNSCRAMBLING +UNSCREENED +UNSCREW +UNSCREWED +UNSCREWING +UNSCREWS +UNSCRIPTED +UNSCRIPTURAL +UNSCRUPULOUS +UNSCRUPULOUSLY +UNSEAL +UNSEALED +UNSEALING +UNSEALS +UNSEAM +UNSEAMED +UNSEAMING +UNSEAMS +UNSEARCHABLE +UNSEARCHABLY +UNSEARED +UNSEASONABLE +UNSEASONABLY +UNSEASONED +UNSEAT +UNSEATED +UNSEATING +UNSEATS +UNSEAWORTHY +UNSECURED +UNSEEABLE +UNSEEDED +UNSEEING +UNSEEMLIER +UNSEEMLIEST +UNSEEMLINESS +UNSEEMLINESSES +UNSEEMLY +UNSEEN +UNSEGMENTED +UNSEGREGATED +UNSEIZED +UNSELECTED +UNSELECTIVE +UNSELECTIVELY +UNSELFISH +UNSELFISHLY +UNSELFISHNESS +UNSELFISHNESSES +UNSELL +UNSELLABLE +UNSELLING +UNSELLS +UNSENSATIONAL +UNSENSITIZED +UNSENT +UNSENTIMENTAL +UNSEPARATED +UNSERIOUS +UNSERIOUSNESS +UNSERIOUSNESSES +UNSERVED +UNSERVICEABLE +UNSET +UNSETS +UNSETTING +UNSETTLE +UNSETTLED +UNSETTLEDNESS +UNSETTLEDNESSES +UNSETTLEMENT +UNSETTLEMENTS +UNSETTLES +UNSETTLING +UNSETTLINGLY +UNSEW +UNSEWED +UNSEWING +UNSEWN +UNSEWS +UNSEX +UNSEXED +UNSEXES +UNSEXING +UNSEXUAL +UNSEXY +UNSHACKLE +UNSHACKLED +UNSHACKLES +UNSHACKLING +UNSHADED +UNSHAKABLE +UNSHAKABLY +UNSHAKEN +UNSHAMED +UNSHAPED +UNSHAPELY +UNSHAPEN +UNSHARED +UNSHARP +UNSHAVED +UNSHAVEN +UNSHEATHE +UNSHEATHED +UNSHEATHES +UNSHEATHING +UNSHED +UNSHELL +UNSHELLED +UNSHELLING +UNSHELLS +UNSHIFT +UNSHIFTED +UNSHIFTING +UNSHIFTS +UNSHIP +UNSHIPPED +UNSHIPPING +UNSHIPS +UNSHIRTED +UNSHOCKABLE +UNSHOD +UNSHORN +UNSHOWY +UNSHRUNK +UNSHUT +UNSICKER +UNSIFTED +UNSIGHT +UNSIGHTED +UNSIGHTING +UNSIGHTLIER +UNSIGHTLIEST +UNSIGHTLINESS +UNSIGHTLINESSES +UNSIGHTLY +UNSIGHTS +UNSIGNED +UNSILENT +UNSIMILAR +UNSINFUL +UNSINKABLE +UNSIZED +UNSKILFUL +UNSKILLED +UNSKILLFUL +UNSKILLFULLY +UNSKILLFULNESS +UNSLAKABLE +UNSLAKED +UNSLICED +UNSLICK +UNSLING +UNSLINGING +UNSLINGS +UNSLUNG +UNSMART +UNSMILING +UNSMOKED +UNSMOOTHED +UNSNAG +UNSNAGGED +UNSNAGGING +UNSNAGS +UNSNAP +UNSNAPPED +UNSNAPPING +UNSNAPS +UNSNARL +UNSNARLED +UNSNARLING +UNSNARLS +UNSOAKED +UNSOBER +UNSOBERLY +UNSOCIABILITIES +UNSOCIABILITY +UNSOCIABLE +UNSOCIABLENESS +UNSOCIABLY +UNSOCIAL +UNSOCIALLY +UNSOILED +UNSOLD +UNSOLDER +UNSOLDERED +UNSOLDERING +UNSOLDERS +UNSOLDIERLY +UNSOLICITED +UNSOLID +UNSOLVABLE +UNSOLVED +UNSONCY +UNSONSIE +UNSONSY +UNSOOTHED +UNSOPHISTICATED +UNSORTED +UNSOUGHT +UNSOUND +UNSOUNDED +UNSOUNDER +UNSOUNDEST +UNSOUNDLY +UNSOUNDNESS +UNSOUNDNESSES +UNSOURCED +UNSOURED +UNSOWED +UNSOWN +UNSPARING +UNSPARINGLY +UNSPEAK +UNSPEAKABLE +UNSPEAKABLY +UNSPEAKING +UNSPEAKS +UNSPECIALIZED +UNSPECIFIABLE +UNSPECIFIC +UNSPECIFIED +UNSPECTACULAR +UNSPENT +UNSPHERE +UNSPHERED +UNSPHERES +UNSPHERING +UNSPILLED +UNSPILT +UNSPIRITUAL +UNSPLIT +UNSPOILED +UNSPOILT +UNSPOKE +UNSPOKEN +UNSPOOL +UNSPOOLED +UNSPOOLING +UNSPOOLS +UNSPORTSMANLIKE +UNSPOTTED +UNSPRAYED +UNSPRUNG +UNSPUN +UNSQUARED +UNSTABLE +UNSTABLENESS +UNSTABLENESSES +UNSTABLER +UNSTABLEST +UNSTABLY +UNSTACK +UNSTACKED +UNSTACKING +UNSTACKS +UNSTAINED +UNSTALKED +UNSTAMPED +UNSTANDARDIZED +UNSTARRED +UNSTARTLING +UNSTATE +UNSTATED +UNSTATES +UNSTATING +UNSTAYED +UNSTEADIED +UNSTEADIER +UNSTEADIES +UNSTEADIEST +UNSTEADILY +UNSTEADINESS +UNSTEADINESSES +UNSTEADY +UNSTEADYING +UNSTEEL +UNSTEELED +UNSTEELING +UNSTEELS +UNSTEMMED +UNSTEP +UNSTEPPED +UNSTEPPING +UNSTEPS +UNSTERILE +UNSTERILIZED +UNSTICK +UNSTICKING +UNSTICKS +UNSTINTED +UNSTINTING +UNSTINTINGLY +UNSTITCH +UNSTITCHED +UNSTITCHES +UNSTITCHING +UNSTOCKED +UNSTONED +UNSTOP +UNSTOPPABLE +UNSTOPPABLY +UNSTOPPED +UNSTOPPER +UNSTOPPERED +UNSTOPPERING +UNSTOPPERS +UNSTOPPING +UNSTOPS +UNSTRAINED +UNSTRAP +UNSTRAPPED +UNSTRAPPING +UNSTRAPS +UNSTRATIFIED +UNSTRESS +UNSTRESSED +UNSTRESSES +UNSTRING +UNSTRINGING +UNSTRINGS +UNSTRIPED +UNSTRUCTURED +UNSTRUNG +UNSTUCK +UNSTUDIED +UNSTUFFED +UNSTUFFY +UNSTUNG +UNSTYLISH +UNSUBDUED +UNSUBSIDIZED +UNSUBSTANTIAL +UNSUBSTANTIALLY +UNSUBSTANTIATED +UNSUBTLE +UNSUBTLY +UNSUCCESS +UNSUCCESSES +UNSUCCESSFUL +UNSUCCESSFULLY +UNSUITABILITIES +UNSUITABILITY +UNSUITABLE +UNSUITABLY +UNSUITED +UNSULLIED +UNSUNG +UNSUNK +UNSUPERVISED +UNSUPPORTABLE +UNSUPPORTED +UNSURE +UNSURELY +UNSURPASSABLE +UNSURPASSED +UNSURPRISED +UNSURPRISING +UNSURPRISINGLY +UNSUSCEPTIBLE +UNSUSPECTED +UNSUSPECTING +UNSUSPICIOUS +UNSUSTAINABLE +UNSWATHE +UNSWATHED +UNSWATHES +UNSWATHING +UNSWAYED +UNSWEAR +UNSWEARING +UNSWEARS +UNSWEETENED +UNSWEPT +UNSWERVING +UNSWOLLEN +UNSWORE +UNSWORN +UNSYMMETRICAL +UNSYMMETRICALLY +UNSYMPATHETIC +UNSYNCHRONIZED +UNSYSTEMATIC +UNSYSTEMATIZED +UNTACK +UNTACKED +UNTACKING +UNTACKS +UNTACTFUL +UNTAGGED +UNTAINTED +UNTAKEN +UNTALENTED +UNTAMABLE +UNTAME +UNTAMED +UNTANGLE +UNTANGLED +UNTANGLES +UNTANGLING +UNTANNED +UNTAPPED +UNTARNISHED +UNTASTED +UNTAUGHT +UNTAXED +UNTEACH +UNTEACHABLE +UNTEACHES +UNTEACHING +UNTECHNICAL +UNTEMPERED +UNTENABILITIES +UNTENABILITY +UNTENABLE +UNTENABLY +UNTENANTED +UNTENDED +UNTENTED +UNTENURED +UNTESTABLE +UNTESTED +UNTETHER +UNTETHERED +UNTETHERING +UNTETHERS +UNTHANKED +UNTHAWED +UNTHEORETICAL +UNTHINK +UNTHINKABILITY +UNTHINKABLE +UNTHINKABLY +UNTHINKING +UNTHINKINGLY +UNTHINKS +UNTHOUGHT +UNTHREAD +UNTHREADED +UNTHREADING +UNTHREADS +UNTHREATENING +UNTHRIFTY +UNTHRONE +UNTHRONED +UNTHRONES +UNTHRONING +UNTIDIED +UNTIDIER +UNTIDIES +UNTIDIEST +UNTIDILY +UNTIDINESS +UNTIDINESSES +UNTIDY +UNTIDYING +UNTIE +UNTIED +UNTIEING +UNTIES +UNTIL +UNTILLABLE +UNTILLED +UNTILTED +UNTIMED +UNTIMELIER +UNTIMELIEST +UNTIMELINESS +UNTIMELINESSES +UNTIMELY +UNTIMEOUS +UNTINGED +UNTIPPED +UNTIRED +UNTIRING +UNTIRINGLY +UNTITLED +UNTO +UNTOGETHER +UNTOLD +UNTORN +UNTOUCHABILITY +UNTOUCHABLE +UNTOUCHABLES +UNTOUCHED +UNTOWARD +UNTOWARDLY +UNTOWARDNESS +UNTOWARDNESSES +UNTRACEABLE +UNTRACED +UNTRACK +UNTRACKED +UNTRACKING +UNTRACKS +UNTRADITIONAL +UNTRADITIONALLY +UNTRAINED +UNTRAMMELED +UNTRANSFORMED +UNTRANSLATABLE +UNTRANSLATED +UNTRAPPED +UNTRAVELED +UNTRAVERSED +UNTREAD +UNTREADED +UNTREADING +UNTREADS +UNTREATED +UNTRENDY +UNTRIED +UNTRIM +UNTRIMMED +UNTRIMMING +UNTRIMS +UNTROD +UNTRODDEN +UNTROUBLED +UNTRUE +UNTRUER +UNTRUEST +UNTRULY +UNTRUSS +UNTRUSSED +UNTRUSSES +UNTRUSSING +UNTRUSTING +UNTRUSTWORTHY +UNTRUSTY +UNTRUTH +UNTRUTHFUL +UNTRUTHFULLY +UNTRUTHFULNESS +UNTRUTHS +UNTUCK +UNTUCKED +UNTUCKING +UNTUCKS +UNTUFTED +UNTUNABLE +UNTUNE +UNTUNED +UNTUNEFUL +UNTUNES +UNTUNING +UNTURNED +UNTUTORED +UNTWILLED +UNTWINE +UNTWINED +UNTWINES +UNTWINING +UNTWIST +UNTWISTED +UNTWISTING +UNTWISTS +UNTYING +UNTYPICAL +UNTYPICALLY +UNUNBIUM +UNUNBIUMS +UNUNITED +UNUNUNIUM +UNUNUNIUMS +UNURGED +UNUSABLE +UNUSED +UNUSUAL +UNUSUALLY +UNUSUALNESS +UNUSUALNESSES +UNUTILIZED +UNUTTERABLE +UNUTTERABLY +UNUTTERED +UNVACCINATED +UNVALUED +UNVARIED +UNVARNISHED +UNVARYING +UNVEIL +UNVEILED +UNVEILING +UNVEILINGS +UNVEILS +UNVEINED +UNVENTILATED +UNVERBALIZED +UNVERIFIABLE +UNVERSED +UNVESTED +UNVEXED +UNVEXT +UNVIABLE +UNVISITED +UNVOCAL +UNVOICE +UNVOICED +UNVOICES +UNVOICING +UNWAKENED +UNWALLED +UNWANING +UNWANTED +UNWARIER +UNWARIEST +UNWARILY +UNWARINESS +UNWARINESSES +UNWARLIKE +UNWARMED +UNWARNED +UNWARPED +UNWARRANTABLE +UNWARRANTABLY +UNWARRANTED +UNWARY +UNWASHED +UNWASHEDNESS +UNWASHEDNESSES +UNWASHEDS +UNWASTED +UNWATCHABLE +UNWATCHED +UNWATERED +UNWAVERING +UNWAVERINGLY +UNWAXED +UNWEANED +UNWEARABLE +UNWEARIED +UNWEARIEDLY +UNWEARY +UNWEATHERED +UNWEAVE +UNWEAVES +UNWEAVING +UNWED +UNWEDDED +UNWEEDED +UNWEETING +UNWEETINGLY +UNWEIGHED +UNWEIGHT +UNWEIGHTED +UNWEIGHTING +UNWEIGHTS +UNWELCOME +UNWELDED +UNWELL +UNWEPT +UNWET +UNWETTED +UNWHIPPED +UNWHITE +UNWHOLESOME +UNWHOLESOMELY +UNWIELDIER +UNWIELDIEST +UNWIELDILY +UNWIELDINESS +UNWIELDINESSES +UNWIELDY +UNWIFELY +UNWILLED +UNWILLING +UNWILLINGLY +UNWILLINGNESS +UNWILLINGNESSES +UNWIND +UNWINDER +UNWINDERS +UNWINDING +UNWINDS +UNWINKING +UNWINNABLE +UNWISDOM +UNWISDOMS +UNWISE +UNWISELY +UNWISER +UNWISEST +UNWISH +UNWISHED +UNWISHES +UNWISHING +UNWIT +UNWITS +UNWITTED +UNWITTING +UNWITTINGLY +UNWOMANLY +UNWON +UNWONTED +UNWONTEDLY +UNWONTEDNESS +UNWONTEDNESSES +UNWOODED +UNWOOED +UNWORKABILITIES +UNWORKABILITY +UNWORKABLE +UNWORKED +UNWORLDLIER +UNWORLDLIEST +UNWORLDLINESS +UNWORLDLINESSES +UNWORLDLY +UNWORN +UNWORRIED +UNWORTHIER +UNWORTHIES +UNWORTHIEST +UNWORTHILY +UNWORTHINESS +UNWORTHINESSES +UNWORTHY +UNWOUND +UNWOUNDED +UNWOVE +UNWOVEN +UNWRAP +UNWRAPPED +UNWRAPPING +UNWRAPS +UNWREATHE +UNWREATHED +UNWREATHES +UNWREATHING +UNWRINKLE +UNWRINKLED +UNWRINKLES +UNWRINKLING +UNWRITTEN +UNWROUGHT +UNWRUNG +UNYEANED +UNYIELDING +UNYIELDINGLY +UNYOKE +UNYOKED +UNYOKES +UNYOKING +UNYOUNG +UNZEALOUS +UNZIP +UNZIPPED +UNZIPPING +UNZIPS +UNZONED +UP +UPAS +UPASES +UPBEAR +UPBEARER +UPBEARERS +UPBEARING +UPBEARS +UPBEAT +UPBEATS +UPBIND +UPBINDING +UPBINDS +UPBOIL +UPBOILED +UPBOILING +UPBOILS +UPBORE +UPBORNE +UPBOUND +UPBOW +UPBOWS +UPBRAID +UPBRAIDED +UPBRAIDER +UPBRAIDERS +UPBRAIDING +UPBRAIDS +UPBRINGING +UPBRINGINGS +UPBUILD +UPBUILDER +UPBUILDERS +UPBUILDING +UPBUILDS +UPBUILT +UPBY +UPBYE +UPCAST +UPCASTING +UPCASTS +UPCHUCK +UPCHUCKED +UPCHUCKING +UPCHUCKS +UPCLIMB +UPCLIMBED +UPCLIMBING +UPCLIMBS +UPCOAST +UPCOIL +UPCOILED +UPCOILING +UPCOILS +UPCOMING +UPCOUNTRIES +UPCOUNTRY +UPCOURT +UPCURL +UPCURLED +UPCURLING +UPCURLS +UPCURVE +UPCURVED +UPCURVES +UPCURVING +UPDART +UPDARTED +UPDARTING +UPDARTS +UPDATE +UPDATED +UPDATER +UPDATERS +UPDATES +UPDATING +UPDIVE +UPDIVED +UPDIVES +UPDIVING +UPDO +UPDOS +UPDOVE +UPDRAFT +UPDRAFTS +UPDRIED +UPDRIES +UPDRY +UPDRYING +UPEND +UPENDED +UPENDING +UPENDS +UPFIELD +UPFLING +UPFLINGING +UPFLINGS +UPFLOW +UPFLOWED +UPFLOWING +UPFLOWS +UPFLUNG +UPFOLD +UPFOLDED +UPFOLDING +UPFOLDS +UPFRONT +UPGATHER +UPGATHERED +UPGATHERING +UPGATHERS +UPGAZE +UPGAZED +UPGAZES +UPGAZING +UPGIRD +UPGIRDED +UPGIRDING +UPGIRDS +UPGIRT +UPGOING +UPGRADABILITIES +UPGRADABILITY +UPGRADABLE +UPGRADE +UPGRADEABILITY +UPGRADEABLE +UPGRADED +UPGRADES +UPGRADING +UPGREW +UPGROW +UPGROWING +UPGROWN +UPGROWS +UPGROWTH +UPGROWTHS +UPHEAP +UPHEAPED +UPHEAPING +UPHEAPS +UPHEAVAL +UPHEAVALS +UPHEAVE +UPHEAVED +UPHEAVER +UPHEAVERS +UPHEAVES +UPHEAVING +UPHELD +UPHILL +UPHILLS +UPHOARD +UPHOARDED +UPHOARDING +UPHOARDS +UPHOLD +UPHOLDER +UPHOLDERS +UPHOLDING +UPHOLDS +UPHOLSTER +UPHOLSTERED +UPHOLSTERER +UPHOLSTERERS +UPHOLSTERIES +UPHOLSTERING +UPHOLSTERS +UPHOLSTERY +UPHOVE +UPHROE +UPHROES +UPKEEP +UPKEEPS +UPLAND +UPLANDER +UPLANDERS +UPLANDS +UPLEAP +UPLEAPED +UPLEAPING +UPLEAPS +UPLEAPT +UPLIFT +UPLIFTED +UPLIFTER +UPLIFTERS +UPLIFTING +UPLIFTS +UPLIGHT +UPLIGHTED +UPLIGHTING +UPLIGHTS +UPLINK +UPLINKED +UPLINKING +UPLINKS +UPLIT +UPLOAD +UPLOADED +UPLOADING +UPLOADS +UPMANSHIP +UPMANSHIPS +UPMARKET +UPMOST +UPO +UPON +UPPED +UPPER +UPPERCASE +UPPERCASED +UPPERCASES +UPPERCASING +UPPERCLASSMAN +UPPERCLASSMEN +UPPERCUT +UPPERCUTS +UPPERCUTTING +UPPERMOST +UPPERPART +UPPERPARTS +UPPERS +UPPILE +UPPILED +UPPILES +UPPILING +UPPING +UPPINGS +UPPISH +UPPISHLY +UPPISHNESS +UPPISHNESSES +UPPITINESS +UPPITINESSES +UPPITY +UPPITYNESS +UPPITYNESSES +UPPROP +UPPROPPED +UPPROPPING +UPPROPS +UPRAISE +UPRAISED +UPRAISER +UPRAISERS +UPRAISES +UPRAISING +UPRATE +UPRATED +UPRATES +UPRATING +UPREACH +UPREACHED +UPREACHES +UPREACHING +UPREAR +UPREARED +UPREARING +UPREARS +UPRIGHT +UPRIGHTED +UPRIGHTING +UPRIGHTLY +UPRIGHTNESS +UPRIGHTNESSES +UPRIGHTS +UPRISE +UPRISEN +UPRISER +UPRISERS +UPRISES +UPRISING +UPRISINGS +UPRIVER +UPRIVERS +UPROAR +UPROARIOUS +UPROARIOUSLY +UPROARIOUSNESS +UPROARS +UPROOT +UPROOTAL +UPROOTALS +UPROOTED +UPROOTEDNESS +UPROOTEDNESSES +UPROOTER +UPROOTERS +UPROOTING +UPROOTS +UPROSE +UPROUSE +UPROUSED +UPROUSES +UPROUSING +UPRUSH +UPRUSHED +UPRUSHES +UPRUSHING +UPS +UPSADAISY +UPSCALE +UPSCALED +UPSCALES +UPSCALING +UPSEND +UPSENDING +UPSENDS +UPSENT +UPSET +UPSETS +UPSETTER +UPSETTERS +UPSETTING +UPSHIFT +UPSHIFTED +UPSHIFTING +UPSHIFTS +UPSHOOT +UPSHOOTING +UPSHOOTS +UPSHOT +UPSHOTS +UPSIDE +UPSIDES +UPSILON +UPSILONS +UPSIZE +UPSIZED +UPSIZES +UPSIZING +UPSLOPE +UPSOAR +UPSOARED +UPSOARING +UPSOARS +UPSPRANG +UPSPRING +UPSPRINGING +UPSPRINGS +UPSPRUNG +UPSTAGE +UPSTAGED +UPSTAGER +UPSTAGERS +UPSTAGES +UPSTAGING +UPSTAIR +UPSTAIRS +UPSTAND +UPSTANDING +UPSTANDINGNESS +UPSTANDS +UPSTARE +UPSTARED +UPSTARES +UPSTARING +UPSTART +UPSTARTED +UPSTARTING +UPSTARTS +UPSTATE +UPSTATER +UPSTATERS +UPSTATES +UPSTEP +UPSTEPPED +UPSTEPPING +UPSTEPS +UPSTIR +UPSTIRRED +UPSTIRRING +UPSTIRS +UPSTOOD +UPSTREAM +UPSTROKE +UPSTROKES +UPSURGE +UPSURGED +UPSURGES +UPSURGING +UPSWEEP +UPSWEEPING +UPSWEEPS +UPSWELL +UPSWELLED +UPSWELLING +UPSWELLS +UPSWEPT +UPSWING +UPSWINGING +UPSWINGS +UPSWOLLEN +UPSWUNG +UPTAKE +UPTAKES +UPTALK +UPTALKED +UPTALKING +UPTALKS +UPTEAR +UPTEARING +UPTEARS +UPTEMPO +UPTEMPOS +UPTHREW +UPTHROW +UPTHROWING +UPTHROWN +UPTHROWS +UPTHRUST +UPTHRUSTED +UPTHRUSTING +UPTHRUSTS +UPTICK +UPTICKS +UPTIGHT +UPTIGHTNESS +UPTIGHTNESSES +UPTILT +UPTILTED +UPTILTING +UPTILTS +UPTIME +UPTIMES +UPTORE +UPTORN +UPTOSS +UPTOSSED +UPTOSSES +UPTOSSING +UPTOWN +UPTOWNER +UPTOWNERS +UPTOWNS +UPTREND +UPTRENDS +UPTURN +UPTURNED +UPTURNING +UPTURNS +UPWAFT +UPWAFTED +UPWAFTING +UPWAFTS +UPWARD +UPWARDLY +UPWARDNESS +UPWARDNESSES +UPWARDS +UPWELL +UPWELLED +UPWELLING +UPWELLINGS +UPWELLS +UPWIND +UPWINDS +URACIL +URACILS +URAEI +URAEMIA +URAEMIAS +URAEMIC +URAEUS +URAEUSES +URALITE +URALITES +URALITIC +URANIA +URANIAS +URANIC +URANIDE +URANIDES +URANINITE +URANINITES +URANISM +URANISMS +URANITE +URANITES +URANITIC +URANIUM +URANIUMS +URANOGRAPHIES +URANOGRAPHY +URANOLOGIES +URANOLOGY +URANOUS +URANYL +URANYLIC +URANYLS +URARE +URARES +URARI +URARIS +URASE +URASES +URATE +URATES +URATIC +URB +URBAN +URBANE +URBANELY +URBANER +URBANEST +URBANISATION +URBANISATIONS +URBANISE +URBANISED +URBANISES +URBANISING +URBANISM +URBANISMS +URBANIST +URBANISTIC +URBANISTICALLY +URBANISTS +URBANITE +URBANITES +URBANITIES +URBANITY +URBANIZATION +URBANIZATIONS +URBANIZE +URBANIZED +URBANIZES +URBANIZING +URBANOLOGIES +URBANOLOGIST +URBANOLOGISTS +URBANOLOGY +URBIA +URBIAS +URBS +URCEOLATE +URCHIN +URCHINS +URD +URDS +UREA +UREAL +UREAS +UREASE +UREASES +UREDIA +UREDIAL +UREDINIA +UREDINIAL +UREDINIOSPORE +UREDINIOSPORES +UREDINIUM +UREDIOSPORE +UREDIOSPORES +UREDIUM +UREDO +UREDOS +UREDOSPORE +UREDOSPORES +UREIC +UREIDE +UREIDES +UREMIA +UREMIAS +UREMIC +UREOTELIC +UREOTELISM +UREOTELISMS +URETER +URETERAL +URETERIC +URETERS +URETHAN +URETHANE +URETHANES +URETHANS +URETHRA +URETHRAE +URETHRAL +URETHRAS +URETHRITIS +URETHRITISES +URETHROSCOPE +URETHROSCOPES +URETIC +URGE +URGED +URGENCIES +URGENCY +URGENT +URGENTLY +URGER +URGERS +URGES +URGING +URGINGLY +URIAL +URIALS +URIC +URICOSURIC +URICOTELIC +URICOTELISM +URICOTELISMS +URIDINE +URIDINES +URINAL +URINALS +URINALYSES +URINALYSIS +URINARIES +URINARY +URINATE +URINATED +URINATES +URINATING +URINATION +URINATIONS +URINATIVE +URINATOR +URINATORS +URINE +URINEMIA +URINEMIAS +URINEMIC +URINES +URINOGENITAL +URINOMETER +URINOMETERS +URINOSE +URINOUS +URN +URNLIKE +URNS +UROCHORD +UROCHORDATE +UROCHORDATES +UROCHORDS +UROCHROME +UROCHROMES +URODELE +URODELES +UROGENITAL +UROGENOUS +UROKINASE +UROKINASES +UROLITH +UROLITHIASES +UROLITHIASIS +UROLITHIC +UROLITHS +UROLOGIC +UROLOGICAL +UROLOGIES +UROLOGIST +UROLOGISTS +UROLOGY +UROPOD +UROPODAL +UROPODOUS +UROPODS +UROPYGIA +UROPYGIAL +UROPYGIUM +UROPYGIUMS +UROSCOPIC +UROSCOPIES +UROSCOPY +UROSTYLE +UROSTYLES +URP +URPED +URPING +URPS +URSA +URSAE +URSID +URSIDS +URSIFORM +URSINE +URTEXT +URTEXTS +URTICANT +URTICANTS +URTICARIA +URTICARIAL +URTICARIAS +URTICATE +URTICATED +URTICATES +URTICATING +URTICATION +URTICATIONS +URUS +URUSES +URUSHIOL +URUSHIOLS +US +USABILITIES +USABILITY +USABLE +USABLENESS +USABLENESSES +USABLY +USAGE +USAGES +USANCE +USANCES +USAUNCE +USAUNCES +USE +USEABLE +USEABLY +USED +USEFUL +USEFULLY +USEFULNESS +USEFULNESSES +USELESS +USELESSLY +USELESSNESS +USELESSNESSES +USER +USERNAME +USERNAMES +USERS +USES +USHER +USHERED +USHERETTE +USHERETTES +USHERING +USHERS +USING +USNEA +USNEAS +USQUABAE +USQUABAES +USQUE +USQUEBAE +USQUEBAES +USQUEBAUGH +USQUEBAUGHS +USQUES +USTULATE +USUAL +USUALLY +USUALNESS +USUALNESSES +USUALS +USUFRUCT +USUFRUCTS +USUFRUCTUARIES +USUFRUCTUARY +USURER +USURERS +USURIES +USURIOUS +USURIOUSLY +USURIOUSNESS +USURIOUSNESSES +USURP +USURPATION +USURPATIONS +USURPED +USURPER +USURPERS +USURPING +USURPS +USURY +UT +UTA +UTAS +UTE +UTENSIL +UTENSILS +UTERI +UTERINE +UTERUS +UTERUSES +UTES +UTILE +UTILIDOR +UTILIDORS +UTILISE +UTILISED +UTILISER +UTILISERS +UTILISES +UTILISING +UTILITARIAN +UTILITARIANISM +UTILITARIANISMS +UTILITARIANS +UTILITIES +UTILITY +UTILIZABLE +UTILIZATION +UTILIZATIONS +UTILIZE +UTILIZED +UTILIZER +UTILIZERS +UTILIZES +UTILIZING +UTMOST +UTMOSTS +UTOPIA +UTOPIAN +UTOPIANISM +UTOPIANISMS +UTOPIANS +UTOPIAS +UTOPISM +UTOPISMS +UTOPIST +UTOPISTIC +UTOPISTS +UTRICLE +UTRICLES +UTRICULAR +UTRICULI +UTRICULUS +UTS +UTTER +UTTERABLE +UTTERANCE +UTTERANCES +UTTERED +UTTERER +UTTERERS +UTTERING +UTTERLY +UTTERMOST +UTTERMOSTS +UTTERNESS +UTTERNESSES +UTTERS +UVAROVITE +UVAROVITES +UVEA +UVEAL +UVEAS +UVEITIC +UVEITIS +UVEITISES +UVEOUS +UVULA +UVULAE +UVULAR +UVULARLY +UVULARS +UVULAS +UVULITIS +UVULITISES +UXORIAL +UXORIALLY +UXORICIDE +UXORICIDES +UXORIOUS +UXORIOUSLY +UXORIOUSNESS +UXORIOUSNESSES +VAC +VACANCIES +VACANCY +VACANT +VACANTLY +VACANTNESS +VACANTNESSES +VACATABLE +VACATE +VACATED +VACATES +VACATING +VACATION +VACATIONED +VACATIONER +VACATIONERS +VACATIONING +VACATIONIST +VACATIONISTS +VACATIONLAND +VACATIONLANDS +VACATIONS +VACCINA +VACCINAL +VACCINAS +VACCINATE +VACCINATED +VACCINATES +VACCINATING +VACCINATION +VACCINATIONS +VACCINATOR +VACCINATORS +VACCINE +VACCINEE +VACCINEES +VACCINES +VACCINIA +VACCINIAL +VACCINIAS +VACILLANT +VACILLATE +VACILLATED +VACILLATES +VACILLATING +VACILLATINGLY +VACILLATION +VACILLATIONS +VACILLATOR +VACILLATORS +VACS +VACUA +VACUITIES +VACUITY +VACUOLAR +VACUOLATE +VACUOLATED +VACUOLATION +VACUOLATIONS +VACUOLE +VACUOLES +VACUOUS +VACUOUSLY +VACUOUSNESS +VACUOUSNESSES +VACUUM +VACUUMED +VACUUMING +VACUUMS +VADOSE +VAGABOND +VAGABONDAGE +VAGABONDAGES +VAGABONDED +VAGABONDING +VAGABONDISH +VAGABONDISM +VAGABONDISMS +VAGABONDS +VAGAL +VAGALLY +VAGARIES +VAGARIOUS +VAGARIOUSLY +VAGARY +VAGI +VAGILE +VAGILITIES +VAGILITY +VAGINA +VAGINAE +VAGINAL +VAGINALLY +VAGINAS +VAGINATE +VAGINATED +VAGINISMUS +VAGINISMUSES +VAGINITIS +VAGINITISES +VAGINOSES +VAGINOSIS +VAGOTOMIES +VAGOTOMY +VAGOTONIA +VAGOTONIAS +VAGOTONIC +VAGRANCIES +VAGRANCY +VAGRANT +VAGRANTLY +VAGRANTS +VAGROM +VAGUE +VAGUELY +VAGUENESS +VAGUENESSES +VAGUER +VAGUEST +VAGUS +VAHINE +VAHINES +VAIL +VAILED +VAILING +VAILS +VAIN +VAINER +VAINEST +VAINGLORIES +VAINGLORIOUS +VAINGLORIOUSLY +VAINGLORY +VAINLY +VAINNESS +VAINNESSES +VAIR +VAIRS +VAKEEL +VAKEELS +VAKIL +VAKILS +VALANCE +VALANCED +VALANCES +VALANCING +VALE +VALEDICTION +VALEDICTIONS +VALEDICTORIAN +VALEDICTORIANS +VALEDICTORIES +VALEDICTORY +VALENCE +VALENCES +VALENCIA +VALENCIAS +VALENCIES +VALENCY +VALENTINE +VALENTINES +VALERATE +VALERATES +VALERIAN +VALERIANS +VALERIC +VALES +VALET +VALETED +VALETING +VALETS +VALETUDINARIAN +VALETUDINARIANS +VALETUDINARIES +VALETUDINARY +VALGOID +VALGUS +VALGUSES +VALIANCE +VALIANCES +VALIANCIES +VALIANCY +VALIANT +VALIANTLY +VALIANTNESS +VALIANTNESSES +VALIANTS +VALID +VALIDATE +VALIDATED +VALIDATES +VALIDATING +VALIDATION +VALIDATIONS +VALIDITIES +VALIDITY +VALIDLY +VALIDNESS +VALIDNESSES +VALINE +VALINES +VALISE +VALISES +VALKYR +VALKYRIE +VALKYRIES +VALKYRS +VALLATE +VALLATION +VALLATIONS +VALLECULA +VALLECULAE +VALLECULAR +VALLEY +VALLEYED +VALLEYS +VALONIA +VALONIAS +VALOR +VALORISE +VALORISED +VALORISES +VALORISING +VALORIZATION +VALORIZATIONS +VALORIZE +VALORIZED +VALORIZES +VALORIZING +VALOROUS +VALOROUSLY +VALORS +VALOUR +VALOURS +VALPOLICELLA +VALPOLICELLAS +VALSE +VALSES +VALUABLE +VALUABLENESS +VALUABLENESSES +VALUABLES +VALUABLY +VALUATE +VALUATED +VALUATES +VALUATING +VALUATION +VALUATIONAL +VALUATIONALLY +VALUATIONS +VALUATOR +VALUATORS +VALUE +VALUED +VALUELESS +VALUELESSNESS +VALUELESSNESSES +VALUER +VALUERS +VALUES +VALUING +VALUTA +VALUTAS +VALVAL +VALVAR +VALVATE +VALVE +VALVED +VALVELESS +VALVELET +VALVELETS +VALVELIKE +VALVES +VALVING +VALVULA +VALVULAE +VALVULAR +VALVULE +VALVULES +VALVULITIS +VALVULITISES +VAMBRACE +VAMBRACED +VAMBRACES +VAMOOSE +VAMOOSED +VAMOOSES +VAMOOSING +VAMOSE +VAMOSED +VAMOSES +VAMOSING +VAMP +VAMPED +VAMPER +VAMPERS +VAMPIER +VAMPIEST +VAMPING +VAMPIRE +VAMPIRES +VAMPIRIC +VAMPIRISH +VAMPIRISM +VAMPIRISMS +VAMPISH +VAMPISHLY +VAMPS +VAMPY +VAN +VANADATE +VANADATES +VANADIATE +VANADIATES +VANADIC +VANADIUM +VANADIUMS +VANADOUS +VANASPATI +VANASPATIS +VANDA +VANDAL +VANDALIC +VANDALISE +VANDALISED +VANDALISES +VANDALISH +VANDALISING +VANDALISM +VANDALISMS +VANDALISTIC +VANDALIZATION +VANDALIZATIONS +VANDALIZE +VANDALIZED +VANDALIZES +VANDALIZING +VANDALS +VANDAS +VANDYKE +VANDYKED +VANDYKES +VANE +VANED +VANES +VANG +VANGS +VANGUARD +VANGUARDISM +VANGUARDISMS +VANGUARDIST +VANGUARDISTS +VANGUARDS +VANILLA +VANILLAS +VANILLIC +VANILLIN +VANILLINS +VANISH +VANISHED +VANISHER +VANISHERS +VANISHES +VANISHING +VANISHINGLY +VANITIED +VANITIES +VANITORIES +VANITORY +VANITY +VANLOAD +VANLOADS +VANMAN +VANMEN +VANNED +VANNER +VANNERS +VANNING +VANPOOL +VANPOOLING +VANPOOLINGS +VANPOOLS +VANQUISH +VANQUISHABLE +VANQUISHED +VANQUISHER +VANQUISHERS +VANQUISHES +VANQUISHING +VANS +VANTAGE +VANTAGES +VANWARD +VAPID +VAPIDITIES +VAPIDITY +VAPIDLY +VAPIDNESS +VAPIDNESSES +VAPOR +VAPORABLE +VAPORED +VAPORER +VAPORERS +VAPORETTI +VAPORETTO +VAPORETTOS +VAPORIFIC +VAPORING +VAPORINGS +VAPORISE +VAPORISED +VAPORISES +VAPORISH +VAPORISHNESS +VAPORISHNESSES +VAPORISING +VAPORIZABLE +VAPORIZATION +VAPORIZATIONS +VAPORIZE +VAPORIZED +VAPORIZER +VAPORIZERS +VAPORIZES +VAPORIZING +VAPORLESS +VAPORLIKE +VAPOROUS +VAPOROUSLY +VAPOROUSNESS +VAPOROUSNESSES +VAPORS +VAPORWARE +VAPORWARES +VAPORY +VAPOUR +VAPOURED +VAPOURER +VAPOURERS +VAPOURING +VAPOURS +VAPOURY +VAQUERO +VAQUEROS +VAR +VARA +VARACTOR +VARACTORS +VARAS +VARIA +VARIABILITIES +VARIABILITY +VARIABLE +VARIABLENESS +VARIABLENESSES +VARIABLES +VARIABLY +VARIANCE +VARIANCES +VARIANT +VARIANTS +VARIAS +VARIATE +VARIATED +VARIATES +VARIATING +VARIATION +VARIATIONAL +VARIATIONALLY +VARIATIONS +VARICELLA +VARICELLAS +VARICES +VARICOCELE +VARICOCELES +VARICOLORED +VARICOSE +VARICOSED +VARICOSES +VARICOSIS +VARICOSITIES +VARICOSITY +VARIED +VARIEDLY +VARIEGATE +VARIEGATED +VARIEGATES +VARIEGATING +VARIEGATION +VARIEGATIONS +VARIEGATOR +VARIEGATORS +VARIER +VARIERS +VARIES +VARIETAL +VARIETALS +VARIETIES +VARIETY +VARIFORM +VARIOLA +VARIOLAR +VARIOLAS +VARIOLATE +VARIOLATED +VARIOLATES +VARIOLATING +VARIOLE +VARIOLES +VARIOLITE +VARIOLITES +VARIOLOID +VARIOLOIDS +VARIOLOUS +VARIOMETER +VARIOMETERS +VARIORUM +VARIORUMS +VARIOUS +VARIOUSLY +VARIOUSNESS +VARIOUSNESSES +VARISIZED +VARISTOR +VARISTORS +VARIX +VARLET +VARLETRIES +VARLETRY +VARLETS +VARMENT +VARMENTS +VARMINT +VARMINTS +VARNA +VARNAS +VARNISH +VARNISHED +VARNISHER +VARNISHERS +VARNISHES +VARNISHING +VARNISHY +VAROOM +VAROOMED +VAROOMING +VAROOMS +VARS +VARSITIES +VARSITY +VARUS +VARUSES +VARVE +VARVED +VARVES +VARY +VARYING +VARYINGLY +VAS +VASA +VASAL +VASCULA +VASCULAR +VASCULARITIES +VASCULARITY +VASCULARIZATION +VASCULATURE +VASCULATURES +VASCULITIDES +VASCULITIS +VASCULUM +VASCULUMS +VASE +VASECTOMIES +VASECTOMIZE +VASECTOMIZED +VASECTOMIZES +VASECTOMIZING +VASECTOMY +VASELIKE +VASELINE +VASELINES +VASES +VASIFORM +VASOACTIVE +VASOACTIVITIES +VASOACTIVITY +VASOCONSTRICTOR +VASODILATATION +VASODILATATIONS +VASODILATION +VASODILATIONS +VASODILATOR +VASODILATORS +VASOMOTOR +VASOPRESSIN +VASOPRESSINS +VASOPRESSOR +VASOPRESSORS +VASOSPASM +VASOSPASMS +VASOSPASTIC +VASOTOCIN +VASOTOCINS +VASOTOMIES +VASOTOMY +VASOVAGAL +VASSAL +VASSALAGE +VASSALAGES +VASSALS +VAST +VASTER +VASTEST +VASTIER +VASTIEST +VASTITIES +VASTITUDE +VASTITUDES +VASTITY +VASTLY +VASTNESS +VASTNESSES +VASTS +VASTY +VAT +VATFUL +VATFULS +VATIC +VATICAL +VATICIDE +VATICIDES +VATICINAL +VATICINATE +VATICINATED +VATICINATES +VATICINATING +VATICINATION +VATICINATIONS +VATICINATOR +VATICINATORS +VATS +VATTED +VATTING +VATU +VATUS +VAU +VAUDEVILLE +VAUDEVILLES +VAUDEVILLIAN +VAUDEVILLIANS +VAULT +VAULTED +VAULTER +VAULTERS +VAULTIER +VAULTIEST +VAULTING +VAULTINGLY +VAULTINGS +VAULTS +VAULTY +VAUNT +VAUNTED +VAUNTER +VAUNTERS +VAUNTFUL +VAUNTIE +VAUNTING +VAUNTINGLY +VAUNTS +VAUNTY +VAUS +VAV +VAVASOR +VAVASORS +VAVASOUR +VAVASOURS +VAVASSOR +VAVASSORS +VAVS +VAW +VAWARD +VAWARDS +VAWNTIE +VAWS +VEAL +VEALED +VEALER +VEALERS +VEALIER +VEALIEST +VEALING +VEALS +VEALY +VECTOR +VECTORED +VECTORIAL +VECTORIALLY +VECTORING +VECTORS +VEDALIA +VEDALIAS +VEDETTE +VEDETTES +VEE +VEEJAY +VEEJAYS +VEENA +VEENAS +VEEP +VEEPEE +VEEPEES +VEEPS +VEER +VEERED +VEERIES +VEERING +VEERINGLY +VEERS +VEERY +VEES +VEG +VEGAN +VEGANISM +VEGANISMS +VEGANS +VEGES +VEGETABLE +VEGETABLES +VEGETABLY +VEGETAL +VEGETALLY +VEGETANT +VEGETARIAN +VEGETARIANISM +VEGETARIANISMS +VEGETARIANS +VEGETATE +VEGETATED +VEGETATES +VEGETATING +VEGETATION +VEGETATIONAL +VEGETATIONS +VEGETATIVE +VEGETATIVELY +VEGETATIVENESS +VEGETE +VEGETIST +VEGETISTS +VEGETIVE +VEGGED +VEGGIE +VEGGIES +VEGGING +VEGIE +VEGIES +VEHEMENCE +VEHEMENCES +VEHEMENCIES +VEHEMENCY +VEHEMENT +VEHEMENTLY +VEHICLE +VEHICLES +VEHICULAR +VEIL +VEILED +VEILEDLY +VEILER +VEILERS +VEILING +VEILINGS +VEILLIKE +VEILS +VEIN +VEINAL +VEINED +VEINER +VEINERS +VEINIER +VEINIEST +VEINING +VEININGS +VEINLESS +VEINLET +VEINLETS +VEINLIKE +VEINS +VEINSTONE +VEINSTONES +VEINULE +VEINULES +VEINULET +VEINULETS +VEINY +VELA +VELAMEN +VELAMINA +VELAR +VELARIA +VELARIUM +VELARIZATION +VELARIZATIONS +VELARIZE +VELARIZED +VELARIZES +VELARIZING +VELARS +VELATE +VELCRO +VELCROS +VELD +VELDS +VELDT +VELDTS +VELIGER +VELIGERS +VELITES +VELLEITIES +VELLEITY +VELLICATE +VELLICATED +VELLICATES +VELLICATING +VELLUM +VELLUMS +VELOCE +VELOCIMETER +VELOCIMETERS +VELOCIPEDE +VELOCIPEDES +VELOCIRAPTOR +VELOCIRAPTORS +VELOCITIES +VELOCITY +VELODROME +VELODROMES +VELOUR +VELOURS +VELOUTE +VELOUTES +VELUM +VELURE +VELURED +VELURES +VELURING +VELVERET +VELVERETS +VELVET +VELVETED +VELVETEEN +VELVETEENS +VELVETIER +VELVETIEST +VELVETLIKE +VELVETS +VELVETY +VENA +VENAE +VENAL +VENALITIES +VENALITY +VENALLY +VENATIC +VENATICAL +VENATION +VENATIONS +VEND +VENDABLE +VENDABLES +VENDACE +VENDACES +VENDED +VENDEE +VENDEES +VENDER +VENDERS +VENDETTA +VENDETTAS +VENDEUSE +VENDEUSES +VENDIBILITIES +VENDIBILITY +VENDIBLE +VENDIBLES +VENDIBLY +VENDING +VENDITION +VENDITIONS +VENDOR +VENDORS +VENDS +VENDUE +VENDUES +VENEER +VENEERED +VENEERER +VENEERERS +VENEERING +VENEERINGS +VENEERS +VENENATE +VENENATED +VENENATES +VENENATING +VENENE +VENENES +VENENOSE +VENERABILITIES +VENERABILITY +VENERABLE +VENERABLENESS +VENERABLENESSES +VENERABLES +VENERABLY +VENERATE +VENERATED +VENERATES +VENERATING +VENERATION +VENERATIONS +VENERATOR +VENERATORS +VENEREAL +VENERIES +VENERY +VENESECTION +VENESECTIONS +VENETIAN +VENETIANS +VENGE +VENGEANCE +VENGEANCES +VENGED +VENGEFUL +VENGEFULLY +VENGEFULNESS +VENGEFULNESSES +VENGES +VENGING +VENIAL +VENIALITIES +VENIALITY +VENIALLY +VENIALNESS +VENIALNESSES +VENIN +VENINE +VENINES +VENINS +VENIPUNCTURE +VENIPUNCTURES +VENIRE +VENIREMAN +VENIREMEN +VENIRES +VENISON +VENISONS +VENOGRAM +VENOGRAMS +VENOGRAPHIES +VENOGRAPHY +VENOLOGIES +VENOLOGY +VENOM +VENOMED +VENOMER +VENOMERS +VENOMING +VENOMOUS +VENOMOUSLY +VENOMOUSNESS +VENOMOUSNESSES +VENOMS +VENOSE +VENOSITIES +VENOSITY +VENOUS +VENOUSLY +VENT +VENTAGE +VENTAGES +VENTAIL +VENTAILS +VENTED +VENTER +VENTERS +VENTIFACT +VENTIFACTS +VENTILATE +VENTILATED +VENTILATES +VENTILATING +VENTILATION +VENTILATIONS +VENTILATOR +VENTILATORS +VENTILATORY +VENTING +VENTLESS +VENTRAL +VENTRALLY +VENTRALS +VENTRICLE +VENTRICLES +VENTRICOSE +VENTRICULAR +VENTRICULI +VENTRICULUS +VENTRILOQUIAL +VENTRILOQUIALLY +VENTRILOQUIES +VENTRILOQUISM +VENTRILOQUISMS +VENTRILOQUIST +VENTRILOQUISTIC +VENTRILOQUISTS +VENTRILOQUIZE +VENTRILOQUIZED +VENTRILOQUIZES +VENTRILOQUIZING +VENTRILOQUY +VENTROLATERAL +VENTROMEDIAL +VENTS +VENTURE +VENTURED +VENTURER +VENTURERS +VENTURES +VENTURESOME +VENTURESOMELY +VENTURESOMENESS +VENTURI +VENTURING +VENTURIS +VENTUROUS +VENTUROUSLY +VENTUROUSNESS +VENTUROUSNESSES +VENUE +VENUES +VENULAR +VENULE +VENULES +VENULOSE +VENULOUS +VENUS +VENUSES +VERA +VERACIOUS +VERACIOUSLY +VERACIOUSNESS +VERACIOUSNESSES +VERACITIES +VERACITY +VERANDA +VERANDAED +VERANDAH +VERANDAHED +VERANDAHS +VERANDAS +VERAPAMIL +VERAPAMILS +VERATRIA +VERATRIAS +VERATRIDINE +VERATRIDINES +VERATRIN +VERATRINE +VERATRINES +VERATRINS +VERATRUM +VERATRUMS +VERB +VERBAL +VERBALISM +VERBALISMS +VERBALIST +VERBALISTIC +VERBALISTS +VERBALIZATION +VERBALIZATIONS +VERBALIZE +VERBALIZED +VERBALIZER +VERBALIZERS +VERBALIZES +VERBALIZING +VERBALLY +VERBALS +VERBATIM +VERBENA +VERBENAS +VERBIAGE +VERBIAGES +VERBICIDE +VERBICIDES +VERBID +VERBIDS +VERBIFIED +VERBIFIES +VERBIFY +VERBIFYING +VERBIGERATION +VERBIGERATIONS +VERBILE +VERBILES +VERBLESS +VERBOSE +VERBOSELY +VERBOSENESS +VERBOSENESSES +VERBOSITIES +VERBOSITY +VERBOTEN +VERBS +VERDANCIES +VERDANCY +VERDANT +VERDANTLY +VERDERER +VERDERERS +VERDEROR +VERDERORS +VERDICT +VERDICTS +VERDIGRIS +VERDIGRISES +VERDIN +VERDINS +VERDITER +VERDITERS +VERDURE +VERDURED +VERDURES +VERDUROUS +VERECUND +VERGE +VERGED +VERGENCE +VERGENCES +VERGER +VERGERS +VERGES +VERGING +VERGLAS +VERGLASES +VERIDIC +VERIDICAL +VERIDICALITIES +VERIDICALITY +VERIDICALLY +VERIER +VERIEST +VERIFIABILITIES +VERIFIABILITY +VERIFIABLE +VERIFIABLENESS +VERIFICATION +VERIFICATIONS +VERIFIED +VERIFIER +VERIFIERS +VERIFIES +VERIFY +VERIFYING +VERILY +VERISIMILAR +VERISIMILARLY +VERISIMILITUDE +VERISIMILITUDES +VERISM +VERISMO +VERISMOS +VERISMS +VERIST +VERISTIC +VERISTS +VERITABLE +VERITABLENESS +VERITABLENESSES +VERITABLY +VERITAS +VERITATES +VERITE +VERITES +VERITIES +VERITY +VERJUICE +VERJUICES +VERMEIL +VERMEILS +VERMES +VERMIAN +VERMICELLI +VERMICELLIS +VERMICIDE +VERMICIDES +VERMICULAR +VERMICULATE +VERMICULATED +VERMICULATION +VERMICULATIONS +VERMICULITE +VERMICULITES +VERMIFORM +VERMIFUGE +VERMIFUGES +VERMILION +VERMILIONED +VERMILIONING +VERMILIONS +VERMILLION +VERMILLIONS +VERMIN +VERMINOUS +VERMIS +VERMOULU +VERMOUTH +VERMOUTHS +VERMUTH +VERMUTHS +VERNACLE +VERNACLES +VERNACULAR +VERNACULARISM +VERNACULARISMS +VERNACULARLY +VERNACULARS +VERNAL +VERNALIZATION +VERNALIZATIONS +VERNALIZE +VERNALIZED +VERNALIZES +VERNALIZING +VERNALLY +VERNATION +VERNATIONS +VERNICLE +VERNICLES +VERNIER +VERNIERS +VERNISSAGE +VERNISSAGES +VERNIX +VERNIXES +VERONICA +VERONICAS +VERRUCA +VERRUCAE +VERRUCAS +VERRUCOSE +VERRUCOUS +VERSAL +VERSANT +VERSANTS +VERSATILE +VERSATILELY +VERSATILENESS +VERSATILENESSES +VERSATILITIES +VERSATILITY +VERSE +VERSED +VERSEMAN +VERSEMEN +VERSER +VERSERS +VERSES +VERSET +VERSETS +VERSICLE +VERSICLES +VERSICULAR +VERSIFICATION +VERSIFICATIONS +VERSIFIED +VERSIFIER +VERSIFIERS +VERSIFIES +VERSIFY +VERSIFYING +VERSINE +VERSINES +VERSING +VERSION +VERSIONAL +VERSIONS +VERSO +VERSOS +VERST +VERSTE +VERSTES +VERSTS +VERSUS +VERT +VERTEBRA +VERTEBRAE +VERTEBRAL +VERTEBRAS +VERTEBRATE +VERTEBRATES +VERTEX +VERTEXES +VERTICAL +VERTICALITIES +VERTICALITY +VERTICALLY +VERTICALNESS +VERTICALNESSES +VERTICALS +VERTICES +VERTICIL +VERTICILLATE +VERTICILS +VERTIGINES +VERTIGINOUS +VERTIGINOUSLY +VERTIGO +VERTIGOES +VERTIGOS +VERTS +VERTU +VERTUS +VERVAIN +VERVAINS +VERVE +VERVES +VERVET +VERVETS +VERY +VESICA +VESICAE +VESICAL +VESICANT +VESICANTS +VESICATE +VESICATED +VESICATES +VESICATING +VESICLE +VESICLES +VESICULA +VESICULAE +VESICULAR +VESICULARITIES +VESICULARITY +VESICULATE +VESICULATED +VESICULATES +VESICULATING +VESICULATION +VESICULATIONS +VESPER +VESPERAL +VESPERALS +VESPERS +VESPERTILIAN +VESPERTINE +VESPIARIES +VESPIARY +VESPID +VESPIDS +VESPINE +VESSEL +VESSELED +VESSELS +VEST +VESTA +VESTAL +VESTALLY +VESTALS +VESTAS +VESTED +VESTEE +VESTEES +VESTIARIES +VESTIARY +VESTIBULAR +VESTIBULE +VESTIBULED +VESTIBULES +VESTIBULING +VESTIGE +VESTIGES +VESTIGIA +VESTIGIAL +VESTIGIALLY +VESTIGIUM +VESTING +VESTINGS +VESTLESS +VESTLIKE +VESTMENT +VESTMENTAL +VESTMENTS +VESTRAL +VESTRIES +VESTRY +VESTRYMAN +VESTRYMEN +VESTS +VESTURAL +VESTURE +VESTURED +VESTURES +VESTURING +VESUVIAN +VESUVIANITE +VESUVIANITES +VESUVIANS +VET +VETCH +VETCHES +VETCHLING +VETCHLINGS +VETERAN +VETERANS +VETERINARIAN +VETERINARIANS +VETERINARIES +VETERINARY +VETIVER +VETIVERS +VETIVERT +VETIVERTS +VETO +VETOED +VETOER +VETOERS +VETOES +VETOING +VETS +VETTED +VETTER +VETTERS +VETTING +VEX +VEXATION +VEXATIONS +VEXATIOUS +VEXATIOUSLY +VEXATIOUSNESS +VEXATIOUSNESSES +VEXED +VEXEDLY +VEXEDNESS +VEXEDNESSES +VEXER +VEXERS +VEXES +VEXIL +VEXILLA +VEXILLAR +VEXILLARIES +VEXILLARY +VEXILLATE +VEXILLOLOGIC +VEXILLOLOGICAL +VEXILLOLOGIES +VEXILLOLOGIST +VEXILLOLOGISTS +VEXILLOLOGY +VEXILLUM +VEXILS +VEXING +VEXINGLY +VEXT +VIA +VIABILITIES +VIABILITY +VIABLE +VIABLY +VIADUCT +VIADUCTS +VIAL +VIALED +VIALING +VIALLED +VIALLING +VIALS +VIAND +VIANDS +VIATIC +VIATICA +VIATICAL +VIATICALS +VIATICUM +VIATICUMS +VIATOR +VIATORES +VIATORS +VIBE +VIBES +VIBIST +VIBISTS +VIBRACULA +VIBRACULUM +VIBRAHARP +VIBRAHARPIST +VIBRAHARPISTS +VIBRAHARPS +VIBRANCE +VIBRANCES +VIBRANCIES +VIBRANCY +VIBRANT +VIBRANTLY +VIBRANTS +VIBRAPHONE +VIBRAPHONES +VIBRAPHONIST +VIBRAPHONISTS +VIBRATE +VIBRATED +VIBRATES +VIBRATILE +VIBRATING +VIBRATION +VIBRATIONAL +VIBRATIONLESS +VIBRATIONS +VIBRATIVE +VIBRATO +VIBRATOLESS +VIBRATOR +VIBRATORS +VIBRATORY +VIBRATOS +VIBRIO +VIBRIOID +VIBRION +VIBRIONIC +VIBRIONS +VIBRIOS +VIBRIOSES +VIBRIOSIS +VIBRISSA +VIBRISSAE +VIBRISSAL +VIBRONIC +VIBURNUM +VIBURNUMS +VICAR +VICARAGE +VICARAGES +VICARATE +VICARATES +VICARIAL +VICARIANCE +VICARIANCES +VICARIANT +VICARIANTS +VICARIATE +VICARIATES +VICARIOUS +VICARIOUSLY +VICARIOUSNESS +VICARIOUSNESSES +VICARLY +VICARS +VICARSHIP +VICARSHIPS +VICE +VICED +VICEGERAL +VICEGERENCIES +VICEGERENCY +VICEGERENT +VICEGERENTS +VICELESS +VICENARY +VICENNIAL +VICEREGAL +VICEREGALLY +VICEREINE +VICEREINES +VICEROY +VICEROYALTIES +VICEROYALTY +VICEROYS +VICEROYSHIP +VICEROYSHIPS +VICES +VICHIES +VICHY +VICHYSSOISE +VICHYSSOISES +VICINAGE +VICINAGES +VICINAL +VICING +VICINITIES +VICINITY +VICIOUS +VICIOUSLY +VICIOUSNESS +VICIOUSNESSES +VICISSITUDE +VICISSITUDES +VICISSITUDINOUS +VICOMTE +VICOMTES +VICTIM +VICTIMHOOD +VICTIMHOODS +VICTIMISE +VICTIMISED +VICTIMISES +VICTIMISING +VICTIMIZATION +VICTIMIZATIONS +VICTIMIZE +VICTIMIZED +VICTIMIZER +VICTIMIZERS +VICTIMIZES +VICTIMIZING +VICTIMLESS +VICTIMOLOGIES +VICTIMOLOGIST +VICTIMOLOGISTS +VICTIMOLOGY +VICTIMS +VICTOR +VICTORIA +VICTORIAS +VICTORIES +VICTORIOUS +VICTORIOUSLY +VICTORIOUSNESS +VICTORS +VICTORY +VICTRESS +VICTRESSES +VICTUAL +VICTUALED +VICTUALER +VICTUALERS +VICTUALING +VICTUALLED +VICTUALLER +VICTUALLERS +VICTUALLING +VICTUALS +VICUGNA +VICUGNAS +VICUNA +VICUNAS +VID +VIDE +VIDELICET +VIDEO +VIDEOCASSETTE +VIDEOCASSETTES +VIDEOCONFERENCE +VIDEODISC +VIDEODISCS +VIDEODISK +VIDEODISKS +VIDEOGRAPHER +VIDEOGRAPHERS +VIDEOGRAPHIES +VIDEOGRAPHY +VIDEOLAND +VIDEOLANDS +VIDEOPHILE +VIDEOPHILES +VIDEOPHONE +VIDEOPHONES +VIDEOS +VIDEOTAPE +VIDEOTAPED +VIDEOTAPES +VIDEOTAPING +VIDEOTEX +VIDEOTEXES +VIDEOTEXT +VIDEOTEXTS +VIDETTE +VIDETTES +VIDICON +VIDICONS +VIDS +VIDUITIES +VIDUITY +VIE +VIED +VIER +VIERS +VIES +VIEW +VIEWABLE +VIEWDATA +VIEWED +VIEWER +VIEWERS +VIEWERSHIP +VIEWERSHIPS +VIEWFINDER +VIEWFINDERS +VIEWIER +VIEWIEST +VIEWING +VIEWINGS +VIEWLESS +VIEWLESSLY +VIEWPOINT +VIEWPOINTS +VIEWS +VIEWY +VIG +VIGA +VIGAS +VIGESIMAL +VIGIA +VIGIAS +VIGIL +VIGILANCE +VIGILANCES +VIGILANT +VIGILANTE +VIGILANTES +VIGILANTISM +VIGILANTISMS +VIGILANTLY +VIGILS +VIGINTILLION +VIGINTILLIONS +VIGNERON +VIGNERONS +VIGNETTE +VIGNETTED +VIGNETTER +VIGNETTERS +VIGNETTES +VIGNETTING +VIGNETTIST +VIGNETTISTS +VIGOR +VIGORISH +VIGORISHES +VIGOROSO +VIGOROUS +VIGOROUSLY +VIGOROUSNESS +VIGOROUSNESSES +VIGORS +VIGOUR +VIGOURS +VIGS +VIKING +VIKINGS +VILAYET +VILAYETS +VILE +VILELY +VILENESS +VILENESSES +VILER +VILEST +VILIFICATION +VILIFICATIONS +VILIFIED +VILIFIER +VILIFIERS +VILIFIES +VILIFY +VILIFYING +VILIPEND +VILIPENDED +VILIPENDING +VILIPENDS +VILL +VILLA +VILLADOM +VILLADOMS +VILLAE +VILLAGE +VILLAGER +VILLAGERIES +VILLAGERS +VILLAGERY +VILLAGES +VILLAIN +VILLAINESS +VILLAINESSES +VILLAINIES +VILLAINOUS +VILLAINOUSLY +VILLAINOUSNESS +VILLAINS +VILLAINY +VILLANELLA +VILLANELLE +VILLANELLES +VILLAS +VILLATIC +VILLEIN +VILLEINS +VILLENAGE +VILLENAGES +VILLI +VILLIFORM +VILLOSE +VILLOSITIES +VILLOSITY +VILLOUS +VILLOUSLY +VILLS +VILLUS +VIM +VIMEN +VIMINA +VIMINAL +VIMINEOUS +VIMS +VINA +VINACEOUS +VINAIGRETTE +VINAIGRETTES +VINAL +VINALS +VINAS +VINASSE +VINASSES +VINBLASTINE +VINBLASTINES +VINCA +VINCAS +VINCIBLE +VINCIBLY +VINCRISTINE +VINCRISTINES +VINCULA +VINCULUM +VINCULUMS +VINDALOO +VINDALOOS +VINDICABLE +VINDICATE +VINDICATED +VINDICATES +VINDICATING +VINDICATION +VINDICATIONS +VINDICATIVE +VINDICATOR +VINDICATORS +VINDICATORY +VINDICTIVE +VINDICTIVELY +VINDICTIVENESS +VINE +VINEAL +VINED +VINEDRESSER +VINEDRESSERS +VINEGAR +VINEGARED +VINEGARISH +VINEGARS +VINEGARY +VINERIES +VINERY +VINES +VINEYARD +VINEYARDIST +VINEYARDISTS +VINEYARDS +VINIC +VINICULTURE +VINICULTURES +VINIER +VINIEST +VINIFERA +VINIFERAS +VINIFICATION +VINIFICATIONS +VINIFIED +VINIFIES +VINIFY +VINIFYING +VINING +VINO +VINOS +VINOSITIES +VINOSITY +VINOUS +VINOUSLY +VINTAGE +VINTAGER +VINTAGERS +VINTAGES +VINTNER +VINTNERS +VINY +VINYL +VINYLIC +VINYLIDENE +VINYLIDENES +VINYLS +VIOL +VIOLA +VIOLABILITIES +VIOLABILITY +VIOLABLE +VIOLABLENESS +VIOLABLENESSES +VIOLABLY +VIOLACEOUS +VIOLAS +VIOLATE +VIOLATED +VIOLATER +VIOLATERS +VIOLATES +VIOLATING +VIOLATION +VIOLATIONS +VIOLATIVE +VIOLATOR +VIOLATORS +VIOLENCE +VIOLENCES +VIOLENT +VIOLENTLY +VIOLET +VIOLETS +VIOLIN +VIOLINIST +VIOLINISTIC +VIOLINISTS +VIOLINS +VIOLIST +VIOLISTS +VIOLONCELLI +VIOLONCELLIST +VIOLONCELLISTS +VIOLONCELLO +VIOLONCELLOS +VIOLONE +VIOLONES +VIOLS +VIOMYCIN +VIOMYCINS +VIOSTEROL +VIOSTEROLS +VIPER +VIPERFISH +VIPERFISHES +VIPERINE +VIPERISH +VIPEROUS +VIPEROUSLY +VIPERS +VIRAGINOUS +VIRAGO +VIRAGOES +VIRAGOS +VIRAL +VIRALLY +VIRELAI +VIRELAIS +VIRELAY +VIRELAYS +VIREMIA +VIREMIAS +VIREMIC +VIREO +VIREONINE +VIREONINES +VIREOS +VIRES +VIRESCENCE +VIRESCENCES +VIRESCENT +VIRGA +VIRGAS +VIRGATE +VIRGATES +VIRGIN +VIRGINAL +VIRGINALIST +VIRGINALISTS +VIRGINALLY +VIRGINALS +VIRGINITIES +VIRGINITY +VIRGINS +VIRGULATE +VIRGULE +VIRGULES +VIRICIDAL +VIRICIDE +VIRICIDES +VIRID +VIRIDESCENT +VIRIDIAN +VIRIDIANS +VIRIDITIES +VIRIDITY +VIRILE +VIRILELY +VIRILISM +VIRILISMS +VIRILITIES +VIRILITY +VIRILIZE +VIRILIZED +VIRILIZES +VIRILIZING +VIRILOCAL +VIRION +VIRIONS +VIRL +VIRLS +VIROID +VIROIDS +VIROLOGIC +VIROLOGICAL +VIROLOGICALLY +VIROLOGIES +VIROLOGIST +VIROLOGISTS +VIROLOGY +VIROSES +VIROSIS +VIRTU +VIRTUAL +VIRTUALITIES +VIRTUALITY +VIRTUALLY +VIRTUE +VIRTUELESS +VIRTUES +VIRTUOSA +VIRTUOSAS +VIRTUOSE +VIRTUOSI +VIRTUOSIC +VIRTUOSITIES +VIRTUOSITY +VIRTUOSO +VIRTUOSOS +VIRTUOUS +VIRTUOUSLY +VIRTUOUSNESS +VIRTUOUSNESSES +VIRTUS +VIRUCIDAL +VIRUCIDE +VIRUCIDES +VIRULENCE +VIRULENCES +VIRULENCIES +VIRULENCY +VIRULENT +VIRULENTLY +VIRULIFEROUS +VIRUS +VIRUSES +VIRUSLIKE +VIRUSOID +VIRUSOIDS +VIS +VISA +VISAED +VISAGE +VISAGED +VISAGES +VISAING +VISARD +VISARDS +VISAS +VISCACHA +VISCACHAS +VISCERA +VISCERAL +VISCERALLY +VISCID +VISCIDITIES +VISCIDITY +VISCIDLY +VISCOELASTIC +VISCOELASTICITY +VISCOID +VISCOIDAL +VISCOMETER +VISCOMETERS +VISCOMETRIC +VISCOMETRIES +VISCOMETRY +VISCOSE +VISCOSES +VISCOSIMETER +VISCOSIMETERS +VISCOSIMETRIC +VISCOSITIES +VISCOSITY +VISCOUNT +VISCOUNTCIES +VISCOUNTCY +VISCOUNTESS +VISCOUNTESSES +VISCOUNTIES +VISCOUNTS +VISCOUNTY +VISCOUS +VISCOUSLY +VISCOUSNESS +VISCOUSNESSES +VISCUS +VISE +VISED +VISEED +VISEING +VISELIKE +VISES +VISIBILITIES +VISIBILITY +VISIBLE +VISIBLENESS +VISIBLENESSES +VISIBLY +VISING +VISION +VISIONAL +VISIONALLY +VISIONARIES +VISIONARINESS +VISIONARINESSES +VISIONARY +VISIONED +VISIONING +VISIONLESS +VISIONS +VISIT +VISITABLE +VISITANT +VISITANTS +VISITATION +VISITATIONS +VISITATORIAL +VISITED +VISITER +VISITERS +VISITING +VISITOR +VISITORS +VISITS +VISIVE +VISOR +VISORED +VISORING +VISORLESS +VISORS +VISTA +VISTAED +VISTALESS +VISTAS +VISUAL +VISUALISE +VISUALISED +VISUALISES +VISUALISING +VISUALIST +VISUALISTS +VISUALITIES +VISUALITY +VISUALIZATION +VISUALIZATIONS +VISUALIZE +VISUALIZED +VISUALIZER +VISUALIZERS +VISUALIZES +VISUALIZING +VISUALLY +VISUALS +VITA +VITAE +VITAL +VITALISE +VITALISED +VITALISES +VITALISING +VITALISM +VITALISMS +VITALIST +VITALISTIC +VITALISTS +VITALITIES +VITALITY +VITALIZATION +VITALIZATIONS +VITALIZE +VITALIZED +VITALIZER +VITALIZERS +VITALIZES +VITALIZING +VITALLY +VITALNESS +VITALNESSES +VITALS +VITAMER +VITAMERS +VITAMIN +VITAMINE +VITAMINES +VITAMINIC +VITAMINS +VITELLIN +VITELLINE +VITELLINES +VITELLINS +VITELLOGENESES +VITELLOGENESIS +VITELLUS +VITELLUSES +VITESSE +VITESSES +VITIABLE +VITIATE +VITIATED +VITIATES +VITIATING +VITIATION +VITIATIONS +VITIATOR +VITIATORS +VITICULTURAL +VITICULTURALLY +VITICULTURE +VITICULTURES +VITICULTURIST +VITICULTURISTS +VITILIGO +VITILIGOS +VITRAIN +VITRAINS +VITRECTOMIES +VITRECTOMY +VITREOUS +VITREOUSES +VITRIC +VITRICS +VITRIFIABLE +VITRIFICATION +VITRIFICATIONS +VITRIFIED +VITRIFIES +VITRIFORM +VITRIFY +VITRIFYING +VITRINE +VITRINES +VITRIOL +VITRIOLED +VITRIOLIC +VITRIOLING +VITRIOLLED +VITRIOLLING +VITRIOLS +VITTA +VITTAE +VITTATE +VITTLE +VITTLED +VITTLES +VITTLING +VITULINE +VITUPERATE +VITUPERATED +VITUPERATES +VITUPERATING +VITUPERATION +VITUPERATIONS +VITUPERATIVE +VITUPERATIVELY +VITUPERATOR +VITUPERATORS +VITUPERATORY +VIVA +VIVACE +VIVACES +VIVACIOUS +VIVACIOUSLY +VIVACIOUSNESS +VIVACIOUSNESSES +VIVACITIES +VIVACITY +VIVANDIERE +VIVANDIERES +VIVARIA +VIVARIES +VIVARIUM +VIVARIUMS +VIVARY +VIVAS +VIVE +VIVERRID +VIVERRIDS +VIVERRINE +VIVERRINES +VIVERS +VIVID +VIVIDER +VIVIDEST +VIVIDLY +VIVIDNESS +VIVIDNESSES +VIVIFIC +VIVIFICATION +VIVIFICATIONS +VIVIFIED +VIVIFIER +VIVIFIERS +VIVIFIES +VIVIFY +VIVIFYING +VIVIPARA +VIVIPARITIES +VIVIPARITY +VIVIPAROUS +VIVIPAROUSLY +VIVISECT +VIVISECTED +VIVISECTING +VIVISECTION +VIVISECTIONAL +VIVISECTIONIST +VIVISECTIONISTS +VIVISECTIONS +VIVISECTOR +VIVISECTORS +VIVISECTS +VIXEN +VIXENISH +VIXENLY +VIXENS +VIZARD +VIZARDED +VIZARDS +VIZCACHA +VIZCACHAS +VIZIER +VIZIERATE +VIZIERATES +VIZIERIAL +VIZIERS +VIZIERSHIP +VIZIERSHIPS +VIZIR +VIZIRATE +VIZIRATES +VIZIRIAL +VIZIRS +VIZOR +VIZORED +VIZORING +VIZORS +VIZSLA +VIZSLAS +VOCAB +VOCABLE +VOCABLES +VOCABLY +VOCABS +VOCABULAR +VOCABULARIES +VOCABULARY +VOCAL +VOCALESE +VOCALESES +VOCALIC +VOCALICALLY +VOCALICS +VOCALISE +VOCALISED +VOCALISES +VOCALISING +VOCALISM +VOCALISMS +VOCALIST +VOCALISTS +VOCALITIES +VOCALITY +VOCALIZATION +VOCALIZATIONS +VOCALIZE +VOCALIZED +VOCALIZER +VOCALIZERS +VOCALIZES +VOCALIZING +VOCALLY +VOCALNESS +VOCALNESSES +VOCALS +VOCATION +VOCATIONAL +VOCATIONALISM +VOCATIONALISMS +VOCATIONALIST +VOCATIONALISTS +VOCATIONALLY +VOCATIONS +VOCATIVE +VOCATIVELY +VOCATIVES +VOCES +VOCIFERANT +VOCIFERATE +VOCIFERATED +VOCIFERATES +VOCIFERATING +VOCIFERATION +VOCIFERATIONS +VOCIFERATOR +VOCIFERATORS +VOCIFEROUS +VOCIFEROUSLY +VOCIFEROUSNESS +VOCODER +VOCODERS +VODKA +VODKAS +VODOU +VODOUN +VODOUNS +VODOUS +VODUN +VODUNS +VOE +VOES +VOGIE +VOGUE +VOGUED +VOGUEING +VOGUEINGS +VOGUER +VOGUERS +VOGUES +VOGUING +VOGUINGS +VOGUISH +VOGUISHLY +VOGUISHNESS +VOGUISHNESSES +VOICE +VOICED +VOICEFUL +VOICEFULNESS +VOICEFULNESSES +VOICELESS +VOICELESSLY +VOICELESSNESS +VOICELESSNESSES +VOICEMAIL +VOICEMAILS +VOICEOVER +VOICEOVERS +VOICEPRINT +VOICEPRINTS +VOICER +VOICERS +VOICES +VOICING +VOICINGS +VOID +VOIDABLE +VOIDABLENESS +VOIDABLENESSES +VOIDANCE +VOIDANCES +VOIDED +VOIDER +VOIDERS +VOIDING +VOIDNESS +VOIDNESSES +VOIDS +VOILA +VOILE +VOILES +VOLANT +VOLANTE +VOLAR +VOLATILE +VOLATILENESS +VOLATILENESSES +VOLATILES +VOLATILISE +VOLATILISED +VOLATILISES +VOLATILISING +VOLATILITIES +VOLATILITY +VOLATILIZABLE +VOLATILIZATION +VOLATILIZATIONS +VOLATILIZE +VOLATILIZED +VOLATILIZES +VOLATILIZING +VOLCANIC +VOLCANICALLY +VOLCANICITIES +VOLCANICITY +VOLCANICS +VOLCANISM +VOLCANISMS +VOLCANIZE +VOLCANIZED +VOLCANIZES +VOLCANIZING +VOLCANO +VOLCANOES +VOLCANOLOGIC +VOLCANOLOGICAL +VOLCANOLOGIES +VOLCANOLOGIST +VOLCANOLOGISTS +VOLCANOLOGY +VOLCANOS +VOLE +VOLED +VOLERIES +VOLERY +VOLES +VOLING +VOLITANT +VOLITION +VOLITIONAL +VOLITIONS +VOLITIVE +VOLKSLIED +VOLKSLIEDER +VOLLEY +VOLLEYBALL +VOLLEYBALLS +VOLLEYED +VOLLEYER +VOLLEYERS +VOLLEYING +VOLLEYS +VOLOST +VOLOSTS +VOLPLANE +VOLPLANED +VOLPLANES +VOLPLANING +VOLT +VOLTA +VOLTAGE +VOLTAGES +VOLTAIC +VOLTAISM +VOLTAISMS +VOLTE +VOLTES +VOLTI +VOLTMETER +VOLTMETERS +VOLTS +VOLUBILITIES +VOLUBILITY +VOLUBLE +VOLUBLENESS +VOLUBLENESSES +VOLUBLY +VOLUME +VOLUMED +VOLUMES +VOLUMETER +VOLUMETERS +VOLUMETRIC +VOLUMETRICALLY +VOLUMING +VOLUMINOSITIES +VOLUMINOSITY +VOLUMINOUS +VOLUMINOUSLY +VOLUMINOUSNESS +VOLUNTARIES +VOLUNTARILY +VOLUNTARINESS +VOLUNTARINESSES +VOLUNTARISM +VOLUNTARISMS +VOLUNTARIST +VOLUNTARISTIC +VOLUNTARISTS +VOLUNTARY +VOLUNTARYISM +VOLUNTARYISMS +VOLUNTARYIST +VOLUNTARYISTS +VOLUNTEER +VOLUNTEERED +VOLUNTEERING +VOLUNTEERISM +VOLUNTEERISMS +VOLUNTEERS +VOLUPTUARIES +VOLUPTUARY +VOLUPTUOUS +VOLUPTUOUSLY +VOLUPTUOUSNESS +VOLUTE +VOLUTED +VOLUTES +VOLUTIN +VOLUTINS +VOLUTION +VOLUTIONS +VOLVA +VOLVAS +VOLVATE +VOLVOX +VOLVOXES +VOLVULI +VOLVULUS +VOLVULUSES +VOMER +VOMERINE +VOMERS +VOMICA +VOMICAE +VOMIT +VOMITED +VOMITER +VOMITERS +VOMITING +VOMITIVE +VOMITIVES +VOMITO +VOMITORIES +VOMITORY +VOMITOS +VOMITOUS +VOMITS +VOMITUS +VOMITUSES +VOODOO +VOODOOED +VOODOOING +VOODOOISM +VOODOOISMS +VOODOOIST +VOODOOISTIC +VOODOOISTS +VOODOOS +VORACIOUS +VORACIOUSLY +VORACIOUSNESS +VORACIOUSNESSES +VORACITIES +VORACITY +VORLAGE +VORLAGES +VORTEX +VORTEXES +VORTICAL +VORTICALLY +VORTICELLA +VORTICELLAE +VORTICELLAS +VORTICES +VORTICISM +VORTICISMS +VORTICIST +VORTICISTS +VORTICITIES +VORTICITY +VORTICOSE +VOTABLE +VOTARESS +VOTARESSES +VOTARIES +VOTARIST +VOTARISTS +VOTARY +VOTE +VOTEABLE +VOTED +VOTELESS +VOTER +VOTERS +VOTES +VOTING +VOTIVE +VOTIVELY +VOTIVENESS +VOTIVENESSES +VOTIVES +VOTRESS +VOTRESSES +VOUCH +VOUCHED +VOUCHEE +VOUCHEES +VOUCHER +VOUCHERED +VOUCHERING +VOUCHERS +VOUCHES +VOUCHING +VOUCHSAFE +VOUCHSAFED +VOUCHSAFEMENT +VOUCHSAFEMENTS +VOUCHSAFES +VOUCHSAFING +VOUDON +VOUDONS +VOUDOUN +VOUDOUNS +VOUSSOIR +VOUSSOIRS +VOUVRAY +VOUVRAYS +VOW +VOWED +VOWEL +VOWELIZE +VOWELIZED +VOWELIZES +VOWELIZING +VOWELS +VOWER +VOWERS +VOWING +VOWLESS +VOWS +VOX +VOYAGE +VOYAGED +VOYAGER +VOYAGERS +VOYAGES +VOYAGEUR +VOYAGEURS +VOYAGING +VOYEUR +VOYEURISM +VOYEURISMS +VOYEURISTIC +VOYEURISTICALLY +VOYEURS +VROOM +VROOMED +VROOMING +VROOMS +VROUW +VROUWS +VROW +VROWS +VUG +VUGG +VUGGIER +VUGGIEST +VUGGS +VUGGY +VUGH +VUGHS +VUGS +VULCANIAN +VULCANIC +VULCANICITIES +VULCANICITY +VULCANISATE +VULCANISATES +VULCANISATION +VULCANISATIONS +VULCANISE +VULCANISED +VULCANISES +VULCANISING +VULCANISM +VULCANISMS +VULCANITE +VULCANITES +VULCANIZATE +VULCANIZATES +VULCANIZATION +VULCANIZATIONS +VULCANIZE +VULCANIZED +VULCANIZER +VULCANIZERS +VULCANIZES +VULCANIZING +VULCANOLOGIES +VULCANOLOGIST +VULCANOLOGISTS +VULCANOLOGY +VULGAR +VULGARER +VULGAREST +VULGARIAN +VULGARIANS +VULGARISE +VULGARISED +VULGARISES +VULGARISING +VULGARISM +VULGARISMS +VULGARITIES +VULGARITY +VULGARIZATION +VULGARIZATIONS +VULGARIZE +VULGARIZED +VULGARIZER +VULGARIZERS +VULGARIZES +VULGARIZING +VULGARLY +VULGARS +VULGATE +VULGATES +VULGO +VULGUS +VULGUSES +VULNERABILITIES +VULNERABILITY +VULNERABLE +VULNERABLENESS +VULNERABLY +VULNERARIES +VULNERARY +VULPINE +VULTURE +VULTURES +VULTURINE +VULTURISH +VULTUROUS +VULVA +VULVAE +VULVAL +VULVAR +VULVAS +VULVATE +VULVIFORM +VULVITIS +VULVITISES +VULVOVAGINITIS +VUM +VYING +VYINGLY +WAB +WABBLE +WABBLED +WABBLER +WABBLERS +WABBLES +WABBLIER +WABBLIEST +WABBLING +WABBLY +WABS +WACK +WACKE +WACKER +WACKES +WACKEST +WACKIER +WACKIEST +WACKILY +WACKINESS +WACKINESSES +WACKO +WACKOS +WACKS +WACKY +WAD +WADABLE +WADDED +WADDER +WADDERS +WADDIE +WADDIED +WADDIES +WADDING +WADDINGS +WADDLE +WADDLED +WADDLER +WADDLERS +WADDLES +WADDLING +WADDLY +WADDY +WADDYING +WADE +WADEABLE +WADED +WADER +WADERS +WADES +WADI +WADIES +WADING +WADIS +WADMAAL +WADMAALS +WADMAL +WADMALS +WADMEL +WADMELS +WADMOL +WADMOLL +WADMOLLS +WADMOLS +WADS +WADSET +WADSETS +WADSETTED +WADSETTING +WADY +WAE +WAEFUL +WAENESS +WAENESSES +WAES +WAESUCK +WAESUCKS +WAFER +WAFERED +WAFERING +WAFERS +WAFERY +WAFF +WAFFED +WAFFIE +WAFFIES +WAFFING +WAFFLE +WAFFLED +WAFFLER +WAFFLERS +WAFFLES +WAFFLESTOMPER +WAFFLESTOMPERS +WAFFLIER +WAFFLIEST +WAFFLING +WAFFLINGS +WAFFLY +WAFFS +WAFT +WAFTAGE +WAFTAGES +WAFTED +WAFTER +WAFTERS +WAFTING +WAFTS +WAFTURE +WAFTURES +WAG +WAGE +WAGED +WAGELESS +WAGER +WAGERED +WAGERER +WAGERERS +WAGERING +WAGERS +WAGES +WAGEWORKER +WAGEWORKERS +WAGGED +WAGGER +WAGGERIES +WAGGERS +WAGGERY +WAGGING +WAGGISH +WAGGISHLY +WAGGISHNESS +WAGGISHNESSES +WAGGLE +WAGGLED +WAGGLES +WAGGLIER +WAGGLIEST +WAGGLING +WAGGLY +WAGGON +WAGGONED +WAGGONER +WAGGONERS +WAGGONING +WAGGONS +WAGING +WAGON +WAGONAGE +WAGONAGES +WAGONED +WAGONER +WAGONERS +WAGONETTE +WAGONETTES +WAGONING +WAGONLOAD +WAGONLOADS +WAGONS +WAGS +WAGSOME +WAGTAIL +WAGTAILS +WAHCONDA +WAHCONDAS +WAHINE +WAHINES +WAHOO +WAHOOS +WAIF +WAIFED +WAIFING +WAIFISH +WAIFLIKE +WAIFS +WAIL +WAILED +WAILER +WAILERS +WAILFUL +WAILFULLY +WAILING +WAILINGLY +WAILS +WAILSOME +WAIN +WAINS +WAINSCOT +WAINSCOTED +WAINSCOTING +WAINSCOTINGS +WAINSCOTS +WAINSCOTTED +WAINSCOTTING +WAINSCOTTINGS +WAINWRIGHT +WAINWRIGHTS +WAIR +WAIRED +WAIRING +WAIRS +WAIST +WAISTBAND +WAISTBANDS +WAISTCOAT +WAISTCOATED +WAISTCOATS +WAISTED +WAISTER +WAISTERS +WAISTING +WAISTINGS +WAISTLESS +WAISTLINE +WAISTLINES +WAISTS +WAIT +WAITED +WAITER +WAITERED +WAITERING +WAITERS +WAITING +WAITINGS +WAITLIST +WAITLISTED +WAITLISTING +WAITLISTS +WAITPERSON +WAITPERSONS +WAITRESS +WAITRESSED +WAITRESSES +WAITRESSING +WAITRON +WAITRONS +WAITS +WAITSTAFF +WAITSTAFFS +WAIVE +WAIVED +WAIVER +WAIVERS +WAIVES +WAIVING +WAKAME +WAKAMES +WAKANDA +WAKANDAS +WAKE +WAKEBOARD +WAKEBOARDER +WAKEBOARDERS +WAKEBOARDING +WAKEBOARDINGS +WAKEBOARDS +WAKED +WAKEFUL +WAKEFULLY +WAKEFULNESS +WAKEFULNESSES +WAKELESS +WAKEN +WAKENED +WAKENER +WAKENERS +WAKENING +WAKENINGS +WAKENS +WAKER +WAKERIFE +WAKERS +WAKES +WAKIKI +WAKIKIS +WAKING +WALE +WALED +WALER +WALERS +WALES +WALIES +WALING +WALK +WALKABLE +WALKABOUT +WALKABOUTS +WALKATHON +WALKATHONS +WALKAWAY +WALKAWAYS +WALKED +WALKER +WALKERS +WALKING +WALKINGS +WALKINGSTICK +WALKINGSTICKS +WALKOUT +WALKOUTS +WALKOVER +WALKOVERS +WALKS +WALKUP +WALKUPS +WALKWAY +WALKWAYS +WALKYRIE +WALKYRIES +WALL +WALLA +WALLABIES +WALLABY +WALLAH +WALLAHS +WALLAROO +WALLAROOS +WALLAS +WALLBOARD +WALLBOARDS +WALLED +WALLET +WALLETS +WALLEYE +WALLEYED +WALLEYES +WALLFLOWER +WALLFLOWERS +WALLIE +WALLIES +WALLING +WALLOP +WALLOPED +WALLOPER +WALLOPERS +WALLOPING +WALLOPINGS +WALLOPS +WALLOW +WALLOWED +WALLOWER +WALLOWERS +WALLOWING +WALLOWS +WALLPAPER +WALLPAPERED +WALLPAPERING +WALLPAPERS +WALLS +WALLY +WALLYBALL +WALLYBALLS +WALLYDRAG +WALLYDRAGS +WALLYDRAIGLE +WALLYDRAIGLES +WALNUT +WALNUTS +WALRUS +WALRUSES +WALTZ +WALTZED +WALTZER +WALTZERS +WALTZES +WALTZING +WALY +WAMBLE +WAMBLED +WAMBLES +WAMBLIER +WAMBLIEST +WAMBLING +WAMBLY +WAME +WAMEFOU +WAMEFOUS +WAMEFUL +WAMEFULS +WAMES +WAMMUS +WAMMUSES +WAMPISH +WAMPISHED +WAMPISHES +WAMPISHING +WAMPUM +WAMPUMPEAG +WAMPUMPEAGS +WAMPUMS +WAMPUS +WAMPUSES +WAMUS +WAMUSES +WAN +WAND +WANDER +WANDERED +WANDERER +WANDERERS +WANDERING +WANDERINGS +WANDERLUST +WANDERLUSTS +WANDEROO +WANDEROOS +WANDERS +WANDLE +WANDS +WANE +WANED +WANES +WANEY +WANGAN +WANGANS +WANGLE +WANGLED +WANGLER +WANGLERS +WANGLES +WANGLING +WANGUN +WANGUNS +WANIER +WANIEST +WANIGAN +WANIGANS +WANING +WANION +WANIONS +WANK +WANKED +WANKER +WANKERS +WANKING +WANKS +WANLY +WANNABE +WANNABEE +WANNABEES +WANNABES +WANNED +WANNER +WANNESS +WANNESSES +WANNEST +WANNIGAN +WANNIGANS +WANNING +WANS +WANT +WANTAGE +WANTAGES +WANTED +WANTER +WANTERS +WANTING +WANTON +WANTONED +WANTONER +WANTONERS +WANTONING +WANTONLY +WANTONNESS +WANTONNESSES +WANTONS +WANTS +WANY +WAP +WAPENTAKE +WAPENTAKES +WAPITI +WAPITIS +WAPPED +WAPPENSCHAWING +WAPPENSCHAWINGS +WAPPING +WAPS +WAR +WARBLE +WARBLED +WARBLER +WARBLERS +WARBLES +WARBLING +WARBONNET +WARBONNETS +WARCRAFT +WARCRAFTS +WARD +WARDED +WARDEN +WARDENRIES +WARDENRY +WARDENS +WARDENSHIP +WARDENSHIPS +WARDER +WARDERS +WARDING +WARDLESS +WARDRESS +WARDRESSES +WARDROBE +WARDROBED +WARDROBES +WARDROBING +WARDROOM +WARDROOMS +WARDS +WARDSHIP +WARDSHIPS +WARE +WARED +WAREHOUSE +WAREHOUSED +WAREHOUSEMAN +WAREHOUSEMEN +WAREHOUSER +WAREHOUSERS +WAREHOUSES +WAREHOUSING +WAREROOM +WAREROOMS +WARES +WARFARE +WARFARES +WARFARIN +WARFARINS +WARHEAD +WARHEADS +WARHORSE +WARHORSES +WARIER +WARIEST +WARILY +WARINESS +WARINESSES +WARING +WARISON +WARISONS +WARK +WARKED +WARKING +WARKS +WARLESS +WARLIKE +WARLOCK +WARLOCKS +WARLORD +WARLORDISM +WARLORDISMS +WARLORDS +WARM +WARMAKER +WARMAKERS +WARMED +WARMER +WARMERS +WARMEST +WARMHEARTED +WARMHEARTEDNESS +WARMING +WARMISH +WARMLY +WARMNESS +WARMNESSES +WARMONGER +WARMONGERING +WARMONGERINGS +WARMONGERS +WARMOUTH +WARMOUTHS +WARMS +WARMTH +WARMTHS +WARMUP +WARMUPS +WARN +WARNED +WARNER +WARNERS +WARNING +WARNINGLY +WARNINGS +WARNS +WARP +WARPAGE +WARPAGES +WARPATH +WARPATHS +WARPED +WARPER +WARPERS +WARPING +WARPLANE +WARPLANES +WARPOWER +WARPOWERS +WARPS +WARPWISE +WARRAGAL +WARRAGALS +WARRANT +WARRANTABLE +WARRANTABLENESS +WARRANTABLY +WARRANTED +WARRANTEE +WARRANTEES +WARRANTER +WARRANTERS +WARRANTIED +WARRANTIES +WARRANTING +WARRANTLESS +WARRANTOR +WARRANTORS +WARRANTS +WARRANTY +WARRANTYING +WARRED +WARREN +WARRENER +WARRENERS +WARRENS +WARRIGAL +WARRIGALS +WARRING +WARRIOR +WARRIORS +WARS +WARSAW +WARSAWS +WARSHIP +WARSHIPS +WARSLE +WARSLED +WARSLER +WARSLERS +WARSLES +WARSLING +WARSTLE +WARSTLED +WARSTLER +WARSTLERS +WARSTLES +WARSTLING +WART +WARTED +WARTHOG +WARTHOGS +WARTIER +WARTIEST +WARTIME +WARTIMES +WARTLESS +WARTLIKE +WARTS +WARTY +WARWORK +WARWORKS +WARWORN +WARY +WAS +WASABI +WASABIS +WASH +WASHABILITIES +WASHABILITY +WASHABLE +WASHABLES +WASHATERIA +WASHATERIAS +WASHBASIN +WASHBASINS +WASHBOARD +WASHBOARDS +WASHBOWL +WASHBOWLS +WASHCLOTH +WASHCLOTHS +WASHDAY +WASHDAYS +WASHED +WASHER +WASHERMAN +WASHERMEN +WASHERS +WASHERWOMAN +WASHERWOMEN +WASHES +WASHETERIA +WASHETERIAS +WASHHOUSE +WASHHOUSES +WASHIER +WASHIEST +WASHINESS +WASHINESSES +WASHING +WASHINGS +WASHOUT +WASHOUTS +WASHRAG +WASHRAGS +WASHROOM +WASHROOMS +WASHSTAND +WASHSTANDS +WASHTUB +WASHTUBS +WASHUP +WASHUPS +WASHWOMAN +WASHWOMEN +WASHY +WASP +WASPIER +WASPIEST +WASPILY +WASPINESS +WASPINESSES +WASPISH +WASPISHLY +WASPISHNESS +WASPISHNESSES +WASPLIKE +WASPS +WASPY +WASSAIL +WASSAILED +WASSAILER +WASSAILERS +WASSAILING +WASSAILS +WAST +WASTABLE +WASTAGE +WASTAGES +WASTE +WASTEBASKET +WASTEBASKETS +WASTED +WASTEFUL +WASTEFULLY +WASTEFULNESS +WASTEFULNESSES +WASTELAND +WASTELANDS +WASTELOT +WASTELOTS +WASTEPAPER +WASTEPAPERS +WASTER +WASTERIE +WASTERIES +WASTERS +WASTERY +WASTES +WASTEWATER +WASTEWATERS +WASTEWAY +WASTEWAYS +WASTING +WASTINGLY +WASTREL +WASTRELS +WASTRIE +WASTRIES +WASTRY +WASTS +WAT +WATAP +WATAPE +WATAPES +WATAPS +WATCH +WATCHABLE +WATCHABLES +WATCHBAND +WATCHBANDS +WATCHCASE +WATCHCASES +WATCHCRIES +WATCHCRY +WATCHDOG +WATCHDOGGED +WATCHDOGGING +WATCHDOGS +WATCHED +WATCHER +WATCHERS +WATCHES +WATCHEYE +WATCHEYES +WATCHFUL +WATCHFULLY +WATCHFULNESS +WATCHFULNESSES +WATCHING +WATCHMAKER +WATCHMAKERS +WATCHMAKING +WATCHMAKINGS +WATCHMAN +WATCHMEN +WATCHOUT +WATCHOUTS +WATCHTOWER +WATCHTOWERS +WATCHWORD +WATCHWORDS +WATER +WATERAGE +WATERAGES +WATERBED +WATERBEDS +WATERBIRD +WATERBIRDS +WATERBORNE +WATERBUCK +WATERBUCKS +WATERBUS +WATERBUSES +WATERBUSSES +WATERCOLOR +WATERCOLORIST +WATERCOLORISTS +WATERCOLORS +WATERCOOLER +WATERCOOLERS +WATERCOURSE +WATERCOURSES +WATERCRAFT +WATERCRAFTS +WATERCRESS +WATERCRESSES +WATERDOG +WATERDOGS +WATERED +WATERER +WATERERS +WATERFALL +WATERFALLS +WATERFLOOD +WATERFLOODED +WATERFLOODING +WATERFLOODS +WATERFOWL +WATERFOWLER +WATERFOWLERS +WATERFOWLING +WATERFOWLINGS +WATERFOWLS +WATERFRONT +WATERFRONTS +WATERHEAD +WATERHEADS +WATERHEN +WATERHENS +WATERIER +WATERIEST +WATERILY +WATERINESS +WATERINESSES +WATERING +WATERINGS +WATERISH +WATERISHNESS +WATERISHNESSES +WATERJET +WATERJETS +WATERLEAF +WATERLEAFS +WATERLESS +WATERLESSNESS +WATERLESSNESSES +WATERLILIES +WATERLILY +WATERLINE +WATERLINES +WATERLOG +WATERLOGGED +WATERLOGGING +WATERLOGS +WATERLOO +WATERLOOS +WATERMAN +WATERMANSHIP +WATERMANSHIPS +WATERMARK +WATERMARKED +WATERMARKING +WATERMARKS +WATERMELON +WATERMELONS +WATERMEN +WATERPOWER +WATERPOWERS +WATERPROOF +WATERPROOFED +WATERPROOFER +WATERPROOFERS +WATERPROOFING +WATERPROOFINGS +WATERPROOFNESS +WATERPROOFS +WATERS +WATERSCAPE +WATERSCAPES +WATERSHED +WATERSHEDS +WATERSIDE +WATERSIDES +WATERSKI +WATERSKIING +WATERSKIINGS +WATERSKIS +WATERSPOUT +WATERSPOUTS +WATERTHRUSH +WATERTHRUSHES +WATERTIGHT +WATERTIGHTNESS +WATERWAY +WATERWAYS +WATERWEED +WATERWEEDS +WATERWHEEL +WATERWHEELS +WATERWORK +WATERWORKS +WATERWORN +WATERY +WATERZOOI +WATERZOOIS +WATS +WATT +WATTAGE +WATTAGES +WATTAPE +WATTAPES +WATTER +WATTEST +WATTHOUR +WATTHOURS +WATTLE +WATTLEBIRD +WATTLEBIRDS +WATTLED +WATTLES +WATTLESS +WATTLING +WATTMETER +WATTMETERS +WATTS +WAUCHT +WAUCHTED +WAUCHTING +WAUCHTS +WAUGH +WAUGHT +WAUGHTED +WAUGHTING +WAUGHTS +WAUK +WAUKED +WAUKING +WAUKS +WAUL +WAULED +WAULING +WAULS +WAUR +WAVE +WAVEBAND +WAVEBANDS +WAVED +WAVEFORM +WAVEFORMS +WAVEGUIDE +WAVEGUIDES +WAVELENGTH +WAVELENGTHS +WAVELESS +WAVELESSLY +WAVELET +WAVELETS +WAVELIKE +WAVELLITE +WAVELLITES +WAVEOFF +WAVEOFFS +WAVER +WAVERED +WAVERER +WAVERERS +WAVERING +WAVERINGLY +WAVERS +WAVERY +WAVES +WAVESHAPE +WAVESHAPES +WAVEY +WAVEYS +WAVICLE +WAVICLES +WAVIER +WAVIES +WAVIEST +WAVILY +WAVINESS +WAVINESSES +WAVING +WAVY +WAW +WAWL +WAWLED +WAWLING +WAWLS +WAWS +WAX +WAXABLE +WAXBERRIES +WAXBERRY +WAXBILL +WAXBILLS +WAXED +WAXEN +WAXER +WAXERS +WAXES +WAXIER +WAXIEST +WAXILY +WAXINESS +WAXINESSES +WAXING +WAXINGS +WAXLIKE +WAXPLANT +WAXPLANTS +WAXWEED +WAXWEEDS +WAXWING +WAXWINGS +WAXWORK +WAXWORKER +WAXWORKERS +WAXWORKS +WAXWORM +WAXWORMS +WAXY +WAY +WAYBILL +WAYBILLS +WAYFARER +WAYFARERS +WAYFARING +WAYFARINGS +WAYGOING +WAYGOINGS +WAYLAID +WAYLAY +WAYLAYER +WAYLAYERS +WAYLAYING +WAYLAYS +WAYLESS +WAYPOINT +WAYPOINTS +WAYS +WAYSIDE +WAYSIDES +WAYWARD +WAYWARDLY +WAYWARDNESS +WAYWARDNESSES +WAYWORN +WAZOO +WAZOOS +WE +WEAK +WEAKEN +WEAKENED +WEAKENER +WEAKENERS +WEAKENING +WEAKENS +WEAKER +WEAKEST +WEAKFISH +WEAKFISHES +WEAKHEARTED +WEAKISH +WEAKISHLY +WEAKLIER +WEAKLIEST +WEAKLINESS +WEAKLINESSES +WEAKLING +WEAKLINGS +WEAKLY +WEAKNESS +WEAKNESSES +WEAKON +WEAKONS +WEAKSIDE +WEAKSIDES +WEAL +WEALD +WEALDS +WEALS +WEALTH +WEALTHIER +WEALTHIEST +WEALTHILY +WEALTHINESS +WEALTHINESSES +WEALTHS +WEALTHY +WEAN +WEANED +WEANER +WEANERS +WEANING +WEANLING +WEANLINGS +WEANS +WEAPON +WEAPONED +WEAPONEER +WEAPONEERING +WEAPONEERS +WEAPONING +WEAPONIZE +WEAPONIZED +WEAPONIZES +WEAPONIZING +WEAPONLESS +WEAPONRIES +WEAPONRY +WEAPONS +WEAR +WEARABILITIES +WEARABILITY +WEARABLE +WEARABLES +WEARER +WEARERS +WEARIED +WEARIER +WEARIES +WEARIEST +WEARIFUL +WEARIFULLY +WEARIFULNESS +WEARIFULNESSES +WEARILESS +WEARILESSLY +WEARILY +WEARINESS +WEARINESSES +WEARING +WEARINGLY +WEARISH +WEARISOME +WEARISOMELY +WEARISOMENESS +WEARISOMENESSES +WEARPROOF +WEARS +WEARY +WEARYING +WEASAND +WEASANDS +WEASEL +WEASELED +WEASELING +WEASELLED +WEASELLING +WEASELLY +WEASELS +WEASELY +WEASON +WEASONS +WEATHER +WEATHERABILITY +WEATHERBOARD +WEATHERBOARDED +WEATHERBOARDING +WEATHERBOARDS +WEATHERCAST +WEATHERCASTER +WEATHERCASTERS +WEATHERCASTS +WEATHERCOCK +WEATHERCOCKS +WEATHERED +WEATHERGLASS +WEATHERGLASSES +WEATHERING +WEATHERINGS +WEATHERIZATION +WEATHERIZATIONS +WEATHERIZE +WEATHERIZED +WEATHERIZES +WEATHERIZING +WEATHERLY +WEATHERMAN +WEATHERMEN +WEATHERPERSON +WEATHERPERSONS +WEATHERPROOF +WEATHERPROOFED +WEATHERPROOFING +WEATHERPROOFS +WEATHERS +WEATHERWORN +WEAVE +WEAVED +WEAVER +WEAVERBIRD +WEAVERBIRDS +WEAVERS +WEAVES +WEAVING +WEAZAND +WEAZANDS +WEB +WEBBED +WEBBIER +WEBBIEST +WEBBING +WEBBINGS +WEBBY +WEBCAM +WEBCAMS +WEBCAST +WEBCASTED +WEBCASTER +WEBCASTERS +WEBCASTING +WEBCASTS +WEBER +WEBERS +WEBFED +WEBFEET +WEBFOOT +WEBLESS +WEBLIKE +WEBLOG +WEBLOGS +WEBMASTER +WEBMASTERS +WEBPAGE +WEBPAGES +WEBS +WEBSITE +WEBSITES +WEBSTER +WEBSTERS +WEBWORK +WEBWORKS +WEBWORM +WEBWORMS +WECHT +WECHTS +WED +WEDDED +WEDDER +WEDDERS +WEDDING +WEDDINGS +WEDEL +WEDELED +WEDELING +WEDELN +WEDELNS +WEDELS +WEDGE +WEDGED +WEDGELIKE +WEDGES +WEDGIE +WEDGIER +WEDGIES +WEDGIEST +WEDGING +WEDGY +WEDLOCK +WEDLOCKS +WEDS +WEE +WEED +WEEDED +WEEDER +WEEDERS +WEEDIER +WEEDIEST +WEEDILY +WEEDINESS +WEEDINESSES +WEEDING +WEEDLESS +WEEDLIKE +WEEDS +WEEDY +WEEK +WEEKDAY +WEEKDAYS +WEEKEND +WEEKENDED +WEEKENDER +WEEKENDERS +WEEKENDING +WEEKENDS +WEEKLIES +WEEKLONG +WEEKLY +WEEKNIGHT +WEEKNIGHTS +WEEKS +WEEL +WEEN +WEENED +WEENIE +WEENIER +WEENIES +WEENIEST +WEENING +WEENS +WEENSIER +WEENSIEST +WEENSY +WEENY +WEEP +WEEPER +WEEPERS +WEEPIE +WEEPIER +WEEPIES +WEEPIEST +WEEPINESS +WEEPINESSES +WEEPING +WEEPINGLY +WEEPINGS +WEEPS +WEEPY +WEER +WEES +WEEST +WEET +WEETED +WEETING +WEETS +WEEVER +WEEVERS +WEEVIL +WEEVILED +WEEVILLY +WEEVILS +WEEVILY +WEEWEE +WEEWEED +WEEWEEING +WEEWEES +WEFT +WEFTS +WEFTWISE +WEIGELA +WEIGELAS +WEIGELIA +WEIGELIAS +WEIGH +WEIGHABLE +WEIGHED +WEIGHER +WEIGHERS +WEIGHING +WEIGHMAN +WEIGHMEN +WEIGHS +WEIGHT +WEIGHTED +WEIGHTER +WEIGHTERS +WEIGHTIER +WEIGHTIEST +WEIGHTILY +WEIGHTINESS +WEIGHTINESSES +WEIGHTING +WEIGHTLESS +WEIGHTLESSLY +WEIGHTLESSNESS +WEIGHTS +WEIGHTY +WEIMARANER +WEIMARANERS +WEINER +WEINERS +WEIR +WEIRD +WEIRDED +WEIRDER +WEIRDEST +WEIRDIE +WEIRDIES +WEIRDING +WEIRDLY +WEIRDNESS +WEIRDNESSES +WEIRDO +WEIRDOES +WEIRDOS +WEIRDS +WEIRDY +WEIRS +WEISENHEIMER +WEISENHEIMERS +WEKA +WEKAS +WELCH +WELCHED +WELCHER +WELCHERS +WELCHES +WELCHING +WELCOME +WELCOMED +WELCOMELY +WELCOMENESS +WELCOMENESSES +WELCOMER +WELCOMERS +WELCOMES +WELCOMING +WELD +WELDABLE +WELDED +WELDER +WELDERS +WELDING +WELDLESS +WELDMENT +WELDMENTS +WELDOR +WELDORS +WELDS +WELFARE +WELFARES +WELFARISM +WELFARISMS +WELFARIST +WELFARISTS +WELKIN +WELKINS +WELL +WELLADAY +WELLADAYS +WELLAWAY +WELLAWAYS +WELLBORN +WELLCURB +WELLCURBS +WELLDOER +WELLDOERS +WELLED +WELLHEAD +WELLHEADS +WELLHOLE +WELLHOLES +WELLHOUSE +WELLHOUSES +WELLIE +WELLIES +WELLING +WELLNESS +WELLNESSES +WELLS +WELLSITE +WELLSITES +WELLSPRING +WELLSPRINGS +WELLY +WELSH +WELSHED +WELSHER +WELSHERS +WELSHES +WELSHING +WELT +WELTANSCHAUUNG +WELTANSCHAUUNGS +WELTED +WELTER +WELTERED +WELTERING +WELTERS +WELTERWEIGHT +WELTERWEIGHTS +WELTING +WELTINGS +WELTS +WELTSCHMERZ +WELTSCHMERZES +WEN +WENCH +WENCHED +WENCHER +WENCHERS +WENCHES +WENCHING +WEND +WENDED +WENDIGO +WENDIGOS +WENDING +WENDS +WENNIER +WENNIEST +WENNISH +WENNY +WENS +WENT +WENTLETRAP +WENTLETRAPS +WEPT +WERE +WEREGILD +WEREGILDS +WEREWOLF +WEREWOLVES +WERGELD +WERGELDS +WERGELT +WERGELTS +WERGILD +WERGILDS +WERNERITE +WERNERITES +WERT +WERWOLF +WERWOLVES +WESKIT +WESKITS +WESSAND +WESSANDS +WEST +WESTBOUND +WESTER +WESTERED +WESTERING +WESTERLIES +WESTERLY +WESTERN +WESTERNER +WESTERNERS +WESTERNISATION +WESTERNISATIONS +WESTERNISE +WESTERNISED +WESTERNISES +WESTERNISING +WESTERNIZATION +WESTERNIZATIONS +WESTERNIZE +WESTERNIZED +WESTERNIZES +WESTERNIZING +WESTERNMOST +WESTERNS +WESTERS +WESTING +WESTINGS +WESTMOST +WESTS +WESTWARD +WESTWARDS +WET +WETBACK +WETBACKS +WETHER +WETHERS +WETLAND +WETLANDS +WETLY +WETNESS +WETNESSES +WETPROOF +WETS +WETSUIT +WETSUITS +WETTABILITIES +WETTABILITY +WETTABLE +WETTED +WETTER +WETTERS +WETTEST +WETTING +WETTINGS +WETTISH +WETWARE +WETWARES +WHA +WHACK +WHACKED +WHACKER +WHACKERS +WHACKIER +WHACKIEST +WHACKING +WHACKO +WHACKOS +WHACKS +WHACKY +WHALE +WHALEBACK +WHALEBACKS +WHALEBOAT +WHALEBOATS +WHALEBONE +WHALEBONES +WHALED +WHALELIKE +WHALEMAN +WHALEMEN +WHALER +WHALERS +WHALES +WHALING +WHALINGS +WHAM +WHAMMED +WHAMMIES +WHAMMING +WHAMMO +WHAMMY +WHAMO +WHAMS +WHANG +WHANGED +WHANGEE +WHANGEES +WHANGING +WHANGS +WHAP +WHAPPED +WHAPPER +WHAPPERS +WHAPPING +WHAPS +WHARF +WHARFAGE +WHARFAGES +WHARFED +WHARFING +WHARFINGER +WHARFINGERS +WHARFMASTER +WHARFMASTERS +WHARFS +WHARVE +WHARVES +WHAT +WHATCHAMACALLIT +WHATEVER +WHATNESS +WHATNESSES +WHATNOT +WHATNOTS +WHATS +WHATSIS +WHATSISES +WHATSIT +WHATSITS +WHATSOEVER +WHAUP +WHAUPS +WHEAL +WHEALS +WHEAT +WHEATEAR +WHEATEARS +WHEATEN +WHEATENS +WHEATLAND +WHEATLANDS +WHEATLESS +WHEATS +WHEATWORM +WHEATWORMS +WHEE +WHEEDLE +WHEEDLED +WHEEDLER +WHEEDLERS +WHEEDLES +WHEEDLING +WHEEL +WHEELBARROW +WHEELBARROWED +WHEELBARROWING +WHEELBARROWS +WHEELBASE +WHEELBASES +WHEELCHAIR +WHEELCHAIRS +WHEELED +WHEELER +WHEELERS +WHEELHORSE +WHEELHORSES +WHEELHOUSE +WHEELHOUSES +WHEELIE +WHEELIES +WHEELING +WHEELINGS +WHEELLESS +WHEELMAN +WHEELMEN +WHEELS +WHEELSMAN +WHEELSMEN +WHEELWORK +WHEELWORKS +WHEELWRIGHT +WHEELWRIGHTS +WHEEN +WHEENS +WHEEP +WHEEPED +WHEEPING +WHEEPLE +WHEEPLED +WHEEPLES +WHEEPLING +WHEEPS +WHEEZE +WHEEZED +WHEEZER +WHEEZERS +WHEEZES +WHEEZIER +WHEEZIEST +WHEEZILY +WHEEZINESS +WHEEZINESSES +WHEEZING +WHEEZY +WHELK +WHELKIER +WHELKIEST +WHELKS +WHELKY +WHELM +WHELMED +WHELMING +WHELMS +WHELP +WHELPED +WHELPING +WHELPLESS +WHELPS +WHEN +WHENAS +WHENCE +WHENCESOEVER +WHENEVER +WHENS +WHENSOEVER +WHERE +WHEREABOUT +WHEREABOUTS +WHEREAS +WHEREASES +WHEREAT +WHEREBY +WHEREFORE +WHEREFORES +WHEREFROM +WHEREIN +WHEREINTO +WHEREOF +WHEREON +WHERES +WHERESOEVER +WHERETHROUGH +WHERETO +WHEREUNTO +WHEREUPON +WHEREVER +WHEREWITH +WHEREWITHAL +WHEREWITHALS +WHEREWITHS +WHERRIED +WHERRIES +WHERRY +WHERRYING +WHERVE +WHERVES +WHET +WHETHER +WHETS +WHETSTONE +WHETSTONES +WHETTED +WHETTER +WHETTERS +WHETTING +WHEW +WHEWS +WHEY +WHEYEY +WHEYFACE +WHEYFACED +WHEYFACES +WHEYISH +WHEYLIKE +WHEYS +WHICH +WHICHEVER +WHICHSOEVER +WHICKER +WHICKERED +WHICKERING +WHICKERS +WHID +WHIDAH +WHIDAHS +WHIDDED +WHIDDING +WHIDS +WHIFF +WHIFFED +WHIFFER +WHIFFERS +WHIFFET +WHIFFETS +WHIFFING +WHIFFLE +WHIFFLED +WHIFFLER +WHIFFLERS +WHIFFLES +WHIFFLETREE +WHIFFLETREES +WHIFFLING +WHIFFS +WHIG +WHIGMALEERIE +WHIGMALEERIES +WHIGS +WHILE +WHILED +WHILES +WHILING +WHILOM +WHILST +WHIM +WHIMBREL +WHIMBRELS +WHIMPER +WHIMPERED +WHIMPERER +WHIMPERERS +WHIMPERING +WHIMPERS +WHIMS +WHIMSEY +WHIMSEYS +WHIMSICAL +WHIMSICALITIES +WHIMSICALITY +WHIMSICALLY +WHIMSICALNESS +WHIMSICALNESSES +WHIMSIED +WHIMSIES +WHIMSY +WHIN +WHINCHAT +WHINCHATS +WHINE +WHINED +WHINER +WHINERS +WHINES +WHINEY +WHINGDING +WHINGDINGS +WHINGE +WHINGED +WHINGEING +WHINGER +WHINGERS +WHINGES +WHINGING +WHINIER +WHINIEST +WHININESS +WHININESSES +WHINING +WHININGLY +WHINNIED +WHINNIER +WHINNIES +WHINNIEST +WHINNY +WHINNYING +WHINS +WHINSTONE +WHINSTONES +WHINY +WHIP +WHIPCORD +WHIPCORDS +WHIPLASH +WHIPLASHES +WHIPLIKE +WHIPPED +WHIPPER +WHIPPERS +WHIPPERSNAPPER +WHIPPERSNAPPERS +WHIPPET +WHIPPETS +WHIPPIER +WHIPPIEST +WHIPPING +WHIPPINGS +WHIPPLETREE +WHIPPLETREES +WHIPPOORWILL +WHIPPOORWILLS +WHIPPY +WHIPRAY +WHIPRAYS +WHIPS +WHIPSAW +WHIPSAWED +WHIPSAWING +WHIPSAWN +WHIPSAWS +WHIPSNAKE +WHIPSNAKES +WHIPSTALL +WHIPSTALLS +WHIPSTITCH +WHIPSTITCHED +WHIPSTITCHES +WHIPSTITCHING +WHIPSTOCK +WHIPSTOCKS +WHIPT +WHIPTAIL +WHIPTAILS +WHIPWORM +WHIPWORMS +WHIR +WHIRL +WHIRLED +WHIRLER +WHIRLERS +WHIRLIER +WHIRLIES +WHIRLIEST +WHIRLIGIG +WHIRLIGIGS +WHIRLING +WHIRLPOOL +WHIRLPOOLS +WHIRLS +WHIRLWIND +WHIRLWINDS +WHIRLY +WHIRLYBIRD +WHIRLYBIRDS +WHIRR +WHIRRED +WHIRRIED +WHIRRIES +WHIRRING +WHIRRS +WHIRRY +WHIRRYING +WHIRS +WHISH +WHISHED +WHISHES +WHISHING +WHISHT +WHISHTED +WHISHTING +WHISHTS +WHISK +WHISKED +WHISKER +WHISKERED +WHISKERS +WHISKERY +WHISKEY +WHISKEYS +WHISKIES +WHISKING +WHISKS +WHISKY +WHISPER +WHISPERED +WHISPERER +WHISPERERS +WHISPERING +WHISPERINGLY +WHISPERINGS +WHISPERS +WHISPERY +WHIST +WHISTED +WHISTING +WHISTLE +WHISTLEABLE +WHISTLED +WHISTLER +WHISTLERS +WHISTLES +WHISTLING +WHISTLINGS +WHISTS +WHIT +WHITE +WHITEBAIT +WHITEBAITS +WHITEBEARD +WHITEBEARDS +WHITECAP +WHITECAPS +WHITECOMB +WHITECOMBS +WHITED +WHITEFACE +WHITEFACES +WHITEFISH +WHITEFISHES +WHITEFLIES +WHITEFLY +WHITEHEAD +WHITEHEADS +WHITELY +WHITEN +WHITENED +WHITENER +WHITENERS +WHITENESS +WHITENESSES +WHITENING +WHITENINGS +WHITENS +WHITEOUT +WHITEOUTS +WHITER +WHITES +WHITESMITH +WHITESMITHS +WHITEST +WHITETAIL +WHITETAILS +WHITETHROAT +WHITETHROATS +WHITEWALL +WHITEWALLS +WHITEWASH +WHITEWASHED +WHITEWASHER +WHITEWASHERS +WHITEWASHES +WHITEWASHING +WHITEWASHINGS +WHITEWING +WHITEWINGS +WHITEWOOD +WHITEWOODS +WHITEY +WHITEYS +WHITHER +WHITHERSOEVER +WHITHERWARD +WHITIER +WHITIES +WHITIEST +WHITING +WHITINGS +WHITISH +WHITLOW +WHITLOWS +WHITRACK +WHITRACKS +WHITS +WHITTER +WHITTERS +WHITTLE +WHITTLED +WHITTLER +WHITTLERS +WHITTLES +WHITTLING +WHITTLINGS +WHITTRET +WHITTRETS +WHITY +WHIZ +WHIZBANG +WHIZBANGS +WHIZZ +WHIZZBANG +WHIZZBANGS +WHIZZED +WHIZZER +WHIZZERS +WHIZZES +WHIZZIER +WHIZZIEST +WHIZZING +WHIZZY +WHO +WHOA +WHODUNIT +WHODUNITS +WHODUNNIT +WHODUNNITS +WHOEVER +WHOLE +WHOLEHEARTED +WHOLEHEARTEDLY +WHOLEMEAL +WHOLENESS +WHOLENESSES +WHOLES +WHOLESALE +WHOLESALED +WHOLESALER +WHOLESALERS +WHOLESALES +WHOLESALING +WHOLESOME +WHOLESOMELY +WHOLESOMENESS +WHOLESOMENESSES +WHOLESOMER +WHOLESOMEST +WHOLISM +WHOLISMS +WHOLISTIC +WHOLLY +WHOM +WHOMEVER +WHOMP +WHOMPED +WHOMPING +WHOMPS +WHOMSO +WHOMSOEVER +WHOOF +WHOOFED +WHOOFING +WHOOFS +WHOOP +WHOOPED +WHOOPEE +WHOOPEES +WHOOPER +WHOOPERS +WHOOPIE +WHOOPIES +WHOOPING +WHOOPLA +WHOOPLAS +WHOOPS +WHOOSH +WHOOSHED +WHOOSHES +WHOOSHING +WHOOSIS +WHOOSISES +WHOP +WHOPPED +WHOPPER +WHOPPERS +WHOPPING +WHOPS +WHORE +WHORED +WHOREDOM +WHOREDOMS +WHOREHOUSE +WHOREHOUSES +WHOREMASTER +WHOREMASTERS +WHOREMONGER +WHOREMONGERS +WHORES +WHORESON +WHORESONS +WHORING +WHORISH +WHORISHLY +WHORL +WHORLED +WHORLS +WHORT +WHORTLE +WHORTLEBERRIES +WHORTLEBERRY +WHORTLES +WHORTS +WHOSE +WHOSESOEVER +WHOSEVER +WHOSIS +WHOSISES +WHOSO +WHOSOEVER +WHUMP +WHUMPED +WHUMPING +WHUMPS +WHUP +WHUPPED +WHUPPING +WHUPS +WHY +WHYDAH +WHYDAHS +WHYS +WICCA +WICCAN +WICCANS +WICCAS +WICH +WICHES +WICK +WICKAPE +WICKAPES +WICKED +WICKEDER +WICKEDEST +WICKEDLY +WICKEDNESS +WICKEDNESSES +WICKER +WICKERS +WICKERWORK +WICKERWORKS +WICKET +WICKETS +WICKING +WICKINGS +WICKIUP +WICKIUPS +WICKLESS +WICKS +WICKYUP +WICKYUPS +WICOPIES +WICOPY +WIDDER +WIDDERS +WIDDERSHINS +WIDDIE +WIDDIES +WIDDLE +WIDDLED +WIDDLES +WIDDLING +WIDDY +WIDE +WIDEAWAKE +WIDEAWAKES +WIDEBAND +WIDEBODIES +WIDEBODY +WIDELY +WIDEMOUTHED +WIDEN +WIDENED +WIDENER +WIDENERS +WIDENESS +WIDENESSES +WIDENING +WIDENS +WIDEOUT +WIDEOUTS +WIDER +WIDES +WIDESPREAD +WIDEST +WIDGEON +WIDGEONS +WIDGET +WIDGETS +WIDISH +WIDOW +WIDOWBIRD +WIDOWBIRDS +WIDOWED +WIDOWER +WIDOWERED +WIDOWERHOOD +WIDOWERHOODS +WIDOWERS +WIDOWHOOD +WIDOWHOODS +WIDOWING +WIDOWS +WIDTH +WIDTHS +WIDTHWAY +WIDTHWAYS +WIDTHWISE +WIELD +WIELDABLE +WIELDED +WIELDER +WIELDERS +WIELDIER +WIELDIEST +WIELDING +WIELDS +WIELDY +WIENER +WIENERS +WIENERWURST +WIENERWURSTS +WIENIE +WIENIES +WIFE +WIFED +WIFEDOM +WIFEDOMS +WIFEHOOD +WIFEHOODS +WIFELESS +WIFELIER +WIFELIEST +WIFELIKE +WIFELINESS +WIFELINESSES +WIFELY +WIFES +WIFEY +WIFEYS +WIFING +WIFTIER +WIFTIEST +WIFTY +WIG +WIGAN +WIGANS +WIGEON +WIGEONS +WIGGED +WIGGERIES +WIGGERY +WIGGIER +WIGGIEST +WIGGING +WIGGINGS +WIGGLE +WIGGLED +WIGGLER +WIGGLERS +WIGGLES +WIGGLIER +WIGGLIEST +WIGGLING +WIGGLY +WIGGY +WIGHT +WIGHTS +WIGLESS +WIGLET +WIGLETS +WIGLIKE +WIGMAKER +WIGMAKERS +WIGS +WIGWAG +WIGWAGGED +WIGWAGGER +WIGWAGGERS +WIGWAGGING +WIGWAGS +WIGWAM +WIGWAMS +WIKIUP +WIKIUPS +WILCO +WILD +WILDCARD +WILDCARDS +WILDCAT +WILDCATS +WILDCATTED +WILDCATTER +WILDCATTERS +WILDCATTING +WILDEBEEST +WILDEBEESTS +WILDED +WILDER +WILDERED +WILDERING +WILDERMENT +WILDERMENTS +WILDERNESS +WILDERNESSES +WILDERS +WILDEST +WILDFIRE +WILDFIRES +WILDFLOWER +WILDFLOWERS +WILDFOWL +WILDFOWLER +WILDFOWLERS +WILDFOWLING +WILDFOWLINGS +WILDFOWLS +WILDING +WILDINGS +WILDISH +WILDLAND +WILDLANDS +WILDLIFE +WILDLING +WILDLINGS +WILDLY +WILDNESS +WILDNESSES +WILDS +WILDWOOD +WILDWOODS +WILE +WILED +WILES +WILFUL +WILFULLY +WILIER +WILIEST +WILILY +WILINESS +WILINESSES +WILING +WILL +WILLABLE +WILLED +WILLEMITE +WILLEMITES +WILLER +WILLERS +WILLET +WILLETS +WILLFUL +WILLFULLY +WILLFULNESS +WILLFULNESSES +WILLIE +WILLIED +WILLIES +WILLING +WILLINGER +WILLINGEST +WILLINGLY +WILLINGNESS +WILLINGNESSES +WILLIWAU +WILLIWAUS +WILLIWAW +WILLIWAWS +WILLOW +WILLOWED +WILLOWER +WILLOWERS +WILLOWIER +WILLOWIEST +WILLOWING +WILLOWLIKE +WILLOWS +WILLOWWARE +WILLOWWARES +WILLOWY +WILLPOWER +WILLPOWERS +WILLS +WILLY +WILLYARD +WILLYART +WILLYING +WILLYWAW +WILLYWAWS +WILT +WILTED +WILTING +WILTS +WILY +WIMBLE +WIMBLED +WIMBLES +WIMBLING +WIMMIN +WIMP +WIMPED +WIMPIER +WIMPIEST +WIMPINESS +WIMPINESSES +WIMPING +WIMPISH +WIMPISHNESS +WIMPISHNESSES +WIMPLE +WIMPLED +WIMPLES +WIMPLING +WIMPS +WIMPY +WIN +WINCE +WINCED +WINCER +WINCERS +WINCES +WINCEY +WINCEYS +WINCH +WINCHED +WINCHER +WINCHERS +WINCHES +WINCHING +WINCING +WIND +WINDABLE +WINDAGE +WINDAGES +WINDBAG +WINDBAGS +WINDBELL +WINDBELLS +WINDBLAST +WINDBLASTS +WINDBLOWN +WINDBREAK +WINDBREAKER +WINDBREAKERS +WINDBREAKS +WINDBURN +WINDBURNED +WINDBURNING +WINDBURNS +WINDBURNT +WINDCHILL +WINDCHILLS +WINDED +WINDER +WINDERS +WINDFALL +WINDFALLS +WINDFLAW +WINDFLAWS +WINDFLOWER +WINDFLOWERS +WINDGALL +WINDGALLS +WINDHOVER +WINDHOVERS +WINDIER +WINDIEST +WINDIGO +WINDIGOS +WINDILY +WINDINESS +WINDINESSES +WINDING +WINDINGLY +WINDINGS +WINDJAMMER +WINDJAMMERS +WINDJAMMING +WINDJAMMINGS +WINDLASS +WINDLASSED +WINDLASSES +WINDLASSING +WINDLE +WINDLED +WINDLES +WINDLESS +WINDLESSLY +WINDLESTRAW +WINDLESTRAWS +WINDLING +WINDLINGS +WINDMILL +WINDMILLED +WINDMILLING +WINDMILLS +WINDOW +WINDOWED +WINDOWING +WINDOWLESS +WINDOWPANE +WINDOWPANES +WINDOWS +WINDOWSILL +WINDOWSILLS +WINDOWY +WINDPIPE +WINDPIPES +WINDPROOF +WINDROW +WINDROWED +WINDROWER +WINDROWERS +WINDROWING +WINDROWS +WINDS +WINDSCREEN +WINDSCREENS +WINDSHIELD +WINDSHIELDS +WINDSOCK +WINDSOCKS +WINDSTORM +WINDSTORMS +WINDSURF +WINDSURFED +WINDSURFING +WINDSURFINGS +WINDSURFS +WINDSWEPT +WINDTHROW +WINDTHROWS +WINDUP +WINDUPS +WINDWARD +WINDWARDS +WINDWAY +WINDWAYS +WINDY +WINE +WINED +WINEGLASS +WINEGLASSES +WINEGROWER +WINEGROWERS +WINELESS +WINEMAKER +WINEMAKERS +WINEPRESS +WINEPRESSES +WINERIES +WINERY +WINES +WINESAP +WINESAPS +WINESHOP +WINESHOPS +WINESKIN +WINESKINS +WINESOP +WINESOPS +WINEY +WING +WINGBACK +WINGBACKS +WINGBOW +WINGBOWS +WINGCHAIR +WINGCHAIRS +WINGDING +WINGDINGS +WINGED +WINGEDLY +WINGER +WINGERS +WINGIER +WINGIEST +WINGING +WINGLESS +WINGLESSNESS +WINGLESSNESSES +WINGLET +WINGLETS +WINGLIKE +WINGMAN +WINGMEN +WINGOVER +WINGOVERS +WINGS +WINGSPAN +WINGSPANS +WINGSPREAD +WINGSPREADS +WINGTIP +WINGTIPS +WINGY +WINIER +WINIEST +WINING +WINISH +WINK +WINKED +WINKER +WINKERS +WINKING +WINKINGLY +WINKLE +WINKLED +WINKLES +WINKLING +WINKS +WINLESS +WINNABLE +WINNED +WINNER +WINNERS +WINNING +WINNINGLY +WINNINGS +WINNOCK +WINNOCKS +WINNOW +WINNOWED +WINNOWER +WINNOWERS +WINNOWING +WINNOWS +WINO +WINOES +WINOS +WINS +WINSOME +WINSOMELY +WINSOMENESS +WINSOMENESSES +WINSOMER +WINSOMEST +WINTER +WINTERBERRIES +WINTERBERRY +WINTERED +WINTERER +WINTERERS +WINTERFED +WINTERFEED +WINTERFEEDING +WINTERFEEDS +WINTERGREEN +WINTERGREENS +WINTERIER +WINTERIEST +WINTERING +WINTERISH +WINTERIZATION +WINTERIZATIONS +WINTERIZE +WINTERIZED +WINTERIZES +WINTERIZING +WINTERKILL +WINTERKILLS +WINTERLY +WINTERS +WINTERTIDE +WINTERTIDES +WINTERTIME +WINTERTIMES +WINTERY +WINTLE +WINTLED +WINTLES +WINTLING +WINTRIER +WINTRIEST +WINTRILY +WINTRINESS +WINTRINESSES +WINTRY +WINY +WINZE +WINZES +WIPE +WIPED +WIPEOUT +WIPEOUTS +WIPER +WIPERS +WIPES +WIPING +WIRABLE +WIRE +WIRED +WIREDRAW +WIREDRAWER +WIREDRAWERS +WIREDRAWING +WIREDRAWN +WIREDRAWS +WIREDREW +WIREGRASS +WIREGRASSES +WIREHAIR +WIREHAIRED +WIREHAIRS +WIRELESS +WIRELESSED +WIRELESSES +WIRELESSING +WIRELIKE +WIREMAN +WIREMEN +WIREPHOTO +WIREPHOTOS +WIRER +WIRERS +WIRES +WIRETAP +WIRETAPPED +WIRETAPPER +WIRETAPPERS +WIRETAPPING +WIRETAPS +WIREWAY +WIREWAYS +WIREWORK +WIREWORKS +WIREWORM +WIREWORMS +WIRIER +WIRIEST +WIRILY +WIRINESS +WIRINESSES +WIRING +WIRINGS +WIRRA +WIRY +WIS +WISDOM +WISDOMS +WISE +WISEACRE +WISEACRES +WISEASS +WISEASSES +WISECRACK +WISECRACKED +WISECRACKER +WISECRACKERS +WISECRACKING +WISECRACKS +WISED +WISEGUY +WISEGUYS +WISELIER +WISELIEST +WISELY +WISENESS +WISENESSES +WISENHEIMER +WISENHEIMERS +WISENT +WISENTS +WISER +WISES +WISEST +WISEWOMAN +WISEWOMEN +WISH +WISHA +WISHBONE +WISHBONES +WISHED +WISHER +WISHERS +WISHES +WISHFUL +WISHFULLY +WISHFULNESS +WISHFULNESSES +WISHING +WISHLESS +WISING +WISP +WISPED +WISPIER +WISPIEST +WISPILY +WISPINESS +WISPINESSES +WISPING +WISPISH +WISPLIKE +WISPS +WISPY +WISS +WISSED +WISSES +WISSING +WIST +WISTARIA +WISTARIAS +WISTED +WISTERIA +WISTERIAS +WISTFUL +WISTFULLY +WISTFULNESS +WISTFULNESSES +WISTING +WISTS +WIT +WITAN +WITANS +WITCH +WITCHCRAFT +WITCHCRAFTS +WITCHED +WITCHERIES +WITCHERY +WITCHES +WITCHGRASS +WITCHGRASSES +WITCHHOOD +WITCHHOODS +WITCHIER +WITCHIEST +WITCHING +WITCHINGS +WITCHLIKE +WITCHWEED +WITCHWEEDS +WITCHY +WITE +WITED +WITENAGEMOT +WITENAGEMOTE +WITENAGEMOTES +WITENAGEMOTS +WITES +WITH +WITHAL +WITHDRAW +WITHDRAWABLE +WITHDRAWAL +WITHDRAWALS +WITHDRAWING +WITHDRAWN +WITHDRAWNNESS +WITHDRAWNNESSES +WITHDRAWS +WITHDREW +WITHE +WITHED +WITHER +WITHERED +WITHERER +WITHERERS +WITHERING +WITHERINGLY +WITHERITE +WITHERITES +WITHEROD +WITHERODS +WITHERS +WITHERSHINS +WITHES +WITHHELD +WITHHOLD +WITHHOLDER +WITHHOLDERS +WITHHOLDING +WITHHOLDS +WITHIER +WITHIES +WITHIEST +WITHIN +WITHINDOORS +WITHING +WITHINS +WITHOUT +WITHOUTDOORS +WITHOUTS +WITHSTAND +WITHSTANDING +WITHSTANDS +WITHSTOOD +WITHY +WITING +WITLESS +WITLESSLY +WITLESSNESS +WITLESSNESSES +WITLING +WITLINGS +WITLOOF +WITLOOFS +WITNESS +WITNESSED +WITNESSER +WITNESSERS +WITNESSES +WITNESSING +WITNEY +WITNEYS +WITS +WITTED +WITTICISM +WITTICISMS +WITTIER +WITTIEST +WITTILY +WITTINESS +WITTINESSES +WITTING +WITTINGLY +WITTINGS +WITTOL +WITTOLS +WITTY +WIVE +WIVED +WIVER +WIVERN +WIVERNS +WIVERS +WIVES +WIVING +WIZ +WIZARD +WIZARDLY +WIZARDRIES +WIZARDRY +WIZARDS +WIZEN +WIZENED +WIZENING +WIZENS +WIZES +WIZZEN +WIZZENS +WIZZES +WO +WOAD +WOADED +WOADS +WOADWAX +WOADWAXEN +WOADWAXENS +WOADWAXES +WOALD +WOALDS +WOBBLE +WOBBLED +WOBBLER +WOBBLERS +WOBBLES +WOBBLIER +WOBBLIES +WOBBLIEST +WOBBLINESS +WOBBLINESSES +WOBBLING +WOBBLY +WOBEGONE +WODGE +WODGES +WOE +WOEBEGONE +WOEBEGONENESS +WOEBEGONENESSES +WOEFUL +WOEFULLER +WOEFULLEST +WOEFULLY +WOEFULNESS +WOEFULNESSES +WOENESS +WOENESSES +WOES +WOESOME +WOFUL +WOFULLER +WOFULLEST +WOFULLY +WOG +WOGGISH +WOGS +WOK +WOKE +WOKEN +WOKS +WOLD +WOLDS +WOLF +WOLFBERRIES +WOLFBERRY +WOLFED +WOLFER +WOLFERS +WOLFFISH +WOLFFISHES +WOLFHOUND +WOLFHOUNDS +WOLFING +WOLFISH +WOLFISHLY +WOLFISHNESS +WOLFISHNESSES +WOLFLIKE +WOLFRAM +WOLFRAMITE +WOLFRAMITES +WOLFRAMS +WOLFS +WOLFSBANE +WOLFSBANES +WOLLASTONITE +WOLLASTONITES +WOLVER +WOLVERINE +WOLVERINES +WOLVERS +WOLVES +WOMAN +WOMANED +WOMANHOOD +WOMANHOODS +WOMANING +WOMANISE +WOMANISED +WOMANISES +WOMANISH +WOMANISHLY +WOMANISHNESS +WOMANISHNESSES +WOMANISING +WOMANISM +WOMANISMS +WOMANIST +WOMANISTS +WOMANIZE +WOMANIZED +WOMANIZER +WOMANIZERS +WOMANIZES +WOMANIZING +WOMANKIND +WOMANLESS +WOMANLIER +WOMANLIEST +WOMANLIKE +WOMANLINESS +WOMANLINESSES +WOMANLY +WOMANNESS +WOMANNESSES +WOMANPOWER +WOMANPOWERS +WOMANS +WOMB +WOMBAT +WOMBATS +WOMBED +WOMBIER +WOMBIEST +WOMBS +WOMBY +WOMEN +WOMENFOLK +WOMENFOLKS +WOMENKIND +WOMERA +WOMERAS +WOMMERA +WOMMERAS +WOMYN +WON +WONDER +WONDERED +WONDERER +WONDERERS +WONDERFUL +WONDERFULLY +WONDERFULNESS +WONDERFULNESSES +WONDERING +WONDERLAND +WONDERLANDS +WONDERMENT +WONDERMENTS +WONDERS +WONDERWORK +WONDERWORKS +WONDROUS +WONDROUSLY +WONDROUSNESS +WONDROUSNESSES +WONK +WONKIER +WONKIEST +WONKS +WONKY +WONNED +WONNER +WONNERS +WONNING +WONS +WONT +WONTED +WONTEDLY +WONTEDNESS +WONTEDNESSES +WONTING +WONTON +WONTONS +WONTS +WOO +WOOD +WOODBIN +WOODBIND +WOODBINDS +WOODBINE +WOODBINES +WOODBINS +WOODBLOCK +WOODBLOCKS +WOODBORER +WOODBORERS +WOODBOX +WOODBOXES +WOODCHAT +WOODCHATS +WOODCHOPPER +WOODCHOPPERS +WOODCHUCK +WOODCHUCKS +WOODCOCK +WOODCOCKS +WOODCRAFT +WOODCRAFTS +WOODCUT +WOODCUTS +WOODCUTTER +WOODCUTTERS +WOODCUTTING +WOODCUTTINGS +WOODED +WOODEN +WOODENER +WOODENEST +WOODENHEAD +WOODENHEADED +WOODENHEADS +WOODENLY +WOODENNESS +WOODENNESSES +WOODENWARE +WOODENWARES +WOODGRAIN +WOODGRAINS +WOODHEN +WOODHENS +WOODIE +WOODIER +WOODIES +WOODIEST +WOODINESS +WOODINESSES +WOODING +WOODLAND +WOODLANDER +WOODLANDERS +WOODLANDS +WOODLARK +WOODLARKS +WOODLESS +WOODLORE +WOODLORES +WOODLOT +WOODLOTS +WOODMAN +WOODMEN +WOODNOTE +WOODNOTES +WOODPECKER +WOODPECKERS +WOODPILE +WOODPILES +WOODRUFF +WOODRUFFS +WOODS +WOODSHED +WOODSHEDDED +WOODSHEDDING +WOODSHEDS +WOODSIA +WOODSIAS +WOODSIER +WOODSIEST +WOODSMAN +WOODSMEN +WOODSTOVE +WOODSTOVES +WOODSY +WOODTONE +WOODTONES +WOODWAX +WOODWAXEN +WOODWAXENS +WOODWAXES +WOODWIND +WOODWINDS +WOODWORK +WOODWORKER +WOODWORKERS +WOODWORKING +WOODWORKINGS +WOODWORKS +WOODWORM +WOODWORMS +WOODY +WOOED +WOOER +WOOERS +WOOF +WOOFED +WOOFER +WOOFERS +WOOFING +WOOFS +WOOING +WOOINGLY +WOOL +WOOLED +WOOLEN +WOOLENS +WOOLER +WOOLERS +WOOLFELL +WOOLFELLS +WOOLGATHERER +WOOLGATHERERS +WOOLGATHERING +WOOLGATHERINGS +WOOLHAT +WOOLHATS +WOOLIE +WOOLIER +WOOLIES +WOOLIEST +WOOLINESS +WOOLINESSES +WOOLLED +WOOLLEN +WOOLLENS +WOOLLIER +WOOLLIES +WOOLLIEST +WOOLLIKE +WOOLLILY +WOOLLINESS +WOOLLINESSES +WOOLLY +WOOLMAN +WOOLMEN +WOOLPACK +WOOLPACKS +WOOLS +WOOLSACK +WOOLSACKS +WOOLSHED +WOOLSHEDS +WOOLSKIN +WOOLSKINS +WOOLWORK +WOOLWORKS +WOOLY +WOOMERA +WOOMERAS +WOOPS +WOOPSED +WOOPSES +WOOPSING +WOORALI +WOORALIS +WOORARI +WOORARIS +WOOS +WOOSH +WOOSHED +WOOSHES +WOOSHING +WOOZIER +WOOZIEST +WOOZILY +WOOZINESS +WOOZINESSES +WOOZY +WOP +WOPS +WORD +WORDAGE +WORDAGES +WORDBOOK +WORDBOOKS +WORDED +WORDIER +WORDIEST +WORDILY +WORDINESS +WORDINESSES +WORDING +WORDINGS +WORDLESS +WORDLESSLY +WORDLESSNESS +WORDLESSNESSES +WORDMONGER +WORDMONGERS +WORDPLAY +WORDPLAYS +WORDS +WORDSMITH +WORDSMITHERIES +WORDSMITHERY +WORDSMITHS +WORDY +WORE +WORK +WORKABILITIES +WORKABILITY +WORKABLE +WORKABLENESS +WORKABLENESSES +WORKABLY +WORKADAY +WORKAHOLIC +WORKAHOLICS +WORKAHOLISM +WORKAHOLISMS +WORKBAG +WORKBAGS +WORKBASKET +WORKBASKETS +WORKBENCH +WORKBENCHES +WORKBOAT +WORKBOATS +WORKBOOK +WORKBOOKS +WORKBOX +WORKBOXES +WORKDAY +WORKDAYS +WORKED +WORKER +WORKERS +WORKFARE +WORKFARES +WORKFLOW +WORKFLOWS +WORKFOLK +WORKFOLKS +WORKFORCE +WORKFORCES +WORKHORSE +WORKHORSES +WORKHOUR +WORKHOURS +WORKHOUSE +WORKHOUSES +WORKING +WORKINGMAN +WORKINGMEN +WORKINGS +WORKINGWOMAN +WORKINGWOMEN +WORKLESS +WORKLESSNESS +WORKLESSNESSES +WORKLOAD +WORKLOADS +WORKMAN +WORKMANLIKE +WORKMANLY +WORKMANSHIP +WORKMANSHIPS +WORKMATE +WORKMATES +WORKMEN +WORKOUT +WORKOUTS +WORKPEOPLE +WORKPIECE +WORKPIECES +WORKPLACE +WORKPLACES +WORKPRINT +WORKPRINTS +WORKROOM +WORKROOMS +WORKS +WORKSHEET +WORKSHEETS +WORKSHOP +WORKSHOPS +WORKSPACE +WORKSPACES +WORKSTATION +WORKSTATIONS +WORKTABLE +WORKTABLES +WORKUP +WORKUPS +WORKWEEK +WORKWEEKS +WORKWOMAN +WORKWOMEN +WORLD +WORLDBEAT +WORLDBEATS +WORLDLIER +WORLDLIEST +WORLDLINESS +WORLDLINESSES +WORLDLING +WORLDLINGS +WORLDLY +WORLDS +WORLDVIEW +WORLDVIEWS +WORLDWIDE +WORM +WORMED +WORMER +WORMERS +WORMGEAR +WORMGEARS +WORMHOLE +WORMHOLES +WORMIER +WORMIEST +WORMIL +WORMILS +WORMINESS +WORMINESSES +WORMING +WORMISH +WORMLIKE +WORMROOT +WORMROOTS +WORMS +WORMSEED +WORMSEEDS +WORMWOOD +WORMWOODS +WORMY +WORN +WORNNESS +WORNNESSES +WORRIED +WORRIEDLY +WORRIER +WORRIERS +WORRIES +WORRIMENT +WORRIMENTS +WORRISOME +WORRISOMELY +WORRISOMENESS +WORRISOMENESSES +WORRIT +WORRITED +WORRITING +WORRITS +WORRY +WORRYING +WORRYWART +WORRYWARTS +WORSE +WORSEN +WORSENED +WORSENING +WORSENS +WORSER +WORSES +WORSET +WORSETS +WORSHIP +WORSHIPED +WORSHIPER +WORSHIPERS +WORSHIPFUL +WORSHIPFULLY +WORSHIPFULNESS +WORSHIPING +WORSHIPLESS +WORSHIPPED +WORSHIPPER +WORSHIPPERS +WORSHIPPING +WORSHIPS +WORST +WORSTED +WORSTEDS +WORSTING +WORSTS +WORT +WORTH +WORTHED +WORTHFUL +WORTHIER +WORTHIES +WORTHIEST +WORTHILY +WORTHINESS +WORTHINESSES +WORTHING +WORTHLESS +WORTHLESSLY +WORTHLESSNESS +WORTHLESSNESSES +WORTHS +WORTHWHILE +WORTHWHILENESS +WORTHY +WORTS +WOS +WOST +WOT +WOTS +WOTTED +WOTTING +WOULD +WOULDEST +WOULDST +WOUND +WOUNDED +WOUNDEDLY +WOUNDING +WOUNDLESS +WOUNDS +WOUNDWORT +WOUNDWORTS +WOVE +WOVEN +WOVENS +WOW +WOWED +WOWING +WOWS +WOWSER +WOWSERS +WRACK +WRACKED +WRACKFUL +WRACKING +WRACKS +WRAITH +WRAITHLIKE +WRAITHS +WRANG +WRANGLE +WRANGLED +WRANGLER +WRANGLERS +WRANGLES +WRANGLING +WRANGS +WRAP +WRAPAROUND +WRAPAROUNDS +WRAPPED +WRAPPER +WRAPPERS +WRAPPING +WRAPPINGS +WRAPS +WRAPT +WRASSE +WRASSES +WRASSLE +WRASSLED +WRASSLES +WRASSLING +WRASTLE +WRASTLED +WRASTLES +WRASTLING +WRATH +WRATHED +WRATHFUL +WRATHFULLY +WRATHFULNESS +WRATHFULNESSES +WRATHIER +WRATHIEST +WRATHILY +WRATHING +WRATHS +WRATHY +WREAK +WREAKED +WREAKER +WREAKERS +WREAKING +WREAKS +WREATH +WREATHE +WREATHED +WREATHEN +WREATHER +WREATHERS +WREATHES +WREATHING +WREATHS +WREATHY +WRECK +WRECKAGE +WRECKAGES +WRECKED +WRECKER +WRECKERS +WRECKFUL +WRECKING +WRECKINGS +WRECKS +WREN +WRENCH +WRENCHED +WRENCHER +WRENCHERS +WRENCHES +WRENCHING +WRENCHINGLY +WRENS +WREST +WRESTED +WRESTER +WRESTERS +WRESTING +WRESTLE +WRESTLED +WRESTLER +WRESTLERS +WRESTLES +WRESTLING +WRESTLINGS +WRESTS +WRETCH +WRETCHED +WRETCHEDER +WRETCHEDEST +WRETCHEDLY +WRETCHEDNESS +WRETCHEDNESSES +WRETCHES +WRICK +WRICKED +WRICKING +WRICKS +WRIED +WRIER +WRIES +WRIEST +WRIGGLE +WRIGGLED +WRIGGLER +WRIGGLERS +WRIGGLES +WRIGGLIER +WRIGGLIEST +WRIGGLING +WRIGGLY +WRIGHT +WRIGHTS +WRING +WRINGED +WRINGER +WRINGERS +WRINGING +WRINGS +WRINKLE +WRINKLED +WRINKLES +WRINKLIER +WRINKLIEST +WRINKLING +WRINKLY +WRIST +WRISTBAND +WRISTBANDS +WRISTIER +WRISTIEST +WRISTLET +WRISTLETS +WRISTLOCK +WRISTLOCKS +WRISTS +WRISTWATCH +WRISTWATCHES +WRISTY +WRIT +WRITABLE +WRITE +WRITEABLE +WRITER +WRITERLY +WRITERS +WRITES +WRITHE +WRITHED +WRITHEN +WRITHER +WRITHERS +WRITHES +WRITHING +WRITING +WRITINGS +WRITS +WRITTEN +WRONG +WRONGDOER +WRONGDOERS +WRONGDOING +WRONGDOINGS +WRONGED +WRONGER +WRONGERS +WRONGEST +WRONGFUL +WRONGFULLY +WRONGFULNESS +WRONGFULNESSES +WRONGHEADED +WRONGHEADEDLY +WRONGHEADEDNESS +WRONGING +WRONGLY +WRONGNESS +WRONGNESSES +WRONGS +WROTE +WROTH +WROTHFUL +WROUGHT +WRUNG +WRY +WRYER +WRYEST +WRYING +WRYLY +WRYNECK +WRYNECKS +WRYNESS +WRYNESSES +WUD +WULFENITE +WULFENITES +WUNDERKIND +WUNDERKINDER +WURST +WURSTS +WURTZITE +WURTZITES +WURZEL +WURZELS +WUSHU +WUSS +WUSSES +WUSSIER +WUSSIES +WUSSIEST +WUSSY +WUTHER +WUTHERED +WUTHERING +WUTHERS +WYANDOTTE +WYANDOTTES +WYCH +WYCHES +WYE +WYES +WYLE +WYLED +WYLES +WYLIECOAT +WYLIECOATS +WYLING +WYN +WYND +WYNDS +WYNN +WYNNS +WYNS +WYTE +WYTED +WYTES +WYTING +WYVERN +WYVERNS +XANTHAN +XANTHANS +XANTHATE +XANTHATES +XANTHEIN +XANTHEINS +XANTHENE +XANTHENES +XANTHIC +XANTHIN +XANTHINE +XANTHINES +XANTHINS +XANTHOMA +XANTHOMAS +XANTHOMATA +XANTHONE +XANTHONES +XANTHOPHYLL +XANTHOPHYLLS +XANTHOUS +XEBEC +XEBECS +XENIA +XENIAL +XENIAS +XENIC +XENOBIOTIC +XENOBIOTICS +XENOBLAST +XENOBLASTS +XENOCRYST +XENOCRYSTS +XENODIAGNOSES +XENODIAGNOSIS +XENODIAGNOSTIC +XENOGAMIES +XENOGAMY +XENOGENEIC +XENOGENIC +XENOGENIES +XENOGENY +XENOGRAFT +XENOGRAFTS +XENOLITH +XENOLITHIC +XENOLITHS +XENON +XENONS +XENOPHILE +XENOPHILES +XENOPHOBE +XENOPHOBES +XENOPHOBIA +XENOPHOBIAS +XENOPHOBIC +XENOPHOBICALLY +XENOPUS +XENOPUSES +XENOTROPIC +XERARCH +XERIC +XERICALLY +XERISCAPE +XERISCAPES +XERODERMA +XERODERMAE +XERODERMAS +XEROGRAPHIC +XEROGRAPHICALLY +XEROGRAPHIES +XEROGRAPHY +XEROPHILE +XEROPHILIES +XEROPHILOUS +XEROPHILY +XEROPHTHALMIA +XEROPHTHALMIAS +XEROPHTHALMIC +XEROPHYTE +XEROPHYTES +XEROPHYTIC +XEROPHYTISM +XEROPHYTISMS +XERORADIOGRAPHY +XEROSERE +XEROSERES +XEROSES +XEROSIS +XEROTHERMIC +XEROTIC +XEROX +XEROXED +XEROXES +XEROXING +XERUS +XERUSES +XI +XIPHISTERNA +XIPHISTERNUM +XIPHOID +XIPHOIDS +XIS +XU +XYLAN +XYLANS +XYLEM +XYLEMS +XYLENE +XYLENES +XYLIDIN +XYLIDINE +XYLIDINES +XYLIDINS +XYLITOL +XYLITOLS +XYLOCARP +XYLOCARPS +XYLOGRAPH +XYLOGRAPHED +XYLOGRAPHER +XYLOGRAPHERS +XYLOGRAPHIC +XYLOGRAPHICAL +XYLOGRAPHIES +XYLOGRAPHING +XYLOGRAPHS +XYLOGRAPHY +XYLOID +XYLOL +XYLOLS +XYLOPHAGE +XYLOPHAGES +XYLOPHAGOUS +XYLOPHONE +XYLOPHONES +XYLOPHONIST +XYLOPHONISTS +XYLOSE +XYLOSES +XYLOTOMIES +XYLOTOMY +XYLYL +XYLYLS +XYST +XYSTER +XYSTERS +XYSTI +XYSTOI +XYSTOS +XYSTS +XYSTUS +YA +YABBER +YABBERED +YABBERING +YABBERS +YABBIE +YABBIES +YABBY +YACHT +YACHTED +YACHTER +YACHTERS +YACHTING +YACHTINGS +YACHTMAN +YACHTMEN +YACHTS +YACHTSMAN +YACHTSMEN +YACK +YACKED +YACKING +YACKS +YAFF +YAFFED +YAFFING +YAFFS +YAG +YAGER +YAGERS +YAGI +YAGIS +YAGS +YAH +YAHOO +YAHOOISM +YAHOOISMS +YAHOOS +YAHRZEIT +YAHRZEITS +YAIRD +YAIRDS +YAK +YAKITORI +YAKITORIS +YAKKED +YAKKER +YAKKERS +YAKKING +YAKS +YAKUZA +YALD +YAM +YAMALKA +YAMALKAS +YAMEN +YAMENS +YAMMER +YAMMERED +YAMMERER +YAMMERERS +YAMMERING +YAMMERS +YAMS +YAMULKA +YAMULKAS +YAMUN +YAMUNS +YANG +YANGS +YANK +YANKED +YANKING +YANKS +YANQUI +YANQUIS +YANTRA +YANTRAS +YAP +YAPOCK +YAPOCKS +YAPOK +YAPOKS +YAPON +YAPONS +YAPPED +YAPPER +YAPPERS +YAPPING +YAPPINGLY +YAPS +YAR +YARD +YARDAGE +YARDAGES +YARDARM +YARDARMS +YARDBIRD +YARDBIRDS +YARDED +YARDER +YARDERS +YARDING +YARDLAND +YARDLANDS +YARDMAN +YARDMASTER +YARDMASTERS +YARDMEN +YARDS +YARDSTICK +YARDSTICKS +YARDWAND +YARDWANDS +YARDWORK +YARDWORKS +YARE +YARELY +YARER +YAREST +YARMELKE +YARMELKES +YARMULKE +YARMULKES +YARN +YARNED +YARNER +YARNERS +YARNING +YARNS +YARROW +YARROWS +YASHMAC +YASHMACS +YASHMAK +YASHMAKS +YASMAK +YASMAKS +YATAGAN +YATAGANS +YATAGHAN +YATAGHANS +YATTER +YATTERED +YATTERING +YATTERS +YAUD +YAUDS +YAULD +YAUP +YAUPED +YAUPER +YAUPERS +YAUPING +YAUPON +YAUPONS +YAUPS +YAUTIA +YAUTIAS +YAW +YAWED +YAWEY +YAWING +YAWL +YAWLED +YAWLING +YAWLS +YAWMETER +YAWMETERS +YAWN +YAWNED +YAWNER +YAWNERS +YAWNING +YAWNINGLY +YAWNS +YAWP +YAWPED +YAWPER +YAWPERS +YAWPING +YAWPINGS +YAWPS +YAWS +YAY +YAYS +YCLAD +YCLEPED +YCLEPT +YE +YEA +YEAH +YEAHS +YEALING +YEALINGS +YEAN +YEANED +YEANING +YEANLING +YEANLINGS +YEANS +YEAR +YEARBOOK +YEARBOOKS +YEAREND +YEARENDS +YEARLIES +YEARLING +YEARLINGS +YEARLONG +YEARLY +YEARN +YEARNED +YEARNER +YEARNERS +YEARNING +YEARNINGLY +YEARNINGS +YEARNS +YEARS +YEAS +YEASAYER +YEASAYERS +YEAST +YEASTED +YEASTIER +YEASTIEST +YEASTILY +YEASTINESS +YEASTINESSES +YEASTING +YEASTLESS +YEASTLIKE +YEASTS +YEASTY +YECCH +YECCHS +YECH +YECHS +YECHY +YEELIN +YEELINS +YEGG +YEGGMAN +YEGGMEN +YEGGS +YEH +YELD +YELK +YELKS +YELL +YELLED +YELLER +YELLERS +YELLING +YELLOW +YELLOWED +YELLOWER +YELLOWEST +YELLOWFIN +YELLOWFINS +YELLOWHAMMER +YELLOWHAMMERS +YELLOWING +YELLOWISH +YELLOWLEGS +YELLOWLY +YELLOWS +YELLOWTAIL +YELLOWTAILS +YELLOWTHROAT +YELLOWTHROATS +YELLOWWARE +YELLOWWARES +YELLOWWOOD +YELLOWWOODS +YELLOWY +YELLS +YELP +YELPED +YELPER +YELPERS +YELPING +YELPS +YEN +YENNED +YENNING +YENS +YENTA +YENTAS +YENTE +YENTES +YEOMAN +YEOMANLY +YEOMANRIES +YEOMANRY +YEOMEN +YEP +YEPS +YERBA +YERBAS +YERK +YERKED +YERKING +YERKS +YES +YESES +YESHIVA +YESHIVAH +YESHIVAHS +YESHIVAS +YESHIVOT +YESHIVOTH +YESSED +YESSES +YESSING +YESTER +YESTERDAY +YESTERDAYS +YESTEREVE +YESTEREVES +YESTERN +YESTERNIGHT +YESTERNIGHTS +YESTERYEAR +YESTERYEARS +YESTREEN +YESTREENS +YET +YETI +YETIS +YETT +YETTS +YEUK +YEUKED +YEUKING +YEUKS +YEUKY +YEW +YEWS +YID +YIDS +YIELD +YIELDABLE +YIELDED +YIELDER +YIELDERS +YIELDING +YIELDS +YIKES +YILL +YILLS +YIN +YINCE +YINS +YIP +YIPE +YIPES +YIPPED +YIPPEE +YIPPIE +YIPPIES +YIPPING +YIPS +YIRD +YIRDS +YIRR +YIRRED +YIRRING +YIRRS +YIRTH +YIRTHS +YLEM +YLEMS +YO +YOB +YOBBO +YOBBOES +YOBBOS +YOBS +YOCK +YOCKED +YOCKING +YOCKS +YOCTOSECOND +YOCTOSECONDS +YOD +YODEL +YODELED +YODELER +YODELERS +YODELING +YODELLED +YODELLER +YODELLERS +YODELLING +YODELS +YODH +YODHS +YODLE +YODLED +YODLER +YODLERS +YODLES +YODLING +YODS +YOGA +YOGAS +YOGEE +YOGEES +YOGH +YOGHOURT +YOGHOURTS +YOGHS +YOGHURT +YOGHURTS +YOGI +YOGIC +YOGIN +YOGINI +YOGINIS +YOGINS +YOGIS +YOGURT +YOGURTS +YOHIMBE +YOHIMBES +YOHIMBINE +YOHIMBINES +YOICKS +YOK +YOKE +YOKED +YOKEFELLOW +YOKEFELLOWS +YOKEL +YOKELESS +YOKELISH +YOKELS +YOKEMATE +YOKEMATES +YOKES +YOKING +YOKOZUNA +YOKOZUNAS +YOKS +YOLK +YOLKED +YOLKIER +YOLKIEST +YOLKS +YOLKY +YOM +YOMIM +YON +YOND +YONDER +YONI +YONIC +YONIS +YONKER +YONKERS +YORE +YORES +YOTTABYTE +YOTTABYTES +YOU +YOUNG +YOUNGBERRIES +YOUNGBERRY +YOUNGER +YOUNGERS +YOUNGEST +YOUNGISH +YOUNGLING +YOUNGLINGS +YOUNGNESS +YOUNGNESSES +YOUNGS +YOUNGSTER +YOUNGSTERS +YOUNKER +YOUNKERS +YOUPON +YOUPONS +YOUR +YOURN +YOURS +YOURSELF +YOURSELVES +YOUS +YOUSE +YOUTH +YOUTHEN +YOUTHENED +YOUTHENING +YOUTHENS +YOUTHFUL +YOUTHFULLY +YOUTHFULNESS +YOUTHFULNESSES +YOUTHQUAKE +YOUTHQUAKES +YOUTHS +YOW +YOWE +YOWED +YOWES +YOWIE +YOWIES +YOWING +YOWL +YOWLED +YOWLER +YOWLERS +YOWLING +YOWLS +YOWS +YPERITE +YPERITES +YTTERBIA +YTTERBIAS +YTTERBIC +YTTERBIUM +YTTERBIUMS +YTTERBOUS +YTTRIA +YTTRIAS +YTTRIC +YTTRIUM +YTTRIUMS +YUAN +YUANS +YUCA +YUCAS +YUCCA +YUCCAS +YUCCH +YUCH +YUCK +YUCKED +YUCKIER +YUCKIEST +YUCKINESS +YUCKINESSES +YUCKING +YUCKS +YUCKY +YUGA +YUGAS +YUK +YUKKED +YUKKIER +YUKKIEST +YUKKING +YUKKY +YUKS +YULAN +YULANS +YULE +YULES +YULETIDE +YULETIDES +YUM +YUMMIER +YUMMIES +YUMMIEST +YUMMINESS +YUMMINESSES +YUMMY +YUP +YUPON +YUPONS +YUPPIE +YUPPIEDOM +YUPPIEDOMS +YUPPIEISH +YUPPIES +YUPPIFIED +YUPPIFIES +YUPPIFY +YUPPIFYING +YUPPY +YUPS +YURT +YURTA +YURTS +YUTZ +YUTZES +YWIS +ZA +ZABAGLIONE +ZABAGLIONES +ZABAIONE +ZABAIONES +ZABAJONE +ZABAJONES +ZACATON +ZACATONS +ZADDICK +ZADDIK +ZADDIKIM +ZAFFAR +ZAFFARS +ZAFFER +ZAFFERS +ZAFFIR +ZAFFIRS +ZAFFRE +ZAFFRES +ZAFTIG +ZAG +ZAGGED +ZAGGING +ZAGS +ZAIBATSU +ZAIKAI +ZAIKAIS +ZAIRE +ZAIRES +ZAMARRA +ZAMARRAS +ZAMARRO +ZAMARROS +ZAMIA +ZAMIAS +ZAMINDAR +ZAMINDARI +ZAMINDARIS +ZAMINDARS +ZANANA +ZANANAS +ZANDER +ZANDERS +ZANIER +ZANIES +ZANIEST +ZANILY +ZANINESS +ZANINESSES +ZANY +ZANYISH +ZANZA +ZANZAS +ZAP +ZAPATEADO +ZAPATEADOS +ZAPATEO +ZAPATEOS +ZAPPED +ZAPPER +ZAPPERS +ZAPPIER +ZAPPIEST +ZAPPING +ZAPPY +ZAPS +ZAPTIAH +ZAPTIAHS +ZAPTIEH +ZAPTIEHS +ZARATITE +ZARATITES +ZAREBA +ZAREBAS +ZAREEBA +ZAREEBAS +ZARF +ZARFS +ZARIBA +ZARIBAS +ZARZUELA +ZARZUELAS +ZAS +ZASTRUGA +ZASTRUGI +ZAX +ZAXES +ZAYIN +ZAYINS +ZAZEN +ZAZENS +ZEAL +ZEALOT +ZEALOTRIES +ZEALOTRY +ZEALOTS +ZEALOUS +ZEALOUSLY +ZEALOUSNESS +ZEALOUSNESSES +ZEALS +ZEATIN +ZEATINS +ZEBEC +ZEBECK +ZEBECKS +ZEBECS +ZEBRA +ZEBRAFISH +ZEBRAFISHES +ZEBRAIC +ZEBRANO +ZEBRANOS +ZEBRAS +ZEBRASS +ZEBRASSES +ZEBRAWOOD +ZEBRAWOODS +ZEBRINE +ZEBRINES +ZEBROID +ZEBU +ZEBUS +ZECCHIN +ZECCHINI +ZECCHINO +ZECCHINOS +ZECCHINS +ZECHIN +ZECHINS +ZED +ZEDOARIES +ZEDOARY +ZEDS +ZEE +ZEES +ZEIN +ZEINS +ZEITGEBER +ZEITGEBERS +ZEITGEIST +ZEITGEISTS +ZEK +ZEKS +ZELKOVA +ZELKOVAS +ZEMINDAR +ZEMINDARIES +ZEMINDARS +ZEMINDARY +ZEMSTVA +ZEMSTVO +ZEMSTVOS +ZENAIDA +ZENAIDAS +ZENANA +ZENANAS +ZENITH +ZENITHAL +ZENITHS +ZEOLITE +ZEOLITES +ZEOLITIC +ZEP +ZEPHYR +ZEPHYRS +ZEPPELIN +ZEPPELINS +ZEPPOLE +ZEPPOLES +ZEPPOLI +ZEPS +ZEPTOSECOND +ZEPTOSECONDS +ZERK +ZERKS +ZERO +ZEROED +ZEROES +ZEROING +ZEROS +ZEROTH +ZEST +ZESTED +ZESTER +ZESTERS +ZESTFUL +ZESTFULLY +ZESTFULNESS +ZESTFULNESSES +ZESTIER +ZESTIEST +ZESTILY +ZESTING +ZESTLESS +ZESTS +ZESTY +ZETA +ZETAS +ZETTABYTE +ZETTABYTES +ZEUGMA +ZEUGMAS +ZEUGMATIC +ZIBELINE +ZIBELINES +ZIBELLINE +ZIBELLINES +ZIBET +ZIBETH +ZIBETHS +ZIBETS +ZIDOVUDINE +ZIDOVUDINES +ZIG +ZIGGED +ZIGGING +ZIGGURAT +ZIGGURATS +ZIGS +ZIGZAG +ZIGZAGGED +ZIGZAGGER +ZIGZAGGERS +ZIGZAGGING +ZIGZAGGY +ZIGZAGS +ZIKKURAT +ZIKKURATS +ZIKURAT +ZIKURATS +ZILCH +ZILCHES +ZILL +ZILLAH +ZILLAHS +ZILLION +ZILLIONAIRE +ZILLIONAIRES +ZILLIONS +ZILLIONTH +ZILLS +ZIN +ZINC +ZINCATE +ZINCATES +ZINCED +ZINCIC +ZINCIFIED +ZINCIFIES +ZINCIFY +ZINCIFYING +ZINCING +ZINCITE +ZINCITES +ZINCKED +ZINCKING +ZINCKY +ZINCOID +ZINCOUS +ZINCS +ZINCY +ZINE +ZINEB +ZINEBS +ZINES +ZINFANDEL +ZINFANDELS +ZING +ZINGANI +ZINGANO +ZINGARA +ZINGARE +ZINGARI +ZINGARO +ZINGED +ZINGER +ZINGERS +ZINGIER +ZINGIEST +ZINGING +ZINGS +ZINGY +ZINKENITE +ZINKENITES +ZINKIFIED +ZINKIFIES +ZINKIFY +ZINKIFYING +ZINKY +ZINNIA +ZINNIAS +ZINS +ZIP +ZIPLESS +ZIPLOCK +ZIPPED +ZIPPER +ZIPPERED +ZIPPERING +ZIPPERS +ZIPPIER +ZIPPIEST +ZIPPING +ZIPPY +ZIPS +ZIRAM +ZIRAMS +ZIRCALOY +ZIRCALOYS +ZIRCON +ZIRCONIA +ZIRCONIAS +ZIRCONIC +ZIRCONIUM +ZIRCONIUMS +ZIRCONS +ZIT +ZITHER +ZITHERIST +ZITHERISTS +ZITHERN +ZITHERNS +ZITHERS +ZITI +ZITIS +ZITS +ZIZIT +ZIZITH +ZIZZLE +ZIZZLED +ZIZZLES +ZIZZLING +ZLOTE +ZLOTIES +ZLOTY +ZLOTYCH +ZLOTYS +ZOA +ZOANTHARIAN +ZOANTHARIANS +ZOARIA +ZOARIAL +ZOARIUM +ZOCALO +ZOCALOS +ZODIAC +ZODIACAL +ZODIACS +ZOEA +ZOEAE +ZOEAL +ZOEAS +ZOECIA +ZOECIUM +ZOFTIG +ZOIC +ZOISITE +ZOISITES +ZOMBI +ZOMBIE +ZOMBIELIKE +ZOMBIES +ZOMBIFICATION +ZOMBIFICATIONS +ZOMBIFIED +ZOMBIFIES +ZOMBIFY +ZOMBIFYING +ZOMBIISM +ZOMBIISMS +ZOMBIS +ZONA +ZONAE +ZONAL +ZONALLY +ZONARY +ZONATE +ZONATED +ZONATION +ZONATIONS +ZONE +ZONED +ZONELESS +ZONER +ZONERS +ZONES +ZONETIME +ZONETIMES +ZONING +ZONK +ZONKED +ZONKING +ZONKS +ZONULA +ZONULAE +ZONULAR +ZONULAS +ZONULE +ZONULES +ZOO +ZOOCHORE +ZOOCHORES +ZOOECIA +ZOOECIUM +ZOOEY +ZOOGAMETE +ZOOGAMETES +ZOOGENIC +ZOOGENIES +ZOOGENOUS +ZOOGENY +ZOOGEOGRAPHER +ZOOGEOGRAPHERS +ZOOGEOGRAPHIC +ZOOGEOGRAPHICAL +ZOOGEOGRAPHIES +ZOOGEOGRAPHY +ZOOGLEA +ZOOGLEAE +ZOOGLEAL +ZOOGLEAS +ZOOGLOEA +ZOOGLOEAE +ZOOGLOEAL +ZOOGLOEAS +ZOOGLOEIC +ZOOGRAPHIES +ZOOGRAPHY +ZOOID +ZOOIDAL +ZOOIDS +ZOOIER +ZOOIEST +ZOOKEEPER +ZOOKEEPERS +ZOOKS +ZOOLATER +ZOOLATERS +ZOOLATRIES +ZOOLATRY +ZOOLOGIC +ZOOLOGICAL +ZOOLOGICALLY +ZOOLOGIES +ZOOLOGIST +ZOOLOGISTS +ZOOLOGY +ZOOM +ZOOMANIA +ZOOMANIAS +ZOOMED +ZOOMETRIC +ZOOMETRIES +ZOOMETRY +ZOOMING +ZOOMORPH +ZOOMORPHIC +ZOOMORPHS +ZOOMS +ZOON +ZOONAL +ZOONED +ZOONING +ZOONOSES +ZOONOSIS +ZOONOTIC +ZOONS +ZOOPHILE +ZOOPHILES +ZOOPHILIA +ZOOPHILIAS +ZOOPHILIC +ZOOPHILIES +ZOOPHILOUS +ZOOPHILY +ZOOPHOBE +ZOOPHOBES +ZOOPHOBIA +ZOOPHOBIAS +ZOOPHYTE +ZOOPHYTES +ZOOPHYTIC +ZOOPLANKTER +ZOOPLANKTERS +ZOOPLANKTON +ZOOPLANKTONIC +ZOOPLANKTONS +ZOOS +ZOOSPERM +ZOOSPERMS +ZOOSPORANGIA +ZOOSPORANGIUM +ZOOSPORE +ZOOSPORES +ZOOSPORIC +ZOOSTEROL +ZOOSTEROLS +ZOOTECHNICAL +ZOOTECHNICS +ZOOTIER +ZOOTIEST +ZOOTOMIC +ZOOTOMIES +ZOOTOMIST +ZOOTOMISTS +ZOOTOMY +ZOOTY +ZOOXANTHELLA +ZOOXANTHELLAE +ZORI +ZORIL +ZORILLA +ZORILLAS +ZORILLE +ZORILLES +ZORILLO +ZORILLOS +ZORILS +ZORIS +ZOSTER +ZOSTERS +ZOUAVE +ZOUAVES +ZOUK +ZOUKS +ZOUNDS +ZOWIE +ZOYSIA +ZOYSIAS +ZUCCHETTI +ZUCCHETTO +ZUCCHETTOS +ZUCCHINI +ZUCCHINIS +ZUGZWANG +ZUGZWANGS +ZUZ +ZUZIM +ZWIEBACK +ZWIEBACKS +ZWITTERION +ZWITTERIONIC +ZWITTERIONS +ZYDECO +ZYDECOS +ZYGAPOPHYSES +ZYGAPOPHYSIS +ZYGODACTYL +ZYGODACTYLOUS +ZYGOID +ZYGOMA +ZYGOMAS +ZYGOMATA +ZYGOMATIC +ZYGOMATICS +ZYGOMORPHIC +ZYGOMORPHIES +ZYGOMORPHY +ZYGOSE +ZYGOSES +ZYGOSIS +ZYGOSITIES +ZYGOSITY +ZYGOSPORE +ZYGOSPORES +ZYGOTE +ZYGOTENE +ZYGOTENES +ZYGOTES +ZYGOTIC +ZYMASE +ZYMASES +ZYME +ZYMES +ZYMOGEN +ZYMOGENE +ZYMOGENES +ZYMOGENIC +ZYMOGENS +ZYMOGRAM +ZYMOGRAMS +ZYMOLOGIC +ZYMOLOGIES +ZYMOLOGY +ZYMOLYSES +ZYMOLYSIS +ZYMOLYTIC +ZYMOMETER +ZYMOMETERS +ZYMOSAN +ZYMOSANS +ZYMOSES +ZYMOSIS +ZYMOTIC +ZYMURGIES +ZYMURGY +ZYZZYVA +ZYZZYVAS +ZZZ \ No newline at end of file diff --git a/core-java-io/src/test/resources/test.find b/core-java-io/src/test/resources/test.find new file mode 100644 index 0000000000..0cb7d51df1 --- /dev/null +++ b/core-java-io/src/test/resources/test.find @@ -0,0 +1 @@ +Test of JNDI on file. \ No newline at end of file diff --git a/core-java-io/src/test/resources/testFolder/sample_file_1.in b/core-java-io/src/test/resources/testFolder/sample_file_1.in new file mode 100644 index 0000000000..70c379b63f --- /dev/null +++ b/core-java-io/src/test/resources/testFolder/sample_file_1.in @@ -0,0 +1 @@ +Hello world \ No newline at end of file diff --git a/core-java-io/src/test/resources/testFolder/sample_file_2.in b/core-java-io/src/test/resources/testFolder/sample_file_2.in new file mode 100644 index 0000000000..93b493a513 --- /dev/null +++ b/core-java-io/src/test/resources/testFolder/sample_file_2.in @@ -0,0 +1 @@ +Hello world ! \ No newline at end of file diff --git a/core-java-io/src/test/resources/test_read.in b/core-java-io/src/test/resources/test_read.in new file mode 100644 index 0000000000..70c379b63f --- /dev/null +++ b/core-java-io/src/test/resources/test_read.in @@ -0,0 +1 @@ +Hello world \ No newline at end of file diff --git a/core-java-io/src/test/resources/test_read1.in b/core-java-io/src/test/resources/test_read1.in new file mode 100644 index 0000000000..1e46242993 --- /dev/null +++ b/core-java-io/src/test/resources/test_read1.in @@ -0,0 +1 @@ +Hello world 1 \ No newline at end of file diff --git a/core-java-io/src/test/resources/test_read2.in b/core-java-io/src/test/resources/test_read2.in new file mode 100644 index 0000000000..fe47dc003b --- /dev/null +++ b/core-java-io/src/test/resources/test_read2.in @@ -0,0 +1 @@ +2,3 4 \ No newline at end of file diff --git a/core-java-io/src/test/resources/test_read3.in b/core-java-io/src/test/resources/test_read3.in new file mode 100644 index 0000000000..db9f25a672 --- /dev/null +++ b/core-java-io/src/test/resources/test_read3.in @@ -0,0 +1 @@ +Hello 1 \ No newline at end of file diff --git a/core-java-io/src/test/resources/test_read4.in b/core-java-io/src/test/resources/test_read4.in new file mode 100644 index 0000000000..5727d54bfc Binary files /dev/null and b/core-java-io/src/test/resources/test_read4.in differ diff --git a/core-java-io/src/test/resources/test_read7.in b/core-java-io/src/test/resources/test_read7.in new file mode 100644 index 0000000000..28d4d45d43 --- /dev/null +++ b/core-java-io/src/test/resources/test_read7.in @@ -0,0 +1 @@ +青空 \ No newline at end of file diff --git a/core-java-io/src/test/resources/test_read8.in b/core-java-io/src/test/resources/test_read8.in new file mode 100644 index 0000000000..10fc1aac8a --- /dev/null +++ b/core-java-io/src/test/resources/test_read8.in @@ -0,0 +1,2 @@ +Hello world + Test line diff --git a/core-java-io/src/test/resources/test_read_d.in b/core-java-io/src/test/resources/test_read_d.in new file mode 100644 index 0000000000..82bbb4071f --- /dev/null +++ b/core-java-io/src/test/resources/test_read_d.in @@ -0,0 +1 @@ +John,Adam-Tom \ No newline at end of file diff --git a/core-java-io/src/test/resources/test_read_multiple.in b/core-java-io/src/test/resources/test_read_multiple.in new file mode 100644 index 0000000000..7d64000a76 --- /dev/null +++ b/core-java-io/src/test/resources/test_read_multiple.in @@ -0,0 +1,2 @@ +Hello world +Hi, John \ No newline at end of file diff --git a/core-java-sun/pom.xml b/core-java-sun/pom.xml index 3997f47d19..11aa21f44d 100644 --- a/core-java-sun/pom.xml +++ b/core-java-sun/pom.xml @@ -483,7 +483,7 @@ 1.7.0 - 3.6.0 + 3.7.0 2.19.1 \ No newline at end of file diff --git a/core-java/README.md b/core-java/README.md index 8287a21d1e..ed60db855c 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -4,19 +4,13 @@ ### Relevant Articles: - [Immutable ArrayList in Java](http://www.baeldung.com/java-immutable-list) -- [Java - Reading a Large File Efficiently](http://www.baeldung.com/java-read-lines-large-file) -- [Java InputStream to String](http://www.baeldung.com/convert-input-stream-to-string) - [Converting between an Array and a List in Java](http://www.baeldung.com/convert-array-to-list-and-list-to-array) - [Converting between an Array and a Set in Java](http://www.baeldung.com/convert-array-to-set-and-set-to-array) - [Converting between a List and a Set in Java](http://www.baeldung.com/convert-list-to-set-and-set-to-list) - [Convert a Map to an Array, List or Set in Java](http://www.baeldung.com/convert-map-values-to-array-list-set) -- [Java – Write to File](http://www.baeldung.com/java-write-to-file) -- [Java - Convert File to InputStream](http://www.baeldung.com/convert-file-to-input-stream) - [Java – Random Long, Float, Integer and Double](http://www.baeldung.com/java-generate-random-long-float-integer-double) - [Java – Generate Random String](http://www.baeldung.com/java-random-string) -- [Java Scanner](http://www.baeldung.com/java-scanner) - [Java Timer](http://www.baeldung.com/java-timer-and-timertask) -- [Java – Byte Array to Writer](http://www.baeldung.com/java-convert-byte-array-to-writer) - [How to Run a Shell Command in Java](http://www.baeldung.com/run-shell-command-in-java) - [MD5 Hashing in Java](http://www.baeldung.com/java-md5) - [Guide to the Java ArrayList](http://www.baeldung.com/java-arraylist) @@ -25,7 +19,6 @@ - [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) - [Random List Element](http://www.baeldung.com/java-random-list-element) - [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) -- [Java – Directory Size](http://www.baeldung.com/java-folder-size) - [Java – Try with Resources](http://www.baeldung.com/java-try-with-resources) - [Guide to the Fork/Join Framework in Java](http://www.baeldung.com/java-fork-join) - [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) @@ -39,10 +32,8 @@ - [Java - Combine Multiple Collections](http://www.baeldung.com/java-combine-multiple-collections) - [Simulated Annealing for Travelling Salesman Problem](http://www.baeldung.com/java-simulated-annealing-for-traveling-salesman) - [Slope One Algorithm: Collaborative Filtering Recommendation Systems](http://www.baeldung.com/java-collaborative-filtering-recommendations) -- [Differences Between the Java WatchService API and the Apache Commons IO Monitor Library](http://www.baeldung.com/java-watchservice-vs-apache-commons-io-monitor-library) - [Pattern Search with Grep in Java](http://www.baeldung.com/grep-in-java) - [URL Encoding and Decoding in Java](http://www.baeldung.com/java-url-encoding-decoding) -- [Calculate the Size of a File in Java](http://www.baeldung.com/java-file-size) - [The Basics of Java Generics](http://www.baeldung.com/java-generics) - [The Traveling Salesman Problem in Java](http://www.baeldung.com/java-simulated-annealing-for-traveling-salesman) - [How to Create an Executable JAR with Maven](http://www.baeldung.com/executable-jar-with-maven) @@ -53,7 +44,6 @@ - [AWS Lambda With Java](http://www.baeldung.com/java-aws-lambda) - [Introduction to Nashorn](http://www.baeldung.com/java-nashorn) - [Guide to the Guava BiMap](http://www.baeldung.com/guava-bimap) -- [Iterable to Stream in Java](http://www.baeldung.com/java-iterable-to-stream) - [Chained Exceptions in Java](http://www.baeldung.com/java-chained-exceptions) - [The Java HashMap Under the Hood](http://www.baeldung.com/java-hashmap) - [A Guide to LinkedHashMap in Java](http://www.baeldung.com/java-linked-hashmap) @@ -73,15 +63,12 @@ - [How to Perform a Simple HTTP Request in Java](http://www.baeldung.com/java-http-request) - [Call Methods at Runtime Using Java Reflection](http://www.baeldung.com/java-method-reflection) - [Guide to UUID in JAVA](http://www.baeldung.com/guide-to-uuid-in-java) -- [Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java](http://www.baeldung.com/java-path) - [How to Add a Single Element to a Stream](http://www.baeldung.com/java-stream-append-prepend) - [Iterating Over Enum Values in Java](http://www.baeldung.com/java-enum-iteration) - [Kotlin Java Interoperability](http://www.baeldung.com/kotlin-java-interoperability) -- [Using Java MappedByteBuffer](http://www.baeldung.com/java-mapped-byte-buffer) - [How to Round a Number to N Decimal Places in Java](http://www.baeldung.com/java-round-decimal-number) - [Changing Annotation Parameters At Runtime](http://www.baeldung.com/java-reflection-change-annotation-params) - [How to Find all Getters Returning Null](http://www.baeldung.com/java-getters-returning-null) -- [Converting String to Stream of chars](http://www.baeldung.com/java-string-to-stream) - [Changing the Order in a Sum Operation Can Produce Different Results?](http://www.baeldung.com/java-floating-point-sum-order) - [How to Get a Name of a Method Being Executed?](http://www.baeldung.com/java-name-of-executing-method) - [Iterate over a Map in Java](http://www.baeldung.com/java-iterate-map) @@ -110,7 +97,6 @@ - [Singletons in Java](http://www.baeldung.com/java-singleton) - [“Sneaky Throws” in Java](http://www.baeldung.com/java-sneaky-throws) - [OutOfMemoryError: GC Overhead Limit Exceeded](http://www.baeldung.com/java-gc-overhead-limit-exceeded) -- [How to Iterate Over a Stream With Indices](http://www.baeldung.com/java-stream-indices) - [StringBuilder and StringBuffer in Java](http://www.baeldung.com/java-string-builder-string-buffer) - [Number of Digits in an Integer in Java](http://www.baeldung.com/java-number-of-digits-in-int) - [Proxy, Decorator, Adapter and Bridge Patterns](http://www.baeldung.com/java-structural-design-patterns) @@ -118,7 +104,26 @@ - [A Guide to the Static Keyword in Java](http://www.baeldung.com/java-static) - [Initializing Arrays in Java](http://www.baeldung.com/java-initialize-array) - [Guide to Java String Pool](http://www.baeldung.com/java-string-pool) -- [Copy a File with Java](http://www.baeldung.com/java-copy-file) - [Introduction to Creational Design Patterns](http://www.baeldung.com/creational-design-patterns) - [Quick Example - Comparator vs Comparable in Java](http://www.baeldung.com/java-comparator-comparable) - +- [Quick Guide to Java Stack](http://www.baeldung.com/java-stack) +- [The Java continue and break Keywords](http://www.baeldung.com/java-continue-and-break) +- [Introduction to the Java ArrayDeque](http://www.baeldung.com/java-array-deque) +- [Guide to java.util.Formatter](http://www.baeldung.com/java-string-formatter) +- [Batch Processing in JDBC](http://www.baeldung.com/jdbc-batch-processing) +- [Check if a Java Array Contains a Value](http://www.baeldung.com/java-array-contains-value) +- [How to Invert an Array in Java](http://www.baeldung.com/java-invert-array) +- [Guide to the Cipher Class](http://www.baeldung.com/java-cipher-class) +- [A Guide to Java Initialization](http://www.baeldung.com/java-initialization) +- [Implementing a Binary Tree in Java](http://www.baeldung.com/java-binary-tree) +- [A Guide to ThreadLocalRandom in Java](http://www.baeldung.com/java-thread-local-random) +- [RegEx for matching Date Pattern in Java](http://www.baeldung.com/java-date-regular-expressions) +- [Introduction to the JDBC RowSet Interface in Java](http://www.baeldung.com/java-jdbc-rowset) +- [Nested Classes in Java](http://www.baeldung.com/java-nested-classes) +- [A Guide to Java Loops](http://www.baeldung.com/java-loops) +- [Varargs in Java](http://www.baeldung.com/java-varargs) +- [A Guide to HashSet in Java](http://www.baeldung.com/java-hashset) +- [A Guide to Inner Interfaces in Java](http://www.baeldung.com/java-inner-interfaces) +- [Polymorphism in Java](http://www.baeldung.com/java-polymorphism) +- [Recursion In Java](http://www.baeldung.com/java-recursion) +- [A Guide to the finalize Method in Java](http://www.baeldung.com/java-finalize) diff --git a/core-java/pom.xml b/core-java/pom.xml index 6be76cab33..5c1e9fcad0 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -1,496 +1,505 @@ - 4.0.0 - com.baeldung - core-java - 0.1.0-SNAPSHOT - jar + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.baeldung + core-java + 0.1.0-SNAPSHOT + jar - core-java + core-java - + - - - net.sourceforge.collections - collections-generic - ${collections-generic.version} - - - com.google.guava - guava - ${guava.version} - + + + net.sourceforge.collections + collections-generic + ${collections-generic.version} + + + com.google.guava + guava + ${guava.version} + - - org.apache.commons - commons-collections4 - ${commons-collections4.version} - + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + - - commons-io - commons-io - ${commons-io.version} - + + commons-io + commons-io + ${commons-io.version} + - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + - - org.apache.commons - commons-math3 - ${commons-math3.version} - + + org.apache.commons + commons-math3 + ${commons-math3.version} + - - org.decimal4j - decimal4j - ${decimal4j.version} - + + org.decimal4j + decimal4j + ${decimal4j.version} + - - org.bouncycastle - bcprov-jdk15on - ${bouncycastle.version} - + + org.bouncycastle + bcprov-jdk15on + ${bouncycastle.version} + - - org.unix4j - unix4j-command - ${unix4j.version} - + + org.unix4j + unix4j-command + ${unix4j.version} + - - com.googlecode.grep4j - grep4j - ${grep4j.version} - - + + com.googlecode.grep4j + grep4j + ${grep4j.version} + + - + - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + - - - log4j - log4j - 1.2.17 - - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - ch.qos.logback - logback-classic - ${logback.version} - - - - org.slf4j - jcl-over-slf4j - ${org.slf4j.version} - - - - org.slf4j - log4j-over-slf4j - ${org.slf4j.version} - - - org.projectlombok - lombok - ${lombok.version} - provided - + + + log4j + log4j + 1.2.17 + + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + + + org.projectlombok + lombok + ${lombok.version} + provided + - + - - org.hamcrest - hamcrest-all - 1.3 - test - + + org.hamcrest + hamcrest-all + 1.3 + test + - - junit - junit - ${junit.version} - test - + + junit + junit + ${junit.version} + test + - - org.hamcrest - hamcrest-core - ${org.hamcrest.version} - test - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - + + org.hamcrest + hamcrest-core + ${org.hamcrest.version} + test + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + - - org.assertj - assertj-core - ${assertj.version} - test - + + org.assertj + assertj-core + ${assertj.version} + test + - - org.mockito - mockito-core - ${mockito.version} - test - - - com.jayway.awaitility - awaitility - ${avaitility.version} - test - + + org.mockito + mockito-core + ${mockito.version} + test + + + com.jayway.awaitility + awaitility + ${avaitility.version} + test + - - commons-codec - commons-codec - ${commons-codec.version} - + + commons-codec + commons-codec + ${commons-codec.version} + - - org.javamoney - moneta - 1.1 - + + org.javamoney + moneta + 1.1 + - - org.owasp.esapi - esapi - 2.1.0.1 - - - com.h2database - h2 - 1.4.196 - runtime - - - com.sun.messaging.mq - fscontext - ${fscontext.version} - - - com.codepoetics - protonpack - ${protonpack.version} - - - one.util - streamex - ${streamex.version} - - - io.vavr - vavr - ${vavr.version} - - - org.openjdk.jmh - jmh-core - 1.19 - - - org.openjdk.jmh - jmh-generator-annprocess - 1.19 - - - org.springframework - spring-web - 4.3.4.RELEASE - + + org.owasp.esapi + esapi + 2.1.0.1 + + + com.sun.messaging.mq + fscontext + ${fscontext.version} + + + com.codepoetics + protonpack + ${protonpack.version} + + + one.util + streamex + ${streamex.version} + + + io.vavr + vavr + ${vavr.version} + + + org.openjdk.jmh + jmh-core + 1.19 + + + org.openjdk.jmh + jmh-generator-annprocess + 1.19 + + org.springframework + spring-web + 4.3.4.RELEASE + + org.springframework.boot spring-boot-starter 1.5.8.RELEASE + + org.hsqldb + hsqldb + 2.4.0 + runtime + + - + + core-java + + + src/main/resources + true + + - - core-java - - - src/main/resources - true - - + - + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*LiveTest.java + **/*IntegrationTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + + true + + - - org.apache.maven.plugins - maven-surefire-plugin - - - **/*LiveTest.java - **/*IntegrationTest.java - **/*LongRunningUnitTest.java - **/*ManualTest.java - + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + prepare-package + + copy-dependencies + + + ${project.build.directory}/libs + + + + - - + + org.apache.maven.plugins + maven-jar-plugin + + + + true + libs/ + org.baeldung.executable.ExecutableMavenJar + + + + - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-dependencies - prepare-package - - copy-dependencies - - - ${project.build.directory}/libs - - - - + + org.apache.maven.plugins + maven-assembly-plugin + + + package + + single + + + ${project.basedir} + + + org.baeldung.executable.ExecutableMavenJar + + + + jar-with-dependencies + + + + + - - org.apache.maven.plugins - maven-jar-plugin - - - - true - libs/ - org.baeldung.executable.ExecutableMavenJar - - - - + + org.apache.maven.plugins + maven-shade-plugin + + + + shade + + + true + + + org.baeldung.executable.ExecutableMavenJar + + + + + + - - org.apache.maven.plugins - maven-assembly-plugin - - - package - - single - - - ${project.basedir} - - - org.baeldung.executable.ExecutableMavenJar - - - - jar-with-dependencies - - - - - + + com.jolira + onejar-maven-plugin + + + + org.baeldung.executable.ExecutableMavenJar + true + ${project.build.finalName}-onejar.${project.packaging} + + + one-jar + + + + - - org.apache.maven.plugins - maven-shade-plugin - - - - shade - - - true - - - org.baeldung.executable.ExecutableMavenJar - - - - - - + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + spring-boot + org.baeldung.executable.ExecutableMavenJar + + + + - - com.jolira - onejar-maven-plugin - - - - org.baeldung.executable.ExecutableMavenJar - true - ${project.build.finalName}-onejar.${project.packaging} - - - one-jar - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - spring-boot - org.baeldung.executable.ExecutableMavenJar - - - - - - - org.codehaus.mojo - exec-maven-plugin - 1.6.0 - - java - com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed - - -Xmx300m - -XX:+UseParallelGC - -classpath - - com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed - - - + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + java + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + -Xmx300m + -XX:+UseParallelGC + -classpath + + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.0.0-M1 + + 1.8 + 1.8 + + - + - + - - - integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*ManualTest.java - - - **/*IntegrationTest.java - - - - - - - json - - - - - org.codehaus.mojo - exec-maven-plugin + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*ManualTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + org.codehaus.mojo + exec-maven-plugin - - - run-benchmarks - - none - - exec - - - test - java - - -classpath - - org.openjdk.jmh.Main - .* - - - - - - - - - + + + run-benchmarks + + none + + exec + + + test + java + + -classpath + + org.openjdk.jmh.Main + .* + + + + + + + + + - - - 2.8.5 + + + 2.8.5 - - 1.7.21 - 1.1.7 + + 1.7.21 + 1.1.7 - - 22.0 - 3.5 - 1.55 - 1.10 - 3.6.1 - 1.0.3 - 2.5 - 4.1 - 4.01 - 0.4 - 1.8.7 - 1.16.12 - 4.6-b01 - 1.13 - 0.6.5 - 0.9.0 + + 22.0 + 3.5 + 1.55 + 1.10 + 3.6.1 + 1.0.3 + 2.5 + 4.1 + 4.01 + 0.4 + 1.8.7 + 1.16.12 + 4.6-b01 + 1.13 + 0.6.5 + 0.9.0 + + + 1.3 + 4.12 + 2.8.9 + 3.6.1 + 1.7.0 - - 1.3 - 4.12 - 2.8.9 - 3.6.1 - 1.7.0 - - - 3.6.0 - 2.19.1 - + + 3.7.0 + 2.19.1 + \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/array/ArrayBenchmarkRunner.java b/core-java/src/main/java/com/baeldung/array/ArrayBenchmarkRunner.java new file mode 100644 index 0000000000..977587a06a --- /dev/null +++ b/core-java/src/main/java/com/baeldung/array/ArrayBenchmarkRunner.java @@ -0,0 +1,21 @@ +package com.baeldung.array; + +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +public class ArrayBenchmarkRunner { + + public static void main(String[] args) throws Exception { + + Options options = new OptionsBuilder() + .include(SearchArrayTest.class.getSimpleName()).threads(1) + .forks(1).shouldFailOnError(true).shouldDoGC(true) + .jvmArgs("-server").build(); + + new Runner(options).run(); + + + } + +} diff --git a/core-java/src/main/java/com/baeldung/array/ArrayInverter.java b/core-java/src/main/java/com/baeldung/array/ArrayInverter.java new file mode 100644 index 0000000000..86438baf1a --- /dev/null +++ b/core-java/src/main/java/com/baeldung/array/ArrayInverter.java @@ -0,0 +1,43 @@ +package com.baeldung.array; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.IntStream; + +import org.apache.commons.lang3.ArrayUtils; + +import com.google.common.collect.Lists; + +public class ArrayInverter { + + public void invertUsingFor(Object[] array) { + for (int i = 0; i < array.length / 2; i++) { + Object temp = array[i]; + array[i] = array[array.length - 1 - i]; + array[array.length - 1 - i] = temp; + } + } + + public void invertUsingCollectionsReverse(Object[] array) { + List list = Arrays.asList(array); + Collections.reverse(list); + } + + public Object[] invertUsingStreams(final Object[] array) { + return IntStream.rangeClosed(1, array.length) + .mapToObj(i -> array[array.length - i]) + .toArray(); + } + + public void invertUsingCommonsLang(Object[] array) { + ArrayUtils.reverse(array); + } + + public Object[] invertUsingGuava(Object[] array) { + List list = Arrays.asList(array); + List reverted = Lists.reverse(list); + return reverted.toArray(); + } + +} diff --git a/core-java/src/main/java/com/baeldung/array/SearchArrayTest.java b/core-java/src/main/java/com/baeldung/array/SearchArrayTest.java new file mode 100644 index 0000000000..199ebdf036 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/array/SearchArrayTest.java @@ -0,0 +1,96 @@ +package com.baeldung.array; + +import org.openjdk.jmh.annotations.*; + +import java.util.*; +import java.util.concurrent.TimeUnit; + +@BenchmarkMode(Mode.AverageTime) +@Warmup(iterations = 5) +@OutputTimeUnit(TimeUnit.MICROSECONDS) +public class SearchArrayTest { + + @State(Scope.Benchmark) + public static class SearchData { + static int count = 1000; + static String[] strings = seedArray(1000); + } + + + @Benchmark + public void searchArrayLoop() { + for (int i = 0; i < SearchData.count; i++) { + searchLoop(SearchData.strings, "T"); + } + } + + @Benchmark + public void searchArrayAllocNewList() { + for (int i = 0; i < SearchData.count; i++) { + searchList(SearchData.strings, "T"); + } + + } + + @Benchmark + public void searchArrayAllocNewSet() { + for (int i = 0; i < SearchData.count; i++) { + searchSet(SearchData.strings, "T"); + } + } + + + @Benchmark + public void searchArrayReuseList() { + List asList = Arrays.asList(SearchData.strings); + for (int i = 0; i < SearchData.count; i++) { + asList.contains("T"); + } + } + + + @Benchmark + public void searchArrayReuseSet() { + Set asSet = new HashSet<>(Arrays.asList(SearchData.strings)); + for (int i = 0; i < SearchData.count; i++) { + asSet.contains("T"); + } + } + + + @Benchmark + public void searchArrayBinarySearch() { + Arrays.sort(SearchData.strings); + for (int i = 0; i < SearchData.count; i++) { + Arrays.binarySearch(SearchData.strings, "T"); + } + } + + private boolean searchList(String[] strings, String searchString) { + return Arrays.asList(strings).contains(searchString); + } + + private boolean searchSet(String[] strings, String searchString) { + Set set = new HashSet<>(Arrays.asList(strings)); + return set.contains(searchString); + } + + private boolean searchLoop(String[] strings, String searchString) { + for (String s : strings) { + if (s.equals(searchString)) + return true; + } + return false; + } + + private static String[] seedArray(int length) { + String[] strings = new String[length]; + Random random = new Random(); + for (int i = 0; i < length; i++) + { + strings[i] = String.valueOf(random.nextInt()); + } + return strings; + } + +} diff --git a/core-java/src/main/java/com/baeldung/cipher/Encryptor.java b/core-java/src/main/java/com/baeldung/cipher/Encryptor.java new file mode 100644 index 0000000000..901975a5d6 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/cipher/Encryptor.java @@ -0,0 +1,35 @@ +package com.baeldung.cipher; + +import javax.crypto.*; +import javax.crypto.spec.SecretKeySpec; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.Certificate; + +public class Encryptor { + + public byte[] encryptMessage(byte[] message, byte[] keyBytes) throws InvalidKeyException, NoSuchPaddingException, NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException { + Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); + SecretKey secretKey = new SecretKeySpec(keyBytes, "AES"); + cipher.init(Cipher.ENCRYPT_MODE, secretKey); + byte[] encryptedMessage = cipher.doFinal(message); + return encryptedMessage; + } + + public byte[] encryptMessage(byte[] message, Certificate publicKeyCertificate) throws InvalidKeyException, NoSuchPaddingException, NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException { + Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); + cipher.init(Cipher.ENCRYPT_MODE, publicKeyCertificate); + byte[] encryptedMessage = cipher.doFinal(message); + return encryptedMessage; + } + + public byte[] decryptMessage(byte[] encryptedMessage, byte[] keyBytes) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException { + Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); + SecretKey secretKey = new SecretKeySpec(keyBytes, "AES"); + cipher.init(Cipher.DECRYPT_MODE, secretKey); + byte[] clearMessage = cipher.doFinal(encryptedMessage); + return clearMessage; + } + + +} diff --git a/core-java/src/main/java/com/baeldung/finalize/CloseableResource.java b/core-java/src/main/java/com/baeldung/finalize/CloseableResource.java new file mode 100644 index 0000000000..d286570fbc --- /dev/null +++ b/core-java/src/main/java/com/baeldung/finalize/CloseableResource.java @@ -0,0 +1,30 @@ +package com.baeldung.finalize; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +public class CloseableResource implements AutoCloseable { + private BufferedReader reader; + + public CloseableResource() { + InputStream input = this.getClass().getClassLoader().getResourceAsStream("file.txt"); + reader = new BufferedReader(new InputStreamReader(input)); + } + + public String readFirstLine() throws IOException { + String firstLine = reader.readLine(); + return firstLine; + } + + @Override + public void close() { + try { + reader.close(); + System.out.println("Closed BufferedReader in the close method"); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/core-java/src/main/java/com/baeldung/finalize/Finalizable.java b/core-java/src/main/java/com/baeldung/finalize/Finalizable.java new file mode 100644 index 0000000000..cfc6616f5c --- /dev/null +++ b/core-java/src/main/java/com/baeldung/finalize/Finalizable.java @@ -0,0 +1,30 @@ +package com.baeldung.finalize; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +public class Finalizable { + private BufferedReader reader; + + public Finalizable() { + InputStream input = this.getClass().getClassLoader().getResourceAsStream("file.txt"); + reader = new BufferedReader(new InputStreamReader(input)); + } + + public String readFirstLine() throws IOException { + String firstLine = reader.readLine(); + return firstLine; + } + + @Override + public void finalize() { + try { + reader.close(); + System.out.println("Closed BufferedReader in the finalizer"); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/core-java/src/main/java/com/baeldung/initializationguide/User.java b/core-java/src/main/java/com/baeldung/initializationguide/User.java new file mode 100644 index 0000000000..e2e3f051dd --- /dev/null +++ b/core-java/src/main/java/com/baeldung/initializationguide/User.java @@ -0,0 +1,53 @@ +package com.baeldung.initializationguide; + +import java.io.Serializable; + +public class User implements Serializable, Cloneable { + private static final long serialVersionUID = 1L; + static String forum; + private String name; + private int id; + + { + id = 0; + System.out.println("Instance Initializer"); + } + + static { + forum = "Java"; + System.out.println("Static Initializer"); + } + + public User(String name, int id) { + super(); + this.name = name; + this.id = id; + } + + public User() { + System.out.println("Constructor"); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + @Override + protected Object clone() throws CloneNotSupportedException { + return this; + } + +} + diff --git a/core-java/src/main/java/com/baeldung/interfaces/CommaSeparatedCustomers.java b/core-java/src/main/java/com/baeldung/interfaces/CommaSeparatedCustomers.java new file mode 100644 index 0000000000..29ed2d3d26 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/interfaces/CommaSeparatedCustomers.java @@ -0,0 +1,21 @@ +package com.baeldung.interfaces; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class CommaSeparatedCustomers implements Customer.List { + + private List customers = new ArrayList(); + + @Override + public void Add(Customer customer) { + customers.add(customer); + } + + @Override + public String getCustomerNames() { + return customers.stream().map(customer -> customer.getName()).collect(Collectors.joining(",")); + } + +} diff --git a/core-java/src/main/java/com/baeldung/interfaces/Customer.java b/core-java/src/main/java/com/baeldung/interfaces/Customer.java new file mode 100644 index 0000000000..d2f2b48074 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/interfaces/Customer.java @@ -0,0 +1,19 @@ +package com.baeldung.interfaces; + +public class Customer { + public interface List { + void Add(Customer customer); + + String getCustomerNames(); + } + + private String name; + + public Customer(String name) { + this.name = name; + } + + String getName() { + return name; + } +} diff --git a/core-java/src/main/java/com/baeldung/iteratorguide/IteratorGuide.java b/core-java/src/main/java/com/baeldung/iteratorguide/IteratorGuide.java new file mode 100644 index 0000000000..447f588fed --- /dev/null +++ b/core-java/src/main/java/com/baeldung/iteratorguide/IteratorGuide.java @@ -0,0 +1,39 @@ +package com.baeldung.iteratorguide; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; + +public class IteratorGuide { + + public static void main(String[] args) { + List items = new ArrayList<>(); + items.add("ONE"); + items.add("TWO"); + items.add("THREE"); + Iterator iter = items.iterator(); + while (iter.hasNext()) { + String next = iter.next(); + System.out.println(next); + iter.remove(); + } + ListIterator listIterator = items.listIterator(); + while(listIterator.hasNext()) { + String nextWithIndex = items.get(listIterator.nextIndex()); + String next = listIterator.next(); + if( "ONE".equals(next)) { + listIterator.set("SWAPPED"); + } + } + listIterator.add("FOUR"); + while(listIterator.hasPrevious()) { + String previousWithIndex = items.get(listIterator.previousIndex()); + String previous = listIterator.previous(); + System.out.println(previous); + } + listIterator.forEachRemaining(e -> { + System.out.println(e); + }); + } +} diff --git a/core-java/src/main/java/com/baeldung/javadoc/Person.java b/core-java/src/main/java/com/baeldung/javadoc/Person.java new file mode 100644 index 0000000000..5efb410de4 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/javadoc/Person.java @@ -0,0 +1,22 @@ +package com.baeldung.javadoc; + +public class Person { + /** + * This is a first name + */ + private String firstName; + private String lastName; + + public String getFirstName() { + return firstName; + } + public void setFirstName(String firstName) { + this.firstName = firstName; + } + public String getLastName() { + return lastName; + } + public void setLastName(String lastName) { + this.lastName = lastName; + } +} diff --git a/core-java/src/main/java/com/baeldung/javadoc/SuperHero.java b/core-java/src/main/java/com/baeldung/javadoc/SuperHero.java new file mode 100644 index 0000000000..029a779cdb --- /dev/null +++ b/core-java/src/main/java/com/baeldung/javadoc/SuperHero.java @@ -0,0 +1,64 @@ +package com.baeldung.javadoc; + +/** + * Hero is the main entity we will be using to . . . + * @author Captain America + * + */ +public class SuperHero extends Person { + + /** + * The public name of a hero that is common knowledge + */ + private String heroName; + private String uniquePower; + private int health; + private int defense; + + /** + *

This is a simple description of the method. . . + * Superman! + *

+ * @param incomingDamage the amount of incoming damage + * @return the amount of health hero has after attack + * @see HERO-402 + * @since 1.0 + */ + public int successfullyAttacked(int incomingDamage, String damageType) { + // do things + return 0; + } + + public String getHeroName() { + return heroName; + } + + public void setHeroName(String heroName) { + this.heroName = heroName; + } + + public String getUniquePower() { + return uniquePower; + } + + public void setUniquePower(String uniquePower) { + this.uniquePower = uniquePower; + } + + public int getHealth() { + return health; + } + + public void setHealth(int health) { + this.health = health; + } + + public int getDefense() { + return defense; + } + + public void setDefense(int defense) { + this.defense = defense; + } + +} diff --git a/core-java/src/main/java/com/baeldung/jdbc/BatchProcessing.java b/core-java/src/main/java/com/baeldung/jdbc/BatchProcessing.java new file mode 100644 index 0000000000..d5c53c3ffc --- /dev/null +++ b/core-java/src/main/java/com/baeldung/jdbc/BatchProcessing.java @@ -0,0 +1,96 @@ +package com.baeldung.jdbc; + +import java.sql.*; +import java.util.UUID; + +public class BatchProcessing { + + private final String[] EMPLOYEES = new String[]{"Zuck","Mike","Larry","Musk","Steve"}; + private final String[] DESIGNATIONS = new String[]{"CFO","CSO","CTO","CEO","CMO"}; + private final String[] ADDRESSES = new String[]{"China","York","Diego","Carolina","India"}; + + private Connection connection; + + public void getConnection(){ + try { + Class.forName("org.hsqldb.jdbcDriver"); + connection = DriverManager.getConnection("jdbc:hsqldb:file:C:\\EMPLOYEEDB", "SA", ""); + connection.setAutoCommit(false); + } catch (Exception e) { + e.printStackTrace(System.out); + } + } + + public void createTables(){ + try { + connection.createStatement().executeUpdate("create table EMPLOYEE (ID VARCHAR(36), NAME VARCHAR(45), DESIGNATION VARCHAR(15))"); + connection.createStatement().executeUpdate("create table EMP_ADDRESS (ID VARCHAR(36), EMP_ID VARCHAR(36), ADDRESS VARCHAR(45))"); + System.out.println("Tables Created!!!"); + } catch (SQLException e) { + e.printStackTrace(System.out); + } + } + + public void useStatement(){ + try { + String insertEmployeeSQL = "INSERT INTO EMPLOYEE(ID, NAME, DESIGNATION) VALUES ('%s','%s','%s');"; + String insertEmployeeAddrSQL = "INSERT INTO EMP_ADDRESS(ID, EMP_ID, ADDRESS) VALUES ('%s','%s','%s');"; + Statement statement = connection.createStatement(); + for(int i = 0; i < EMPLOYEES.length; i++){ + String employeeId = UUID.randomUUID().toString(); + statement.addBatch(String.format(insertEmployeeSQL, employeeId, EMPLOYEES[i],DESIGNATIONS[i])); + statement.addBatch(String.format(insertEmployeeAddrSQL, UUID.randomUUID().toString(),employeeId,ADDRESSES[i])); + } + statement.executeBatch(); + connection.commit(); + } catch (Exception e) { + try { + connection.rollback(); + } catch (SQLException ex) { + System.out.println("Error during rollback"); + System.out.println(ex.getMessage()); + } + e.printStackTrace(System.out); + } + } + + public void usePreparedStatement(){ + try { + String insertEmployeeSQL = "INSERT INTO EMPLOYEE(ID, NAME, DESIGNATION) VALUES (?,?,?);"; + String insertEmployeeAddrSQL = "INSERT INTO EMP_ADDRESS(ID, EMP_ID, ADDRESS) VALUES (?,?,?);"; + PreparedStatement employeeStmt = connection.prepareStatement(insertEmployeeSQL); + PreparedStatement empAddressStmt = connection.prepareStatement(insertEmployeeAddrSQL); + for(int i = 0; i < EMPLOYEES.length; i++){ + String employeeId = UUID.randomUUID().toString(); + employeeStmt.setString(1,employeeId); + employeeStmt.setString(2,EMPLOYEES[i]); + employeeStmt.setString(3,DESIGNATIONS[i]); + employeeStmt.addBatch(); + + empAddressStmt.setString(1,UUID.randomUUID().toString()); + empAddressStmt.setString(2,employeeId); + empAddressStmt.setString(3,ADDRESSES[i]); + empAddressStmt.addBatch(); + } + employeeStmt.executeBatch(); + empAddressStmt.executeBatch(); + connection.commit(); + } catch (Exception e) { + try { + connection.rollback(); + } catch (SQLException ex) { + System.out.println("Error during rollback"); + System.out.println(ex.getMessage()); + } + e.printStackTrace(System.out); + } + } + + public static void main(String[] args) { + BatchProcessing batchProcessing = new BatchProcessing(); + batchProcessing.getConnection(); + batchProcessing.createTables(); + batchProcessing.useStatement(); + batchProcessing.usePreparedStatement(); + } +} diff --git a/core-java/src/main/java/com/baeldung/polymorphism/GenericFile.java b/core-java/src/main/java/com/baeldung/polymorphism/GenericFile.java index 4075083c49..85acbc5be0 100644 --- a/core-java/src/main/java/com/baeldung/polymorphism/GenericFile.java +++ b/core-java/src/main/java/com/baeldung/polymorphism/GenericFile.java @@ -54,7 +54,7 @@ public class GenericFile { } public String getFileInfo() { - return "File Name: " + this.getName() + "\n" + "Extension: " + this.getExtension() + "\n" + "Date Created: " + this.getDateCreated() + "\n" + "Version: " + this.getVersion() + "\n"; + return "Generic File Impl"; } public Object read() { diff --git a/core-java/src/main/java/com/baeldung/polymorphism/ImageFile.java b/core-java/src/main/java/com/baeldung/polymorphism/ImageFile.java index ac72a40993..54eb24af5e 100644 --- a/core-java/src/main/java/com/baeldung/polymorphism/ImageFile.java +++ b/core-java/src/main/java/com/baeldung/polymorphism/ImageFile.java @@ -30,7 +30,7 @@ public class ImageFile extends GenericFile { } public String getFileInfo() { - return super.getFileInfo() + "Height: " + this.getHeight() + "\n" + "Width: " + this.getWidth(); + return "Image File Impl"; } public String read() { diff --git a/core-java/src/main/java/com/baeldung/polymorphism/TextFile.java b/core-java/src/main/java/com/baeldung/polymorphism/TextFile.java index 8280b4ee95..0103291c5a 100644 --- a/core-java/src/main/java/com/baeldung/polymorphism/TextFile.java +++ b/core-java/src/main/java/com/baeldung/polymorphism/TextFile.java @@ -21,7 +21,7 @@ public class TextFile extends GenericFile { } public String getFileInfo() { - return super.getFileInfo() + "Word Count: " + wordCount; + return "Text File Impl"; } public String read() { diff --git a/core-java/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java b/core-java/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java new file mode 100644 index 0000000000..3e85bf13bb --- /dev/null +++ b/core-java/src/main/java/com/baeldung/regexp/datepattern/DateMatcher.java @@ -0,0 +1,7 @@ +package com.baeldung.regexp.datepattern; + +public interface DateMatcher { + + boolean matches(String date); + +} diff --git a/core-java/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java b/core-java/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java new file mode 100644 index 0000000000..1d3a609b55 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/regexp/datepattern/FormattedDateMatcher.java @@ -0,0 +1,14 @@ +package com.baeldung.regexp.datepattern; + +import java.util.regex.Pattern; + +class FormattedDateMatcher implements DateMatcher { + + private static final Pattern DATE_PATTERN = Pattern.compile( + "^\\d{4}-\\d{2}-\\d{2}$"); + + @Override + public boolean matches(String date) { + return DATE_PATTERN.matcher(date).matches(); + } +} diff --git a/core-java/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java b/core-java/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java new file mode 100644 index 0000000000..af4e183fef --- /dev/null +++ b/core-java/src/main/java/com/baeldung/regexp/datepattern/RangedDateMatcher.java @@ -0,0 +1,14 @@ +package com.baeldung.regexp.datepattern; + +import java.util.regex.Pattern; + +class RangedDateMatcher implements DateMatcher { + + private static final Pattern DATE_PATTERN = Pattern.compile( + "^((19|2[0-9])[0-9]{2})-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$"); + + @Override + public boolean matches(String date) { + return DATE_PATTERN.matcher(date).matches(); + } +} diff --git a/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java b/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java new file mode 100644 index 0000000000..b0243ae48f --- /dev/null +++ b/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcher.java @@ -0,0 +1,16 @@ +package com.baeldung.regexp.datepattern.gregorian; + +import com.baeldung.regexp.datepattern.DateMatcher; + +import java.util.regex.Pattern; + +public class February29thMatcher implements DateMatcher { + + private static final Pattern DATE_PATTERN = Pattern.compile( + "^((2000|2400|2800|(19|2[0-9](0[48]|[2468][048]|[13579][26])))-02-29)$"); + + @Override + public boolean matches(String date) { + return DATE_PATTERN.matcher(date).matches(); + } +} diff --git a/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java b/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java new file mode 100644 index 0000000000..f294348928 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcher.java @@ -0,0 +1,16 @@ +package com.baeldung.regexp.datepattern.gregorian; + +import com.baeldung.regexp.datepattern.DateMatcher; + +import java.util.regex.Pattern; + +public class FebruaryGeneralMatcher implements DateMatcher { + + private static final Pattern DATE_PATTERN = Pattern.compile( + "^(((19|2[0-9])[0-9]{2})-02-(0[1-9]|1[0-9]|2[0-8]))$"); + + @Override + public boolean matches(String date) { + return DATE_PATTERN.matcher(date).matches(); + } +} diff --git a/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java b/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java new file mode 100644 index 0000000000..fc8abdb201 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcher.java @@ -0,0 +1,19 @@ +package com.baeldung.regexp.datepattern.gregorian; + +import com.baeldung.regexp.datepattern.DateMatcher; + +import java.util.regex.Pattern; + +class GregorianDateMatcher implements DateMatcher { + + private static final Pattern DATE_PATTERN = Pattern.compile( + "^((2000|2400|2800|(19|2[0-9](0[48]|[2468][048]|[13579][26])))-02-29)$" + + "|^(((19|2[0-9])[0-9]{2})-02-(0[1-9]|1[0-9]|2[0-8]))$" + + "|^(((19|2[0-9])[0-9]{2})-(0[13578]|10|12)-(0[1-9]|[12][0-9]|3[01]))$" + + "|^(((19|2[0-9])[0-9]{2})-(0[469]|11)-(0[1-9]|[12][0-9]|30))$"); + + @Override + public boolean matches(String date) { + return DATE_PATTERN.matcher(date).matches(); + } +} diff --git a/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java b/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java new file mode 100644 index 0000000000..be202081e8 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcher.java @@ -0,0 +1,17 @@ +package com.baeldung.regexp.datepattern.gregorian; + +import com.baeldung.regexp.datepattern.DateMatcher; + +import java.util.regex.Pattern; + +public class MonthsOf30DaysMatcher implements DateMatcher { + + private static final Pattern DATE_PATTERN = Pattern.compile( + "^(((19|2[0-9])[0-9]{2})-(0[469]|11)-(0[1-9]|[12][0-9]|30))$"); + + @Override + public boolean matches(String date) { + return DATE_PATTERN.matcher(date).matches(); + } + +} diff --git a/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java b/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java new file mode 100644 index 0000000000..7f0943991b --- /dev/null +++ b/core-java/src/main/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcher.java @@ -0,0 +1,17 @@ +package com.baeldung.regexp.datepattern.gregorian; + +import com.baeldung.regexp.datepattern.DateMatcher; + +import java.util.regex.Pattern; + +public class MonthsOf31DaysMatcher implements DateMatcher { + + private static final Pattern DATE_PATTERN = Pattern.compile( + "^(((19|2[0-9])[0-9]{2})-(0[13578]|10|12)-(0[1-9]|[12][0-9]|3[01]))$"); + + @Override + public boolean matches(String date) { + return DATE_PATTERN.matcher(date).matches(); + } + +} diff --git a/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java b/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java index a9f055f8f4..d2f9f0459c 100644 --- a/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java +++ b/core-java/src/main/java/com/baeldung/socket/EchoMultiServer.java @@ -16,7 +16,7 @@ public class EchoMultiServer { try { serverSocket = new ServerSocket(port); while (true) - new EchoClientHandler(serverSocket.accept()).run(); + new EchoClientHandler(serverSocket.accept()).start(); } catch (IOException e) { e.printStackTrace(); diff --git a/core-java/src/main/java/com/baeldung/staticclass/Pizza.java b/core-java/src/main/java/com/baeldung/staticclass/Pizza.java new file mode 100644 index 0000000000..ee6283cee1 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/staticclass/Pizza.java @@ -0,0 +1,33 @@ +package com.baeldung.staticclass; + +public class Pizza { + + private static String cookedCount; + private boolean isThinCrust; + + // Accessible globally + public static class PizzaSalesCounter { + + private static String orderedCount; + public static String deliveredCount; + + PizzaSalesCounter() { + System.out.println("Static field of enclosing class is " + + Pizza.cookedCount); + System.out.println("Non-static field of enclosing class is " + + new Pizza().isThinCrust); + } + } + + Pizza() { + System.out.println("Non private static field of static class is " + + PizzaSalesCounter.deliveredCount); + System.out.println("Private static field of static class is " + + PizzaSalesCounter.orderedCount); + } + + public static void main(String[] a) { + // Create instance of the static class without an instance of enclosing class + new Pizza.PizzaSalesCounter(); + } +} diff --git a/core-java/src/main/java/com/baeldung/threadlocalrandom/ThreadLocalRandomBenchMarkRunner.java b/core-java/src/main/java/com/baeldung/threadlocalrandom/ThreadLocalRandomBenchMarkRunner.java new file mode 100644 index 0000000000..e9c8056ff5 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/threadlocalrandom/ThreadLocalRandomBenchMarkRunner.java @@ -0,0 +1,22 @@ +package com.baeldung.threadlocalrandom; + +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +public class ThreadLocalRandomBenchMarkRunner { + + public static void main(String[] args) throws Exception { + + Options options = new OptionsBuilder().include(ThreadLocalRandomBenchMarker.class.getSimpleName()) + .threads(1) + .forks(1) + .shouldFailOnError(true) + .shouldDoGC(true) + .jvmArgs("-server") + .build(); + + new Runner(options).run(); + + } +} diff --git a/core-java/src/main/java/com/baeldung/threadlocalrandom/ThreadLocalRandomBenchMarker.java b/core-java/src/main/java/com/baeldung/threadlocalrandom/ThreadLocalRandomBenchMarker.java new file mode 100644 index 0000000000..8a0e2d2826 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/threadlocalrandom/ThreadLocalRandomBenchMarker.java @@ -0,0 +1,64 @@ +package com.baeldung.threadlocalrandom; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadLocalRandom; +import java.util.concurrent.TimeUnit; + +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; + +@BenchmarkMode(Mode.AverageTime) +@Warmup(iterations = 1) +@OutputTimeUnit(TimeUnit.MICROSECONDS) +@State(Scope.Benchmark) +public class ThreadLocalRandomBenchMarker { + + List> randomCallables = new ArrayList<>(); + List> threadLocalRandomCallables = new ArrayList<>(); + + @Setup(Level.Iteration) + public void init() { + Random random = new Random(); + randomCallables = new ArrayList<>(); + threadLocalRandomCallables = new ArrayList<>(); + for (int i = 0; i < 1000; i++) { + randomCallables.add(() -> { + return random.nextInt(); + }); + } + + for (int i = 0; i < 1000; i++) { + threadLocalRandomCallables.add(() -> { + return ThreadLocalRandom.current() + .nextInt(); + }); + } + } + + @Benchmark + public void randomValuesUsingRandom() throws InterruptedException { + ExecutorService executor = Executors.newWorkStealingPool(); + executor.invokeAll(randomCallables); + executor.shutdown(); + } + + @Benchmark + public void randomValuesUsingThreadLocalRandom() throws InterruptedException { + ExecutorService executor = Executors.newWorkStealingPool(); + executor.invokeAll(threadLocalRandomCallables); + executor.shutdown(); + } + +} diff --git a/core-java/src/main/java/com/baeldung/tree/BinaryTree.java b/core-java/src/main/java/com/baeldung/tree/BinaryTree.java new file mode 100644 index 0000000000..e3179dca32 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/tree/BinaryTree.java @@ -0,0 +1,161 @@ +package com.baeldung.tree; + +import java.util.LinkedList; +import java.util.Queue; + +public class BinaryTree { + + Node root; + + public void add(int value) { + root = addRecursive(root, value); + } + + private Node addRecursive(Node current, int value) { + + if (current == null) { + return new Node(value); + } + + if (value < current.value) { + current.left = addRecursive(current.left, value); + } else if (value > current.value) { + current.right = addRecursive(current.right, value); + } + + return current; + } + + public boolean isEmpty() { + return root == null; + } + + public int getSize() { + return getSizeRecursive(root); + } + + private int getSizeRecursive(Node current) { + return current == null ? 0 : getSizeRecursive(current.left) + 1 + getSizeRecursive(current.right); + } + + public boolean containsNode(int value) { + return containsNodeRecursive(root, value); + } + + private boolean containsNodeRecursive(Node current, int value) { + if (current == null) { + return false; + } + + if (value == current.value) { + return true; + } + + return value < current.value + ? containsNodeRecursive(current.left, value) + : containsNodeRecursive(current.right, value); + } + + public void delete(int value) { + deleteRecursive(root, value); + } + + private Node deleteRecursive(Node current, int value) { + if (current == null) { + return null; + } + + if (value == current.value) { + // Case 1: no children + if (current.left == null && current.right == null) { + return null; + } + + // Case 2: only 1 child + if (current.right == null) { + return current.left; + } + + if (current.left == null) { + return current.right; + } + + // Case 3: 2 children + int smallestValue = findSmallestValue(current.right); + current.value = smallestValue; + current.right = deleteRecursive(current.right, smallestValue); + return current; + } + if (value < current.value) { + current.left = deleteRecursive(current.left, value); + return current; + } + + current.right = deleteRecursive(current.right, value); + return current; + } + + private int findSmallestValue(Node root) { + return root.left == null ? root.value : findSmallestValue(root.left); + } + + public void traverseInOrder(Node node) { + if (node != null) { + traverseInOrder(node.left); + System.out.print(" " + node.value); + traverseInOrder(node.right); + } + } + + public void traversePreOrder(Node node) { + if (node != null) { + System.out.print(" " + node.value); + traversePreOrder(node.left); + traversePreOrder(node.right); + } + } + + public void traversePostOrder(Node node) { + if (node != null) { + traversePostOrder(node.left); + traversePostOrder(node.right); + System.out.print(" " + node.value); + } + } + + public void traverseLevelOrder() { + if (root == null) { + return; + } + + Queue nodes = new LinkedList<>(); + nodes.add(root); + + while (!nodes.isEmpty()) { + + Node node = nodes.remove(); + + System.out.print(" " + node.value); + + if (node.left != null) { + nodes.add(node.left); + } + + if (node.left != null) { + nodes.add(node.right); + } + } + } + + class Node { + int value; + Node left; + Node right; + + Node(int value) { + this.value = value; + right = null; + left = null; + } + } +} diff --git a/core-java/src/main/java/com/baeldung/trie/Trie.java b/core-java/src/main/java/com/baeldung/trie/Trie.java new file mode 100644 index 0000000000..dd51d97b2d --- /dev/null +++ b/core-java/src/main/java/com/baeldung/trie/Trie.java @@ -0,0 +1,62 @@ +package com.baeldung.trie; + +public class Trie { + private TrieNode root; + + Trie() { + root = new TrieNode(); + } + + public void insert(String word) { + TrieNode current = root; + + for (int i = 0; i < word.length(); i++) { + current = current.getChildren().computeIfAbsent(word.charAt(i), c -> new TrieNode()); + } + current.setEndOfWord(true); + } + + public boolean delete(String word) { + return delete(root, word, 0); + } + + public boolean containsNode(String word) { + TrieNode current = root; + + for (int i = 0; i < word.length(); i++) { + char ch = word.charAt(i); + TrieNode node = current.getChildren().get(ch); + if (node == null) { + return false; + } + current = node; + } + return current.isEndOfWord(); + } + + public boolean isEmpty() { + return root == null; + } + + private boolean delete(TrieNode current, String word, int index) { + if (index == word.length()) { + if (!current.isEndOfWord()) { + return false; + } + current.setEndOfWord(false); + return current.getChildren().isEmpty(); + } + char ch = word.charAt(index); + TrieNode node = current.getChildren().get(ch); + if (node == null) { + return false; + } + boolean shouldDeleteCurrentNode = delete(node, word, index + 1); + + if (shouldDeleteCurrentNode) { + current.getChildren().remove(ch); + return current.getChildren().isEmpty(); + } + return false; + } +} \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/trie/TrieNode.java b/core-java/src/main/java/com/baeldung/trie/TrieNode.java new file mode 100644 index 0000000000..25dc753950 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/trie/TrieNode.java @@ -0,0 +1,31 @@ +package com.baeldung.trie; + +import java.util.HashMap; +import java.util.Map; + +class TrieNode { + private Map children; + private boolean endOfWord; + + public TrieNode() { + children = new HashMap<>(); + endOfWord = false; + } + + public Map getChildren() { + return children; + } + + public void setChildren(Map children) { + this.children = children; + } + + public boolean isEndOfWord() { + return endOfWord; + } + + public void setEndOfWord(boolean endOfWord) { + this.endOfWord = endOfWord; + } + +} \ No newline at end of file diff --git a/core-java/src/main/resources/countries.properties b/core-java/src/main/resources/countries.properties index e743b5a40b..50b5e85653 100644 --- a/core-java/src/main/resources/countries.properties +++ b/core-java/src/main/resources/countries.properties @@ -1,3 +1,3 @@ -UK -US -Germany +UK +US +Germany \ No newline at end of file diff --git a/core-java/src/main/resources/fileTest.txt b/core-java/src/main/resources/fileTest.txt deleted file mode 100644 index ce4bea208b..0000000000 --- a/core-java/src/main/resources/fileTest.txt +++ /dev/null @@ -1 +0,0 @@ -Hello World from fileTest.txt!!! \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/array/ArrayInverterUnitTest.java b/core-java/src/test/java/com/baeldung/array/ArrayInverterUnitTest.java new file mode 100644 index 0000000000..ca59ee51fb --- /dev/null +++ b/core-java/src/test/java/com/baeldung/array/ArrayInverterUnitTest.java @@ -0,0 +1,49 @@ +package com.baeldung.array; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; + +public class ArrayInverterUnitTest { + + private String[] fruits = { "apples", "tomatoes", "bananas", "guavas", "pineapples", "oranges" }; + + @Test + public void invertArrayWithForLoop() { + ArrayInverter inverter = new ArrayInverter(); + inverter.invertUsingFor(fruits); + + assertThat(new String[] { "oranges", "pineapples", "guavas", "bananas", "tomatoes", "apples" }).isEqualTo(fruits); + } + + @Test + public void invertArrayWithCollectionsReverse() { + ArrayInverter inverter = new ArrayInverter(); + inverter.invertUsingCollectionsReverse(fruits); + + assertThat(new String[] { "oranges", "pineapples", "guavas", "bananas", "tomatoes", "apples" }).isEqualTo(fruits); + } + + @Test + public void invertArrayWithStreams() { + ArrayInverter inverter = new ArrayInverter(); + + assertThat(new String[] { "oranges", "pineapples", "guavas", "bananas", "tomatoes", "apples" }).isEqualTo(inverter.invertUsingStreams(fruits)); + } + + @Test + public void invertArrayWithCommonsLang() { + ArrayInverter inverter = new ArrayInverter(); + inverter.invertUsingCommonsLang(fruits); + + assertThat(new String[] { "oranges", "pineapples", "guavas", "bananas", "tomatoes", "apples" }).isEqualTo(fruits); + } + + @Test + public void invertArrayWithGuava() { + ArrayInverter inverter = new ArrayInverter(); + + assertThat(new String[] { "oranges", "pineapples", "guavas", "bananas", "tomatoes", "apples" }).isEqualTo(inverter.invertUsingGuava(fruits)); + } + +} diff --git a/core-java/src/test/java/com/baeldung/array/SearchArrayTest.java b/core-java/src/test/java/com/baeldung/array/SearchArrayTest.java deleted file mode 100644 index 94911baac9..0000000000 --- a/core-java/src/test/java/com/baeldung/array/SearchArrayTest.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.baeldung.array; - -import org.junit.Test; - -import java.util.*; - -public class SearchArrayTest { - - - @Test - public void searchArrayAllocNewCollections() { - - int count = 1000; - - String[] strings = seedArray(count); - - long startTime = System.nanoTime(); - for (int i = 0; i < count; i++) { - searchList(strings, "W"); - } - long duration = System.nanoTime() - startTime; - System.out.println("SearchList: " + duration / 10000); - - startTime = System.nanoTime(); - for (int i = 0; i < count; i++) { - searchSet(strings,"S"); - } - duration = System.nanoTime() - startTime; - System.out.println("SearchSet: " + duration / 10000); - - startTime = System.nanoTime(); - for (int i = 0; i < count; i++) { - searchLoop(strings, "T"); - } - duration = System.nanoTime() - startTime; - System.out.println("SearchLoop: " + duration / 10000); - } - - @Test - public void searchArrayReuseCollections() { - - int count = 10000; - String[] strings = seedArray(count); - - List asList = Arrays.asList(strings); - Set asSet = new HashSet<>(Arrays.asList(strings)); - - long startTime = System.nanoTime(); - for (int i = 0; i < count; i++) { - asList.contains("W"); - } - long duration = System.nanoTime() - startTime; - System.out.println("List: " + duration / 10000); - - startTime = System.nanoTime(); - for (int i = 0; i < count; i++) { - asSet.contains("S"); - } - duration = System.nanoTime() - startTime; - System.out.println("Set: " + duration / 10000); - - startTime = System.nanoTime(); - for (int i = 0; i < count; i++) { - searchLoop(strings, "T"); - } - duration = System.nanoTime() - startTime; - System.out.println("Loop: " + duration / 10000); - - } - - - @Test - public void searchArrayBinarySearch() { - - int count = 10000; - String[] strings = seedArray(count); - Arrays.sort(strings); - - long startTime = System.nanoTime(); - for (int i = 0; i < count; i++) { - Arrays.binarySearch(strings, "A"); - } - long duration = System.nanoTime() - startTime; - System.out.println("Binary search: " + duration / 10000); - - } - - private boolean searchList(String[] strings, String searchString) { - return Arrays.asList(strings).contains(searchString); - } - - private boolean searchSet(String[] strings, String searchString) { - Set set = new HashSet<>(Arrays.asList(strings)); - return set.contains(searchString); - } - - private boolean searchLoop(String[] strings, String searchString) { - for (String s : strings) { - if (s.equals(searchString)) - return true; - } - return false; - } - - private String[] seedArray(int length) { - - String[] strings = new String[length]; - Random random = new Random(); - for (int i = 0; i < length; i++) - { - strings[i] = String.valueOf(random.nextInt()); - } - return strings; - } - -} diff --git a/core-java/src/test/java/com/baeldung/cipher/EncryptorUnitTest.java b/core-java/src/test/java/com/baeldung/cipher/EncryptorUnitTest.java new file mode 100644 index 0000000000..ba8d2ed96f --- /dev/null +++ b/core-java/src/test/java/com/baeldung/cipher/EncryptorUnitTest.java @@ -0,0 +1,70 @@ +package com.baeldung.cipher; + + +import org.junit.Before; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; + +import static org.assertj.core.api.Assertions.assertThat; + +public class EncryptorUnitTest { + private String encKeyString; + private String message; + private String certificateString; + private Encryptor encryptor; + + @Before + public void init(){ + encKeyString = "1234567890123456"; + message = "This is a secret message"; + encryptor = new Encryptor(); + certificateString = "-----BEGIN CERTIFICATE-----\n" + + "MIICVjCCAb8CAg37MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG\n" + + "A1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE\n" + + "MRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl\n" + + "YiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw\n" + + "ODIyMDUyNzIzWhcNMTcwODIxMDUyNzIzWjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE\n" + + "CAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs\n" + + "ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYBBrx5PlP0WNI/ZdzD\n" + + "+6Pktmurn+F2kQYbtc7XQh8/LTBvCo+P6iZoLEmUA9e7EXLRxgU1CVqeAi7QcAn9\n" + + "MwBlc8ksFJHB0rtf9pmf8Oza9E0Bynlq/4/Kb1x+d+AyhL7oK9tQwB24uHOueHi1\n" + + "C/iVv8CSWKiYe6hzN1txYe8rAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAASPdjigJ\n" + + "kXCqKWpnZ/Oc75EUcMi6HztaW8abUMlYXPIgkV2F7YanHOB7K4f7OOLjiz8DTPFf\n" + + "jC9UeuErhaA/zzWi8ewMTFZW/WshOrm3fNvcMrMLKtH534JKvcdMg6qIdjTFINIr\n" + + "evnAhf0cwULaebn+lMs8Pdl7y37+sfluVok=\n" + + "-----END CERTIFICATE-----"; + } + + @Test + public void givenEncryptionKey_whenMessageIsPassedToEncryptor_thenMessageIsEncrypted() throws Exception { + byte[] encryptedMessage = encryptor.encryptMessage(message.getBytes(),encKeyString.getBytes()); + + assertThat(encryptedMessage).isNotNull(); + assertThat(encryptedMessage.length % 32).isEqualTo(0); + } + + @Test + public void givenCertificateWithPublicKey_whenMessageIsPassedToEncryptor_thenMessageIsEncrypted() throws Exception { + CertificateFactory factory = CertificateFactory.getInstance("X.509"); + InputStream is = new ByteArrayInputStream(certificateString.getBytes()); + X509Certificate certificate = (X509Certificate) factory.generateCertificate(is); + + byte[] encryptedMessage = encryptor.encryptMessage(message.getBytes(),certificate); + + assertThat(encryptedMessage).isNotNull(); + assertThat(encryptedMessage.length % 128).isEqualTo(0); + } + + @Test + public void givenEncryptionKey_whenMessageIsEncrypted_thenDecryptMessage() throws Exception{ + byte[] encryptedMessageBytes = encryptor.encryptMessage(message.getBytes(),encKeyString.getBytes()); + + byte[] clearMessageBytes = encryptor.decryptMessage(encryptedMessageBytes, encKeyString.getBytes()); + + assertThat(message).isEqualTo(new String(clearMessageBytes)); + } +} diff --git a/core-java/src/test/java/com/baeldung/collection/WhenComparingTreeMapVsHashMap.java b/core-java/src/test/java/com/baeldung/collection/WhenComparingTreeMapVsHashMap.java new file mode 100644 index 0000000000..f2dfc992c2 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/collection/WhenComparingTreeMapVsHashMap.java @@ -0,0 +1,60 @@ +package com.baeldung.collection; + +import java.util.ConcurrentModificationException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.TreeMap; + +import org.hamcrest.Matchers; +import org.junit.Assert; +import org.junit.Test; + +public class WhenComparingTreeMapVsHashMap { + + @Test + public void whenInsertObjectsTreeMap_thenNaturalOrder() { + Map treemap = new TreeMap<>(); + treemap.put(3, "TreeMap"); + treemap.put(2, "vs"); + treemap.put(1, "HashMap"); + Assert.assertThat(treemap.keySet(), Matchers.contains(1, 2, 3)); + } + + @Test(expected = NullPointerException.class) + public void whenInsertNullInTreeMap_thenException() { + Map treemap = new TreeMap<>(); + treemap.put(null, "NullPointerException"); + } + + @Test + public void whenInsertObjectsHashMap_thenRandomOrder() { + Map hashmap = new HashMap<>(); + hashmap.put(3, "TreeMap"); + hashmap.put(2, "vs"); + hashmap.put(1, "HashMap"); + Assert.assertThat(hashmap.keySet(), Matchers.containsInAnyOrder(1, 2, 3)); + } + + @Test + public void whenInsertNullInHashMap_thenInsertsNull() { + Map hashmap = new HashMap<>(); + hashmap.put(null, null); + Assert.assertNull(hashmap.get(null)); + } + + @Test + public void givenHashMapAndTreeMap_whenputDuplicates_thenOnlyUnique() { + Map treeMap = new HashMap<>(); + treeMap.put(1, "Baeldung"); + treeMap.put(1, "Baeldung"); + + Assert.assertTrue(treeMap.size() == 1); + + Map treeMap2 = new TreeMap<>(); + treeMap2.put(1, "Baeldung"); + treeMap2.put(1, "Baeldung"); + + Assert.assertTrue(treeMap2.size() == 1); + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/collection/WhenUsingTreeSet.java b/core-java/src/test/java/com/baeldung/collection/WhenUsingTreeSet.java new file mode 100644 index 0000000000..52d5b08813 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/collection/WhenUsingTreeSet.java @@ -0,0 +1,228 @@ +package com.baeldung.collection; + +import java.util.Comparator; +import java.util.ConcurrentModificationException; +import java.util.Iterator; +import java.util.NavigableSet; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.junit.Assert; +import org.junit.Test; + +public class WhenUsingTreeSet { + + private static class Element { + private Integer id; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + @Override + public String toString() { + return id.toString(); + } + } + + private Comparator comparator = (ele1, ele2) -> { + return ele1.getId() + .compareTo(ele2.getId()); + }; + + @Test + public void whenAddingElement_shouldAddElement() { + Set treeSet = new TreeSet<>(); + Assert.assertTrue(treeSet.add("String Added")); + } + + @Test + public void whenCheckingForElement_shouldSearchForElement() { + Set treeSetContains = new TreeSet<>(); + treeSetContains.add("String Added"); + Assert.assertTrue(treeSetContains.contains("String Added")); + } + + @Test + public void whenRemovingElement_shouldRemoveElement() { + Set removeFromTreeSet = new TreeSet<>(); + removeFromTreeSet.add("String Added"); + Assert.assertTrue(removeFromTreeSet.remove("String Added")); + } + + @Test + public void whenClearingTreeSet_shouldClearTreeSet() { + Set clearTreeSet = new TreeSet<>(); + clearTreeSet.add("String Added"); + clearTreeSet.clear(); + Assert.assertTrue(clearTreeSet.isEmpty()); + } + + @Test + public void whenCheckingTheSizeOfTreeSet_shouldReturnThesize() { + Set treeSetSize = new TreeSet<>(); + treeSetSize.add("String Added"); + Assert.assertEquals(1, treeSetSize.size()); + } + + @Test + public void whenCheckingForEmptyTreeSet_shouldCheckForEmpty() { + Set emptyTreeSet = new TreeSet<>(); + Assert.assertTrue(emptyTreeSet.isEmpty()); + } + + @Test + public void whenIteratingTreeSet_shouldIterateTreeSetInAscendingOrder() { + Set treeSet = new TreeSet<>(); + treeSet.add("First"); + treeSet.add("Second"); + treeSet.add("Third"); + Iterator itr = treeSet.iterator(); + while (itr.hasNext()) { + System.out.println(itr.next()); + } + } + + @Test + public void whenIteratingTreeSet_shouldIterateTreeSetInDescendingOrder() { + TreeSet treeSet = new TreeSet<>(); + treeSet.add("First"); + treeSet.add("Second"); + treeSet.add("Third"); + Iterator itr = treeSet.descendingIterator(); + while (itr.hasNext()) { + System.out.println(itr.next()); + } + } + + @Test(expected = ConcurrentModificationException.class) + public void whenModifyingTreeSetWhileIterating_shouldThrowException() { + Set treeSet = new TreeSet<>(); + treeSet.add("First"); + treeSet.add("Second"); + treeSet.add("Third"); + Iterator itr = treeSet.iterator(); + while (itr.hasNext()) { + itr.next(); + treeSet.remove("Second"); + } + } + + @Test + public void whenRemovingElementUsingIterator_shouldRemoveElement() { + Set treeSet = new TreeSet<>(); + treeSet.add("First"); + treeSet.add("Second"); + treeSet.add("Third"); + Iterator itr = treeSet.iterator(); + while (itr.hasNext()) { + String element = itr.next(); + if (element.equals("Second")) + itr.remove(); + } + Assert.assertEquals(2, treeSet.size()); + } + + @Test(expected = NullPointerException.class) + public void whenAddingNullToNonEmptyTreeSet_shouldThrowException() { + Set treeSet = new TreeSet<>(); + treeSet.add("First"); + treeSet.add(null); + } + + @Test + public void whenCheckingFirstElement_shouldReturnFirstElement() { + TreeSet treeSet = new TreeSet<>(); + treeSet.add("First"); + Assert.assertEquals("First", treeSet.first()); + } + + @Test + public void whenCheckingLastElement_shouldReturnLastElement() { + TreeSet treeSet = new TreeSet<>(); + treeSet.add("First"); + treeSet.add("Last"); + Assert.assertEquals("Last", treeSet.last()); + } + + @Test + public void whenUsingComparator_shouldSortAndInsertElements() { + Set treeSet = new TreeSet<>(comparator); + Element ele1 = new Element(); + ele1.setId(100); + Element ele2 = new Element(); + ele2.setId(200); + + treeSet.add(ele1); + treeSet.add(ele2); + + System.out.println(treeSet); + } + + @Test + public void whenUsingHeadSet_shouldReturnElementsLessThanSpecifiedElement() { + Set treeSet = new TreeSet<>(comparator); + Element ele1 = new Element(); + ele1.setId(100); + Element ele2 = new Element(); + ele2.setId(200); + + treeSet.add(ele1); + treeSet.add(ele2); + + System.out.println(treeSet); + } + + @Test + public void whenUsingSubSet_shouldReturnSubSetElements() { + SortedSet treeSet = new TreeSet<>(); + treeSet.add(1); + treeSet.add(2); + treeSet.add(3); + treeSet.add(4); + treeSet.add(5); + treeSet.add(6); + + Set expectedSet = new TreeSet<>(); + expectedSet.add(2); + expectedSet.add(3); + expectedSet.add(4); + expectedSet.add(5); + + Set subSet = treeSet.subSet(2, 6); + Assert.assertEquals(expectedSet, subSet); + } + + @Test + public void whenUsingHeadSet_shouldReturnHeadSetElements() { + SortedSet treeSet = new TreeSet<>(); + treeSet.add(1); + treeSet.add(2); + treeSet.add(3); + treeSet.add(4); + treeSet.add(5); + treeSet.add(6); + + Set subSet = treeSet.headSet(6); + Assert.assertEquals(subSet, treeSet.subSet(1, 6)); + } + + @Test + public void whenUsingTailSet_shouldReturnTailSetElements() { + NavigableSet treeSet = new TreeSet<>(); + treeSet.add(1); + treeSet.add(2); + treeSet.add(3); + treeSet.add(4); + treeSet.add(5); + treeSet.add(6); + + Set subSet = treeSet.tailSet(3); + Assert.assertEquals(subSet, treeSet.subSet(3, true, 6, true)); + } +} diff --git a/core-java/src/test/java/com/baeldung/finalize/FinalizeUnitTest.java b/core-java/src/test/java/com/baeldung/finalize/FinalizeUnitTest.java new file mode 100644 index 0000000000..57d409074b --- /dev/null +++ b/core-java/src/test/java/com/baeldung/finalize/FinalizeUnitTest.java @@ -0,0 +1,23 @@ +package com.baeldung.finalize; + +import java.io.IOException; + +import org.junit.Assert; +import org.junit.Test; + +public class FinalizeUnitTest { + @Test + public void whenGC_thenFinalizerExecuted() throws IOException { + String firstLine = new Finalizable().readFirstLine(); + Assert.assertEquals("baeldung.com", firstLine); + System.gc(); + } + + @Test + public void whenTryWResourcesExits_thenResourceClosed() throws IOException { + try (CloseableResource resource = new CloseableResource()) { + String firstLine = resource.readFirstLine(); + Assert.assertEquals("baeldung.com", firstLine); + } + } +} diff --git a/core-java/src/test/java/com/baeldung/initializationguide/UserTest.java b/core-java/src/test/java/com/baeldung/initializationguide/UserTest.java new file mode 100644 index 0000000000..8d352ba706 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/initializationguide/UserTest.java @@ -0,0 +1,37 @@ +package com.baeldung.initializationguide; +import org.junit.Before; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.*; + +import java.lang.reflect.InvocationTargetException; + +public class UserTest { + + @Test + public void givenUserInstance_whenIntializedWithNew_thenInstanceIsNotNull() { + User user = new User("Alice", 1); + assertThat(user).isNotNull(); + } + + @Test + public void givenUserInstance_whenInitializedWithReflection_thenInstanceIsNotNull() throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { + User user = User.class.getConstructor(String.class, int.class) + .newInstance("Alice", 2); + assertThat(user).isNotNull(); + } + + @Test + public void givenUserInstance_whenCopiedWithClone_thenExactMatchIsCreated() throws CloneNotSupportedException { + User user = new User("Alice", 3); + User clonedUser = (User) user.clone(); + assertThat(clonedUser).isEqualTo(user); + } + + @Test + public void givenUserInstance_whenValuesAreNotInitialized_thenUserNameAndIdReturnDefault() { + User user = new User(); + assertThat(user.getName()).isNull(); + assertThat(user.getId() == 0); + } +} diff --git a/core-java/src/test/java/com/baeldung/interfaces/InnerInterfaceTests.java b/core-java/src/test/java/com/baeldung/interfaces/InnerInterfaceTests.java new file mode 100644 index 0000000000..b19ed76189 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/interfaces/InnerInterfaceTests.java @@ -0,0 +1,18 @@ +package com.baeldung.interfaces; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class InnerInterfaceTests { + @Test + public void whenCustomerListJoined_thenReturnsJoinedNames() { + Customer.List customerList = new CommaSeparatedCustomers(); + customerList.Add(new Customer("customer1")); + customerList.Add(new Customer("customer2")); + assertEquals("customer1,customer2", customerList.getCustomerNames()); + } +} diff --git a/core-java/src/test/java/com/baeldung/jdbc/BatchProcessingTest.java b/core-java/src/test/java/com/baeldung/jdbc/BatchProcessingTest.java new file mode 100644 index 0000000000..90f2ea133f --- /dev/null +++ b/core-java/src/test/java/com/baeldung/jdbc/BatchProcessingTest.java @@ -0,0 +1,71 @@ +package com.baeldung.jdbc; + + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.Statement; + +@RunWith(MockitoJUnitRunner.class) +public class BatchProcessingTest { + + + @InjectMocks + private BatchProcessing target = new BatchProcessing(); + + @Mock + private Connection connection; + + @Mock + private Statement statement; + + @Mock + private PreparedStatement employeeStatement; + + @Mock + private PreparedStatement employeeAddressStatement; + + @Before + public void before(){ + MockitoAnnotations.initMocks(this); + } + + + @Test + public void when_useStatement_thenInsertData_success() throws Exception { + Mockito.when(connection.createStatement()).thenReturn(statement); + target.useStatement(); + } + + @Test + public void when_useStatement_ifThrowException_thenCatchException() throws Exception { + Mockito.when(connection.createStatement()).thenThrow(new RuntimeException()); + target.useStatement(); + } + + @Test + public void when_usePreparedStatement_thenInsertData_success() throws Exception { + String insertEmployeeSQL = "INSERT INTO EMPLOYEE(ID, NAME, DESIGNATION) VALUES (?,?,?);"; + String insertEmployeeAddrSQL = "INSERT INTO EMP_ADDRESS(ID, EMP_ID, ADDRESS) VALUES (?,?,?);"; + Mockito.when(connection.prepareStatement(insertEmployeeSQL)).thenReturn(employeeStatement); + Mockito.when(connection.prepareStatement(insertEmployeeAddrSQL)).thenReturn(employeeAddressStatement); + target.usePreparedStatement(); + } + + @Test + public void when_usePreparedStatement_ifThrowException_thenCatchException() throws Exception { + String insertEmployeeSQL = "INSERT INTO EMPLOYEE(ID, NAME, DESIGNATION) VALUES (?,?,?);"; + String insertEmployeeAddrSQL = "INSERT INTO EMP_ADDRESS(ID, EMP_ID, ADDRESS) VALUES (?,?,?);"; + Mockito.when(connection.prepareStatement(insertEmployeeSQL)).thenReturn(employeeStatement); + Mockito.when(connection.prepareStatement(insertEmployeeAddrSQL)).thenThrow(new RuntimeException()); + target.usePreparedStatement(); + } +} diff --git a/core-java/src/test/java/com/baeldung/nestedclass/NewOuter.java b/core-java/src/test/java/com/baeldung/nestedclass/NewOuter.java index a3a723b30e..260f69fd1b 100644 --- a/core-java/src/test/java/com/baeldung/nestedclass/NewOuter.java +++ b/core-java/src/test/java/com/baeldung/nestedclass/NewOuter.java @@ -14,9 +14,9 @@ public class NewOuter { public void run() { System.out.println("a = " + a); System.out.println("b = " + b); - System.out.println("NewOuterTest.this.a = " + NewOuter.this.a); - System.out.println("NewOuterTest.b = " + NewOuter.b); - System.out.println("NewOuterTest.this.b = " + NewOuter.this.b); + System.out.println("NewOuter.this.a = " + NewOuter.this.a); + System.out.println("NewOuter.b = " + NewOuter.b); + System.out.println("NewOuter.this.b = " + NewOuter.this.b); } } diff --git a/core-java/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java b/core-java/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java index 8fb606c2fc..58826766e0 100644 --- a/core-java/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java +++ b/core-java/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java @@ -3,8 +3,6 @@ package com.baeldung.polymorphism; import static org.junit.Assert.*; import java.awt.image.BufferedImage; - -import org.junit.Ignore; import org.junit.Test; public class PolymorphismUnitTest { diff --git a/core-java/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java b/core-java/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java new file mode 100644 index 0000000000..0a9599c3f9 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/regexp/datepattern/FormattedDateMatcherUnitTest.java @@ -0,0 +1,24 @@ +package com.baeldung.regexp.datepattern; + +import org.junit.Assert; +import org.junit.Test; + +public class FormattedDateMatcherUnitTest { + + private DateMatcher matcher = new FormattedDateMatcher(); + + @Test + public void whenUsingFormattedDateMatcher_thenFormatConstraintsSatisfied() { + Assert.assertTrue(matcher.matches("2017-12-31")); + Assert.assertTrue(matcher.matches("2018-01-01")); + Assert.assertTrue(matcher.matches("0000-00-00")); + Assert.assertTrue(matcher.matches("1029-99-72")); + + Assert.assertFalse(matcher.matches("2018-01")); + Assert.assertFalse(matcher.matches("2018-01-01-01")); + Assert.assertFalse(matcher.matches("2018-01-XX")); + Assert.assertFalse(matcher.matches(" 2018-01-01")); + Assert.assertFalse(matcher.matches("2018-01-01 ")); + Assert.assertFalse(matcher.matches("2018/01/01")); + } +} diff --git a/core-java/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java b/core-java/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java new file mode 100644 index 0000000000..abbff83ec1 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/regexp/datepattern/RangedDateMatcherUnitTest.java @@ -0,0 +1,31 @@ +package com.baeldung.regexp.datepattern; + +import org.junit.Assert; +import org.junit.Test; + +public class RangedDateMatcherUnitTest { + + private DateMatcher matcher = new RangedDateMatcher(); + + @Test + public void whenUsingRangedDateMatcher_thenFormatConstraintsSatisfied() { + Assert.assertFalse(matcher.matches("2018-01")); + Assert.assertFalse(matcher.matches("2018-01-01-01")); + Assert.assertFalse(matcher.matches("2018-01-XX")); + Assert.assertFalse(matcher.matches(" 2018-01-01")); + Assert.assertFalse(matcher.matches("2018-01-01 ")); + Assert.assertFalse(matcher.matches("2018/01/01")); + } + + @Test + public void whenUsingRangedDateMatcher_thenRangeConstraintsSatisfied() { + Assert.assertTrue(matcher.matches("1900-01-01")); + Assert.assertTrue(matcher.matches("2018-02-31")); + Assert.assertTrue(matcher.matches("2999-12-31")); + + Assert.assertFalse(matcher.matches("1899-12-31")); + Assert.assertFalse(matcher.matches("2018-05-35")); + Assert.assertFalse(matcher.matches("2018-13-05")); + Assert.assertFalse(matcher.matches("3000-01-01")); + } +} diff --git a/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java new file mode 100644 index 0000000000..67a4276728 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/February29thMatcherUnitTest.java @@ -0,0 +1,17 @@ +package com.baeldung.regexp.datepattern.gregorian; + +import com.baeldung.regexp.datepattern.DateMatcher; +import com.baeldung.regexp.datepattern.gregorian.testhelper.GregorianDateTestHelper; +import org.junit.Test; + +public class February29thMatcherUnitTest { + + private DateMatcher matcher = new February29thMatcher(); + + private GregorianDateTestHelper testHelper = new GregorianDateTestHelper(matcher); + + @Test + public void whenYearIsLeap_thenYearHasFebruary29th() { + testHelper.assertFebruary29th(); + } +} diff --git a/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java new file mode 100644 index 0000000000..48ff140620 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/FebruaryGeneralMatcherUnitTest.java @@ -0,0 +1,17 @@ +package com.baeldung.regexp.datepattern.gregorian; + +import com.baeldung.regexp.datepattern.DateMatcher; +import com.baeldung.regexp.datepattern.gregorian.testhelper.GregorianDateTestHelper; +import org.junit.Test; + +public class FebruaryGeneralMatcherUnitTest { + + private DateMatcher matcher = new FebruaryGeneralMatcher(); + + private GregorianDateTestHelper testHelper = new GregorianDateTestHelper(matcher); + + @Test + public void whenMonthIsFebruary_thenMonthContainsUpTo28Days() { + testHelper.assertFebruaryGeneralDates(); + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java new file mode 100644 index 0000000000..e6e896a09c --- /dev/null +++ b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/GregorianDateMatcherUnitTest.java @@ -0,0 +1,42 @@ +package com.baeldung.regexp.datepattern.gregorian; + +import com.baeldung.regexp.datepattern.DateMatcher; +import com.baeldung.regexp.datepattern.gregorian.testhelper.GregorianDateTestHelper; +import org.junit.Test; + +public class GregorianDateMatcherUnitTest { + + private DateMatcher matcher = new GregorianDateMatcher(); + + private GregorianDateTestHelper testHelper = new GregorianDateTestHelper(matcher); + + @Test + public void whenUsingGregorianDateMatcher_thenFormatConstraintsSatisfied() { + testHelper.assertFormat(); + } + + @Test + public void whenUsingGregorianDateMatcher_thenRangeConstraintsSatisfied() { + testHelper.assertRange(); + } + + @Test + public void whenYearIsLeap_thenFebruaryHas29Days() { + testHelper.assertFebruary29th(); + } + + @Test + public void whenMonthIsFebruary_thenMonthContainsUpTo28Days() { + testHelper.assertFebruaryGeneralDates(); + } + + @Test + public void whenMonthIsShort_thenMonthContainsUpTo30Days() { + testHelper.assertMonthsOf30Days(); + } + + @Test + public void whenMonthIsLong_thenMonthContainsUpTo31Days() { + testHelper.assertMonthsOf31Dates(); + } +} diff --git a/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java new file mode 100644 index 0000000000..d1ce4a6d57 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf30DaysMatcherUnitTest.java @@ -0,0 +1,17 @@ +package com.baeldung.regexp.datepattern.gregorian; + +import com.baeldung.regexp.datepattern.DateMatcher; +import com.baeldung.regexp.datepattern.gregorian.testhelper.GregorianDateTestHelper; +import org.junit.Test; + +public class MonthsOf30DaysMatcherUnitTest { + + private DateMatcher matcher = new MonthsOf30DaysMatcher(); + + private GregorianDateTestHelper testHelper = new GregorianDateTestHelper(matcher); + + @Test + public void whenMonthIsShort_thenMonthContainsUpTo30Days() { + testHelper.assertMonthsOf30Days(); + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java new file mode 100644 index 0000000000..338c8de30c --- /dev/null +++ b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/MonthsOf31DaysMatcherUnitTest.java @@ -0,0 +1,17 @@ +package com.baeldung.regexp.datepattern.gregorian; + +import com.baeldung.regexp.datepattern.DateMatcher; +import com.baeldung.regexp.datepattern.gregorian.testhelper.GregorianDateTestHelper; +import org.junit.Test; + +public class MonthsOf31DaysMatcherUnitTest { + + private DateMatcher matcher = new MonthsOf31DaysMatcher(); + + private GregorianDateTestHelper testHelper = new GregorianDateTestHelper(matcher); + + @Test + public void whenMonthIsLong_thenMonthContainsUpTo31Days() { + testHelper.assertMonthsOf31Dates(); + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java new file mode 100644 index 0000000000..6429e4fe2d --- /dev/null +++ b/core-java/src/test/java/com/baeldung/regexp/datepattern/gregorian/testhelper/GregorianDateTestHelper.java @@ -0,0 +1,102 @@ +package com.baeldung.regexp.datepattern.gregorian.testhelper; + +import com.baeldung.regexp.datepattern.DateMatcher; +import org.junit.Assert; + +public class GregorianDateTestHelper { + + private final DateMatcher matcher; + + public GregorianDateTestHelper(DateMatcher matcher) { + this.matcher = matcher; + } + + public void assertFormat() { + Assert.assertTrue(matcher.matches("2017-12-31")); + Assert.assertTrue(matcher.matches("2018-01-01")); + + Assert.assertFalse(matcher.matches("2018-02")); + Assert.assertFalse(matcher.matches("2018-02-01-01")); + Assert.assertFalse(matcher.matches("2018-02-XX")); + Assert.assertFalse(matcher.matches(" 2018-02-01")); + Assert.assertFalse(matcher.matches("2018-02-01 ")); + Assert.assertFalse(matcher.matches("2020/02/28")); + Assert.assertFalse(matcher.matches("2020.02.29")); + } + + public void assertRange() { + Assert.assertTrue(matcher.matches("1900-01-01")); + Assert.assertTrue(matcher.matches("2205-05-25")); + Assert.assertTrue(matcher.matches("2999-12-31")); + + Assert.assertFalse(matcher.matches("1899-12-31")); + Assert.assertFalse(matcher.matches("2018-05-35")); + Assert.assertFalse(matcher.matches("2018-13-05")); + Assert.assertFalse(matcher.matches("3000-01-01")); + Assert.assertFalse(matcher.matches("3200-02-29")); + } + + public void assertFebruary29th() { + Assert.assertTrue(matcher.matches("2000-02-29")); + Assert.assertTrue(matcher.matches("2400-02-29")); + Assert.assertTrue(matcher.matches("2800-02-29")); + Assert.assertTrue(matcher.matches("2020-02-29")); + Assert.assertTrue(matcher.matches("2024-02-29")); + Assert.assertTrue(matcher.matches("2028-02-29")); + + Assert.assertFalse(matcher.matches("2017-02-29")); + Assert.assertFalse(matcher.matches("2018-02-29")); + Assert.assertFalse(matcher.matches("2019-02-29")); + Assert.assertFalse(matcher.matches("2100-02-29")); + Assert.assertFalse(matcher.matches("2200-02-29")); + Assert.assertFalse(matcher.matches("2300-02-29")); + } + + public void assertFebruaryGeneralDates() { + Assert.assertTrue(matcher.matches("2018-02-01")); + Assert.assertTrue(matcher.matches("2019-02-13")); + Assert.assertTrue(matcher.matches("2020-02-25")); + + Assert.assertFalse(matcher.matches("2000-02-30")); + Assert.assertFalse(matcher.matches("2400-02-62")); + Assert.assertFalse(matcher.matches("2420-02-94")); + } + + public void assertMonthsOf30Days() { + Assert.assertTrue(matcher.matches("2018-04-30")); + Assert.assertTrue(matcher.matches("2019-06-30")); + Assert.assertTrue(matcher.matches("2020-09-30")); + Assert.assertTrue(matcher.matches("2021-11-30")); + + Assert.assertTrue(matcher.matches("2022-04-02")); + Assert.assertTrue(matcher.matches("2023-06-14")); + Assert.assertTrue(matcher.matches("2024-09-26")); + + Assert.assertFalse(matcher.matches("2018-04-31")); + Assert.assertFalse(matcher.matches("2019-06-31")); + Assert.assertFalse(matcher.matches("2020-09-31")); + Assert.assertFalse(matcher.matches("2021-11-31")); + + Assert.assertFalse(matcher.matches("2022-04-32")); + Assert.assertFalse(matcher.matches("2023-06-64")); + Assert.assertFalse(matcher.matches("2024-09-96")); + } + + public void assertMonthsOf31Dates() { + Assert.assertTrue(matcher.matches("2018-01-31")); + Assert.assertTrue(matcher.matches("2019-03-31")); + Assert.assertTrue(matcher.matches("2020-05-31")); + Assert.assertTrue(matcher.matches("2021-07-31")); + Assert.assertTrue(matcher.matches("2022-08-31")); + Assert.assertTrue(matcher.matches("2023-10-31")); + Assert.assertTrue(matcher.matches("2024-12-31")); + + Assert.assertTrue(matcher.matches("2025-01-03")); + Assert.assertTrue(matcher.matches("2026-03-15")); + Assert.assertTrue(matcher.matches("2027-05-27")); + + Assert.assertFalse(matcher.matches("2018-01-32")); + Assert.assertFalse(matcher.matches("2019-03-64")); + Assert.assertFalse(matcher.matches("2020-05-96")); + } +} diff --git a/core-java/src/test/java/com/baeldung/threadlocalrandom/ThreadLocalRandomTest.java b/core-java/src/test/java/com/baeldung/threadlocalrandom/ThreadLocalRandomTest.java new file mode 100644 index 0000000000..c75813baba --- /dev/null +++ b/core-java/src/test/java/com/baeldung/threadlocalrandom/ThreadLocalRandomTest.java @@ -0,0 +1,63 @@ +package com.baeldung.threadlocalrandom; + +import java.util.concurrent.ThreadLocalRandom; + +import static org.junit.Assert.assertTrue; +import org.junit.Test; + +public class ThreadLocalRandomTest { + + @Test + public void givenUsingThreadLocalRandom_whenGeneratingRandomIntBounded_thenCorrect() { + int leftLimit = 1; + int rightLimit = 100; + int generatedInt = ThreadLocalRandom.current().nextInt(leftLimit, rightLimit); + + assertTrue(generatedInt < rightLimit && generatedInt >= leftLimit); + } + + @Test + public void givenUsingThreadLocalRandom_whenGeneratingRandomIntUnbounded_thenCorrect() { + int generatedInt = ThreadLocalRandom.current().nextInt(); + + assertTrue(generatedInt < Integer.MAX_VALUE && generatedInt >= Integer.MIN_VALUE); + } + + @Test + public void givenUsingThreadLocalRandom_whenGeneratingRandomLongBounded_thenCorrect() { + long leftLimit = 1L; + long rightLimit = 100L; + long generatedLong = ThreadLocalRandom.current().nextLong(leftLimit, rightLimit); + + assertTrue(generatedLong < rightLimit && generatedLong >= leftLimit); + } + + @Test + public void givenUsingThreadLocalRandom_whenGeneratingRandomLongUnbounded_thenCorrect() { + long generatedInt = ThreadLocalRandom.current().nextLong(); + + assertTrue(generatedInt < Long.MAX_VALUE && generatedInt >= Long.MIN_VALUE); + } + + @Test + public void givenUsingThreadLocalRandom_whenGeneratingRandomDoubleBounded_thenCorrect() { + double leftLimit = 1D; + double rightLimit = 100D; + double generatedInt = ThreadLocalRandom.current().nextDouble(leftLimit, rightLimit); + + assertTrue(generatedInt < rightLimit && generatedInt >= leftLimit); + } + + @Test + public void givenUsingThreadLocalRandom_whenGeneratingRandomDoubleUnbounded_thenCorrect() { + double generatedInt = ThreadLocalRandom.current().nextDouble(); + + assertTrue(generatedInt < Double.MAX_VALUE && generatedInt >= Double.MIN_VALUE); + } + + @Test(expected = UnsupportedOperationException.class) + public void givenUsingThreadLocalRandom_whenSettingSeed_thenThrowUnsupportedOperationException() { + ThreadLocalRandom.current().setSeed(0l); + } + +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/tree/BinaryTreeTest.java b/core-java/src/test/java/com/baeldung/tree/BinaryTreeTest.java new file mode 100644 index 0000000000..99e656fe28 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/tree/BinaryTreeTest.java @@ -0,0 +1,119 @@ +package com.baeldung.tree; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public class BinaryTreeTest { + + @Test + public void givenABinaryTree_WhenAddingElements_ThenTreeNotEmpty() { + + BinaryTree bt = createBinaryTree(); + + assertTrue(!bt.isEmpty()); + } + + @Test + public void givenABinaryTree_WhenAddingElements_ThenTreeContainsThoseElements() { + + BinaryTree bt = createBinaryTree(); + + assertTrue(bt.containsNode(6)); + assertTrue(bt.containsNode(4)); + + assertFalse(bt.containsNode(1)); + } + + @Test + public void givenABinaryTree_WhenAddingExistingElement_ThenElementIsNotAdded() { + + BinaryTree bt = createBinaryTree(); + + int initialSize = bt.getSize(); + + assertTrue(bt.containsNode(3)); + bt.add(3); + assertEquals(initialSize, bt.getSize()); + } + + @Test + public void givenABinaryTree_WhenLookingForNonExistingElement_ThenReturnsFalse() { + + BinaryTree bt = createBinaryTree(); + + assertFalse(bt.containsNode(99)); + } + + @Test + public void givenABinaryTree_WhenDeletingElements_ThenTreeDoesNotContainThoseElements() { + + BinaryTree bt = createBinaryTree(); + + assertTrue(bt.containsNode(9)); + bt.delete(9); + assertFalse(bt.containsNode(9)); + } + + @Test + public void givenABinaryTree_WhenDeletingNonExistingElement_ThenTreeDoesNotDelete() { + + BinaryTree bt = createBinaryTree(); + + int initialSize = bt.getSize(); + + assertFalse(bt.containsNode(99)); + bt.delete(99); + assertFalse(bt.containsNode(99)); + assertEquals(initialSize, bt.getSize()); + } + + @Test + public void givenABinaryTree_WhenTraversingInOrder_ThenPrintValues() { + + BinaryTree bt = createBinaryTree(); + + bt.traverseInOrder(bt.root); + } + + @Test + public void givenABinaryTree_WhenTraversingPreOrder_ThenPrintValues() { + + BinaryTree bt = createBinaryTree(); + + bt.traversePreOrder(bt.root); + } + + @Test + public void givenABinaryTree_WhenTraversingPostOrder_ThenPrintValues() { + + BinaryTree bt = createBinaryTree(); + + bt.traversePostOrder(bt.root); + } + + @Test + public void givenABinaryTree_WhenTraversingLevelOrder_ThenPrintValues() { + + BinaryTree bt = createBinaryTree(); + + bt.traverseLevelOrder(); + } + + private BinaryTree createBinaryTree() { + BinaryTree bt = new BinaryTree(); + + bt.add(6); + bt.add(4); + bt.add(8); + bt.add(3); + bt.add(5); + bt.add(7); + bt.add(9); + + return bt; + } + +} diff --git a/core-java/src/test/java/com/baeldung/trie/TrieTest.java b/core-java/src/test/java/com/baeldung/trie/TrieTest.java new file mode 100644 index 0000000000..be7e5575d8 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/trie/TrieTest.java @@ -0,0 +1,68 @@ +package com.baeldung.trie; + +import org.junit.Test; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class TrieTest { + + @Test + public void whenEmptyTrie_thenNoElements() { + Trie trie = new Trie(); + + assertFalse(trie.isEmpty()); + } + + @Test + public void givenATrie_whenAddingElements_thenTrieNotEmpty() { + Trie trie = createExampleTrie(); + + assertFalse(trie.isEmpty()); + } + + @Test + public void givenATrie_whenAddingElements_thenTrieHasThoseElements() { + Trie trie = createExampleTrie(); + + assertFalse(trie.containsNode("3")); + assertFalse(trie.containsNode("vida")); + + assertTrue(trie.containsNode("Programming")); + assertTrue(trie.containsNode("is")); + assertTrue(trie.containsNode("a")); + assertTrue(trie.containsNode("way")); + assertTrue(trie.containsNode("of")); + assertTrue(trie.containsNode("life")); + } + + @Test + public void givenATrie_whenLookingForNonExistingElement_thenReturnsFalse() { + Trie trie = createExampleTrie(); + + assertFalse(trie.containsNode("99")); + } + + @Test + public void givenATrie_whenDeletingElements_thenTreeDoesNotContainThoseElements() { + + Trie trie = createExampleTrie(); + + assertTrue(trie.containsNode("Programming")); + trie.delete("Programming"); + assertFalse(trie.containsNode("Programming")); + } + + private Trie createExampleTrie() { + Trie trie = new Trie(); + + trie.insert("Programming"); + trie.insert("is"); + trie.insert("a"); + trie.insert("way"); + trie.insert("of"); + trie.insert("life"); + + return trie; + } +} diff --git a/core-java/src/test/resources/copyTest/dest/readme.txt b/core-java/src/test/resources/copyTest/dest/readme.txt new file mode 100644 index 0000000000..dfda31ee9f --- /dev/null +++ b/core-java/src/test/resources/copyTest/dest/readme.txt @@ -0,0 +1,2 @@ +files will be copied here and then deleted +remove `file.delete()` to see the files here diff --git a/core-java/src/test/resources/copyTest/src/test_apache.txt b/core-java/src/test/resources/copyTest/src/test_apache.txt new file mode 100644 index 0000000000..a6b651973d --- /dev/null +++ b/core-java/src/test/resources/copyTest/src/test_apache.txt @@ -0,0 +1 @@ +apache diff --git a/core-java/src/test/resources/copyTest/src/test_channel.txt b/core-java/src/test/resources/copyTest/src/test_channel.txt new file mode 100644 index 0000000000..6dca835871 --- /dev/null +++ b/core-java/src/test/resources/copyTest/src/test_channel.txt @@ -0,0 +1 @@ +channel diff --git a/core-java/src/test/resources/copyTest/src/test_files.txt b/core-java/src/test/resources/copyTest/src/test_files.txt new file mode 100644 index 0000000000..027271b9b2 --- /dev/null +++ b/core-java/src/test/resources/copyTest/src/test_files.txt @@ -0,0 +1 @@ +files diff --git a/core-java/src/test/resources/copyTest/src/test_stream.txt b/core-java/src/test/resources/copyTest/src/test_stream.txt new file mode 100644 index 0000000000..eac9b41cbe --- /dev/null +++ b/core-java/src/test/resources/copyTest/src/test_stream.txt @@ -0,0 +1 @@ +stream diff --git a/core-kotlin/README.md b/core-kotlin/README.md index 4b5f921f7b..5908d480b7 100644 --- a/core-kotlin/README.md +++ b/core-kotlin/README.md @@ -16,5 +16,5 @@ - [Delegated Properties in Kotlin](http://www.baeldung.com/kotlin-delegated-properties) - [Sealed Classes in Kotlin](http://www.baeldung.com/kotlin-sealed-classes) - [JUnit 5 for Kotlin Developers](http://www.baeldung.com/junit-5-kotlin) - +- [Extension Methods in Kotlin](http://www.baeldung.com/kotlin-extension-methods) diff --git a/core-kotlin/pom.xml b/core-kotlin/pom.xml index e795d1e042..33bdbf719f 100644 --- a/core-kotlin/pom.xml +++ b/core-kotlin/pom.xml @@ -44,6 +44,16 @@ kotlin-stdlib ${kotlin-stdlib.version} + + org.jetbrains.kotlin + kotlin-stdlib-jre8 + ${kotlin-stdlib.version} + + + khttp + khttp + 0.1.0 + org.jetbrains.kotlin kotlin-test-junit @@ -105,7 +115,11 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + 3.7.0 + + 1.8 + 1.8 + diff --git a/core-kotlin/src/test/kotlin/com/baeldung/kotlin/UseTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/kotlin/UseTest.kt new file mode 100644 index 0000000000..15bdfcafd8 --- /dev/null +++ b/core-kotlin/src/test/kotlin/com/baeldung/kotlin/UseTest.kt @@ -0,0 +1,67 @@ +package com.baeldung.kotlin + +import org.junit.Test +import java.beans.ExceptionListener +import java.beans.XMLEncoder +import java.io.* +import java.lang.Exception +import kotlin.test.assertEquals +import kotlin.test.assertTrue +import kotlin.test.fail + +class UseTest { + + @Test + fun givenCloseable_whenUseIsCalled_thenItIsClosed() { + val stringWriter = StringWriter() + val writer = BufferedWriter(stringWriter) //Using a BufferedWriter because after close() it throws. + writer.use { + assertEquals(writer, it) + + it.write("something") + } + try { + writer.write("something else") + + fail("write() should have thrown an exception because the writer is closed.") + } catch (e: IOException) { + //Ok + } + + assertEquals("something", stringWriter.toString()) + } + + @Test + fun givenAutoCloseable_whenUseIsCalled_thenItIsClosed() { + val baos = ByteArrayOutputStream() + val encoder = XMLEncoder(PrintStream(baos)) //XMLEncoder is AutoCloseable but not Closeable. + //Here, we use a PrintStream because after close() it throws. + encoder.exceptionListener = ThrowingExceptionListener() + encoder.use { + assertEquals(encoder, it) + + it.writeObject("something") + } + try { + encoder.writeObject("something else") + encoder.flush() + + fail("write() should have thrown an exception because the encoder is closed.") + } catch (e: IOException) { + //Ok + } + } + + @Test + fun whenSimpleFormIsUsed_thenItWorks() { + StringWriter().use { it.write("something") } + } +} + +class ThrowingExceptionListener : ExceptionListener { + override fun exceptionThrown(e: Exception?) { + if(e != null) { + throw e + } + } +} \ No newline at end of file diff --git a/core-kotlin/src/test/kotlin/com/baeldung/kotlin/khttp/KhttpTest.kt b/core-kotlin/src/test/kotlin/com/baeldung/kotlin/khttp/KhttpTest.kt new file mode 100644 index 0000000000..e9147c9489 --- /dev/null +++ b/core-kotlin/src/test/kotlin/com/baeldung/kotlin/khttp/KhttpTest.kt @@ -0,0 +1,153 @@ +package com.baeldung.kotlin.khttp + +import khttp.structures.files.FileLike +import org.json.JSONObject +import org.junit.Test +import java.beans.ExceptionListener +import java.beans.XMLEncoder +import java.io.* +import java.lang.Exception +import java.net.ConnectException +import kotlin.test.assertEquals +import kotlin.test.assertTrue +import kotlin.test.fail + +class KhttpTest { + + @Test + fun whenHttpGetRequestIsMade_thenArgsAreReturned() { + val response = khttp.get( + url = "http://httpbin.org/get", + params = mapOf("p1" to "1", "p2" to "2")) + val args = response.jsonObject.getJSONObject("args") + + assertEquals("1", args["p1"]) + assertEquals("2", args["p2"]) + } + + @Test + fun whenAlternateHttpGetRequestIsMade_thenArgsAreReturned() { + val response = khttp.request( + method = "GET", + url = "http://httpbin.org/get", + params = mapOf("p1" to "1", "p2" to "2")) + val args = response.jsonObject.getJSONObject("args") + + assertEquals("1", args["p1"]) + assertEquals("2", args["p2"]) + } + + @Test + fun whenHeadersAreSet_thenHeadersAreSent() { + val response = khttp.get( + url = "http://httpbin.org/get", + headers = mapOf("header1" to "1", "header2" to "2")) + val headers = response.jsonObject.getJSONObject("headers") + + assertEquals("1", headers["Header1"]) + assertEquals("2", headers["Header2"]) + } + + @Test + fun whenHttpPostRequestIsMadeWithJson_thenBodyIsReturned() { + val response = khttp.post( + url = "http://httpbin.org/post", + params = mapOf("p1" to "1", "p2" to "2"), + json = mapOf("pr1" to "1", "pr2" to "2")) + + val args = response.jsonObject.getJSONObject("args") + + assertEquals("1", args["p1"]) + assertEquals("2", args["p2"]) + + val json = response.jsonObject.getJSONObject("json") + + assertEquals("1", json["pr1"]) + assertEquals("2", json["pr2"]) + } + + @Test + fun whenHttpPostRequestIsMadeWithMapData_thenBodyIsReturned() { + val response = khttp.post( + url = "http://httpbin.org/post", + params = mapOf("p1" to "1", "p2" to "2"), + data = mapOf("pr1" to "1", "pr2" to "2")) + + val args = response.jsonObject.getJSONObject("args") + + assertEquals("1", args["p1"]) + assertEquals("2", args["p2"]) + + val form = response.jsonObject.getJSONObject("form") + + assertEquals("1", form["pr1"]) + assertEquals("2", form["pr2"]) + } + + @Test + fun whenHttpPostRequestIsMadeWithFiles_thenBodyIsReturned() { + val response = khttp.post( + url = "http://httpbin.org/post", + params = mapOf("p1" to "1", "p2" to "2"), + files = listOf( + FileLike("file1", "content1"), + FileLike("file2", javaClass.getResource("KhttpTest.class").openStream().readBytes()))) + + val args = response.jsonObject.getJSONObject("args") + + assertEquals("1", args["p1"]) + assertEquals("2", args["p2"]) + + val files = response.jsonObject.getJSONObject("files") + + assertEquals("content1", files["file1"]) + } + + @Test + fun whenHttpPostRequestIsMadeWithInputStream_thenBodyIsReturned() { + val response = khttp.post( + url = "http://httpbin.org/post", + params = mapOf("p1" to "1", "p2" to "2"), + data = ByteArrayInputStream("content!".toByteArray())) + + val args = response.jsonObject.getJSONObject("args") + + assertEquals("1", args["p1"]) + assertEquals("2", args["p2"]) + + assertEquals("content!", response.jsonObject["data"]) + } + + @Test + fun whenHttpPostStreamingRequestIsMade_thenBodyIsReturnedInChunks() { + val response = khttp.post( + url = "http://httpbin.org/post", + stream = true, + json = mapOf("pr1" to "1", "pr2" to "2")) + + val baos = ByteArrayOutputStream() + response.contentIterator(chunkSize = 10).forEach { arr : ByteArray -> baos.write(arr) } + val json = JSONObject(String(baos.toByteArray())).getJSONObject("json") + + assertEquals("1", json["pr1"]) + assertEquals("2", json["pr2"]) + } + + @Test + fun whenHttpRequestFails_thenExceptionIsThrown() { + try { + khttp.get(url = "http://localhost/nothing/to/see/here") + + fail("Should have thrown an exception") + } catch (e : ConnectException) { + //Ok + } + } + + @Test + fun whenHttpNotFound_thenExceptionIsThrown() { + val response = khttp.get(url = "http://httpbin.org/nothing/to/see/here") + + assertEquals(404, response.statusCode) + } +} \ No newline at end of file diff --git a/drools/README.MD b/drools/README.MD index b2259e2878..5efbe0d3c3 100644 --- a/drools/README.MD +++ b/drools/README.MD @@ -1,3 +1,4 @@ ### Relevant Articles: - [Introduction to Drools](http://www.baeldung.com/drools) - [Drools Using Rules from Excel Files](http://www.baeldung.com/drools-excel) +- [An Example of Backward Chaining in Drools](http://www.baeldung.com/drools-backward-chaining) diff --git a/dubbo/README.md b/dubbo/README.md new file mode 100644 index 0000000000..0a4cd9a204 --- /dev/null +++ b/dubbo/README.md @@ -0,0 +1,4 @@ +## Relevant articles: + +- [Introduction to Dubbo](http://www.baeldung.com/dubbo) + diff --git a/dubbo/pom.xml b/dubbo/pom.xml new file mode 100644 index 0000000000..af242e5905 --- /dev/null +++ b/dubbo/pom.xml @@ -0,0 +1,73 @@ + + 4.0.0 + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + + dubbo + + + UTF-8 + UTF-8 + 1.8 + 2.5.7 + 3.4.11 + 0.10 + 2.19.1 + + + + + com.alibaba + dubbo + ${dubbo.version} + + + junit + junit + 4.12 + test + + + + org.apache.zookeeper + zookeeper + ${zookeeper.version} + + + + com.101tec + zkclient + ${zkclient.version} + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + maven-surefire-plugin + ${surefire.version} + + + **/*LiveTest.java + + + + + + + diff --git a/dubbo/src/main/java/com/alibaba/dubbo/registry/simple/SimpleRegistryService.java b/dubbo/src/main/java/com/alibaba/dubbo/registry/simple/SimpleRegistryService.java new file mode 100644 index 0000000000..bf4a5e201c --- /dev/null +++ b/dubbo/src/main/java/com/alibaba/dubbo/registry/simple/SimpleRegistryService.java @@ -0,0 +1,210 @@ +/* + * Copyright 1999-2011 Alibaba Group. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.dubbo.registry.simple; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.logger.Logger; +import com.alibaba.dubbo.common.logger.LoggerFactory; +import com.alibaba.dubbo.common.utils.ConcurrentHashSet; +import com.alibaba.dubbo.common.utils.NetUtils; +import com.alibaba.dubbo.common.utils.UrlUtils; +import com.alibaba.dubbo.registry.NotifyListener; +import com.alibaba.dubbo.registry.RegistryService; +import com.alibaba.dubbo.registry.support.AbstractRegistry; +import com.alibaba.dubbo.rpc.RpcContext; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +/** + * SimpleRegistryService + * + * @author william.liangf + */ +public class SimpleRegistryService extends AbstractRegistry { + + private final static Logger logger = LoggerFactory.getLogger(SimpleRegistryService.class); + private final ConcurrentMap> remoteRegistered = new ConcurrentHashMap>(); + private final ConcurrentMap>> remoteSubscribed = new ConcurrentHashMap>>(); + + public SimpleRegistryService() { + super(new URL("dubbo", NetUtils.getLocalHost(), 0, RegistryService.class.getName(), "file", "N/A")); + } + + public boolean isAvailable() { + return true; + } + + public List lookup(URL url) { + List urls = new ArrayList(); + for (URL u : getRegistered()) { + if (UrlUtils.isMatch(url, u)) { + urls.add(u); + } + } + return urls; + } + + public void register(URL url) { + String client = RpcContext.getContext().getRemoteAddressString(); + Set urls = remoteRegistered.get(client); + if (urls == null) { + remoteRegistered.putIfAbsent(client, new ConcurrentHashSet()); + urls = remoteRegistered.get(client); + } + urls.add(url); + super.register(url); + registered(url); + } + + public void unregister(URL url) { + String client = RpcContext.getContext().getRemoteAddressString(); + Set urls = remoteRegistered.get(client); + if (urls != null && urls.size() > 0) { + urls.remove(url); + } + super.unregister(url); + unregistered(url); + } + + public void subscribe(URL url, NotifyListener listener) { + if (getUrl().getPort() == 0) { + URL registryUrl = RpcContext.getContext().getUrl(); + if (registryUrl != null && registryUrl.getPort() > 0 + && RegistryService.class.getName().equals(registryUrl.getPath())) { + super.setUrl(registryUrl); + super.register(registryUrl); + } + } + String client = RpcContext.getContext().getRemoteAddressString(); + ConcurrentMap> clientListeners = remoteSubscribed.get(client); + if (clientListeners == null) { + remoteSubscribed.putIfAbsent(client, new ConcurrentHashMap>()); + clientListeners = remoteSubscribed.get(client); + } + Set listeners = clientListeners.get(url); + if (listeners == null) { + clientListeners.putIfAbsent(url, new ConcurrentHashSet()); + listeners = clientListeners.get(url); + } + listeners.add(listener); + super.subscribe(url, listener); + subscribed(url, listener); + } + + public void unsubscribe(URL url, NotifyListener listener) { + if (!Constants.ANY_VALUE.equals(url.getServiceInterface()) + && url.getParameter(Constants.REGISTER_KEY, true)) { + unregister(url); + } + String client = RpcContext.getContext().getRemoteAddressString(); + Map> clientListeners = remoteSubscribed.get(client); + if (clientListeners != null && clientListeners.size() > 0) { + Set listeners = clientListeners.get(url); + if (listeners != null && listeners.size() > 0) { + listeners.remove(listener); + } + } + } + + protected void registered(URL url) { + for (Map.Entry> entry : getSubscribed().entrySet()) { + URL key = entry.getKey(); + if (UrlUtils.isMatch(key, url)) { + List list = lookup(key); + for (NotifyListener listener : entry.getValue()) { + listener.notify(list); + } + } + } + } + + protected void unregistered(URL url) { + for (Map.Entry> entry : getSubscribed().entrySet()) { + URL key = entry.getKey(); + if (UrlUtils.isMatch(key, url)) { + List list = lookup(key); + for (NotifyListener listener : entry.getValue()) { + listener.notify(list); + } + } + } + } + + protected void subscribed(final URL url, final NotifyListener listener) { + if (Constants.ANY_VALUE.equals(url.getServiceInterface())) { + new Thread(new Runnable() { + public void run() { + Map> map = new HashMap>(); + for (URL u : getRegistered()) { + if (UrlUtils.isMatch(url, u)) { + String service = u.getServiceInterface(); + List list = map.get(service); + if (list == null) { + list = new ArrayList(); + map.put(service, list); + } + list.add(u); + } + } + for (List list : map.values()) { + try { + listener.notify(list); + } catch (Throwable e) { + logger.warn("Discard to notify " + url.getServiceKey() + " to listener " + listener); + } + } + } + }, "DubboMonitorNotifier").start(); + } else { + List list = lookup(url); + try { + listener.notify(list); + } catch (Throwable e) { + logger.warn("Discard to notify " + url.getServiceKey() + " to listener " + listener); + } + } + } + + public void disconnect() { + String client = RpcContext.getContext().getRemoteAddressString(); + if (logger.isInfoEnabled()) { + logger.info("Disconnected " + client); + } + Set urls = remoteRegistered.get(client); + if (urls != null && urls.size() > 0) { + for (URL url : urls) { + unregister(url); + } + } + Map> listeners = remoteSubscribed.get(client); + if (listeners != null && listeners.size() > 0) { + for (Map.Entry> entry : listeners.entrySet()) { + URL url = entry.getKey(); + for (NotifyListener listener : entry.getValue()) { + unsubscribe(url, listener); + } + } + } + } + +} \ No newline at end of file diff --git a/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsFailoverServiceImpl.java b/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsFailoverServiceImpl.java new file mode 100644 index 0000000000..2ad26beac3 --- /dev/null +++ b/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsFailoverServiceImpl.java @@ -0,0 +1,14 @@ +package com.baeldung.dubbo.remote; + +/** + * @author aiet + */ +public class GreetingsFailoverServiceImpl implements GreetingsService { + + @Override + public String sayHi(String name) { + System.out.println("failover implementation"); + return "hi, failover " + name; + } + +} diff --git a/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsService.java b/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsService.java new file mode 100644 index 0000000000..337c4c83e7 --- /dev/null +++ b/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsService.java @@ -0,0 +1,10 @@ +package com.baeldung.dubbo.remote; + +/** + * @author aiet + */ +public interface GreetingsService { + + String sayHi(String name); + +} diff --git a/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsServiceImpl.java b/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsServiceImpl.java new file mode 100644 index 0000000000..a11d9588d8 --- /dev/null +++ b/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsServiceImpl.java @@ -0,0 +1,14 @@ +package com.baeldung.dubbo.remote; + +/** + * @author aiet + */ +public class GreetingsServiceImpl implements GreetingsService { + + @Override + public String sayHi(String name) { + System.out.println("default implementation"); + return "hi, " + name; + } + +} diff --git a/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsServiceSpecialImpl.java b/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsServiceSpecialImpl.java new file mode 100644 index 0000000000..37449da8d8 --- /dev/null +++ b/dubbo/src/main/java/com/baeldung/dubbo/remote/GreetingsServiceSpecialImpl.java @@ -0,0 +1,20 @@ +package com.baeldung.dubbo.remote; + +import static java.util.concurrent.TimeUnit.SECONDS; + +/** + * @author aiet + */ +public class GreetingsServiceSpecialImpl implements GreetingsService { + + @Override + public String sayHi(String name) { + try { + System.out.println("specially called"); + SECONDS.sleep(5); + } catch (Exception ignored) { + } + return "hi, " + name; + } + +} diff --git a/dubbo/src/test/java/com/baeldung/dubbo/APIConfigurationLiveTest.java b/dubbo/src/test/java/com/baeldung/dubbo/APIConfigurationLiveTest.java new file mode 100644 index 0000000000..27c77bf9df --- /dev/null +++ b/dubbo/src/test/java/com/baeldung/dubbo/APIConfigurationLiveTest.java @@ -0,0 +1,57 @@ +package com.baeldung.dubbo; + +import com.alibaba.dubbo.config.ApplicationConfig; +import com.alibaba.dubbo.config.ReferenceConfig; +import com.alibaba.dubbo.config.RegistryConfig; +import com.alibaba.dubbo.config.ServiceConfig; +import com.baeldung.dubbo.remote.GreetingsService; +import com.baeldung.dubbo.remote.GreetingsServiceImpl; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * @author aiet + */ +public class APIConfigurationLiveTest { + + @Before + public void initProvider() { + ApplicationConfig application = new ApplicationConfig(); + application.setName("demo-provider"); + application.setVersion("1.0"); + + RegistryConfig registryConfig = new RegistryConfig(); + registryConfig.setAddress("multicast://224.1.1.1:9090"); + + ServiceConfig service = new ServiceConfig<>(); + service.setApplication(application); + service.setRegistry(registryConfig); + service.setInterface(GreetingsService.class); + service.setRef(new GreetingsServiceImpl()); + + service.export(); + } + + @Test + public void givenProviderConsumer_whenSayHi_thenGotResponse() { + ApplicationConfig application = new ApplicationConfig(); + application.setName("demo-consumer"); + application.setVersion("1.0"); + + RegistryConfig registryConfig = new RegistryConfig(); + registryConfig.setAddress("multicast://224.1.1.1:9090"); + + ReferenceConfig reference = new ReferenceConfig<>(); + reference.setApplication(application); + reference.setRegistry(registryConfig); + reference.setInterface(GreetingsService.class); + + GreetingsService greetingsService = reference.get(); + String hiMessage = greetingsService.sayHi("baeldung"); + + assertEquals("hi, baeldung", hiMessage); + } + +} diff --git a/dubbo/src/test/java/com/baeldung/dubbo/ClusterDynamicLoadBalanceLiveTest.java b/dubbo/src/test/java/com/baeldung/dubbo/ClusterDynamicLoadBalanceLiveTest.java new file mode 100644 index 0000000000..408d5af368 --- /dev/null +++ b/dubbo/src/test/java/com/baeldung/dubbo/ClusterDynamicLoadBalanceLiveTest.java @@ -0,0 +1,70 @@ +package com.baeldung.dubbo; + +import com.baeldung.dubbo.remote.GreetingsService; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.util.ArrayList; +import java.util.List; +import java.util.OptionalDouble; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +/** + * @author aiet + */ +public class ClusterDynamicLoadBalanceLiveTest { + + private ExecutorService executorService; + + @Before + public void initRemote() { + executorService = Executors.newFixedThreadPool(2); + executorService.submit(() -> { + ClassPathXmlApplicationContext remoteContext = new ClassPathXmlApplicationContext("cluster/provider-app-default.xml"); + remoteContext.start(); + }); + executorService.submit(() -> { + SECONDS.sleep(2); + ClassPathXmlApplicationContext backupRemoteContext = new ClassPathXmlApplicationContext("cluster/provider-app-special.xml"); + backupRemoteContext.start(); + return null; + }); + } + + @Test + public void givenProviderCluster_whenConsumerSaysHi_thenResponseBalanced() throws InterruptedException { + ClassPathXmlApplicationContext localContext = new ClassPathXmlApplicationContext("cluster/consumer-app-lb.xml"); + localContext.start(); + GreetingsService greetingsService = (GreetingsService) localContext.getBean("greetingsService"); + List elapseList = new ArrayList<>(6); + for (int i = 0; i < 6; i++) { + long current = System.currentTimeMillis(); + String hiMessage = greetingsService.sayHi("baeldung"); + assertNotNull(hiMessage); + elapseList.add(System.currentTimeMillis() - current); + SECONDS.sleep(1); + } + + OptionalDouble avgElapse = elapseList + .stream() + .mapToLong(e -> e) + .average(); + assertTrue(avgElapse.isPresent()); + assertTrue(avgElapse.getAsDouble() > 1666.0); + + } + + @After + public void destroy() { + executorService.shutdown(); + } + +} diff --git a/dubbo/src/test/java/com/baeldung/dubbo/ClusterFailoverLiveTest.java b/dubbo/src/test/java/com/baeldung/dubbo/ClusterFailoverLiveTest.java new file mode 100644 index 0000000000..721363d3d1 --- /dev/null +++ b/dubbo/src/test/java/com/baeldung/dubbo/ClusterFailoverLiveTest.java @@ -0,0 +1,52 @@ +package com.baeldung.dubbo; + +import com.baeldung.dubbo.remote.GreetingsService; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +/** + * @author aiet + */ +public class ClusterFailoverLiveTest { + + private ExecutorService executorService; + + @Before + public void initRemote() { + executorService = Executors.newFixedThreadPool(2); + executorService.submit(() -> { + ClassPathXmlApplicationContext backupRemoteContext = new ClassPathXmlApplicationContext("cluster/provider-app-special.xml"); + backupRemoteContext.start(); + }); + executorService.submit(() -> { + ClassPathXmlApplicationContext remoteContext = new ClassPathXmlApplicationContext("cluster/provider-app-failover.xml"); + remoteContext.start(); + }); + + } + + @Test + public void givenProviderCluster_whenConsumerSaysHi_thenGotFailoverResponse() { + ClassPathXmlApplicationContext localContext = new ClassPathXmlApplicationContext("cluster/consumer-app-failtest.xml"); + localContext.start(); + GreetingsService greetingsService = (GreetingsService) localContext.getBean("greetingsService"); + String hiMessage = greetingsService.sayHi("baeldung"); + + assertNotNull(hiMessage); + assertEquals("hi, failover baeldung", hiMessage); + } + + @After + public void destroy() { + executorService.shutdown(); + } + +} diff --git a/dubbo/src/test/java/com/baeldung/dubbo/ClusterFailsafeLiveTest.java b/dubbo/src/test/java/com/baeldung/dubbo/ClusterFailsafeLiveTest.java new file mode 100644 index 0000000000..29a10fa20a --- /dev/null +++ b/dubbo/src/test/java/com/baeldung/dubbo/ClusterFailsafeLiveTest.java @@ -0,0 +1,47 @@ +package com.baeldung.dubbo; + +import com.baeldung.dubbo.remote.GreetingsService; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +/** + * @author aiet + */ +public class ClusterFailsafeLiveTest { + + private ExecutorService executorService; + + @Before + public void initRemote() { + executorService = Executors.newFixedThreadPool(1); + executorService.submit(() -> { + ClassPathXmlApplicationContext remoteContext = new ClassPathXmlApplicationContext("cluster/provider-app-special-failsafe.xml"); + remoteContext.start(); + }); + } + + @Test + public void givenProviderCluster_whenConsumerSaysHi_thenGotFailsafeResponse() { + ClassPathXmlApplicationContext localContext = new ClassPathXmlApplicationContext("cluster/consumer-app-failtest.xml"); + localContext.start(); + GreetingsService greetingsService = (GreetingsService) localContext.getBean("greetingsService"); + String hiMessage = greetingsService.sayHi("baeldung"); + + assertNull(hiMessage); + } + + @After + public void destroy() { + executorService.shutdown(); + } + +} diff --git a/dubbo/src/test/java/com/baeldung/dubbo/ClusterLoadBalanceLiveTest.java b/dubbo/src/test/java/com/baeldung/dubbo/ClusterLoadBalanceLiveTest.java new file mode 100644 index 0000000000..b880dfe843 --- /dev/null +++ b/dubbo/src/test/java/com/baeldung/dubbo/ClusterLoadBalanceLiveTest.java @@ -0,0 +1,66 @@ +package com.baeldung.dubbo; + +import com.baeldung.dubbo.remote.GreetingsService; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.util.ArrayList; +import java.util.List; +import java.util.OptionalDouble; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +/** + * @author aiet + */ +public class ClusterLoadBalanceLiveTest { + + private ExecutorService executorService; + + @Before + public void initRemote() { + executorService = Executors.newFixedThreadPool(2); + executorService.submit(() -> { + ClassPathXmlApplicationContext remoteContext = new ClassPathXmlApplicationContext("cluster/provider-app-default.xml"); + remoteContext.start(); + }); + executorService.submit(() -> { + ClassPathXmlApplicationContext backupRemoteContext = new ClassPathXmlApplicationContext("cluster/provider-app-special.xml"); + backupRemoteContext.start(); + }); + } + + @Test + public void givenProviderCluster_whenConsumerSaysHi_thenResponseBalanced() { + ClassPathXmlApplicationContext localContext = new ClassPathXmlApplicationContext("cluster/consumer-app-lb.xml"); + localContext.start(); + GreetingsService greetingsService = (GreetingsService) localContext.getBean("greetingsService"); + List elapseList = new ArrayList<>(6); + for (int i = 0; i < 6; i++) { + long current = System.currentTimeMillis(); + String hiMessage = greetingsService.sayHi("baeldung"); + assertNotNull(hiMessage); + elapseList.add(System.currentTimeMillis() - current); + } + + OptionalDouble avgElapse = elapseList + .stream() + .mapToLong(e -> e) + .average(); + assertTrue(avgElapse.isPresent()); + System.out.println(avgElapse.getAsDouble()); + assertTrue(avgElapse.getAsDouble() > 2500.0); + + } + + @After + public void destroy() { + executorService.shutdown(); + } + +} diff --git a/dubbo/src/test/java/com/baeldung/dubbo/MulticastRegistryLiveTest.java b/dubbo/src/test/java/com/baeldung/dubbo/MulticastRegistryLiveTest.java new file mode 100644 index 0000000000..13dc5d3f1e --- /dev/null +++ b/dubbo/src/test/java/com/baeldung/dubbo/MulticastRegistryLiveTest.java @@ -0,0 +1,36 @@ +package com.baeldung.dubbo; + +import com.baeldung.dubbo.remote.GreetingsService; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +/** + * @author aiet + */ +public class MulticastRegistryLiveTest { + + private ClassPathXmlApplicationContext remoteContext; + + @Before + public void initRemote() { + remoteContext = new ClassPathXmlApplicationContext("multicast/provider-app.xml"); + remoteContext.start(); + } + + @Test + public void givenProvider_whenConsumerSaysHi_thenGotResponse() { + ClassPathXmlApplicationContext localContext = new ClassPathXmlApplicationContext("multicast/consumer-app.xml"); + localContext.start(); + GreetingsService greetingsService = (GreetingsService) localContext.getBean("greetingsService"); + String hiMessage = greetingsService.sayHi("baeldung"); + + assertNotNull(hiMessage); + assertEquals("hi, baeldung", hiMessage); + } + +} diff --git a/dubbo/src/test/java/com/baeldung/dubbo/ResultCacheLiveTest.java b/dubbo/src/test/java/com/baeldung/dubbo/ResultCacheLiveTest.java new file mode 100644 index 0000000000..401ebc9b94 --- /dev/null +++ b/dubbo/src/test/java/com/baeldung/dubbo/ResultCacheLiveTest.java @@ -0,0 +1,47 @@ +package com.baeldung.dubbo; + +import com.baeldung.dubbo.remote.GreetingsService; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import static org.junit.Assert.*; + +/** + * @author aiet + */ +public class ResultCacheLiveTest { + + private ClassPathXmlApplicationContext remoteContext; + + @Before + public void initRemote() { + remoteContext = new ClassPathXmlApplicationContext("multicast/provider-app-special.xml"); + remoteContext.start(); + } + + @Test + public void givenProvider_whenConsumerSaysHi_thenGotResponse() { + ClassPathXmlApplicationContext localContext = new ClassPathXmlApplicationContext("multicast/consumer-app.xml"); + localContext.start(); + GreetingsService greetingsService = (GreetingsService) localContext.getBean("greetingsService"); + + long before = System.currentTimeMillis(); + String hiMessage = greetingsService.sayHi("baeldung"); + + long timeElapsed = System.currentTimeMillis() - before; + assertTrue(timeElapsed > 5000); + assertNotNull(hiMessage); + assertEquals("hi, baeldung", hiMessage); + + + before = System.currentTimeMillis(); + hiMessage = greetingsService.sayHi("baeldung"); + timeElapsed = System.currentTimeMillis() - before; + assertTrue(timeElapsed < 1000); + assertNotNull(hiMessage); + assertEquals("hi, baeldung", hiMessage); + } + +} diff --git a/dubbo/src/test/java/com/baeldung/dubbo/SimpleRegistryLiveTest.java b/dubbo/src/test/java/com/baeldung/dubbo/SimpleRegistryLiveTest.java new file mode 100644 index 0000000000..72f15cf7ec --- /dev/null +++ b/dubbo/src/test/java/com/baeldung/dubbo/SimpleRegistryLiveTest.java @@ -0,0 +1,39 @@ +package com.baeldung.dubbo; + +import com.baeldung.dubbo.remote.GreetingsService; +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +/** + * @author aiet + */ +public class SimpleRegistryLiveTest { + + private ClassPathXmlApplicationContext remoteContext; + private ClassPathXmlApplicationContext registryContext; + + @Before + public void initRemote() { + registryContext = new ClassPathXmlApplicationContext("simple/registry.xml"); + registryContext.start(); + + remoteContext = new ClassPathXmlApplicationContext("simple/provider-app.xml"); + remoteContext.start(); + } + + @Test + public void givenProvider_whenConsumerSaysHi_thenGotResponse() { + ClassPathXmlApplicationContext localContext = new ClassPathXmlApplicationContext("simple/consumer-app.xml"); + localContext.start(); + GreetingsService greetingsService = (GreetingsService) localContext.getBean("greetingsService"); + String hiMessage = greetingsService.sayHi("baeldung"); + + assertNotNull(hiMessage); + assertEquals("hi, baeldung", hiMessage); + } + +} diff --git a/dubbo/src/test/resources/cluster/consumer-app-failtest.xml b/dubbo/src/test/resources/cluster/consumer-app-failtest.xml new file mode 100644 index 0000000000..beb982db22 --- /dev/null +++ b/dubbo/src/test/resources/cluster/consumer-app-failtest.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/dubbo/src/test/resources/cluster/consumer-app-lb.xml b/dubbo/src/test/resources/cluster/consumer-app-lb.xml new file mode 100644 index 0000000000..268e21b902 --- /dev/null +++ b/dubbo/src/test/resources/cluster/consumer-app-lb.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/dubbo/src/test/resources/cluster/provider-app-default.xml b/dubbo/src/test/resources/cluster/provider-app-default.xml new file mode 100644 index 0000000000..cb51bc1771 --- /dev/null +++ b/dubbo/src/test/resources/cluster/provider-app-default.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dubbo/src/test/resources/cluster/provider-app-failover.xml b/dubbo/src/test/resources/cluster/provider-app-failover.xml new file mode 100644 index 0000000000..95cbee1f90 --- /dev/null +++ b/dubbo/src/test/resources/cluster/provider-app-failover.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dubbo/src/test/resources/cluster/provider-app-special-failsafe.xml b/dubbo/src/test/resources/cluster/provider-app-special-failsafe.xml new file mode 100644 index 0000000000..7a7a139bb3 --- /dev/null +++ b/dubbo/src/test/resources/cluster/provider-app-special-failsafe.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dubbo/src/test/resources/cluster/provider-app-special.xml b/dubbo/src/test/resources/cluster/provider-app-special.xml new file mode 100644 index 0000000000..8e5dc07d61 --- /dev/null +++ b/dubbo/src/test/resources/cluster/provider-app-special.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dubbo/src/test/resources/log4j.properties b/dubbo/src/test/resources/log4j.properties new file mode 100644 index 0000000000..4c15f1b4e0 --- /dev/null +++ b/dubbo/src/test/resources/log4j.properties @@ -0,0 +1,6 @@ +log4j.rootLogger=INFO, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/dubbo/src/test/resources/multicast/consumer-app.xml b/dubbo/src/test/resources/multicast/consumer-app.xml new file mode 100644 index 0000000000..da9a41fd61 --- /dev/null +++ b/dubbo/src/test/resources/multicast/consumer-app.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/dubbo/src/test/resources/multicast/provider-app-special.xml b/dubbo/src/test/resources/multicast/provider-app-special.xml new file mode 100644 index 0000000000..4b22b5aace --- /dev/null +++ b/dubbo/src/test/resources/multicast/provider-app-special.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dubbo/src/test/resources/multicast/provider-app.xml b/dubbo/src/test/resources/multicast/provider-app.xml new file mode 100644 index 0000000000..065d5ddad8 --- /dev/null +++ b/dubbo/src/test/resources/multicast/provider-app.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dubbo/src/test/resources/simple/consumer-app.xml b/dubbo/src/test/resources/simple/consumer-app.xml new file mode 100644 index 0000000000..91f7a666e4 --- /dev/null +++ b/dubbo/src/test/resources/simple/consumer-app.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/dubbo/src/test/resources/simple/provider-app.xml b/dubbo/src/test/resources/simple/provider-app.xml new file mode 100644 index 0000000000..9880172249 --- /dev/null +++ b/dubbo/src/test/resources/simple/provider-app.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dubbo/src/test/resources/simple/registry.xml b/dubbo/src/test/resources/simple/registry.xml new file mode 100644 index 0000000000..9d1372da10 --- /dev/null +++ b/dubbo/src/test/resources/simple/registry.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eclipse/README.md b/eclipse/README.md deleted file mode 100644 index ff12555376..0000000000 --- a/eclipse/README.md +++ /dev/null @@ -1 +0,0 @@ -## Relevant articles: diff --git a/ejb/ejb-session-beans/pom.xml b/ejb/ejb-session-beans/pom.xml index a9b667baac..b89ff6ed15 100644 --- a/ejb/ejb-session-beans/pom.xml +++ b/ejb/ejb-session-beans/pom.xml @@ -82,7 +82,7 @@ maven-compiler-plugin - 3.1 + 3.7.0 1.8 1.8 diff --git a/ethereumj/src/test/java/com/baeldung/ethereumj/controllers/EthControllerTestOne.java b/ethereumj/src/test/java/com/baeldung/ethereumj/controllers/EthControllerLiveTest.java similarity index 90% rename from ethereumj/src/test/java/com/baeldung/ethereumj/controllers/EthControllerTestOne.java rename to ethereumj/src/test/java/com/baeldung/ethereumj/controllers/EthControllerLiveTest.java index 9298c34ec2..f62d229261 100644 --- a/ethereumj/src/test/java/com/baeldung/ethereumj/controllers/EthControllerTestOne.java +++ b/ethereumj/src/test/java/com/baeldung/ethereumj/controllers/EthControllerLiveTest.java @@ -1,25 +1,30 @@ package com.baeldung.ethereumj.controllers; -import com.baeldung.ethereumj.ApplicationMain; -import com.baeldung.ethereumj.Constants; -import com.baeldung.ethereumj.transfer.EthResponse; +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.assertNotNull; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.context.embedded.LocalServerPort; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.http.*; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.web.client.RestTemplate; -import static junit.framework.TestCase.assertTrue; -import static org.junit.Assert.assertNotNull; +import com.baeldung.ethereumj.ApplicationMain; +import com.baeldung.ethereumj.Constants; +import com.baeldung.ethereumj.transfer.EthResponse; @RunWith(SpringRunner.class) @SpringBootTest(classes = ApplicationMain.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) @TestPropertySource(properties = "server.port=8080") -public class EthControllerTestOne { +public class EthControllerLiveTest { @LocalServerPort int port; diff --git a/flyway/README.MD b/flyway/README.MD index 1b3f3c05ee..daeb9012b5 100644 --- a/flyway/README.MD +++ b/flyway/README.MD @@ -1,2 +1,3 @@ ### Relevant Articles: - [Database Migrations with Flyway](http://www.baeldung.com/database-migrations-with-flyway) +- [A Guide to Flyway Callbacks](http://www.baeldung.com/flyway-callbacks) diff --git a/flyway/myFlywayConfig.properties b/flyway/myFlywayConfig.properties index 8bb102930a..6b11f6f277 100644 --- a/flyway/myFlywayConfig.properties +++ b/flyway/myFlywayConfig.properties @@ -1,5 +1,5 @@ -flyway.user=root -flyway.password=mysql +flyway.user=sa +flyway.password= flyway.schemas=app-db -flyway.url=jdbc:mysql://localhost:3306/ +flyway.url=jdbc:h2:mem:DATABASE flyway.locations=filesystem:db/migration \ No newline at end of file diff --git a/flyway/pom.xml b/flyway/pom.xml index 2774602654..84009e4579 100644 --- a/flyway/pom.xml +++ b/flyway/pom.xml @@ -1,36 +1,76 @@ + + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung + flyway - 1.0 + jar + flyway - A sample project to demonstrate Flyway migrations + Flyway Callbacks Demo + parent-boot-5 com.baeldung - parent-modules - 1.0.0-SNAPSHOT + 0.0.1-SNAPSHOT + ../parent-boot-5 + + UTF-8 + UTF-8 + 1.8 + + + + org.flywaydb + flyway-core + 5.0.2 + + + + org.springframework.boot + spring-boot-starter-jdbc + + mysql mysql-connector-java - ${mysql.version} + 6.0.3 + + + + com.h2database + h2 + test + + + org.springframework.boot + spring-boot-starter-test + test + org.flywaydb flyway-maven-plugin - ${flyway-maven-plugin.version} + 5.0.2 + + + com.h2database + h2 + ${h2.version} + + + + + org.springframework.boot + spring-boot-maven-plugin - - 6.0.5 - 4.0.3 - - \ No newline at end of file + + diff --git a/flyway/src/main/java/com/baeldung/flywaycallbacks/ExampleFlywayCallback.java b/flyway/src/main/java/com/baeldung/flywaycallbacks/ExampleFlywayCallback.java new file mode 100644 index 0000000000..6ad4ce510c --- /dev/null +++ b/flyway/src/main/java/com/baeldung/flywaycallbacks/ExampleFlywayCallback.java @@ -0,0 +1,33 @@ +package com.baeldung.flywaycallbacks; + +import java.sql.Connection; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.flywaydb.core.api.MigrationInfo; +import org.flywaydb.core.api.callback.BaseFlywayCallback; + +public class ExampleFlywayCallback extends BaseFlywayCallback { + + private Log log = LogFactory.getLog(getClass()); + + @Override + public void afterEachMigrate(Connection connection, MigrationInfo info) { + log.info("> afterEachMigrate"); + } + + @Override + public void afterMigrate(Connection connection) { + log.info("> afterMigrate"); + } + + @Override + public void beforeEachMigrate(Connection connection, MigrationInfo info) { + log.info("> beforeEachMigrate"); + } + + @Override + public void beforeMigrate(Connection connection) { + log.info("> beforeMigrate"); + } +} diff --git a/flyway/src/main/java/com/baeldung/flywaycallbacks/FlywayApplication.java b/flyway/src/main/java/com/baeldung/flywaycallbacks/FlywayApplication.java new file mode 100644 index 0000000000..34d794f7d1 --- /dev/null +++ b/flyway/src/main/java/com/baeldung/flywaycallbacks/FlywayApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.flywaycallbacks; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class FlywayApplication { + + public static void main(String[] args) { + SpringApplication.run(FlywayApplication.class, args); + } + +} diff --git a/spring-rest-docs/src/main/resources/application.properties b/flyway/src/main/resources/application.properties similarity index 100% rename from spring-rest-docs/src/main/resources/application.properties rename to flyway/src/main/resources/application.properties diff --git a/flyway/src/main/resources/db/callbacks/beforeEachMigrate.sql b/flyway/src/main/resources/db/callbacks/beforeEachMigrate.sql new file mode 100644 index 0000000000..7a8f142d22 --- /dev/null +++ b/flyway/src/main/resources/db/callbacks/beforeEachMigrate.sql @@ -0,0 +1 @@ +SELECT 1 \ No newline at end of file diff --git a/flyway/src/main/resources/db/callbacks/beforeMigrate.sql b/flyway/src/main/resources/db/callbacks/beforeMigrate.sql new file mode 100644 index 0000000000..7a8f142d22 --- /dev/null +++ b/flyway/src/main/resources/db/callbacks/beforeMigrate.sql @@ -0,0 +1 @@ +SELECT 1 \ No newline at end of file diff --git a/flyway/src/main/resources/db/migration/V1_0__add_table_one.sql b/flyway/src/main/resources/db/migration/V1_0__add_table_one.sql new file mode 100644 index 0000000000..526d8e2aea --- /dev/null +++ b/flyway/src/main/resources/db/migration/V1_0__add_table_one.sql @@ -0,0 +1,5 @@ +create table table_one ( + id numeric, + name varchar(50), + constraint pk_table_one primary key (id) +); \ No newline at end of file diff --git a/flyway/src/main/resources/db/migration/V1_1__add_table_two.sql b/flyway/src/main/resources/db/migration/V1_1__add_table_two.sql new file mode 100644 index 0000000000..d51f4a5d56 --- /dev/null +++ b/flyway/src/main/resources/db/migration/V1_1__add_table_two.sql @@ -0,0 +1,5 @@ +create table table_two ( + id numeric, + name varchar(50), + constraint pk_table_two primary key (id) +); \ No newline at end of file diff --git a/flyway/src/main/resources/logback.xml b/flyway/src/main/resources/logback.xml new file mode 100644 index 0000000000..7f4aa46e0d --- /dev/null +++ b/flyway/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayApplicationTest.java b/flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayApplicationTest.java new file mode 100644 index 0000000000..5e96fff64d --- /dev/null +++ b/flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayApplicationTest.java @@ -0,0 +1,68 @@ +package com.baeldung.flywaycallbacks; + +import javax.sql.DataSource; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.flywaydb.core.Flyway; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD) +@ContextConfiguration(classes = FlywayCallbackTestConfig.class) +public class FlywayApplicationTest { + + private Log log = LogFactory.getLog(getClass()); + + @Autowired + private DataSource dataSource; + + @Test + public void migrateWithNoCallbacks() { + logTestBoundary("migrateWithNoCallbacks"); + Flyway flyway = new Flyway(); + flyway.setDataSource(dataSource); + flyway.setLocations("db/migration"); + flyway.migrate(); + } + + @Test + public void migrateWithJavaCallbacks() { + logTestBoundary("migrateWithJavaCallbacks"); + Flyway flyway = new Flyway(); + flyway.setDataSource(dataSource); + flyway.setLocations("db/migration"); + flyway.setCallbacks(new ExampleFlywayCallback()); + flyway.migrate(); + } + + @Test + public void migrateWithSqlCallbacks() { + logTestBoundary("migrateWithSqlCallbacks"); + Flyway flyway = new Flyway(); + flyway.setDataSource(dataSource); + flyway.setLocations("db/migration", "db/callbacks"); + flyway.migrate(); + } + + @Test + public void migrateWithSqlAndJavaCallbacks() { + logTestBoundary("migrateWithSqlAndJavaCallbacks"); + Flyway flyway = new Flyway(); + flyway.setDataSource(dataSource); + flyway.setLocations("db/migration", "db/callbacks"); + flyway.setCallbacks(new ExampleFlywayCallback()); + flyway.migrate(); + } + + private void logTestBoundary(String testName) { + System.out.println("\n"); + log.info("> " + testName); + } + } diff --git a/flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayCallbackTestConfig.java b/flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayCallbackTestConfig.java new file mode 100644 index 0000000000..f64b490dcf --- /dev/null +++ b/flyway/src/test/java/com/baeldung/flywaycallbacks/FlywayCallbackTestConfig.java @@ -0,0 +1,21 @@ +package com.baeldung.flywaycallbacks; + +import javax.sql.DataSource; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; + +@Configuration +public class FlywayCallbackTestConfig { + + @Bean + public DataSource createDatasource() { + EmbeddedDatabaseBuilder dbBuilder = new EmbeddedDatabaseBuilder(); + return dbBuilder.setType(EmbeddedDatabaseType.H2) + .setName("DATABASE") + .build(); + } + +} diff --git a/geotools/pom.xml b/geotools/pom.xml index 37b4a2338a..d0eb787be8 100644 --- a/geotools/pom.xml +++ b/geotools/pom.xml @@ -59,6 +59,7 @@ true org.apache.maven.plugins maven-compiler-plugin + 3.7.0 1.8 1.8 diff --git a/gradle/README.md b/gradle/README.md index ff12555376..5fc7b40e3f 100644 --- a/gradle/README.md +++ b/gradle/README.md @@ -1 +1,4 @@ ## Relevant articles: +- [Introduction to Gradle](http://www.baeldung.com/gradle) +- [Writing Custom Gradle Plugins](http://www.baeldung.com/gradle-create-plugin) +- [Creating a Fat Jar in Gradle](http://www.baeldung.com/gradle-fat-jar) diff --git a/gradle/gradle-fat-jar/build.gradle b/gradle/gradle-fat-jar/build.gradle new file mode 100644 index 0000000000..6afad80652 --- /dev/null +++ b/gradle/gradle-fat-jar/build.gradle @@ -0,0 +1,41 @@ +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.1' + } +} + +apply plugin: 'java' +apply plugin: 'com.github.johnrengelman.shadow' + +repositories { + mavenCentral() +} + +jar { + manifest { + attributes "Main-Class": "com.baeldung.fatjar.Application" + } + + from { + configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } + } +} + + +task customFatJar(type: Jar) { + manifest { + attributes 'Main-Class': 'com.baeldung.fatjar.Application' + } + baseName = 'all-in-one-jar' + from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } + with jar +} + + +dependencies{ + compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25' + compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25' +} \ No newline at end of file diff --git a/gradle/gradle-fat-jar/src/main/java/com/baeldung/fatjar/Application.java b/gradle/gradle-fat-jar/src/main/java/com/baeldung/fatjar/Application.java new file mode 100644 index 0000000000..470d89c332 --- /dev/null +++ b/gradle/gradle-fat-jar/src/main/java/com/baeldung/fatjar/Application.java @@ -0,0 +1,16 @@ +package com.baeldung.fatjar; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class Application { + + static final Logger logger = LoggerFactory.getLogger(Application.class); + + public static void main(String[] args) { + + logger.info("Hello at Baeldung!"); + } + +} \ No newline at end of file diff --git a/gradle/plugin/build.gradle b/gradle/plugin/build.gradle new file mode 100644 index 0000000000..8d7329c1b0 --- /dev/null +++ b/gradle/plugin/build.gradle @@ -0,0 +1,14 @@ + repositories{ + mavenCentral() + } + apply plugin: 'java' + apply plugin: 'maven' + apply plugin: com.baeldung.GreetingPlugin + dependencies { + compile gradleApi() + } + + greeting { + greeter = "Stranger" + message = "Message from the build script!" + } \ No newline at end of file diff --git a/gradle/plugin/buildSrc/src/main/java/com/baeldung/GreetingPlugin.java b/gradle/plugin/buildSrc/src/main/java/com/baeldung/GreetingPlugin.java new file mode 100644 index 0000000000..ad32ecfe91 --- /dev/null +++ b/gradle/plugin/buildSrc/src/main/java/com/baeldung/GreetingPlugin.java @@ -0,0 +1,17 @@ +package com.baeldung; + +import org.gradle.api.Plugin; +import org.gradle.api.Project; + +public class GreetingPlugin implements Plugin { + @Override + public void apply(Project project) { + + GreetingPluginExtension extension = project.getExtensions().create("greeting", GreetingPluginExtension.class); + + project.task("hello").doLast(task -> { + System.out.println("Hello, " + extension.getGreeter()); + System.out.println("I have a message for You: " + extension.getMessage()); } + ); + } +} \ No newline at end of file diff --git a/gradle/plugin/buildSrc/src/main/java/com/baeldung/GreetingPluginExtension.java b/gradle/plugin/buildSrc/src/main/java/com/baeldung/GreetingPluginExtension.java new file mode 100644 index 0000000000..2ff64a43f5 --- /dev/null +++ b/gradle/plugin/buildSrc/src/main/java/com/baeldung/GreetingPluginExtension.java @@ -0,0 +1,22 @@ +package com.baeldung; + +public class GreetingPluginExtension { + private String greeter = "Baeldung"; + private String message = "Message from Plugin!"; + + public String getGreeter() { + return greeter; + } + + public void setGreeter(String greeter) { + this.greeter = greeter; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/guava/src/test/java/org/baeldung/guava/GuavaCacheUnitTest.java b/guava/src/test/java/org/baeldung/guava/GuavaCacheUnitTest.java index eb67d8af44..49ce6b1a09 100644 --- a/guava/src/test/java/org/baeldung/guava/GuavaCacheUnitTest.java +++ b/guava/src/test/java/org/baeldung/guava/GuavaCacheUnitTest.java @@ -89,7 +89,7 @@ public class GuavaCacheUnitTest { cache.getUnchecked("hello"); assertEquals(1, cache.size()); cache.getUnchecked("hello"); - Thread.sleep(300); + Thread.sleep(3); cache.getUnchecked("test"); assertEquals(1, cache.size()); assertNull(cache.getIfPresent("hello")); @@ -106,7 +106,7 @@ public class GuavaCacheUnitTest { final LoadingCache cache = CacheBuilder.newBuilder().expireAfterWrite(2, TimeUnit.MILLISECONDS).build(loader); cache.getUnchecked("hello"); assertEquals(1, cache.size()); - Thread.sleep(300); + Thread.sleep(3); cache.getUnchecked("test"); assertEquals(1, cache.size()); assertNull(cache.getIfPresent("hello")); @@ -203,8 +203,9 @@ public class GuavaCacheUnitTest { private String getSuffix(final String str) { final int lastIndex = str.lastIndexOf('.'); - if (lastIndex == -1) + if (lastIndex == -1) { return null; + } return str.substring(lastIndex + 1); } diff --git a/guest/core-java-9/pom.xml b/guest/core-java-9/pom.xml index d588df4abc..0e227798af 100644 --- a/guest/core-java-9/pom.xml +++ b/guest/core-java-9/pom.xml @@ -16,7 +16,7 @@ maven-compiler-plugin - 3.6.2 + 3.7.0 1.9 1.9 diff --git a/guest/core-java/pom.xml b/guest/core-java/pom.xml index 548d5c663b..222716386b 100644 --- a/guest/core-java/pom.xml +++ b/guest/core-java/pom.xml @@ -22,7 +22,7 @@ maven-compiler-plugin - 3.5 + 3.7.0 1.8 1.8 diff --git a/guest/deep-jsf/README.md b/guest/deep-jsf/README.md new file mode 100644 index 0000000000..b5f532535b --- /dev/null +++ b/guest/deep-jsf/README.md @@ -0,0 +1,15 @@ +## Building + +To build the module, use Maven's `package` goal: + +``` +mvn clean package +``` + +The `war` file will be available at `target/deep-jsf.war` + +## Running + +The `war` application is deployed to a Java EE 7 compliant application server, for example, to GlassFish 4 or later. + +The example then will be accessible at http://localhost:8080/deep-jsf/index.xhtml \ No newline at end of file diff --git a/guest/deep-jsf/pom.xml b/guest/deep-jsf/pom.xml new file mode 100644 index 0000000000..68801ba010 --- /dev/null +++ b/guest/deep-jsf/pom.xml @@ -0,0 +1,40 @@ + + 4.0.0 + + com.stackify + deep-jsf + 0.0.1-SNAPSHOT + war + + + false + + + + + + javax + javaee-api + 7.0 + provided + + + + + + deep-jsf + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + + + \ No newline at end of file diff --git a/guest/deep-jsf/src/main/java/com/stackify/deepjsf/GreetControllerBean.java b/guest/deep-jsf/src/main/java/com/stackify/deepjsf/GreetControllerBean.java new file mode 100644 index 0000000000..7f5cf99781 --- /dev/null +++ b/guest/deep-jsf/src/main/java/com/stackify/deepjsf/GreetControllerBean.java @@ -0,0 +1,14 @@ +package com.stackify.deepjsf; + +import javax.faces.bean.ManagedBean; +import javax.faces.bean.RequestScoped; + +@ManagedBean +@RequestScoped +public class GreetControllerBean { + + public String greet() { + return "greet"; + } + +} diff --git a/guest/deep-jsf/src/main/java/com/stackify/deepjsf/PhaseListenerBean.java b/guest/deep-jsf/src/main/java/com/stackify/deepjsf/PhaseListenerBean.java new file mode 100644 index 0000000000..d4f6a6e815 --- /dev/null +++ b/guest/deep-jsf/src/main/java/com/stackify/deepjsf/PhaseListenerBean.java @@ -0,0 +1,47 @@ +package com.stackify.deepjsf; + +import javax.faces.bean.ManagedBean; +import javax.faces.bean.RequestScoped; +import javax.faces.component.UIComponent; +import javax.faces.component.UIViewRoot; +import javax.faces.component.visit.VisitContext; +import javax.faces.component.visit.VisitResult; +import javax.faces.event.PhaseEvent; +import javax.faces.event.PhaseId; +import javax.servlet.http.HttpServletRequest; + +@ManagedBean +@RequestScoped +public class PhaseListenerBean { + + public void beforeListener(PhaseEvent event) { + if (!event.getPhaseId().equals(PhaseId.RENDER_RESPONSE)) { + return; + } + UIViewRoot root = event.getFacesContext().getViewRoot(); + + boolean showNewFeature = showNewFeatureForIp(event); + + processComponentTree(root, event, showNewFeature); + } + + private boolean showNewFeatureForIp(PhaseEvent event) { + HttpServletRequest request = (HttpServletRequest) event.getFacesContext() + .getExternalContext().getRequest(); + String ip = request.getRemoteAddr(); + return !ip.startsWith("127.0"); + } + + private void processComponentTree(UIComponent component, PhaseEvent event, boolean show) { + component.visitTree(VisitContext.createVisitContext(event.getFacesContext()), + (context, target) -> { + if (target.getId() != null + && target.getId().startsWith("new-feature-") + && !show) { + target.setRendered(false); + } + return VisitResult.ACCEPT; + }); + } + +} diff --git a/guest/deep-jsf/src/main/java/com/stackify/deepjsf/UserBean.java b/guest/deep-jsf/src/main/java/com/stackify/deepjsf/UserBean.java new file mode 100644 index 0000000000..f6c94e87b8 --- /dev/null +++ b/guest/deep-jsf/src/main/java/com/stackify/deepjsf/UserBean.java @@ -0,0 +1,48 @@ +package com.stackify.deepjsf; + +import javax.faces.bean.ManagedBean; +import javax.faces.bean.SessionScoped; +import javax.faces.event.ValueChangeEvent; + +@ManagedBean +@SessionScoped +public class UserBean { + + private String name = ""; + + private String lastName = ""; + + private String proposedLogin = ""; + + public void nameChanged(ValueChangeEvent event) { + this.proposedLogin = event.getNewValue() + "-" + lastName; + } + + public void lastNameChanged(ValueChangeEvent event) { + this.proposedLogin = name + "-" + event.getNewValue(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getProposedLogin() { + return proposedLogin; + } + + public void setProposedLogin(String proposedLogin) { + this.proposedLogin = proposedLogin; + } +} diff --git a/guest/deep-jsf/src/main/java/com/stackify/deepjsf/UserControllerBean.java b/guest/deep-jsf/src/main/java/com/stackify/deepjsf/UserControllerBean.java new file mode 100644 index 0000000000..c2a46a019a --- /dev/null +++ b/guest/deep-jsf/src/main/java/com/stackify/deepjsf/UserControllerBean.java @@ -0,0 +1,14 @@ +package com.stackify.deepjsf; + +import javax.faces.bean.ManagedBean; +import javax.faces.bean.RequestScoped; + +@ManagedBean +@RequestScoped +public class UserControllerBean { + + public String register() { + return "register-success"; + } + +} diff --git a/guest/deep-jsf/src/main/webapp/WEB-INF/faces-config.xml b/guest/deep-jsf/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000000..264e60065c --- /dev/null +++ b/guest/deep-jsf/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,15 @@ + + + + + /register.xhtml + + register-success + /hello.xhtml + + + + \ No newline at end of file diff --git a/guest/deep-jsf/src/main/webapp/greet.xhtml b/guest/deep-jsf/src/main/webapp/greet.xhtml new file mode 100644 index 0000000000..50c79c64e1 --- /dev/null +++ b/guest/deep-jsf/src/main/webapp/greet.xhtml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/guest/deep-jsf/src/main/webapp/hello.xhtml b/guest/deep-jsf/src/main/webapp/hello.xhtml new file mode 100644 index 0000000000..f9c3745dca --- /dev/null +++ b/guest/deep-jsf/src/main/webapp/hello.xhtml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/guest/deep-jsf/src/main/webapp/index.xhtml b/guest/deep-jsf/src/main/webapp/index.xhtml new file mode 100644 index 0000000000..de99b89815 --- /dev/null +++ b/guest/deep-jsf/src/main/webapp/index.xhtml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/guest/deep-jsf/src/main/webapp/register.xhtml b/guest/deep-jsf/src/main/webapp/register.xhtml new file mode 100644 index 0000000000..ba1b8e0233 --- /dev/null +++ b/guest/deep-jsf/src/main/webapp/register.xhtml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/guest/junit5-example/pom.xml b/guest/junit5-example/pom.xml index aec7f9228a..37c71e77af 100644 --- a/guest/junit5-example/pom.xml +++ b/guest/junit5-example/pom.xml @@ -41,7 +41,7 @@ maven-compiler-plugin - 3.5 + 3.7.0 1.8 1.8 diff --git a/guest/log4j2-example/pom.xml b/guest/log4j2-example/pom.xml index 197f3df2b9..43f1d106f0 100644 --- a/guest/log4j2-example/pom.xml +++ b/guest/log4j2-example/pom.xml @@ -39,7 +39,7 @@ maven-compiler-plugin - 3.5 + 3.7.0 1.8 1.8 diff --git a/guest/logback-example/pom.xml b/guest/logback-example/pom.xml index 9d88c94197..8ad406fc89 100644 --- a/guest/logback-example/pom.xml +++ b/guest/logback-example/pom.xml @@ -30,7 +30,7 @@ maven-compiler-plugin - 3.5 + 3.7.0 1.8 1.8 diff --git a/guest/memory-leaks/pom.xml b/guest/memory-leaks/pom.xml index eada59c5a1..82361779e2 100644 --- a/guest/memory-leaks/pom.xml +++ b/guest/memory-leaks/pom.xml @@ -28,7 +28,7 @@ maven-compiler-plugin - 3.5 + 3.7.0 1.8 1.8 diff --git a/guest/remote-debugging/README.md b/guest/remote-debugging/README.md new file mode 100644 index 0000000000..cc63e7fd59 --- /dev/null +++ b/guest/remote-debugging/README.md @@ -0,0 +1,16 @@ +## Building + +To build the module, use Maven's `package` goal: + +``` +mvn clean package +``` + +The `war` file will be available at `target/remote-debugging.war` + +## Running + +The `war` application is deployed to Apache Tomcat 8 or any other Java Web or Application server. +To deploy it to the Apache Tomcat 8 server, drop it in the `tomcat/webapps` directory. + +The service then will be accessible at http://localhost:8080/remote-debugging/hello?name=John \ No newline at end of file diff --git a/guest/remote-debugging/pom.xml b/guest/remote-debugging/pom.xml new file mode 100644 index 0000000000..d958d4c681 --- /dev/null +++ b/guest/remote-debugging/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + com.stackify + java-remote-debugging + 0.0.1-SNAPSHOT + war + + + org.springframework.boot + spring-boot-starter-parent + 1.5.8.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-tomcat + provided + + + + + + remote-debugging + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/guest/remote-debugging/src/main/java/com/stackify/debug/JavaRemoteDebuggingApplication.java b/guest/remote-debugging/src/main/java/com/stackify/debug/JavaRemoteDebuggingApplication.java new file mode 100644 index 0000000000..9d1a632638 --- /dev/null +++ b/guest/remote-debugging/src/main/java/com/stackify/debug/JavaRemoteDebuggingApplication.java @@ -0,0 +1,12 @@ +package com.stackify.debug; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class JavaRemoteDebuggingApplication { + + public static void main(String[] args) { + SpringApplication.run(JavaRemoteDebuggingApplication.class, args); + } +} diff --git a/guest/remote-debugging/src/main/java/com/stackify/debug/config/WebInitializer.java b/guest/remote-debugging/src/main/java/com/stackify/debug/config/WebInitializer.java new file mode 100644 index 0000000000..b69e2b6c77 --- /dev/null +++ b/guest/remote-debugging/src/main/java/com/stackify/debug/config/WebInitializer.java @@ -0,0 +1,12 @@ +package com.stackify.debug.config; + +import com.stackify.debug.JavaRemoteDebuggingApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.support.SpringBootServletInitializer; + +public class WebInitializer extends SpringBootServletInitializer { + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(JavaRemoteDebuggingApplication.class); + } +} diff --git a/guest/remote-debugging/src/main/java/com/stackify/debug/rest/HelloController.java b/guest/remote-debugging/src/main/java/com/stackify/debug/rest/HelloController.java new file mode 100644 index 0000000000..8c614a36ec --- /dev/null +++ b/guest/remote-debugging/src/main/java/com/stackify/debug/rest/HelloController.java @@ -0,0 +1,16 @@ +package com.stackify.debug.rest; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController("/hello") +public class HelloController { + + @GetMapping + public String hello(@RequestParam("name") String name) { + String message = "Hello, " + name; + return message; + } + +} diff --git a/guest/spring-boot-app/pom.xml b/guest/spring-boot-app/pom.xml index 88b8c229e3..ba57bbd5c5 100644 --- a/guest/spring-boot-app/pom.xml +++ b/guest/spring-boot-app/pom.xml @@ -38,7 +38,7 @@ maven-compiler-plugin - 3.6.1 + 3.7.0 1.8 1.8 diff --git a/guest/thread-pools/pom.xml b/guest/thread-pools/pom.xml index 72a10213c4..4588f3da4c 100644 --- a/guest/thread-pools/pom.xml +++ b/guest/thread-pools/pom.xml @@ -17,7 +17,7 @@ maven-compiler-plugin - 3.5.1 + 3.7.0 1.8 1.8 diff --git a/guest/tomcat-app/pom.xml b/guest/tomcat-app/pom.xml index e62c6f78d8..2a4bf8ef59 100644 --- a/guest/tomcat-app/pom.xml +++ b/guest/tomcat-app/pom.xml @@ -52,7 +52,7 @@ maven-compiler-plugin - 3.5.1 + 3.7.0 1.8 1.8 diff --git a/guest/webservices/rest-client/pom.xml b/guest/webservices/rest-client/pom.xml index af03ac1948..016fa54af7 100644 --- a/guest/webservices/rest-client/pom.xml +++ b/guest/webservices/rest-client/pom.xml @@ -8,7 +8,7 @@ maven-compiler-plugin - 3.5 + 3.7.0 1.8 1.8 diff --git a/guest/webservices/rest-server/pom.xml b/guest/webservices/rest-server/pom.xml index 350e7eb9c9..69d370965f 100644 --- a/guest/webservices/rest-server/pom.xml +++ b/guest/webservices/rest-server/pom.xml @@ -33,7 +33,7 @@ maven-compiler-plugin - 3.5.1 + 3.7.0 1.8 1.8 diff --git a/hibernate5/README.md b/hibernate5/README.md index 4690ebbe76..5143b097ce 100644 --- a/hibernate5/README.md +++ b/hibernate5/README.md @@ -2,3 +2,8 @@ - [Dynamic Mapping with Hibernate](http://www.baeldung.com/hibernate-dynamic-mapping) - [An Overview of Identifiers in Hibernate](http://www.baeldung.com/hibernate-identifiers) +- [Hibernate – Mapping Date and Time](http://www.baeldung.com/hibernate-date-time) +- [Hibernate Inheritance Mapping](http://www.baeldung.com/hibernate-inheritance) +- [A Guide to Multitenancy in Hibernate 5](http://www.baeldung.com/hibernate-5-multitenancy) +- [Introduction to Hibernate Spatial](http://www.baeldung.com/hibernate-spatial) +- [Hibernate Interceptors](http://www.baeldung.com/hibernate-interceptor) diff --git a/hibernate5/pom.xml b/hibernate5/pom.xml index 3b0b2fcd88..31fe10ee97 100644 --- a/hibernate5/pom.xml +++ b/hibernate5/pom.xml @@ -16,7 +16,7 @@ UTF-8 - 3.6.0 + 3.7.0 5.2.12.Final 6.0.6 2.2.3 @@ -41,7 +41,7 @@ com.h2database h2 - 1.4.194 + 1.4.196 org.hibernate diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/App.java b/hibernate5/src/main/java/com/baeldung/hibernate/App.java deleted file mode 100644 index 26a40bb782..0000000000 --- a/hibernate5/src/main/java/com/baeldung/hibernate/App.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.hibernate; - -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.Transaction; - -import com.baeldung.hibernate.pojo.Supplier; - -/** - * Hello world! - * - */ -public class App { - public static void main(String[] args) { - try { - // NOTE: this is just for boostrap testing for multitenancy. - System.out.println("Checking the system."); - SessionFactory sessionFactory = HibernateMultiTenantUtil.getSessionFactory(); - Session currentSession = sessionFactory.withOptions().tenantIdentifier("h2db1").openSession(); - Transaction transaction = currentSession.getTransaction(); - transaction.begin(); - currentSession.createCriteria(Supplier.class).list().stream().forEach(System.out::println); - transaction.commit(); - - } catch (Exception e) { - e.printStackTrace(); - } - - } -} diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/ConfigurableMultiTenantConnectionProvider.java b/hibernate5/src/main/java/com/baeldung/hibernate/ConfigurableMultiTenantConnectionProvider.java deleted file mode 100644 index b9ed2bd139..0000000000 --- a/hibernate5/src/main/java/com/baeldung/hibernate/ConfigurableMultiTenantConnectionProvider.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baeldung.hibernate; - -import java.sql.Connection; -import java.sql.SQLException; -import java.util.HashMap; -import java.util.Map; - -import org.hibernate.engine.jdbc.connections.spi.AbstractMultiTenantConnectionProvider; -import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; - -public class ConfigurableMultiTenantConnectionProvider extends AbstractMultiTenantConnectionProvider { - - private final Map connectionProviderMap = - new HashMap<>(); - - - public ConfigurableMultiTenantConnectionProvider( - Map connectionProviderMap) { - this.connectionProviderMap.putAll( connectionProviderMap ); - } - @Override - protected ConnectionProvider getAnyConnectionProvider() { - System.out.println("Any"); - return connectionProviderMap.values().iterator().next(); - } - - @Override - protected ConnectionProvider selectConnectionProvider(String tenantIdentifier) { - System.out.println("Specific"); - return connectionProviderMap.get( tenantIdentifier ); - } - - @Override - public Connection getConnection(String tenantIdentifier) throws SQLException { - Connection connection = super.getConnection(tenantIdentifier); - // uncomment to see option 2 for SCHEMA strategy. - //connection.createStatement().execute("SET SCHEMA '" + tenantIdentifier + "'"); - return connection; - } - -} \ No newline at end of file diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/HibernateMultiTenantUtil.java b/hibernate5/src/main/java/com/baeldung/hibernate/HibernateMultiTenantUtil.java deleted file mode 100644 index 30f3c3cf53..0000000000 --- a/hibernate5/src/main/java/com/baeldung/hibernate/HibernateMultiTenantUtil.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.baeldung.hibernate; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - -import org.hibernate.SessionFactory; -import org.hibernate.boot.Metadata; -import org.hibernate.boot.MetadataSources; -import org.hibernate.boot.registry.StandardServiceRegistryBuilder; -import org.hibernate.cfg.AvailableSettings; -import org.hibernate.cfg.Configuration; -import org.hibernate.cfg.Environment; -import org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl; -import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; -import org.hibernate.service.ServiceRegistry; - -import com.baeldung.hibernate.pojo.Supplier; - -public class HibernateMultiTenantUtil { - private static SessionFactory sessionFactory; - private static Map connectionProviderMap = new HashMap<>(); - private static final String[] tenantDBNames = { "mydb1", "mydb2" }; - - public static SessionFactory getSessionFactory() throws UnsupportedTenancyException, IOException { - if (sessionFactory == null) { - // Configuration configuration = new Configuration().configure(); - ServiceRegistry serviceRegistry = configureServiceRegistry(); - sessionFactory = makeSessionFactory(serviceRegistry); - - } - return sessionFactory; - } - - private static SessionFactory makeSessionFactory(ServiceRegistry serviceRegistry) { - MetadataSources metadataSources = new MetadataSources(serviceRegistry); - for (Class annotatedClasses : getAnnotatedClasses()) { - metadataSources.addAnnotatedClass(annotatedClasses); - } - - Metadata metadata = metadataSources.buildMetadata(); - return metadata.getSessionFactoryBuilder() - .build(); - - } - - private static Class[] getAnnotatedClasses() { - return new Class[] { Supplier.class }; - } - - private static ServiceRegistry configureServiceRegistry() throws UnsupportedTenancyException, IOException { - - // Properties properties = configuration.getProperties(); - Properties properties = getProperties(); - - connectionProviderMap = setUpConnectionProviders(properties, tenantDBNames); - properties.put(AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER, new ConfigurableMultiTenantConnectionProvider(connectionProviderMap)); - - return new StandardServiceRegistryBuilder().applySettings(properties) - .build(); - } - - private static Properties getProperties() throws IOException { - Properties properties = new Properties(); - URL propertiesURL = Thread.currentThread() - .getContextClassLoader() - .getResource("hibernate-multitenancy.properties"); - FileInputStream inputStream = new FileInputStream(propertiesURL.getFile()); - properties.load(inputStream); - System.out.println("LOADED PROPERTIES FROM hibernate.properties"); - - return properties; - } - - private static Map setUpConnectionProviders(Properties properties, String[] tenantNames) throws UnsupportedTenancyException { - Map providerMap = new HashMap<>(); - for (String tenant : tenantNames) { - DriverManagerConnectionProviderImpl connectionProvider = new DriverManagerConnectionProviderImpl(); - - String tenantStrategy = properties.getProperty("hibernate.multiTenancy"); - System.out.println("Strategy:" + tenantStrategy); - properties.put(Environment.URL, tenantUrl(properties.getProperty(Environment.URL), tenant, tenantStrategy)); - System.out.println("URL:" + properties.getProperty(Environment.URL)); - connectionProvider.configure(properties); - System.out.println("Tenant:" + tenant); - providerMap.put(tenant, connectionProvider); - - } - System.out.println("Added connections for:"); - providerMap.keySet() - .stream() - .forEach(System.out::println); - return providerMap; - } - - private static Object tenantUrl(String originalUrl, String tenant, String tenantStrategy) throws UnsupportedTenancyException { - if (tenantStrategy.toUpperCase() - .equals("DATABASE")) { - return originalUrl.replace(DEFAULT_DB_NAME, tenant); - } else if (tenantStrategy.toUpperCase() - .equals("SCHEMA")) { - return originalUrl + String.format(SCHEMA_TOKEN, tenant); - } else { - throw new UnsupportedTenancyException("Not yet supported"); - } - } - - public static final String SCHEMA_TOKEN = ";INIT=CREATE SCHEMA IF NOT EXISTS %1$s\\;SET SCHEMA %1$s"; - public static final String DEFAULT_DB_NAME = "mydb1"; - -} diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/HibernateUtil.java b/hibernate5/src/main/java/com/baeldung/hibernate/HibernateUtil.java index f1fc22d29a..25fc0d7b02 100644 --- a/hibernate5/src/main/java/com/baeldung/hibernate/HibernateUtil.java +++ b/hibernate5/src/main/java/com/baeldung/hibernate/HibernateUtil.java @@ -6,6 +6,7 @@ import com.baeldung.hibernate.pojo.OrderEntry; import com.baeldung.hibernate.pojo.OrderEntryIdClass; import com.baeldung.hibernate.pojo.OrderEntryPK; import com.baeldung.hibernate.pojo.PointEntity; +import com.baeldung.hibernate.pojo.PolygonEntity; import com.baeldung.hibernate.pojo.Product; import com.baeldung.hibernate.pojo.Phone; import com.baeldung.hibernate.pojo.TemporalValues; @@ -79,6 +80,7 @@ public class HibernateUtil { metadataSources.addAnnotatedClass(Car.class); metadataSources.addAnnotatedClass(Bag.class); metadataSources.addAnnotatedClass(PointEntity.class); + metadataSources.addAnnotatedClass(PolygonEntity.class); Metadata metadata = metadataSources.buildMetadata(); return metadata.getSessionFactoryBuilder() diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/dao/GenericDao.java b/hibernate5/src/main/java/com/baeldung/hibernate/dao/GenericDao.java deleted file mode 100644 index 85c96d8b10..0000000000 --- a/hibernate5/src/main/java/com/baeldung/hibernate/dao/GenericDao.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.hibernate.dao; - -import java.util.List; - -public interface GenericDao { - - void save (T entity); - void delete (T Entity); - T findByName(String name); - List findAll(); - void populate(); -} diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/dao/SupplierDao.java b/hibernate5/src/main/java/com/baeldung/hibernate/dao/SupplierDao.java deleted file mode 100644 index c0397ee5bb..0000000000 --- a/hibernate5/src/main/java/com/baeldung/hibernate/dao/SupplierDao.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.baeldung.hibernate.dao; - -import java.util.ArrayList; -import java.util.List; - -import org.hibernate.Criteria; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.Transaction; -import org.hibernate.criterion.Expression; - -import com.baeldung.hibernate.pojo.Supplier; - -public class SupplierDao implements GenericDao{ - private SessionFactory sessionFactory; - private String tenant; - - public SupplierDao(SessionFactory sessionFactory, String tenant) { - this.sessionFactory = sessionFactory; - this.tenant = tenant; - populate(); - } - - @Override - public void save(Supplier entity) { - Session session = sessionFactory.withOptions().tenantIdentifier(tenant).openSession(); - session.save(entity); - } - - @Override - public void delete(Supplier supplier) { - Session session = sessionFactory.withOptions().tenantIdentifier(tenant).openSession(); - session.delete(supplier); - } - - @Override - public Supplier findByName(String name) { - Session session = sessionFactory.withOptions().tenantIdentifier(tenant).openSession(); - List fetchedSuppliers = session.createCriteria(Supplier.class).add(Expression.eq("name", name)).list(); - if (fetchedSuppliers.size()>0) { - return fetchedSuppliers.get(0); - }else { - return null; - } - } - - @Override - public List findAll() { - Session session = sessionFactory.withOptions().tenantIdentifier(tenant).openSession(); - return session.createCriteria(Supplier.class).list(); - } - - @Override - public void populate() { - System.out.println("Init DB1"); - Session session = sessionFactory.withOptions().tenantIdentifier(tenant).openSession(); - Transaction transaction = session.getTransaction(); - - transaction.begin(); - session.createSQLQuery("DROP ALL OBJECTS").executeUpdate(); - session - .createSQLQuery( - "create table Supplier (id integer generated by default as identity, country varchar(255), name varchar(255), primary key (id))") - .executeUpdate(); - Supplier genertedSupplier = generateEntityForTenant(tenant); - System.out.println("Inserting Supplier"+genertedSupplier); - save (genertedSupplier); - - } - - private Supplier generateEntityForTenant(String forTenant) { - if (forTenant.equals("mydb1")) { - return new Supplier ("John","USA"); - } - return new Supplier ("Miller","UK"); - } - - - -} diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/CustomInterceptor.java b/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/CustomInterceptor.java new file mode 100644 index 0000000000..1d60ccb6c0 --- /dev/null +++ b/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/CustomInterceptor.java @@ -0,0 +1,32 @@ +package com.baeldung.hibernate.interceptors; + +import java.io.Serializable; +import java.util.Date; + +import org.hibernate.EmptyInterceptor; +import org.hibernate.type.Type; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.baeldung.hibernate.interceptors.entity.User; + +public class CustomInterceptor extends EmptyInterceptor { + private static final Logger logger = LoggerFactory.getLogger(CustomInterceptor.class); + + @Override + public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { + if (entity instanceof User) { + logger.info(((User) entity).toString()); + } + return super.onSave(entity, id, state, propertyNames, types); + } + + @Override + public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object [] previousState, String[] propertyNames, Type[] types) { + if (entity instanceof User) { + ((User) entity).setLastModified(new Date()); + logger.info(((User) entity).toString()); + } + return super.onFlushDirty(entity, id, currentState, previousState, propertyNames, types); + } +} diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/CustomInterceptorImpl.java b/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/CustomInterceptorImpl.java new file mode 100644 index 0000000000..a84a981f7f --- /dev/null +++ b/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/CustomInterceptorImpl.java @@ -0,0 +1,122 @@ +package com.baeldung.hibernate.interceptors; + +import java.io.Serializable; +import java.util.Iterator; + +import org.hibernate.CallbackException; +import org.hibernate.EntityMode; +import org.hibernate.Interceptor; +import org.hibernate.Transaction; +import org.hibernate.type.Type; + +public class CustomInterceptorImpl implements Interceptor { + + @Override + public boolean onLoad(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) throws CallbackException { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) throws CallbackException { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) throws CallbackException { + // TODO Auto-generated method stub + return false; + } + + @Override + public void onDelete(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) throws CallbackException { + // TODO Auto-generated method stub + + } + + @Override + public void onCollectionRecreate(Object collection, Serializable key) throws CallbackException { + // TODO Auto-generated method stub + + } + + @Override + public void onCollectionRemove(Object collection, Serializable key) throws CallbackException { + // TODO Auto-generated method stub + + } + + @Override + public void onCollectionUpdate(Object collection, Serializable key) throws CallbackException { + // TODO Auto-generated method stub + + } + + @Override + public void preFlush(Iterator entities) throws CallbackException { + // TODO Auto-generated method stub + + } + + @Override + public void postFlush(Iterator entities) throws CallbackException { + // TODO Auto-generated method stub + + } + + @Override + public Boolean isTransient(Object entity) { + // TODO Auto-generated method stub + return null; + } + + @Override + public int[] findDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Object instantiate(String entityName, EntityMode entityMode, Serializable id) throws CallbackException { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getEntityName(Object object) throws CallbackException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Object getEntity(String entityName, Serializable id) throws CallbackException { + // TODO Auto-generated method stub + return null; + } + + @Override + public void afterTransactionBegin(Transaction tx) { + // TODO Auto-generated method stub + + } + + @Override + public void beforeTransactionCompletion(Transaction tx) { + // TODO Auto-generated method stub + + } + + @Override + public void afterTransactionCompletion(Transaction tx) { + // TODO Auto-generated method stub + + } + + @Override + public String onPrepareStatement(String sql) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/HibernateUtil.java b/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/HibernateUtil.java new file mode 100644 index 0000000000..11dce698ca --- /dev/null +++ b/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/HibernateUtil.java @@ -0,0 +1,79 @@ +package com.baeldung.hibernate.interceptors; + +import org.apache.commons.lang3.StringUtils; +import org.hibernate.Interceptor; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.boot.Metadata; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.SessionFactoryBuilder; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.service.ServiceRegistry; + +import com.baeldung.hibernate.interceptors.entity.User; + +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URL; +import java.util.Properties; + +public class HibernateUtil { + private static SessionFactory sessionFactory; + private static String PROPERTY_FILE_NAME; + + public static SessionFactory getSessionFactory() throws IOException { + return getSessionFactory(null); + } + + public static SessionFactory getSessionFactory(String propertyFileName) throws IOException { + PROPERTY_FILE_NAME = propertyFileName; + if (sessionFactory == null) { + ServiceRegistry serviceRegistry = configureServiceRegistry(); + sessionFactory = getSessionFactoryBuilder(serviceRegistry).build(); + } + return sessionFactory; + } + + public static SessionFactory getSessionFactoryWithInterceptor(String propertyFileName, Interceptor interceptor) throws IOException { + PROPERTY_FILE_NAME = propertyFileName; + if (sessionFactory == null) { + ServiceRegistry serviceRegistry = configureServiceRegistry(); + sessionFactory = getSessionFactoryBuilder(serviceRegistry).applyInterceptor(interceptor) + .build(); + } + return sessionFactory; + } + + public static Session getSessionWithInterceptor(Interceptor interceptor) throws IOException { + return getSessionFactory().withOptions() + .interceptor(interceptor) + .openSession(); + } + + private static SessionFactoryBuilder getSessionFactoryBuilder(ServiceRegistry serviceRegistry) { + MetadataSources metadataSources = new MetadataSources(serviceRegistry); + metadataSources.addPackage("com.baeldung.hibernate.interceptors"); + metadataSources.addAnnotatedClass(User.class); + + Metadata metadata = metadataSources.buildMetadata(); + return metadata.getSessionFactoryBuilder(); + + } + + private static ServiceRegistry configureServiceRegistry() throws IOException { + Properties properties = getProperties(); + return new StandardServiceRegistryBuilder().applySettings(properties) + .build(); + } + + private static Properties getProperties() throws IOException { + Properties properties = new Properties(); + URL propertiesURL = Thread.currentThread() + .getContextClassLoader() + .getResource(StringUtils.defaultString(PROPERTY_FILE_NAME, "hibernate-interceptors.properties")); + try (FileInputStream inputStream = new FileInputStream(propertiesURL.getFile())) { + properties.load(inputStream); + } + return properties; + } +} \ No newline at end of file diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/entity/User.java b/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/entity/User.java new file mode 100644 index 0000000000..2b1dbe702b --- /dev/null +++ b/hibernate5/src/main/java/com/baeldung/hibernate/interceptors/entity/User.java @@ -0,0 +1,64 @@ +package com.baeldung.hibernate.interceptors.entity; + +import java.util.Date; + +import javax.persistence.Basic; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +@Entity(name = "hbi_user") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE) + private long id; + private String name; + private String about; + @Basic + @Temporal(TemporalType.DATE) + private Date lastModified; + + public User() { + } + + public User(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getLastModified() { + return lastModified; + } + + public void setLastModified(Date lastModified) { + this.lastModified = lastModified; + } + + public long getId() { + return id; + } + + public String getAbout() { + return about; + } + + public void setAbout(String about) { + this.about = about; + } + + @Override + public String toString() { + return String.format("ID: %d\nName: %s\nLast Modified: %s\nAbout: %s\n", getId(), getName(), getLastModified(), getAbout()); + } +} diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/pojo/PolygonEntity.java b/hibernate5/src/main/java/com/baeldung/hibernate/pojo/PolygonEntity.java new file mode 100644 index 0000000000..69208c8cd4 --- /dev/null +++ b/hibernate5/src/main/java/com/baeldung/hibernate/pojo/PolygonEntity.java @@ -0,0 +1,38 @@ +package com.baeldung.hibernate.pojo; + +import com.vividsolutions.jts.geom.Polygon; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +@Entity +public class PolygonEntity { + + @Id + @GeneratedValue + private Long id; + + private Polygon polygon; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Polygon getPolygon() { + return polygon; + } + + public void setPolygon(Polygon polygon) { + this.polygon = polygon; + } + + @Override + public String toString() { + return "PolygonEntity{" + "id=" + id + ", polygon=" + polygon + '}'; + } +} diff --git a/hibernate5/src/main/java/com/baeldung/hibernate/pojo/Supplier.java b/hibernate5/src/main/java/com/baeldung/hibernate/pojo/Supplier.java deleted file mode 100644 index d0187bba47..0000000000 --- a/hibernate5/src/main/java/com/baeldung/hibernate/pojo/Supplier.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.baeldung.hibernate.pojo; -// Generated Feb 9, 2017 11:31:36 AM by Hibernate Tools 5.1.0.Final - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; - -import org.junit.runners.Suite.SuiteClasses; - - -/** - * Suppliers generated by hbm2java - */ -@Entity(name = "Supplier") -@Table(name ="Supplier") -public class Supplier implements java.io.Serializable { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Integer id; - private String name; - private String country; - - public Supplier() { - } - - public Supplier(String name, String country) { - this.name = name; - this.country = country; - } - - public Integer getId() { - return this.id; - } - - public void setId(Integer id) { - this.id = id; - } - - public String getName() { - return this.name; - } - - public void setName(String name) { - this.name = name; - } - - public String getCountry() { - return this.country; - } - - public void setCountry(String country) { - this.country = country; - } - - @Override - public String toString() { - return new StringBuffer().append("[").append(id).append(",").append(name).append(",").append(country).append("]").toString(); - } - - @Override - public boolean equals(Object obj) { - return name.equals(((Supplier) obj).getName()); - } -} diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/HibernateSpatialTest.java b/hibernate5/src/test/java/com/baeldung/hibernate/HibernateSpatialTest.java index a5c7b329fc..10b5cbef4e 100644 --- a/hibernate5/src/test/java/com/baeldung/hibernate/HibernateSpatialTest.java +++ b/hibernate5/src/test/java/com/baeldung/hibernate/HibernateSpatialTest.java @@ -1,10 +1,14 @@ package com.baeldung.hibernate; import com.baeldung.hibernate.pojo.PointEntity; +import com.baeldung.hibernate.pojo.PolygonEntity; +import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; import com.vividsolutions.jts.io.ParseException; import com.vividsolutions.jts.io.WKTReader; +import com.vividsolutions.jts.util.GeometricShapeFactory; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.After; @@ -13,6 +17,7 @@ import org.junit.Test; import javax.persistence.Query; import java.io.IOException; +import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; @@ -82,16 +87,58 @@ public class HibernateSpatialTest { .containsOnly("POINT (1 1)", "POINT (1 2)", "POINT (3 4)"); } + @Test + public void shouldSelectAllPointsWithinRadius() throws ParseException { + insertPoint("POINT (1 1)"); + insertPoint("POINT (1 2)"); + insertPoint("POINT (3 4)"); + insertPoint("POINT (5 6)"); + + Query query = session.createQuery("select p from PointEntity p where within(p.point, :circle) = true", + PointEntity.class); + query.setParameter("circle", createCircle(0.0, 0.0, 5)); + + assertThat(query.getResultList().stream().map(p -> ((PointEntity) p).getPoint().toString())) + .containsOnly("POINT (1 1)", "POINT (1 2)"); + } + + @Test + public void shouldSelectAdjacentPolygons() throws ParseException { + insertPolygon("POLYGON ((0 0, 0 5, 5 5, 5 0, 0 0))"); + insertPolygon("POLYGON ((3 0, 3 5, 8 5, 8 0, 3 0))"); + insertPolygon("POLYGON ((2 2, 3 1, 2 5, 4 3, 3 3, 2 2))"); + + Query query = session.createQuery("select p from PolygonEntity p where touches(p.polygon, :polygon) = true", + PolygonEntity.class); + query.setParameter("polygon", wktToGeometry("POLYGON ((5 5, 5 10, 10 10, 10 5, 5 5))")); + assertThat(query.getResultList().stream().map(p -> ((PolygonEntity) p).getPolygon().toString())) + .containsOnly("POLYGON ((0 0, 0 5, 5 5, 5 0, 0 0))", "POLYGON ((3 0, 3 5, 8 5, 8 0, 3 0))"); + } + private void insertPoint(String point) throws ParseException { PointEntity entity = new PointEntity(); entity.setPoint((Point) wktToGeometry(point)); session.persist(entity); } + private void insertPolygon(String polygon) throws ParseException { + PolygonEntity entity = new PolygonEntity(); + entity.setPolygon((Polygon) wktToGeometry(polygon)); + session.persist(entity); + } + private Geometry wktToGeometry(String wellKnownText) throws ParseException { WKTReader fromText = new WKTReader(); Geometry geom = null; geom = fromText.read(wellKnownText); return geom; } + + private static Geometry createCircle(double x, double y, double radius) { + GeometricShapeFactory shapeFactory = new GeometricShapeFactory(); + shapeFactory.setNumPoints(32); + shapeFactory.setCentre(new Coordinate(x, y)); + shapeFactory.setSize(radius * 2); + return shapeFactory.createCircle(); + } } diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/MultiTenantDaoHibernateIntegrationTest.java b/hibernate5/src/test/java/com/baeldung/hibernate/MultiTenantDaoHibernateIntegrationTest.java deleted file mode 100644 index 82567690ac..0000000000 --- a/hibernate5/src/test/java/com/baeldung/hibernate/MultiTenantDaoHibernateIntegrationTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.hibernate; - -import java.io.IOException; - -import org.hibernate.SessionFactory; -import org.junit.Test; - -import com.baeldung.hibernate.dao.SupplierDao; -import com.baeldung.hibernate.pojo.Supplier; - -import static org.junit.Assert.assertNull;; - -public class MultiTenantDaoHibernateIntegrationTest { - @Test - public void givenDBMode_whenFetchingSuppliersByName_thenChecking() throws UnsupportedTenancyException, IOException { - SessionFactory sessionFactory = HibernateMultiTenantUtil.getSessionFactory(); - - SupplierDao myDb1Dao = new SupplierDao(sessionFactory, "mydb1"); - Supplier db1SupplierName = myDb1Dao.findByName("John"); - - // finding the same supplier name in another tenant - // and we should not be able to find in there and both dbs are different. - SupplierDao myDb2Dao = new SupplierDao(sessionFactory, "mydb2"); - Supplier db2SupplierName = myDb2Dao.findByName(db1SupplierName.getName()); - - assertNull(db2SupplierName); - - } - -} diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/interceptors/HibernateInterceptorTest.java b/hibernate5/src/test/java/com/baeldung/hibernate/interceptors/HibernateInterceptorTest.java new file mode 100644 index 0000000000..cbf28497bb --- /dev/null +++ b/hibernate5/src/test/java/com/baeldung/hibernate/interceptors/HibernateInterceptorTest.java @@ -0,0 +1,62 @@ +package com.baeldung.hibernate.interceptors; + +import java.io.IOException; +import java.io.Serializable; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Test; + +import com.baeldung.hibernate.interceptors.entity.User; + +public class HibernateInterceptorTest { + private static SessionFactory sessionFactory; + private static Serializable userId; + + @Before + public void init() throws IOException { + sessionFactory = HibernateUtil.getSessionFactoryWithInterceptor(null, new CustomInterceptor()); + } + + @AfterClass + public static void finish() { + if(userId != null) { + Session session = sessionFactory.getCurrentSession(); + Transaction transaction = session.beginTransaction(); + User user = session.load(User.class, userId); + if(user != null) { + session.delete(user); + } + transaction.commit(); + session.close(); + } + } + + @Test + public void givenHibernateInterceptorAndSessionScoped_whenUserCreated_shouldSucceed() { + Session session = sessionFactory.withOptions().interceptor(new CustomInterceptor()).openSession(); + User user = new User("Benjamin Franklin"); + Transaction transaction = session.beginTransaction(); + userId = session.save(user); + transaction.commit(); + session.close(); + } + + @Test + public void givenHibernateInterceptorAndSessionFactoryScoped_whenUserModified_shouldSucceed() { + Session session = sessionFactory.openSession(); + Transaction transaction = session.beginTransaction(); + User user = session.load(User.class, userId); + if(user != null) { + user.setAbout("I am a scientist."); + session.update(user); + } + transaction.commit(); + session.close(); + } + +} diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/Car.java b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/Car.java new file mode 100644 index 0000000000..1b6cee7e67 --- /dev/null +++ b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/Car.java @@ -0,0 +1,26 @@ +package com.baeldung.hibernate.multitenancy; + +import java.io.Serializable; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity(name = "Car") +@Table(name = "Car") +public class Car implements Serializable { + + private static final long serialVersionUID = 1015320564683423342L; + + private String brand; + + @Id + public String getBrand() { + return brand; + } + + public void setBrand(String brand) { + this.brand = brand; + } + +} diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/MultitenancyIntegrationTest.java b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/MultitenancyIntegrationTest.java new file mode 100644 index 0000000000..fdc3f9fa81 --- /dev/null +++ b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/MultitenancyIntegrationTest.java @@ -0,0 +1,104 @@ +package com.baeldung.hibernate.multitenancy; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import java.io.IOException; +import java.util.Properties; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.AvailableSettings; +import org.hibernate.context.spi.CurrentTenantIdentifierResolver; +import org.hibernate.service.ServiceRegistry; +import org.junit.Before; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; + +import com.baeldung.hibernate.multitenancy.database.TenantIdNames; + +public abstract class MultitenancyIntegrationTest { + + public abstract String getPropertyFile(); + + @Mock + private CurrentTenantIdentifierResolver currentTenantIdentifierResolver; + + private SessionFactory sessionFactory; + + @Before + public void setup() throws IOException { + MockitoAnnotations.initMocks(this); + + Mockito.when(currentTenantIdentifierResolver.validateExistingCurrentSessions()) + .thenReturn(false); + + Properties properties = getHibernateProperties(); + properties.put(AvailableSettings.MULTI_TENANT_IDENTIFIER_RESOLVER, currentTenantIdentifierResolver); + + sessionFactory = buildSessionFactory(properties); + + initTenant(TenantIdNames.MYDB1); + initTenant(TenantIdNames.MYDB2); + } + + protected void initTenant(String tenantId) { + whenCurrentTenantIs(tenantId); + createCarTable(); + } + + protected void whenCurrentTenantIs(String tenantId) { + Mockito.when(currentTenantIdentifierResolver.resolveCurrentTenantIdentifier()) + .thenReturn(tenantId); + } + + protected void whenAddCar(String brand) { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + Car car = new Car(); + car.setBrand(brand); + session.save(car); + tx.commit(); + } + + protected void thenCarFound(String brand) { + Session session = sessionFactory.openSession(); + assertNotNull(session.get(Car.class, brand)); + } + + protected void thenCarNotFound(String brand) { + Session session = sessionFactory.openSession(); + assertNull(session.get(Car.class, brand)); + } + + @SuppressWarnings("deprecation") + private void createCarTable() { + Session session = sessionFactory.openSession(); + Transaction tx = session.beginTransaction(); + session.createSQLQuery("drop table Car if exists") + .executeUpdate(); + session.createSQLQuery("create table Car (brand varchar(255) primary key)") + .executeUpdate(); + tx.commit(); + } + + private Properties getHibernateProperties() throws IOException { + Properties properties = new Properties(); + properties.load(getClass().getResourceAsStream(getPropertyFile())); + return properties; + } + + private static SessionFactory buildSessionFactory(Properties properties) { + ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(properties) + .build(); + MetadataSources metadataSources = new MetadataSources(serviceRegistry); + metadataSources.addAnnotatedClass(Car.class); + return metadataSources.buildMetadata() + .buildSessionFactory(); + } + +} diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/database/DatabaseApproachMultitenancyIntegrationTest.java b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/database/DatabaseApproachMultitenancyIntegrationTest.java new file mode 100644 index 0000000000..92f477a646 --- /dev/null +++ b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/database/DatabaseApproachMultitenancyIntegrationTest.java @@ -0,0 +1,25 @@ +package com.baeldung.hibernate.multitenancy.database; + +import java.io.IOException; + +import org.junit.Test; + +import com.baeldung.hibernate.multitenancy.MultitenancyIntegrationTest; + +public class DatabaseApproachMultitenancyIntegrationTest extends MultitenancyIntegrationTest { + + @Override + public String getPropertyFile() { + return "/hibernate-database-multitenancy.properties"; + } + + @Test + public void givenDatabaseApproach_whenAddingEntries_thenOnlyAddedToConcreteDatabase() throws IOException { + whenCurrentTenantIs(TenantIdNames.MYDB1); + whenAddCar("myCar"); + thenCarFound("myCar"); + whenCurrentTenantIs(TenantIdNames.MYDB2); + thenCarNotFound("myCar"); + } + +} diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/database/MapMultiTenantConnectionProvider.java b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/database/MapMultiTenantConnectionProvider.java new file mode 100644 index 0000000000..eb1f410622 --- /dev/null +++ b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/database/MapMultiTenantConnectionProvider.java @@ -0,0 +1,42 @@ +package com.baeldung.hibernate.multitenancy.database; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +import org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl; +import org.hibernate.engine.jdbc.connections.spi.AbstractMultiTenantConnectionProvider; +import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; + +@SuppressWarnings("serial") +public class MapMultiTenantConnectionProvider extends AbstractMultiTenantConnectionProvider { + + private final Map connectionProviderMap = new HashMap<>(); + + public MapMultiTenantConnectionProvider() throws IOException { + initConnectionProviderForTenant(TenantIdNames.MYDB1); + initConnectionProviderForTenant(TenantIdNames.MYDB2); + } + + @Override + protected ConnectionProvider getAnyConnectionProvider() { + return connectionProviderMap.values() + .iterator() + .next(); + } + + @Override + protected ConnectionProvider selectConnectionProvider(String tenantIdentifier) { + return connectionProviderMap.get(tenantIdentifier); + } + + private void initConnectionProviderForTenant(String tenantId) throws IOException { + Properties properties = new Properties(); + properties.load(getClass().getResourceAsStream(String.format("/hibernate-database-%s.properties", tenantId))); + DriverManagerConnectionProviderImpl connectionProvider = new DriverManagerConnectionProviderImpl(); + connectionProvider.configure(properties); + this.connectionProviderMap.put(tenantId, connectionProvider); + } + +} diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/database/TenantIdNames.java b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/database/TenantIdNames.java new file mode 100644 index 0000000000..231272fa63 --- /dev/null +++ b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/database/TenantIdNames.java @@ -0,0 +1,6 @@ +package com.baeldung.hibernate.multitenancy.database; + +public class TenantIdNames { + public static final String MYDB1 = "mydb1"; + public static final String MYDB2 = "mydb2"; +} diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/schema/SchemaApproachMultitenancyIntegrationTest.java b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/schema/SchemaApproachMultitenancyIntegrationTest.java new file mode 100644 index 0000000000..304af65fca --- /dev/null +++ b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/schema/SchemaApproachMultitenancyIntegrationTest.java @@ -0,0 +1,26 @@ +package com.baeldung.hibernate.multitenancy.schema; + +import java.io.IOException; + +import org.junit.Test; + +import com.baeldung.hibernate.multitenancy.MultitenancyIntegrationTest; +import com.baeldung.hibernate.multitenancy.database.TenantIdNames; + +public class SchemaApproachMultitenancyIntegrationTest extends MultitenancyIntegrationTest { + + @Override + public String getPropertyFile() { + return "/hibernate-schema-multitenancy.properties"; + } + + @Test + public void givenSchemaApproach_whenAddingEntries_thenOnlyAddedToConcreteSchema() throws IOException { + whenCurrentTenantIs(TenantIdNames.MYDB1); + whenAddCar("Ferrari"); + thenCarFound("Ferrari"); + whenCurrentTenantIs(TenantIdNames.MYDB2); + thenCarNotFound("Ferrari"); + } + +} diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/schema/SchemaMultiTenantConnectionProvider.java b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/schema/SchemaMultiTenantConnectionProvider.java new file mode 100644 index 0000000000..601eba651c --- /dev/null +++ b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/schema/SchemaMultiTenantConnectionProvider.java @@ -0,0 +1,48 @@ +package com.baeldung.hibernate.multitenancy.schema; + +import java.io.IOException; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Properties; + +import org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl; +import org.hibernate.engine.jdbc.connections.spi.AbstractMultiTenantConnectionProvider; +import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; + +@SuppressWarnings("serial") +public class SchemaMultiTenantConnectionProvider extends AbstractMultiTenantConnectionProvider { + + private final ConnectionProvider connectionProvider; + + public SchemaMultiTenantConnectionProvider() throws IOException { + connectionProvider = initConnectionProvider(); + } + + @Override + protected ConnectionProvider getAnyConnectionProvider() { + return connectionProvider; + } + + @Override + protected ConnectionProvider selectConnectionProvider(String tenantIdentifier) { + return connectionProvider; + } + + @Override + public Connection getConnection(String tenantIdentifier) throws SQLException { + Connection connection = super.getConnection(tenantIdentifier); + connection.createStatement() + .execute(String.format("SET SCHEMA %s;", tenantIdentifier)); + return connection; + } + + private ConnectionProvider initConnectionProvider() throws IOException { + Properties properties = new Properties(); + properties.load(getClass().getResourceAsStream("/hibernate-schema-multitenancy.properties")); + + DriverManagerConnectionProviderImpl connectionProvider = new DriverManagerConnectionProviderImpl(); + connectionProvider.configure(properties); + return connectionProvider; + } + +} diff --git a/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/schema/TenantIdNames.java b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/schema/TenantIdNames.java new file mode 100644 index 0000000000..2eba94e307 --- /dev/null +++ b/hibernate5/src/test/java/com/baeldung/hibernate/multitenancy/schema/TenantIdNames.java @@ -0,0 +1,6 @@ +package com.baeldung.hibernate.multitenancy.schema; + +public class TenantIdNames { + public static final String MYDB1 = "mydb1"; + public static final String MYDB2 = "mydb2"; +} diff --git a/hibernate5/src/test/resources/hibernate-database-multitenancy.properties b/hibernate5/src/test/resources/hibernate-database-multitenancy.properties new file mode 100644 index 0000000000..853fa80dfc --- /dev/null +++ b/hibernate5/src/test/resources/hibernate-database-multitenancy.properties @@ -0,0 +1,2 @@ +hibernate.multiTenancy=DATABASE +hibernate.multi_tenant_connection_provider=com.baeldung.hibernate.multitenancy.database.MapMultiTenantConnectionProvider \ No newline at end of file diff --git a/hibernate5/src/test/resources/hibernate-database-mydb1.properties b/hibernate5/src/test/resources/hibernate-database-mydb1.properties new file mode 100644 index 0000000000..345f1dbbea --- /dev/null +++ b/hibernate5/src/test/resources/hibernate-database-mydb1.properties @@ -0,0 +1,4 @@ +hibernate.connection.driver_class=org.h2.Driver +hibernate.connection.url=jdbc:h2:mem:mydb1;DB_CLOSE_DELAY=-1 +hibernate.connection.username=sa +hibernate.dialect=org.hibernate.dialect.H2Dialect \ No newline at end of file diff --git a/hibernate5/src/test/resources/hibernate-database-mydb2.properties b/hibernate5/src/test/resources/hibernate-database-mydb2.properties new file mode 100644 index 0000000000..626b7853c6 --- /dev/null +++ b/hibernate5/src/test/resources/hibernate-database-mydb2.properties @@ -0,0 +1,4 @@ +hibernate.connection.driver_class=org.h2.Driver +hibernate.connection.url=jdbc:h2:mem:mydb2;DB_CLOSE_DELAY=-1 +hibernate.connection.username=sa +hibernate.dialect=org.hibernate.dialect.H2Dialect \ No newline at end of file diff --git a/hibernate5/src/test/resources/hibernate-multitenancy.properties b/hibernate5/src/test/resources/hibernate-interceptors.properties similarity index 67% rename from hibernate5/src/test/resources/hibernate-multitenancy.properties rename to hibernate5/src/test/resources/hibernate-interceptors.properties index 298ecd05d3..58b55d0a09 100644 --- a/hibernate5/src/test/resources/hibernate-multitenancy.properties +++ b/hibernate5/src/test/resources/hibernate-interceptors.properties @@ -6,4 +6,5 @@ jdbc.password= hibernate.dialect=org.hibernate.dialect.H2Dialect hibernate.show_sql=true -hibernate.multiTenancy=DATABASE +hibernate.hbm2ddl.auto=create-drop +hibernate.current_session_context_class=org.hibernate.context.internal.ThreadLocalSessionContext \ No newline at end of file diff --git a/hibernate5/src/test/resources/hibernate-schema-multitenancy.properties b/hibernate5/src/test/resources/hibernate-schema-multitenancy.properties new file mode 100644 index 0000000000..4abb621355 --- /dev/null +++ b/hibernate5/src/test/resources/hibernate-schema-multitenancy.properties @@ -0,0 +1,7 @@ +hibernate.connection.driver_class=org.h2.Driver +hibernate.connection.url=jdbc:h2:mem:mydb1;DB_CLOSE_DELAY=-1;INIT=CREATE SCHEMA IF NOT EXISTS MYDB1\\;CREATE SCHEMA IF NOT EXISTS MYDB2\\; +hibernate.connection.username=sa +hibernate.connection.autocommit=true +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.multiTenancy=SCHEMA +hibernate.multi_tenant_connection_provider=com.baeldung.hibernate.multitenancy.schema.SchemaMultiTenantConnectionProvider \ No newline at end of file diff --git a/hystrix/pom.xml b/hystrix/pom.xml index 58e09816ea..9e4b2bb082 100644 --- a/hystrix/pom.xml +++ b/hystrix/pom.xml @@ -7,10 +7,10 @@ hystrix - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/influxdb/README.md b/influxdb/README.md new file mode 100644 index 0000000000..7d1684688d --- /dev/null +++ b/influxdb/README.md @@ -0,0 +1,18 @@ +## Influx SDK Tutorial Project + +### Relevant Article: +- [Introduction to using InfluxDB with Java](http://www.baeldung.com/using-influxdb-with-java/) +- [Using InfluxDB with Java](http://www.baeldung.com/java-influxdb) + +### Overview +This Maven project contains the Java code for the article linked above. + +### Package Organization +Java classes for the intro tutorial are in the +org.baeldung.influxdb package. + + +### Running the tests +The test class expects an InfluxDB server to be available on localhost, at the default port of 8086 and with the default "admin" credentials. + +``` diff --git a/influxdb/pom.xml b/influxdb/pom.xml new file mode 100644 index 0000000000..05a8e00fa0 --- /dev/null +++ b/influxdb/pom.xml @@ -0,0 +1,44 @@ + + + 4.0.0 + influxdb + 0.1-SNAPSHOT + jar + influxdb + InfluxDB SDK Tutorial + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + org.influxdb + influxdb-java + ${influxdb.sdk.version} + + + + org.projectlombok + lombok + + ${lombok.version} + provided + + + + + + + + 1.8 + UTF-8 + 2.8 + 1.16.18 + + + + diff --git a/influxdb/src/main/java/com/baeldung/influxdb/MemoryPoint.java b/influxdb/src/main/java/com/baeldung/influxdb/MemoryPoint.java new file mode 100644 index 0000000000..fb05a70867 --- /dev/null +++ b/influxdb/src/main/java/com/baeldung/influxdb/MemoryPoint.java @@ -0,0 +1,28 @@ +package com.baeldung.influxdb; + +import lombok.Data; +import org.influxdb.annotation.Column; +import org.influxdb.annotation.Measurement; + +import java.time.Instant; + +@Data +@Measurement(name = "memory") +public class MemoryPoint { + + @Column(name = "time") + private Instant time; + + @Column(name = "name") + private String name; + + @Column(name = "free") + private Long free; + + @Column(name = "used") + private Long used; + + @Column(name = "buffer") + private Long buffer; + +} diff --git a/influxdb/src/test/java/com/baeldung/influxdb/InfluxDBConnectionLiveTest.java b/influxdb/src/test/java/com/baeldung/influxdb/InfluxDBConnectionLiveTest.java new file mode 100644 index 0000000000..6c7a03cb70 --- /dev/null +++ b/influxdb/src/test/java/com/baeldung/influxdb/InfluxDBConnectionLiveTest.java @@ -0,0 +1,179 @@ +package com.baeldung.influxdb; + +import lombok.extern.slf4j.Slf4j; +import org.influxdb.InfluxDB; +import org.influxdb.InfluxDBFactory; +import org.influxdb.InfluxDBIOException; +import org.influxdb.dto.*; +import org.influxdb.impl.InfluxDBResultMapper; +import org.junit.Test; + +import java.io.IOException; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import static junit.framework.TestCase.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +@Slf4j +public class InfluxDBConnectionLiveTest { + + @Test + public void whenCorrectInfoDatabaseConnects() { + + InfluxDB connection = connectDatabase(); + assertTrue(pingServer(connection)); + } + + private InfluxDB connectDatabase() { + + // Connect to database assumed on localhost with default credentials. + return InfluxDBFactory.connect("http://127.0.0.1:8086", "admin", "admin"); + + } + + private boolean pingServer(InfluxDB influxDB) { + try { + // Ping and check for version string + Pong response = influxDB.ping(); + if (response.getVersion().equalsIgnoreCase("unknown")) { + log.error("Error pinging server."); + return false; + } else { + log.info("Database version: {}", response.getVersion()); + return true; + } + } catch (InfluxDBIOException idbo) { + log.error("Exception while pinging database: ", idbo); + return false; + } + } + + @Test + public void whenDatabaseCreatedDatabaseChecksOk() { + + InfluxDB connection = connectDatabase(); + + // Create "baeldung" and check for it + connection.createDatabase("baeldung"); + assertTrue(connection.databaseExists("baeldung")); + + // Verify that nonsense databases are not there + assertFalse(connection.databaseExists("foobar")); + + // Drop "baeldung" and check again + connection.deleteDatabase("baeldung"); + assertFalse(connection.databaseExists("baeldung")); + } + + @Test + public void whenPointsWrittenPointsExists() throws Exception { + + InfluxDB connection = connectDatabase(); + + String dbName = "baeldung"; + connection.createDatabase(dbName); + + // Need a retention policy before we can proceed + connection.createRetentionPolicy("defaultPolicy", "baeldung", "30d", 1, true); + + // Since we are doing a batch thread, we need to set this as a default + connection.setRetentionPolicy("defaultPolicy"); + + // Enable batch mode + connection.enableBatch(10, 10, TimeUnit.MILLISECONDS); + + for (int i = 0; i < 10; i++) { + Point point = Point.measurement("memory") + .time(System.currentTimeMillis(), TimeUnit.MILLISECONDS) + .addField("name", "server1") + .addField("free", 4743656L) + .addField("used", 1015096L) + .addField("buffer", 1010467L) + .build(); + + connection.write(dbName, "defaultPolicy", point); + Thread.sleep(2); + + } + + // Unfortunately, the sleep inside the loop doesn't always add enough time to insure + // that Influx's batch thread flushes all of the writes and this sometimes fails without + // another brief pause. + Thread.sleep(10); + + List memoryPointList = getPoints(connection, "Select * from memory", "baeldung"); + + assertEquals(10, memoryPointList.size()); + + // Turn off batch and clean up + connection.disableBatch(); + connection.deleteDatabase("baeldung"); + connection.close(); + + } + + private List getPoints(InfluxDB connection, String query, String databaseName) { + + // Run the query + Query queryObject = new Query(query, databaseName); + QueryResult queryResult = connection.query(queryObject); + + // Map it + InfluxDBResultMapper resultMapper = new InfluxDBResultMapper(); + return resultMapper.toPOJO(queryResult, MemoryPoint.class); + } + + + + @Test + public void whenBatchWrittenBatchExists() { + + InfluxDB connection = connectDatabase(); + + String dbName = "baeldung"; + connection.createDatabase(dbName); + + // Need a retention policy before we can proceed + // Since we are doing batches, we need not set it + connection.createRetentionPolicy("defaultPolicy", "baeldung", "30d", 1, true); + + + BatchPoints batchPoints = BatchPoints + .database(dbName) + .retentionPolicy("defaultPolicy") + .build(); + Point point1 = Point.measurement("memory") + .time(System.currentTimeMillis(), TimeUnit.MILLISECONDS) + .addField("free", 4743656L) + .addField("used", 1015096L) + .addField("buffer", 1010467L) + .build(); + Point point2 = Point.measurement("memory") + .time(System.currentTimeMillis() - 100, TimeUnit.MILLISECONDS) + .addField("free", 4743696L) + .addField("used", 1016096L) + .addField("buffer", 1008467L) + .build(); + batchPoints.point(point1); + batchPoints.point(point2); + connection.write(batchPoints); + + List memoryPointList = getPoints(connection, "Select * from memory", "baeldung"); + + assertEquals(2, memoryPointList.size()); + assertTrue(4743696L == memoryPointList.get(0).getFree()); + + + memoryPointList = getPoints(connection, "Select * from memory order by time desc", "baeldung"); + + assertEquals(2, memoryPointList.size()); + assertTrue(4743656L == memoryPointList.get(0).getFree()); + + // Clean up database + connection.deleteDatabase("baeldung"); + connection.close(); + } + +} diff --git a/influxdb/src/test/resources/logback.xml b/influxdb/src/test/resources/logback.xml new file mode 100644 index 0000000000..f8ebaf1ebd --- /dev/null +++ b/influxdb/src/test/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + \ No newline at end of file diff --git a/java-difference-date/pom.xml b/java-difference-date/pom.xml index 388753de90..ac3f0fa3b5 100644 --- a/java-difference-date/pom.xml +++ b/java-difference-date/pom.xml @@ -41,6 +41,7 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 1.8 1.8 diff --git a/java-lite/README.md b/java-lite/README.md new file mode 100644 index 0000000000..bcb84e186e --- /dev/null +++ b/java-lite/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [RESTFul CRUD application with JavaLite] () \ No newline at end of file diff --git a/java-lite/pom.xml b/java-lite/pom.xml new file mode 100644 index 0000000000..eb18bc40a5 --- /dev/null +++ b/java-lite/pom.xml @@ -0,0 +1,96 @@ + + + 4.0.0 + + org.baeldung + java-lite + 1.0-SNAPSHOT + war + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + 9.4.8.v20171121 + 1.4.13 + 1.15 + 5.1.45 + 1.7.0 + 1.8.2 + 4.11 + + + + + + org.eclipse.jetty + jetty-maven-plugin + ${jetty.maven.plugin.version} + + + + activejdbc.log + + + + active_reload + true + + + activeweb.log.request + true + + + + + + + org.javalite + activejdbc-instrumentation + ${activejdbc.version} + + + process-classes + + instrument + + + + + + + + + + org.javalite + activeweb + ${activeweb.version} + + + + mysql + mysql-connector-java + ${mysql.connector.java.version} + + + + com.sun + tools + ${sun.tools.version} + system + ${java.home}/../lib/tools.jar + + + + junit + junit + ${junit.version} + + + + \ No newline at end of file diff --git a/java-lite/src/main/java/app/config/AppBootstrap.java b/java-lite/src/main/java/app/config/AppBootstrap.java new file mode 100644 index 0000000000..7a87c2d0a7 --- /dev/null +++ b/java-lite/src/main/java/app/config/AppBootstrap.java @@ -0,0 +1,9 @@ +package app.config; + +import org.javalite.activeweb.AppContext; +import org.javalite.activeweb.Bootstrap; + +public class AppBootstrap extends Bootstrap { + public void init(AppContext context) { + } +} diff --git a/java-lite/src/main/java/app/config/AppControllerConfig.java b/java-lite/src/main/java/app/config/AppControllerConfig.java new file mode 100644 index 0000000000..da30c08ab2 --- /dev/null +++ b/java-lite/src/main/java/app/config/AppControllerConfig.java @@ -0,0 +1,15 @@ +package app.config; + +import app.controllers.ProductsController; +import org.javalite.activeweb.AbstractControllerConfig; +import org.javalite.activeweb.AppContext; +import org.javalite.activeweb.controller_filters.DBConnectionFilter; +import org.javalite.activeweb.controller_filters.TimingFilter; + +public class AppControllerConfig extends AbstractControllerConfig { + @Override + public void init(AppContext appContext) { + addGlobalFilters(new TimingFilter()); + add(new DBConnectionFilter()).to(ProductsController.class); + } +} diff --git a/java-lite/src/main/java/app/config/DbConfig.java b/java-lite/src/main/java/app/config/DbConfig.java new file mode 100644 index 0000000000..75de248619 --- /dev/null +++ b/java-lite/src/main/java/app/config/DbConfig.java @@ -0,0 +1,11 @@ +package app.config; + +import org.javalite.activeweb.AbstractDBConfig; +import org.javalite.activeweb.AppContext; + +public class DbConfig extends AbstractDBConfig { + @Override + public void init(AppContext appContext) { + this.configFile("/database.properties"); + } +} diff --git a/java-lite/src/main/java/app/controllers/ProductsController.java b/java-lite/src/main/java/app/controllers/ProductsController.java new file mode 100644 index 0000000000..746d77e24a --- /dev/null +++ b/java-lite/src/main/java/app/controllers/ProductsController.java @@ -0,0 +1,103 @@ +package app.controllers; + +import app.models.Product; +import org.codehaus.jackson.map.ObjectMapper; +import org.javalite.activeweb.AppController; +import org.javalite.activeweb.annotations.RESTful; + +import java.util.Map; + +@RESTful +public class ProductsController extends AppController { + + private ObjectMapper mapper = new ObjectMapper(); + + public void index() { + try { + view("products", Product.findAll()); + render().contentType("application/json"); + } catch (Exception e) { + view("message", "There was an error.", "code", 200); + render("message"); + } + } + + public void create() { + try { + Map payload = mapper.readValue(getRequestString(), Map.class); + Product p = new Product(); + p.fromMap(payload); + p.saveIt(); + view("message", "Successfully saved product id " + p.get("id"), "code", 200); + render("message"); + } catch (Exception e) { + view("message", "There was an error.", "code", 200); + render("message"); + } + } + + public void update() { + try { + Map payload = mapper.readValue(getRequestString(), Map.class); + String id = getId(); + Product p = Product.findById(id); + if (p == null) { + view("message", "Product id " + id + " not found.", "code", 200); + render("message"); + return; + } + p.fromMap(payload); + p.saveIt(); + view("message", "Successfully updated product id " + id, "code", 200); + render("message"); + } catch (Exception e) { + view("message", "There was an error.", "code", 200); + render("message"); + } + } + + public void show() { + try { + String id = getId(); + Product p = Product.findById(id); + if (p == null) { + view("message", "Product id " + id + " not found.", "code", 200); + render("message"); + return; + } + view("product", p); + render("_product"); + } catch (Exception e) { + view("message", "There was an error.", "code", 200); + render("message"); + } + } + + public void destroy() { + try { + String id = getId(); + Product p = Product.findById(id); + if (p == null) { + view("message", "Product id " + id + " not found.", "code", 200); + render("message"); + return; + } + p.delete(); + view("message", "Successfully deleted product id " + id, "code", 200); + render("message"); + } catch (Exception e) { + view("message", "There was an error.", "code", 200); + render("message"); + } + } + + @Override + protected String getContentType() { + return "application/json"; + } + + @Override + protected String getLayout() { + return null; + } +} diff --git a/java-lite/src/main/java/app/models/Product.java b/java-lite/src/main/java/app/models/Product.java new file mode 100644 index 0000000000..7fa32b75d9 --- /dev/null +++ b/java-lite/src/main/java/app/models/Product.java @@ -0,0 +1,7 @@ +package app.models; + +import org.javalite.activejdbc.Model; + +public class Product extends Model { + +} diff --git a/java-lite/src/main/resources/database.properties b/java-lite/src/main/resources/database.properties new file mode 100644 index 0000000000..55b3851d33 --- /dev/null +++ b/java-lite/src/main/resources/database.properties @@ -0,0 +1,4 @@ +development.driver=com.mysql.jdbc.Driver +development.username=user +development.password=password +development.url=jdbc:mysql://localhost/dbname \ No newline at end of file diff --git a/java-lite/src/main/webapp/WEB-INF/views/products/_comma.ftl b/java-lite/src/main/webapp/WEB-INF/views/products/_comma.ftl new file mode 100644 index 0000000000..41622b4720 --- /dev/null +++ b/java-lite/src/main/webapp/WEB-INF/views/products/_comma.ftl @@ -0,0 +1 @@ +, \ No newline at end of file diff --git a/java-lite/src/main/webapp/WEB-INF/views/products/_product.ftl b/java-lite/src/main/webapp/WEB-INF/views/products/_product.ftl new file mode 100644 index 0000000000..562af0499e --- /dev/null +++ b/java-lite/src/main/webapp/WEB-INF/views/products/_product.ftl @@ -0,0 +1,4 @@ +{ +"id" : ${product.id}, +"name" : "${product.name}" +} \ No newline at end of file diff --git a/java-lite/src/main/webapp/WEB-INF/views/products/index.ftl b/java-lite/src/main/webapp/WEB-INF/views/products/index.ftl new file mode 100644 index 0000000000..c343f20910 --- /dev/null +++ b/java-lite/src/main/webapp/WEB-INF/views/products/index.ftl @@ -0,0 +1 @@ +[<@render partial="product" collection=products spacer="comma"/>] \ No newline at end of file diff --git a/java-lite/src/main/webapp/WEB-INF/views/products/message.ftl b/java-lite/src/main/webapp/WEB-INF/views/products/message.ftl new file mode 100644 index 0000000000..3e7faf1459 --- /dev/null +++ b/java-lite/src/main/webapp/WEB-INF/views/products/message.ftl @@ -0,0 +1,4 @@ +{ +"message" : "${message}", +"code" : ${code} +} \ No newline at end of file diff --git a/java-lite/src/main/webapp/WEB-INF/web.xml b/java-lite/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..c285876c86 --- /dev/null +++ b/java-lite/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,25 @@ + + + + + + dispatcher + org.javalite.activeweb.RequestDispatcher + + exclusions + css,images,js,ico + + + encoding + UTF-8 + + + + + + dispatcher + /* + + + diff --git a/java-lite/src/test/java/app/models/ProductTest.java b/java-lite/src/test/java/app/models/ProductTest.java new file mode 100644 index 0000000000..5e5c6e8845 --- /dev/null +++ b/java-lite/src/test/java/app/models/ProductTest.java @@ -0,0 +1,25 @@ +package app.models; + +import org.javalite.activejdbc.Base; +import org.junit.Assert; +import org.junit.Test; + +public class ProductTest { + + //@Test + public void givenSavedProduct_WhenFindFirst_ThenSavedProductIsReturned() { + //Open DB connection + Base.open("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/dbname", "user", "password"); + + //Create a product and save it + Product toSaveProduct = new Product(); + toSaveProduct.set("name", "Bread"); + toSaveProduct.saveIt(); + + //Find product + Product savedProduct = Product.findFirst("name = ?", "Bread"); + + Assert.assertEquals(toSaveProduct.get("name"), savedProduct.get("name")); + } + +} \ No newline at end of file diff --git a/java-rmi/pom.xml b/java-rmi/pom.xml new file mode 100644 index 0000000000..7c08968cbf --- /dev/null +++ b/java-rmi/pom.xml @@ -0,0 +1,20 @@ + + 4.0.0 + + com.baeldung.rmi + java-rmi + 1.0-SNAPSHOT + jar + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + UTF-8 + + + diff --git a/java-rmi/src/main/java/com/baeldung/rmi/Message.java b/java-rmi/src/main/java/com/baeldung/rmi/Message.java new file mode 100644 index 0000000000..6d21a45fe3 --- /dev/null +++ b/java-rmi/src/main/java/com/baeldung/rmi/Message.java @@ -0,0 +1,36 @@ +package com.baeldung.rmi; + +import java.io.Serializable; + +public class Message implements Serializable { + + private String messageText; + + private String contentType; + + public Message() { + } + + public Message(String messageText, String contentType) { + + this.messageText = messageText; + this.contentType = contentType; + } + + public String getMessageText() { + return messageText; + } + + public void setMessageText(String messageText) { + this.messageText = messageText; + } + + public String getContentType() { + return contentType; + } + + public void setContentType(String contentType) { + this.contentType = contentType; + } + +} diff --git a/java-rmi/src/main/java/com/baeldung/rmi/MessengerService.java b/java-rmi/src/main/java/com/baeldung/rmi/MessengerService.java new file mode 100644 index 0000000000..f962e4ad07 --- /dev/null +++ b/java-rmi/src/main/java/com/baeldung/rmi/MessengerService.java @@ -0,0 +1,11 @@ +package com.baeldung.rmi; + +import java.rmi.Remote; +import java.rmi.RemoteException; + +public interface MessengerService extends Remote { + + public String sendMessage(String clientMessage) throws RemoteException; + + public Message sendMessage(Message clientMessage) throws RemoteException; +} \ No newline at end of file diff --git a/java-rmi/src/main/java/com/baeldung/rmi/MessengerServiceImpl.java b/java-rmi/src/main/java/com/baeldung/rmi/MessengerServiceImpl.java new file mode 100644 index 0000000000..ebf03d4b67 --- /dev/null +++ b/java-rmi/src/main/java/com/baeldung/rmi/MessengerServiceImpl.java @@ -0,0 +1,37 @@ +package com.baeldung.rmi; + +import java.rmi.RemoteException; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; +import java.rmi.server.UnicastRemoteObject; + +public class MessengerServiceImpl implements MessengerService { + + public String sendMessage(String clientMessage) { + + String serverMessage = null; + if (clientMessage.equals("Client Message")) { + serverMessage = "Server Message"; + } + + return serverMessage; + } + + public void createStubAndBind() throws RemoteException { + + MessengerService stub = (MessengerService) UnicastRemoteObject.exportObject((MessengerService) this, 0); + Registry registry = LocateRegistry.createRegistry(1099); + registry.rebind("MessengerService", stub); + } + + public Message sendMessage(Message clientMessage) throws RemoteException { + + Message serverMessage = null; + if (clientMessage.getMessageText().equals("Client Message")) { + serverMessage = new Message("Server Message", "text/plain"); + } + + return serverMessage; + } + +} \ No newline at end of file diff --git a/java-rmi/src/test/java/com/baeldung/rmi/JavaRMIIntegrationTest.java b/java-rmi/src/test/java/com/baeldung/rmi/JavaRMIIntegrationTest.java new file mode 100644 index 0000000000..66bfbe49eb --- /dev/null +++ b/java-rmi/src/test/java/com/baeldung/rmi/JavaRMIIntegrationTest.java @@ -0,0 +1,44 @@ +package com.baeldung.rmi; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import java.rmi.NotBoundException; +import java.rmi.RemoteException; +import java.rmi.registry.LocateRegistry; +import java.rmi.registry.Registry; + +import org.junit.BeforeClass; +import org.junit.Test; + +public class JavaRMIIntegrationTest { + + @BeforeClass + public static void whenRunServer_thenServerStarts() { + + try { + MessengerServiceImpl server = new MessengerServiceImpl(); + server.createStubAndBind(); + } catch (RemoteException e) { + fail("Exception Occurred"); + } + } + + @Test + public void whenClientSendsMessageToServer_thenServerSendsResponseMessage() { + + try { + Registry registry = LocateRegistry.getRegistry(); + MessengerService server = (MessengerService) registry.lookup("MessengerService"); + String responseMessage = server.sendMessage("Client Message"); + + String expectedMessage = "Server Message"; + assertEquals(responseMessage, expectedMessage); + } catch (RemoteException e) { + fail("Exception Occurred"); + } catch (NotBoundException nb) { + fail("Exception Occurred"); + } + } + +} \ No newline at end of file diff --git a/java-vavr-stream/pom.xml b/java-vavr-stream/pom.xml new file mode 100644 index 0000000000..ca3807cd15 --- /dev/null +++ b/java-vavr-stream/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + com.baeldung.samples + java-vavr-stream + 1.0 + jar + + UTF-8 + 1.8 + 1.8 + + + + io.vavr + vavr + 0.9.2 + + + \ No newline at end of file diff --git a/java-vavr-stream/src/main/java/com/baeldung/samples/java/vavr/VavrSampler.java b/java-vavr-stream/src/main/java/com/baeldung/samples/java/vavr/VavrSampler.java new file mode 100644 index 0000000000..d539342f69 --- /dev/null +++ b/java-vavr-stream/src/main/java/com/baeldung/samples/java/vavr/VavrSampler.java @@ -0,0 +1,98 @@ +package com.baeldung.samples.java.vavr; + +import io.vavr.collection.Stream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.IntStream; + +/** + * + * @author baeldung + */ +public class VavrSampler { + + static int[] intArray = new int[]{1, 2, 4}; + static List intList = new ArrayList(); + static int[][] intOfInts = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; + + public static void main(String[] args) { + vavrStreamElementAccess(); + System.out.println("===================================="); + vavrParallelStreamAccess(); + System.out.println("===================================="); + jdkFlatMapping(); + System.out.println("===================================="); + vavrStreamManipulation(); + System.out.println("===================================="); + vavrStreamDistinct(); + } + + public static void vavrStreamElementAccess() { + System.out.println("Vavr Element Access"); + System.out.println("===================================="); + Stream vavredStream = Stream.ofAll(intArray); + System.out.println("Vavr index access: " + vavredStream.get(2)); + System.out.println("Vavr head element access: " + vavredStream.get()); + + Stream vavredStringStream = Stream.of("foo", "bar", "baz"); + System.out.println("Find foo " + vavredStringStream.indexOf("foo")); + } + + public static void vavrParallelStreamAccess() { + try { + System.out.println("Vavr Stream Concurrent Modification"); + System.out.println("===================================="); + Stream vavrStream = Stream.ofAll(intList); + intList.add(5); + vavrStream.forEach(i -> System.out.println("in a Vavr Stream: " + i)); + } catch (Exception ex) { + ex.printStackTrace(); + } + + Stream wrapped = Stream.ofAll(intArray); + intArray[2] = 5; + wrapped.forEach(i -> System.out.println("Vavr looped " + i)); + } + + public static void jdkFlatMapping() { + System.out.println("JDK FlatMap -> Uncomment line 68 to test"); + System.out.println("===================================="); + int[][] intOfInts = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; + + IntStream mapToInt = Arrays.stream(intOfInts) + .map(intArr -> Arrays.stream(intArr)) + .flatMapToInt(val -> val.map(n -> { + return n * n; + })) + .peek(n -> System.out.println("Peeking at " + n)); + //Uncomment to execute pipeline + //mapToInt.forEach(n -> System.out.println("FlatMapped Result "+n)); + } + + public static void vavrStreamManipulation() { + System.out.println("Vavr Stream Manipulation"); + System.out.println("===================================="); + List stringList = new ArrayList<>(); + stringList.add("foo"); + stringList.add("bar"); + stringList.add("baz"); + Stream vavredStream = Stream.ofAll(stringList); + vavredStream.forEach(item -> System.out.println("Vavr Stream item: " + item)); + Stream vavredStream2 = vavredStream.insert(2, "buzz"); + vavredStream2.forEach(item -> System.out.println("Vavr Stream item after stream addition: " + item)); + stringList.forEach(item -> System.out.println("List item after stream addition: " + item)); + Stream deletionStream = vavredStream.remove("bar"); + deletionStream.forEach(item -> System.out.println("Vavr Stream item after stream item deletion: " + item)); + + } + + public static void vavrStreamDistinct() { + Stream vavredStream = Stream.of("foo", "bar", "baz", "buxx", "bar", "bar", "foo"); + Stream distinctVavrStream = vavredStream.distinctBy((y, z) -> { + return y.compareTo(z); + }); + distinctVavrStream.forEach(item -> System.out.println("Vavr Stream item after distinct query " + item)); + + } +} diff --git a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/pom.xml b/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/pom.xml index b4bb243559..de69efa43a 100644 --- a/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/pom.xml +++ b/jee-7/src/main/java/com/baeldung/javaeeannotations/JavaEEAnnotationsSample/pom.xml @@ -34,10 +34,10 @@ org.apache.maven.plugins maven-compiler-plugin - 3.2 + 3.7.0 - 1.7 - 1.7 + 1.8 + 1.8 diff --git a/jenkins/hello-world/pom.xml b/jenkins/hello-world/pom.xml new file mode 100644 index 0000000000..15cf2f8e34 --- /dev/null +++ b/jenkins/hello-world/pom.xml @@ -0,0 +1,89 @@ + + + 4.0.0 + + org.jenkins-ci.plugins + plugin + 2.33 + + + jenkins-hello-world + 1.0-SNAPSHOT + hpi + + + 2.7.3 + + Hello World Plugin + A sample Jenkins Hello World plugin + https://wiki.jenkins-ci.org/display/JENKINS/TODO+Plugin + + + MIT License + http://opensource.org/licenses/MIT + + + + + org.jenkins-ci.plugins + structs + 1.7 + + + org.jenkins-ci.plugins.workflow + workflow-step-api + 2.12 + test + + + org.jenkins-ci.plugins.workflow + workflow-cps + 2.39 + test + + + org.jenkins-ci.plugins.workflow + workflow-job + 2.11.2 + test + + + org.jenkins-ci.plugins.workflow + workflow-basic-steps + 2.6 + test + + + org.jenkins-ci.plugins.workflow + workflow-durable-task-step + 2.13 + test + + + org.jenkins-ci.plugins.workflow + workflow-api + 2.20 + test + + + org.jenkins-ci.plugins.workflow + workflow-support + 2.14 + test + + + + + + repo.jenkins-ci.org + https://repo.jenkins-ci.org/public/ + + + + + + repo.jenkins-ci.org + https://repo.jenkins-ci.org/public/ + + + diff --git a/jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStats.java b/jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStats.java new file mode 100644 index 0000000000..67af636bb4 --- /dev/null +++ b/jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStats.java @@ -0,0 +1,20 @@ +package com.baeldung.jenkins.helloworld; + +public class ProjectStats { + + private final int classesNumber; + private final int linesNumber; + + public ProjectStats(int classesNumber, int linesNumber) { + this.classesNumber = classesNumber; + this.linesNumber = linesNumber; + } + + public int getClassesNumber() { + return classesNumber; + } + + public int getLinesNumber() { + return linesNumber; + } +} diff --git a/jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStatsBuildWrapper.java b/jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStatsBuildWrapper.java new file mode 100644 index 0000000000..9a7213c76f --- /dev/null +++ b/jenkins/hello-world/src/main/java/com/baeldung/jenkins/helloworld/ProjectStatsBuildWrapper.java @@ -0,0 +1,123 @@ +package com.baeldung.jenkins.helloworld; + +import hudson.Extension; +import hudson.FilePath; +import hudson.Launcher; +import hudson.model.AbstractBuild; +import hudson.model.AbstractProject; +import hudson.model.BuildListener; +import hudson.tasks.BuildWrapper; +import hudson.tasks.BuildWrapperDescriptor; +import org.kohsuke.stapler.DataBoundConstructor; + +import javax.annotation.Nonnull; +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.Stack; + +public class ProjectStatsBuildWrapper extends BuildWrapper { + + private static final String REPORT_TEMPLATE_PATH = "/stats.html"; + private static final String PROJECT_NAME_VAR = "$PROJECT_NAME$"; + private static final String CLASSES_NUMBER_VAR = "$CLASSES_NUMBER$"; + private static final String LINES_NUMBER_VAR = "$LINES_NUMBER$"; + + @DataBoundConstructor + public ProjectStatsBuildWrapper() { + } + + @Override + public Environment setUp(AbstractBuild build, final Launcher launcher, BuildListener listener) { + return new Environment() { + @Override + public boolean tearDown(AbstractBuild build, BuildListener listener) + throws IOException, InterruptedException + { + ProjectStats stats = buildStats(build.getWorkspace()); + String report = generateReport(build.getProject().getDisplayName(), stats); + File artifactsDir = build.getArtifactsDir(); + if (!artifactsDir.isDirectory()) { + boolean success = artifactsDir.mkdirs(); + if (!success) { + listener.getLogger().println("Can't create artifacts directory at " + + artifactsDir.getAbsolutePath()); + } + } + String path = artifactsDir.getCanonicalPath() + REPORT_TEMPLATE_PATH; + try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path), + StandardCharsets.UTF_8))) { + writer.write(report); + } + return super.tearDown(build, listener); + } + }; + } + + private static ProjectStats buildStats(FilePath root) throws IOException, InterruptedException { + int classesNumber = 0; + int linesNumber = 0; + Stack toProcess = new Stack<>(); + toProcess.push(root); + while (!toProcess.isEmpty()) { + FilePath path = toProcess.pop(); + if (path.isDirectory()) { + toProcess.addAll(path.list()); + } else if (path.getName().endsWith(".java")) { + classesNumber++; + linesNumber += countLines(path); + } + } + return new ProjectStats(classesNumber, linesNumber); + } + + private static int countLines(FilePath path) throws IOException, InterruptedException { + byte[] buffer = new byte[1024]; + int result = 1; + try (InputStream in = path.read()) { + while (true) { + int read = in.read(buffer); + if (read < 0) { + return result; + } + for (int i = 0; i < read; i++) { + if (buffer[i] == '\n') { + result++; + } + } + } + } + } + + private static String generateReport(String projectName, ProjectStats stats) throws IOException { + ByteArrayOutputStream bOut = new ByteArrayOutputStream(); + try (InputStream in = ProjectStatsBuildWrapper.class.getResourceAsStream(REPORT_TEMPLATE_PATH)) { + byte[] buffer = new byte[1024]; + int read; + while ((read = in.read(buffer)) >= 0) { + bOut.write(buffer, 0, read); + } + } + String content = new String(bOut.toByteArray(), StandardCharsets.UTF_8); + content = content.replace(PROJECT_NAME_VAR, projectName); + content = content.replace(CLASSES_NUMBER_VAR, String.valueOf(stats.getClassesNumber())); + content = content.replace(LINES_NUMBER_VAR, String.valueOf(stats.getLinesNumber())); + return content; + } + + @Extension + public static final class DescriptorImpl extends BuildWrapperDescriptor { + + @Override + public boolean isApplicable(AbstractProject item) { + return true; + } + + @Nonnull + @Override + public String getDisplayName() { + return "Construct project stats during build"; + } + + } + +} diff --git a/jenkins/hello-world/src/main/resources/stats.html b/jenkins/hello-world/src/main/resources/stats.html new file mode 100644 index 0000000000..2a14b5de3f --- /dev/null +++ b/jenkins/hello-world/src/main/resources/stats.html @@ -0,0 +1,20 @@ + + + + + $PROJECT_NAME$ + + +Project $PROJECT_NAME$: + + + + + + + + + +
Classes numberLines number
$CLASSES_NUMBER$$LINES_NUMBER$
+ + \ No newline at end of file diff --git a/jhipster/jhipster-microservice/car-app/pom.xml b/jhipster/jhipster-microservice/car-app/pom.xml index 23da8767cb..5fd7febd07 100644 --- a/jhipster/jhipster-microservice/car-app/pom.xml +++ b/jhipster/jhipster-microservice/car-app/pom.xml @@ -506,6 +506,8 @@ maven-compiler-plugin ${maven-compiler-plugin.version} + 1.8 + 1.8 org.mapstruct diff --git a/jjwt/pom.xml b/jjwt/pom.xml index 83a1131211..cd2dd9f97e 100644 --- a/jjwt/pom.xml +++ b/jjwt/pom.xml @@ -12,10 +12,10 @@ Exercising the JJWT - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/jjwt/src/test/java/io/jsonwebtoken/jjwtfun/DemoApplicationIntegrationTest.java b/jjwt/src/test/java/io/jsonwebtoken/jjwtfun/DemoApplicationIntegrationTest.java index df147232d9..846445ab2b 100644 --- a/jjwt/src/test/java/io/jsonwebtoken/jjwtfun/DemoApplicationIntegrationTest.java +++ b/jjwt/src/test/java/io/jsonwebtoken/jjwtfun/DemoApplicationIntegrationTest.java @@ -2,12 +2,12 @@ package io.jsonwebtoken.jjwtfun; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = JJWTFunApplication.class) +@SpringBootTest(classes = JJWTFunApplication.class) @WebAppConfiguration public class DemoApplicationIntegrationTest { diff --git a/spring-jmeter-jenkins/.gitignore b/jmeter/.gitignore similarity index 100% rename from spring-jmeter-jenkins/.gitignore rename to jmeter/.gitignore diff --git a/spring-jmeter-jenkins/.mvn/wrapper/maven-wrapper.jar b/jmeter/.mvn/wrapper/maven-wrapper.jar similarity index 100% rename from spring-jmeter-jenkins/.mvn/wrapper/maven-wrapper.jar rename to jmeter/.mvn/wrapper/maven-wrapper.jar diff --git a/spring-jmeter-jenkins/.mvn/wrapper/maven-wrapper.properties b/jmeter/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from spring-jmeter-jenkins/.mvn/wrapper/maven-wrapper.properties rename to jmeter/.mvn/wrapper/maven-wrapper.properties diff --git a/spring-jmeter-jenkins/README.md b/jmeter/README.md similarity index 58% rename from spring-jmeter-jenkins/README.md rename to jmeter/README.md index 49c18122a2..e3f9d1a4db 100644 --- a/spring-jmeter-jenkins/README.md +++ b/jmeter/README.md @@ -1,20 +1,7 @@ BASIC CRUD API with Spring Boot ================================ -This is the code of a simple API for some CRUD operations realised for a seminar at [FGI](www.fgi-ud.org) using Spring Boot. - -### Demo -* API: The online version **is**/**will be** hosted here: https://fgi-tcheck.herokuapp.com -* Mobile version is also opensource and located here: https://github.com/valdesekamdem/tcheck-mobile - -### Features -#### Currently Implemented -* CRUD - * Student - -#### To DO -* Validations of input with: [Spring Data Rest Validators](http://docs.spring.io/spring-data/rest/docs/2.1.0.RELEASE/reference/html/validation-chapter.html) - +This is the code of a simple API for some CRUD operations build using Spring Boot. ### Requirements @@ -49,7 +36,11 @@ Or create a new one via a POST: $ curl -X POST -H "Content-Type:application/json" -d '{ "firstName" : "Dassi", "lastName" : "Orleando", "phoneNumber": "+237 545454545", "email": "mymail@yahoo.fr" }' localhost:8080/students ``` - Now with default configurations it will be available at: [http://localhost:8080](http://localhost:8080) -Enjoy it :) \ No newline at end of file +Enjoy it :) + +### Relevant Articles: + +- [Intro to Performance Testing using JMeter](http://www.baeldung.com/jmeter) +- [Configure Jenkins to Run and Show JMeter Tests](http://www.baeldung.com/jenkins-and-jmeter) diff --git a/jmeter/jmeter.log b/jmeter/jmeter.log new file mode 100644 index 0000000000..ce55007e74 --- /dev/null +++ b/jmeter/jmeter.log @@ -0,0 +1,68 @@ +2017-12-13 04:50:16,291 INFO o.a.j.u.JMeterUtils: Setting Locale to en_US +2017-12-13 04:50:16,319 INFO o.a.j.JMeter: Loading user properties from: /Users/dassiorleando/projects/biz/baeldung/jmeter/apache-jmeter-3.3/bin/user.properties +2017-12-13 04:50:16,392 INFO o.a.j.JMeter: Loading system properties from: /Users/dassiorleando/projects/biz/baeldung/jmeter/apache-jmeter-3.3/bin/system.properties +2017-12-13 04:50:16,406 INFO o.a.j.JMeter: Setting JMeter property: jmeter.save.saveservice.output_format=xml +2017-12-13 04:50:16,451 INFO o.a.j.JMeter: Copyright (c) 1998-2017 The Apache Software Foundation +2017-12-13 04:50:16,451 INFO o.a.j.JMeter: Version 3.3 r1808647 +2017-12-13 04:50:16,451 INFO o.a.j.JMeter: java.version=1.8.0_152 +2017-12-13 04:50:16,451 INFO o.a.j.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM +2017-12-13 04:50:16,451 INFO o.a.j.JMeter: os.name=Mac OS X +2017-12-13 04:50:16,451 INFO o.a.j.JMeter: os.arch=x86_64 +2017-12-13 04:50:16,452 INFO o.a.j.JMeter: os.version=10.12.6 +2017-12-13 04:50:16,452 INFO o.a.j.JMeter: file.encoding=UTF-8 +2017-12-13 04:50:16,452 INFO o.a.j.JMeter: Max memory =536870912 +2017-12-13 04:50:16,452 INFO o.a.j.JMeter: Available Processors =4 +2017-12-13 04:50:16,461 INFO o.a.j.JMeter: Default Locale=English (United States) +2017-12-13 04:50:16,462 INFO o.a.j.JMeter: JMeter Locale=English (United States) +2017-12-13 04:50:16,462 INFO o.a.j.JMeter: JMeterHome=/Users/dassiorleando/projects/biz/baeldung/jmeter/apache-jmeter-3.3 +2017-12-13 04:50:16,462 INFO o.a.j.JMeter: user.dir =/Users/dassiorleando/projects/biz/baeldung/tutorials/jmeter +2017-12-13 04:50:16,462 INFO o.a.j.JMeter: PWD =/Users/dassiorleando/projects/biz/baeldung/tutorials/jmeter +2017-12-13 04:50:16,466 INFO o.a.j.JMeter: IP: 192.168.10.100 Name: MBP FullName: 192.168.10.100 +2017-12-13 04:50:16,472 INFO o.a.j.s.FileServer: Default base='/Users/dassiorleando/projects/biz/baeldung/tutorials/jmeter' +2017-12-13 04:50:16,473 INFO o.a.j.s.FileServer: Set new base='/Users/dassiorleando/projects/biz/baeldung/tutorials/jmeter/src/main/resources' +2017-12-13 04:50:17,022 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2 +2017-12-13 04:50:17,134 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8 +2017-12-13 04:50:17,142 INFO o.a.j.s.SaveService: Using SaveService properties version 3.2 +2017-12-13 04:50:17,168 INFO o.a.j.s.SaveService: Loading file: src/main/resources/JMeter.jmx +2017-12-13 04:50:17,340 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser +2017-12-13 04:50:17,351 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser +2017-12-13 04:50:17,352 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser +2017-12-13 04:50:17,352 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser +2017-12-13 04:50:17,353 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser +2017-12-13 04:50:17,353 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser +2017-12-13 04:50:17,552 INFO o.a.j.JMeter: Creating summariser +2017-12-13 04:50:17,580 INFO o.a.j.e.StandardJMeterEngine: Running the test! +2017-12-13 04:50:17,581 INFO o.a.j.s.SampleEvent: List of sample_variables: [] +2017-12-13 04:50:17,582 INFO o.a.j.s.SampleEvent: List of sample_variables: [] +2017-12-13 04:50:17,590 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must contain the string: '.functions.' +2017-12-13 04:50:17,590 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must not contain the string: '.gui.' +2017-12-13 04:50:18,640 INFO o.a.j.JMeter: Running test (1513137018640) +2017-12-13 04:50:18,728 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group +2017-12-13 04:50:18,737 INFO o.a.j.e.StandardJMeterEngine: Starting 5 threads for group Thread Group. +2017-12-13 04:50:18,737 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error +2017-12-13 04:50:18,738 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=5 ramp-up=1 perThread=200.0 delayedStart=false +2017-12-13 04:50:18,751 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-1 +2017-12-13 04:50:18,753 INFO o.a.j.t.ThreadGroup: Started thread group number 1 +2017-12-13 04:50:18,753 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started +2017-12-13 04:50:18,786 INFO o.a.j.p.h.s.HTTPHCAbstractImpl: Local host = MBP +2017-12-13 04:50:18,797 INFO o.a.j.p.h.s.HTTPHC4Impl: HTTP request retry count = 0 +2017-12-13 04:50:18,812 INFO o.a.j.s.SampleResult: Note: Sample TimeStamps are START times +2017-12-13 04:50:18,812 INFO o.a.j.s.SampleResult: sampleresult.default.encoding is set to ISO-8859-1 +2017-12-13 04:50:18,812 INFO o.a.j.s.SampleResult: sampleresult.useNanoTime=true +2017-12-13 04:50:18,812 INFO o.a.j.s.SampleResult: sampleresult.nanoThreadSleep=5000 +2017-12-13 04:50:18,954 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-2 +2017-12-13 04:50:19,152 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-3 +2017-12-13 04:50:19,257 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-3 +2017-12-13 04:50:19,257 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-3 +2017-12-13 04:50:19,264 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-2 +2017-12-13 04:50:19,264 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-1 +2017-12-13 04:50:19,264 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-2 +2017-12-13 04:50:19,265 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-1 +2017-12-13 04:50:19,353 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-4 +2017-12-13 04:50:19,365 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-4 +2017-12-13 04:50:19,365 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-4 +2017-12-13 04:50:19,557 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-5 +2017-12-13 04:50:19,573 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-5 +2017-12-13 04:50:19,573 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-5 +2017-12-13 04:50:19,573 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test +2017-12-13 04:50:19,575 INFO o.a.j.r.Summariser: summary = 5 in 00:00:01 = 5.4/s Avg: 155 Min: 10 Max: 388 Err: 4 (80.00%) diff --git a/spring-jmeter-jenkins/mvnw b/jmeter/mvnw similarity index 100% rename from spring-jmeter-jenkins/mvnw rename to jmeter/mvnw diff --git a/spring-jmeter-jenkins/mvnw.cmd b/jmeter/mvnw.cmd similarity index 100% rename from spring-jmeter-jenkins/mvnw.cmd rename to jmeter/mvnw.cmd diff --git a/jmeter/pom.xml b/jmeter/pom.xml new file mode 100644 index 0000000000..977e3bbc94 --- /dev/null +++ b/jmeter/pom.xml @@ -0,0 +1,69 @@ + + + 4.0.0 + + jmeter + 0.0.1-SNAPSHOT + jar + + jmeter + Intro to Performance testing using JMeter + + + parent-boot-5 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-5 + + + + UTF-8 + UTF-8 + 1.8 + 2.6.0 + + + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + org.springframework.boot + spring-boot-starter-data-rest + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + com.lazerycode.jmeter + jmeter-maven-plugin + ${jmeter.version} + + + jmeter-tests + + jmeter + + + + + ${project.basedir}/src/main/resources + ${project.basedir}/src/main/resources + + + + + diff --git a/spring-jmeter-jenkins/src/main/java/com/baeldung/SpringJMeterJenkinsApplication.java b/jmeter/src/main/java/com/baeldung/SpringJMeterJenkinsApplication.java similarity index 100% rename from spring-jmeter-jenkins/src/main/java/com/baeldung/SpringJMeterJenkinsApplication.java rename to jmeter/src/main/java/com/baeldung/SpringJMeterJenkinsApplication.java diff --git a/spring-jmeter-jenkins/src/main/java/com/baeldung/domain/Student.java b/jmeter/src/main/java/com/baeldung/domain/Student.java similarity index 100% rename from spring-jmeter-jenkins/src/main/java/com/baeldung/domain/Student.java rename to jmeter/src/main/java/com/baeldung/domain/Student.java diff --git a/spring-jmeter-jenkins/src/main/java/com/baeldung/repository/StudentRepository.java b/jmeter/src/main/java/com/baeldung/repository/StudentRepository.java similarity index 100% rename from spring-jmeter-jenkins/src/main/java/com/baeldung/repository/StudentRepository.java rename to jmeter/src/main/java/com/baeldung/repository/StudentRepository.java diff --git a/jmeter/src/main/resources/20171213-JMeter.csv b/jmeter/src/main/resources/20171213-JMeter.csv new file mode 100644 index 0000000000..6eb1a37cb0 --- /dev/null +++ b/jmeter/src/main/resources/20171213-JMeter.csv @@ -0,0 +1,6 @@ +timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,Latency,IdleTime,Connect +1513134869133,1075,HTTP Request,Non HTTP response code: java.net.ConnectException,Non HTTP response message: Connection refused (Connection refused),Thread Group 1-4,text,false,"The operation lasted too long: It took 1,075 milliseconds, but should not have lasted longer than 10 milliseconds.",2058,0,5,5,0,0,1075 +1513134869272,935,HTTP Request,Non HTTP response code: java.net.ConnectException,Non HTTP response message: Connection refused (Connection refused),Thread Group 1-1,text,false,"The operation lasted too long: It took 935 milliseconds, but should not have lasted longer than 10 milliseconds.",2058,0,5,5,0,0,935 +1513134869133,1075,HTTP Request,Non HTTP response code: java.net.ConnectException,Non HTTP response message: Connection refused (Connection refused),Thread Group 1-3,text,false,"The operation lasted too long: It took 1,075 milliseconds, but should not have lasted longer than 10 milliseconds.",2058,0,5,5,0,0,1075 +1513134869272,935,HTTP Request,Non HTTP response code: java.net.ConnectException,Non HTTP response message: Connection refused (Connection refused),Thread Group 1-2,text,false,"The operation lasted too long: It took 935 milliseconds, but should not have lasted longer than 10 milliseconds.",2058,0,5,5,0,0,934 +1513134869133,1074,HTTP Request,Non HTTP response code: java.net.ConnectException,Non HTTP response message: Connection refused (Connection refused),Thread Group 1-5,text,false,"The operation lasted too long: It took 1,074 milliseconds, but should not have lasted longer than 10 milliseconds.",2058,0,5,5,0,0,1074 diff --git a/spring-jmeter-jenkins/src/main/resources/JMeter-Jenkins.jmx b/jmeter/src/main/resources/JMeter.jmx similarity index 99% rename from spring-jmeter-jenkins/src/main/resources/JMeter-Jenkins.jmx rename to jmeter/src/main/resources/JMeter.jmx index 49ce2dec1d..77bccb2b24 100644 --- a/spring-jmeter-jenkins/src/main/resources/JMeter-Jenkins.jmx +++ b/jmeter/src/main/resources/JMeter.jmx @@ -1,7 +1,7 @@ - + false false diff --git a/jmeter/src/main/resources/JMeter.jtl b/jmeter/src/main/resources/JMeter.jtl new file mode 100644 index 0000000000..f9259ef739 --- /dev/null +++ b/jmeter/src/main/resources/JMeter.jtl @@ -0,0 +1,43 @@ + + + + + Duration Assertion + true + false + The operation lasted too long: It took 83 milliseconds, but should not have lasted longer than 10 milliseconds. + + + + + Duration Assertion + true + false + The operation lasted too long: It took 388 milliseconds, but should not have lasted longer than 10 milliseconds. + + + + + Duration Assertion + true + false + The operation lasted too long: It took 281 milliseconds, but should not have lasted longer than 10 milliseconds. + + + + + Duration Assertion + false + false + + + + + Duration Assertion + true + false + The operation lasted too long: It took 13 milliseconds, but should not have lasted longer than 10 milliseconds. + + + + diff --git a/spring-jmeter-jenkins/src/main/resources/application.properties b/jmeter/src/main/resources/application.properties similarity index 100% rename from spring-jmeter-jenkins/src/main/resources/application.properties rename to jmeter/src/main/resources/application.properties diff --git a/spring-jmeter-jenkins/src/test/java/com/baeldung/SpringJMeterJenkinsApplicationIntegrationTest.java b/jmeter/src/test/java/com/baeldung/SpringJMeterJenkinsApplicationIntegrationTest.java similarity index 100% rename from spring-jmeter-jenkins/src/test/java/com/baeldung/SpringJMeterJenkinsApplicationIntegrationTest.java rename to jmeter/src/test/java/com/baeldung/SpringJMeterJenkinsApplicationIntegrationTest.java diff --git a/jsonb/README.md b/jsonb/README.md index a638f0355c..9293a44808 100644 --- a/jsonb/README.md +++ b/jsonb/README.md @@ -1 +1,4 @@ ## JSON B + +## Relevant articles: +- [Introduction to the JSON Binding API (JSR 367) in Java](http://www.baeldung.com/java-json-binding-api) diff --git a/junit5/README.md b/junit5/README.md new file mode 100644 index 0000000000..fb1685fdd5 --- /dev/null +++ b/junit5/README.md @@ -0,0 +1,2 @@ +## Relevant articles: +- [The Order of Tests in JUnit](http://www.baeldung.com/junit-5-test-order) diff --git a/libraries-data/README.md b/libraries-data/README.md index ceb0a1d5f7..9e8d32fa44 100644 --- a/libraries-data/README.md +++ b/libraries-data/README.md @@ -2,3 +2,4 @@ - [Introduction to Reladomo](http://www.baeldung.com/reladomo) - [Introduction to ORMLite](http://www.baeldung.com/ormlite) - [Introduction To Kryo](http://www.baeldung.com/kryo) +- [Introduction to KafkaStreams in Java](http://www.baeldung.com/java-kafka-streams) diff --git a/libraries-data/pom.xml b/libraries-data/pom.xml index 90b1f6bb1d..4727ca2222 100644 --- a/libraries-data/pom.xml +++ b/libraries-data/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 com.baeldung @@ -15,18 +16,18 @@ kryo ${kryo.version} - + com.h2database h2 ${h2.version} - + junit junit ${junit.version} test - + com.goldmansachs.reladomo reladomo ${reladomo.version} @@ -41,8 +42,31 @@ ormlite-jdbc ${ormlite.version} + + org.apache.kafka + kafka-streams + ${kafka.version} + + + org.apache.kafka + kafka-clients + ${kafka.version} + + + org.slf4j + slf4j-log4j12 + + + + + org.apache.kafka + kafka-clients + ${kafka.version} + test + test + - + @@ -68,24 +92,24 @@ - + + classname="com.gs.fw.common.mithra.generator.MithraGenerator"/> + xml="${project.basedir}/src/main/resources/reladomo/ReladomoClassList.xml" + generateGscListMethod="true" + generatedDir="${project.build.directory}/generated-sources/reladomo" + nonGeneratedDir="${project.basedir}/src/main/java"/> - + classname="com.gs.fw.common.mithra.generator.dbgenerator.MithraDbDefinitionGenerator" + loaderRef="reladomoGenerator"> + + xml="${project.basedir}/src/main/resources/reladomo/ReladomoClassList.xml" + generatedDir="${project.build.directory}/generated-db/sql" + databaseType="postgres"/> @@ -139,16 +163,23 @@ - + - + + + + Apache Staging + https://repository.apache.org/content/groups/staging + + 4.0.1 1.4.196 16.5.1 4.12 - 3.6.2 + 3.7.0 5.0 + 1.0.0 \ No newline at end of file diff --git a/libraries-data/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java b/libraries-data/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java new file mode 100644 index 0000000000..32568e9ea5 --- /dev/null +++ b/libraries-data/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java @@ -0,0 +1,62 @@ +package com.baeldung.kafkastreams; + +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.common.serialization.Serde; +import org.apache.kafka.common.serialization.Serdes; +import org.apache.kafka.streams.KafkaStreams; +import org.apache.kafka.streams.StreamsConfig; +import org.apache.kafka.streams.kstream.KStream; +import org.apache.kafka.streams.kstream.KStreamBuilder; +import org.apache.kafka.streams.kstream.KTable; +import org.apache.kafka.test.TestUtils; +import org.junit.Ignore; +import org.junit.Test; + +import java.util.Arrays; +import java.util.Properties; +import java.util.regex.Pattern; + +public class KafkaStreamsLiveTest { + private String bootstrapServers = "localhost:9092"; + + @Test + @Ignore("it needs to have kafka broker running on local") + public void shouldTestKafkaStreams() throws InterruptedException { + //given + String inputTopic = "inputTopic"; + + Properties streamsConfiguration = new Properties(); + streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-live-test"); + streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); + streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); + streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000); + streamsConfiguration.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); + // Use a temporary directory for storing state, which will be automatically removed after the test. + streamsConfiguration.put(StreamsConfig.STATE_DIR_CONFIG, TestUtils.tempDirectory().getAbsolutePath()); + + //when + KStreamBuilder builder = new KStreamBuilder(); + KStream textLines = builder.stream(inputTopic); + Pattern pattern = Pattern.compile("\\W+", Pattern.UNICODE_CHARACTER_CLASS); + + KTable wordCounts = textLines + .flatMapValues(value -> Arrays.asList(pattern.split(value.toLowerCase()))) + .groupBy((key, word) -> word) + .count(); + + wordCounts.foreach((word, count) -> System.out.println("word: " + word + " -> " + count)); + + String outputTopic = "outputTopic"; + final Serde stringSerde = Serdes.String(); + final Serde longSerde = Serdes.Long(); + wordCounts.to(stringSerde, longSerde, outputTopic); + + KafkaStreams streams = new KafkaStreams(builder, streamsConfiguration); + streams.start(); + + //then + Thread.sleep(30000); + streams.close(); + } +} diff --git a/libraries/README.md b/libraries/README.md index ae2522ca9e..d001f13698 100644 --- a/libraries/README.md +++ b/libraries/README.md @@ -30,7 +30,7 @@ - [Introduction to Neuroph](http://www.baeldung.com/neuroph) - [Guide to Apache Commons CircularFifoQueue](http://www.baeldung.com/commons-circular-fifo-queue) - [Quick Guide to RSS with Rome](http://www.baeldung.com/rome-rss) -- [Introduction to NoException](http://www.baeldung.com/intrduction-to-noexception) +- [Introduction to NoException](http://www.baeldung.com/introduction-to-noexception) - [Introduction to PCollections](http://www.baeldung.com/java-pcollections) - [Introduction to Hoverfly in Java](http://www.baeldung.com/hoverfly) - [Apache Commons Chain](http://www.baeldung.com/apache-commons-chain) @@ -58,6 +58,8 @@ - [Introduction to BouncyCastle with Java](http://www.baeldung.com/java-bouncy-castle) - [Intro to JDO Queries 2/2](http://www.baeldung.com/jdo-queries) - [Guide to google-http-client](http://www.baeldung.com/google-http-client) +- [Interact with Google Sheets from Java](http://www.baeldung.com/google-sheets-java-client) + The libraries module contains examples related to small libraries that are relatively easy to use and does not require any separate module of its own. diff --git a/libraries/pom.xml b/libraries/pom.xml index 27d867b68b..3e802e76c8 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -107,6 +107,7 @@ maven-compiler-plugin + 3.7.0 1.8 1.8 @@ -193,6 +194,11 @@ jetty-servlet ${jetty.version} + + org.eclipse.jetty + jetty-webapp + ${jetty.version} + rome rome @@ -612,16 +618,16 @@ caffeine ${caffeine.version} - - org.bouncycastle - bcprov-jdk15on - 1.58 - - - org.bouncycastle - bcpkix-jdk15on - 1.58 - + + org.bouncycastle + bcprov-jdk15on + 1.58 + + + org.bouncycastle + bcpkix-jdk15on + 1.58 + com.google.http-client google-http-client @@ -630,13 +636,80 @@ com.google.http-client google-http-client-jackson2 - ${googleclient.version} + ${googleclient.version} - com.google.http-client - google-http-client-gson - ${googleclient.version} - + com.google.http-client + google-http-client-gson + ${googleclient.version} + + + + + com.github.docker-java + docker-java + ${docker.version} + + + org.slf4j + slf4j-log4j12 + + + org.slf4j + jcl-over-slf4j + + + ch.qos.logback + logback-classic + + + + + com.sun.jersey + jersey-client + 1.19.4 + + + + + + com.google.api-client + google-api-client + ${google-api.version} + + + com.google.oauth-client + google-oauth-client-jetty + ${google-api.version} + + + com.google.apis + google-api-services-sheets + ${google-sheets.version} + + + org.apache.kafka + kafka-streams + ${kafka.version} + + + org.apache.kafka + kafka-clients + ${kafka.version} + + + org.slf4j + slf4j-log4j12 + + + + + org.apache.kafka + kafka-clients + ${kafka.version} + test + test + @@ -652,6 +725,10 @@ bintray http://dl.bintray.com/cuba-platform/main + + Apache Staging + https://repository.apache.org/content/groups/staging + 1.23.0 @@ -669,12 +746,11 @@ 3.6.2 1.5.0 3.1.0 - 9.4.3.v20170317 4.5.3 2.5 1.6 1.4.196 - 9.4.2.v20170220 + 9.4.8.v20171121 4.5.3 2.5 1.2.0 @@ -710,5 +786,9 @@ 1.0.0 3.8.4 2.5.5 + 1.23.0 + v4-rev493-1.21.0 + 1.0.0 + 3.0.14 \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/google/sheets/GoogleAuthorizeUtil.java b/libraries/src/main/java/com/baeldung/google/sheets/GoogleAuthorizeUtil.java new file mode 100644 index 0000000000..650a1d084c --- /dev/null +++ b/libraries/src/main/java/com/baeldung/google/sheets/GoogleAuthorizeUtil.java @@ -0,0 +1,42 @@ +package com.baeldung.google.sheets; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.security.GeneralSecurityException; +import java.util.Arrays; +import java.util.List; + +import com.google.api.client.auth.oauth2.Credential; +import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; +import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; +import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; +import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; +import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; +import com.google.api.client.json.jackson2.JacksonFactory; +import com.google.api.client.util.store.MemoryDataStoreFactory; +import com.google.api.services.sheets.v4.SheetsScopes; + +public class GoogleAuthorizeUtil { + public static Credential authorize() throws IOException, GeneralSecurityException { + InputStream in = GoogleAuthorizeUtil.class.getResourceAsStream("/google-sheets-client-secret.json"); + GoogleClientSecrets clientSecrets = GoogleClientSecrets + .load(JacksonFactory.getDefaultInstance(), new InputStreamReader(in)); + + List scopes = Arrays.asList(SheetsScopes.SPREADSHEETS); + + GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow + .Builder(GoogleNetHttpTransport.newTrustedTransport(), + JacksonFactory.getDefaultInstance(), + clientSecrets, + scopes) + .setDataStoreFactory(new MemoryDataStoreFactory()) + .setAccessType("offline") + .build(); + Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()) + .authorize("user"); + + return credential; + } + +} diff --git a/libraries/src/main/java/com/baeldung/google/sheets/SheetsServiceUtil.java b/libraries/src/main/java/com/baeldung/google/sheets/SheetsServiceUtil.java new file mode 100644 index 0000000000..bbce96f389 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/google/sheets/SheetsServiceUtil.java @@ -0,0 +1,23 @@ +package com.baeldung.google.sheets; + +import java.io.IOException; +import java.security.GeneralSecurityException; + +import com.google.api.client.auth.oauth2.Credential; +import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; +import com.google.api.client.json.jackson2.JacksonFactory; +import com.google.api.services.sheets.v4.Sheets; + +public class SheetsServiceUtil { + + private static final String APPLICATION_NAME = "Google Sheets Example"; + + public static Sheets getSheetsService() throws IOException, GeneralSecurityException { + Credential credential = GoogleAuthorizeUtil.authorize(); + return new Sheets.Builder(GoogleNetHttpTransport.newTrustedTransport(), + JacksonFactory.getDefaultInstance(), credential) + .setApplicationName(APPLICATION_NAME) + .build(); + } + +} diff --git a/libraries/src/main/java/com/baeldung/jetty/JettyServerFactory.java b/libraries/src/main/java/com/baeldung/jetty/JettyServerFactory.java new file mode 100644 index 0000000000..00ba84368a --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jetty/JettyServerFactory.java @@ -0,0 +1,94 @@ +package com.baeldung.jetty; + +import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; +import org.eclipse.jetty.server.handler.HandlerCollection; +import org.eclipse.jetty.webapp.WebAppContext; + +/** + * Simple factory for creating Jetty basic instances. + * + * @author Donato Rimenti + * + */ +public class JettyServerFactory { + + /** + * Exposed context of the app. + */ + public final static String APP_PATH = "/myApp"; + + /** + * The server port. + */ + public final static int SERVER_PORT = 13133; + + /** + * Private constructor to avoid instantiation. + */ + private JettyServerFactory() { + } + + /** + * Returns a simple server listening on port 80 with a timeout of 30 seconds + * for connections and no handlers. + * + * @return a server + */ + public static Server createBaseServer() { + Server server = new Server(); + + // Adds a connector for port 80 with a timeout of 30 seconds. + ServerConnector connector = new ServerConnector(server); + connector.setPort(SERVER_PORT); + connector.setHost("127.0.0.1"); + connector.setIdleTimeout(30000); + server.addConnector(connector); + + return server; + } + + /** + * Creates a server which delegates the request handling to a web + * application. + * + * @return a server + */ + public static Server createWebAppServer() { + // Adds an handler to a server and returns it. + Server server = createBaseServer(); + String webAppFolderPath = JettyServerFactory.class.getClassLoader().getResource("jetty-embedded-demo-app.war") + .getPath(); + Handler webAppHandler = new WebAppContext(webAppFolderPath, APP_PATH); + server.setHandler(webAppHandler); + + return server; + } + + /** + * Creates a server which delegates the request handling to both a logging + * handler and to a web application, in this order. + * + * @return a server + */ + public static Server createMultiHandlerServer() { + Server server = createBaseServer(); + + // Creates the handlers and adds them to the server. + HandlerCollection handlers = new HandlerCollection(); + + String webAppFolderPath = JettyServerFactory.class.getClassLoader().getResource("jetty-embedded-demo-app.war") + .getPath(); + Handler customRequestHandler = new WebAppContext(webAppFolderPath, APP_PATH); + handlers.addHandler(customRequestHandler); + + Handler loggingRequestHandler = new LoggingRequestHandler(); + handlers.addHandler(loggingRequestHandler); + + server.setHandler(handlers); + + return server; + } + +} \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/jetty/LoggingRequestHandler.java b/libraries/src/main/java/com/baeldung/jetty/LoggingRequestHandler.java new file mode 100644 index 0000000000..a38759c903 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jetty/LoggingRequestHandler.java @@ -0,0 +1,168 @@ +package com.baeldung.jetty; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.Request; +import org.eclipse.jetty.server.Server; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Handler implementation which simply logs that a request has been received. + * + * @author Donato Rimenti + */ +public class LoggingRequestHandler implements Handler { + + /** + * Logger. + */ + private final static Logger LOG = LoggerFactory.getLogger(LoggingRequestHandler.class); + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.util.component.LifeCycle#addLifeCycleListener(org. + * eclipse.jetty.util.component.LifeCycle.Listener) + */ + @Override + public void addLifeCycleListener(Listener arg0) { + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.util.component.LifeCycle#isFailed() + */ + @Override + public boolean isFailed() { + return false; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.util.component.LifeCycle#isRunning() + */ + @Override + public boolean isRunning() { + return true; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.util.component.LifeCycle#isStarted() + */ + @Override + public boolean isStarted() { + return true; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.util.component.LifeCycle#isStarting() + */ + @Override + public boolean isStarting() { + return false; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.util.component.LifeCycle#isStopped() + */ + @Override + public boolean isStopped() { + return false; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.util.component.LifeCycle#isStopping() + */ + @Override + public boolean isStopping() { + return false; + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jetty.util.component.LifeCycle#removeLifeCycleListener(org. + * eclipse.jetty.util.component.LifeCycle.Listener) + */ + @Override + public void removeLifeCycleListener(Listener arg0) { + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.util.component.LifeCycle#start() + */ + @Override + public void start() throws Exception { + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.util.component.LifeCycle#stop() + */ + @Override + public void stop() throws Exception { + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.server.Handler#destroy() + */ + @Override + public void destroy() { + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.server.Handler#getServer() + */ + @Override + public Server getServer() { + return null; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.server.Handler#handle(java.lang.String, + * org.eclipse.jetty.server.Request, javax.servlet.http.HttpServletRequest, + * javax.servlet.http.HttpServletResponse) + */ + @Override + public void handle(String arg0, Request arg1, HttpServletRequest arg2, HttpServletResponse arg3) + throws IOException, ServletException { + LOG.info("Received a new request"); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jetty.server.Handler#setServer(org.eclipse.jetty.server. + * Server) + */ + @Override + public void setServer(Server server) { + } + +} diff --git a/libraries/src/main/java/com/baeldung/netty/ChannelHandlerA.java b/libraries/src/main/java/com/baeldung/netty/ChannelHandlerA.java new file mode 100644 index 0000000000..c919bdb09c --- /dev/null +++ b/libraries/src/main/java/com/baeldung/netty/ChannelHandlerA.java @@ -0,0 +1,22 @@ +package com.baeldung.netty; + +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInboundHandlerAdapter; + +import java.util.logging.Logger; + +public class ChannelHandlerA extends ChannelInboundHandlerAdapter { + + private Logger logger = Logger.getLogger(getClass().getName()); + + @Override + public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { + throw new Exception("Ooops"); + } + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + logger.info("Exception Occurred in ChannelHandler A"); + ctx.fireExceptionCaught(cause); + } +} diff --git a/libraries/src/main/java/com/baeldung/netty/ChannelHandlerB.java b/libraries/src/main/java/com/baeldung/netty/ChannelHandlerB.java new file mode 100644 index 0000000000..c5bdeb1013 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/netty/ChannelHandlerB.java @@ -0,0 +1,20 @@ +package com.baeldung.netty; + +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInboundHandlerAdapter; + +import java.util.logging.Logger; + + +public class ChannelHandlerB extends ChannelInboundHandlerAdapter { + + private Logger logger = Logger.getLogger(getClass().getName()); + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + logger.info("Exception Handled in ChannelHandler B"); + logger.info(cause.getLocalizedMessage()); + //do more exception handling + ctx.close(); + } +} diff --git a/libraries/src/main/java/com/baeldung/netty/NettyServerB.java b/libraries/src/main/java/com/baeldung/netty/NettyServerB.java new file mode 100644 index 0000000000..c8004623c2 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/netty/NettyServerB.java @@ -0,0 +1,47 @@ +package com.baeldung.netty; + +import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelOption; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioServerSocketChannel; + +public class NettyServerB { + + private int port; + + private NettyServerB(int port) { + this.port = port; + } + + private void run() throws Exception { + + EventLoopGroup bossGroup = new NioEventLoopGroup(); + EventLoopGroup workerGroup = new NioEventLoopGroup(); + + try { + ServerBootstrap b = new ServerBootstrap(); + b.group(bossGroup, workerGroup) + .channel(NioServerSocketChannel.class) + .childHandler(new ChannelInitializer() { + public void initChannel(SocketChannel ch) throws Exception { + ch.pipeline().addLast(new ChannelHandlerA(), new ChannelHandlerB()); + } + }) + .option(ChannelOption.SO_BACKLOG, 128) + .childOption(ChannelOption.SO_KEEPALIVE, true); + ChannelFuture f = b.bind(port).sync(); // (7) + f.channel().closeFuture().sync(); + } finally { + workerGroup.shutdownGracefully(); + bossGroup.shutdownGracefully(); + } + } + + public static void main(String[] args) throws Exception { + new NettyServerB(8080).run(); + } +} diff --git a/libraries/src/main/resources/google-sheets-client-secret.json b/libraries/src/main/resources/google-sheets-client-secret.json new file mode 100644 index 0000000000..c92ccd6b9b --- /dev/null +++ b/libraries/src/main/resources/google-sheets-client-secret.json @@ -0,0 +1 @@ +{"installed":{"client_id":"394827218507-2ev02b2ha8plt7g2lh5nqse02ee737cf.apps.googleusercontent.com","project_id":"decisive-octane-187810","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://accounts.google.com/o/oauth2/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"2MnN1DfenoCGWMay3v8Bf7eI","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}} \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/dockerapi/ContainerLiveTest.java b/libraries/src/test/java/com/baeldung/dockerapi/ContainerLiveTest.java new file mode 100644 index 0000000000..531e7e7c5b --- /dev/null +++ b/libraries/src/test/java/com/baeldung/dockerapi/ContainerLiveTest.java @@ -0,0 +1,165 @@ +package com.baeldung.dockerapi; + +import com.github.dockerjava.api.DockerClient; +import com.github.dockerjava.api.command.CreateContainerResponse; +import com.github.dockerjava.api.command.InspectContainerResponse; +import com.github.dockerjava.api.model.Container; +import com.github.dockerjava.api.model.PortBinding; +import com.github.dockerjava.core.DockerClientBuilder; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.List; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.core.Is.is; + +public class ContainerLiveTest { + + private static DockerClient dockerClient; + + @BeforeClass + public static void setup() { + dockerClient = DockerClientBuilder.getInstance().build(); + } + + @Test + public void whenListingRunningContainers_thenReturnNonEmptyList() { + + //when + List containers = dockerClient.listContainersCmd().exec(); + + //then + assertThat(containers.size(), is(not(0))); + } + + @Test + public void whenListingExitedContainers_thenReturnNonEmptyList() { + + //when + List containers = dockerClient.listContainersCmd() + .withShowSize(true) + .withShowAll(true) + .withStatusFilter("exited") + .exec(); + + //then + assertThat(containers.size(), is(not(0))); + } + + @Test + public void whenCreatingContainer_thenMustReturnContainerId() { + + //when + CreateContainerResponse container + = dockerClient.createContainerCmd("mongo:3.6") + .withCmd("--bind_ip_all") + .withName("mongo") + .withHostName("baeldung") + .withEnv("MONGO_LATEST_VERSION=3.6") + .withPortBindings(PortBinding.parse("9999:27017")) + .exec(); + + //then + assertThat(container.getId(), is(not(null))); + } + + + @Test + public void whenHavingContainer_thenRunContainer() throws InterruptedException { + + //when + CreateContainerResponse container + = dockerClient.createContainerCmd("alpine:3.6") + .withCmd("sleep", "10000") + .exec(); + + Thread.sleep(3000); + //then + dockerClient.startContainerCmd(container.getId()) + .exec(); + + dockerClient.stopContainerCmd(container.getId()) + .exec(); + } + + @Test + public void whenRunningContainer_thenStopContainer() throws InterruptedException { + + //when + CreateContainerResponse container + = dockerClient.createContainerCmd("alpine:3.6") + .withCmd("sleep", "10000") + .exec(); + + Thread.sleep(3000); + dockerClient.startContainerCmd(container.getId()) + .exec(); + + //then + dockerClient.stopContainerCmd(container.getId()) + .exec(); + } + + @Test + public void whenRunningContainer_thenKillContainer() throws InterruptedException { + + //when + CreateContainerResponse container + = dockerClient.createContainerCmd("alpine:3.6") + .withCmd("sleep", "10000") + .exec(); + + dockerClient.startContainerCmd(container.getId()) + .exec(); + + Thread.sleep(3000); + dockerClient.stopContainerCmd(container.getId()) + .exec(); + + //then + dockerClient.killContainerCmd(container.getId()) + .exec(); + } + + @Test + public void whenHavingContainer_thenInspectContainer() { + + //when + CreateContainerResponse container + = dockerClient.createContainerCmd("alpine:3.6") + .withCmd("sleep", "10000") + .exec(); + + //then + InspectContainerResponse containerResponse + = dockerClient.inspectContainerCmd(container.getId()) + .exec(); + + assertThat(containerResponse.getId(), is(container.getId())); + } + + + @Test + public void givenContainer_whenCommittingContainer_thenMustReturnImageId() { + + //given + CreateContainerResponse container + = dockerClient.createContainerCmd("alpine:3.6") + .withCmd("sleep", "10000") + .exec(); + + //when + String imageId = dockerClient.commitCmd(container.getId()) + .withEnv("SNAPSHOT_YEAR=2018") + .withMessage("add git support") + .withCmd("sleep", "10000") + .withRepository("alpine") + .withTag("3.6.v2").exec(); + + //then + assertThat(imageId, is(not(null))); + } + +} diff --git a/libraries/src/test/java/com/baeldung/dockerapi/DockerClientLiveTest.java b/libraries/src/test/java/com/baeldung/dockerapi/DockerClientLiveTest.java new file mode 100644 index 0000000000..1023298e25 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/dockerapi/DockerClientLiveTest.java @@ -0,0 +1,83 @@ +package com.baeldung.dockerapi; + +import com.github.dockerjava.api.DockerClient; +import com.github.dockerjava.core.DefaultDockerClientConfig; +import com.github.dockerjava.core.DockerClientBuilder; +import org.junit.Test; + +import java.util.Properties; + +import static org.junit.Assert.assertNotNull; + +public class DockerClientLiveTest { + + @Test + public void whenCreatingDockerClient_thenReturnDefaultInstance() { + + //when + DefaultDockerClientConfig.Builder config + = DefaultDockerClientConfig.createDefaultConfigBuilder(); + DockerClient dockerClient = DockerClientBuilder.getInstance(config).build(); + + //then + assertNotNull(dockerClient); + } + + @Test + public void whenCreatingDockerClientWithDockerHost_thenReturnInstance() { + //when + DockerClient dockerClient + = DockerClientBuilder.getInstance("tcp://docker.bealdung.com:2375") + .build(); + + //then + assertNotNull(dockerClient); + } + + @Test + public void whenCreatingAdvanceDockerClient_thenReturnInstance() { + + //when + DefaultDockerClientConfig config + = DefaultDockerClientConfig.createDefaultConfigBuilder() + .withRegistryEmail("info@bealdung.com") + .withRegistryUrl("register.bealdung.io/v2/") + .withRegistryPassword("strongpassword") + .withRegistryUsername("bealdung") + .withDockerCertPath("/home/bealdung/public/.docker/certs") + .withDockerConfig("/home/bealdung/public/.docker/") + .withDockerTlsVerify("1") + .withDockerHost("tcp://docker.beauldung.com:2376") + .build(); + + DockerClient dockerClient = DockerClientBuilder.getInstance(config).build(); + + //then + assertNotNull(dockerClient); + } + + @Test + public void whenCreatingDockerClientWithProperties_thenReturnInstance() { + + //when + Properties properties = new Properties(); + properties.setProperty("registry.email", "info@bealdung.com"); + properties.setProperty("registry.url", "register.bealdung.io/v2/"); + properties.setProperty("registry.password", "strongpassword"); + properties.setProperty("registry.username", "bealdung"); + properties.setProperty("DOCKER_CERT_PATH", "/home/bealdung/public/.docker/certs"); + properties.setProperty("DOCKER_CONFIG", "/home/bealdung/public/.docker/"); + properties.setProperty("DOCKER_TLS_VERIFY", "1"); + properties.setProperty("DOCKER_HOST", "tcp://docker.bealdung.com:2376"); + + DefaultDockerClientConfig config + = DefaultDockerClientConfig.createDefaultConfigBuilder() + .withProperties(properties) + .build(); + + DockerClient dockerClient = DockerClientBuilder.getInstance(config).build(); + + //then + assertNotNull(dockerClient); + } +} diff --git a/libraries/src/test/java/com/baeldung/dockerapi/ImageLiveTest.java b/libraries/src/test/java/com/baeldung/dockerapi/ImageLiveTest.java new file mode 100644 index 0000000000..ef894b2773 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/dockerapi/ImageLiveTest.java @@ -0,0 +1,155 @@ +package com.baeldung.dockerapi; + +import com.github.dockerjava.api.DockerClient; +import com.github.dockerjava.api.command.InspectImageResponse; +import com.github.dockerjava.api.model.Image; +import com.github.dockerjava.api.model.SearchItem; +import com.github.dockerjava.core.DockerClientBuilder; +import com.github.dockerjava.core.command.BuildImageResultCallback; +import com.github.dockerjava.core.command.PullImageResultCallback; +import com.github.dockerjava.core.command.PushImageResultCallback; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.io.File; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.lessThan; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.core.Is.is; + +public class ImageLiveTest { + + private static DockerClient dockerClient; + + @BeforeClass + public static void setup() { + dockerClient = DockerClientBuilder.getInstance().build(); + } + + @Test + public void whenListingImages_thenReturnNonEmptyList() { + + //when + List images = dockerClient.listImagesCmd().exec(); + + //then + assertThat(images.size(), is(not(0))); + } + + @Test + public void whenListingImagesWithIntermediateImages_thenReturnNonEmptyList() { + + //when + List images = dockerClient.listImagesCmd() + .withShowAll(true).exec(); + + //then + assertThat(images.size(), is(not(0))); + } + + @Test + public void whenListingDanglingImages_thenReturnNonNullList() { + + //when + List images = dockerClient.listImagesCmd() + .withDanglingFilter(true).exec(); + + //then + assertThat(images, is(not(null))); + } + + @Test + public void whenBuildingImage_thenMustReturnImageId() { + + //when + String imageId = dockerClient.buildImageCmd() + .withDockerfile(new File("src/test/resources/dockerapi/Dockerfile")) + .withPull(true) + .withNoCache(true) + .withTag("alpine:git") + .exec(new BuildImageResultCallback()) + .awaitImageId(); + + //then + assertThat(imageId, is(not(null))); + } + + @Test + public void givenListOfImages_whenInspectImage_thenMustReturnObject() { + + //given + List images = dockerClient.listImagesCmd().exec(); + Image image = images.get(0); + + //when + InspectImageResponse imageResponse + = dockerClient.inspectImageCmd(image.getId()).exec(); + + //then + assertThat(imageResponse.getId(), is(image.getId())); + } + + @Test + public void givenListOfImages_whenTagImage_thenListMustIncrement() { + + //given + List images = dockerClient.listImagesCmd().exec(); + Image image = images.get(0); + + //when + dockerClient.tagImageCmd(image.getId(), "baeldung/alpine", "3.6.v2").exec(); + + //then + List imagesNow = dockerClient.listImagesCmd().exec(); + assertThat(imagesNow.size(), is(greaterThan(images.size()))); + } + + public void pushingAnImage() throws InterruptedException { + + dockerClient.pushImageCmd("baeldung/alpine") + .withTag("3.6.v2") + .exec(new PushImageResultCallback()) + .awaitCompletion(90, TimeUnit.SECONDS); + } + + @Test + public void whenPullingImage_thenImageListNotEmpty() throws InterruptedException { + + //when + dockerClient.pullImageCmd("alpine") + .withTag("latest") + .exec(new PullImageResultCallback()) + .awaitCompletion(30, TimeUnit.SECONDS); + + //then + List images = dockerClient.listImagesCmd().exec(); + assertThat(images.size(), is(not(0))); + } + + @Test + public void whenRemovingImage_thenImageListDecrease() { + + //when + List images = dockerClient.listImagesCmd().exec(); + Image image = images.get(0); + dockerClient.removeImageCmd(image.getId()).exec(); + + //then + List imagesNow = dockerClient.listImagesCmd().exec(); + assertThat(imagesNow.size(), is(lessThan(images.size()))); + } + + @Test + public void whenSearchingImage_thenMustReturn25Items() { + + //when + List items = dockerClient.searchImagesCmd("Java").exec(); + + //then + assertThat(items.size(), is(25)); + } +} diff --git a/libraries/src/test/java/com/baeldung/dockerapi/NetworkLiveTest.java b/libraries/src/test/java/com/baeldung/dockerapi/NetworkLiveTest.java new file mode 100644 index 0000000000..2031a3ebb4 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/dockerapi/NetworkLiveTest.java @@ -0,0 +1,91 @@ +package com.baeldung.dockerapi; + +import com.github.dockerjava.api.DockerClient; +import com.github.dockerjava.api.command.CreateNetworkResponse; +import com.github.dockerjava.api.model.Network; +import com.github.dockerjava.api.model.Network.Ipam; +import com.github.dockerjava.core.DockerClientBuilder; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.List; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.core.Is.is; + +public class NetworkLiveTest { + + private static DockerClient dockerClient; + + @BeforeClass + public static void setup() { + dockerClient = DockerClientBuilder.getInstance().build(); + } + + @Test + public void whenListingNetworks_thenSizeMustBeGreaterThanZero() { + + //when + List networks = dockerClient.listNetworksCmd().exec(); + + //then + assertThat(networks.size(), is(greaterThan(0))); + } + + @Test + public void whenCreatingNetwork_thenRetrieveResponse() { + + //when + CreateNetworkResponse networkResponse + = dockerClient.createNetworkCmd() + .withName("baeldungDefault") + .withDriver("bridge").exec(); + + //then + assertThat(networkResponse, is(not(null))); + } + + @Test + public void whenCreatingAdvanceNetwork_thenRetrieveResponse() { + + //when + CreateNetworkResponse networkResponse = dockerClient.createNetworkCmd() + .withName("baeldungAdvanced") + .withIpam(new Ipam() + .withConfig(new Ipam.Config() + .withSubnet("172.36.0.0/16") + .withIpRange("172.36.5.0/24"))) + .withDriver("bridge").exec(); + + //then + assertThat(networkResponse, is(not(null))); + } + + @Test + public void whenInspectingNetwork_thenSizeMustBeGreaterThanZero() { + + //when + String networkName = "bridge"; + Network network + = dockerClient.inspectNetworkCmd().withNetworkId(networkName).exec(); + + //then + assertThat(network.getName(), is(networkName)); + } + + @Test + public void whenCreatingNetwork_thenRemove() throws InterruptedException { + + //when + CreateNetworkResponse networkResponse + = dockerClient.createNetworkCmd() + .withName("baeldungDefault") + .withDriver("bridge").exec(); + + //then + Thread.sleep(4000); + dockerClient.removeNetworkCmd(networkResponse.getId()).exec(); + } +} diff --git a/libraries/src/test/java/com/baeldung/dockerapi/VolumeLiveTest.java b/libraries/src/test/java/com/baeldung/dockerapi/VolumeLiveTest.java new file mode 100644 index 0000000000..060af0728c --- /dev/null +++ b/libraries/src/test/java/com/baeldung/dockerapi/VolumeLiveTest.java @@ -0,0 +1,86 @@ +package com.baeldung.dockerapi; + +import com.github.dockerjava.api.DockerClient; +import com.github.dockerjava.api.command.CreateVolumeResponse; +import com.github.dockerjava.api.command.InspectVolumeResponse; +import com.github.dockerjava.api.command.ListVolumesResponse; +import com.github.dockerjava.core.DockerClientBuilder; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.List; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.core.Is.is; + +public class VolumeLiveTest { + + private static DockerClient dockerClient; + + @BeforeClass + public static void setup() { + dockerClient = DockerClientBuilder.getInstance().build(); + } + + @Test + public void whenListingVolumes_thenSizeMustBeGreaterThanZero() { + + //when + ListVolumesResponse volumesResponse = dockerClient.listVolumesCmd().exec(); + + //then + List volumes = volumesResponse.getVolumes(); + assertThat(volumes.size(), is(greaterThan(0))); + } + + @Test + public void givenVolumes_whenInspectingVolume_thenReturnNonNullResponse() { + + //given + ListVolumesResponse volumesResponse = dockerClient.listVolumesCmd().exec(); + List volumes = volumesResponse.getVolumes(); + InspectVolumeResponse volume = volumes.get(0); + + //when + InspectVolumeResponse volumeResponse + = dockerClient.inspectVolumeCmd(volume.getName()).exec(); + + //then + assertThat(volumeResponse, is(not(null))); + } + + @Test + public void whenCreatingUnnamedVolume_thenGetVolumeId() { + + //when + CreateVolumeResponse unnamedVolume = dockerClient.createVolumeCmd().exec(); + + //then + assertThat(unnamedVolume.getName(), is(not(null))); + } + + @Test + public void whenCreatingNamedVolume_thenGetVolumeId() { + + //when + CreateVolumeResponse namedVolume + = dockerClient.createVolumeCmd().withName("myNamedVolume").exec(); + + //then + assertThat(namedVolume.getName(), is(not(null))); + } + + @Test + public void whenGettingNamedVolume_thenRemove() throws InterruptedException { + + //when + CreateVolumeResponse namedVolume + = dockerClient.createVolumeCmd().withName("anotherNamedVolume").exec(); + + //then + Thread.sleep(4000); + dockerClient.removeVolumeCmd(namedVolume.getName()).exec(); + } +} diff --git a/libraries/src/test/java/com/baeldung/google/sheets/GoogleSheetsIntegrationTest.java b/libraries/src/test/java/com/baeldung/google/sheets/GoogleSheetsIntegrationTest.java new file mode 100644 index 0000000000..5280073be2 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/google/sheets/GoogleSheetsIntegrationTest.java @@ -0,0 +1,140 @@ +package com.baeldung.google.sheets; + +import java.io.IOException; +import java.security.GeneralSecurityException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.junit.BeforeClass; +import org.junit.Test; + +import com.google.api.services.sheets.v4.Sheets; +import com.google.api.services.sheets.v4.model.AppendValuesResponse; +import com.google.api.services.sheets.v4.model.BatchGetValuesResponse; +import com.google.api.services.sheets.v4.model.BatchUpdateSpreadsheetRequest; +import com.google.api.services.sheets.v4.model.BatchUpdateValuesRequest; +import com.google.api.services.sheets.v4.model.BatchUpdateValuesResponse; +import com.google.api.services.sheets.v4.model.CopyPasteRequest; +import com.google.api.services.sheets.v4.model.GridRange; +import com.google.api.services.sheets.v4.model.Request; +import com.google.api.services.sheets.v4.model.Spreadsheet; +import com.google.api.services.sheets.v4.model.SpreadsheetProperties; +import com.google.api.services.sheets.v4.model.UpdateSpreadsheetPropertiesRequest; +import com.google.api.services.sheets.v4.model.UpdateValuesResponse; +import com.google.api.services.sheets.v4.model.ValueRange; + +import static org.assertj.core.api.Assertions.*; + +public class GoogleSheetsIntegrationTest { + + private static Sheets sheetsService; + + // this id can be replaced with your spreadsheet id + // otherwise be advised that multiple people may run this test and update the public spreadsheet + private static final String SPREADSHEET_ID = "1sILuxZUnyl_7-MlNThjt765oWshN3Xs-PPLfqYe4DhI"; + + @BeforeClass + public static void setup() throws GeneralSecurityException, IOException { + sheetsService = SheetsServiceUtil.getSheetsService(); + } + + @Test + public void whenWriteSheet_thenReadSheetOk() throws IOException { + ValueRange body = new ValueRange() + .setValues(Arrays.asList( + Arrays.asList("Expenses January"), + Arrays.asList("books", "30"), + Arrays.asList("pens", "10"), + Arrays.asList("Expenses February"), + Arrays.asList("clothes", "20"), + Arrays.asList("shoes", "5"))); + UpdateValuesResponse result = sheetsService.spreadsheets().values() + .update(SPREADSHEET_ID, "A1", body) + .setValueInputOption("RAW") + .execute(); + + List data = new ArrayList<>(); + data.add(new ValueRange() + .setRange("D1") + .setValues(Arrays.asList( + Arrays.asList("January Total", "=B2+B3")))); + data.add(new ValueRange() + .setRange("D4") + .setValues(Arrays.asList( + Arrays.asList("February Total", "=B5+B6")))); + + BatchUpdateValuesRequest batchBody = new BatchUpdateValuesRequest() + .setValueInputOption("USER_ENTERED") + .setData(data); + BatchUpdateValuesResponse batchResult = + sheetsService.spreadsheets().values() + .batchUpdate(SPREADSHEET_ID, batchBody) + .execute(); + + List ranges = Arrays.asList("E1","E4"); + BatchGetValuesResponse readResult = + sheetsService.spreadsheets().values() + .batchGet(SPREADSHEET_ID) + .setRanges(ranges) + .execute(); + + ValueRange januaryTotal = readResult.getValueRanges().get(0); + assertThat(januaryTotal.getValues().get(0).get(0)).isEqualTo("40"); + + ValueRange febTotal = readResult.getValueRanges().get(1); + assertThat(febTotal.getValues().get(0).get(0)).isEqualTo("25"); + + ValueRange appendBody = new ValueRange() + .setValues(Arrays.asList( + Arrays.asList("Total", "=E1+E4"))); + AppendValuesResponse appendResult = + sheetsService.spreadsheets().values() + .append(SPREADSHEET_ID, "A1", appendBody) + .setValueInputOption("USER_ENTERED") + .setInsertDataOption("INSERT_ROWS") + .setIncludeValuesInResponse(true) + .execute(); + + ValueRange total = appendResult.getUpdates().getUpdatedData(); + assertThat(total.getValues().get(0).get(1)).isEqualTo("65"); + } + + + @Test + public void whenUpdateSpreadSheetTitle_thenOk() throws IOException { + + UpdateSpreadsheetPropertiesRequest updateRequest = new UpdateSpreadsheetPropertiesRequest() + .setFields("*") + .setProperties(new SpreadsheetProperties().setTitle("Expenses")); + + CopyPasteRequest copyRequest = new CopyPasteRequest() + .setSource(new GridRange().setSheetId(0) + .setStartColumnIndex(0).setEndColumnIndex(2) + .setStartRowIndex(0).setEndRowIndex(1)) + .setDestination(new GridRange().setSheetId(1) + .setStartColumnIndex(0).setEndColumnIndex(2) + .setStartRowIndex(0).setEndRowIndex(1)) + .setPasteType("PASTE_VALUES"); + + List requests = new ArrayList<>(); + + requests.add(new Request().setCopyPaste(copyRequest)); + requests.add(new Request().setUpdateSpreadsheetProperties(updateRequest)); + + BatchUpdateSpreadsheetRequest body = + new BatchUpdateSpreadsheetRequest().setRequests(requests); + + sheetsService.spreadsheets().batchUpdate(SPREADSHEET_ID, body).execute(); + } + + @Test + public void whenCreateSpreadSheet_thenIdOk() throws IOException { + Spreadsheet spreadSheet = new Spreadsheet() + .setProperties(new SpreadsheetProperties().setTitle("My Spreadsheet")); + Spreadsheet result = sheetsService.spreadsheets().create(spreadSheet).execute(); + + assertThat(result.getSpreadsheetId()).isNotNull(); + } + +} diff --git a/libraries/src/test/java/com/baeldung/jetty/JettyServerFactoryUnitTest.java b/libraries/src/test/java/com/baeldung/jetty/JettyServerFactoryUnitTest.java new file mode 100644 index 0000000000..849ba24f55 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jetty/JettyServerFactoryUnitTest.java @@ -0,0 +1,86 @@ +package com.baeldung.jetty; + +import org.apache.http.HttpHost; +import org.apache.http.HttpRequest; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.HttpClientBuilder; +import org.eclipse.jetty.server.Server; +import org.junit.Assert; +import org.junit.Test; + +/** + * Test for {@link JettyServerFactory}. + * + * @author Donato Rimenti + * + */ +public class JettyServerFactoryUnitTest { + + /** + * Tests that when a base server is provided a request returns a status 404. + * + * @throws Exception + */ + @Test + public void givenBaseServer_whenHttpRequest_thenStatus404() throws Exception { + Server server = JettyServerFactory.createBaseServer(); + server.start(); + + int statusCode = sendGetRequest(); + + Assert.assertEquals(404, statusCode); + server.stop(); + } + + /** + * Tests that when a web app server is provided a request returns a status + * 200. + * + * @throws Exception + */ + @Test + public void givenWebAppServer_whenHttpRequest_thenStatus200() throws Exception { + Server server = JettyServerFactory.createWebAppServer(); + server.start(); + + int statusCode = sendGetRequest(); + + Assert.assertEquals(200, statusCode); + server.stop(); + } + + /** + * Tests that when a multi handler server is provided a request returns a + * status 200. + * + * @throws Exception + */ + @Test + public void givenMultiHandlerServerServer_whenHttpRequest_thenStatus200() throws Exception { + Server server = JettyServerFactory.createMultiHandlerServer(); + server.start(); + + int statusCode = sendGetRequest(); + + Assert.assertEquals(200, statusCode); + server.stop(); + } + + /** + * Sends a default HTTP GET request to the server and returns the response + * status code. + * + * @return the status code of the response + * @throws Exception + */ + private int sendGetRequest() throws Exception { + HttpHost target = new HttpHost("localhost", JettyServerFactory.SERVER_PORT); + HttpRequest request = new HttpGet(JettyServerFactory.APP_PATH); + HttpClient client = HttpClientBuilder.create().build(); + HttpResponse response = client.execute(target, request); + return response.getStatusLine().getStatusCode(); + } + +} diff --git a/libraries/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java b/libraries/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java new file mode 100644 index 0000000000..32568e9ea5 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java @@ -0,0 +1,62 @@ +package com.baeldung.kafkastreams; + +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.common.serialization.Serde; +import org.apache.kafka.common.serialization.Serdes; +import org.apache.kafka.streams.KafkaStreams; +import org.apache.kafka.streams.StreamsConfig; +import org.apache.kafka.streams.kstream.KStream; +import org.apache.kafka.streams.kstream.KStreamBuilder; +import org.apache.kafka.streams.kstream.KTable; +import org.apache.kafka.test.TestUtils; +import org.junit.Ignore; +import org.junit.Test; + +import java.util.Arrays; +import java.util.Properties; +import java.util.regex.Pattern; + +public class KafkaStreamsLiveTest { + private String bootstrapServers = "localhost:9092"; + + @Test + @Ignore("it needs to have kafka broker running on local") + public void shouldTestKafkaStreams() throws InterruptedException { + //given + String inputTopic = "inputTopic"; + + Properties streamsConfiguration = new Properties(); + streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-live-test"); + streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); + streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); + streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000); + streamsConfiguration.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); + // Use a temporary directory for storing state, which will be automatically removed after the test. + streamsConfiguration.put(StreamsConfig.STATE_DIR_CONFIG, TestUtils.tempDirectory().getAbsolutePath()); + + //when + KStreamBuilder builder = new KStreamBuilder(); + KStream textLines = builder.stream(inputTopic); + Pattern pattern = Pattern.compile("\\W+", Pattern.UNICODE_CHARACTER_CLASS); + + KTable wordCounts = textLines + .flatMapValues(value -> Arrays.asList(pattern.split(value.toLowerCase()))) + .groupBy((key, word) -> word) + .count(); + + wordCounts.foreach((word, count) -> System.out.println("word: " + word + " -> " + count)); + + String outputTopic = "outputTopic"; + final Serde stringSerde = Serdes.String(); + final Serde longSerde = Serdes.Long(); + wordCounts.to(stringSerde, longSerde, outputTopic); + + KafkaStreams streams = new KafkaStreams(builder, streamsConfiguration); + streams.start(); + + //then + Thread.sleep(30000); + streams.close(); + } +} diff --git a/libraries/src/test/java/com/baeldung/neuroph/XORTest.java b/libraries/src/test/java/com/baeldung/neuroph/XORIntegrationTest.java similarity index 97% rename from libraries/src/test/java/com/baeldung/neuroph/XORTest.java rename to libraries/src/test/java/com/baeldung/neuroph/XORIntegrationTest.java index 4a6ecf8e46..5da1d166f6 100644 --- a/libraries/src/test/java/com/baeldung/neuroph/XORTest.java +++ b/libraries/src/test/java/com/baeldung/neuroph/XORIntegrationTest.java @@ -7,7 +7,7 @@ import org.neuroph.core.NeuralNetwork; import static org.junit.Assert.*; -public class XORTest { +public class XORIntegrationTest { private NeuralNetwork ann = null; private void print(String input, double output, double actual) { diff --git a/libraries/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java b/libraries/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java index b152b22964..cc3b441aa4 100644 --- a/libraries/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java +++ b/libraries/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java @@ -32,9 +32,9 @@ public class PactConsumerDrivenContractUnitTest { headers.put("Content-Type", "application/json"); return builder - .given("test GET ") + .given("test GET") .uponReceiving("GET REQUEST") - .path("/") + .path("/pact") .method("GET") .willRespondWith() .status(200) @@ -45,11 +45,9 @@ public class PactConsumerDrivenContractUnitTest { .method("POST") .headers(headers) .body("{\"name\": \"Michael\"}") - .path("/create") + .path("/pact") .willRespondWith() .status(201) - .headers(headers) - .body("") .toPact(); } @@ -59,7 +57,7 @@ public class PactConsumerDrivenContractUnitTest { public void givenGet_whenSendRequest_shouldReturn200WithProperHeaderAndBody() { //when ResponseEntity response - = new RestTemplate().getForEntity(mockProvider.getUrl(), String.class); + = new RestTemplate().getForEntity(mockProvider.getUrl() + "/pact", String.class); //then assertThat(response.getStatusCode().value()).isEqualTo(200); @@ -73,7 +71,7 @@ public class PactConsumerDrivenContractUnitTest { //when ResponseEntity postResponse = new RestTemplate().exchange( - mockProvider.getUrl() + "/create", + mockProvider.getUrl() + "/pact", HttpMethod.POST, new HttpEntity<>(jsonBody, httpHeaders), String.class diff --git a/libraries/src/test/resources/dockerapi/Dockerfile b/libraries/src/test/resources/dockerapi/Dockerfile new file mode 100644 index 0000000000..f9ad47f032 --- /dev/null +++ b/libraries/src/test/resources/dockerapi/Dockerfile @@ -0,0 +1,8 @@ +FROM alpine:3.6 + +RUN apk --update add git openssh && \ + rm -rf /var/lib/apt/lists/* && \ + rm /var/cache/apk/* + +ENTRYPOINT ["git"] +CMD ["--help"] \ No newline at end of file diff --git a/libraries/src/test/resources/jetty-embedded-demo-app.war b/libraries/src/test/resources/jetty-embedded-demo-app.war new file mode 100644 index 0000000000..7f8bc37df0 Binary files /dev/null and b/libraries/src/test/resources/jetty-embedded-demo-app.war differ diff --git a/linkrest/pom.xml b/linkrest/pom.xml index aa2f0f8bda..0363f0bc4c 100644 --- a/linkrest/pom.xml +++ b/linkrest/pom.xml @@ -33,7 +33,7 @@ maven-compiler-plugin - 3.5 + 3.7.0 1.8 1.8 diff --git a/logging-modules/README.md b/logging-modules/README.md index 23458cf30b..8ae7316047 100644 --- a/logging-modules/README.md +++ b/logging-modules/README.md @@ -1,3 +1,6 @@ ## Logging Modules +### Relevant Articles: + +- [Creating a Custom Logback Appender](http://www.baeldung.com/custom-logback-appender) diff --git a/logging-modules/log4j2/pom.xml b/logging-modules/log4j2/pom.xml index 48608fbc80..46b8b80597 100644 --- a/logging-modules/log4j2/pom.xml +++ b/logging-modules/log4j2/pom.xml @@ -59,10 +59,10 @@ - 2.8.5 + 2.9.3 1.4.193 2.1.1 - 2.7 + 2.10.0 diff --git a/logging-modules/log4j2/src/test/java/com/baeldung/logging/log4j2/tests/JSONLayoutTest.java b/logging-modules/log4j2/src/test/java/com/baeldung/logging/log4j2/tests/JSONLayoutTest.java new file mode 100644 index 0000000000..9493c32094 --- /dev/null +++ b/logging-modules/log4j2/src/test/java/com/baeldung/logging/log4j2/tests/JSONLayoutTest.java @@ -0,0 +1,45 @@ +package com.baeldung.logging.log4j2.tests; + +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.Before; +import org.junit.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public class JSONLayoutTest { + + private static Logger logger; + private ByteArrayOutputStream consoleOutput = new ByteArrayOutputStream(); + private PrintStream ps = new PrintStream(consoleOutput); + + @Before + public void setUp() { + // Redirect console output to our stream + System.setOut(ps); + logger = LogManager.getLogger("CONSOLE_JSON_APPENDER"); + } + + @Test + public void whenLogLayoutInJSON_thenOutputIsCorrectJSON() { + logger.debug("Debug message"); + String currentLog = consoleOutput.toString(); + assertTrue(!currentLog.isEmpty() && isValidJSON(currentLog)); + } + + public static boolean isValidJSON(String jsonInString) { + try { + final ObjectMapper mapper = new ObjectMapper(); + mapper.readTree(jsonInString); + return true; + } catch (IOException e) { + return false; + } + } +} \ No newline at end of file diff --git a/logging-modules/log4j2/src/test/resources/log4j2.xml b/logging-modules/log4j2/src/test/resources/log4j2.xml index 21fd1da446..4dcb7cce5a 100644 --- a/logging-modules/log4j2/src/test/resources/log4j2.xml +++ b/logging-modules/log4j2/src/test/resources/log4j2.xml @@ -1,16 +1,25 @@ - + - + - + - + + + + + + @@ -19,53 +28,58 @@ - + - + - + - + - + - + - + - + - + + + + diff --git a/logging-modules/logback/pom.xml b/logging-modules/logback/pom.xml index 8169134442..cd0d3758cc 100644 --- a/logging-modules/logback/pom.xml +++ b/logging-modules/logback/pom.xml @@ -1,6 +1,6 @@ 4.0.0 @@ -12,6 +12,8 @@ UTF-8 1.2.3 + 0.1.5 + 2.9.3 @@ -28,7 +30,21 @@ logback-classic ${logback.version} - + + ch.qos.logback.contrib + logback-json-classic + ${logback.contrib.version} + + + ch.qos.logback.contrib + logback-jackson + ${logback.contrib.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + diff --git a/logging-modules/logback/src/main/java/com/baeldung/logback/MapAppender.java b/logging-modules/logback/src/main/java/com/baeldung/logback/MapAppender.java index 99cc6488e5..a25c54b96e 100644 --- a/logging-modules/logback/src/main/java/com/baeldung/logback/MapAppender.java +++ b/logging-modules/logback/src/main/java/com/baeldung/logback/MapAppender.java @@ -3,12 +3,14 @@ package com.baeldung.logback; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; -import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; public class MapAppender extends AppenderBase { - private final Map eventMap = new HashMap<>(); + private final ConcurrentMap eventMap + = new ConcurrentHashMap<>(); private String prefix; diff --git a/logging-modules/logback/src/test/java/com/baeldung/logback/JSONLayoutTest.java b/logging-modules/logback/src/test/java/com/baeldung/logback/JSONLayoutTest.java new file mode 100644 index 0000000000..ca3c4b3457 --- /dev/null +++ b/logging-modules/logback/src/test/java/com/baeldung/logback/JSONLayoutTest.java @@ -0,0 +1,45 @@ +package com.baeldung.logback; + +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; + +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public class JSONLayoutTest { + + private static Logger logger; + private ByteArrayOutputStream consoleOutput = new ByteArrayOutputStream(); + private PrintStream ps = new PrintStream(consoleOutput); + + @Before + public void setUp() { + // Redirect console output to our stream + System.setOut(ps); + logger = LoggerFactory.getLogger("jsonLogger"); + } + + @Test + public void whenLogLayoutInJSON_thenOutputIsCorrectJSON() { + logger.debug("Debug message"); + String currentLog = consoleOutput.toString(); + assertTrue(!currentLog.isEmpty() && isValidJSON(currentLog)); + } + + public static boolean isValidJSON(String jsonInString) { + try { + final ObjectMapper mapper = new ObjectMapper(); + mapper.readTree(jsonInString); + return true; + } catch (IOException e) { + return false; + } + } +} diff --git a/logging-modules/logback/src/test/resources/logback-test.xml b/logging-modules/logback/src/test/resources/logback-test.xml index 8254e6ac80..df81f18cc2 100644 --- a/logging-modules/logback/src/test/resources/logback-test.xml +++ b/logging-modules/logback/src/test/resources/logback-test.xml @@ -1,14 +1,31 @@ - + + + test - + + + # JSON appender + + + + true + + yyyy-MM-dd' 'HH:mm:ss.SSS + + + + + + - - + + \ No newline at end of file diff --git a/lucene/.gitignore b/lucene/.gitignore new file mode 100644 index 0000000000..3ed87faec7 --- /dev/null +++ b/lucene/.gitignore @@ -0,0 +1 @@ +/index/ diff --git a/lucene/README.md b/lucene/README.md new file mode 100644 index 0000000000..b1d33472f4 --- /dev/null +++ b/lucene/README.md @@ -0,0 +1,4 @@ +### Relevant Articles: + +- [Introduction to Apache Lucene](http://www.baeldung.com/lucene) +- [A Simple File Search with Lucene](http://www.baeldung.com/lucene-file-search) diff --git a/lucene/src/main/java/com/baeldung/lucene/LuceneFileSearch.java b/lucene/src/main/java/com/baeldung/lucene/LuceneFileSearch.java new file mode 100644 index 0000000000..1d090d55fc --- /dev/null +++ b/lucene/src/main/java/com/baeldung/lucene/LuceneFileSearch.java @@ -0,0 +1,80 @@ +package com.baeldung.lucene; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; + +import org.apache.lucene.analysis.standard.StandardAnalyzer; +import org.apache.lucene.document.Document; +import org.apache.lucene.document.Field; +import org.apache.lucene.document.StringField; +import org.apache.lucene.document.TextField; +import org.apache.lucene.index.DirectoryReader; +import org.apache.lucene.index.IndexReader; +import org.apache.lucene.index.IndexWriter; +import org.apache.lucene.index.IndexWriterConfig; +import org.apache.lucene.queryparser.classic.ParseException; +import org.apache.lucene.queryparser.classic.QueryParser; +import org.apache.lucene.search.IndexSearcher; +import org.apache.lucene.search.Query; +import org.apache.lucene.search.ScoreDoc; +import org.apache.lucene.search.TopDocs; +import org.apache.lucene.store.Directory; + +public class LuceneFileSearch { + + private Directory indexDirectory; + private StandardAnalyzer analyzer; + + public LuceneFileSearch(Directory fsDirectory, StandardAnalyzer analyzer) { + super(); + this.indexDirectory = fsDirectory; + this.analyzer = analyzer; + } + + public void addFileToIndex(String filepath) throws IOException, URISyntaxException { + + Path path = Paths.get(getClass().getClassLoader().getResource(filepath).toURI()); + File file = path.toFile(); + IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer); + IndexWriter indexWriter = new IndexWriter(indexDirectory, indexWriterConfig); + Document document = new Document(); + + FileReader fileReader = new FileReader(file); + document.add(new TextField("contents", fileReader)); + document.add(new StringField("path", file.getPath(), Field.Store.YES)); + document.add(new StringField("filename", file.getName(), Field.Store.YES)); + + indexWriter.addDocument(document); + + indexWriter.close(); + } + + public List searchFiles(String inField, String queryString) { + try { + Query query = new QueryParser(inField, analyzer).parse(queryString); + + IndexReader indexReader = DirectoryReader.open(indexDirectory); + IndexSearcher searcher = new IndexSearcher(indexReader); + TopDocs topDocs = searcher.search(query, 10); + List documents = new ArrayList<>(); + for (ScoreDoc scoreDoc : topDocs.scoreDocs) { + documents.add(searcher.doc(scoreDoc.doc)); + } + + return documents; + } catch (IOException | ParseException e) { + e.printStackTrace(); + } + return null; + + } + +} + + diff --git a/lucene/src/test/java/com/baeldung/lucene/LuceneFileSearchTest.java b/lucene/src/test/java/com/baeldung/lucene/LuceneFileSearchTest.java new file mode 100644 index 0000000000..4345057ff7 --- /dev/null +++ b/lucene/src/test/java/com/baeldung/lucene/LuceneFileSearchTest.java @@ -0,0 +1,32 @@ +package com.baeldung.lucene; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Paths; +import java.util.List; + +import org.apache.lucene.analysis.standard.StandardAnalyzer; +import org.apache.lucene.document.Document; +import org.apache.lucene.store.Directory; +import org.apache.lucene.store.FSDirectory; +import org.junit.Assert; +import org.junit.Test; + +public class LuceneFileSearchTest { + + @Test + public void givenSearchQueryWhenFetchedFileNamehenCorrect() throws IOException, URISyntaxException { + String indexPath = "index"; + String dataPath = "data/file1.txt"; + + Directory directory = FSDirectory.open(Paths.get(indexPath)); + LuceneFileSearch luceneFileSearch = new LuceneFileSearch(directory, new StandardAnalyzer()); + + luceneFileSearch.addFileToIndex(dataPath); + + List docs = luceneFileSearch.searchFiles("contents", "consectetur"); + + Assert.assertEquals("file1.txt", docs.get(0).get("filename")); + } + +} \ No newline at end of file diff --git a/lucene/src/test/resources/data/file1.txt b/lucene/src/test/resources/data/file1.txt new file mode 100644 index 0000000000..6f915d3927 --- /dev/null +++ b/lucene/src/test/resources/data/file1.txt @@ -0,0 +1,3 @@ +Cras auctor viverra arcu, id consequat diam posuere id. Pellentesque hendrerit felis tortor, et ornare nibh ullamcorper sed. Aenean sed mauris vitae purus auctor gravida. Nam aliquam egestas orci, sit amet imperdiet leo porttitor quis. Integer commodo sodales orci, ultrices vulputate arcu vestibulum non. Nunc at tellus id urna tristique ultrices in in massa. Vestibulum laoreet ullamcorper nulla vel porttitor. Duis blandit commodo elit at consequat. Vestibulum faucibus lectus eget mi tincidunt, quis molestie lacus mollis. Duis elementum urna eros, non iaculis est facilisis in. Praesent et neque vel ipsum viverra euismod ac ac metus. Ut vitae libero ex. + +Proin consectetur, neque nec feugiat facilisis, metus libero mollis arcu, id pharetra nibh sapien in elit. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam pulvinar fringilla orci in posuere. Duis ut turpis dignissim nisl eleifend posuere nec a massa. Cras fringilla iaculis ipsum a aliquet. Nunc ultrices nisl ipsum, vitae consectetur tellus vehicula in. Aliquam lacinia elit nec scelerisque dapibus. Duis pharetra mauris vitae quam tincidunt, viverra iaculis orci iaculis. Nunc gravida sem arcu, et mollis leo porttitor nec. Ut dictum tempor est, at fringilla ex feugiat sed. Nullam purus mi, aliquet eu libero ut, finibus efficitur metus. \ No newline at end of file diff --git a/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasTest.java b/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasTest.java index 826e06d598..b76dc40ba0 100644 --- a/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasTest.java +++ b/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasTest.java @@ -1,27 +1,40 @@ package com.baeldung.metrics.micrometer; -import com.netflix.spectator.atlas.AtlasConfig; +import static org.hamcrest.CoreMatchers.allOf; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.collection.IsMapContaining.hasEntry; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import io.micrometer.atlas.AtlasMeterRegistry; -import io.micrometer.core.instrument.*; +import io.micrometer.core.instrument.Clock; +import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.DistributionSummary; +import io.micrometer.core.instrument.Gauge; +import io.micrometer.core.instrument.LongTaskTimer; +import io.micrometer.core.instrument.Measurement; +import io.micrometer.core.instrument.Meter.Type; +import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.Metrics; +import io.micrometer.core.instrument.Tag; import io.micrometer.core.instrument.Timer; import io.micrometer.core.instrument.composite.CompositeMeterRegistry; import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import io.micrometer.core.instrument.stats.hist.Histogram; import io.micrometer.core.instrument.stats.quantile.WindowSketchQuantiles; -import org.junit.Before; -import org.junit.Test; import java.time.Duration; -import java.util.*; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import static io.micrometer.core.instrument.Meter.Type; -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.collection.IsMapContaining.hasEntry; -import static org.hamcrest.core.IsCollectionContaining.hasItems; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import org.junit.Before; +import org.junit.Test; + +import com.netflix.spectator.atlas.AtlasConfig; /** * @author aiet @@ -135,15 +148,15 @@ public class MicrometerAtlasTest { Timer timer = registry.timer("app.event"); timer.record(() -> { try { - TimeUnit.MILLISECONDS.sleep(1500); + TimeUnit.MILLISECONDS.sleep(15); } catch (InterruptedException ignored) { } }); - timer.record(3000, TimeUnit.MILLISECONDS); + timer.record(30, TimeUnit.MILLISECONDS); assertTrue(2 == timer.count()); - assertTrue(4510 > timer.totalTime(TimeUnit.MILLISECONDS) && 4500 <= timer.totalTime(TimeUnit.MILLISECONDS)); + assertTrue(50 > timer.totalTime(TimeUnit.MILLISECONDS) && 45 <= timer.totalTime(TimeUnit.MILLISECONDS)); } @Test @@ -155,12 +168,12 @@ public class MicrometerAtlasTest { long currentTaskId = longTaskTimer.start(); try { - TimeUnit.SECONDS.sleep(2); + TimeUnit.MILLISECONDS.sleep(2); } catch (InterruptedException ignored) { } long timeElapsed = longTaskTimer.stop(currentTaskId); - assertTrue(timeElapsed / (int) 1e9 == 2); + assertTrue(timeElapsed / (int) 1e6 == 2); } @Test diff --git a/metrics/src/test/java/com/baeldung/metrics/servo/MetricTypeTest.java b/metrics/src/test/java/com/baeldung/metrics/servo/MetricTypeTest.java index 99009f8d84..237092b1c3 100644 --- a/metrics/src/test/java/com/baeldung/metrics/servo/MetricTypeTest.java +++ b/metrics/src/test/java/com/baeldung/metrics/servo/MetricTypeTest.java @@ -1,5 +1,19 @@ package com.baeldung.metrics.servo; +import static java.util.concurrent.TimeUnit.MILLISECONDS; +import static java.util.concurrent.TimeUnit.SECONDS; +import static java.util.stream.Collectors.toMap; +import static org.hamcrest.Matchers.allOf; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.hasEntry; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +import java.util.Map; + +import org.junit.Ignore; +import org.junit.Test; + import com.netflix.servo.monitor.BasicCounter; import com.netflix.servo.monitor.BasicGauge; import com.netflix.servo.monitor.BasicInformational; @@ -17,18 +31,6 @@ import com.netflix.servo.monitor.StatsTimer; import com.netflix.servo.monitor.StepCounter; import com.netflix.servo.monitor.Stopwatch; import com.netflix.servo.stats.StatsConfig; -import org.junit.Ignore; -import org.junit.Test; - -import java.util.Map; - -import static java.util.concurrent.TimeUnit.SECONDS; -import static java.util.stream.Collectors.toMap; -import static org.hamcrest.Matchers.allOf; -import static org.hamcrest.Matchers.containsInAnyOrder; -import static org.hamcrest.Matchers.hasEntry; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; public class MetricTypeTest { @@ -104,17 +106,18 @@ public class MetricTypeTest { public void givenTimer_whenExecuteTask_thenTimerUpdated() throws Exception { BasicTimer timer = new BasicTimer(MonitorConfig .builder("test") - .build(), SECONDS); + .build(), MILLISECONDS); Stopwatch stopwatch = timer.start(); - SECONDS.sleep(1); - timer.record(2, SECONDS); + MILLISECONDS.sleep(1); + timer.record(2, MILLISECONDS); stopwatch.stop(); - assertEquals("timer should count 1 second", 1, timer + assertEquals("timer should count 1 millisecond", 1, timer .getValue() .intValue()); - assertEquals("timer should count 3 seconds in total", 3.0, timer.getTotalTime(), 0.01); + assertEquals("timer should count 3 millisecond in total", 3, timer.getTotalTime() + .intValue()); assertEquals("timer should record 2 updates", 2, timer .getCount() .intValue()); @@ -158,6 +161,7 @@ public class MetricTypeTest { } @Test + //== public void givenStatsTimer_whenExecuteTask_thenStatsCalculated() throws Exception { System.setProperty("netflix.servo", "1000"); StatsTimer timer = new StatsTimer(MonitorConfig @@ -171,20 +175,20 @@ public class MetricTypeTest { .withPublishMean(true) .withPublishStdDev(true) .withPublishVariance(true) - .build(), SECONDS); + .build(), MILLISECONDS); Stopwatch stopwatch = timer.start(); - SECONDS.sleep(1); - timer.record(3, SECONDS); + MILLISECONDS.sleep(1); + timer.record(3, MILLISECONDS); stopwatch.stop(); stopwatch = timer.start(); - timer.record(6, SECONDS); - SECONDS.sleep(2); + timer.record(6, MILLISECONDS); + MILLISECONDS.sleep(2); stopwatch.stop(); - assertEquals("timer should count 12 seconds in total", 12, timer.getTotalTime()); - assertEquals("timer should count 12 seconds in total", 12, timer.getTotalMeasurement()); + assertEquals("timer should count 12 milliseconds in total", 12, timer.getTotalTime()); + assertEquals("timer should count 12 milliseconds in total", 12, timer.getTotalMeasurement()); assertEquals("timer should record 4 updates", 4, timer.getCount()); assertEquals("stats timer value time-cost/update should be 2", 3, timer .getValue() diff --git a/muleesb/README.md b/muleesb/README.md new file mode 100644 index 0000000000..8da4e595e3 --- /dev/null +++ b/muleesb/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Getting Started With Mule ESB](http://www.baeldung.com/mule-esb) diff --git a/mustache/pom.xml b/mustache/pom.xml index 230aeecd60..1c64dbdb0b 100644 --- a/mustache/pom.xml +++ b/mustache/pom.xml @@ -169,7 +169,7 @@ UTF-8 - 3.6.0 + 3.7.0 2.19.1 1.8 diff --git a/mvn-wrapper/.gitignore b/mvn-wrapper/.gitignore new file mode 100644 index 0000000000..2af7cefb0a --- /dev/null +++ b/mvn-wrapper/.gitignore @@ -0,0 +1,24 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/mvn-wrapper/.mvn/wrapper/maven-wrapper.jar b/mvn-wrapper/.mvn/wrapper/maven-wrapper.jar new file mode 100755 index 0000000000..f775b1c04c Binary files /dev/null and b/mvn-wrapper/.mvn/wrapper/maven-wrapper.jar differ diff --git a/mvn-wrapper/.mvn/wrapper/maven-wrapper.properties b/mvn-wrapper/.mvn/wrapper/maven-wrapper.properties new file mode 100755 index 0000000000..a447c9fa81 --- /dev/null +++ b/mvn-wrapper/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip \ No newline at end of file diff --git a/mvn-wrapper/README.md b/mvn-wrapper/README.md new file mode 100644 index 0000000000..bd299d41ed --- /dev/null +++ b/mvn-wrapper/README.md @@ -0,0 +1,22 @@ +Setting up the Maven Wrapper on an Application +============================================== + +This is the code that shows the configurations of maven wrapper on a SpringBoot project. + +### Requirements + +- Maven +- JDK 7 + +### Running + +To build and start the server simply type + +```bash +$ ./mvn clean install +$ ./mvn spring-boot:run +``` + +Now with default configurations it will be available at: [http://localhost:8080](http://localhost:8080) + +Enjoy it :) \ No newline at end of file diff --git a/mvn-wrapper/mvnw b/mvn-wrapper/mvnw new file mode 100755 index 0000000000..e96ccd5fbb --- /dev/null +++ b/mvn-wrapper/mvnw @@ -0,0 +1,227 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvn-wrapper/mvnw.cmd b/mvn-wrapper/mvnw.cmd new file mode 100755 index 0000000000..4f0b068a03 --- /dev/null +++ b/mvn-wrapper/mvnw.cmd @@ -0,0 +1,145 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/mvn-wrapper/pom.xml b/mvn-wrapper/pom.xml new file mode 100644 index 0000000000..209c4b9403 --- /dev/null +++ b/mvn-wrapper/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + mvn-wrapper + 0.0.1-SNAPSHOT + jar + + mvn-wrapper + Setting up the Maven Wrapper + + + parent-boot-5 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-5 + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/mvn-wrapper/src/main/java/com/baeldung/MvnWrapperApplication.java b/mvn-wrapper/src/main/java/com/baeldung/MvnWrapperApplication.java new file mode 100644 index 0000000000..3007d24ed0 --- /dev/null +++ b/mvn-wrapper/src/main/java/com/baeldung/MvnWrapperApplication.java @@ -0,0 +1,11 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class MvnWrapperApplication { + public static void main(String[] args) { + SpringApplication.run(MvnWrapperApplication.class, args); + } +} diff --git a/mvn-wrapper/src/main/resources/application.properties b/mvn-wrapper/src/main/resources/application.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/orientdb/.gitignore b/orientdb/.gitignore new file mode 100644 index 0000000000..2af7cefb0a --- /dev/null +++ b/orientdb/.gitignore @@ -0,0 +1,24 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/orientdb/.mvn/wrapper/maven-wrapper.jar b/orientdb/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000..5fd4d5023f Binary files /dev/null and b/orientdb/.mvn/wrapper/maven-wrapper.jar differ diff --git a/orientdb/.mvn/wrapper/maven-wrapper.properties b/orientdb/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000000..c954cec91c --- /dev/null +++ b/orientdb/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip diff --git a/orientdb/README.md b/orientdb/README.md new file mode 100644 index 0000000000..56dfe0ab11 --- /dev/null +++ b/orientdb/README.md @@ -0,0 +1,28 @@ +Introduction to the OrientDB Java APIs +====================================== + +This is a simple maven project that shows how to use OrientDB's Java APIs. + +### Requirements + +- Maven +- Java 7 or higher +- OrientDB + +### Build + +To build and start the server simply type + +```bash +$ mvn clean install +``` + +### Run Tests + +Before launching unit tests: +- Install OrientDB +- Create BaeldungDB, BaeldungDBTwo and BaeldungDBThree databases +- Uncomment annotations on the test files + +### Relevant Articles: +- [Introduction to the OrientDB Java APIs](http://www.baeldung.com/java-orientdb) diff --git a/orientdb/mvnw b/orientdb/mvnw new file mode 100755 index 0000000000..a1ba1bf554 --- /dev/null +++ b/orientdb/mvnw @@ -0,0 +1,233 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # + # Look for the Apple JDKs first to preserve the existing behaviour, and then look + # for the new JDKs provided by Oracle. + # + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then + # + # Oracle JDKs + # + export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then + # + # Apple JDKs + # + export JAVA_HOME=`/usr/libexec/java_home` + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + local basedir=$(pwd) + local wdir=$(pwd) + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + wdir=$(cd "$wdir/.."; pwd) + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} "$@" diff --git a/orientdb/mvnw.cmd b/orientdb/mvnw.cmd new file mode 100644 index 0000000000..2b934e89dd --- /dev/null +++ b/orientdb/mvnw.cmd @@ -0,0 +1,145 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +set MAVEN_CMD_LINE_ARGS=%* + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar"" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% \ No newline at end of file diff --git a/orientdb/pom.xml b/orientdb/pom.xml new file mode 100644 index 0000000000..3d3cb36a91 --- /dev/null +++ b/orientdb/pom.xml @@ -0,0 +1,57 @@ + + + 4.0.0 + + orientdb + 0.0.1-SNAPSHOT + jar + + intro-orientdb + introduction to the OrientDB Java APIs + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + UTF-8 + UTF-8 + 1.8 + 2.2.31 + 2.6.0 + 4.12 + + + + + com.orientechnologies + orientdb-core + ${orientdb.version} + + + com.orientechnologies + orientdb-graphdb + ${orientdb.version} + + + com.orientechnologies + orientdb-object + ${orientdb.version} + + + com.tinkerpop.blueprints + blueprints-core + ${blueprints.version} + + + + junit + junit + ${junit.version} + test + + + diff --git a/orientdb/src/main/java/com/baeldung/orientdb/Author.java b/orientdb/src/main/java/com/baeldung/orientdb/Author.java new file mode 100644 index 0000000000..8366fa301f --- /dev/null +++ b/orientdb/src/main/java/com/baeldung/orientdb/Author.java @@ -0,0 +1,54 @@ +package com.baeldung.orientdb; + +import javax.persistence.Id; + +public class Author { + @Id + private Object id; + + private String firstName; + private String lastName; + private int level; + + public Author() { + } + + public Author(String firstName, String lastName, int level) { + this.firstName = firstName; + this.lastName = lastName; + this.level = level; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + @java.lang.Override + public java.lang.String toString() { + return "Author{" + + "firstName='" + firstName + '\'' + + ", lastName='" + lastName + '\'' + + ", level=" + level + + '}'; + } +} diff --git a/orientdb/src/test/java/com/baeldung/orientdb/OrientDBDocumentAPITest.java b/orientdb/src/test/java/com/baeldung/orientdb/OrientDBDocumentAPITest.java new file mode 100644 index 0000000000..c51ff6928f --- /dev/null +++ b/orientdb/src/test/java/com/baeldung/orientdb/OrientDBDocumentAPITest.java @@ -0,0 +1,60 @@ +package com.baeldung.orientdb; + +import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx; +import com.orientechnologies.orient.core.record.impl.ODocument; +import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.List; + +import static junit.framework.Assert.assertEquals; + +public class OrientDBDocumentAPITest { + private static ODatabaseDocumentTx db = null; + + // @BeforeClass + public static void setup() { + String orientDBFolder = System.getenv("ORIENTDB_HOME"); + db = new ODatabaseDocumentTx("plocal:" + orientDBFolder + "/databases/BaeldungDBTwo").open("admin", "admin"); + } + + // @Test + public void givenDB_whenSavingDocument_thenClassIsAutoCreated() { + ODocument author = new ODocument("Author"); + author.field("firstName", "Paul"); + author.field("lastName", "Smith"); + author.field("country", "USA"); + author.field("publicProfile", false); + author.field("level", 7); + author.save(); + + assertEquals("Author", author.getSchemaClass().getName()); + } + + // @Test + public void givenDB_whenSavingAuthors_thenWeGetOnesWithLevelSeven() { + for (ODocument author : db.browseClass("Author")) author.delete(); + + ODocument authorOne = new ODocument("Author"); + authorOne.field("firstName", "Leo"); + authorOne.field("level", 7); + authorOne.save(); + + ODocument authorTwo = new ODocument("Author"); + authorTwo.field("firstName", "Lucien"); + authorTwo.field("level", 9); + authorTwo.save(); + + List result = db.query( + new OSQLSynchQuery("select * from Author where level = 7")); + + assertEquals(1, result.size()); + } + + // @AfterClass + public static void closeDB() { + db.close(); + } +} diff --git a/orientdb/src/test/java/com/baeldung/orientdb/OrientDBGraphAPITest.java b/orientdb/src/test/java/com/baeldung/orientdb/OrientDBGraphAPITest.java new file mode 100644 index 0000000000..fe16564755 --- /dev/null +++ b/orientdb/src/test/java/com/baeldung/orientdb/OrientDBGraphAPITest.java @@ -0,0 +1,89 @@ +package com.baeldung.orientdb; + +import com.orientechnologies.orient.core.metadata.schema.OType; +import com.tinkerpop.blueprints.Vertex; +import com.tinkerpop.blueprints.impls.orient.OrientGraphNoTx; +import com.tinkerpop.blueprints.impls.orient.OrientVertexType; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import static junit.framework.Assert.assertEquals; + +public class OrientDBGraphAPITest { + private static OrientGraphNoTx graph = null; + + // @BeforeClass + public static void setup() { + String orientDBFolder = System.getenv("ORIENTDB_HOME"); + graph = new OrientGraphNoTx("plocal:" + orientDBFolder + "/databases/BaeldungDB", "admin", "admin"); + } + + // @BeforeClass + public static void init() { + graph.createVertexType("Article"); + + OrientVertexType writerType = graph.createVertexType("Writer"); + writerType.setStrictMode(true); + writerType.createProperty("firstName", OType.STRING); + writerType.createProperty("lastName", OType.STRING); + writerType.createProperty("country", OType.STRING); + + OrientVertexType authorType = graph.createVertexType("Author", "Writer"); + authorType.createProperty("level", OType.INTEGER).setMax("3"); + + OrientVertexType editorType = graph.createVertexType("Editor", "Writer"); + editorType.createProperty("level", OType.INTEGER).setMin("3"); + + Vertex vEditor = graph.addVertex("class:Editor"); + vEditor.setProperty("firstName", "Maxim"); + vEditor.setProperty("lastName", "Mink's"); + vEditor.setProperty("country", "Cameroon"); + vEditor.setProperty("publicProfile", true); + vEditor.setProperty("level", "7"); + + Vertex vAuthor = graph.addVertex("class:Author"); + vAuthor.setProperty("firstName", "Jerome"); + vAuthor.setProperty("country", "Romania"); + vAuthor.setProperty("publicProfile", false); + vAuthor.setProperty("level", "3"); + + Vertex vArticle = graph.addVertex("class:Article"); + vArticle.setProperty("title", "Introduction to the OrientDB Java APIs."); + vArticle.setProperty("priority", "High"); + vArticle.setProperty("type", "Article"); + vArticle.setProperty("level", "+L4"); + + graph.addEdge(null, vAuthor, vEditor, "has"); + graph.addEdge(null, vAuthor, vArticle, "wrote"); + } + + // @Test + public void givenBaeldungDB_checkWeHaveThreeRecords() { + long size = graph.countVertices(); + + assertEquals(3, size); + } + + // @Test + public void givenBaeldungDB_checkWeHaveTwoWriters() { + long size = graph.countVertices("Writer"); + + assertEquals(2, size); + } + + // @Test + public void givenBaeldungDB_getEditorWithLevelSeven() { + String onlyEditor = ""; + for(Vertex v : graph.getVertices("Editor.level", 7)) { + onlyEditor = v.getProperty("firstName").toString(); + } + + assertEquals("Maxim", onlyEditor); + } + + // @AfterClass + public static void closeDB() { + graph.getRawGraph().getStorage().close(true, false); + } +} diff --git a/orientdb/src/test/java/com/baeldung/orientdb/OrientDBObjectAPITest.java b/orientdb/src/test/java/com/baeldung/orientdb/OrientDBObjectAPITest.java new file mode 100644 index 0000000000..71be159107 --- /dev/null +++ b/orientdb/src/test/java/com/baeldung/orientdb/OrientDBObjectAPITest.java @@ -0,0 +1,56 @@ +package com.baeldung.orientdb; + +import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; +import com.orientechnologies.orient.object.db.OObjectDatabaseTx; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.List; + +import static junit.framework.Assert.assertEquals; + +public class OrientDBObjectAPITest { + private static OObjectDatabaseTx db = null; + + // @BeforeClass + public static void setup() { + String orientDBFolder = System.getenv("ORIENTDB_HOME"); + db = new OObjectDatabaseTx("plocal:" + orientDBFolder + "/databases/BaeldungDBThree").open("admin", "admin"); + db.setSaveOnlyDirty(true); + db.getEntityManager().registerEntityClass(Author.class); + } + + // @Test + public void givenDB_whenSavingObject_thenHisIdExists() { + Author author = db.newInstance(Author.class); + author.setFirstName("Luke"); + author.setLastName("Sky"); + author.setLevel(9); + + long authors = db.countClass(Author.class); + + db.save(author); + } + + // @Test + public void givenDB_whenSavingAuthors_thenWeGetOnesWithLevelSeven() { + for (Author author : db.browseClass(Author.class)) db.delete(author); + + Author authorOne = db.newInstance(Author.class, "Leo", "Marta", 7); + db.save(authorOne); + + Author authorTwo = db.newInstance(Author.class, "Lucien", "Aurelien", 9); + db.save(authorTwo); + + List result = db.query( + new OSQLSynchQuery("select * from Author where level = 7")); + + assertEquals(1, result.size()); + } + + // @AfterClass + public static void closeDB() { + db.close(); + } +} diff --git a/osgi/readme.md b/osgi/readme.md index ea4a411c7b..e380ae06c3 100644 --- a/osgi/readme.md +++ b/osgi/readme.md @@ -86,6 +86,9 @@ org.eclipse.osgi_3.12.1.v20170821-1548.jar = = NOT GOOD = = + ## Relevant articles: + - [Introduction to OSGi](http://www.baeldung.com/osgi) + diff --git a/parent-boot-4/README.md b/parent-boot-4/README.md deleted file mode 100644 index ff12555376..0000000000 --- a/parent-boot-4/README.md +++ /dev/null @@ -1 +0,0 @@ -## Relevant articles: diff --git a/parent-boot-4/pom.xml b/parent-boot-4/pom.xml deleted file mode 100644 index 608e57ddaf..0000000000 --- a/parent-boot-4/pom.xml +++ /dev/null @@ -1,81 +0,0 @@ - - 4.0.0 - com.baeldung - parent-boot-4 - 0.0.1-SNAPSHOT - pom - Parent Boot 4 - Parent for all spring boot 1.4 modules - - - UTF-8 - UTF-8 - 1.8 - 3.0.1 - - 2.19.1 - 3.6.0 - - - - spring-boot-starter-parent - org.springframework.boot - 1.4.4.RELEASE - - - - - - junit - junit - test - - - io.rest-assured - rest-assured - ${rest-assured.version} - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - 3 - true - - **/*IntegrationTest.java - **/*LongRunningUnitTest.java - **/*ManualTest.java - **/JdbcTest.java - **/*LiveTest.java - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.8 - 1.8 - - - - - - \ No newline at end of file diff --git a/parent-boot-5/pom.xml b/parent-boot-5/pom.xml index 2fa397f298..55ac0957ff 100644 --- a/parent-boot-5/pom.xml +++ b/parent-boot-5/pom.xml @@ -12,16 +12,16 @@ UTF-8 UTF-8 1.8 - 3.0.1 + 3.0.6 - 2.19.1 - 3.6.0 + 2.20.1 + 3.7.0 spring-boot-starter-parent org.springframework.boot - 1.5.3.RELEASE + 1.5.9.RELEASE diff --git a/patterns/README.md b/patterns/README.md index 67d84154cb..26099ae34f 100644 --- a/patterns/README.md +++ b/patterns/README.md @@ -1,4 +1,5 @@ ###Relevant Articles: - [A Guide to the Front Controller Pattern in Java](http://www.baeldung.com/java-front-controller-pattern) - [Introduction to Intercepting Filter Pattern in Java](http://www.baeldung.com/intercepting-filter-pattern-in-java) -- [Implementing the Template Method Pattern in Java](http://www.baeldung.com/template-method-pattern-in-java) +- [Implementing the Template Method Pattern in Java](http://www.baeldung.com/java-template-method-pattern) + diff --git a/patterns/front-controller/pom.xml b/patterns/front-controller/pom.xml index 7887af5430..b746d5dc6c 100644 --- a/patterns/front-controller/pom.xml +++ b/patterns/front-controller/pom.xml @@ -25,6 +25,11 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + org.apache.maven.plugins diff --git a/patterns/intercepting-filter/pom.xml b/patterns/intercepting-filter/pom.xml index 5b7eb48a86..b26b993d69 100644 --- a/patterns/intercepting-filter/pom.xml +++ b/patterns/intercepting-filter/pom.xml @@ -30,6 +30,11 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + org.apache.maven.plugins diff --git a/persistence-modules/README.md b/persistence-modules/README.md index 6c2b1d2ca9..13e7f731aa 100644 --- a/persistence-modules/README.md +++ b/persistence-modules/README.md @@ -1,3 +1,7 @@ ## Persistence Modules + +### Relevant Articles: + +- [Introduction to Hibernate Search](http://www.baeldung.com/hibernate-search) diff --git a/persistence-modules/java-cockroachdb/README.md b/persistence-modules/java-cockroachdb/README.md new file mode 100644 index 0000000000..3bab6faa29 --- /dev/null +++ b/persistence-modules/java-cockroachdb/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Guide to CockroachDB in Java](http://www.baeldung.com/cockroachdb-java) diff --git a/persistence-modules/java-cockroachdb/pom.xml b/persistence-modules/java-cockroachdb/pom.xml new file mode 100644 index 0000000000..2b6f9651bc --- /dev/null +++ b/persistence-modules/java-cockroachdb/pom.xml @@ -0,0 +1,74 @@ + + + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + ../../ + + + 4.0.0 + + com.baeldung + java-cockroachdb + 1.0-SNAPSHOT + + + 42.1.4 + + + + + org.postgresql + postgresql + ${postgresql.version} + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*ManualTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + + + + Central + Central + http://repo1.maven.org/maven2/ + default + + + \ No newline at end of file diff --git a/persistence-modules/java-cockroachdb/src/main/java/com/baeldung/cockroachdb/domain/Article.java b/persistence-modules/java-cockroachdb/src/main/java/com/baeldung/cockroachdb/domain/Article.java new file mode 100644 index 0000000000..dcc9dfb5b7 --- /dev/null +++ b/persistence-modules/java-cockroachdb/src/main/java/com/baeldung/cockroachdb/domain/Article.java @@ -0,0 +1,43 @@ +package com.baeldung.cockroachdb.domain; + +import java.util.UUID; + +public class Article { + + private UUID id; + + private String title; + + private String author; + + public Article(UUID id, String title, String author) { + this.id = id; + this.title = title; + this.author = author; + } + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + +} diff --git a/persistence-modules/java-cockroachdb/src/main/java/com/baeldung/cockroachdb/repository/ArticleRepository.java b/persistence-modules/java-cockroachdb/src/main/java/com/baeldung/cockroachdb/repository/ArticleRepository.java new file mode 100644 index 0000000000..a37c19e397 --- /dev/null +++ b/persistence-modules/java-cockroachdb/src/main/java/com/baeldung/cockroachdb/repository/ArticleRepository.java @@ -0,0 +1,172 @@ +package com.baeldung.cockroachdb.repository; + +import com.baeldung.cockroachdb.domain.Article; + +import java.sql.*; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +/** + * Repository for the articles table related operations + */ +public class ArticleRepository { + + private static final String TABLE_NAME = "articles"; + private Connection connection; + + public ArticleRepository(Connection connection) { + this.connection = connection; + } + + /** + * Creates the articles table. + */ + public void createTable() throws SQLException { + StringBuilder sb = new StringBuilder("CREATE TABLE IF NOT EXISTS ").append(TABLE_NAME) + .append("(id uuid PRIMARY KEY, ") + .append("title string,") + .append("author string)"); + + final String query = sb.toString(); + Statement stmt = connection.createStatement(); + stmt.execute(query); + } + + /** + * Alter the articles table adding a column + * + * @param columnName Column name of the additional column + * @param columnType Column type of the additional column + * @throws SQLException + */ + public void alterTable(String columnName, String columnType) throws SQLException { + StringBuilder sb = new StringBuilder("ALTER TABLE ").append(TABLE_NAME) + .append(" ADD ") + .append(columnName) + .append(" ") + .append(columnType); + + final String query = sb.toString(); + Statement stmt = connection.createStatement(); + stmt.execute(query); + } + + /** + * Insert a new article in the articles table + * + * @param article New article to insert + * @throws SQLException + */ + public void insertArticle(Article article) throws SQLException { + StringBuilder sb = new StringBuilder("INSERT INTO ").append(TABLE_NAME) + .append("(id, title, author) ") + .append("VALUES (?,?,?)"); + + final String query = sb.toString(); + PreparedStatement preparedStatement = connection.prepareStatement(query); + preparedStatement.setString(1, article.getId().toString()); + preparedStatement.setString(2, article.getTitle()); + preparedStatement.setString(3, article.getAuthor()); + preparedStatement.execute(); + } + + /** + * Select article by Title + * + * @param title title of the article to retrieve + * @return article with the given title + * @throws SQLException + */ + public Article selectByTitle(String title) throws SQLException { + StringBuilder sb = new StringBuilder("SELECT * FROM ").append(TABLE_NAME) + .append(" WHERE title = ?"); + + final String query = sb.toString(); + PreparedStatement preparedStatement = connection.prepareStatement(query); + preparedStatement.setString(1, title); + + try (ResultSet rs = preparedStatement.executeQuery()) { + + List
articles = new ArrayList<>(); + + while (rs.next()) { + Article article = new Article( + UUID.fromString(rs.getString("id")), + rs.getString("title"), + rs.getString("author") + ); + articles.add(article); + } + return articles.get(0); + } + + } + + /** + * Select all the articles + * + * @return list of all articles + * @throws SQLException + */ + public List
selectAll() throws SQLException { + StringBuilder sb = new StringBuilder("SELECT * FROM ").append(TABLE_NAME); + + final String query = sb.toString(); + PreparedStatement preparedStatement = connection.prepareStatement(query); + try (ResultSet rs = preparedStatement.executeQuery()) { + + List
articles = new ArrayList<>(); + + while (rs.next()) { + Article article = new Article( + UUID.fromString(rs.getString("id")), + rs.getString("title"), + rs.getString("author") + ); + articles.add(article); + } + return articles; + } + } + + /** + * Delete article by title + * + * @param title title of the article to delete + * @throws SQLException + */ + public void deleteArticleByTitle(String title) throws SQLException { + StringBuilder sb = new StringBuilder("DELETE FROM ").append(TABLE_NAME) + .append(" WHERE title = ?"); + + final String query = sb.toString(); + PreparedStatement preparedStatement = connection.prepareStatement(query); + preparedStatement.setString(1, title); + preparedStatement.execute(); + } + + /** + * Delete all rows in the table + * + * @throws SQLException + */ + public void truncateTable() throws SQLException { + StringBuilder sb = new StringBuilder("TRUNCATE TABLE ").append(TABLE_NAME); + + final String query = sb.toString(); + Statement stmt = connection.createStatement(); + stmt.execute(query); + } + + /** + * Delete table + */ + public void deleteTable() throws SQLException { + StringBuilder sb = new StringBuilder("DROP TABLE IF EXISTS ").append(TABLE_NAME); + + final String query = sb.toString(); + Statement stmt = connection.createStatement(); + stmt.execute(query); + } +} diff --git a/persistence-modules/java-cockroachdb/src/test/java/com/baeldung/cockroachdb/ArticleRepositoryIntegrationTest.java b/persistence-modules/java-cockroachdb/src/test/java/com/baeldung/cockroachdb/ArticleRepositoryIntegrationTest.java new file mode 100644 index 0000000000..9eb00b3651 --- /dev/null +++ b/persistence-modules/java-cockroachdb/src/test/java/com/baeldung/cockroachdb/ArticleRepositoryIntegrationTest.java @@ -0,0 +1,208 @@ +package com.baeldung.cockroachdb; + +import com.baeldung.cockroachdb.domain.Article; +import com.baeldung.cockroachdb.repository.ArticleRepository; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.postgresql.util.PSQLException; + +import java.sql.*; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class ArticleRepositoryIntegrationTest { + + private static final String TABLE_NAME = "articles"; + + private Connection con; + private ArticleRepository articleRepository; + + @Before + public void connect() throws Exception { + Class.forName("org.postgresql.Driver"); + con = DriverManager.getConnection("jdbc:postgresql://localhost:26257/testdb", "user17", "qwerty"); + + articleRepository = new ArticleRepository(con); + } + + @Test + public void whenCreatingTable_thenCreatedCorrectly() throws Exception { + articleRepository.deleteTable(); + articleRepository.createTable(); + + PreparedStatement preparedStatement = con.prepareStatement("SHOW TABLES"); + ResultSet resultSet = preparedStatement.executeQuery(); + List tables = new ArrayList<>(); + while (resultSet.next()) { + tables.add(resultSet.getString("Table")); + } + + assertTrue(tables.stream().anyMatch(t -> t.equals(TABLE_NAME))); + } + + @Test + public void whenAlteringTheTable_thenColumnAddedCorrectly() throws SQLException { + articleRepository.deleteTable(); + articleRepository.createTable(); + + String columnName = "creationdate"; + articleRepository.alterTable(columnName, "DATE"); + + String query = "SHOW COLUMNS FROM " + TABLE_NAME; + PreparedStatement preparedStatement = con.prepareStatement(query); + ResultSet resultSet = preparedStatement.executeQuery(); + List columns = new ArrayList<>(); + while (resultSet.next()) { + columns.add(resultSet.getString("Field")); + } + + assertTrue(columns.stream().anyMatch(c -> c.equals(columnName))); + } + + @Test + public void whenInsertingNewArticle_thenArticleExists() throws SQLException { + articleRepository.deleteTable(); + articleRepository.createTable(); + + String title = "Guide to CockroachDB in Java"; + String author = "baeldung"; + Article article = new Article(UUID.randomUUID(), title, author); + articleRepository.insertArticle(article); + + Article savedArticle = articleRepository.selectByTitle(title); + assertEquals(article.getTitle(), savedArticle.getTitle()); + } + + @Test + public void whenSelectingAllArticles_thenAllArticlesAreReturned() throws SQLException { + articleRepository.deleteTable(); + articleRepository.createTable(); + + Article article = new Article(UUID.randomUUID(), "Guide to CockroachDB in Java", "baeldung"); + articleRepository.insertArticle(article); + + article = new Article(UUID.randomUUID(), "A Guide to MongoDB with Java", "baeldung"); + articleRepository.insertArticle(article); + + List
savedArticles = articleRepository.selectAll(); + + assertEquals(2, savedArticles.size()); + assertTrue(savedArticles.stream().anyMatch(a -> a.getTitle().equals("Guide to CockroachDB in Java"))); + assertTrue(savedArticles.stream().anyMatch(a -> a.getTitle().equals("A Guide to MongoDB with Java"))); + } + + @Test + public void whenDeletingArticleByTtile_thenArticleIsDeleted() throws SQLException { + articleRepository.deleteTable(); + articleRepository.createTable(); + + Article article = new Article(UUID.randomUUID(), "Guide to CockroachDB in Java", "baeldung"); + articleRepository.insertArticle(article); + + article = new Article(UUID.randomUUID(), "A Guide to MongoDB with Java", "baeldung"); + articleRepository.insertArticle(article); + + articleRepository.deleteArticleByTitle("A Guide to MongoDB with Java"); + + List
savedArticles = articleRepository.selectAll(); + assertEquals(1, savedArticles.size()); + assertTrue(savedArticles.stream().anyMatch(a -> a.getTitle().equals("Guide to CockroachDB in Java"))); + assertFalse(savedArticles.stream().anyMatch(a -> a.getTitle().equals("A Guide to MongoDB with Java"))); + } + + @Test(expected = PSQLException.class) + public void whenDeletingATable_thenExceptionIfAccessed() throws SQLException { + articleRepository.createTable(); + articleRepository.deleteTable(); + + StringBuilder sb = new StringBuilder("SELECT * FROM ").append(TABLE_NAME); + + final String query = sb.toString(); + PreparedStatement preparedStatement = con.prepareStatement(query); + preparedStatement.executeQuery(); + } + + @Test + public void whenTruncatingATable_thenEmptyTable() throws SQLException { + articleRepository.deleteTable(); + articleRepository.createTable(); + + Article article = new Article(UUID.randomUUID(), "Guide to CockroachDB in Java", "baeldung"); + articleRepository.insertArticle(article); + + article = new Article(UUID.randomUUID(), "A Guide to MongoDB with Java", "baeldung"); + articleRepository.insertArticle(article); + + articleRepository.truncateTable(); + + List
savedArticles = articleRepository.selectAll(); + assertEquals(0, savedArticles.size()); + } + + @Test + public void whenInsertingTwoArticlesWithSamePrimaryKeyInASingleTransaction_thenRollback() throws SQLException { + articleRepository.deleteTable(); + articleRepository.createTable(); + + try { + con.setAutoCommit(false); + + UUID articleId = UUID.randomUUID(); + + Article article = new Article(articleId, "Guide to CockroachDB in Java", "baeldung"); + articleRepository.insertArticle(article); + + article = new Article(articleId, "A Guide to MongoDB with Java", "baeldung"); + articleRepository.insertArticle(article); + + con.commit(); + } catch (Exception e) { + con.rollback(); + } finally { + con.setAutoCommit(true); + } + + List
savedArticles = articleRepository.selectAll(); + assertEquals(0, savedArticles.size()); + } + + @Test + public void whenInsertingTwoArticlesInASingleTransaction_thenInserted() throws SQLException { + articleRepository.deleteTable(); + articleRepository.createTable(); + + try { + con.setAutoCommit(false); + + Article article = new Article(UUID.randomUUID(), "Guide to CockroachDB in Java", "baeldung"); + articleRepository.insertArticle(article); + + article = new Article(UUID.randomUUID(), "A Guide to MongoDB with Java", "baeldung"); + articleRepository.insertArticle(article); + + con.commit(); + } catch (Exception e) { + con.rollback(); + } finally { + con.setAutoCommit(true); + } + + List
savedArticles = articleRepository.selectAll(); + assertEquals(2, savedArticles.size()); + assertTrue(savedArticles.stream().anyMatch(a -> a.getTitle().equals("Guide to CockroachDB in Java"))); + assertTrue(savedArticles.stream().anyMatch(a -> a.getTitle().equals("A Guide to MongoDB with Java"))); + } + + @After + public void disconnect() throws SQLException { + articleRepository = null; + con.close(); + con = null; + } +} diff --git a/persistence-modules/liquibase/pom.xml b/persistence-modules/liquibase/pom.xml index a574ba497c..a70483437f 100644 --- a/persistence-modules/liquibase/pom.xml +++ b/persistence-modules/liquibase/pom.xml @@ -26,7 +26,7 @@ org.apache.maven.plugins maven-compiler-plugin - 2.5.1 + 3.7.0 1.8 1.8 diff --git a/persistence-modules/redis/README.md b/persistence-modules/redis/README.md index d179b80c33..dd655ca7aa 100644 --- a/persistence-modules/redis/README.md +++ b/persistence-modules/redis/README.md @@ -1,3 +1,5 @@ ### Relevant Articles: - [Intro to Jedis – the Java Redis Client Library](http://www.baeldung.com/jedis-java-redis-client-library) - [A Guide to Redis with Redisson](http://www.baeldung.com/redis-redisson) +- [Intro to Lettuce – the Java Redis Client Library](http://www.baeldung.com/lettuce-java-redis-client-library) + diff --git a/persistence-modules/redis/pom.xml b/persistence-modules/redis/pom.xml index 4321b491eb..1f27faa09a 100644 --- a/persistence-modules/redis/pom.xml +++ b/persistence-modules/redis/pom.xml @@ -36,6 +36,13 @@ redisson 3.3.0 + + + io.lettuce + lettuce-core + 5.0.1.RELEASE + + diff --git a/persistence-modules/redis/src/test/java/com/baeldung/LettuceIntegrationLiveTest.java b/persistence-modules/redis/src/test/java/com/baeldung/LettuceIntegrationLiveTest.java new file mode 100644 index 0000000000..eb879d1d21 --- /dev/null +++ b/persistence-modules/redis/src/test/java/com/baeldung/LettuceIntegrationLiveTest.java @@ -0,0 +1,312 @@ +package com.baeldung; + +import io.lettuce.core.LettuceFutures; +import io.lettuce.core.RedisClient; +import io.lettuce.core.RedisFuture; +import io.lettuce.core.TransactionResult; +import io.lettuce.core.api.StatefulRedisConnection; +import io.lettuce.core.api.async.RedisAsyncCommands; +import io.lettuce.core.api.sync.RedisCommands; +import io.lettuce.core.pubsub.RedisPubSubListener; +import io.lettuce.core.pubsub.StatefulRedisPubSubConnection; +import io.lettuce.core.pubsub.api.async.RedisPubSubAsyncCommands; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.assertTrue; + +public class LettuceIntegrationLiveTest { + + private static Logger log = LoggerFactory.getLogger(LettuceIntegrationLiveTest.class); + + private static StatefulRedisConnection redisConnection; + + private static RedisClient redisClient; + + @BeforeClass + public static void setUp() { + // Docker defaults to mapping redis port to 32768 + redisClient = RedisClient.create("redis://localhost:32768/"); + redisConnection = redisClient.connect(); + } + + @AfterClass + public static void destroy() { + redisConnection.close(); + } + + @Test + public void givenAString_thenSaveItAsRedisStringsSync() { + + RedisCommands syncCommands = redisConnection.sync(); + + String key = "key"; + String value = "value"; + + syncCommands.set(key, value); + String response = syncCommands.get(key); + + Assert.assertEquals(value, response); + } + + @Test + public void givenValues_thenSaveAsRedisHashSync() { + + RedisCommands syncCommands = redisConnection.sync(); + + String recordName = "record1"; + String name = "FirstName"; + String value = "John"; + String surname = "LastName"; + String value1 = "Smith"; + + syncCommands.hset(recordName, name, value); + syncCommands.hset(recordName, surname, value1); + Map record = syncCommands.hgetall(recordName); + + Assert.assertEquals(record.get(name), value); + Assert.assertEquals(record.get(surname), value1); + } + + @Test + public void givenAString_thenSaveItAsRedisStringsAsync() throws Exception { + + RedisAsyncCommands asyncCommands = redisConnection.async(); + + String key = "key"; + String value = "value"; + + asyncCommands.set(key, value); + RedisFuture redisFuture = asyncCommands.get(key); + + String response = redisFuture.get(); + + Assert.assertEquals(value, response); + } + + @Test + public void givenValues_thenSaveAsRedisHashAsync() throws Exception { + + RedisAsyncCommands asyncCommands = redisConnection.async(); + + String recordName = "record1"; + String name = "FirstName"; + String value = "John"; + String surname = "LastName"; + String value1 = "Smith"; + + asyncCommands.hset(recordName, name, value); + asyncCommands.hset(recordName, surname, value1); + RedisFuture> redisFuture = asyncCommands.hgetall(recordName); + + Map record = redisFuture.get(); + + Assert.assertEquals(record.get(name), value); + Assert.assertEquals(record.get(surname), value1); + } + + @Test + public void givenValues_thenSaveAsRedisListAsync() throws Exception { + + RedisAsyncCommands asyncCommands = redisConnection.async(); + + String listName = "tasks"; + String firstTask = "firstTask"; + String secondTask = "secondTask"; + + asyncCommands.del(listName); + + asyncCommands.lpush(listName, firstTask); + asyncCommands.lpush(listName, secondTask); + RedisFuture redisFuture = asyncCommands.rpop(listName); + + String nextTask = redisFuture.get(); + + Assert.assertEquals(firstTask, nextTask); + + asyncCommands.del(listName); + + asyncCommands.lpush(listName, firstTask); + asyncCommands.lpush(listName, secondTask); + + redisFuture = asyncCommands.lpop(listName); + + nextTask = redisFuture.get(); + + Assert.assertEquals(secondTask, nextTask); + + } + + @Test + public void givenSetElements_thenSaveThemInRedisSetAsync() throws Exception { + + RedisAsyncCommands asyncCommands = redisConnection.async(); + + String countries = "countries"; + + String countryOne = "Spain"; + String countryTwo = "Ireland"; + String countryThree = "Ireland"; + + asyncCommands.sadd(countries, countryOne); + + RedisFuture> countriesSetFuture = asyncCommands.smembers(countries); + Assert.assertEquals(2, countriesSetFuture.get().size()); + + asyncCommands.sadd(countries, countryTwo); + countriesSetFuture = asyncCommands.smembers(countries); + Assert.assertEquals(2, countriesSetFuture.get().size()); + + asyncCommands.sadd(countries, countryThree); + countriesSetFuture = asyncCommands.smembers(countries); + Assert.assertEquals(2, countriesSetFuture.get().size()); + + RedisFuture exists = asyncCommands.sismember(countries, countryThree); + assertTrue(exists.get()); + } + + @Test + public void givenARanking_thenSaveItInRedisSortedSetAsync() throws Exception { + + RedisAsyncCommands asyncCommands = redisConnection.async(); + + String key = "sortedset"; + + asyncCommands.zadd(key, 1, "one"); + asyncCommands.zadd(key, 4, "zero"); + asyncCommands.zadd(key, 2, "two"); + + RedisFuture> values = asyncCommands.zrevrange(key, 0, 3); + Assert.assertEquals("zero", values.get().get(0)); + + values = asyncCommands.zrange(key, 0, 3); + Assert.assertEquals("one", values.get().get(0)); + } + + @Test + public void givenMultipleOperationsThatNeedToBeExecutedAtomically_thenWrapThemInATransaction() throws Exception { + + RedisAsyncCommands asyncCommands = redisConnection.async(); + + // Start a transaction + asyncCommands.multi(); + + // Add three sets to it, and save the future responses + RedisFuture result1 = asyncCommands.set("key1", "value1"); + RedisFuture result2 = asyncCommands.set("key2", "value2"); + RedisFuture result3 = asyncCommands.set("key3", "value3"); + + // Execute it + RedisFuture execResult = asyncCommands.exec(); + + TransactionResult transactionResult = execResult.get(); + + // Get the three results in the transaction return + String firstResult = transactionResult.get(0); + String secondResult = transactionResult.get(0); + String thirdResult = transactionResult.get(0); + + // Our results are in both! + assertTrue(firstResult.equals("OK")); + assertTrue(secondResult.equals("OK")); + assertTrue(thirdResult.equals("OK")); + + assertTrue(result1.get().equals("OK")); + assertTrue(result2.get().equals("OK")); + assertTrue(result3.get().equals("OK")); + } + + @Test + public void givenMultipleIndependentOperations_whenNetworkOptimizationIsImportant_thenFlushManually() throws Exception { + + int iterations = 50; + + RedisAsyncCommands asyncCommands = redisConnection.async(); + + asyncCommands.setAutoFlushCommands(false); + + List> futures = new ArrayList<>(); + for (int i = 0; i < iterations; i++) { + futures.add(asyncCommands.set("key" + i, "value" + i)); + } + + asyncCommands.flushCommands(); + + // Wait until all futures complete + boolean result = LettuceFutures.awaitAll(5, TimeUnit.SECONDS, futures.toArray(new RedisFuture[futures.size()])); + + asyncCommands.setAutoFlushCommands(true); + + } + + @Test + public void givenPubSubChannel_whenMessage_thenMessageReceived() throws Exception { + + Listener listener = new Listener(); + StatefulRedisPubSubConnection connection = redisClient.connectPubSub(); + StatefulRedisPubSubConnection pubconnection = redisClient.connectPubSub(); + connection.addListener(listener); + + RedisPubSubAsyncCommands async = connection.async(); + async.subscribe("channel"); + + RedisPubSubAsyncCommands pubasync = pubconnection.async(); + RedisFuture result = pubasync.publish("channel", "hithere"); + + // Need a long wait for publish to complete, depending on system. + result.get(15, TimeUnit.SECONDS); + assertTrue(listener.getMessage().equals("hithere")); + + } + + private static class Listener implements RedisPubSubListener { + + private String message; + + String getMessage() { + return message; + } + + @Override + public void message(String channel, String message) { + log.debug("Got {} on {}", message, channel); + this.message = message; + } + + @Override + public void message(String pattern, String channel, String message) { + + } + + @Override + public void subscribed(String channel, long count) { + log.debug("Subscribed to {}", channel); + } + + @Override + public void psubscribed(String pattern, long count) { + + } + + @Override + public void unsubscribed(String channel, long count) { + + } + + @Override + public void punsubscribed(String pattern, long count) { + + } + } + +} diff --git a/persistence-modules/spring-data-eclipselink/README.md b/persistence-modules/spring-data-eclipselink/README.md new file mode 100644 index 0000000000..7981470488 --- /dev/null +++ b/persistence-modules/spring-data-eclipselink/README.md @@ -0,0 +1,3 @@ +### Relevant articles + +- [A Guide to EclipseLink with Spring](http://www.baeldung.com/spring-eclipselink) diff --git a/persistence-modules/spring-data-eclipselink/pom.xml b/persistence-modules/spring-data-eclipselink/pom.xml new file mode 100644 index 0000000000..65793fd1e0 --- /dev/null +++ b/persistence-modules/spring-data-eclipselink/pom.xml @@ -0,0 +1,80 @@ + + + 4.0.0 + + com.baeldung + spring-data-eclipselink + 1.0.0-SNAPSHOT + + spring-data-eclipselink + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../../ + + + + UTF-8 + UTF-8 + 1.8 + 1.5.9.RELEASE + 2.7.0 + 1.4.196 + + + + + org.springframework.boot + spring-boot-dependencies + ${spring.version} + pom + import + + + org.springframework.boot + spring-boot-starter-data-jpa + ${spring.version} + + + org.hibernate + hibernate-entitymanager + + + org.hibernate + hibernate-core + + + + + org.springframework.boot + spring-boot-starter-test + ${spring.version} + test + + + org.eclipse.persistence + org.eclipse.persistence.jpa + ${eclipselink.version} + + + com.h2database + h2 + runtime + ${h2.version} + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring.version} + + + + + diff --git a/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/EclipselinkSpringDataApplication.java b/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/EclipselinkSpringDataApplication.java new file mode 100644 index 0000000000..63ce778022 --- /dev/null +++ b/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/EclipselinkSpringDataApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.eclipselink.springdata; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class EclipselinkSpringDataApplication { + + public static void main(String[] args) { + SpringApplication.run(EclipselinkSpringDataApplication.class, args); + } +} diff --git a/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/JpaConfiguration.java b/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/JpaConfiguration.java new file mode 100644 index 0000000000..60ff7909be --- /dev/null +++ b/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/JpaConfiguration.java @@ -0,0 +1,44 @@ +package com.baeldung.eclipselink.springdata; + +import org.eclipse.persistence.config.PersistenceUnitProperties; +import org.springframework.beans.factory.ObjectProvider; +import org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration; +import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; +import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers; +import org.springframework.context.annotation.Configuration; +import org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver; +import org.springframework.orm.jpa.vendor.AbstractJpaVendorAdapter; +import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter; +import org.springframework.transaction.jta.JtaTransactionManager; + +import javax.sql.DataSource; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by adam. + */ +@Configuration +public class JpaConfiguration extends JpaBaseConfiguration { + + protected JpaConfiguration(DataSource dataSource, JpaProperties properties, ObjectProvider jtaTransactionManager, ObjectProvider transactionManagerCustomizers) { + super(dataSource, properties, jtaTransactionManager, transactionManagerCustomizers); + } + + @Override + protected AbstractJpaVendorAdapter createJpaVendorAdapter() { + return new EclipseLinkJpaVendorAdapter(); + } + + @Override + protected Map getVendorProperties() { + HashMap map = new HashMap<>(); + map.put(PersistenceUnitProperties.WEAVING, detectWeavingMode()); + map.put(PersistenceUnitProperties.DDL_GENERATION, "drop-and-create-tables"); + return map; + } + + private String detectWeavingMode() { + return InstrumentationLoadTimeWeaver.isInstrumentationAvailable() ? "true" : "static"; + } +} diff --git a/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/model/Person.java b/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/model/Person.java new file mode 100644 index 0000000000..75161875bd --- /dev/null +++ b/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/model/Person.java @@ -0,0 +1,43 @@ +package com.baeldung.eclipselink.springdata.model; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +/** + * Created by adam. + */ +@Entity +public class Person { + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE) + private Long id; + private String firstName; + private String lastName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } +} diff --git a/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/repo/PersonsRepository.java b/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/repo/PersonsRepository.java new file mode 100644 index 0000000000..86cd85d5fe --- /dev/null +++ b/persistence-modules/spring-data-eclipselink/src/main/java/com/baeldung/eclipselink/springdata/repo/PersonsRepository.java @@ -0,0 +1,14 @@ +package com.baeldung.eclipselink.springdata.repo; + +import org.springframework.data.repository.CrudRepository; + +import com.baeldung.eclipselink.springdata.model.Person; + +/** + * Created by adam. + */ +public interface PersonsRepository extends CrudRepository { + + Person findByFirstName(String firstName); + +} diff --git a/persistence-modules/spring-data-eclipselink/src/main/resources/application.properties b/persistence-modules/spring-data-eclipselink/src/main/resources/application.properties new file mode 100644 index 0000000000..549c0b4ada --- /dev/null +++ b/persistence-modules/spring-data-eclipselink/src/main/resources/application.properties @@ -0,0 +1,2 @@ +spring.datasource.url=jdbc:h2:mem:test +spring.jpa.show-sql=true \ No newline at end of file diff --git a/persistence-modules/spring-data-eclipselink/src/test/java/com/baeldung/eclipselink/springdata/repo/PersonsRepositoryIntegrationTest.java b/persistence-modules/spring-data-eclipselink/src/test/java/com/baeldung/eclipselink/springdata/repo/PersonsRepositoryIntegrationTest.java new file mode 100644 index 0000000000..636f91cf8e --- /dev/null +++ b/persistence-modules/spring-data-eclipselink/src/test/java/com/baeldung/eclipselink/springdata/repo/PersonsRepositoryIntegrationTest.java @@ -0,0 +1,48 @@ +package com.baeldung.eclipselink.springdata.repo; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringRunner; + +import com.baeldung.eclipselink.springdata.model.Person; +import com.baeldung.eclipselink.springdata.repo.PersonsRepository; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsEqual.equalTo; +import static org.hamcrest.core.IsNull.notNullValue; + +@RunWith(SpringRunner.class) +@SpringBootTest +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) +public class PersonsRepositoryIntegrationTest { + + @Autowired + private PersonsRepository personsRepository; + + @Test + public void givenPerson_whenSave_thenAddOnePersonToDB() { + personsRepository.save(new Person()); + assertThat(personsRepository.findAll().spliterator().getExactSizeIfKnown(), equalTo(1l)); + } + + @Test + public void givenPersons_whenSearch_thenFindOk() { + Person person1 = new Person(); + person1.setFirstName("Adam"); + + Person person2 = new Person(); + person2.setFirstName("Dave"); + + personsRepository.save(person1); + personsRepository.save(person2); + + Person foundPerson = personsRepository.findByFirstName("Adam"); + + assertThat(foundPerson.getFirstName(), equalTo("Adam")); + assertThat(foundPerson.getId(), notNullValue()); + } + +} diff --git a/persistence-modules/spring-hibernate-5/pom.xml b/persistence-modules/spring-hibernate-5/pom.xml index 23cf9a4d44..86e952c0e4 100644 --- a/persistence-modules/spring-hibernate-5/pom.xml +++ b/persistence-modules/spring-hibernate-5/pom.xml @@ -179,7 +179,7 @@ - 4.3.10.RELEASE + 5.0.2.RELEASE 1.10.6.RELEASE @@ -220,7 +220,7 @@ 2.9.0 - 3.6.0 + 3.7.0 2.19.1 2.7 1.6.1 diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/BarHibernateDAO.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/BarHibernateDAO.java new file mode 100644 index 0000000000..5fc932b256 --- /dev/null +++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/BarHibernateDAO.java @@ -0,0 +1,39 @@ +package com.baeldung.hibernate.bootstrap; + +import com.baeldung.hibernate.bootstrap.model.TestEntity; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.springframework.beans.factory.annotation.Autowired; + +public abstract class BarHibernateDAO { + + @Autowired + private SessionFactory sessionFactory; + + public TestEntity findEntity(int id) { + + return getCurrentSession().find(TestEntity.class, 1); + } + + public void createEntity(TestEntity entity) { + + getCurrentSession().save(entity); + } + + public void createEntity(int id, String newDescription) { + + TestEntity entity = findEntity(id); + entity.setDescription(newDescription); + getCurrentSession().save(entity); + } + + public void deleteEntity(int id) { + + TestEntity entity = findEntity(id); + getCurrentSession().delete(entity); + } + + protected Session getCurrentSession() { + return sessionFactory.getCurrentSession(); + } +} diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/HibernateConf.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/HibernateConf.java new file mode 100644 index 0000000000..150e3778af --- /dev/null +++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/HibernateConf.java @@ -0,0 +1,61 @@ +package com.baeldung.hibernate.bootstrap; + +import com.google.common.base.Preconditions; +import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.orm.hibernate5.HibernateTransactionManager; +import org.springframework.orm.hibernate5.LocalSessionFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.sql.DataSource; +import java.util.Properties; + +@Configuration +@EnableTransactionManagement +@PropertySource({ "classpath:persistence-h2.properties" }) +public class HibernateConf { + + @Autowired + private Environment env; + + @Bean + public LocalSessionFactoryBean sessionFactory() { + final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); + sessionFactory.setDataSource(dataSource()); + sessionFactory.setPackagesToScan(new String[] { "com.baeldung.hibernate.bootstrap.model" }); + sessionFactory.setHibernateProperties(hibernateProperties()); + + return sessionFactory; + } + + @Bean + public DataSource dataSource() { + final BasicDataSource dataSource = new BasicDataSource(); + dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName"))); + dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url"))); + dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user"))); + dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass"))); + + return dataSource; + } + + @Bean + public PlatformTransactionManager hibernateTransactionManager() { + final HibernateTransactionManager transactionManager = new HibernateTransactionManager(); + transactionManager.setSessionFactory(sessionFactory().getObject()); + return transactionManager; + } + + private final Properties hibernateProperties() { + final Properties hibernateProperties = new Properties(); + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + + return hibernateProperties; + } +} diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/HibernateXMLConf.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/HibernateXMLConf.java new file mode 100644 index 0000000000..b3e979478f --- /dev/null +++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/HibernateXMLConf.java @@ -0,0 +1,24 @@ +package com.baeldung.hibernate.bootstrap; + +import com.google.common.base.Preconditions; +import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.ImportResource; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.orm.hibernate5.HibernateTransactionManager; +import org.springframework.orm.hibernate5.LocalSessionFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.sql.DataSource; +import java.util.Properties; + +@Configuration +@EnableTransactionManagement +@ImportResource({ "classpath:hibernate5Configuration.xml" }) +public class HibernateXMLConf { + +} diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/model/TestEntity.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/model/TestEntity.java new file mode 100644 index 0000000000..cae41db831 --- /dev/null +++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/bootstrap/model/TestEntity.java @@ -0,0 +1,29 @@ +package com.baeldung.hibernate.bootstrap.model; + +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity +public class TestEntity { + + private int id; + + private String description; + + @Id + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java index 6f359054b6..5dace1f742 100644 --- a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java +++ b/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java @@ -10,8 +10,8 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; -import org.springframework.orm.hibernate4.HibernateTransactionManager; -import org.springframework.orm.hibernate4.LocalSessionFactoryBean; +import org.springframework.orm.hibernate5.HibernateTransactionManager; +import org.springframework.orm.hibernate5.LocalSessionFactoryBean; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/persistence-modules/spring-hibernate-5/src/main/resources/hibernate5Configuration.xml b/persistence-modules/spring-hibernate-5/src/main/resources/hibernate5Configuration.xml new file mode 100644 index 0000000000..cb6cf0aa5c --- /dev/null +++ b/persistence-modules/spring-hibernate-5/src/main/resources/hibernate5Configuration.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + ${hibernate.hbm2ddl.auto} + ${hibernate.dialect} + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-hibernate-5/src/main/resources/persistence-h2.properties b/persistence-modules/spring-hibernate-5/src/main/resources/persistence-h2.properties index 915bc4317b..0325174b67 100644 --- a/persistence-modules/spring-hibernate-5/src/main/resources/persistence-h2.properties +++ b/persistence-modules/spring-hibernate-5/src/main/resources/persistence-h2.properties @@ -2,6 +2,7 @@ jdbc.driverClassName=org.h2.Driver jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 jdbc.eventGeneratedId=sa +jdbc.user=sa jdbc.pass=sa # hibernate.X diff --git a/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/bootstrap/HibernateBootstrapIntegrationTest.java b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/bootstrap/HibernateBootstrapIntegrationTest.java new file mode 100644 index 0000000000..ffe82b7ced --- /dev/null +++ b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/bootstrap/HibernateBootstrapIntegrationTest.java @@ -0,0 +1,38 @@ +package com.baeldung.hibernate.bootstrap; + +import com.baeldung.hibernate.bootstrap.model.TestEntity; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.springframework.transaction.annotation.Transactional; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { HibernateConf.class }) +@Transactional +public class HibernateBootstrapIntegrationTest { + + @Autowired + private SessionFactory sessionFactory; + + @Test + public void whenBootstrapHibernateSession_thenNoException() { + + Session session = sessionFactory.getCurrentSession(); + + TestEntity newEntity = new TestEntity(); + newEntity.setId(1); + session.save(newEntity); + + TestEntity searchEntity = session.find(TestEntity.class, 1); + + Assert.assertNotNull(searchEntity); + } + +} diff --git a/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/bootstrap/HibernateXMLBootstrapIntegrationTest.java b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/bootstrap/HibernateXMLBootstrapIntegrationTest.java new file mode 100644 index 0000000000..5b811ad576 --- /dev/null +++ b/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/bootstrap/HibernateXMLBootstrapIntegrationTest.java @@ -0,0 +1,36 @@ +package com.baeldung.hibernate.bootstrap; + +import com.baeldung.hibernate.bootstrap.model.TestEntity; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.transaction.annotation.Transactional; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { HibernateXMLConf.class }) +@Transactional +public class HibernateXMLBootstrapIntegrationTest { + + @Autowired + private SessionFactory sessionFactory; + + @Test + public void whenBootstrapHibernateSession_thenNoException() { + + Session session = sessionFactory.getCurrentSession(); + + TestEntity newEntity = new TestEntity(); + newEntity.setId(1); + session.save(newEntity); + + TestEntity searchEntity = session.find(TestEntity.class, 1); + + Assert.assertNotNull(searchEntity); + } + +} diff --git a/persistence-modules/spring-jpa/README.md b/persistence-modules/spring-jpa/README.md index d93271164c..4bfe2a1d25 100644 --- a/persistence-modules/spring-jpa/README.md +++ b/persistence-modules/spring-jpa/README.md @@ -15,6 +15,7 @@ - [Deleting Objects with Hibernate](http://www.baeldung.com/delete-with-hibernate) - [Self-Contained Testing Using an In-Memory Database](http://www.baeldung.com/spring-jpa-test-in-memory-database) - [Spring Data JPA – Adding a Method in All Repositories](http://www.baeldung.com/spring-data-jpa-method-in-all-repositories) +- [A Guide to Spring AbstractRoutingDatasource](http://www.baeldung.com/spring-abstract-routing-data-source) ### Eclipse Config After importing the project into Eclipse, you may see the following error: diff --git a/pom.xml b/pom.xml index c8fa30e8c9..4a25459fcb 100644 --- a/pom.xml +++ b/pom.xml @@ -24,10 +24,11 @@ 1.1.7 2.19.1 - 3.6.0 + 3.7.0 + parent-boot-5 asm atomix apache-cayenne @@ -46,11 +47,10 @@ cdi core-java + core-java-io core-java-8 core-java-concurrency couchbase - cas/cas-server - cas/cas-secured-app deltaspike dozer @@ -60,7 +60,6 @@ feign - flyway @@ -83,10 +82,14 @@ image-processing immutables + influxdb jackson vavr + java-lite + java-rmi + java-vavr-stream javax-servlets javaxval jaxb @@ -111,14 +114,17 @@ lombok mapstruct + mesos-marathon testing-modules/mockito testing-modules/mockito-2 testing-modules/mocks mustache + mvn-wrapper noexception - + orientdb osgi orika @@ -141,8 +147,9 @@ persistence-modules/solr spark-java + spring-5-reactive spring-5-mvc - spring-acl + spring-5-security spring-activiti spring-akka spring-amqp @@ -152,12 +159,15 @@ spring-batch spring-bom spring-boot - spring-boot-keycloak + spring-boot-keycloak spring-boot-bootstrap + spring-boot-admin + spring-boot-security spring-cloud-data-flow spring-cloud spring-core spring-cucumber + spring-ejb spring-aop persistence-modules/spring-data-cassandra spring-data-couchbase-2 @@ -174,9 +184,11 @@ persistence-modules/spring-hibernate-3 spring-hibernate4 persistence-modules/spring-hibernate-5 + persistence-modules/spring-data-eclipselink spring-integration + spring-jenkins-pipeline spring-jersey - spring-jmeter-jenkins + jmeter spring-jms spring-jooq persistence-modules/spring-jpa @@ -197,11 +209,11 @@ spring-protobuf spring-quartz spring-rest-angular - spring-rest-docs spring-rest-full spring-rest-query-language spring-rest spring-rest-simple + spring-security-acl spring-security-cache-control spring-security-client/spring-security-jsp-authentication spring-security-client/spring-security-jsp-authorize @@ -262,8 +274,9 @@ vertx-and-rxjava saas deeplearning4j - spring-boot-admin lucene + vraptor + persistence-modules/java-cockroachdb diff --git a/rxjava/src/test/java/com/baeldung/rxjava/SchedulersLiveTest.java b/rxjava/src/test/java/com/baeldung/rxjava/SchedulersLiveTest.java index 712f07324c..bc59f72fd9 100644 --- a/rxjava/src/test/java/com/baeldung/rxjava/SchedulersLiveTest.java +++ b/rxjava/src/test/java/com/baeldung/rxjava/SchedulersLiveTest.java @@ -194,6 +194,7 @@ public class SchedulersLiveTest { } @Test + @Ignore public void givenObservable_whenComputationScheduling_thenReturnThreadName() throws InterruptedException { System.out.println("computation"); Observable.just("computation") diff --git a/saas/pom.xml b/saas/pom.xml index 7c8745910f..b76b27011a 100644 --- a/saas/pom.xml +++ b/saas/pom.xml @@ -79,6 +79,6 @@ - 3.6.0 + 3.7.0 \ No newline at end of file diff --git a/spring-5-mvc/pom.xml b/spring-5-mvc/pom.xml index b188ee590a..850661836b 100644 --- a/spring-5-mvc/pom.xml +++ b/spring-5-mvc/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 2.0.0.M3 + 2.0.0.M7 @@ -190,6 +190,7 @@ UTF-8 UTF-8 1.8 + 5.0.2.RELEASE 1.1.2 diff --git a/spring-5-reactive-client/.gitignore b/spring-5-reactive-client/.gitignore new file mode 100644 index 0000000000..dec013dfa4 --- /dev/null +++ b/spring-5-reactive-client/.gitignore @@ -0,0 +1,12 @@ +#folders# +.idea +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/spring-5-reactive-client/README.md b/spring-5-reactive-client/README.md new file mode 100644 index 0000000000..400e343263 --- /dev/null +++ b/spring-5-reactive-client/README.md @@ -0,0 +1,15 @@ +## Spring REST Example Project + +### The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring + +### Relevant Articles + +- [Concurrent Test Execution in Spring 5](http://www.baeldung.com/spring-5-concurrent-tests) +- [Introduction to the Functional Web Framework in Spring 5](http://www.baeldung.com/spring-5-functional-web) +- [Exploring the Spring 5 MVC URL Matching Improvements](http://www.baeldung.com/spring-5-mvc-url-matching) +- [Spring 5 WebClient](http://www.baeldung.com/spring-5-webclient) +- [Spring 5 Functional Bean Registration](http://www.baeldung.com/spring-5-functional-beans) +- [The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5](http://www.baeldung.com/spring-5-junit-config) +- [Spring Security 5 for Reactive Applications](http://www.baeldung.com/spring-security-5-reactive) +- [Spring 5 Testing with @EnabledIf Annotation](https://github.com/eugenp/tutorials/tree/master/spring-5) diff --git a/spring-5-reactive-client/pom.xml b/spring-5-reactive-client/pom.xml new file mode 100644 index 0000000000..22a027a58e --- /dev/null +++ b/spring-5-reactive-client/pom.xml @@ -0,0 +1,201 @@ + + + 4.0.0 + + com.baeldung + spring-5-reactive-client + 0.0.1-SNAPSHOT + jar + + spring-5 + spring 5 sample project about new features + + + org.springframework.boot + spring-boot-starter-parent + 2.0.0.M7 + + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-webflux + + + org.projectreactor + reactor-spring + ${reactor-spring.version} + + + javax.json.bind + javax.json.bind-api + + + + + + + + + + + + + + + + + org.apache.geronimo.specs + geronimo-json_1.1_spec + ${geronimo-json_1.1_spec.version} + + + org.apache.johnzon + johnzon-jsonb + + + + org.apache.commons + commons-lang3 + + + + + + org.springframework.boot + spring-boot-devtools + runtime + + + com.h2database + h2 + runtime + + + + org.springframework + spring-test + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.apache.commons + commons-collections4 + 4.1 + test + + + + org.junit.jupiter + junit-jupiter-api + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.platform + junit-platform-surefire-provider + ${junit.platform.version} + test + + + org.junit.platform + junit-platform-runner + ${junit.platform.version} + test + + + + org.projectlombok + lombok + + + org.apache.commons + commons-lang3 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + com.baeldung.Spring5Application + JAR + + + + + org.apache.maven.plugins + maven-surefire-plugin + + 3 + true + methods + true + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + UTF-8 + UTF-8 + 1.8 + 1.0.0 + 5.0.0 + 2.20 + 5.0.2.RELEASE + 1.0.1.RELEASE + 1.1.3 + 1.0 + 1.0 + + + diff --git a/spring-5-reactive-client/src/main/java/com/baeldung/reactive/model/Foo.java b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/model/Foo.java new file mode 100644 index 0000000000..2c49e6146a --- /dev/null +++ b/spring-5-reactive-client/src/main/java/com/baeldung/reactive/model/Foo.java @@ -0,0 +1,13 @@ +package com.baeldung.reactive.model; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@AllArgsConstructor +@Data +public class Foo { + + private long id; + private String name; + +} diff --git a/spring-5-reactive-client/src/main/resources/application.properties b/spring-5-reactive-client/src/main/resources/application.properties new file mode 100644 index 0000000000..2d93456aeb --- /dev/null +++ b/spring-5-reactive-client/src/main/resources/application.properties @@ -0,0 +1,3 @@ +logging.level.root=INFO + +server.port=8081 \ No newline at end of file diff --git a/spring-5-reactive-client/src/main/resources/logback.xml b/spring-5-reactive-client/src/main/resources/logback.xml new file mode 100644 index 0000000000..8bbe8c1d67 --- /dev/null +++ b/spring-5-reactive-client/src/main/resources/logback.xml @@ -0,0 +1,16 @@ + + + + + # Pattern of log message for console appender + %d{yyyy-MM-dd HH:mm:ss} %-5p %m%n + + + + + + + + + + \ No newline at end of file diff --git a/spring-5-reactive-client/src/main/webapp/WEB-INF/web.xml b/spring-5-reactive-client/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..bfcf43dad2 --- /dev/null +++ b/spring-5-reactive-client/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,21 @@ + + + + Spring Functional Application + + + functional + com.baeldung.functional.RootServlet + 1 + true + + + functional + / + + + + \ No newline at end of file diff --git a/spring-5-reactive-client/src/test/java/com/baeldung/reactive/ReactiveIntegrationTest.java b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/ReactiveIntegrationTest.java new file mode 100644 index 0000000000..394ff42e5f --- /dev/null +++ b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/ReactiveIntegrationTest.java @@ -0,0 +1,42 @@ +package com.baeldung.reactive; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.web.reactive.function.client.ClientResponse; +import org.springframework.web.reactive.function.client.WebClient; + +import com.baeldung.reactive.model.Foo; + +import reactor.core.publisher.Mono; + +@SpringBootTest +public class ReactiveIntegrationTest { + + private WebClient client; + + @BeforeEach + public void before() { + client = WebClient.create("http://localhost:8080"); + } + + // + + @Test + public void whenMonoReactiveEndpointIsConsumed_thenCorrectOutput() { + final Mono fooMono = client.get().uri("/foos/123").exchange().log(); + + System.out.println(fooMono.subscribe()); + } + + @Test + public void whenFluxReactiveEndpointIsConsumed_thenCorrectOutput() throws InterruptedException { + client.get().uri("/foos") + .retrieve() + .bodyToFlux(Foo.class).log() + .subscribe(System.out::println); + + System.out.println(); + } + +} diff --git a/spring-5-reactive-client/src/test/java/com/baeldung/reactive/Spring5ReactiveTestApplication.java b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/Spring5ReactiveTestApplication.java new file mode 100644 index 0000000000..c884ace323 --- /dev/null +++ b/spring-5-reactive-client/src/test/java/com/baeldung/reactive/Spring5ReactiveTestApplication.java @@ -0,0 +1,35 @@ +package com.baeldung.reactive; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.web.reactive.function.client.WebClient; + +import com.baeldung.reactive.model.Foo; + +@SpringBootApplication +public class Spring5ReactiveTestApplication { + + @Bean + public WebClient client() { + return WebClient.create("http://localhost:8080"); + } + + @Bean + CommandLineRunner cmd(WebClient client) { + return args -> { + client.get().uri("/foos2") + .retrieve() + .bodyToFlux(Foo.class).log() + .subscribe(System.out::println); + }; + } + + // + + public static void main(String[] args) { + SpringApplication.run(Spring5ReactiveTestApplication.class, args); + } + +} diff --git a/spring-5-reactive-client/src/test/resources/logback-test.xml b/spring-5-reactive-client/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..8bbe8c1d67 --- /dev/null +++ b/spring-5-reactive-client/src/test/resources/logback-test.xml @@ -0,0 +1,16 @@ + + + + + # Pattern of log message for console appender + %d{yyyy-MM-dd HH:mm:ss} %-5p %m%n + + + + + + + + + + \ No newline at end of file diff --git a/spring-5-reactive/.gitignore b/spring-5-reactive/.gitignore new file mode 100644 index 0000000000..dec013dfa4 --- /dev/null +++ b/spring-5-reactive/.gitignore @@ -0,0 +1,12 @@ +#folders# +.idea +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/spring-5-reactive/README.md b/spring-5-reactive/README.md new file mode 100644 index 0000000000..400e343263 --- /dev/null +++ b/spring-5-reactive/README.md @@ -0,0 +1,15 @@ +## Spring REST Example Project + +### The Course +The "REST With Spring" Classes: http://bit.ly/restwithspring + +### Relevant Articles + +- [Concurrent Test Execution in Spring 5](http://www.baeldung.com/spring-5-concurrent-tests) +- [Introduction to the Functional Web Framework in Spring 5](http://www.baeldung.com/spring-5-functional-web) +- [Exploring the Spring 5 MVC URL Matching Improvements](http://www.baeldung.com/spring-5-mvc-url-matching) +- [Spring 5 WebClient](http://www.baeldung.com/spring-5-webclient) +- [Spring 5 Functional Bean Registration](http://www.baeldung.com/spring-5-functional-beans) +- [The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5](http://www.baeldung.com/spring-5-junit-config) +- [Spring Security 5 for Reactive Applications](http://www.baeldung.com/spring-security-5-reactive) +- [Spring 5 Testing with @EnabledIf Annotation](https://github.com/eugenp/tutorials/tree/master/spring-5) diff --git a/spring-5-reactive/pom.xml b/spring-5-reactive/pom.xml new file mode 100644 index 0000000000..5065457c4b --- /dev/null +++ b/spring-5-reactive/pom.xml @@ -0,0 +1,212 @@ + + + 4.0.0 + + com.baeldung + spring-5-reactive + 0.0.1-SNAPSHOT + jar + + spring-5 + spring 5 sample project about new features + + + org.springframework.boot + spring-boot-starter-parent + 2.0.0.M7 + + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-tomcat + + + org.springframework.boot + spring-boot-starter-webflux + + + org.projectreactor + reactor-spring + ${reactor-spring.version} + + + javax.json.bind + javax.json.bind-api + + + org.springframework.boot + spring-boot-starter-actuator + + + + + + + + + + + + + + + + + org.projectlombok + lombok + compile + + + + org.apache.geronimo.specs + geronimo-json_1.1_spec + ${geronimo-json_1.1_spec.version} + + + org.apache.johnzon + johnzon-jsonb + + + + org.apache.commons + commons-lang3 + + + + + + org.springframework.boot + spring-boot-devtools + runtime + + + com.h2database + h2 + runtime + + + + org.springframework + spring-test + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.apache.commons + commons-collections4 + 4.1 + test + + + + org.junit.jupiter + junit-jupiter-api + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.platform + junit-platform-surefire-provider + ${junit.platform.version} + test + + + org.junit.platform + junit-platform-runner + ${junit.platform.version} + test + + + + org.projectlombok + lombok + + + org.apache.commons + commons-lang3 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + com.baeldung.Spring5Application + JAR + + + + + org.apache.maven.plugins + maven-surefire-plugin + + 3 + true + methods + true + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + UTF-8 + UTF-8 + 1.8 + 1.0.0 + 5.0.0 + 2.20 + 5.0.2.RELEASE + 1.0.1.RELEASE + 1.1.3 + 1.0 + 1.0 + + + + diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/Spring5ReactiveApplication.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/Spring5ReactiveApplication.java new file mode 100644 index 0000000000..a9308124fa --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/Spring5ReactiveApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.reactive; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Spring5ReactiveApplication { + + public static void main(String[] args) { + SpringApplication.run(Spring5ReactiveApplication.class, args); + } + +} diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/actuator/DownstreamServiceReactiveHealthIndicator.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/actuator/DownstreamServiceReactiveHealthIndicator.java new file mode 100644 index 0000000000..7360def71e --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/actuator/DownstreamServiceReactiveHealthIndicator.java @@ -0,0 +1,23 @@ +package com.baeldung.reactive.actuator; + +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.ReactiveHealthIndicator; +import org.springframework.stereotype.Component; +import reactor.core.publisher.Mono; + +@Component +public class DownstreamServiceReactiveHealthIndicator implements ReactiveHealthIndicator { + + @Override + public Mono health() { + return checkDownstreamServiceHealth().onErrorResume( + ex -> Mono.just(new Health.Builder().down(ex).build()) + ); + } + + private Mono checkDownstreamServiceHealth() { + // we could use WebClient to check health reactively + return Mono.just(new Health.Builder().up().build()); + } + +} \ No newline at end of file diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/actuator/FeaturesEndpoint.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/actuator/FeaturesEndpoint.java new file mode 100644 index 0000000000..b2bc1e037f --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/actuator/FeaturesEndpoint.java @@ -0,0 +1,47 @@ +package com.baeldung.reactive.actuator; + +import org.springframework.boot.actuate.endpoint.annotation.*; +import org.springframework.stereotype.Component; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +@Component +@Endpoint(id = "features", enableByDefault = true) +public class FeaturesEndpoint { + + private Map features = new ConcurrentHashMap<>(); + + @ReadOperation + public Map features() { + return features; + } + + @ReadOperation + public Feature feature(@Selector String name) { + return features.get(name); + } + + @WriteOperation + public void configureFeature(@Selector String name, Feature feature) { + features.put(name, feature); + } + + @DeleteOperation + public void deleteFeature(@Selector String name) { + features.remove(name); + } + + public static class Feature { + private Boolean enabled; + + public Boolean getEnabled() { + return enabled; + } + + public void setEnabled(Boolean enabled) { + this.enabled = enabled; + } + } + +} diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/actuator/InfoWebEndpointExtension.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/actuator/InfoWebEndpointExtension.java new file mode 100644 index 0000000000..86502f0ab3 --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/actuator/InfoWebEndpointExtension.java @@ -0,0 +1,32 @@ +package com.baeldung.reactive.actuator; + +import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; +import org.springframework.boot.actuate.endpoint.web.WebEndpointResponse; +import org.springframework.boot.actuate.endpoint.web.annotation.EndpointWebExtension; +import org.springframework.boot.actuate.info.InfoEndpoint; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +@EndpointWebExtension(endpoint = InfoEndpoint.class) +public class InfoWebEndpointExtension { + + private final InfoEndpoint delegate; + + public InfoWebEndpointExtension(InfoEndpoint infoEndpoint) { + this.delegate = infoEndpoint; + } + + @ReadOperation + public WebEndpointResponse info() { + Map info = this.delegate.info(); + Integer status = getStatus(info); + return new WebEndpointResponse<>(info, status); + } + + private Integer getStatus(Map info) { + // return 5xx if this is a snapshot + return 200; + } +} \ No newline at end of file diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/controller/FooReactiveController.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/controller/FooReactiveController.java new file mode 100644 index 0000000000..933d469f65 --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/controller/FooReactiveController.java @@ -0,0 +1,46 @@ +package com.baeldung.reactive.controller; + +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; + +import java.time.Duration; +import java.util.Random; +import java.util.stream.Stream; + +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.reactive.model.Foo; + +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.util.function.Tuple2; + +@RestController +public class FooReactiveController { + + @GetMapping("/foos/{id}") + public Mono getFoo(@PathVariable("id") long id) { + return Mono.just(new Foo(id, randomAlphabetic(6))); + } + + @GetMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE, value = "/foos") + public Flux getAllFoos2() { + final Flux foosFlux = Flux.fromStream(Stream.generate(() -> new Foo(new Random().nextLong(), randomAlphabetic(6)))); + final Flux emmitFlux = Flux.interval(Duration.ofSeconds(1)); + return Flux.zip(foosFlux, emmitFlux).map(Tuple2::getT1); + } + + @GetMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE, value = "/foos2") + public Flux getAllFoos() { + final Flux flux = Flux. create(fluxSink -> { + while (true) { + fluxSink.next(new Foo(new Random().nextLong(), randomAlphabetic(6))); + } + }).sample(Duration.ofSeconds(1)).log(); + + return flux; + } + +} diff --git a/spring-5/src/main/java/com/baeldung/web/PathPatternController.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/controller/PathPatternController.java similarity index 89% rename from spring-5/src/main/java/com/baeldung/web/PathPatternController.java rename to spring-5-reactive/src/main/java/com/baeldung/reactive/controller/PathPatternController.java index 15b689257a..f5a5d9e769 100644 --- a/spring-5/src/main/java/com/baeldung/web/PathPatternController.java +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/controller/PathPatternController.java @@ -1,8 +1,7 @@ -package com.baeldung.web; +package com.baeldung.reactive.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/model/Foo.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/model/Foo.java new file mode 100644 index 0000000000..2c49e6146a --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/model/Foo.java @@ -0,0 +1,13 @@ +package com.baeldung.reactive.model; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@AllArgsConstructor +@Data +public class Foo { + + private long id; + private String name; + +} diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/Actor.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/Actor.java new file mode 100644 index 0000000000..ee06b94be7 --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/Actor.java @@ -0,0 +1,23 @@ +package com.baeldung.reactive.urlmatch; + +class Actor { + private String firstname; + private String lastname; + + public Actor() { + } + + public Actor(String firstname, String lastname) { + this.firstname = firstname; + this.lastname = lastname; + } + + public String getFirstname() { + return firstname; + } + + public String getLastname() { + return lastname; + } + +} diff --git a/spring-5/src/main/java/com/baeldung/functional/ExploreSpring5URLPatternUsingRouterFunctions.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/ExploreSpring5URLPatternUsingRouterFunctions.java similarity index 98% rename from spring-5/src/main/java/com/baeldung/functional/ExploreSpring5URLPatternUsingRouterFunctions.java rename to spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/ExploreSpring5URLPatternUsingRouterFunctions.java index 2a6d04538c..78f40be57a 100644 --- a/spring-5/src/main/java/com/baeldung/functional/ExploreSpring5URLPatternUsingRouterFunctions.java +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/ExploreSpring5URLPatternUsingRouterFunctions.java @@ -1,4 +1,4 @@ -package com.baeldung.functional; +package com.baeldung.reactive.urlmatch; import static org.springframework.web.reactive.function.BodyInserters.fromObject; import static org.springframework.web.reactive.function.server.RequestPredicates.GET; diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/FormHandler.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/FormHandler.java new file mode 100644 index 0000000000..0781230379 --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/FormHandler.java @@ -0,0 +1,41 @@ +package com.baeldung.reactive.urlmatch; + +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.util.MultiValueMap; +import org.springframework.web.reactive.function.server.ServerRequest; +import org.springframework.web.reactive.function.server.ServerResponse; +import reactor.core.publisher.Mono; + +import java.util.List; +import java.util.concurrent.atomic.AtomicLong; + +import static org.springframework.web.reactive.function.BodyExtractors.toDataBuffers; +import static org.springframework.web.reactive.function.BodyExtractors.toFormData; +import static org.springframework.web.reactive.function.BodyInserters.fromObject; +import static org.springframework.web.reactive.function.server.ServerResponse.ok; + +public class FormHandler { + + Mono handleLogin(ServerRequest request) { + return request.body(toFormData()) + .map(MultiValueMap::toSingleValueMap) + .filter(formData -> "baeldung".equals(formData.get("user"))) + .filter(formData -> "you_know_what_to_do".equals(formData.get("token"))) + .flatMap(formData -> ok().body(Mono.just("welcome back!"), String.class)) + .switchIfEmpty(ServerResponse.badRequest() + .build()); + } + + Mono handleUpload(ServerRequest request) { + return request.body(toDataBuffers()) + .collectList() + .flatMap(dataBuffers -> ok().body(fromObject(extractData(dataBuffers).toString()))); + } + + private AtomicLong extractData(List dataBuffers) { + AtomicLong atomicLong = new AtomicLong(0); + dataBuffers.forEach(d -> atomicLong.addAndGet(d.asByteBuffer() + .array().length)); + return atomicLong; + } +} diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/FunctionalWebApplication.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/FunctionalWebApplication.java new file mode 100644 index 0000000000..2ea5420a2b --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/FunctionalWebApplication.java @@ -0,0 +1,80 @@ +package com.baeldung.reactive.urlmatch; + +import static org.springframework.web.reactive.function.BodyInserters.fromObject; +import static org.springframework.web.reactive.function.server.RequestPredicates.GET; +import static org.springframework.web.reactive.function.server.RequestPredicates.POST; +import static org.springframework.web.reactive.function.server.RequestPredicates.path; +import static org.springframework.web.reactive.function.server.RouterFunctions.route; +import static org.springframework.web.reactive.function.server.RouterFunctions.toHttpHandler; +import static org.springframework.web.reactive.function.server.ServerResponse.ok; + +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +import org.apache.catalina.Context; +import org.apache.catalina.startup.Tomcat; +import org.springframework.boot.web.embedded.tomcat.TomcatWebServer; +import org.springframework.boot.web.server.WebServer; +import org.springframework.core.io.ClassPathResource; +import org.springframework.http.server.reactive.HttpHandler; +import org.springframework.http.server.reactive.ServletHttpHandlerAdapter; +import org.springframework.web.reactive.function.server.RouterFunction; +import org.springframework.web.reactive.function.server.RouterFunctions; +import org.springframework.web.reactive.function.server.ServerResponse; +import org.springframework.web.server.WebHandler; +import org.springframework.web.server.adapter.WebHttpHandlerBuilder; + +import reactor.core.publisher.Flux; + +public class FunctionalWebApplication { + + private static final Actor BRAD_PITT = new Actor("Brad", "Pitt"); + private static final Actor TOM_HANKS = new Actor("Tom", "Hanks"); + private static final List actors = new CopyOnWriteArrayList<>(Arrays.asList(BRAD_PITT, TOM_HANKS)); + + private RouterFunction routingFunction() { + FormHandler formHandler = new FormHandler(); + + RouterFunction restfulRouter = route(GET("/"), serverRequest -> ok().body(Flux.fromIterable(actors), Actor.class)).andRoute(POST("/"), serverRequest -> serverRequest.bodyToMono(Actor.class) + .doOnNext(actors::add) + .then(ok().build())); + + return route(GET("/test"), serverRequest -> ok().body(fromObject("helloworld"))).andRoute(POST("/login"), formHandler::handleLogin) + .andRoute(POST("/upload"), formHandler::handleUpload) + .and(RouterFunctions.resources("/files/**", new ClassPathResource("files/"))) + .andNest(path("/actor"), restfulRouter) + .filter((request, next) -> { + System.out.println("Before handler invocation: " + request.path()); + return next.handle(request); + }); + } + + WebServer start() throws Exception { + WebHandler webHandler = (WebHandler) toHttpHandler(routingFunction()); + HttpHandler httpHandler = WebHttpHandlerBuilder.webHandler(webHandler) + .filter(new IndexRewriteFilter()) + .build(); + + Tomcat tomcat = new Tomcat(); + tomcat.setHostname("localhost"); + tomcat.setPort(9090); + Context rootContext = tomcat.addContext("", System.getProperty("java.io.tmpdir")); + ServletHttpHandlerAdapter servlet = new ServletHttpHandlerAdapter(httpHandler); + Tomcat.addServlet(rootContext, "httpHandlerServlet", servlet); + rootContext.addServletMappingDecoded("/", "httpHandlerServlet"); + + TomcatWebServer server = new TomcatWebServer(tomcat); + server.start(); + return server; + + } + + public static void main(String[] args) { + try { + new FunctionalWebApplication().start(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/IndexRewriteFilter.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/IndexRewriteFilter.java new file mode 100644 index 0000000000..2eb252ed2b --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/urlmatch/IndexRewriteFilter.java @@ -0,0 +1,27 @@ +package com.baeldung.reactive.urlmatch; + +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.web.server.ServerWebExchange; +import org.springframework.web.server.WebFilter; +import org.springframework.web.server.WebFilterChain; +import reactor.core.publisher.Mono; + +class IndexRewriteFilter implements WebFilter { + + @Override + public Mono filter(ServerWebExchange serverWebExchange, WebFilterChain webFilterChain) { + ServerHttpRequest request = serverWebExchange.getRequest(); + if (request.getURI() + .getPath() + .equals("/")) { + return webFilterChain.filter(serverWebExchange.mutate() + .request(builder -> builder.method(request.getMethod()) + .contextPath(request.getPath() + .toString()) + .path("/test")) + .build()); + } + return webFilterChain.filter(serverWebExchange); + } + +} diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/Event.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/Event.java new file mode 100644 index 0000000000..90f83a566f --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/Event.java @@ -0,0 +1,11 @@ +package com.baeldung.reactive.websocket; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class Event { + private String eventId; + private String eventDt; +} diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveJavaClientWebSocket.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveJavaClientWebSocket.java new file mode 100644 index 0000000000..c9a333c044 --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveJavaClientWebSocket.java @@ -0,0 +1,26 @@ +package com.baeldung.reactive.websocket; + +import java.net.URI; +import java.time.Duration; +import org.springframework.web.reactive.socket.WebSocketMessage; +import org.springframework.web.reactive.socket.client.ReactorNettyWebSocketClient; +import org.springframework.web.reactive.socket.client.WebSocketClient; + +import reactor.core.publisher.Mono; + +public class ReactiveJavaClientWebSocket { + public static void main(String[] args) throws InterruptedException { + + WebSocketClient client = new ReactorNettyWebSocketClient(); + client.execute( + URI.create("ws://localhost:8080/event-emitter"), + session -> session.send( + Mono.just(session.textMessage("event-spring-reactive-client-websocket"))) + .thenMany(session.receive() + .map(WebSocketMessage::getPayloadAsText) + .log()) + .then()) + .block(Duration.ofSeconds(10L)); + } + +} diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveWebSocketApplication.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveWebSocketApplication.java new file mode 100644 index 0000000000..43b5e50387 --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveWebSocketApplication.java @@ -0,0 +1,11 @@ +package com.baeldung.reactive.websocket; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ReactiveWebSocketApplication { + public static void main(String[] args) { + SpringApplication.run(ReactiveWebSocketApplication.class, args); + } +} diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveWebSocketConfiguration.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveWebSocketConfiguration.java new file mode 100644 index 0000000000..974def5a91 --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveWebSocketConfiguration.java @@ -0,0 +1,34 @@ +package com.baeldung.reactive.websocket; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.reactive.HandlerMapping; +import org.springframework.web.reactive.handler.SimpleUrlHandlerMapping; +import org.springframework.web.reactive.socket.WebSocketHandler; +import org.springframework.web.reactive.socket.server.support.WebSocketHandlerAdapter; +import java.util.HashMap; +import java.util.Map; + +@Configuration +public class ReactiveWebSocketConfiguration { + + @Autowired + private WebSocketHandler webSocketHandler; + + @Bean + public HandlerMapping webSocketHandlerMapping() { + Map map = new HashMap<>(); + map.put("/event-emitter", webSocketHandler); + + SimpleUrlHandlerMapping handlerMapping = new SimpleUrlHandlerMapping(); + handlerMapping.setOrder(1); + handlerMapping.setUrlMap(map); + return handlerMapping; + } + + @Bean + public WebSocketHandlerAdapter handlerAdapter() { + return new WebSocketHandlerAdapter(); + } +} \ No newline at end of file diff --git a/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveWebSocketHandler.java b/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveWebSocketHandler.java new file mode 100644 index 0000000000..669c212fd3 --- /dev/null +++ b/spring-5-reactive/src/main/java/com/baeldung/reactive/websocket/ReactiveWebSocketHandler.java @@ -0,0 +1,48 @@ +package com.baeldung.reactive.websocket; + +import org.springframework.web.reactive.socket.WebSocketSession; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.socket.WebSocketHandler; +import org.springframework.web.reactive.socket.WebSocketMessage; + +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.time.Duration; +import java.time.LocalDateTime; +import java.util.UUID; + +@Component +public class ReactiveWebSocketHandler implements WebSocketHandler { + + private Flux eventFlux = Flux.generate(e -> { + Event event = new Event(UUID.randomUUID().toString(), LocalDateTime.now().toString()); + e.next(event); + }); + + private Flux intervalFlux = Flux.interval(Duration.ofMillis(1000L)).zipWith(eventFlux, (time, event) -> event); + + private ObjectMapper json = new ObjectMapper(); + + @Override + public Mono handle(WebSocketSession webSocketSession) { + + return webSocketSession.send(intervalFlux.map(event -> { + try { + String jsonEvent = json.writeValueAsString(event); + System.out.println(jsonEvent); + return jsonEvent; + } catch (JsonProcessingException e) { + e.printStackTrace(); + return ""; + } + }).map(webSocketSession::textMessage)) + + .and(webSocketSession.receive().map(WebSocketMessage::getPayloadAsText).log()); + } + +} diff --git a/spring-5-reactive/src/main/resources/application.properties b/spring-5-reactive/src/main/resources/application.properties new file mode 100644 index 0000000000..5b9a0ae1ce --- /dev/null +++ b/spring-5-reactive/src/main/resources/application.properties @@ -0,0 +1,4 @@ +logging.level.root=INFO + +management.endpoints.web.expose=* +info.app.name=Spring Boot 2 actuator Application \ No newline at end of file diff --git a/spring-5-reactive/src/main/resources/files/hello.txt b/spring-5-reactive/src/main/resources/files/hello.txt new file mode 100644 index 0000000000..b6fc4c620b --- /dev/null +++ b/spring-5-reactive/src/main/resources/files/hello.txt @@ -0,0 +1 @@ +hello \ No newline at end of file diff --git a/spring-5-reactive/src/main/resources/files/test/test.txt b/spring-5-reactive/src/main/resources/files/test/test.txt new file mode 100644 index 0000000000..30d74d2584 --- /dev/null +++ b/spring-5-reactive/src/main/resources/files/test/test.txt @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/spring-5-reactive/src/main/resources/static/client-websocket.html b/spring-5-reactive/src/main/resources/static/client-websocket.html new file mode 100644 index 0000000000..3f840e8bd4 --- /dev/null +++ b/spring-5-reactive/src/main/resources/static/client-websocket.html @@ -0,0 +1,34 @@ + + + + +Baeldung: Spring 5 Reactive Client WebSocket (Browser) + + + +
+ + + \ No newline at end of file diff --git a/spring-5-reactive/src/main/webapp/WEB-INF/web.xml b/spring-5-reactive/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..bfcf43dad2 --- /dev/null +++ b/spring-5-reactive/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,21 @@ + + + + Spring Functional Application + + + functional + com.baeldung.functional.RootServlet + 1 + true + + + functional + / + + + + \ No newline at end of file diff --git a/spring-5-reactive/src/test/java/com/baeldung/reactive/FluxUnitTest.java b/spring-5-reactive/src/test/java/com/baeldung/reactive/FluxUnitTest.java new file mode 100644 index 0000000000..bad5fc5f22 --- /dev/null +++ b/spring-5-reactive/src/test/java/com/baeldung/reactive/FluxUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.reactive; + +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; +import static org.junit.Assert.assertNotNull; + +import java.time.Duration; +import java.util.Random; + +import org.junit.jupiter.api.Test; + +import com.baeldung.reactive.model.Foo; + +import reactor.core.publisher.Flux; + +public class FluxUnitTest { + + @Test + public void whenFluxIsConstructed_thenCorrect() { + final Flux flux = Flux. create(fluxSink -> { + while (true) { + fluxSink.next(new Foo(new Random().nextLong(), randomAlphabetic(6))); + } + }).sample(Duration.ofSeconds(1)).log(); + + flux.subscribe(); + + assertNotNull(flux); + } + +} diff --git a/spring-boot-actuator/src/test/java/org/baeldung/config/ActuatorInfoIntegrationTest.java b/spring-5-reactive/src/test/java/com/baeldung/reactive/actuator/ActuatorInfoIntegrationTest.java similarity index 56% rename from spring-boot-actuator/src/test/java/org/baeldung/config/ActuatorInfoIntegrationTest.java rename to spring-5-reactive/src/test/java/com/baeldung/reactive/actuator/ActuatorInfoIntegrationTest.java index 0b5e3b3eef..3020e86723 100644 --- a/spring-boot-actuator/src/test/java/org/baeldung/config/ActuatorInfoIntegrationTest.java +++ b/spring-5-reactive/src/test/java/com/baeldung/reactive/actuator/ActuatorInfoIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.config; +package com.baeldung.reactive.actuator; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,26 +7,30 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; -import static org.junit.Assert.*; + +import com.baeldung.reactive.Spring5ReactiveApplication; + import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; + +import static org.junit.Assert.assertEquals; @RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = MainConfig.class) -@TestPropertySource(properties = { "security.basic.enabled=false" }) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Spring5ReactiveApplication.class) public class ActuatorInfoIntegrationTest { @Autowired private TestRestTemplate restTemplate; @Test - public void whenGetInfo_thenAdditionalInfoReturned() throws IOException { - final String expectedResponse = new String(Files.readAllBytes(Paths.get("src/test/resources/expectedResponse.json"))); - final ResponseEntity responseEntity = this.restTemplate.getForEntity("/info", String.class); + public void whenGetInfo_thenReturns200() throws IOException { + final ResponseEntity responseEntity = this.restTemplate.getForEntity("/actuator/info", String.class); + assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); + } + + @Test + public void whenFeatures_thenReturns200() throws IOException { + final ResponseEntity responseEntity = this.restTemplate.getForEntity("/actuator/features", String.class); assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); - assertEquals(expectedResponse, responseEntity.getBody()); } } \ No newline at end of file diff --git a/spring-5/src/test/java/com/baeldung/functional/ExploreSpring5URLPatternUsingRouterFunctionsTest.java b/spring-5-reactive/src/test/java/com/baeldung/reactive/urlmatch/ExploreSpring5URLPatternUsingRouterFunctionsIntegrationTest.java similarity index 93% rename from spring-5/src/test/java/com/baeldung/functional/ExploreSpring5URLPatternUsingRouterFunctionsTest.java rename to spring-5-reactive/src/test/java/com/baeldung/reactive/urlmatch/ExploreSpring5URLPatternUsingRouterFunctionsIntegrationTest.java index 7a38fa697f..21ba11616d 100644 --- a/spring-5/src/test/java/com/baeldung/functional/ExploreSpring5URLPatternUsingRouterFunctionsTest.java +++ b/spring-5-reactive/src/test/java/com/baeldung/reactive/urlmatch/ExploreSpring5URLPatternUsingRouterFunctionsIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.functional; +package com.baeldung.reactive.urlmatch; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -6,7 +6,9 @@ import org.junit.Test; import org.springframework.boot.web.server.WebServer; import org.springframework.test.web.reactive.server.WebTestClient; -public class ExploreSpring5URLPatternUsingRouterFunctionsTest { +import com.baeldung.reactive.urlmatch.ExploreSpring5URLPatternUsingRouterFunctions; + +public class ExploreSpring5URLPatternUsingRouterFunctionsIntegrationTest { private static WebTestClient client; private static WebServer server; diff --git a/spring-5/src/test/java/com/baeldung/web/PathPatternsUsingHandlerMethodIntegrationTest.java b/spring-5-reactive/src/test/java/com/baeldung/reactive/urlmatch/PathPatternsUsingHandlerMethodIntegrationTest.java similarity index 92% rename from spring-5/src/test/java/com/baeldung/web/PathPatternsUsingHandlerMethodIntegrationTest.java rename to spring-5-reactive/src/test/java/com/baeldung/reactive/urlmatch/PathPatternsUsingHandlerMethodIntegrationTest.java index c2ed8ff071..9f31608ff7 100644 --- a/spring-5/src/test/java/com/baeldung/web/PathPatternsUsingHandlerMethodIntegrationTest.java +++ b/spring-5-reactive/src/test/java/com/baeldung/reactive/urlmatch/PathPatternsUsingHandlerMethodIntegrationTest.java @@ -1,6 +1,5 @@ -package com.baeldung.web; +package com.baeldung.reactive.urlmatch; -import com.baeldung.Spring5Application; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -8,8 +7,11 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.reactive.server.WebTestClient; +import com.baeldung.reactive.Spring5ReactiveApplication; +import com.baeldung.reactive.controller.PathPatternController; + @RunWith(SpringRunner.class) -@SpringBootTest(classes = Spring5Application.class) +@SpringBootTest(classes = Spring5ReactiveApplication.class) public class PathPatternsUsingHandlerMethodIntegrationTest { private static WebTestClient client; diff --git a/spring-5-security/README.md b/spring-5-security/README.md new file mode 100644 index 0000000000..1c9fad65e4 --- /dev/null +++ b/spring-5-security/README.md @@ -0,0 +1,3 @@ +## Relevant articles: + +- [Spring Security 5 -OAuth2 Login](http://www.baeldung.com/spring-security-5-oauth2-login) diff --git a/spring-5-security/pom.xml b/spring-5-security/pom.xml new file mode 100644 index 0000000000..0a1d1f5df0 --- /dev/null +++ b/spring-5-security/pom.xml @@ -0,0 +1,114 @@ + + 4.0.0 + com.baeldung + spring-5-security + 0.0.1-SNAPSHOT + jar + + spring-5-security + spring 5 security sample project + + + org.springframework.boot + spring-boot-starter-parent + 2.0.0.M7 + + + + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.thymeleaf.extras + thymeleaf-extras-springsecurity4 + + + + + org.springframework.security + spring-security-oauth2-client + + + org.springframework.security + spring-security-oauth2-jose + + + + org.springframework + spring-test + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.security + spring-security-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.apache.maven.plugins + maven-surefire-plugin + + 3 + true + methods + true + + **/*IntegrationTest.java + **/*LiveTest.java + + + + + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + UTF-8 + UTF-8 + 1.8 + + \ No newline at end of file diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomAuthenticationFilter.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomAuthenticationFilter.java new file mode 100644 index 0000000000..2a5c5f0368 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomAuthenticationFilter.java @@ -0,0 +1,50 @@ +package com.baeldung.loginextrafieldscustom; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.security.authentication.AuthenticationServiceException; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +public class CustomAuthenticationFilter extends UsernamePasswordAuthenticationFilter { + + public static final String SPRING_SECURITY_FORM_DOMAIN_KEY = "domain"; + + @Override + public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) + throws AuthenticationException { + + if (!request.getMethod().equals("POST")) { + throw new AuthenticationServiceException("Authentication method not supported: " + + request.getMethod()); + } + + CustomAuthenticationToken authRequest = getAuthRequest(request); + setDetails(request, authRequest); + return this.getAuthenticationManager().authenticate(authRequest); + } + + private CustomAuthenticationToken getAuthRequest(HttpServletRequest request) { + String username = obtainUsername(request); + String password = obtainPassword(request); + String domain = obtainDomain(request); + + if (username == null) { + username = ""; + } + if (password == null) { + password = ""; + } + if (domain == null) { + domain = ""; + } + + return new CustomAuthenticationToken(username, password, domain); + } + + private String obtainDomain(HttpServletRequest request) { + return request.getParameter(SPRING_SECURITY_FORM_DOMAIN_KEY); + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomAuthenticationToken.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomAuthenticationToken.java new file mode 100644 index 0000000000..50995169a1 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomAuthenticationToken.java @@ -0,0 +1,28 @@ +package com.baeldung.loginextrafieldscustom; + +import java.util.Collection; + +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.GrantedAuthority; + +public class CustomAuthenticationToken extends UsernamePasswordAuthenticationToken { + + private String domain; + + public CustomAuthenticationToken(Object principal, Object credentials, String domain) { + super(principal, credentials); + this.domain = domain; + super.setAuthenticated(false); + } + + public CustomAuthenticationToken(Object principal, Object credentials, String domain, + Collection authorities) { + super(principal, credentials, authorities); + this.domain = domain; + super.setAuthenticated(true); // must use super, as we override + } + + public String getDomain() { + return this.domain; + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserDetailsAuthenticationProvider.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserDetailsAuthenticationProvider.java new file mode 100644 index 0000000000..693900d843 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserDetailsAuthenticationProvider.java @@ -0,0 +1,92 @@ +package com.baeldung.loginextrafieldscustom; + +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.authentication.InternalAuthenticationServiceException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.util.Assert; + +public class CustomUserDetailsAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider { + + /** + * The plaintext password used to perform + * PasswordEncoder#matches(CharSequence, String)} on when the user is + * not found to avoid SEC-2056. + */ + private static final String USER_NOT_FOUND_PASSWORD = "userNotFoundPassword"; + + private PasswordEncoder passwordEncoder; + private CustomUserDetailsService userDetailsService; + + /** + * The password used to perform + * {@link PasswordEncoder#matches(CharSequence, String)} on when the user is + * not found to avoid SEC-2056. This is necessary, because some + * {@link PasswordEncoder} implementations will short circuit if the password is not + * in a valid format. + */ + private String userNotFoundEncodedPassword; + + public CustomUserDetailsAuthenticationProvider(PasswordEncoder passwordEncoder, CustomUserDetailsService userDetailsService) { + this.passwordEncoder = passwordEncoder; + this.userDetailsService = userDetailsService; + } + + @Override + protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken authentication) + throws AuthenticationException { + + if (authentication.getCredentials() == null) { + logger.debug("Authentication failed: no credentials provided"); + throw new BadCredentialsException( + messages.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials")); + } + + String presentedPassword = authentication.getCredentials() + .toString(); + + if (!passwordEncoder.matches(presentedPassword, userDetails.getPassword())) { + logger.debug("Authentication failed: password does not match stored value"); + throw new BadCredentialsException( + messages.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials")); + } + } + + @Override + protected void doAfterPropertiesSet() throws Exception { + Assert.notNull(this.userDetailsService, "A UserDetailsService must be set"); + this.userNotFoundEncodedPassword = this.passwordEncoder.encode(USER_NOT_FOUND_PASSWORD); + } + + @Override + protected UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken authentication) + throws AuthenticationException { + CustomAuthenticationToken auth = (CustomAuthenticationToken) authentication; + UserDetails loadedUser; + + try { + loadedUser = this.userDetailsService.loadUserByUsernameAndDomain(auth.getPrincipal() + .toString(), auth.getDomain()); + } catch (UsernameNotFoundException notFound) { + if (authentication.getCredentials() != null) { + String presentedPassword = authentication.getCredentials() + .toString(); + passwordEncoder.matches(presentedPassword, userNotFoundEncodedPassword); + } + throw notFound; + } catch (Exception repositoryProblem) { + throw new InternalAuthenticationServiceException(repositoryProblem.getMessage(), repositoryProblem); + } + + if (loadedUser == null) { + throw new InternalAuthenticationServiceException("UserDetailsService returned null, " + + "which is an interface contract violation"); + } + return loadedUser; + } + +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserDetailsService.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserDetailsService.java new file mode 100644 index 0000000000..358129173d --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserDetailsService.java @@ -0,0 +1,10 @@ +package com.baeldung.loginextrafieldscustom; + +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UsernameNotFoundException; + +public interface CustomUserDetailsService { + + UserDetails loadUserByUsernameAndDomain(String username, String domain) throws UsernameNotFoundException; + +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserDetailsServiceImpl.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserDetailsServiceImpl.java new file mode 100644 index 0000000000..ea979e2fab --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserDetailsServiceImpl.java @@ -0,0 +1,30 @@ +package com.baeldung.loginextrafieldscustom; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +@Service("userDetailsService") +public class CustomUserDetailsServiceImpl implements CustomUserDetailsService { + + private UserRepository userRepository; + + public CustomUserDetailsServiceImpl(UserRepository userRepository) { + this.userRepository = userRepository; + } + + @Override + public UserDetails loadUserByUsernameAndDomain(String username, String domain) throws UsernameNotFoundException { + if (StringUtils.isAnyBlank(username, domain)) { + throw new UsernameNotFoundException("Username and domain must be provided"); + } + User user = userRepository.findUser(username, domain); + if (user == null) { + throw new UsernameNotFoundException( + String.format("Username not found for domain, username=%s, domain=%s", + username, domain)); + } + return user; + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserRepository.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserRepository.java new file mode 100644 index 0000000000..428c8bf532 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/CustomUserRepository.java @@ -0,0 +1,26 @@ +package com.baeldung.loginextrafieldscustom; + +import java.util.ArrayList; +import java.util.Collection; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.stereotype.Repository; + +@Repository("userRepository") +public class CustomUserRepository implements UserRepository { + + @Override + public User findUser(String username, String domain) { + if (StringUtils.isAnyBlank(username, domain)) { + return null; + } else { + Collection authorities = new ArrayList<>(); + User user = new User(username, domain, + "$2a$10$U3GhSMpsMSOE8Kqsbn58/edxDBKlVuYMh7qk/7ErApYFjJzi2VG5K", true, + true, true, true, authorities); + return user; + } + } + +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/ExtraLoginFieldsApplication.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/ExtraLoginFieldsApplication.java new file mode 100644 index 0000000000..0cf934f288 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/ExtraLoginFieldsApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.loginextrafieldscustom; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ExtraLoginFieldsApplication { + + public static void main(String[] args) { + SpringApplication.run(ExtraLoginFieldsApplication.class, args); + } + +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/SecurityConfig.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/SecurityConfig.java new file mode 100644 index 0000000000..def85ab978 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/SecurityConfig.java @@ -0,0 +1,62 @@ +package com.baeldung.loginextrafieldscustom; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.PropertySource; +import org.springframework.security.authentication.AuthenticationProvider; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +@EnableWebSecurity +@PropertySource("classpath:/application-extrafields.properties") +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + private CustomUserDetailsService userDetailsService; + + @Override + protected void configure(HttpSecurity http) throws Exception { + + http + .addFilterBefore(authenticationFilter(), UsernamePasswordAuthenticationFilter.class) + .authorizeRequests() + .antMatchers("/css/**", "/index").permitAll() + .antMatchers("/user/**").authenticated() + .and() + .formLogin().loginPage("/login") + .and() + .logout() + .logoutUrl("/logout"); + } + + public CustomAuthenticationFilter authenticationFilter() throws Exception { + CustomAuthenticationFilter filter = new CustomAuthenticationFilter(); + filter.setAuthenticationManager(authenticationManagerBean()); + filter.setAuthenticationFailureHandler(failureHandler()); + return filter; + } + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth.authenticationProvider(authProvider()); + } + + public AuthenticationProvider authProvider() { + CustomUserDetailsAuthenticationProvider provider + = new CustomUserDetailsAuthenticationProvider(passwordEncoder(), userDetailsService); + return provider; + } + + public SimpleUrlAuthenticationFailureHandler failureHandler() { + return new SimpleUrlAuthenticationFailureHandler("/login?error=true"); + } + + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/User.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/User.java new file mode 100644 index 0000000000..aa03f15b6a --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/User.java @@ -0,0 +1,23 @@ +package com.baeldung.loginextrafieldscustom; + +import java.util.Collection; + +import org.springframework.security.core.GrantedAuthority; + +public class User extends org.springframework.security.core.userdetails.User { + + private static final long serialVersionUID = 1L; + + private String domain; + + public User(String username, String domain, String password, boolean enabled, + boolean accountNonExpired, boolean credentialsNonExpired, + boolean accountNonLocked, Collection authorities) { + super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); + this.domain = domain; + } + + public String getDomain() { + return domain; + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/UserRepository.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/UserRepository.java new file mode 100644 index 0000000000..e2358e055b --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/UserRepository.java @@ -0,0 +1,7 @@ +package com.baeldung.loginextrafieldscustom; + +public interface UserRepository { + + public User findUser(String username, String domain); + +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/WebController.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/WebController.java new file mode 100644 index 0000000000..b5e0b511ac --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldscustom/WebController.java @@ -0,0 +1,51 @@ +package com.baeldung.loginextrafieldscustom; + +import java.util.Optional; + +import org.springframework.security.authentication.AnonymousAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class WebController { + + @RequestMapping("/") + public String root() { + return "redirect:/index"; + } + + @RequestMapping("/index") + public String index(Model model) { + getDomain().ifPresent(d -> { + model.addAttribute("domain", d); + }); + return "index"; + } + + @RequestMapping("/user/index") + public String userIndex(Model model) { + getDomain().ifPresent(d -> { + model.addAttribute("domain", d); + }); + return "user/index"; + } + + @RequestMapping("/login") + public String login() { + return "login"; + } + + private Optional getDomain() { + Authentication auth = SecurityContextHolder.getContext() + .getAuthentication(); + String domain = null; + if (auth != null && !auth.getClass().equals(AnonymousAuthenticationToken.class)) { + User user = (User) auth.getPrincipal(); + domain = user.getDomain(); + } + return Optional.ofNullable(domain); + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/ExtraLoginFieldsApplication.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/ExtraLoginFieldsApplication.java new file mode 100644 index 0000000000..c82a13de1a --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/ExtraLoginFieldsApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.loginextrafieldssimple; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ExtraLoginFieldsApplication { + + public static void main(String[] args) { + SpringApplication.run(ExtraLoginFieldsApplication.class, args); + } + +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SecurityConfig.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SecurityConfig.java new file mode 100644 index 0000000000..d8c5ea8147 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SecurityConfig.java @@ -0,0 +1,65 @@ +package com.baeldung.loginextrafieldssimple; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.PropertySource; +import org.springframework.security.authentication.AuthenticationProvider; +import org.springframework.security.authentication.dao.DaoAuthenticationProvider; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +@EnableWebSecurity +@PropertySource("classpath:/application-extrafields.properties") +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + private UserDetailsService userDetailsService; + + @Override + protected void configure(HttpSecurity http) throws Exception { + + http + .addFilterBefore(authenticationFilter(), UsernamePasswordAuthenticationFilter.class) + .authorizeRequests() + .antMatchers("/css/**", "/index").permitAll() + .antMatchers("/user/**").authenticated() + .and() + .formLogin().loginPage("/login") + .and() + .logout() + .logoutUrl("/logout"); + } + + public SimpleAuthenticationFilter authenticationFilter() throws Exception { + SimpleAuthenticationFilter filter = new SimpleAuthenticationFilter(); + filter.setAuthenticationManager(authenticationManagerBean()); + filter.setAuthenticationFailureHandler(failureHandler()); + return filter; + } + + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + auth.authenticationProvider(authProvider()); + } + + public AuthenticationProvider authProvider() { + DaoAuthenticationProvider provider = new DaoAuthenticationProvider(); + provider.setUserDetailsService(userDetailsService); + provider.setPasswordEncoder(passwordEncoder()); + return provider; + } + + public SimpleUrlAuthenticationFailureHandler failureHandler() { + return new SimpleUrlAuthenticationFailureHandler("/login?error=true"); + } + + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SimpleAuthenticationFilter.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SimpleAuthenticationFilter.java new file mode 100644 index 0000000000..9dcb524157 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SimpleAuthenticationFilter.java @@ -0,0 +1,54 @@ +package com.baeldung.loginextrafieldssimple; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.security.authentication.AuthenticationServiceException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +public class SimpleAuthenticationFilter extends UsernamePasswordAuthenticationFilter { + + public static final String SPRING_SECURITY_FORM_DOMAIN_KEY = "domain"; + + @Override + public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) + throws AuthenticationException { + + if (!request.getMethod() + .equals("POST")) { + throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod()); + } + + UsernamePasswordAuthenticationToken authRequest = getAuthRequest(request); + setDetails(request, authRequest); + return this.getAuthenticationManager() + .authenticate(authRequest); + } + + private UsernamePasswordAuthenticationToken getAuthRequest(HttpServletRequest request) { + String username = obtainUsername(request); + String password = obtainPassword(request); + String domain = obtainDomain(request); + + if (username == null) { + username = ""; + } + if (password == null) { + password = ""; + } + if (domain == null) { + domain = ""; + } + + String usernameDomain = String.format("%s%s%s", username.trim(), + String.valueOf(Character.LINE_SEPARATOR), domain); + return new UsernamePasswordAuthenticationToken(usernameDomain, password); + } + + private String obtainDomain(HttpServletRequest request) { + return request.getParameter(SPRING_SECURITY_FORM_DOMAIN_KEY); + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SimpleUserDetailsService.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SimpleUserDetailsService.java new file mode 100644 index 0000000000..2fad50ad01 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SimpleUserDetailsService.java @@ -0,0 +1,32 @@ +package com.baeldung.loginextrafieldssimple; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +@Service("userDetailsService") +public class SimpleUserDetailsService implements UserDetailsService { + + private UserRepository userRepository; + + public SimpleUserDetailsService(UserRepository userRepository) { + this.userRepository = userRepository; + } + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + String[] usernameAndDomain = StringUtils.split(username, String.valueOf(Character.LINE_SEPARATOR)); + if (usernameAndDomain == null || usernameAndDomain.length != 2) { + throw new UsernameNotFoundException("Username and domain must be provided"); + } + User user = userRepository.findUser(usernameAndDomain[0], usernameAndDomain[1]); + if (user == null) { + throw new UsernameNotFoundException( + String.format("Username not found for domain, username=%s, domain=%s", + usernameAndDomain[0], usernameAndDomain[1])); + } + return user; + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SimpleUserRepository.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SimpleUserRepository.java new file mode 100644 index 0000000000..e8aaa774a1 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/SimpleUserRepository.java @@ -0,0 +1,26 @@ +package com.baeldung.loginextrafieldssimple; + +import java.util.ArrayList; +import java.util.Collection; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.stereotype.Repository; + +@Repository("userRepository") +public class SimpleUserRepository implements UserRepository { + + @Override + public User findUser(String username, String domain) { + if (StringUtils.isAnyBlank(username, domain)) { + return null; + } else { + Collection authorities = new ArrayList<>(); + User user = new User(username, domain, + "$2a$10$U3GhSMpsMSOE8Kqsbn58/edxDBKlVuYMh7qk/7ErApYFjJzi2VG5K", true, + true, true, true, authorities); + return user; + } + } + +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/User.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/User.java new file mode 100644 index 0000000000..b76da65638 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/User.java @@ -0,0 +1,21 @@ +package com.baeldung.loginextrafieldssimple; + +import java.util.Collection; + +import org.springframework.security.core.GrantedAuthority; + +public class User extends org.springframework.security.core.userdetails.User { + + private String domain; + + public User(String username, String domain, String password, boolean enabled, + boolean accountNonExpired, boolean credentialsNonExpired, + boolean accountNonLocked, Collection authorities) { + super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); + this.domain = domain; + } + + public String getDomain() { + return domain; + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/UserRepository.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/UserRepository.java new file mode 100644 index 0000000000..919e611b9c --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/UserRepository.java @@ -0,0 +1,7 @@ +package com.baeldung.loginextrafieldssimple; + +public interface UserRepository { + + public User findUser(String username, String domain); + +} diff --git a/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/WebController.java b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/WebController.java new file mode 100644 index 0000000000..1b17de7bec --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/loginextrafieldssimple/WebController.java @@ -0,0 +1,51 @@ +package com.baeldung.loginextrafieldssimple; + +import java.util.Optional; + +import org.springframework.security.authentication.AnonymousAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class WebController { + + @RequestMapping("/") + public String root() { + return "redirect:/index"; + } + + @RequestMapping("/index") + public String index(Model model) { + getDomain().ifPresent(d -> { + model.addAttribute("domain", d); + }); + return "index"; + } + + @RequestMapping("/user/index") + public String userIndex(Model model) { + getDomain().ifPresent(d -> { + model.addAttribute("domain", d); + }); + return "user/index"; + } + + @RequestMapping("/login") + public String login() { + return "login"; + } + + private Optional getDomain() { + Authentication auth = SecurityContextHolder.getContext() + .getAuthentication(); + String domain = null; + if (auth != null && !auth.getClass().equals(AnonymousAuthenticationToken.class)) { + User user = (User) auth.getPrincipal(); + domain = user.getDomain(); + } + return Optional.ofNullable(domain); + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/oauth2/LoginController.java b/spring-5-security/src/main/java/com/baeldung/oauth2/LoginController.java new file mode 100644 index 0000000000..5d6c13bb0e --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/oauth2/LoginController.java @@ -0,0 +1,75 @@ +package com.baeldung.oauth2; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.ResolvableType; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.security.oauth2.client.OAuth2AuthorizedClient; +import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService; +import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken; +import org.springframework.security.oauth2.client.registration.ClientRegistration; +import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.client.RestTemplate; + +@Controller +public class LoginController { + + private static final String authorizationRequestBaseUri = "oauth2/authorize-client"; + Map oauth2AuthenticationUrls = new HashMap<>(); + + @Autowired + private ClientRegistrationRepository clientRegistrationRepository; + @Autowired + private OAuth2AuthorizedClientService authorizedClientService; + + @GetMapping("/oauth_login") + public String getLoginPage(Model model) { + Iterable clientRegistrations = null; + ResolvableType type = ResolvableType.forInstance(clientRegistrationRepository) + .as(Iterable.class); + if (type != ResolvableType.NONE && ClientRegistration.class.isAssignableFrom(type.resolveGenerics()[0])) { + clientRegistrations = (Iterable) clientRegistrationRepository; + } + + clientRegistrations.forEach(registration -> oauth2AuthenticationUrls.put(registration.getClientName(), authorizationRequestBaseUri + "/" + registration.getRegistrationId())); + model.addAttribute("urls", oauth2AuthenticationUrls); + + return "oauth_login"; + } + + @GetMapping("/loginSuccess") + public String getLoginInfo(Model model, OAuth2AuthenticationToken authentication) { + + OAuth2AuthorizedClient client = authorizedClientService.loadAuthorizedClient(authentication.getAuthorizedClientRegistrationId(), authentication.getName()); + + String userInfoEndpointUri = client.getClientRegistration() + .getProviderDetails() + .getUserInfoEndpoint() + .getUri(); + + if (!StringUtils.isEmpty(userInfoEndpointUri)) { + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.AUTHORIZATION, "Bearer " + client.getAccessToken() + .getTokenValue()); + + HttpEntity entity = new HttpEntity("", headers); + + ResponseEntity response = restTemplate.exchange(userInfoEndpointUri, HttpMethod.GET, entity, Map.class); + Map userAttributes = response.getBody(); + model.addAttribute("name", userAttributes.get("name")); + } + + return "loginSuccess"; + } + +} diff --git a/spring-5-security/src/main/java/com/baeldung/oauth2/MvcConfig.java b/spring-5-security/src/main/java/com/baeldung/oauth2/MvcConfig.java new file mode 100644 index 0000000000..07d783b63d --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/oauth2/MvcConfig.java @@ -0,0 +1,15 @@ +package com.baeldung.oauth2; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class MvcConfig implements WebMvcConfigurer { + + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("securedPage"); + registry.addViewController("loginFailure"); + } +} diff --git a/spring-5-security/src/main/java/com/baeldung/oauth2/SecurityConfig.java b/spring-5-security/src/main/java/com/baeldung/oauth2/SecurityConfig.java new file mode 100644 index 0000000000..b45f325767 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/oauth2/SecurityConfig.java @@ -0,0 +1,102 @@ +package com.baeldung.oauth2; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.oauth2.client.CommonOAuth2Provider; +import org.springframework.security.oauth2.client.endpoint.NimbusAuthorizationCodeTokenResponseClient; +import org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient; +import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequest; +import org.springframework.security.oauth2.client.registration.ClientRegistration; +import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; +import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository; +import org.springframework.security.oauth2.client.web.AuthorizationRequestRepository; +import org.springframework.security.oauth2.client.web.HttpSessionOAuth2AuthorizationRequestRepository; +import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest; + +@Configuration +@PropertySource("application-oauth2.properties") +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests() + .antMatchers("/oauth_login", "/loginFailure", "/") + .permitAll() + .anyRequest() + .authenticated() + .and() + .oauth2Login() + .loginPage("/oauth_login") + .authorizationEndpoint() + .baseUri("/oauth2/authorize-client") + .authorizationRequestRepository(authorizationRequestRepository()) + .and() + .tokenEndpoint() + .accessTokenResponseClient(accessTokenResponseClient()) + .and() + .defaultSuccessUrl("/loginSuccess") + .failureUrl("/loginFailure"); + } + + @Bean + public AuthorizationRequestRepository authorizationRequestRepository() { + return new HttpSessionOAuth2AuthorizationRequestRepository(); + } + + @Bean + public OAuth2AccessTokenResponseClient accessTokenResponseClient() { + return new NimbusAuthorizationCodeTokenResponseClient(); + } + + + // additional configuration for non-Spring Boot projects + private static List clients = Arrays.asList("google", "facebook"); + + //@Bean + public ClientRegistrationRepository clientRegistrationRepository() { + List registrations = clients.stream() + .map(c -> getRegistration(c)) + .filter(registration -> registration != null) + .collect(Collectors.toList()); + + return new InMemoryClientRegistrationRepository(registrations); + } + + private static String CLIENT_PROPERTY_KEY = "spring.security.oauth2.client.registration."; + + @Autowired + private Environment env; + + private ClientRegistration getRegistration(String client) { + String clientId = env.getProperty(CLIENT_PROPERTY_KEY + client + ".client-id"); + + if (clientId == null) { + return null; + } + + String clientSecret = env.getProperty(CLIENT_PROPERTY_KEY + client + ".client-secret"); + if (client.equals("google")) { + return CommonOAuth2Provider.GOOGLE.getBuilder(client) + .clientId(clientId) + .clientSecret(clientSecret) + .build(); + } + if (client.equals("facebook")) { + return CommonOAuth2Provider.FACEBOOK.getBuilder(client) + .clientId(clientId) + .clientSecret(clientSecret) + .build(); + } + return null; + } + +} diff --git a/spring-5-security/src/main/java/com/baeldung/oauth2/SpringOAuthApplication.java b/spring-5-security/src/main/java/com/baeldung/oauth2/SpringOAuthApplication.java new file mode 100644 index 0000000000..557c23b368 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/oauth2/SpringOAuthApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.oauth2; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringOAuthApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringOAuthApplication.class, args); + } + +} diff --git a/spring-5-security/src/main/resources/application-extrafields.properties b/spring-5-security/src/main/resources/application-extrafields.properties new file mode 100644 index 0000000000..ab4134ce3e --- /dev/null +++ b/spring-5-security/src/main/resources/application-extrafields.properties @@ -0,0 +1 @@ +spring.thymeleaf.prefix = classpath:/templatesextrafields/ \ No newline at end of file diff --git a/spring-5-security/src/main/resources/application-oauth2.properties b/spring-5-security/src/main/resources/application-oauth2.properties new file mode 100644 index 0000000000..5365bf8542 --- /dev/null +++ b/spring-5-security/src/main/resources/application-oauth2.properties @@ -0,0 +1,5 @@ +spring.security.oauth2.client.registration.google.client-id=368238083842-3d4gc7p54rs6bponn0qhn4nmf6apf24a.apps.googleusercontent.com +spring.security.oauth2.client.registration.google.client-secret=2RM2QkEaf3A8-iCNqSfdG8wP + +spring.security.oauth2.client.registration.facebook.client-id=151640435578187 +spring.security.oauth2.client.registration.facebook.client-secret=3724fb293d401245b1ce7b2d70e97571 \ No newline at end of file diff --git a/spring-5-security/src/main/resources/application.properties b/spring-5-security/src/main/resources/application.properties new file mode 100644 index 0000000000..ccec014c2b --- /dev/null +++ b/spring-5-security/src/main/resources/application.properties @@ -0,0 +1,3 @@ +server.port=8081 + +logging.level.root=INFO \ No newline at end of file diff --git a/spring-5-security/src/main/resources/static/css/main.css b/spring-5-security/src/main/resources/static/css/main.css new file mode 100644 index 0000000000..febc353af7 --- /dev/null +++ b/spring-5-security/src/main/resources/static/css/main.css @@ -0,0 +1,8 @@ +p.error { + font-weight: bold; + color: red; +} + +div.logout { + margin-right: 2em;; +} diff --git a/spring-5-security/src/main/resources/templates/index.html b/spring-5-security/src/main/resources/templates/index.html new file mode 100644 index 0000000000..4216d74037 --- /dev/null +++ b/spring-5-security/src/main/resources/templates/index.html @@ -0,0 +1,11 @@ + + + + Home + + + + Home + Welcome! + + \ No newline at end of file diff --git a/spring-5-security/src/main/resources/templates/loginFailure.html b/spring-5-security/src/main/resources/templates/loginFailure.html new file mode 100644 index 0000000000..75007a9aec --- /dev/null +++ b/spring-5-security/src/main/resources/templates/loginFailure.html @@ -0,0 +1,10 @@ + + + + Login Failure + + + + Login Failure + + \ No newline at end of file diff --git a/spring-5-security/src/main/resources/templates/loginSuccess.html b/spring-5-security/src/main/resources/templates/loginSuccess.html new file mode 100644 index 0000000000..3923297d03 --- /dev/null +++ b/spring-5-security/src/main/resources/templates/loginSuccess.html @@ -0,0 +1,16 @@ + + + + Login Success + + + + +

+
+ Welcome, user! +
+

+ + \ No newline at end of file diff --git a/spring-5-security/src/main/resources/templates/oauth_login.html b/spring-5-security/src/main/resources/templates/oauth_login.html new file mode 100644 index 0000000000..7017d2a75c --- /dev/null +++ b/spring-5-security/src/main/resources/templates/oauth_login.html @@ -0,0 +1,22 @@ + + + + +Oauth2 Login + + + + +
+
+

Login with:

+
+

+ Client +

+
+
+
+ + \ No newline at end of file diff --git a/spring-5-security/src/main/resources/templates/securedPage.html b/spring-5-security/src/main/resources/templates/securedPage.html new file mode 100644 index 0000000000..8fb5986a36 --- /dev/null +++ b/spring-5-security/src/main/resources/templates/securedPage.html @@ -0,0 +1,10 @@ + + + + +Secured Page + + +Secured Page - Welcome + + \ No newline at end of file diff --git a/spring-5-security/src/main/resources/templatesextrafields/index.html b/spring-5-security/src/main/resources/templatesextrafields/index.html new file mode 100644 index 0000000000..37833ff0d2 --- /dev/null +++ b/spring-5-security/src/main/resources/templatesextrafields/index.html @@ -0,0 +1,32 @@ + + + + Spring Security with Extra Fields + + + + + + + + + +
+
+

Logged in: | Some Domain +

+
+
+ +
+
+
+ +

Hello Spring Security

+

This is an unsecured page, but you can access the secured pages after authenticating.

+ +
+ + diff --git a/spring-5-security/src/main/resources/templatesextrafields/login.html b/spring-5-security/src/main/resources/templatesextrafields/login.html new file mode 100644 index 0000000000..5c51ea3b2c --- /dev/null +++ b/spring-5-security/src/main/resources/templatesextrafields/login.html @@ -0,0 +1,36 @@ + + + + Login page + + + + + + + + + +
+ +
+ + diff --git a/spring-5-security/src/main/resources/templatesextrafields/user/index.html b/spring-5-security/src/main/resources/templatesextrafields/user/index.html new file mode 100644 index 0000000000..9c41f0e78c --- /dev/null +++ b/spring-5-security/src/main/resources/templatesextrafields/user/index.html @@ -0,0 +1,20 @@ + + + + Secured Page + + + + + + + + + +
+
+

This is a secured page!

+

Back to home page

+
+ + diff --git a/spring-5-security/src/test/java/com/baeldung/loginextrafields/AbstractExtraLoginFieldsTest.java b/spring-5-security/src/test/java/com/baeldung/loginextrafields/AbstractExtraLoginFieldsTest.java new file mode 100644 index 0000000000..30b869714f --- /dev/null +++ b/spring-5-security/src/test/java/com/baeldung/loginextrafields/AbstractExtraLoginFieldsTest.java @@ -0,0 +1,46 @@ +package com.baeldung.loginextrafields; + +import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrlPattern; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.web.FilterChainProxy; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +public abstract class AbstractExtraLoginFieldsTest { + + @Autowired + private FilterChainProxy springSecurityFilterChain; + + @Autowired + private WebApplicationContext wac; + + protected MockMvc mockMvc; + + @Before + public void setup() { + this.mockMvc = MockMvcBuilders.webAppContextSetup(wac) + .apply(springSecurity(springSecurityFilterChain)) + .build(); + } + + @Test + public void givenRootPathAccess_thenRedirectToIndex() throws Exception { + this.mockMvc.perform(get("/")) + .andExpect(status().is3xxRedirection()) + .andExpect(redirectedUrlPattern("/index*")); + } + + @Test + public void givenSecuredResource_whenAccessUnauthenticated_thenRequiresAuthentication() throws Exception { + this.mockMvc.perform(get("/user/index")) + .andExpect(status().is3xxRedirection()) + .andExpect(redirectedUrlPattern("**/login")); + } +} diff --git a/spring-5-security/src/test/java/com/baeldung/loginextrafields/LoginFieldsFullTest.java b/spring-5-security/src/test/java/com/baeldung/loginextrafields/LoginFieldsFullTest.java new file mode 100644 index 0000000000..38c219cb5e --- /dev/null +++ b/spring-5-security/src/test/java/com/baeldung/loginextrafields/LoginFieldsFullTest.java @@ -0,0 +1,72 @@ +package com.baeldung.loginextrafields; + +import static org.junit.Assert.assertEquals; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrlPattern; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import java.util.ArrayList; +import java.util.Collection; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.mock.web.MockHttpSession; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.web.context.HttpSessionSecurityContextRepository; +import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; + +import com.baeldung.loginextrafieldscustom.ExtraLoginFieldsApplication; +import com.baeldung.loginextrafieldscustom.User; + +@RunWith(SpringRunner.class) +@SpringJUnitWebConfig +@SpringBootTest(classes = ExtraLoginFieldsApplication.class) +public class LoginFieldsFullTest extends AbstractExtraLoginFieldsTest { + + @Test + public void givenAccessSecuredResource_whenAuthenticated_thenAuthHasExtraFields() throws Exception { + MockHttpServletRequestBuilder securedResourceAccess = get("/user/index"); + MvcResult unauthenticatedResult = mockMvc.perform(securedResourceAccess) + .andExpect(status().is3xxRedirection()) + .andReturn(); + + MockHttpSession session = (MockHttpSession) unauthenticatedResult.getRequest() + .getSession(); + String loginUrl = unauthenticatedResult.getResponse() + .getRedirectedUrl(); + + User user = getUser(); + + mockMvc.perform(post(loginUrl) + .param("username", user.getUsername()) + .param("password", user.getPassword()) + .param("domain", user.getDomain()) + .session(session) + .with(csrf())) + .andExpect(status().is3xxRedirection()) + .andExpect(redirectedUrlPattern("**/user/index")) + .andReturn(); + + mockMvc.perform(securedResourceAccess.session(session)) + .andExpect(status().isOk()); + + SecurityContext securityContext + = (SecurityContext) session.getAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY); + Authentication auth = securityContext.getAuthentication(); + assertEquals(((User)auth.getPrincipal()).getDomain(), user.getDomain()); + } + + private User getUser() { + Collection authorities = new ArrayList<>(); + return new User("myusername", "mydomain", "password", true, true, true, true, authorities); + } + +} diff --git a/spring-5-security/src/test/java/com/baeldung/loginextrafields/LoginFieldsSimpleTest.java b/spring-5-security/src/test/java/com/baeldung/loginextrafields/LoginFieldsSimpleTest.java new file mode 100644 index 0000000000..5c0d462772 --- /dev/null +++ b/spring-5-security/src/test/java/com/baeldung/loginextrafields/LoginFieldsSimpleTest.java @@ -0,0 +1,72 @@ +package com.baeldung.loginextrafields; + +import static org.junit.Assert.assertEquals; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrlPattern; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import java.util.ArrayList; +import java.util.Collection; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.mock.web.MockHttpSession; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.web.context.HttpSessionSecurityContextRepository; +import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MvcResult; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; + +import com.baeldung.loginextrafieldssimple.ExtraLoginFieldsApplication; +import com.baeldung.loginextrafieldssimple.User; + +@RunWith(SpringRunner.class) +@SpringJUnitWebConfig +@SpringBootTest(classes = ExtraLoginFieldsApplication.class) +public class LoginFieldsSimpleTest extends AbstractExtraLoginFieldsTest { + + @Test + public void givenAccessSecuredResource_whenAuthenticated_thenAuthHasExtraFields() throws Exception { + MockHttpServletRequestBuilder securedResourceAccess = get("/user/index"); + MvcResult unauthenticatedResult = mockMvc.perform(securedResourceAccess) + .andExpect(status().is3xxRedirection()) + .andReturn(); + + MockHttpSession session = (MockHttpSession) unauthenticatedResult.getRequest() + .getSession(); + String loginUrl = unauthenticatedResult.getResponse() + .getRedirectedUrl(); + + User user = getUser(); + + mockMvc.perform(post(loginUrl) + .param("username", user.getUsername()) + .param("password", user.getPassword()) + .param("domain", user.getDomain()) + .session(session) + .with(csrf())) + .andExpect(status().is3xxRedirection()) + .andExpect(redirectedUrlPattern("**/user/index")) + .andReturn(); + + mockMvc.perform(securedResourceAccess.session(session)) + .andExpect(status().isOk()); + + SecurityContext securityContext + = (SecurityContext) session.getAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY); + Authentication auth = securityContext.getAuthentication(); + assertEquals(((User)auth.getPrincipal()).getDomain(), user.getDomain()); + } + + private User getUser() { + Collection authorities = new ArrayList<>(); + return new User("myusername", "mydomain", "password", true, true, true, true, authorities); + } + +} diff --git a/spring-5/README.md b/spring-5/README.md index 1b65d01811..8249fe3813 100644 --- a/spring-5/README.md +++ b/spring-5/README.md @@ -11,3 +11,6 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring 5 WebClient](http://www.baeldung.com/spring-5-webclient) - [Spring 5 Functional Bean Registration](http://www.baeldung.com/spring-5-functional-beans) - [The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5](http://www.baeldung.com/spring-5-junit-config) +- [Spring Security 5 for Reactive Applications](http://www.baeldung.com/spring-security-5-reactive) +- [Spring 5 Testing with @EnabledIf Annotation](http://www.baeldung.com/sring-5-enabledif) +- [Introduction to Spring REST Docs](http://www.baeldung.com/spring-rest-docs) diff --git a/spring-5/pom.xml b/spring-5/pom.xml index 7e30179f07..19dd65d78f 100644 --- a/spring-5/pom.xml +++ b/spring-5/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 2.0.0.M6 + 2.0.0.M7 @@ -39,6 +39,10 @@ org.springframework.boot spring-boot-starter-webflux + + org.springframework.boot + spring-boot-starter-hateoas + org.projectreactor reactor-spring @@ -135,6 +139,23 @@ ${junit.platform.version} test + + + org.springframework.restdocs + spring-restdocs-mockmvc + test + + + org.springframework.restdocs + spring-restdocs-webtestclient + test + + + org.springframework.restdocs + spring-restdocs-restassured + test + + @@ -163,6 +184,29 @@
+ + org.asciidoctor + asciidoctor-maven-plugin + ${asciidoctor-plugin.version} + + + generate-docs + package + + process-asciidoc + + + html + book + + ${snippetsDirectory} + + src/docs/asciidocs + target/generated-docs + + + + @@ -194,11 +238,13 @@ 1.0.0 5.0.0 2.20 - 5.0.1.RELEASE + 5.0.2.RELEASE 1.0.1.RELEASE 1.1.3 1.0 1.0 + 1.5.6 + ${project.build.directory}/generated-snippets diff --git a/spring-rest-docs/src/docs/asciidocs/api-guide.adoc b/spring-5/src/docs/asciidocs/api-guide.adoc similarity index 82% rename from spring-rest-docs/src/docs/asciidocs/api-guide.adoc rename to spring-5/src/docs/asciidocs/api-guide.adoc index 9fbe74c072..6eadfb5efd 100644 --- a/spring-rest-docs/src/docs/asciidocs/api-guide.adoc +++ b/spring-5/src/docs/asciidocs/api-guide.adoc @@ -55,13 +55,6 @@ use of HTTP status codes. | The requested resource did not exist |=== -[[overview-headers]] -== Headers - -Every response has the following header(s): - -include::{snippets}/headers-example/response-headers.adoc[] - [[overview-hypermedia]] == Hypermedia @@ -86,18 +79,14 @@ The index provides the entry point into the service. A `GET` request is used to access the index -==== Response structure +==== Request structure -include::{snippets}/index-example/http-response.adoc[] +include::{snippets}/index-example/http-request.adoc[] ==== Example response include::{snippets}/index-example/http-response.adoc[] -==== Example request - -include::{snippets}/index-example/http-request.adoc[] - ==== CURL request include::{snippets}/index-example/curl-request.adoc[] @@ -113,12 +102,12 @@ include::{snippets}/index-example/links.adoc[] The CRUD provides the entry point into the service. -[[resources-crud-access]] +[[resources-crud-get]] === Accessing the crud GET -A `GET` request is used to access the CRUD read +A `GET` request is used to access the CRUD read. -==== Response structure +==== Request structure include::{snippets}/crud-get-example/http-request.adoc[] @@ -130,12 +119,12 @@ include::{snippets}/crud-get-example/http-response.adoc[] include::{snippets}/crud-get-example/curl-request.adoc[] -[[resources-crud-access]] +[[resources-crud-post]] === Accessing the crud POST -A `POST` request is used to access the CRUD create +A `POST` request is used to access the CRUD create. -==== Response structure +==== Request structure include::{snippets}/crud-create-example/http-request.adoc[] @@ -147,15 +136,18 @@ include::{snippets}/crud-create-example/http-response.adoc[] include::{snippets}/crud-create-example/curl-request.adoc[] -[[resources-crud-access]] +[[resources-crud-delete]] === Accessing the crud DELETE -A `DELETE` request is used to access the CRUD create +A `DELETE` request is used to access the CRUD delete. -==== Response structure +==== Request structure include::{snippets}/crud-delete-example/http-request.adoc[] +==== Path Parameters +include::{snippets}/crud-delete-example/path-parameters.adoc[] + ==== Example response include::{snippets}/crud-delete-example/http-response.adoc[] @@ -164,12 +156,12 @@ include::{snippets}/crud-delete-example/http-response.adoc[] include::{snippets}/crud-delete-example/curl-request.adoc[] -[[resources-crud-access]] +[[resources-crud-patch]] === Accessing the crud PATCH -A `PATCH` request is used to access the CRUD create +A `PATCH` request is used to access the CRUD update. -==== Response structure +==== Request structure include::{snippets}/crud-patch-example/http-request.adoc[] @@ -181,12 +173,12 @@ include::{snippets}/crud-patch-example/http-response.adoc[] include::{snippets}/crud-patch-example/curl-request.adoc[] -[[resources-crud-access]] +[[resources-crud-put]] === Accessing the crud PUT -A `PUT` request is used to access the CRUD create +A `PUT` request is used to access the CRUD update. -==== Response structure +==== Request structure include::{snippets}/crud-put-example/http-request.adoc[] diff --git a/spring-rest-docs/src/main/java/com/example/CRUDController.java b/spring-5/src/main/java/com/baeldung/restdocs/CRUDController.java similarity index 51% rename from spring-rest-docs/src/main/java/com/example/CRUDController.java rename to spring-5/src/main/java/com/baeldung/restdocs/CRUDController.java index ff8c91d6cd..f6183bc79e 100644 --- a/spring-rest-docs/src/main/java/com/example/CRUDController.java +++ b/spring-5/src/main/java/com/baeldung/restdocs/CRUDController.java @@ -1,16 +1,23 @@ -package com.example; +package com.baeldung.restdocs; import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo; import java.util.ArrayList; import java.util.List; +import javax.validation.Valid; + import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; @@ -18,38 +25,38 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/crud") public class CRUDController { - @RequestMapping(method = RequestMethod.GET) - @ResponseStatus(HttpStatus.OK) - public List read(@RequestBody CrudInput crudInput) { - List returnList = new ArrayList(); + @GetMapping + public List read(@RequestBody @Valid CrudInput crudInput) { + List returnList = new ArrayList<>(); returnList.add(crudInput); return returnList; } @ResponseStatus(HttpStatus.CREATED) - @RequestMapping(method = RequestMethod.POST) - public HttpHeaders save(@RequestBody CrudInput crudInput) { + @PostMapping + public HttpHeaders save(@RequestBody @Valid CrudInput crudInput) { HttpHeaders httpHeaders = new HttpHeaders(); - httpHeaders.setLocation(linkTo(CRUDController.class).slash(crudInput.getTitle()).toUri()); + httpHeaders.setLocation(linkTo(CRUDController.class).slash(crudInput.getId()).toUri()); return httpHeaders; } - @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) + @DeleteMapping("/{id}") @ResponseStatus(HttpStatus.OK) - HttpHeaders delete(@RequestBody CrudInput crudInput) { - HttpHeaders httpHeaders = new HttpHeaders(); - return httpHeaders; + HttpHeaders delete(@PathVariable("id") long id) { + return new HttpHeaders(); } - @RequestMapping(value = "/{id}", method = RequestMethod.PUT) + @PutMapping("/{id}") @ResponseStatus(HttpStatus.ACCEPTED) void put(@PathVariable("id") long id, @RequestBody CrudInput crudInput) { } - @RequestMapping(value = "/{id}", method = RequestMethod.PATCH) - @ResponseStatus(HttpStatus.NO_CONTENT) - void patch(@PathVariable("id") long id, @RequestBody CrudInput crudInput) { - + @PatchMapping("/{id}") + public List patch(@PathVariable("id") long id, @RequestBody CrudInput crudInput) { + List returnList = new ArrayList(); + crudInput.setId(id); + returnList.add(crudInput); + return returnList; } } diff --git a/spring-5/src/main/java/com/baeldung/restdocs/CrudInput.java b/spring-5/src/main/java/com/baeldung/restdocs/CrudInput.java new file mode 100644 index 0000000000..29046d7725 --- /dev/null +++ b/spring-5/src/main/java/com/baeldung/restdocs/CrudInput.java @@ -0,0 +1,66 @@ +package com.baeldung.restdocs; + +import java.net.URI; +import java.util.Collections; +import java.util.List; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class CrudInput { + + @NotNull + private long id; + + @NotBlank + private String title; + + private String body; + + private List tagUris; + + @JsonCreator + public CrudInput(@JsonProperty("id") long id, @JsonProperty("title") String title, @JsonProperty("body") String body, @JsonProperty("tags") List tagUris) { + this.id=id; + this.title = title; + this.body = body; + this.tagUris = tagUris == null ? Collections. emptyList() : tagUris; + } + + public String getTitle() { + return title; + } + + public String getBody() { + return body; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public void setTitle(String title) { + this.title = title; + } + + public void setBody(String body) { + this.body = body; + } + + public void setTagUris(List tagUris) { + this.tagUris = tagUris; + } + + @JsonProperty("tags") + public List getTagUris() { + return this.tagUris; + } + +} \ No newline at end of file diff --git a/spring-rest-docs/src/main/java/com/example/IndexController.java b/spring-5/src/main/java/com/baeldung/restdocs/IndexController.java similarity index 79% rename from spring-rest-docs/src/main/java/com/example/IndexController.java rename to spring-5/src/main/java/com/baeldung/restdocs/IndexController.java index 6b896da416..2c58d5fe6b 100644 --- a/spring-rest-docs/src/main/java/com/example/IndexController.java +++ b/spring-5/src/main/java/com/baeldung/restdocs/IndexController.java @@ -1,17 +1,17 @@ -package com.example; +package com.baeldung.restdocs; import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo; import org.springframework.hateoas.ResourceSupport; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/") public class IndexController { - @RequestMapping(method = RequestMethod.GET) + @GetMapping public ResourceSupport index() { ResourceSupport index = new ResourceSupport(); index.add(linkTo(CRUDController.class).withRel("crud")); diff --git a/spring-rest-docs/src/main/java/com/example/SpringRestDocsApplication.java b/spring-5/src/main/java/com/baeldung/restdocs/SpringRestDocsApplication.java similarity index 90% rename from spring-rest-docs/src/main/java/com/example/SpringRestDocsApplication.java rename to spring-5/src/main/java/com/baeldung/restdocs/SpringRestDocsApplication.java index da09f9accc..02332ee7b6 100644 --- a/spring-rest-docs/src/main/java/com/example/SpringRestDocsApplication.java +++ b/spring-5/src/main/java/com/baeldung/restdocs/SpringRestDocsApplication.java @@ -1,4 +1,4 @@ -package com.example; +package com.baeldung.restdocs; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-5/src/main/java/com/baeldung/web/reactive/client/WebClientController.java b/spring-5/src/main/java/com/baeldung/web/reactive/client/WebClientController.java index a218c6b7cf..1082765c63 100644 --- a/spring-5/src/main/java/com/baeldung/web/reactive/client/WebClientController.java +++ b/spring-5/src/main/java/com/baeldung/web/reactive/client/WebClientController.java @@ -50,7 +50,7 @@ public class WebClientController { map.add("key1", "value1"); map.add("key2", "value2"); - BodyInserter, ClientHttpRequest> inserter2 = BodyInserters.fromMultipartData(map); + // BodyInserter, ClientHttpRequest> inserter2 = BodyInserters.fromMultipartData(map); BodyInserter inserter3 = BodyInserters.fromObject("body"); // responses diff --git a/spring-5/src/test/java/com/baeldung/restdocs/ApiDocumentationJUnit4IntegrationTest.java b/spring-5/src/test/java/com/baeldung/restdocs/ApiDocumentationJUnit4IntegrationTest.java new file mode 100644 index 0000000000..20f0a47d83 --- /dev/null +++ b/spring-5/src/test/java/com/baeldung/restdocs/ApiDocumentationJUnit4IntegrationTest.java @@ -0,0 +1,180 @@ +package com.baeldung.restdocs; + +import com.baeldung.restdocs.CrudInput; +import com.baeldung.restdocs.SpringRestDocsApplication; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.hateoas.MediaTypes; +import org.springframework.restdocs.JUnitRestDocumentation; +import org.springframework.restdocs.constraints.ConstraintDescriptions; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import java.util.HashMap; +import java.util.Map; + +import static java.util.Collections.singletonList; +import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; +import static org.springframework.restdocs.headers.HeaderDocumentation.responseHeaders; +import static org.springframework.restdocs.hypermedia.HypermediaDocumentation.linkWithRel; +import static org.springframework.restdocs.hypermedia.HypermediaDocumentation.links; +import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; +import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; +import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.*; +import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest; +import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse; +import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint; +import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; +import static org.springframework.restdocs.payload.PayloadDocumentation.requestFields; +import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.util.StringUtils.collectionToDelimitedString; +import static org.springframework.restdocs.payload.PayloadDocumentation.subsectionWithPath; +import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; +import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = SpringRestDocsApplication.class) +public class ApiDocumentationJUnit4IntegrationTest { + + @Rule + public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("target/generated-snippets"); + + @Autowired + private WebApplicationContext context; + + @Autowired + private ObjectMapper objectMapper; + + private MockMvc mockMvc; + + @Before + public void setUp() { + + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context) + .apply(documentationConfiguration(this.restDocumentation)) + .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) + .build(); + } + + @Test + public void indexExample() throws Exception { + this.mockMvc.perform(get("/")) + .andExpect(status().isOk()) + .andDo(document("index-example", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), links(linkWithRel("crud").description("The CRUD resource")), responseFields(subsectionWithPath("_links").description("Links to other resources")), + responseHeaders(headerWithName("Content-Type").description("The Content-Type of the payload, e.g. `application/hal+json`")))); + } + + @Test + public void crudGetExample() throws Exception { + + Map crud = new HashMap<>(); + crud.put("id", 1L); + crud.put("title", "Sample Model"); + crud.put("body", "http://www.baeldung.com/"); + + String tagLocation = this.mockMvc.perform(get("/crud").contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isOk()) + .andReturn() + .getResponse() + .getHeader("Location"); + + crud.put("tags", singletonList(tagLocation)); + + ConstraintDescriptions desc = new ConstraintDescriptions(CrudInput.class); + + this.mockMvc.perform(get("/crud").contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isOk()) + .andDo(document("crud-get-example", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestFields(fieldWithPath("id").description("The id of the input" + collectionToDelimitedString(desc.descriptionsForProperty("id"), ". ")), + fieldWithPath("title").description("The title of the input"), fieldWithPath("body").description("The body of the input"), fieldWithPath("tags").description("An array of tag resource URIs")))); + } + + @Test + public void crudCreateExample() throws Exception { + Map crud = new HashMap<>(); + crud.put("id", 2L); + crud.put("title", "Sample Model"); + crud.put("body", "http://www.baeldung.com/"); + + String tagLocation = this.mockMvc.perform(post("/crud").contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isCreated()) + .andReturn() + .getResponse() + .getHeader("Location"); + + crud.put("tags", singletonList(tagLocation)); + + this.mockMvc.perform(post("/crud").contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isCreated()) + .andDo(document("crud-create-example", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestFields(fieldWithPath("id").description("The id of the input"), fieldWithPath("title").description("The title of the input"), + fieldWithPath("body").description("The body of the input"), fieldWithPath("tags").description("An array of tag resource URIs")))); + } + + @Test + public void crudDeleteExample() throws Exception { + this.mockMvc.perform(delete("/crud/{id}", 10)) + .andExpect(status().isOk()) + .andDo(document("crud-delete-example", pathParameters(parameterWithName("id").description("The id of the input to delete")))); + } + + @Test + public void crudPatchExample() throws Exception { + + Map tag = new HashMap<>(); + tag.put("name", "PATCH"); + + String tagLocation = this.mockMvc.perform(patch("/crud/{id}", 10).contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(tag))) + .andExpect(status().isOk()) + .andReturn() + .getResponse() + .getHeader("Location"); + + Map crud = new HashMap<>(); + crud.put("title", "Sample Model Patch"); + crud.put("body", "http://www.baeldung.com/"); + crud.put("tags", singletonList(tagLocation)); + + this.mockMvc.perform(patch("/crud/{id}", 10).contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isOk()); + } + + @Test + public void crudPutExample() throws Exception { + Map tag = new HashMap<>(); + tag.put("name", "PUT"); + + String tagLocation = this.mockMvc.perform(put("/crud/{id}", 10).contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(tag))) + .andExpect(status().isAccepted()) + .andReturn() + .getResponse() + .getHeader("Location"); + + Map crud = new HashMap<>(); + crud.put("title", "Sample Model"); + crud.put("body", "http://www.baeldung.com/"); + crud.put("tags", singletonList(tagLocation)); + + this.mockMvc.perform(put("/crud/{id}", 10).contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isAccepted()); + } + + @Test + public void contextLoads() { + } + +} diff --git a/spring-5/src/test/java/com/baeldung/restdocs/ApiDocumentationJUnit5IntegrationTest.java b/spring-5/src/test/java/com/baeldung/restdocs/ApiDocumentationJUnit5IntegrationTest.java new file mode 100644 index 0000000000..748d5fb1b3 --- /dev/null +++ b/spring-5/src/test/java/com/baeldung/restdocs/ApiDocumentationJUnit5IntegrationTest.java @@ -0,0 +1,173 @@ +package com.baeldung.restdocs; + +import static java.util.Collections.singletonList; +import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; +import static org.springframework.restdocs.headers.HeaderDocumentation.responseHeaders; +import static org.springframework.restdocs.hypermedia.HypermediaDocumentation.linkWithRel; +import static org.springframework.restdocs.hypermedia.HypermediaDocumentation.links; +import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; +import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; +import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.*; +import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest; +import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse; +import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint; +import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; +import static org.springframework.restdocs.payload.PayloadDocumentation.requestFields; +import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; +import static org.springframework.restdocs.request.RequestDocumentation.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.util.StringUtils.collectionToDelimitedString; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.hateoas.MediaTypes; +import org.springframework.restdocs.RestDocumentationContextProvider; +import org.springframework.restdocs.RestDocumentationExtension; +import org.springframework.restdocs.constraints.ConstraintDescriptions; +import static org.springframework.restdocs.payload.PayloadDocumentation.subsectionWithPath; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import com.baeldung.restdocs.CrudInput; +import com.baeldung.restdocs.SpringRestDocsApplication; +import com.fasterxml.jackson.databind.ObjectMapper; + +@ExtendWith({ RestDocumentationExtension.class, SpringExtension.class }) +@SpringBootTest(classes = SpringRestDocsApplication.class) +public class ApiDocumentationJUnit5IntegrationTest { + + @Autowired + private ObjectMapper objectMapper; + + private MockMvc mockMvc; + + @BeforeEach + public void setUp(WebApplicationContext webApplicationContext, RestDocumentationContextProvider restDocumentation) { + this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) + .apply(documentationConfiguration(restDocumentation)) + .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))) + .build(); + } + + @Test + public void indexExample() throws Exception { + this.mockMvc.perform(get("/")) + .andExpect(status().isOk()) + .andDo(document("index-example", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), links(linkWithRel("crud").description("The CRUD resource")), responseFields(subsectionWithPath("_links").description("Links to other resources")), + responseHeaders(headerWithName("Content-Type").description("The Content-Type of the payload, e.g. `application/hal+json`")))); + } + + @Test + public void crudGetExample() throws Exception { + + Map crud = new HashMap<>(); + crud.put("id", 1L); + crud.put("title", "Sample Model"); + crud.put("body", "http://www.baeldung.com/"); + + String tagLocation = this.mockMvc.perform(get("/crud").contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isOk()) + .andReturn() + .getResponse() + .getHeader("Location"); + + crud.put("tags", singletonList(tagLocation)); + + ConstraintDescriptions desc = new ConstraintDescriptions(CrudInput.class); + + this.mockMvc.perform(get("/crud").contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isOk()) + .andDo(document("crud-get-example", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestFields(fieldWithPath("id").description("The id of the input" + collectionToDelimitedString(desc.descriptionsForProperty("id"), ". ")), + fieldWithPath("title").description("The title of the input"), fieldWithPath("body").description("The body of the input"), fieldWithPath("tags").description("An array of tag resource URIs")))); + } + + @Test + public void crudCreateExample() throws Exception { + Map crud = new HashMap<>(); + crud.put("id", 2L); + crud.put("title", "Sample Model"); + crud.put("body", "http://www.baeldung.com/"); + + String tagLocation = this.mockMvc.perform(post("/crud").contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isCreated()) + .andReturn() + .getResponse() + .getHeader("Location"); + + crud.put("tags", singletonList(tagLocation)); + + this.mockMvc.perform(post("/crud").contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isCreated()) + .andDo(document("crud-create-example", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestFields(fieldWithPath("id").description("The id of the input"), fieldWithPath("title").description("The title of the input"), + fieldWithPath("body").description("The body of the input"), fieldWithPath("tags").description("An array of tag resource URIs")))); + } + + @Test + public void crudDeleteExample() throws Exception { + this.mockMvc.perform(delete("/crud/{id}", 10)) + .andExpect(status().isOk()) + .andDo(document("crud-delete-example", pathParameters(parameterWithName("id").description("The id of the input to delete")))); + } + + @Test + public void crudPatchExample() throws Exception { + + Map tag = new HashMap<>(); + tag.put("name", "PATCH"); + + String tagLocation = this.mockMvc.perform(patch("/crud/{id}", 10).contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(tag))) + .andExpect(status().isOk()) + .andReturn() + .getResponse() + .getHeader("Location"); + + Map crud = new HashMap<>(); + crud.put("title", "Sample Model Patch"); + crud.put("body", "http://www.baeldung.com/"); + crud.put("tags", singletonList(tagLocation)); + + this.mockMvc.perform(patch("/crud/{id}", 10).contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isOk()); + } + + @Test + public void crudPutExample() throws Exception { + Map tag = new HashMap<>(); + tag.put("name", "PUT"); + + String tagLocation = this.mockMvc.perform(put("/crud/{id}", 10).contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(tag))) + .andExpect(status().isAccepted()) + .andReturn() + .getResponse() + .getHeader("Location"); + + Map crud = new HashMap<>(); + crud.put("title", "Sample Model"); + crud.put("body", "http://www.baeldung.com/"); + crud.put("tags", singletonList(tagLocation)); + + this.mockMvc.perform(put("/crud/{id}", 10).contentType(MediaTypes.HAL_JSON) + .content(this.objectMapper.writeValueAsString(crud))) + .andExpect(status().isAccepted()); + } + + @Test + public void contextLoads() { + } + +} diff --git a/spring-all/pom.xml b/spring-all/pom.xml index 6615e1d6cd..b04ffae9c8 100644 --- a/spring-all/pom.xml +++ b/spring-all/pom.xml @@ -9,10 +9,10 @@ war - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-aop/README.md b/spring-aop/README.md index 03d5d8f429..af8ab71da0 100644 --- a/spring-aop/README.md +++ b/spring-aop/README.md @@ -2,4 +2,5 @@ - [Implementing a Custom Spring AOP Annotation](http://www.baeldung.com/spring-aop-annotation) - [Intro to AspectJ](http://www.baeldung.com/aspectj) -- [Spring Performance Logging](http://www.baeldung.com/spring-performance-logging) \ No newline at end of file +- [Spring Performance Logging](http://www.baeldung.com/spring-performance-logging) +- [Introduction to Spring AOP](http://www.baeldung.com/spring-aop) diff --git a/spring-boot-actuator/.gitignore b/spring-boot-actuator/.gitignore deleted file mode 100644 index 60be5b80aa..0000000000 --- a/spring-boot-actuator/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/target/ -.settings/ -.classpath -.project diff --git a/spring-boot-actuator/pom.xml b/spring-boot-actuator/pom.xml deleted file mode 100644 index bec126a247..0000000000 --- a/spring-boot-actuator/pom.xml +++ /dev/null @@ -1,121 +0,0 @@ - - 4.0.0 - com.baeldung - spring-boot-actuator - 0.0.1-SNAPSHOT - jar - spring-boot - This is simple boot application for Spring boot actuator test - - - - org.springframework.boot - spring-boot-starter-parent - 1.5.2.RELEASE - - - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-actuator - - - - org.springframework.boot - spring-boot-starter - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - spring-boot-actuator - - - src/main/resources - true - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - **/*IntegrationTest.java - - - - - - - - - - - integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*IntegrationTest.java - - - - - - - json - - - - - - - - - - - org.baeldung.MainApplication - UTF-8 - 1.8 - - - diff --git a/spring-boot-actuator/src/main/java/org/baeldung/MainApplication.java b/spring-boot-actuator/src/main/java/org/baeldung/MainApplication.java deleted file mode 100644 index 7c9054dbf8..0000000000 --- a/spring-boot-actuator/src/main/java/org/baeldung/MainApplication.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.baeldung; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.baeldung.config.MainConfig; - -@SpringBootApplication -public class MainApplication { - - public static void main(String args[]) { - SpringApplication.run(MainConfig.class, args); - } -} diff --git a/spring-boot-actuator/src/main/java/org/baeldung/config/MainConfig.java b/spring-boot-actuator/src/main/java/org/baeldung/config/MainConfig.java deleted file mode 100644 index 27c97cc006..0000000000 --- a/spring-boot-actuator/src/main/java/org/baeldung/config/MainConfig.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung.config; - -import java.util.Collections; -import org.springframework.boot.actuate.info.InfoContributor; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.context.annotation.Bean; - -@EnableAutoConfiguration -public class MainConfig { - - public MainConfig() {} - - @Bean - public InfoContributor getInfoContributor() { - return (infoBuilder) -> infoBuilder.withDetail("applicationInfo", Collections.singletonMap("ActiveUserCount", "10")); - } -} diff --git a/spring-boot-actuator/src/main/resources/application.properties b/spring-boot-actuator/src/main/resources/application.properties deleted file mode 100644 index 835c78eda2..0000000000 --- a/spring-boot-actuator/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -info.app.name=Sample application \ No newline at end of file diff --git a/spring-boot-actuator/src/test/resources/expectedResponse.json b/spring-boot-actuator/src/test/resources/expectedResponse.json deleted file mode 100644 index caa0bdbbf8..0000000000 --- a/spring-boot-actuator/src/test/resources/expectedResponse.json +++ /dev/null @@ -1 +0,0 @@ -{"app":{"name":"Sample application"},"applicationInfo":{"ActiveUserCount":"10"}} \ No newline at end of file diff --git a/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml b/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml index 62c3676ae4..d5946900ae 100644 --- a/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml +++ b/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml @@ -47,7 +47,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + 3.7.0 1.8 1.8 diff --git a/spring-boot-custom-starter/greeter-spring-boot-starter/pom.xml b/spring-boot-custom-starter/greeter-spring-boot-starter/pom.xml index 7b38c53c09..9b8858a8ab 100644 --- a/spring-boot-custom-starter/greeter-spring-boot-starter/pom.xml +++ b/spring-boot-custom-starter/greeter-spring-boot-starter/pom.xml @@ -39,7 +39,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + 3.7.0 1.8 1.8 diff --git a/spring-boot-keycloak/README.md b/spring-boot-keycloak/README.md new file mode 100644 index 0000000000..cfe82c6cf7 --- /dev/null +++ b/spring-boot-keycloak/README.md @@ -0,0 +1,2 @@ +## Relevant articles: +- [A Quick Guide to Using Keycloak with Spring Boot](http://www.baeldung.com/spring-boot-keycloak) diff --git a/spring-boot-keycloak/pom.xml b/spring-boot-keycloak/pom.xml index ab76d0af43..741e2313b4 100644 --- a/spring-boot-keycloak/pom.xml +++ b/spring-boot-keycloak/pom.xml @@ -14,9 +14,9 @@ com.baeldung - parent-boot-4 + parent-boot-5 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-boot-security/README.md b/spring-boot-security/README.md new file mode 100644 index 0000000000..a0ddb8de7b --- /dev/null +++ b/spring-boot-security/README.md @@ -0,0 +1,8 @@ +### Spring Boot Security Auto-Configuration + +- mvn clean install +- uncomment actuator dependency simultaneously with the line from basic auth main class +- uncomment security properties for easy testing. If not random will be generated. + +### CURL commands +- curl -X POST -u baeldung-admin:baeldung -d grant_type=client_credentials -d username=baeldung-admin -d password=baeldung http://localhost:8080/oauth/token diff --git a/spring-jmeter-jenkins/pom.xml b/spring-boot-security/pom.xml similarity index 50% rename from spring-jmeter-jenkins/pom.xml rename to spring-boot-security/pom.xml index 38b5f98e45..c1ec14ff64 100644 --- a/spring-jmeter-jenkins/pom.xml +++ b/spring-boot-security/pom.xml @@ -3,19 +3,30 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - spring-jmeter-jenkins + com.baeldung + spring-boot-security 0.0.1-SNAPSHOT jar - spring-jmeter-jenkins - Run and Show JMeter test with Jenkins + spring-boot-security + Spring Boot Security Auto-Configuration - parent-boot-5 com.baeldung - 0.0.1-SNAPSHOT - ../parent-boot-5 + parent-modules + 1.0.0-SNAPSHOT + + + + org.springframework.boot + spring-boot-dependencies + 1.5.9.RELEASE + pom + import + + + UTF-8 @@ -24,19 +35,33 @@ + + + + org.springframework.boot - spring-boot-starter-data-mongodb + spring-boot-starter-security + + + org.springframework.security.oauth + spring-security-oauth2 org.springframework.boot - spring-boot-starter-data-rest + spring-boot-starter-web + org.springframework.boot spring-boot-starter-test test + + org.springframework.security + spring-security-test + test + diff --git a/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/basic_auth/SpringBootSecurityApplication.java b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/basic_auth/SpringBootSecurityApplication.java new file mode 100644 index 0000000000..2ecad4ae35 --- /dev/null +++ b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/basic_auth/SpringBootSecurityApplication.java @@ -0,0 +1,16 @@ +package com.baeldung.springbootsecurity.basic_auth; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration; + +@SpringBootApplication(exclude = { + SecurityAutoConfiguration.class + // ,ManagementWebSecurityAutoConfiguration.class +}, scanBasePackages = "com.baeldung.springbootsecurity.basic_auth") +public class SpringBootSecurityApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringBootSecurityApplication.class, args); + } +} diff --git a/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/basic_auth/config/BasicAuthConfiguration.java b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/basic_auth/config/BasicAuthConfiguration.java new file mode 100644 index 0000000000..993c573fb0 --- /dev/null +++ b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/basic_auth/config/BasicAuthConfiguration.java @@ -0,0 +1,35 @@ +package com.baeldung.springbootsecurity.basic_auth.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +public class BasicAuthConfiguration extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth + .inMemoryAuthentication() + .withUser("user") + .password("password") + .roles("USER") + .and() + .withUser("admin") + .password("admin") + .roles("USER", "ADMIN"); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .anyRequest() + .authenticated() + .and() + .httpBasic(); + } +} diff --git a/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2resource/SpringBootOAuth2ResourceApplication.java b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2resource/SpringBootOAuth2ResourceApplication.java new file mode 100644 index 0000000000..56231a28bd --- /dev/null +++ b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2resource/SpringBootOAuth2ResourceApplication.java @@ -0,0 +1,30 @@ +package com.baeldung.springbootsecurity.oauth2resource; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@EnableResourceServer +@SpringBootApplication(scanBasePackages = "com.baeldung.springbootsecurity.oauth2resource") +public class SpringBootOAuth2ResourceApplication { + + public static void main(String[] args) { + new SpringApplicationBuilder() + .profiles("resource") + .sources(SpringBootOAuth2ResourceApplication.class) + .build() + .run(args); + } + + @RestController + class SecuredResourceController { + + @GetMapping("/securedResource") + public String securedResource() { + return "Baeldung Secured Resource OK"; + } + + } +} diff --git a/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/SpringBootAuthorizationServerApplication.java b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/SpringBootAuthorizationServerApplication.java new file mode 100644 index 0000000000..44dabefbb8 --- /dev/null +++ b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/SpringBootAuthorizationServerApplication.java @@ -0,0 +1,30 @@ +package com.baeldung.springbootsecurity.oauth2server; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.security.Principal; + +@EnableResourceServer +@EnableAuthorizationServer +@SpringBootApplication(scanBasePackages = "com.baeldung.springbootsecurity.oauth2server") +public class SpringBootAuthorizationServerApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringBootAuthorizationServerApplication.class, args); + } + + @RestController + class UserController { + + @GetMapping("/user") + public Principal user(Principal user) { + return user; + } + + } +} diff --git a/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java new file mode 100644 index 0000000000..b403feb5c1 --- /dev/null +++ b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2server/config/AuthorizationServerConfig.java @@ -0,0 +1,39 @@ +package com.baeldung.springbootsecurity.oauth2server.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer; +import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; +import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer; + +@Configuration +@Profile("authz") +public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter { + + @Autowired + private AuthenticationManager authenticationManager; + + @Override + public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { + endpoints.authenticationManager(authenticationManager); + } + + @Override + public void configure(ClientDetailsServiceConfigurer clients) throws Exception { + clients + .inMemory() + .withClient("baeldung") + .secret("baeldung") + .authorizedGrantTypes("client_credentials", "password", "authorization_code") + .scopes("openid", "read") + .autoApprove(true) + .and() + .withClient("baeldung-admin") + .secret("baeldung") + .authorizedGrantTypes("authorization_code", "client_credentials", "refresh_token") + .scopes("read", "write") + .autoApprove(true); + } +} diff --git a/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2sso/SpringBootOAuth2SsoApplication.java b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2sso/SpringBootOAuth2SsoApplication.java new file mode 100644 index 0000000000..b1cd580f08 --- /dev/null +++ b/spring-boot-security/src/main/java/com/baeldung/springbootsecurity/oauth2sso/SpringBootOAuth2SsoApplication.java @@ -0,0 +1,18 @@ +package com.baeldung.springbootsecurity.oauth2sso; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; +import org.springframework.boot.builder.SpringApplicationBuilder; + +@EnableOAuth2Sso +@SpringBootApplication(scanBasePackages = "com.baeldung.springbootsecurity.oauth2sso") +public class SpringBootOAuth2SsoApplication { + + public static void main(String[] args) { + new SpringApplicationBuilder() + .profiles("sso") + .sources(SpringBootOAuth2SsoApplication.class) + .build() + .run(args); + } +} diff --git a/spring-boot-security/src/main/resources/application-authz.properties b/spring-boot-security/src/main/resources/application-authz.properties new file mode 100644 index 0000000000..d29b0cdd3c --- /dev/null +++ b/spring-boot-security/src/main/resources/application-authz.properties @@ -0,0 +1,3 @@ +security.user.password=password +security.oauth2.client.client-id=client +security.oauth2.client.client-secret=secret diff --git a/spring-boot-security/src/main/resources/application-resource.properties b/spring-boot-security/src/main/resources/application-resource.properties new file mode 100644 index 0000000000..b157b01d51 --- /dev/null +++ b/spring-boot-security/src/main/resources/application-resource.properties @@ -0,0 +1,2 @@ +server.port=8081 +security.oauth2.resource.userInfoUri=http://localhost:8080/user \ No newline at end of file diff --git a/spring-boot-security/src/main/resources/application-sso.properties b/spring-boot-security/src/main/resources/application-sso.properties new file mode 100644 index 0000000000..ac6ae0cc93 --- /dev/null +++ b/spring-boot-security/src/main/resources/application-sso.properties @@ -0,0 +1,9 @@ +server.port=8082 +security.oauth2.client.clientId= +security.oauth2.client.clientSecret= +security.oauth2.client.accessTokenUri=https://graph.facebook.com/oauth/access_token +security.oauth2.client.userAuthorizationUri=https://www.facebook.com/dialog/oauth +security.oauth2.client.tokenName=oauth_token +security.oauth2.client.authenticationScheme=query +security.oauth2.client.clientAuthenticationScheme=form +security.oauth2.resource.userInfoUri=https://graph.facebook.com/me \ No newline at end of file diff --git a/spring-boot-security/src/main/resources/application.properties b/spring-boot-security/src/main/resources/application.properties new file mode 100644 index 0000000000..c2b8d70dc6 --- /dev/null +++ b/spring-boot-security/src/main/resources/application.properties @@ -0,0 +1,4 @@ +#spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration +#security.user.password=password +#security.oauth2.client.client-id=client +#security.oauth2.client.client-secret=secret diff --git a/spring-boot-security/src/main/resources/static/index.html b/spring-boot-security/src/main/resources/static/index.html new file mode 100644 index 0000000000..5e3506dde6 --- /dev/null +++ b/spring-boot-security/src/main/resources/static/index.html @@ -0,0 +1,10 @@ + + + + + Index + + +Welcome to Baeldung Secured Page !!! + + \ No newline at end of file diff --git a/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/basic_auth/BasicAuthConfigurationIntegrationTest.java b/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/basic_auth/BasicAuthConfigurationIntegrationTest.java new file mode 100644 index 0000000000..4e4244abb7 --- /dev/null +++ b/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/basic_auth/BasicAuthConfigurationIntegrationTest.java @@ -0,0 +1,55 @@ +package com.baeldung.springbootsecurity.basic_auth; + +import com.baeldung.springbootsecurity.basic_auth.SpringBootSecurityApplication; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.context.embedded.LocalServerPort; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.junit4.SpringRunner; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = RANDOM_PORT, classes = SpringBootSecurityApplication.class) +public class BasicAuthConfigurationIntegrationTest { + + TestRestTemplate restTemplate; + URL base; + + @LocalServerPort int port; + + @Before + public void setUp() throws MalformedURLException { + restTemplate = new TestRestTemplate("user", "password"); + base = new URL("http://localhost:" + port); + } + + @Test + public void whenLoggedUserRequestsHomePage_ThenSuccess() throws IllegalStateException, IOException { + ResponseEntity response = restTemplate.getForEntity(base.toString(), String.class); + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertTrue(response + .getBody() + .contains("Baeldung")); + } + + @Test + public void whenUserWithWrongCredentialsRequestsHomePage_ThenUnauthorizedPage() throws IllegalStateException, IOException { + restTemplate = new TestRestTemplate("user", "wrongpassword"); + ResponseEntity response = restTemplate.getForEntity(base.toString(), String.class); + assertEquals(HttpStatus.UNAUTHORIZED, response.getStatusCode()); + assertTrue(response + .getBody() + .contains("Unauthorized")); + } +} diff --git a/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/CustomConfigAuthorizationServerIntegrationTest.java b/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/CustomConfigAuthorizationServerIntegrationTest.java new file mode 100644 index 0000000000..09df9ce645 --- /dev/null +++ b/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/CustomConfigAuthorizationServerIntegrationTest.java @@ -0,0 +1,75 @@ +package com.baeldung.springbootsecurity.oauth2server; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.security.oauth2.client.DefaultOAuth2ClientContext; +import org.springframework.security.oauth2.client.OAuth2RestTemplate; +import org.springframework.security.oauth2.client.resource.OAuth2AccessDeniedException; +import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails; +import org.springframework.security.oauth2.common.OAuth2AccessToken; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import static java.lang.String.format; +import static java.util.Collections.singletonList; +import static org.junit.Assert.assertNotNull; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = RANDOM_PORT, classes = SpringBootAuthorizationServerApplication.class) +@ActiveProfiles("authz") +public class CustomConfigAuthorizationServerIntegrationTest { + + @Value("${local.server.port}") protected int port; + + @Test + public void whenAccessTokenIsRequested_ThenAccessTokenValueIsNotNull() { + ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails(); + resourceDetails.setClientId("baeldung"); + resourceDetails.setClientSecret("baeldung"); + resourceDetails.setScope(singletonList("read")); + DefaultOAuth2ClientContext clientContext = new DefaultOAuth2ClientContext(); + OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(resourceDetails, clientContext); + restTemplate.setMessageConverters(singletonList(new MappingJackson2HttpMessageConverter())); + OAuth2AccessToken accessToken = restTemplate.getAccessToken(); + assertNotNull(accessToken); + + } + + @Test(expected = OAuth2AccessDeniedException.class) + public void whenAccessTokenIsRequestedWithInvalidException_ThenExceptionIsThrown() { + ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails(); + resourceDetails.setClientId("baeldung"); + resourceDetails.setClientSecret("baeldung"); + resourceDetails.setScope(singletonList("write")); + DefaultOAuth2ClientContext clientContext = new DefaultOAuth2ClientContext(); + OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(resourceDetails, clientContext); + restTemplate.setMessageConverters(singletonList(new MappingJackson2HttpMessageConverter())); + restTemplate.getAccessToken(); + } + + @Test + public void whenAccessTokenIsRequestedByClientWithWriteScope_ThenAccessTokenIsNotNull() { + ClientCredentialsResourceDetails resourceDetails = getClientCredentialsResourceDetails(); + resourceDetails.setClientId("baeldung-admin"); + resourceDetails.setClientSecret("baeldung"); + resourceDetails.setScope(singletonList("write")); + DefaultOAuth2ClientContext clientContext = new DefaultOAuth2ClientContext(); + OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(resourceDetails, clientContext); + restTemplate.setMessageConverters(singletonList(new MappingJackson2HttpMessageConverter())); + OAuth2AccessToken accessToken = restTemplate.getAccessToken(); + assertNotNull(accessToken); + } + + private ClientCredentialsResourceDetails getClientCredentialsResourceDetails() { + ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails(); + resourceDetails.setAccessTokenUri(format("http://localhost:%d/oauth/token", port)); + resourceDetails.setGrantType("client_credentials"); + return resourceDetails; + } + +} + diff --git a/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/DefaultConfigAuthorizationServerIntegrationTest.java b/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/DefaultConfigAuthorizationServerIntegrationTest.java new file mode 100644 index 0000000000..c7b1b4ef6c --- /dev/null +++ b/spring-boot-security/src/test/java/com/baeldung/springbootsecurity/oauth2server/DefaultConfigAuthorizationServerIntegrationTest.java @@ -0,0 +1,44 @@ +package com.baeldung.springbootsecurity.oauth2server; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.security.oauth2.client.DefaultOAuth2ClientContext; +import org.springframework.security.oauth2.client.OAuth2RestTemplate; +import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails; +import org.springframework.security.oauth2.common.OAuth2AccessToken; +import org.springframework.test.context.junit4.SpringRunner; + +import static java.lang.String.format; +import static java.util.Arrays.asList; +import static java.util.Collections.singletonList; +import static org.junit.Assert.assertNotNull; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = RANDOM_PORT, classes = SpringBootAuthorizationServerApplication.class, + properties = { "security.oauth2.client.client-id=client", "security.oauth2.client.client-secret=secret" }) +public class DefaultConfigAuthorizationServerIntegrationTest { + + @Value("${local.server.port}") protected int port; + + @Test + public void whenAccessTokenIsRequested_ThenAccessTokenValueIsNotNull() { + ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails(); + resourceDetails.setAccessTokenUri(format("http://localhost:%d/oauth/token", port)); + resourceDetails.setClientId("client"); + resourceDetails.setClientSecret("secret"); + resourceDetails.setGrantType("client_credentials"); + resourceDetails.setScope(asList("read", "write")); + DefaultOAuth2ClientContext clientContext = new DefaultOAuth2ClientContext(); + OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(resourceDetails, clientContext); + restTemplate.setMessageConverters(singletonList(new MappingJackson2HttpMessageConverter())); + OAuth2AccessToken accessToken = restTemplate.getAccessToken(); + assertNotNull(accessToken); + + } + +} + diff --git a/spring-boot/.mvn/wrapper/maven-wrapper.properties b/spring-boot/.mvn/wrapper/maven-wrapper.properties new file mode 100755 index 0000000000..a447c9fa81 --- /dev/null +++ b/spring-boot/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip \ No newline at end of file diff --git a/spring-boot/README.MD b/spring-boot/README.MD index f126df00af..7b5fb3c880 100644 --- a/spring-boot/README.MD +++ b/spring-boot/README.MD @@ -28,4 +28,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Spring Boot and Togglz Aspect](http://www.baeldung.com/spring-togglz) - [Getting Started with GraphQL and Spring Boot](http://www.baeldung.com/spring-graphql) - [Guide to Spring Type Conversions](http://www.baeldung.com/spring-type-conversions) - +- [Quick Guide on data.sql and schema.sql Files in Spring Boot](http://www.baeldung.com/spring-boot-data-sql-and-schema-sql) diff --git a/spring-boot/mvnw b/spring-boot/mvnw new file mode 100755 index 0000000000..e96ccd5fbb --- /dev/null +++ b/spring-boot/mvnw @@ -0,0 +1,227 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/spring-boot/mvnw.cmd b/spring-boot/mvnw.cmd new file mode 100755 index 0000000000..4f0b068a03 --- /dev/null +++ b/spring-boot/mvnw.cmd @@ -0,0 +1,145 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index d6ee022522..a557604bf3 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -167,6 +167,12 @@ org.apache.activemq artemis-server + + + com.rometools + rome + ${rome.version} + @@ -276,6 +282,7 @@ 8.5.11 1.4.194 2.4.1.Final + 1.9.0 \ No newline at end of file diff --git a/spring-boot/src/main/java/com/baeldung/internationalization/config/MvcConfig.java b/spring-boot/src/main/java/com/baeldung/internationalization/config/MvcConfig.java index 59f7fd3ba5..478e8d393a 100644 --- a/spring-boot/src/main/java/com/baeldung/internationalization/config/MvcConfig.java +++ b/spring-boot/src/main/java/com/baeldung/internationalization/config/MvcConfig.java @@ -6,14 +6,12 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.LocaleResolver; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; import org.springframework.web.servlet.i18n.SessionLocaleResolver; @Configuration -@EnableWebMvc @ComponentScan(basePackages = "com.baeldung.internationalization.config") public class MvcConfig extends WebMvcConfigurerAdapter { @@ -33,6 +31,6 @@ public class MvcConfig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(localeChangeInterceptor()); + registry.addInterceptor(localeChangeInterceptor()); } } diff --git a/spring-boot/src/main/java/com/baeldung/kong/QueryController.java b/spring-boot/src/main/java/com/baeldung/kong/QueryController.java new file mode 100644 index 0000000000..af63a7e8a1 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/kong/QueryController.java @@ -0,0 +1,32 @@ +package com.baeldung.kong; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author aiet + */ +@RestController +@RequestMapping("/stock") +public class QueryController { + + private static int REQUEST_COUNTER = 0; + + @GetMapping("/reqcount") + public int getReqCount(){ + return REQUEST_COUNTER; + } + + @GetMapping("/{code}") + public String getStockPrice(@PathVariable String code){ + REQUEST_COUNTER++; + if("BTC".equalsIgnoreCase(code)) + return "10000"; + else return "N/A"; + } + + + +} diff --git a/spring-boot/src/main/java/com/baeldung/kong/StockApp.java b/spring-boot/src/main/java/com/baeldung/kong/StockApp.java new file mode 100644 index 0000000000..f901592938 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/kong/StockApp.java @@ -0,0 +1,13 @@ +package com.baeldung.kong; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class StockApp { + + public static void main(String[] args) { + SpringApplication.run(StockApp.class, args); + } + +} diff --git a/spring-boot/src/main/java/com/baeldung/rss/ArticleFeedView.java b/spring-boot/src/main/java/com/baeldung/rss/ArticleFeedView.java new file mode 100644 index 0000000000..3efa619409 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/rss/ArticleFeedView.java @@ -0,0 +1,54 @@ +package com.baeldung.rss; + +import com.rometools.rome.feed.rss.Channel; +import com.rometools.rome.feed.rss.Description; +import com.rometools.rome.feed.rss.Item; +import org.springframework.stereotype.Service; +import org.springframework.web.servlet.view.feed.AbstractRssFeedView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +@Service("articleFeedView") +public class ArticleFeedView extends AbstractRssFeedView { + + protected Channel newFeed() { + Channel channel = new Channel("rss_2.0"); + channel.setLink("http://localhost:8080/rss"); + channel.setTitle("Article Feed"); + channel.setDescription("Article Feed Description"); + channel.setPubDate(new Date()); + return channel; + } + + @Override + protected List buildFeedItems(Map map, HttpServletRequest httpStRequest, HttpServletResponse httpStResponse) throws Exception { + List list = new ArrayList(); + + Item item1 = new Item(); + item1.setLink("http://www.baeldung.com/netty-exception-handling"); + item1.setTitle("Exceptions in Netty"); + Description description1 = new Description(); + description1.setValue("In this quick article, we’ll be looking at exception handling in Netty."); + item1.setDescription(description1); + item1.setPubDate(new Date()); + item1.setAuthor("Carlos"); + + Item item2 = new Item(); + item2.setLink("http://www.baeldung.com/cockroachdb-java"); + item2.setTitle("Guide to CockroachDB in Java"); + Description description2 = new Description(); + description2.setValue("This tutorial is an introductory guide to using CockroachDB with Java."); + item2.setDescription(description2); + item2.setPubDate(new Date()); + item2.setAuthor("Baeldung"); + + list.add(item1); + list.add(item2); + return list; + } +} diff --git a/spring-boot/src/main/java/com/baeldung/rss/ArticleRssController.java b/spring-boot/src/main/java/com/baeldung/rss/ArticleRssController.java new file mode 100644 index 0000000000..a3fbc4a37e --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/rss/ArticleRssController.java @@ -0,0 +1,16 @@ +package com.baeldung.rss; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +@Controller +@RequestMapping(value = "/rss", produces = "application/*") +public class ArticleRssController { + + @RequestMapping(method = RequestMethod.GET) + public String articleFeed() { + return "articleFeedView"; + } + +} diff --git a/spring-boot/src/main/java/com/baeldung/rss/CustomContainer.java b/spring-boot/src/main/java/com/baeldung/rss/CustomContainer.java new file mode 100644 index 0000000000..ee36ecdc51 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/rss/CustomContainer.java @@ -0,0 +1,16 @@ +package com.baeldung.rss; + +import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer; +import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer; +import org.springframework.stereotype.Component; + +@Component +public class CustomContainer implements EmbeddedServletContainerCustomizer { + + @Override + public void customize(ConfigurableEmbeddedServletContainer container) { + container.setPort(8080); + container.setContextPath(""); + } + +} \ No newline at end of file diff --git a/spring-boot/src/main/java/com/baeldung/rss/RssApp.java b/spring-boot/src/main/java/com/baeldung/rss/RssApp.java new file mode 100644 index 0000000000..2add7ed421 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/rss/RssApp.java @@ -0,0 +1,20 @@ +package com.baeldung.rss; + +import com.baeldung.autoconfiguration.MySQLAutoconfiguration; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +import javax.annotation.security.RolesAllowed; + +@SpringBootApplication(exclude = MySQLAutoconfiguration.class) +@ComponentScan(basePackages = "com.baeldung.rss") +public class RssApp { + + @RolesAllowed("*") + public static void main(String[] args) { + System.setProperty("security.basic.enabled", "false"); + SpringApplication.run(RssApp.class, args); + } + +} diff --git a/spring-boot/src/main/java/com/baeldung/utils/controller/UtilsController.java b/spring-boot/src/main/java/com/baeldung/utils/controller/UtilsController.java index 7c66391bd2..8c7f2f932a 100644 --- a/spring-boot/src/main/java/com/baeldung/utils/controller/UtilsController.java +++ b/spring-boot/src/main/java/com/baeldung/utils/controller/UtilsController.java @@ -4,7 +4,6 @@ import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.ServletRequestBindingException; import org.springframework.web.bind.ServletRequestUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; diff --git a/spring-boot/src/main/java/com/baeldung/webjar/WebjarsdemoApplication.java b/spring-boot/src/main/java/com/baeldung/webjar/WebjarsdemoApplication.java index 8704b42166..5038c7e5f7 100644 --- a/spring-boot/src/main/java/com/baeldung/webjar/WebjarsdemoApplication.java +++ b/spring-boot/src/main/java/com/baeldung/webjar/WebjarsdemoApplication.java @@ -2,7 +2,6 @@ package com.baeldung.webjar; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.ComponentScan; import com.baeldung.autoconfiguration.MySQLAutoconfiguration; diff --git a/spring-boot/src/main/java/org/baeldung/boot/converter/GenericBigDecimalConverter.java b/spring-boot/src/main/java/org/baeldung/boot/converter/GenericBigDecimalConverter.java index decd8ac5db..7bcbfee45b 100644 --- a/spring-boot/src/main/java/org/baeldung/boot/converter/GenericBigDecimalConverter.java +++ b/spring-boot/src/main/java/org/baeldung/boot/converter/GenericBigDecimalConverter.java @@ -5,7 +5,6 @@ import org.springframework.core.convert.TypeDescriptor; import org.springframework.core.convert.converter.GenericConverter; import java.math.BigDecimal; -import java.math.MathContext; import java.util.Set; public class GenericBigDecimalConverter implements GenericConverter { diff --git a/spring-boot/src/main/java/org/baeldung/boot/converter/controller/StringToEmployeeConverterController.java b/spring-boot/src/main/java/org/baeldung/boot/converter/controller/StringToEmployeeConverterController.java index ad921c2c43..a6e0400845 100644 --- a/spring-boot/src/main/java/org/baeldung/boot/converter/controller/StringToEmployeeConverterController.java +++ b/spring-boot/src/main/java/org/baeldung/boot/converter/controller/StringToEmployeeConverterController.java @@ -1,7 +1,6 @@ package org.baeldung.boot.converter.controller; import com.baeldung.toggle.Employee; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; diff --git a/spring-boot/src/main/java/org/baeldung/main/SpringBootApplication.java b/spring-boot/src/main/java/org/baeldung/main/SpringBootApplication.java index 0ab4ecb128..f9bdb67a10 100644 --- a/spring-boot/src/main/java/org/baeldung/main/SpringBootApplication.java +++ b/spring-boot/src/main/java/org/baeldung/main/SpringBootApplication.java @@ -11,7 +11,6 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java b/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java index 360dbf883c..c9a06b5bab 100644 --- a/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java +++ b/spring-boot/src/main/java/org/baeldung/repository/UserRepository.java @@ -2,9 +2,23 @@ package org.baeldung.repository; import org.baeldung.model.User; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Repository; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Stream; + @Repository("userRepository") public interface UserRepository extends JpaRepository { - public int countByStatus(int status); + + int countByStatus(int status); + + Optional findOneByName(String name); + + Stream findAllByName(String name); + + @Async + CompletableFuture findOneByStatus(Integer status); + } diff --git a/spring-boot/src/main/resources/application.properties b/spring-boot/src/main/resources/application.properties index 458b4e0d46..059a6c96be 100644 --- a/spring-boot/src/main/resources/application.properties +++ b/spring-boot/src/main/resources/application.properties @@ -1,4 +1,4 @@ -server.port=8080 +server.port=9090 server.contextPath=/springbootapp management.port=8081 management.address=127.0.0.1 diff --git a/spring-boot/src/test/resources/persistence-generic-entity.properties b/spring-boot/src/main/resources/persistence-generic-entity.properties similarity index 100% rename from spring-boot/src/test/resources/persistence-generic-entity.properties rename to spring-boot/src/main/resources/persistence-generic-entity.properties diff --git a/spring-boot/src/main/resources/static/internationalization.js b/spring-boot/src/main/resources/static/internationalization.js new file mode 100644 index 0000000000..ae416f083d --- /dev/null +++ b/spring-boot/src/main/resources/static/internationalization.js @@ -0,0 +1,8 @@ +$(document).ready(function() { + $("#locales").change(function () { + var selectedOption = $('#locales').val(); + if (selectedOption != ''){ + window.location.replace('international?lang=' + selectedOption); + } + }); +}); \ No newline at end of file diff --git a/spring-boot/src/main/resources/templates/international.html b/spring-boot/src/main/resources/templates/international.html index a2a5fbb591..e0cfb5143b 100644 --- a/spring-boot/src/main/resources/templates/international.html +++ b/spring-boot/src/main/resources/templates/international.html @@ -4,16 +4,7 @@ Home - +

diff --git a/spring-boot/src/test/java/com/baeldung/kong/KongAdminAPILiveTest.java b/spring-boot/src/test/java/com/baeldung/kong/KongAdminAPILiveTest.java new file mode 100644 index 0000000000..f399806a65 --- /dev/null +++ b/spring-boot/src/test/java/com/baeldung/kong/KongAdminAPILiveTest.java @@ -0,0 +1,165 @@ +package com.baeldung.kong; + +import com.baeldung.kong.domain.APIObject; +import com.baeldung.kong.domain.ConsumerObject; +import com.baeldung.kong.domain.KeyAuthObject; +import com.baeldung.kong.domain.PluginObject; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.*; +import org.springframework.test.context.junit4.SpringRunner; + +import java.net.URI; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.DEFINED_PORT; + +/** + * @author aiet + */ +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = DEFINED_PORT, classes = StockApp.class) +public class KongAdminAPILiveTest { + + private String getStockPrice(String code) { + try { + return restTemplate.getForObject(new URI("http://localhost:8080/stock/" + code), String.class); + } catch (Exception ignored) { + } + return null; + } + + @Before + public void init() { + System.setProperty("sun.net.http.allowRestrictedHeaders", "true"); + } + + @Autowired TestRestTemplate restTemplate; + + @Test + public void givenEndpoint_whenQueryStockPrice_thenPriceCorrect() { + String response = getStockPrice("btc"); + assertEquals("10000", response); + + response = getStockPrice("eth"); + assertEquals("N/A", response); + } + + @Test + public void givenKongAdminAPI_whenAddAPI_thenAPIAccessibleViaKong() throws Exception { + restTemplate.delete("http://localhost:8001/apis/stock-api"); + + APIObject stockAPI = new APIObject("stock-api", "stock.api", "http://localhost:8080", "/"); + HttpEntity apiEntity = new HttpEntity<>(stockAPI); + ResponseEntity addAPIResp = restTemplate.postForEntity("http://localhost:8001/apis", apiEntity, String.class); + + assertEquals(HttpStatus.CREATED, addAPIResp.getStatusCode()); + + addAPIResp = restTemplate.postForEntity("http://localhost:8001/apis", apiEntity, String.class); + assertEquals(HttpStatus.CONFLICT, addAPIResp.getStatusCode()); + String apiListResp = restTemplate.getForObject("http://localhost:8001/apis/", String.class); + + assertTrue(apiListResp.contains("stock-api")); + + HttpHeaders headers = new HttpHeaders(); + headers.set("Host", "stock.api"); + RequestEntity requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/stock/btc")); + ResponseEntity stockPriceResp = restTemplate.exchange(requestEntity, String.class); + + assertEquals("10000", stockPriceResp.getBody()); + } + + @Test + public void givenKongAdminAPI_whenAddAPIConsumer_thenAdded() { + restTemplate.delete("http://localhost:8001/consumers/eugenp"); + + ConsumerObject consumer = new ConsumerObject("eugenp"); + HttpEntity addConsumerEntity = new HttpEntity<>(consumer); + ResponseEntity addConsumerResp = restTemplate.postForEntity("http://localhost:8001/consumers/", addConsumerEntity, String.class); + + assertEquals(HttpStatus.CREATED, addConsumerResp.getStatusCode()); + + addConsumerResp = restTemplate.postForEntity("http://localhost:8001/consumers", addConsumerEntity, String.class); + assertEquals(HttpStatus.CONFLICT, addConsumerResp.getStatusCode()); + + String consumerListResp = restTemplate.getForObject("http://localhost:8001/consumers/", String.class); + assertTrue(consumerListResp.contains("eugenp")); + } + + @Test + public void givenAPI_whenEnableAuth_thenAnonymousDenied() throws Exception { + String apiListResp = restTemplate.getForObject("http://localhost:8001/apis/", String.class); + if (!apiListResp.contains("stock-api")) { + givenKongAdminAPI_whenAddAPI_thenAPIAccessibleViaKong(); + } + + PluginObject authPlugin = new PluginObject("key-auth"); + ResponseEntity enableAuthResp = restTemplate.postForEntity("http://localhost:8001/apis/stock-api/plugins", new HttpEntity<>(authPlugin), String.class); + + assertTrue(HttpStatus.CREATED == enableAuthResp.getStatusCode() || HttpStatus.CONFLICT == enableAuthResp.getStatusCode()); + + String pluginsResp = restTemplate.getForObject("http://localhost:8001/apis/stock-api/plugins", String.class); + assertTrue(pluginsResp.contains("key-auth")); + + HttpHeaders headers = new HttpHeaders(); + headers.set("Host", "stock.api"); + RequestEntity requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/stock/btc")); + ResponseEntity stockPriceResp = restTemplate.exchange(requestEntity, String.class); + assertEquals(HttpStatus.UNAUTHORIZED, stockPriceResp.getStatusCode()); + } + + @Test + public void givenAPIAuthEnabled_whenAddKey_thenAccessAllowed() throws Exception { + String apiListResp = restTemplate.getForObject("http://localhost:8001/apis/", String.class); + if (!apiListResp.contains("stock-api")) { + givenKongAdminAPI_whenAddAPI_thenAPIAccessibleViaKong(); + } + + String consumerListResp = restTemplate.getForObject("http://localhost:8001/consumers/", String.class); + if (!consumerListResp.contains("eugenp")) { + givenKongAdminAPI_whenAddAPIConsumer_thenAdded(); + } + + final String consumerKey = "eugenp.pass"; + KeyAuthObject keyAuth = new KeyAuthObject(consumerKey); + ResponseEntity keyAuthResp = restTemplate.postForEntity("http://localhost:8001/consumers/eugenp/key-auth", new HttpEntity<>(keyAuth), String.class); + + assertTrue(HttpStatus.CREATED == keyAuthResp.getStatusCode() || HttpStatus.CONFLICT == keyAuthResp.getStatusCode()); + + HttpHeaders headers = new HttpHeaders(); + headers.set("Host", "stock.api"); + headers.set("apikey", consumerKey); + RequestEntity requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/stock/btc")); + ResponseEntity stockPriceResp = restTemplate.exchange(requestEntity, String.class); + + assertEquals("10000", stockPriceResp.getBody()); + + headers.set("apikey", "wrongpass"); + requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/stock/btc")); + stockPriceResp = restTemplate.exchange(requestEntity, String.class); + assertEquals(HttpStatus.FORBIDDEN, stockPriceResp.getStatusCode()); + } + + @Test + public void givenAdminAPIProxy_whenAddAPIViaProxy_thenAPIAdded() throws Exception { + APIObject adminAPI = new APIObject("admin-api", "admin.api", "http://localhost:8001", "/admin-api"); + HttpEntity apiEntity = new HttpEntity<>(adminAPI); + ResponseEntity addAPIResp = restTemplate.postForEntity("http://localhost:8001/apis", apiEntity, String.class); + + assertTrue(HttpStatus.CREATED == addAPIResp.getStatusCode() || HttpStatus.CONFLICT == addAPIResp.getStatusCode()); + + HttpHeaders headers = new HttpHeaders(); + headers.set("Host", "admin.api"); + APIObject baeldungAPI = new APIObject("baeldung-api", "baeldung.com", "http://ww.baeldung.com", "/"); + RequestEntity requestEntity = new RequestEntity<>(baeldungAPI, headers, HttpMethod.POST, new URI("http://localhost:8000/admin-api/apis")); + addAPIResp = restTemplate.exchange(requestEntity, String.class); + + assertTrue(HttpStatus.CREATED == addAPIResp.getStatusCode() || HttpStatus.CONFLICT == addAPIResp.getStatusCode()); + } + +} diff --git a/spring-boot/src/test/java/com/baeldung/kong/KongLoadBalanceLiveTest.java b/spring-boot/src/test/java/com/baeldung/kong/KongLoadBalanceLiveTest.java new file mode 100644 index 0000000000..f8090e4c86 --- /dev/null +++ b/spring-boot/src/test/java/com/baeldung/kong/KongLoadBalanceLiveTest.java @@ -0,0 +1,68 @@ +package com.baeldung.kong; + +import com.baeldung.kong.domain.APIObject; +import com.baeldung.kong.domain.TargetObject; +import com.baeldung.kong.domain.UpstreamObject; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.*; +import org.springframework.test.context.junit4.SpringRunner; + +import java.net.URI; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.DEFINED_PORT; + +/** + * @author aiet + */ +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = DEFINED_PORT, classes = StockApp.class) +public class KongLoadBalanceLiveTest { + + @Before + public void init() { + System.setProperty("sun.net.http.allowRestrictedHeaders", "true"); + } + + @Autowired TestRestTemplate restTemplate; + + @Test + public void givenKongAdminAPI_whenAddAPI_thenAPIAccessibleViaKong() throws Exception { + UpstreamObject upstream = new UpstreamObject("stock.api.service"); + ResponseEntity addUpstreamResp = restTemplate.postForEntity("http://localhost:8001/upstreams", new HttpEntity<>(upstream), String.class); + assertTrue(HttpStatus.CREATED == addUpstreamResp.getStatusCode() || HttpStatus.CONFLICT == addUpstreamResp.getStatusCode()); + + TargetObject testTarget = new TargetObject("localhost:8080", 10); + ResponseEntity addTargetResp = restTemplate.postForEntity("http://localhost:8001/upstreams/stock.api.service/targets", new HttpEntity<>(testTarget), String.class); + assertTrue(HttpStatus.CREATED == addTargetResp.getStatusCode() || HttpStatus.CONFLICT == addTargetResp.getStatusCode()); + + TargetObject releaseTarget = new TargetObject("localhost:9090", 40); + addTargetResp = restTemplate.postForEntity("http://localhost:8001/upstreams/stock.api.service/targets", new HttpEntity<>(releaseTarget), String.class); + assertTrue(HttpStatus.CREATED == addTargetResp.getStatusCode() || HttpStatus.CONFLICT == addTargetResp.getStatusCode()); + + APIObject stockAPI = new APIObject("balanced-stock-api", "balanced.stock.api", "http://stock.api.service", "/"); + HttpEntity apiEntity = new HttpEntity<>(stockAPI); + ResponseEntity addAPIResp = restTemplate.postForEntity("http://localhost:8001/apis", apiEntity, String.class); + assertTrue(HttpStatus.CREATED == addAPIResp.getStatusCode() || HttpStatus.CONFLICT == addAPIResp.getStatusCode()); + + HttpHeaders headers = new HttpHeaders(); + headers.set("Host", "balanced.stock.api"); + for (int i = 0; i < 1000; i++) { + RequestEntity requestEntity = new RequestEntity<>(headers, HttpMethod.GET, new URI("http://localhost:8000/stock/btc")); + ResponseEntity stockPriceResp = restTemplate.exchange(requestEntity, String.class); + assertEquals("10000", stockPriceResp.getBody()); + } + + int releaseCount = restTemplate.getForObject("http://localhost:9090/stock/reqcount", Integer.class); + int testCount = restTemplate.getForObject("http://localhost:8080/stock/reqcount", Integer.class); + + assertTrue(Math.round(releaseCount * 1.0 / testCount) == 4); + } + +} diff --git a/spring-boot/src/test/java/com/baeldung/kong/domain/APIObject.java b/spring-boot/src/test/java/com/baeldung/kong/domain/APIObject.java new file mode 100644 index 0000000000..f386712444 --- /dev/null +++ b/spring-boot/src/test/java/com/baeldung/kong/domain/APIObject.java @@ -0,0 +1,54 @@ +package com.baeldung.kong.domain; + +/** + * @author aiet + */ +public class APIObject { + + public APIObject() { + } + + public APIObject(String name, String hosts, String upstream_url, String uris) { + this.name = name; + this.hosts = hosts; + this.upstream_url = upstream_url; + this.uris = uris; + } + + private String name; + private String hosts; + private String upstream_url; + private String uris; + + public String getUris() { + return uris; + } + + public void setUris(String uris) { + this.uris = uris; + } + + public String getUpstream_url() { + return upstream_url; + } + + public void setUpstream_url(String upstream_url) { + this.upstream_url = upstream_url; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getHosts() { + return hosts; + } + + public void setHosts(String hosts) { + this.hosts = hosts; + } +} diff --git a/spring-boot/src/test/java/com/baeldung/kong/domain/ConsumerObject.java b/spring-boot/src/test/java/com/baeldung/kong/domain/ConsumerObject.java new file mode 100644 index 0000000000..74bef8f2d1 --- /dev/null +++ b/spring-boot/src/test/java/com/baeldung/kong/domain/ConsumerObject.java @@ -0,0 +1,35 @@ +package com.baeldung.kong.domain; + +/** + * @author aiet + */ +public class ConsumerObject { + + private String username; + private String custom_id; + + public ConsumerObject(String username) { + this.username = username; + } + + public ConsumerObject(String username, String custom_id) { + this.username = username; + this.custom_id = custom_id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getCustom_id() { + return custom_id; + } + + public void setCustom_id(String custom_id) { + this.custom_id = custom_id; + } +} diff --git a/spring-boot/src/test/java/com/baeldung/kong/domain/KeyAuthObject.java b/spring-boot/src/test/java/com/baeldung/kong/domain/KeyAuthObject.java new file mode 100644 index 0000000000..80de6bfcd9 --- /dev/null +++ b/spring-boot/src/test/java/com/baeldung/kong/domain/KeyAuthObject.java @@ -0,0 +1,21 @@ +package com.baeldung.kong.domain; + +/** + * @author aiet + */ +public class KeyAuthObject { + + public KeyAuthObject(String key) { + this.key = key; + } + + private String key; + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } +} diff --git a/spring-boot/src/test/java/com/baeldung/kong/domain/PluginObject.java b/spring-boot/src/test/java/com/baeldung/kong/domain/PluginObject.java new file mode 100644 index 0000000000..c161fc9b54 --- /dev/null +++ b/spring-boot/src/test/java/com/baeldung/kong/domain/PluginObject.java @@ -0,0 +1,30 @@ +package com.baeldung.kong.domain; + +/** + * @author aiet + */ +public class PluginObject { + + private String name; + private String consumer_id; + + public PluginObject(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getConsumer_id() { + return consumer_id; + } + + public void setConsumer_id(String consumer_id) { + this.consumer_id = consumer_id; + } +} diff --git a/spring-boot/src/test/java/com/baeldung/kong/domain/TargetObject.java b/spring-boot/src/test/java/com/baeldung/kong/domain/TargetObject.java new file mode 100644 index 0000000000..79653e2846 --- /dev/null +++ b/spring-boot/src/test/java/com/baeldung/kong/domain/TargetObject.java @@ -0,0 +1,31 @@ +package com.baeldung.kong.domain; + +/** + * @author aiet + */ +public class TargetObject { + + public TargetObject(String target, int weight) { + this.target = target; + this.weight = weight; + } + + private String target; + private int weight; + + public String getTarget() { + return target; + } + + public void setTarget(String target) { + this.target = target; + } + + public int getWeight() { + return weight; + } + + public void setWeight(int weight) { + this.weight = weight; + } +} diff --git a/spring-boot/src/test/java/com/baeldung/kong/domain/UpstreamObject.java b/spring-boot/src/test/java/com/baeldung/kong/domain/UpstreamObject.java new file mode 100644 index 0000000000..6461381ac5 --- /dev/null +++ b/spring-boot/src/test/java/com/baeldung/kong/domain/UpstreamObject.java @@ -0,0 +1,21 @@ +package com.baeldung.kong.domain; + +/** + * @author aiet + */ +public class UpstreamObject { + + public UpstreamObject(String name) { + this.name = name; + } + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/spring-boot/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java b/spring-boot/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java index 17e7d2d9e0..5dd6ab8e17 100644 --- a/spring-boot/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java +++ b/spring-boot/src/test/java/org/baeldung/SpringBootMailIntegrationTest.java @@ -10,8 +10,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.web.context.WebApplicationContext; import org.subethamail.wiser.Wiser; import org.subethamail.wiser.WiserMessage; diff --git a/spring-boot/src/test/java/org/baeldung/converter/CustomConverterTest.java b/spring-boot/src/test/java/org/baeldung/converter/CustomConverterIntegrationTest.java similarity index 97% rename from spring-boot/src/test/java/org/baeldung/converter/CustomConverterTest.java rename to spring-boot/src/test/java/org/baeldung/converter/CustomConverterIntegrationTest.java index fb773fc44c..fc94fe7d7d 100644 --- a/spring-boot/src/test/java/org/baeldung/converter/CustomConverterTest.java +++ b/spring-boot/src/test/java/org/baeldung/converter/CustomConverterIntegrationTest.java @@ -19,7 +19,7 @@ import static org.assertj.core.api.Assertions.assertThat; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = Application.class) @WebAppConfiguration -public class CustomConverterTest { +public class CustomConverterIntegrationTest { @Autowired ConversionService conversionService; diff --git a/spring-boot/src/test/java/org/baeldung/converter/controller/StringToEmployeeConverterControllerTest.java b/spring-boot/src/test/java/org/baeldung/converter/controller/StringToEmployeeConverterControllerIntegrationTest.java similarity index 95% rename from spring-boot/src/test/java/org/baeldung/converter/controller/StringToEmployeeConverterControllerTest.java rename to spring-boot/src/test/java/org/baeldung/converter/controller/StringToEmployeeConverterControllerIntegrationTest.java index 06c3f740c2..3310eb9984 100644 --- a/spring-boot/src/test/java/org/baeldung/converter/controller/StringToEmployeeConverterControllerTest.java +++ b/spring-boot/src/test/java/org/baeldung/converter/controller/StringToEmployeeConverterControllerIntegrationTest.java @@ -19,7 +19,7 @@ import org.baeldung.boot.Application; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Application.class) @AutoConfigureMockMvc -public class StringToEmployeeConverterControllerTest { +public class StringToEmployeeConverterControllerIntegrationTest { @Autowired private MockMvc mockMvc; diff --git a/spring-boot/src/test/java/org/baeldung/repository/UserRepositoryTest.java b/spring-boot/src/test/java/org/baeldung/repository/UserRepositoryTest.java new file mode 100644 index 0000000000..227bb02db2 --- /dev/null +++ b/spring-boot/src/test/java/org/baeldung/repository/UserRepositoryTest.java @@ -0,0 +1,97 @@ +package org.baeldung.repository; + +import org.baeldung.boot.Application; +import org.baeldung.model.User; +import org.junit.After; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Optional; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.stream.Stream; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; + +/** + * Created by adam. + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class UserRepositoryTest { + + private final String USER_NAME_ADAM = "Adam"; + private final Integer ACTIVE_STATUS = 1; + + @Autowired + private UserRepository userRepository; + + @Test + public void shouldReturnEmptyOptionalWhenSearchByNameInEmptyDB() { + Optional foundUser = userRepository.findOneByName(USER_NAME_ADAM); + + assertThat(foundUser.isPresent(), equalTo(false)); + } + + @Test + public void shouldReturnOptionalWithPresentUserWhenExistsWithGivenName() { + User user = new User(); + user.setName(USER_NAME_ADAM); + userRepository.save(user); + + Optional foundUser = userRepository.findOneByName(USER_NAME_ADAM); + + assertThat(foundUser.isPresent(), equalTo(true)); + assertThat(foundUser.get() + .getName(), equalTo(USER_NAME_ADAM)); + } + + @Test + @Transactional + public void shouldReturnStreamOfUsersWithNameWhenExistWithSameGivenName() { + User user1 = new User(); + user1.setName(USER_NAME_ADAM); + userRepository.save(user1); + + User user2 = new User(); + user2.setName(USER_NAME_ADAM); + userRepository.save(user2); + + User user3 = new User(); + user3.setName(USER_NAME_ADAM); + userRepository.save(user3); + + User user4 = new User(); + user4.setName("SAMPLE"); + userRepository.save(user4); + + try (Stream foundUsersStream = userRepository.findAllByName(USER_NAME_ADAM)) { + assertThat(foundUsersStream.count(), equalTo(3l)); + } + } + + @Test + public void shouldReturnUserWithGivenStatusAsync() throws ExecutionException, InterruptedException { + User user = new User(); + user.setName(USER_NAME_ADAM); + user.setStatus(ACTIVE_STATUS); + userRepository.save(user); + + CompletableFuture userByStatus = userRepository.findOneByStatus(ACTIVE_STATUS); + + assertThat(userByStatus.get() + .getName(), equalTo(USER_NAME_ADAM)); + + } + + @After + public void cleanUp() { + userRepository.deleteAll(); + } + +} diff --git a/spring-cloud-cli/README.md b/spring-cloud-cli/README.md index 5f83ab06fa..7f29be3f07 100644 --- a/spring-cloud-cli/README.md +++ b/spring-cloud-cli/README.md @@ -3,4 +3,4 @@ ## Spring Cloud CLI ### Relevant Articles: -- [Introduction to Spring Cloud CLI](http://www.baeldung.com/introduction-to-spring-cloud-cli/) \ No newline at end of file +- [Introduction to Spring Cloud CLI](http://www.baeldung.com/spring-cloud-cli) diff --git a/spring-cloud-data-flow/batch-job/pom.xml b/spring-cloud-data-flow/batch-job/pom.xml index 9a40c80e37..f2e9f35c8e 100644 --- a/spring-cloud-data-flow/batch-job/pom.xml +++ b/spring-cloud-data-flow/batch-job/pom.xml @@ -12,10 +12,10 @@ Demo project for Spring Boot - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-cloud-data-flow/data-flow-server/pom.xml b/spring-cloud-data-flow/data-flow-server/pom.xml index ec0057191b..456a8abf4b 100644 --- a/spring-cloud-data-flow/data-flow-server/pom.xml +++ b/spring-cloud-data-flow/data-flow-server/pom.xml @@ -12,10 +12,10 @@ Demo project for Spring Boot - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-cloud-data-flow/data-flow-shell/pom.xml b/spring-cloud-data-flow/data-flow-shell/pom.xml index b34c3cefeb..edb300a3b3 100644 --- a/spring-cloud-data-flow/data-flow-shell/pom.xml +++ b/spring-cloud-data-flow/data-flow-shell/pom.xml @@ -12,10 +12,10 @@ Demo project for Spring Boot - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-cloud-data-flow/log-sink/pom.xml b/spring-cloud-data-flow/log-sink/pom.xml index b97a72d9c4..c07380de56 100644 --- a/spring-cloud-data-flow/log-sink/pom.xml +++ b/spring-cloud-data-flow/log-sink/pom.xml @@ -12,10 +12,10 @@ Demo project for Spring Boot - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-cloud-data-flow/time-processor/pom.xml b/spring-cloud-data-flow/time-processor/pom.xml index 9b190e7250..08d5e2b9be 100644 --- a/spring-cloud-data-flow/time-processor/pom.xml +++ b/spring-cloud-data-flow/time-processor/pom.xml @@ -12,10 +12,10 @@ Demo project for Spring Boot - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-cloud-data-flow/time-source/pom.xml b/spring-cloud-data-flow/time-source/pom.xml index 3112c7ede8..4d35e30be2 100644 --- a/spring-cloud-data-flow/time-source/pom.xml +++ b/spring-cloud-data-flow/time-source/pom.xml @@ -12,10 +12,10 @@ Demo project for Spring Boot - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-cloud/README.md b/spring-cloud/README.md index 1b793144b1..adaf3052e6 100644 --- a/spring-cloud/README.md +++ b/spring-cloud/README.md @@ -12,10 +12,11 @@ Client-side service discovery allows services to find and communicate with each other without hardcoding hostname and port. The only ‘fixed point’ in such an architecture consists of a service registry with which each service has to register. +### Relevant Articles: - [Intro to Spring Cloud Netflix - Hystrix](http://www.baeldung.com/spring-cloud-netflix-hystrix) - [Dockerizing a Spring Boot Application](http://www.baeldung.com/dockerizing-spring-boot-application) - [Introduction to Spring Cloud Rest Client with Netflix Ribbon](http://www.baeldung.com/spring-cloud-rest-client-with-netflix-ribbon) - -### Relevant Articles: -- [Introduction to Spring Cloud Rest Client with Netflix Ribbon](http://www.baeldung.com/spring-cloud-rest-client-with-netflix-ribbon) - [An Introduction to Spring Cloud Zookeeper](http://www.baeldung.com/spring-cloud-zookeeper) +- [A Quick Guide to Spring Cloud Consul](http://www.baeldung.com/spring-cloud-consul) +- [An Introduction to Spring Cloud Zookeeper](http://www.baeldung.com/spring-cloud-zookeeper) +- [Using a Spring Cloud App Starter](http://www.baeldung.com/using-a-spring-cloud-app-starter) +- [Spring Cloud Connectors and Heroku](http://www.baeldung.com/spring-cloud-heroku) diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index d11455f90c..d94b334bc8 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -20,7 +20,8 @@ spring-cloud-connectors-heroku spring-cloud-aws spring-cloud-consul - + spring-cloud-zuul-eureka-integration + pom spring-cloud @@ -43,8 +44,9 @@ 1.2.3.RELEASE 1.3.0.RELEASE 1.4.2.RELEASE - 3.6.0 + 3.7.0 1.4.2.RELEASE + 1.2.3.RELEASE diff --git a/spring-cloud/spring-cloud-aws/README.md b/spring-cloud/spring-cloud-aws/README.md index c5f58159c8..1340712c7a 100644 --- a/spring-cloud/spring-cloud-aws/README.md +++ b/spring-cloud/spring-cloud-aws/README.md @@ -19,3 +19,8 @@ to write the following in `application.properties`: cloud.aws.rds.spring-cloud-test-db cloud.aws.rds.spring-cloud-test-db.password=se3retpass ``` +Multiple application classes are available under this project. To launch InstanceProfileAwsApplication application, replace `start-class` under `pom.xml`: + +``` +com.baeldung.spring.cloud.aws.InstanceProfileAwsApplication +``` \ No newline at end of file diff --git a/spring-cloud/spring-cloud-aws/pom.xml b/spring-cloud/spring-cloud-aws/pom.xml index 632e050d92..b27b6c0d18 100644 --- a/spring-cloud/spring-cloud-aws/pom.xml +++ b/spring-cloud/spring-cloud-aws/pom.xml @@ -19,6 +19,7 @@ + com.baeldung.spring.cloud.aws.SpringCloudAwsApplication UTF-8 UTF-8 1.8 diff --git a/spring-cloud/spring-cloud-aws/src/main/java/com/baeldung/spring/cloud/aws/InstanceProfileAwsApplication.java b/spring-cloud/spring-cloud-aws/src/main/java/com/baeldung/spring/cloud/aws/InstanceProfileAwsApplication.java new file mode 100644 index 0000000000..80c0851a6f --- /dev/null +++ b/spring-cloud/spring-cloud-aws/src/main/java/com/baeldung/spring/cloud/aws/InstanceProfileAwsApplication.java @@ -0,0 +1,60 @@ +package com.baeldung.spring.cloud.aws; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.UUID; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.spring.cloud.aws.s3.SpringCloudS3Service; + +@Configuration +@EnableAutoConfiguration +@ComponentScan("com.baeldung.spring.cloud.aws.s3") +public class InstanceProfileAwsApplication { + + private static final Logger logger = LoggerFactory.getLogger(InstanceProfileAwsApplication.class); + private static final String applicationConfig = "spring.config.name:application-instance-profile"; + + private static String bucketName; + private static String fileName = "sample-file.txt"; + + private static void setupResources() { + bucketName = "baeldung-test-" + UUID.randomUUID() + .toString(); + try { + Files.write(Paths.get(fileName), "Hello World!".getBytes()); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } + + public static void main(String[] args) { + setupResources(); + if (!new File(fileName).exists()) { + logger.warn("Not able to create {} file. Check your folder permissions.", fileName); + System.exit(1); + } + + SpringApplication application = new SpringApplicationBuilder(InstanceProfileAwsApplication.class).properties(applicationConfig) + .build(); + ConfigurableApplicationContext context = application.run(args); + SpringCloudS3Service service = context.getBean(SpringCloudS3Service.class); + + // S3 bucket operations + service.createBucket(bucketName); + service.uploadObject(bucketName, fileName); + service.downloadObject(bucketName, fileName); + service.deleteBucket(bucketName); + } + +} diff --git a/spring-cloud/spring-cloud-aws/src/main/java/com/baeldung/spring/cloud/aws/s3/SpringCloudS3Service.java b/spring-cloud/spring-cloud-aws/src/main/java/com/baeldung/spring/cloud/aws/s3/SpringCloudS3Service.java new file mode 100644 index 0000000000..a0fdce2143 --- /dev/null +++ b/spring-cloud/spring-cloud-aws/src/main/java/com/baeldung/spring/cloud/aws/s3/SpringCloudS3Service.java @@ -0,0 +1,64 @@ +package com.baeldung.spring.cloud.aws.s3; + +import java.io.File; +import java.io.IOException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.model.ListObjectsV2Result; +import com.amazonaws.services.s3.model.S3ObjectSummary; + +@Component +public class SpringCloudS3Service { + + private static final Logger logger = LoggerFactory.getLogger(SpringCloudS3Service.class); + + @Autowired + AmazonS3 amazonS3; + + @Autowired + SpringCloudS3 springCloudS3; + + public void createBucket(String bucketName) { + logger.debug("Creating S3 bucket: {}", bucketName); + amazonS3.createBucket(bucketName); + logger.info("{} bucket created successfully", bucketName); + } + + public void downloadObject(String bucketName, String objectName) { + String s3Url = "s3://" + bucketName + "/" + objectName; + try { + springCloudS3.downloadS3Object(s3Url); + logger.info("{} file download result: {}", objectName, new File(objectName).exists()); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } + + public void uploadObject(String bucketName, String objectName) { + String s3Url = "s3://" + bucketName + "/" + objectName; + File file = new File(objectName); + try { + springCloudS3.uploadFileToS3(file, s3Url); + logger.info("{} file uploaded to S3", objectName); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } + + public void deleteBucket(String bucketName) { + logger.trace("Deleting S3 objects under {} bucket...", bucketName); + ListObjectsV2Result listObjectsV2Result = amazonS3.listObjectsV2(bucketName); + for (S3ObjectSummary objectSummary : listObjectsV2Result.getObjectSummaries()) { + logger.info("Deleting S3 object: {}", objectSummary.getKey()); + amazonS3.deleteObject(bucketName, objectSummary.getKey()); + } + logger.info("Deleting S3 bucket: {}", bucketName); + amazonS3.deleteBucket(bucketName); + } + +} diff --git a/spring-cloud/spring-cloud-aws/src/main/resources/InstanceProfileFormation.yaml b/spring-cloud/spring-cloud-aws/src/main/resources/InstanceProfileFormation.yaml new file mode 100644 index 0000000000..f8c3d3c915 --- /dev/null +++ b/spring-cloud/spring-cloud-aws/src/main/resources/InstanceProfileFormation.yaml @@ -0,0 +1,78 @@ +AWSTemplateFormatVersion: 2010-09-09 +Metadata: + 'AWS::CloudFormation::Designer': + 157e7d5f-5cb3-4a23-a50c-97e7f6c57173: + size: + width: 60 + height: 60 + position: + x: 450 + 'y': 90 + z: 0 + embeds: [] + 9bbaaa55-9cba-4555-a7c6-fb6ac248fd3a: + size: + width: 60 + height: 60 + position: + x: 260 + 'y': 90 + z: 0 + embeds: [] + isassociatedwith: + - 157e7d5f-5cb3-4a23-a50c-97e7f6c57173 + a7348729-a594-4dca-9b0a-e1c8d777dc3b: + size: + width: 60 + height: 60 + position: + x: 70 + 'y': 90 + z: 0 + embeds: [] +Resources: + IAMRoleBaeldung: + Type: 'AWS::IAM::Role' + Properties: + AssumeRolePolicyDocument: + Version: 2012-10-17 + Statement: + - Effect: Allow + Principal: + Service: + - ec2.amazonaws.com + Action: + - 'sts:AssumeRole' + ManagedPolicyArns: + - 'arn:aws:iam::aws:policy/AmazonS3FullAccess' + Metadata: + 'AWS::CloudFormation::Designer': + id: 157e7d5f-5cb3-4a23-a50c-97e7f6c57173 + InstanceProfileBaeldung: + Type: 'AWS::IAM::InstanceProfile' + Properties: + Roles: + - !Ref IAMRoleBaeldung + Metadata: + 'AWS::CloudFormation::Designer': + id: 9bbaaa55-9cba-4555-a7c6-fb6ac248fd3a + EC2Instance: + Type: 'AWS::EC2::Instance' + Properties: + ImageId: ami-2581aa40 + InstanceType: t2.micro + IamInstanceProfile: !Ref InstanceProfileBaeldung + KeyName: Satish-Ohio + UserData: !Base64 + 'Fn::Join': + - '' + - - | + #!/bin/bash + - | + apt -y install openjdk-8-jre-headless + Metadata: + 'AWS::CloudFormation::Designer': + id: a7348729-a594-4dca-9b0a-e1c8d777dc3b + DependsOn: + - InstanceProfileBaeldung + diff --git a/spring-cloud/spring-cloud-aws/src/main/resources/application-instance-profile.properties b/spring-cloud/spring-cloud-aws/src/main/resources/application-instance-profile.properties new file mode 100644 index 0000000000..23ca09c85c --- /dev/null +++ b/spring-cloud/spring-cloud-aws/src/main/resources/application-instance-profile.properties @@ -0,0 +1,14 @@ +# Don't try to create DataSouce when running tests which don't need a DataSource +spring.autoconfigure.exclude=\ + org.springframework.cloud.aws.autoconfigure.jdbc.AmazonRdsDatabaseAutoConfiguration,\ + org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration +cloud.aws.region.auto=true + +# Load instance profile credentials +cloud.aws.credentials.instanceProfile=true + +# Disable auto cloud formation +cloud.aws.stack.auto=false + +# Disable web environment +spring.main.web-environment=false \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/config/pom.xml b/spring-cloud/spring-cloud-bootstrap/config/pom.xml index 77ceedab39..f01ab55eb2 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/config/pom.xml @@ -7,10 +7,10 @@ 1.0.0-SNAPSHOT - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../../parent-boot-4 + ../../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml index 3156e0f3e6..137e9bebad 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml @@ -7,10 +7,10 @@ 1.0.0-SNAPSHOT - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../../parent-boot-4 + ../../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml index 84dc2a6ca9..f32de88076 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml @@ -7,10 +7,10 @@ 1.0.0-SNAPSHOT - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../../parent-boot-4 + ../../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml b/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml index d35e4f6576..9cc3cdb516 100644 --- a/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml @@ -8,10 +8,10 @@ 1.0.0-SNAPSHOT - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../../parent-boot-4 + ../../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml b/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml index 736a6114cf..3aa5cfa250 100644 --- a/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml @@ -8,10 +8,10 @@ 1.0.0-SNAPSHOT - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../../parent-boot-4 + ../../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml b/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml index 3b4c984721..7e0d146f95 100644 --- a/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml @@ -7,10 +7,10 @@ 1.0.0-SNAPSHOT - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../../parent-boot-4 + ../../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-config/client/src/test/java/com/baeldung/spring/cloud/config/client/ConfigClientLiveTest.java b/spring-cloud/spring-cloud-config/client/src/test/java/com/baeldung/spring/cloud/config/client/ConfigClientLiveTest.java index 058fd45f35..9bca369c64 100644 --- a/spring-cloud/spring-cloud-config/client/src/test/java/com/baeldung/spring/cloud/config/client/ConfigClientLiveTest.java +++ b/spring-cloud/spring-cloud-config/client/src/test/java/com/baeldung/spring/cloud/config/client/ConfigClientLiveTest.java @@ -1,14 +1,13 @@ package com.baeldung.spring.cloud.config.client; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = ConfigClient.class) +@SpringBootTest(classes = ConfigClient.class) @WebAppConfiguration public class ConfigClientLiveTest { @Test diff --git a/spring-cloud/spring-cloud-config/pom.xml b/spring-cloud/spring-cloud-config/pom.xml index 81693b7e2e..a5f3f5271d 100644 --- a/spring-cloud/spring-cloud-config/pom.xml +++ b/spring-cloud/spring-cloud-config/pom.xml @@ -15,10 +15,10 @@ - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-config/server/src/test/java/com/baeldung/spring/cloud/config/server/ConfigServerListIntegrationTest.java b/spring-cloud/spring-cloud-config/server/src/test/java/com/baeldung/spring/cloud/config/server/ConfigServerListIntegrationTest.java index 34c08cc815..c521a0d2ef 100644 --- a/spring-cloud/spring-cloud-config/server/src/test/java/com/baeldung/spring/cloud/config/server/ConfigServerListIntegrationTest.java +++ b/spring-cloud/spring-cloud-config/server/src/test/java/com/baeldung/spring/cloud/config/server/ConfigServerListIntegrationTest.java @@ -3,12 +3,12 @@ package com.baeldung.spring.cloud.config.server; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; @RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = ConfigServer.class) +@SpringBootTest(classes = ConfigServer.class) @WebAppConfiguration @Ignore public class ConfigServerListIntegrationTest { diff --git a/spring-cloud/spring-cloud-connectors-heroku/pom.xml b/spring-cloud/spring-cloud-connectors-heroku/pom.xml index ba3f0ef28f..83e8e360c8 100644 --- a/spring-cloud/spring-cloud-connectors-heroku/pom.xml +++ b/spring-cloud/spring-cloud-connectors-heroku/pom.xml @@ -88,7 +88,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.6.0 + 3.7.0 1.8 1.8 diff --git a/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/Book.java b/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/Book.java new file mode 100644 index 0000000000..6f45ef6a29 --- /dev/null +++ b/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/Book.java @@ -0,0 +1,39 @@ +package com.baeldung.spring.cloud.connectors.heroku.book; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class Book { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String title; + private String author; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } +} diff --git a/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/BookController.java b/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/BookController.java new file mode 100644 index 0000000000..eb2972f35a --- /dev/null +++ b/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/BookController.java @@ -0,0 +1,26 @@ +package com.baeldung.spring.cloud.connectors.heroku.book; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/books") +public class BookController { + + private final BookService bookService; + + @Autowired + public BookController(BookService bookService) { + this.bookService = bookService; + } + + @GetMapping("/{bookId}") + public Book findBook(@PathVariable Long bookId) { + return bookService.findBookById(bookId); + } + + @PostMapping + public Book createBook(@RequestBody Book book) { + return bookService.createBook(book); + } +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/BookRepository.java b/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/BookRepository.java new file mode 100644 index 0000000000..9bdf16148d --- /dev/null +++ b/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/BookRepository.java @@ -0,0 +1,6 @@ +package com.baeldung.spring.cloud.connectors.heroku.book; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface BookRepository extends JpaRepository{ +} diff --git a/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/BookService.java b/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/BookService.java new file mode 100644 index 0000000000..4978ded65f --- /dev/null +++ b/spring-cloud/spring-cloud-connectors-heroku/src/main/java/com/baeldung/spring/cloud/connectors/heroku/book/BookService.java @@ -0,0 +1,29 @@ +package com.baeldung.spring.cloud.connectors.heroku.book; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional(readOnly = true) +public class BookService { + private final BookRepository bookRepository; + + @Autowired + public BookService(BookRepository bookRepository) { + this.bookRepository = bookRepository; + } + + public Book findBookById(Long bookId) { + return bookRepository.findOne(bookId); + } + + @Transactional(propagation = Propagation.REQUIRED) + public Book createBook(Book book) { + Book newBook = new Book(); + newBook.setTitle(book.getTitle()); + newBook.setAuthor(book.getAuthor()); + return bookRepository.save(newBook); + } +} diff --git a/spring-cloud/spring-cloud-consul/pom.xml b/spring-cloud/spring-cloud-consul/pom.xml index 0a0650ec8b..7ce570d50d 100644 --- a/spring-cloud/spring-cloud-consul/pom.xml +++ b/spring-cloud/spring-cloud-consul/pom.xml @@ -18,7 +18,7 @@ UTF-8 - 3.6.0 + 3.7.0 diff --git a/spring-cloud/spring-cloud-eureka/pom.xml b/spring-cloud/spring-cloud-eureka/pom.xml index d1d564c9bf..e90609c48d 100644 --- a/spring-cloud/spring-cloud-eureka/pom.xml +++ b/spring-cloud/spring-cloud-eureka/pom.xml @@ -26,7 +26,7 @@ UTF-8 - 3.6.0 + 3.7.0 1.4.2.RELEASE diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml index 794a2a72f3..cd363ffef1 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml @@ -48,6 +48,11 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + org.springframework.boot diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml index 9c43d35b23..038a0ab81d 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml @@ -58,6 +58,11 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + org.springframework.boot diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml index 19df5e0e01..e4bae32011 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml @@ -43,6 +43,11 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + org.springframework.boot diff --git a/spring-cloud/spring-cloud-gateway/pom.xml b/spring-cloud/spring-cloud-gateway/pom.xml index 095ca4ea31..5142b25400 100644 --- a/spring-cloud/spring-cloud-gateway/pom.xml +++ b/spring-cloud/spring-cloud-gateway/pom.xml @@ -23,7 +23,7 @@ UTF-8 - 3.6.0 + 3.7.0 1.4.2.RELEASE diff --git a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml index 91ca3ced3f..5913b60a01 100644 --- a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml @@ -72,6 +72,11 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + org.springframework.boot diff --git a/spring-cloud/spring-cloud-hystrix/pom.xml b/spring-cloud/spring-cloud-hystrix/pom.xml index fe759cd0f1..9a6af9a790 100644 --- a/spring-cloud/spring-cloud-hystrix/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/pom.xml @@ -25,7 +25,7 @@ UTF-8 - 3.6.0 + 3.7.0 1.4.2.RELEASE diff --git a/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml b/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml index 6be3449502..46e408d339 100644 --- a/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml @@ -62,6 +62,11 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + org.springframework.boot diff --git a/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml b/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml index 796cb4159b..804ef2eb29 100644 --- a/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml @@ -30,6 +30,11 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + org.springframework.boot diff --git a/spring-cloud/spring-cloud-rest/pom.xml b/spring-cloud/spring-cloud-rest/pom.xml index d0e9999ef6..6983ee2c7c 100644 --- a/spring-cloud/spring-cloud-rest/pom.xml +++ b/spring-cloud/spring-cloud-rest/pom.xml @@ -25,7 +25,7 @@ UTF-8 - 3.6.0 + 3.7.0 1.4.2.RELEASE diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml index fb84b33876..07f6ae3b55 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml @@ -12,10 +12,10 @@ Simple books API - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../../parent-boot-4 + ../../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml index f0a563f16f..11320107be 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml @@ -12,10 +12,10 @@ Spring Cloud REST configuration server - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../../parent-boot-4 + ../../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml index 0735808eea..d8dbc660d0 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml @@ -12,10 +12,10 @@ Spring Cloud REST server - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../../parent-boot-4 + ../../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml index 2574cae4eb..4252947664 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml @@ -12,10 +12,10 @@ Simple reviews API - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../../parent-boot-4 + ../../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-ribbon-client/pom.xml b/spring-cloud/spring-cloud-ribbon-client/pom.xml index 68f3bd9439..85baff12cd 100644 --- a/spring-cloud/spring-cloud-ribbon-client/pom.xml +++ b/spring-cloud/spring-cloud-ribbon-client/pom.xml @@ -9,10 +9,10 @@ Introduction to Spring Cloud Rest Client with Netflix Ribbon - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-cloud/spring-cloud-security/README.md b/spring-cloud/spring-cloud-security/README.md new file mode 100644 index 0000000000..39af52c077 --- /dev/null +++ b/spring-cloud/spring-cloud-security/README.md @@ -0,0 +1,29 @@ +# README # + +This README would normally document whatever steps are necessary to get your application up and running. + +### What is this repository for? ### + +* Quick summary +* Version +* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo) + +### How do I get set up? ### + +* Summary of set up +* Configuration +* Dependencies +* Database configuration +* How to run tests +* Deployment instructions + +### Contribution guidelines ### + +* Writing tests +* Code review +* Other guidelines + +### Who do I talk to? ### + +* Repo owner or admin +* Other community or team contact \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/alias.rtf b/spring-cloud/spring-cloud-security/alias.rtf new file mode 100644 index 0000000000..15509e1c83 --- /dev/null +++ b/spring-cloud/spring-cloud-security/alias.rtf @@ -0,0 +1,28 @@ +myauthkey + + +security: + oauth2: + resource: + jwt: + keyValue: | + -----BEGIN PUBLIC KEY----- + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjj4JDMgT4OoaXisEd8Nz + uiLwum9mh8BH1l9Atpe+uZkepf3Vnv0Bhxn0BGR+kYGwEHZPVpWsHEyTfIRdinaQ + vlPaxWJquQW25yYstrCuQTKJvFjSO/cX/V4OGi1RUj76mOpwzkm1Kui3R7Sfh8Zo + WO0GiWIFJqNBsZ9b1wOfBMXnge+A+u/qxVNnTFpwCVj6k2Yb4YUsmLNCmND7E3Ra + BnrNQWqMU2numhV+ADpmVH08m/+pWdZ896uYu/tvQnz3agvZPcFsEst7LcNAWQFT + eNLkfwVfepKWa9jPELemtTLf1MkMppU+Lj1UNCr8x4Y6EupRDZhplVNtqYsPNDpO + 7wIDAQAB + -----END PUBLIC KEY----- + + + +jwt: + certificate: + store: + file: classpath:/certificate/my-auth-server.jks + password: storepassword + key: + alias: myauthserver + password: keypassword \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/authserver/pom.xml b/spring-cloud/spring-cloud-security/authserver/pom.xml new file mode 100644 index 0000000000..ed88ac046b --- /dev/null +++ b/spring-cloud/spring-cloud-security/authserver/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + + com.baeldung + authserver + 0.0.1-SNAPSHOT + + + + org.springframework.boot + spring-boot-starter-parent + 1.5.9.RELEASE + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-devtools + true + + + org.springframework.boot + spring-boot-starter-tomcat + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.cloud + spring-cloud-starter-oauth2 + 1.1.2.RELEASE + + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/AuthServer.java b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/AuthServer.java new file mode 100644 index 0000000000..c5b330b0e3 --- /dev/null +++ b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/AuthServer.java @@ -0,0 +1,12 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.*; + +@SpringBootApplication +public class AuthServer { + + public static void main(String[] args) { + SpringApplication.run(AuthServer.class, args); + } +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/AuthServerConfigurer.java b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/AuthServerConfigurer.java new file mode 100644 index 0000000000..32e445f998 --- /dev/null +++ b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/AuthServerConfigurer.java @@ -0,0 +1,77 @@ +package com.baeldung.config; + +import java.security.KeyPair; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; +import org.springframework.core.io.Resource; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer; +import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; +import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer; +import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter; +import org.springframework.security.oauth2.provider.token.store.KeyStoreKeyFactory; + +@Configuration +@EnableAuthorizationServer +@Order(6) +public class AuthServerConfigurer + extends + AuthorizationServerConfigurerAdapter { + + @Value("${jwt.certificate.store.file}") + private Resource keystore; + + @Value("${jwt.certificate.store.password}") + private String keystorePassword; + + @Value("${jwt.certificate.key.alias}") + private String keyAlias; + + @Value("${jwt.certificate.key.password}") + private String keyPassword; + + @Autowired + private UserDetailsService userDetailsService; + + @Override + public void configure( + ClientDetailsServiceConfigurer clients) + throws Exception { + clients + .inMemory() + .withClient("authserver") + .secret("passwordforauthserver") + .redirectUris("http://localhost:8080/") + .authorizedGrantTypes("authorization_code", + "refresh_token") + .scopes("myscope") + .autoApprove(true) + .accessTokenValiditySeconds(30) + .refreshTokenValiditySeconds(1800); + } + + @Override + public void configure( + AuthorizationServerEndpointsConfigurer endpoints) + throws Exception { + endpoints + .accessTokenConverter(jwtAccessTokenConverter()) + .userDetailsService(userDetailsService); + } + + @Bean + public JwtAccessTokenConverter jwtAccessTokenConverter() { + KeyStoreKeyFactory keyStoreKeyFactory = new KeyStoreKeyFactory( + keystore, keystorePassword.toCharArray()); + KeyPair keyPair = keyStoreKeyFactory.getKeyPair( + keyAlias, keyPassword.toCharArray()); + JwtAccessTokenConverter converter = new JwtAccessTokenConverter(); + converter.setKeyPair(keyPair); + return converter; + } +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/ResourceServerConfigurer.java b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/ResourceServerConfigurer.java new file mode 100644 index 0000000000..f97544dc59 --- /dev/null +++ b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/ResourceServerConfigurer.java @@ -0,0 +1,21 @@ +package com.baeldung.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; +import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter; + +/** + * Our configuration for the OAuth2 User Info Resource Server. + */ +@Configuration +@EnableResourceServer +public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter { + @Override + public void configure(HttpSecurity http) throws Exception { + http.antMatcher("/user") + .authorizeRequests() + .anyRequest() + .authenticated(); + } +} diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/WebMvcConfigurer.java b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/WebMvcConfigurer.java new file mode 100644 index 0000000000..23b56151e7 --- /dev/null +++ b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/WebMvcConfigurer.java @@ -0,0 +1,14 @@ +package com.baeldung.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@Configuration +public class WebMvcConfigurer extends WebMvcConfigurerAdapter { + + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("login").setViewName("login"); + } +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/WebSecurityConfigurer.java b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/WebSecurityConfigurer.java new file mode 100644 index 0000000000..44406b8fa0 --- /dev/null +++ b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/WebSecurityConfigurer.java @@ -0,0 +1,52 @@ +package com.baeldung.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableOAuth2Client; + +@Configuration +@EnableWebSecurity +@EnableOAuth2Client +public class WebSecurityConfigurer + extends + WebSecurityConfigurerAdapter { + + + @Override + protected void configure(HttpSecurity http) + throws Exception { + http + .authorizeRequests() + .antMatchers("/login**").permitAll() + .anyRequest().authenticated() + .and().csrf() + .and().formLogin().loginPage("/login"); + } + + @Override + protected void configure( + AuthenticationManagerBuilder auth) throws Exception { + auth + .inMemoryAuthentication() + .withUser("user").password("user") + .roles("USER") + .and() + .withUser("admin").password("admin") + .roles("USER", "ADMIN"); + } + + @Override + @Bean(name = "userDetailsService") + public UserDetailsService userDetailsServiceBean() + throws Exception { + return super.userDetailsServiceBean(); + } + + +} diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/controller/ResourceController.java b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/controller/ResourceController.java new file mode 100644 index 0000000000..739a6f6240 --- /dev/null +++ b/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/controller/ResourceController.java @@ -0,0 +1,20 @@ +package com.baeldung.controller; + +import java.security.Principal; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Because this application is also a User Info Resource Server, we expose info about the logged in user at: + * + * http://localhost:9090/auth/user + */ +@RestController +public class ResourceController { + + @RequestMapping("/user") + public Principal user(Principal user) { + return user; + } + +} diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/resources/application.yml b/spring-cloud/spring-cloud-security/authserver/src/main/resources/application.yml new file mode 100644 index 0000000000..1dc63d3f0e --- /dev/null +++ b/spring-cloud/spring-cloud-security/authserver/src/main/resources/application.yml @@ -0,0 +1,21 @@ +# Make the application available at http://localhost:7070/authserver +server: + port: 7070 + contextPath: /authserver + +# Our certificate settings for enabling JWT tokens +jwt: + certificate: + store: + file: classpath:/certificate/mykeystore.jks + password: abirkhan04 + key: + alias: myauthkey + password: abirkhan04 + + +security: + oauth2: + resource: + filter-order: 3 + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/resources/certificate/mykeystore.jks b/spring-cloud/spring-cloud-security/authserver/src/main/resources/certificate/mykeystore.jks new file mode 100644 index 0000000000..9cf25e3224 Binary files /dev/null and b/spring-cloud/spring-cloud-security/authserver/src/main/resources/certificate/mykeystore.jks differ diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/resources/templates/login.html b/spring-cloud/spring-cloud-security/authserver/src/main/resources/templates/login.html new file mode 100644 index 0000000000..f5ab5a6f26 --- /dev/null +++ b/spring-cloud/spring-cloud-security/authserver/src/main/resources/templates/login.html @@ -0,0 +1,29 @@ + + + + + Baeldung Spring cloud Security + + + +

Login

+ + +
+
+

Username and Password:

+

+ + +

+

+ + +

+

+ +

+
+
+ + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/mykeystore.jks b/spring-cloud/spring-cloud-security/mykeystore.jks new file mode 100644 index 0000000000..9cf25e3224 Binary files /dev/null and b/spring-cloud/spring-cloud-security/mykeystore.jks differ diff --git a/spring-cloud/spring-cloud-security/oauth2client/pom.xml b/spring-cloud/spring-cloud-security/oauth2client/pom.xml new file mode 100644 index 0000000000..fd1c6964e1 --- /dev/null +++ b/spring-cloud/spring-cloud-security/oauth2client/pom.xml @@ -0,0 +1,102 @@ + + + 4.0.0 + com.baeldung + oauth2client + 0.0.1-SNAPSHOT + jar + + oauth2client + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.5.9.RELEASE + + + + + + + org.springframework.cloud + spring-cloud-dependencies + Dalston.SR4 + pom + import + + + + + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-oauth2 + + + org.springframework.cloud + spring-cloud-starter-zuul + + + org.springframework.boot + spring-boot-starter-test + test + + + org.webjars + jquery + + + org.webjars + bootstrap + + + org.webjars + webjars-locator + + + + org.springframework.boot + spring-boot-starter-security + + + org.webjars + js-cookie + 2.1.0 + + + + org.springframework.boot + spring-boot-devtools + true + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/CloudSite.java b/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/CloudSite.java new file mode 100644 index 0000000000..a072605ec0 --- /dev/null +++ b/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/CloudSite.java @@ -0,0 +1,22 @@ +package com.baeldung; + + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +import com.baeldung.filters.SimpleFilter; + + +@SpringBootApplication +public class CloudSite { + public static void main(String[] args) { + SpringApplication.run(CloudSite.class, args); + } + + @Bean + public SimpleFilter simpleFilter() { + return new SimpleFilter(); + } + +} diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/config/SiteSecurityConfigurer.java b/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/config/SiteSecurityConfigurer.java new file mode 100644 index 0000000000..217edb22fb --- /dev/null +++ b/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/config/SiteSecurityConfigurer.java @@ -0,0 +1,49 @@ +package com.baeldung.config; + +import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; +import org.springframework.cloud.netflix.zuul.EnableZuulProxy; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.oauth2.client.OAuth2ClientContext; +import org.springframework.security.oauth2.client.OAuth2RestOperations; +import org.springframework.security.oauth2.client.OAuth2RestTemplate; +import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails; +import org.springframework.security.web.csrf.CookieCsrfTokenRepository; + +@EnableZuulProxy +@Configuration +@EnableOAuth2Sso +public class SiteSecurityConfigurer + extends + WebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) + throws Exception { + http.antMatcher("/**") + .authorizeRequests() + .antMatchers("/", "/webjars/**") + .permitAll() + .anyRequest() + .authenticated() + .and() + .logout() + .logoutSuccessUrl("/") + .permitAll() + .and() + .csrf() + .csrfTokenRepository( + CookieCsrfTokenRepository + .withHttpOnlyFalse()); + } + + @Bean + public OAuth2RestOperations restOperations( + OAuth2ProtectedResourceDetails resource, + OAuth2ClientContext context) { + return new OAuth2RestTemplate(resource, context); + } + +} diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/controller/CloudSiteController.java b/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/controller/CloudSiteController.java new file mode 100644 index 0000000000..b6bfd0bcf6 --- /dev/null +++ b/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/controller/CloudSiteController.java @@ -0,0 +1,30 @@ +package com.baeldung.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestOperations; +import org.springframework.web.servlet.ModelAndView; + +@RestController +public class CloudSiteController { + + @Autowired + private RestOperations restOperations; + + @GetMapping("/") + @ResponseBody + public String helloFromBaeldung() { + return "Hello From Baeldung!"; + } + + @GetMapping("/person") + public ModelAndView person() { + ModelAndView mav = new ModelAndView("personinfo"); + String personResourceUrl = "http://localhost:9000/personResource"; + mav.addObject("person", restOperations.getForObject(personResourceUrl, String.class)); + return mav; + } + +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/filters/SimpleFilter.java b/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/filters/SimpleFilter.java new file mode 100644 index 0000000000..98e25ac9c4 --- /dev/null +++ b/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/filters/SimpleFilter.java @@ -0,0 +1,39 @@ +package com.baeldung.filters; + +import javax.servlet.http.HttpServletRequest; +import com.netflix.zuul.context.RequestContext; +import com.netflix.zuul.ZuulFilter; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class SimpleFilter extends ZuulFilter { + + private static Logger log = LoggerFactory.getLogger(SimpleFilter.class); + + @Override + public String filterType() { + return "pre"; + } + + @Override + public int filterOrder() { + return 1; + } + + @Override + public boolean shouldFilter() { + return true; + } + + @Override + public Object run() { + RequestContext ctx = RequestContext.getCurrentContext(); + HttpServletRequest request = ctx.getRequest(); + + log.info(String.format("%s request to %s", request.getMethod(), request.getRequestURL().toString())); + + return null; + } + +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/resources/application.properties b/spring-cloud/spring-cloud-security/oauth2client/src/main/resources/application.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/resources/application.yml b/spring-cloud/spring-cloud-security/oauth2client/src/main/resources/application.yml new file mode 100644 index 0000000000..06a950d270 --- /dev/null +++ b/spring-cloud/spring-cloud-security/oauth2client/src/main/resources/application.yml @@ -0,0 +1,37 @@ +# Make the application available at http://localhost:8080 +# These are default settings, but we add them for clarity. +server: + port: 8080 + contextPath: / + +# Configure the Authorization Server and User Info Resource Server details +security: + oauth2: + client: + accessTokenUri: http://localhost:7070/authserver/oauth/token + userAuthorizationUri: http://localhost:7070/authserver/oauth/authorize + clientId: authserver + clientSecret: passwordforauthserver + resource: + userInfoUri: http://localhost:7070/authserver/user + +person: + url: http://localhost:9000/person + +# Proxies the calls to http://localhost:8080/api/* to our REST service at http://localhost:8081/* +# and automatically includes our OAuth2 token in the request headers +zuul: + routes: + resource: + path: /api/** + url: http://localhost:9000 + user: + path: /user/** + url: http://localhost:7070/authserver/user + +# Make sure the OAuth2 token is only relayed when using the internal API, +# do not pass any authentication to the external API +proxy: + auth: + routes: + api: oauth2 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/resources/templates/personinfo.html b/spring-cloud/spring-cloud-security/oauth2client/src/main/resources/templates/personinfo.html new file mode 100644 index 0000000000..bc3197e93a --- /dev/null +++ b/spring-cloud/spring-cloud-security/oauth2client/src/main/resources/templates/personinfo.html @@ -0,0 +1,13 @@ + + + + +Getting Personal Information + + +

Providing Person Information

+

+ Person's information: +

+ + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/test/java/com/example/springoath2/Springoath2ApplicationTests.java b/spring-cloud/spring-cloud-security/oauth2client/src/test/java/com/example/springoath2/Springoath2ApplicationTests.java new file mode 100644 index 0000000000..5fa51a61c3 --- /dev/null +++ b/spring-cloud/spring-cloud-security/oauth2client/src/test/java/com/example/springoath2/Springoath2ApplicationTests.java @@ -0,0 +1,16 @@ +package com.example.springoath2; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class Springoath2ApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/spring-cloud/spring-cloud-security/personresource/pom.xml b/spring-cloud/spring-cloud-security/personresource/pom.xml new file mode 100644 index 0000000000..ca1ff82515 --- /dev/null +++ b/spring-cloud/spring-cloud-security/personresource/pom.xml @@ -0,0 +1,70 @@ + + + 4.0.0 + + com.baeldung + personresource + 0.0.1-SNAPSHOT + jar + + personresource + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.5.9.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + Edgware.RELEASE + + + + + org.springframework.security.oauth + spring-security-oauth2 + + + org.springframework.cloud + spring-cloud-starter-security + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.security + spring-security-jwt + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/Application.java b/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/Application.java new file mode 100644 index 0000000000..8c087476bf --- /dev/null +++ b/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/Application.java @@ -0,0 +1,12 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/config/ResourceConfigurer.java b/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/config/ResourceConfigurer.java new file mode 100644 index 0000000000..977d74093a --- /dev/null +++ b/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/config/ResourceConfigurer.java @@ -0,0 +1,25 @@ +package com.baeldung.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; +import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter; + +/** + * REST API Resource Server. + */ +@Configuration +@EnableWebSecurity +@EnableResourceServer +@EnableGlobalMethodSecurity(prePostEnabled = true) // Allow method annotations like @PreAuthorize +public class ResourceConfigurer extends ResourceServerConfigurerAdapter { + + @Override + public void configure(HttpSecurity http) throws Exception { + http.httpBasic().disable(); + http.authorizeRequests().anyRequest().authenticated(); + } + +} diff --git a/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/controller/PersonInfoController.java b/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/controller/PersonInfoController.java new file mode 100644 index 0000000000..9e5420da5a --- /dev/null +++ b/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/controller/PersonInfoController.java @@ -0,0 +1,18 @@ +package com.baeldung.controller; + +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.model.Person; + +@RestController +public class PersonInfoController { + + @GetMapping("/personResource") + @PreAuthorize("hasAnyRole('ADMIN', 'USER')") + public @ResponseBody Person personInfo() { + return new Person("abir", "Dhaka", "Bangladesh", 29, "Male"); + } +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/model/Person.java b/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/model/Person.java new file mode 100644 index 0000000000..b568291da3 --- /dev/null +++ b/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/model/Person.java @@ -0,0 +1,59 @@ +package com.baeldung.model; + +public class Person { + + private String name; + private String city; + private String country; + private Integer age; + private String sex; + + public Person(String name, String city, String country, Integer age, String sex) { + this.name = name; + this.city = city; + this.country = country; + this.age = age; + this.sex = sex; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/personresource/src/main/resources/application.yml b/spring-cloud/spring-cloud-security/personresource/src/main/resources/application.yml new file mode 100644 index 0000000000..20a3313a60 --- /dev/null +++ b/spring-cloud/spring-cloud-security/personresource/src/main/resources/application.yml @@ -0,0 +1,22 @@ +# Make the application available at http://localhost:9000 + +server: + port: 9000 + +# Configure the public key to use for verifying the incoming JWT tokens +security: + sessions: NEVER + oauth2: + resource: + userInfoUri: http://localhost:7070/authserver/user + jwt: + keyValue: | + -----BEGIN PUBLIC KEY----- + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhiiifKv6Otf5PyqIE+LQ + EiJRRh6q8piPY9Okq+RfRu9Bue0D8hq7aFxcgkLZ6Bg9CAS+w1KdaE5MMeOCVVxv + rpRETzVpAsh6GL5nBc679jSqMzjr3V4uty46ilL4VHKSxlZh5Nmz5EMHPI5iwpNs + 8U5n3QiwsTk514FXad54xPSPH3i/pDzGSZHrVcwDVaOKn7gFiIqP86vkJB47JZv8 + T6P5RK7Rj06zoG45DMGWG3DQv6o1/Jm4IJQWj0AUD3bSHqzXkPr7qyMYvkE4kyMH + 6aVAsAYMxilZFlJMv2b8N883gdi3LEeOJo8zZr5IWyyROfepdeOL7UkAXddAj+dL + WQIDAQAB + -----END PUBLIC KEY----- \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/personresource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationTests.java b/spring-cloud/spring-cloud-security/personresource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationTests.java new file mode 100644 index 0000000000..e0fe7006d9 --- /dev/null +++ b/spring-cloud/spring-cloud-security/personresource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationTests.java @@ -0,0 +1,16 @@ +package com.baeldung.service.personservice; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class PersonserviceApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/spring-cloud/spring-cloud-security/pubkey.txt b/spring-cloud/spring-cloud-security/pubkey.txt new file mode 100644 index 0000000000..2c391ba2dd --- /dev/null +++ b/spring-cloud/spring-cloud-security/pubkey.txt @@ -0,0 +1,30 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhiiifKv6Otf5PyqIE+LQ +EiJRRh6q8piPY9Okq+RfRu9Bue0D8hq7aFxcgkLZ6Bg9CAS+w1KdaE5MMeOCVVxv +rpRETzVpAsh6GL5nBc679jSqMzjr3V4uty46ilL4VHKSxlZh5Nmz5EMHPI5iwpNs +8U5n3QiwsTk514FXad54xPSPH3i/pDzGSZHrVcwDVaOKn7gFiIqP86vkJB47JZv8 +T6P5RK7Rj06zoG45DMGWG3DQv6o1/Jm4IJQWj0AUD3bSHqzXkPr7qyMYvkE4kyMH +6aVAsAYMxilZFlJMv2b8N883gdi3LEeOJo8zZr5IWyyROfepdeOL7UkAXddAj+dL +WQIDAQAB +-----END PUBLIC KEY----- +-----BEGIN CERTIFICATE----- +MIIDfzCCAmegAwIBAgIEDqsC7jANBgkqhkiG9w0BAQsFADBwMQswCQYDVQQGEwI4 +ODETMBEGA1UECBMKQmFuZ2xhZGVzaDEOMAwGA1UEBxMFRGhha2ExETAPBgNVBAoT +CEJhZWxkdW5nMRUwEwYDVQQLEwxCYWVsZHVuZ2Jsb2cxEjAQBgNVBAMTCWxvY2Fs +aG9zdDAeFw0xNzEyMjUxNDE0MDhaFw0xODAzMjUxNDE0MDhaMHAxCzAJBgNVBAYT +Ajg4MRMwEQYDVQQIEwpCYW5nbGFkZXNoMQ4wDAYDVQQHEwVEaGFrYTERMA8GA1UE +ChMIQmFlbGR1bmcxFTATBgNVBAsTDEJhZWxkdW5nYmxvZzESMBAGA1UEAxMJbG9j +YWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhiiifKv6Otf5 +PyqIE+LQEiJRRh6q8piPY9Okq+RfRu9Bue0D8hq7aFxcgkLZ6Bg9CAS+w1KdaE5M +MeOCVVxvrpRETzVpAsh6GL5nBc679jSqMzjr3V4uty46ilL4VHKSxlZh5Nmz5EMH +PI5iwpNs8U5n3QiwsTk514FXad54xPSPH3i/pDzGSZHrVcwDVaOKn7gFiIqP86vk +JB47JZv8T6P5RK7Rj06zoG45DMGWG3DQv6o1/Jm4IJQWj0AUD3bSHqzXkPr7qyMY +vkE4kyMH6aVAsAYMxilZFlJMv2b8N883gdi3LEeOJo8zZr5IWyyROfepdeOL7UkA +XddAj+dLWQIDAQABoyEwHzAdBgNVHQ4EFgQUHLFYkq36Wami5qsVRe/1eQedmdgw +DQYJKoZIhvcNAQELBQADggEBABL3lYyuRd6Hv8DPus/zQL0bRl6gVsEzczwmWMUA +3NJZbUHAD/KC732aArvKIKykkbLG6K/Mhnfuu8YBfWzTvGgY3Ww+ka2sJFOsUW7r +sa6OBtNHh4zhDYN2Weza+4jnRLxtkzFbm6v2sheFkyB1NywCwFE/6p1Z6KTG8RyJ +gw/OHl6rb+Y/T6cOeeTCFUN/v+qRVSB9I/MjSK5wRNbFT+MyNUeL6gsiyIvxSZbj +y4vrjGHkXasSmwkfvgw67mJMk4XTGrVLjIXUTyzbdSmodcv8N6nrsIk4SBYCnTrI +E/5NtNgbOFGwovde5yNrZIjjAC1VGOmVFhcxFJpwT6ZkSks= +-----END CERTIFICATE----- diff --git a/spring-cloud/spring-cloud-stream-starters/bash/hadoop.sh b/spring-cloud/spring-cloud-stream-starters/bash/hadoop.sh new file mode 100644 index 0000000000..ca8298430b --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/bash/hadoop.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +# For Ubuntu 14.04 +# Inspired from: https://github.com/curran/setupHadoop/blob/master/setupHadoop.sh +# Use from the user directory + +# Install Java +sudo apt-get update +sudo add-apt-repository -y ppa:webupd8team/java +sudo apt-get install -y oracle-java8-installer + +# Install Hadoop +curl -O http://mirror.cogentco.com/pub/apache/hadoop/common/hadoop-2.8.2/hadoop-2.8.2.tar.gz +tar xfz hadoop-2.8.2.tar.gz +sudo mv hadoop-2.8.2 /usr/local/hadoop +rm hadoop-2.8.2.tar.gz + +# Environmental Variables +echo export JAVA_HOME=/usr/lib/jvm/java-8-oracle >> ~/.bashrc +echo export HADOOP_PREFIX=/usr/local/hadoop >> ~/.bashrc +echo export PATH=\$PATH:/usr/local/hadoop/bin >> ~/.bashrc +echo export PATH=\$PATH:/usr/local/hadoop/sbin >> ~/.bashrc +source ~/.bashrc + +# Copy configuration files +cp master/* /usr/local/hadoop/etc/hadoop/ + +# Format HDFS +hdfs namenode -format + +# SSH keys for Hadoop to use. +ssh-keygen -t rsa -P 'password' -f ~/.ssh/id_rsa.pub +sudo mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys + +# SSH +ssh localhost +# authenticate with osboxes.org + +# Start NameNode daemon and DataNode daemon +start-dfs.sh +# stop-dfs.sh + +# Install Maven +sudo apt-get install maven + +# Access Hadoop - http://localhost:50070 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream-starters/boot/.gitignore b/spring-cloud/spring-cloud-stream-starters/boot/.gitignore new file mode 100644 index 0000000000..e4b82e1c0f --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/boot/.gitignore @@ -0,0 +1,3 @@ +.idea +*/target/* +*.iml diff --git a/spring-cloud/spring-cloud-stream-starters/boot/pom.xml b/spring-cloud/spring-cloud-stream-starters/boot/pom.xml new file mode 100644 index 0000000000..3e6bc134e3 --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/boot/pom.xml @@ -0,0 +1,55 @@ + + + 4.0.0 + com.baeldung.twitterhdfs + twitterhdfs + jar + 1.0.0 + + twitterhdfs + + + UTF-8 + UTF-8 + 1.8 + + + + org.springframework.boot + spring-boot-starter-parent + 1.5.8.RELEASE + + + + + + org.springframework.cloud.stream.app + spring-cloud-starter-stream-source-twitterstream + 1.3.1.RELEASE + + + org.springframework.cloud.stream.app + spring-cloud-starter-stream-sink-hdfs + 1.3.1.RELEASE + + + + + javax.servlet + jstl + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + twitterhdfs + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/aggregate/AggregateApp.java b/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/aggregate/AggregateApp.java new file mode 100644 index 0000000000..8b9ca6dc62 --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/aggregate/AggregateApp.java @@ -0,0 +1,18 @@ +package com.baeldung.twitterhdfs.aggregate; + +import com.baeldung.twitterhdfs.processor.ProcessorApp; +import com.baeldung.twitterhdfs.source.SourceApp; +import com.baeldung.twitterhdfs.sink.SinkApp; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.stream.aggregate.AggregateApplicationBuilder; + +@SpringBootApplication +public class AggregateApp { + public static void main(String[] args) { + new AggregateApplicationBuilder() + .from(SourceApp.class).args("--fixedDelay=5000") + .via(ProcessorApp.class) + .to(SinkApp.class).args("--debug=true") + .run(args); + } +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/processor/ProcessorApp.java b/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/processor/ProcessorApp.java new file mode 100644 index 0000000000..e3bd1197f6 --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/processor/ProcessorApp.java @@ -0,0 +1,20 @@ +package com.baeldung.twitterhdfs.processor; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.stream.annotation.EnableBinding; +import org.springframework.cloud.stream.messaging.Processor; +import org.springframework.integration.annotation.Transformer; + +@SpringBootApplication +@EnableBinding(Processor.class) +public class ProcessorApp { + Logger log = LoggerFactory.getLogger(ProcessorApp.class); + + @Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT) + public String processMessage(String payload) { + log.info("Payload received!"); + return payload; + } +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/sink/SinkApp.java b/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/sink/SinkApp.java new file mode 100644 index 0000000000..c0c1e287d3 --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/sink/SinkApp.java @@ -0,0 +1,22 @@ +package com.baeldung.twitterhdfs.sink; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.stream.annotation.EnableBinding; +import org.springframework.cloud.stream.app.hdfs.sink.HdfsSinkConfiguration; +import org.springframework.cloud.stream.messaging.Sink; +import org.springframework.context.annotation.Import; +import org.springframework.integration.annotation.ServiceActivator; + +@SpringBootApplication +@EnableBinding(Sink.class) +@Import(HdfsSinkConfiguration.class) +public class SinkApp { + Logger log = LoggerFactory.getLogger(SinkApp.class); + + @ServiceActivator(inputChannel= Sink.INPUT) + public void loggerSink(Object payload) { + log.info("Received: " + payload); + } +} \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/source/SourceApp.java b/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/source/SourceApp.java new file mode 100644 index 0000000000..f9b220561b --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/boot/src/main/java/com/baeldung/twitterhdfs/source/SourceApp.java @@ -0,0 +1,26 @@ +package com.baeldung.twitterhdfs.source; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.stream.annotation.EnableBinding; +import org.springframework.cloud.stream.app.twitterstream.source.TwitterstreamSourceConfiguration; +import org.springframework.cloud.stream.messaging.Source; +import org.springframework.context.annotation.Import; +import org.springframework.integration.annotation.InboundChannelAdapter; + +import java.text.SimpleDateFormat; +import java.util.Date; + +@SpringBootApplication +@EnableBinding(Source.class) +@Import(TwitterstreamSourceConfiguration.class) +public class SourceApp { + Logger log = LoggerFactory.getLogger(SourceApp.class); + + @InboundChannelAdapter(value = Source.OUTPUT) + public String timerMessageSource() { + return new SimpleDateFormat().format(new Date()); + } + +} diff --git a/spring-cloud/spring-cloud-stream-starters/boot/src/main/resources/application.properties b/spring-cloud/spring-cloud-stream-starters/boot/src/main/resources/application.properties new file mode 100644 index 0000000000..298a8ebf4d --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/boot/src/main/resources/application.properties @@ -0,0 +1,6 @@ +hdfs.fs-uri=hdfs://127.0.0.1:50010/ + +twitter.credentials.access-token= +twitter.credentials.access-token-secret= +twitter.credentials.consumer-key= +twitter.credentials.consumer-secret= \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream-starters/hdfs/application.properties b/spring-cloud/spring-cloud-stream-starters/hdfs/application.properties new file mode 100644 index 0000000000..1f4aaf88dd --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/hdfs/application.properties @@ -0,0 +1 @@ +hdfs.fs-uri=hdfs://127.0.0.1:50010/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream-starters/hdfs/hdfs.sh b/spring-cloud/spring-cloud-stream-starters/hdfs/hdfs.sh new file mode 100644 index 0000000000..f1c6bfcf3f --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/hdfs/hdfs.sh @@ -0,0 +1,11 @@ +# Git spring-cloud-stream-app-starters +# https://github.com/spring-cloud-stream-app-starters/hdfs/blob/master/spring-cloud-starter-stream-sink-hdfs/README.adoc +git clone https://github.com/spring-cloud-stream-app-starters/hdfs.git + +# Build it +./mvnw clean install -PgenerateApps + +# Run it +cd target +# Optionally inject application.properties prior to build +java -jar hdfs-sink.jar --fsUri=hdfs://127.0.0.1:50010/ \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream-starters/twitter/application.properties b/spring-cloud/spring-cloud-stream-starters/twitter/application.properties new file mode 100644 index 0000000000..e38612d25e --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/twitter/application.properties @@ -0,0 +1,4 @@ +twitter.credentials.access-token= +twitter.credentials.access-token-secret= +twitter.credentials.consumer-key= +twitter.credentials.consumer-secret= \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream-starters/twitter/twitter.sh b/spring-cloud/spring-cloud-stream-starters/twitter/twitter.sh new file mode 100644 index 0000000000..967cb54dfe --- /dev/null +++ b/spring-cloud/spring-cloud-stream-starters/twitter/twitter.sh @@ -0,0 +1,12 @@ +# Git spring-cloud-stream-app-starters +# https://github.com/spring-cloud-stream-app-starters/hdfs/blob/master/spring-cloud-starter-stream-sink-hdfs/README.adoc +git clone https://github.com/spring-cloud-stream-app-starters/twitter.git + +# Build it +./mvnw clean install -PgenerateApps + +# Run it +cd target +# Optionally inject application.properties prior to build +java -jar twitter_stream_source.jar --consumerKey= --consumerSecret= \ + --accessToken= --accessTokenSecret= \ No newline at end of file diff --git a/spring-cloud/spring-cloud-stream/pom.xml b/spring-cloud/spring-cloud-stream/pom.xml index 5ec24268d9..65a327e664 100644 --- a/spring-cloud/spring-cloud-stream/pom.xml +++ b/spring-cloud/spring-cloud-stream/pom.xml @@ -22,7 +22,7 @@ UTF-8 - 3.6.0 + 3.7.0 diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/pom.xml new file mode 100644 index 0000000000..a3185a44d4 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/pom.xml @@ -0,0 +1,68 @@ + + + 4.0.0 + + eureka-client + 1.0.0-SNAPSHOT + jar + + Spring Cloud Eureka Client + Spring Cloud Eureka Sample Client + + + com.baeldung.spring.cloud + spring-cloud-zuul-eureka-integration + 1.0.0-SNAPSHOT + + + + + org.springframework.cloud + spring-cloud-starter-eureka + ${spring-cloud-starter-eureka.version} + + + org.springframework.boot + spring-boot-starter-web + ${spring-boot-starter-web.version} + + + + + + + org.springframework.cloud + spring-cloud-starter-parent + ${spring-cloud-dependencies.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + Brixton.SR7 + 1.2.3.RELEASE + 1.4.2.RELEASE + + diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/src/main/resources/application.yml new file mode 100644 index 0000000000..08624aa159 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/src/main/resources/application.yml @@ -0,0 +1,13 @@ +spring: + application: + name: spring-cloud-eureka-client + +server: + port: 0 + +eureka: + client: + serviceUrl: + defaultZone: ${EUREKA_URI:http://localhost:8761/eureka} + instance: + preferIpAddress: true \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/pom.xml new file mode 100644 index 0000000000..d86cfa8589 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/pom.xml @@ -0,0 +1,68 @@ + + + 4.0.0 + + eureka-server + 1.0.0-SNAPSHOT + jar + + Spring Cloud Eureka Server + Spring Cloud Eureka Server Demo + + + com.baeldung.spring.cloud + spring-cloud-zuul-eureka-integration + 1.0.0-SNAPSHOT + + + + + org.springframework.cloud + spring-cloud-starter-eureka-server + ${spring-cloud-starter-eureka.version} + + + commons-configuration + commons-configuration + ${commons-config.version} + + + + + + + + org.springframework.cloud + spring-cloud-starter-parent + ${spring-cloud-dependencies.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + Brixton.SR7 + 1.2.3.RELEASE + + diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/src/main/resources/application.yml new file mode 100644 index 0000000000..49c3179bb5 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/src/main/resources/application.yml @@ -0,0 +1,7 @@ +server: + port: 8761 + +eureka: + client: + registerWithEureka: false + fetchRegistry: false \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/pom.xml new file mode 100644 index 0000000000..fabad77a77 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/pom.xml @@ -0,0 +1,55 @@ + + + 4.0.0 + + com.baeldung.spring.cloud + spring-cloud-zuul-eureka-integration + 1.0.0-SNAPSHOT + + pom + + Spring Cloud Zuul and Eureka Integration + Spring Cloud Zuul and Eureka Integration + + + com.baeldung.spring.cloud + spring-cloud + 1.0.0-SNAPSHOT + .. + + + + UTF-8 + 3.7.0 + 1.4.2.RELEASE + 1.10 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot-maven-plugin.version} + + + + + + zuul-server + eureka-server + eureka-client + + diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/pom.xml new file mode 100644 index 0000000000..2622a3e36b --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/pom.xml @@ -0,0 +1,61 @@ + + 4.0.0 + + com.baeldung.spring.cloud + spring-cloud-zuul-eureka-integration + 1.0.0-SNAPSHOT + + zuul-server + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-zuul + + + org.springframework.cloud + spring-cloud-starter-eureka + + + commons-configuration + commons-configuration + ${commons-config.version} + + + org.springframework.boot + spring-boot-starter-security + + + + + + org.springframework.cloud + spring-cloud-starter-parent + ${spring-cloud-dependencies.version} + pom + import + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/src/main/resources/application.properties b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/src/main/resources/application.properties new file mode 100644 index 0000000000..cb1dca78c2 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/src/main/resources/application.properties @@ -0,0 +1,9 @@ +server.port=8762 +spring.application.name=zuul-server +eureka.instance.preferIpAddress=true +eureka.client.registerWithEureka=true +eureka.client.fetchRegistry=true +eureka.serviceurl.defaultzone=http://localhost:8761/eureka/ +management.security.enabled=false +security.basic.enabled=false +hystrix.command.default.execution.timeout.enabled=false diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml new file mode 100644 index 0000000000..a3185a44d4 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml @@ -0,0 +1,68 @@ + + + 4.0.0 + + eureka-client + 1.0.0-SNAPSHOT + jar + + Spring Cloud Eureka Client + Spring Cloud Eureka Sample Client + + + com.baeldung.spring.cloud + spring-cloud-zuul-eureka-integration + 1.0.0-SNAPSHOT + + + + + org.springframework.cloud + spring-cloud-starter-eureka + ${spring-cloud-starter-eureka.version} + + + org.springframework.boot + spring-boot-starter-web + ${spring-boot-starter-web.version} + + + + + + + org.springframework.cloud + spring-cloud-starter-parent + ${spring-cloud-dependencies.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + Brixton.SR7 + 1.2.3.RELEASE + 1.4.2.RELEASE + + diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/EurekaClientApplication.java b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/EurekaClientApplication.java new file mode 100644 index 0000000000..9bbb121408 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/EurekaClientApplication.java @@ -0,0 +1,37 @@ +package com.baeldung.spring.cloud.eureka.client; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.context.annotation.Lazy; +import org.springframework.web.bind.annotation.RestController; + +import com.netflix.discovery.EurekaClient; + +@SpringBootApplication +@EnableEurekaClient +@RestController +public class EurekaClientApplication implements GreetingController { + @Autowired + @Lazy + private EurekaClient eurekaClient; + + @Value("${spring.application.name}") + private String appName; + + @Value("${server.port}") + private String portNumber; + + public static void main(String[] args) { + SpringApplication.run(EurekaClientApplication.class, args); + } + + @Override + public String greeting() { + System.out.println("Request received on port number " + portNumber); + return String.format("Hello from '%s with Port Number %s'!", eurekaClient.getApplication(appName) + .getName(), portNumber); + } +} diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/GreetingController.java b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/GreetingController.java new file mode 100644 index 0000000000..33ee2574b7 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/GreetingController.java @@ -0,0 +1,8 @@ +package com.baeldung.spring.cloud.eureka.client; + +import org.springframework.web.bind.annotation.RequestMapping; + +public interface GreetingController { + @RequestMapping("/greeting") + String greeting(); +} diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml new file mode 100644 index 0000000000..9fa929e16b --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml @@ -0,0 +1,13 @@ +spring: + application: + name: spring-cloud-eureka-client + +server: + port: 8081 + +eureka: + client: + serviceUrl: + defaultZone: ${EUREKA_URI:http://localhost:8761/eureka} + instance: + preferIpAddress: true \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml new file mode 100644 index 0000000000..d86cfa8589 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml @@ -0,0 +1,68 @@ + + + 4.0.0 + + eureka-server + 1.0.0-SNAPSHOT + jar + + Spring Cloud Eureka Server + Spring Cloud Eureka Server Demo + + + com.baeldung.spring.cloud + spring-cloud-zuul-eureka-integration + 1.0.0-SNAPSHOT + + + + + org.springframework.cloud + spring-cloud-starter-eureka-server + ${spring-cloud-starter-eureka.version} + + + commons-configuration + commons-configuration + ${commons-config.version} + + + + + + + + org.springframework.cloud + spring-cloud-starter-parent + ${spring-cloud-dependencies.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + Brixton.SR7 + 1.2.3.RELEASE + + diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/java/com/baeldung/spring/cloud/eureka/server/EurekaServerApplication.java b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/java/com/baeldung/spring/cloud/eureka/server/EurekaServerApplication.java new file mode 100644 index 0000000000..d55145448d --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/java/com/baeldung/spring/cloud/eureka/server/EurekaServerApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.spring.cloud.eureka.server; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; + +@SpringBootApplication +@EnableEurekaServer +public class EurekaServerApplication { + public static void main(String[] args) { + SpringApplication.run(EurekaServerApplication.class, args); + } +} diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/resources/application.yml new file mode 100644 index 0000000000..49c3179bb5 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/resources/application.yml @@ -0,0 +1,7 @@ +server: + port: 8761 + +eureka: + client: + registerWithEureka: false + fetchRegistry: false \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/pom.xml new file mode 100644 index 0000000000..b4c7188abe --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/pom.xml @@ -0,0 +1,56 @@ + + + 4.0.0 + + com.baeldung.spring.cloud + spring-cloud-zuul-eureka-integration + 1.0.0-SNAPSHOT + + pom + + Spring Cloud Zuul and Eureka Integration + Spring Cloud Zuul and Eureka Integration + + + com.baeldung.spring.cloud + spring-cloud + 1.0.0-SNAPSHOT + .. + + + + UTF-8 + 3.7.0 + 1.4.2.RELEASE + 1.10 + 1.2.10 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot-maven-plugin.version} + + + + + + zuul-server + eureka-server + eureka-client + + diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml new file mode 100644 index 0000000000..b68fd63155 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml @@ -0,0 +1,66 @@ + + 4.0.0 + + com.baeldung.spring.cloud + spring-cloud-zuul-eureka-integration + 1.0.0-SNAPSHOT + + zuul-server + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-zuul + + + org.springframework.cloud + spring-cloud-starter-eureka + + + commons-configuration + commons-configuration + ${commons-config.version} + + + io.reactivex + rxjava + ${rxjava.version} + + + org.springframework.boot + spring-boot-starter-security + + + + + + org.springframework.cloud + spring-cloud-starter-parent + ${spring-cloud-dependencies.version} + pom + import + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/java/com/baeldung/spring/cloud/zuul/config/ZuulConfig.java b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/java/com/baeldung/spring/cloud/zuul/config/ZuulConfig.java new file mode 100644 index 0000000000..52488cad69 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/java/com/baeldung/spring/cloud/zuul/config/ZuulConfig.java @@ -0,0 +1,15 @@ +package com.baeldung.spring.cloud.zuul.config; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.netflix.zuul.EnableZuulProxy; + +@SpringBootApplication +@EnableZuulProxy +@EnableDiscoveryClient +public class ZuulConfig { + public static void main(String[] args) { + SpringApplication.run(ZuulConfig.class, args); + } +} diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/resources/application.properties b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/resources/application.properties new file mode 100644 index 0000000000..cb1dca78c2 --- /dev/null +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/resources/application.properties @@ -0,0 +1,9 @@ +server.port=8762 +spring.application.name=zuul-server +eureka.instance.preferIpAddress=true +eureka.client.registerWithEureka=true +eureka.client.fetchRegistry=true +eureka.serviceurl.defaultzone=http://localhost:8761/eureka/ +management.security.enabled=false +security.basic.enabled=false +hystrix.command.default.execution.timeout.enabled=false diff --git a/spring-core/README.md b/spring-core/README.md index 81a7aaa952..dc3bb1c9f0 100644 --- a/spring-core/README.md +++ b/spring-core/README.md @@ -8,3 +8,5 @@ - [Spring YAML Configuration](http://www.baeldung.com/spring-yaml) - [Introduction to Spring’s StreamUtils](http://www.baeldung.com/spring-stream-utils) - [Using Spring @Value with Defaults](http://www.baeldung.com/spring-value-defaults) +- [Groovy Bean Definitions](http://www.baeldung.com/spring-groovy-beans) +- [XML-Based Injection in Spring](http://www.baeldung.com/spring-xml-injection) diff --git a/spring-cucumber/pom.xml b/spring-cucumber/pom.xml index 8270fc3ae2..df4723484d 100644 --- a/spring-cucumber/pom.xml +++ b/spring-cucumber/pom.xml @@ -12,10 +12,10 @@ Demo project for Spring Boot - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-cucumber/src/test/java/com/baeldung/SpringIntegrationTest.java b/spring-cucumber/src/test/java/com/baeldung/SpringIntegrationTest.java index 9fbaeb348d..f4d47d7871 100644 --- a/spring-cucumber/src/test/java/com/baeldung/SpringIntegrationTest.java +++ b/spring-cucumber/src/test/java/com/baeldung/SpringIntegrationTest.java @@ -1,8 +1,10 @@ package com.baeldung; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.IntegrationTest; -import org.springframework.boot.test.SpringApplicationContextLoader; import org.springframework.http.HttpMethod; import org.springframework.http.client.ClientHttpResponse; import org.springframework.test.context.ContextConfiguration; @@ -10,14 +12,9 @@ import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestTemplate; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - //@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = SpringDemoApplication.class, loader = SpringApplicationContextLoader.class) +@ContextConfiguration(classes = SpringDemoApplication.class) @WebAppConfiguration -@IntegrationTest public class SpringIntegrationTest { static ResponseResults latestResponse = null; diff --git a/spring-custom-aop/spring-custom-aop/pom.xml b/spring-custom-aop/spring-custom-aop/pom.xml index 7e9da03b54..0bab7a4057 100644 --- a/spring-custom-aop/spring-custom-aop/pom.xml +++ b/spring-custom-aop/spring-custom-aop/pom.xml @@ -2,7 +2,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung - spring-boot + spring-custom-aop 0.0.1-SNAPSHOT war spring-boot diff --git a/spring-custom-aop/spring-custom-aop/src/main/java/org/baeldung/endpoints/EndpointDTO.java b/spring-custom-aop/spring-custom-aop/src/main/java/org/baeldung/endpoints/EndpointDTO.java new file mode 100644 index 0000000000..d12d6419e1 --- /dev/null +++ b/spring-custom-aop/spring-custom-aop/src/main/java/org/baeldung/endpoints/EndpointDTO.java @@ -0,0 +1,39 @@ +package org.baeldung.endpoints; + +public class EndpointDTO { + private String id; + private boolean enabled; + private boolean sensitive; + + public EndpointDTO(String id, boolean enabled, boolean sensitive) { + super(); + this.id = id; + this.enabled = enabled; + this.sensitive = sensitive; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + + public boolean isSensitive() { + return sensitive; + } + + public void setSensitive(boolean sensitive) { + this.sensitive = sensitive; + } + +} diff --git a/spring-custom-aop/spring-custom-aop/src/main/java/org/baeldung/endpoints/ListEndpoints.java b/spring-custom-aop/spring-custom-aop/src/main/java/org/baeldung/endpoints/ListEndpoints.java index 0add741a1f..f434351a51 100644 --- a/spring-custom-aop/spring-custom-aop/src/main/java/org/baeldung/endpoints/ListEndpoints.java +++ b/spring-custom-aop/spring-custom-aop/src/main/java/org/baeldung/endpoints/ListEndpoints.java @@ -1,6 +1,7 @@ package org.baeldung.endpoints; import java.util.List; +import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.actuate.endpoint.AbstractEndpoint; @@ -8,16 +9,16 @@ import org.springframework.boot.actuate.endpoint.Endpoint; import org.springframework.stereotype.Component; @Component -public class ListEndpoints extends AbstractEndpoint> { - private List endpoints; +public class ListEndpoints extends AbstractEndpoint> { + private List endpointDTOs; @Autowired public ListEndpoints(List endpoints) { super("listEndpoints"); - this.endpoints = endpoints; + this.endpointDTOs = endpoints.stream().map(endpoint -> new EndpointDTO(endpoint.getId(), endpoint.isEnabled(), endpoint.isSensitive())).collect(Collectors.toList()); } - public List invoke() { - return this.endpoints; + public List invoke() { + return this.endpointDTOs; } } \ No newline at end of file diff --git a/spring-data-elasticsearch/pom.xml b/spring-data-elasticsearch/pom.xml index 520707a432..688506450f 100644 --- a/spring-data-elasticsearch/pom.xml +++ b/spring-data-elasticsearch/pom.xml @@ -45,6 +45,24 @@ ${spring-data-elasticsearch.version} + + com.spatial4j + spatial4j + 0.4.1 + + + + com.vividsolutions + jts + 1.13 + + + xerces + xercesImpl + + + + org.springframework spring-test diff --git a/spring-data-elasticsearch/src/main/java/com/baeldung/elasticsearch/Person.java b/spring-data-elasticsearch/src/main/java/com/baeldung/elasticsearch/Person.java index b8ad59e2e2..09b971fdc2 100644 --- a/spring-data-elasticsearch/src/main/java/com/baeldung/elasticsearch/Person.java +++ b/spring-data-elasticsearch/src/main/java/com/baeldung/elasticsearch/Person.java @@ -11,10 +11,9 @@ public class Person { private Date dateOfBirth; public Person() { - } - public Person(int age, String fullName, Date dateOfBirth) { + Person(int age, String fullName, Date dateOfBirth) { super(); this.age = age; this.fullName = fullName; diff --git a/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/repository/ArticleRepository.java b/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/repository/ArticleRepository.java index 8aef865401..93812a3cea 100644 --- a/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/repository/ArticleRepository.java +++ b/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/repository/ArticleRepository.java @@ -1,12 +1,13 @@ package com.baeldung.spring.data.es.repository; -import com.baeldung.spring.data.es.model.Article; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.annotations.Query; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.stereotype.Repository; +import com.baeldung.spring.data.es.model.Article; + @Repository public interface ArticleRepository extends ElasticsearchRepository { @@ -14,4 +15,10 @@ public interface ArticleRepository extends ElasticsearchRepository findByAuthorsNameUsingCustomQuery(String name, Pageable pageable); + + @Query("{\"bool\": {\"must\": {\"match_all\": {}}, \"filter\": {\"term\": {\"tags\": \"?0\" }}}}") + Page
findByFilteredTagQuery(String tag, Pageable pageable); + + @Query("{\"bool\": {\"must\": {\"match\": {\"authors.name\": \"?0\"}}, \"filter\": {\"term\": {\"tags\": \"?1\" }}}}") + Page
findByAuthorsNameAndFilteredTagQuery(String name, String tag, Pageable pageable); } diff --git a/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/service/ArticleService.java b/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/service/ArticleService.java index b5a8fde633..63e2d91fa7 100644 --- a/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/service/ArticleService.java +++ b/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/service/ArticleService.java @@ -1,9 +1,10 @@ package com.baeldung.spring.data.es.service; -import com.baeldung.spring.data.es.model.Article; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import com.baeldung.spring.data.es.model.Article; + public interface ArticleService { Article save(Article article); @@ -15,6 +16,10 @@ public interface ArticleService { Page
findByAuthorNameUsingCustomQuery(String name, Pageable pageable); + Page
findByFilteredTagQuery(String tag, Pageable pageable); + + Page
findByAuthorsNameAndFilteredTagQuery(String name, String tag, Pageable pageable); + long count(); void delete(Article article); diff --git a/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/service/ArticleServiceImpl.java b/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/service/ArticleServiceImpl.java index 2a31b52602..0908ffa70e 100644 --- a/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/service/ArticleServiceImpl.java +++ b/spring-data-elasticsearch/src/main/java/com/baeldung/spring/data/es/service/ArticleServiceImpl.java @@ -1,12 +1,13 @@ package com.baeldung.spring.data.es.service; -import com.baeldung.spring.data.es.repository.ArticleRepository; -import com.baeldung.spring.data.es.model.Article; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import com.baeldung.spring.data.es.model.Article; +import com.baeldung.spring.data.es.repository.ArticleRepository; + @Service public class ArticleServiceImpl implements ArticleService { @@ -42,6 +43,16 @@ public class ArticleServiceImpl implements ArticleService { return articleRepository.findByAuthorsNameUsingCustomQuery(name, pageable); } + @Override + public Page
findByFilteredTagQuery(String tag, Pageable pageable) { + return articleRepository.findByFilteredTagQuery(tag, pageable); + } + + @Override + public Page
findByAuthorsNameAndFilteredTagQuery(String name, String tag, Pageable pageable) { + return articleRepository.findByAuthorsNameAndFilteredTagQuery(name, tag, pageable); + } + @Override public long count() { return articleRepository.count(); diff --git a/spring-data-elasticsearch/src/test/java/com/baeldung/elasticsearch/ElasticSearchManualTest.java b/spring-data-elasticsearch/src/test/java/com/baeldung/elasticsearch/ElasticSearchManualTest.java index 1fb1ae76f7..285c164869 100644 --- a/spring-data-elasticsearch/src/test/java/com/baeldung/elasticsearch/ElasticSearchManualTest.java +++ b/spring-data-elasticsearch/src/test/java/com/baeldung/elasticsearch/ElasticSearchManualTest.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; import static org.elasticsearch.node.NodeBuilder.nodeBuilder; import static org.junit.Assert.assertEquals; @@ -78,12 +79,9 @@ public class ElasticSearchManualTest { SearchHit[] searchHits = response .getHits() .getHits(); - List results = new ArrayList<>(); - for (SearchHit hit : searchHits) { - String sourceAsString = hit.getSourceAsString(); - Person person = JSON.parseObject(sourceAsString, Person.class); - results.add(person); - } + List results = Arrays.stream(searchHits) + .map(hit -> JSON.parseObject(hit.getSourceAsString(), Person.class)) + .collect(Collectors.toList()); } @Test @@ -125,11 +123,10 @@ public class ElasticSearchManualTest { .actionGet(); response2.getHits(); response3.getHits(); - List searchHits = Arrays.asList(response - .getHits() - .getHits()); - final List results = new ArrayList<>(); - searchHits.forEach(hit -> results.add(JSON.parseObject(hit.getSourceAsString(), Person.class))); + + final List results = Arrays.stream(response.getHits().getHits()) + .map(hit -> JSON.parseObject(hit.getSourceAsString(), Person.class)) + .collect(Collectors.toList()); } @Test diff --git a/spring-data-elasticsearch/src/test/java/com/baeldung/elasticsearch/GeoQueriesTest.java b/spring-data-elasticsearch/src/test/java/com/baeldung/elasticsearch/GeoQueriesTest.java new file mode 100644 index 0000000000..aa20913637 --- /dev/null +++ b/spring-data-elasticsearch/src/test/java/com/baeldung/elasticsearch/GeoQueriesTest.java @@ -0,0 +1,171 @@ +package com.baeldung.elasticsearch; + +import com.baeldung.spring.data.es.config.Config; +import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; +import org.elasticsearch.action.index.IndexResponse; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.client.Client; +import org.elasticsearch.common.geo.ShapeRelation; +import org.elasticsearch.common.geo.builders.ShapeBuilder; +import org.elasticsearch.common.unit.DistanceUnit; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.SearchHit; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertTrue; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = Config.class) +public class GeoQueriesTest { + + private static final String WONDERS_OF_WORLD = "wonders-of-world"; + private static final String WONDERS = "Wonders"; + + @Autowired + private ElasticsearchTemplate elasticsearchTemplate; + + @Autowired + private Client client; + + @Before + public void setUp() { + String jsonObject = "{\"Wonders\":{\"properties\":{\"name\":{\"type\":\"string\",\"index\":\"not_analyzed\"},\"region\":{\"type\":\"geo_shape\",\"tree\":\"quadtree\",\"precision\":\"1m\"},\"location\":{\"type\":\"geo_point\"}}}}"; + CreateIndexRequest req = new CreateIndexRequest(WONDERS_OF_WORLD); + req.mapping(WONDERS, jsonObject); + client.admin() + .indices() + .create(req) + .actionGet(); + } + + @Test + public void givenGeoShapeData_whenExecutedGeoShapeQuery_thenResultNonEmpty() { + String jsonObject = "{\"name\":\"Agra\",\"region\":{\"type\":\"envelope\",\"coordinates\":[[75,25],[80.1,30.2]]}}"; + IndexResponse response = client.prepareIndex(WONDERS_OF_WORLD, WONDERS) + .setSource(jsonObject) + .get(); + String tajMahalId = response.getId(); + client.admin() + .indices() + .prepareRefresh(WONDERS_OF_WORLD) + .get(); + + QueryBuilder qb = QueryBuilders.geoShapeQuery("region", ShapeBuilder.newEnvelope() + .topLeft(74.00, 24.0) + .bottomRight(81.1, 31.2)) + .relation(ShapeRelation.WITHIN); + + SearchResponse searchResponse = client.prepareSearch(WONDERS_OF_WORLD) + .setTypes(WONDERS) + .setQuery(qb) + .execute() + .actionGet(); + List ids = Arrays.stream(searchResponse.getHits() + .getHits()) + .map(SearchHit::getId) + .collect(Collectors.toList()); + assertTrue(ids.contains(tajMahalId)); + } + + @Test + public void givenGeoPointData_whenExecutedGeoBoundingBoxQuery_thenResultNonEmpty() { + String jsonObject = "{\"name\":\"Pyramids of Giza\",\"location\":[31.131302,29.976480]}"; + IndexResponse response = client.prepareIndex(WONDERS_OF_WORLD, WONDERS) + .setSource(jsonObject) + .get(); + String pyramidsOfGizaId = response.getId(); + client.admin() + .indices() + .prepareRefresh(WONDERS_OF_WORLD) + .get(); + + QueryBuilder qb = QueryBuilders.geoBoundingBoxQuery("location") + .bottomLeft(28, 30) + .topRight(31, 32); + + SearchResponse searchResponse = client.prepareSearch(WONDERS_OF_WORLD) + .setTypes(WONDERS) + .setQuery(qb) + .execute() + .actionGet(); + List ids = Arrays.stream(searchResponse.getHits() + .getHits()) + .map(SearchHit::getId) + .collect(Collectors.toList()); + assertTrue(ids.contains(pyramidsOfGizaId)); + } + + @Test + public void givenGeoPointData_whenExecutedGeoDistanceQuery_thenResultNonEmpty() { + String jsonObject = "{\"name\":\"Lighthouse of alexandria\",\"location\":[31.131302,29.976480]}"; + IndexResponse response = client.prepareIndex(WONDERS_OF_WORLD, WONDERS) + .setSource(jsonObject) + .get(); + String lighthouseOfAlexandriaId = response.getId(); + client.admin() + .indices() + .prepareRefresh(WONDERS_OF_WORLD) + .get(); + + QueryBuilder qb = QueryBuilders.geoDistanceQuery("location") + .point(29.976, 31.131) + .distance(10, DistanceUnit.MILES); + + SearchResponse searchResponse = client.prepareSearch(WONDERS_OF_WORLD) + .setTypes(WONDERS) + .setQuery(qb) + .execute() + .actionGet(); + List ids = Arrays.stream(searchResponse.getHits() + .getHits()) + .map(SearchHit::getId) + .collect(Collectors.toList()); + assertTrue(ids.contains(lighthouseOfAlexandriaId)); + } + + @Test + public void givenGeoPointData_whenExecutedGeoPolygonQuery_thenResultNonEmpty() { + String jsonObject = "{\"name\":\"The Great Rann of Kutch\",\"location\":[69.859741,23.733732]}"; + IndexResponse response = client.prepareIndex(WONDERS_OF_WORLD, WONDERS) + .setSource(jsonObject) + .get(); + String greatRannOfKutchid = response.getId(); + client.admin() + .indices() + .prepareRefresh(WONDERS_OF_WORLD) + .get(); + + QueryBuilder qb = QueryBuilders.geoPolygonQuery("location") + .addPoint(22.733, 68.859) + .addPoint(24.733, 68.859) + .addPoint(23, 70.859); + + SearchResponse searchResponse = client.prepareSearch(WONDERS_OF_WORLD) + .setTypes(WONDERS) + .setQuery(qb) + .execute() + .actionGet(); + List ids = Arrays.stream(searchResponse.getHits() + .getHits()) + .map(SearchHit::getId) + .collect(Collectors.toList()); + assertTrue(ids.contains(greatRannOfKutchid)); + } + + @After + public void destroy() { + elasticsearchTemplate.deleteIndex(WONDERS_OF_WORLD); + } +} diff --git a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchIntegrationTest.java b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchIntegrationTest.java index 1280c8e1de..41965fbb83 100644 --- a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchIntegrationTest.java +++ b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchIntegrationTest.java @@ -1,15 +1,9 @@ package com.baeldung.spring.data.es; -import static java.util.Arrays.asList; -import static org.elasticsearch.index.query.MatchQueryBuilder.Operator.AND; -import static org.elasticsearch.index.query.QueryBuilders.fuzzyQuery; -import static org.elasticsearch.index.query.QueryBuilders.matchQuery; -import static org.elasticsearch.index.query.QueryBuilders.regexpQuery; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.util.List; - +import com.baeldung.spring.data.es.config.Config; +import com.baeldung.spring.data.es.model.Article; +import com.baeldung.spring.data.es.model.Author; +import com.baeldung.spring.data.es.service.ArticleService; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -22,10 +16,15 @@ import org.springframework.data.elasticsearch.core.query.SearchQuery; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.baeldung.spring.data.es.config.Config; -import com.baeldung.spring.data.es.model.Article; -import com.baeldung.spring.data.es.model.Author; -import com.baeldung.spring.data.es.service.ArticleService; +import java.util.List; + +import static java.util.Arrays.asList; +import static org.elasticsearch.index.query.MatchQueryBuilder.Operator.AND; +import static org.elasticsearch.index.query.QueryBuilders.fuzzyQuery; +import static org.elasticsearch.index.query.QueryBuilders.matchQuery; +import static org.elasticsearch.index.query.QueryBuilders.regexpQuery; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = Config.class) @@ -47,14 +46,22 @@ public class ElasticSearchIntegrationTest { Article article = new Article("Spring Data Elasticsearch"); article.setAuthors(asList(johnSmith, johnDoe)); + article.setTags("elasticsearch", "spring data"); articleService.save(article); article = new Article("Search engines"); article.setAuthors(asList(johnDoe)); + article.setTags("search engines", "tutorial"); articleService.save(article); article = new Article("Second Article About Elasticsearch"); article.setAuthors(asList(johnSmith)); + article.setTags("elasticsearch", "spring data"); + articleService.save(article); + + article = new Article("Elasticsearch Tutorial"); + article.setAuthors(asList(johnDoe)); + article.setTags("elasticsearch"); articleService.save(article); } @@ -72,21 +79,34 @@ public class ElasticSearchIntegrationTest { @Test public void givenPersistedArticles_whenSearchByAuthorsName_thenRightFound() { - final Page
articleByAuthorName = articleService.findByAuthorName(johnSmith.getName(), new PageRequest(0, 10)); + final Page
articleByAuthorName = articleService + .findByAuthorName(johnSmith.getName(), new PageRequest(0, 10)); assertEquals(2L, articleByAuthorName.getTotalElements()); } @Test public void givenCustomQuery_whenSearchByAuthorsName_thenArticleIsFound() { + final Page
articleByAuthorName = articleService.findByAuthorNameUsingCustomQuery("Smith", new PageRequest(0, 10)); + assertEquals(2L, articleByAuthorName.getTotalElements()); + } - final Page
articleByAuthorName = articleService.findByAuthorNameUsingCustomQuery("John Smith", new PageRequest(0, 10)); + @Test + public void givenTagFilterQuery_whenSearchByTag_thenArticleIsFound() { + final Page
articleByAuthorName = articleService.findByFilteredTagQuery("elasticsearch", new PageRequest(0, 10)); assertEquals(3L, articleByAuthorName.getTotalElements()); } + @Test + public void givenTagFilterQuery_whenSearchByAuthorsName_thenArticleIsFound() { + final Page
articleByAuthorName = articleService.findByAuthorsNameAndFilteredTagQuery("Doe", "elasticsearch", new PageRequest(0, 10)); + assertEquals(2L, articleByAuthorName.getTotalElements()); + } + @Test public void givenPersistedArticles_whenUseRegexQuery_thenRightArticlesFound() { - final SearchQuery searchQuery = new NativeSearchQueryBuilder().withFilter(regexpQuery("title", ".*data.*")).build(); + final SearchQuery searchQuery = new NativeSearchQueryBuilder().withFilter(regexpQuery("title", ".*data.*")) + .build(); final List
articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); assertEquals(1, articles.size()); @@ -112,7 +132,8 @@ public class ElasticSearchIntegrationTest { final String articleTitle = "Spring Data Elasticsearch"; - final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchQuery("title", articleTitle).minimumShouldMatch("75%")).build(); + final SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchQuery("title", articleTitle).minimumShouldMatch("75%")).build(); final List
articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); assertEquals(1, articles.size()); final long count = articleService.count(); @@ -124,7 +145,8 @@ public class ElasticSearchIntegrationTest { @Test public void givenSavedDoc_whenOneTermMatches_thenFindByTitle() { - final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchQuery("title", "Search engines").operator(AND)).build(); + final SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchQuery("title", "Search engines").operator(AND)).build(); final List
articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); assertEquals(1, articles.size()); } diff --git a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryIntegrationTest.java b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryIntegrationTest.java index cc4bce0c75..c6af93bb62 100644 --- a/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryIntegrationTest.java +++ b/spring-data-elasticsearch/src/test/java/com/baeldung/spring/data/es/ElasticSearchQueryIntegrationTest.java @@ -1,20 +1,9 @@ package com.baeldung.spring.data.es; -import static java.util.Arrays.asList; -import static java.util.stream.Collectors.toList; -import static org.elasticsearch.index.query.MatchQueryBuilder.Operator.AND; -import static org.elasticsearch.index.query.QueryBuilders.boolQuery; -import static org.elasticsearch.index.query.QueryBuilders.matchPhraseQuery; -import static org.elasticsearch.index.query.QueryBuilders.matchQuery; -import static org.elasticsearch.index.query.QueryBuilders.multiMatchQuery; -import static org.elasticsearch.index.query.QueryBuilders.nestedQuery; -import static org.elasticsearch.index.query.QueryBuilders.termQuery; -import static org.junit.Assert.assertEquals; - -import java.util.Collections; -import java.util.List; -import java.util.Map; - +import com.baeldung.spring.data.es.config.Config; +import com.baeldung.spring.data.es.model.Article; +import com.baeldung.spring.data.es.model.Author; +import com.baeldung.spring.data.es.service.ArticleService; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Client; import org.elasticsearch.common.unit.Fuzziness; @@ -22,6 +11,7 @@ import org.elasticsearch.index.query.MultiMatchQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.search.aggregations.Aggregation; import org.elasticsearch.search.aggregations.AggregationBuilders; +import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation; import org.elasticsearch.search.aggregations.bucket.terms.StringTerms; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder; @@ -35,10 +25,20 @@ import org.springframework.data.elasticsearch.core.query.SearchQuery; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import com.baeldung.spring.data.es.config.Config; -import com.baeldung.spring.data.es.model.Article; -import com.baeldung.spring.data.es.model.Author; -import com.baeldung.spring.data.es.service.ArticleService; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static java.util.Arrays.asList; +import static java.util.stream.Collectors.toList; +import static org.elasticsearch.index.query.MatchQueryBuilder.Operator.AND; +import static org.elasticsearch.index.query.QueryBuilders.boolQuery; +import static org.elasticsearch.index.query.QueryBuilders.matchPhraseQuery; +import static org.elasticsearch.index.query.QueryBuilders.matchQuery; +import static org.elasticsearch.index.query.QueryBuilders.multiMatchQuery; +import static org.elasticsearch.index.query.QueryBuilders.nestedQuery; +import static org.elasticsearch.index.query.QueryBuilders.termQuery; +import static org.junit.Assert.assertEquals; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = Config.class) @@ -86,14 +86,16 @@ public class ElasticSearchQueryIntegrationTest { @Test public void givenFullTitle_whenRunMatchQuery_thenDocIsFound() { - final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchQuery("title", "Search engines").operator(AND)).build(); + final SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchQuery("title", "Search engines").operator(AND)).build(); final List
articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); assertEquals(1, articles.size()); } @Test public void givenOneTermFromTitle_whenRunMatchQuery_thenDocIsFound() { - final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchQuery("title", "Engines Solutions")).build(); + final SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchQuery("title", "Engines Solutions")).build(); final List
articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); assertEquals(1, articles.size()); assertEquals("Search engines", articles.get(0).getTitle()); @@ -101,18 +103,21 @@ public class ElasticSearchQueryIntegrationTest { @Test public void givenPartTitle_whenRunMatchQuery_thenDocIsFound() { - final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchQuery("title", "elasticsearch data")).build(); + final SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchQuery("title", "elasticsearch data")).build(); final List
articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); assertEquals(3, articles.size()); } @Test public void givenFullTitle_whenRunMatchQueryOnVerbatimField_thenDocIsFound() { - SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchQuery("title.verbatim", "Second Article About Elasticsearch")).build(); + SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchQuery("title.verbatim", "Second Article About Elasticsearch")).build(); List
articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); assertEquals(1, articles.size()); - searchQuery = new NativeSearchQueryBuilder().withQuery(matchQuery("title.verbatim", "Second Article About")).build(); + searchQuery = new NativeSearchQueryBuilder().withQuery(matchQuery("title.verbatim", "Second Article About")) + .build(); articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); assertEquals(0, articles.size()); } @@ -130,38 +135,48 @@ public class ElasticSearchQueryIntegrationTest { @Test public void givenAnalyzedQuery_whenMakeAggregationOnTermCount_thenEachTokenCountsSeparately() { final TermsBuilder aggregation = AggregationBuilders.terms("top_tags").field("title"); - final SearchResponse response = client.prepareSearch("blog").setTypes("article").addAggregation(aggregation).execute().actionGet(); + final SearchResponse response = client.prepareSearch("blog").setTypes("article").addAggregation(aggregation) + .execute().actionGet(); final Map results = response.getAggregations().asMap(); final StringTerms topTags = (StringTerms) results.get("top_tags"); - final List keys = topTags.getBuckets().stream().map(b -> b.getKeyAsString()).collect(toList()); - Collections.sort(keys); + final List keys = topTags.getBuckets().stream() + .map(MultiBucketsAggregation.Bucket::getKeyAsString) + .sorted() + .collect(toList()); assertEquals(asList("about", "article", "data", "elasticsearch", "engines", "search", "second", "spring", "tutorial"), keys); } @Test public void givenNotAnalyzedQuery_whenMakeAggregationOnTermCount_thenEachTermCountsIndividually() { - final TermsBuilder aggregation = AggregationBuilders.terms("top_tags").field("tags").order(Terms.Order.aggregation("_count", false)); - final SearchResponse response = client.prepareSearch("blog").setTypes("article").addAggregation(aggregation).execute().actionGet(); + final TermsBuilder aggregation = AggregationBuilders.terms("top_tags").field("tags") + .order(Terms.Order.aggregation("_count", false)); + final SearchResponse response = client.prepareSearch("blog").setTypes("article").addAggregation(aggregation) + .execute().actionGet(); final Map results = response.getAggregations().asMap(); final StringTerms topTags = (StringTerms) results.get("top_tags"); - final List keys = topTags.getBuckets().stream().map(b -> b.getKeyAsString()).collect(toList()); + final List keys = topTags.getBuckets().stream() + .map(MultiBucketsAggregation.Bucket::getKeyAsString) + .collect(toList()); assertEquals(asList("elasticsearch", "spring data", "search engines", "tutorial"), keys); } @Test public void givenNotExactPhrase_whenUseSlop_thenQueryMatches() { - final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchPhraseQuery("title", "spring elasticsearch").slop(1)).build(); + final SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchPhraseQuery("title", "spring elasticsearch").slop(1)).build(); final List
articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); assertEquals(1, articles.size()); } @Test public void givenPhraseWithType_whenUseFuzziness_thenQueryMatches() { - final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchQuery("title", "spring date elasticserch").operator(AND).fuzziness(Fuzziness.ONE).prefixLength(3)).build(); + final SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(matchQuery("title", "spring date elasticserch").operator(AND).fuzziness(Fuzziness.ONE) + .prefixLength(3)).build(); final List
articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); assertEquals(1, articles.size()); @@ -169,9 +184,23 @@ public class ElasticSearchQueryIntegrationTest { @Test public void givenMultimatchQuery_whenDoSearch_thenAllProvidedFieldsMatch() { - final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(multiMatchQuery("tutorial").field("title").field("tags").type(MultiMatchQueryBuilder.Type.BEST_FIELDS)).build(); + final SearchQuery searchQuery = new NativeSearchQueryBuilder() + .withQuery(multiMatchQuery("tutorial").field("title").field("tags") + .type(MultiMatchQueryBuilder.Type.BEST_FIELDS)).build(); final List
articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); assertEquals(2, articles.size()); } + + @Test + public void givenBoolQuery_whenQueryByAuthorsName_thenFoundArticlesByThatAuthorAndFilteredTag() { + final QueryBuilder builder = boolQuery().must(nestedQuery("authors", boolQuery().must(termQuery("authors.name", "doe")))) + .filter(termQuery("tags", "elasticsearch")); + + final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder) + .build(); + final List
articles = elasticsearchTemplate.queryForList(searchQuery, Article.class); + + assertEquals(2, articles.size()); + } } diff --git a/spring-ejb/README.md b/spring-ejb/README.md new file mode 100644 index 0000000000..8fa8833f3a --- /dev/null +++ b/spring-ejb/README.md @@ -0,0 +1,3 @@ +### Relevant Articles + +- [Integration Guide for Spring and EJB](http://www.baeldung.com/spring-ejb) diff --git a/spring-ejb/ejb-remote-for-spring/pom.xml b/spring-ejb/ejb-remote-for-spring/pom.xml new file mode 100755 index 0000000000..fd1095420c --- /dev/null +++ b/spring-ejb/ejb-remote-for-spring/pom.xml @@ -0,0 +1,76 @@ + + + 4.0.0 + + + com.baeldung.spring.ejb + ejb-for-spring + 1.0.1 + + + ejb-remote-for-spring + ejb + + + + javax + javaee-api + provided + + + org.assertj + assertj-core + 3.9.0 + test + + + + + + + + wildfly-standalone + + false + + + + + org.codehaus.cargo + cargo-maven2-plugin + ${cargo-maven2-plugin.version} + + + + + wildfly10x + + http://download.jboss.org/wildfly/10.1.0.Final/wildfly-10.1.0.Final.zip + + + + + + 127.0.0.1 + standalone-full + 9990 + testUser:admin1234! + + + + + + + + + + + + 7.0 + 1.6.1 + + + + + diff --git a/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorld.java b/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorld.java new file mode 100644 index 0000000000..6d1c26ef4a --- /dev/null +++ b/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorld.java @@ -0,0 +1,11 @@ +package com.baeldung.ejb.tutorial; + +import javax.ejb.Remote; + +@Remote +public interface HelloStatefulWorld { + + int howManyTimes(); + String getHelloWorld(); + +} diff --git a/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorldBean.java b/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorldBean.java new file mode 100644 index 0000000000..0619f5593a --- /dev/null +++ b/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatefulWorldBean.java @@ -0,0 +1,19 @@ +package com.baeldung.ejb.tutorial; + +import javax.ejb.Stateful; + +@Stateful(name = "HelloStatefulWorld") +public class HelloStatefulWorldBean implements HelloStatefulWorld { + + private int howManyTimes = 0; + + public int howManyTimes() { + return howManyTimes; + } + + public String getHelloWorld() { + howManyTimes++; + return "Hello Stateful World!"; + } + +} diff --git a/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorld.java b/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorld.java new file mode 100755 index 0000000000..6b4db29e95 --- /dev/null +++ b/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorld.java @@ -0,0 +1,10 @@ +package com.baeldung.ejb.tutorial; + +import javax.ejb.Remote; + +@Remote +public interface HelloStatelessWorld { + + String getHelloWorld(); + +} diff --git a/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorldBean.java b/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorldBean.java new file mode 100755 index 0000000000..7de499c618 --- /dev/null +++ b/spring-ejb/ejb-remote-for-spring/src/main/java/com/baeldung/ejb/tutorial/HelloStatelessWorldBean.java @@ -0,0 +1,12 @@ +package com.baeldung.ejb.tutorial; + +import javax.ejb.Stateless; + +@Stateless(name = "HelloStatelessWorld") +public class HelloStatelessWorldBean implements HelloStatelessWorld { + + public String getHelloWorld() { + return "Hello Stateless World!"; + } + +} diff --git a/spring-ejb/ejb-remote-for-spring/src/main/resources/META-INF/ejb-jar.xml b/spring-ejb/ejb-remote-for-spring/src/main/resources/META-INF/ejb-jar.xml new file mode 100755 index 0000000000..f51523ac14 --- /dev/null +++ b/spring-ejb/ejb-remote-for-spring/src/main/resources/META-INF/ejb-jar.xml @@ -0,0 +1,7 @@ + + + ejb-remote-for-spring + + diff --git a/spring-ejb/ejb-remote-for-spring/src/test/java/com/baeldung/ejb/tutorial/HelloStatefulWorldTestUnitTest.java b/spring-ejb/ejb-remote-for-spring/src/test/java/com/baeldung/ejb/tutorial/HelloStatefulWorldTestUnitTest.java new file mode 100644 index 0000000000..61373079f6 --- /dev/null +++ b/spring-ejb/ejb-remote-for-spring/src/test/java/com/baeldung/ejb/tutorial/HelloStatefulWorldTestUnitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.ejb.tutorial; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Before; +import org.junit.Test; + +public class HelloStatefulWorldTestUnitTest { + + private HelloStatefulWorldBean statefulBean; + + @Before + public void setup() { + statefulBean = new HelloStatefulWorldBean(); + } + + @Test + public void whenGetHelloWorld_thenHelloStatefulWorldIsReturned() { + String helloWorld = statefulBean.getHelloWorld(); + + assertThat(helloWorld).isEqualTo("Hello Stateful World!"); + } + + @Test + public void whenGetHelloWorldIsCalledTwice_thenCounterIs2() { + statefulBean.getHelloWorld(); + statefulBean.getHelloWorld(); + + assertThat(statefulBean.howManyTimes()).isEqualTo(2); + } + +} diff --git a/spring-ejb/ejb-remote-for-spring/src/test/java/com/baeldung/ejb/tutorial/HelloStatelessWorldTestUnitTest.java b/spring-ejb/ejb-remote-for-spring/src/test/java/com/baeldung/ejb/tutorial/HelloStatelessWorldTestUnitTest.java new file mode 100644 index 0000000000..b95618e4d4 --- /dev/null +++ b/spring-ejb/ejb-remote-for-spring/src/test/java/com/baeldung/ejb/tutorial/HelloStatelessWorldTestUnitTest.java @@ -0,0 +1,24 @@ +package com.baeldung.ejb.tutorial; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Before; +import org.junit.Test; + +public class HelloStatelessWorldTestUnitTest { + + private HelloStatelessWorldBean statelessBean; + + @Before + public void setup() { + statelessBean = new HelloStatelessWorldBean(); + } + + @Test + public void whenGetHelloWorld_thenHelloStatelessWorldIsReturned() { + String helloWorld = statelessBean.getHelloWorld(); + + assertThat(helloWorld).isEqualTo("Hello Stateless World!"); + } + +} diff --git a/spring-ejb/pom.xml b/spring-ejb/pom.xml new file mode 100755 index 0000000000..0b2a8445c5 --- /dev/null +++ b/spring-ejb/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + com.baeldung.spring.ejb + ejb-for-spring + 1.0.1 + pom + ejb + Spring EJB Tutorial + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + jboss-public-repository-group + JBoss Public Maven Repository Group + http://repository.jboss.org/nexus/content/groups/public/ + default + + true + never + + + true + never + + + + + + + + com.baeldung.spring.ejb + ejb-remote-for-spring + 1.0.1 + ejb + + + javax + javaee-api + 7.0 + provided + + + org.wildfly + wildfly-ejb-client-bom + 10.1.0.Final + pom + import + + + + + + + + + maven-ejb-plugin + 2.4 + + 3.2 + + + + + + + + ejb-remote-for-spring + spring-ejb-client + + diff --git a/spring-ejb/spring-ejb-client/pom.xml b/spring-ejb/spring-ejb-client/pom.xml new file mode 100644 index 0000000000..c77ce09a2d --- /dev/null +++ b/spring-ejb/spring-ejb-client/pom.xml @@ -0,0 +1,100 @@ + + + 4.0.0 + + spring-ejb-client + jar + + spring-ejb-client + Spring EJB Client + + + com.baeldung + parent-boot-5 + 0.0.1-SNAPSHOT + ../../parent-boot-5 + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.wildfly + wildfly-ejb-client-bom + 10.1.0.Final + pom + + + + com.baeldung.spring.ejb + ejb-remote-for-spring + 1.0.1 + ejb + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + diff --git a/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/springejbclient/SpringEjbClientApplication.java b/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/springejbclient/SpringEjbClientApplication.java new file mode 100644 index 0000000000..d3542a2158 --- /dev/null +++ b/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/springejbclient/SpringEjbClientApplication.java @@ -0,0 +1,50 @@ +package com.baeldung.springejbclient; + +import java.util.Properties; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +import com.baeldung.ejb.tutorial.HelloStatefulWorld; +import com.baeldung.ejb.tutorial.HelloStatelessWorld; + +@SpringBootApplication +public class SpringEjbClientApplication { + + @Bean + public Context context() throws NamingException { + Properties jndiProps = new Properties(); + jndiProps.put("java.naming.factory.initial", "org.jboss.naming.remote.client.InitialContextFactory"); + jndiProps.put("jboss.naming.client.ejb.context", true); + jndiProps.put("java.naming.provider.url", "http-remoting://localhost:8080"); + return new InitialContext(jndiProps); + } + + @Bean + public HelloStatelessWorld helloStatelessWorld(Context context) throws NamingException { + return (HelloStatelessWorld) context.lookup(this.getFullName(HelloStatelessWorld.class)); + } + + @Bean + public HelloStatefulWorld helloStatefulWorld(Context context) throws NamingException { + return (HelloStatefulWorld) context.lookup(this.getFullName(HelloStatefulWorld.class)); + } + + @SuppressWarnings("rawtypes") + private String getFullName(Class classType) { + String moduleName = "ejb-remote-for-spring/"; + String beanName = classType.getSimpleName(); + String viewClassName = classType.getName(); + + return moduleName + beanName + "!" + viewClassName; + } + + public static void main(String[] args) { + SpringApplication.run(SpringEjbClientApplication.class, args); + } +} diff --git a/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/springejbclient/endpoint/HomeEndpoint.java b/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/springejbclient/endpoint/HomeEndpoint.java new file mode 100644 index 0000000000..e72e3b310e --- /dev/null +++ b/spring-ejb/spring-ejb-client/src/main/java/com/baeldung/springejbclient/endpoint/HomeEndpoint.java @@ -0,0 +1,30 @@ +package com.baeldung.springejbclient.endpoint; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.ejb.tutorial.HelloStatefulWorld; +import com.baeldung.ejb.tutorial.HelloStatelessWorld; + +@RestController +public class HomeEndpoint { + + private HelloStatelessWorld helloStatelessWorld; + private HelloStatefulWorld helloStatefulWorld; + + public HomeEndpoint(HelloStatelessWorld helloStatelessWorld, HelloStatefulWorld helloStatefulWorld) { + this.helloStatelessWorld = helloStatelessWorld; + this.helloStatefulWorld = helloStatefulWorld; + } + + @GetMapping("/stateless") + public String getStateless() { + return helloStatelessWorld.getHelloWorld(); + } + + @GetMapping("/stateful") + public String getStateful() { + return helloStatefulWorld.getHelloWorld() + " called " + helloStatefulWorld.howManyTimes() + " times"; + } + +} diff --git a/spring-ejb/spring-ejb-client/src/main/resources/application.properties b/spring-ejb/spring-ejb-client/src/main/resources/application.properties new file mode 100644 index 0000000000..d564d40356 --- /dev/null +++ b/spring-ejb/spring-ejb-client/src/main/resources/application.properties @@ -0,0 +1,3 @@ +server.port=8081 + +#logging.level.root=DEBUG \ No newline at end of file diff --git a/spring-ejb/spring-ejb-client/src/test/java/com/baeldung/springejbclient/SpringEjbClientApplicationIntegrationTest.java b/spring-ejb/spring-ejb-client/src/test/java/com/baeldung/springejbclient/SpringEjbClientApplicationIntegrationTest.java new file mode 100644 index 0000000000..89c88fe5a5 --- /dev/null +++ b/spring-ejb/spring-ejb-client/src/test/java/com/baeldung/springejbclient/SpringEjbClientApplicationIntegrationTest.java @@ -0,0 +1,11 @@ +package com.baeldung.springejbclient; + +import org.junit.Test; + +public class SpringEjbClientApplicationIntegrationTest { + + @Test + public void contextLoads() { + } + +} diff --git a/spring-hibernate3/README.md b/spring-hibernate3/README.md new file mode 100644 index 0000000000..02928dfb51 --- /dev/null +++ b/spring-hibernate3/README.md @@ -0,0 +1,2 @@ +## Relevant articles: +- [HibernateException: No Hibernate Session Bound to Thread in Hibernate 3](http://www.baeldung.com/no-hibernate-session-bound-to-thread-exception) diff --git a/spring-integration/README.md b/spring-integration/README.md index e5b0f601ce..750ad994eb 100644 --- a/spring-integration/README.md +++ b/spring-integration/README.md @@ -1,2 +1,5 @@ ### Relevant Articles: - [Introduction to Spring Integration](http://www.baeldung.com/spring-integration) + +### Running the Sample +Executing the `mvn exec:java` maven command (either from the command line or from an IDE) will start up the application. Follow the command prompt for further instructions. diff --git a/spring-integration/pom.xml b/spring-integration/pom.xml index a162f18b9c..4e210122b0 100644 --- a/spring-integration/pom.xml +++ b/spring-integration/pom.xml @@ -22,7 +22,7 @@ 1.1.4.RELEASE 1.4.7 1.1.1 - + 4.12 2.10 1.5.0 @@ -56,7 +56,7 @@ exec-maven-plugin ${exec-maven-plugin.version} - com.baeldung.samples.Main + com.baeldung.samples.FileCopyConfig @@ -106,6 +106,12 @@ spring-integration-file ${spring.integration.version} + + junit + junit + ${junit.version} + test + diff --git a/spring-jenkins-pipeline/.gitignore b/spring-jenkins-pipeline/.gitignore new file mode 100644 index 0000000000..2af7cefb0a --- /dev/null +++ b/spring-jenkins-pipeline/.gitignore @@ -0,0 +1,24 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/spring-jenkins-pipeline/.mvn/wrapper/maven-wrapper.jar b/spring-jenkins-pipeline/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000..5fd4d5023f Binary files /dev/null and b/spring-jenkins-pipeline/.mvn/wrapper/maven-wrapper.jar differ diff --git a/spring-jenkins-pipeline/.mvn/wrapper/maven-wrapper.properties b/spring-jenkins-pipeline/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000000..c954cec91c --- /dev/null +++ b/spring-jenkins-pipeline/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip diff --git a/spring-jenkins-pipeline/README.md b/spring-jenkins-pipeline/README.md new file mode 100644 index 0000000000..8c10e85da2 --- /dev/null +++ b/spring-jenkins-pipeline/README.md @@ -0,0 +1,26 @@ +BASIC CRUD API with Spring Boot +================================ + +This is the code of a simple API for some CRUD operations build using Spring Boot. + +### Requirements + +- Maven +- JDK 8 +- MongoDB + +### Running +To build and start the server simply type + +```bash +$ mvn clean install +$ mvn spring-boot:run -Dserver.port=8989 +``` + +Now with default configurations it will be available at: [http://localhost:8080](http://localhost:8080) + +Enjoy it :) + +### Relevant articles + +- [Intro to Jenkins 2 and the Power of Pipelines](http://www.baeldung.com/jenkins-pipelines) diff --git a/spring-jenkins-pipeline/mvnw b/spring-jenkins-pipeline/mvnw new file mode 100755 index 0000000000..a1ba1bf554 --- /dev/null +++ b/spring-jenkins-pipeline/mvnw @@ -0,0 +1,233 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # + # Look for the Apple JDKs first to preserve the existing behaviour, and then look + # for the new JDKs provided by Oracle. + # + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then + # + # Oracle JDKs + # + export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then + # + # Apple JDKs + # + export JAVA_HOME=`/usr/libexec/java_home` + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + local basedir=$(pwd) + local wdir=$(pwd) + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + wdir=$(cd "$wdir/.."; pwd) + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} "$@" diff --git a/spring-jenkins-pipeline/mvnw.cmd b/spring-jenkins-pipeline/mvnw.cmd new file mode 100644 index 0000000000..2b934e89dd --- /dev/null +++ b/spring-jenkins-pipeline/mvnw.cmd @@ -0,0 +1,145 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +set MAVEN_CMD_LINE_ARGS=%* + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar"" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% \ No newline at end of file diff --git a/spring-jenkins-pipeline/pom.xml b/spring-jenkins-pipeline/pom.xml new file mode 100644 index 0000000000..071f6e6e36 --- /dev/null +++ b/spring-jenkins-pipeline/pom.xml @@ -0,0 +1,98 @@ + + + 4.0.0 + + spring-jenkins-pipeline + 0.0.1-SNAPSHOT + jar + + spring-jenkins-pipeline + Intro to Jenkins 2 and the power of pipelines + + + parent-boot-5 + com.baeldung + 0.0.1-SNAPSHOT + ../parent-boot-5 + + + + UTF-8 + UTF-8 + 1.8 + 2.17 + + + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + org.springframework.boot + spring-boot-starter-data-rest + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-checkstyle-plugin + ${checkstyle.version} + + + + + + + integration + + + + maven-surefire-plugin + + + **/*UnitTest.java + + + + **/*IntegrationTest.java + + + + + + + + + unit + + + + maven-surefire-plugin + + + **/*IntegrationTest.java + + + + **/*UnitTest.java + + + + + + + + diff --git a/spring-jenkins-pipeline/scripted-pipeline-unix-nonunix b/spring-jenkins-pipeline/scripted-pipeline-unix-nonunix new file mode 100644 index 0000000000..b76bb8a81a --- /dev/null +++ b/spring-jenkins-pipeline/scripted-pipeline-unix-nonunix @@ -0,0 +1,81 @@ +node { + stage 'Clone the project' + git 'https://github.com/eugenp/tutorials.git' + + dir('spring-jenkins-pipeline') { + stage("Compilation and Analysis") { + parallel 'Compilation': { + if (isUnix()) { + sh "./mvnw clean install -DskipTests" + } else { + bat "./mvnw.cmd clean install -DskipTests" + } + }, 'Static Analysis': { + stage("Checkstyle") { + if (isUnix()) { + sh "./mvnw checkstyle:checkstyle" + } else { + bat "./mvnw.cmd checkstyle:checkstyle" + } + step([$class: 'CheckStylePublisher', + canRunOnFailed: true, + defaultEncoding: '', + healthy: '100', + pattern: '**/target/checkstyle-result.xml', + unHealthy: '90', + useStableBuildAsReference: true + ]) + } + } + } + + stage("Tests and Deployment") { + parallel 'Unit tests': { + stage("Running unit tests") { + try { + if (isUnix()) { + sh "./mvnw test -Punit" + } else { + bat "./mvnw.cmd test -Punit" + } + } catch(err) { + step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*UnitTest.xml']) + throw err + } + step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*UnitTest.xml']) + + } + }, 'Integration tests': { + stage("Running integration tests") { + try { + if (isUnix()) { + sh "./mvnw test -Pintegration" + } else { + bat "./mvnw.cmd test -Pintegration" + } + } catch(err) { + step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*IntegrationTest.xml']) + throw err + } + step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*IntegrationTest.xml']) + } + } + + stage("Staging") { + if (isUnix()) { + sh "pid=\$(lsof -i:8989 -t); kill -TERM \$pid || kill -KILL \$pid" + } else { + bat "FOR /F \"tokens=5 delims= \" %%G IN (\"netstat -a | findstr :8989\") DO TaskKill.exe /PID %%G /fi \"memusage gt 0\"" + } + + withEnv(['JENKINS_NODE_COOKIE=dontkill']) { + if (isUnix()) { + sh 'nohup ./mvnw spring-boot:run -Dserver.port=8989 &' + } else { + bat 'start ./mvnw.cmd spring-boot:run -Dserver.port=8989' + } + } + } + } + } +} \ No newline at end of file diff --git a/spring-jenkins-pipeline/src/main/java/com/baeldung/SpringJenkinsPipelineApplication.java b/spring-jenkins-pipeline/src/main/java/com/baeldung/SpringJenkinsPipelineApplication.java new file mode 100644 index 0000000000..fcf4fde414 --- /dev/null +++ b/spring-jenkins-pipeline/src/main/java/com/baeldung/SpringJenkinsPipelineApplication.java @@ -0,0 +1,13 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; + +@SpringBootApplication +@EnableMongoRepositories +public class SpringJenkinsPipelineApplication { + public static void main(String[] args) { + SpringApplication.run(SpringJenkinsPipelineApplication.class, args); + } +} diff --git a/spring-jenkins-pipeline/src/main/java/com/baeldung/domain/Student.java b/spring-jenkins-pipeline/src/main/java/com/baeldung/domain/Student.java new file mode 100644 index 0000000000..3d1dd27b0e --- /dev/null +++ b/spring-jenkins-pipeline/src/main/java/com/baeldung/domain/Student.java @@ -0,0 +1,73 @@ +package com.baeldung.domain; + +import javax.validation.constraints.NotNull; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.io.Serializable; + +@Document(collection = "STUDENT") +public class Student implements Serializable { + + @Id + private String id; + @NotNull + private String firstName; + private String lastName; + @NotNull + private String phoneNumber; + private String email; + + public Student(String firstName, String lastName, String phoneNumber, String email) { + this.firstName = firstName; + this.lastName = lastName; + this.phoneNumber = phoneNumber; + this.email = email; + } + + public String getId() { + return id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @Override + public String toString() { + return "Student{" + + "firstName='" + firstName + '\'' + + ", lastName='" + lastName + '\'' + + ", phoneNumber='" + phoneNumber + '\'' + + ", email='" + email + '\'' + + '}'; + } +} diff --git a/spring-jenkins-pipeline/src/main/java/com/baeldung/repository/StudentRepository.java b/spring-jenkins-pipeline/src/main/java/com/baeldung/repository/StudentRepository.java new file mode 100644 index 0000000000..d0ca7d8510 --- /dev/null +++ b/spring-jenkins-pipeline/src/main/java/com/baeldung/repository/StudentRepository.java @@ -0,0 +1,7 @@ +package com.baeldung.repository; + +import org.springframework.data.mongodb.repository.MongoRepository; +import com.baeldung.domain.Student; + +public interface StudentRepository extends MongoRepository { +} diff --git a/spring-jenkins-pipeline/src/main/resources/application.properties b/spring-jenkins-pipeline/src/main/resources/application.properties new file mode 100644 index 0000000000..b6bfd8f6f3 --- /dev/null +++ b/spring-jenkins-pipeline/src/main/resources/application.properties @@ -0,0 +1,14 @@ +# the db host +spring.data.mongodb.host=localhost +# the connection port (defaults to 27107) +spring.data.mongodb.port=27017 +# The database's name +spring.data.mongodb.database=Jenkins-Pipeline + +# Or this +# spring.data.mongodb.uri=mongodb://localhost/Jenkins-Pipeline + +# spring.data.mongodb.username= +# spring.data.mongodb.password= + +spring.data.mongodb.repositories.enabled=true \ No newline at end of file diff --git a/spring-jenkins-pipeline/src/test/java/com/baeldung/SomeIntegrationTest.java b/spring-jenkins-pipeline/src/test/java/com/baeldung/SomeIntegrationTest.java new file mode 100644 index 0000000000..092ebb93fd --- /dev/null +++ b/spring-jenkins-pipeline/src/test/java/com/baeldung/SomeIntegrationTest.java @@ -0,0 +1,38 @@ +package com.baeldung; + +import com.baeldung.domain.Student; +import com.baeldung.repository.StudentRepository; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertNotEquals; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest +public class SomeIntegrationTest { + @Autowired + private StudentRepository studentRepository; + + @Before + public void setup() { + Student student = new Student("Paul", "Smith", "64377473774", "me@mailprovider.com"); + studentRepository.save(student); + } + + @Test + public void whenInserting_andCount_thenWeDontGetZero() { + long count = studentRepository.count(); + + assertNotEquals(0, count); + } + + @After + public void clean() { + studentRepository.deleteAll(); + } +} diff --git a/spring-jenkins-pipeline/src/test/java/com/baeldung/SomeUnitTest.java b/spring-jenkins-pipeline/src/test/java/com/baeldung/SomeUnitTest.java new file mode 100644 index 0000000000..ea317ed7cd --- /dev/null +++ b/spring-jenkins-pipeline/src/test/java/com/baeldung/SomeUnitTest.java @@ -0,0 +1,11 @@ +package com.baeldung; + +import org.junit.Test; +import static org.junit.Assert.*; + +public class SomeUnitTest { + @Test + public void init() { + assertEquals(1, 1); + } +} diff --git a/spring-katharsis/pom.xml b/spring-katharsis/pom.xml index 822eac7873..49c0a5acf9 100644 --- a/spring-katharsis/pom.xml +++ b/spring-katharsis/pom.xml @@ -7,10 +7,10 @@ war - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 @@ -36,12 +36,16 @@ katharsis-servlet ${katharsis.version} - + + org.reflections + reflections + 0.9.10 + - 1.0.1 + 2.1.3 1.6.1 diff --git a/spring-katharsis/src/main/java/org/baeldung/Application.java b/spring-katharsis/src/main/java/org/baeldung/Application.java index e7beb16e04..b61151d87f 100644 --- a/spring-katharsis/src/main/java/org/baeldung/Application.java +++ b/spring-katharsis/src/main/java/org/baeldung/Application.java @@ -2,7 +2,7 @@ package org.baeldung; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.context.web.SpringBootServletInitializer; +import org.springframework.boot.web.support.SpringBootServletInitializer; @SpringBootApplication public class Application extends SpringBootServletInitializer { diff --git a/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/RoleResourceRepository.java b/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/RoleResourceRepository.java index da59d505e4..101e4c2b7e 100644 --- a/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/RoleResourceRepository.java +++ b/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/RoleResourceRepository.java @@ -1,6 +1,6 @@ package org.baeldung.persistence.katharsis; -import io.katharsis.queryParams.RequestParams; +import io.katharsis.queryParams.QueryParams; import io.katharsis.repository.ResourceRepository; import org.baeldung.persistence.dao.RoleRepository; @@ -15,17 +15,17 @@ public class RoleResourceRepository implements ResourceRepository { private RoleRepository roleRepository; @Override - public Role findOne(Long id, RequestParams params) { + public Role findOne(Long id, QueryParams params) { return roleRepository.findOne(id); } @Override - public Iterable findAll(RequestParams params) { + public Iterable findAll(QueryParams params) { return roleRepository.findAll(); } @Override - public Iterable findAll(Iterable ids, RequestParams params) { + public Iterable findAll(Iterable ids, QueryParams params) { return roleRepository.findAll(ids); } diff --git a/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/UserResourceRepository.java b/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/UserResourceRepository.java index 4c7ce70765..b6d519ab80 100644 --- a/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/UserResourceRepository.java +++ b/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/UserResourceRepository.java @@ -1,6 +1,6 @@ package org.baeldung.persistence.katharsis; -import io.katharsis.queryParams.RequestParams; +import io.katharsis.queryParams.QueryParams; import io.katharsis.repository.ResourceRepository; import org.baeldung.persistence.dao.UserRepository; @@ -15,17 +15,17 @@ public class UserResourceRepository implements ResourceRepository { private UserRepository userRepository; @Override - public User findOne(Long id, RequestParams params) { + public User findOne(Long id, QueryParams params) { return userRepository.findOne(id); } @Override - public Iterable findAll(RequestParams params) { + public Iterable findAll(QueryParams params) { return userRepository.findAll(); } @Override - public Iterable findAll(Iterable ids, RequestParams params) { + public Iterable findAll(Iterable ids, QueryParams params) { return userRepository.findAll(ids); } diff --git a/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/UserToRoleRelationshipRepository.java b/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/UserToRoleRelationshipRepository.java index e10c29aece..168cd1c866 100644 --- a/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/UserToRoleRelationshipRepository.java +++ b/spring-katharsis/src/main/java/org/baeldung/persistence/katharsis/UserToRoleRelationshipRepository.java @@ -1,6 +1,6 @@ package org.baeldung.persistence.katharsis; -import io.katharsis.queryParams.RequestParams; +import io.katharsis.queryParams.QueryParams; import io.katharsis.repository.RelationshipRepository; import java.util.HashSet; @@ -52,13 +52,13 @@ public class UserToRoleRelationshipRepository implements RelationshipRepository< } @Override - public Role findOneTarget(Long sourceId, String fieldName, RequestParams requestParams) { + public Role findOneTarget(Long sourceId, String fieldName, QueryParams QueryParams) { // not for many-to-many return null; } @Override - public Iterable findManyTargets(Long sourceId, String fieldName, RequestParams requestParams) { + public Iterable findManyTargets(Long sourceId, String fieldName, QueryParams QueryParams) { final User user = userRepository.findOne(sourceId); return user.getRoles(); } diff --git a/spring-mobile/pom.xml b/spring-mobile/pom.xml index 8b8618aeee..3a129c179e 100644 --- a/spring-mobile/pom.xml +++ b/spring-mobile/pom.xml @@ -11,10 +11,10 @@ http://maven.apache.org - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-mockito/pom.xml b/spring-mockito/pom.xml index d8bcc5682a..8c2949275c 100644 --- a/spring-mockito/pom.xml +++ b/spring-mockito/pom.xml @@ -12,10 +12,10 @@ Injecting Mockito Mocks into Spring Beans - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-mockito/src/test/java/com/baeldung/UserServiceIntegrationTest.java b/spring-mockito/src/test/java/com/baeldung/UserServiceIntegrationTest.java index 70861a96e1..d70f916b12 100644 --- a/spring-mockito/src/test/java/com/baeldung/UserServiceIntegrationTest.java +++ b/spring-mockito/src/test/java/com/baeldung/UserServiceIntegrationTest.java @@ -5,13 +5,13 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @ActiveProfiles("test") @RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = MocksApplication.class) +@SpringBootTest(classes = MocksApplication.class) public class UserServiceIntegrationTest { @Autowired diff --git a/spring-mvc-email/pom.xml b/spring-mvc-email/pom.xml index 9228054878..ddb1765af0 100644 --- a/spring-mvc-email/pom.xml +++ b/spring-mvc-email/pom.xml @@ -10,10 +10,10 @@ war - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-mvc-simple/README.md b/spring-mvc-simple/README.md index 197a22cbac..69a9027280 100644 --- a/spring-mvc-simple/README.md +++ b/spring-mvc-simple/README.md @@ -2,3 +2,4 @@ - [HandlerAdapters in Spring MVC](http://www.baeldung.com/spring-mvc-handler-adapters) - [Template Engines for Spring](http://www.baeldung.com/spring-template-engines) +- [Spring 5 and Servlet 4 – The PushBuilder](http://www.baeldung.com/spring-5-push) diff --git a/spring-mvc-simple/pom.xml b/spring-mvc-simple/pom.xml index 8a51c04113..595e58f5f3 100644 --- a/spring-mvc-simple/pom.xml +++ b/spring-mvc-simple/pom.xml @@ -8,83 +8,63 @@ Spring MVC simple Maven Webapp http://maven.apache.org - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - 4.3.10.RELEASE - 3.1.0 + 1.8 + 1.8 + UTF-8 + 5.0.2.RELEASE + 3.2.0 + 3.7.0 + 2.20 1.2 - 2.3.1 - 3.1.0 + 2.3.2-b02 + 4.0.0 5.4.1.Final enter-location-of-server 1.3.2 1.8 3.0.7.RELEASE 2.4.12 - 2.3.23 + 2.3.27-incubating 1.2.5 + 5.0.2 + 5.0.2 + 1.0.2 + 1.9.0 javax.servlet javax.servlet-api - 3.1.0 - - - org.springframework - spring-webmvc - ${springframework.version} - - - org.springframework - spring-context - ${springframework.version} - - - org.springframework - spring-core - ${springframework.version} - - - commons-logging - commons-logging - - + ${javax.servlet-api.version} javax.servlet.jsp javax.servlet.jsp-api ${javax.servlet.jsp-api.version} - javax.servlet jstl ${jstl.version} - org.hibernate hibernate-validator ${hibernate-validator.version} - - org.springframework - spring-webmvc - ${springframework.version} - commons-fileupload commons-fileupload ${fileupload.version} - + + org.springframework + spring-webmvc + ${springframework.version} + + org.thymeleaf @@ -115,7 +95,7 @@ groovy-templates ${groovy.version} - + de.neuland-bfi @@ -123,6 +103,24 @@ ${jade.version} + + + org.springframework + spring-test + ${springframework.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.jupiter.version} + test + + + com.rometools + rome + ${rome.version} + @@ -141,10 +139,18 @@ org.apache.maven.plugins maven-compiler-plugin - - 1.8 - 1.8 - + ${maven.compiler.version} + + + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + org.junit.platform + junit-platform-surefire-provider + ${junit.platform.version} + + diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/ApplicationConfiguration.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/ApplicationConfiguration.java index b62ccae465..b9a8336bf2 100644 --- a/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/ApplicationConfiguration.java +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/ApplicationConfiguration.java @@ -7,13 +7,13 @@ import org.springframework.web.multipart.MultipartResolver; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.view.InternalResourceViewResolver; @Configuration @EnableWebMvc @ComponentScan(basePackages = { "com.baeldung.springmvcforms", "com.baeldung.spring.controller", "com.baeldung.spring.validator" }) -class ApplicationConfiguration extends WebMvcConfigurerAdapter { +class ApplicationConfiguration implements WebMvcConfigurer { @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/JadeTemplateConfiguration.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/JadeTemplateConfiguration.java index 10345bac58..4c95e5a0bd 100644 --- a/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/JadeTemplateConfiguration.java +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/JadeTemplateConfiguration.java @@ -16,24 +16,24 @@ import de.neuland.jade4j.spring.view.JadeViewResolver; public class JadeTemplateConfiguration { @Bean public SpringTemplateLoader templateLoader() { - SpringTemplateLoader templateLoader = new SpringTemplateLoader(); - templateLoader.setBasePath("/WEB-INF/views/"); - templateLoader.setSuffix(".jade"); - return templateLoader; + SpringTemplateLoader templateLoader = new SpringTemplateLoader(); + templateLoader.setBasePath("/WEB-INF/views/"); + templateLoader.setSuffix(".jade"); + return templateLoader; } @Bean public JadeConfiguration jadeConfiguration() { - JadeConfiguration configuration = new JadeConfiguration(); - configuration.setCaching(false); - configuration.setTemplateLoader(templateLoader()); - return configuration; + JadeConfiguration configuration = new JadeConfiguration(); + configuration.setCaching(false); + configuration.setTemplateLoader(templateLoader()); + return configuration; } @Bean public ViewResolver viewResolver() { - JadeViewResolver viewResolver = new JadeViewResolver(); - viewResolver.setConfiguration(jadeConfiguration()); - return viewResolver; + JadeViewResolver viewResolver = new JadeViewResolver(); + viewResolver.setConfiguration(jadeConfiguration()); + return viewResolver; } } diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/PushConfiguration.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/PushConfiguration.java new file mode 100644 index 0000000000..3072501cfa --- /dev/null +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/PushConfiguration.java @@ -0,0 +1,30 @@ +package com.baeldung.spring.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.view.InternalResourceViewResolver; + +@Configuration +@EnableWebMvc +@ComponentScan(basePackages = "com.baeldung.spring.controller.push") +public class PushConfiguration implements WebMvcConfigurer { + + @Bean + public InternalResourceViewResolver jspViewResolver() { + InternalResourceViewResolver bean = new InternalResourceViewResolver(); + bean.setPrefix("/WEB-INF/views/"); + bean.setSuffix(".jsp"); + return bean; + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/resources/**") + .addResourceLocations("/resources/"); + } + +} diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/WebInitializer.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/WebInitializer.java index d57d2c621a..09030a8347 100644 --- a/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/WebInitializer.java +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/configuration/WebInitializer.java @@ -11,42 +11,23 @@ import javax.servlet.ServletRegistration; public class WebInitializer implements WebApplicationInitializer { - public void onStartup(ServletContext container) throws ServletException { + public void onStartup(ServletContext container) throws ServletException { - AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); - ctx.register(ApplicationConfiguration.class); - //ctx.register(ThymeleafConfiguration.class); - //ctx.register(FreemarkerConfiguration.class); - //ctx.register(GroovyConfiguration.class); - //ctx.register(JadeTemplateConfiguration.class); - ctx.setServletContext(container); + AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); + ctx.register(ApplicationConfiguration.class); + // ctx.register(ThymeleafConfiguration.class); + // ctx.register(FreemarkerConfiguration.class); + // ctx.register(GroovyConfiguration.class); + // ctx.register(JadeTemplateConfiguration.class); + // ctx.register(PushConfiguration.class); + // ctx.setServletContext(container); - // Manage the lifecycle of the root application context - container.addListener(new ContextLoaderListener(ctx)); + // Manage the lifecycle of the root application context + container.addListener(new ContextLoaderListener(ctx)); - ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx)); + ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx)); - servlet.setLoadOnStartup(1); - servlet.addMapping("/"); - - } -// @Override -// public void onStartup(ServletContext container) { -// // Create the 'root' Spring application context -// AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); -// rootContext.register(ServiceConfig.class, JPAConfig.class, SecurityConfig.class); -// -// // Manage the lifecycle of the root application context -// container.addListener(new ContextLoaderListener(rootContext)); -// -// // Create the dispatcher servlet's Spring application context -// AnnotationConfigWebApplicationContext dispatcherServlet = new AnnotationConfigWebApplicationContext(); -// dispatcherServlet.register(MvcConfig.class); -// -// // Register and map the dispatcher servlet -// ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherServlet)); -// dispatcher.setLoadOnStartup(1); -// dispatcher.addMapping("/"); -// -// } + servlet.setLoadOnStartup(1); + servlet.addMapping("/"); + } } diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java index 164830cd6a..89f5b2501b 100644 --- a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/AnnotationMethodHandlerAdapterExample.java @@ -6,10 +6,10 @@ import org.springframework.web.servlet.ModelAndView; @Controller public class AnnotationMethodHandlerAdapterExample { - @RequestMapping("/annotedName") - public ModelAndView getEmployeeName() { - ModelAndView model = new ModelAndView("Greeting"); - model.addObject("message", "Dinesh"); - return model; - } + @RequestMapping("/annotedName") + public ModelAndView getEmployeeName() { + ModelAndView model = new ModelAndView("Greeting"); + model.addObject("message", "Dinesh"); + return model; + } } \ No newline at end of file diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/FileUploadController.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/FileUploadController.java index 47af2ab50d..2ca9e2b135 100644 --- a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/FileUploadController.java +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/FileUploadController.java @@ -23,13 +23,13 @@ public class FileUploadController implements HandlerExceptionResolver { } @RequestMapping(value = "/uploadFile", method = RequestMethod.POST) - public ModelAndView uploadFile(MultipartFile file) throws IOException{ + public ModelAndView uploadFile(MultipartFile file) throws IOException { ModelAndView modelAndView = new ModelAndView("file"); - - InputStream in = file.getInputStream(); + + InputStream in = file.getInputStream(); File currDir = new File("."); String path = currDir.getAbsolutePath(); - FileOutputStream f = new FileOutputStream(path.substring(0, path.length()-1)+ file.getOriginalFilename()); + FileOutputStream f = new FileOutputStream(path.substring(0, path.length() - 1) + file.getOriginalFilename()); int ch = 0; while ((ch = in.read()) != -1) { f.write(ch); @@ -37,15 +37,17 @@ public class FileUploadController implements HandlerExceptionResolver { f.flush(); f.close(); - modelAndView.getModel().put("message", "File uploaded successfully!"); + modelAndView.getModel() + .put("message", "File uploaded successfully!"); return modelAndView; } - + @Override - public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object object, Exception exc) { + public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object object, Exception exc) { ModelAndView modelAndView = new ModelAndView("file"); if (exc instanceof MaxUploadSizeExceededException) { - modelAndView.getModel().put("message", "File size exceeds limit!"); + modelAndView.getModel() + .put("message", "File size exceeds limit!"); } return modelAndView; } diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java index 76ac3e2806..754bea79f1 100644 --- a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/RequestMappingHandlerAdapterExample.java @@ -6,10 +6,10 @@ import org.springframework.web.servlet.ModelAndView; @Controller public class RequestMappingHandlerAdapterExample { - @RequestMapping("/requestName") - public ModelAndView getEmployeeName() { - ModelAndView model = new ModelAndView("Greeting"); - model.addObject("message", "Madhwal"); - return model; - } + @RequestMapping("/requestName") + public ModelAndView getEmployeeName() { + ModelAndView model = new ModelAndView("Greeting"); + model.addObject("message", "Madhwal"); + return model; + } } \ No newline at end of file diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java index bac091ffeb..17c4ab689e 100644 --- a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/SimpleControllerHandlerAdapterExample.java @@ -6,13 +6,11 @@ import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; -public class SimpleControllerHandlerAdapterExample extends - AbstractController { - @Override - protected ModelAndView handleRequestInternal(HttpServletRequest request, - HttpServletResponse response) throws Exception { - ModelAndView model = new ModelAndView("Greeting"); - model.addObject("message", "Dinesh Madhwal"); - return model; - } +public class SimpleControllerHandlerAdapterExample extends AbstractController { + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { + ModelAndView model = new ModelAndView("Greeting"); + model.addObject("message", "Dinesh Madhwal"); + return model; + } } \ No newline at end of file diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/push/PushController.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/push/PushController.java new file mode 100644 index 0000000000..b557c65c93 --- /dev/null +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/push/PushController.java @@ -0,0 +1,25 @@ +package com.baeldung.spring.controller.push; + +import javax.servlet.http.PushBuilder; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class PushController { + + @GetMapping(path = "/demoWithPush") + public String demoWithPush(PushBuilder pushBuilder) { + if (null != pushBuilder) { + pushBuilder.path("resources/logo.png") + .addHeader("Content-Type", "image/png") + .push(); + } + return "demo"; + } + + @GetMapping(path = "/demoWithoutPush") + public String demoWithoutPush() { + return "demo"; + } +} \ No newline at end of file diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/rss/ArticleFeedView.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/rss/ArticleFeedView.java new file mode 100644 index 0000000000..cfbd33cd57 --- /dev/null +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/rss/ArticleFeedView.java @@ -0,0 +1,54 @@ +package com.baeldung.spring.controller.rss; + +import com.rometools.rome.feed.rss.Channel; +import com.rometools.rome.feed.rss.Description; +import com.rometools.rome.feed.rss.Item; +import org.springframework.stereotype.Service; +import org.springframework.web.servlet.view.feed.AbstractRssFeedView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +@Service("articleFeedView") +public class ArticleFeedView extends AbstractRssFeedView { + + protected Channel newFeed() { + Channel channel = new Channel("rss_2.0"); + channel.setLink("http://localhost:8080/spring-mvc-simple/rss"); + channel.setTitle("Article Feed"); + channel.setDescription("Article Feed Description"); + channel.setPubDate(new Date()); + return channel; + } + + @Override + protected List buildFeedItems(Map map, HttpServletRequest httpStRequest, HttpServletResponse httpStResponse) throws Exception { + List list = new ArrayList(); + + Item item1 = new Item(); + item1.setLink("http://www.baeldung.com/netty-exception-handling"); + item1.setTitle("Exceptions in Netty"); + Description description1 = new Description(); + description1.setValue("In this quick article, we’ll be looking at exception handling in Netty."); + item1.setDescription(description1); + item1.setPubDate(new Date()); + item1.setAuthor("Carlos"); + + Item item2 = new Item(); + item2.setLink("http://www.baeldung.com/cockroachdb-java"); + item2.setTitle("Guide to CockroachDB in Java"); + Description description2 = new Description(); + description2.setValue("This tutorial is an introductory guide to using CockroachDB with Java."); + item2.setDescription(description2); + item2.setPubDate(new Date()); + item2.setAuthor("Baeldung"); + + list.add(item1); + list.add(item2); + return list; + } +} diff --git a/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/rss/ArticleRssController.java b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/rss/ArticleRssController.java new file mode 100644 index 0000000000..1f51b238ac --- /dev/null +++ b/spring-mvc-simple/src/main/java/com/baeldung/spring/controller/rss/ArticleRssController.java @@ -0,0 +1,14 @@ +package com.baeldung.spring.controller.rss; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class ArticleRssController { + + @GetMapping(value = "/rss", produces = "application/*") + public String articleFeed() { + return "articleFeedView"; + } + +} diff --git a/spring-mvc-simple/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml b/spring-mvc-simple/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml deleted file mode 100644 index 430b849012..0000000000 --- a/spring-mvc-simple/src/main/resources/spring-servlet_AnnotationMethodHandlerAdapter.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/spring-mvc-simple/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml b/spring-mvc-simple/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml deleted file mode 100644 index d3783c2e67..0000000000 --- a/spring-mvc-simple/src/main/resources/spring-servlet_RequestMappingHandlerAdapter.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/spring-mvc-simple/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml b/spring-mvc-simple/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml deleted file mode 100644 index 1d6e5628df..0000000000 --- a/spring-mvc-simple/src/main/resources/spring-servlet_SimpleControllerHandlerAdapter.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/spring-mvc-simple/src/main/webapp/WEB-INF/views/demo.jsp b/spring-mvc-simple/src/main/webapp/WEB-INF/views/demo.jsp new file mode 100644 index 0000000000..d5579debf7 --- /dev/null +++ b/spring-mvc-simple/src/main/webapp/WEB-INF/views/demo.jsp @@ -0,0 +1,17 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> + + + +PushBuilder demo + + + PushBuilder demo +
+ " alt="Logo" + height="126" width="411"> +
+ + + \ No newline at end of file diff --git a/spring-mvc-simple/src/main/webapp/WEB-INF/views/registration-jade.jade b/spring-mvc-simple/src/main/webapp/WEB-INF/views/registration-jade.jade index 44b6293ff0..f271ac6852 100644 --- a/spring-mvc-simple/src/main/webapp/WEB-INF/views/registration-jade.jade +++ b/spring-mvc-simple/src/main/webapp/WEB-INF/views/registration-jade.jade @@ -4,7 +4,7 @@ html title User Registration body form(action="register" method="post" ) - label(for="email") Emailaaaaaaaa: + label(for="email") Email: input(type="text" name="email") label(for="password") Password: input(type="password" name="password") diff --git a/spring-mvc-simple/src/main/webapp/resources/logo.png b/spring-mvc-simple/src/main/webapp/resources/logo.png new file mode 100644 index 0000000000..edb83efbe3 Binary files /dev/null and b/spring-mvc-simple/src/main/webapp/resources/logo.png differ diff --git a/spring-mvc-simple/src/test/java/com/baeldung/controller/push/PushControllerIntegrationTest.java b/spring-mvc-simple/src/test/java/com/baeldung/controller/push/PushControllerIntegrationTest.java new file mode 100644 index 0000000000..a03d02895f --- /dev/null +++ b/spring-mvc-simple/src/test/java/com/baeldung/controller/push/PushControllerIntegrationTest.java @@ -0,0 +1,39 @@ +package com.baeldung.controller.push; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.junit.jupiter.web.SpringJUnitWebConfig; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import com.baeldung.spring.configuration.PushConfiguration; + +@SpringJUnitWebConfig(PushConfiguration.class) +public class PushControllerIntegrationTest { + @Autowired + private WebApplicationContext webAppContext; + private MockMvc mockMvc; + + @BeforeEach + public void setup() { + mockMvc = MockMvcBuilders.webAppContextSetup(webAppContext) + .build(); + } + + @Test + public void whenDemoWithPushGETisPerformed_thenRetrievedStatusOk() throws Exception { + mockMvc.perform(get("/demoWithPush")) + .andExpect(status().isOk()); + } + + @Test + public void whenDemoWithoutPushGETisPerformed_thenRetrievedStatusOk() throws Exception { + mockMvc.perform(get("/demoWithoutPush")) + .andExpect(status().isOk()); + } +} \ No newline at end of file diff --git a/spring-mvc-xml/pom.xml b/spring-mvc-xml/pom.xml index 2131609ff6..049a3fec82 100644 --- a/spring-mvc-xml/pom.xml +++ b/spring-mvc-xml/pom.xml @@ -110,7 +110,7 @@ - 4.3.4.RELEASE + 5.0.2.RELEASE 4.2.0.RELEASE @@ -142,4 +142,4 @@ - \ No newline at end of file + diff --git a/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleOne.java b/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleOne.java index 0b153bf8ec..6744570639 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleOne.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleOne.java @@ -8,24 +8,14 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ExampleOne extends HttpServlet { - - private static final long serialVersionUID = 1L; - - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setContentType("text/html"); - PrintWriter out = response.getWriter(); - out.println( - "" + - "" + - "" + - "HTML Rendered by Servlet" + - "" + - "" + - "

HTML Rendered by Servlet


" + - "

This page was rendered by the ExampleOne Servlet!

" + - "" + - "" - ); - } + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setContentType("text/html"); + PrintWriter out = response.getWriter(); + out.println("" + "" + "" + "HTML Rendered by Servlet" + "" + "" + "

HTML Rendered by Servlet


" + "

This page was rendered by the ExampleOne Servlet!

" + + "" + ""); + } } \ No newline at end of file diff --git a/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleThree.java b/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleThree.java index 49fefcffde..7269f917b4 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleThree.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/jsp/ExampleThree.java @@ -7,18 +7,14 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -@WebServlet( - name = "ExampleThree", - description = "JSP Servlet With Annotations", - urlPatterns = {"/ExampleThree"} -) +@WebServlet(name = "ExampleThree", description = "JSP Servlet With Annotations", urlPatterns = { "/ExampleThree" }) public class ExampleThree extends HttpServlet { - private static final long serialVersionUID = 1L; - - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String message = request.getParameter("message"); - request.setAttribute("text", message); - request.getRequestDispatcher("/jsp/ExampleThree.jsp").forward(request, response); - } + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String message = request.getParameter("message"); + request.setAttribute("text", message); + request.getRequestDispatcher("/jsp/ExampleThree.jsp").forward(request, response); + } } diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java index 96556bd5b1..6ae1023374 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ErrorController.java @@ -9,7 +9,7 @@ import org.springframework.web.servlet.ModelAndView; @Controller public class ErrorController { - + @RequestMapping(value = "500Error", method = RequestMethod.GET) public void throwRuntimeException() { throw new NullPointerException("Throwing a null pointer exception"); @@ -34,19 +34,18 @@ public class ErrorController { errorMsg = "Http Error Code : 404. Resource not found"; break; } - // Handle other 4xx error codes. + // Handle other 4xx error codes. case 500: { errorMsg = "Http Error Code : 500. Internal Server Error"; break; } - // Handle other 5xx error codes. + // Handle other 5xx error codes. } errorPage.addObject("errorMsg", errorMsg); return errorPage; } private int getErrorCode(HttpServletRequest httpRequest) { - return (Integer) httpRequest - .getAttribute("javax.servlet.error.status_code"); + return (Integer) httpRequest.getAttribute("javax.servlet.error.status_code"); } } diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GeoIPTestController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GeoIPTestController.java index 16de4e56f5..eeaddcf8e0 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GeoIPTestController.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GeoIPTestController.java @@ -14,15 +14,15 @@ import com.baeldung.spring.service.RawDBDemoGeoIPLocationService; @Controller public class GeoIPTestController { private RawDBDemoGeoIPLocationService locationService; + public GeoIPTestController() throws IOException { - locationService - = new RawDBDemoGeoIPLocationService(); + locationService = new RawDBDemoGeoIPLocationService(); } - @RequestMapping(value="/GeoIPTest", method = RequestMethod.POST) + + @RequestMapping(value = "/GeoIPTest", method = RequestMethod.POST) @ResponseBody - public GeoIP getLocation( - @RequestParam(value="ipAddress", required=true) String ipAddress) throws Exception { - + public GeoIP getLocation(@RequestParam(value = "ipAddress", required = true) String ipAddress) throws Exception { + return locationService.getLocation(ipAddress); } } diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ImageController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ImageController.java index ef8d1214df..fc46c07e06 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ImageController.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/ImageController.java @@ -12,7 +12,6 @@ import org.springframework.web.context.support.ServletContextResource; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletResponse; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/form/GeoIP.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/form/GeoIP.java index 19f56867a1..4373303107 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/spring/form/GeoIP.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/form/GeoIP.java @@ -5,15 +5,15 @@ public class GeoIP { private String city; private String latitude; private String longitude; - + public GeoIP() { - + } - + public GeoIP(String ipAddress) { this.ipAddress = ipAddress; } - + public GeoIP(String ipAddress, String city, String latitude, String longitude) { this.ipAddress = ipAddress; this.city = city; @@ -52,5 +52,5 @@ public class GeoIP { public void setLongitude(String longitude) { this.longitude = longitude; } - + } diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java index af3ce8cfb3..04443466c9 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java @@ -9,18 +9,18 @@ import com.maxmind.geoip2.DatabaseReader; import com.maxmind.geoip2.exception.GeoIp2Exception; import com.maxmind.geoip2.model.CityResponse; -public class RawDBDemoGeoIPLocationService{ +public class RawDBDemoGeoIPLocationService { private DatabaseReader dbReader; - + public RawDBDemoGeoIPLocationService() throws IOException { File database = new File("your-path-to-db-file"); dbReader = new DatabaseReader.Builder(database).build(); } - + public GeoIP getLocation(String ip) throws IOException, GeoIp2Exception { InetAddress ipAddress = InetAddress.getByName(ip); CityResponse response = dbReader.city(ipAddress); - + String cityName = response.getCity().getName(); String latitude = response.getLocation().getLatitude().toString(); String longitude = response.getLocation().getLongitude().toString(); diff --git a/spring-mvc-xml/src/main/resources/contentManagementWebMvcConfig.xml b/spring-mvc-xml/src/main/resources/contentManagementWebMvcConfig.xml index 41422d8954..75d5c1ecd6 100644 --- a/spring-mvc-xml/src/main/resources/contentManagementWebMvcConfig.xml +++ b/spring-mvc-xml/src/main/resources/contentManagementWebMvcConfig.xml @@ -4,11 +4,11 @@ xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-4.2.xsd + http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-4.2.xsd + http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc - http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd"> + http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> diff --git a/spring-mvc-xml/src/main/resources/webMvcConfig.xml b/spring-mvc-xml/src/main/resources/webMvcConfig.xml index c471adf331..37aebe1d1d 100644 --- a/spring-mvc-xml/src/main/resources/webMvcConfig.xml +++ b/spring-mvc-xml/src/main/resources/webMvcConfig.xml @@ -3,11 +3,11 @@ xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-4.2.xsd + http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-4.2.xsd + http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/mvc - http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd" + http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd" > diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/mvc-servlet.xml b/spring-mvc-xml/src/main/webapp/WEB-INF/mvc-servlet.xml index 47e2769902..032457da43 100644 --- a/spring-mvc-xml/src/main/webapp/WEB-INF/mvc-servlet.xml +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/mvc-servlet.xml @@ -2,9 +2,9 @@ + http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> @@ -58,4 +58,4 @@ - \ No newline at end of file + diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml index 1ea3051426..6ff435b84b 100644 --- a/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/web.xml @@ -1,10 +1,9 @@ - - Spring MVC XML Application @@ -65,4 +64,4 @@ /errors - \ No newline at end of file + diff --git a/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java b/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java index 2edaa125b7..0e957f3400 100644 --- a/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java +++ b/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java @@ -10,22 +10,21 @@ import com.maxmind.geoip2.DatabaseReader; import com.maxmind.geoip2.exception.GeoIp2Exception; import com.maxmind.geoip2.model.CityResponse; - public class GeoIpIntegrationTest { - + @Test public void givenIP_whenFetchingCity_thenReturnsCityData() throws IOException, GeoIp2Exception { File database = new File("your-path-to-db-file"); DatabaseReader dbReader = new DatabaseReader.Builder(database).build(); - + InetAddress ipAddress = InetAddress.getByName("your-public-ip"); CityResponse response = dbReader.city(ipAddress); - + String countryName = response.getCountry().getName(); String cityName = response.getCity().getName(); String postal = response.getPostal().getCode(); String state = response.getLeastSpecificSubdivision().getName(); - + } - + } diff --git a/spring-protobuf/pom.xml b/spring-protobuf/pom.xml index 36310e08f1..1771c3e1f2 100644 --- a/spring-protobuf/pom.xml +++ b/spring-protobuf/pom.xml @@ -7,10 +7,10 @@ spring-protobuf - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationIntegrationTest.java b/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationIntegrationTest.java index 914cf18627..4b9f41ace3 100644 --- a/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationIntegrationTest.java +++ b/spring-protobuf/src/test/java/com/baeldung/protobuf/ApplicationIntegrationTest.java @@ -1,7 +1,11 @@ package com.baeldung.protobuf; -import com.baeldung.protobuf.BaeldungTraining.Course; -import com.googlecode.protobuf.format.JsonFormat; +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertThat; + +import java.io.IOException; +import java.io.InputStream; + import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; @@ -9,21 +13,17 @@ import org.apache.http.impl.client.HttpClients; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; -import org.springframework.boot.test.WebIntegrationTest; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.client.RestTemplate; -import java.io.IOException; -import java.io.InputStream; - -import static org.hamcrest.CoreMatchers.containsString; -import static org.junit.Assert.assertThat; +import com.baeldung.protobuf.BaeldungTraining.Course; +import com.googlecode.protobuf.format.JsonFormat; @RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = Application.class) -@WebIntegrationTest +@SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.DEFINED_PORT) public class ApplicationIntegrationTest { private static final String COURSE1_URL = "http://localhost:8080/courses/1"; diff --git a/spring-quartz/pom.xml b/spring-quartz/pom.xml index eb00911543..78beab6e38 100644 --- a/spring-quartz/pom.xml +++ b/spring-quartz/pom.xml @@ -11,10 +11,10 @@ Demo project for Scheduling in Spring with Quartz - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-reactor/pom.xml b/spring-reactor/pom.xml index 759e9f2b58..1a19d9c6d9 100644 --- a/spring-reactor/pom.xml +++ b/spring-reactor/pom.xml @@ -9,10 +9,10 @@ http://maven.apache.org - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-remoting/pom.xml b/spring-remoting/pom.xml index b40f77eb50..aac8357c10 100644 --- a/spring-remoting/pom.xml +++ b/spring-remoting/pom.xml @@ -11,10 +11,10 @@ Parent for all projects related to Spring Remoting. - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-remoting/remoting-hessian-burlap/client/src/test/java/com/baeldung/client/CabBookingServiceTest.java b/spring-remoting/remoting-hessian-burlap/client/src/test/java/com/baeldung/client/CabBookingServiceIntegrationTest.java similarity index 97% rename from spring-remoting/remoting-hessian-burlap/client/src/test/java/com/baeldung/client/CabBookingServiceTest.java rename to spring-remoting/remoting-hessian-burlap/client/src/test/java/com/baeldung/client/CabBookingServiceIntegrationTest.java index 373701f714..a1fed9637f 100644 --- a/spring-remoting/remoting-hessian-burlap/client/src/test/java/com/baeldung/client/CabBookingServiceTest.java +++ b/spring-remoting/remoting-hessian-burlap/client/src/test/java/com/baeldung/client/CabBookingServiceIntegrationTest.java @@ -18,9 +18,9 @@ import static java.lang.Thread.sleep; @SpringBootTest(classes = {BurlapClient.class, HessianClient.class}) @RunWith(SpringRunner.class) -public class CabBookingServiceTest { +public class CabBookingServiceIntegrationTest { - static Logger log = LoggerFactory.getLogger(CabBookingServiceTest.class); + static Logger log = LoggerFactory.getLogger(CabBookingServiceIntegrationTest.class); @Autowired @Qualifier("burlapInvoker") CabBookingService burlapClient; @Autowired @Qualifier("hessianInvoker") CabBookingService hessianClient; static Thread serverThread; diff --git a/spring-rest-docs/README.MD b/spring-rest-docs/README.MD deleted file mode 100644 index f5d001d126..0000000000 --- a/spring-rest-docs/README.MD +++ /dev/null @@ -1,5 +0,0 @@ -###The Course -The "REST With Spring" Classes: http://bit.ly/restwithspring - -###Relevant Articles: -- [Introduction to Spring REST Docs](http://www.baeldung.com/spring-rest-docs) diff --git a/spring-rest-docs/pom.xml b/spring-rest-docs/pom.xml deleted file mode 100644 index 4647577629..0000000000 --- a/spring-rest-docs/pom.xml +++ /dev/null @@ -1,112 +0,0 @@ - - - 4.0.0 - - com.example - spring-rest-docs - 0.0.1-SNAPSHOT - jar - - spring-rest-docs - Demo project for Spring Boot - - - parent-boot-4 - com.baeldung - 0.0.1-SNAPSHOT - ../parent-boot-4 - - - - ${project.build.directory}/generated-snippets - 1.1.2.RELEASE - 2.2.0 - 1.5.3 - - - - - org.springframework.boot - spring-boot-starter-hateoas - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.restdocs - spring-restdocs-mockmvc - test - - - com.jayway.jsonpath - json-path - - - - - - - org.asciidoctor - asciidoctor-maven-plugin - ${asciidoctor-plugin.version} - - - generate-docs - package - - process-asciidoc - - - html - book - - ${snippetsDirectory} - - src/docs/asciidocs - target/generated-docs - - - - - - - - - - integration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*LiveTest.java - - - **/*IntegrationTest.java - - - - - - - json - - - - - - - - - diff --git a/spring-rest-docs/src/main/java/com/example/CrudInput.java b/spring-rest-docs/src/main/java/com/example/CrudInput.java deleted file mode 100644 index 36ad67eb21..0000000000 --- a/spring-rest-docs/src/main/java/com/example/CrudInput.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.example; - -import java.net.URI; -import java.util.Collections; -import java.util.List; - -import org.hibernate.validator.constraints.NotBlank; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -public class CrudInput { - - // @NotBlank - private final String title; - - private final String body; - - private final List tagUris; - - @JsonCreator - public CrudInput(@JsonProperty("title") String title, @JsonProperty("body") String body, @JsonProperty("tags") List tagUris) { - this.title = title; - this.body = body; - this.tagUris = tagUris == null ? Collections. emptyList() : tagUris; - } - - public String getTitle() { - return title; - } - - public String getBody() { - return body; - } - - @JsonProperty("tags") - public List getTagUris() { - return this.tagUris; - } - -} \ No newline at end of file diff --git a/spring-rest-docs/src/test/java/com/example/ApiDocumentationIntegrationTest.java b/spring-rest-docs/src/test/java/com/example/ApiDocumentationIntegrationTest.java deleted file mode 100644 index f2ac9d0f82..0000000000 --- a/spring-rest-docs/src/test/java/com/example/ApiDocumentationIntegrationTest.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.example; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; -import org.springframework.hateoas.MediaTypes; -import org.springframework.restdocs.RestDocumentation; -import org.springframework.restdocs.constraints.ConstraintDescriptions; -import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler; -import org.springframework.restdocs.payload.FieldDescriptor; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.web.context.WebApplicationContext; - -import java.util.HashMap; -import java.util.Map; - -import static java.util.Collections.singletonList; -import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; -import static org.springframework.restdocs.headers.HeaderDocumentation.responseHeaders; -import static org.springframework.restdocs.hypermedia.HypermediaDocumentation.linkWithRel; -import static org.springframework.restdocs.hypermedia.HypermediaDocumentation.links; -import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; -import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.delete; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.patch; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.put; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint; -import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; -import static org.springframework.restdocs.payload.PayloadDocumentation.requestFields; -import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; -import static org.springframework.restdocs.snippet.Attributes.key; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import static org.springframework.util.StringUtils.collectionToDelimitedString; - -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = SpringRestDocsApplication.class) -@WebAppConfiguration -public class ApiDocumentationIntegrationTest { - - @Rule - public final RestDocumentation restDocumentation = new RestDocumentation("target/generated-snippets"); - - @Autowired - private WebApplicationContext context; - - @Autowired - private ObjectMapper objectMapper; - - private RestDocumentationResultHandler document; - - private MockMvc mockMvc; - - @Before - public void setUp() { - this.document = document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint())); - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context).apply(documentationConfiguration(this.restDocumentation)).alwaysDo(this.document).build(); - } - - @Test - public void headersExample() throws Exception { - this.document.snippets(responseHeaders(headerWithName("Content-Type").description("The Content-Type of the payload, e.g. `application/hal+json`"))); - this.mockMvc.perform(get("/")).andExpect(status().isOk()); - } - - @Test - public void indexExample() throws Exception { - this.document.snippets(links(linkWithRel("crud").description("The <>")), responseFields(fieldWithPath("_links").description("<> to other resources"))); - this.mockMvc.perform(get("/")).andExpect(status().isOk()); - } - - @Test - public void crudGetExample() throws Exception { - - Map tag = new HashMap<>(); - tag.put("name", "GET"); - - String tagLocation = this.mockMvc.perform(get("/crud").contentType(MediaTypes.HAL_JSON).content(this.objectMapper.writeValueAsString(tag))).andExpect(status().isOk()).andReturn().getResponse().getHeader("Location"); - - Map crud = new HashMap<>(); - crud.put("title", "Sample Model"); - crud.put("body", "http://www.baeldung.com/"); - crud.put("tags", singletonList(tagLocation)); - - this.mockMvc.perform(get("/crud").contentType(MediaTypes.HAL_JSON).content(this.objectMapper.writeValueAsString(crud))).andExpect(status().isOk()); - } - - @Test - public void crudCreateExample() throws Exception { - Map tag = new HashMap<>(); - tag.put("name", "CREATE"); - - String tagLocation = this.mockMvc.perform(post("/crud").contentType(MediaTypes.HAL_JSON).content(this.objectMapper.writeValueAsString(tag))).andExpect(status().isCreated()).andReturn().getResponse().getHeader("Location"); - - Map crud = new HashMap<>(); - crud.put("title", "Sample Model"); - crud.put("body", "http://www.baeldung.com/"); - crud.put("tags", singletonList(tagLocation)); - - ConstrainedFields fields = new ConstrainedFields(CrudInput.class); - this.document.snippets(requestFields(fields.withPath("title").description("The title of the note"), fields.withPath("body").description("The body of the note"), fields.withPath("tags").description("An array of tag resource URIs"))); - this.mockMvc.perform(post("/crud").contentType(MediaTypes.HAL_JSON).content(this.objectMapper.writeValueAsString(crud))).andExpect(status().isCreated()); - - } - - @Test - public void crudDeleteExample() throws Exception { - - Map tag = new HashMap<>(); - tag.put("name", "DELETE"); - - String tagLocation = this.mockMvc.perform(delete("/crud/10").contentType(MediaTypes.HAL_JSON).content(this.objectMapper.writeValueAsString(tag))).andExpect(status().isOk()).andReturn().getResponse().getHeader("Location"); - - Map crud = new HashMap<>(); - crud.put("title", "Sample Model"); - crud.put("body", "http://www.baeldung.com/"); - crud.put("tags", singletonList(tagLocation)); - - this.mockMvc.perform(delete("/crud/10").contentType(MediaTypes.HAL_JSON).content(this.objectMapper.writeValueAsString(crud))).andExpect(status().isOk()); - } - - @Test - public void crudPatchExample() throws Exception { - - Map tag = new HashMap<>(); - tag.put("name", "PATCH"); - - String tagLocation = this.mockMvc.perform(patch("/crud/10").contentType(MediaTypes.HAL_JSON).content(this.objectMapper.writeValueAsString(tag))).andExpect(status().isNoContent()).andReturn().getResponse().getHeader("Location"); - - Map crud = new HashMap<>(); - crud.put("title", "Sample Model"); - crud.put("body", "http://www.baeldung.com/"); - crud.put("tags", singletonList(tagLocation)); - - this.mockMvc.perform(patch("/crud/10").contentType(MediaTypes.HAL_JSON).content(this.objectMapper.writeValueAsString(crud))).andExpect(status().isNoContent()); - } - - @Test - public void crudPutExample() throws Exception { - Map tag = new HashMap<>(); - tag.put("name", "PUT"); - - String tagLocation = this.mockMvc.perform(put("/crud/10").contentType(MediaTypes.HAL_JSON).content(this.objectMapper.writeValueAsString(tag))).andExpect(status().isAccepted()).andReturn().getResponse().getHeader("Location"); - - Map crud = new HashMap<>(); - crud.put("title", "Sample Model"); - crud.put("body", "http://www.baeldung.com/"); - crud.put("tags", singletonList(tagLocation)); - - this.mockMvc.perform(put("/crud/10").contentType(MediaTypes.HAL_JSON).content(this.objectMapper.writeValueAsString(crud))).andExpect(status().isAccepted()); - } - - @Test - public void contextLoads() { - } - - private static class ConstrainedFields { - - private final ConstraintDescriptions constraintDescriptions; - - ConstrainedFields(Class input) { - this.constraintDescriptions = new ConstraintDescriptions(input); - } - - private FieldDescriptor withPath(String path) { - return fieldWithPath(path).attributes(key("constraints").value(collectionToDelimitedString(this.constraintDescriptions.descriptionsForProperty(path), ". "))); - } - } - -} diff --git a/spring-rest-docs/src/test/java/com/example/GettingStartedDocumentationIntegrationTest.java b/spring-rest-docs/src/test/java/com/example/GettingStartedDocumentationIntegrationTest.java deleted file mode 100644 index c02c0c27f8..0000000000 --- a/spring-rest-docs/src/test/java/com/example/GettingStartedDocumentationIntegrationTest.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.example; - -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; -import org.springframework.hateoas.MediaTypes; -import org.springframework.restdocs.RestDocumentation; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.web.context.WebApplicationContext; - -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; -import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -@RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = SpringRestDocsApplication.class) -@WebAppConfiguration -public class GettingStartedDocumentationIntegrationTest { - - @Rule - public final RestDocumentation restDocumentation = new RestDocumentation("target/generated-snippets"); - - @Autowired - private ObjectMapper objectMapper; - - @Autowired - private WebApplicationContext context; - - private MockMvc mockMvc; - - @Before - public void setUp() { - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context).apply(documentationConfiguration(this.restDocumentation)).alwaysDo(document("{method-name}/{step}/", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()))).build(); - } - - @Test - public void index() throws Exception { - this.mockMvc.perform(get("/").accept(MediaTypes.HAL_JSON)).andExpect(status().isOk()).andExpect(jsonPath("_links.crud", is(notNullValue()))).andExpect(jsonPath("_links.crud", is(notNullValue()))); - } - - // String createNote() throws Exception { - // Map note = new HashMap(); - // note.put("title", "Note creation with cURL"); - // note.put("body", "An example of how to create a note using curl"); - // String noteLocation = this.mockMvc.perform(post("/crud") - // .contentType(MediaTypes.HAL_JSON) - // .content(objectMapper.writeValueAsString(note))) - // .andExpect(status().isCreated()) - // .andExpect(header().string("Location", notNullValue())) - // .andReturn() - // .getResponse() - // .getHeader("Location"); - // return noteLocation; - // } - // - // MvcResult getNote(String noteLocation) throws Exception { - // return this.mockMvc.perform(get(noteLocation)) - // .andExpect(status().isOk()) - // .andExpect(jsonPath("title", is(notNullValue()))) - // .andExpect(jsonPath("body", is(notNullValue()))) - // .andExpect(jsonPath("_links.crud", is(notNullValue()))) - // .andReturn(); - // } - // - // - // String createTag() throws Exception, JsonProcessingException { - // Map tag = new HashMap(); - // tag.put("name", "getting-started"); - // String tagLocation = this.mockMvc.perform(post("/crud") - // .contentType(MediaTypes.HAL_JSON) - // .content(objectMapper.writeValueAsString(tag))) - // .andExpect(status().isCreated()) - // .andExpect(header().string("Location", notNullValue())) - // .andReturn() - // .getResponse() - // .getHeader("Location"); - // return tagLocation; - // } - // - // void getTag(String tagLocation) throws Exception { - // this.mockMvc.perform(get(tagLocation)).andExpect(status().isOk()) - // .andExpect(jsonPath("name", is(notNullValue()))) - // .andExpect(jsonPath("_links.tagged-notes", is(notNullValue()))); - // } - // - // String createTaggedNote(String tag) throws Exception { - // Map note = new HashMap(); - // note.put("title", "Tagged note creation with cURL"); - // note.put("body", "An example of how to create a tagged note using cURL"); - // note.put("tags", Arrays.asList(tag)); - // - // String noteLocation = this.mockMvc.perform(post("/notes") - // .contentType(MediaTypes.HAL_JSON) - // .content(objectMapper.writeValueAsString(note))) - // .andExpect(status().isCreated()) - // .andExpect(header().string("Location", notNullValue())) - // .andReturn() - // .getResponse() - // .getHeader("Location"); - // return noteLocation; - // } - // - // void getTags(String noteTagsLocation) throws Exception { - // this.mockMvc.perform(get(noteTagsLocation)) - // .andExpect(status().isOk()) - // .andExpect(jsonPath("_embedded.tags", hasSize(1))); - // } - // - // void tagExistingNote(String noteLocation, String tagLocation) throws Exception { - // Map update = new HashMap(); - // update.put("tags", Arrays.asList(tagLocation)); - // this.mockMvc.perform(patch(noteLocation) - // .contentType(MediaTypes.HAL_JSON) - // .content(objectMapper.writeValueAsString(update))) - // .andExpect(status().isNoContent()); - // } - // - // MvcResult getTaggedExistingNote(String noteLocation) throws Exception { - // return this.mockMvc.perform(get(noteLocation)).andExpect(status().isOk()).andReturn(); - // } - // - // void getTagsForExistingNote(String noteTagsLocation) throws Exception { - // this.mockMvc.perform(get(noteTagsLocation)) - // .andExpect(status().isOk()).andExpect(jsonPath("_embedded.tags", hasSize(1))); - // } - // - // private String getLink(MvcResult result, String rel) - // throws UnsupportedEncodingException { - // return JsonPath.parse(result.getResponse().getContentAsString()).read("_links." + rel + ".href"); - // } - -} diff --git a/spring-rest-embedded-tomcat/pom.xml b/spring-rest-embedded-tomcat/pom.xml index 554040e763..3622e84101 100644 --- a/spring-rest-embedded-tomcat/pom.xml +++ b/spring-rest-embedded-tomcat/pom.xml @@ -69,10 +69,29 @@ spring-rest-embedded-tomcat + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + 3 + true + + **/*IntegrationTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + **/JdbcTest.java + **/*LiveTest.java + + + + - 5.0.1.RELEASE + 5.0.2.RELEASE + 2.19.1 4.12 2.9.2 1.8 diff --git a/spring-rest-full/pom.xml b/spring-rest-full/pom.xml index c596e79b31..c00387e7de 100644 --- a/spring-rest-full/pom.xml +++ b/spring-rest-full/pom.xml @@ -9,10 +9,10 @@ war - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-rest-query-language/pom.xml b/spring-rest-query-language/pom.xml index bf3eb8cb78..6826634bc9 100644 --- a/spring-rest-query-language/pom.xml +++ b/spring-rest-query-language/pom.xml @@ -9,10 +9,10 @@ war - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-rest-simple/README.md b/spring-rest-simple/README.md index 916676feb5..982e16d5a5 100644 --- a/spring-rest-simple/README.md +++ b/spring-rest-simple/README.md @@ -5,3 +5,4 @@ - [The Guide to RestTemplate](http://www.baeldung.com/rest-template) - [Spring RequestMapping](http://www.baeldung.com/spring-requestmapping) - [ETags for REST with Spring](http://www.baeldung.com/etags-for-rest-with-spring) +- [Spring and Apache FileUpload](http://www.baeldung.com/spring-apache-file-upload) diff --git a/spring-rest-simple/pom.xml b/spring-rest-simple/pom.xml index f3fdd78ff4..ac74534328 100644 --- a/spring-rest-simple/pom.xml +++ b/spring-rest-simple/pom.xml @@ -206,6 +206,7 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 1.8 1.8 @@ -346,7 +347,7 @@
- 1.3.2 + 1.3.3 4.0.0 1.4 3.1.0 diff --git a/spring-rest-simple/src/main/java/com/baeldung/apachefileupload/UploadController.java b/spring-rest-simple/src/main/java/com/baeldung/apachefileupload/UploadController.java new file mode 100644 index 0000000000..b9b6739898 --- /dev/null +++ b/spring-rest-simple/src/main/java/com/baeldung/apachefileupload/UploadController.java @@ -0,0 +1,73 @@ +package com.baeldung.apachefileupload; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Iterator; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemIterator; +import org.apache.commons.fileupload.FileItemStream; +import org.apache.commons.fileupload.FileUploadException; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.commons.fileupload.servlet.ServletFileUpload; +import org.apache.commons.fileupload.util.Streams; +import org.apache.commons.io.IOUtils; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class UploadController { + + @RequestMapping(value = "/upload", method = RequestMethod.POST) + public String handleUpload(HttpServletRequest request) { + System.out.println(System.getProperty("java.io.tmpdir")); + boolean isMultipart = ServletFileUpload.isMultipartContent(request); + // Create a factory for disk-based file items + DiskFileItemFactory factory = new DiskFileItemFactory(); + factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); + factory.setSizeThreshold(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD); + factory.setFileCleaningTracker(null); + // Configure a repository (to ensure a secure temp location is used) + ServletFileUpload upload = new ServletFileUpload(factory); + try { + // Parse the request + List items = upload.parseRequest(request); + // Process the uploaded items + Iterator iter = items.iterator(); + while (iter.hasNext()) { + FileItem item = iter.next(); + + if (!item.isFormField()) { + try (InputStream uploadedStream = item.getInputStream(); + OutputStream out = new FileOutputStream("file.mov");) { + IOUtils.copy(uploadedStream, out); + out.close(); + } + } + } + // Parse the request with Streaming API + upload = new ServletFileUpload(); + FileItemIterator iterStream = upload.getItemIterator(request); + while (iterStream.hasNext()) { + FileItemStream item = iterStream.next(); + String name = item.getFieldName(); + InputStream stream = item.openStream(); + if (!item.isFormField()) { + //Process the InputStream + } else { + //process form fields + String formFieldValue = Streams.asString(stream); + } + } + return "success!"; + } catch (IOException | FileUploadException ex) { + return "failed: " + ex.getMessage(); + } + } + +} diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml index 06747ffd41..50ac00e1c3 100644 --- a/spring-rest/pom.xml +++ b/spring-rest/pom.xml @@ -8,10 +8,10 @@ war - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 @@ -169,6 +169,12 @@ commons-io 2.4 + + + au.com.dius + pact-jvm-provider-junit_2.11 + ${pact.version} + @@ -324,6 +330,8 @@ 3.4.1 2.2.0 + + 3.5.11 diff --git a/spring-rest/src/main/java/org/baeldung/web/controller/PactController.java b/spring-rest/src/main/java/org/baeldung/web/controller/PactController.java new file mode 100644 index 0000000000..4f586479ef --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/web/controller/PactController.java @@ -0,0 +1,32 @@ +package org.baeldung.web.controller; + +import java.util.ArrayList; +import java.util.List; + +import org.baeldung.web.dto.PactDto; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class PactController { + + List pacts = new ArrayList<>(); + + @GetMapping(value = "/pact", produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public PactDto getPact() { + return new PactDto(true, "tom"); + } + + @PostMapping("/pact") + @ResponseStatus(HttpStatus.CREATED) + public void createPact(PactDto pact) { + pacts.add(pact); + } + +} diff --git a/spring-rest/src/main/java/org/baeldung/web/dto/PactDto.java b/spring-rest/src/main/java/org/baeldung/web/dto/PactDto.java new file mode 100644 index 0000000000..e34e2bdf3b --- /dev/null +++ b/spring-rest/src/main/java/org/baeldung/web/dto/PactDto.java @@ -0,0 +1,33 @@ +package org.baeldung.web.dto; + +public class PactDto { + + private boolean condition; + private String name; + + public PactDto() { + } + + public PactDto(boolean condition, String name) { + super(); + this.condition = condition; + this.name = name; + } + + public boolean isCondition() { + return condition; + } + + public void setCondition(boolean condition) { + this.condition = condition; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/spring-rest/src/main/resources/pacts/test_consumer-test_provider.json b/spring-rest/src/main/resources/pacts/test_consumer-test_provider.json new file mode 100644 index 0000000000..c8082798f4 --- /dev/null +++ b/spring-rest/src/main/resources/pacts/test_consumer-test_provider.json @@ -0,0 +1,61 @@ +{ + "provider": { + "name": "test_provider" + }, + "consumer": { + "name": "test_consumer" + }, + "interactions": [ + { + "description": "GET REQUEST", + "request": { + "method": "GET", + "path": "/pact" + }, + "response": { + "status": 200, + "headers": { + "Content-Type": "application/json" + }, + "body": { + "condition": true, + "name": "tom" + } + }, + "providerStates": [ + { + "name": "test GET" + } + ] + }, + { + "description": "POST REQUEST", + "request": { + "method": "POST", + "path": "/pact", + "headers": { + "Content-Type": "application/json" + }, + "body": { + "name": "Michael" + } + }, + "response": { + "status": 201 + }, + "providerStates": [ + { + "name": "test POST" + } + ] + } + ], + "metadata": { + "pact-specification": { + "version": "3.0.0" + }, + "pact-jvm": { + "version": "3.5.0" + } + } +} \ No newline at end of file diff --git a/spring-rest/src/test/java/org/baeldung/pact/PactProviderTest.java b/spring-rest/src/test/java/org/baeldung/pact/PactProviderTest.java new file mode 100644 index 0000000000..0456b0d3e7 --- /dev/null +++ b/spring-rest/src/test/java/org/baeldung/pact/PactProviderTest.java @@ -0,0 +1,40 @@ +package org.baeldung.pact; + +import org.baeldung.config.MainApplication; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.springframework.boot.SpringApplication; +import org.springframework.web.context.ConfigurableWebApplicationContext; + +import au.com.dius.pact.provider.junit.PactRunner; +import au.com.dius.pact.provider.junit.Provider; +import au.com.dius.pact.provider.junit.State; +import au.com.dius.pact.provider.junit.loader.PactFolder; +import au.com.dius.pact.provider.junit.target.HttpTarget; +import au.com.dius.pact.provider.junit.target.Target; +import au.com.dius.pact.provider.junit.target.TestTarget; + +@RunWith(PactRunner.class) +@Provider("test_provider") +@PactFolder("pacts") +public class PactProviderTest { + + @TestTarget + public final Target target = new HttpTarget("http", "localhost", 8082, "/spring-rest"); + + private static ConfigurableWebApplicationContext application; + + @BeforeClass + public static void start() { + application = (ConfigurableWebApplicationContext) SpringApplication.run(MainApplication.class); + } + + @State("test GET") + public void toGetState() { + } + + @State("test POST") + public void toPostState() { + } + +} diff --git a/spring-roo/pom.xml b/spring-roo/pom.xml index e1d69a3031..acc03953d0 100644 --- a/spring-roo/pom.xml +++ b/spring-roo/pom.xml @@ -1,6 +1,6 @@ - io.spring.platform @@ -500,6 +500,7 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 ${java.version} ${java.version} diff --git a/spring-security-acl/README.md b/spring-security-acl/README.md new file mode 100644 index 0000000000..fb3e8160ab --- /dev/null +++ b/spring-security-acl/README.md @@ -0,0 +1,4 @@ +## Spring Security ACL Project + +### Relevant Articles +- [Introduction to Spring Security ACL](http://www.baeldung.com/spring-security-acl) diff --git a/spring-acl/pom.xml b/spring-security-acl/pom.xml similarity index 92% rename from spring-acl/pom.xml rename to spring-security-acl/pom.xml index 3bcc0cf596..a19a54dd88 100644 --- a/spring-acl/pom.xml +++ b/spring-security-acl/pom.xml @@ -3,13 +3,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung - spring-acl + spring-security-acl 0.0.1-SNAPSHOT war - spring-acl - Spring ACL + spring-security-acl + Spring Security ACL parent-boot-5 diff --git a/spring-security-acl/src/main/java/org/baeldung/acl/Application.java b/spring-security-acl/src/main/java/org/baeldung/acl/Application.java new file mode 100644 index 0000000000..665ca64076 --- /dev/null +++ b/spring-security-acl/src/main/java/org/baeldung/acl/Application.java @@ -0,0 +1,11 @@ +package org.baeldung.acl; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} diff --git a/spring-acl/src/main/java/org/baeldung/acl/config/ACLContext.java b/spring-security-acl/src/main/java/org/baeldung/acl/config/ACLContext.java similarity index 97% rename from spring-acl/src/main/java/org/baeldung/acl/config/ACLContext.java rename to spring-security-acl/src/main/java/org/baeldung/acl/config/ACLContext.java index 63a4ea58ef..337e745c3c 100644 --- a/spring-acl/src/main/java/org/baeldung/acl/config/ACLContext.java +++ b/spring-security-acl/src/main/java/org/baeldung/acl/config/ACLContext.java @@ -1,80 +1,80 @@ -package org.baeldung.acl.config; - -import javax.sql.DataSource; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.cache.ehcache.EhCacheFactoryBean; -import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler; -import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler; -import org.springframework.security.acls.AclPermissionCacheOptimizer; -import org.springframework.security.acls.AclPermissionEvaluator; -import org.springframework.security.acls.domain.AclAuthorizationStrategy; -import org.springframework.security.acls.domain.AclAuthorizationStrategyImpl; -import org.springframework.security.acls.domain.ConsoleAuditLogger; -import org.springframework.security.acls.domain.DefaultPermissionGrantingStrategy; -import org.springframework.security.acls.domain.EhCacheBasedAclCache; -import org.springframework.security.acls.jdbc.BasicLookupStrategy; -import org.springframework.security.acls.jdbc.JdbcMutableAclService; -import org.springframework.security.acls.jdbc.LookupStrategy; -import org.springframework.security.acls.model.PermissionGrantingStrategy; -import org.springframework.security.core.authority.SimpleGrantedAuthority; - -@Configuration -@EnableAutoConfiguration -public class ACLContext { - - @Autowired - DataSource dataSource; - - @Bean - public EhCacheBasedAclCache aclCache() { - return new EhCacheBasedAclCache(aclEhCacheFactoryBean().getObject(), permissionGrantingStrategy(), aclAuthorizationStrategy()); - } - - @Bean - public EhCacheFactoryBean aclEhCacheFactoryBean() { - EhCacheFactoryBean ehCacheFactoryBean = new EhCacheFactoryBean(); - ehCacheFactoryBean.setCacheManager(aclCacheManager().getObject()); - ehCacheFactoryBean.setCacheName("aclCache"); - return ehCacheFactoryBean; - } - - @Bean - public EhCacheManagerFactoryBean aclCacheManager() { - return new EhCacheManagerFactoryBean(); - } - - @Bean - public PermissionGrantingStrategy permissionGrantingStrategy() { - return new DefaultPermissionGrantingStrategy(new ConsoleAuditLogger()); - } - - @Bean - public AclAuthorizationStrategy aclAuthorizationStrategy() { - return new AclAuthorizationStrategyImpl(new SimpleGrantedAuthority("ROLE_ADMIN")); - } - - @Bean - public MethodSecurityExpressionHandler defaultMethodSecurityExpressionHandler() { - DefaultMethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler(); - AclPermissionEvaluator permissionEvaluator = new AclPermissionEvaluator(aclService()); - expressionHandler.setPermissionEvaluator(permissionEvaluator); - expressionHandler.setPermissionCacheOptimizer(new AclPermissionCacheOptimizer(aclService())); - return expressionHandler; - } - - @Bean - public LookupStrategy lookupStrategy() { - return new BasicLookupStrategy(dataSource, aclCache(), aclAuthorizationStrategy(), new ConsoleAuditLogger()); - } - - @Bean - public JdbcMutableAclService aclService() { - return new JdbcMutableAclService(dataSource, lookupStrategy(), aclCache()); - } - +package org.baeldung.acl.config; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.cache.ehcache.EhCacheFactoryBean; +import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler; +import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler; +import org.springframework.security.acls.AclPermissionCacheOptimizer; +import org.springframework.security.acls.AclPermissionEvaluator; +import org.springframework.security.acls.domain.AclAuthorizationStrategy; +import org.springframework.security.acls.domain.AclAuthorizationStrategyImpl; +import org.springframework.security.acls.domain.ConsoleAuditLogger; +import org.springframework.security.acls.domain.DefaultPermissionGrantingStrategy; +import org.springframework.security.acls.domain.EhCacheBasedAclCache; +import org.springframework.security.acls.jdbc.BasicLookupStrategy; +import org.springframework.security.acls.jdbc.JdbcMutableAclService; +import org.springframework.security.acls.jdbc.LookupStrategy; +import org.springframework.security.acls.model.PermissionGrantingStrategy; +import org.springframework.security.core.authority.SimpleGrantedAuthority; + +@Configuration +@EnableAutoConfiguration +public class ACLContext { + + @Autowired + DataSource dataSource; + + @Bean + public EhCacheBasedAclCache aclCache() { + return new EhCacheBasedAclCache(aclEhCacheFactoryBean().getObject(), permissionGrantingStrategy(), aclAuthorizationStrategy()); + } + + @Bean + public EhCacheFactoryBean aclEhCacheFactoryBean() { + EhCacheFactoryBean ehCacheFactoryBean = new EhCacheFactoryBean(); + ehCacheFactoryBean.setCacheManager(aclCacheManager().getObject()); + ehCacheFactoryBean.setCacheName("aclCache"); + return ehCacheFactoryBean; + } + + @Bean + public EhCacheManagerFactoryBean aclCacheManager() { + return new EhCacheManagerFactoryBean(); + } + + @Bean + public PermissionGrantingStrategy permissionGrantingStrategy() { + return new DefaultPermissionGrantingStrategy(new ConsoleAuditLogger()); + } + + @Bean + public AclAuthorizationStrategy aclAuthorizationStrategy() { + return new AclAuthorizationStrategyImpl(new SimpleGrantedAuthority("ROLE_ADMIN")); + } + + @Bean + public MethodSecurityExpressionHandler defaultMethodSecurityExpressionHandler() { + DefaultMethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler(); + AclPermissionEvaluator permissionEvaluator = new AclPermissionEvaluator(aclService()); + expressionHandler.setPermissionEvaluator(permissionEvaluator); + expressionHandler.setPermissionCacheOptimizer(new AclPermissionCacheOptimizer(aclService())); + return expressionHandler; + } + + @Bean + public LookupStrategy lookupStrategy() { + return new BasicLookupStrategy(dataSource, aclCache(), aclAuthorizationStrategy(), new ConsoleAuditLogger()); + } + + @Bean + public JdbcMutableAclService aclService() { + return new JdbcMutableAclService(dataSource, lookupStrategy(), aclCache()); + } + } \ No newline at end of file diff --git a/spring-acl/src/main/java/org/baeldung/acl/config/AclMethodSecurityConfiguration.java b/spring-security-acl/src/main/java/org/baeldung/acl/config/AclMethodSecurityConfiguration.java similarity index 97% rename from spring-acl/src/main/java/org/baeldung/acl/config/AclMethodSecurityConfiguration.java rename to spring-security-acl/src/main/java/org/baeldung/acl/config/AclMethodSecurityConfiguration.java index 110c4a6d24..e503cb1a41 100644 --- a/spring-acl/src/main/java/org/baeldung/acl/config/AclMethodSecurityConfiguration.java +++ b/spring-security-acl/src/main/java/org/baeldung/acl/config/AclMethodSecurityConfiguration.java @@ -1,21 +1,21 @@ -package org.baeldung.acl.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; -import org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration; - -@Configuration -@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) -public class AclMethodSecurityConfiguration extends GlobalMethodSecurityConfiguration { - - @Autowired - MethodSecurityExpressionHandler defaultMethodSecurityExpressionHandler; - - @Override - protected MethodSecurityExpressionHandler createExpressionHandler() { - return defaultMethodSecurityExpressionHandler; - } - -} +package org.baeldung.acl.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration; + +@Configuration +@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) +public class AclMethodSecurityConfiguration extends GlobalMethodSecurityConfiguration { + + @Autowired + MethodSecurityExpressionHandler defaultMethodSecurityExpressionHandler; + + @Override + protected MethodSecurityExpressionHandler createExpressionHandler() { + return defaultMethodSecurityExpressionHandler; + } + +} diff --git a/spring-acl/src/main/java/org/baeldung/acl/config/JPAPersistenceConfig.java b/spring-security-acl/src/main/java/org/baeldung/acl/config/JPAPersistenceConfig.java similarity index 97% rename from spring-acl/src/main/java/org/baeldung/acl/config/JPAPersistenceConfig.java rename to spring-security-acl/src/main/java/org/baeldung/acl/config/JPAPersistenceConfig.java index 9b87efa92c..24d170e56c 100644 --- a/spring-acl/src/main/java/org/baeldung/acl/config/JPAPersistenceConfig.java +++ b/spring-security-acl/src/main/java/org/baeldung/acl/config/JPAPersistenceConfig.java @@ -1,16 +1,16 @@ -package org.baeldung.acl.config; - -import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -@Configuration -@EnableTransactionManagement -@EnableJpaRepositories(basePackages = "org.baeldung.acl.persistence.dao") -@PropertySource("classpath:org.baeldung.acl.datasource.properties") -@EntityScan(basePackages={ "org.baeldung.acl.persistence.entity" }) -public class JPAPersistenceConfig { - -} +package org.baeldung.acl.config; + +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@Configuration +@EnableTransactionManagement +@EnableJpaRepositories(basePackages = "org.baeldung.acl.persistence.dao") +@PropertySource("classpath:org.baeldung.acl.datasource.properties") +@EntityScan(basePackages={ "org.baeldung.acl.persistence.entity" }) +public class JPAPersistenceConfig { + +} diff --git a/spring-acl/src/main/java/org/baeldung/acl/persistence/dao/NoticeMessageRepository.java b/spring-security-acl/src/main/java/org/baeldung/acl/persistence/dao/NoticeMessageRepository.java similarity index 97% rename from spring-acl/src/main/java/org/baeldung/acl/persistence/dao/NoticeMessageRepository.java rename to spring-security-acl/src/main/java/org/baeldung/acl/persistence/dao/NoticeMessageRepository.java index 8662c88d6c..91a2af7d83 100644 --- a/spring-acl/src/main/java/org/baeldung/acl/persistence/dao/NoticeMessageRepository.java +++ b/spring-security-acl/src/main/java/org/baeldung/acl/persistence/dao/NoticeMessageRepository.java @@ -1,24 +1,24 @@ -package org.baeldung.acl.persistence.dao; - -import java.util.List; - -import org.baeldung.acl.persistence.entity.NoticeMessage; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.repository.query.Param; -import org.springframework.security.access.prepost.PostAuthorize; -import org.springframework.security.access.prepost.PostFilter; -import org.springframework.security.access.prepost.PreAuthorize; - -public interface NoticeMessageRepository extends JpaRepository{ - - @PostFilter("hasPermission(filterObject, 'READ')") - List findAll(); - - @PostAuthorize("hasPermission(returnObject, 'READ')") - NoticeMessage findById(Integer id); - - @SuppressWarnings("unchecked") - @PreAuthorize("hasPermission(#noticeMessage, 'WRITE')") - NoticeMessage save(@Param("noticeMessage")NoticeMessage noticeMessage); - -} +package org.baeldung.acl.persistence.dao; + +import java.util.List; + +import org.baeldung.acl.persistence.entity.NoticeMessage; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.security.access.prepost.PostAuthorize; +import org.springframework.security.access.prepost.PostFilter; +import org.springframework.security.access.prepost.PreAuthorize; + +public interface NoticeMessageRepository extends JpaRepository{ + + @PostFilter("hasPermission(filterObject, 'READ')") + List findAll(); + + @PostAuthorize("hasPermission(returnObject, 'READ')") + NoticeMessage findById(Integer id); + + @SuppressWarnings("unchecked") + @PreAuthorize("hasPermission(#noticeMessage, 'WRITE')") + NoticeMessage save(@Param("noticeMessage")NoticeMessage noticeMessage); + +} diff --git a/spring-acl/src/main/java/org/baeldung/acl/persistence/entity/NoticeMessage.java b/spring-security-acl/src/main/java/org/baeldung/acl/persistence/entity/NoticeMessage.java similarity index 95% rename from spring-acl/src/main/java/org/baeldung/acl/persistence/entity/NoticeMessage.java rename to spring-security-acl/src/main/java/org/baeldung/acl/persistence/entity/NoticeMessage.java index 23f01a8edb..bd1e866f83 100644 --- a/spring-acl/src/main/java/org/baeldung/acl/persistence/entity/NoticeMessage.java +++ b/spring-security-acl/src/main/java/org/baeldung/acl/persistence/entity/NoticeMessage.java @@ -1,29 +1,29 @@ -package org.baeldung.acl.persistence.entity; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; - -@Entity -@Table(name="system_message") -public class NoticeMessage { - - @Id - @Column - private Integer id; - @Column - private String content; - public Integer getId() { - return id; - } - public void setId(Integer id) { - this.id = id; - } - public String getContent() { - return content; - } - public void setContent(String content) { - this.content = content; - } +package org.baeldung.acl.persistence.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name="system_message") +public class NoticeMessage { + + @Id + @Column + private Integer id; + @Column + private String content; + public Integer getId() { + return id; + } + public void setId(Integer id) { + this.id = id; + } + public String getContent() { + return content; + } + public void setContent(String content) { + this.content = content; + } } \ No newline at end of file diff --git a/spring-acl/src/main/resources/acl-data.sql b/spring-security-acl/src/main/resources/acl-data.sql similarity index 57% rename from spring-acl/src/main/resources/acl-data.sql rename to spring-security-acl/src/main/resources/acl-data.sql index 6c01eaacc2..a4e0011834 100644 --- a/spring-acl/src/main/resources/acl-data.sql +++ b/spring-security-acl/src/main/resources/acl-data.sql @@ -1,28 +1,26 @@ -INSERT INTO system_message(id,content) VALUES (1,'First Level Message'); -INSERT INTO system_message(id,content) VALUES (2,'Second Level Message'); -INSERT INTO system_message(id,content) VALUES (3,'Third Level Message'); - -INSERT INTO acl_class (id, class) VALUES -(1, 'org.baeldung.acl.persistence.entity.NoticeMessage'); - -INSERT INTO acl_sid (id, principal, sid) VALUES -(1, 1, 'manager'), -(2, 1, 'hr'), -(3, 1, 'admin'), -(4, 0, 'ROLE_EDITOR'); - -INSERT INTO acl_object_identity (id, object_id_class, object_id_identity, parent_object, owner_sid, entries_inheriting) VALUES -(1, 1, 1, NULL, 3, 0), -(2, 1, 2, NULL, 3, 0), -(3, 1, 3, NULL, 3, 0) -; - -INSERT INTO acl_entry (id, acl_object_identity, ace_order, sid, mask, granting, audit_success, audit_failure) VALUES -(1, 1, 1, 1, 1, 1, 1, 1), -(2, 1, 2, 1, 2, 1, 1, 1), -(3, 1, 3, 4, 1, 1, 1, 1), -(4, 2, 1, 2, 1, 1, 1, 1), -(5, 2, 2, 4, 1, 1, 1, 1), -(6, 3, 1, 4, 1, 1, 1, 1), -(7, 3, 2, 4, 2, 1, 1, 1) -; \ No newline at end of file +INSERT INTO acl_sid (id, principal, sid) VALUES +(1, 1, 'manager'), +(2, 1, 'hr'), +(3, 0, 'ROLE_EDITOR'); + +INSERT INTO acl_class (id, class) VALUES +(1, 'org.baeldung.acl.persistence.entity.NoticeMessage'); + +INSERT INTO system_message(id,content) VALUES +(1,'First Level Message'), +(2,'Second Level Message'), +(3,'Third Level Message'); + +INSERT INTO acl_object_identity (id, object_id_class, object_id_identity, parent_object, owner_sid, entries_inheriting) VALUES +(1, 1, 1, NULL, 3, 0), +(2, 1, 2, NULL, 3, 0), +(3, 1, 3, NULL, 3, 0); + +INSERT INTO acl_entry (id, acl_object_identity, ace_order, sid, mask, granting, audit_success, audit_failure) VALUES +(1, 1, 1, 1, 1, 1, 1, 1), +(2, 1, 2, 1, 2, 1, 1, 1), +(3, 1, 3, 3, 1, 1, 1, 1), +(4, 2, 1, 2, 1, 1, 1, 1), +(5, 2, 2, 3, 1, 1, 1, 1), +(6, 3, 1, 3, 1, 1, 1, 1), +(7, 3, 2, 3, 2, 1, 1, 1); \ No newline at end of file diff --git a/spring-acl/src/main/resources/acl-schema.sql b/spring-security-acl/src/main/resources/acl-schema.sql similarity index 88% rename from spring-acl/src/main/resources/acl-schema.sql rename to spring-security-acl/src/main/resources/acl-schema.sql index 58e9394b2b..9f74048230 100644 --- a/spring-acl/src/main/resources/acl-schema.sql +++ b/spring-security-acl/src/main/resources/acl-schema.sql @@ -1,58 +1,58 @@ -create table system_message (id integer not null, content varchar(255), primary key (id)); - -CREATE TABLE IF NOT EXISTS acl_sid ( - id bigint(20) NOT NULL AUTO_INCREMENT, - principal tinyint(1) NOT NULL, - sid varchar(100) NOT NULL, - PRIMARY KEY (id), - UNIQUE KEY unique_uk_1 (sid,principal) -); - -CREATE TABLE IF NOT EXISTS acl_class ( - id bigint(20) NOT NULL AUTO_INCREMENT, - class varchar(255) NOT NULL, - PRIMARY KEY (id), - UNIQUE KEY unique_uk_2 (class) -); - -CREATE TABLE IF NOT EXISTS acl_entry ( - id bigint(20) NOT NULL AUTO_INCREMENT, - acl_object_identity bigint(20) NOT NULL, - ace_order int(11) NOT NULL, - sid bigint(20) NOT NULL, - mask int(11) NOT NULL, - granting tinyint(1) NOT NULL, - audit_success tinyint(1) NOT NULL, - audit_failure tinyint(1) NOT NULL, - PRIMARY KEY (id), - UNIQUE KEY unique_uk_4 (acl_object_identity,ace_order) -); - -CREATE TABLE IF NOT EXISTS acl_object_identity ( - id bigint(20) NOT NULL AUTO_INCREMENT, - object_id_class bigint(20) NOT NULL, - object_id_identity bigint(20) NOT NULL, - parent_object bigint(20) DEFAULT NULL, - owner_sid bigint(20) DEFAULT NULL, - entries_inheriting tinyint(1) NOT NULL, - PRIMARY KEY (id), - UNIQUE KEY unique_uk_3 (object_id_class,object_id_identity) -); - -ALTER TABLE acl_entry -ADD FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity(id); - -ALTER TABLE acl_entry -ADD FOREIGN KEY (sid) REFERENCES acl_sid(id); - --- --- Constraints for table acl_object_identity --- -ALTER TABLE acl_object_identity -ADD FOREIGN KEY (parent_object) REFERENCES acl_object_identity (id); - -ALTER TABLE acl_object_identity -ADD FOREIGN KEY (object_id_class) REFERENCES acl_class (id); - -ALTER TABLE acl_object_identity +create table IF NOT EXISTS system_message (id integer not null, content varchar(255), primary key (id)); + +CREATE TABLE IF NOT EXISTS acl_sid ( + id bigint(20) NOT NULL AUTO_INCREMENT, + principal tinyint(1) NOT NULL, + sid varchar(100) NOT NULL, + PRIMARY KEY (id), + UNIQUE KEY unique_uk_1 (sid,principal) +); + +CREATE TABLE IF NOT EXISTS acl_class ( + id bigint(20) NOT NULL AUTO_INCREMENT, + class varchar(255) NOT NULL, + PRIMARY KEY (id), + UNIQUE KEY unique_uk_2 (class) +); + +CREATE TABLE IF NOT EXISTS acl_entry ( + id bigint(20) NOT NULL AUTO_INCREMENT, + acl_object_identity bigint(20) NOT NULL, + ace_order int(11) NOT NULL, + sid bigint(20) NOT NULL, + mask int(11) NOT NULL, + granting tinyint(1) NOT NULL, + audit_success tinyint(1) NOT NULL, + audit_failure tinyint(1) NOT NULL, + PRIMARY KEY (id), + UNIQUE KEY unique_uk_4 (acl_object_identity,ace_order) +); + +CREATE TABLE IF NOT EXISTS acl_object_identity ( + id bigint(20) NOT NULL AUTO_INCREMENT, + object_id_class bigint(20) NOT NULL, + object_id_identity bigint(20) NOT NULL, + parent_object bigint(20) DEFAULT NULL, + owner_sid bigint(20) DEFAULT NULL, + entries_inheriting tinyint(1) NOT NULL, + PRIMARY KEY (id), + UNIQUE KEY unique_uk_3 (object_id_class,object_id_identity) +); + +ALTER TABLE acl_entry +ADD FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity(id); + +ALTER TABLE acl_entry +ADD FOREIGN KEY (sid) REFERENCES acl_sid(id); + +-- +-- Constraints for table acl_object_identity +-- +ALTER TABLE acl_object_identity +ADD FOREIGN KEY (parent_object) REFERENCES acl_object_identity (id); + +ALTER TABLE acl_object_identity +ADD FOREIGN KEY (object_id_class) REFERENCES acl_class (id); + +ALTER TABLE acl_object_identity ADD FOREIGN KEY (owner_sid) REFERENCES acl_sid (id); \ No newline at end of file diff --git a/spring-acl/src/main/resources/org.baeldung.acl.datasource.properties b/spring-security-acl/src/main/resources/org.baeldung.acl.datasource.properties similarity index 88% rename from spring-acl/src/main/resources/org.baeldung.acl.datasource.properties rename to spring-security-acl/src/main/resources/org.baeldung.acl.datasource.properties index 739dd3f07c..40f1e6ef38 100644 --- a/spring-acl/src/main/resources/org.baeldung.acl.datasource.properties +++ b/spring-security-acl/src/main/resources/org.baeldung.acl.datasource.properties @@ -1,12 +1,12 @@ -spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE -spring.datasource.username=sa -spring.datasource.password= -spring.datasource.driverClassName=org.h2.Driver -spring.jpa.hibernate.ddl-auto=update -spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect - -spring.h2.console.path=/myconsole -spring.h2.console.enabled=true -spring.datasource.initialize=true -spring.datasource.schema=classpath:acl-schema.sql +spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE +spring.datasource.username=sa +spring.datasource.password= +spring.datasource.driverClassName=org.h2.Driver +spring.jpa.hibernate.ddl-auto=update +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect + +spring.h2.console.path=/myconsole +spring.h2.console.enabled=true +spring.datasource.initialize=true +spring.datasource.schema=classpath:acl-schema.sql spring.datasource.data=classpath:acl-data.sql \ No newline at end of file diff --git a/spring-acl/src/test/java/org/baeldung/acl/SpringAclTest.java b/spring-security-acl/src/test/java/org/baeldung/acl/SpringACLIntegrationTest.java similarity index 88% rename from spring-acl/src/test/java/org/baeldung/acl/SpringAclTest.java rename to spring-security-acl/src/test/java/org/baeldung/acl/SpringACLIntegrationTest.java index fd9069d9bc..1460d4f47b 100644 --- a/spring-acl/src/test/java/org/baeldung/acl/SpringAclTest.java +++ b/spring-security-acl/src/test/java/org/baeldung/acl/SpringACLIntegrationTest.java @@ -1,119 +1,119 @@ -package org.baeldung.acl; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.util.List; - -import org.baeldung.acl.persistence.dao.NoticeMessageRepository; -import org.baeldung.acl.persistence.entity.NoticeMessage; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.access.AccessDeniedException; -import org.springframework.security.test.context.support.WithMockUser; -import org.springframework.security.test.context.support.WithSecurityContextTestExecutionListener; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestExecutionListeners; -import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; -import org.springframework.test.context.support.DirtiesContextTestExecutionListener; -import org.springframework.test.context.transaction.TransactionalTestExecutionListener; -import org.springframework.test.context.web.ServletTestExecutionListener; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration -@TestExecutionListeners(listeners={ServletTestExecutionListener.class, - DependencyInjectionTestExecutionListener.class, - DirtiesContextTestExecutionListener.class, - TransactionalTestExecutionListener.class, - WithSecurityContextTestExecutionListener.class}) -public class SpringAclTest extends AbstractJUnit4SpringContextTests{ - - private static Integer FIRST_MESSAGE_ID = 1; - private static Integer SECOND_MESSAGE_ID = 2; - private static Integer THIRD_MESSAGE_ID = 3; - private static String EDITTED_CONTENT = "EDITED"; - - @Configuration - @ComponentScan("org.baeldung.acl.*") - public static class SpringConfig { - - } - - @Autowired - NoticeMessageRepository repo; - - @Test - @WithMockUser(username="manager") - public void givenUsernameManager_whenFindAllMessage_thenReturnFirstMessage(){ - List details = repo.findAll(); - assertNotNull(details); - assertEquals(1,details.size()); - assertEquals(FIRST_MESSAGE_ID,details.get(0).getId()); - } - - @Test - @WithMockUser(username="manager") - public void givenUsernameManager_whenFindFirstMessageByIdAndUpdateFirstMessageContent_thenOK(){ - NoticeMessage firstMessage = repo.findById(FIRST_MESSAGE_ID); - assertNotNull(firstMessage); - assertEquals(FIRST_MESSAGE_ID,firstMessage.getId()); - - firstMessage.setContent(EDITTED_CONTENT); - repo.save(firstMessage); - - NoticeMessage editedFirstMessage = repo.findById(FIRST_MESSAGE_ID); - assertNotNull(editedFirstMessage); - assertEquals(FIRST_MESSAGE_ID,editedFirstMessage.getId()); - assertEquals(EDITTED_CONTENT,editedFirstMessage.getContent()); - } - - @Test - @WithMockUser(username="hr") - public void givenUsernameHr_whenFindMessageById2_thenOK(){ - NoticeMessage secondMessage = repo.findById(SECOND_MESSAGE_ID); - assertNotNull(secondMessage); - assertEquals(SECOND_MESSAGE_ID,secondMessage.getId()); - } - - @Test(expected=AccessDeniedException.class) - @WithMockUser(username="hr") - public void givenUsernameHr_whenUpdateMessageWithId2_thenFail(){ - NoticeMessage secondMessage = new NoticeMessage(); - secondMessage.setId(SECOND_MESSAGE_ID); - secondMessage.setContent(EDITTED_CONTENT); - repo.save(secondMessage); - } - - @Test - @WithMockUser(roles={"EDITOR"}) - public void givenRoleEditor_whenFindAllMessage_thenReturnThreeMessage(){ - List details = repo.findAll(); - assertNotNull(details); - assertEquals(3,details.size()); - } - - @Test - @WithMockUser(roles={"EDITOR"}) - public void givenRoleEditor_whenUpdateThirdMessage_thenOK(){ - NoticeMessage thirdMessage = new NoticeMessage(); - thirdMessage.setId(THIRD_MESSAGE_ID); - thirdMessage.setContent(EDITTED_CONTENT); - repo.save(thirdMessage); - } - - @Test(expected=AccessDeniedException.class) - @WithMockUser(roles={"EDITOR"}) - public void givenRoleEditor_whenFindFirstMessageByIdAndUpdateFirstMessageContent_thenFail(){ - NoticeMessage firstMessage = repo.findById(FIRST_MESSAGE_ID); - assertNotNull(firstMessage); - assertEquals(FIRST_MESSAGE_ID,firstMessage.getId()); - firstMessage.setContent(EDITTED_CONTENT); - repo.save(firstMessage); - } -} +package org.baeldung.acl; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.List; + +import org.baeldung.acl.persistence.dao.NoticeMessageRepository; +import org.baeldung.acl.persistence.entity.NoticeMessage; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.security.test.context.support.WithSecurityContextTestExecutionListener; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestExecutionListeners; +import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; +import org.springframework.test.context.support.DirtiesContextTestExecutionListener; +import org.springframework.test.context.transaction.TransactionalTestExecutionListener; +import org.springframework.test.context.web.ServletTestExecutionListener; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration +@TestExecutionListeners(listeners={ServletTestExecutionListener.class, + DependencyInjectionTestExecutionListener.class, + DirtiesContextTestExecutionListener.class, + TransactionalTestExecutionListener.class, + WithSecurityContextTestExecutionListener.class}) +public class SpringACLIntegrationTest extends AbstractJUnit4SpringContextTests{ + + private static Integer FIRST_MESSAGE_ID = 1; + private static Integer SECOND_MESSAGE_ID = 2; + private static Integer THIRD_MESSAGE_ID = 3; + private static String EDITTED_CONTENT = "EDITED"; + + @Configuration + @ComponentScan("org.baeldung.acl.*") + public static class SpringConfig { + + } + + @Autowired + NoticeMessageRepository repo; + + @Test + @WithMockUser(username="manager") + public void givenUserManager_whenFindAllMessage_thenReturnFirstMessage(){ + List details = repo.findAll(); + assertNotNull(details); + assertEquals(1,details.size()); + assertEquals(FIRST_MESSAGE_ID,details.get(0).getId()); + } + + @Test + @WithMockUser(username="manager") + public void givenUserManager_whenFind1stMessageByIdAndUpdateItsContent_thenOK(){ + NoticeMessage firstMessage = repo.findById(FIRST_MESSAGE_ID); + assertNotNull(firstMessage); + assertEquals(FIRST_MESSAGE_ID,firstMessage.getId()); + + firstMessage.setContent(EDITTED_CONTENT); + repo.save(firstMessage); + + NoticeMessage editedFirstMessage = repo.findById(FIRST_MESSAGE_ID); + assertNotNull(editedFirstMessage); + assertEquals(FIRST_MESSAGE_ID,editedFirstMessage.getId()); + assertEquals(EDITTED_CONTENT,editedFirstMessage.getContent()); + } + + @Test + @WithMockUser(username="hr") + public void givenUsernameHr_whenFindMessageById2_thenOK(){ + NoticeMessage secondMessage = repo.findById(SECOND_MESSAGE_ID); + assertNotNull(secondMessage); + assertEquals(SECOND_MESSAGE_ID,secondMessage.getId()); + } + + @Test(expected=AccessDeniedException.class) + @WithMockUser(username="hr") + public void givenUsernameHr_whenUpdateMessageWithId2_thenFail(){ + NoticeMessage secondMessage = new NoticeMessage(); + secondMessage.setId(SECOND_MESSAGE_ID); + secondMessage.setContent(EDITTED_CONTENT); + repo.save(secondMessage); + } + + @Test + @WithMockUser(roles={"EDITOR"}) + public void givenRoleEditor_whenFindAllMessage_thenReturn3Message(){ + List details = repo.findAll(); + assertNotNull(details); + assertEquals(3,details.size()); + } + + @Test + @WithMockUser(roles={"EDITOR"}) + public void givenRoleEditor_whenUpdateThirdMessage_thenOK(){ + NoticeMessage thirdMessage = new NoticeMessage(); + thirdMessage.setId(THIRD_MESSAGE_ID); + thirdMessage.setContent(EDITTED_CONTENT); + repo.save(thirdMessage); + } + + @Test(expected=AccessDeniedException.class) + @WithMockUser(roles={"EDITOR"}) + public void givenRoleEditor_whenFind1stMessageByIdAndUpdateContent_thenFail(){ + NoticeMessage firstMessage = repo.findById(FIRST_MESSAGE_ID); + assertNotNull(firstMessage); + assertEquals(FIRST_MESSAGE_ID,firstMessage.getId()); + firstMessage.setContent(EDITTED_CONTENT); + repo.save(firstMessage); + } +} \ No newline at end of file diff --git a/spring-security-cache-control/pom.xml b/spring-security-cache-control/pom.xml index e525cd4e8e..4ccb83c29b 100644 --- a/spring-security-cache-control/pom.xml +++ b/spring-security-cache-control/pom.xml @@ -8,10 +8,10 @@ 1.0-SNAPSHOT - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-security-client/spring-security-jsp-authentication/pom.xml b/spring-security-client/spring-security-jsp-authentication/pom.xml index 6f4095c2d5..b29ce90aa4 100644 --- a/spring-security-client/spring-security-jsp-authentication/pom.xml +++ b/spring-security-client/spring-security-jsp-authentication/pom.xml @@ -12,10 +12,10 @@ Spring Security JSP Authentication tag sample - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-security-client/spring-security-jsp-authorize/pom.xml b/spring-security-client/spring-security-jsp-authorize/pom.xml index 2e1a57a468..6fd89933bb 100644 --- a/spring-security-client/spring-security-jsp-authorize/pom.xml +++ b/spring-security-client/spring-security-jsp-authorize/pom.xml @@ -12,10 +12,10 @@ Spring Security JSP Authorize tag sample - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-security-client/spring-security-jsp-config/pom.xml b/spring-security-client/spring-security-jsp-config/pom.xml index 4f92e24563..f533410acc 100644 --- a/spring-security-client/spring-security-jsp-config/pom.xml +++ b/spring-security-client/spring-security-jsp-config/pom.xml @@ -12,10 +12,10 @@ Spring Security JSP configuration - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-security-client/spring-security-mvc/pom.xml b/spring-security-client/spring-security-mvc/pom.xml index a642e8719d..c67bc336f6 100644 --- a/spring-security-client/spring-security-mvc/pom.xml +++ b/spring-security-client/spring-security-mvc/pom.xml @@ -12,10 +12,10 @@ Spring Security MVC - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-security-client/spring-security-mvc/src/main/java/org/baeldung/config/Application.java b/spring-security-client/spring-security-mvc/src/main/java/org/baeldung/config/Application.java index 4057a85f13..34c43fbe5a 100644 --- a/spring-security-client/spring-security-mvc/src/main/java/org/baeldung/config/Application.java +++ b/spring-security-client/spring-security-mvc/src/main/java/org/baeldung/config/Application.java @@ -3,7 +3,7 @@ package org.baeldung.config; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.context.web.SpringBootServletInitializer; +import org.springframework.boot.web.support.SpringBootServletInitializer; @SpringBootApplication public class Application extends SpringBootServletInitializer { diff --git a/spring-security-client/spring-security-thymeleaf-authentication/pom.xml b/spring-security-client/spring-security-thymeleaf-authentication/pom.xml index 7573d430d3..941cbb8a76 100644 --- a/spring-security-client/spring-security-thymeleaf-authentication/pom.xml +++ b/spring-security-client/spring-security-thymeleaf-authentication/pom.xml @@ -12,10 +12,10 @@ Spring Security thymeleaf authentication tag sample - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-security-client/spring-security-thymeleaf-authorize/pom.xml b/spring-security-client/spring-security-thymeleaf-authorize/pom.xml index 20d141e70c..c70a099e68 100644 --- a/spring-security-client/spring-security-thymeleaf-authorize/pom.xml +++ b/spring-security-client/spring-security-thymeleaf-authorize/pom.xml @@ -12,10 +12,10 @@ Spring Security thymeleaf authorize tag sample - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-security-client/spring-security-thymeleaf-config/pom.xml b/spring-security-client/spring-security-thymeleaf-config/pom.xml index ad856c7e20..9ef2444d6c 100644 --- a/spring-security-client/spring-security-thymeleaf-config/pom.xml +++ b/spring-security-client/spring-security-thymeleaf-config/pom.xml @@ -12,10 +12,10 @@ Spring Security thymeleaf configuration sample project - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../../parent-boot-4 + ../../parent-boot-5 diff --git a/spring-security-core/pom.xml b/spring-security-core/pom.xml index 7deea5deb0..db8837df46 100644 --- a/spring-security-core/pom.xml +++ b/spring-security-core/pom.xml @@ -9,10 +9,10 @@ war - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-security-core/src/main/java/org/baeldung/methodsecurity/annotation/IsViewer.java b/spring-security-core/src/main/java/org/baeldung/methodsecurity/annotation/IsViewer.java new file mode 100644 index 0000000000..711784adbb --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/methodsecurity/annotation/IsViewer.java @@ -0,0 +1,14 @@ +package org.baeldung.methodsecurity.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.springframework.security.access.prepost.PreAuthorize; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@PreAuthorize("hasRole('VIEWER')") +public @interface IsViewer { +} \ No newline at end of file diff --git a/spring-security-core/src/main/java/org/baeldung/methodsecurity/config/MethodSecurityConfig.java b/spring-security-core/src/main/java/org/baeldung/methodsecurity/config/MethodSecurityConfig.java new file mode 100644 index 0000000000..4749c730dc --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/methodsecurity/config/MethodSecurityConfig.java @@ -0,0 +1,11 @@ +package org.baeldung.methodsecurity.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration; + +@Configuration +@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true) +public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration { + +} diff --git a/spring-security-core/src/main/java/org/baeldung/methodsecurity/entity/CustomUser.java b/spring-security-core/src/main/java/org/baeldung/methodsecurity/entity/CustomUser.java new file mode 100644 index 0000000000..fb9174befa --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/methodsecurity/entity/CustomUser.java @@ -0,0 +1,30 @@ +package org.baeldung.methodsecurity.entity; + +import java.util.Collection; + +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.User; + +@SuppressWarnings("serial") +public class CustomUser extends User { + + private String nickName; + + public CustomUser(String username, String password, Collection authorities) { + super(username, password, authorities); + } + + public CustomUser(String username, String password, Collection authorities, String nickName) { + super(username, password, authorities); + this.nickName = nickName; + } + + public String getNickName() { + return nickName; + } + + public void setNickName(String nickName) { + this.nickName = nickName; + } + +} diff --git a/spring-security-core/src/main/java/org/baeldung/methodsecurity/repository/UserRoleRepository.java b/spring-security-core/src/main/java/org/baeldung/methodsecurity/repository/UserRoleRepository.java new file mode 100644 index 0000000000..fc1a32289d --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/methodsecurity/repository/UserRoleRepository.java @@ -0,0 +1,57 @@ +package org.baeldung.methodsecurity.repository; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.baeldung.methodsecurity.entity.CustomUser; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +@Service +public class UserRoleRepository { + + static Map DB_BASED_USER_MAPPING; + + static { + DB_BASED_USER_MAPPING = new LinkedHashMap<>(); + DB_BASED_USER_MAPPING.put("jane", new CustomUser("jane", "1234", getGrantedAuthorities("ROLE_USER", "ROLE_VIEWER"), "jane")); + DB_BASED_USER_MAPPING.put("john", new CustomUser("john", "1234", getGrantedAuthorities("ROLE_EDITOR", "ROLE_ADMIN"), "jane")); + DB_BASED_USER_MAPPING.put("jack", new CustomUser("jack", "1234", getGrantedAuthorities("ROLE_USER", "ROLE_REVIEWER"), "jane")); + } + + private static List getGrantedAuthorities(String... roles) { + ArrayList authorities = new ArrayList<>(); + for (String role : roles) { + authorities.add(new SimpleGrantedAuthority(role)); + } + return authorities; + } + + public CustomUser loadUserByUserName(String username) { + if (DB_BASED_USER_MAPPING.containsKey(username)) { + return DB_BASED_USER_MAPPING.get(username); + } + throw new UsernameNotFoundException("User " + username + " cannot be found"); + } + + public boolean isValidUsername(String username) { + return DB_BASED_USER_MAPPING.containsKey(username); + } + + public boolean isValidRole(String roleName) { + return roleName.startsWith("ROLE_"); + } + + public List getAllUsernames() { + List usernames = new ArrayList<>(); + usernames.add("jane"); + usernames.add("john"); + usernames.add("jack"); + return usernames; + } + +} diff --git a/spring-security-core/src/main/java/org/baeldung/methodsecurity/service/CustomUserDetailsService.java b/spring-security-core/src/main/java/org/baeldung/methodsecurity/service/CustomUserDetailsService.java new file mode 100644 index 0000000000..91171468bb --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/methodsecurity/service/CustomUserDetailsService.java @@ -0,0 +1,19 @@ +package org.baeldung.methodsecurity.service; + +import org.baeldung.methodsecurity.repository.UserRoleRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.stereotype.Service; + +@Service("userDetailService") +public class CustomUserDetailsService implements UserDetailsService { + + @Autowired + UserRoleRepository userRoleRepo; + + @Override + public UserDetails loadUserByUsername(String username) { + return userRoleRepo.loadUserByUserName(username); + } +} \ No newline at end of file diff --git a/spring-security-core/src/main/java/org/baeldung/methodsecurity/service/SystemService.java b/spring-security-core/src/main/java/org/baeldung/methodsecurity/service/SystemService.java new file mode 100644 index 0000000000..5f29d7dee6 --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/methodsecurity/service/SystemService.java @@ -0,0 +1,18 @@ +package org.baeldung.methodsecurity.service; + +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Service; + +@Service +@PreAuthorize("hasRole('ROLE_ADMIN')") +public class SystemService { + + public String getSystemYear(){ + return "2017"; + } + + public String getSystemDate(){ + return "31-12-2017"; + } + +} diff --git a/spring-security-core/src/main/java/org/baeldung/methodsecurity/service/UserRoleService.java b/spring-security-core/src/main/java/org/baeldung/methodsecurity/service/UserRoleService.java new file mode 100644 index 0000000000..30bbdbc10f --- /dev/null +++ b/spring-security-core/src/main/java/org/baeldung/methodsecurity/service/UserRoleService.java @@ -0,0 +1,108 @@ +package org.baeldung.methodsecurity.service; + +import java.util.List; +import java.util.stream.Collectors; + +import javax.annotation.security.RolesAllowed; + +import org.baeldung.methodsecurity.annotation.IsViewer; +import org.baeldung.methodsecurity.entity.CustomUser; +import org.baeldung.methodsecurity.repository.UserRoleRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.access.prepost.PostAuthorize; +import org.springframework.security.access.prepost.PostFilter; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.access.prepost.PreFilter; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; + +@Service +public class UserRoleService { + + @Autowired + UserRoleRepository userRoleRepository; + + @Secured("ROLE_VIEWER") + public String getUsername() { + SecurityContext securityContext = SecurityContextHolder.getContext(); + return securityContext.getAuthentication().getName(); + } + + @Secured({ "ROLE_VIEWER", "ROLE_EDITOR" }) + public boolean isValidUsername(String username) { + return userRoleRepository.isValidUsername(username); + } + + @RolesAllowed("ROLE_VIEWER") + public String getUsername2() { + SecurityContext securityContext = SecurityContextHolder.getContext(); + return securityContext.getAuthentication().getName(); + } + + @RolesAllowed({ "ROLE_VIEWER", "ROLE_EDITOR" }) + public boolean isValidUsername2(String username) { + return userRoleRepository.isValidUsername(username); + } + + @PreAuthorize("hasRole('ROLE_VIEWER')") + public String getUsernameInUpperCase() { + return getUsername().toUpperCase(); + } + + @PreAuthorize("hasAuthority('SYS_ADMIN')") + public String getUsernameLC() { + return getUsername().toLowerCase(); + } + + @PreAuthorize("hasRole('ROLE_VIEWER') or hasRole('ROLE_EDITOR')") + public boolean isValidUsername3(String username) { + return userRoleRepository.isValidUsername(username); + } + + @PreAuthorize("#username == authentication.principal.username") + public String getMyRoles(String username) { + SecurityContext securityContext = SecurityContextHolder.getContext(); + return securityContext.getAuthentication().getAuthorities().stream().map(auth -> auth.getAuthority()).collect(Collectors.joining(",")); + } + + @PostAuthorize("#username == authentication.principal.username") + public String getMyRoles2(String username) { + SecurityContext securityContext = SecurityContextHolder.getContext(); + return securityContext.getAuthentication().getAuthorities().stream().map(auth -> auth.getAuthority()).collect(Collectors.joining(",")); + } + + @PostAuthorize("returnObject.username == authentication.principal.nickName") + public CustomUser loadUserDetail(String username) { + return userRoleRepository.loadUserByUserName(username); + } + + @PreFilter("filterObject != authentication.principal.username") + public String joinUsernames(List usernames) { + return usernames.stream().collect(Collectors.joining(";")); + } + + @PreFilter(value = "filterObject != authentication.principal.username", filterTarget = "usernames") + public String joinUsernamesAndRoles(List usernames, List roles) { + return usernames.stream().collect(Collectors.joining(";")) + ":" + roles.stream().collect(Collectors.joining(";")); + } + + @PostFilter("filterObject != authentication.principal.username") + public List getAllUsernamesExceptCurrent() { + return userRoleRepository.getAllUsernames(); + } + + @IsViewer + public String getUsername4() { + SecurityContext securityContext = SecurityContextHolder.getContext(); + return securityContext.getAuthentication().getName(); + } + + @PreAuthorize("#username == authentication.principal.username") + @PostAuthorize("returnObject.username == authentication.principal.nickName") + public CustomUser securedLoadUserDetail(String username) { + return userRoleRepository.loadUserByUserName(username); + } + +} diff --git a/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestClassLevelSecurity.java b/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestClassLevelSecurity.java new file mode 100644 index 0000000000..502fd50c46 --- /dev/null +++ b/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestClassLevelSecurity.java @@ -0,0 +1,49 @@ +package org.baeldung.methodsecurity; + +import static org.junit.Assert.*; + +import org.baeldung.methodsecurity.service.SystemService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@ContextConfiguration +public class TestClassLevelSecurity { + + @Autowired + SystemService systemService; + + @Configuration + @ComponentScan("org.baeldung.methodsecurity.*") + public static class SpringConfig { + + } + + @Test + @WithMockUser(username="john",roles={"ADMIN"}) + public void givenRoleAdmin_whenCallGetSystemYear_return2017(){ + String systemYear = systemService.getSystemYear(); + assertEquals("2017",systemYear); + } + + @Test(expected=AccessDeniedException.class) + @WithMockUser(username="john",roles={"VIEWER"}) + public void givenRoleViewer_whenCallGetSystemYear_returnAccessDenied(){ + String systemYear = systemService.getSystemYear(); + assertEquals("2017",systemYear); + } + + @Test + @WithMockUser(username="john",roles={"ADMIN"}) + public void givenRoleAdmin_whenCallGetSystemDate_returnDate(){ + String systemYear = systemService.getSystemDate(); + assertEquals("31-12-2017",systemYear); + } +} diff --git a/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestMethodSecurity.java b/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestMethodSecurity.java new file mode 100644 index 0000000000..309ee3076d --- /dev/null +++ b/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestMethodSecurity.java @@ -0,0 +1,176 @@ +package org.baeldung.methodsecurity; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import org.baeldung.methodsecurity.service.UserRoleService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException; +import org.springframework.security.test.context.support.WithAnonymousUser; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@ContextConfiguration +public class TestMethodSecurity { + + @Autowired + UserRoleService userRoleService; + + @Configuration + @ComponentScan("org.baeldung.methodsecurity.*") + public static class SpringConfig { + + } + + @Test(expected = AuthenticationCredentialsNotFoundException.class) + public void givenNoSecurity_whenCallGetUsername_thenReturnException() { + String userName = userRoleService.getUsername(); + assertEquals("john", userName); + } + + @Test + @WithMockUser(username = "john", roles = { "VIEWER" }) + public void givenRoleViewer_whenCallGetUsername_thenReturnUsername() { + String userName = userRoleService.getUsername(); + assertEquals("john", userName); + } + + @Test + @WithMockUser(username = "john", roles = { "EDITOR" }) + public void givenUsernameJohn_whenCallIsValidUsername_thenReturnTrue() { + boolean isValid = userRoleService.isValidUsername("john"); + assertEquals(true, isValid); + } + + @Test(expected = AccessDeniedException.class) + @WithMockUser(username = "john", roles = { "ADMIN" }) + public void givenRoleAdmin_whenCallGetUsername_thenReturnAccessDenied() { + userRoleService.getUsername(); + } + + @Test(expected = AccessDeniedException.class) + @WithMockUser(username = "john", roles = { "USER" }) + public void givenRoleUser_whenCallGetUsername2_thenReturnAccessDenied() { + userRoleService.getUsername2(); + } + + @Test + @WithMockUser(username = "john", roles = { "VIEWER", "EDITOR" }) + public void givenRoleViewer_whenCallGetUsername2_thenReturnUsername() { + String userName = userRoleService.getUsername2(); + assertEquals("john", userName); + } + + @Test + @WithMockUser(username = "john", roles = { "VIEWER" }) + public void givenUsernameJerry_whenCallIsValidUsername2_thenReturnFalse() { + boolean isValid = userRoleService.isValidUsername2("jerry"); + assertEquals(false, isValid); + } + + @Test + @WithMockUser(username = "JOHN", authorities = { "SYS_ADMIN" }) + public void givenAuthoritySysAdmin_whenCallGetUsernameInLowerCase_thenReturnUsername() { + String username = userRoleService.getUsernameLC(); + assertEquals("john", username); + } + + @Test + @WithMockUser(username = "john", roles = { "ADMIN", "USER", "VIEWER" }) + public void givenUserJohn_whenCallGetMyRolesWithJohn_thenReturnRoles() { + String roles = userRoleService.getMyRoles("john"); + assertEquals("ROLE_ADMIN,ROLE_USER,ROLE_VIEWER", roles); + } + + @Test(expected = AccessDeniedException.class) + @WithMockUser(username = "john", roles = { "ADMIN", "USER", "VIEWER" }) + public void givenUserJane_whenCallGetMyRolesWithJane_thenAccessDenied() { + userRoleService.getMyRoles("jane"); + } + + @Test + @WithMockUser(username = "john", roles = { "ADMIN", "USER", "VIEWER" }) + public void givenUserJohn_whenCallGetMyRoles2WithJohn_thenReturnRoles() { + String roles = userRoleService.getMyRoles2("john"); + assertEquals("ROLE_ADMIN,ROLE_USER,ROLE_VIEWER", roles); + } + + @Test(expected = AccessDeniedException.class) + @WithMockUser(username = "john", roles = { "ADMIN", "USER", "VIEWER" }) + public void givenUserJane_whenCallGetMyRoles2WithJane_thenAccessDenied() { + userRoleService.getMyRoles2("jane"); + } + + @Test(expected = AccessDeniedException.class) + @WithAnonymousUser + public void givenAnomynousUser_whenCallGetUsername_thenAccessDenied() { + userRoleService.getUsername(); + } + + @Test + @WithMockJohnViewer + public void givenMockedJohnViewer_whenCallGetUsername_thenReturnUsername() { + String userName = userRoleService.getUsername(); + assertEquals("john", userName); + } + + @Test + @WithMockUser(username = "jane") + public void givenListContainCurrentUsername_whenJoinUsernames_thenReturnUsernames() { + List usernames = new ArrayList<>(); + usernames.add("jane"); + usernames.add("john"); + usernames.add("jack"); + String containCurrentUser = userRoleService.joinUsernames(usernames); + assertEquals("john;jack", containCurrentUser); + } + + @Test + @WithMockUser(username = "john") + public void givenListContainCurrentUsername_whenCallJoinUsernamesAndRoles_thenReturnUsernameAndRoles() { + List usernames = new ArrayList<>(); + usernames.add("jane"); + usernames.add("john"); + usernames.add("jack"); + + List roles = new ArrayList<>(); + roles.add("ROLE_ADMIN"); + roles.add("ROLE_TEST"); + + String containCurrentUser = userRoleService.joinUsernamesAndRoles(usernames, roles); + assertEquals("jane;jack:ROLE_ADMIN;ROLE_TEST", containCurrentUser); + } + + @Test + @WithMockUser(username = "john") + public void givenUserJohn_whenCallGetAllUsernamesExceptCurrent_thenReturnOtherusernames() { + List others = userRoleService.getAllUsernamesExceptCurrent(); + assertEquals(2, others.size()); + assertTrue(others.contains("jane")); + assertTrue(others.contains("jack")); + } + + @Test + @WithMockUser(username = "john", roles = { "VIEWER" }) + public void givenRoleViewer_whenCallGetUsername4_thenReturnUsername() { + String userName = userRoleService.getUsername4(); + assertEquals("john", userName); + } + + @Test(expected = AccessDeniedException.class) + @WithMockUser(username = "john") + public void givenDefaultRole_whenCallGetUsername4_thenAccessDenied() { + userRoleService.getUsername4(); + } + +} \ No newline at end of file diff --git a/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestWithMockUserAtClassLevel.java b/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestWithMockUserAtClassLevel.java new file mode 100644 index 0000000000..4df1af8ca9 --- /dev/null +++ b/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestWithMockUserAtClassLevel.java @@ -0,0 +1,34 @@ +package org.baeldung.methodsecurity; + +import static org.junit.Assert.assertEquals; + +import org.baeldung.methodsecurity.service.UserRoleService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@ContextConfiguration +@WithMockUser(username = "john", roles = { "VIEWER" }) +public class TestWithMockUserAtClassLevel { + + @Test + public void givenRoleViewer_whenCallGetUsername_thenReturnUsername() { + String currentUserName = userService.getUsername(); + assertEquals("john", currentUserName); + } + + @Autowired + UserRoleService userService; + + @Configuration + @ComponentScan("org.baeldung.methodsecurity.*") + public static class SpringConfig { + + } +} diff --git a/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestWithUserDetails.java b/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestWithUserDetails.java new file mode 100644 index 0000000000..3ef5996554 --- /dev/null +++ b/spring-security-core/src/test/java/org/baeldung/methodsecurity/TestWithUserDetails.java @@ -0,0 +1,56 @@ +package org.baeldung.methodsecurity; + +import static org.junit.Assert.assertEquals; + +import org.baeldung.methodsecurity.entity.CustomUser; +import org.baeldung.methodsecurity.service.UserRoleService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.test.context.support.WithUserDetails; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@ContextConfiguration +public class TestWithUserDetails { + + @Autowired + UserRoleService userService; + + @Configuration + @ComponentScan("org.baeldung.methodsecurity.*") + public static class SpringConfig { + + } + + @Test + @WithUserDetails(value = "john", userDetailsServiceBeanName = "userDetailService") + public void whenJohn_callLoadUserDetail_thenOK() { + CustomUser user = userService.loadUserDetail("jane"); + assertEquals("jane", user.getNickName()); + } + + @Test + @WithUserDetails(value = "jane", userDetailsServiceBeanName = "userDetailService") + public void givenJane_callSecuredLoadUserDetailWithJane_thenOK() { + CustomUser user = userService.securedLoadUserDetail("jane"); + assertEquals("jane", user.getNickName()); + assertEquals("jane", user.getUsername()); + } + + @Test(expected = AccessDeniedException.class) + @WithUserDetails(value = "john", userDetailsServiceBeanName = "userDetailService") + public void givenJohn_callSecuredLoadUserDetailWithJane_thenAccessDenied() { + userService.securedLoadUserDetail("jane"); + } + + @Test(expected = AccessDeniedException.class) + @WithUserDetails(value = "john", userDetailsServiceBeanName = "userDetailService") + public void givenJohn_callSecuredLoadUserDetailWithJohn_thenAccessDenied() { + userService.securedLoadUserDetail("john"); + } +} diff --git a/spring-security-core/src/test/java/org/baeldung/methodsecurity/WithMockJohnViewer.java b/spring-security-core/src/test/java/org/baeldung/methodsecurity/WithMockJohnViewer.java new file mode 100644 index 0000000000..5e1e882f3d --- /dev/null +++ b/spring-security-core/src/test/java/org/baeldung/methodsecurity/WithMockJohnViewer.java @@ -0,0 +1,10 @@ +package org.baeldung.methodsecurity; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import org.springframework.security.test.context.support.WithMockUser; + +@Retention(RetentionPolicy.RUNTIME) +@WithMockUser(value="john",roles="VIEWER") +public @interface WithMockJohnViewer { } \ No newline at end of file diff --git a/spring-security-mvc-custom/src/main/java/org/baeldung/web/controller/LoginController.java b/spring-security-mvc-custom/src/main/java/org/baeldung/web/controller/LoginController.java new file mode 100644 index 0000000000..c67a6f667e --- /dev/null +++ b/spring-security-mvc-custom/src/main/java/org/baeldung/web/controller/LoginController.java @@ -0,0 +1,43 @@ +package org.baeldung.web.controller; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; + +@Controller +@RequestMapping(value = "/custom") +public class LoginController { + + @Autowired + private AuthenticationManager authManager; + + public LoginController() { + super(); + } + + // API + + // custom login + + @RequestMapping(value = "/login", method = RequestMethod.POST) + public void login(@RequestParam("username") final String username, @RequestParam("password") final String password, final HttpServletRequest request) { + UsernamePasswordAuthenticationToken authReq = + new UsernamePasswordAuthenticationToken(username, password); + Authentication auth = authManager.authenticate(authReq); + SecurityContext sc = SecurityContextHolder.getContext(); + sc.setAuthentication(auth); + HttpSession session = request.getSession(true); + session.setAttribute("SPRING_SECURITY_CONTEXT", sc); + } + +} \ No newline at end of file diff --git a/spring-security-mvc-custom/src/main/java/org/baeldung/web/controller/PrintUserController.java b/spring-security-mvc-custom/src/main/java/org/baeldung/web/controller/PrintUserController.java new file mode 100644 index 0000000000..78f164c7f1 --- /dev/null +++ b/spring-security-mvc-custom/src/main/java/org/baeldung/web/controller/PrintUserController.java @@ -0,0 +1,27 @@ +package org.baeldung.web.controller; + +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +@Controller +@RequestMapping(value = "/custom") +public class PrintUserController { + + public PrintUserController() { + super(); + } + + // API + + // print user + + @RequestMapping(value = "/print", method = RequestMethod.GET) + public void printUser() { + SecurityContext sc = SecurityContextHolder.getContext(); + System.out.println("Logged User: "+sc.getAuthentication().getName()); + } + +} \ No newline at end of file diff --git a/spring-security-mvc-custom/src/test/java/org/baeldung/security/spring/ManualSecurityConfig.java b/spring-security-mvc-custom/src/test/java/org/baeldung/security/spring/ManualSecurityConfig.java new file mode 100644 index 0000000000..874856095c --- /dev/null +++ b/spring-security-mvc-custom/src/test/java/org/baeldung/security/spring/ManualSecurityConfig.java @@ -0,0 +1,58 @@ +package org.baeldung.security.spring; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.BeanIds; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.builders.WebSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) +public class ManualSecurityConfig extends WebSecurityConfigurerAdapter { + + public ManualSecurityConfig() { + super(); + } + + // java config + + @Override + protected void configure(final AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication().withUser("user1").password("user1Pass").authorities("ROLE_USER").and().withUser("admin").password("adminPass").authorities("ROLE_ADMIN"); + } + + @Override + public void configure(final WebSecurity web) throws Exception { + web.ignoring().antMatchers("/resources/**"); + } + + @Bean(name = BeanIds.AUTHENTICATION_MANAGER) + @Override + public AuthenticationManager authenticationManagerBean() throws Exception { + return super.authenticationManagerBean(); + } + + @Override + protected void configure(final HttpSecurity http) throws Exception { + // @formatter:off + http + .authorizeRequests() + .mvcMatchers("/custom/login").permitAll() + .anyRequest().authenticated() + .and() + .httpBasic() + .and() + .headers().cacheControl().disable() + .and() + .csrf().disable() + ; + // @formatter:on + } + +} diff --git a/spring-security-mvc-custom/src/test/java/org/baeldung/security/spring/ManualSecurityIntegrationTest.java b/spring-security-mvc-custom/src/test/java/org/baeldung/security/spring/ManualSecurityIntegrationTest.java new file mode 100644 index 0000000000..afc86bd74c --- /dev/null +++ b/spring-security-mvc-custom/src/test/java/org/baeldung/security/spring/ManualSecurityIntegrationTest.java @@ -0,0 +1,58 @@ +package org.baeldung.security.spring; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import javax.servlet.http.HttpSession; + +import org.baeldung.spring.MvcConfig; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockHttpSession; +import org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration(classes = { MvcConfig.class, ManualSecurityConfig.class }) +public class ManualSecurityIntegrationTest { + + @Autowired + WebApplicationContext wac; + + private MockMvc mockMvc; + + @Before + public void setup() { + MockitoAnnotations.initMocks(this); + mockMvc = MockMvcBuilders.webAppContextSetup(wac).apply(SecurityMockMvcConfigurers.springSecurity()).build(); + } + + /** + * Execute custom login and access the endpoint + */ + @Test + public void whenLoginIsSuccessFulThenEndpointCanBeAccessedAndCurrentUserPrinted() throws Exception { + + mockMvc.perform(get("/custom/print")) + .andExpect(status().isUnauthorized()); + + HttpSession session = mockMvc.perform(post("/custom/login").param("username", "user1").param("password", "user1Pass")) + .andExpect(status().isOk()) + .andReturn() + .getRequest() + .getSession(); + + mockMvc.perform(get("/custom/print").session((MockHttpSession) session)) + .andExpect(status().is2xxSuccessful()); + } + +} diff --git a/spring-security-mvc-ldap/pom.xml b/spring-security-mvc-ldap/pom.xml index e6452ea70b..4b0b9525e4 100644 --- a/spring-security-mvc-ldap/pom.xml +++ b/spring-security-mvc-ldap/pom.xml @@ -9,10 +9,10 @@ war - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-security-mvc-socket/pom.xml b/spring-security-mvc-socket/pom.xml index c1715d36d2..40d81649f5 100644 --- a/spring-security-mvc-socket/pom.xml +++ b/spring-security-mvc-socket/pom.xml @@ -151,7 +151,7 @@ maven-compiler-plugin - 3.1 + 3.7.0 1.8 1.8 diff --git a/spring-security-openid/pom.xml b/spring-security-openid/pom.xml index 2149334a5c..4c8112a163 100644 --- a/spring-security-openid/pom.xml +++ b/spring-security-openid/pom.xml @@ -11,12 +11,12 @@ spring-security-openid Spring OpenID sample project - - parent-boot-5 - com.baeldung - 0.0.1-SNAPSHOT - ../parent-boot-5 - + + org.springframework.boot + spring-boot-starter-parent + 2.0.0.M7 + + @@ -37,13 +37,36 @@ org.springframework.security.oauth spring-security-oauth2 + 2.2.1.RELEASE org.springframework.security spring-security-jwt + 1.0.9.RELEASE - + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + diff --git a/spring-security-openid/src/main/java/org/baeldung/config/SpringOpenidApplication.java b/spring-security-openid/src/main/java/org/baeldung/config/SpringOpenidApplication.java index ed57088c56..1acdba0623 100644 --- a/spring-security-openid/src/main/java/org/baeldung/config/SpringOpenidApplication.java +++ b/spring-security-openid/src/main/java/org/baeldung/config/SpringOpenidApplication.java @@ -2,7 +2,7 @@ package org.baeldung.config; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.support.SpringBootServletInitializer; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class SpringOpenidApplication extends SpringBootServletInitializer { diff --git a/spring-security-rest-custom/pom.xml b/spring-security-rest-custom/pom.xml index 77a58a56d8..746ddb6615 100644 --- a/spring-security-rest-custom/pom.xml +++ b/spring-security-rest-custom/pom.xml @@ -9,10 +9,10 @@ war - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-security-stormpath/pom.xml b/spring-security-stormpath/pom.xml index 982c677bf5..060f8a553d 100644 --- a/spring-security-stormpath/pom.xml +++ b/spring-security-stormpath/pom.xml @@ -24,10 +24,10 @@ - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-security-x509/pom.xml b/spring-security-x509/pom.xml index 77830ebe5a..6225f73ebc 100644 --- a/spring-security-x509/pom.xml +++ b/spring-security-x509/pom.xml @@ -15,10 +15,10 @@ - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-session/pom.xml b/spring-session/pom.xml index bb644c8b2e..b62d814665 100644 --- a/spring-session/pom.xml +++ b/spring-session/pom.xml @@ -8,10 +8,10 @@ jar - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-sleuth/pom.xml b/spring-sleuth/pom.xml index dda5e09a26..aac0084720 100644 --- a/spring-sleuth/pom.xml +++ b/spring-sleuth/pom.xml @@ -9,10 +9,10 @@ jar - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-social-login/pom.xml b/spring-social-login/pom.xml index 0ca04ac298..50e2abfbfc 100644 --- a/spring-social-login/pom.xml +++ b/spring-social-login/pom.xml @@ -7,10 +7,10 @@ war - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-swagger-codegen/spring-swagger-codegen-api-client/pom.xml b/spring-swagger-codegen/spring-swagger-codegen-api-client/pom.xml index fb25a888fd..fca3e6351d 100644 --- a/spring-swagger-codegen/spring-swagger-codegen-api-client/pom.xml +++ b/spring-swagger-codegen/spring-swagger-codegen-api-client/pom.xml @@ -118,10 +118,10 @@ org.apache.maven.plugins maven-compiler-plugin - 3.6.1 + 3.7.0 - 1.7 - 1.7 + 1.8 + 1.8 diff --git a/spring-zuul/pom.xml b/spring-zuul/pom.xml index e1a551bc84..ca9cbc765d 100644 --- a/spring-zuul/pom.xml +++ b/spring-zuul/pom.xml @@ -9,10 +9,10 @@ pom - parent-boot-4 + parent-boot-5 com.baeldung 0.0.1-SNAPSHOT - ../parent-boot-4 + ../parent-boot-5 diff --git a/spring-zuul/spring-zuul-foos-resource/src/main/java/org/baeldung/config/ResourceServerApplication.java b/spring-zuul/spring-zuul-foos-resource/src/main/java/org/baeldung/config/ResourceServerApplication.java index 1e35eff551..9f1d2e162b 100644 --- a/spring-zuul/spring-zuul-foos-resource/src/main/java/org/baeldung/config/ResourceServerApplication.java +++ b/spring-zuul/spring-zuul-foos-resource/src/main/java/org/baeldung/config/ResourceServerApplication.java @@ -2,7 +2,7 @@ package org.baeldung.config; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.context.web.SpringBootServletInitializer; +import org.springframework.boot.web.support.SpringBootServletInitializer; @SpringBootApplication public class ResourceServerApplication extends SpringBootServletInitializer { diff --git a/testing-modules/README.md b/testing-modules/README.md index 3fbeea6188..ccf63a9815 100644 --- a/testing-modules/README.md +++ b/testing-modules/README.md @@ -1,3 +1,6 @@ ## Testing Modules +### Relevant Articles: + +- [Quick Guide to BDDMockito](http://www.baeldung.com/bdd-mockito) diff --git a/testing-modules/junit-5/README.md b/testing-modules/junit-5/README.md index 20ecb1eeab..ed429de489 100644 --- a/testing-modules/junit-5/README.md +++ b/testing-modules/junit-5/README.md @@ -8,3 +8,4 @@ - [Inject Parameters into JUnit Jupiter Unit Tests](http://www.baeldung.com/junit-5-parameters) - [Mockito and JUnit 5 – Using ExtendWith](http://www.baeldung.com/mockito-junit-5-extension) - [JUnit 5 – @RunWith](http://www.baeldung.com/junit-5-runwith) +- [JUnit 5 @Test Annotation](http://www.baeldung.com/junit-5-test-annotation) diff --git a/testing-modules/junit-5/pom.xml b/testing-modules/junit-5/pom.xml index 684a9253d5..585232b3fe 100644 --- a/testing-modules/junit-5/pom.xml +++ b/testing-modules/junit-5/pom.xml @@ -27,7 +27,7 @@ 1.4.196 2.11.0 - 3.6.0 + 3.7.0 2.19.1 4.12 5.0.1.RELEASE diff --git a/testing-modules/junit-5/src/main/java/com/baeldung/junit5/bean/NumbersBean.java b/testing-modules/junit-5/src/main/java/com/baeldung/junit5/bean/NumbersBean.java new file mode 100644 index 0000000000..48730fd844 --- /dev/null +++ b/testing-modules/junit-5/src/main/java/com/baeldung/junit5/bean/NumbersBean.java @@ -0,0 +1,22 @@ +package com.baeldung.junit5.bean; + +/** + * Bean that contains utility methods to work with numbers. + * + * @author Donato Rimenti + * + */ +public class NumbersBean { + + /** + * Returns true if a number is even, false otherwise. + * + * @param number + * the number to check + * @return true if the argument is even, false otherwise + */ + public boolean isNumberEven(int number) { + return number % 2 == 0; + } + +} diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/ExceptionUnitTest.java b/testing-modules/junit-5/src/test/java/com/baeldung/ExceptionUnitTest.java index bd57f5b3cb..440c3e40ab 100644 --- a/testing-modules/junit-5/src/test/java/com/baeldung/ExceptionUnitTest.java +++ b/testing-modules/junit-5/src/test/java/com/baeldung/ExceptionUnitTest.java @@ -3,7 +3,12 @@ package com.baeldung; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; +import java.util.ConcurrentModificationException; +import java.util.HashMap; +import java.util.Map; + import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.function.Executable; public class ExceptionUnitTest { @@ -22,4 +27,14 @@ public class ExceptionUnitTest { Integer.valueOf(str); }); } + + @Test + public void whenModifyMapDuringIteration_thenThrowExecption() { + Map hashmap = new HashMap<>(); + hashmap.put(1, "One"); + hashmap.put(2, "Two"); + + Executable executable = () -> hashmap.forEach((key, value) -> hashmap.remove(1)); + assertThrows(ConcurrentModificationException.class, executable); + } } diff --git a/testing-modules/junit-5/src/test/java/com/baeldung/junit5/bean/test/NumbersBeanUnitTest.java b/testing-modules/junit-5/src/test/java/com/baeldung/junit5/bean/test/NumbersBeanUnitTest.java new file mode 100644 index 0000000000..0297d010e8 --- /dev/null +++ b/testing-modules/junit-5/src/test/java/com/baeldung/junit5/bean/test/NumbersBeanUnitTest.java @@ -0,0 +1,43 @@ +package com.baeldung.junit5.bean.test; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import com.baeldung.junit5.bean.NumbersBean; + +/** + * Test class for {@link NumbersBean}. + * + * @author Donato Rimenti + * + */ +public class NumbersBeanUnitTest { + + /** + * The bean to test. + */ + private NumbersBean bean = new NumbersBean(); + + /** + * Tests that when an even number is passed to + * {@link NumbersBean#isNumberEven(int)}, true is returned. + */ + @Test + void givenEvenNumber_whenCheckingIsNumberEven_thenTrue() { + boolean result = bean.isNumberEven(8); + + Assertions.assertTrue(result); + } + + /** + * Tests that when an odd number is passed to + * {@link NumbersBean#isNumberEven(int)}, false is returned. + */ + @Test + void givenOddNumber_whenCheckingIsNumberEven_thenFalse() { + boolean result = bean.isNumberEven(3); + + Assertions.assertFalse(result); + } + +} diff --git a/testing-modules/mockito-2/README.md b/testing-modules/mockito-2/README.md index 49741c66d1..ee443df81a 100644 --- a/testing-modules/mockito-2/README.md +++ b/testing-modules/mockito-2/README.md @@ -1,6 +1,7 @@ ### Relevant articles - [Mockito’s Java 8 Features](http://www.baeldung.com/mockito-2-java-8) +- [Lazy Verification with Mockito 2](http://www.baeldung.com/mockito-2-lazy-verification) ## Mockito 2 and Java 8 Tips diff --git a/testing-modules/mockito/README.md b/testing-modules/mockito/README.md index 0d6f69a64f..4bbc083d8c 100644 --- a/testing-modules/mockito/README.md +++ b/testing-modules/mockito/README.md @@ -12,3 +12,5 @@ - [Introduction to PowerMock](http://www.baeldung.com/intro-to-powermock) - [Mocking Exception Throwing using Mockito](http://www.baeldung.com/mockito-exceptions) - [Mocking Void Methods with Mockito](http://www.baeldung.com/mockito-void-methods) +- [Mocking of Private Methods Using PowerMock](http://www.baeldung.com/powermock-private-method) +- [Mock Final Classes and Methods with Mockito](http://www.baeldung.com/mockito-final) diff --git a/testing-modules/testing/README.md b/testing-modules/testing/README.md index 143cb792cf..3511bb1bb9 100644 --- a/testing-modules/testing/README.md +++ b/testing-modules/testing/README.md @@ -16,3 +16,4 @@ - [Introduction to Lambda Behave](http://www.baeldung.com/lambda-behave) - [Introduction to Jukito](http://www.baeldung.com/jukito) - [Custom JUnit 4 Test Runners](http://www.baeldung.com/junit-4-custom-runners) +- [Guide to JSpec](http://www.baeldung.com/jspec) diff --git a/testing-modules/testing/pom.xml b/testing-modules/testing/pom.xml index 7aff0a93e0..1fd6357b87 100644 --- a/testing-modules/testing/pom.xml +++ b/testing-modules/testing/pom.xml @@ -94,6 +94,11 @@ 1.5 test + + org.javalite + javalite-common + ${javalite.version} + @@ -162,5 +167,6 @@ 0.32 1.1.0 0.12 + 1.4.13 diff --git a/testing-modules/testing/src/main/java/com/baeldung/jspec/Animal.java b/testing-modules/testing/src/main/java/com/baeldung/jspec/Animal.java new file mode 100644 index 0000000000..efb4c62bde --- /dev/null +++ b/testing-modules/testing/src/main/java/com/baeldung/jspec/Animal.java @@ -0,0 +1,41 @@ +package com.baeldung.jspec; + +public abstract class Animal { + + protected String name; + + public Animal(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Animal other = (Animal) obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } + + +} diff --git a/testing-modules/testing/src/main/java/com/baeldung/jspec/Cage.java b/testing-modules/testing/src/main/java/com/baeldung/jspec/Cage.java new file mode 100644 index 0000000000..73ea343600 --- /dev/null +++ b/testing-modules/testing/src/main/java/com/baeldung/jspec/Cage.java @@ -0,0 +1,48 @@ +package com.baeldung.jspec; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +public class Cage { + + private Set animals = new HashSet<>(); + + public void put(Animal animal) { + animals.add(animal); + } + + public void put(Animal... animals) { + this.animals.addAll(Arrays.asList(animals)); + } + + public Animal release(Animal animal) { + return animals.remove(animal) ? animal : null; + } + + public void open() { + animals.clear(); + } + + public boolean hasAnimals() { + return animals.size() > 0; + } + + public boolean isEmpty() { + return animals.isEmpty(); + } + + public Set getAnimals() { + return this.animals; + } + + public int size() { + return animals.size(); + } + + @Override + public String toString() { + return "Cage [animals=" + animals + "]"; + } + +} diff --git a/testing-modules/testing/src/main/java/com/baeldung/jspec/Cat.java b/testing-modules/testing/src/main/java/com/baeldung/jspec/Cat.java new file mode 100644 index 0000000000..5021a1481c --- /dev/null +++ b/testing-modules/testing/src/main/java/com/baeldung/jspec/Cat.java @@ -0,0 +1,14 @@ +package com.baeldung.jspec; + +public class Cat extends Animal { + + public Cat(String name) { + super(name); + } + + @Override + public String toString() { + return "Cat [name=" + name + "]"; + } + +} diff --git a/testing-modules/testing/src/main/java/com/baeldung/jspec/Dog.java b/testing-modules/testing/src/main/java/com/baeldung/jspec/Dog.java new file mode 100644 index 0000000000..43626941e3 --- /dev/null +++ b/testing-modules/testing/src/main/java/com/baeldung/jspec/Dog.java @@ -0,0 +1,14 @@ +package com.baeldung.jspec; + +public class Dog extends Animal { + + public Dog(String name) { + super(name); + } + + @Override + public String toString() { + return "Dog [name=" + name + "]"; + } + +} diff --git a/testing-modules/testing/src/test/java/com/baeldung/jspec/CageUnitTest.java b/testing-modules/testing/src/test/java/com/baeldung/jspec/CageUnitTest.java new file mode 100644 index 0000000000..33ef986588 --- /dev/null +++ b/testing-modules/testing/src/test/java/com/baeldung/jspec/CageUnitTest.java @@ -0,0 +1,126 @@ +package com.baeldung.jspec; + +import static org.javalite.test.jspec.JSpec.$; +import static org.javalite.test.jspec.JSpec.expect; +import static org.javalite.test.jspec.JSpec.the; + +import java.util.Set; + +import org.javalite.test.jspec.DifferenceExpectation; +import org.junit.Test; + +public class CageUnitTest { + + Cat tomCat = new Cat("Tom"); + Cat felixCat = new Cat("Felix"); + Dog boltDog = new Dog("Bolt"); + Cage cage = new Cage(); + + + @Test + public void puttingAnimals_shouldIncreaseCageSize() { + // When + cage.put(tomCat, boltDog); + + // Then + the(cage.size()).shouldEqual(2); + } + + @Test + public void releasingAnimals_shouldDecreaseCageSize() { + // When + cage.put(tomCat, boltDog); + cage.release(tomCat); + + // Then + the(cage.size()).shouldEqual(1); + } + + @Test + public void puttingAnimals_shouldLeaveThemInsideTheCage() { + // When + cage.put(tomCat, boltDog); + + // Then + the(cage).shouldHave("animals"); + } + + @Test + public void openingTheCage_shouldReleaseAllAnimals() { + // When + cage.put(tomCat, boltDog); + + // Then + the(cage).shouldNotBe("empty"); + + // When + cage.open(); + + // Then + the(cage).shouldBe("empty"); + the(cage.isEmpty()).shouldBeTrue(); + } + + @Test + public void comparingTwoDogs() { + // When + Dog firstDog = new Dog("Rex"); + Dog secondDog = new Dog("Rex"); + + // Then + $(firstDog).shouldEqual(secondDog); + $(firstDog).shouldNotBeTheSameAs(secondDog); + } + + @Test + public void puttingCatsOnly_shouldLetCageAnimalsToContainCats() { + // When + cage.put(tomCat, felixCat); + + // Then + Set animals = cage.getAnimals(); + the(animals).shouldContain(tomCat); + the(animals).shouldContain(felixCat); + the(animals).shouldNotContain(boltDog); + } + + @Test + public void puttingCatsOnly_shouldLetCageToContainCats() { + // When + cage.put(tomCat, felixCat); + + // Then + // Check with toString of the tested objects + the(cage).shouldContain(tomCat); + the(cage).shouldContain(felixCat); + the(cage).shouldNotContain(boltDog); + } + + @Test + public void puttingMoreAnimals_shouldChangeSize() { + // When + cage.put(tomCat, boltDog); + + // Then + expect( new DifferenceExpectation(cage.size()) { + + @Override + public Integer exec() { + cage.release(tomCat); + return cage.size(); + } + } ); + } + + + @Test + public void releasingTheDog_shouldReleaseAnAnimalOfDogType() { + // When + cage.put(boltDog); + Animal releasedAnimal = cage.release(boltDog); + + // Then + the(releasedAnimal).shouldNotBeNull(); + the(releasedAnimal).shouldBeA(Dog.class); + } +} diff --git a/testing-modules/testing/src/test/java/com/baeldung/jspec/JSpecUnitTest.java b/testing-modules/testing/src/test/java/com/baeldung/jspec/JSpecUnitTest.java new file mode 100644 index 0000000000..0e35e26728 --- /dev/null +++ b/testing-modules/testing/src/test/java/com/baeldung/jspec/JSpecUnitTest.java @@ -0,0 +1,57 @@ +package com.baeldung.jspec; + +import static org.javalite.test.jspec.JSpec.$; +import static org.javalite.test.jspec.JSpec.a; +import static org.javalite.test.jspec.JSpec.expect; +import static org.javalite.test.jspec.JSpec.it; +import static org.javalite.test.jspec.JSpec.the; + +import java.util.Arrays; +import java.util.List; + +import org.javalite.test.jspec.ExceptionExpectation; +import org.junit.Test; + +public class JSpecUnitTest { + + @Test + public void onePlusTwo_shouldEqualThree() { + $(1 + 2).shouldEqual(3); + a(1 + 2).shouldEqual(3); + the(1 + 2).shouldEqual(3); + it(1 + 2).shouldEqual(3); + } + + @Test + public void messageShouldContainJSpec() { + String message = "Welcome to JSpec demo"; + // The message should not be empty + the(message).shouldNotBe("empty"); + // The message should contain JSpec + the(message).shouldContain("JSpec"); + } + + public void colorsListShouldContainRed() { + List colorsList = Arrays.asList("red", "green", "blue"); + $(colorsList).shouldContain("red"); + } + + public void guessedNumberShouldEqualHiddenNumber() { + Integer guessedNumber = 11; + Integer hiddenNumber = 11; + + $(guessedNumber).shouldEqual(hiddenNumber); + $(guessedNumber).shouldNotBeTheSameAs(hiddenNumber); + } + + @Test + public void dividingByThero_shouldThrowArithmeticException() { + expect(new ExceptionExpectation(ArithmeticException.class) { + @Override + public void exec() throws ArithmeticException { + System.out.println(1 / 0); + } + } ); + } + +} diff --git a/vavr/README.md b/vavr/README.md index 4361363fbd..d39c9f36a1 100644 --- a/vavr/README.md +++ b/vavr/README.md @@ -8,3 +8,5 @@ - [Introduction to Vavr’s Validation API](http://www.baeldung.com/vavr-validation-api) - [Guide to Collections API in Vavr](http://www.baeldung.com/vavr-collections) - [Collection Factory Methods for Vavr](http://www.baeldung.com/vavr-collection-factory-methods) +- [Introduction to Future in Vavr](http://www.baeldung.com/vavr-future) + diff --git a/vavr/src/test/java/com/baeldung/vavr/future/FutureTest.java b/vavr/src/test/java/com/baeldung/vavr/future/FutureTest.java new file mode 100644 index 0000000000..d5345cad55 --- /dev/null +++ b/vavr/src/test/java/com/baeldung/vavr/future/FutureTest.java @@ -0,0 +1,189 @@ +package com.baeldung.vavr.future; + +import io.vavr.Tuple; +import io.vavr.concurrent.Future; +import io.vavr.control.Option; +import io.vavr.control.Try; +import org.junit.Test; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +import static java.util.concurrent.Executors.newSingleThreadExecutor; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +public class FutureTest { + + private static final String error = "Failed to get underlying value."; + private static final String HELLO = "Welcome to Baeldung!"; + + @Test + public void whenChangeExecutorService_thenCorrect() { + String result = Future.of(newSingleThreadExecutor(), () -> HELLO) + .getOrElse(error); + + assertThat(result) + .isEqualTo(HELLO); + } + + @Test + public void whenAppendData_thenCorrect1() { + String result = Future.of(() -> HELLO) + .getOrElse(error); + + assertThat(result) + .isEqualTo(HELLO); + } + + @Test + public void whenAppendData_thenCorrect2() { + Future resultFuture = Future.of(() -> HELLO) + .await(); + + Option> futureOption = resultFuture.getValue(); + String result = futureOption.get().getOrElse(error); + + assertThat(result) + .isEqualTo(HELLO); + } + + @Test + public void whenAppendData_thenSuccess() { + String result = Future.of(() -> HELLO) + .onSuccess(finalResult -> System.out.println("Successfully Completed - Result: " + finalResult)) + .onFailure(finalResult -> System.out.println("Failed - Result: " + finalResult)) + .getOrElse(error); + + assertThat(result) + .isEqualTo(HELLO); + } + + @Test + public void whenTransform_thenCorrect() { + Future future = Future.of(() -> 5) + .transformValue(result -> Try.of(() -> HELLO + result.get())); + + assertThat(future.get()).isEqualTo(HELLO + 5); + } + + @Test + public void whenChainingCallbacks_thenCorrect() { + Future.of(() -> HELLO) + .andThen(r -> System.out.println("Completed - 1: " + r)) + .andThen(r -> System.out.println("Completed - 2: " + r)); + } + + @Test + public void whenCallAwait_thenCorrect() { + Future resultFuture = Future.of(() -> HELLO) + .await(); + String result = resultFuture.getValue().get().getOrElse(error); + + assertThat(result) + .isEqualTo(HELLO); + } + + @Test + public void whenDivideByZero_thenGetThrowable1() { + Future resultFuture = Future.of(() -> 10 / 0); + + assertThatThrownBy(resultFuture::get) + .isInstanceOf(ArithmeticException.class); + } + + @Test + public void whenDivideByZero_thenGetThrowable2() { + Future resultFuture = Future.of(() -> 10 / 0) + .await(); + + assertThat(resultFuture.getCause().get().getMessage()) + .isEqualTo("/ by zero"); + } + + @Test + public void whenDivideByZero_thenCorrect() { + Future resultFuture = Future.of(() -> 10 / 0) + .await(); + + assertThat(resultFuture.isCompleted()).isTrue(); + assertThat(resultFuture.isSuccess()).isFalse(); + assertThat(resultFuture.isFailure()).isTrue(); + } + + @Test + public void whenAppendData_thenFutureNotEmpty() { + Future resultFuture = Future.of(() -> HELLO) + .await(); + + assertThat(resultFuture.isEmpty()) + .isFalse(); + } + + @Test + public void whenCallZip_thenCorrect() { + Future f1 = Future.of(() -> "hello1"); + Future f2 = Future.of(() -> "hello2"); + + assertThat(f1.zip(f2).get()) + .isEqualTo(Tuple.of("hello1", "hello2")); + } + + @Test + public void whenConvertToCompletableFuture_thenCorrect() throws InterruptedException, ExecutionException { + CompletableFuture convertedFuture = Future.of(() -> HELLO) + .toCompletableFuture(); + + assertThat(convertedFuture.get()) + .isEqualTo(HELLO); + } + + @Test + public void whenCallMap_thenCorrect() { + Future futureResult = Future.of(() -> "from Baeldung") + .map(a -> "Hello " + a) + .await(); + + assertThat(futureResult.get()) + .isEqualTo("Hello from Baeldung"); + } + + @Test + public void whenCallFlatMap_thenCorrect() { + Future futureMap = Future.of(() -> 1) + .flatMap((i) -> Future.of(() -> "Hello: " + i)); + + assertThat(futureMap.get()).isEqualTo("Hello: 1"); + } + + @Test + public void whenFutureFails_thenGetErrorMessage() { + Future future = Future.of(() -> "Hello".substring(-1)) + .recover(x -> "fallback value"); + + assertThat(future.get()) + .isEqualTo("fallback value"); + } + + @Test + public void whenFutureFails_thenGetAnotherFuture() { + Future future = Future.of(() -> "Hello".substring(-1)) + .recoverWith(x -> Future.of(() -> "fallback value")); + + assertThat(future.get()) + .isEqualTo("fallback value"); + } + + @Test + public void whenBothFuturesFail_thenGetErrorMessage() { + Future f1 = Future.of(() -> "Hello".substring(-1)); + Future f2 = Future.of(() -> "Hello".substring(-2)); + + Future errorMessageFuture = f1.fallbackTo(f2); + Future errorMessage = errorMessageFuture.failed(); + + assertThat( + errorMessage.get().getMessage()) + .isEqualTo("String index out of range: -1"); + } +} diff --git a/vavr/src/test/java/com/baeldung/vavr/future/FutureUnitTest.java b/vavr/src/test/java/com/baeldung/vavr/future/FutureUnitTest.java deleted file mode 100644 index 437742c964..0000000000 --- a/vavr/src/test/java/com/baeldung/vavr/future/FutureUnitTest.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.baeldung.vavr.future; - -import static io.vavr.API.$; -import static io.vavr.API.Case; -import static io.vavr.API.Match; -import static io.vavr.Predicates.exists; -import static io.vavr.Predicates.forAll; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.concurrent.CancellationException; -import java.util.function.Consumer; -import java.util.function.Predicate; - -import org.junit.Test; -import org.mockito.Mockito; -import org.mockito.internal.verification.VerificationModeFactory; -import org.mockito.verification.Timeout; - -import io.vavr.Tuple; -import io.vavr.Tuple2; -import io.vavr.collection.List; -import io.vavr.concurrent.Future; -import io.vavr.control.Try; - -public class FutureUnitTest { - - private final String SUCCESS = "Success"; - private final String FAILURE = "Failure"; - - @Test - public void givenFunctionReturnInteger_WhenCallWithFuture_ShouldReturnFunctionValue() { - Future future = Future.of(() -> 1); - - assertEquals(1, future.get().intValue()); - } - - @Test - public void givenFunctionGetRemoteHttpResourceAsString_WhenCallSuccessWithFuture_ShouldReturnContentValueAsString() { - String url = "http://resource"; - String content = "Content from " + url; - Future future = Future.of(() -> getResource(url)); - - assertEquals(content, future.get()); - } - - @Test - public void givenFunctionThrowException_WhenCallWithFuture_ShouldReturnFailure() { - Future future = Future.of(() -> getResourceThrowException("")); - future.await(); - - assertTrue(future.isFailure()); - } - - @Test - public void givenAFutureReturnZero_WhenCheckFutureWithExistEvenValue_ShouldReturnRight() { - Future future = Future.of(() -> 2); - boolean result = future.exists(i -> i % 2 == 0); - - assertTrue(result); - } - - @Test - public void givenFunction_WhenCallWithFutureAndRegisterConsumerForSuccess_ShouldCallConsumerToStoreValue() { - Future future = Future.of(() -> 1); - MockConsumer consumer = Mockito.mock(MockConsumer.class); - future.onSuccess(consumer); - Mockito.verify(consumer, new Timeout(1000, VerificationModeFactory.times(1))).accept(1); - } - - @Test - public void givenFunctionThrowException_WhenCallWithFutureAndRegisterConsumerForFailer_ShouldCallConsumerToStoreException() { - Future future = Future.of(() -> getResourceThrowException("")); - MockThrowableConsumer consumer = Mockito.mock(MockThrowableConsumer.class); - future.onFailure(consumer); - Mockito.verify(consumer, new Timeout(1000, VerificationModeFactory.times(1))).accept(Mockito.any()); - } - - @Test - public void givenAFuture_WhenAddAndThenConsumer_ShouldCallConsumerWithResultOfFutureAction() { - MockTryConsumer consumer1 = Mockito.mock(MockTryConsumer.class); - MockTryConsumer consumer2 = Mockito.mock(MockTryConsumer.class); - Future future = Future.of(() -> 1); - Future andThenFuture = future.andThen(consumer1).andThen(consumer2); - andThenFuture.await(); - Mockito.verify(consumer1, VerificationModeFactory.times(1)).accept(Try.success(1)); - Mockito.verify(consumer2, VerificationModeFactory.times(1)).accept(Try.success(1)); - } - - @Test - public void givenAFailureFuture_WhenCallOrElseFunction_ShouldReturnNewFuture() { - Future future = Future.failed(new RuntimeException()); - Future future2 = future.orElse(Future.of(() -> 2)); - - assertEquals(2, future2.get().intValue()); - } - - @Test(expected = CancellationException.class) - public void givenAFuture_WhenCallCancel_ShouldReturnCancellationException() { - long waitTime = 1000; - Future future = Future.of(() -> { - Thread.sleep(waitTime); - return 1; - }); - future.cancel(); - future.await(); - future.get(); - } - - @Test - public void givenAFuture_WhenCallFallBackWithSuccessFuture_ShouldReturnFutureResult() { - String expectedResult = "take this"; - Future future = Future.of(() -> expectedResult); - Future secondFuture = Future.of(() -> "take that"); - Future futureResult = future.fallbackTo(secondFuture); - futureResult.await(); - - assertEquals(expectedResult, futureResult.get()); - } - - @Test - public void givenAFuture_WhenCallFallBackWithFailureFuture_ShouldReturnValueOfFallBackFuture() { - String expectedResult = "take that"; - Future future = Future.failed(new RuntimeException()); - Future fallbackFuture = Future.of(() -> expectedResult); - Future futureResult = future.fallbackTo(fallbackFuture); - - assertEquals(expectedResult, futureResult.get()); - } - - @Test - public void givenAFuture_WhenTransformByAddingOne_ShouldReturn() { - Future future = Future.of(() -> 1).transformValue(f -> Try.of(() -> "Hello: " + f.get())); - - assertEquals("Hello: 1", future.get()); - } - - @Test - public void givenAFutureOfInt_WhenMapToString_ShouldCombineAndReturn() { - Future future = Future.of(()->1).map(i -> "Hello: " + i); - - assertEquals("Hello: 1", future.get()); - } - - @Test - public void givenAFutureOfInt_WhenFlatMapToString_ShouldCombineAndReturn() { - Future futureMap = Future.of(() -> 1).flatMap((i) -> Future.of(() -> "Hello: " + i)); - - assertEquals("Hello: 1", futureMap.get()); - } - - @Test - public void givenAFutureOf2String_WhenZip_ShouldReturnTupleOf2String() { - Future> future = Future.of(() -> "hello").zip(Future.of(() -> "world")); - - assertEquals(Tuple.of("hello", "world"), future.get()); - } - - @Test - public void givenGetResourceWithFuture_WhenWaitAndMatchWithPredicate_ShouldReturnSuccess() { - String url = "http://resource"; - Future future = Future.of(() -> getResource(url)); - future.await(); - String s = Match(future).of( - Case($(future0 -> future0.isSuccess()), SUCCESS), - Case($(), FAILURE)); - - assertEquals(SUCCESS, s); - } - - @Test - public void givenAFailedFuture_WhenWaitAndMatchWithPredicateCheckSuccess_ShouldReturnFailed() { - Future future = Future.failed(new RuntimeException()); - future.await(); - String s = Match(future).of( - Case($(future0 -> future0.isSuccess()), SUCCESS), - Case($(), FAILURE)); - - assertEquals(FAILURE, s); - } - - @Test - public void givenAFuture_WhenMatchWithFuturePredicate_ShouldReturnSuccess() { - Future future = Future.of(() -> { - Thread.sleep(10); - return 1; - }); - Predicate> predicate = f -> f.exists(i -> i % 2 == 1); - - String s = Match(future).of( - Case($(predicate), "Even"), - Case($(), "Odd")); - - assertEquals("Even", s); - } - - @Test - public void givenAListOfFutureReturnFist3Integers_WhenMatchWithExistEvenNumberPredicate_ShouldReturnSuccess() { - List> futures = getFutureOfFirst3Number(); - Predicate> predicate0 = future -> future.exists(i -> i % 2 == 0); - String s = Match(futures).of( - Case($(exists(predicate0)), "Even"), - Case($(), "Odd")); - - assertEquals("Even", s); - } - - @Test - public void givenAListOfFutureReturnFist3Integers_WhenMatchWithForAllNumberBiggerThanZeroPredicate_ShouldReturnSuccess() { - List> futures = getFutureOfFirst3Number(); - Predicate> predicate0 = future -> future.exists(i -> i > 0); - String s = Match(futures).of( - Case($(forAll(predicate0)), "Positive numbers"), - Case($(), "None")); - - assertEquals("Positive numbers", s); - } - - @Test - public void givenAListOfFutureReturnFist3Integers_WhenMatchWithForAllNumberSmallerThanZeroPredicate_ShouldReturnFailed() { - List> futures = getFutureOfFirst3Number(); - Predicate> predicate0 = future -> future.exists(i -> i < 0); - String s = Match(futures).of( - Case($(forAll(predicate0)), "Negative numbers"), - Case($(), "None")); - - assertEquals("None", s); - } - - private String getResource(String url) { - try { - Thread.sleep(10); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - return "Content from " + url; - } - - private String getResourceThrowException(String url) { - throw new RuntimeException("Exception when get resource " + url); - } - - private List> getFutureOfFirst3Number() { - List> futures = List.of(Future.of(() -> 1), Future.of(() -> 2), Future.of(() -> 3)); - return futures; - } - - private static void checkOnSuccessFunction() { - Future future = Future.of(() -> 1); - future.onSuccess(i -> System.out.println("Future finish with result: " + i)); - } - - private static void checkOnFailureFunction() { - Future future = Future.of(() -> {throw new RuntimeException("Failed");}); - future.onFailure(t -> System.out.println("Future failures with exception: " + t)); - } - - private static void runAndThenConsumer() { - Future future = Future.of(() -> 1); - future.andThen(i -> System.out.println("Do side-effect action 1 with input: " + i.get())). - andThen((i) -> System.out.println("Do side-effect action 2 with input: " + i.get())); - } - - public static void main(String[] args) throws InterruptedException { - checkOnSuccessFunction(); - checkOnFailureFunction(); - runAndThenConsumer(); - Thread.sleep(1000); - } -} - - -class MockConsumer implements Consumer { - @Override - public void accept(Integer t) { - } -} - -class MockTryConsumer implements Consumer> { - @Override - public void accept(Try t) { - } -} - -class MockThrowableConsumer implements Consumer { - @Override - public void accept(Throwable t) { - } -} diff --git a/vertx-and-rxjava/pom.xml b/vertx-and-rxjava/pom.xml index 9c2c9bfd48..067b88c410 100644 --- a/vertx-and-rxjava/pom.xml +++ b/vertx-and-rxjava/pom.xml @@ -17,6 +17,7 @@ org.apache.maven.plugins maven-compiler-plugin + 3.7.0 1.8 1.8 diff --git a/vraptor/.gitignore b/vraptor/.gitignore new file mode 100644 index 0000000000..27dc294cd1 --- /dev/null +++ b/vraptor/.gitignore @@ -0,0 +1,4 @@ + +/target/ +/.idea/ +/src/main/webapp/WEB-INF/classes/ diff --git a/vraptor/README.md b/vraptor/README.md new file mode 100644 index 0000000000..d547fc1274 --- /dev/null +++ b/vraptor/README.md @@ -0,0 +1,13 @@ +# VRaptor blank project + +This is a blank project to help you to use VRaptor. You can easily import in you IDE as Maven project. + +Este é um projeto em branco para ajudar você a usar o VRaptor. Você pode facilmente importá-lo na sua IDE favorita como um projeto Maven. + +Após criar seu projeto você pode rodá-lo com um tomcat7 ou +: + +``` +mvn tomcat7:run +``` + +Cuidado para *jamais* executar `mvn tomcat:run` pois ele usará um tomcat6 (incompatível). diff --git a/vraptor/pom.xml b/vraptor/pom.xml new file mode 100644 index 0000000000..64a4f2d85d --- /dev/null +++ b/vraptor/pom.xml @@ -0,0 +1,134 @@ + + 4.0.0 + + com.baeldung + vraptor + 1.0.0 + war + + A demo project to start using VRaptor 4 + + + UTF-8 + 2.1.2.Final + + + + + br.com.caelum + vraptor + 4.2.0.Final + + + + org.jboss.weld.servlet + weld-servlet-core + 2.1.2.Final + + + org.jboss.spec.javax.el + jboss-el-api_3.0_spec + + + + + + org.jboss.weld + weld-core-impl + 2.1.2.Final + + + org.jboss.spec.javax.el + jboss-el-api_3.0_spec + + + + + + javax.el + el-api + 2.2 + provided + + + + org.hibernate + hibernate-validator-cdi + 5.1.1.Final + + + + javax.servlet + jstl + 1.2 + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + org.slf4j + slf4j-log4j12 + 1.7.5 + + + + br.com.caelum.vraptor + vraptor-freemarker + 4.1.0-RC3 + + + + br.com.caelum.vraptor + vraptor-hibernate + 4.0.4 + + + + mysql + mysql-connector-java + 8.0.8-dmr + + + + org.mindrot + jbcrypt + 0.4 + + + + org.freemarker + freemarker + 2.3.27-incubating + + + + + + vraptor + src/main/webapp/WEB-INF/classes + + + org.apache.maven.plugins + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.1 + + / + + + + + diff --git a/vraptor/src/main/java/com/baeldung/config/UserInfo.java b/vraptor/src/main/java/com/baeldung/config/UserInfo.java new file mode 100644 index 0000000000..2613128790 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/config/UserInfo.java @@ -0,0 +1,23 @@ +package com.baeldung.config; + +import com.baeldung.models.User; + +import javax.enterprise.context.SessionScoped; +import java.io.Serializable; + +@SessionScoped +public class UserInfo implements Serializable { + + private User user; + + + public UserInfo() {} + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } +} diff --git a/vraptor/src/main/java/com/baeldung/controllers/AuthController.java b/vraptor/src/main/java/com/baeldung/controllers/AuthController.java new file mode 100644 index 0000000000..ed2d3fdba7 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/controllers/AuthController.java @@ -0,0 +1,99 @@ +package com.baeldung.controllers; + +import br.com.caelum.vraptor.*; +import br.com.caelum.vraptor.freemarker.FreemarkerView; +import br.com.caelum.vraptor.validator.Validator; +import com.baeldung.config.UserInfo; +import com.baeldung.daos.UserDao; +import com.baeldung.models.User; +import org.mindrot.jbcrypt.BCrypt; + +import javax.inject.Inject; +import javax.servlet.http.HttpServletRequest; +import java.util.Objects; +import java.util.logging.Logger; + +@Controller +public class AuthController { + + private Validator validator; + private UserDao userDao; + private Result result; + private UserInfo userInfo; + private Logger logger = Logger.getLogger(getClass().getName()); + + public AuthController() { + this(null, null, null, null); + } + + @Inject + public AuthController(Validator validator, UserDao userDao, Result result, UserInfo userInfo) { + this.validator = validator; + this.userDao = userDao; + this.result = result; + this.userInfo = userInfo; + } + + @Get("/register") + public void registrationForm() { + result.use(FreemarkerView.class).withTemplate("auth/register"); + } + + @Post("/register") + public void register(User user, HttpServletRequest request) { + + validator.validate(user); + + if(validator.hasErrors()) { + result.include("errors", validator.getErrors()); + } + + validator.onErrorRedirectTo(this).registrationForm(); + + if(!user.getPassword() + .equals(request.getParameter("password_confirmation"))) { + result.include("error", "Passwords Do Not Match"); + result.redirectTo(this).registrationForm(); + } + + user.setPassword( + BCrypt.hashpw(user.getPassword(), BCrypt.gensalt())); + + Object resp = userDao.add(user); + + if(resp != null) { + result.include("status", "Registration Successful! Now Login"); + result.redirectTo(this).loginForm(); + } else { + result.include("error", "There was an error during registration"); + result.redirectTo(this).registrationForm(); + } + } + + @Get("/login") + public void loginForm() { + result.use(FreemarkerView.class).withTemplate("auth/login"); + } + + @Post("/login") + public void login(HttpServletRequest request) { + + String password = request.getParameter("user.password"); + String email = request.getParameter("user.email"); + + if(email.isEmpty() || password.isEmpty()) { + result.include("error", "Email/Password is Required!"); + result.redirectTo(AuthController.class).loginForm(); + } + + User user = userDao.findByEmail(email); + if(user != null && BCrypt.checkpw(password, user.getPassword())) { + userInfo.setUser(user); + result.include("status", "Login Successful!"); + result.redirectTo(IndexController.class).index(); + } else { + result.include("error", "Email/Password Does Not Match!"); + result.redirectTo(AuthController.class).loginForm(); + } + } +} diff --git a/vraptor/src/main/java/com/baeldung/controllers/IndexController.java b/vraptor/src/main/java/com/baeldung/controllers/IndexController.java new file mode 100644 index 0000000000..cca34f5447 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/controllers/IndexController.java @@ -0,0 +1,40 @@ +package com.baeldung.controllers; + +import br.com.caelum.vraptor.Controller; +import br.com.caelum.vraptor.Path; +import br.com.caelum.vraptor.Result; +import br.com.caelum.vraptor.freemarker.FreemarkerView; +import com.baeldung.daos.PostDao; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.inject.Inject; + +@Controller +public class IndexController { + + private PostDao postDao; + private final Result result; + private static final Logger logger = LoggerFactory.getLogger(IndexController.class); + + public IndexController() { + this(null, null); + } + + @Inject + public IndexController(Result result, PostDao postDao) { + this.result = result; + this.postDao = postDao; + } + + @Path("/") + public void index() { + result.include("posts", postDao.all()); + result.use(FreemarkerView.class).withTemplate("index"); + } + + + + + +} \ No newline at end of file diff --git a/vraptor/src/main/java/com/baeldung/controllers/PostController.java b/vraptor/src/main/java/com/baeldung/controllers/PostController.java new file mode 100644 index 0000000000..979d0c28e2 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/controllers/PostController.java @@ -0,0 +1,77 @@ +package com.baeldung.controllers; + +import br.com.caelum.vraptor.Controller; +import br.com.caelum.vraptor.Get; +import br.com.caelum.vraptor.Path; +import br.com.caelum.vraptor.Result; +import br.com.caelum.vraptor.freemarker.FreemarkerView; +import br.com.caelum.vraptor.validator.Validator; +import com.baeldung.config.UserInfo; +import com.baeldung.daos.PostDao; +import com.baeldung.models.Post; + +import javax.inject.Inject; +import javax.servlet.http.HttpServletRequest; +import java.util.Objects; +import java.util.logging.Logger; + +@Controller +public class PostController { + + private Result result; + private Logger logger = Logger.getLogger(PostController.class.getName()); + private PostDao postDao; + private UserInfo userInfo; + private Validator validator; + + public PostController() {} + + @Inject + public PostController(Result result, PostDao postDao, UserInfo userInfo, Validator validator) { + this.result = result; + this.postDao = postDao; + this.userInfo = userInfo; + this.validator = validator; + } + + @Get("/post/add") + public void addForm() { + + if(Objects.isNull(userInfo.getUser())) { + result.include("error", "Please Login to Proceed"); + result.redirectTo(AuthController.class).loginForm(); + return; + } + + result.use(FreemarkerView.class).withTemplate("posts/add"); + } + + @br.com.caelum.vraptor.Post("/post/add") + public void add(Post post) { + post.setAuthor(userInfo.getUser()); + validator.validate(post); + if(validator.hasErrors()) + result.include("errors", validator.getErrors()); + validator.onErrorRedirectTo(this).addForm(); + + Object id = postDao.add(post); + + if(Objects.nonNull(id)) { + result.include("status", "Post Added Successfully"); + result.redirectTo(IndexController.class).index(); + } else { + result.include( + "error", "There was an error creating the post. Try Again"); + result.redirectTo(this).addForm(); + } + } + + @Get("/posts/{id}") + public void view(int id) { + result.include("post", postDao.findById(id)); + result.use(FreemarkerView.class).withTemplate("view"); + } + + + +} diff --git a/vraptor/src/main/java/com/baeldung/daos/PostDao.java b/vraptor/src/main/java/com/baeldung/daos/PostDao.java new file mode 100644 index 0000000000..e9a62b5b5e --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/daos/PostDao.java @@ -0,0 +1,54 @@ +package com.baeldung.daos; + +import com.baeldung.controllers.PostController; +import com.baeldung.models.Post; +import org.hibernate.Session; +import org.hibernate.SessionFactory; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import java.util.List; +import java.util.logging.Logger; + +@RequestScoped +public class PostDao { + + private Logger logger = Logger.getLogger(PostController.class.getName()); + private SessionFactory sessionFactory; + + public PostDao() {} + + @Inject + public PostDao(SessionFactory sessionFactory) { + this.sessionFactory = sessionFactory; + } + + public Object add(Post post) { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + Object id = session.save(post); + session.getTransaction().commit(); + session.close(); + return id; + } + + public Post findById(int id) { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + Post post = (Post) session.get(Post.class, id); + session.getTransaction().commit(); + session.close(); + return post; + } + + + public List all() { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + List posts = (List) session.createQuery("FROM Post p").list(); + session.getTransaction().commit(); + session.close(); + return posts; + } + +} diff --git a/vraptor/src/main/java/com/baeldung/daos/UserDao.java b/vraptor/src/main/java/com/baeldung/daos/UserDao.java new file mode 100644 index 0000000000..6af1a49d25 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/daos/UserDao.java @@ -0,0 +1,50 @@ +package com.baeldung.daos; + +import com.baeldung.models.User; +import org.hibernate.Criteria; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Criterion; +import org.hibernate.criterion.Restrictions; +import org.omg.PortableInterceptor.LOCATION_FORWARD; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import java.util.logging.Logger; + +@RequestScoped +public class UserDao { + + SessionFactory sessionFactory; + + public UserDao() { + this(null); + } + + @Inject + public UserDao(SessionFactory sessionFactory) { + this.sessionFactory = sessionFactory; + } + + + public Object add(User user) { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + Object Id = session.save(user); + session.getTransaction().commit(); + return Id; + } + + public User findByEmail(String email) { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + Criteria criteria = session.createCriteria(User.class); + criteria.add(Restrictions.eq("email", email)); + criteria.setMaxResults(1); + User u = (User) criteria.uniqueResult(); + session.getTransaction().commit(); + session.close(); + return u; + } + +} diff --git a/vraptor/src/main/java/com/baeldung/models/Post.java b/vraptor/src/main/java/com/baeldung/models/Post.java new file mode 100644 index 0000000000..6beb6e1682 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/models/Post.java @@ -0,0 +1,105 @@ +package com.baeldung.models; + + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.logging.Logger; + +@Entity +@Table(name = "posts") +public class Post { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + @NotNull @Size(min = 10) + @Column(columnDefinition = "longtext") + private String post; + + @NotNull @Size(min = 5, max = 100) + @Column(unique = true) + private String title; + + @NotNull + @ManyToOne(targetEntity = User.class, optional = false) + private User author; + + @Column(name = "created_at") + private Date createdAt; + + @Column(name = "updated_at") + private Date updatedAt; + + @Transient + private Logger logger = Logger.getLogger(getClass().getName()); + + public Post() { + createdAt = new Date(); + updatedAt = new Date(); + } + + public Post(String title, String post, User author) { + this.title = title; + this.post = post; + this.author = author; + createdAt = new Date(); + updatedAt = new Date(); + } + + public int getId() { + return id; + } + + public String getPost() { + return post; + } + + public void setPost(String post) { + this.post = post; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public User getAuthor() { + return author; + } + + public void setAuthor(User author) { + this.author = author; + } + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + @Override + public String toString() { + return "title: " + this.title + + "\npost: " + this.post + + "\nauthor: " + this.author + +"\ncreatetdAt: " + this.createdAt + + "\nupdatedAt: " + this.updatedAt; + } +} diff --git a/vraptor/src/main/java/com/baeldung/models/User.java b/vraptor/src/main/java/com/baeldung/models/User.java new file mode 100644 index 0000000000..b0f3bd9500 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/models/User.java @@ -0,0 +1,101 @@ +package com.baeldung.models; + +import org.hibernate.validator.constraints.Email; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; +import java.time.LocalDateTime; +import java.util.Date; + +@Entity +@Table(name = "users") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + @NotNull + @Size(min=3, max=255) + private String name; + + @Column(unique = true) + @NotNull @Email + private String email; + + @NotNull + @Size(min=6, max=255) + private String password; + + @Column(name = "created_at") + private Date createdAt; + + @Column(name = "updated_at") + private Date updatedAt; + + public User() { + updatedAt = new Date(); + createdAt = new Date(); + } + + public User(String name, String email, String password) { + this.name = name; + this.email = email; + this.password = password; + createdAt = new Date(); + updatedAt = new Date(); + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + + @Override + public String toString() { + return "Name: " + this.name + + "\nEmail: " + this.email; + } +} diff --git a/vraptor/src/main/resources/META-INF/beans.xml b/vraptor/src/main/resources/META-INF/beans.xml new file mode 100644 index 0000000000..9e32823437 --- /dev/null +++ b/vraptor/src/main/resources/META-INF/beans.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/vraptor/src/main/resources/database.sql b/vraptor/src/main/resources/database.sql new file mode 100644 index 0000000000..bd4a1a6bde --- /dev/null +++ b/vraptor/src/main/resources/database.sql @@ -0,0 +1,55 @@ +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET NAMES utf8 */; +/*!50503 SET NAMES utf8mb4 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; + +CREATE DATABASE IF NOT EXISTS `larablog` /*!40100 DEFAULT CHARACTER SET latin1 */; +USE `larablog`; + +CREATE TABLE IF NOT EXISTS `posts` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `post` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `author_id` int(11) DEFAULT NULL, + `published` tinyint(1) NOT NULL DEFAULT 0, + `views` int(11) NOT NULL DEFAULT 0, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +DELETE FROM `posts`; +/*!40000 ALTER TABLE `posts` DISABLE KEYS */; +INSERT INTO `posts` (`id`, `title`, `post`, `author_id`, `published`, `views`, `created_at`, `updated_at`) VALUES + (2, 'Sample Post 2', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc lobortis, ante in pretium volutpat, risus metus molestie odio, non placerat magna diam sit amet augue. Donec ullamcorper ornare mauris, id bibendum lacus viverra vel. Curabitur in pellentesque metus. Quisque gravida molestie turpis, id tincidunt purus viverra vitae. In sollicitudin, arcu at interdum sagittis, massa mi cursus diam, eu sodales purus erat vitae dui. Curabitur tempus urna consequat odio pretium pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tincidunt eros orci, sit amet pharetra eros accumsan vitae. Quisque a massa id nisi sodales rhoncus sed ut ante. Duis sed augue non velit feugiat varius eget eu velit. Nam commodo posuere massa sed convallis. Phasellus dapibus commodo lectus, vitae gravida lorem. Donec molestie a nisi ac mattis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam tempor ante et rutrum consequat.', 11, 1, 100, '2017-12-12 18:48:19', NULL), + (3, 'Sample Post 3', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc lobortis, ante in pretium volutpat, risus metus molestie odio, non placerat magna diam sit amet augue. Donec ullamcorper ornare mauris, id bibendum lacus viverra vel. Curabitur in pellentesque metus. Quisque gravida molestie turpis, id tincidunt purus viverra vitae. In sollicitudin, arcu at interdum sagittis, massa mi cursus diam, eu sodales purus erat vitae dui. Curabitur tempus urna consequat odio pretium pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tincidunt eros orci, sit amet pharetra eros accumsan vitae. Quisque a massa id nisi sodales rhoncus sed ut ante. Duis sed augue non velit feugiat varius eget eu velit. Nam commodo posuere massa sed convallis. Phasellus dapibus commodo lectus, vitae gravida lorem. Donec molestie a nisi ac mattis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam tempor ante et rutrum consequat.', 11, 1, 100, '2017-12-12 18:48:22', NULL), + (4, 'Sample Post 2212', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc lobortis, ante in pretium volutpat, risus metus molestie odio, non placerat magna diam sit amet augue. Donec ullamcorper ornare mauris, id bibendum lacus viverra vel. Curabitur in pellentesque metus. Quisque gravida molestie turpis, id tincidunt purus viverra vitae. In sollicitudin, arcu at interdum sagittis, massa mi cursus diam, eu sodales purus erat vitae dui. Curabitur tempus urna consequat odio pretium pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tincidunt eros orci, sit amet pharetra eros accumsan vitae. Quisque a massa id nisi sodales rhoncus sed ut ante. Duis sed augue non velit feugiat varius eget eu velit. Nam commodo posuere massa sed convallis. Phasellus dapibus commodo lectus, vitae gravida lorem. Donec molestie a nisi ac mattis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam tempor ante et rutrum consequat.', 11, 1, 100, '2017-12-12 18:48:24', NULL), + (9, 'This is a Test', 'HJh sahjnasj hjas hjashj ashj ashj ashjsa sahjass naskjasnmas', 11, 0, 0, NULL, NULL), + (10, 'Test Title', 'hjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj', 11, 0, 0, NULL, NULL), + (11, 'Test Title 2', 'This is a as as sa asmas as as as as as', 11, 0, 0, NULL, NULL), + (12, 'This is another Test Article', 'There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don\'t look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn\'t anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.', 11, 0, 0, '2017-12-14 03:48:52', '2017-12-14 03:48:52'); +/*!40000 ALTER TABLE `posts` ENABLE KEYS */; + +CREATE TABLE IF NOT EXISTS `users` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `is_admin` int(10) unsigned NULL DEFAULT 0, + `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `users_email_unique` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +DELETE FROM `users`; +/*!40000 ALTER TABLE `users` DISABLE KEYS */; +INSERT INTO `users` (`id`, `name`, `email`, `password`, `is_admin`, `remember_token`, `created_at`, `updated_at`) VALUES + (11, 'Test User', 'test@test.com', '$2a$10$i/TgIqC3xRMnqCEbDryfxuZqhfM/qekfsaQUjBVPUKiiB3Nofr/wO', 0, NULL, '2017-12-14 03:40:57', '2017-12-14 03:40:57'); +/*!40000 ALTER TABLE `users` ENABLE KEYS */; + +/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; +/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; diff --git a/vraptor/src/main/resources/hibernate.cfg.xml b/vraptor/src/main/resources/hibernate.cfg.xml new file mode 100644 index 0000000000..dad0b44683 --- /dev/null +++ b/vraptor/src/main/resources/hibernate.cfg.xml @@ -0,0 +1,31 @@ + + + + + + org.hibernate.dialect.MySQLDialect + + + com.mysql.cj.jdbc.Driver + + + jdbc:mysql://127.0.0.1:3306/larablog?serverTimezone=UTC + + + root + + + root + + + true + + + true + + + + + + \ No newline at end of file diff --git a/vraptor/src/main/resources/log4j.xml b/vraptor/src/main/resources/log4j.xml new file mode 100644 index 0000000000..4e4c4636bc --- /dev/null +++ b/vraptor/src/main/resources/log4j.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vraptor/src/main/resources/templates/auth/login.ftl b/vraptor/src/main/resources/templates/auth/login.ftl new file mode 100644 index 0000000000..56ab2900cd --- /dev/null +++ b/vraptor/src/main/resources/templates/auth/login.ftl @@ -0,0 +1,172 @@ + + + + + + + + + + + + Clean Blog - Contact + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Clean Blog

+
+ A Clean Blog Theme by Start Bootstrap +
+
+
+
+
+ + +
+
+
+

Login

+
${error!""} ${status!""}
+
+
+
+ + +

+
+
+
+
+
+ + +

+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + diff --git a/vraptor/src/main/resources/templates/auth/register.ftl b/vraptor/src/main/resources/templates/auth/register.ftl new file mode 100644 index 0000000000..c65264c834 --- /dev/null +++ b/vraptor/src/main/resources/templates/auth/register.ftl @@ -0,0 +1,194 @@ + + + + + + + + + + + + Clean Blog - Contact + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Clean Blog

+
+ A Clean Blog Theme by Start Bootstrap +
+
+
+
+
+ + +
+
+
+

Register

+
${error!""} ${status!""}
+ <#if errors??> + <#list errors as error> +
${error.category?upper_case}: ${error.message}
+ <#else> + + <#else> + +
+
+
+ + +

+
+
+
+
+ + +

+
+
+
+
+
+ + +

+
+
+
+
+
+ + +

+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + diff --git a/vraptor/src/main/resources/templates/index.ftl b/vraptor/src/main/resources/templates/index.ftl new file mode 100644 index 0000000000..d65d73f534 --- /dev/null +++ b/vraptor/src/main/resources/templates/index.ftl @@ -0,0 +1,173 @@ + + + + + + + + + + + + Clean Blog + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Clean Blog

+
+ A Clean Blog Theme by Start Bootstrap +
+
+
+
+
+ + +
+
+
+
${error!""} ${status!""}
+ <#list posts as post> +
+ +

+ ${post.title} +

+

+ <#if (post.post?length > 50) >${post.post?substring(0,50)} <#else> ${post.post} +

+
+ +
+
+ <#else> +

+ NO POSTS YET! +

+ + + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + diff --git a/vraptor/src/main/resources/templates/posts/add.ftl b/vraptor/src/main/resources/templates/posts/add.ftl new file mode 100644 index 0000000000..de036cea20 --- /dev/null +++ b/vraptor/src/main/resources/templates/posts/add.ftl @@ -0,0 +1,164 @@ + + + + + + + + + + + + Clean Blog - Contact + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Compose the Next Viral Message!

+
${error!""} ${status!""}
+ <#if errors??> + <#list errors as error> +
${error.category?upper_case}: ${error.message}
+ <#else> + + <#else> + +
+
+
+ + +

+
+
+
+
+ + +

+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + diff --git a/vraptor/src/main/resources/templates/view.ftl b/vraptor/src/main/resources/templates/view.ftl new file mode 100644 index 0000000000..96525cc93a --- /dev/null +++ b/vraptor/src/main/resources/templates/view.ftl @@ -0,0 +1,152 @@ + + + + + + + + + + + + Clean Blog - Sample Post + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

${post.title}

+ Posted by Start Bootstrap on ${post.createdAt!''} +
+
+
+
+
+ + +
+
+
+
+

+ ${post.post} +

+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vraptor/src/main/webapp/META-INF/MANIFEST.MF b/vraptor/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..254272e1c0 --- /dev/null +++ b/vraptor/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/vraptor/src/main/webapp/WEB-INF/jsp/index/index.jsp b/vraptor/src/main/webapp/WEB-INF/jsp/index/index.jsp new file mode 100644 index 0000000000..61efbb9e1d --- /dev/null +++ b/vraptor/src/main/webapp/WEB-INF/jsp/index/index.jsp @@ -0,0 +1,10 @@ + + + + +VRaptor Blank Project + + + It works!! JSP ${variable} ${linkTo[IndexController].index} + + \ No newline at end of file diff --git a/vraptor/src/main/webapp/WEB-INF/web.xml b/vraptor/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..f778a0e779 --- /dev/null +++ b/vraptor/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,19 @@ + + + + vraptor-blank-project + + + javax.servlet.jsp.jstl.fmt.localizationContext + messages + + + + org.jboss.weld.environment.servlet.Listener + + + \ No newline at end of file diff --git a/vraptor/src/main/webapp/css/clean-blog.css b/vraptor/src/main/webapp/css/clean-blog.css new file mode 100644 index 0000000000..04a94f0e0f --- /dev/null +++ b/vraptor/src/main/webapp/css/clean-blog.css @@ -0,0 +1,400 @@ +/*! + * Start Bootstrap - Clean Blog v3.3.7+1 (http://startbootstrap.com/template-overviews/clean-blog) + * Copyright 2013-2016 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) + */ +body { + font-family: 'Lora', 'Times New Roman', serif; + font-size: 20px; + color: #333333; +} +p { + line-height: 1.5; + margin: 30px 0; +} +p a { + text-decoration: underline; +} +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 800; +} +a { + color: #333333; +} +a:hover, +a:focus { + color: #0085A1; +} +a img:hover, +a img:focus { + cursor: zoom-in; +} +blockquote { + color: #777777; + font-style: italic; +} +hr.small { + max-width: 100px; + margin: 15px auto; + border-width: 4px; + border-color: white; +} +.navbar-custom { + position: absolute; + top: 0; + left: 0; + width: 100%; + z-index: 3; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; +} +.navbar-custom .navbar-brand { + font-weight: 800; +} +.navbar-custom .navbar-header .navbar-toggle { + color: #777777; + font-weight: 800; + text-transform: uppercase; + font-size: 12px; +} +.navbar-custom .nav li a { + text-transform: uppercase; + font-size: 12px; + font-weight: 800; + letter-spacing: 1px; +} +@media only screen and (min-width: 768px) { + .navbar-custom { + background: transparent; + border-bottom: 1px solid transparent; + } + .navbar-custom .navbar-brand { + color: white; + padding: 20px; + } + .navbar-custom .navbar-brand:hover, + .navbar-custom .navbar-brand:focus { + color: rgba(255, 255, 255, 0.8); + } + .navbar-custom .nav li a { + color: white; + padding: 20px; + } + .navbar-custom .nav li a:hover, + .navbar-custom .nav li a:focus { + color: rgba(255, 255, 255, 0.8); + } +} +@media only screen and (min-width: 1170px) { + .navbar-custom { + -webkit-transition: background-color 0.3s; + -moz-transition: background-color 0.3s; + transition: background-color 0.3s; + /* Force Hardware Acceleration in WebKit */ + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + } + .navbar-custom.is-fixed { + /* when the user scrolls down, we hide the header right above the viewport */ + position: fixed; + top: -61px; + background-color: rgba(255, 255, 255, 0.9); + border-bottom: 1px solid #f2f2f2; + -webkit-transition: -webkit-transform 0.3s; + -moz-transition: -moz-transform 0.3s; + transition: transform 0.3s; + } + .navbar-custom.is-fixed .navbar-brand { + color: #333333; + } + .navbar-custom.is-fixed .navbar-brand:hover, + .navbar-custom.is-fixed .navbar-brand:focus { + color: #0085A1; + } + .navbar-custom.is-fixed .nav li a { + color: #333333; + } + .navbar-custom.is-fixed .nav li a:hover, + .navbar-custom.is-fixed .nav li a:focus { + color: #0085A1; + } + .navbar-custom.is-visible { + /* if the user changes the scrolling direction, we show the header */ + -webkit-transform: translate3d(0, 100%, 0); + -moz-transform: translate3d(0, 100%, 0); + -ms-transform: translate3d(0, 100%, 0); + -o-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +.intro-header { + background-color: #777777; + background: no-repeat center center; + background-attachment: scroll; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + -o-background-size: cover; + margin-bottom: 50px; +} +.intro-header .site-heading, +.intro-header .post-heading, +.intro-header .page-heading { + padding: 100px 0 50px; + color: white; +} +@media only screen and (min-width: 768px) { + .intro-header .site-heading, + .intro-header .post-heading, + .intro-header .page-heading { + padding: 150px 0; + } +} +.intro-header .site-heading, +.intro-header .page-heading { + text-align: center; +} +.intro-header .site-heading h1, +.intro-header .page-heading h1 { + margin-top: 0; + font-size: 50px; +} +.intro-header .site-heading .subheading, +.intro-header .page-heading .subheading { + font-size: 24px; + line-height: 1.1; + display: block; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 300; + margin: 10px 0 0; +} +@media only screen and (min-width: 768px) { + .intro-header .site-heading h1, + .intro-header .page-heading h1 { + font-size: 80px; + } +} +.intro-header .post-heading h1 { + font-size: 35px; +} +.intro-header .post-heading .subheading, +.intro-header .post-heading .meta { + line-height: 1.1; + display: block; +} +.intro-header .post-heading .subheading { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 24px; + margin: 10px 0 30px; + font-weight: 600; +} +.intro-header .post-heading .meta { + font-family: 'Lora', 'Times New Roman', serif; + font-style: italic; + font-weight: 300; + font-size: 20px; +} +.intro-header .post-heading .meta a { + color: white; +} +@media only screen and (min-width: 768px) { + .intro-header .post-heading h1 { + font-size: 55px; + } + .intro-header .post-heading .subheading { + font-size: 30px; + } +} +.post-preview > a { + color: #333333; +} +.post-preview > a:hover, +.post-preview > a:focus { + text-decoration: none; + color: #0085A1; +} +.post-preview > a > .post-title { + font-size: 30px; + margin-top: 30px; + margin-bottom: 10px; +} +.post-preview > a > .post-subtitle { + margin: 0; + font-weight: 300; + margin-bottom: 10px; +} +.post-preview > .post-meta { + color: #777777; + font-size: 18px; + font-style: italic; + margin-top: 0; +} +.post-preview > .post-meta > a { + text-decoration: none; + color: #333333; +} +.post-preview > .post-meta > a:hover, +.post-preview > .post-meta > a:focus { + color: #0085A1; + text-decoration: underline; +} +@media only screen and (min-width: 768px) { + .post-preview > a > .post-title { + font-size: 36px; + } +} +.section-heading { + font-size: 36px; + margin-top: 60px; + font-weight: 700; +} +.caption { + text-align: center; + font-size: 14px; + padding: 10px; + font-style: italic; + margin: 0; + display: block; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; +} +footer { + padding: 50px 0 65px; +} +footer .list-inline { + margin: 0; + padding: 0; +} +footer .copyright { + font-size: 14px; + text-align: center; + margin-bottom: 0; +} +.floating-label-form-group { + font-size: 14px; + position: relative; + margin-bottom: 0; + padding-bottom: 0.5em; + border-bottom: 1px solid #eeeeee; +} +.floating-label-form-group input, +.floating-label-form-group textarea { + z-index: 1; + position: relative; + padding-right: 0; + padding-left: 0; + border: none; + border-radius: 0; + font-size: 1.5em; + background: none; + box-shadow: none !important; + resize: none; +} +.floating-label-form-group label { + display: block; + z-index: 0; + position: relative; + top: 2em; + margin: 0; + font-size: 0.85em; + line-height: 1.764705882em; + vertical-align: middle; + vertical-align: baseline; + opacity: 0; + -webkit-transition: top 0.3s ease,opacity 0.3s ease; + -moz-transition: top 0.3s ease,opacity 0.3s ease; + -ms-transition: top 0.3s ease,opacity 0.3s ease; + transition: top 0.3s ease,opacity 0.3s ease; +} +.floating-label-form-group::not(:first-child) { + padding-left: 14px; + border-left: 1px solid #eeeeee; +} +.floating-label-form-group-with-value label { + top: 0; + opacity: 1; +} +.floating-label-form-group-with-focus label { + color: #0085A1; +} +form .row:first-child .floating-label-form-group { + border-top: 1px solid #eeeeee; +} +.btn { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + text-transform: uppercase; + font-size: 14px; + font-weight: 800; + letter-spacing: 1px; + border-radius: 0; + padding: 15px 25px; +} +.btn-lg { + font-size: 16px; + padding: 25px 35px; +} +.btn-default:hover, +.btn-default:focus { + background-color: #0085A1; + border: 1px solid #0085A1; + color: white; +} +.pager { + margin: 20px 0 0; +} +.pager li > a, +.pager li > span { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + text-transform: uppercase; + font-size: 14px; + font-weight: 800; + letter-spacing: 1px; + padding: 15px 25px; + background-color: white; + border-radius: 0; +} +.pager li > a:hover, +.pager li > a:focus { + color: white; + background-color: #0085A1; + border: 1px solid #0085A1; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777777; + background-color: #333333; + cursor: not-allowed; +} +::-moz-selection { + color: white; + text-shadow: none; + background: #0085A1; +} +::selection { + color: white; + text-shadow: none; + background: #0085A1; +} +img::selection { + color: white; + background: transparent; +} +img::-moz-selection { + color: white; + background: transparent; +} +body { + -webkit-tap-highlight-color: #0085A1; +} diff --git a/vraptor/src/main/webapp/css/clean-blog.min.css b/vraptor/src/main/webapp/css/clean-blog.min.css new file mode 100644 index 0000000000..faa3794436 --- /dev/null +++ b/vraptor/src/main/webapp/css/clean-blog.min.css @@ -0,0 +1,5 @@ +/*! + * Start Bootstrap - Clean Blog v3.3.7+1 (http://startbootstrap.com/template-overviews/clean-blog) + * Copyright 2013-2016 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) + */a,body{color:#333}.navbar-custom .nav li a,.navbar-custom .navbar-brand,h1,h2,h3,h4,h5,h6{font-weight:800}.caption,.intro-header .page-heading,.intro-header .site-heading,footer .copyright{text-align:center}body{font-family:Lora,'Times New Roman',serif;font-size:20px;-webkit-tap-highlight-color:#0085A1}.intro-header .page-heading .subheading,.intro-header .post-heading .subheading,.intro-header .site-heading .subheading,.navbar-custom,h1,h2,h3,h4,h5,h6{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif}p{line-height:1.5;margin:30px 0}p a{text-decoration:underline}a:focus,a:hover{color:#0085A1}a img:focus,a img:hover{cursor:zoom-in}blockquote{color:#777;font-style:italic}hr.small{max-width:100px;margin:15px auto;border-width:4px;border-color:#fff}.navbar-custom{position:absolute;top:0;left:0;width:100%;z-index:3}.navbar-custom .navbar-header .navbar-toggle{color:#777;font-weight:800;text-transform:uppercase;font-size:12px}.navbar-custom .nav li a{text-transform:uppercase;font-size:12px;letter-spacing:1px}@media only screen and (min-width:768px){.navbar-custom{background:0 0;border-bottom:1px solid transparent}.navbar-custom .navbar-brand{color:#fff;padding:20px}.navbar-custom .navbar-brand:focus,.navbar-custom .navbar-brand:hover{color:rgba(255,255,255,.8)}.navbar-custom .nav li a{color:#fff;padding:20px}.navbar-custom .nav li a:focus,.navbar-custom .nav li a:hover{color:rgba(255,255,255,.8)}}@media only screen and (min-width:1170px){.navbar-custom{-webkit-transition:background-color .3s;-moz-transition:background-color .3s;transition:background-color .3s;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.navbar-custom.is-fixed{position:fixed;top:-61px;background-color:rgba(255,255,255,.9);border-bottom:1px solid #f2f2f2;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;transition:transform .3s}.navbar-custom.is-fixed .navbar-brand{color:#333}.navbar-custom.is-fixed .navbar-brand:focus,.navbar-custom.is-fixed .navbar-brand:hover{color:#0085A1}.navbar-custom.is-fixed .nav li a{color:#333}.navbar-custom.is-fixed .nav li a:focus,.navbar-custom.is-fixed .nav li a:hover{color:#0085A1}.navbar-custom.is-visible{-webkit-transform:translate3d(0,100%,0);-moz-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);-o-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.intro-header{background:center center no-repeat;-webkit-background-size:cover;-moz-background-size:cover;background-size:cover;-o-background-size:cover;margin-bottom:50px}.intro-header .page-heading,.intro-header .post-heading,.intro-header .site-heading{padding:100px 0 50px;color:#fff}.intro-header .page-heading h1,.intro-header .site-heading h1{margin-top:0;font-size:50px}.intro-header .page-heading .subheading,.intro-header .site-heading .subheading{font-size:24px;line-height:1.1;display:block;font-weight:300;margin:10px 0 0}@media only screen and (min-width:768px){.intro-header .page-heading,.intro-header .post-heading,.intro-header .site-heading{padding:150px 0}.intro-header .page-heading h1,.intro-header .site-heading h1{font-size:80px}}.intro-header .post-heading h1{font-size:35px}.intro-header .post-heading .meta,.intro-header .post-heading .subheading{line-height:1.1;display:block}.intro-header .post-heading .subheading{font-size:24px;margin:10px 0 30px;font-weight:600}.intro-header .post-heading .meta{font-family:Lora,'Times New Roman',serif;font-style:italic;font-weight:300;font-size:20px}.intro-header .post-heading .meta a{color:#fff}@media only screen and (min-width:768px){.intro-header .post-heading h1{font-size:55px}.intro-header .post-heading .subheading{font-size:30px}}.post-preview>a{color:#333}.post-preview>a:focus,.post-preview>a:hover{text-decoration:none;color:#0085A1}.post-preview>a>.post-title{font-size:30px;margin-top:30px;margin-bottom:10px}.post-preview>a>.post-subtitle{margin:0 0 10px;font-weight:300}.post-preview>.post-meta{color:#777;font-size:18px;font-style:italic;margin-top:0}.post-preview>.post-meta>a{text-decoration:none;color:#333}.post-preview>.post-meta>a:focus,.post-preview>.post-meta>a:hover{color:#0085A1;text-decoration:underline}@media only screen and (min-width:768px){.post-preview>a>.post-title{font-size:36px}}.section-heading{font-size:36px;margin-top:60px;font-weight:700}.btn,.pager li>a,.pager li>span{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;text-transform:uppercase;font-weight:800;letter-spacing:1px}.caption{font-size:14px;padding:10px;font-style:italic;margin:0;display:block;border-bottom-right-radius:5px;border-bottom-left-radius:5px}footer{padding:50px 0 65px}footer .list-inline{margin:0;padding:0}footer .copyright{font-size:14px;margin-bottom:0}.floating-label-form-group{font-size:14px;position:relative;margin-bottom:0;padding-bottom:.5em;border-bottom:1px solid #eee}.floating-label-form-group input,.floating-label-form-group textarea{z-index:1;position:relative;padding-right:0;padding-left:0;border:none;border-radius:0;font-size:1.5em;background:0 0;box-shadow:none!important;resize:none}.floating-label-form-group label{display:block;z-index:0;position:relative;top:2em;margin:0;font-size:.85em;line-height:1.764705882em;vertical-align:middle;vertical-align:baseline;opacity:0;-webkit-transition:top .3s ease,opacity .3s ease;-moz-transition:top .3s ease,opacity .3s ease;-ms-transition:top .3s ease,opacity .3s ease;transition:top .3s ease,opacity .3s ease}.floating-label-form-group::not(:first-child){padding-left:14px;border-left:1px solid #eee}.floating-label-form-group-with-value label{top:0;opacity:1}.floating-label-form-group-with-focus label{color:#0085A1}form .row:first-child .floating-label-form-group{border-top:1px solid #eee}.btn{font-size:14px;border-radius:0;padding:15px 25px}.btn-lg{font-size:16px;padding:25px 35px}.btn-default:focus,.btn-default:hover{background-color:#0085A1;border:1px solid #0085A1;color:#fff}.pager{margin:20px 0 0}.pager li>a,.pager li>span{font-size:14px;padding:15px 25px;background-color:#fff;border-radius:0}.pager li>a:focus,.pager li>a:hover{color:#fff;background-color:#0085A1;border:1px solid #0085A1}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#333;cursor:not-allowed}::-moz-selection{color:#fff;text-shadow:none;background:#0085A1}::selection{color:#fff;text-shadow:none;background:#0085A1}img::selection{color:#fff;background:0 0}img::-moz-selection{color:#fff;background:0 0} \ No newline at end of file diff --git a/vraptor/src/main/webapp/img/about-bg.jpg b/vraptor/src/main/webapp/img/about-bg.jpg new file mode 100644 index 0000000000..af6d4d5cd1 Binary files /dev/null and b/vraptor/src/main/webapp/img/about-bg.jpg differ diff --git a/vraptor/src/main/webapp/img/contact-bg.jpg b/vraptor/src/main/webapp/img/contact-bg.jpg new file mode 100644 index 0000000000..9bf21a4e4b Binary files /dev/null and b/vraptor/src/main/webapp/img/contact-bg.jpg differ diff --git a/vraptor/src/main/webapp/img/home-bg.jpg b/vraptor/src/main/webapp/img/home-bg.jpg new file mode 100644 index 0000000000..a4d2108a3f Binary files /dev/null and b/vraptor/src/main/webapp/img/home-bg.jpg differ diff --git a/vraptor/src/main/webapp/img/post-bg.jpg b/vraptor/src/main/webapp/img/post-bg.jpg new file mode 100644 index 0000000000..21750a49b0 Binary files /dev/null and b/vraptor/src/main/webapp/img/post-bg.jpg differ diff --git a/vraptor/src/main/webapp/img/post-sample-image.jpg b/vraptor/src/main/webapp/img/post-sample-image.jpg new file mode 100644 index 0000000000..3fc4282987 Binary files /dev/null and b/vraptor/src/main/webapp/img/post-sample-image.jpg differ diff --git a/vraptor/src/main/webapp/js/clean-blog.js b/vraptor/src/main/webapp/js/clean-blog.js new file mode 100644 index 0000000000..26a60cce5f --- /dev/null +++ b/vraptor/src/main/webapp/js/clean-blog.js @@ -0,0 +1,40 @@ +// Floating label headings for the contact form +$(function() { + $("body").on("input propertychange", ".floating-label-form-group", function(e) { + $(this).toggleClass("floating-label-form-group-with-value", !!$(e.target).val()); + }).on("focus", ".floating-label-form-group", function() { + $(this).addClass("floating-label-form-group-with-focus"); + }).on("blur", ".floating-label-form-group", function() { + $(this).removeClass("floating-label-form-group-with-focus"); + }); +}); + +// Navigation Scripts to Show Header on Scroll-Up +jQuery(document).ready(function($) { + var MQL = 1170; + + //primary navigation slide-in effect + if ($(window).width() > MQL) { + var headerHeight = $('.navbar-custom').height(); + $(window).on('scroll', { + previousTop: 0 + }, + function() { + var currentTop = $(window).scrollTop(); + //check if user is scrolling up + if (currentTop < this.previousTop) { + //if scrolling up... + if (currentTop > 0 && $('.navbar-custom').hasClass('is-fixed')) { + $('.navbar-custom').addClass('is-visible'); + } else { + $('.navbar-custom').removeClass('is-visible is-fixed'); + } + } else if (currentTop > this.previousTop) { + //if scrolling down... + $('.navbar-custom').removeClass('is-visible'); + if (currentTop > headerHeight && !$('.navbar-custom').hasClass('is-fixed')) $('.navbar-custom').addClass('is-fixed'); + } + this.previousTop = currentTop; + }); + } +}); diff --git a/vraptor/src/main/webapp/js/clean-blog.min.js b/vraptor/src/main/webapp/js/clean-blog.min.js new file mode 100644 index 0000000000..852db7e938 --- /dev/null +++ b/vraptor/src/main/webapp/js/clean-blog.min.js @@ -0,0 +1,6 @@ +/*! + * Start Bootstrap - Clean Blog v3.3.7+1 (http://startbootstrap.com/template-overviews/clean-blog) + * Copyright 2013-2016 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) + */ +$(function(){$("body").on("input propertychange",".floating-label-form-group",function(o){$(this).toggleClass("floating-label-form-group-with-value",!!$(o.target).val())}).on("focus",".floating-label-form-group",function(){$(this).addClass("floating-label-form-group-with-focus")}).on("blur",".floating-label-form-group",function(){$(this).removeClass("floating-label-form-group-with-focus")})}),jQuery(document).ready(function(o){var s=1170;if(o(window).width()>s){var i=o(".navbar-custom").height();o(window).on("scroll",{previousTop:0},function(){var s=o(window).scrollTop();s0&&o(".navbar-custom").hasClass("is-fixed")?o(".navbar-custom").addClass("is-visible"):o(".navbar-custom").removeClass("is-visible is-fixed"):s>this.previousTop&&(o(".navbar-custom").removeClass("is-visible"),s>i&&!o(".navbar-custom").hasClass("is-fixed")&&o(".navbar-custom").addClass("is-fixed")),this.previousTop=s})}}); \ No newline at end of file diff --git a/vraptor/src/main/webapp/js/contact_me.js b/vraptor/src/main/webapp/js/contact_me.js new file mode 100644 index 0000000000..c3d8ecce26 --- /dev/null +++ b/vraptor/src/main/webapp/js/contact_me.js @@ -0,0 +1,72 @@ +// Contact Form Scripts + +$(function() { + + $("#contactForm input,#contactForm textarea").jqBootstrapValidation({ + preventSubmit: true, + submitError: function($form, event, errors) { + // additional error messages or events + }, + submitSuccess: function($form, event) { + event.preventDefault(); // prevent default submit behaviour + // get values from FORM + var name = $("input#name").val(); + var email = $("input#email").val(); + var phone = $("input#phone").val(); + var message = $("textarea#message").val(); + var firstName = name; // For Success/Failure Message + // Check for white space in name for Success/Fail message + if (firstName.indexOf(' ') >= 0) { + firstName = name.split(' ').slice(0, -1).join(' '); + } + $.ajax({ + url: "././mail/contact_me.php", + type: "POST", + data: { + name: name, + phone: phone, + email: email, + message: message + }, + cache: false, + success: function() { + // Success message + $('#success').html("
"); + $('#success > .alert-success').html(""); + $('#success > .alert-success') + .append("Your message has been sent. "); + $('#success > .alert-success') + .append('
'); + + //clear all fields + $('#contactForm').trigger("reset"); + }, + error: function() { + // Fail message + $('#success').html("
"); + $('#success > .alert-danger').html(""); + $('#success > .alert-danger').append("Sorry " + firstName + ", it seems that my mail server is not responding. Please try again later!"); + $('#success > .alert-danger').append('
'); + //clear all fields + $('#contactForm').trigger("reset"); + }, + }); + }, + filter: function() { + return $(this).is(":visible"); + }, + }); + + $("a[data-toggle=\"tab\"]").click(function(e) { + e.preventDefault(); + $(this).tab("show"); + }); +}); + + +/*When clicking on Full hide fail/success boxes */ +$('#name').focus(function() { + $('#success').html(''); +}); diff --git a/vraptor/src/main/webapp/js/jqBootstrapValidation.js b/vraptor/src/main/webapp/js/jqBootstrapValidation.js new file mode 100644 index 0000000000..7b3b922251 --- /dev/null +++ b/vraptor/src/main/webapp/js/jqBootstrapValidation.js @@ -0,0 +1,912 @@ +/* jqBootstrapValidation + * A plugin for automating validation on Twitter Bootstrap formatted forms. + * + * v1.3.6 + * + * License: MIT - see LICENSE file + * + * http://ReactiveRaven.github.com/jqBootstrapValidation/ + */ + +(function( $ ){ + + var createdElements = []; + + var defaults = { + options: { + prependExistingHelpBlock: false, + sniffHtml: true, // sniff for 'required', 'maxlength', etc + preventSubmit: true, // stop the form submit event from firing if validation fails + submitError: false, // function called if there is an error when trying to submit + submitSuccess: false, // function called just before a successful submit event is sent to the server + semanticallyStrict: false, // set to true to tidy up generated HTML output + autoAdd: { + helpBlocks: true + }, + filter: function () { + // return $(this).is(":visible"); // only validate elements you can see + return true; // validate everything + } + }, + methods: { + init : function( options ) { + + var settings = $.extend(true, {}, defaults); + + settings.options = $.extend(true, settings.options, options); + + var $siblingElements = this; + + var uniqueForms = $.unique( + $siblingElements.map( function () { + return $(this).parents("form")[0]; + }).toArray() + ); + + $(uniqueForms).bind("submit", function (e) { + var $form = $(this); + var warningsFound = 0; + var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter); + $inputs.trigger("submit.validation").trigger("validationLostFocus.validation"); + + $inputs.each(function (i, el) { + var $this = $(el), + $controlGroup = $this.parents(".form-group").first(); + if ( + $controlGroup.hasClass("warning") + ) { + $controlGroup.removeClass("warning").addClass("error"); + warningsFound++; + } + }); + + $inputs.trigger("validationLostFocus.validation"); + + if (warningsFound) { + if (settings.options.preventSubmit) { + e.preventDefault(); + } + $form.addClass("error"); + if ($.isFunction(settings.options.submitError)) { + settings.options.submitError($form, e, $inputs.jqBootstrapValidation("collectErrors", true)); + } + } else { + $form.removeClass("error"); + if ($.isFunction(settings.options.submitSuccess)) { + settings.options.submitSuccess($form, e); + } + } + }); + + return this.each(function(){ + + // Get references to everything we're interested in + var $this = $(this), + $controlGroup = $this.parents(".form-group").first(), + $helpBlock = $controlGroup.find(".help-block").first(), + $form = $this.parents("form").first(), + validatorNames = []; + + // create message container if not exists + if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) { + $helpBlock = $('
'); + $controlGroup.find('.controls').append($helpBlock); + createdElements.push($helpBlock[0]); + } + + // ============================================================= + // SNIFF HTML FOR VALIDATORS + // ============================================================= + + // *snort sniff snuffle* + + if (settings.options.sniffHtml) { + var message = ""; + // --------------------------------------------------------- + // PATTERN + // --------------------------------------------------------- + if ($this.attr("pattern") !== undefined) { + message = "Not in the expected format"; + if ($this.data("validationPatternMessage")) { + message = $this.data("validationPatternMessage"); + } + $this.data("validationPatternMessage", message); + $this.data("validationPatternRegex", $this.attr("pattern")); + } + // --------------------------------------------------------- + // MAX + // --------------------------------------------------------- + if ($this.attr("max") !== undefined || $this.attr("aria-valuemax") !== undefined) { + var max = ($this.attr("max") !== undefined ? $this.attr("max") : $this.attr("aria-valuemax")); + message = "Too high: Maximum of '" + max + "'"; + if ($this.data("validationMaxMessage")) { + message = $this.data("validationMaxMessage"); + } + $this.data("validationMaxMessage", message); + $this.data("validationMaxMax", max); + } + // --------------------------------------------------------- + // MIN + // --------------------------------------------------------- + if ($this.attr("min") !== undefined || $this.attr("aria-valuemin") !== undefined) { + var min = ($this.attr("min") !== undefined ? $this.attr("min") : $this.attr("aria-valuemin")); + message = "Too low: Minimum of '" + min + "'"; + if ($this.data("validationMinMessage")) { + message = $this.data("validationMinMessage"); + } + $this.data("validationMinMessage", message); + $this.data("validationMinMin", min); + } + // --------------------------------------------------------- + // MAXLENGTH + // --------------------------------------------------------- + if ($this.attr("maxlength") !== undefined) { + message = "Too long: Maximum of '" + $this.attr("maxlength") + "' characters"; + if ($this.data("validationMaxlengthMessage")) { + message = $this.data("validationMaxlengthMessage"); + } + $this.data("validationMaxlengthMessage", message); + $this.data("validationMaxlengthMaxlength", $this.attr("maxlength")); + } + // --------------------------------------------------------- + // MINLENGTH + // --------------------------------------------------------- + if ($this.attr("minlength") !== undefined) { + message = "Too short: Minimum of '" + $this.attr("minlength") + "' characters"; + if ($this.data("validationMinlengthMessage")) { + message = $this.data("validationMinlengthMessage"); + } + $this.data("validationMinlengthMessage", message); + $this.data("validationMinlengthMinlength", $this.attr("minlength")); + } + // --------------------------------------------------------- + // REQUIRED + // --------------------------------------------------------- + if ($this.attr("required") !== undefined || $this.attr("aria-required") !== undefined) { + message = settings.builtInValidators.required.message; + if ($this.data("validationRequiredMessage")) { + message = $this.data("validationRequiredMessage"); + } + $this.data("validationRequiredMessage", message); + } + // --------------------------------------------------------- + // NUMBER + // --------------------------------------------------------- + if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "number") { + message = settings.builtInValidators.number.message; + if ($this.data("validationNumberMessage")) { + message = $this.data("validationNumberMessage"); + } + $this.data("validationNumberMessage", message); + } + // --------------------------------------------------------- + // EMAIL + // --------------------------------------------------------- + if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "email") { + message = "Not a valid email address"; + if ($this.data("validationValidemailMessage")) { + message = $this.data("validationValidemailMessage"); + } else if ($this.data("validationEmailMessage")) { + message = $this.data("validationEmailMessage"); + } + $this.data("validationValidemailMessage", message); + } + // --------------------------------------------------------- + // MINCHECKED + // --------------------------------------------------------- + if ($this.attr("minchecked") !== undefined) { + message = "Not enough options checked; Minimum of '" + $this.attr("minchecked") + "' required"; + if ($this.data("validationMincheckedMessage")) { + message = $this.data("validationMincheckedMessage"); + } + $this.data("validationMincheckedMessage", message); + $this.data("validationMincheckedMinchecked", $this.attr("minchecked")); + } + // --------------------------------------------------------- + // MAXCHECKED + // --------------------------------------------------------- + if ($this.attr("maxchecked") !== undefined) { + message = "Too many options checked; Maximum of '" + $this.attr("maxchecked") + "' required"; + if ($this.data("validationMaxcheckedMessage")) { + message = $this.data("validationMaxcheckedMessage"); + } + $this.data("validationMaxcheckedMessage", message); + $this.data("validationMaxcheckedMaxchecked", $this.attr("maxchecked")); + } + } + + // ============================================================= + // COLLECT VALIDATOR NAMES + // ============================================================= + + // Get named validators + if ($this.data("validation") !== undefined) { + validatorNames = $this.data("validation").split(","); + } + + // Get extra ones defined on the element's data attributes + $.each($this.data(), function (i, el) { + var parts = i.replace(/([A-Z])/g, ",$1").split(","); + if (parts[0] === "validation" && parts[1]) { + validatorNames.push(parts[1]); + } + }); + + // ============================================================= + // NORMALISE VALIDATOR NAMES + // ============================================================= + + var validatorNamesToInspect = validatorNames; + var newValidatorNamesToInspect = []; + + do // repeatedly expand 'shortcut' validators into their real validators + { + // Uppercase only the first letter of each name + $.each(validatorNames, function (i, el) { + validatorNames[i] = formatValidatorName(el); + }); + + // Remove duplicate validator names + validatorNames = $.unique(validatorNames); + + // Pull out the new validator names from each shortcut + newValidatorNamesToInspect = []; + $.each(validatorNamesToInspect, function(i, el) { + if ($this.data("validation" + el + "Shortcut") !== undefined) { + // Are these custom validators? + // Pull them out! + $.each($this.data("validation" + el + "Shortcut").split(","), function(i2, el2) { + newValidatorNamesToInspect.push(el2); + }); + } else if (settings.builtInValidators[el.toLowerCase()]) { + // Is this a recognised built-in? + // Pull it out! + var validator = settings.builtInValidators[el.toLowerCase()]; + if (validator.type.toLowerCase() === "shortcut") { + $.each(validator.shortcut.split(","), function (i, el) { + el = formatValidatorName(el); + newValidatorNamesToInspect.push(el); + validatorNames.push(el); + }); + } + } + }); + + validatorNamesToInspect = newValidatorNamesToInspect; + + } while (validatorNamesToInspect.length > 0) + + // ============================================================= + // SET UP VALIDATOR ARRAYS + // ============================================================= + + var validators = {}; + + $.each(validatorNames, function (i, el) { + // Set up the 'override' message + var message = $this.data("validation" + el + "Message"); + var hasOverrideMessage = (message !== undefined); + var foundValidator = false; + message = + ( + message + ? message + : "'" + el + "' validation failed " + ) + ; + + $.each( + settings.validatorTypes, + function (validatorType, validatorTemplate) { + if (validators[validatorType] === undefined) { + validators[validatorType] = []; + } + if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) { + validators[validatorType].push( + $.extend( + true, + { + name: formatValidatorName(validatorTemplate.name), + message: message + }, + validatorTemplate.init($this, el) + ) + ); + foundValidator = true; + } + } + ); + + if (!foundValidator && settings.builtInValidators[el.toLowerCase()]) { + + var validator = $.extend(true, {}, settings.builtInValidators[el.toLowerCase()]); + if (hasOverrideMessage) { + validator.message = message; + } + var validatorType = validator.type.toLowerCase(); + + if (validatorType === "shortcut") { + foundValidator = true; + } else { + $.each( + settings.validatorTypes, + function (validatorTemplateType, validatorTemplate) { + if (validators[validatorTemplateType] === undefined) { + validators[validatorTemplateType] = []; + } + if (!foundValidator && validatorType === validatorTemplateType.toLowerCase()) { + $this.data("validation" + el + formatValidatorName(validatorTemplate.name), validator[validatorTemplate.name.toLowerCase()]); + validators[validatorType].push( + $.extend( + validator, + validatorTemplate.init($this, el) + ) + ); + foundValidator = true; + } + } + ); + } + } + + if (! foundValidator) { + $.error("Cannot find validation info for '" + el + "'"); + } + }); + + // ============================================================= + // STORE FALLBACK VALUES + // ============================================================= + + $helpBlock.data( + "original-contents", + ( + $helpBlock.data("original-contents") + ? $helpBlock.data("original-contents") + : $helpBlock.html() + ) + ); + + $helpBlock.data( + "original-role", + ( + $helpBlock.data("original-role") + ? $helpBlock.data("original-role") + : $helpBlock.attr("role") + ) + ); + + $controlGroup.data( + "original-classes", + ( + $controlGroup.data("original-clases") + ? $controlGroup.data("original-classes") + : $controlGroup.attr("class") + ) + ); + + $this.data( + "original-aria-invalid", + ( + $this.data("original-aria-invalid") + ? $this.data("original-aria-invalid") + : $this.attr("aria-invalid") + ) + ); + + // ============================================================= + // VALIDATION + // ============================================================= + + $this.bind( + "validation.validation", + function (event, params) { + + var value = getValue($this); + + // Get a list of the errors to apply + var errorsFound = []; + + $.each(validators, function (validatorType, validatorTypeArray) { + if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) { + $.each(validatorTypeArray, function (i, validator) { + if (settings.validatorTypes[validatorType].validate($this, value, validator)) { + errorsFound.push(validator.message); + } + }); + } + }); + + return errorsFound; + } + ); + + $this.bind( + "getValidators.validation", + function () { + return validators; + } + ); + + // ============================================================= + // WATCH FOR CHANGES + // ============================================================= + $this.bind( + "submit.validation", + function () { + return $this.triggerHandler("change.validation", {submitting: true}); + } + ); + $this.bind( + [ + "keyup", + "focus", + "blur", + "click", + "keydown", + "keypress", + "change" + ].join(".validation ") + ".validation", + function (e, params) { + + var value = getValue($this); + + var errorsFound = []; + + $controlGroup.find("input,textarea,select").each(function (i, el) { + var oldCount = errorsFound.length; + $.each($(el).triggerHandler("validation.validation", params), function (j, message) { + errorsFound.push(message); + }); + if (errorsFound.length > oldCount) { + $(el).attr("aria-invalid", "true"); + } else { + var original = $this.data("original-aria-invalid"); + $(el).attr("aria-invalid", (original !== undefined ? original : false)); + } + }); + + $form.find("input,select,textarea").not($this).not("[name=\"" + $this.attr("name") + "\"]").trigger("validationLostFocus.validation"); + + errorsFound = $.unique(errorsFound.sort()); + + // Were there any errors? + if (errorsFound.length) { + // Better flag it up as a warning. + $controlGroup.removeClass("success error").addClass("warning"); + + // How many errors did we find? + if (settings.options.semanticallyStrict && errorsFound.length === 1) { + // Only one? Being strict? Just output it. + $helpBlock.html(errorsFound[0] + + ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" )); + } else { + // Multiple? Being sloppy? Glue them together into an UL. + $helpBlock.html("
  • " + errorsFound.join("
  • ") + "
" + + ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" )); + } + } else { + $controlGroup.removeClass("warning error success"); + if (value.length > 0) { + $controlGroup.addClass("success"); + } + $helpBlock.html($helpBlock.data("original-contents")); + } + + if (e.type === "blur") { + $controlGroup.removeClass("success"); + } + } + ); + $this.bind("validationLostFocus.validation", function () { + $controlGroup.removeClass("success"); + }); + }); + }, + destroy : function( ) { + + return this.each( + function() { + + var + $this = $(this), + $controlGroup = $this.parents(".form-group").first(), + $helpBlock = $controlGroup.find(".help-block").first(); + + // remove our events + $this.unbind('.validation'); // events are namespaced. + // reset help text + $helpBlock.html($helpBlock.data("original-contents")); + // reset classes + $controlGroup.attr("class", $controlGroup.data("original-classes")); + // reset aria + $this.attr("aria-invalid", $this.data("original-aria-invalid")); + // reset role + $helpBlock.attr("role", $this.data("original-role")); + // remove all elements we created + if (createdElements.indexOf($helpBlock[0]) > -1) { + $helpBlock.remove(); + } + + } + ); + + }, + collectErrors : function(includeEmpty) { + + var errorMessages = {}; + this.each(function (i, el) { + var $el = $(el); + var name = $el.attr("name"); + var errors = $el.triggerHandler("validation.validation", {includeEmpty: true}); + errorMessages[name] = $.extend(true, errors, errorMessages[name]); + }); + + $.each(errorMessages, function (i, el) { + if (el.length === 0) { + delete errorMessages[i]; + } + }); + + return errorMessages; + + }, + hasErrors: function() { + + var errorMessages = []; + + this.each(function (i, el) { + errorMessages = errorMessages.concat( + $(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", {submitting: true}) : [] + ); + }); + + return (errorMessages.length > 0); + }, + override : function (newDefaults) { + defaults = $.extend(true, defaults, newDefaults); + } + }, + validatorTypes: { + callback: { + name: "callback", + init: function ($this, name) { + return { + validatorName: name, + callback: $this.data("validation" + name + "Callback"), + lastValue: $this.val(), + lastValid: true, + lastFinished: true + }; + }, + validate: function ($this, value, validator) { + if (validator.lastValue === value && validator.lastFinished) { + return !validator.lastValid; + } + + if (validator.lastFinished === true) + { + validator.lastValue = value; + validator.lastValid = true; + validator.lastFinished = false; + + var rrjqbvValidator = validator; + var rrjqbvThis = $this; + executeFunctionByName( + validator.callback, + window, + $this, + value, + function (data) { + if (rrjqbvValidator.lastValue === data.value) { + rrjqbvValidator.lastValid = data.valid; + if (data.message) { + rrjqbvValidator.message = data.message; + } + rrjqbvValidator.lastFinished = true; + rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function () { + rrjqbvThis.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + } + ); + } + + return false; + + } + }, + ajax: { + name: "ajax", + init: function ($this, name) { + return { + validatorName: name, + url: $this.data("validation" + name + "Ajax"), + lastValue: $this.val(), + lastValid: true, + lastFinished: true + }; + }, + validate: function ($this, value, validator) { + if (""+validator.lastValue === ""+value && validator.lastFinished === true) { + return validator.lastValid === false; + } + + if (validator.lastFinished === true) + { + validator.lastValue = value; + validator.lastValid = true; + validator.lastFinished = false; + $.ajax({ + url: validator.url, + data: "value=" + value + "&field=" + $this.attr("name"), + dataType: "json", + success: function (data) { + if (""+validator.lastValue === ""+data.value) { + validator.lastValid = !!(data.valid); + if (data.message) { + validator.message = data.message; + } + validator.lastFinished = true; + $this.data("validation" + validator.validatorName + "Message", validator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function () { + $this.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + }, + failure: function () { + validator.lastValid = true; + validator.message = "ajax call failed"; + validator.lastFinished = true; + $this.data("validation" + validator.validatorName + "Message", validator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function () { + $this.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + }); + } + + return false; + + } + }, + regex: { + name: "regex", + init: function ($this, name) { + return {regex: regexFromString($this.data("validation" + name + "Regex"))}; + }, + validate: function ($this, value, validator) { + return (!validator.regex.test(value) && ! validator.negative) + || (validator.regex.test(value) && validator.negative); + } + }, + required: { + name: "required", + init: function ($this, name) { + return {}; + }, + validate: function ($this, value, validator) { + return !!(value.length === 0 && ! validator.negative) + || !!(value.length > 0 && validator.negative); + }, + blockSubmit: true + }, + match: { + name: "match", + init: function ($this, name) { + var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first(); + element.bind("validation.validation", function () { + $this.trigger("change.validation", {submitting: true}); + }); + return {"element": element}; + }, + validate: function ($this, value, validator) { + return (value !== validator.element.val() && ! validator.negative) + || (value === validator.element.val() && validator.negative); + }, + blockSubmit: true + }, + max: { + name: "max", + init: function ($this, name) { + return {max: $this.data("validation" + name + "Max")}; + }, + validate: function ($this, value, validator) { + return (parseFloat(value, 10) > parseFloat(validator.max, 10) && ! validator.negative) + || (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative); + } + }, + min: { + name: "min", + init: function ($this, name) { + return {min: $this.data("validation" + name + "Min")}; + }, + validate: function ($this, value, validator) { + return (parseFloat(value) < parseFloat(validator.min) && ! validator.negative) + || (parseFloat(value) >= parseFloat(validator.min) && validator.negative); + } + }, + maxlength: { + name: "maxlength", + init: function ($this, name) { + return {maxlength: $this.data("validation" + name + "Maxlength")}; + }, + validate: function ($this, value, validator) { + return ((value.length > validator.maxlength) && ! validator.negative) + || ((value.length <= validator.maxlength) && validator.negative); + } + }, + minlength: { + name: "minlength", + init: function ($this, name) { + return {minlength: $this.data("validation" + name + "Minlength")}; + }, + validate: function ($this, value, validator) { + return ((value.length < validator.minlength) && ! validator.negative) + || ((value.length >= validator.minlength) && validator.negative); + } + }, + maxchecked: { + name: "maxchecked", + init: function ($this, name) { + var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); + elements.bind("click.validation", function () { + $this.trigger("change.validation", {includeEmpty: true}); + }); + return {maxchecked: $this.data("validation" + name + "Maxchecked"), elements: elements}; + }, + validate: function ($this, value, validator) { + return (validator.elements.filter(":checked").length > validator.maxchecked && ! validator.negative) + || (validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative); + }, + blockSubmit: true + }, + minchecked: { + name: "minchecked", + init: function ($this, name) { + var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); + elements.bind("click.validation", function () { + $this.trigger("change.validation", {includeEmpty: true}); + }); + return {minchecked: $this.data("validation" + name + "Minchecked"), elements: elements}; + }, + validate: function ($this, value, validator) { + return (validator.elements.filter(":checked").length < validator.minchecked && ! validator.negative) + || (validator.elements.filter(":checked").length >= validator.minchecked && validator.negative); + }, + blockSubmit: true + } + }, + builtInValidators: { + email: { + name: "Email", + type: "shortcut", + shortcut: "validemail" + }, + validemail: { + name: "Validemail", + type: "regex", + regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}", + message: "Not a valid email address" + }, + passwordagain: { + name: "Passwordagain", + type: "match", + match: "password", + message: "Does not match the given password" + }, + positive: { + name: "Positive", + type: "shortcut", + shortcut: "number,positivenumber" + }, + negative: { + name: "Negative", + type: "shortcut", + shortcut: "number,negativenumber" + }, + number: { + name: "Number", + type: "regex", + regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?", + message: "Must be a number" + }, + integer: { + name: "Integer", + type: "regex", + regex: "[+-]?\\\d+", + message: "No decimal places allowed" + }, + positivenumber: { + name: "Positivenumber", + type: "min", + min: 0, + message: "Must be a positive number" + }, + negativenumber: { + name: "Negativenumber", + type: "max", + max: 0, + message: "Must be a negative number" + }, + required: { + name: "Required", + type: "required", + message: "This is required" + }, + checkone: { + name: "Checkone", + type: "minchecked", + minchecked: 1, + message: "Check at least one option" + } + } + }; + + var formatValidatorName = function (name) { + return name + .toLowerCase() + .replace( + /(^|\s)([a-z])/g , + function(m,p1,p2) { + return p1+p2.toUpperCase(); + } + ) + ; + }; + + var getValue = function ($this) { + // Extract the value we're talking about + var value = $this.val(); + var type = $this.attr("type"); + if (type === "checkbox") { + value = ($this.is(":checked") ? value : ""); + } + if (type === "radio") { + value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : ""); + } + return value; + }; + + function regexFromString(inputstring) { + return new RegExp("^" + inputstring + "$"); + } + + /** + * Thanks to Jason Bunting via StackOverflow.com + * + * http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910 + * Short link: http://tinyurl.com/executeFunctionByName + **/ + function executeFunctionByName(functionName, context /*, args*/) { + var args = Array.prototype.slice.call(arguments).splice(2); + var namespaces = functionName.split("."); + var func = namespaces.pop(); + for(var i = 0; i < namespaces.length; i++) { + context = context[namespaces[i]]; + } + return context[func].apply(this, args); + } + + $.fn.jqBootstrapValidation = function( method ) { + + if ( defaults.methods[method] ) { + return defaults.methods[method].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof method === 'object' || ! method ) { + return defaults.methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + method + ' does not exist on jQuery.jqBootstrapValidation' ); + return null; + } + + }; + + $.jqBootstrapValidation = function (options) { + $(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this,arguments); + }; + +})( jQuery ); diff --git a/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.css b/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.css new file mode 100644 index 0000000000..6167622cec --- /dev/null +++ b/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.css @@ -0,0 +1,6757 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\002a"; +} +.glyphicon-plus:before { + content: "\002b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-btc:before { + content: "\e227"; +} +.glyphicon-xbt:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-jpy:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-rub:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover, +a.text-primary:focus { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover, +a.text-success:focus { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover, +a.text-info:focus { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover, +a.text-warning:focus { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover, +a.text-danger:focus { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:focus, +.btn-default.focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; +} +.btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:focus, +.btn-primary.focus { + color: #fff; + background-color: #286090; + border-color: #122b40; +} +.btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active:hover, +.btn-primary.active:hover, +.open > .dropdown-toggle.btn-primary:hover, +.btn-primary:active:focus, +.btn-primary.active:focus, +.open > .dropdown-toggle.btn-primary:focus, +.btn-primary:active.focus, +.btn-primary.active.focus, +.open > .dropdown-toggle.btn-primary.focus { + color: #fff; + background-color: #204d74; + border-color: #122b40; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:focus, +.btn-success.focus { + color: #fff; + background-color: #449d44; + border-color: #255625; +} +.btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active:hover, +.btn-success.active:hover, +.open > .dropdown-toggle.btn-success:hover, +.btn-success:active:focus, +.btn-success.active:focus, +.open > .dropdown-toggle.btn-success:focus, +.btn-success:active.focus, +.btn-success.active.focus, +.open > .dropdown-toggle.btn-success.focus { + color: #fff; + background-color: #398439; + border-color: #255625; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:focus, +.btn-info.focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; +} +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active:hover, +.btn-info.active:hover, +.open > .dropdown-toggle.btn-info:hover, +.btn-info:active:focus, +.btn-info.active:focus, +.open > .dropdown-toggle.btn-info:focus, +.btn-info:active.focus, +.btn-info.active.focus, +.open > .dropdown-toggle.btn-info.focus { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:focus, +.btn-warning.focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; +} +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active:hover, +.btn-warning.active:hover, +.open > .dropdown-toggle.btn-warning:hover, +.btn-warning:active:focus, +.btn-warning.active:focus, +.open > .dropdown-toggle.btn-warning:focus, +.btn-warning:active.focus, +.btn-warning.active.focus, +.open > .dropdown-toggle.btn-warning.focus { + color: #fff; + background-color: #d58512; + border-color: #985f0d; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:focus, +.btn-danger.focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19; +} +.btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active:hover, +.btn-danger.active:hover, +.open > .dropdown-toggle.btn-danger:hover, +.btn-danger:active:focus, +.btn-danger.active:focus, +.open > .dropdown-toggle.btn-danger:focus, +.btn-danger:active.focus, +.btn-danger.active.focus, +.open > .dropdown-toggle.btn-danger.focus { + color: #fff; + background-color: #ac2925; + border-color: #761c19; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 2; + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 3; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item, +button.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + filter: alpha(opacity=0); + opacity: 0; + + line-break: auto; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + + line-break: auto; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + background-color: rgba(0, 0, 0, 0); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-header:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.min.css b/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.min.css new file mode 100644 index 0000000000..ed3905e0e0 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000..b93a4953ff Binary files /dev/null and b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot differ diff --git a/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000000..94fb5490a2 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000..1413fc609a Binary files /dev/null and b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf differ diff --git a/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000..9e612858f8 Binary files /dev/null and b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff differ diff --git a/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000..64539b54c3 Binary files /dev/null and b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.js b/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.js new file mode 100644 index 0000000000..8a2e99a535 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.js @@ -0,0 +1,2377 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + 'use strict'; + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.7 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.7 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.7' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector === '#' ? [] : selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.7 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.7' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d).prop(d, true) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d).prop(d, false) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target).closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { + // Prevent double click on radios, and the double selections (so cancellation) on checkboxes + e.preventDefault() + // The target component still receive the focus + if ($btn.is('input,button')) $btn.trigger('focus') + else $btn.find('input:visible,button:visible').first().trigger('focus') + } + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.7 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.7' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.7 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + +/* jshint latedef: false */ + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.7' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.7 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.7' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.3.7 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.7' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (document !== e.target && + this.$element[0] !== e.target && + !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.7 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.7' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + } + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var isSvg = window.SVGElement && el instanceof window.SVGElement + // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. + // See https://github.com/twbs/bootstrap/issues/20280 + var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + that.$element = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.3.7 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.7' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.7 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.7' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.3.7 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.7' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.3.7 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.7' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.min.js b/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.min.js new file mode 100644 index 0000000000..9bcd2fccae --- /dev/null +++ b/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.css b/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.css new file mode 100644 index 0000000000..a0b879fa00 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.css @@ -0,0 +1,2199 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.6.3'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.min.css b/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.min.css new file mode 100644 index 0000000000..9b27f8ea8f --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.6.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/fonts/FontAwesome.otf b/vraptor/src/main/webapp/vendor/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 0000000000..d4de13e832 Binary files /dev/null and b/vraptor/src/main/webapp/vendor/font-awesome/fonts/FontAwesome.otf differ diff --git a/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.eot b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000..c7b00d2ba8 Binary files /dev/null and b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.svg b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000000..8b66187fe0 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,685 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.ttf b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000..f221e50a2e Binary files /dev/null and b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000..6e7483cf61 Binary files /dev/null and b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff2 b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000..7eb74fd127 Binary files /dev/null and b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff2 differ diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/animated.less b/vraptor/src/main/webapp/vendor/font-awesome/less/animated.less new file mode 100644 index 0000000000..66ad52a5ba --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/animated.less @@ -0,0 +1,34 @@ +// Animated Icons +// -------------------------- + +.@{fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.@{fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/bordered-pulled.less b/vraptor/src/main/webapp/vendor/font-awesome/less/bordered-pulled.less new file mode 100644 index 0000000000..f1c8ad75f5 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/bordered-pulled.less @@ -0,0 +1,25 @@ +// Bordered & Pulled +// ------------------------- + +.@{fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em @fa-border-color; + border-radius: .1em; +} + +.@{fa-css-prefix}-pull-left { float: left; } +.@{fa-css-prefix}-pull-right { float: right; } + +.@{fa-css-prefix} { + &.@{fa-css-prefix}-pull-left { margin-right: .3em; } + &.@{fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ +.pull-right { float: right; } +.pull-left { float: left; } + +.@{fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/core.less b/vraptor/src/main/webapp/vendor/font-awesome/less/core.less new file mode 100644 index 0000000000..c577ac84a6 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/core.less @@ -0,0 +1,12 @@ +// Base Class Definition +// ------------------------- + +.@{fa-css-prefix} { + display: inline-block; + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/fixed-width.less b/vraptor/src/main/webapp/vendor/font-awesome/less/fixed-width.less new file mode 100644 index 0000000000..110289f2f4 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/fixed-width.less @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.@{fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/font-awesome.less b/vraptor/src/main/webapp/vendor/font-awesome/less/font-awesome.less new file mode 100644 index 0000000000..c44e5f466a --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/font-awesome.less @@ -0,0 +1,18 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables.less"; +@import "mixins.less"; +@import "path.less"; +@import "core.less"; +@import "larger.less"; +@import "fixed-width.less"; +@import "list.less"; +@import "bordered-pulled.less"; +@import "animated.less"; +@import "rotated-flipped.less"; +@import "stacked.less"; +@import "icons.less"; +@import "screen-reader.less"; diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/icons.less b/vraptor/src/main/webapp/vendor/font-awesome/less/icons.less new file mode 100644 index 0000000000..ba21b222d6 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/icons.less @@ -0,0 +1,733 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } +.@{fa-css-prefix}-music:before { content: @fa-var-music; } +.@{fa-css-prefix}-search:before { content: @fa-var-search; } +.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } +.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } +.@{fa-css-prefix}-star:before { content: @fa-var-star; } +.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } +.@{fa-css-prefix}-user:before { content: @fa-var-user; } +.@{fa-css-prefix}-film:before { content: @fa-var-film; } +.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } +.@{fa-css-prefix}-th:before { content: @fa-var-th; } +.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } +.@{fa-css-prefix}-check:before { content: @fa-var-check; } +.@{fa-css-prefix}-remove:before, +.@{fa-css-prefix}-close:before, +.@{fa-css-prefix}-times:before { content: @fa-var-times; } +.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } +.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } +.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } +.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } +.@{fa-css-prefix}-gear:before, +.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } +.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } +.@{fa-css-prefix}-home:before { content: @fa-var-home; } +.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } +.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } +.@{fa-css-prefix}-road:before { content: @fa-var-road; } +.@{fa-css-prefix}-download:before { content: @fa-var-download; } +.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } +.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } +.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } +.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } +.@{fa-css-prefix}-rotate-right:before, +.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } +.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } +.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } +.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } +.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } +.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } +.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } +.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } +.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } +.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } +.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } +.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } +.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } +.@{fa-css-prefix}-book:before { content: @fa-var-book; } +.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } +.@{fa-css-prefix}-print:before { content: @fa-var-print; } +.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } +.@{fa-css-prefix}-font:before { content: @fa-var-font; } +.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } +.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } +.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } +.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } +.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } +.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } +.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } +.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } +.@{fa-css-prefix}-list:before { content: @fa-var-list; } +.@{fa-css-prefix}-dedent:before, +.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } +.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } +.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } +.@{fa-css-prefix}-photo:before, +.@{fa-css-prefix}-image:before, +.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } +.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } +.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } +.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } +.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } +.@{fa-css-prefix}-edit:before, +.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } +.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } +.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } +.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } +.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } +.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } +.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } +.@{fa-css-prefix}-play:before { content: @fa-var-play; } +.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } +.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } +.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } +.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } +.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } +.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } +.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } +.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } +.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } +.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } +.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } +.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } +.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } +.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } +.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } +.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } +.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } +.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } +.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } +.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } +.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } +.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } +.@{fa-css-prefix}-mail-forward:before, +.@{fa-css-prefix}-share:before { content: @fa-var-share; } +.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } +.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } +.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } +.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } +.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } +.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } +.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } +.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } +.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } +.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } +.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } +.@{fa-css-prefix}-warning:before, +.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } +.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } +.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } +.@{fa-css-prefix}-random:before { content: @fa-var-random; } +.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } +.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } +.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } +.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } +.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } +.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } +.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } +.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } +.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } +.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } +.@{fa-css-prefix}-bar-chart-o:before, +.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } +.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } +.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } +.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } +.@{fa-css-prefix}-key:before { content: @fa-var-key; } +.@{fa-css-prefix}-gears:before, +.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } +.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } +.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } +.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } +.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } +.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } +.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } +.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } +.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } +.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } +.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } +.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } +.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } +.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } +.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } +.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } +.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } +.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } +.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } +.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } +.@{fa-css-prefix}-facebook-f:before, +.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } +.@{fa-css-prefix}-github:before { content: @fa-var-github; } +.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } +.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } +.@{fa-css-prefix}-feed:before, +.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } +.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } +.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } +.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } +.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } +.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } +.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } +.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } +.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } +.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } +.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } +.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } +.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } +.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } +.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } +.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } +.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } +.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } +.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } +.@{fa-css-prefix}-group:before, +.@{fa-css-prefix}-users:before { content: @fa-var-users; } +.@{fa-css-prefix}-chain:before, +.@{fa-css-prefix}-link:before { content: @fa-var-link; } +.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } +.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } +.@{fa-css-prefix}-cut:before, +.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } +.@{fa-css-prefix}-copy:before, +.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } +.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } +.@{fa-css-prefix}-save:before, +.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } +.@{fa-css-prefix}-square:before { content: @fa-var-square; } +.@{fa-css-prefix}-navicon:before, +.@{fa-css-prefix}-reorder:before, +.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } +.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } +.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } +.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } +.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } +.@{fa-css-prefix}-table:before { content: @fa-var-table; } +.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } +.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } +.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } +.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } +.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } +.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } +.@{fa-css-prefix}-money:before { content: @fa-var-money; } +.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } +.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } +.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } +.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } +.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } +.@{fa-css-prefix}-unsorted:before, +.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } +.@{fa-css-prefix}-sort-down:before, +.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } +.@{fa-css-prefix}-sort-up:before, +.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } +.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } +.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } +.@{fa-css-prefix}-rotate-left:before, +.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } +.@{fa-css-prefix}-legal:before, +.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } +.@{fa-css-prefix}-dashboard:before, +.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } +.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } +.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } +.@{fa-css-prefix}-flash:before, +.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } +.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } +.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } +.@{fa-css-prefix}-paste:before, +.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } +.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } +.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } +.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } +.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } +.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } +.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } +.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } +.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } +.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } +.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } +.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } +.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } +.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } +.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } +.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } +.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } +.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } +.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } +.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } +.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } +.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } +.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } +.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } +.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } +.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } +.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } +.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } +.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } +.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } +.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } +.@{fa-css-prefix}-mobile-phone:before, +.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } +.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } +.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } +.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } +.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } +.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } +.@{fa-css-prefix}-mail-reply:before, +.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } +.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } +.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } +.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } +.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } +.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } +.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } +.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } +.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } +.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } +.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } +.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } +.@{fa-css-prefix}-code:before { content: @fa-var-code; } +.@{fa-css-prefix}-mail-reply-all:before, +.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } +.@{fa-css-prefix}-star-half-empty:before, +.@{fa-css-prefix}-star-half-full:before, +.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } +.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } +.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } +.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } +.@{fa-css-prefix}-unlink:before, +.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } +.@{fa-css-prefix}-question:before { content: @fa-var-question; } +.@{fa-css-prefix}-info:before { content: @fa-var-info; } +.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } +.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } +.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } +.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } +.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } +.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } +.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } +.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } +.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } +.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } +.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } +.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } +.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } +.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } +.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } +.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } +.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } +.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } +.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } +.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } +.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } +.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } +.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } +.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } +.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } +.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } +.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } +.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } +.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } +.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } +.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } +.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } +.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } +.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } +.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } +.@{fa-css-prefix}-toggle-down:before, +.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } +.@{fa-css-prefix}-toggle-up:before, +.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } +.@{fa-css-prefix}-toggle-right:before, +.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } +.@{fa-css-prefix}-euro:before, +.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } +.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } +.@{fa-css-prefix}-dollar:before, +.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } +.@{fa-css-prefix}-rupee:before, +.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } +.@{fa-css-prefix}-cny:before, +.@{fa-css-prefix}-rmb:before, +.@{fa-css-prefix}-yen:before, +.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } +.@{fa-css-prefix}-ruble:before, +.@{fa-css-prefix}-rouble:before, +.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } +.@{fa-css-prefix}-won:before, +.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } +.@{fa-css-prefix}-bitcoin:before, +.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } +.@{fa-css-prefix}-file:before { content: @fa-var-file; } +.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } +.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } +.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } +.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } +.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } +.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } +.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } +.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } +.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } +.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } +.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } +.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } +.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } +.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } +.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } +.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } +.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } +.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } +.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } +.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } +.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } +.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } +.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } +.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } +.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } +.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } +.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } +.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } +.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } +.@{fa-css-prefix}-android:before { content: @fa-var-android; } +.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } +.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } +.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } +.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } +.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } +.@{fa-css-prefix}-female:before { content: @fa-var-female; } +.@{fa-css-prefix}-male:before { content: @fa-var-male; } +.@{fa-css-prefix}-gittip:before, +.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } +.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } +.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } +.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } +.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } +.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } +.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } +.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } +.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } +.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } +.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } +.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } +.@{fa-css-prefix}-toggle-left:before, +.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } +.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } +.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } +.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } +.@{fa-css-prefix}-turkish-lira:before, +.@{fa-css-prefix}-try:before { content: @fa-var-try; } +.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } +.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } +.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } +.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } +.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } +.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } +.@{fa-css-prefix}-institution:before, +.@{fa-css-prefix}-bank:before, +.@{fa-css-prefix}-university:before { content: @fa-var-university; } +.@{fa-css-prefix}-mortar-board:before, +.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } +.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } +.@{fa-css-prefix}-google:before { content: @fa-var-google; } +.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } +.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } +.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } +.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } +.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } +.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } +.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; } +.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } +.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } +.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } +.@{fa-css-prefix}-language:before { content: @fa-var-language; } +.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } +.@{fa-css-prefix}-building:before { content: @fa-var-building; } +.@{fa-css-prefix}-child:before { content: @fa-var-child; } +.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } +.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } +.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } +.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } +.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } +.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } +.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } +.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } +.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } +.@{fa-css-prefix}-automobile:before, +.@{fa-css-prefix}-car:before { content: @fa-var-car; } +.@{fa-css-prefix}-cab:before, +.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } +.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } +.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } +.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } +.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } +.@{fa-css-prefix}-database:before { content: @fa-var-database; } +.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } +.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } +.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } +.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } +.@{fa-css-prefix}-file-photo-o:before, +.@{fa-css-prefix}-file-picture-o:before, +.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } +.@{fa-css-prefix}-file-zip-o:before, +.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } +.@{fa-css-prefix}-file-sound-o:before, +.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } +.@{fa-css-prefix}-file-movie-o:before, +.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } +.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } +.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } +.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } +.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } +.@{fa-css-prefix}-life-bouy:before, +.@{fa-css-prefix}-life-buoy:before, +.@{fa-css-prefix}-life-saver:before, +.@{fa-css-prefix}-support:before, +.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } +.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } +.@{fa-css-prefix}-ra:before, +.@{fa-css-prefix}-resistance:before, +.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } +.@{fa-css-prefix}-ge:before, +.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } +.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } +.@{fa-css-prefix}-git:before { content: @fa-var-git; } +.@{fa-css-prefix}-y-combinator-square:before, +.@{fa-css-prefix}-yc-square:before, +.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } +.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } +.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } +.@{fa-css-prefix}-wechat:before, +.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } +.@{fa-css-prefix}-send:before, +.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } +.@{fa-css-prefix}-send-o:before, +.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } +.@{fa-css-prefix}-history:before { content: @fa-var-history; } +.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } +.@{fa-css-prefix}-header:before { content: @fa-var-header; } +.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } +.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } +.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } +.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } +.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } +.@{fa-css-prefix}-soccer-ball-o:before, +.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } +.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } +.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } +.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } +.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } +.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } +.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } +.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } +.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } +.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } +.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } +.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } +.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } +.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } +.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } +.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } +.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } +.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } +.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } +.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } +.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } +.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } +.@{fa-css-prefix}-at:before { content: @fa-var-at; } +.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } +.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } +.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } +.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } +.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } +.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } +.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } +.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } +.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } +.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } +.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } +.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } +.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } +.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } +.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } +.@{fa-css-prefix}-shekel:before, +.@{fa-css-prefix}-sheqel:before, +.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } +.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } +.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } +.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } +.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } +.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } +.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } +.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } +.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } +.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } +.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } +.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } +.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } +.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; } +.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } +.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } +.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } +.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } +.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } +.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } +.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } +.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } +.@{fa-css-prefix}-intersex:before, +.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } +.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } +.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } +.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } +.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } +.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } +.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } +.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } +.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } +.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; } +.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } +.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } +.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } +.@{fa-css-prefix}-server:before { content: @fa-var-server; } +.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } +.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } +.@{fa-css-prefix}-hotel:before, +.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } +.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } +.@{fa-css-prefix}-train:before { content: @fa-var-train; } +.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } +.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } +.@{fa-css-prefix}-yc:before, +.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; } +.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; } +.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; } +.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; } +.@{fa-css-prefix}-battery-4:before, +.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; } +.@{fa-css-prefix}-battery-3:before, +.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; } +.@{fa-css-prefix}-battery-2:before, +.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; } +.@{fa-css-prefix}-battery-1:before, +.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; } +.@{fa-css-prefix}-battery-0:before, +.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; } +.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; } +.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; } +.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; } +.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; } +.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; } +.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; } +.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } +.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } +.@{fa-css-prefix}-clone:before { content: @fa-var-clone; } +.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; } +.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; } +.@{fa-css-prefix}-hourglass-1:before, +.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; } +.@{fa-css-prefix}-hourglass-2:before, +.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; } +.@{fa-css-prefix}-hourglass-3:before, +.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; } +.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; } +.@{fa-css-prefix}-hand-grab-o:before, +.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; } +.@{fa-css-prefix}-hand-stop-o:before, +.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; } +.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; } +.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; } +.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; } +.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; } +.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; } +.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; } +.@{fa-css-prefix}-registered:before { content: @fa-var-registered; } +.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; } +.@{fa-css-prefix}-gg:before { content: @fa-var-gg; } +.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; } +.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; } +.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; } +.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; } +.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; } +.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; } +.@{fa-css-prefix}-safari:before { content: @fa-var-safari; } +.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; } +.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; } +.@{fa-css-prefix}-opera:before { content: @fa-var-opera; } +.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; } +.@{fa-css-prefix}-tv:before, +.@{fa-css-prefix}-television:before { content: @fa-var-television; } +.@{fa-css-prefix}-contao:before { content: @fa-var-contao; } +.@{fa-css-prefix}-500px:before { content: @fa-var-500px; } +.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; } +.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; } +.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; } +.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; } +.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; } +.@{fa-css-prefix}-industry:before { content: @fa-var-industry; } +.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; } +.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; } +.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; } +.@{fa-css-prefix}-map:before { content: @fa-var-map; } +.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; } +.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; } +.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; } +.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; } +.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; } +.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; } +.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; } +.@{fa-css-prefix}-edge:before { content: @fa-var-edge; } +.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; } +.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; } +.@{fa-css-prefix}-modx:before { content: @fa-var-modx; } +.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; } +.@{fa-css-prefix}-usb:before { content: @fa-var-usb; } +.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; } +.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; } +.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; } +.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; } +.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; } +.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; } +.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; } +.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; } +.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; } +.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; } +.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; } +.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; } +.@{fa-css-prefix}-percent:before { content: @fa-var-percent; } +.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; } +.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; } +.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; } +.@{fa-css-prefix}-envira:before { content: @fa-var-envira; } +.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; } +.@{fa-css-prefix}-wheelchair-alt:before { content: @fa-var-wheelchair-alt; } +.@{fa-css-prefix}-question-circle-o:before { content: @fa-var-question-circle-o; } +.@{fa-css-prefix}-blind:before { content: @fa-var-blind; } +.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; } +.@{fa-css-prefix}-volume-control-phone:before { content: @fa-var-volume-control-phone; } +.@{fa-css-prefix}-braille:before { content: @fa-var-braille; } +.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; } +.@{fa-css-prefix}-asl-interpreting:before, +.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; } +.@{fa-css-prefix}-deafness:before, +.@{fa-css-prefix}-hard-of-hearing:before, +.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; } +.@{fa-css-prefix}-glide:before { content: @fa-var-glide; } +.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; } +.@{fa-css-prefix}-signing:before, +.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; } +.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; } +.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; } +.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; } +.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; } +.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; } +.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; } +.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } +.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; } +.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; } +.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; } +.@{fa-css-prefix}-google-plus-circle:before, +.@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; } +.@{fa-css-prefix}-fa:before, +.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/larger.less b/vraptor/src/main/webapp/vendor/font-awesome/less/larger.less new file mode 100644 index 0000000000..c9d646770e --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/larger.less @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.@{fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.@{fa-css-prefix}-2x { font-size: 2em; } +.@{fa-css-prefix}-3x { font-size: 3em; } +.@{fa-css-prefix}-4x { font-size: 4em; } +.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/list.less b/vraptor/src/main/webapp/vendor/font-awesome/less/list.less new file mode 100644 index 0000000000..0b440382f6 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/list.less @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.@{fa-css-prefix}-ul { + padding-left: 0; + margin-left: @fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.@{fa-css-prefix}-li { + position: absolute; + left: -@fa-li-width; + width: @fa-li-width; + top: (2em / 14); + text-align: center; + &.@{fa-css-prefix}-lg { + left: (-@fa-li-width + (4em / 14)); + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/mixins.less b/vraptor/src/main/webapp/vendor/font-awesome/less/mixins.less new file mode 100644 index 0000000000..beef231d0e --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/mixins.less @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +.fa-icon() { + display: inline-block; + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +.fa-icon-rotate(@degrees, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + transform: rotate(@degrees); +} + +.fa-icon-flip(@horiz, @vert, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; + -webkit-transform: scale(@horiz, @vert); + -ms-transform: scale(@horiz, @vert); + transform: scale(@horiz, @vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +.sr-only() { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +.sr-only-focusable() { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/path.less b/vraptor/src/main/webapp/vendor/font-awesome/less/path.less new file mode 100644 index 0000000000..835be41f81 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/path.less @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); + src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), + url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), + url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), + url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), + url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); + // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/rotated-flipped.less b/vraptor/src/main/webapp/vendor/font-awesome/less/rotated-flipped.less new file mode 100644 index 0000000000..f6ba81475b --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/rotated-flipped.less @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } +.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } +.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } + +.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } +.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .@{fa-css-prefix}-rotate-90, +:root .@{fa-css-prefix}-rotate-180, +:root .@{fa-css-prefix}-rotate-270, +:root .@{fa-css-prefix}-flip-horizontal, +:root .@{fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/screen-reader.less b/vraptor/src/main/webapp/vendor/font-awesome/less/screen-reader.less new file mode 100644 index 0000000000..11c188196d --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/screen-reader.less @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { .sr-only(); } +.sr-only-focusable { .sr-only-focusable(); } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/stacked.less b/vraptor/src/main/webapp/vendor/font-awesome/less/stacked.less new file mode 100644 index 0000000000..fc53fb0e7a --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/stacked.less @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.@{fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.@{fa-css-prefix}-stack-1x { line-height: inherit; } +.@{fa-css-prefix}-stack-2x { font-size: 2em; } +.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/variables.less b/vraptor/src/main/webapp/vendor/font-awesome/less/variables.less new file mode 100644 index 0000000000..2b3381975e --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/variables.less @@ -0,0 +1,744 @@ +// Variables +// -------------------------- + +@fa-font-path: "../fonts"; +@fa-font-size-base: 14px; +@fa-line-height-base: 1; +//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts"; // for referencing Bootstrap CDN font files directly +@fa-css-prefix: fa; +@fa-version: "4.6.3"; +@fa-border-color: #eee; +@fa-inverse: #fff; +@fa-li-width: (30em / 14); + +@fa-var-500px: "\f26e"; +@fa-var-adjust: "\f042"; +@fa-var-adn: "\f170"; +@fa-var-align-center: "\f037"; +@fa-var-align-justify: "\f039"; +@fa-var-align-left: "\f036"; +@fa-var-align-right: "\f038"; +@fa-var-amazon: "\f270"; +@fa-var-ambulance: "\f0f9"; +@fa-var-american-sign-language-interpreting: "\f2a3"; +@fa-var-anchor: "\f13d"; +@fa-var-android: "\f17b"; +@fa-var-angellist: "\f209"; +@fa-var-angle-double-down: "\f103"; +@fa-var-angle-double-left: "\f100"; +@fa-var-angle-double-right: "\f101"; +@fa-var-angle-double-up: "\f102"; +@fa-var-angle-down: "\f107"; +@fa-var-angle-left: "\f104"; +@fa-var-angle-right: "\f105"; +@fa-var-angle-up: "\f106"; +@fa-var-apple: "\f179"; +@fa-var-archive: "\f187"; +@fa-var-area-chart: "\f1fe"; +@fa-var-arrow-circle-down: "\f0ab"; +@fa-var-arrow-circle-left: "\f0a8"; +@fa-var-arrow-circle-o-down: "\f01a"; +@fa-var-arrow-circle-o-left: "\f190"; +@fa-var-arrow-circle-o-right: "\f18e"; +@fa-var-arrow-circle-o-up: "\f01b"; +@fa-var-arrow-circle-right: "\f0a9"; +@fa-var-arrow-circle-up: "\f0aa"; +@fa-var-arrow-down: "\f063"; +@fa-var-arrow-left: "\f060"; +@fa-var-arrow-right: "\f061"; +@fa-var-arrow-up: "\f062"; +@fa-var-arrows: "\f047"; +@fa-var-arrows-alt: "\f0b2"; +@fa-var-arrows-h: "\f07e"; +@fa-var-arrows-v: "\f07d"; +@fa-var-asl-interpreting: "\f2a3"; +@fa-var-assistive-listening-systems: "\f2a2"; +@fa-var-asterisk: "\f069"; +@fa-var-at: "\f1fa"; +@fa-var-audio-description: "\f29e"; +@fa-var-automobile: "\f1b9"; +@fa-var-backward: "\f04a"; +@fa-var-balance-scale: "\f24e"; +@fa-var-ban: "\f05e"; +@fa-var-bank: "\f19c"; +@fa-var-bar-chart: "\f080"; +@fa-var-bar-chart-o: "\f080"; +@fa-var-barcode: "\f02a"; +@fa-var-bars: "\f0c9"; +@fa-var-battery-0: "\f244"; +@fa-var-battery-1: "\f243"; +@fa-var-battery-2: "\f242"; +@fa-var-battery-3: "\f241"; +@fa-var-battery-4: "\f240"; +@fa-var-battery-empty: "\f244"; +@fa-var-battery-full: "\f240"; +@fa-var-battery-half: "\f242"; +@fa-var-battery-quarter: "\f243"; +@fa-var-battery-three-quarters: "\f241"; +@fa-var-bed: "\f236"; +@fa-var-beer: "\f0fc"; +@fa-var-behance: "\f1b4"; +@fa-var-behance-square: "\f1b5"; +@fa-var-bell: "\f0f3"; +@fa-var-bell-o: "\f0a2"; +@fa-var-bell-slash: "\f1f6"; +@fa-var-bell-slash-o: "\f1f7"; +@fa-var-bicycle: "\f206"; +@fa-var-binoculars: "\f1e5"; +@fa-var-birthday-cake: "\f1fd"; +@fa-var-bitbucket: "\f171"; +@fa-var-bitbucket-square: "\f172"; +@fa-var-bitcoin: "\f15a"; +@fa-var-black-tie: "\f27e"; +@fa-var-blind: "\f29d"; +@fa-var-bluetooth: "\f293"; +@fa-var-bluetooth-b: "\f294"; +@fa-var-bold: "\f032"; +@fa-var-bolt: "\f0e7"; +@fa-var-bomb: "\f1e2"; +@fa-var-book: "\f02d"; +@fa-var-bookmark: "\f02e"; +@fa-var-bookmark-o: "\f097"; +@fa-var-braille: "\f2a1"; +@fa-var-briefcase: "\f0b1"; +@fa-var-btc: "\f15a"; +@fa-var-bug: "\f188"; +@fa-var-building: "\f1ad"; +@fa-var-building-o: "\f0f7"; +@fa-var-bullhorn: "\f0a1"; +@fa-var-bullseye: "\f140"; +@fa-var-bus: "\f207"; +@fa-var-buysellads: "\f20d"; +@fa-var-cab: "\f1ba"; +@fa-var-calculator: "\f1ec"; +@fa-var-calendar: "\f073"; +@fa-var-calendar-check-o: "\f274"; +@fa-var-calendar-minus-o: "\f272"; +@fa-var-calendar-o: "\f133"; +@fa-var-calendar-plus-o: "\f271"; +@fa-var-calendar-times-o: "\f273"; +@fa-var-camera: "\f030"; +@fa-var-camera-retro: "\f083"; +@fa-var-car: "\f1b9"; +@fa-var-caret-down: "\f0d7"; +@fa-var-caret-left: "\f0d9"; +@fa-var-caret-right: "\f0da"; +@fa-var-caret-square-o-down: "\f150"; +@fa-var-caret-square-o-left: "\f191"; +@fa-var-caret-square-o-right: "\f152"; +@fa-var-caret-square-o-up: "\f151"; +@fa-var-caret-up: "\f0d8"; +@fa-var-cart-arrow-down: "\f218"; +@fa-var-cart-plus: "\f217"; +@fa-var-cc: "\f20a"; +@fa-var-cc-amex: "\f1f3"; +@fa-var-cc-diners-club: "\f24c"; +@fa-var-cc-discover: "\f1f2"; +@fa-var-cc-jcb: "\f24b"; +@fa-var-cc-mastercard: "\f1f1"; +@fa-var-cc-paypal: "\f1f4"; +@fa-var-cc-stripe: "\f1f5"; +@fa-var-cc-visa: "\f1f0"; +@fa-var-certificate: "\f0a3"; +@fa-var-chain: "\f0c1"; +@fa-var-chain-broken: "\f127"; +@fa-var-check: "\f00c"; +@fa-var-check-circle: "\f058"; +@fa-var-check-circle-o: "\f05d"; +@fa-var-check-square: "\f14a"; +@fa-var-check-square-o: "\f046"; +@fa-var-chevron-circle-down: "\f13a"; +@fa-var-chevron-circle-left: "\f137"; +@fa-var-chevron-circle-right: "\f138"; +@fa-var-chevron-circle-up: "\f139"; +@fa-var-chevron-down: "\f078"; +@fa-var-chevron-left: "\f053"; +@fa-var-chevron-right: "\f054"; +@fa-var-chevron-up: "\f077"; +@fa-var-child: "\f1ae"; +@fa-var-chrome: "\f268"; +@fa-var-circle: "\f111"; +@fa-var-circle-o: "\f10c"; +@fa-var-circle-o-notch: "\f1ce"; +@fa-var-circle-thin: "\f1db"; +@fa-var-clipboard: "\f0ea"; +@fa-var-clock-o: "\f017"; +@fa-var-clone: "\f24d"; +@fa-var-close: "\f00d"; +@fa-var-cloud: "\f0c2"; +@fa-var-cloud-download: "\f0ed"; +@fa-var-cloud-upload: "\f0ee"; +@fa-var-cny: "\f157"; +@fa-var-code: "\f121"; +@fa-var-code-fork: "\f126"; +@fa-var-codepen: "\f1cb"; +@fa-var-codiepie: "\f284"; +@fa-var-coffee: "\f0f4"; +@fa-var-cog: "\f013"; +@fa-var-cogs: "\f085"; +@fa-var-columns: "\f0db"; +@fa-var-comment: "\f075"; +@fa-var-comment-o: "\f0e5"; +@fa-var-commenting: "\f27a"; +@fa-var-commenting-o: "\f27b"; +@fa-var-comments: "\f086"; +@fa-var-comments-o: "\f0e6"; +@fa-var-compass: "\f14e"; +@fa-var-compress: "\f066"; +@fa-var-connectdevelop: "\f20e"; +@fa-var-contao: "\f26d"; +@fa-var-copy: "\f0c5"; +@fa-var-copyright: "\f1f9"; +@fa-var-creative-commons: "\f25e"; +@fa-var-credit-card: "\f09d"; +@fa-var-credit-card-alt: "\f283"; +@fa-var-crop: "\f125"; +@fa-var-crosshairs: "\f05b"; +@fa-var-css3: "\f13c"; +@fa-var-cube: "\f1b2"; +@fa-var-cubes: "\f1b3"; +@fa-var-cut: "\f0c4"; +@fa-var-cutlery: "\f0f5"; +@fa-var-dashboard: "\f0e4"; +@fa-var-dashcube: "\f210"; +@fa-var-database: "\f1c0"; +@fa-var-deaf: "\f2a4"; +@fa-var-deafness: "\f2a4"; +@fa-var-dedent: "\f03b"; +@fa-var-delicious: "\f1a5"; +@fa-var-desktop: "\f108"; +@fa-var-deviantart: "\f1bd"; +@fa-var-diamond: "\f219"; +@fa-var-digg: "\f1a6"; +@fa-var-dollar: "\f155"; +@fa-var-dot-circle-o: "\f192"; +@fa-var-download: "\f019"; +@fa-var-dribbble: "\f17d"; +@fa-var-dropbox: "\f16b"; +@fa-var-drupal: "\f1a9"; +@fa-var-edge: "\f282"; +@fa-var-edit: "\f044"; +@fa-var-eject: "\f052"; +@fa-var-ellipsis-h: "\f141"; +@fa-var-ellipsis-v: "\f142"; +@fa-var-empire: "\f1d1"; +@fa-var-envelope: "\f0e0"; +@fa-var-envelope-o: "\f003"; +@fa-var-envelope-square: "\f199"; +@fa-var-envira: "\f299"; +@fa-var-eraser: "\f12d"; +@fa-var-eur: "\f153"; +@fa-var-euro: "\f153"; +@fa-var-exchange: "\f0ec"; +@fa-var-exclamation: "\f12a"; +@fa-var-exclamation-circle: "\f06a"; +@fa-var-exclamation-triangle: "\f071"; +@fa-var-expand: "\f065"; +@fa-var-expeditedssl: "\f23e"; +@fa-var-external-link: "\f08e"; +@fa-var-external-link-square: "\f14c"; +@fa-var-eye: "\f06e"; +@fa-var-eye-slash: "\f070"; +@fa-var-eyedropper: "\f1fb"; +@fa-var-fa: "\f2b4"; +@fa-var-facebook: "\f09a"; +@fa-var-facebook-f: "\f09a"; +@fa-var-facebook-official: "\f230"; +@fa-var-facebook-square: "\f082"; +@fa-var-fast-backward: "\f049"; +@fa-var-fast-forward: "\f050"; +@fa-var-fax: "\f1ac"; +@fa-var-feed: "\f09e"; +@fa-var-female: "\f182"; +@fa-var-fighter-jet: "\f0fb"; +@fa-var-file: "\f15b"; +@fa-var-file-archive-o: "\f1c6"; +@fa-var-file-audio-o: "\f1c7"; +@fa-var-file-code-o: "\f1c9"; +@fa-var-file-excel-o: "\f1c3"; +@fa-var-file-image-o: "\f1c5"; +@fa-var-file-movie-o: "\f1c8"; +@fa-var-file-o: "\f016"; +@fa-var-file-pdf-o: "\f1c1"; +@fa-var-file-photo-o: "\f1c5"; +@fa-var-file-picture-o: "\f1c5"; +@fa-var-file-powerpoint-o: "\f1c4"; +@fa-var-file-sound-o: "\f1c7"; +@fa-var-file-text: "\f15c"; +@fa-var-file-text-o: "\f0f6"; +@fa-var-file-video-o: "\f1c8"; +@fa-var-file-word-o: "\f1c2"; +@fa-var-file-zip-o: "\f1c6"; +@fa-var-files-o: "\f0c5"; +@fa-var-film: "\f008"; +@fa-var-filter: "\f0b0"; +@fa-var-fire: "\f06d"; +@fa-var-fire-extinguisher: "\f134"; +@fa-var-firefox: "\f269"; +@fa-var-first-order: "\f2b0"; +@fa-var-flag: "\f024"; +@fa-var-flag-checkered: "\f11e"; +@fa-var-flag-o: "\f11d"; +@fa-var-flash: "\f0e7"; +@fa-var-flask: "\f0c3"; +@fa-var-flickr: "\f16e"; +@fa-var-floppy-o: "\f0c7"; +@fa-var-folder: "\f07b"; +@fa-var-folder-o: "\f114"; +@fa-var-folder-open: "\f07c"; +@fa-var-folder-open-o: "\f115"; +@fa-var-font: "\f031"; +@fa-var-font-awesome: "\f2b4"; +@fa-var-fonticons: "\f280"; +@fa-var-fort-awesome: "\f286"; +@fa-var-forumbee: "\f211"; +@fa-var-forward: "\f04e"; +@fa-var-foursquare: "\f180"; +@fa-var-frown-o: "\f119"; +@fa-var-futbol-o: "\f1e3"; +@fa-var-gamepad: "\f11b"; +@fa-var-gavel: "\f0e3"; +@fa-var-gbp: "\f154"; +@fa-var-ge: "\f1d1"; +@fa-var-gear: "\f013"; +@fa-var-gears: "\f085"; +@fa-var-genderless: "\f22d"; +@fa-var-get-pocket: "\f265"; +@fa-var-gg: "\f260"; +@fa-var-gg-circle: "\f261"; +@fa-var-gift: "\f06b"; +@fa-var-git: "\f1d3"; +@fa-var-git-square: "\f1d2"; +@fa-var-github: "\f09b"; +@fa-var-github-alt: "\f113"; +@fa-var-github-square: "\f092"; +@fa-var-gitlab: "\f296"; +@fa-var-gittip: "\f184"; +@fa-var-glass: "\f000"; +@fa-var-glide: "\f2a5"; +@fa-var-glide-g: "\f2a6"; +@fa-var-globe: "\f0ac"; +@fa-var-google: "\f1a0"; +@fa-var-google-plus: "\f0d5"; +@fa-var-google-plus-circle: "\f2b3"; +@fa-var-google-plus-official: "\f2b3"; +@fa-var-google-plus-square: "\f0d4"; +@fa-var-google-wallet: "\f1ee"; +@fa-var-graduation-cap: "\f19d"; +@fa-var-gratipay: "\f184"; +@fa-var-group: "\f0c0"; +@fa-var-h-square: "\f0fd"; +@fa-var-hacker-news: "\f1d4"; +@fa-var-hand-grab-o: "\f255"; +@fa-var-hand-lizard-o: "\f258"; +@fa-var-hand-o-down: "\f0a7"; +@fa-var-hand-o-left: "\f0a5"; +@fa-var-hand-o-right: "\f0a4"; +@fa-var-hand-o-up: "\f0a6"; +@fa-var-hand-paper-o: "\f256"; +@fa-var-hand-peace-o: "\f25b"; +@fa-var-hand-pointer-o: "\f25a"; +@fa-var-hand-rock-o: "\f255"; +@fa-var-hand-scissors-o: "\f257"; +@fa-var-hand-spock-o: "\f259"; +@fa-var-hand-stop-o: "\f256"; +@fa-var-hard-of-hearing: "\f2a4"; +@fa-var-hashtag: "\f292"; +@fa-var-hdd-o: "\f0a0"; +@fa-var-header: "\f1dc"; +@fa-var-headphones: "\f025"; +@fa-var-heart: "\f004"; +@fa-var-heart-o: "\f08a"; +@fa-var-heartbeat: "\f21e"; +@fa-var-history: "\f1da"; +@fa-var-home: "\f015"; +@fa-var-hospital-o: "\f0f8"; +@fa-var-hotel: "\f236"; +@fa-var-hourglass: "\f254"; +@fa-var-hourglass-1: "\f251"; +@fa-var-hourglass-2: "\f252"; +@fa-var-hourglass-3: "\f253"; +@fa-var-hourglass-end: "\f253"; +@fa-var-hourglass-half: "\f252"; +@fa-var-hourglass-o: "\f250"; +@fa-var-hourglass-start: "\f251"; +@fa-var-houzz: "\f27c"; +@fa-var-html5: "\f13b"; +@fa-var-i-cursor: "\f246"; +@fa-var-ils: "\f20b"; +@fa-var-image: "\f03e"; +@fa-var-inbox: "\f01c"; +@fa-var-indent: "\f03c"; +@fa-var-industry: "\f275"; +@fa-var-info: "\f129"; +@fa-var-info-circle: "\f05a"; +@fa-var-inr: "\f156"; +@fa-var-instagram: "\f16d"; +@fa-var-institution: "\f19c"; +@fa-var-internet-explorer: "\f26b"; +@fa-var-intersex: "\f224"; +@fa-var-ioxhost: "\f208"; +@fa-var-italic: "\f033"; +@fa-var-joomla: "\f1aa"; +@fa-var-jpy: "\f157"; +@fa-var-jsfiddle: "\f1cc"; +@fa-var-key: "\f084"; +@fa-var-keyboard-o: "\f11c"; +@fa-var-krw: "\f159"; +@fa-var-language: "\f1ab"; +@fa-var-laptop: "\f109"; +@fa-var-lastfm: "\f202"; +@fa-var-lastfm-square: "\f203"; +@fa-var-leaf: "\f06c"; +@fa-var-leanpub: "\f212"; +@fa-var-legal: "\f0e3"; +@fa-var-lemon-o: "\f094"; +@fa-var-level-down: "\f149"; +@fa-var-level-up: "\f148"; +@fa-var-life-bouy: "\f1cd"; +@fa-var-life-buoy: "\f1cd"; +@fa-var-life-ring: "\f1cd"; +@fa-var-life-saver: "\f1cd"; +@fa-var-lightbulb-o: "\f0eb"; +@fa-var-line-chart: "\f201"; +@fa-var-link: "\f0c1"; +@fa-var-linkedin: "\f0e1"; +@fa-var-linkedin-square: "\f08c"; +@fa-var-linux: "\f17c"; +@fa-var-list: "\f03a"; +@fa-var-list-alt: "\f022"; +@fa-var-list-ol: "\f0cb"; +@fa-var-list-ul: "\f0ca"; +@fa-var-location-arrow: "\f124"; +@fa-var-lock: "\f023"; +@fa-var-long-arrow-down: "\f175"; +@fa-var-long-arrow-left: "\f177"; +@fa-var-long-arrow-right: "\f178"; +@fa-var-long-arrow-up: "\f176"; +@fa-var-low-vision: "\f2a8"; +@fa-var-magic: "\f0d0"; +@fa-var-magnet: "\f076"; +@fa-var-mail-forward: "\f064"; +@fa-var-mail-reply: "\f112"; +@fa-var-mail-reply-all: "\f122"; +@fa-var-male: "\f183"; +@fa-var-map: "\f279"; +@fa-var-map-marker: "\f041"; +@fa-var-map-o: "\f278"; +@fa-var-map-pin: "\f276"; +@fa-var-map-signs: "\f277"; +@fa-var-mars: "\f222"; +@fa-var-mars-double: "\f227"; +@fa-var-mars-stroke: "\f229"; +@fa-var-mars-stroke-h: "\f22b"; +@fa-var-mars-stroke-v: "\f22a"; +@fa-var-maxcdn: "\f136"; +@fa-var-meanpath: "\f20c"; +@fa-var-medium: "\f23a"; +@fa-var-medkit: "\f0fa"; +@fa-var-meh-o: "\f11a"; +@fa-var-mercury: "\f223"; +@fa-var-microphone: "\f130"; +@fa-var-microphone-slash: "\f131"; +@fa-var-minus: "\f068"; +@fa-var-minus-circle: "\f056"; +@fa-var-minus-square: "\f146"; +@fa-var-minus-square-o: "\f147"; +@fa-var-mixcloud: "\f289"; +@fa-var-mobile: "\f10b"; +@fa-var-mobile-phone: "\f10b"; +@fa-var-modx: "\f285"; +@fa-var-money: "\f0d6"; +@fa-var-moon-o: "\f186"; +@fa-var-mortar-board: "\f19d"; +@fa-var-motorcycle: "\f21c"; +@fa-var-mouse-pointer: "\f245"; +@fa-var-music: "\f001"; +@fa-var-navicon: "\f0c9"; +@fa-var-neuter: "\f22c"; +@fa-var-newspaper-o: "\f1ea"; +@fa-var-object-group: "\f247"; +@fa-var-object-ungroup: "\f248"; +@fa-var-odnoklassniki: "\f263"; +@fa-var-odnoklassniki-square: "\f264"; +@fa-var-opencart: "\f23d"; +@fa-var-openid: "\f19b"; +@fa-var-opera: "\f26a"; +@fa-var-optin-monster: "\f23c"; +@fa-var-outdent: "\f03b"; +@fa-var-pagelines: "\f18c"; +@fa-var-paint-brush: "\f1fc"; +@fa-var-paper-plane: "\f1d8"; +@fa-var-paper-plane-o: "\f1d9"; +@fa-var-paperclip: "\f0c6"; +@fa-var-paragraph: "\f1dd"; +@fa-var-paste: "\f0ea"; +@fa-var-pause: "\f04c"; +@fa-var-pause-circle: "\f28b"; +@fa-var-pause-circle-o: "\f28c"; +@fa-var-paw: "\f1b0"; +@fa-var-paypal: "\f1ed"; +@fa-var-pencil: "\f040"; +@fa-var-pencil-square: "\f14b"; +@fa-var-pencil-square-o: "\f044"; +@fa-var-percent: "\f295"; +@fa-var-phone: "\f095"; +@fa-var-phone-square: "\f098"; +@fa-var-photo: "\f03e"; +@fa-var-picture-o: "\f03e"; +@fa-var-pie-chart: "\f200"; +@fa-var-pied-piper: "\f2ae"; +@fa-var-pied-piper-alt: "\f1a8"; +@fa-var-pied-piper-pp: "\f1a7"; +@fa-var-pinterest: "\f0d2"; +@fa-var-pinterest-p: "\f231"; +@fa-var-pinterest-square: "\f0d3"; +@fa-var-plane: "\f072"; +@fa-var-play: "\f04b"; +@fa-var-play-circle: "\f144"; +@fa-var-play-circle-o: "\f01d"; +@fa-var-plug: "\f1e6"; +@fa-var-plus: "\f067"; +@fa-var-plus-circle: "\f055"; +@fa-var-plus-square: "\f0fe"; +@fa-var-plus-square-o: "\f196"; +@fa-var-power-off: "\f011"; +@fa-var-print: "\f02f"; +@fa-var-product-hunt: "\f288"; +@fa-var-puzzle-piece: "\f12e"; +@fa-var-qq: "\f1d6"; +@fa-var-qrcode: "\f029"; +@fa-var-question: "\f128"; +@fa-var-question-circle: "\f059"; +@fa-var-question-circle-o: "\f29c"; +@fa-var-quote-left: "\f10d"; +@fa-var-quote-right: "\f10e"; +@fa-var-ra: "\f1d0"; +@fa-var-random: "\f074"; +@fa-var-rebel: "\f1d0"; +@fa-var-recycle: "\f1b8"; +@fa-var-reddit: "\f1a1"; +@fa-var-reddit-alien: "\f281"; +@fa-var-reddit-square: "\f1a2"; +@fa-var-refresh: "\f021"; +@fa-var-registered: "\f25d"; +@fa-var-remove: "\f00d"; +@fa-var-renren: "\f18b"; +@fa-var-reorder: "\f0c9"; +@fa-var-repeat: "\f01e"; +@fa-var-reply: "\f112"; +@fa-var-reply-all: "\f122"; +@fa-var-resistance: "\f1d0"; +@fa-var-retweet: "\f079"; +@fa-var-rmb: "\f157"; +@fa-var-road: "\f018"; +@fa-var-rocket: "\f135"; +@fa-var-rotate-left: "\f0e2"; +@fa-var-rotate-right: "\f01e"; +@fa-var-rouble: "\f158"; +@fa-var-rss: "\f09e"; +@fa-var-rss-square: "\f143"; +@fa-var-rub: "\f158"; +@fa-var-ruble: "\f158"; +@fa-var-rupee: "\f156"; +@fa-var-safari: "\f267"; +@fa-var-save: "\f0c7"; +@fa-var-scissors: "\f0c4"; +@fa-var-scribd: "\f28a"; +@fa-var-search: "\f002"; +@fa-var-search-minus: "\f010"; +@fa-var-search-plus: "\f00e"; +@fa-var-sellsy: "\f213"; +@fa-var-send: "\f1d8"; +@fa-var-send-o: "\f1d9"; +@fa-var-server: "\f233"; +@fa-var-share: "\f064"; +@fa-var-share-alt: "\f1e0"; +@fa-var-share-alt-square: "\f1e1"; +@fa-var-share-square: "\f14d"; +@fa-var-share-square-o: "\f045"; +@fa-var-shekel: "\f20b"; +@fa-var-sheqel: "\f20b"; +@fa-var-shield: "\f132"; +@fa-var-ship: "\f21a"; +@fa-var-shirtsinbulk: "\f214"; +@fa-var-shopping-bag: "\f290"; +@fa-var-shopping-basket: "\f291"; +@fa-var-shopping-cart: "\f07a"; +@fa-var-sign-in: "\f090"; +@fa-var-sign-language: "\f2a7"; +@fa-var-sign-out: "\f08b"; +@fa-var-signal: "\f012"; +@fa-var-signing: "\f2a7"; +@fa-var-simplybuilt: "\f215"; +@fa-var-sitemap: "\f0e8"; +@fa-var-skyatlas: "\f216"; +@fa-var-skype: "\f17e"; +@fa-var-slack: "\f198"; +@fa-var-sliders: "\f1de"; +@fa-var-slideshare: "\f1e7"; +@fa-var-smile-o: "\f118"; +@fa-var-snapchat: "\f2ab"; +@fa-var-snapchat-ghost: "\f2ac"; +@fa-var-snapchat-square: "\f2ad"; +@fa-var-soccer-ball-o: "\f1e3"; +@fa-var-sort: "\f0dc"; +@fa-var-sort-alpha-asc: "\f15d"; +@fa-var-sort-alpha-desc: "\f15e"; +@fa-var-sort-amount-asc: "\f160"; +@fa-var-sort-amount-desc: "\f161"; +@fa-var-sort-asc: "\f0de"; +@fa-var-sort-desc: "\f0dd"; +@fa-var-sort-down: "\f0dd"; +@fa-var-sort-numeric-asc: "\f162"; +@fa-var-sort-numeric-desc: "\f163"; +@fa-var-sort-up: "\f0de"; +@fa-var-soundcloud: "\f1be"; +@fa-var-space-shuttle: "\f197"; +@fa-var-spinner: "\f110"; +@fa-var-spoon: "\f1b1"; +@fa-var-spotify: "\f1bc"; +@fa-var-square: "\f0c8"; +@fa-var-square-o: "\f096"; +@fa-var-stack-exchange: "\f18d"; +@fa-var-stack-overflow: "\f16c"; +@fa-var-star: "\f005"; +@fa-var-star-half: "\f089"; +@fa-var-star-half-empty: "\f123"; +@fa-var-star-half-full: "\f123"; +@fa-var-star-half-o: "\f123"; +@fa-var-star-o: "\f006"; +@fa-var-steam: "\f1b6"; +@fa-var-steam-square: "\f1b7"; +@fa-var-step-backward: "\f048"; +@fa-var-step-forward: "\f051"; +@fa-var-stethoscope: "\f0f1"; +@fa-var-sticky-note: "\f249"; +@fa-var-sticky-note-o: "\f24a"; +@fa-var-stop: "\f04d"; +@fa-var-stop-circle: "\f28d"; +@fa-var-stop-circle-o: "\f28e"; +@fa-var-street-view: "\f21d"; +@fa-var-strikethrough: "\f0cc"; +@fa-var-stumbleupon: "\f1a4"; +@fa-var-stumbleupon-circle: "\f1a3"; +@fa-var-subscript: "\f12c"; +@fa-var-subway: "\f239"; +@fa-var-suitcase: "\f0f2"; +@fa-var-sun-o: "\f185"; +@fa-var-superscript: "\f12b"; +@fa-var-support: "\f1cd"; +@fa-var-table: "\f0ce"; +@fa-var-tablet: "\f10a"; +@fa-var-tachometer: "\f0e4"; +@fa-var-tag: "\f02b"; +@fa-var-tags: "\f02c"; +@fa-var-tasks: "\f0ae"; +@fa-var-taxi: "\f1ba"; +@fa-var-television: "\f26c"; +@fa-var-tencent-weibo: "\f1d5"; +@fa-var-terminal: "\f120"; +@fa-var-text-height: "\f034"; +@fa-var-text-width: "\f035"; +@fa-var-th: "\f00a"; +@fa-var-th-large: "\f009"; +@fa-var-th-list: "\f00b"; +@fa-var-themeisle: "\f2b2"; +@fa-var-thumb-tack: "\f08d"; +@fa-var-thumbs-down: "\f165"; +@fa-var-thumbs-o-down: "\f088"; +@fa-var-thumbs-o-up: "\f087"; +@fa-var-thumbs-up: "\f164"; +@fa-var-ticket: "\f145"; +@fa-var-times: "\f00d"; +@fa-var-times-circle: "\f057"; +@fa-var-times-circle-o: "\f05c"; +@fa-var-tint: "\f043"; +@fa-var-toggle-down: "\f150"; +@fa-var-toggle-left: "\f191"; +@fa-var-toggle-off: "\f204"; +@fa-var-toggle-on: "\f205"; +@fa-var-toggle-right: "\f152"; +@fa-var-toggle-up: "\f151"; +@fa-var-trademark: "\f25c"; +@fa-var-train: "\f238"; +@fa-var-transgender: "\f224"; +@fa-var-transgender-alt: "\f225"; +@fa-var-trash: "\f1f8"; +@fa-var-trash-o: "\f014"; +@fa-var-tree: "\f1bb"; +@fa-var-trello: "\f181"; +@fa-var-tripadvisor: "\f262"; +@fa-var-trophy: "\f091"; +@fa-var-truck: "\f0d1"; +@fa-var-try: "\f195"; +@fa-var-tty: "\f1e4"; +@fa-var-tumblr: "\f173"; +@fa-var-tumblr-square: "\f174"; +@fa-var-turkish-lira: "\f195"; +@fa-var-tv: "\f26c"; +@fa-var-twitch: "\f1e8"; +@fa-var-twitter: "\f099"; +@fa-var-twitter-square: "\f081"; +@fa-var-umbrella: "\f0e9"; +@fa-var-underline: "\f0cd"; +@fa-var-undo: "\f0e2"; +@fa-var-universal-access: "\f29a"; +@fa-var-university: "\f19c"; +@fa-var-unlink: "\f127"; +@fa-var-unlock: "\f09c"; +@fa-var-unlock-alt: "\f13e"; +@fa-var-unsorted: "\f0dc"; +@fa-var-upload: "\f093"; +@fa-var-usb: "\f287"; +@fa-var-usd: "\f155"; +@fa-var-user: "\f007"; +@fa-var-user-md: "\f0f0"; +@fa-var-user-plus: "\f234"; +@fa-var-user-secret: "\f21b"; +@fa-var-user-times: "\f235"; +@fa-var-users: "\f0c0"; +@fa-var-venus: "\f221"; +@fa-var-venus-double: "\f226"; +@fa-var-venus-mars: "\f228"; +@fa-var-viacoin: "\f237"; +@fa-var-viadeo: "\f2a9"; +@fa-var-viadeo-square: "\f2aa"; +@fa-var-video-camera: "\f03d"; +@fa-var-vimeo: "\f27d"; +@fa-var-vimeo-square: "\f194"; +@fa-var-vine: "\f1ca"; +@fa-var-vk: "\f189"; +@fa-var-volume-control-phone: "\f2a0"; +@fa-var-volume-down: "\f027"; +@fa-var-volume-off: "\f026"; +@fa-var-volume-up: "\f028"; +@fa-var-warning: "\f071"; +@fa-var-wechat: "\f1d7"; +@fa-var-weibo: "\f18a"; +@fa-var-weixin: "\f1d7"; +@fa-var-whatsapp: "\f232"; +@fa-var-wheelchair: "\f193"; +@fa-var-wheelchair-alt: "\f29b"; +@fa-var-wifi: "\f1eb"; +@fa-var-wikipedia-w: "\f266"; +@fa-var-windows: "\f17a"; +@fa-var-won: "\f159"; +@fa-var-wordpress: "\f19a"; +@fa-var-wpbeginner: "\f297"; +@fa-var-wpforms: "\f298"; +@fa-var-wrench: "\f0ad"; +@fa-var-xing: "\f168"; +@fa-var-xing-square: "\f169"; +@fa-var-y-combinator: "\f23b"; +@fa-var-y-combinator-square: "\f1d4"; +@fa-var-yahoo: "\f19e"; +@fa-var-yc: "\f23b"; +@fa-var-yc-square: "\f1d4"; +@fa-var-yelp: "\f1e9"; +@fa-var-yen: "\f157"; +@fa-var-yoast: "\f2b1"; +@fa-var-youtube: "\f167"; +@fa-var-youtube-play: "\f16a"; +@fa-var-youtube-square: "\f166"; + diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_animated.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_animated.scss new file mode 100644 index 0000000000..8a020dbfff --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_animated.scss @@ -0,0 +1,34 @@ +// Spinning Icons +// -------------------------- + +.#{$fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.#{$fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_bordered-pulled.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_bordered-pulled.scss new file mode 100644 index 0000000000..d4b85a02f2 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_bordered-pulled.scss @@ -0,0 +1,25 @@ +// Bordered & Pulled +// ------------------------- + +.#{$fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em $fa-border-color; + border-radius: .1em; +} + +.#{$fa-css-prefix}-pull-left { float: left; } +.#{$fa-css-prefix}-pull-right { float: right; } + +.#{$fa-css-prefix} { + &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } + &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ +.pull-right { float: right; } +.pull-left { float: left; } + +.#{$fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_core.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_core.scss new file mode 100644 index 0000000000..7425ef85fc --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_core.scss @@ -0,0 +1,12 @@ +// Base Class Definition +// ------------------------- + +.#{$fa-css-prefix} { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_fixed-width.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_fixed-width.scss new file mode 100644 index 0000000000..b221c98133 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_fixed-width.scss @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.#{$fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_icons.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_icons.scss new file mode 100644 index 0000000000..2944344350 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_icons.scss @@ -0,0 +1,733 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } +.#{$fa-css-prefix}-music:before { content: $fa-var-music; } +.#{$fa-css-prefix}-search:before { content: $fa-var-search; } +.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } +.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } +.#{$fa-css-prefix}-star:before { content: $fa-var-star; } +.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } +.#{$fa-css-prefix}-user:before { content: $fa-var-user; } +.#{$fa-css-prefix}-film:before { content: $fa-var-film; } +.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } +.#{$fa-css-prefix}-th:before { content: $fa-var-th; } +.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } +.#{$fa-css-prefix}-check:before { content: $fa-var-check; } +.#{$fa-css-prefix}-remove:before, +.#{$fa-css-prefix}-close:before, +.#{$fa-css-prefix}-times:before { content: $fa-var-times; } +.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } +.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } +.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } +.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } +.#{$fa-css-prefix}-gear:before, +.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } +.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } +.#{$fa-css-prefix}-home:before { content: $fa-var-home; } +.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } +.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } +.#{$fa-css-prefix}-road:before { content: $fa-var-road; } +.#{$fa-css-prefix}-download:before { content: $fa-var-download; } +.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } +.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } +.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } +.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } +.#{$fa-css-prefix}-rotate-right:before, +.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } +.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } +.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } +.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } +.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } +.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } +.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } +.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } +.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } +.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } +.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } +.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } +.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } +.#{$fa-css-prefix}-book:before { content: $fa-var-book; } +.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } +.#{$fa-css-prefix}-print:before { content: $fa-var-print; } +.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } +.#{$fa-css-prefix}-font:before { content: $fa-var-font; } +.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } +.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } +.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } +.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } +.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } +.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } +.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } +.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } +.#{$fa-css-prefix}-list:before { content: $fa-var-list; } +.#{$fa-css-prefix}-dedent:before, +.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } +.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } +.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } +.#{$fa-css-prefix}-photo:before, +.#{$fa-css-prefix}-image:before, +.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } +.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } +.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } +.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } +.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } +.#{$fa-css-prefix}-edit:before, +.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } +.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } +.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } +.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } +.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } +.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } +.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } +.#{$fa-css-prefix}-play:before { content: $fa-var-play; } +.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } +.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } +.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } +.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } +.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } +.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } +.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } +.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } +.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } +.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } +.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } +.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } +.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } +.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } +.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } +.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } +.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } +.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } +.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } +.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } +.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } +.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } +.#{$fa-css-prefix}-mail-forward:before, +.#{$fa-css-prefix}-share:before { content: $fa-var-share; } +.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } +.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } +.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } +.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } +.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } +.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } +.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } +.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } +.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } +.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } +.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } +.#{$fa-css-prefix}-warning:before, +.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } +.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } +.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } +.#{$fa-css-prefix}-random:before { content: $fa-var-random; } +.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } +.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } +.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } +.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } +.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } +.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } +.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } +.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } +.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } +.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } +.#{$fa-css-prefix}-bar-chart-o:before, +.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } +.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } +.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } +.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } +.#{$fa-css-prefix}-key:before { content: $fa-var-key; } +.#{$fa-css-prefix}-gears:before, +.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } +.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } +.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } +.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } +.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } +.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } +.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } +.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } +.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } +.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } +.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } +.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } +.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } +.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } +.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } +.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } +.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } +.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } +.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } +.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } +.#{$fa-css-prefix}-facebook-f:before, +.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } +.#{$fa-css-prefix}-github:before { content: $fa-var-github; } +.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } +.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } +.#{$fa-css-prefix}-feed:before, +.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } +.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } +.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } +.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } +.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } +.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } +.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } +.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } +.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } +.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } +.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } +.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } +.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } +.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } +.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } +.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } +.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } +.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } +.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } +.#{$fa-css-prefix}-group:before, +.#{$fa-css-prefix}-users:before { content: $fa-var-users; } +.#{$fa-css-prefix}-chain:before, +.#{$fa-css-prefix}-link:before { content: $fa-var-link; } +.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } +.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } +.#{$fa-css-prefix}-cut:before, +.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } +.#{$fa-css-prefix}-copy:before, +.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } +.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } +.#{$fa-css-prefix}-save:before, +.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } +.#{$fa-css-prefix}-square:before { content: $fa-var-square; } +.#{$fa-css-prefix}-navicon:before, +.#{$fa-css-prefix}-reorder:before, +.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } +.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } +.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } +.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } +.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } +.#{$fa-css-prefix}-table:before { content: $fa-var-table; } +.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } +.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } +.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } +.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } +.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } +.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } +.#{$fa-css-prefix}-money:before { content: $fa-var-money; } +.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } +.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } +.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } +.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } +.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } +.#{$fa-css-prefix}-unsorted:before, +.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } +.#{$fa-css-prefix}-sort-down:before, +.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } +.#{$fa-css-prefix}-sort-up:before, +.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } +.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } +.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } +.#{$fa-css-prefix}-rotate-left:before, +.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } +.#{$fa-css-prefix}-legal:before, +.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } +.#{$fa-css-prefix}-dashboard:before, +.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } +.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } +.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } +.#{$fa-css-prefix}-flash:before, +.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } +.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } +.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } +.#{$fa-css-prefix}-paste:before, +.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } +.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } +.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } +.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } +.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } +.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } +.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } +.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } +.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } +.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } +.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } +.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } +.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } +.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } +.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } +.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } +.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } +.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } +.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } +.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } +.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } +.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } +.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } +.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } +.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } +.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } +.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } +.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } +.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } +.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } +.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } +.#{$fa-css-prefix}-mobile-phone:before, +.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } +.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } +.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } +.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } +.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } +.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } +.#{$fa-css-prefix}-mail-reply:before, +.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } +.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } +.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } +.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } +.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } +.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } +.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } +.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } +.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } +.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } +.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } +.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } +.#{$fa-css-prefix}-code:before { content: $fa-var-code; } +.#{$fa-css-prefix}-mail-reply-all:before, +.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } +.#{$fa-css-prefix}-star-half-empty:before, +.#{$fa-css-prefix}-star-half-full:before, +.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } +.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } +.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } +.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } +.#{$fa-css-prefix}-unlink:before, +.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } +.#{$fa-css-prefix}-question:before { content: $fa-var-question; } +.#{$fa-css-prefix}-info:before { content: $fa-var-info; } +.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } +.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } +.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } +.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } +.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } +.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } +.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } +.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } +.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } +.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } +.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } +.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } +.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } +.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } +.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } +.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } +.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } +.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } +.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } +.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } +.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } +.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } +.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } +.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } +.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } +.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } +.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } +.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } +.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } +.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } +.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } +.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } +.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } +.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } +.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } +.#{$fa-css-prefix}-toggle-down:before, +.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } +.#{$fa-css-prefix}-toggle-up:before, +.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } +.#{$fa-css-prefix}-toggle-right:before, +.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } +.#{$fa-css-prefix}-euro:before, +.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } +.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } +.#{$fa-css-prefix}-dollar:before, +.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } +.#{$fa-css-prefix}-rupee:before, +.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } +.#{$fa-css-prefix}-cny:before, +.#{$fa-css-prefix}-rmb:before, +.#{$fa-css-prefix}-yen:before, +.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } +.#{$fa-css-prefix}-ruble:before, +.#{$fa-css-prefix}-rouble:before, +.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } +.#{$fa-css-prefix}-won:before, +.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } +.#{$fa-css-prefix}-bitcoin:before, +.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } +.#{$fa-css-prefix}-file:before { content: $fa-var-file; } +.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } +.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } +.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } +.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } +.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } +.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } +.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } +.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } +.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } +.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } +.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } +.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } +.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } +.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } +.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } +.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } +.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } +.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } +.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } +.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } +.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } +.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } +.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } +.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } +.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } +.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } +.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } +.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } +.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } +.#{$fa-css-prefix}-android:before { content: $fa-var-android; } +.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } +.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } +.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } +.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } +.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } +.#{$fa-css-prefix}-female:before { content: $fa-var-female; } +.#{$fa-css-prefix}-male:before { content: $fa-var-male; } +.#{$fa-css-prefix}-gittip:before, +.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } +.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } +.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } +.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } +.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } +.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } +.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } +.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } +.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } +.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } +.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } +.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } +.#{$fa-css-prefix}-toggle-left:before, +.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } +.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } +.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } +.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } +.#{$fa-css-prefix}-turkish-lira:before, +.#{$fa-css-prefix}-try:before { content: $fa-var-try; } +.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } +.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } +.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } +.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } +.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } +.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } +.#{$fa-css-prefix}-institution:before, +.#{$fa-css-prefix}-bank:before, +.#{$fa-css-prefix}-university:before { content: $fa-var-university; } +.#{$fa-css-prefix}-mortar-board:before, +.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } +.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } +.#{$fa-css-prefix}-google:before { content: $fa-var-google; } +.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } +.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } +.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } +.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } +.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } +.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } +.#{$fa-css-prefix}-pied-piper-pp:before { content: $fa-var-pied-piper-pp; } +.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } +.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } +.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } +.#{$fa-css-prefix}-language:before { content: $fa-var-language; } +.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } +.#{$fa-css-prefix}-building:before { content: $fa-var-building; } +.#{$fa-css-prefix}-child:before { content: $fa-var-child; } +.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } +.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } +.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } +.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } +.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } +.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } +.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } +.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } +.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } +.#{$fa-css-prefix}-automobile:before, +.#{$fa-css-prefix}-car:before { content: $fa-var-car; } +.#{$fa-css-prefix}-cab:before, +.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } +.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } +.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } +.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } +.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } +.#{$fa-css-prefix}-database:before { content: $fa-var-database; } +.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } +.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } +.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } +.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } +.#{$fa-css-prefix}-file-photo-o:before, +.#{$fa-css-prefix}-file-picture-o:before, +.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } +.#{$fa-css-prefix}-file-zip-o:before, +.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } +.#{$fa-css-prefix}-file-sound-o:before, +.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } +.#{$fa-css-prefix}-file-movie-o:before, +.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } +.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } +.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } +.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } +.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } +.#{$fa-css-prefix}-life-bouy:before, +.#{$fa-css-prefix}-life-buoy:before, +.#{$fa-css-prefix}-life-saver:before, +.#{$fa-css-prefix}-support:before, +.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } +.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } +.#{$fa-css-prefix}-ra:before, +.#{$fa-css-prefix}-resistance:before, +.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } +.#{$fa-css-prefix}-ge:before, +.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } +.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } +.#{$fa-css-prefix}-git:before { content: $fa-var-git; } +.#{$fa-css-prefix}-y-combinator-square:before, +.#{$fa-css-prefix}-yc-square:before, +.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } +.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } +.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } +.#{$fa-css-prefix}-wechat:before, +.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } +.#{$fa-css-prefix}-send:before, +.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } +.#{$fa-css-prefix}-send-o:before, +.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } +.#{$fa-css-prefix}-history:before { content: $fa-var-history; } +.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } +.#{$fa-css-prefix}-header:before { content: $fa-var-header; } +.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } +.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } +.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } +.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } +.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } +.#{$fa-css-prefix}-soccer-ball-o:before, +.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } +.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } +.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } +.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } +.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } +.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } +.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } +.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } +.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } +.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } +.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } +.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } +.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } +.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } +.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } +.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } +.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } +.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } +.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } +.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } +.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } +.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } +.#{$fa-css-prefix}-at:before { content: $fa-var-at; } +.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } +.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } +.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } +.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } +.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } +.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } +.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } +.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } +.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } +.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } +.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } +.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } +.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } +.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } +.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } +.#{$fa-css-prefix}-shekel:before, +.#{$fa-css-prefix}-sheqel:before, +.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } +.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } +.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } +.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } +.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } +.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } +.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } +.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } +.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } +.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } +.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } +.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } +.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } +.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } +.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } +.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } +.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } +.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } +.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } +.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } +.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } +.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } +.#{$fa-css-prefix}-intersex:before, +.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } +.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } +.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } +.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } +.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } +.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } +.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } +.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } +.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } +.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } +.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } +.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } +.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } +.#{$fa-css-prefix}-server:before { content: $fa-var-server; } +.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } +.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } +.#{$fa-css-prefix}-hotel:before, +.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } +.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } +.#{$fa-css-prefix}-train:before { content: $fa-var-train; } +.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } +.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } +.#{$fa-css-prefix}-yc:before, +.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } +.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } +.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } +.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } +.#{$fa-css-prefix}-battery-4:before, +.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } +.#{$fa-css-prefix}-battery-3:before, +.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } +.#{$fa-css-prefix}-battery-2:before, +.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } +.#{$fa-css-prefix}-battery-1:before, +.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } +.#{$fa-css-prefix}-battery-0:before, +.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } +.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } +.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } +.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } +.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } +.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } +.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } +.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } +.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } +.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } +.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } +.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } +.#{$fa-css-prefix}-hourglass-1:before, +.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } +.#{$fa-css-prefix}-hourglass-2:before, +.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } +.#{$fa-css-prefix}-hourglass-3:before, +.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } +.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } +.#{$fa-css-prefix}-hand-grab-o:before, +.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } +.#{$fa-css-prefix}-hand-stop-o:before, +.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } +.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } +.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } +.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } +.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } +.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } +.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } +.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } +.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } +.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } +.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } +.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } +.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } +.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } +.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } +.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } +.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } +.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } +.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } +.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } +.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } +.#{$fa-css-prefix}-tv:before, +.#{$fa-css-prefix}-television:before { content: $fa-var-television; } +.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } +.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } +.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } +.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } +.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } +.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } +.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } +.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } +.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } +.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } +.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } +.#{$fa-css-prefix}-map:before { content: $fa-var-map; } +.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } +.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } +.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } +.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } +.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } +.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } +.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; } +.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; } +.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; } +.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; } +.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; } +.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; } +.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; } +.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; } +.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; } +.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; } +.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; } +.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; } +.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; } +.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; } +.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; } +.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; } +.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; } +.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; } +.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; } +.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; } +.#{$fa-css-prefix}-gitlab:before { content: $fa-var-gitlab; } +.#{$fa-css-prefix}-wpbeginner:before { content: $fa-var-wpbeginner; } +.#{$fa-css-prefix}-wpforms:before { content: $fa-var-wpforms; } +.#{$fa-css-prefix}-envira:before { content: $fa-var-envira; } +.#{$fa-css-prefix}-universal-access:before { content: $fa-var-universal-access; } +.#{$fa-css-prefix}-wheelchair-alt:before { content: $fa-var-wheelchair-alt; } +.#{$fa-css-prefix}-question-circle-o:before { content: $fa-var-question-circle-o; } +.#{$fa-css-prefix}-blind:before { content: $fa-var-blind; } +.#{$fa-css-prefix}-audio-description:before { content: $fa-var-audio-description; } +.#{$fa-css-prefix}-volume-control-phone:before { content: $fa-var-volume-control-phone; } +.#{$fa-css-prefix}-braille:before { content: $fa-var-braille; } +.#{$fa-css-prefix}-assistive-listening-systems:before { content: $fa-var-assistive-listening-systems; } +.#{$fa-css-prefix}-asl-interpreting:before, +.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: $fa-var-american-sign-language-interpreting; } +.#{$fa-css-prefix}-deafness:before, +.#{$fa-css-prefix}-hard-of-hearing:before, +.#{$fa-css-prefix}-deaf:before { content: $fa-var-deaf; } +.#{$fa-css-prefix}-glide:before { content: $fa-var-glide; } +.#{$fa-css-prefix}-glide-g:before { content: $fa-var-glide-g; } +.#{$fa-css-prefix}-signing:before, +.#{$fa-css-prefix}-sign-language:before { content: $fa-var-sign-language; } +.#{$fa-css-prefix}-low-vision:before { content: $fa-var-low-vision; } +.#{$fa-css-prefix}-viadeo:before { content: $fa-var-viadeo; } +.#{$fa-css-prefix}-viadeo-square:before { content: $fa-var-viadeo-square; } +.#{$fa-css-prefix}-snapchat:before { content: $fa-var-snapchat; } +.#{$fa-css-prefix}-snapchat-ghost:before { content: $fa-var-snapchat-ghost; } +.#{$fa-css-prefix}-snapchat-square:before { content: $fa-var-snapchat-square; } +.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } +.#{$fa-css-prefix}-first-order:before { content: $fa-var-first-order; } +.#{$fa-css-prefix}-yoast:before { content: $fa-var-yoast; } +.#{$fa-css-prefix}-themeisle:before { content: $fa-var-themeisle; } +.#{$fa-css-prefix}-google-plus-circle:before, +.#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; } +.#{$fa-css-prefix}-fa:before, +.#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_larger.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_larger.scss new file mode 100644 index 0000000000..41e9a8184a --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_larger.scss @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.#{$fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.#{$fa-css-prefix}-2x { font-size: 2em; } +.#{$fa-css-prefix}-3x { font-size: 3em; } +.#{$fa-css-prefix}-4x { font-size: 4em; } +.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_list.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_list.scss new file mode 100644 index 0000000000..7d1e4d54d6 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_list.scss @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.#{$fa-css-prefix}-ul { + padding-left: 0; + margin-left: $fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.#{$fa-css-prefix}-li { + position: absolute; + left: -$fa-li-width; + width: $fa-li-width; + top: (2em / 14); + text-align: center; + &.#{$fa-css-prefix}-lg { + left: -$fa-li-width + (4em / 14); + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_mixins.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_mixins.scss new file mode 100644 index 0000000000..c3bbd5745d --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_mixins.scss @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +@mixin fa-icon() { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +@mixin fa-icon-rotate($degrees, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; + -webkit-transform: rotate($degrees); + -ms-transform: rotate($degrees); + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; + -webkit-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +@mixin sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +@mixin sr-only-focusable { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_path.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_path.scss new file mode 100644 index 0000000000..bb457c23a8 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_path.scss @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); + src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), + url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), + url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), + url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), + url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); +// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_rotated-flipped.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_rotated-flipped.scss new file mode 100644 index 0000000000..a3558fd09c --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_rotated-flipped.scss @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } +.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } +.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } + +.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } +.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .#{$fa-css-prefix}-rotate-90, +:root .#{$fa-css-prefix}-rotate-180, +:root .#{$fa-css-prefix}-rotate-270, +:root .#{$fa-css-prefix}-flip-horizontal, +:root .#{$fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_screen-reader.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_screen-reader.scss new file mode 100644 index 0000000000..637426f0da --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_screen-reader.scss @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { @include sr-only(); } +.sr-only-focusable { @include sr-only-focusable(); } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_stacked.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_stacked.scss new file mode 100644 index 0000000000..aef7403660 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_stacked.scss @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.#{$fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.#{$fa-css-prefix}-stack-1x { line-height: inherit; } +.#{$fa-css-prefix}-stack-2x { font-size: 2em; } +.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_variables.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_variables.scss new file mode 100644 index 0000000000..a5a89ef97b --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_variables.scss @@ -0,0 +1,744 @@ +// Variables +// -------------------------- + +$fa-font-path: "../fonts" !default; +$fa-font-size-base: 14px !default; +$fa-line-height-base: 1 !default; +//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts" !default; // for referencing Bootstrap CDN font files directly +$fa-css-prefix: fa !default; +$fa-version: "4.6.3" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: (30em / 14) !default; + +$fa-var-500px: "\f26e"; +$fa-var-adjust: "\f042"; +$fa-var-adn: "\f170"; +$fa-var-align-center: "\f037"; +$fa-var-align-justify: "\f039"; +$fa-var-align-left: "\f036"; +$fa-var-align-right: "\f038"; +$fa-var-amazon: "\f270"; +$fa-var-ambulance: "\f0f9"; +$fa-var-american-sign-language-interpreting: "\f2a3"; +$fa-var-anchor: "\f13d"; +$fa-var-android: "\f17b"; +$fa-var-angellist: "\f209"; +$fa-var-angle-double-down: "\f103"; +$fa-var-angle-double-left: "\f100"; +$fa-var-angle-double-right: "\f101"; +$fa-var-angle-double-up: "\f102"; +$fa-var-angle-down: "\f107"; +$fa-var-angle-left: "\f104"; +$fa-var-angle-right: "\f105"; +$fa-var-angle-up: "\f106"; +$fa-var-apple: "\f179"; +$fa-var-archive: "\f187"; +$fa-var-area-chart: "\f1fe"; +$fa-var-arrow-circle-down: "\f0ab"; +$fa-var-arrow-circle-left: "\f0a8"; +$fa-var-arrow-circle-o-down: "\f01a"; +$fa-var-arrow-circle-o-left: "\f190"; +$fa-var-arrow-circle-o-right: "\f18e"; +$fa-var-arrow-circle-o-up: "\f01b"; +$fa-var-arrow-circle-right: "\f0a9"; +$fa-var-arrow-circle-up: "\f0aa"; +$fa-var-arrow-down: "\f063"; +$fa-var-arrow-left: "\f060"; +$fa-var-arrow-right: "\f061"; +$fa-var-arrow-up: "\f062"; +$fa-var-arrows: "\f047"; +$fa-var-arrows-alt: "\f0b2"; +$fa-var-arrows-h: "\f07e"; +$fa-var-arrows-v: "\f07d"; +$fa-var-asl-interpreting: "\f2a3"; +$fa-var-assistive-listening-systems: "\f2a2"; +$fa-var-asterisk: "\f069"; +$fa-var-at: "\f1fa"; +$fa-var-audio-description: "\f29e"; +$fa-var-automobile: "\f1b9"; +$fa-var-backward: "\f04a"; +$fa-var-balance-scale: "\f24e"; +$fa-var-ban: "\f05e"; +$fa-var-bank: "\f19c"; +$fa-var-bar-chart: "\f080"; +$fa-var-bar-chart-o: "\f080"; +$fa-var-barcode: "\f02a"; +$fa-var-bars: "\f0c9"; +$fa-var-battery-0: "\f244"; +$fa-var-battery-1: "\f243"; +$fa-var-battery-2: "\f242"; +$fa-var-battery-3: "\f241"; +$fa-var-battery-4: "\f240"; +$fa-var-battery-empty: "\f244"; +$fa-var-battery-full: "\f240"; +$fa-var-battery-half: "\f242"; +$fa-var-battery-quarter: "\f243"; +$fa-var-battery-three-quarters: "\f241"; +$fa-var-bed: "\f236"; +$fa-var-beer: "\f0fc"; +$fa-var-behance: "\f1b4"; +$fa-var-behance-square: "\f1b5"; +$fa-var-bell: "\f0f3"; +$fa-var-bell-o: "\f0a2"; +$fa-var-bell-slash: "\f1f6"; +$fa-var-bell-slash-o: "\f1f7"; +$fa-var-bicycle: "\f206"; +$fa-var-binoculars: "\f1e5"; +$fa-var-birthday-cake: "\f1fd"; +$fa-var-bitbucket: "\f171"; +$fa-var-bitbucket-square: "\f172"; +$fa-var-bitcoin: "\f15a"; +$fa-var-black-tie: "\f27e"; +$fa-var-blind: "\f29d"; +$fa-var-bluetooth: "\f293"; +$fa-var-bluetooth-b: "\f294"; +$fa-var-bold: "\f032"; +$fa-var-bolt: "\f0e7"; +$fa-var-bomb: "\f1e2"; +$fa-var-book: "\f02d"; +$fa-var-bookmark: "\f02e"; +$fa-var-bookmark-o: "\f097"; +$fa-var-braille: "\f2a1"; +$fa-var-briefcase: "\f0b1"; +$fa-var-btc: "\f15a"; +$fa-var-bug: "\f188"; +$fa-var-building: "\f1ad"; +$fa-var-building-o: "\f0f7"; +$fa-var-bullhorn: "\f0a1"; +$fa-var-bullseye: "\f140"; +$fa-var-bus: "\f207"; +$fa-var-buysellads: "\f20d"; +$fa-var-cab: "\f1ba"; +$fa-var-calculator: "\f1ec"; +$fa-var-calendar: "\f073"; +$fa-var-calendar-check-o: "\f274"; +$fa-var-calendar-minus-o: "\f272"; +$fa-var-calendar-o: "\f133"; +$fa-var-calendar-plus-o: "\f271"; +$fa-var-calendar-times-o: "\f273"; +$fa-var-camera: "\f030"; +$fa-var-camera-retro: "\f083"; +$fa-var-car: "\f1b9"; +$fa-var-caret-down: "\f0d7"; +$fa-var-caret-left: "\f0d9"; +$fa-var-caret-right: "\f0da"; +$fa-var-caret-square-o-down: "\f150"; +$fa-var-caret-square-o-left: "\f191"; +$fa-var-caret-square-o-right: "\f152"; +$fa-var-caret-square-o-up: "\f151"; +$fa-var-caret-up: "\f0d8"; +$fa-var-cart-arrow-down: "\f218"; +$fa-var-cart-plus: "\f217"; +$fa-var-cc: "\f20a"; +$fa-var-cc-amex: "\f1f3"; +$fa-var-cc-diners-club: "\f24c"; +$fa-var-cc-discover: "\f1f2"; +$fa-var-cc-jcb: "\f24b"; +$fa-var-cc-mastercard: "\f1f1"; +$fa-var-cc-paypal: "\f1f4"; +$fa-var-cc-stripe: "\f1f5"; +$fa-var-cc-visa: "\f1f0"; +$fa-var-certificate: "\f0a3"; +$fa-var-chain: "\f0c1"; +$fa-var-chain-broken: "\f127"; +$fa-var-check: "\f00c"; +$fa-var-check-circle: "\f058"; +$fa-var-check-circle-o: "\f05d"; +$fa-var-check-square: "\f14a"; +$fa-var-check-square-o: "\f046"; +$fa-var-chevron-circle-down: "\f13a"; +$fa-var-chevron-circle-left: "\f137"; +$fa-var-chevron-circle-right: "\f138"; +$fa-var-chevron-circle-up: "\f139"; +$fa-var-chevron-down: "\f078"; +$fa-var-chevron-left: "\f053"; +$fa-var-chevron-right: "\f054"; +$fa-var-chevron-up: "\f077"; +$fa-var-child: "\f1ae"; +$fa-var-chrome: "\f268"; +$fa-var-circle: "\f111"; +$fa-var-circle-o: "\f10c"; +$fa-var-circle-o-notch: "\f1ce"; +$fa-var-circle-thin: "\f1db"; +$fa-var-clipboard: "\f0ea"; +$fa-var-clock-o: "\f017"; +$fa-var-clone: "\f24d"; +$fa-var-close: "\f00d"; +$fa-var-cloud: "\f0c2"; +$fa-var-cloud-download: "\f0ed"; +$fa-var-cloud-upload: "\f0ee"; +$fa-var-cny: "\f157"; +$fa-var-code: "\f121"; +$fa-var-code-fork: "\f126"; +$fa-var-codepen: "\f1cb"; +$fa-var-codiepie: "\f284"; +$fa-var-coffee: "\f0f4"; +$fa-var-cog: "\f013"; +$fa-var-cogs: "\f085"; +$fa-var-columns: "\f0db"; +$fa-var-comment: "\f075"; +$fa-var-comment-o: "\f0e5"; +$fa-var-commenting: "\f27a"; +$fa-var-commenting-o: "\f27b"; +$fa-var-comments: "\f086"; +$fa-var-comments-o: "\f0e6"; +$fa-var-compass: "\f14e"; +$fa-var-compress: "\f066"; +$fa-var-connectdevelop: "\f20e"; +$fa-var-contao: "\f26d"; +$fa-var-copy: "\f0c5"; +$fa-var-copyright: "\f1f9"; +$fa-var-creative-commons: "\f25e"; +$fa-var-credit-card: "\f09d"; +$fa-var-credit-card-alt: "\f283"; +$fa-var-crop: "\f125"; +$fa-var-crosshairs: "\f05b"; +$fa-var-css3: "\f13c"; +$fa-var-cube: "\f1b2"; +$fa-var-cubes: "\f1b3"; +$fa-var-cut: "\f0c4"; +$fa-var-cutlery: "\f0f5"; +$fa-var-dashboard: "\f0e4"; +$fa-var-dashcube: "\f210"; +$fa-var-database: "\f1c0"; +$fa-var-deaf: "\f2a4"; +$fa-var-deafness: "\f2a4"; +$fa-var-dedent: "\f03b"; +$fa-var-delicious: "\f1a5"; +$fa-var-desktop: "\f108"; +$fa-var-deviantart: "\f1bd"; +$fa-var-diamond: "\f219"; +$fa-var-digg: "\f1a6"; +$fa-var-dollar: "\f155"; +$fa-var-dot-circle-o: "\f192"; +$fa-var-download: "\f019"; +$fa-var-dribbble: "\f17d"; +$fa-var-dropbox: "\f16b"; +$fa-var-drupal: "\f1a9"; +$fa-var-edge: "\f282"; +$fa-var-edit: "\f044"; +$fa-var-eject: "\f052"; +$fa-var-ellipsis-h: "\f141"; +$fa-var-ellipsis-v: "\f142"; +$fa-var-empire: "\f1d1"; +$fa-var-envelope: "\f0e0"; +$fa-var-envelope-o: "\f003"; +$fa-var-envelope-square: "\f199"; +$fa-var-envira: "\f299"; +$fa-var-eraser: "\f12d"; +$fa-var-eur: "\f153"; +$fa-var-euro: "\f153"; +$fa-var-exchange: "\f0ec"; +$fa-var-exclamation: "\f12a"; +$fa-var-exclamation-circle: "\f06a"; +$fa-var-exclamation-triangle: "\f071"; +$fa-var-expand: "\f065"; +$fa-var-expeditedssl: "\f23e"; +$fa-var-external-link: "\f08e"; +$fa-var-external-link-square: "\f14c"; +$fa-var-eye: "\f06e"; +$fa-var-eye-slash: "\f070"; +$fa-var-eyedropper: "\f1fb"; +$fa-var-fa: "\f2b4"; +$fa-var-facebook: "\f09a"; +$fa-var-facebook-f: "\f09a"; +$fa-var-facebook-official: "\f230"; +$fa-var-facebook-square: "\f082"; +$fa-var-fast-backward: "\f049"; +$fa-var-fast-forward: "\f050"; +$fa-var-fax: "\f1ac"; +$fa-var-feed: "\f09e"; +$fa-var-female: "\f182"; +$fa-var-fighter-jet: "\f0fb"; +$fa-var-file: "\f15b"; +$fa-var-file-archive-o: "\f1c6"; +$fa-var-file-audio-o: "\f1c7"; +$fa-var-file-code-o: "\f1c9"; +$fa-var-file-excel-o: "\f1c3"; +$fa-var-file-image-o: "\f1c5"; +$fa-var-file-movie-o: "\f1c8"; +$fa-var-file-o: "\f016"; +$fa-var-file-pdf-o: "\f1c1"; +$fa-var-file-photo-o: "\f1c5"; +$fa-var-file-picture-o: "\f1c5"; +$fa-var-file-powerpoint-o: "\f1c4"; +$fa-var-file-sound-o: "\f1c7"; +$fa-var-file-text: "\f15c"; +$fa-var-file-text-o: "\f0f6"; +$fa-var-file-video-o: "\f1c8"; +$fa-var-file-word-o: "\f1c2"; +$fa-var-file-zip-o: "\f1c6"; +$fa-var-files-o: "\f0c5"; +$fa-var-film: "\f008"; +$fa-var-filter: "\f0b0"; +$fa-var-fire: "\f06d"; +$fa-var-fire-extinguisher: "\f134"; +$fa-var-firefox: "\f269"; +$fa-var-first-order: "\f2b0"; +$fa-var-flag: "\f024"; +$fa-var-flag-checkered: "\f11e"; +$fa-var-flag-o: "\f11d"; +$fa-var-flash: "\f0e7"; +$fa-var-flask: "\f0c3"; +$fa-var-flickr: "\f16e"; +$fa-var-floppy-o: "\f0c7"; +$fa-var-folder: "\f07b"; +$fa-var-folder-o: "\f114"; +$fa-var-folder-open: "\f07c"; +$fa-var-folder-open-o: "\f115"; +$fa-var-font: "\f031"; +$fa-var-font-awesome: "\f2b4"; +$fa-var-fonticons: "\f280"; +$fa-var-fort-awesome: "\f286"; +$fa-var-forumbee: "\f211"; +$fa-var-forward: "\f04e"; +$fa-var-foursquare: "\f180"; +$fa-var-frown-o: "\f119"; +$fa-var-futbol-o: "\f1e3"; +$fa-var-gamepad: "\f11b"; +$fa-var-gavel: "\f0e3"; +$fa-var-gbp: "\f154"; +$fa-var-ge: "\f1d1"; +$fa-var-gear: "\f013"; +$fa-var-gears: "\f085"; +$fa-var-genderless: "\f22d"; +$fa-var-get-pocket: "\f265"; +$fa-var-gg: "\f260"; +$fa-var-gg-circle: "\f261"; +$fa-var-gift: "\f06b"; +$fa-var-git: "\f1d3"; +$fa-var-git-square: "\f1d2"; +$fa-var-github: "\f09b"; +$fa-var-github-alt: "\f113"; +$fa-var-github-square: "\f092"; +$fa-var-gitlab: "\f296"; +$fa-var-gittip: "\f184"; +$fa-var-glass: "\f000"; +$fa-var-glide: "\f2a5"; +$fa-var-glide-g: "\f2a6"; +$fa-var-globe: "\f0ac"; +$fa-var-google: "\f1a0"; +$fa-var-google-plus: "\f0d5"; +$fa-var-google-plus-circle: "\f2b3"; +$fa-var-google-plus-official: "\f2b3"; +$fa-var-google-plus-square: "\f0d4"; +$fa-var-google-wallet: "\f1ee"; +$fa-var-graduation-cap: "\f19d"; +$fa-var-gratipay: "\f184"; +$fa-var-group: "\f0c0"; +$fa-var-h-square: "\f0fd"; +$fa-var-hacker-news: "\f1d4"; +$fa-var-hand-grab-o: "\f255"; +$fa-var-hand-lizard-o: "\f258"; +$fa-var-hand-o-down: "\f0a7"; +$fa-var-hand-o-left: "\f0a5"; +$fa-var-hand-o-right: "\f0a4"; +$fa-var-hand-o-up: "\f0a6"; +$fa-var-hand-paper-o: "\f256"; +$fa-var-hand-peace-o: "\f25b"; +$fa-var-hand-pointer-o: "\f25a"; +$fa-var-hand-rock-o: "\f255"; +$fa-var-hand-scissors-o: "\f257"; +$fa-var-hand-spock-o: "\f259"; +$fa-var-hand-stop-o: "\f256"; +$fa-var-hard-of-hearing: "\f2a4"; +$fa-var-hashtag: "\f292"; +$fa-var-hdd-o: "\f0a0"; +$fa-var-header: "\f1dc"; +$fa-var-headphones: "\f025"; +$fa-var-heart: "\f004"; +$fa-var-heart-o: "\f08a"; +$fa-var-heartbeat: "\f21e"; +$fa-var-history: "\f1da"; +$fa-var-home: "\f015"; +$fa-var-hospital-o: "\f0f8"; +$fa-var-hotel: "\f236"; +$fa-var-hourglass: "\f254"; +$fa-var-hourglass-1: "\f251"; +$fa-var-hourglass-2: "\f252"; +$fa-var-hourglass-3: "\f253"; +$fa-var-hourglass-end: "\f253"; +$fa-var-hourglass-half: "\f252"; +$fa-var-hourglass-o: "\f250"; +$fa-var-hourglass-start: "\f251"; +$fa-var-houzz: "\f27c"; +$fa-var-html5: "\f13b"; +$fa-var-i-cursor: "\f246"; +$fa-var-ils: "\f20b"; +$fa-var-image: "\f03e"; +$fa-var-inbox: "\f01c"; +$fa-var-indent: "\f03c"; +$fa-var-industry: "\f275"; +$fa-var-info: "\f129"; +$fa-var-info-circle: "\f05a"; +$fa-var-inr: "\f156"; +$fa-var-instagram: "\f16d"; +$fa-var-institution: "\f19c"; +$fa-var-internet-explorer: "\f26b"; +$fa-var-intersex: "\f224"; +$fa-var-ioxhost: "\f208"; +$fa-var-italic: "\f033"; +$fa-var-joomla: "\f1aa"; +$fa-var-jpy: "\f157"; +$fa-var-jsfiddle: "\f1cc"; +$fa-var-key: "\f084"; +$fa-var-keyboard-o: "\f11c"; +$fa-var-krw: "\f159"; +$fa-var-language: "\f1ab"; +$fa-var-laptop: "\f109"; +$fa-var-lastfm: "\f202"; +$fa-var-lastfm-square: "\f203"; +$fa-var-leaf: "\f06c"; +$fa-var-leanpub: "\f212"; +$fa-var-legal: "\f0e3"; +$fa-var-lemon-o: "\f094"; +$fa-var-level-down: "\f149"; +$fa-var-level-up: "\f148"; +$fa-var-life-bouy: "\f1cd"; +$fa-var-life-buoy: "\f1cd"; +$fa-var-life-ring: "\f1cd"; +$fa-var-life-saver: "\f1cd"; +$fa-var-lightbulb-o: "\f0eb"; +$fa-var-line-chart: "\f201"; +$fa-var-link: "\f0c1"; +$fa-var-linkedin: "\f0e1"; +$fa-var-linkedin-square: "\f08c"; +$fa-var-linux: "\f17c"; +$fa-var-list: "\f03a"; +$fa-var-list-alt: "\f022"; +$fa-var-list-ol: "\f0cb"; +$fa-var-list-ul: "\f0ca"; +$fa-var-location-arrow: "\f124"; +$fa-var-lock: "\f023"; +$fa-var-long-arrow-down: "\f175"; +$fa-var-long-arrow-left: "\f177"; +$fa-var-long-arrow-right: "\f178"; +$fa-var-long-arrow-up: "\f176"; +$fa-var-low-vision: "\f2a8"; +$fa-var-magic: "\f0d0"; +$fa-var-magnet: "\f076"; +$fa-var-mail-forward: "\f064"; +$fa-var-mail-reply: "\f112"; +$fa-var-mail-reply-all: "\f122"; +$fa-var-male: "\f183"; +$fa-var-map: "\f279"; +$fa-var-map-marker: "\f041"; +$fa-var-map-o: "\f278"; +$fa-var-map-pin: "\f276"; +$fa-var-map-signs: "\f277"; +$fa-var-mars: "\f222"; +$fa-var-mars-double: "\f227"; +$fa-var-mars-stroke: "\f229"; +$fa-var-mars-stroke-h: "\f22b"; +$fa-var-mars-stroke-v: "\f22a"; +$fa-var-maxcdn: "\f136"; +$fa-var-meanpath: "\f20c"; +$fa-var-medium: "\f23a"; +$fa-var-medkit: "\f0fa"; +$fa-var-meh-o: "\f11a"; +$fa-var-mercury: "\f223"; +$fa-var-microphone: "\f130"; +$fa-var-microphone-slash: "\f131"; +$fa-var-minus: "\f068"; +$fa-var-minus-circle: "\f056"; +$fa-var-minus-square: "\f146"; +$fa-var-minus-square-o: "\f147"; +$fa-var-mixcloud: "\f289"; +$fa-var-mobile: "\f10b"; +$fa-var-mobile-phone: "\f10b"; +$fa-var-modx: "\f285"; +$fa-var-money: "\f0d6"; +$fa-var-moon-o: "\f186"; +$fa-var-mortar-board: "\f19d"; +$fa-var-motorcycle: "\f21c"; +$fa-var-mouse-pointer: "\f245"; +$fa-var-music: "\f001"; +$fa-var-navicon: "\f0c9"; +$fa-var-neuter: "\f22c"; +$fa-var-newspaper-o: "\f1ea"; +$fa-var-object-group: "\f247"; +$fa-var-object-ungroup: "\f248"; +$fa-var-odnoklassniki: "\f263"; +$fa-var-odnoklassniki-square: "\f264"; +$fa-var-opencart: "\f23d"; +$fa-var-openid: "\f19b"; +$fa-var-opera: "\f26a"; +$fa-var-optin-monster: "\f23c"; +$fa-var-outdent: "\f03b"; +$fa-var-pagelines: "\f18c"; +$fa-var-paint-brush: "\f1fc"; +$fa-var-paper-plane: "\f1d8"; +$fa-var-paper-plane-o: "\f1d9"; +$fa-var-paperclip: "\f0c6"; +$fa-var-paragraph: "\f1dd"; +$fa-var-paste: "\f0ea"; +$fa-var-pause: "\f04c"; +$fa-var-pause-circle: "\f28b"; +$fa-var-pause-circle-o: "\f28c"; +$fa-var-paw: "\f1b0"; +$fa-var-paypal: "\f1ed"; +$fa-var-pencil: "\f040"; +$fa-var-pencil-square: "\f14b"; +$fa-var-pencil-square-o: "\f044"; +$fa-var-percent: "\f295"; +$fa-var-phone: "\f095"; +$fa-var-phone-square: "\f098"; +$fa-var-photo: "\f03e"; +$fa-var-picture-o: "\f03e"; +$fa-var-pie-chart: "\f200"; +$fa-var-pied-piper: "\f2ae"; +$fa-var-pied-piper-alt: "\f1a8"; +$fa-var-pied-piper-pp: "\f1a7"; +$fa-var-pinterest: "\f0d2"; +$fa-var-pinterest-p: "\f231"; +$fa-var-pinterest-square: "\f0d3"; +$fa-var-plane: "\f072"; +$fa-var-play: "\f04b"; +$fa-var-play-circle: "\f144"; +$fa-var-play-circle-o: "\f01d"; +$fa-var-plug: "\f1e6"; +$fa-var-plus: "\f067"; +$fa-var-plus-circle: "\f055"; +$fa-var-plus-square: "\f0fe"; +$fa-var-plus-square-o: "\f196"; +$fa-var-power-off: "\f011"; +$fa-var-print: "\f02f"; +$fa-var-product-hunt: "\f288"; +$fa-var-puzzle-piece: "\f12e"; +$fa-var-qq: "\f1d6"; +$fa-var-qrcode: "\f029"; +$fa-var-question: "\f128"; +$fa-var-question-circle: "\f059"; +$fa-var-question-circle-o: "\f29c"; +$fa-var-quote-left: "\f10d"; +$fa-var-quote-right: "\f10e"; +$fa-var-ra: "\f1d0"; +$fa-var-random: "\f074"; +$fa-var-rebel: "\f1d0"; +$fa-var-recycle: "\f1b8"; +$fa-var-reddit: "\f1a1"; +$fa-var-reddit-alien: "\f281"; +$fa-var-reddit-square: "\f1a2"; +$fa-var-refresh: "\f021"; +$fa-var-registered: "\f25d"; +$fa-var-remove: "\f00d"; +$fa-var-renren: "\f18b"; +$fa-var-reorder: "\f0c9"; +$fa-var-repeat: "\f01e"; +$fa-var-reply: "\f112"; +$fa-var-reply-all: "\f122"; +$fa-var-resistance: "\f1d0"; +$fa-var-retweet: "\f079"; +$fa-var-rmb: "\f157"; +$fa-var-road: "\f018"; +$fa-var-rocket: "\f135"; +$fa-var-rotate-left: "\f0e2"; +$fa-var-rotate-right: "\f01e"; +$fa-var-rouble: "\f158"; +$fa-var-rss: "\f09e"; +$fa-var-rss-square: "\f143"; +$fa-var-rub: "\f158"; +$fa-var-ruble: "\f158"; +$fa-var-rupee: "\f156"; +$fa-var-safari: "\f267"; +$fa-var-save: "\f0c7"; +$fa-var-scissors: "\f0c4"; +$fa-var-scribd: "\f28a"; +$fa-var-search: "\f002"; +$fa-var-search-minus: "\f010"; +$fa-var-search-plus: "\f00e"; +$fa-var-sellsy: "\f213"; +$fa-var-send: "\f1d8"; +$fa-var-send-o: "\f1d9"; +$fa-var-server: "\f233"; +$fa-var-share: "\f064"; +$fa-var-share-alt: "\f1e0"; +$fa-var-share-alt-square: "\f1e1"; +$fa-var-share-square: "\f14d"; +$fa-var-share-square-o: "\f045"; +$fa-var-shekel: "\f20b"; +$fa-var-sheqel: "\f20b"; +$fa-var-shield: "\f132"; +$fa-var-ship: "\f21a"; +$fa-var-shirtsinbulk: "\f214"; +$fa-var-shopping-bag: "\f290"; +$fa-var-shopping-basket: "\f291"; +$fa-var-shopping-cart: "\f07a"; +$fa-var-sign-in: "\f090"; +$fa-var-sign-language: "\f2a7"; +$fa-var-sign-out: "\f08b"; +$fa-var-signal: "\f012"; +$fa-var-signing: "\f2a7"; +$fa-var-simplybuilt: "\f215"; +$fa-var-sitemap: "\f0e8"; +$fa-var-skyatlas: "\f216"; +$fa-var-skype: "\f17e"; +$fa-var-slack: "\f198"; +$fa-var-sliders: "\f1de"; +$fa-var-slideshare: "\f1e7"; +$fa-var-smile-o: "\f118"; +$fa-var-snapchat: "\f2ab"; +$fa-var-snapchat-ghost: "\f2ac"; +$fa-var-snapchat-square: "\f2ad"; +$fa-var-soccer-ball-o: "\f1e3"; +$fa-var-sort: "\f0dc"; +$fa-var-sort-alpha-asc: "\f15d"; +$fa-var-sort-alpha-desc: "\f15e"; +$fa-var-sort-amount-asc: "\f160"; +$fa-var-sort-amount-desc: "\f161"; +$fa-var-sort-asc: "\f0de"; +$fa-var-sort-desc: "\f0dd"; +$fa-var-sort-down: "\f0dd"; +$fa-var-sort-numeric-asc: "\f162"; +$fa-var-sort-numeric-desc: "\f163"; +$fa-var-sort-up: "\f0de"; +$fa-var-soundcloud: "\f1be"; +$fa-var-space-shuttle: "\f197"; +$fa-var-spinner: "\f110"; +$fa-var-spoon: "\f1b1"; +$fa-var-spotify: "\f1bc"; +$fa-var-square: "\f0c8"; +$fa-var-square-o: "\f096"; +$fa-var-stack-exchange: "\f18d"; +$fa-var-stack-overflow: "\f16c"; +$fa-var-star: "\f005"; +$fa-var-star-half: "\f089"; +$fa-var-star-half-empty: "\f123"; +$fa-var-star-half-full: "\f123"; +$fa-var-star-half-o: "\f123"; +$fa-var-star-o: "\f006"; +$fa-var-steam: "\f1b6"; +$fa-var-steam-square: "\f1b7"; +$fa-var-step-backward: "\f048"; +$fa-var-step-forward: "\f051"; +$fa-var-stethoscope: "\f0f1"; +$fa-var-sticky-note: "\f249"; +$fa-var-sticky-note-o: "\f24a"; +$fa-var-stop: "\f04d"; +$fa-var-stop-circle: "\f28d"; +$fa-var-stop-circle-o: "\f28e"; +$fa-var-street-view: "\f21d"; +$fa-var-strikethrough: "\f0cc"; +$fa-var-stumbleupon: "\f1a4"; +$fa-var-stumbleupon-circle: "\f1a3"; +$fa-var-subscript: "\f12c"; +$fa-var-subway: "\f239"; +$fa-var-suitcase: "\f0f2"; +$fa-var-sun-o: "\f185"; +$fa-var-superscript: "\f12b"; +$fa-var-support: "\f1cd"; +$fa-var-table: "\f0ce"; +$fa-var-tablet: "\f10a"; +$fa-var-tachometer: "\f0e4"; +$fa-var-tag: "\f02b"; +$fa-var-tags: "\f02c"; +$fa-var-tasks: "\f0ae"; +$fa-var-taxi: "\f1ba"; +$fa-var-television: "\f26c"; +$fa-var-tencent-weibo: "\f1d5"; +$fa-var-terminal: "\f120"; +$fa-var-text-height: "\f034"; +$fa-var-text-width: "\f035"; +$fa-var-th: "\f00a"; +$fa-var-th-large: "\f009"; +$fa-var-th-list: "\f00b"; +$fa-var-themeisle: "\f2b2"; +$fa-var-thumb-tack: "\f08d"; +$fa-var-thumbs-down: "\f165"; +$fa-var-thumbs-o-down: "\f088"; +$fa-var-thumbs-o-up: "\f087"; +$fa-var-thumbs-up: "\f164"; +$fa-var-ticket: "\f145"; +$fa-var-times: "\f00d"; +$fa-var-times-circle: "\f057"; +$fa-var-times-circle-o: "\f05c"; +$fa-var-tint: "\f043"; +$fa-var-toggle-down: "\f150"; +$fa-var-toggle-left: "\f191"; +$fa-var-toggle-off: "\f204"; +$fa-var-toggle-on: "\f205"; +$fa-var-toggle-right: "\f152"; +$fa-var-toggle-up: "\f151"; +$fa-var-trademark: "\f25c"; +$fa-var-train: "\f238"; +$fa-var-transgender: "\f224"; +$fa-var-transgender-alt: "\f225"; +$fa-var-trash: "\f1f8"; +$fa-var-trash-o: "\f014"; +$fa-var-tree: "\f1bb"; +$fa-var-trello: "\f181"; +$fa-var-tripadvisor: "\f262"; +$fa-var-trophy: "\f091"; +$fa-var-truck: "\f0d1"; +$fa-var-try: "\f195"; +$fa-var-tty: "\f1e4"; +$fa-var-tumblr: "\f173"; +$fa-var-tumblr-square: "\f174"; +$fa-var-turkish-lira: "\f195"; +$fa-var-tv: "\f26c"; +$fa-var-twitch: "\f1e8"; +$fa-var-twitter: "\f099"; +$fa-var-twitter-square: "\f081"; +$fa-var-umbrella: "\f0e9"; +$fa-var-underline: "\f0cd"; +$fa-var-undo: "\f0e2"; +$fa-var-universal-access: "\f29a"; +$fa-var-university: "\f19c"; +$fa-var-unlink: "\f127"; +$fa-var-unlock: "\f09c"; +$fa-var-unlock-alt: "\f13e"; +$fa-var-unsorted: "\f0dc"; +$fa-var-upload: "\f093"; +$fa-var-usb: "\f287"; +$fa-var-usd: "\f155"; +$fa-var-user: "\f007"; +$fa-var-user-md: "\f0f0"; +$fa-var-user-plus: "\f234"; +$fa-var-user-secret: "\f21b"; +$fa-var-user-times: "\f235"; +$fa-var-users: "\f0c0"; +$fa-var-venus: "\f221"; +$fa-var-venus-double: "\f226"; +$fa-var-venus-mars: "\f228"; +$fa-var-viacoin: "\f237"; +$fa-var-viadeo: "\f2a9"; +$fa-var-viadeo-square: "\f2aa"; +$fa-var-video-camera: "\f03d"; +$fa-var-vimeo: "\f27d"; +$fa-var-vimeo-square: "\f194"; +$fa-var-vine: "\f1ca"; +$fa-var-vk: "\f189"; +$fa-var-volume-control-phone: "\f2a0"; +$fa-var-volume-down: "\f027"; +$fa-var-volume-off: "\f026"; +$fa-var-volume-up: "\f028"; +$fa-var-warning: "\f071"; +$fa-var-wechat: "\f1d7"; +$fa-var-weibo: "\f18a"; +$fa-var-weixin: "\f1d7"; +$fa-var-whatsapp: "\f232"; +$fa-var-wheelchair: "\f193"; +$fa-var-wheelchair-alt: "\f29b"; +$fa-var-wifi: "\f1eb"; +$fa-var-wikipedia-w: "\f266"; +$fa-var-windows: "\f17a"; +$fa-var-won: "\f159"; +$fa-var-wordpress: "\f19a"; +$fa-var-wpbeginner: "\f297"; +$fa-var-wpforms: "\f298"; +$fa-var-wrench: "\f0ad"; +$fa-var-xing: "\f168"; +$fa-var-xing-square: "\f169"; +$fa-var-y-combinator: "\f23b"; +$fa-var-y-combinator-square: "\f1d4"; +$fa-var-yahoo: "\f19e"; +$fa-var-yc: "\f23b"; +$fa-var-yc-square: "\f1d4"; +$fa-var-yelp: "\f1e9"; +$fa-var-yen: "\f157"; +$fa-var-yoast: "\f2b1"; +$fa-var-youtube: "\f167"; +$fa-var-youtube-play: "\f16a"; +$fa-var-youtube-square: "\f166"; + diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/font-awesome.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/font-awesome.scss new file mode 100644 index 0000000000..2308b14ca7 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/font-awesome.scss @@ -0,0 +1,18 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables"; +@import "mixins"; +@import "path"; +@import "core"; +@import "larger"; +@import "fixed-width"; +@import "list"; +@import "bordered-pulled"; +@import "animated"; +@import "rotated-flipped"; +@import "stacked"; +@import "icons"; +@import "screen-reader"; diff --git a/vraptor/src/main/webapp/vendor/jquery/jquery.js b/vraptor/src/main/webapp/vendor/jquery/jquery.js new file mode 100644 index 0000000000..7fc60fca78 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/jquery/jquery.js @@ -0,0 +1,11008 @@ +/*! + * jQuery JavaScript Library v1.12.4 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-05-20T17:17Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Support: Firefox 18+ +// Can't be in strict mode, several libs including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +//"use strict"; +var deletedIds = []; + +var document = window.document; + +var slice = deletedIds.slice; + +var concat = deletedIds.concat; + +var push = deletedIds.push; + +var indexOf = deletedIds.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + version = "1.12.4", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1, IE<9 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: deletedIds.sort, + splice: deletedIds.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type( obj ) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + // adding 1 corrects loss of precision from parseFloat (#15100) + var realStringObj = obj && obj.toString(); + return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call( obj, "constructor" ) && + !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { + return false; + } + } catch ( e ) { + + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( !support.ownFirst ) { + for ( key in obj ) { + return hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); // jscs:ignore requireDotNotation + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android<4.1, IE<9 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( indexOf ) { + return indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + while ( j < len ) { + first[ i++ ] = second[ j++ ]; + } + + // Support: IE<9 + // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) + if ( len !== len ) { + while ( second[ j ] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: function() { + return +( new Date() ); + }, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +// JSHint would error on this code due to the Symbol not being defined in ES5. +// Defining this global in .jshintrc would create a danger of using the global +// unguarded in another place, it seems safer to just disable JSHint for these +// three lines. +/* jshint ignore: start */ +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ]; +} +/* jshint ignore: end */ + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: iOS 8.2 (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.2.1 + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-10-17 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // http://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, nidselect, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; + while ( i-- ) { + groups[i] = nidselect + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, parent, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( (parent = document.defaultView) && parent.top !== parent ) { + // Support: IE 11 + if ( parent.addEventListener ) { + parent.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var m = context.getElementById( id ); + return m ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + docElem.appendChild( div ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibing-combinator selector` fails + if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( (oldCache = uniqueCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + } ); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // init accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt( 0 ) === "<" && + selector.charAt( selector.length - 1 ) === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[ 2 ] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[ 0 ] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof root.ready !== "undefined" ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( pos ? + pos.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[ 0 ], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem, this ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.uniqueSort( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +} ); +var rnotwhite = ( /\S+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = true; + if ( !memory ) { + self.disable(); + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], + [ "notify", "progress", jQuery.Callbacks( "memory" ) ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this === promise ? newDefer.promise() : this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( function() { + + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || + ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. + // If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .progress( updateFunc( i, progressContexts, progressValues ) ) + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +} ); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +} ); + +/** + * Clean-up method for dom ready events + */ +function detach() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } +} + +/** + * The ready event handler and self cleanup method + */ +function completed() { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || + window.event.type === "load" || + document.readyState === "complete" ) { + + detach(); + jQuery.ready(); + } +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called + // after the browser event has already occurred. + // Support: IE6-10 + // Older IE sometimes signals "interactive" too soon + if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); + + // If IE event model is used + } else { + + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch ( e ) {} + + if ( top && top.doScroll ) { + ( function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll( "left" ); + } catch ( e ) { + return window.setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + } )(); + } + } + } + return readyList.promise( obj ); +}; + +// Kick off the DOM ready check even if the user does not +jQuery.ready.promise(); + + + + +// Support: IE<9 +// Iteration over object's inherited properties before its own +var i; +for ( i in jQuery( support ) ) { + break; +} +support.ownFirst = i === "0"; + +// Note: most support tests are defined in their respective modules. +// false until the test is run +support.inlineBlockNeedsLayout = false; + +// Execute ASAP in case we need to set body.style.zoom +jQuery( function() { + + // Minified: var a,b,c,d + var val, div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + + // Return for frameset docs that don't have a body + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + if ( typeof div.style.zoom !== "undefined" ) { + + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + + support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; + if ( val ) { + + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); +} ); + + +( function() { + var div = document.createElement( "div" ); + + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch ( e ) { + support.deleteExpando = false; + } + + // Null elements to avoid leaks in IE. + div = null; +} )(); +var acceptData = function( elem ) { + var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ], + nodeType = +elem.nodeType || 1; + + // Do not set data on non-element DOM nodes because it will not be cleared (#8335). + return nodeType !== 1 && nodeType !== 9 ? + false : + + // Nodes accept data unless otherwise specified; rejection can be conditional + !noData || noData !== true && elem.getAttribute( "classid" ) === noData; +}; + + + + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[ name ] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + +function internalData( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) && + data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } else { + + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[ i ] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, undefined + } else { + cache[ id ] = undefined; + } +} + +jQuery.extend( { + cache: {}, + + // The following elements (space-suffixed to avoid Object.prototype collisions) + // throw uncatchable exceptions if you attempt to set expando properties + noData: { + "applet ": true, + "embed ": true, + + // ...but Flash objects (which have this classid) *can* handle expandos + "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + jQuery.data( this, key ); + } ); + } + + return arguments.length > 1 ? + + // Sets one value + this.each( function() { + jQuery.data( this, key, value ); + } ) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; + }, + + removeData: function( key ) { + return this.each( function() { + jQuery.removeData( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = jQuery._data( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, + // or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); + + +( function() { + var shrinkWrapBlocksVal; + + support.shrinkWrapBlocks = function() { + if ( shrinkWrapBlocksVal != null ) { + return shrinkWrapBlocksVal; + } + + // Will be changed later if needed. + shrinkWrapBlocksVal = false; + + // Minified: var b,c,d + var div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + + // Test fired too early or in an unsupported environment, exit. + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + if ( typeof div.style.zoom !== "undefined" ) { + + // Reset CSS: box-sizing; display; margin; border + div.style.cssText = + + // Support: Firefox<29, Android 2.3 + // Vendor-prefix box-sizing + "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + + "box-sizing:content-box;display:block;margin:0;border:0;" + + "padding:1px;width:1px;zoom:1"; + div.appendChild( document.createElement( "div" ) ).style.width = "5px"; + shrinkWrapBlocksVal = div.offsetWidth !== 3; + } + + body.removeChild( container ); + + return shrinkWrapBlocksVal; + }; + +} )(); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || + !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { return tween.cur(); } : + function() { return jQuery.css( elem, prop, "" ); }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( + elems[ i ], + key, + raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[ 0 ], key ) : emptyGet; +}; +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([\w:-]+)/ ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + +var rleadingWhitespace = ( /^\s+/ ); + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + + "details|dialog|figcaption|figure|footer|header|hgroup|main|" + + "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + + +( function() { + var div = document.createElement( "div" ), + fragment = document.createDocumentFragment(), + input = document.createElement( "input" ); + + // Setup + div.innerHTML = "
a"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName( "tbody" ).length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = + document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + input.type = "checkbox"; + input.checked = true; + fragment.appendChild( input ); + support.appendChecked = input.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE6-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // #11217 - WebKit loses check when the name is after the checked attribute + fragment.appendChild( div ); + + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input = document.createElement( "input" ); + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Cloned elements keep attachEvent handlers, we use addEventListener on IE9+ + support.noCloneEvent = !!div.addEventListener; + + // Support: IE<9 + // Since attributes and properties are the same in IE, + // cleanData must set properties to undefined rather than use removeAttribute + div[ jQuery.expando ] = 1; + support.attributes = !div.getAttribute( jQuery.expando ); +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + area: [ 1, "", "" ], + + // Support: IE8 + param: [ 1, "", "" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + col: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] +}; + +// Support: IE8-IE9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== "undefined" ? + context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; + ( elem = elems[ i ] ) != null; + i++ + ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; ( elem = elems[ i ] ) != null; i++ ) { + jQuery._data( + elem, + "globalEval", + !refElements || jQuery._data( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/, + rtbody = / from table fragments + if ( !support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[ 1 ] === "
" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), "tbody" ) && + !tbody.childNodes.length ) { + + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; +} + + +( function() { + var i, eventName, + div = document.createElement( "div" ); + + // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) + for ( i in { submit: true, change: true, focusin: true } ) { + eventName = "on" + i; + + if ( !( support[ i ] = eventName in window ) ) { + + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + div.setAttribute( eventName, "t" ); + support[ i ] = div.attributes[ eventName ].expando === false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +} )(); + + +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE9 +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && + ( !e || jQuery.event.triggered !== e.type ) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + + // Add elem as a property of the handle fn to prevent a memory leak + // with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && + jQuery._data( cur, "handle" ); + + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( + ( !special._default || + special._default.apply( eventPath.pop(), data ) === false + ) && acceptData( elem ) + ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Support (at least): Chrome, IE9 + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // + // Support: Firefox<=42+ + // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) + if ( delegateCount && cur.nodeType && + ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push( { elem: cur, handlers: matches } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Safari 6-8+ + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + + "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split( " " ), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: ( "button buttons clientX clientY fromElement offsetX offsetY " + + "pageX pageY screenX screenY toElement" ).split( " " ), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - + ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - + ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? + original.toElement : + fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + // Piggyback on a donor event to simulate a different one + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + + // Previously, `originalEvent: {}` was set here, so stopPropagation call + // would not be triggered on donor event, since in our own + // jQuery.event.stopPropagation function we had a check for existence of + // originalEvent.stopPropagation method, so, consequently it would be a noop. + // + // Guard for simulated events was moved to jQuery.event.stopPropagation function + // since `originalEvent` should point to the original event for the + // constancy with other events and for more focused logic + } + ); + + jQuery.event.trigger( e, null, elem ); + + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, + // to properly expose it to GC + if ( typeof elem[ name ] === "undefined" ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: IE < 9, Android < 4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( !e || this.isSimulated ) { + return; + } + + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://code.google.com/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +// IE submit delegation +if ( !support.submit ) { + + jQuery.event.special.submit = { + setup: function() { + + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? + + // Support: IE <=8 + // We use jQuery.prop instead of elem.form + // to allow fixing the IE8 delegated submit issue (gh-2332) + // by 3rd party polyfills/workarounds. + jQuery.prop( elem, "form" ) : + undefined; + + if ( form && !jQuery._data( form, "submit" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submitBubble = true; + } ); + jQuery._data( form, "submit", true ); + } + } ); + + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + + // If form was submitted by the user, bubble the event up the tree + if ( event._submitBubble ) { + delete event._submitBubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event ); + } + } + }, + + teardown: function() { + + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !support.change ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._justChanged = true; + } + } ); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._justChanged && !event.isTrigger ) { + this._justChanged = false; + } + + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event ); + } ); + } + return false; + } + + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event ); + } + } ); + jQuery._data( elem, "change", true ); + } + } ); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || + ( elem.type !== "radio" && elem.type !== "checkbox" ) ) { + + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Support: Firefox +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome, Safari +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + jQuery._removeData( doc, fix ); + } else { + jQuery._data( doc, fix, attaches ); + } + } + }; + } ); +} + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + }, + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, + + // Support: IE 10-11, Edge 10240+ + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) ); + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName( "tbody" )[ 0 ] || + elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + return elem; +} + +function cloneCopyEvent( src, dest ) { + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( + ( node.text || node.textContent || node.innerHTML || "" ) + .replace( rcleanScript, "" ) + ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + elems = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = elems[ i ] ) != null; i++ ) { + + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( support.html5Clone || jQuery.isXMLDoc( elem ) || + !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( ( !support.noCloneEvent || !support.noCloneChecked ) && + ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) { + + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[ i ] ) { + fixCloneNodeIssues( node, destElements[ i ] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) { + cloneCopyEvent( node, destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + cleanData: function( elems, /* internal */ forceAcceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + attributes = support.attributes, + special = jQuery.event.special; + + for ( ; ( elem = elems[ i ] ) != null; i++ ) { + if ( forceAcceptData || acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // Support: IE<9 + // IE does not allow us to delete expando properties from nodes + // IE creates expando attributes along with the property + // IE does not have a removeAttribute function on Document nodes + if ( !attributes && typeof elem.removeAttribute !== "undefined" ) { + elem.removeAttribute( internalKey ); + + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://code.google.com/p/chromium/issues/detail?id=378607 + } else { + elem[ internalKey ] = undefined; + } + + deletedIds.push( id ); + } + } + } + } + } +} ); + +jQuery.fn.extend( { + + // Keep domManip exposed until 3.0 (gh-2225) + domManip: domManip, + + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( + ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) + ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + + // Remove element nodes and prevent memory leaks + elem = this[ i ] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); + + +var iframe, + elemdisplay = { + + // Support: Firefox + // We have to pre-define these values for FF (#10227) + HTML: "block", + BODY: "block" + }; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ + +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + display = jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = ( iframe || jQuery( "