From 999a6d9d3be4b441961d099e8607c4a5183bf60d Mon Sep 17 00:00:00 2001 From: Nathan Date: Mon, 9 Aug 2021 17:20:53 -0400 Subject: [PATCH] done --- .idea/.gitignore | 3 + .idea/Lambdas2-ZCW.iml | 17 +++ .idea/compiler.xml | 16 +++ .idea/jarRepositories.xml | 20 +++ .idea/libraries/Maven__junit_junit_4_13_2.xml | 13 ++ .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 ++ .idea/misc.xml | 13 ++ .idea/modules.xml | 8 ++ .idea/uiDesigner.xml | 124 ++++++++++++++++++ .idea/vcs.xml | 6 + pom.xml | 31 +++++ src/main/java/CheckPerson.java | 3 + src/main/java/Main.java | 59 +++++++++ src/main/java/Network.java | 30 +++++ src/main/java/Person.java | 65 +++++++++ src/main/java/PersonUtilities.java | 109 +++++++++++++++ src/test/java/PersonUtilitiesTest.java | 114 ++++++++++++++++ target/classes/CheckPerson.class | Bin 0 -> 132 bytes target/classes/Main$1.class | Bin 0 -> 729 bytes target/classes/Main$1Under30.class | Bin 0 -> 642 bytes target/classes/Main.class | Bin 0 -> 2869 bytes target/classes/Network.class | Bin 0 -> 1088 bytes target/classes/Person$Sex.class | Bin 0 -> 919 bytes target/classes/Person.class | Bin 0 -> 2032 bytes target/classes/PersonUtilities$1.class | Bin 0 -> 736 bytes target/classes/PersonUtilities$2.class | Bin 0 -> 784 bytes .../PersonUtilities$FemaleWithGoogle.class | Bin 0 -> 798 bytes target/classes/PersonUtilities$Under30.class | Bin 0 -> 623 bytes target/classes/PersonUtilities.class | Bin 0 -> 3415 bytes target/test-classes/PersonUtilitiesTest.class | Bin 0 -> 5045 bytes 30 files changed, 644 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/Lambdas2-ZCW.iml create mode 100644 .idea/compiler.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_13_2.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/vcs.xml create mode 100644 pom.xml create mode 100644 src/main/java/CheckPerson.java create mode 100644 src/main/java/Main.java create mode 100644 src/main/java/Network.java create mode 100644 src/main/java/Person.java create mode 100644 src/main/java/PersonUtilities.java create mode 100644 src/test/java/PersonUtilitiesTest.java create mode 100644 target/classes/CheckPerson.class create mode 100644 target/classes/Main$1.class create mode 100644 target/classes/Main$1Under30.class create mode 100644 target/classes/Main.class create mode 100644 target/classes/Network.class create mode 100644 target/classes/Person$Sex.class create mode 100644 target/classes/Person.class create mode 100644 target/classes/PersonUtilities$1.class create mode 100644 target/classes/PersonUtilities$2.class create mode 100644 target/classes/PersonUtilities$FemaleWithGoogle.class create mode 100644 target/classes/PersonUtilities$Under30.class create mode 100644 target/classes/PersonUtilities.class create mode 100644 target/test-classes/PersonUtilitiesTest.class diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/Lambdas2-ZCW.iml b/.idea/Lambdas2-ZCW.iml new file mode 100644 index 0000000..81ce5fd --- /dev/null +++ b/.idea/Lambdas2-ZCW.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..1efcc24 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_13_2.xml b/.idea/libraries/Maven__junit_junit_4_13_2.xml new file mode 100644 index 0000000..606c352 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_13_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..f58bbc1 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..97947a5 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..e080e35 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..fba90c3 --- /dev/null +++ b/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + groupId + Lambdas2-ZCW + 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + + junit + junit + RELEASE + test + + + + \ No newline at end of file diff --git a/src/main/java/CheckPerson.java b/src/main/java/CheckPerson.java new file mode 100644 index 0000000..26a5bae --- /dev/null +++ b/src/main/java/CheckPerson.java @@ -0,0 +1,3 @@ +public interface CheckPerson { + boolean test(Person p); +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 0000000..2aac17c --- /dev/null +++ b/src/main/java/Main.java @@ -0,0 +1,59 @@ +import com.sun.jndi.toolkit.dir.SearchFilter; +import com.sun.tools.javac.comp.Check; +import sun.nio.ch.Net; + +import javax.naming.directory.SearchControls; +import java.util.ArrayList; +import java.util.List; + +public class Main { + + public static void printPersons(List roster, CheckPerson filter) { + for (Person p : roster) { + if (filter.test(p)) { + p.printPerson(); + } + } + } + + public static void main(String[] args) { + + Person p1 = new Person("Bobby", 21, Person.Sex.MALE,"hotmail"); + Person p2 = new Person("Ana",25, Person.Sex.FEMALE,"Yahoo"); + Person p3 = new Person("Jack",30, Person.Sex.MALE,"Google"); + Person[] people = {p1,p2,p3}; + + Network network = new Network(); + network.addArray(people); + + //--------------------------LOCAL CLASS------------------------------- + //Creating local class + class Under30 implements CheckPerson{ + @Override + public boolean test(Person p) { + return p.getAge() < 30; + } + } + //Testing using local class + System.out.println("===========================LOCAL========================="); + printPersons(network.getList(),new Under30()); + + //--------------------------ANONYMOUS CLASS--------------------------- + //Creating anonymous class + CheckPerson maleUnder30 = new CheckPerson() { + @Override + public boolean test(Person p) { + return p.getGender() == Person.Sex.MALE && p.getAge() < 30; + } + }; + //Testing using anonymous class + System.out.println("=========================ANONYMOUS========================"); + printPersons(network.getList(), maleUnder30); + + //--------------------------LAMBDA EXPRESSION------------------------ + //Testing using lambda expression for female under 30 + System.out.println("===========================LAMBDA========================="); + printPersons(network.getList(), person -> + person.getGender()== Person.Sex.FEMALE && person.getAge() < 30); + } +} diff --git a/src/main/java/Network.java b/src/main/java/Network.java new file mode 100644 index 0000000..c067675 --- /dev/null +++ b/src/main/java/Network.java @@ -0,0 +1,30 @@ +import java.util.ArrayList; +import java.util.List; + +public class Network { + private List list; + + public Network() { + this.list = new ArrayList<>(); + } + + public void add(Person person){ + this.list.add(person); + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } + + public void addArray(Person[] people){ + for (int i = 0; i < people.length; i++) { + this.list.add(people[i]); + } + } + + +} diff --git a/src/main/java/Person.java b/src/main/java/Person.java new file mode 100644 index 0000000..797221a --- /dev/null +++ b/src/main/java/Person.java @@ -0,0 +1,65 @@ +public class Person { + + public enum Sex { + MALE, FEMALE + } + + private String name; + private Integer age; + private Sex gender; + private String emailAddress; + + public Person() { + } + + public Person(String name, Integer age, Sex gender, String emailAddress) { + this.name = name; + this.age = age; + this.gender = gender; + this.emailAddress = emailAddress; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public Sex getGender() { + return gender; + } + + public void setGender(Sex gender) { + this.gender = gender; + } + + public String getEmailAddress() { + return emailAddress; + } + + public void setEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + } + + @Override + public String toString(){ + return "Person = " + name + + ", age = " + age + + ", gender = " + gender + + ", emailAddress = " + emailAddress + "\n"; + } + + public void printPerson() { + System.out.println(this.toString()); + } +} diff --git a/src/main/java/PersonUtilities.java b/src/main/java/PersonUtilities.java new file mode 100644 index 0000000..8438525 --- /dev/null +++ b/src/main/java/PersonUtilities.java @@ -0,0 +1,109 @@ +import com.sun.tools.javac.comp.Check; + +import java.util.ArrayList; +import java.util.List; + +public class PersonUtilities { + + + public static List personsOlderThan(List list, int age) { + List newList = new ArrayList<>(); + for (Person p : list) { + if (p.getAge() >= age) { + newList.add(p); + } + } + return newList; + } + + public static List personsYoungerThan(List list, int age) { + List newList = new ArrayList<>(); + for (Person p : list) { + if (p.getAge() <= age) { + newList.add(p); + } + } + return newList; + } + + public static Person findByName(List list, String name){ + for(Person p: list){ + if(p.getName().equals(name)){ + return p; + } + } + return null; + } + + public static List personsOfGender(List list, Person.Sex gender) { + List newList = new ArrayList<>(); + for (Person p : list) { + if (p.getGender().equals(gender)) { + newList.add(p); + } + } + return newList; + } + + public static void printPersons(List roster, CheckPerson filter) { + for (Person p : roster) { + if (filter.test(p)) { + p.printPerson(); + } + } + } + + public static List getPersons(List list, CheckPerson filter){ + List filtered = new ArrayList<>(); + for(Person p : list){ + if(filter.test(p)){ + filtered.add(p); + } + } + return filtered; + } + + //-------------Local Class-------------- + static class Under30 implements CheckPerson{ + public Under30() { + } + @Override + public boolean test(Person p) { + return p.getAge() < 30; + } + } + + static class FemaleWithGoogle implements CheckPerson{ + public FemaleWithGoogle() { + } + @Override + public boolean test(Person p) { + return p.getGender() == Person.Sex.FEMALE && p.getEmailAddress().equals("Google"); + } + } + + + //--------------------------ANONYMOUS CLASS--------------------------- + //Creating anonymous class + private static CheckPerson maleUnder30 = new CheckPerson() { + @Override + public boolean test(Person p) { + return p.getGender() == Person.Sex.MALE && p.getAge() < 30; + } + }; + + public static CheckPerson getMaleUnder30() { + return maleUnder30; + } + + private static CheckPerson femaleAbove30 = new CheckPerson(){ + @Override + public boolean test(Person p) { + return p.getGender().equals(Person.Sex.FEMALE) && p.getAge() > 30; + } + }; + public static CheckPerson femaleAbove30(){ + return femaleAbove30; + } + +} diff --git a/src/test/java/PersonUtilitiesTest.java b/src/test/java/PersonUtilitiesTest.java new file mode 100644 index 0000000..ef8203b --- /dev/null +++ b/src/test/java/PersonUtilitiesTest.java @@ -0,0 +1,114 @@ +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; + +public class PersonUtilitiesTest { + Network network = new Network(); + Person p1 = new Person("Bobby", 21, Person.Sex.MALE,"Hotmail"); + Person p2 = new Person("Ana",25, Person.Sex.FEMALE,"Yahoo"); + Person p3 = new Person("Jack",30, Person.Sex.MALE,"Google"); + Person p4 = new Person("Jill",41, Person.Sex.FEMALE,"AOL"); + Person p5 = new Person("Pete",55, Person.Sex.MALE,"YMail"); + Person p6 = new Person("Beth",34, Person.Sex.FEMALE,"Google"); + + @Before + public void populateNetwork(){ + Person[] people = {p1,p2,p3,p4,p5,p6}; + network.addArray(people); + } + + @Test + public void testPersonOlderThan(){ + //when + List filtered = PersonUtilities.personsOlderThan(network.getList(),35); + boolean result = filtered.contains(p4) && filtered.contains(p5); + //then + Assert.assertTrue(result); + } + + @Test + public void testPersonYoungerThan(){ + //when + List filtered = PersonUtilities.personsYoungerThan(network.getList(),30); + boolean result = filtered.contains(p1) && filtered.contains(p2); + //then + Assert.assertTrue(result); + } + + @Test + public void testFindByName(){ + //when + Person retrieved = PersonUtilities.findByName(network.getList(),"Bobby"); + //then + Assert.assertEquals(p1,retrieved); + } + + @Test + public void testPersonsOfGender(){ + //when + List filtered = PersonUtilities.personsOfGender(network.getList(), Person.Sex.FEMALE); + boolean result = filtered.contains(p2) && filtered.contains(p4) && filtered.contains(p6); + //then + Assert.assertTrue(result); + } + + //----------------------------Local Class------------------------ + @Test + public void testLocalClassUnder30(){ + //when + List filtered = PersonUtilities.getPersons(network.getList(), new PersonUtilities.Under30()); + boolean result = filtered.contains(p1) && filtered.contains(p2); + //then + Assert.assertTrue(result); + } + + @Test + public void testFemaleWithGoogle(){ + //when + List filtered = PersonUtilities.getPersons(network.getList(), new PersonUtilities.FemaleWithGoogle()); + boolean result = filtered.contains(p6); + //then + Assert.assertTrue(result); + } + + //---------------------------Anonymous Class--------------------- + @Test + public void testMaleUnder30(){ + List filtered = PersonUtilities.getPersons(network.getList(), PersonUtilities.getMaleUnder30()); + boolean result = filtered.contains(p1); + //then + Assert.assertTrue(result); + } + + @Test + public void testFemaleAbove30(){ + List filtered = PersonUtilities.getPersons(network.getList(), PersonUtilities.femaleAbove30()); + boolean result = filtered.contains(p4) && filtered.contains(p6); + //then + Assert.assertTrue(result); + } + + + //------------------------------Lambda-------------------------- + @Test + public void testMaleOver30(){ + List filtered = PersonUtilities.getPersons(network.getList(), + person -> person.getAge() > 30 && person.getGender() == Person.Sex.MALE); + boolean result = filtered.contains(p5); + //then + Assert.assertTrue(result); + } + + @Test + public void testMaleWithYahoo(){ + List filtered = PersonUtilities.getPersons(network.getList(), + person -> person.getGender().equals(Person.Sex.MALE) && person.getEmailAddress().equals("Yahoo")); + boolean result = filtered.isEmpty(); + //then + Assert.assertTrue(result); + + } + +} diff --git a/target/classes/CheckPerson.class b/target/classes/CheckPerson.class new file mode 100644 index 0000000000000000000000000000000000000000..faa13df84e6e266a5a95bd1b850df64c7e64f3e8 GIT binary patch literal 132 zcmX^0Z`VEs1_l!bPId-%b_Nbc29}c4;u1y%ZVjJ+)S}}2JZsG;Mh33n{L-T2RJY8W zR7M5?=Zw_kY>2F0R$^HqP&JYePyt9#KPNFSUEe<`D>b=3}9oGN= literal 0 HcmV?d00001 diff --git a/target/classes/Main$1.class b/target/classes/Main$1.class new file mode 100644 index 0000000000000000000000000000000000000000..e7838622b2cec402c75d9893bc69a2604823d11a GIT binary patch literal 729 zcmZXR%Wl&^6o&sv9Gkdq8&Vo*Dd85tX&|9cRzav$R8S-bkb<(HE5{inZryQZJBa6D z0UI{3C=v@EfQLf-lccH;iOciioQ7)Lli4I5S-9`u0bB<~*cR#zw(-!yBL_{i96ZL3g(nW4 zVwYpiTM{T~Rx9$=xb=DXCi~+c|UAfM^c>3M8!SyE;9OA!s>0kDDynNIF{Kf zsYWv44*T+>z=~U6Ojo1LE!gu|ZE60#cfg(f8)A~OKjy&eOui`CRhb;igpAAoIl078 zWdlE&GL662<-{g`oPK_Pj)!ZZwM4B&DJTouKOnx%o*mxi%-O&)b!Q%c6_jYPAj-UT z@*!awx79d9?mP0Iu|~}}L!ngt1k3mWBmb4}c{0wK%^9;Y&s#7_z#6WQy3V))a+`Z> d92FWlT*Wm?0~^@HDz!3wCM7scm5GhLjlbwqizEO5 literal 0 HcmV?d00001 diff --git a/target/classes/Main$1Under30.class b/target/classes/Main$1Under30.class new file mode 100644 index 0000000000000000000000000000000000000000..dcf97e24c56f1b8afbe8d0d7bf334f7e0af7c34c GIT binary patch literal 642 zcmY*W%Wl&^6g`tTnbvhlT4;E;r4(>liGW}igg_BUksK%rWC5#*GjiOz|3(0eFf-7d6~)aTB*(+{U)Vj>N9S9fA6@*u?g^ zK-F)L1e{(v(E^PiHu}x%bgZ-YYMd~#8Kj{~MkXybsq|A`T37A&1a znW*!2e5}JlS8uArlZ7;jEgA@?b7=XWf@R0hW_-6>{ImK+eLd3lWkiu%e*2%&zOg#e z8K>V^_Lo5p9veGS$&77WK_9ztxGb`Aa}^$rLT{B;hbV}(gC7vz=V_OBeIDGw8f|Y; zKy1+Ch}hs=G`}NRLAQB$j>Rxsi1|cLX|r8^_3oY@`epVY>u zZH8`PPs&K}MhXBmWsRJvWhDfcOOiH`N?WvwC0ZoZE_H1#Q*^I>nUWnvLp$kfMch=! zr=x1dibclL5`6JgQdiAfs!kdP zn{0@gr`kP+krZCYg^(1yi<2_mQ}8}Mkg&aHgd3eMn51z+K7W==RwL2In6E*l=3(#B2BXKB&~IVGxTaEdBR zpcp@nTIxEjwx!iE9z_{;l{~5DV%l+Xb0x5IT)OpAUF3I|6+P&fX!4qxFcWa>0ST*1 z-VW-fmK5_X&#LLXHasDQX0YIhrMSRB&3?Pq^{nPb{(%E7NMaZBY~x!epAw($ zw#$%y=A{gqczP_*hj!i-n*klz%r~D{Z{!lfXZUpS+1_>)WfG$8S5YqEG#YtvN%#%! z*rtxF@RSjgI~E{c`1em?!)4j1u>+=HEzq0dq;W0Q%WU*!Kq$Q!J= z0^cS0LxIbjdkd=w)>&9(Xce)jg$09+1-{k9VxC_pT)rtj>S~XVx;x@su0@1KFQcl< zUFWWIEui`mYC^ROSX1X-z}iLBkyw8P>lV?#+ihJQL2oS5>pUb03IG_);X z{UubMM-^`y7H~(f@hoK51-QyDl3woUs_m9PcI_JQ5G~rZbEB-jms<{9 literal 0 HcmV?d00001 diff --git a/target/classes/Network.class b/target/classes/Network.class new file mode 100644 index 0000000000000000000000000000000000000000..4d6af43b58121c308cf06fce57a51ba163497483 GIT binary patch literal 1088 zcmZWnTW=CU7(KHKESD`H6zpZI_1Xor7~>nYiId@$&+C1<&PXJ`Dn<#p){f)99e9VtQ|(Si zAY)EABxqt7@ChU*Q30*%_);s8&B~lW!WjPrZ$lkTE9-z*u+XVo4JCyLkR%V%I^ zW0Lakd7gbFpqnoza%D!i{2m9x42IH?)M;8^q3PT0!zcDIGA7*|jJ>w=$d!e9XZO4H-PVEArfJz}f9PT<8f>PjQF(z& zd@~x~lHda(I{#^&6l4(Ro>I7G8MzOYJ0M>@hNymr^86U;7sNgV)j6(NR)APB;^c^w z=SdHHa1I5YI29HnyocmaWJUEeVzsY`D|j}=lFwOoXUH#c%F#K*k(m->^c&}~#GF)E z56(bbB7S5*p$u@mK=zEBcqAtrbeZ`TtVSSv{7dRYwH6Jh1}LGRMVeBY5tN9KBui+X z!QOCa8OabkWLe|x0xoiuQpdDPnq{bWjoQh3lmiot+o28b6!GEjPiaQTU7)4lm`N;? reTiCE0}boUD~zr45~XJ2RE>elxI(V0jHaOch9Z8kQQ#T_3auw;4k*A7K3KH9~sOeA>81=cZNfENUrtD4Tb}eC$P@2bl94b^?ZBZdegEQ zl5ek3&K-X&LstsLYY;yeymJY#JmJ0^_d9Oz+UfXoqN|vb_YAp$b>^Hq72grPiaiQE z(W@613#6?<*YVp<;K|@w1}>aFB})GrO`;o~@J4$KH~*9TsMw|nj6QgzIBt7A;f%%s zWzq@~h&8(YEO;xFx+TW_Mp)Gz&Bm|?KUQ~{7BAwViC#S_92$2x9+rbymBvT_*{urG*QLHk4=!!6pE6s8e> z1DP4WhKM>f(!BH)(JOGtk1X)BbYf0fxQ$JP(^!ZlD^{V=2k51p%}XqOR&co7JY2_J zDIGb**+z`yZqI}qQzLSfzk{Eqb?p+d3&fRUaOEVTKM2w$^cqh21PS{BOjesVXOJ8@ ajI5HAqyGr*Bd_cOtdKQ`$x*~|GxG=A^REQ} literal 0 HcmV?d00001 diff --git a/target/classes/Person.class b/target/classes/Person.class new file mode 100644 index 0000000000000000000000000000000000000000..0078795fb08803712a422b62344942538484126e GIT binary patch literal 2032 zcmZ{kZBrXn7>4gnHgB6Pf$%12wZWndOK4P3i?lS9mP(5hO=ZT93+%*Yk`1$29R21` zQb*Dmo$&|wqa5$&?51qO^5vYf=RD_ruIJ_KzyJO94}f(X8JNLF0n_+OhD{kB$?!Ob zEdyC>{Zx?5?Asynkl@WH&mt*KV`|-}Ty?ykNI^G#xwI^8%;s_&m$D9q-ifskeXV z`2C)@M0M_)PSi|(=Gzp;-y%75>~ z?i|^^E8o$k9{lK1BOiI7`fe=-6LH3NhInzL*l~10Kyqy-I8c$#)RwQC(4apwm`(60 z63jrbEeV<(Q5Z7NfD+1JF0L><7l{HTUPO7Epvp)l3%ou&EY;#?a<#;(&qq>SqW$Pj zKInxZYbc(xra`E$!D#g^{1a!_mDCr*-3QVDChnqY;yo;wsNlAVJ9yv32UyTBKi(iu zFWipmfI=uxeaxE&c+G;$)v#N*rD3XGjrWM!(+m@zqn5+BCcZ-}hc_m^ zhs7KYkteU*zdk;5P69>|o=M};&^|wBCN-?alRd2XwF*b@Y^f3ZPLd!7!UW31o+j3e^0FQ(MP8_>LJ`ju6^t-dq?wRb zD+x#^$9>cyng-`EoIjEJjYcU*I9athpBTzAtmyIi))CgV2Y?kI)1(CQs# zHp0}ff_kJC2T6~E+)V^o#e*b}^f<^pf-KztA|;m$H1J6Rh&~Q-KM~|pe3k^FkAtib zq<#a46iGnV5=)aA2WcdNtS6Ty)=^<;)(EnG1Bmp9fbhS-agpUcWBH^$1KTt}|jY!C`>Xcnl9?F*M)3lrJ!RY8#Q?;vbl_2ACS4 hJf6`fe0a^6Ofiy4;Y$Li@DTHy4dT!8*~~Q;{s+D5SP%dJ literal 0 HcmV?d00001 diff --git a/target/classes/PersonUtilities$1.class b/target/classes/PersonUtilities$1.class new file mode 100644 index 0000000000000000000000000000000000000000..da7b2a17e2f5dca7424db590d209911fdb3fcdcd GIT binary patch literal 736 zcmZWnT~8B16g|^!yLMTiw19$uqE%Z^D#kaAfi!5Ev}#gmj67|(lXhU8CA(AO@9{xj ze9;F?eDDYOql{eH zmr+$~+awR%=}Ws}c64z+y{j`C|00C!^P1FCbECg}xVby+|c~3R-5UVga|Q zwTv2p7srxrx%Em$ai~v>3Y1YYuIwL>*~r)k%vICqLG7)8xDdE91q9|h#`DkH-bKpq zbiz^O%V#R-V0ngh@63DevDIVk2Vt!Ape@ZX?Ay5Gq5#LnT^ILIv$5l17x!H}z@Ck| zi-*`3Sejw05Gy8(^}y4E`pe##^pkcQL+PJSa(UNG5!W{j6$a8gm%1+_uCgOP2rN`< z>0}l9+<-I5O+2onebhSU>i$j1ljUf@VOLoEx0|Lmav&peEd2*^fl8aM7mQfOM{IJw zJRhDoe?f+a%b+($t4=Mbb35N5zK+8#Wqu64!8~nul7Iyi>G498D3jt-k|lH-yO+p( zL-rHOw5&_yid!FHTc2TNzc8L9$CUGQ%(*(LOF7AaGM34@!n_xXO{t8_BBifhys U)+iTwO2qQi;53{3ztzLFKM~=SQ~&?~ literal 0 HcmV?d00001 diff --git a/target/classes/PersonUtilities$2.class b/target/classes/PersonUtilities$2.class new file mode 100644 index 0000000000000000000000000000000000000000..326292c9542acbd0cb836d3aeb214d813e8c4d12 GIT binary patch literal 784 zcmZWnU2hUW6g>kATejO4N~u;Y^#c`JEfqgrYD^nK4GE|T%7YIk!!p9O>u%j$jDN*< z6JLDM2TXkM2l%6mXMv^>ALiaUckVrN=gj^6=jSf~5Aevs0xny)g3Szy*s^G@#_*bj z>$qW}Wa6fYTLS6F+SAb!fn>ST6)@_4UkR+Vw5Ohp-t|=QQubU%R$IO!-L4FDjAub3 z8tPEMZhD>y>aGk!MVN2BP(kQ>uOjX0NUN|^+b46R!bo7TJUiX5ycQ6r0t;sWfu&9) zos+gao$*^8e-t?CNXH$l&9Uwt%MX&RHay4mL+uUPDjNEI6Sr+xSTs?#QNfOhJ2viO z*G3h4HtwNj;=WCd9tz~@rZg8wF^)%%fjDP^JDnr~;KTbdUg4k${2 z{O1`>FH!>)@S5CzK?<$Cs4LwO%lO$%?7`%e2xK@i2`-98WOG-g7xby^9}wRr$4j*7 zNzlPE_x3aaE65RXK9Hx4i{FqerrX*XBk>){F^o^h6QssSXN#X<8ed=}zcM9>bK18P w+VyGajFu!=LxIHW%uXS(dBEOrfgpj4*q}FXi8jl%%9u$HKB~x3-#*y*3svf%m;e9( literal 0 HcmV?d00001 diff --git a/target/classes/PersonUtilities$FemaleWithGoogle.class b/target/classes/PersonUtilities$FemaleWithGoogle.class new file mode 100644 index 0000000000000000000000000000000000000000..3284f5df33cf0995adba210a4f23636d62d984e9 GIT binary patch literal 798 zcmZWnO>YuW6g>|H2ByWTGVz|W7-gCOrUDen&|2QFYwx7rp^q;zv3Uz zjT>Fm#Dzb=A7wnl&{%Qv?$^2Jo_q6t{r>S2z%F(zWUyl4I##n-!;Q#W&!A}GCN@lz zOx!kcMRZ3H@&WOj-{`oc#<^2fer-b z8)_&W^;(C6L(l6+aQmt2D!=B)AW%eXG@mO!@Z49Sc66v!P?~Ppz2x3P^X zmyhL|cwplp9+}t?C{B_5rw(7;|eY#zqkv8}-&fv(Eed3(AqFK9t%y==FRR@S+9s{FTuTeeL$ic1c>C zBd2;dk`7xI%a=N0;o}qMrZz?qCO?lrmOm*$%LDSY8ST&t+SKNEh_B=FEMJQ-pala* zn4@RMAmor|B(Q)2--zHXkr8%v>l}%1NPfZsJtLnwNBSd7<1>up7uJ)Ac++E^7h}$) qxNpKq1}tKU^{d3CkXYFl1YBc~z%s7T=INQZg?a9>#@}DrU;YE2%&jZ{ literal 0 HcmV?d00001 diff --git a/target/classes/PersonUtilities$Under30.class b/target/classes/PersonUtilities$Under30.class new file mode 100644 index 0000000000000000000000000000000000000000..1966fb508d65ee3af60f03d1f5cc90d314ef4af9 GIT binary patch literal 623 zcmZWmO-~y!5PeQII9-+!zDrvuUo8oh3KHC?5LKXRq)>{09Jo1)6%31mcAfs9UV7oe z1tbpq0DctWEm>MA$kL2w=Dm3{_Wi@{9e_0~`Y2$+#~V!gc#C%uQxek>9|Zco8f)B! zK)zgQ2zb@@u@)Gt8>@eI&YLM)(E zdZNR#E`x9M@6yulTZ`Ib6l9my-0E&V_ic<9n$#5H9l_7B$$E6|Dg^) zD@V^2XkRf}r5E&tr5lK=r?OA$69#ONwvB$?f-Z=DkP$b+5N+CEkH{1|{P`NWYvfDQ ze;~cT@bZ_;=Gh69O(lLjbsF!YvrgpkjIcgRL;<El|sPty7b30XEcOvjn#L(coYd){-NbDnd~&OZ6)$DaTk z!q+NZz>Ifu@2a>4U9RR-oPr)k8uM~% z)T0v%@-L%cQAL|HY^sPzxuoE_f~-LESz}qx8kbCaaUz$?WDNmr(z1;FcvdeIjDmt? z0p+4KZ{!ai5C}`<^<6`1e9=f>KX2p;_{r4zo5@akFBX(TF=hvc~kC7har2>EC{ruT=N%gGi%zWQJ|mZ6~|-Y zT$ZpdEb5lP?!MHLep4SRQf(+@7VN}izyCx)tO(SV4AM?0OGTQiRt)MH;u4dL-7;=T zdjcIBQLe6(k#_s;C(9m2Wlm;nJ$-#jUva`xU@6E6)X$h1OSg-8dO7Nc?zvwTgy$La zR?5SbT+zyuGodb+*8G{(X?>Zt<9^!-7i(6xGD9&LZZ&abwIBUulZg^jiBKMSPVH01=t#jxXC=aW;EQwZ3U|u-oyJEKEQ_>KEfRZA8YtT zZa&3l3O?8H1-{hq6?SRZi5?A6^l)PMp!5!JayG&_V;|JHqmjeUX@+z zY}(8Eo&c!Lma)g=G>dF_K55woX9g8oDp8jXB@D}+)w4xjqYsY3pgzwsip>z= z=))a28$pyN%!bUmXT)XPDC$}ESv@bilYtdTjFof{T-fu5VWhSpCvmv1JhG(ou%~TV zaGiXGg0D|imIPO-tO`d8S&rblg1aF~L0J=f2=P4^0rc{});X-j9=~m*bLzw0@Vr#%LG$Daz2S|*1yZPRZVSp>TMI3{aa<$)yqz;F1 zfM)>=^R$D~)f%C6pN;VBAa_j&{*5LDhZG#{`;&)9co@J@#&_)b;`?rk_}Ymi!ZO-^)0=1t&WzoD8t7 zngZ-Eh3qund-}WVTepQ=PKKHL5w_Gp26dRta>T<)qlc4;Qv1a53OU@!$wW0L(F!M% z#QZ8=D`EbHQqFe^&m0(#z3-s+j)C8*#=vnV_5>+Ou(gxy%Tex5c_?Xj;*iyw zT(7NUDULdRLZp0SKx(;TKt9`S4D73fH^uO#agHgGZL*zG{z5;XMV7ztjL2)$jBcjc z>epOiKC;{R0^H@y!~g&Q literal 0 HcmV?d00001 diff --git a/target/test-classes/PersonUtilitiesTest.class b/target/test-classes/PersonUtilitiesTest.class new file mode 100644 index 0000000000000000000000000000000000000000..2db8b7cad793d46a4aaedf2c49e69892c1770760 GIT binary patch literal 5045 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 O+XwJz{<*u$c;LT#!99im literal 0 HcmV?d00001