R/en_US.R

## automotive -------------
automotive_en_US = R6Class(
  "automotive_en_US",
  inherit = automotive_init,
  cloneable = FALSE,
  private = list(
    # from
    # https://en.wikipedia.org/wiki/United_States_license_plate_designs_and_serial_formats#Current_standard-issue_passenger_plate_designs_and_serial_formats
    license_formats = c(
      # Alabama
      '#??####',
      '##??###',
      # Alaska
      '### ???',
      # American Samoa
      '####',
      # Arizona
      '???####',
      # Arkansas
      '### ???',
      '###???',
      # California
      '#???###',
      # Colarado
      '###-???',
      '???-###',
      # Conneticut
      '###-???',
      # Delaware
      '######',
      # DC
      '??-####',
      # Florda
      '??? ?##',
      '### ???',
      '?## #??',
      '### #??',
      # Georgia
      '???####',
      # Guam
      '?? ####',
      # Hawaii
      '??? ###',
      'H?? ###',
      'Z?? ###',
      'K?? ###',
      'L?? ###',
      'M?? ###',
      # Idaho
      '? ######',
      '#? #####',
      '#? ?####',
      '#? ??###',
      '#? #?#???',
      '#? ####?',
      '##? ####',
      # Illinois
      '?? #####',
      '??# ####',
      # Indiana
      '###?',
      '###??',
      '###???',
      # Iowa
      '??? ###',
      # Kansas
      '### ???',
      # Kentucky
      '### ???',
      # Louisiana
      '### ???',
      # Maine
      '#### ??',
      # Maryland
      '#??####',
      # Massachusetts
      '#??? ##',
      '#?? ###',
      '### ??#',
      '##? ?##',
      # Michigan
      '### ???',
      '#?? ?##',
      # Minnesota
      '###-???',
      # Mississippi
      '??? ###',
      # Missouri
      '??# ?#?',
      # Montana
      '#-#####?',
      '##-####?',
      # Nebraska
      '??? ###',
      '#-?####',
      '##-?###',
      '##-??##',
      # Nevada
      '##?\u2022###',
      # New Hampshire
      '### ####',
      # New Jersey
      '?##-???',
      # New Mexico
      '###-???',
      '???-###',
      # New York
      '???-####',
      # North Carolina
      '###-????',
      # North Dakota
      '### ???',
      # Nothern Mariana Islands
      '??? ###',
      # Ohio
      '??? ####',
      # Oklahoma
      '???-###',
      # Oregon
      '### ???',
      # Pennsylvania
      '???-####',
      # Peurto Rico
      '???-###',
      # Rhode Island
      '###-###',
      # South Carolina
      '### #??',
      # South Dakota
      '#?? ###',
      '#?? ?##',
      '##? ###',
      '##? ?##',
      '##? ??#',
      # Tennessee
      '?##-##?',
      # Texas
      '???-####',
      # Utah
      '?## #??',
      '?## #??',
      # Vermont
      '??? ###',
      '##??#',
      '#??##',
      '###?#',
      '#?###',
      # US Virgin Islands
      '??? ###',
      # Virginia
      '???-####',
      # Washington
      '???####',
      '###-???',
      # West Virginia
      '#?? ###',
      '??? ###',
      # Wisconsin
      '???-####',
      '###-???',
      # Wyoming
      '#-#####',
      '#-####?',
      '##-#####')

  )
)

## bank -----------------------
bank_en_GB = R6Class(
  "bank_en_GB",
  inherit = bank_init,
  cloneable = FALSE,
  private = list(
    bban_format = '????#############',
    country_code = 'GB'
  )
)



## person ----------------
person_en_US = R6Class(
  "person_en_US",
  inherit = person_init,
  cloneable = FALSE,
  private = list(
    formats_female = list(
      c("{first_name_female} {last_name}", 0.97),
      c("{prefix_female} {first_name_female} {last_name}", 0.015),
      c("{first_name_female} {last_name} {suffix_female}", 0.02),
      c("{prefix_female} {first_name_female} {last_name} {suffix_female}", 0.005)),

    formats_male = list(
      c("{first_name_male} {last_name}", 0.97),
      c("{prefix_male} {first_name_male} {last_name}", 0.015),
      c("{first_name_male} {last_name} {suffix_male}", 0.02),
      c("{prefix_male} {first_name_male} {last_name} {suffix_male}", 0.005)),

    # Using random_elementc("s dictionary weighting means that the
    #     formats = formats_male + formats_female
    # has to be replaced with something dict and python 2.x compatible

    formats = list(
      c("{first_name_female} {last_name}", 0.97),
      c("{prefix_female} {first_name_female} {last_name}", 0.015),
      c("{first_name_female} {last_name} {suffix_female}", 0.02),
      c("{prefix_female} {first_name_female} {last_name} {suffix_female}", 0.005),
      c("{first_name_male} {last_name}", 0.97),
      c("{prefix_male} {first_name_male} {last_name}", 0.015),
      c("{first_name_male} {last_name} {suffix_male}", 0.02),
      c("{prefix_male} {first_name_male} {last_name} {suffix_male}", 0.005)),

    # Top 200 names of the decade from the 60c("s-90c("s from:
    # https://www.ssa.gov/OACT/babynames/decades/names1960s.html
    # Weightings derived from total number on each name
    first_names_female = list(
      c("April", 0.004529083),
      c("Abigail", 0.002043839),
      c("Adriana", 0.000488767),
      c("Adrienne", 0.000622931),
      c("Aimee", 0.000424727),
      c("Alejandra", 0.000415754),
      c("Alexa", 0.000663005),
      c("Alexandra", 0.002835711),
      c("Alexandria", 0.000964993),
      c("Alexis", 0.003446735),
      c("Alice", 0.000589904),
      c("Alicia", 0.003766845),
      c("Alisha", 0.000475942),
      c("Alison", 0.001506047),
      c("Allison", 0.003740866),
      c("Alyssa", 0.00324341),
      c("Amanda", 0.015360768),
      c("Amber", 0.006928794),
      c("Amy", 0.012860314),
      c("Ana", 0.000853679),
      c("Andrea", 0.006747028),
      c("Angel", 0.001161117),
      c("Angela", 0.011954085),
      c("Angelica", 0.001102746),
      c("Angie", 0.00030166),
      c("Anita", 0.001383767),
      c("Ann", 0.002627483),
      c("Anna", 0.004691502),
      c("Anne", 0.002089582),
      c("Annette", 0.001487399),
      c("Ariana", 0.000412668),
      c("Ariel", 0.000615774),
      c("Ashlee", 0.000696534),
      c("Ashley", 0.014773009),
      c("Audrey", 0.001139165),
      c("Autumn", 0.000918594),
      c("Bailey", 0.000691916),
      c("Barbara", 0.004839169),
      c("Becky", 0.000960944),
      c("Belinda", 0.000502227),
      c("Beth", 0.002246113),
      c("Bethany", 0.001249385),
      c("Betty", 0.000840241),
      c("Beverly", 0.000990272),
      c("Bianca", 0.000624835),
      c("Bonnie", 0.001351901),
      c("Brandi", 0.002077216),
      c("Brandy", 0.002177499),
      c("Breanna", 0.000876003),
      c("Brenda", 0.005737124),
      c("Briana", 0.00093665),
      c("Brianna", 0.002543549),
      c("Bridget", 0.000787232),
      c("Brittany", 0.007258404),
      c("Brittney", 0.001566147),
      c("Brooke", 0.002410152),
      c("Caitlin", 0.001808319),
      c("Caitlyn", 0.000481194),
      c("Candace", 0.000550662),
      c("Candice", 0.000653199),
      c("Carla", 0.00195185),
      c("Carly", 0.000498725),
      c("Carmen", 0.000891783),
      c("Carol", 0.002972719),
      c("Caroline", 0.001198127),
      c("Carolyn", 0.002647225),
      c("Carrie", 0.002934659),
      c("Casey", 0.001177707),
      c("Cassandra", 0.002501243),
      c("Cassidy", 0.000452129),
      c("Cassie", 0.000344886),
      c("Catherine", 0.004460622),
      c("Cathy", 0.001413248),
      c("Charlene", 0.000538865),
      c("Charlotte", 0.000530417),
      c("Chelsea", 0.00280043),
      c("Chelsey", 0.000368501),
      c("Cheryl", 0.004166447),
      c("Cheyenne", 0.000696907),
      c("Chloe", 0.000565807),
      c("Christie", 0.000397873),
      c("Christina", 0.008735669),
      c("Christine", 0.007488758),
      c("Christy", 0.00141861),
      c("Cindy", 0.003360109),
      c("Claire", 0.000553835),
      c("Claudia", 0.00096055),
      c("Colleen", 0.001836203),
      c("Connie", 0.001821845),
      c("Courtney", 0.00484939),
      c("Cristina", 0.000328734),
      c("Crystal", 0.006365045),
      c("Cynthia", 0.007655379),
      c("Daisy", 0.000437443),
      c("Dana", 0.003395805),
      c("Danielle", 0.006671783),
      c("Darlene", 0.000952737),
      c("Dawn", 0.005014983),
      c("Deanna", 0.002049026),
      c("Debbie", 0.001842922),
      c("Deborah", 0.005386088),
      c("Debra", 0.004123572),
      c("Denise", 0.004592291),
      c("Desiree", 0.000991497),
      c("Destiny", 0.001055515),
      c("Diamond", 0.000331732),
      c("Diana", 0.003699348),
      c("Diane", 0.003058996),
      c("Dominique", 0.000847857),
      c("Donna", 0.00570819),
      c("Doris", 0.000398026),
      c("Dorothy", 0.000722426),
      c("Ebony", 0.000399624),
      c("Eileen", 0.000544271),
      c("Elaine", 0.000601175),
      c("Elizabeth", 0.014954075),
      c("Ellen", 0.000747267),
      c("Emily", 0.009100581),
      c("Emma", 0.001272059),
      c("Erica", 0.004344471),
      c("Erika", 0.002105537),
      c("Erin", 0.005450719),
      c("Evelyn", 0.000825095),
      c("Faith", 0.000427113),
      c("Felicia", 0.001717294),
      c("Frances", 0.000546897),
      c("Gabriela", 0.000526937),
      c("Gabriella", 0.00044123),
      c("Gabrielle", 0.001090096),
      c("Gail", 0.00071934),
      c("Gina", 0.002841095),
      c("Glenda", 0.000384982),
      c("Gloria", 0.001155623),
      c("Grace", 0.00087202),
      c("Gwendolyn", 0.000407831),
      c("Hailey", 0.000662917),
      c("Haley", 0.001557939),
      c("Hannah", 0.004189822),
      c("Hayley", 0.000478305),
      c("Heather", 0.010945254),
      c("Heidi", 0.002239941),
      c("Helen", 0.000636675),
      c("Holly", 0.003487028),
      c("Isabel", 0.000352305),
      c("Isabella", 0.000410282),
      c("Jackie", 0.000566748),
      c("Jaclyn", 0.00047708),
      c("Jacqueline", 0.004811242),
      c("Jade", 0.000446264),
      c("Jaime", 0.000853175),
      c("Jamie", 0.005067663),
      c("Jane", 0.0009486),
      c("Janet", 0.002489993),
      c("Janice", 0.001593308),
      c("Jasmin", 0.000333374),
      c("Jasmine", 0.003025422),
      c("Jean", 0.000815969),
      c("Jeanette", 0.000767293),
      c("Jeanne", 0.000515381),
      c("Jenna", 0.001804052),
      c("Jennifer", 0.029218839),
      c("Jenny", 0.000932667),
      c("Jessica", 0.020047608),
      c("Jill", 0.003253018),
      c("Jillian", 0.000988587),
      c("Jo", 0.000442083),
      c("Joan", 0.000802793),
      c("Joann", 0.000544336),
      c("Joanna", 0.001176284),
      c("Joanne", 0.000729824),
      c("Jocelyn", 0.000456878),
      c("Jodi", 0.001252405),
      c("Jody", 0.000741861),
      c("Jordan", 0.001653057),
      c("Joy", 0.000916515),
      c("Joyce", 0.001009488),
      c("Judith", 0.000870706),
      c("Judy", 0.001101586),
      c("Julia", 0.003301891),
      c("Julie", 0.008211731),
      c("Kaitlin", 0.000674473),
      c("Kaitlyn", 0.001478623),
      c("Kara", 0.001549119),
      c("Karen", 0.009643845),
      c("Kari", 0.000794323),
      c("Karina", 0.000494764),
      c("Karla", 0.000387696),
      c("Katelyn", 0.001476128),
      c("Katherine", 0.006581479),
      c("Kathleen", 0.00503549),
      c("Kathryn", 0.004177806),
      c("Kathy", 0.002710214),
      c("Katie", 0.003056216),
      c("Katrina", 0.001565446),
      c("Kayla", 0.004621465),
      c("Kaylee", 0.000551734),
      c("Kelli", 0.000932163),
      c("Kellie", 0.000299187),
      c("Kelly", 0.009342929),
      c("Kelsey", 0.002470383),
      c("Kendra", 0.001401079),
      c("Kerri", 0.000316215),
      c("Kerry", 0.000352984),
      c("Kiara", 0.000390037),
      c("Kim", 0.002518642),
      c("Kimberly", 0.015594077),
      c("Kirsten", 0.000369486),
      c("Krista", 0.001266872),
      c("Kristen", 0.004345587),
      c("Kristi", 0.001022926),
      c("Kristie", 0.000380189),
      c("Kristin", 0.003613728),
      c("Kristina", 0.002316281),
      c("Kristine", 0.000977709),
      c("Kristy", 0.001097734),
      c("Krystal", 0.001238113),
      c("Kylie", 0.00049739),
      c("Lacey", 0.00045469),
      c("Latasha", 0.00032904),
      c("Latoya", 0.000646371),
      c("Laura", 0.010815096),
      c("Lauren", 0.007015421),
      c("Laurie", 0.002200786),
      c("Leah", 0.001997571),
      c("Leslie", 0.003606134),
      c("Linda", 0.006437751),
      c("Lindsay", 0.002185466),
      c("Lindsey", 0.002646153),
      c("Lisa", 0.01872729),
      c("Loretta", 0.000482945),
      c("Lori", 0.006040316),
      c("Lorraine", 0.000486753),
      c("Lydia", 0.000370274),
      c("Lynn", 0.001522308),
      c("Mackenzie", 0.000761056),
      c("Madeline", 0.000808921),
      c("Madison", 0.002011184),
      c("Makayla", 0.000439391),
      c("Mallory", 0.000688633),
      c("Mandy", 0.000355566),
      c("Marcia", 0.000403213),
      c("Margaret", 0.003839968),
      c("Maria", 0.006593123),
      c("Mariah", 0.00097598),
      c("Marie", 0.001520229),
      c("Marilyn", 0.000590889),
      c("Marisa", 0.000339983),
      c("Marissa", 0.001582627),
      c("Martha", 0.001290028),
      c("Mary", 0.014288466),
      c("Maureen", 0.000753855),
      c("Mckenzie", 0.000334512),
      c("Meagan", 0.000729999),
      c("Megan", 0.007686786),
      c("Meghan", 0.001481578),
      c("Melanie", 0.003400117),
      c("Melinda", 0.002078113),
      c("Melissa", 0.014890692),
      c("Melody", 0.000404264),
      c("Mercedes", 0.000334643),
      c("Meredith", 0.000766987),
      c("Mia", 0.000319935),
      c("Michaela", 0.000506998),
      c("Michele", 0.003519551),
      c("Michelle", 0.01527423),
      c("Mikayla", 0.000410195),
      c("Mindy", 0.000306891),
      c("Miranda", 0.001421193),
      c("Misty", 0.001564614),
      c("Molly", 0.001710641),
      c("Monica", 0.004324095),
      c("Monique", 0.001272125),
      c("Morgan", 0.002527025),
      c("Nancy", 0.005023343),
      c("Natalie", 0.003658398),
      c("Natasha", 0.001739815),
      c("Nichole", 0.001001237),
      c("Nicole", 0.011156655),
      c("Nina", 0.000298115),
      c("Norma", 0.000470754),
      c("Olivia", 0.001967609),
      c("Paige", 0.001106313),
      c("Pam", 0.000374454),
      c("Pamela", 0.005816222),
      c("Patricia", 0.008349353),
      c("Patty", 0.000383493),
      c("Paula", 0.002478284),
      c("Peggy", 0.000810606),
      c("Penny", 0.000836564),
      c("Phyllis", 0.000562437),
      c("Priscilla", 0.000350226),
      c("Rachael", 0.001098128),
      c("Rachel", 0.00876108),
      c("Raven", 0.000404855),
      c("Rebecca", 0.010563161),
      c("Rebekah", 0.000858581),
      c("Regina", 0.001941739),
      c("Renee", 0.00257883),
      c("Rhonda", 0.002879221),
      c("Rita", 0.000719187),
      c("Roberta", 0.000461715),
      c("Robin", 0.00409199),
      c("Robyn", 0.00032138),
      c("Rose", 0.000697125),
      c("Ruth", 0.001041946),
      c("Sabrina", 0.001920969),
      c("Sally", 0.000532912),
      c("Samantha", 0.008186124),
      c("Sandra", 0.006473426),
      c("Sandy", 0.000497106),
      c("Sara", 0.005619879),
      c("Sarah", 0.014434273),
      c("Savannah", 0.000978344),
      c("Selena", 0.000329106),
      c("Shannon", 0.005952552),
      c("Shari", 0.000449043),
      c("Sharon", 0.004796469),
      c("Shawna", 0.000354209),
      c("Sheena", 0.000355763),
      c("Sheila", 0.00220129),
      c("Shelby", 0.001575601),
      c("Shelia", 0.000403673),
      c("Shelley", 0.000922227),
      c("Shelly", 0.001339469),
      c("Sheri", 0.000913166),
      c("Sherri", 0.001285038),
      c("Sherry", 0.002445235),
      c("Sheryl", 0.00057025),
      c("Shirley", 0.000833259),
      c("Sierra", 0.000954816),
      c("Sonia", 0.000332739),
      c("Sonya", 0.000914085),
      c("Sophia", 0.000535976),
      c("Stacey", 0.002836761),
      c("Stacie", 0.0003903),
      c("Stacy", 0.00311717),
      c("Stefanie", 0.00034644),
      c("Stephanie", 0.013595762),
      c("Sue", 0.000472877),
      c("Summer", 0.000411508),
      c("Susan", 0.0088973),
      c("Suzanne", 0.001943577),
      c("Sydney", 0.001220101),
      c("Sylvia", 0.000625798),
      c("Tabitha", 0.000428404),
      c("Tamara", 0.00212948),
      c("Tami", 0.000403651),
      c("Tammie", 0.00042337),
      c("Tammy", 0.006493584),
      c("Tanya", 0.002039024),
      c("Tara", 0.00316834),
      c("Tasha", 0.000355807),
      c("Taylor", 0.003996871),
      c("Teresa", 0.005060003),
      c("Terri", 0.001823903),
      c("Terry", 0.00060494),
      c("Theresa", 0.003492762),
      c("Tiffany", 0.006594283),
      c("Tina", 0.005186419),
      c("Toni", 0.000891695),
      c("Tonya", 0.002404133),
      c("Tracey", 0.001511146),
      c("Traci", 0.00086193),
      c("Tracie", 0.000301901),
      c("Tracy", 0.00498572),
      c("Tricia", 0.000449196),
      c("Valerie", 0.003218022),
      c("Vanessa", 0.003779189),
      c("Veronica", 0.003017805),
      c("Vicki", 0.00088653),
      c("Vickie", 0.000695199),
      c("Victoria", 0.005237677),
      c("Virginia", 0.001496482),
      c("Wanda", 0.001336186),
      c("Wendy", 0.004058263),
      c("Whitney", 0.001690768),
      c("Yesenia", 0.000331951),
      c("Yolanda", 0.001213819),
      c("Yvette", 0.000483427),
      c("Yvonne", 0.001005483),
      c("Zoe", 0.000367407)),

    first_names_male = list(
      c("Aaron", 0.006741589),
      c("Adam", 0.007124922),
      c("Adrian", 0.001521889),
      c("Alan", 0.002344657),
      c("Albert", 0.001316595),
      c("Alec", 0.000442958),
      c("Alejandro", 0.000862489),
      c("Alex", 0.002111833),
      c("Alexander", 0.005215733),
      c("Alexis", 0.000277915),
      c("Alfred", 0.000318919),
      c("Allen", 0.001679613),
      c("Alvin", 0.00024794),
      c("Andre", 0.001400621),
      c("Andres", 0.000335574),
      c("Andrew", 0.013475074),
      c("Angel", 0.000902262),
      c("Anthony", 0.013783357),
      c("Antonio", 0.002392535),
      c("Arthur", 0.001342637),
      c("Austin", 0.003785615),
      c("Barry", 0.001102751),
      c("Benjamin", 0.006535474),
      c("Bernard", 0.000298691),
      c("Bill", 0.000430013),
      c("Billy", 0.001749806),
      c("Blake", 0.001218155),
      c("Bob", 0.000235731),
      c("Bobby", 0.001666977),
      c("Brad", 0.000984544),
      c("Bradley", 0.003845018),
      c("Brady", 0.000277522),
      c("Brandon", 0.009518346),
      c("Brendan", 0.000736758),
      c("Brent", 0.001889131),
      c("Brett", 0.002248371),
      c("Brian", 0.01597677),
      c("Bruce", 0.001883335),
      c("Bryan", 0.00456454),
      c("Bryce", 0.000457406),
      c("Caleb", 0.001485861),
      c("Calvin", 0.001168738),
      c("Cameron", 0.00180755),
      c("Carl", 0.002011802),
      c("Carlos", 0.00266638),
      c("Casey", 0.001440035),
      c("Cesar", 0.000304898),
      c("Chad", 0.003858817),
      c("Charles", 0.010889881),
      c("Chase", 0.000971942),
      c("Chris", 0.001389507),
      c("Christian", 0.003097779),
      c("Christopher", 0.02783596),
      c("Clarence", 0.000299289),
      c("Clayton", 0.000662222),
      c("Clifford", 0.00053078),
      c("Clinton", 0.000579307),
      c("Cody", 0.00353482),
      c("Cole", 0.000578811),
      c("Colin", 0.00078508),
      c("Collin", 0.000406057),
      c("Colton", 0.000520845),
      c("Connor", 0.000981073),
      c("Corey", 0.002476612),
      c("Cory", 0.001813005),
      c("Craig", 0.00338161),
      c("Cristian", 0.000333847),
      c("Curtis", 0.002140235),
      c("Dakota", 0.000797614),
      c("Dale", 0.001171354),
      c("Dalton", 0.000615113),
      c("Damon", 0.00034308),
      c("Dan", 0.000388496),
      c("Daniel", 0.018881874),
      c("Danny", 0.001873879),
      c("Darin", 0.000234962),
      c("Darius", 0.000336189),
      c("Darrell", 0.001218582),
      c("Darren", 0.001253738),
      c("Darryl", 0.00067019),
      c("Daryl", 0.000260918),
      c("Dave", 0.000269673),
      c("David", 0.031073833),
      c("Dean", 0.000965375),
      c("Dennis", 0.003318992),
      c("Derek", 0.003095299),
      c("Derrick", 0.001955921),
      c("Devin", 0.001312474),
      c("Devon", 0.000485877),
      c("Dillon", 0.000558361),
      c("Dominic", 0.000438221),
      c("Don", 0.000378322),
      c("Donald", 0.005689572),
      c("Douglas", 0.004513687),
      c("Drew", 0.000596868),
      c("Duane", 0.00061855),
      c("Dustin", 0.003088938),
      c("Dwayne", 0.000711382),
      c("Dylan", 0.002329096),
      c("Earl", 0.000348347),
      c("Eddie", 0.0007944),
      c("Edgar", 0.000379536),
      c("Eduardo", 0.000465358),
      c("Edward", 0.005702242),
      c("Edwin", 0.001117833),
      c("Elijah", 0.000592183),
      c("Eric", 0.012024659),
      c("Erik", 0.001997096),
      c("Ernest", 0.000746556),
      c("Ethan", 0.001143978),
      c("Eugene", 0.000784243),
      c("Evan", 0.001570691),
      c("Fernando", 0.000557608),
      c("Francis", 0.000330837),
      c("Francisco", 0.001084335),
      c("Frank", 0.003276449),
      c("Franklin", 0.000237561),
      c("Fred", 0.000396618),
      c("Frederick", 0.001104188),
      c("Gabriel", 0.001906504),
      c("Garrett", 0.001124861),
      c("Gary", 0.005023109),
      c("Gavin", 0.000295373),
      c("Gene", 0.00023426),
      c("Geoffrey", 0.000425978),
      c("George", 0.004423984),
      c("Gerald", 0.00165841),
      c("Gilbert", 0.000246726),
      c("Glen", 0.000374338),
      c("Glenn", 0.001111421),
      c("Gordon", 0.00027075),
      c("Grant", 0.00068322),
      c("Greg", 0.000623492),
      c("Gregg", 0.000235885),
      c("Gregory", 0.007676443),
      c("Guy", 0.000262645),
      c("Harold", 0.000929467),
      c("Harry", 0.000586934),
      c("Hayden", 0.000279454),
      c("Hector", 0.000798691),
      c("Henry", 0.001856232),
      c("Herbert", 0.000234226),
      c("Howard", 0.000712921),
      c("Hunter", 0.001034679),
      c("Ian", 0.001863192),
      c("Isaac", 0.001001951),
      c("Isaiah", 0.000625441),
      c("Ivan", 0.000350433),
      c("Jack", 0.001839748),
      c("Jackson", 0.000403253),
      c("Jacob", 0.007845384),
      c("Jaime", 0.000421378),
      c("Jake", 0.000565782),
      c("James", 0.029601617),
      c("Jamie", 0.00093552),
      c("Jared", 0.002538802),
      c("Jason", 0.01520513),
      c("Javier", 0.000625202),
      c("Jay", 0.001411462),
      c("Jeff", 0.001271436),
      c("Jeffery", 0.002627873),
      c("Jeffrey", 0.01225709),
      c("Jeremiah", 0.001209605),
      c("Jeremy", 0.006336079),
      c("Jermaine", 0.000450156),
      c("Jerome", 0.000634299),
      c("Jerry", 0.003150273),
      c("Jesse", 0.003884552),
      c("Jesus", 0.001628965),
      c("Jim", 0.000567714),
      c("Jimmy", 0.001607489),
      c("Joe", 0.001621544),
      c("Joel", 0.002537742),
      c("John", 0.028683008),
      c("Johnathan", 0.000840448),
      c("Johnny", 0.002117065),
      c("Jon", 0.001561184),
      c("Jonathan", 0.009963971),
      c("Jonathon", 0.000701157),
      c("Jordan", 0.003451546),
      c("Jorge", 0.001180553),
      c("Jose", 0.005368207),
      c("Joseph", 0.018604763),
      c("Joshua", 0.014808101),
      c("Juan", 0.003233598),
      c("Julian", 0.000693736),
      c("Justin", 0.010197889),
      c("Karl", 0.000362437),
      c("Keith", 0.004622866),
      c("Kelly", 0.000775283),
      c("Kenneth", 0.008318145),
      c("Kent", 0.000329418),
      c("Kerry", 0.000261448),
      c("Kevin", 0.014324157),
      c("Kirk", 0.0003801),
      c("Kristopher", 0.000580692),
      c("Kurt", 0.000716375),
      c("Kyle", 0.006350049),
      c("Lance", 0.001048495),
      c("Larry", 0.003658807),
      c("Lawrence", 0.001670294),
      c("Lee", 0.001223883),
      c("Leon", 0.000236347),
      c("Leonard", 0.000756713),
      c("Leroy", 0.000260234),
      c("Leslie", 0.000234637),
      c("Levi", 0.000347184),
      c("Logan", 0.001325812),
      c("Lonnie", 0.000258576),
      c("Louis", 0.001212255),
      c("Lucas", 0.001098237),
      c("Luis", 0.002427777),
      c("Luke", 0.001221455),
      c("Malik", 0.000306813),
      c("Manuel", 0.001331369),
      c("Marc", 0.001431947),
      c("Marco", 0.000290586),
      c("Marcus", 0.002604122),
      c("Mario", 0.001229337),
      c("Mark", 0.014382277),
      c("Martin", 0.002085226),
      c("Marvin", 0.000732962),
      c("Mason", 0.000562037),
      c("Mathew", 0.000605555),
      c("Matthew", 0.020425018),
      c("Maurice", 0.000777078),
      c("Max", 0.000311276),
      c("Maxwell", 0.000357478),
      c("Melvin", 0.00061932),
      c("Michael", 0.045602241),
      c("Micheal", 0.001273847),
      c("Miguel", 0.001416267),
      c("Mike", 0.001221797),
      c("Mitchell", 0.001747788),
      c("Nathan", 0.005039405),
      c("Nathaniel", 0.001887558),
      c("Neil", 0.000240331),
      c("Nicholas", 0.010021219),
      c("Nicolas", 0.000362522),
      c("Noah", 0.000960947),
      c("Norman", 0.000389043),
      c("Omar", 0.000639052),
      c("Oscar", 0.000946583),
      c("Parker", 0.000277522),
      c("Patrick", 0.007153255),
      c("Paul", 0.009272953),
      c("Pedro", 0.000275726),
      c("Perry", 0.000258644),
      c("Peter", 0.004340385),
      c("Philip", 0.002262956),
      c("Phillip", 0.00280273),
      c("Preston", 0.000292022),
      c("Ralph", 0.000836891),
      c("Randall", 0.001614722),
      c("Randy", 0.003021926),
      c("Ray", 0.000379451),
      c("Raymond", 0.003493952),
      c("Reginald", 0.00095108),
      c("Ricardo", 0.001197276),
      c("Richard", 0.014131961),
      c("Rick", 0.000440016),
      c("Rickey", 0.00023833),
      c("Ricky", 0.001856882),
      c("Riley", 0.000322031),
      c("Robert", 0.026938092),
      c("Roberto", 0.000906024),
      c("Rodney", 0.002180555),
      c("Roger", 0.002038032),
      c("Ronald", 0.00576775),
      c("Ronnie", 0.000905938),
      c("Ross", 0.00026863),
      c("Roy", 0.001311346),
      c("Ruben", 0.000774821),
      c("Russell", 0.002096221),
      c("Ryan", 0.01128178),
      c("Samuel", 0.00498019),
      c("Scott", 0.010580999),
      c("Sean", 0.005593456),
      c("Sergio", 0.000568518),
      c("Seth", 0.001537416),
      c("Shane", 0.002530218),
      c("Shannon", 0.000421583),
      c("Shaun", 0.000748761),
      c("Shawn", 0.004474546),
      c("Spencer", 0.000912094),
      c("Stanley", 0.000739032),
      c("Stephen", 0.007675365),
      c("Steve", 0.001407564),
      c("Steven", 0.013292898),
      c("Stuart", 0.000238826),
      c("Tanner", 0.000639292),
      c("Taylor", 0.00133036),
      c("Terrance", 0.000203311),
      c("Terrence", 0.000203704),
      c("Terry", 0.002873624),
      c("Theodore", 0.000596561),
      c("Thomas", 0.0143364),
      c("Tim", 0.000711126),
      c("Timothy", 0.012632608),
      c("Todd", 0.00414612),
      c("Tom", 0.000499283),
      c("Tommy", 0.000778737),
      c("Tony", 0.002511563),
      c("Tracy", 0.000728259),
      c("Travis", 0.004022458),
      c("Trevor", 0.001692523),
      c("Tristan", 0.000408759),
      c("Troy", 0.002695415),
      c("Tyler", 0.005962323),
      c("Tyrone", 0.000587207),
      c("Vernon", 0.000246401),
      c("Victor", 0.002340621),
      c("Vincent", 0.002494515),
      c("Walter", 0.001525891),
      c("Warren", 0.000317414),
      c("Wayne", 0.00160966),
      c("Wesley", 0.001733835),
      c("William", 0.020025989),
      c("Willie", 0.001379247),
      c("Wyatt", 0.000306591),
      c("Xavier", 0.000415222),
      c("Zachary", 0.005918634)),

    first_names = list(
      c("April", 0.004529083),
      c("Abigail", 0.002043839),
      c("Adriana", 0.000488767),
      c("Adrienne", 0.000622931),
      c("Aimee", 0.000424727),
      c("Alejandra", 0.000415754),
      c("Alexa", 0.000663005),
      c("Alexandra", 0.002835711),
      c("Alexandria", 0.000964993),
      c("Alexis", 0.003446735),
      c("Alice", 0.000589904),
      c("Alicia", 0.003766845),
      c("Alisha", 0.000475942),
      c("Alison", 0.001506047),
      c("Allison", 0.003740866),
      c("Alyssa", 0.00324341),
      c("Amanda", 0.015360768),
      c("Amber", 0.006928794),
      c("Amy", 0.012860314),
      c("Ana", 0.000853679),
      c("Andrea", 0.006747028),
      c("Angel", 0.001161117),
      c("Angela", 0.011954085),
      c("Angelica", 0.001102746),
      c("Angie", 0.00030166),
      c("Anita", 0.001383767),
      c("Ann", 0.002627483),
      c("Anna", 0.004691502),
      c("Anne", 0.002089582),
      c("Annette", 0.001487399),
      c("Ariana", 0.000412668),
      c("Ariel", 0.000615774),
      c("Ashlee", 0.000696534),
      c("Ashley", 0.014773009),
      c("Audrey", 0.001139165),
      c("Autumn", 0.000918594),
      c("Bailey", 0.000691916),
      c("Barbara", 0.004839169),
      c("Becky", 0.000960944),
      c("Belinda", 0.000502227),
      c("Beth", 0.002246113),
      c("Bethany", 0.001249385),
      c("Betty", 0.000840241),
      c("Beverly", 0.000990272),
      c("Bianca", 0.000624835),
      c("Bonnie", 0.001351901),
      c("Brandi", 0.002077216),
      c("Brandy", 0.002177499),
      c("Breanna", 0.000876003),
      c("Brenda", 0.005737124),
      c("Briana", 0.00093665),
      c("Brianna", 0.002543549),
      c("Bridget", 0.000787232),
      c("Brittany", 0.007258404),
      c("Brittney", 0.001566147),
      c("Brooke", 0.002410152),
      c("Caitlin", 0.001808319),
      c("Caitlyn", 0.000481194),
      c("Candace", 0.000550662),
      c("Candice", 0.000653199),
      c("Carla", 0.00195185),
      c("Carly", 0.000498725),
      c("Carmen", 0.000891783),
      c("Carol", 0.002972719),
      c("Caroline", 0.001198127),
      c("Carolyn", 0.002647225),
      c("Carrie", 0.002934659),
      c("Casey", 0.001177707),
      c("Cassandra", 0.002501243),
      c("Cassidy", 0.000452129),
      c("Cassie", 0.000344886),
      c("Catherine", 0.004460622),
      c("Cathy", 0.001413248),
      c("Charlene", 0.000538865),
      c("Charlotte", 0.000530417),
      c("Chelsea", 0.00280043),
      c("Chelsey", 0.000368501),
      c("Cheryl", 0.004166447),
      c("Cheyenne", 0.000696907),
      c("Chloe", 0.000565807),
      c("Christie", 0.000397873),
      c("Christina", 0.008735669),
      c("Christine", 0.007488758),
      c("Christy", 0.00141861),
      c("Cindy", 0.003360109),
      c("Claire", 0.000553835),
      c("Claudia", 0.00096055),
      c("Colleen", 0.001836203),
      c("Connie", 0.001821845),
      c("Courtney", 0.00484939),
      c("Cristina", 0.000328734),
      c("Crystal", 0.006365045),
      c("Cynthia", 0.007655379),
      c("Daisy", 0.000437443),
      c("Dana", 0.003395805),
      c("Danielle", 0.006671783),
      c("Darlene", 0.000952737),
      c("Dawn", 0.005014983),
      c("Deanna", 0.002049026),
      c("Debbie", 0.001842922),
      c("Deborah", 0.005386088),
      c("Debra", 0.004123572),
      c("Denise", 0.004592291),
      c("Desiree", 0.000991497),
      c("Destiny", 0.001055515),
      c("Diamond", 0.000331732),
      c("Diana", 0.003699348),
      c("Diane", 0.003058996),
      c("Dominique", 0.000847857),
      c("Donna", 0.00570819),
      c("Doris", 0.000398026),
      c("Dorothy", 0.000722426),
      c("Ebony", 0.000399624),
      c("Eileen", 0.000544271),
      c("Elaine", 0.000601175),
      c("Elizabeth", 0.014954075),
      c("Ellen", 0.000747267),
      c("Emily", 0.009100581),
      c("Emma", 0.001272059),
      c("Erica", 0.004344471),
      c("Erika", 0.002105537),
      c("Erin", 0.005450719),
      c("Evelyn", 0.000825095),
      c("Faith", 0.000427113),
      c("Felicia", 0.001717294),
      c("Frances", 0.000546897),
      c("Gabriela", 0.000526937),
      c("Gabriella", 0.00044123),
      c("Gabrielle", 0.001090096),
      c("Gail", 0.00071934),
      c("Gina", 0.002841095),
      c("Glenda", 0.000384982),
      c("Gloria", 0.001155623),
      c("Grace", 0.00087202),
      c("Gwendolyn", 0.000407831),
      c("Hailey", 0.000662917),
      c("Haley", 0.001557939),
      c("Hannah", 0.004189822),
      c("Hayley", 0.000478305),
      c("Heather", 0.010945254),
      c("Heidi", 0.002239941),
      c("Helen", 0.000636675),
      c("Holly", 0.003487028),
      c("Isabel", 0.000352305),
      c("Isabella", 0.000410282),
      c("Jackie", 0.000566748),
      c("Jaclyn", 0.00047708),
      c("Jacqueline", 0.004811242),
      c("Jade", 0.000446264),
      c("Jaime", 0.000853175),
      c("Jamie", 0.005067663),
      c("Jane", 0.0009486),
      c("Janet", 0.002489993),
      c("Janice", 0.001593308),
      c("Jasmin", 0.000333374),
      c("Jasmine", 0.003025422),
      c("Jean", 0.000815969),
      c("Jeanette", 0.000767293),
      c("Jeanne", 0.000515381),
      c("Jenna", 0.001804052),
      c("Jennifer", 0.029218839),
      c("Jenny", 0.000932667),
      c("Jessica", 0.020047608),
      c("Jill", 0.003253018),
      c("Jillian", 0.000988587),
      c("Jo", 0.000442083),
      c("Joan", 0.000802793),
      c("Joann", 0.000544336),
      c("Joanna", 0.001176284),
      c("Joanne", 0.000729824),
      c("Jocelyn", 0.000456878),
      c("Jodi", 0.001252405),
      c("Jody", 0.000741861),
      c("Jordan", 0.001653057),
      c("Joy", 0.000916515),
      c("Joyce", 0.001009488),
      c("Judith", 0.000870706),
      c("Judy", 0.001101586),
      c("Julia", 0.003301891),
      c("Julie", 0.008211731),
      c("Kaitlin", 0.000674473),
      c("Kaitlyn", 0.001478623),
      c("Kara", 0.001549119),
      c("Karen", 0.009643845),
      c("Kari", 0.000794323),
      c("Karina", 0.000494764),
      c("Karla", 0.000387696),
      c("Katelyn", 0.001476128),
      c("Katherine", 0.006581479),
      c("Kathleen", 0.00503549),
      c("Kathryn", 0.004177806),
      c("Kathy", 0.002710214),
      c("Katie", 0.003056216),
      c("Katrina", 0.001565446),
      c("Kayla", 0.004621465),
      c("Kaylee", 0.000551734),
      c("Kelli", 0.000932163),
      c("Kellie", 0.000299187),
      c("Kelly", 0.009342929),
      c("Kelsey", 0.002470383),
      c("Kendra", 0.001401079),
      c("Kerri", 0.000316215),
      c("Kerry", 0.000352984),
      c("Kiara", 0.000390037),
      c("Kim", 0.002518642),
      c("Kimberly", 0.015594077),
      c("Kirsten", 0.000369486),
      c("Krista", 0.001266872),
      c("Kristen", 0.004345587),
      c("Kristi", 0.001022926),
      c("Kristie", 0.000380189),
      c("Kristin", 0.003613728),
      c("Kristina", 0.002316281),
      c("Kristine", 0.000977709),
      c("Kristy", 0.001097734),
      c("Krystal", 0.001238113),
      c("Kylie", 0.00049739),
      c("Lacey", 0.00045469),
      c("Latasha", 0.00032904),
      c("Latoya", 0.000646371),
      c("Laura", 0.010815096),
      c("Lauren", 0.007015421),
      c("Laurie", 0.002200786),
      c("Leah", 0.001997571),
      c("Leslie", 0.003606134),
      c("Linda", 0.006437751),
      c("Lindsay", 0.002185466),
      c("Lindsey", 0.002646153),
      c("Lisa", 0.01872729),
      c("Loretta", 0.000482945),
      c("Lori", 0.006040316),
      c("Lorraine", 0.000486753),
      c("Lydia", 0.000370274),
      c("Lynn", 0.001522308),
      c("Mackenzie", 0.000761056),
      c("Madeline", 0.000808921),
      c("Madison", 0.002011184),
      c("Makayla", 0.000439391),
      c("Mallory", 0.000688633),
      c("Mandy", 0.000355566),
      c("Marcia", 0.000403213),
      c("Margaret", 0.003839968),
      c("Maria", 0.006593123),
      c("Mariah", 0.00097598),
      c("Marie", 0.001520229),
      c("Marilyn", 0.000590889),
      c("Marisa", 0.000339983),
      c("Marissa", 0.001582627),
      c("Martha", 0.001290028),
      c("Mary", 0.014288466),
      c("Maureen", 0.000753855),
      c("Mckenzie", 0.000334512),
      c("Meagan", 0.000729999),
      c("Megan", 0.007686786),
      c("Meghan", 0.001481578),
      c("Melanie", 0.003400117),
      c("Melinda", 0.002078113),
      c("Melissa", 0.014890692),
      c("Melody", 0.000404264),
      c("Mercedes", 0.000334643),
      c("Meredith", 0.000766987),
      c("Mia", 0.000319935),
      c("Michaela", 0.000506998),
      c("Michele", 0.003519551),
      c("Michelle", 0.01527423),
      c("Mikayla", 0.000410195),
      c("Mindy", 0.000306891),
      c("Miranda", 0.001421193),
      c("Misty", 0.001564614),
      c("Molly", 0.001710641),
      c("Monica", 0.004324095),
      c("Monique", 0.001272125),
      c("Morgan", 0.002527025),
      c("Nancy", 0.005023343),
      c("Natalie", 0.003658398),
      c("Natasha", 0.001739815),
      c("Nichole", 0.001001237),
      c("Nicole", 0.011156655),
      c("Nina", 0.000298115),
      c("Norma", 0.000470754),
      c("Olivia", 0.001967609),
      c("Paige", 0.001106313),
      c("Pam", 0.000374454),
      c("Pamela", 0.005816222),
      c("Patricia", 0.008349353),
      c("Patty", 0.000383493),
      c("Paula", 0.002478284),
      c("Peggy", 0.000810606),
      c("Penny", 0.000836564),
      c("Phyllis", 0.000562437),
      c("Priscilla", 0.000350226),
      c("Rachael", 0.001098128),
      c("Rachel", 0.00876108),
      c("Raven", 0.000404855),
      c("Rebecca", 0.010563161),
      c("Rebekah", 0.000858581),
      c("Regina", 0.001941739),
      c("Renee", 0.00257883),
      c("Rhonda", 0.002879221),
      c("Rita", 0.000719187),
      c("Roberta", 0.000461715),
      c("Robin", 0.00409199),
      c("Robyn", 0.00032138),
      c("Rose", 0.000697125),
      c("Ruth", 0.001041946),
      c("Sabrina", 0.001920969),
      c("Sally", 0.000532912),
      c("Samantha", 0.008186124),
      c("Sandra", 0.006473426),
      c("Sandy", 0.000497106),
      c("Sara", 0.005619879),
      c("Sarah", 0.014434273),
      c("Savannah", 0.000978344),
      c("Selena", 0.000329106),
      c("Shannon", 0.005952552),
      c("Shari", 0.000449043),
      c("Sharon", 0.004796469),
      c("Shawna", 0.000354209),
      c("Sheena", 0.000355763),
      c("Sheila", 0.00220129),
      c("Shelby", 0.001575601),
      c("Shelia", 0.000403673),
      c("Shelley", 0.000922227),
      c("Shelly", 0.001339469),
      c("Sheri", 0.000913166),
      c("Sherri", 0.001285038),
      c("Sherry", 0.002445235),
      c("Sheryl", 0.00057025),
      c("Shirley", 0.000833259),
      c("Sierra", 0.000954816),
      c("Sonia", 0.000332739),
      c("Sonya", 0.000914085),
      c("Sophia", 0.000535976),
      c("Stacey", 0.002836761),
      c("Stacie", 0.0003903),
      c("Stacy", 0.00311717),
      c("Stefanie", 0.00034644),
      c("Stephanie", 0.013595762),
      c("Sue", 0.000472877),
      c("Summer", 0.000411508),
      c("Susan", 0.0088973),
      c("Suzanne", 0.001943577),
      c("Sydney", 0.001220101),
      c("Sylvia", 0.000625798),
      c("Tabitha", 0.000428404),
      c("Tamara", 0.00212948),
      c("Tami", 0.000403651),
      c("Tammie", 0.00042337),
      c("Tammy", 0.006493584),
      c("Tanya", 0.002039024),
      c("Tara", 0.00316834),
      c("Tasha", 0.000355807),
      c("Taylor", 0.003996871),
      c("Teresa", 0.005060003),
      c("Terri", 0.001823903),
      c("Terry", 0.00060494),
      c("Theresa", 0.003492762),
      c("Tiffany", 0.006594283),
      c("Tina", 0.005186419),
      c("Toni", 0.000891695),
      c("Tonya", 0.002404133),
      c("Tracey", 0.001511146),
      c("Traci", 0.00086193),
      c("Tracie", 0.000301901),
      c("Tracy", 0.00498572),
      c("Tricia", 0.000449196),
      c("Valerie", 0.003218022),
      c("Vanessa", 0.003779189),
      c("Veronica", 0.003017805),
      c("Vicki", 0.00088653),
      c("Vickie", 0.000695199),
      c("Victoria", 0.005237677),
      c("Virginia", 0.001496482),
      c("Wanda", 0.001336186),
      c("Wendy", 0.004058263),
      c("Whitney", 0.001690768),
      c("Yesenia", 0.000331951),
      c("Yolanda", 0.001213819),
      c("Yvette", 0.000483427),
      c("Yvonne", 0.001005483),
      c("Zoe", 0.000367407),

      c("Aaron", 0.006741589),
      c("Adam", 0.007124922),
      c("Adrian", 0.001521889),
      c("Alan", 0.002344657),
      c("Albert", 0.001316595),
      c("Alec", 0.000442958),
      c("Alejandro", 0.000862489),
      c("Alex", 0.002111833),
      c("Alexander", 0.005215733),
      c("Alexis", 0.000277915),
      c("Alfred", 0.000318919),
      c("Allen", 0.001679613),
      c("Alvin", 0.00024794),
      c("Andre", 0.001400621),
      c("Andres", 0.000335574),
      c("Andrew", 0.013475074),
      c("Angel", 0.000902262),
      c("Anthony", 0.013783357),
      c("Antonio", 0.002392535),
      c("Arthur", 0.001342637),
      c("Austin", 0.003785615),
      c("Barry", 0.001102751),
      c("Benjamin", 0.006535474),
      c("Bernard", 0.000298691),
      c("Bill", 0.000430013),
      c("Billy", 0.001749806),
      c("Blake", 0.001218155),
      c("Bob", 0.000235731),
      c("Bobby", 0.001666977),
      c("Brad", 0.000984544),
      c("Bradley", 0.003845018),
      c("Brady", 0.000277522),
      c("Brandon", 0.009518346),
      c("Brendan", 0.000736758),
      c("Brent", 0.001889131),
      c("Brett", 0.002248371),
      c("Brian", 0.01597677),
      c("Bruce", 0.001883335),
      c("Bryan", 0.00456454),
      c("Bryce", 0.000457406),
      c("Caleb", 0.001485861),
      c("Calvin", 0.001168738),
      c("Cameron", 0.00180755),
      c("Carl", 0.002011802),
      c("Carlos", 0.00266638),
      c("Casey", 0.001440035),
      c("Cesar", 0.000304898),
      c("Chad", 0.003858817),
      c("Charles", 0.010889881),
      c("Chase", 0.000971942),
      c("Chris", 0.001389507),
      c("Christian", 0.003097779),
      c("Christopher", 0.02783596),
      c("Clarence", 0.000299289),
      c("Clayton", 0.000662222),
      c("Clifford", 0.00053078),
      c("Clinton", 0.000579307),
      c("Cody", 0.00353482),
      c("Cole", 0.000578811),
      c("Colin", 0.00078508),
      c("Collin", 0.000406057),
      c("Colton", 0.000520845),
      c("Connor", 0.000981073),
      c("Corey", 0.002476612),
      c("Cory", 0.001813005),
      c("Craig", 0.00338161),
      c("Cristian", 0.000333847),
      c("Curtis", 0.002140235),
      c("Dakota", 0.000797614),
      c("Dale", 0.001171354),
      c("Dalton", 0.000615113),
      c("Damon", 0.00034308),
      c("Dan", 0.000388496),
      c("Daniel", 0.018881874),
      c("Danny", 0.001873879),
      c("Darin", 0.000234962),
      c("Darius", 0.000336189),
      c("Darrell", 0.001218582),
      c("Darren", 0.001253738),
      c("Darryl", 0.00067019),
      c("Daryl", 0.000260918),
      c("Dave", 0.000269673),
      c("David", 0.031073833),
      c("Dean", 0.000965375),
      c("Dennis", 0.003318992),
      c("Derek", 0.003095299),
      c("Derrick", 0.001955921),
      c("Devin", 0.001312474),
      c("Devon", 0.000485877),
      c("Dillon", 0.000558361),
      c("Dominic", 0.000438221),
      c("Don", 0.000378322),
      c("Donald", 0.005689572),
      c("Douglas", 0.004513687),
      c("Drew", 0.000596868),
      c("Duane", 0.00061855),
      c("Dustin", 0.003088938),
      c("Dwayne", 0.000711382),
      c("Dylan", 0.002329096),
      c("Earl", 0.000348347),
      c("Eddie", 0.0007944),
      c("Edgar", 0.000379536),
      c("Eduardo", 0.000465358),
      c("Edward", 0.005702242),
      c("Edwin", 0.001117833),
      c("Elijah", 0.000592183),
      c("Eric", 0.012024659),
      c("Erik", 0.001997096),
      c("Ernest", 0.000746556),
      c("Ethan", 0.001143978),
      c("Eugene", 0.000784243),
      c("Evan", 0.001570691),
      c("Fernando", 0.000557608),
      c("Francis", 0.000330837),
      c("Francisco", 0.001084335),
      c("Frank", 0.003276449),
      c("Franklin", 0.000237561),
      c("Fred", 0.000396618),
      c("Frederick", 0.001104188),
      c("Gabriel", 0.001906504),
      c("Garrett", 0.001124861),
      c("Gary", 0.005023109),
      c("Gavin", 0.000295373),
      c("Gene", 0.00023426),
      c("Geoffrey", 0.000425978),
      c("George", 0.004423984),
      c("Gerald", 0.00165841),
      c("Gilbert", 0.000246726),
      c("Glen", 0.000374338),
      c("Glenn", 0.001111421),
      c("Gordon", 0.00027075),
      c("Grant", 0.00068322),
      c("Greg", 0.000623492),
      c("Gregg", 0.000235885),
      c("Gregory", 0.007676443),
      c("Guy", 0.000262645),
      c("Harold", 0.000929467),
      c("Harry", 0.000586934),
      c("Hayden", 0.000279454),
      c("Hector", 0.000798691),
      c("Henry", 0.001856232),
      c("Herbert", 0.000234226),
      c("Howard", 0.000712921),
      c("Hunter", 0.001034679),
      c("Ian", 0.001863192),
      c("Isaac", 0.001001951),
      c("Isaiah", 0.000625441),
      c("Ivan", 0.000350433),
      c("Jack", 0.001839748),
      c("Jackson", 0.000403253),
      c("Jacob", 0.007845384),
      c("Jaime", 0.000421378),
      c("Jake", 0.000565782),
      c("James", 0.029601617),
      c("Jamie", 0.00093552),
      c("Jared", 0.002538802),
      c("Jason", 0.01520513),
      c("Javier", 0.000625202),
      c("Jay", 0.001411462),
      c("Jeff", 0.001271436),
      c("Jeffery", 0.002627873),
      c("Jeffrey", 0.01225709),
      c("Jeremiah", 0.001209605),
      c("Jeremy", 0.006336079),
      c("Jermaine", 0.000450156),
      c("Jerome", 0.000634299),
      c("Jerry", 0.003150273),
      c("Jesse", 0.003884552),
      c("Jesus", 0.001628965),
      c("Jim", 0.000567714),
      c("Jimmy", 0.001607489),
      c("Joe", 0.001621544),
      c("Joel", 0.002537742),
      c("John", 0.028683008),
      c("Johnathan", 0.000840448),
      c("Johnny", 0.002117065),
      c("Jon", 0.001561184),
      c("Jonathan", 0.009963971),
      c("Jonathon", 0.000701157),
      c("Jordan", 0.003451546),
      c("Jorge", 0.001180553),
      c("Jose", 0.005368207),
      c("Joseph", 0.018604763),
      c("Joshua", 0.014808101),
      c("Juan", 0.003233598),
      c("Julian", 0.000693736),
      c("Justin", 0.010197889),
      c("Karl", 0.000362437),
      c("Keith", 0.004622866),
      c("Kelly", 0.000775283),
      c("Kenneth", 0.008318145),
      c("Kent", 0.000329418),
      c("Kerry", 0.000261448),
      c("Kevin", 0.014324157),
      c("Kirk", 0.0003801),
      c("Kristopher", 0.000580692),
      c("Kurt", 0.000716375),
      c("Kyle", 0.006350049),
      c("Lance", 0.001048495),
      c("Larry", 0.003658807),
      c("Lawrence", 0.001670294),
      c("Lee", 0.001223883),
      c("Leon", 0.000236347),
      c("Leonard", 0.000756713),
      c("Leroy", 0.000260234),
      c("Leslie", 0.000234637),
      c("Levi", 0.000347184),
      c("Logan", 0.001325812),
      c("Lonnie", 0.000258576),
      c("Louis", 0.001212255),
      c("Lucas", 0.001098237),
      c("Luis", 0.002427777),
      c("Luke", 0.001221455),
      c("Malik", 0.000306813),
      c("Manuel", 0.001331369),
      c("Marc", 0.001431947),
      c("Marco", 0.000290586),
      c("Marcus", 0.002604122),
      c("Mario", 0.001229337),
      c("Mark", 0.014382277),
      c("Martin", 0.002085226),
      c("Marvin", 0.000732962),
      c("Mason", 0.000562037),
      c("Mathew", 0.000605555),
      c("Matthew", 0.020425018),
      c("Maurice", 0.000777078),
      c("Max", 0.000311276),
      c("Maxwell", 0.000357478),
      c("Melvin", 0.00061932),
      c("Michael", 0.045602241),
      c("Micheal", 0.001273847),
      c("Miguel", 0.001416267),
      c("Mike", 0.001221797),
      c("Mitchell", 0.001747788),
      c("Nathan", 0.005039405),
      c("Nathaniel", 0.001887558),
      c("Neil", 0.000240331),
      c("Nicholas", 0.010021219),
      c("Nicolas", 0.000362522),
      c("Noah", 0.000960947),
      c("Norman", 0.000389043),
      c("Omar", 0.000639052),
      c("Oscar", 0.000946583),
      c("Parker", 0.000277522),
      c("Patrick", 0.007153255),
      c("Paul", 0.009272953),
      c("Pedro", 0.000275726),
      c("Perry", 0.000258644),
      c("Peter", 0.004340385),
      c("Philip", 0.002262956),
      c("Phillip", 0.00280273),
      c("Preston", 0.000292022),
      c("Ralph", 0.000836891),
      c("Randall", 0.001614722),
      c("Randy", 0.003021926),
      c("Ray", 0.000379451),
      c("Raymond", 0.003493952),
      c("Reginald", 0.00095108),
      c("Ricardo", 0.001197276),
      c("Richard", 0.014131961),
      c("Rick", 0.000440016),
      c("Rickey", 0.00023833),
      c("Ricky", 0.001856882),
      c("Riley", 0.000322031),
      c("Robert", 0.026938092),
      c("Roberto", 0.000906024),
      c("Rodney", 0.002180555),
      c("Roger", 0.002038032),
      c("Ronald", 0.00576775),
      c("Ronnie", 0.000905938),
      c("Ross", 0.00026863),
      c("Roy", 0.001311346),
      c("Ruben", 0.000774821),
      c("Russell", 0.002096221),
      c("Ryan", 0.01128178),
      c("Samuel", 0.00498019),
      c("Scott", 0.010580999),
      c("Sean", 0.005593456),
      c("Sergio", 0.000568518),
      c("Seth", 0.001537416),
      c("Shane", 0.002530218),
      c("Shannon", 0.000421583),
      c("Shaun", 0.000748761),
      c("Shawn", 0.004474546),
      c("Spencer", 0.000912094),
      c("Stanley", 0.000739032),
      c("Stephen", 0.007675365),
      c("Steve", 0.001407564),
      c("Steven", 0.013292898),
      c("Stuart", 0.000238826),
      c("Tanner", 0.000639292),
      c("Taylor", 0.00133036),
      c("Terrance", 0.000203311),
      c("Terrence", 0.000203704),
      c("Terry", 0.002873624),
      c("Theodore", 0.000596561),
      c("Thomas", 0.0143364),
      c("Tim", 0.000711126),
      c("Timothy", 0.012632608),
      c("Todd", 0.00414612),
      c("Tom", 0.000499283),
      c("Tommy", 0.000778737),
      c("Tony", 0.002511563),
      c("Tracy", 0.000728259),
      c("Travis", 0.004022458),
      c("Trevor", 0.001692523),
      c("Tristan", 0.000408759),
      c("Troy", 0.002695415),
      c("Tyler", 0.005962323),
      c("Tyrone", 0.000587207),
      c("Vernon", 0.000246401),
      c("Victor", 0.002340621),
      c("Vincent", 0.002494515),
      c("Walter", 0.001525891),
      c("Warren", 0.000317414),
      c("Wayne", 0.00160966),
      c("Wesley", 0.001733835),
      c("William", 0.020025989),
      c("Willie", 0.001379247),
      c("Wyatt", 0.000306591),
      c("Xavier", 0.000415222),
      c("Zachary", 0.005918634)),

    # Top 1000 US surnames from US Census data
    # Weighted by number of occurrences
    # By way of http://names.mongabay.com/data/1000.html on 2/10/2016
    last_names = list(
      c("Smith", 0.021712045),
      c("Johnson", 0.01696938),
      c("Williams", 0.014016962),
      c("Brown", 0.012610763),
      c("Jones", 0.012451866),
      c("Miller", 0.010305045),
      c("Davis", 0.009798219),
      c("Garcia", 0.007842422),
      c("Rodriguez", 0.007348561),
      c("Wilson", 0.007154951),
      c("Martinez", 0.007082045),
      c("Anderson", 0.006966203),
      c("Taylor", 0.006582218),
      c("Thomas", 0.006493824),
      c("Hernandez", 0.006454314),
      c("Moore", 0.006383948),
      c("Martin", 0.006146745),
      c("Jackson", 0.006086567),
      c("Thompson", 0.005887767),
      c("White", 0.005843424),
      c("Lopez", 0.005679145),
      c("Lee", 0.005535909),
      c("Gonzalez", 0.005461513),
      c("Harris", 0.005423356),
      c("Clark", 0.005010598),
      c("Lewis", 0.00465937),
      c("Robinson", 0.004596305),
      c("Walker", 0.004580579),
      c("Perez", 0.00446375),
      c("Hall", 0.004327121),
      c("Young", 0.004257495),
      c("Allen", 0.00423392),
      c("Sanchez", 0.004031749),
      c("Wright", 0.004023754),
      c("King", 0.004011135),
      c("Scott", 0.003838487),
      c("Green", 0.003778053),
      c("Baker", 0.003776901),
      c("Adams", 0.00377448),
      c("Nelson", 0.003766713),
      c("Hill", 0.003762455),
      c("Ramirez", 0.003554281),
      c("Campbell", 0.003398636),
      c("Mitchell", 0.003357336),
      c("Roberts", 0.003346207),
      c("Carter", 0.0033127),
      c("Phillips", 0.003214932),
      c("Evans", 0.003127113),
      c("Turner", 0.003067045),
      c("Torres", 0.002971158),
      c("Parker", 0.002962725),
      c("Collins", 0.002904264),
      c("Edwards", 0.002897155),
      c("Stewart", 0.002859044),
      c("Flores", 0.002856449),
      c("Morris", 0.002848582),
      c("Nguyen", 0.002833697),
      c("Murphy", 0.00274576),
      c("Rivera", 0.002736275),
      c("Cook", 0.002693623),
      c("Rogers", 0.002690041),
      c("Morgan", 0.002525543),
      c("Peterson", 0.002513125),
      c("Cooper", 0.00246795),
      c("Reed", 0.0024437),
      c("Bailey", 0.002429747),
      c("Bell", 0.002419112),
      c("Gomez", 0.002408494),
      c("Kelly", 0.002379209),
      c("Howard", 0.002327986),
      c("Ward", 0.002321973),
      c("Cox", 0.002318775),
      c("Diaz", 0.00230051),
      c("Richardson", 0.002280051),
      c("Wood", 0.002259639),
      c("Watson", 0.002215168),
      c("Brooks", 0.002199808),
      c("Bennett", 0.002184311),
      c("Gray", 0.002162912),
      c("James", 0.002131032),
      c("Reyes", 0.002124517),
      c("Cruz", 0.002111304),
      c("Hughes", 0.002095999),
      c("Price", 0.002090206),
      c("Myers", 0.002054278),
      c("Long", 0.002042126),
      c("Foster", 0.002019703),
      c("Sanders", 0.002018442),
      c("Ross", 0.002009844),
      c("Morales", 0.001988655),
      c("Powell", 0.001978704),
      c("Sullivan", 0.001970362),
      c("Russell", 0.001968461),
      c("Ortiz", 0.001961617),
      c("Jenkins", 0.001952974),
      c("Gutierrez", 0.001945371),
      c("Perry", 0.001942986),
      c("Butler", 0.001926859),
      c("Barnes", 0.00192272),
      c("Fisher", 0.001921377),
      c("Henderson", 0.001919686),
      c("Coleman", 0.001906255),
      c("Simmons", 0.001842531),
      c("Patterson", 0.00181427),
      c("Jordan", 0.00180198),
      c("Reynolds", 0.001787233),
      c("Hamilton", 0.001775656),
      c("Graham", 0.001773307),
      c("Kim", 0.001773243),
      c("Gonzales", 0.001772028),
      c("Alexander", 0.001767542),
      c("Ramos", 0.001764371),
      c("Wallace", 0.001743026),
      c("Griffin", 0.001741893),
      c("West", 0.001722047),
      c("Cole", 0.001715916),
      c("Hayes", 0.001712992),
      c("Chavez", 0.001698299),
      c("Gibson", 0.001685096),
      c("Bryant", 0.001679075),
      c("Ellis", 0.001662381),
      c("Stevens", 0.001657657),
      c("Murray", 0.001630218),
      c("Ford", 0.001630062),
      c("Marshall", 0.001619244),
      c("Owens", 0.001611212),
      c("Mcdonald", 0.001609019),
      c("Harrison", 0.001604295),
      c("Ruiz", 0.001602943),
      c("Kennedy", 0.001568285),
      c("Wells", 0.001559139),
      c("Alvarez", 0.001542527),
      c("Woods", 0.0015425),
      c("Mendoza", 0.001540243),
      c("Castillo", 0.001511972),
      c("Olson", 0.001493963),
      c("Webb", 0.001493771),
      c("Washington", 0.001489705),
      c("Tucker", 0.001488763),
      c("Freeman", 0.001486507),
      c("Burns", 0.001481636),
      c("Henry", 0.001474683),
      c("Vasquez", 0.001461863),
      c("Snyder", 0.001456143),
      c("Simpson", 0.001445891),
      c("Crawford", 0.001444795),
      c("Jimenez", 0.001438892),
      c("Porter", 0.001433163),
      c("Mason", 0.0014207),
      c("Shaw", 0.001417849),
      c("Gordon", 0.001415674),
      c("Wagner", 0.001411855),
      c("Hunter", 0.001410886),
      c("Romero", 0.001405057),
      c("Hicks", 0.00140365),
      c("Dixon", 0.001389003),
      c("Hunt", 0.001388738),
      c("Palmer", 0.00137431),
      c("Robertson", 0.001373323),
      c("Black", 0.001372291),
      c("Holmes", 0.001372108),
      c("Stone", 0.001368782),
      c("Meyer", 0.001367521),
      c("Boyd", 0.001365803),
      c("Mills", 0.001351485),
      c("Warren", 0.001351458),
      c("Fox", 0.001346441),
      c("Rose", 0.001342485),
      c("Rice", 0.001338062),
      c("Moreno", 0.001334846),
      c("Schmidt", 0.001330067),
      c("Patel", 0.001325508),
      c("Ferguson", 0.001299832),
      c("Nichols", 0.001296908),
      c("Herrera", 0.0012864),
      c("Medina", 0.001273307),
      c("Ryan", 0.001273142),
      c("Fernandez", 0.001272841),
      c("Weaver", 0.001268354),
      c("Daniels", 0.001268034),
      c("Stephens", 0.001267724),
      c("Gardner", 0.001266974),
      c("Payne", 0.0012612),
      c("Kelley", 0.001256878),
      c("Dunn", 0.001251395),
      c("Pierce", 0.001247393),
      c("Arnold", 0.001245547),
      c("Tran", 0.001243537),
      c("Spencer", 0.001228443),
      c("Peters", 0.001226505),
      c("Hawkins", 0.001224998),
      c("Grant", 0.001224705),
      c("Hansen", 0.001219589),
      c("Castro", 0.001217578),
      c("Hoffman", 0.001212014),
      c("Hart", 0.001210378),
      c("Elliott", 0.001210296),
      c("Cunningham", 0.00120517),
      c("Knight", 0.001204841),
      c("Bradley", 0.001199624),
      c("Carroll", 0.001197166),
      c("Hudson", 0.001195091),
      c("Duncan", 0.001191674),
      c("Armstrong", 0.001187681),
      c("Berry", 0.001182409),
      c("Andrews", 0.001181632),
      c("Johnston", 0.001178114),
      c("Ray", 0.001176826),
      c("Lane", 0.001176214),
      c("Riley", 0.001169206),
      c("Carpenter", 0.001161101),
      c("Perkins", 0.001159986),
      c("Aguilar", 0.001154942),
      c("Silva", 0.001152795),
      c("Richards", 0.001148126),
      c("Willis", 0.001147888),
      c("Matthews", 0.001140688),
      c("Chapman", 0.001138632),
      c("Lawrence", 0.001135955),
      c("Garza", 0.00113421),
      c("Vargas", 0.001132583),
      c("Watkins", 0.001118832),
      c("Wheeler", 0.00111186),
      c("Larson", 0.001106195),
      c("Carlson", 0.001097606),
      c("Harper", 0.001095267),
      c("George", 0.001094444),
      c("Greene", 0.001092855),
      c("Burke", 0.001088935),
      c("Guzman", 0.001081762),
      c("Morrison", 0.001077641),
      c("Munoz", 0.001076133),
      c("Jacobs", 0.001055721),
      c("Obrien", 0.001054304),
      c("Lawson", 0.001052486),
      c("Franklin", 0.001049498),
      c("Lynch", 0.001045743),
      c("Bishop", 0.00104196),
      c("Carr", 0.001040662),
      c("Salazar", 0.001036788),
      c("Austin", 0.001033974),
      c("Mendez", 0.0010301),
      c("Gilbert", 0.001027084),
      c("Jensen", 0.001026408),
      c("Williamson", 0.001025348),
      c("Montgomery", 0.00102469),
      c("Harvey", 0.001024617),
      c("Oliver", 0.001020094),
      c("Howell", 0.001001756),
      c("Dean", 0.000998064),
      c("Hanson", 0.000996685),
      c("Weber", 0.000985601),
      c("Garrett", 0.000984788),
      c("Sims", 0.000979918),
      c("Burton", 0.000979132),
      c("Fuller", 0.000974783),
      c("Soto", 0.000974317),
      c("Mccoy", 0.000972946),
      c("Welch", 0.00096676),
      c("Chen", 0.000964384),
      c("Schultz", 0.000959067),
      c("Walters", 0.000952844),
      c("Reid", 0.00095034),
      c("Fields", 0.00094335),
      c("Walsh", 0.000943113),
      c("Little", 0.000938563),
      c("Fowler", 0.000937667),
      c("Bowman", 0.000934186),
      c("Davidson", 0.000932404),
      c("May", 0.000929498),
      c("Day", 0.000929041),
      c("Schneider", 0.00091878),
      c("Newman", 0.000918214),
      c("Brewer", 0.000917976),
      c("Lucas", 0.000917538),
      c("Holland", 0.000912677),
      c("Wong", 0.000908172),
      c("Banks", 0.000907276),
      c("Santos", 0.000904526),
      c("Curtis", 0.000904206),
      c("Pearson", 0.000902105),
      c("Delgado", 0.000901621),
      c("Valdez", 0.000901027),
      c("Pena", 0.000898605),
      c("Rios", 0.000882377),
      c("Douglas", 0.000881062),
      c("Sandoval", 0.000879947),
      c("Barrett", 0.000876228),
      c("Hopkins", 0.000864414),
      c("Keller", 0.000861645),
      c("Guerrero", 0.000860293),
      c("Stanley", 0.000857232),
      c("Bates", 0.000856555),
      c("Alvarado", 0.000856373),
      c("Beck", 0.000851238),
      c("Ortega", 0.000850963),
      c("Wade", 0.00084825),
      c("Estrada", 0.000848222),
      c("Contreras", 0.00084666),
      c("Barnett", 0.000843252),
      c("Caldwell", 0.00083458),
      c("Santiago", 0.00083119),
      c("Lambert", 0.000828001),
      c("Powers", 0.000826019),
      c("Chambers", 0.000825324),
      c("Nunez", 0.000824255),
      c("Craig", 0.000818618),
      c("Leonard", 0.000815027),
      c("Lowe", 0.000814844),
      c("Rhodes", 0.000812459),
      c("Byrd", 0.00081149),
      c("Gregory", 0.000811481),
      c("Shelton", 0.000807059),
      c("Frazier", 0.00080705),
      c("Becker", 0.000805122),
      c("Maldonado", 0.000804226),
      c("Fleming", 0.000803614),
      c("Vega", 0.000801595),
      c("Sutton", 0.000798351),
      c("Cohen", 0.000797008),
      c("Jennings", 0.00079529),
      c("Parks", 0.000788967),
      c("Mcdaniel", 0.000788702),
      c("Watts", 0.000787889),
      c("Barker", 0.000778688),
      c("Norris", 0.000778605),
      c("Vaughn", 0.000777006),
      c("Vazquez", 0.000775992),
      c("Holt", 0.000774018),
      c("Schwartz", 0.000773918),
      c("Steele", 0.000770756),
      c("Benson", 0.00076966),
      c("Neal", 0.000766151),
      c("Dominguez", 0.000765073),
      c("Horton", 0.000763173),
      c("Terry", 0.000762387),
      c("Wolfe", 0.000759417),
      c("Hale", 0.000757983),
      c("Lyons", 0.000751614),
      c("Graves", 0.000750892),
      c("Haynes", 0.000749595),
      c("Miles", 0.000748644),
      c("Park", 0.000748251),
      c("Warner", 0.000747648),
      c("Padilla", 0.000747475),
      c("Bush", 0.000744907),
      c("Thornton", 0.000741864),
      c("Mccarthy", 0.000740439),
      c("Mann", 0.00074032),
      c("Zimmerman", 0.000739608),
      c("Erickson", 0.000739534),
      c("Fletcher", 0.000739498),
      c("Mckinney", 0.00073661),
      c("Page", 0.000735487),
      c("Dawson", 0.000732718),
      c("Joseph", 0.000731256),
      c("Marquez", 0.000730534),
      c("Reeves", 0.00072931),
      c("Klein", 0.000728104),
      c("Espinoza", 0.000724787),
      c("Baldwin", 0.000723224),
      c("Moran", 0.000717696),
      c("Love", 0.000715659),
      c("Robbins", 0.000713996),
      c("Higgins", 0.000713685),
      c("Ball", 0.000708696),
      c("Cortez", 0.000708066),
      c("Le", 0.000707709),
      c("Griffith", 0.00070749),
      c("Bowen", 0.000704283),
      c("Sharp", 0.000702364),
      c("Cummings", 0.000700893),
      c("Ramsey", 0.000700144),
      c("Hardy", 0.000699988),
      c("Swanson", 0.000699358),
      c("Barber", 0.000699038),
      c("Acosta", 0.000698791),
      c("Luna", 0.000695593),
      c("Chandler", 0.000695474),
      c("Daniel", 0.000686529),
      c("Blair", 0.000686529),
      c("Cross", 0.00068652),
      c("Simon", 0.000683824),
      c("Dennis", 0.000683322),
      c("Oconnor", 0.000683066),
      c("Quinn", 0.00068101),
      c("Gross", 0.000678762),
      c("Navarro", 0.000675884),
      c("Moss", 0.000673874),
      c("Fitzgerald", 0.000671791),
      c("Doyle", 0.000671754),
      c("Mclaughlin", 0.000668191),
      c("Rojas", 0.00066767),
      c("Rodgers", 0.000667213),
      c("Stevenson", 0.000666034),
      c("Singh", 0.00066375),
      c("Yang", 0.000663613),
      c("Figueroa", 0.000662754),
      c("Harmon", 0.000661667),
      c("Newton", 0.000660881),
      c("Paul", 0.00066015),
      c("Manning", 0.000658514),
      c("Garner", 0.000658359),
      c("Mcgee", 0.000657198),
      c("Reese", 0.000655636),
      c("Francis", 0.000655353),
      c("Burgess", 0.000654265),
      c("Adkins", 0.000653571),
      c("Goodman", 0.000653151),
      c("Curry", 0.00065189),
      c("Brady", 0.000650345),
      c("Christensen", 0.000650062),
      c("Potter", 0.000649688),
      c("Walton", 0.000648719),
      c("Goodwin", 0.000642652),
      c("Mullins", 0.000642222),
      c("Molina", 0.000641537),
      c("Webster", 0.000640733),
      c("Fischer", 0.000640477),
      c("Campos", 0.000639152),
      c("Avila", 0.000638175),
      c("Sherman", 0.000638147),
      c("Todd", 0.000637873),
      c("Chang", 0.00063738),
      c("Blake", 0.000633021),
      c("Malone", 0.00063282),
      c("Wolf", 0.000629604),
      c("Hodges", 0.000629266),
      c("Juarez", 0.000628507),
      c("Gill", 0.000627722),
      c("Farmer", 0.000624158),
      c("Hines", 0.00062266),
      c("Gallagher", 0.00062202),
      c("Duran", 0.000621755),
      c("Hubbard", 0.000621527),
      c("Cannon", 0.000620631),
      c("Miranda", 0.0006181),
      c("Wang", 0.000617406),
      c("Saunders", 0.000614116),
      c("Tate", 0.000614098),
      c("Mack", 0.000613604),
      c("Hammond", 0.000612773),
      c("Carrillo", 0.000612691),
      c("Townsend", 0.000610854),
      c("Wise", 0.000609803),
      c("Ingram", 0.000609136),
      c("Barton", 0.000608743),
      c("Mejia", 0.000607939),
      c("Ayala", 0.000607766),
      c("Schroeder", 0.000606825),
      c("Hampton", 0.000606514),
      c("Rowe", 0.000604933),
      c("Parsons", 0.000604915),
      c("Frank", 0.000602311),
      c("Waters", 0.000601388),
      c("Strickland", 0.000601361),
      c("Osborne", 0.000601251),
      c("Maxwell", 0.000601041),
      c("Chan", 0.000600493),
      c("Deleon", 0.000599387),
      c("Norman", 0.000596381),
      c("Harrington", 0.00059512),
      c("Casey", 0.000592232),
      c("Patton", 0.00059184),
      c("Logan", 0.000590049),
      c("Bowers", 0.000589318),
      c("Mueller", 0.000587572),
      c("Glover", 0.00058643),
      c("Floyd", 0.000586074),
      c("Hartman", 0.000583205),
      c("Buchanan", 0.000583187),
      c("Cobb", 0.000582401),
      c("French", 0.00057701),
      c("Kramer", 0.000575858),
      c("Mccormick", 0.000572569),
      c("Clarke", 0.0005715),
      c("Tyler", 0.00057139),
      c("Gibbs", 0.000571208),
      c("Moody", 0.000569654),
      c("Conner", 0.000569572),
      c("Sparks", 0.000568649),
      c("Mcguire", 0.000567571),
      c("Leon", 0.000566822),
      c("Bauer", 0.000566319),
      c("Norton", 0.000564729),
      c("Pope", 0.000564227),
      c("Flynn", 0.000564199),
      c("Hogan", 0.000563322),
      c("Robles", 0.00056303),
      c("Salinas", 0.000562692),
      c("Yates", 0.000561029),
      c("Lindsey", 0.000559192),
      c("Lloyd", 0.000558781),
      c("Marsh", 0.000557365),
      c("Mcbride", 0.000556222),
      c("Owen", 0.000552449),
      c("Solis", 0.000548648),
      c("Pham", 0.00054777),
      c("Lang", 0.000546802),
      c("Pratt", 0.000546418),
      c("Lara", 0.000545779),
      c("Brock", 0.000545331),
      c("Ballard", 0.00054513),
      c("Trujillo", 0.000544664),
      c("Shaffer", 0.000541173),
      c("Drake", 0.000539602),
      c("Roman", 0.000539282),
      c("Aguirre", 0.00053835),
      c("Morton", 0.000537162),
      c("Stokes", 0.000536239),
      c("Lamb", 0.000535033),
      c("Pacheco", 0.000534841),
      c("Patrick", 0.00053231),
      c("Cochran", 0.000532091),
      c("Shepherd", 0.000529368),
      c("Cain", 0.000528801),
      c("Burnett", 0.000528674),
      c("Hess", 0.000528335),
      c("Li", 0.000528007),
      c("Cervantes", 0.000527084),
      c("Olsen", 0.000524087),
      c("Briggs", 0.000523538),
      c("Ochoa", 0.000522743),
      c("Cabrera", 0.000522387),
      c("Velasquez", 0.000522314),
      c("Montoya", 0.00052151),
      c("Roth", 0.000521099),
      c("Meyers", 0.000518485),
      c("Cardenas", 0.000517334),
      c("Fuentes", 0.000515717),
      c("Weiss", 0.000513085),
      c("Wilkins", 0.000512309),
      c("Hoover", 0.000512309),
      c("Nicholson", 0.000511559),
      c("Underwood", 0.000511441),
      c("Short", 0.000510801),
      c("Carson", 0.000510052),
      c("Morrow", 0.000508617),
      c("Colon", 0.000507228),
      c("Holloway", 0.000506808),
      c("Summers", 0.000506123),
      c("Bryan", 0.000505008),
      c("Petersen", 0.00050424),
      c("Mckenzie", 0.000503318),
      c("Serrano", 0.000503071),
      c("Wilcox", 0.000502431),
      c("Carey", 0.000501856),
      c("Clayton", 0.000501408),
      c("Poole", 0.000499864),
      c("Calderon", 0.000499727),
      c("Gallegos", 0.000499553),
      c("Greer", 0.000498996),
      c("Rivas", 0.000498786),
      c("Guerra", 0.000498667),
      c("Decker", 0.000497525),
      c("Collier", 0.000497196),
      c("Wall", 0.000497077),
      c("Whitaker", 0.000496547),
      c("Bass", 0.000496117),
      c("Flowers", 0.000495944),
      c("Davenport", 0.000495295),
      c("Conley", 0.000495185),
      c("Houston", 0.00049365),
      c("Huff", 0.000492426),
      c("Copeland", 0.00049132),
      c("Hood", 0.00049101),
      c("Monroe", 0.000488616),
      c("Massey", 0.00048847),
      c("Roberson", 0.000486085),
      c("Combs", 0.00048592),
      c("Franco", 0.000485747),
      c("Larsen", 0.000483937),
      c("Pittman", 0.000481434),
      c("Randall", 0.000479661),
      c("Skinner", 0.000479616),
      c("Wilkinson", 0.000479552),
      c("Kirby", 0.00047946),
      c("Cameron", 0.00047915),
      c("Bridges", 0.000477514),
      c("Anthony", 0.000476472),
      c("Richard", 0.000476399),
      c("Kirk", 0.00047565),
      c("Bruce", 0.000475175),
      c("Singleton", 0.000473283),
      c("Mathis", 0.000473274),
      c("Bradford", 0.000472635),
      c("Boone", 0.000472205),
      c("Abbott", 0.000471666),
      c("Charles", 0.000470734),
      c("Allison", 0.000470606),
      c("Sweeney", 0.00047057),
      c("Atkinson", 0.000470469),
      c("Horn", 0.000469473),
      c("Jefferson", 0.0004693),
      c("Rosales", 0.000469071),
      c("York", 0.000469053),
      c("Christian", 0.000467618),
      c("Phelps", 0.000467408),
      c("Farrell", 0.000466869),
      c("Castaneda", 0.000466814),
      c("Nash", 0.000466193),
      c("Dickerson", 0.000466156),
      c("Bond", 0.000465818),
      c("Wyatt", 0.00046485),
      c("Foley", 0.000464649),
      c("Chase", 0.000463963),
      c("Gates", 0.000463698),
      c("Vincent", 0.000462602),
      c("Mathews", 0.000462419),
      c("Hodge", 0.000462136),
      c("Garrison", 0.000461268),
      c("Trevino", 0.000461012),
      c("Villarreal", 0.000460071),
      c("Heath", 0.000459669),
      c("Dalton", 0.00045838),
      c("Valencia", 0.000457101),
      c("Callahan", 0.000456178),
      c("Hensley", 0.000455566),
      c("Atkins", 0.000454616),
      c("Huffman", 0.000454461),
      c("Roy", 0.000454351),
      c("Boyer", 0.000453218),
      c("Shields", 0.000452807),
      c("Lin", 0.000451016),
      c("Hancock", 0.000450742),
      c("Grimes", 0.000449965),
      c("Glenn", 0.000449929),
      c("Cline", 0.000449252),
      c("Delacruz", 0.00044917),
      c("Camacho", 0.000447726),
      c("Dillon", 0.0004462),
      c("Parrish", 0.000446109),
      c("Oneill", 0.000444583),
      c("Melton", 0.000444017),
      c("Booth", 0.000443889),
      c("Kane", 0.000443404),
      c("Berg", 0.000442975),
      c("Harrell", 0.000442893),
      c("Pitts", 0.000442811),
      c("Savage", 0.000441943),
      c("Wiggins", 0.000441833),
      c("Brennan", 0.000441294),
      c("Salas", 0.000441166),
      c("Marks", 0.000441157),
      c("Russo", 0.00043974),
      c("Sawyer", 0.000438397),
      c("Baxter", 0.000437283),
      c("Golden", 0.000437118),
      c("Hutchinson", 0.000436844),
      c("Liu", 0.000435528),
      c("Walter", 0.000435071),
      c("Mcdowell", 0.000434258),
      c("Wiley", 0.000434048),
      c("Rich", 0.00043381),
      c("Humphrey", 0.000433746),
      c("Johns", 0.000432093),
      c("Koch", 0.000432065),
      c("Suarez", 0.000431599),
      c("Hobbs", 0.000431462),
      c("Beard", 0.000430621),
      c("Gilmore", 0.000429909),
      c("Ibarra", 0.000428492),
      c("Keith", 0.00042714),
      c("Macias", 0.000427067),
      c("Khan", 0.000426829),
      c("Andrade", 0.000426729),
      c("Ware", 0.000426546),
      c("Stephenson", 0.000426363),
      c("Henson", 0.000425879),
      c("Wilkerson", 0.000425843),
      c("Dyer", 0.000425559),
      c("Mcclure", 0.000424929),
      c("Blackwell", 0.000424838),
      c("Mercado", 0.000424308),
      c("Tanner", 0.000424079),
      c("Eaton", 0.000423997),
      c("Clay", 0.000422727),
      c("Barron", 0.000422106),
      c("Beasley", 0.00042195),
      c("Oneal", 0.000421786),
      c("Small", 0.000418944),
      c("Preston", 0.000418944),
      c("Wu", 0.000418624),
      c("Zamora", 0.000418542),
      c("Macdonald", 0.000418323),
      c("Vance", 0.000418149),
      c("Snow", 0.000417473),
      c("Mcclain", 0.000416294),
      c("Stafford", 0.000414366),
      c("Orozco", 0.000413818),
      c("Barry", 0.000411579),
      c("English", 0.00041147),
      c("Shannon", 0.000410282),
      c("Kline", 0.000410264),
      c("Jacobson", 0.000410026),
      c("Woodard", 0.000409624),
      c("Huang", 0.000408573),
      c("Kemp", 0.000408445),
      c("Mosley", 0.000408418),
      c("Prince", 0.000407888),
      c("Merritt", 0.00040776),
      c("Hurst", 0.000407404),
      c("Villanueva", 0.000407248),
      c("Roach", 0.000406188),
      c("Nolan", 0.000405887),
      c("Lam", 0.000405558),
      c("Yoder", 0.000404279),
      c("Mccullough", 0.000403164),
      c("Lester", 0.0004013),
      c("Santana", 0.000400898),
      c("Valenzuela", 0.000399938),
      c("Winters", 0.000399865),
      c("Barrera", 0.000399482),
      c("Orr", 0.000398988),
      c("Leach", 0.000398988),
      c("Berger", 0.000397983),
      c("Mckee", 0.000397974),
      c("Strong", 0.000396832),
      c("Conway", 0.000396512),
      c("Stein", 0.000395927),
      c("Whitehead", 0.000395735),
      c("Bullock", 0.000393095),
      c("Escobar", 0.000392492),
      c("Knox", 0.000392327),
      c("Meadows", 0.000391843),
      c("Solomon", 0.000391432),
      c("Velez", 0.000391258),
      c("Odonnell", 0.000391094),
      c("Kerr", 0.000390692),
      c("Stout", 0.000389878),
      c("Blankenship", 0.000389824),
      c("Browning", 0.000389632),
      c("Kent", 0.00038922),
      c("Lozano", 0.000388946),
      c("Bartlett", 0.000388444),
      c("Pruitt", 0.000387996),
      c("Buck", 0.000387795),
      c("Barr", 0.000387713),
      c("Gaines", 0.000387137),
      c("Durham", 0.000387101),
      c("Gentry", 0.000387028),
      c("Mcintyre", 0.000386826),
      c("Sloan", 0.000386333),
      c("Rocha", 0.000385036),
      c("Melendez", 0.000385036),
      c("Herman", 0.000384597),
      c("Sexton", 0.000384496),
      c("Moon", 0.000384332),
      c("Hendricks", 0.00038266),
      c("Rangel", 0.000382559),
      c("Stark", 0.000382514),
      c("Lowery", 0.00038075),
      c("Hardin", 0.000380695),
      c("Hull", 0.000380622),
      c("Sellers", 0.000379754),
      c("Ellison", 0.000378822),
      c("Calhoun", 0.000378758),
      c("Gillespie", 0.000378219),
      c("Mora", 0.000377808),
      c("Knapp", 0.000377068),
      c("Mccall", 0.000376739),
      c("Morse", 0.000375652),
      c("Dorsey", 0.000375579),
      c("Weeks", 0.000375113),
      c("Nielsen", 0.000374692),
      c("Livingston", 0.000374299),
      c("Leblanc", 0.000373925),
      c("Mclean", 0.00037345),
      c("Bradshaw", 0.000372746),
      c("Glass", 0.000372106),
      c("Middleton", 0.00037196),
      c("Buckley", 0.000371942),
      c("Schaefer", 0.000371549),
      c("Frost", 0.000370809),
      c("Howe", 0.000370562),
      c("House", 0.000369849),
      c("Mcintosh", 0.00036963),
      c("Ho", 0.000369265),
      c("Pennington", 0.000368588),
      c("Reilly", 0.000368324),
      c("Hebert", 0.000368077),
      c("Mcfarland", 0.00036772),
      c("Hickman", 0.000367538),
      c("Noble", 0.000367474),
      c("Spears", 0.000367346),
      c("Conrad", 0.000366423),
      c("Arias", 0.000366277),
      c("Galvan", 0.000365911),
      c("Velazquez", 0.000365765),
      c("Huynh", 0.000365591),
      c("Frederick", 0.000364659),
      c("Randolph", 0.000363134),
      c("Cantu", 0.000361845),
      c("Fitzpatrick", 0.000360931),
      c("Mahoney", 0.000360374),
      c("Peck", 0.000360301),
      c("Villa", 0.000360027),
      c("Michael", 0.000359725),
      c("Donovan", 0.000358821),
      c("Mcconnell", 0.000358209),
      c("Walls", 0.00035787),
      c("Boyle", 0.000357642),
      c("Mayer", 0.000357368),
      c("Zuniga", 0.000356875),
      c("Giles", 0.000356372),
      c("Pineda", 0.000356345),
      c("Pace", 0.000356125),
      c("Hurley", 0.000356089),
      c("Mays", 0.000355568),
      c("Mcmillan", 0.000355403),
      c("Crosby", 0.000354928),
      c("Ayers", 0.000354855),
      c("Case", 0.000354152),
      c("Bentley", 0.00035374),
      c("Shepard", 0.000353658),
      c("Everett", 0.000353631),
      c("Pugh", 0.00035353),
      c("David", 0.000353238),
      c("Mcmahon", 0.000352306),
      c("Dunlap", 0.000351931),
      c("Bender", 0.000351456),
      c("Hahn", 0.000350451),
      c("Harding", 0.000350323),
      c("Acevedo", 0.000349336),
      c("Raymond", 0.00034866),
      c("Blackburn", 0.000348468),
      c("Duffy", 0.000346869),
      c("Landry", 0.00034686),
      c("Dougherty", 0.00034633),
      c("Bautista", 0.000345818),
      c("Shah", 0.00034569),
      c("Potts", 0.000344356),
      c("Arroyo", 0.000344274),
      c("Valentine", 0.000344192),
      c("Meza", 0.000344128),
      c("Gould", 0.00034411),
      c("Vaughan", 0.000343479),
      c("Fry", 0.000343032),
      c("Rush", 0.000342374),
      c("Avery", 0.0003421),
      c("Herring", 0.000341305),
      c("Dodson", 0.000340802),
      c("Clements", 0.000340245),
      c("Sampson", 0.000340217),
      c("Tapia", 0.000339916),
      c("Bean", 0.000339404),
      c("Lynn", 0.000339221),
      c("Crane", 0.000339203),
      c("Farley", 0.000339139),
      c("Cisneros", 0.000338536),
      c("Benton", 0.000338372),
      c("Ashley", 0.000338271),
      c("Mckay", 0.000337604),
      c("Finley", 0.000336928),
      c("Best", 0.000336818),
      c("Blevins", 0.000336626),
      c("Friedman", 0.000336553),
      c("Moses", 0.00033638),
      c("Sosa", 0.00033637),
      c("Blanchard", 0.000335923),
      c("Huber", 0.000335603),
      c("Frye", 0.000335484),
      c("Krueger", 0.000335283),
      c("Bernard", 0.000333931),
      c("Rosario", 0.000333867),
      c("Rubio", 0.000333794),
      c("Mullen", 0.000332981),
      c("Benjamin", 0.000332953),
      c("Haley", 0.000332898),
      c("Chung", 0.000332798),
      c("Moyer", 0.000332789),
      c("Choi", 0.000332505),
      c("Horne", 0.000331573),
      c("Yu", 0.000331546),
      c("Woodward", 0.000331153),
      c("Ali", 0.000329664),
      c("Nixon", 0.00032928),
      c("Hayden", 0.000329161),
      c("Rivers", 0.000328759),
      c("Estes", 0.000327471),
      c("Mccarty", 0.000326365),
      c("Richmond", 0.000326338),
      c("Stuart", 0.00032621),
      c("Maynard", 0.000325726),
      c("Brandt", 0.000325433),
      c("Oconnell", 0.000325378),
      c("Hanna", 0.000325278),
      c("Sanford", 0.000324967),
      c("Sheppard", 0.000324867),
      c("Church", 0.00032473),
      c("Burch", 0.000324565),
      c("Levy", 0.000324044),
      c("Rasmussen", 0.000323944),
      c("Coffey", 0.000323843),
      c("Ponce", 0.000323459),
      c("Faulkner", 0.000323359),
      c("Donaldson", 0.000323341),
      c("Schmitt", 0.000322783),
      c("Novak", 0.000322381),
      c("Costa", 0.000321879),
      c("Montes", 0.000321595),
      c("Booker", 0.000320727),
      c("Cordova", 0.000320481),
      c("Waller", 0.000319814),
      c("Arellano", 0.000319795),
      c("Maddox", 0.00031953),
      c("Mata", 0.000318781),
      c("Bonilla", 0.000318196),
      c("Stanton", 0.000318087),
      c("Compton", 0.000317867),
      c("Kaufman", 0.000317849),
      c("Dudley", 0.000317703),
      c("Mcpherson", 0.000317639),
      c("Beltran", 0.000317392),
      c("Dickson", 0.000317045),
      c("Mccann", 0.00031699),
      c("Villegas", 0.000316917),
      c("Proctor", 0.000316899),
      c("Hester", 0.000316835),
      c("Cantrell", 0.000316826),
      c("Daugherty", 0.000316607),
      c("Cherry", 0.000316287),
      c("Bray", 0.000315921),
      c("Davila", 0.000315611),
      c("Rowland", 0.000315218),
      c("Madden", 0.00031498),
      c("Levine", 0.00031498),
      c("Spence", 0.000314642),
      c("Good", 0.000314596),
      c("Irwin", 0.000314085),
      c("Werner", 0.000313884),
      c("Krause", 0.00031382),
      c("Petty", 0.000313207),
      c("Whitney", 0.000312961),
      c("Baird", 0.000312796),
      c("Hooper", 0.000311435),
      c("Pollard", 0.000311389),
      c("Zavala", 0.000311289),
      c("Jarvis", 0.000311124),
      c("Holden", 0.000311042),
      c("Hendrix", 0.00031096),
      c("Haas", 0.00031096),
      c("Mcgrath", 0.000310951),
      c("Bird", 0.00031032),
      c("Lucero", 0.000309955),
      c("Terrell", 0.000309882),
      c("Riggs", 0.000309461),
      c("Joyce", 0.000309233),
      c("Rollins", 0.000308812),
      c("Mercer", 0.000308812),
      c("Galloway", 0.000308593),
      c("Duke", 0.000308337),
      c("Odom", 0.000308081),
      c("Andersen", 0.000306172),
      c("Downs", 0.000306044),
      c("Hatfield", 0.00030577),
      c("Benitez", 0.00030556),
      c("Archer", 0.000305285),
      c("Huerta", 0.00030471),
      c("Travis", 0.000304628),
      c("Mcneil", 0.000303714),
      c("Hinton", 0.00030344),
      c("Zhang", 0.000303376),
      c("Hays", 0.000303303),
      c("Mayo", 0.000302681),
      c("Fritz", 0.000302151),
      c("Branch", 0.000301896),
      c("Mooney", 0.000301101),
      c("Ewing", 0.000300845),
      c("Ritter", 0.000300287),
      c("Esparza", 0.000299447),
      c("Frey", 0.000299109),
      c("Braun", 0.00029857),
      c("Gay", 0.000298533),
      c("Riddle", 0.000298369),
      c("Haney", 0.000298277),
      c("Kaiser", 0.000297574),
      c("Holder", 0.000296651),
      c("Chaney", 0.000296349),
      c("Mcknight", 0.00029592),
      c("Gamble", 0.000295838),
      c("Vang", 0.000295435),
      c("Cooley", 0.000295015),
      c("Carney", 0.000294969),
      c("Cowan", 0.000294604),
      c("Forbes", 0.000294476),
      c("Ferrell", 0.000293983),
      c("Davies", 0.0002939),
      c("Barajas", 0.000293736),
      c("Shea", 0.000293023),
      c("Osborn", 0.000292795),
      c("Bright", 0.000292777),
      c("Cuevas", 0.00029253),
      c("Bolton", 0.000292347),
      c("Murillo", 0.000292064),
      c("Lutz", 0.000291845),
      c("Duarte", 0.000291442),
      c("Kidd", 0.000291351),
      c("Key", 0.000291315),
      c("Cooke", 0.000291114)),

    prefixes_female = list(
      c("Mrs.", 0.5),
      c("Ms.", 0.1),
      c("Miss", 0.1),
      c("Dr.", 0.3)),

    prefixes_male = list(
      c("Mr.", 0.7),
      c("Dr.", 0.3)),

    suffixes_female = list(
      c("MD", 0.5),
      c("DDS", 0.3),
      c("PhD", 0.1),
      c("DVM", 0.2)),

    # Removed Sr and I as theyc("d almost never be part of legal names.
    suffixes_male = list(
      c("Jr.", 0.2),
      c("II", 0.05),
      c("III", 0.03),
      c("IV", 0.015),
      c("V", 0.005),
      c("MD", 0.3),
      c("DDS", 0.2),
      c("PhD", 0.1),
      c("DVM", 0.1))
  )
)


## address ------------------------
address_en_US = R6Class(
  "address_en_US",
  inherit = address_en,
  cloneable = FALSE,
  private = list(
    first_names = (person_en_US$new())$.__enclos_env__$private$first_names,
    last_names = (person_en_US$new())$.__enclos_env__$private$last_names,

    first_name = (person_en_US$new())$first_name,
    last_name = (person_en_US$new())$last_name,
    city_prefixes = c(
      'North', 'East', 'West', 'South', 'New', 'Lake', 'Port'),

    city_suffixes = c(
      'town',
      'ton',
      'land',
      'ville',
      'berg',
      'burgh',
      'borough',
      'bury',
      'view',
      'port',
      'mouth',
      'stad',
      'furt',
      'chester',
      'mouth',
      'fort',
      'haven',
      'side',
      'shire'),

    building_number_formats = c('#####', '####', '###'),

    street_suffixes = c(
      'Alley',
      'Avenue',
      'Branch',
      'Bridge',
      'Brook',
      'Brooks',
      'Burg',
      'Burgs',
      'Bypass',
      'Camp',
      'Canyon',
      'Cape',
      'Causeway',
      'Center',
      'Centers',
      'Circle',
      'Circles',
      'Cliff',
      'Cliffs',
      'Club',
      'Common',
      'Corner',
      'Corners',
      'Course',
      'Court',
      'Courts',
      'Cove',
      'Coves',
      'Creek',
      'Crescent',
      'Crest',
      'Crossing',
      'Crossroad',
      'Curve',
      'Dale',
      'Dam',
      'Divide',
      'Drive',
      'Drive',
      'Drives',
      'Estate',
      'Estates',
      'Expressway',
      'Extension',
      'Extensions',
      'Fall',
      'Falls',
      'Ferry',
      'Field',
      'Fields',
      'Flat',
      'Flats',
      'Ford',
      'Fords',
      'Forest',
      'Forge',
      'Forges',
      'Fork',
      'Forks',
      'Fort',
      'Freeway',
      'Garden',
      'Gardens',
      'Gateway',
      'Glen',
      'Glens',
      'Green',
      'Greens',
      'Grove',
      'Groves',
      'Harbor',
      'Harbors',
      'Haven',
      'Heights',
      'Highway',
      'Hill',
      'Hills',
      'Hollow',
      'Inlet',
      'Inlet',
      'Island',
      'Island',
      'Islands',
      'Islands',
      'Isle',
      'Isle',
      'Junction',
      'Junctions',
      'Key',
      'Keys',
      'Knoll',
      'Knolls',
      'Lake',
      'Lakes',
      'Land',
      'Landing',
      'Lane',
      'Light',
      'Lights',
      'Loaf',
      'Lock',
      'Locks',
      'Locks',
      'Lodge',
      'Lodge',
      'Loop',
      'Mall',
      'Manor',
      'Manors',
      'Meadow',
      'Meadows',
      'Mews',
      'Mill',
      'Mills',
      'Mission',
      'Mission',
      'Motorway',
      'Mount',
      'Mountain',
      'Mountain',
      'Mountains',
      'Mountains',
      'Neck',
      'Orchard',
      'Oval',
      'Overpass',
      'Park',
      'Parks',
      'Parkway',
      'Parkways',
      'Pass',
      'Passage',
      'Path',
      'Pike',
      'Pine',
      'Pines',
      'Place',
      'Plain',
      'Plains',
      'Plains',
      'Plaza',
      'Plaza',
      'Point',
      'Points',
      'Port',
      'Port',
      'Ports',
      'Ports',
      'Prairie',
      'Prairie',
      'Radial',
      'Ramp',
      'Ranch',
      'Rapid',
      'Rapids',
      'Rest',
      'Ridge',
      'Ridges',
      'River',
      'Road',
      'Road',
      'Roads',
      'Roads',
      'Route',
      'Row',
      'Rue',
      'Run',
      'Shoal',
      'Shoals',
      'Shore',
      'Shores',
      'Skyway',
      'Spring',
      'Springs',
      'Springs',
      'Spur',
      'Spurs',
      'Square',
      'Square',
      'Squares',
      'Squares',
      'Station',
      'Station',
      'Stravenue',
      'Stravenue',
      'Stream',
      'Stream',
      'Street',
      'Street',
      'Streets',
      'Summit',
      'Summit',
      'Terrace',
      'Throughway',
      'Trace',
      'Track',
      'Trafficway',
      'Trail',
      'Trail',
      'Tunnel',
      'Tunnel',
      'Turnpike',
      'Turnpike',
      'Underpass',
      'Union',
      'Unions',
      'Valley',
      'Valleys',
      'Via',
      'Viaduct',
      'View',
      'Views',
      'Village',
      'Village',
      'Villages',
      'Ville',
      'Vista',
      'Vista',
      'Walk',
      'Walks',
      'Wall',
      'Way',
      'Ways',
      'Well',
      'Wells'),

    postcode_formats = c('#####', '#####-####'),

    states = c(
      'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado',
      'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho',
      'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana',
      'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota',
      'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada',
      'New Hampshire', 'New Jersey', 'New Mexico', 'New York',
      'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon',
      'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota',
      'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington',
      'West Virginia', 'Wisconsin', 'Wyoming'),

    states_abbr = c(
      'AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'DC', 'FL', 'GA', 'HI',
      'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN',
      'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH',
      'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA',
      'WV', 'WI', 'WY'),

    states_postcode = list(
      'AL' = c(35004, 36925), 'AK' = c(99501, 99950), 'AZ' = c(85001, 86556),
      'AR' = c(71601, 72959), 'CA' = c(90001, 96162), 'CO' = c(80001, 81658),
      'CT' = c(6001, 6389), 'DE' = c(19701, 19980), 'DC' = c(20001, 20039),
      'FL' = c(32004, 34997), 'GA' = c(30001, 31999), 'HI' = c(96701, 96898),
      'ID' = c(83201, 83876), 'IL' = c(60001, 62999), 'IN' = c(46001, 47997),
      'IA' = c(50001, 52809), 'KS' = c(66002, 67954), 'KY' = c(40003, 42788),
      'LA' = c(70001, 71232), 'ME' = c(3901, 4992), 'MD' = c(20331, 20331),
      'MA' = c(1001, 2791), 'MI' = c(48001, 49971), 'MN' = c(55001, 56763),
      'MS' = c(38601, 39776), 'MO' = c(63001, 65899), 'MT' = c(59001, 59937),
      'NE' = c(68001, 68118), 'NV' = c(88901, 89883), 'NH' = c(3031, 3897),
      'NJ' = c(7001, 8989), 'NM' = c(87001, 88441), 'NY' = c(6390, 6390),
      'NC' = c(27006, 28909), 'ND' = c(58001, 58856), 'OH' = c(43001, 45999),
      'OK' = c(73001, 73199), 'OR' = c(97001, 97920), 'PA' = c(15001, 19640),
      'RI' = c(2801, 2940), 'SC' = c(29001, 29948), 'SD' = c(57001, 57799),
      'TN' = c(37010, 38589), 'TX' = c(73301, 73301), 'UT' = c(84001, 84784),
      'VT' = c(5001, 5495), 'VA' = c(20040, 20041), 'WA' = c(98001, 99403),
      'WV' = c(24701, 26886), 'WI' = c(53001, 54990), 'WY' = c(82001, 83128)),

    territories_abbr = c('AS', 'FM', 'GU', 'MH', 'MP', 'PW', 'PR', 'VI'),

    states_and_territories_abbr = c(
      'AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'DC', 'FL', 'GA', 'HI',
      'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN',
      'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH',
      'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA',
      'WV', 'WI', 'WY', 'AS', 'FM', 'GU', 'MH', 'MP', 'PW', 'PR', 'VI'),

    military_state_abbr = c('AE', 'AA', 'AP'),

    military_ship_prefix = c('USS', 'USNS', 'USNV', 'USCGC'),

    military_apo_format = c("PSC ####, Box ####"),

    military_dpo_format = c("Unit #### Box ####"),



    city_formats = c(
      '{city_prefix} {first_name}{city_suffix}',
      '{city_prefix} {first_name}',
      '{first_name}{city_suffix}',
      '{last_name}{city_suffix}'),

    street_name_formats = c(
      '{first_name} {street_suffix}',
      '{last_name} {street_suffix}'),

    street_address_formats = c(
      '{building_number} {street_name}',
      '{building_number} {street_name} {secondary_address}'),

    # address_formats = c("(street_address)\n(city), (state_abbr) (postcode)"),

    address_formats = list(
      c("{street_address}\n{city}, {state_abbr} {postcode}", 25),
      #  military address formatting.
      c("{military_apo}\nAPO {military_state} {postcode}", 1),
      c("{military_ship} {last_name}\nFPO {military_state} {postcode}", 1),
      c("{military_dpo}\nDPO {military_state} {postcode}", 1)),

    secondary_address_formats = c('Apt. ###', 'Suite ###')
  ),

  public = list(

    city_prefix = function(){
      return(private$random_element(private$city_prefixes))
    },

    secondary_address = function(){
      temp = private$random_element(private$secondary_address_formats)
      return(private$numerify(temp))
    },

    state = function(){
      return(private$random_element(private$states))
    },

    state_abbr = function(include_territories = TRUE){
      if (include_territories){
        return(private$random_element(private$states_and_territories_abbr))
      } else{
        return(private$random_element(private$states_abbr))
      }
    },

    postcode = function(){
      rint = private$random_int(501, 99950)
      zeros = str_c(rep(0, 5 - nchar(rint)), collapse = "")
      return(str_c(zeros, rint))
    },

    zipcode_plus4 = function(){
      rint = private$random_int(1, 9999)
      zeros = str_c(rep(0, 4 - nchar(rint)), collapse = "")
      return(str_c(self$zipcode(), "-" ,zeros, rint))
    },

    postcode_in_state = function(state_abbr){

      #  :returns: A random postcode within the provided state abbreviation
      #  :param state_abbr: A state abbreviation
      if (missing(state_abbr)){
        state_abbr = sample(private$states_abbr, 1)
      }

      if (state_abbr %in% private$states_abbr){
        postcode = as.character(
          private$random_int(
            private$states_postcode[[state_abbr]][1],
            private$states_postcode[[state_abbr]][2]))

        if (str_length(postcode) == 4){
          postcode = str_c("0", postcode, collapse = "")
        }
        return(postcode)
      } else{
        stop("State Abbreviation not found in list")
      }
    },

    military_ship = function(){
      return(private$random_element(private$military_ship_prefix))
    },

    military_state = function(){
      return(private$random_element(private$military_state_abbr))
    },

    military_apo = function(){
      return(private$numerify(private$military_apo_format))
    },

    military_dpo = function(){
      return(private$numerify(private$military_dpo_format))
    },

    # Aliases

    zipcode = function(){
      return(self$postcode())
    },

    zipcode_in_state = function(state_abbr){
      return(self$postcode_in_state(state_abbr))
    },

    postalcode = function(){
      return(self$postcode())
    },

    postalcode_in_state = function(state_abbr){
      return(self$postcode_in_state(state_abbr))
    },

    postalcode_plus4 = function(){
      return(self$zipcode_plus4())
    }

  )
)



## company  ------------
company_en_US = R6Class(
  "company_en_US",
  inherit = company_init,
  cloneable = FALSE,
  private = list(
    last_names = (person_en_US$new())$.__enclos_env__$private$last_names,
    last_name = (person_en_US$new())$last_name
  )
)


## credit_card -----------------
credit_card_en_US = R6Class(
  "credit_card_en_US",
  inherit = credit_card_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_en_US$new())$.__enclos_env__$private$first_names,
    last_names = (person_en_US$new())$.__enclos_env__$private$last_names,
    first_name = (person_en_US$new())$first_name,
    last_name = (person_en_US$new())$last_name
  )
)



## lorem ----------------------
lorem_en_US = R6Class(
  "lorem_en_US",
  inherit = lorem_init,
  cloneable = FALSE,
  private = list(
    locale = "en_US",
    ext_words = c(
      'a',
      'ability',
      'able',
      'about',
      'above',
      'accept',
      'according',
      'account',
      'across',
      'act',
      'action',
      'activity',
      'actually',
      'add',
      'address',
      'administration',
      'admit',
      'adult',
      'affect',
      'after',
      'again',
      'against',
      'age',
      'agency',
      'agent',
      'ago',
      'agree',
      'agreement',
      'ahead',
      'air',
      'all',
      'allow',
      'almost',
      'alone',
      'along',
      'already',
      'also',
      'although',
      'always',
      'American',
      'among',
      'amount',
      'analysis',
      'and',
      'animal',
      'another',
      'answer',
      'any',
      'anyone',
      'anything',
      'appear',
      'apply',
      'approach',
      'area',
      'argue',
      'arm',
      'around',
      'arrive',
      'art',
      'article',
      'artist',
      'as',
      'ask',
      'assume',
      'at',
      'attack',
      'attention',
      'attorney',
      'audience',
      'author',
      'authority',
      'available',
      'avoid',
      'away',
      'baby',
      'back',
      'bad',
      'bag',
      'ball',
      'bank',
      'bar',
      'base',
      'be',
      'beat',
      'beautiful',
      'because',
      'become',
      'bed',
      'before',
      'begin',
      'behavior',
      'behind',
      'believe',
      'benefit',
      'best',
      'better',
      'between',
      'beyond',
      'big',
      'bill',
      'billion',
      'bit',
      'black',
      'blood',
      'blue',
      'board',
      'body',
      'book',
      'born',
      'both',
      'box',
      'boy',
      'break',
      'bring',
      'brother',
      'budget',
      'build',
      'building',
      'business',
      'but',
      'buy',
      'by',
      'call',
      'camera',
      'campaign',
      'can',
      'candidate',
      'capital',
      'car',
      'card',
      'care',
      'career',
      'carry',
      'case',
      'catch',
      'cause',
      'cell',
      'center',
      'central',
      'century',
      'certain',
      'certainly',
      'chair',
      'challenge',
      'chance',
      'change',
      'character',
      'charge',
      'check',
      'child',
      'choice',
      'choose',
      'church',
      'citizen',
      'city',
      'civil',
      'claim',
      'class',
      'clear',
      'clearly',
      'close',
      'coach',
      'cold',
      'collection',
      'college',
      'color',
      'commercial',
      'common',
      'community',
      'company',
      'compare',
      'computer',
      'concern',
      'condition',
      'conference',
      'Congress',
      'consider',
      'consumer',
      'contain',
      'continue',
      'control',
      'cost',
      'could',
      'country',
      'couple',
      'course',
      'court',
      'cover',
      'create',
      'crime',
      'cultural',
      'culture',
      'cup',
      'current',
      'customer',
      'cut',
      'dark',
      'data',
      'daughter',
      'day',
      'deal',
      'debate',
      'decade',
      'decide',
      'decision',
      'deep',
      'defense',
      'degree',
      'Democrat',
      'democratic',
      'describe',
      'design',
      'despite',
      'detail',
      'determine',
      'develop',
      'development',
      'difference',
      'different',
      'difficult',
      'dinner',
      'direction',
      'director',
      'discover',
      'discuss',
      'discussion',
      'do',
      'doctor',
      'dog',
      'door',
      'down',
      'draw',
      'dream',
      'drive',
      'drop',
      'drug',
      'during',
      'each',
      'early',
      'east',
      'easy',
      'eat',
      'economic',
      'economy',
      'edge',
      'education',
      'effect',
      'effort',
      'eight',
      'either',
      'election',
      'else',
      'employee',
      'end',
      'energy',
      'enjoy',
      'enough',
      'enter',
      'entire',
      'environment',
      'environmental',
      'especially',
      'establish',
      'even',
      'evening',
      'event',
      'ever',
      'every',
      'everybody',
      'everyone',
      'everything',
      'evidence',
      'exactly',
      'example',
      'executive',
      'exist',
      'expect',
      'experience',
      'expert',
      'explain',
      'eye',
      'face',
      'fact',
      'factor',
      'fall',
      'family',
      'far',
      'fast',
      'father',
      'fear',
      'federal',
      'feel',
      'feeling',
      'few',
      'field',
      'fight',
      'figure',
      'fill',
      'film',
      'final',
      'finally',
      'financial',
      'find',
      'fine',
      'finish',
      'fire',
      'firm',
      'first',
      'fish',
      'five',
      'floor',
      'fly',
      'focus',
      'follow',
      'food',
      'foot',
      'for',
      'force',
      'foreign',
      'forget',
      'form',
      'former',
      'forward',
      'four',
      'free',
      'friend',
      'from',
      'front',
      'full',
      'fund',
      'future',
      'game',
      'garden',
      'gas',
      'general',
      'generation',
      'get',
      'girl',
      'give',
      'glass',
      'go',
      'goal',
      'good',
      'government',
      'great',
      'green',
      'ground',
      'group',
      'grow',
      'growth',
      'guess',
      'gun',
      'guy',
      'hair',
      'half',
      'hand',
      'happen',
      'happy',
      'hard',
      'have',
      'he',
      'head',
      'health',
      'hear',
      'heart',
      'heavy',
      'help',
      'her',
      'here',
      'herself',
      'high',
      'him',
      'himself',
      'his',
      'history',
      'hit',
      'hold',
      'home',
      'hope',
      'hospital',
      'hot',
      'hotel',
      'hour',
      'house',
      'how',
      'however',
      'huge',
      'human',
      'hundred',
      'husband',
      'I',
      'idea',
      'identify',
      'if',
      'image',
      'imagine',
      'impact',
      'important',
      'improve',
      'in',
      'include',
      'including',
      'increase',
      'indeed',
      'indicate',
      'individual',
      'industry',
      'information',
      'inside',
      'instead',
      'institution',
      'interest',
      'interesting',
      'international',
      'interview',
      'into',
      'investment',
      'involve',
      'issue',
      'it',
      'item',
      'its',
      'itself',
      'job',
      'join',
      'just',
      'keep',
      'key',
      'kid',
      'kind',
      'kitchen',
      'know',
      'knowledge',
      'land',
      'language',
      'large',
      'last',
      'late',
      'later',
      'laugh',
      'law',
      'lawyer',
      'lay',
      'lead',
      'leader',
      'learn',
      'least',
      'leave',
      'left',
      'leg',
      'less',
      'let',
      'letter',
      'level',
      'life',
      'light',
      'like',
      'likely',
      'line',
      'list',
      'listen',
      'little',
      'live',
      'local',
      'long',
      'look',
      'lose',
      'loss',
      'lot',
      'low',
      'machine',
      'magazine',
      'main',
      'maintain',
      'major',
      'majority',
      'make',
      'man',
      'manage',
      'management',
      'manager',
      'many',
      'market',
      'marriage',
      'material',
      'matter',
      'may',
      'maybe',
      'me',
      'mean',
      'measure',
      'media',
      'medical',
      'meet',
      'meeting',
      'member',
      'memory',
      'mention',
      'message',
      'method',
      'middle',
      'might',
      'military',
      'million',
      'mind',
      'minute',
      'miss',
      'mission',
      'model',
      'modern',
      'moment',
      'money',
      'month',
      'more',
      'morning',
      'most',
      'mother',
      'mouth',
      'move',
      'movement',
      'movie',
      'Mr',
      'Mrs',
      'much',
      'music',
      'must',
      'my',
      'myself',
      'name',
      'nation',
      'national',
      'natural',
      'nature',
      'near',
      'nearly',
      'necessary',
      'need',
      'network',
      'never',
      'new',
      'news',
      'newspaper',
      'next',
      'nice',
      'night',
      'no',
      'none',
      'nor',
      'north',
      'not',
      'note',
      'nothing',
      'notice',
      'now',
      'number',
      'occur',
      'of',
      'off',
      'offer',
      'office',
      'officer',
      'official',
      'often',
      'oil',
      'ok',
      'old',
      'on',
      'once',
      'one',
      'only',
      'onto',
      'open',
      'operation',
      'opportunity',
      'option',
      'or',
      'order',
      'organization',
      'other',
      'others',
      'our',
      'out',
      'outside',
      'over',
      'own',
      'owner',
      'page',
      'painting',
      'paper',
      'parent',
      'part',
      'participant',
      'particular',
      'particularly',
      'partner',
      'party',
      'pass',
      'past',
      'pattern',
      'pay',
      'peace',
      'people',
      'per',
      'perform',
      'performance',
      'perhaps',
      'person',
      'personal',
      'phone',
      'physical',
      'pick',
      'picture',
      'piece',
      'place',
      'plan',
      'plant',
      'play',
      'player',
      'PM',
      'point',
      'police',
      'policy',
      'political',
      'politics',
      'poor',
      'popular',
      'population',
      'position',
      'positive',
      'possible',
      'power',
      'practice',
      'prepare',
      'present',
      'president',
      'pressure',
      'pretty',
      'prevent',
      'price',
      'probably',
      'process',
      'produce',
      'product',
      'production',
      'professional',
      'professor',
      'program',
      'project',
      'property',
      'protect',
      'prove',
      'provide',
      'public',
      'pull',
      'purpose',
      'push',
      'put',
      'quality',
      'question',
      'quickly',
      'quite',
      'race',
      'radio',
      'raise',
      'range',
      'rate',
      'rather',
      'reach',
      'read',
      'ready',
      'real',
      'reality',
      'realize',
      'really',
      'reason',
      'receive',
      'recent',
      'recently',
      'recognize',
      'record',
      'red',
      'reduce',
      'reflect',
      'region',
      'relate',
      'relationship',
      'religious',
      'remain',
      'remember',
      'report',
      'represent',
      'Republican',
      'require',
      'research',
      'resource',
      'respond',
      'response',
      'responsibility',
      'rest',
      'result',
      'return',
      'reveal',
      'rich',
      'right',
      'rise',
      'risk',
      'road',
      'rock',
      'role',
      'room',
      'rule',
      'run',
      'safe',
      'same',
      'save',
      'say',
      'scene',
      'school',
      'science',
      'scientist',
      'score',
      'sea',
      'season',
      'seat',
      'second',
      'section',
      'security',
      'see',
      'seek',
      'seem',
      'sell',
      'send',
      'senior',
      'sense',
      'series',
      'serious',
      'serve',
      'service',
      'set',
      'seven',
      'several',
      'shake',
      'share',
      'she',
      'short',
      'should',
      'shoulder',
      'show',
      'side',
      'sign',
      'significant',
      'similar',
      'simple',
      'simply',
      'since',
      'sing',
      'single',
      'sister',
      'sit',
      'site',
      'situation',
      'six',
      'size',
      'skill',
      'skin',
      'small',
      'smile',
      'so',
      'social',
      'society',
      'soldier',
      'some',
      'somebody',
      'someone',
      'something',
      'sometimes',
      'son',
      'song',
      'soon',
      'sort',
      'sound',
      'source',
      'south',
      'southern',
      'space',
      'speak',
      'special',
      'specific',
      'speech',
      'spend',
      'sport',
      'spring',
      'staff',
      'stage',
      'stand',
      'standard',
      'star',
      'start',
      'state',
      'statement',
      'station',
      'stay',
      'step',
      'still',
      'stock',
      'stop',
      'store',
      'story',
      'strategy',
      'street',
      'strong',
      'structure',
      'student',
      'study',
      'stuff',
      'style',
      'subject',
      'success',
      'successful',
      'such',
      'suddenly',
      'suffer',
      'suggest',
      'summer',
      'support',
      'sure',
      'surface',
      'system',
      'table',
      'take',
      'talk',
      'task',
      'tax',
      'teach',
      'teacher',
      'team',
      'technology',
      'television',
      'tell',
      'ten',
      'tend',
      'term',
      'test',
      'than',
      'thank',
      'that',
      'the',
      'their',
      'them',
      'themselves',
      'then',
      'theory',
      'there',
      'these',
      'they',
      'thing',
      'think',
      'third',
      'this',
      'those',
      'though',
      'thought',
      'thousand',
      'threat',
      'three',
      'through',
      'throughout',
      'throw',
      'thus',
      'time',
      'to',
      'today',
      'together',
      'tonight',
      'too',
      'top',
      'total',
      'tough',
      'toward',
      'town',
      'trade',
      'traditional',
      'training',
      'travel',
      'treat',
      'treatment',
      'tree',
      'trial',
      'trip',
      'trouble',
      'true',
      'truth',
      'try',
      'turn',
      'TV',
      'two',
      'type',
      'under',
      'understand',
      'unit',
      'until',
      'up',
      'upon',
      'us',
      'use',
      'usually',
      'value',
      'various',
      'very',
      'view',
      'visit',
      'voice',
      'vote',
      'wait',
      'walk',
      'wall',
      'want',
      'war',
      'watch',
      'water',
      'way',
      'we',
      'wear',
      'week',
      'weight',
      'well',
      'west',
      'western',
      'what',
      'whatever',
      'when',
      'where',
      'whether',
      'which',
      'while',
      'white',
      'who',
      'whole',
      'whom',
      'whose',
      'why',
      'wide',
      'wife',
      'will',
      'win',
      'wind',
      'window',
      'wish',
      'with',
      'within',
      'without',
      'woman',
      'wonder',
      'word',
      'work',
      'worker',
      'world',
      'worry',
      'would',
      'write',
      'writer',
      'wrong',
      'yard',
      'yeah',
      'year',
      'yes',
      'yet',
      'you',
      'young',
      'your',
      'yourself'
    )
  )
)




## file -----------------
file_en_US = R6Class(
  "file_en_US",
  inherit = file_init,
  cloneable = FALSE,
  public = list(
    file_name = function(category, extension){
      # :param category: audio|image|office|text|video
      # :param extension: file extension
      if (missing(extension)) {
        extension = self$file_extension(category)
      }

      file = (lorem_en_US$new())$word()
      return(str_c(file, ".", extension))
    },

    file_path = function(depth = 1, category, extension){
      # :param category: audio|image|office|text|video
      # :param extension: file extension
      # :param depth: depth of the file (depth >= 0)

      file = self$file_name(category, extension)
      path = str_c("/", file)
      for (i in seq(depth)) {
        path = str_c("/", (lorem_en_US$new())$word(), path)
      }
      return(path)
    }
  )
)


## internet --------------------
internet_en_US = R6Class(
  "internet_en_US",
  inherit = internet_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_en_US$new())$.__enclos_env__$private$first_names,
    last_names = (person_en_US$new())$.__enclos_env__$private$last_names,
    first_name = (person_en_US$new())$first_name,
    last_name = (person_en_US$new())$last_name
  ),

  public = list(
    domain_word = function() {
      company = (company_en_US$new())$company()
      company_elements = str_split(company, " ")[[1]]
      company = private$to_ascii(company_elements[1])
      return(private$slugify(company, allow_unicode = TRUE))
    },

    slug = function(string) {
      string = ifelse(missing(string),
                      (lorem_en_US$new())$text(max_nb_chars = 20),
                      string)
      return(private$slugify(string))
    }
  )
)

## phone_number -----------------------
phone_number_en_US = R6Class(
  "phone_number_en_US",
  inherit = phone_number_init,
  cloneable = FALSE,
  private = list(
    formats = c(
      # Standard 10-digit phone number formats
      '##########',
      '##########',
      '###-###-####',
      '###-###-####',
      # Optional 10-digit local phone number format
      '(###)###-####',
      '(###)###-####',
      # Non-standard 10-digit phone number format
      '###.###.####',
      '###.###.####',
      # Standard 10-digit phone number format with extensions
      '###-###-####x###',
      '###-###-####x####',
      '###-###-####x#####',
      # Optional 10-digit local phone number format with extensions
      '(###)###-####x###',
      '(###)###-####x####',
      '(###)###-####x#####',
      # Non-standard 10-digit phone number format with extensions
      '###.###.####x###',
      '###.###.####x####',
      '###.###.####x#####',
      # Standard 11-digit phone number format
      '+1-###-###-####',
      '001-###-###-####',
      # Standard 11-digit phone number format with extensions
      '+1-###-###-####x###',
      '+1-###-###-####x####',
      '+1-###-###-####x#####',
      '001-###-###-####x###',
      '001-###-###-####x####',
      '001-###-###-####x#####'
    )
  )
)


## ssn ------------------------
ssn_en_US = R6Class(
  "ssn_en_US",
  inherit = ssn_init,
  cloneable = FALSE,
  private = list(
    INVALID_SSN_TYPE = 'INVALID_SSN',
    SSN_TYPE = 'SSN',
    ITIN_TYPE = 'ITIN',
    EIN_TYPE = 'EIN'
  ),

  public = list(
    itin = function(){
      # Generate a random United States Individual Taxpayer Identification Number (ITIN).
      # An United States Individual Taxpayer Identification Number
      # (ITIN) is a tax processing number issued by the Internal
      # Revenue Service. It is a nine-digit number that always begins
      # with the number 9 and has a range of 70-88 in the fourth and
      # fifth digit. Effective April 12, 2011, the range was extended
      # to include 900-70-0000 through 999-88-9999, 900-90-0000
      # through 999-92-9999 and 900-94-0000 through 999-99-9999.
      # https://www.irs.gov/individuals/international-taxpayers/general-itin-information

      area = private$random_int(from = 900, to = 999)
      serial = private$random_int(from = 0, to = 9999)
      # The group number must be between 70 and 99 inclusively but not 89 or 93

      group = sample(setdiff(seq(70, 99), c(89, 93)), 1)
      itin = sprintf("%03d-%02d-%04d", area, group, serial)
      return(itin)
    },

    ein = function(){
      # Generate a random United States Employer Identification Number (EIN).
      # An United States An Employer Identification Number (EIN) is
      # also known as a Federal Tax Identification Number, and is
      # used to identify a business entity. EINs follow a format of a
      # two-digit prefix followed by a hyphen and a seven-digit sequence:
      # https://www.irs.gov/businesses/small-businesses-self-employed/employer-id-numbers


      # Only certain EIN Prefix values are assigned:
      #
      # https://www.irs.gov/businesses/small-businesses-self-employed/how-eins-are-assigned-and-valid-ein-prefixes
      ein_prefix_choices = c(
        '01', '02', '03', '04', '05', '06', '10', '11', '12', '13', '14', '15', '16', '20', '21', '22', '23',
        '24', '25', '26', '27', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42',
        '43', '44', '45', '46', '47', '48', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60',
        '61', '62', '63', '64', '65', '66', '67', '68', '71', '72', '73', '74', '75', '76', '77','80', '81',
        '82', '83', '84', '85', '86', '87', '88', '90', '91', '92', '93', '94', '95', '98', '99')
      ein_prefix = sample(ein_prefix_choices, 1)
      sequence = private$random_int(from = 0, to = 9999999)
      ein = sprintf("%s-%07d", ein_prefix, sequence)
      return(ein)
    },

    invalid_ssn = function(){
      # Generate a random invalid United States Social Security Identification Number (SSN).
      # Invalid SSNs have the following characteristics:
      # Cannot begin with the number 9
      # Cannot begin with 666 in positions 1 - 3
      # Cannot begin with 000 in positions 1 - 3
      # Cannot contain 00 in positions 4 - 5
      # Cannot contain 0000 in positions 6 - 9
      # https://www.ssa.gov/kc/SSAFactSheet--IssuingSSNs.pdf
      # Additionally, return an invalid SSN that is NOT a valid ITIN by excluding certain ITIN related "group" values
      itin_group_numbers = c(
        70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
        84, 85, 86, 87, 88, 90, 91, 92, 94, 95, 96, 97, 98, 99)
      area = private$random_int(from = 0, to = 999)
      if (area < 900 & !(area %in% c(0, 666))) {
        random_group_or_serial = private$random_int(from = 1, to = 1000)
        if (random_group_or_serial <= 500) {
          group = 0
          serial = private$random_int(0, 9999)
        } else {
          group = private$random_int(0, 99)
          serial = 0
        }
      } else {
        if (area %in% c(0, 666)) {
          group = private$random_int(0, 99)
          serial = private$random_int(0, 9999)
        } else {
          group = sample(setdiff(seq(0, 99), itin_group_numbers), 1)
          serial = private$random_int(0, 9999)
        }
      }
      invalid_ssn = sprintf("%03d-%02d-%04d", area, group, serial)
      return(invalid_ssn)
    },

    ssn = function(taxpayer_identification_number_type = private$SSN_TYPE) {
      # Generate a random United States Taxpayer Identification Number of the specified type.
      # If no type is specified, a US SSN is returned.
      if (taxpayer_identification_number_type == private$ITIN_TYPE) {
        return(self$itin())
      }

      if (taxpayer_identification_number_type == private$EIN_TYPE) {
        return(self$ein())
      }

      if (taxpayer_identification_number_type == private$INVALID_SSN_TYPE) {
        return(self$invalid_ssn())
      }

      if (taxpayer_identification_number_type == private$SSN_TYPE) {
        # Certain numbers are invalid for United States Social Security
        # Numbers. The area (first 3 digits) cannot be 666 or 900-999.
        # The group number (middle digits) cannot be 00. The serial
        # (last 4 digits) cannot be 0000.
        area = private$random_int(from = 1, to = 899)
        if (area == 666) {
          area = area + 1
        }
        group = private$random_int(1, 99)
        serial = private$random_int(1, 9999)
        ssn = sprintf("%03d-%02d-%04d", area, group, serial)
        return(ssn)
      }

      if (!(taxpayer_identification_number_type %in% c(
        private$ITIN_TYPE, private$EIN_TYPE, private$INVALID_SSN_TYPE, private$SSN_TYPE
      )
      )) {
        stop("taxpayer_identification_number_type must be one of 'SSN', 'EIN', 'ITIN' or 'INVALID_SSN'.")
      }
    }
  )
)





## profile   ------------
profile_en_US = R6Class(
  "profile_en_US",
  inherit = profile_init,
  cloneable = FALSE,
  public = list(
    simple_profile = function(sex) {
      # Generates a basic profile with personal informations
      SEX = c("F", "M")
      if (missing(sex)) {
        sex = sample(SEX, 1)
      }
      if (!(sex %in% SEX)) {
        sex = sample(SEX, 1)
      }

      name = ifelse(sex == "F",
                    (person_en_US$new())$name_female(),
                    (person_en_US$new())$name_male())
      temp = list(
        "username" = (internet_en_US$new())$user_name(),
        "name" = name,
        "sex" = sex,
        "address" = (address_en_US$new())$address(),
        "mail" = (internet_en_US$new())$free_email(),
        "birthdate" = (date_time_init$new())$date_of_birth()
      )
      return(temp)
    },

    profile = function(fields, sex) {
      # Generates a complete profile.
      # If "fields" is not empty, only the fields in the list will be returned

      if (missing(fields)) fields = c()

      field = list(
        "job" = (job_init$new())$job(),
        "company" = (company_en_US$new())$company(),
        "ssn" = (ssn_en_US$new())$ssn(),
        "residence" = (address_en_US$new())$address(),
        "current_location" = c((geo_init$new())$latitude(),
                               (geo_init$new())$longitude()),
        "blood_group" = sample(c(
          "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"), 1),
        "website" = replicate(sample(seq(4), 1), (internet_en_US$new())$url())
      )

      field = append(field, self$simple_profile(sex))
      # field selection

      if (length(fields)) {
        nms = intersect(names(field), fields)
        field = field[nms]
      }
      return(field)
    }

  )
)
LuYang19/faker documentation built on Jan. 3, 2020, 12:07 a.m.