00     <Generate a frequency trigraph based on an english dictionary(c) Sean Gillespie, 2015 OtherLicense"Sean Gillespie <sean@mistersg.net> ExperimentalSafeKSearch for the character frequencies based on the first a two-letter stringA map of character frequencies, based on a dictionary. The key is a two-letter string, and the value is a list of probabilities (a-z). It's form is: [("aa", [2,0,3,0,0,0,1,0,0,0,0,1,1,1,0,0,0,3,2,0,0,0,0,0,0,0]), ... ("zz", [7,0,0,0,1,0,0,0,7,0,0,17,0,0,2,0,0,0,0,0,0,0,1,0,5,0])].Generate pronouncable, hard-to-guess passwords(c) Sean Gillespie, 2015 OtherLicense"Sean Gillespie <sean@mistersg.net> ExperimentalSafe KGenerate a finite number of words of random length (between 3 and 9 chars).\Generate a password using the generator g, returning the result and the updated generator.  -- Generate a password of length 10 using the system generator myGenPassword :: IO (String, StdGen) myGenPassword = genPassword 10 True `liftM` getStdGen Plural version of genPassword. Generates an infinite list of passwords using the generator g, returning the result and the updated generator. -- Generate 10 passwords of length 10 using the system generator myGenPasswords :: IO ([String], StdGen) myGenPasswords = ((ls, g) -> (take 10 ls, g)   genPasswords 10 True   getStdGen @Generate a password using the generator g, returning the result.  -- Generate a password of length 10 using the system generator myNewPassword :: IO String myNewPassword = newPassword 10 True `liftM` getStdGen uPlural version of newPassword. Generates an infinite list of passwords using the generator g, returning the result -- Generate 10 passwords of length 10 using the system generator myNewPasswords :: IO [String] myNewPasswords = (take 10 . genPasswords 10 True)   getStdGen ]Generate a password using the MonadRandom m. MonadRandom is exposed here for extra control.  -- Generate a password of length 10 using the system generator myPasswords :: IO String myPasswords = evalRand (mkPassword 10 True) `liftM` getStdGen Plural version of mkPassword. Generate an infinite list of passwords using the MonadRandom m. MonadRandom is exposed here for extra control. -- Generate an infinite list of passwords of length 10 using the system generator myMkPasswords :: IO [String] myMkPasswords = evalRand (mkPasswords 10 True) `liftM` getStdGen )The alphabet we sample random values from %Generate two random characters. Uses  to generate a weighted list. MGenerate a random character based on the previous two characters and their  IGenerate the last n characters using previous two characters and their  password lengthinclude capitals?random generatorpassword lengthinclude capitals?random generatorpassword lengthinclude capitals?random generatorpassword lengthinclude capitals?random generatorpassword lengthinclude capitals?password lengthinclude capitals?         %elocrypt-0.6.0-LEUbuJlIhIjEguEyBKafKcData.Elocrypt.Trigraph Data.ElocryptElocrypt.Trigraphtrigraghtrigraph findFrequency frequencies mkPassphrase genPassword genPasswords newPassword newPasswords mkPassword mkPasswordsalphabetfirst2nextlastNbaseGHC.BaseliftM