├── .gitignore ├── ENGivenMale.json ├── LICENSE ├── README.md ├── app ├── plutus-lobster-names.hs ├── plutus-lobster-tokens.hs └── plutus-lobster.hs ├── cabal.project ├── hie.yaml ├── lobster.jpg ├── names.md ├── plutus-lobster.cabal ├── scripts ├── lobster-contribute.sh ├── lobster-deploy.sh ├── lobster-mint-nft.sh ├── lobster.plutus ├── mainnet-query-protocol-parameters.sh ├── mainnet-script-address.sh ├── mainnet-utxo-at.sh ├── nft-mint-policy.plutus ├── other-mint-policy.plutus └── policyid.sh └── src └── Cardano └── PlutusLobster └── LobsterScript.hs /.gitignore: -------------------------------------------------------------------------------- 1 | dist-newstyle/ 2 | -------------------------------------------------------------------------------- /ENGivenMale.json: -------------------------------------------------------------------------------- 1 | [{"name":"JAMES","gender":"M","culture":"EN"},{"name":"JOHN","gender":"M","culture":"EN"},{"name":"ROBERT","gender":"M","culture":"EN"},{"name":"MICHAEL","gender":"M","culture":"EN"},{"name":"WILLIAM","gender":"M","culture":"EN"},{"name":"DAVID","gender":"M","culture":"EN"},{"name":"RICHARD","gender":"M","culture":"EN"},{"name":"CHARLES","gender":"M","culture":"EN"},{"name":"JOSEPH","gender":"M","culture":"EN"},{"name":"THOMAS","gender":"M","culture":"EN"},{"name":"CHRISTOPHER","gender":"M","culture":"EN"},{"name":"DANIEL","gender":"M","culture":"EN"},{"name":"PAUL","gender":"M","culture":"EN"},{"name":"MARK","gender":"M","culture":"EN"},{"name":"DONALD","gender":"M","culture":"EN"},{"name":"GEORGE","gender":"M","culture":"EN"},{"name":"KENNETH","gender":"M","culture":"EN"},{"name":"STEVEN","gender":"M","culture":"EN"},{"name":"EDWARD","gender":"M","culture":"EN"},{"name":"BRIAN","gender":"M","culture":"EN"},{"name":"RONALD","gender":"M","culture":"EN"},{"name":"ANTHONY","gender":"M","culture":"EN"},{"name":"KEVIN","gender":"M","culture":"EN"},{"name":"JASON","gender":"M","culture":"EN"},{"name":"MATTHEW","gender":"M","culture":"EN"},{"name":"GARY","gender":"M","culture":"EN"},{"name":"TIMOTHY","gender":"M","culture":"EN"},{"name":"JOSE","gender":"M","culture":"EN"},{"name":"LARRY","gender":"M","culture":"EN"},{"name":"JEFFREY","gender":"M","culture":"EN"},{"name":"FRANK","gender":"M","culture":"EN"},{"name":"SCOTT","gender":"M","culture":"EN"},{"name":"ERIC","gender":"M","culture":"EN"},{"name":"STEPHEN","gender":"M","culture":"EN"},{"name":"ANDREW","gender":"M","culture":"EN"},{"name":"RAYMOND","gender":"M","culture":"EN"},{"name":"GREGORY","gender":"M","culture":"EN"},{"name":"JOSHUA","gender":"M","culture":"EN"},{"name":"JERRY","gender":"M","culture":"EN"},{"name":"DENNIS","gender":"M","culture":"EN"},{"name":"WALTER","gender":"M","culture":"EN"},{"name":"PATRICK","gender":"M","culture":"EN"},{"name":"PETER","gender":"M","culture":"EN"},{"name":"HAROLD","gender":"M","culture":"EN"},{"name":"DOUGLAS","gender":"M","culture":"EN"},{"name":"HENRY","gender":"M","culture":"EN"},{"name":"CARL","gender":"M","culture":"EN"},{"name":"ARTHUR","gender":"M","culture":"EN"},{"name":"RYAN","gender":"M","culture":"EN"},{"name":"ROGER","gender":"M","culture":"EN"},{"name":"JOE","gender":"M","culture":"EN"},{"name":"JUAN","gender":"M","culture":"EN"},{"name":"JACK","gender":"M","culture":"EN"},{"name":"ALBERT","gender":"M","culture":"EN"},{"name":"JONATHAN","gender":"M","culture":"EN"},{"name":"JUSTIN","gender":"M","culture":"EN"},{"name":"TERRY","gender":"M","culture":"EN"},{"name":"GERALD","gender":"M","culture":"EN"},{"name":"KEITH","gender":"M","culture":"EN"},{"name":"SAMUEL","gender":"M","culture":"EN"},{"name":"WILLIE","gender":"M","culture":"EN"},{"name":"RALPH","gender":"M","culture":"EN"},{"name":"LAWRENCE","gender":"M","culture":"EN"},{"name":"NICHOLAS","gender":"M","culture":"EN"},{"name":"ROY","gender":"M","culture":"EN"},{"name":"BENJAMIN","gender":"M","culture":"EN"},{"name":"BRUCE","gender":"M","culture":"EN"},{"name":"BRANDON","gender":"M","culture":"EN"},{"name":"ADAM","gender":"M","culture":"EN"},{"name":"HARRY","gender":"M","culture":"EN"},{"name":"FRED","gender":"M","culture":"EN"},{"name":"WAYNE","gender":"M","culture":"EN"},{"name":"BILLY","gender":"M","culture":"EN"},{"name":"STEVE","gender":"M","culture":"EN"},{"name":"LOUIS","gender":"M","culture":"EN"},{"name":"JEREMY","gender":"M","culture":"EN"},{"name":"AARON","gender":"M","culture":"EN"},{"name":"RANDY","gender":"M","culture":"EN"},{"name":"HOWARD","gender":"M","culture":"EN"},{"name":"EUGENE","gender":"M","culture":"EN"},{"name":"CARLOS","gender":"M","culture":"EN"},{"name":"RUSSELL","gender":"M","culture":"EN"},{"name":"BOBBY","gender":"M","culture":"EN"},{"name":"VICTOR","gender":"M","culture":"EN"},{"name":"MARTIN","gender":"M","culture":"EN"},{"name":"ERNEST","gender":"M","culture":"EN"},{"name":"PHILLIP","gender":"M","culture":"EN"},{"name":"TODD","gender":"M","culture":"EN"},{"name":"JESSE","gender":"M","culture":"EN"},{"name":"CRAIG","gender":"M","culture":"EN"},{"name":"ALAN","gender":"M","culture":"EN"},{"name":"SHAWN","gender":"M","culture":"EN"},{"name":"CLARENCE","gender":"M","culture":"EN"},{"name":"SEAN","gender":"M","culture":"EN"},{"name":"PHILIP","gender":"M","culture":"EN"},{"name":"CHRIS","gender":"M","culture":"EN"},{"name":"JOHNNY","gender":"M","culture":"EN"},{"name":"EARL","gender":"M","culture":"EN"},{"name":"JIMMY","gender":"M","culture":"EN"},{"name":"ANTONIO","gender":"M","culture":"EN"},{"name":"DANNY","gender":"M","culture":"EN"},{"name":"BRYAN","gender":"M","culture":"EN"},{"name":"TONY","gender":"M","culture":"EN"},{"name":"LUIS","gender":"M","culture":"EN"},{"name":"MIKE","gender":"M","culture":"EN"},{"name":"STANLEY","gender":"M","culture":"EN"},{"name":"LEONARD","gender":"M","culture":"EN"},{"name":"NATHAN","gender":"M","culture":"EN"},{"name":"DALE","gender":"M","culture":"EN"},{"name":"MANUEL","gender":"M","culture":"EN"},{"name":"RODNEY","gender":"M","culture":"EN"},{"name":"CURTIS","gender":"M","culture":"EN"},{"name":"NORMAN","gender":"M","culture":"EN"},{"name":"ALLEN","gender":"M","culture":"EN"},{"name":"MARVIN","gender":"M","culture":"EN"},{"name":"VINCENT","gender":"M","culture":"EN"},{"name":"GLENN","gender":"M","culture":"EN"},{"name":"JEFFERY","gender":"M","culture":"EN"},{"name":"TRAVIS","gender":"M","culture":"EN"},{"name":"JEFF","gender":"M","culture":"EN"},{"name":"CHAD","gender":"M","culture":"EN"},{"name":"JACOB","gender":"M","culture":"EN"},{"name":"LEE","gender":"M","culture":"EN"},{"name":"MELVIN","gender":"M","culture":"EN"},{"name":"ALFRED","gender":"M","culture":"EN"},{"name":"KYLE","gender":"M","culture":"EN"},{"name":"FRANCIS","gender":"M","culture":"EN"},{"name":"BRADLEY","gender":"M","culture":"EN"},{"name":"JESUS","gender":"M","culture":"EN"},{"name":"HERBERT","gender":"M","culture":"EN"},{"name":"FREDERICK","gender":"M","culture":"EN"},{"name":"RAY","gender":"M","culture":"EN"},{"name":"JOEL","gender":"M","culture":"EN"},{"name":"EDWIN","gender":"M","culture":"EN"},{"name":"DON","gender":"M","culture":"EN"},{"name":"EDDIE","gender":"M","culture":"EN"},{"name":"RICKY","gender":"M","culture":"EN"},{"name":"TROY","gender":"M","culture":"EN"},{"name":"RANDALL","gender":"M","culture":"EN"},{"name":"BARRY","gender":"M","culture":"EN"},{"name":"ALEXANDER","gender":"M","culture":"EN"},{"name":"BERNARD","gender":"M","culture":"EN"},{"name":"MARIO","gender":"M","culture":"EN"},{"name":"LEROY","gender":"M","culture":"EN"},{"name":"FRANCISCO","gender":"M","culture":"EN"},{"name":"MARCUS","gender":"M","culture":"EN"},{"name":"MICHEAL","gender":"M","culture":"EN"},{"name":"THEODORE","gender":"M","culture":"EN"},{"name":"CLIFFORD","gender":"M","culture":"EN"},{"name":"MIGUEL","gender":"M","culture":"EN"},{"name":"OSCAR","gender":"M","culture":"EN"},{"name":"JAY","gender":"M","culture":"EN"},{"name":"JIM","gender":"M","culture":"EN"},{"name":"TOM","gender":"M","culture":"EN"},{"name":"CALVIN","gender":"M","culture":"EN"},{"name":"ALEX","gender":"M","culture":"EN"},{"name":"JON","gender":"M","culture":"EN"},{"name":"RONNIE","gender":"M","culture":"EN"},{"name":"BILL","gender":"M","culture":"EN"},{"name":"LLOYD","gender":"M","culture":"EN"},{"name":"TOMMY","gender":"M","culture":"EN"},{"name":"LEON","gender":"M","culture":"EN"},{"name":"DEREK","gender":"M","culture":"EN"},{"name":"WARREN","gender":"M","culture":"EN"},{"name":"DARRELL","gender":"M","culture":"EN"},{"name":"JEROME","gender":"M","culture":"EN"},{"name":"FLOYD","gender":"M","culture":"EN"},{"name":"LEO","gender":"M","culture":"EN"},{"name":"ALVIN","gender":"M","culture":"EN"},{"name":"TIM","gender":"M","culture":"EN"},{"name":"WESLEY","gender":"M","culture":"EN"},{"name":"GORDON","gender":"M","culture":"EN"},{"name":"DEAN","gender":"M","culture":"EN"},{"name":"GREG","gender":"M","culture":"EN"},{"name":"JORGE","gender":"M","culture":"EN"},{"name":"DUSTIN","gender":"M","culture":"EN"},{"name":"PEDRO","gender":"M","culture":"EN"},{"name":"DERRICK","gender":"M","culture":"EN"},{"name":"DAN","gender":"M","culture":"EN"},{"name":"LEWIS","gender":"M","culture":"EN"},{"name":"ZACHARY","gender":"M","culture":"EN"},{"name":"COREY","gender":"M","culture":"EN"},{"name":"HERMAN","gender":"M","culture":"EN"},{"name":"MAURICE","gender":"M","culture":"EN"},{"name":"VERNON","gender":"M","culture":"EN"},{"name":"ROBERTO","gender":"M","culture":"EN"},{"name":"CLYDE","gender":"M","culture":"EN"},{"name":"GLEN","gender":"M","culture":"EN"},{"name":"HECTOR","gender":"M","culture":"EN"},{"name":"SHANE","gender":"M","culture":"EN"},{"name":"RICARDO","gender":"M","culture":"EN"},{"name":"SAM","gender":"M","culture":"EN"},{"name":"RICK","gender":"M","culture":"EN"},{"name":"LESTER","gender":"M","culture":"EN"},{"name":"BRENT","gender":"M","culture":"EN"},{"name":"RAMON","gender":"M","culture":"EN"},{"name":"CHARLIE","gender":"M","culture":"EN"},{"name":"TYLER","gender":"M","culture":"EN"},{"name":"GILBERT","gender":"M","culture":"EN"},{"name":"GENE","gender":"M","culture":"EN"},{"name":"MARC","gender":"M","culture":"EN"},{"name":"REGINALD","gender":"M","culture":"EN"},{"name":"RUBEN","gender":"M","culture":"EN"},{"name":"BRETT","gender":"M","culture":"EN"},{"name":"ANGEL","gender":"M","culture":"EN"},{"name":"NATHANIEL","gender":"M","culture":"EN"},{"name":"RAFAEL","gender":"M","culture":"EN"},{"name":"LESLIE","gender":"M","culture":"EN"},{"name":"EDGAR","gender":"M","culture":"EN"},{"name":"MILTON","gender":"M","culture":"EN"},{"name":"RAUL","gender":"M","culture":"EN"},{"name":"BEN","gender":"M","culture":"EN"},{"name":"CHESTER","gender":"M","culture":"EN"},{"name":"CECIL","gender":"M","culture":"EN"},{"name":"DUANE","gender":"M","culture":"EN"},{"name":"FRANKLIN","gender":"M","culture":"EN"},{"name":"ANDRE","gender":"M","culture":"EN"},{"name":"ELMER","gender":"M","culture":"EN"},{"name":"BRAD","gender":"M","culture":"EN"},{"name":"GABRIEL","gender":"M","culture":"EN"},{"name":"RON","gender":"M","culture":"EN"},{"name":"MITCHELL","gender":"M","culture":"EN"},{"name":"ROLAND","gender":"M","culture":"EN"},{"name":"ARNOLD","gender":"M","culture":"EN"},{"name":"HARVEY","gender":"M","culture":"EN"},{"name":"JARED","gender":"M","culture":"EN"},{"name":"ADRIAN","gender":"M","culture":"EN"},{"name":"KARL","gender":"M","culture":"EN"},{"name":"CORY","gender":"M","culture":"EN"},{"name":"CLAUDE","gender":"M","culture":"EN"},{"name":"ERIK","gender":"M","culture":"EN"},{"name":"DARRYL","gender":"M","culture":"EN"},{"name":"JAMIE","gender":"M","culture":"EN"},{"name":"NEIL","gender":"M","culture":"EN"},{"name":"JESSIE","gender":"M","culture":"EN"},{"name":"CHRISTIAN","gender":"M","culture":"EN"},{"name":"JAVIER","gender":"M","culture":"EN"},{"name":"FERNANDO","gender":"M","culture":"EN"},{"name":"CLINTON","gender":"M","culture":"EN"},{"name":"TED","gender":"M","culture":"EN"},{"name":"MATHEW","gender":"M","culture":"EN"},{"name":"TYRONE","gender":"M","culture":"EN"},{"name":"DARREN","gender":"M","culture":"EN"},{"name":"LONNIE","gender":"M","culture":"EN"},{"name":"LANCE","gender":"M","culture":"EN"},{"name":"CODY","gender":"M","culture":"EN"},{"name":"JULIO","gender":"M","culture":"EN"},{"name":"KELLY","gender":"M","culture":"EN"},{"name":"KURT","gender":"M","culture":"EN"},{"name":"ALLAN","gender":"M","culture":"EN"},{"name":"NELSON","gender":"M","culture":"EN"},{"name":"GUY","gender":"M","culture":"EN"},{"name":"CLAYTON","gender":"M","culture":"EN"},{"name":"HUGH","gender":"M","culture":"EN"},{"name":"MAX","gender":"M","culture":"EN"},{"name":"DWAYNE","gender":"M","culture":"EN"},{"name":"DWIGHT","gender":"M","culture":"EN"},{"name":"ARMANDO","gender":"M","culture":"EN"},{"name":"FELIX","gender":"M","culture":"EN"},{"name":"JIMMIE","gender":"M","culture":"EN"},{"name":"EVERETT","gender":"M","culture":"EN"},{"name":"JORDAN","gender":"M","culture":"EN"},{"name":"IAN","gender":"M","culture":"EN"},{"name":"WALLACE","gender":"M","culture":"EN"},{"name":"KEN","gender":"M","culture":"EN"},{"name":"BOB","gender":"M","culture":"EN"},{"name":"JAIME","gender":"M","culture":"EN"},{"name":"CASEY","gender":"M","culture":"EN"},{"name":"ALFREDO","gender":"M","culture":"EN"},{"name":"ALBERTO","gender":"M","culture":"EN"},{"name":"DAVE","gender":"M","culture":"EN"},{"name":"IVAN","gender":"M","culture":"EN"},{"name":"JOHNNIE","gender":"M","culture":"EN"},{"name":"SIDNEY","gender":"M","culture":"EN"},{"name":"BYRON","gender":"M","culture":"EN"},{"name":"JULIAN","gender":"M","culture":"EN"},{"name":"ISAAC","gender":"M","culture":"EN"},{"name":"MORRIS","gender":"M","culture":"EN"},{"name":"CLIFTON","gender":"M","culture":"EN"},{"name":"WILLARD","gender":"M","culture":"EN"},{"name":"DARYL","gender":"M","culture":"EN"},{"name":"ROSS","gender":"M","culture":"EN"},{"name":"VIRGIL","gender":"M","culture":"EN"},{"name":"ANDY","gender":"M","culture":"EN"},{"name":"MARSHALL","gender":"M","culture":"EN"},{"name":"SALVADOR","gender":"M","culture":"EN"},{"name":"PERRY","gender":"M","culture":"EN"},{"name":"KIRK","gender":"M","culture":"EN"},{"name":"SERGIO","gender":"M","culture":"EN"},{"name":"MARION","gender":"M","culture":"EN"},{"name":"TRACY","gender":"M","culture":"EN"},{"name":"SETH","gender":"M","culture":"EN"},{"name":"KENT","gender":"M","culture":"EN"},{"name":"TERRANCE","gender":"M","culture":"EN"},{"name":"RENE","gender":"M","culture":"EN"},{"name":"EDUARDO","gender":"M","culture":"EN"},{"name":"TERRENCE","gender":"M","culture":"EN"},{"name":"ENRIQUE","gender":"M","culture":"EN"},{"name":"FREDDIE","gender":"M","culture":"EN"},{"name":"WADE","gender":"M","culture":"EN"},{"name":"AUSTIN","gender":"M","culture":"EN"},{"name":"STUART","gender":"M","culture":"EN"},{"name":"FREDRICK","gender":"M","culture":"EN"},{"name":"ARTURO","gender":"M","culture":"EN"},{"name":"ALEJANDRO","gender":"M","culture":"EN"},{"name":"JACKIE","gender":"M","culture":"EN"},{"name":"JOEY","gender":"M","culture":"EN"},{"name":"NICK","gender":"M","culture":"EN"},{"name":"LUTHER","gender":"M","culture":"EN"},{"name":"WENDELL","gender":"M","culture":"EN"},{"name":"JEREMIAH","gender":"M","culture":"EN"},{"name":"EVAN","gender":"M","culture":"EN"},{"name":"JULIUS","gender":"M","culture":"EN"},{"name":"DANA","gender":"M","culture":"EN"},{"name":"DONNIE","gender":"M","culture":"EN"},{"name":"OTIS","gender":"M","culture":"EN"},{"name":"SHANNON","gender":"M","culture":"EN"},{"name":"TREVOR","gender":"M","culture":"EN"},{"name":"OLIVER","gender":"M","culture":"EN"},{"name":"LUKE","gender":"M","culture":"EN"},{"name":"HOMER","gender":"M","culture":"EN"},{"name":"GERARD","gender":"M","culture":"EN"},{"name":"DOUG","gender":"M","culture":"EN"},{"name":"KENNY","gender":"M","culture":"EN"},{"name":"HUBERT","gender":"M","culture":"EN"},{"name":"ANGELO","gender":"M","culture":"EN"},{"name":"SHAUN","gender":"M","culture":"EN"},{"name":"LYLE","gender":"M","culture":"EN"},{"name":"MATT","gender":"M","culture":"EN"},{"name":"LYNN","gender":"M","culture":"EN"},{"name":"ALFONSO","gender":"M","culture":"EN"},{"name":"ORLANDO","gender":"M","culture":"EN"},{"name":"REX","gender":"M","culture":"EN"},{"name":"CARLTON","gender":"M","culture":"EN"},{"name":"ERNESTO","gender":"M","culture":"EN"},{"name":"CAMERON","gender":"M","culture":"EN"},{"name":"NEAL","gender":"M","culture":"EN"},{"name":"PABLO","gender":"M","culture":"EN"},{"name":"LORENZO","gender":"M","culture":"EN"},{"name":"OMAR","gender":"M","culture":"EN"},{"name":"WILBUR","gender":"M","culture":"EN"},{"name":"BLAKE","gender":"M","culture":"EN"},{"name":"GRANT","gender":"M","culture":"EN"},{"name":"HORACE","gender":"M","culture":"EN"},{"name":"RODERICK","gender":"M","culture":"EN"},{"name":"KERRY","gender":"M","culture":"EN"},{"name":"ABRAHAM","gender":"M","culture":"EN"},{"name":"WILLIS","gender":"M","culture":"EN"},{"name":"RICKEY","gender":"M","culture":"EN"},{"name":"JEAN","gender":"M","culture":"EN"},{"name":"IRA","gender":"M","culture":"EN"},{"name":"ANDRES","gender":"M","culture":"EN"},{"name":"CESAR","gender":"M","culture":"EN"},{"name":"JOHNATHAN","gender":"M","culture":"EN"},{"name":"MALCOLM","gender":"M","culture":"EN"},{"name":"RUDOLPH","gender":"M","culture":"EN"},{"name":"DAMON","gender":"M","culture":"EN"},{"name":"KELVIN","gender":"M","culture":"EN"},{"name":"RUDY","gender":"M","culture":"EN"},{"name":"PRESTON","gender":"M","culture":"EN"},{"name":"ALTON","gender":"M","culture":"EN"},{"name":"ARCHIE","gender":"M","culture":"EN"},{"name":"MARCO","gender":"M","culture":"EN"},{"name":"WM","gender":"M","culture":"EN"},{"name":"PETE","gender":"M","culture":"EN"},{"name":"RANDOLPH","gender":"M","culture":"EN"},{"name":"GARRY","gender":"M","culture":"EN"},{"name":"GEOFFREY","gender":"M","culture":"EN"},{"name":"JONATHON","gender":"M","culture":"EN"},{"name":"FELIPE","gender":"M","culture":"EN"},{"name":"BENNIE","gender":"M","culture":"EN"},{"name":"GERARDO","gender":"M","culture":"EN"},{"name":"ED","gender":"M","culture":"EN"},{"name":"DOMINIC","gender":"M","culture":"EN"},{"name":"ROBIN","gender":"M","culture":"EN"},{"name":"LOREN","gender":"M","culture":"EN"},{"name":"DELBERT","gender":"M","culture":"EN"},{"name":"COLIN","gender":"M","culture":"EN"},{"name":"GUILLERMO","gender":"M","culture":"EN"},{"name":"EARNEST","gender":"M","culture":"EN"},{"name":"LUCAS","gender":"M","culture":"EN"},{"name":"BENNY","gender":"M","culture":"EN"},{"name":"NOEL","gender":"M","culture":"EN"},{"name":"SPENCER","gender":"M","culture":"EN"},{"name":"RODOLFO","gender":"M","culture":"EN"},{"name":"MYRON","gender":"M","culture":"EN"},{"name":"EDMUND","gender":"M","culture":"EN"},{"name":"GARRETT","gender":"M","culture":"EN"},{"name":"SALVATORE","gender":"M","culture":"EN"},{"name":"CEDRIC","gender":"M","culture":"EN"},{"name":"LOWELL","gender":"M","culture":"EN"},{"name":"GREGG","gender":"M","culture":"EN"},{"name":"SHERMAN","gender":"M","culture":"EN"},{"name":"WILSON","gender":"M","culture":"EN"},{"name":"DEVIN","gender":"M","culture":"EN"},{"name":"SYLVESTER","gender":"M","culture":"EN"},{"name":"KIM","gender":"M","culture":"EN"},{"name":"ROOSEVELT","gender":"M","culture":"EN"},{"name":"ISRAEL","gender":"M","culture":"EN"},{"name":"JERMAINE","gender":"M","culture":"EN"},{"name":"FORREST","gender":"M","culture":"EN"},{"name":"WILBERT","gender":"M","culture":"EN"},{"name":"LELAND","gender":"M","culture":"EN"},{"name":"SIMON","gender":"M","culture":"EN"},{"name":"GUADALUPE","gender":"M","culture":"EN"},{"name":"CLARK","gender":"M","culture":"EN"},{"name":"IRVING","gender":"M","culture":"EN"},{"name":"CARROLL","gender":"M","culture":"EN"},{"name":"BRYANT","gender":"M","culture":"EN"},{"name":"OWEN","gender":"M","culture":"EN"},{"name":"RUFUS","gender":"M","culture":"EN"},{"name":"WOODROW","gender":"M","culture":"EN"},{"name":"SAMMY","gender":"M","culture":"EN"},{"name":"KRISTOPHER","gender":"M","culture":"EN"},{"name":"MACK","gender":"M","culture":"EN"},{"name":"LEVI","gender":"M","culture":"EN"},{"name":"MARCOS","gender":"M","culture":"EN"},{"name":"GUSTAVO","gender":"M","culture":"EN"},{"name":"JAKE","gender":"M","culture":"EN"},{"name":"LIONEL","gender":"M","culture":"EN"},{"name":"MARTY","gender":"M","culture":"EN"},{"name":"TAYLOR","gender":"M","culture":"EN"},{"name":"ELLIS","gender":"M","culture":"EN"},{"name":"DALLAS","gender":"M","culture":"EN"},{"name":"GILBERTO","gender":"M","culture":"EN"},{"name":"CLINT","gender":"M","culture":"EN"},{"name":"NICOLAS","gender":"M","culture":"EN"},{"name":"LAURENCE","gender":"M","culture":"EN"},{"name":"ISMAEL","gender":"M","culture":"EN"},{"name":"ORVILLE","gender":"M","culture":"EN"},{"name":"DREW","gender":"M","culture":"EN"},{"name":"JODY","gender":"M","culture":"EN"},{"name":"ERVIN","gender":"M","culture":"EN"},{"name":"DEWEY","gender":"M","culture":"EN"},{"name":"AL","gender":"M","culture":"EN"},{"name":"WILFRED","gender":"M","culture":"EN"},{"name":"JOSH","gender":"M","culture":"EN"},{"name":"HUGO","gender":"M","culture":"EN"},{"name":"IGNACIO","gender":"M","culture":"EN"},{"name":"CALEB","gender":"M","culture":"EN"},{"name":"TOMAS","gender":"M","culture":"EN"},{"name":"SHELDON","gender":"M","culture":"EN"},{"name":"ERICK","gender":"M","culture":"EN"},{"name":"FRANKIE","gender":"M","culture":"EN"},{"name":"STEWART","gender":"M","culture":"EN"},{"name":"DOYLE","gender":"M","culture":"EN"},{"name":"DARREL","gender":"M","culture":"EN"},{"name":"ROGELIO","gender":"M","culture":"EN"},{"name":"TERENCE","gender":"M","culture":"EN"},{"name":"SANTIAGO","gender":"M","culture":"EN"},{"name":"ALONZO","gender":"M","culture":"EN"},{"name":"ELIAS","gender":"M","culture":"EN"},{"name":"BERT","gender":"M","culture":"EN"},{"name":"ELBERT","gender":"M","culture":"EN"},{"name":"RAMIRO","gender":"M","culture":"EN"},{"name":"CONRAD","gender":"M","culture":"EN"},{"name":"PAT","gender":"M","culture":"EN"},{"name":"NOAH","gender":"M","culture":"EN"},{"name":"GRADY","gender":"M","culture":"EN"},{"name":"PHIL","gender":"M","culture":"EN"},{"name":"CORNELIUS","gender":"M","culture":"EN"},{"name":"LAMAR","gender":"M","culture":"EN"},{"name":"ROLANDO","gender":"M","culture":"EN"},{"name":"CLAY","gender":"M","culture":"EN"},{"name":"PERCY","gender":"M","culture":"EN"},{"name":"DEXTER","gender":"M","culture":"EN"},{"name":"BRADFORD","gender":"M","culture":"EN"},{"name":"MERLE","gender":"M","culture":"EN"},{"name":"DARIN","gender":"M","culture":"EN"},{"name":"AMOS","gender":"M","culture":"EN"},{"name":"TERRELL","gender":"M","culture":"EN"},{"name":"MOSES","gender":"M","culture":"EN"},{"name":"IRVIN","gender":"M","culture":"EN"},{"name":"SAUL","gender":"M","culture":"EN"},{"name":"ROMAN","gender":"M","culture":"EN"},{"name":"DARNELL","gender":"M","culture":"EN"},{"name":"RANDAL","gender":"M","culture":"EN"},{"name":"TOMMIE","gender":"M","culture":"EN"},{"name":"TIMMY","gender":"M","culture":"EN"},{"name":"DARRIN","gender":"M","culture":"EN"},{"name":"WINSTON","gender":"M","culture":"EN"},{"name":"BRENDAN","gender":"M","culture":"EN"},{"name":"TOBY","gender":"M","culture":"EN"},{"name":"VAN","gender":"M","culture":"EN"},{"name":"ABEL","gender":"M","culture":"EN"},{"name":"DOMINICK","gender":"M","culture":"EN"},{"name":"BOYD","gender":"M","culture":"EN"},{"name":"COURTNEY","gender":"M","culture":"EN"},{"name":"JAN","gender":"M","culture":"EN"},{"name":"EMILIO","gender":"M","culture":"EN"},{"name":"ELIJAH","gender":"M","culture":"EN"},{"name":"CARY","gender":"M","culture":"EN"},{"name":"DOMINGO","gender":"M","culture":"EN"},{"name":"SANTOS","gender":"M","culture":"EN"},{"name":"AUBREY","gender":"M","culture":"EN"},{"name":"EMMETT","gender":"M","culture":"EN"},{"name":"MARLON","gender":"M","culture":"EN"},{"name":"EMANUEL","gender":"M","culture":"EN"},{"name":"JERALD","gender":"M","culture":"EN"},{"name":"EDMOND","gender":"M","culture":"EN"},{"name":"EMIL","gender":"M","culture":"EN"},{"name":"DEWAYNE","gender":"M","culture":"EN"},{"name":"WILL","gender":"M","culture":"EN"},{"name":"OTTO","gender":"M","culture":"EN"},{"name":"TEDDY","gender":"M","culture":"EN"},{"name":"REYNALDO","gender":"M","culture":"EN"},{"name":"BRET","gender":"M","culture":"EN"},{"name":"MORGAN","gender":"M","culture":"EN"},{"name":"JESS","gender":"M","culture":"EN"},{"name":"TRENT","gender":"M","culture":"EN"},{"name":"HUMBERTO","gender":"M","culture":"EN"},{"name":"EMMANUEL","gender":"M","culture":"EN"},{"name":"STEPHAN","gender":"M","culture":"EN"},{"name":"LOUIE","gender":"M","culture":"EN"},{"name":"VICENTE","gender":"M","culture":"EN"},{"name":"LAMONT","gender":"M","culture":"EN"},{"name":"STACY","gender":"M","culture":"EN"},{"name":"GARLAND","gender":"M","culture":"EN"},{"name":"MILES","gender":"M","culture":"EN"},{"name":"MICAH","gender":"M","culture":"EN"},{"name":"EFRAIN","gender":"M","culture":"EN"},{"name":"BILLIE","gender":"M","culture":"EN"},{"name":"LOGAN","gender":"M","culture":"EN"},{"name":"HEATH","gender":"M","culture":"EN"},{"name":"RODGER","gender":"M","culture":"EN"},{"name":"HARLEY","gender":"M","culture":"EN"},{"name":"DEMETRIUS","gender":"M","culture":"EN"},{"name":"ETHAN","gender":"M","culture":"EN"},{"name":"ELDON","gender":"M","culture":"EN"},{"name":"ROCKY","gender":"M","culture":"EN"},{"name":"PIERRE","gender":"M","culture":"EN"},{"name":"JUNIOR","gender":"M","culture":"EN"},{"name":"FREDDY","gender":"M","culture":"EN"},{"name":"ELI","gender":"M","culture":"EN"},{"name":"BRYCE","gender":"M","culture":"EN"},{"name":"ANTOINE","gender":"M","culture":"EN"},{"name":"ROBBIE","gender":"M","culture":"EN"},{"name":"KENDALL","gender":"M","culture":"EN"},{"name":"ROYCE","gender":"M","culture":"EN"},{"name":"STERLING","gender":"M","culture":"EN"},{"name":"MICKEY","gender":"M","culture":"EN"},{"name":"CHASE","gender":"M","culture":"EN"},{"name":"GROVER","gender":"M","culture":"EN"},{"name":"ELTON","gender":"M","culture":"EN"},{"name":"CLEVELAND","gender":"M","culture":"EN"},{"name":"DYLAN","gender":"M","culture":"EN"},{"name":"CHUCK","gender":"M","culture":"EN"},{"name":"DAMIAN","gender":"M","culture":"EN"},{"name":"REUBEN","gender":"M","culture":"EN"},{"name":"STAN","gender":"M","culture":"EN"},{"name":"AUGUST","gender":"M","culture":"EN"},{"name":"LEONARDO","gender":"M","culture":"EN"},{"name":"JASPER","gender":"M","culture":"EN"},{"name":"RUSSEL","gender":"M","culture":"EN"},{"name":"ERWIN","gender":"M","culture":"EN"},{"name":"BENITO","gender":"M","culture":"EN"},{"name":"HANS","gender":"M","culture":"EN"},{"name":"MONTE","gender":"M","culture":"EN"},{"name":"BLAINE","gender":"M","culture":"EN"},{"name":"ERNIE","gender":"M","culture":"EN"},{"name":"CURT","gender":"M","culture":"EN"},{"name":"QUENTIN","gender":"M","culture":"EN"},{"name":"AGUSTIN","gender":"M","culture":"EN"},{"name":"MURRAY","gender":"M","culture":"EN"},{"name":"JAMAL","gender":"M","culture":"EN"},{"name":"DEVON","gender":"M","culture":"EN"},{"name":"ADOLFO","gender":"M","culture":"EN"},{"name":"HARRISON","gender":"M","culture":"EN"},{"name":"TYSON","gender":"M","culture":"EN"},{"name":"BURTON","gender":"M","culture":"EN"},{"name":"BRADY","gender":"M","culture":"EN"},{"name":"ELLIOTT","gender":"M","culture":"EN"},{"name":"WILFREDO","gender":"M","culture":"EN"},{"name":"BART","gender":"M","culture":"EN"},{"name":"JARROD","gender":"M","culture":"EN"},{"name":"VANCE","gender":"M","culture":"EN"},{"name":"DENIS","gender":"M","culture":"EN"},{"name":"DAMIEN","gender":"M","culture":"EN"},{"name":"JOAQUIN","gender":"M","culture":"EN"},{"name":"HARLAN","gender":"M","culture":"EN"},{"name":"DESMOND","gender":"M","culture":"EN"},{"name":"ELLIOT","gender":"M","culture":"EN"},{"name":"DARWIN","gender":"M","culture":"EN"},{"name":"ASHLEY","gender":"M","culture":"EN"},{"name":"GREGORIO","gender":"M","culture":"EN"},{"name":"BUDDY","gender":"M","culture":"EN"},{"name":"XAVIER","gender":"M","culture":"EN"},{"name":"KERMIT","gender":"M","culture":"EN"},{"name":"ROSCOE","gender":"M","culture":"EN"},{"name":"ESTEBAN","gender":"M","culture":"EN"},{"name":"ANTON","gender":"M","culture":"EN"},{"name":"SOLOMON","gender":"M","culture":"EN"},{"name":"SCOTTY","gender":"M","culture":"EN"},{"name":"NORBERT","gender":"M","culture":"EN"},{"name":"ELVIN","gender":"M","culture":"EN"},{"name":"WILLIAMS","gender":"M","culture":"EN"},{"name":"NOLAN","gender":"M","culture":"EN"},{"name":"CAREY","gender":"M","culture":"EN"},{"name":"ROD","gender":"M","culture":"EN"},{"name":"QUINTON","gender":"M","culture":"EN"},{"name":"HAL","gender":"M","culture":"EN"},{"name":"BRAIN","gender":"M","culture":"EN"},{"name":"ROB","gender":"M","culture":"EN"},{"name":"ELWOOD","gender":"M","culture":"EN"},{"name":"KENDRICK","gender":"M","culture":"EN"},{"name":"DARIUS","gender":"M","culture":"EN"},{"name":"MOISES","gender":"M","culture":"EN"},{"name":"SON","gender":"M","culture":"EN"},{"name":"MARLIN","gender":"M","culture":"EN"},{"name":"FIDEL","gender":"M","culture":"EN"},{"name":"THADDEUS","gender":"M","culture":"EN"},{"name":"CLIFF","gender":"M","culture":"EN"},{"name":"MARCEL","gender":"M","culture":"EN"},{"name":"ALI","gender":"M","culture":"EN"},{"name":"JACKSON","gender":"M","culture":"EN"},{"name":"RAPHAEL","gender":"M","culture":"EN"},{"name":"BRYON","gender":"M","culture":"EN"},{"name":"ARMAND","gender":"M","culture":"EN"},{"name":"ALVARO","gender":"M","culture":"EN"},{"name":"JEFFRY","gender":"M","culture":"EN"},{"name":"DANE","gender":"M","culture":"EN"},{"name":"JOESPH","gender":"M","culture":"EN"},{"name":"THURMAN","gender":"M","culture":"EN"},{"name":"NED","gender":"M","culture":"EN"},{"name":"SAMMIE","gender":"M","culture":"EN"},{"name":"RUSTY","gender":"M","culture":"EN"},{"name":"MICHEL","gender":"M","culture":"EN"},{"name":"MONTY","gender":"M","culture":"EN"},{"name":"RORY","gender":"M","culture":"EN"},{"name":"FABIAN","gender":"M","culture":"EN"},{"name":"REGGIE","gender":"M","culture":"EN"},{"name":"MASON","gender":"M","culture":"EN"},{"name":"GRAHAM","gender":"M","culture":"EN"},{"name":"KRIS","gender":"M","culture":"EN"},{"name":"ISAIAH","gender":"M","culture":"EN"},{"name":"VAUGHN","gender":"M","culture":"EN"},{"name":"GUS","gender":"M","culture":"EN"},{"name":"AVERY","gender":"M","culture":"EN"},{"name":"LOYD","gender":"M","culture":"EN"},{"name":"DIEGO","gender":"M","culture":"EN"},{"name":"ALEXIS","gender":"M","culture":"EN"},{"name":"ADOLPH","gender":"M","culture":"EN"},{"name":"NORRIS","gender":"M","culture":"EN"},{"name":"MILLARD","gender":"M","culture":"EN"},{"name":"ROCCO","gender":"M","culture":"EN"},{"name":"GONZALO","gender":"M","culture":"EN"},{"name":"DERICK","gender":"M","culture":"EN"},{"name":"RODRIGO","gender":"M","culture":"EN"},{"name":"GERRY","gender":"M","culture":"EN"},{"name":"STACEY","gender":"M","culture":"EN"},{"name":"CARMEN","gender":"M","culture":"EN"},{"name":"WILEY","gender":"M","culture":"EN"},{"name":"RIGOBERTO","gender":"M","culture":"EN"},{"name":"ALPHONSO","gender":"M","culture":"EN"},{"name":"TY","gender":"M","culture":"EN"},{"name":"SHELBY","gender":"M","culture":"EN"},{"name":"RICKIE","gender":"M","culture":"EN"},{"name":"NOE","gender":"M","culture":"EN"},{"name":"VERN","gender":"M","culture":"EN"},{"name":"BOBBIE","gender":"M","culture":"EN"},{"name":"REED","gender":"M","culture":"EN"},{"name":"JEFFERSON","gender":"M","culture":"EN"},{"name":"ELVIS","gender":"M","culture":"EN"},{"name":"BERNARDO","gender":"M","culture":"EN"},{"name":"MAURICIO","gender":"M","culture":"EN"},{"name":"HIRAM","gender":"M","culture":"EN"},{"name":"DONOVAN","gender":"M","culture":"EN"},{"name":"BASIL","gender":"M","culture":"EN"},{"name":"RILEY","gender":"M","culture":"EN"},{"name":"OLLIE","gender":"M","culture":"EN"},{"name":"NICKOLAS","gender":"M","culture":"EN"},{"name":"MAYNARD","gender":"M","culture":"EN"},{"name":"SCOT","gender":"M","culture":"EN"},{"name":"VINCE","gender":"M","culture":"EN"},{"name":"QUINCY","gender":"M","culture":"EN"},{"name":"EDDY","gender":"M","culture":"EN"},{"name":"SEBASTIAN","gender":"M","culture":"EN"},{"name":"FEDERICO","gender":"M","culture":"EN"},{"name":"ULYSSES","gender":"M","culture":"EN"},{"name":"HERIBERTO","gender":"M","culture":"EN"},{"name":"DONNELL","gender":"M","culture":"EN"},{"name":"COLE","gender":"M","culture":"EN"},{"name":"DENNY","gender":"M","culture":"EN"},{"name":"DAVIS","gender":"M","culture":"EN"},{"name":"GAVIN","gender":"M","culture":"EN"},{"name":"EMERY","gender":"M","culture":"EN"},{"name":"WARD","gender":"M","culture":"EN"},{"name":"ROMEO","gender":"M","culture":"EN"},{"name":"JAYSON","gender":"M","culture":"EN"},{"name":"DION","gender":"M","culture":"EN"},{"name":"DANTE","gender":"M","culture":"EN"},{"name":"CLEMENT","gender":"M","culture":"EN"},{"name":"COY","gender":"M","culture":"EN"},{"name":"ODELL","gender":"M","culture":"EN"},{"name":"MAXWELL","gender":"M","culture":"EN"},{"name":"JARVIS","gender":"M","culture":"EN"},{"name":"BRUNO","gender":"M","culture":"EN"},{"name":"ISSAC","gender":"M","culture":"EN"},{"name":"MARY","gender":"M","culture":"EN"},{"name":"DUDLEY","gender":"M","culture":"EN"},{"name":"BROCK","gender":"M","culture":"EN"},{"name":"SANFORD","gender":"M","culture":"EN"},{"name":"COLBY","gender":"M","culture":"EN"},{"name":"CARMELO","gender":"M","culture":"EN"},{"name":"BARNEY","gender":"M","culture":"EN"},{"name":"NESTOR","gender":"M","culture":"EN"},{"name":"HOLLIS","gender":"M","culture":"EN"},{"name":"STEFAN","gender":"M","culture":"EN"},{"name":"DONNY","gender":"M","culture":"EN"},{"name":"ART","gender":"M","culture":"EN"},{"name":"LINWOOD","gender":"M","culture":"EN"},{"name":"BEAU","gender":"M","culture":"EN"},{"name":"WELDON","gender":"M","culture":"EN"},{"name":"GALEN","gender":"M","culture":"EN"},{"name":"ISIDRO","gender":"M","culture":"EN"},{"name":"TRUMAN","gender":"M","culture":"EN"},{"name":"DELMAR","gender":"M","culture":"EN"},{"name":"JOHNATHON","gender":"M","culture":"EN"},{"name":"SILAS","gender":"M","culture":"EN"},{"name":"FREDERIC","gender":"M","culture":"EN"},{"name":"DICK","gender":"M","culture":"EN"},{"name":"KIRBY","gender":"M","culture":"EN"},{"name":"IRWIN","gender":"M","culture":"EN"},{"name":"CRUZ","gender":"M","culture":"EN"},{"name":"MERLIN","gender":"M","culture":"EN"},{"name":"MERRILL","gender":"M","culture":"EN"},{"name":"CHARLEY","gender":"M","culture":"EN"},{"name":"MARCELINO","gender":"M","culture":"EN"},{"name":"LANE","gender":"M","culture":"EN"},{"name":"HARRIS","gender":"M","culture":"EN"},{"name":"CLEO","gender":"M","culture":"EN"},{"name":"CARLO","gender":"M","culture":"EN"},{"name":"TRENTON","gender":"M","culture":"EN"},{"name":"KURTIS","gender":"M","culture":"EN"},{"name":"HUNTER","gender":"M","culture":"EN"},{"name":"AURELIO","gender":"M","culture":"EN"},{"name":"WINFRED","gender":"M","culture":"EN"},{"name":"VITO","gender":"M","culture":"EN"},{"name":"COLLIN","gender":"M","culture":"EN"},{"name":"DENVER","gender":"M","culture":"EN"},{"name":"CARTER","gender":"M","culture":"EN"},{"name":"LEONEL","gender":"M","culture":"EN"},{"name":"EMORY","gender":"M","culture":"EN"},{"name":"PASQUALE","gender":"M","culture":"EN"},{"name":"MOHAMMAD","gender":"M","culture":"EN"},{"name":"MARIANO","gender":"M","culture":"EN"},{"name":"DANIAL","gender":"M","culture":"EN"},{"name":"BLAIR","gender":"M","culture":"EN"},{"name":"LANDON","gender":"M","culture":"EN"},{"name":"DIRK","gender":"M","culture":"EN"},{"name":"BRANDEN","gender":"M","culture":"EN"},{"name":"ADAN","gender":"M","culture":"EN"},{"name":"NUMBERS","gender":"M","culture":"EN"},{"name":"CLAIR","gender":"M","culture":"EN"},{"name":"BUFORD","gender":"M","culture":"EN"},{"name":"GERMAN","gender":"M","culture":"EN"},{"name":"BERNIE","gender":"M","culture":"EN"},{"name":"WILMER","gender":"M","culture":"EN"},{"name":"JOAN","gender":"M","culture":"EN"},{"name":"EMERSON","gender":"M","culture":"EN"},{"name":"ZACHERY","gender":"M","culture":"EN"},{"name":"FLETCHER","gender":"M","culture":"EN"},{"name":"JACQUES","gender":"M","culture":"EN"},{"name":"ERROL","gender":"M","culture":"EN"},{"name":"DALTON","gender":"M","culture":"EN"},{"name":"MONROE","gender":"M","culture":"EN"},{"name":"JOSUE","gender":"M","culture":"EN"},{"name":"DOMINIQUE","gender":"M","culture":"EN"},{"name":"EDWARDO","gender":"M","culture":"EN"},{"name":"BOOKER","gender":"M","culture":"EN"},{"name":"WILFORD","gender":"M","culture":"EN"},{"name":"SONNY","gender":"M","culture":"EN"},{"name":"SHELTON","gender":"M","culture":"EN"},{"name":"CARSON","gender":"M","culture":"EN"},{"name":"THERON","gender":"M","culture":"EN"},{"name":"RAYMUNDO","gender":"M","culture":"EN"},{"name":"DAREN","gender":"M","culture":"EN"},{"name":"TRISTAN","gender":"M","culture":"EN"},{"name":"HOUSTON","gender":"M","culture":"EN"},{"name":"ROBBY","gender":"M","culture":"EN"},{"name":"LINCOLN","gender":"M","culture":"EN"},{"name":"JAME","gender":"M","culture":"EN"},{"name":"GENARO","gender":"M","culture":"EN"},{"name":"GALE","gender":"M","culture":"EN"},{"name":"BENNETT","gender":"M","culture":"EN"},{"name":"OCTAVIO","gender":"M","culture":"EN"},{"name":"CORNELL","gender":"M","culture":"EN"},{"name":"LAVERNE","gender":"M","culture":"EN"},{"name":"HUNG","gender":"M","culture":"EN"},{"name":"ARRON","gender":"M","culture":"EN"},{"name":"ANTONY","gender":"M","culture":"EN"},{"name":"HERSCHEL","gender":"M","culture":"EN"},{"name":"ALVA","gender":"M","culture":"EN"},{"name":"GIOVANNI","gender":"M","culture":"EN"},{"name":"GARTH","gender":"M","culture":"EN"},{"name":"CYRUS","gender":"M","culture":"EN"},{"name":"CYRIL","gender":"M","culture":"EN"},{"name":"RONNY","gender":"M","culture":"EN"},{"name":"STEVIE","gender":"M","culture":"EN"},{"name":"LON","gender":"M","culture":"EN"},{"name":"FREEMAN","gender":"M","culture":"EN"},{"name":"ERIN","gender":"M","culture":"EN"},{"name":"DUNCAN","gender":"M","culture":"EN"},{"name":"KENNITH","gender":"M","culture":"EN"},{"name":"CARMINE","gender":"M","culture":"EN"},{"name":"AUGUSTINE","gender":"M","culture":"EN"},{"name":"YOUNG","gender":"M","culture":"EN"},{"name":"ERICH","gender":"M","culture":"EN"},{"name":"CHADWICK","gender":"M","culture":"EN"},{"name":"WILBURN","gender":"M","culture":"EN"},{"name":"RUSS","gender":"M","culture":"EN"},{"name":"REID","gender":"M","culture":"EN"},{"name":"MYLES","gender":"M","culture":"EN"},{"name":"ANDERSON","gender":"M","culture":"EN"},{"name":"MORTON","gender":"M","culture":"EN"},{"name":"JONAS","gender":"M","culture":"EN"},{"name":"FOREST","gender":"M","culture":"EN"},{"name":"MITCHEL","gender":"M","culture":"EN"},{"name":"MERVIN","gender":"M","culture":"EN"},{"name":"ZANE","gender":"M","culture":"EN"},{"name":"RICH","gender":"M","culture":"EN"},{"name":"JAMEL","gender":"M","culture":"EN"},{"name":"LAZARO","gender":"M","culture":"EN"},{"name":"ALPHONSE","gender":"M","culture":"EN"},{"name":"RANDELL","gender":"M","culture":"EN"},{"name":"MAJOR","gender":"M","culture":"EN"},{"name":"JOHNIE","gender":"M","culture":"EN"},{"name":"JARRETT","gender":"M","culture":"EN"},{"name":"BROOKS","gender":"M","culture":"EN"},{"name":"ARIEL","gender":"M","culture":"EN"},{"name":"ABDUL","gender":"M","culture":"EN"},{"name":"DUSTY","gender":"M","culture":"EN"},{"name":"LUCIANO","gender":"M","culture":"EN"},{"name":"LINDSEY","gender":"M","culture":"EN"},{"name":"TRACEY","gender":"M","culture":"EN"},{"name":"SEYMOUR","gender":"M","culture":"EN"},{"name":"SCOTTIE","gender":"M","culture":"EN"},{"name":"EUGENIO","gender":"M","culture":"EN"},{"name":"MOHAMMED","gender":"M","culture":"EN"},{"name":"SANDY","gender":"M","culture":"EN"},{"name":"VALENTIN","gender":"M","culture":"EN"},{"name":"CHANCE","gender":"M","culture":"EN"},{"name":"ARNULFO","gender":"M","culture":"EN"},{"name":"LUCIEN","gender":"M","culture":"EN"},{"name":"FERDINAND","gender":"M","culture":"EN"},{"name":"THAD","gender":"M","culture":"EN"},{"name":"EZRA","gender":"M","culture":"EN"},{"name":"SYDNEY","gender":"M","culture":"EN"},{"name":"ALDO","gender":"M","culture":"EN"},{"name":"RUBIN","gender":"M","culture":"EN"},{"name":"ROYAL","gender":"M","culture":"EN"},{"name":"MITCH","gender":"M","culture":"EN"},{"name":"EARLE","gender":"M","culture":"EN"},{"name":"ABE","gender":"M","culture":"EN"},{"name":"WYATT","gender":"M","culture":"EN"},{"name":"MARQUIS","gender":"M","culture":"EN"},{"name":"LANNY","gender":"M","culture":"EN"},{"name":"KAREEM","gender":"M","culture":"EN"},{"name":"JAMAR","gender":"M","culture":"EN"},{"name":"BORIS","gender":"M","culture":"EN"},{"name":"ISIAH","gender":"M","culture":"EN"},{"name":"EMILE","gender":"M","culture":"EN"},{"name":"ELMO","gender":"M","culture":"EN"},{"name":"ARON","gender":"M","culture":"EN"},{"name":"LEOPOLDO","gender":"M","culture":"EN"},{"name":"EVERETTE","gender":"M","culture":"EN"},{"name":"JOSEF","gender":"M","culture":"EN"},{"name":"GAIL","gender":"M","culture":"EN"},{"name":"ELOY","gender":"M","culture":"EN"},{"name":"DORIAN","gender":"M","culture":"EN"},{"name":"RODRICK","gender":"M","culture":"EN"},{"name":"REINALDO","gender":"M","culture":"EN"},{"name":"LUCIO","gender":"M","culture":"EN"},{"name":"JERROD","gender":"M","culture":"EN"},{"name":"WESTON","gender":"M","culture":"EN"},{"name":"HERSHEL","gender":"M","culture":"EN"},{"name":"BARTON","gender":"M","culture":"EN"},{"name":"PARKER","gender":"M","culture":"EN"},{"name":"LEMUEL","gender":"M","culture":"EN"},{"name":"LAVERN","gender":"M","culture":"EN"},{"name":"BURT","gender":"M","culture":"EN"},{"name":"JULES","gender":"M","culture":"EN"},{"name":"GIL","gender":"M","culture":"EN"},{"name":"ELISEO","gender":"M","culture":"EN"},{"name":"AHMAD","gender":"M","culture":"EN"},{"name":"NIGEL","gender":"M","culture":"EN"},{"name":"EFREN","gender":"M","culture":"EN"},{"name":"ANTWAN","gender":"M","culture":"EN"},{"name":"ALDEN","gender":"M","culture":"EN"},{"name":"MARGARITO","gender":"M","culture":"EN"},{"name":"COLEMAN","gender":"M","culture":"EN"},{"name":"REFUGIO","gender":"M","culture":"EN"},{"name":"DINO","gender":"M","culture":"EN"},{"name":"OSVALDO","gender":"M","culture":"EN"},{"name":"LES","gender":"M","culture":"EN"},{"name":"DEANDRE","gender":"M","culture":"EN"},{"name":"NORMAND","gender":"M","culture":"EN"},{"name":"KIETH","gender":"M","culture":"EN"},{"name":"IVORY","gender":"M","culture":"EN"},{"name":"ANDREA","gender":"M","culture":"EN"},{"name":"TREY","gender":"M","culture":"EN"},{"name":"NORBERTO","gender":"M","culture":"EN"},{"name":"NAPOLEON","gender":"M","culture":"EN"},{"name":"JEROLD","gender":"M","culture":"EN"},{"name":"FRITZ","gender":"M","culture":"EN"},{"name":"ROSENDO","gender":"M","culture":"EN"},{"name":"MILFORD","gender":"M","culture":"EN"},{"name":"SANG","gender":"M","culture":"EN"},{"name":"DEON","gender":"M","culture":"EN"},{"name":"CHRISTOPER","gender":"M","culture":"EN"},{"name":"ALFONZO","gender":"M","culture":"EN"},{"name":"LYMAN","gender":"M","culture":"EN"},{"name":"JOSIAH","gender":"M","culture":"EN"},{"name":"BRANT","gender":"M","culture":"EN"},{"name":"WILTON","gender":"M","culture":"EN"},{"name":"RICO","gender":"M","culture":"EN"},{"name":"JAMAAL","gender":"M","culture":"EN"},{"name":"DEWITT","gender":"M","culture":"EN"},{"name":"CAROL","gender":"M","culture":"EN"},{"name":"BRENTON","gender":"M","culture":"EN"},{"name":"YONG","gender":"M","culture":"EN"},{"name":"OLIN","gender":"M","culture":"EN"},{"name":"FOSTER","gender":"M","culture":"EN"},{"name":"FAUSTINO","gender":"M","culture":"EN"},{"name":"CLAUDIO","gender":"M","culture":"EN"},{"name":"JUDSON","gender":"M","culture":"EN"},{"name":"GINO","gender":"M","culture":"EN"},{"name":"EDGARDO","gender":"M","culture":"EN"},{"name":"BERRY","gender":"M","culture":"EN"},{"name":"ALEC","gender":"M","culture":"EN"},{"name":"TANNER","gender":"M","culture":"EN"},{"name":"JARRED","gender":"M","culture":"EN"},{"name":"DONN","gender":"M","culture":"EN"},{"name":"TRINIDAD","gender":"M","culture":"EN"},{"name":"TAD","gender":"M","culture":"EN"},{"name":"SHIRLEY","gender":"M","culture":"EN"},{"name":"PRINCE","gender":"M","culture":"EN"},{"name":"PORFIRIO","gender":"M","culture":"EN"},{"name":"ODIS","gender":"M","culture":"EN"},{"name":"MARIA","gender":"M","culture":"EN"},{"name":"LENARD","gender":"M","culture":"EN"},{"name":"CHAUNCEY","gender":"M","culture":"EN"},{"name":"CHANG","gender":"M","culture":"EN"},{"name":"TOD","gender":"M","culture":"EN"},{"name":"MEL","gender":"M","culture":"EN"},{"name":"MARCELO","gender":"M","culture":"EN"},{"name":"KORY","gender":"M","culture":"EN"},{"name":"AUGUSTUS","gender":"M","culture":"EN"},{"name":"KEVEN","gender":"M","culture":"EN"},{"name":"HILARIO","gender":"M","culture":"EN"},{"name":"BUD","gender":"M","culture":"EN"},{"name":"SAL","gender":"M","culture":"EN"},{"name":"ROSARIO","gender":"M","culture":"EN"},{"name":"ORVAL","gender":"M","culture":"EN"},{"name":"MAURO","gender":"M","culture":"EN"},{"name":"DANNIE","gender":"M","culture":"EN"},{"name":"ZACHARIAH","gender":"M","culture":"EN"},{"name":"OLEN","gender":"M","culture":"EN"},{"name":"ANIBAL","gender":"M","culture":"EN"},{"name":"MILO","gender":"M","culture":"EN"},{"name":"JED","gender":"M","culture":"EN"},{"name":"FRANCES","gender":"M","culture":"EN"},{"name":"THANH","gender":"M","culture":"EN"},{"name":"DILLON","gender":"M","culture":"EN"},{"name":"AMADO","gender":"M","culture":"EN"},{"name":"NEWTON","gender":"M","culture":"EN"},{"name":"CONNIE","gender":"M","culture":"EN"},{"name":"LENNY","gender":"M","culture":"EN"},{"name":"TORY","gender":"M","culture":"EN"},{"name":"RICHIE","gender":"M","culture":"EN"},{"name":"LUPE","gender":"M","culture":"EN"},{"name":"HORACIO","gender":"M","culture":"EN"},{"name":"BRICE","gender":"M","culture":"EN"},{"name":"MOHAMED","gender":"M","culture":"EN"},{"name":"DELMER","gender":"M","culture":"EN"},{"name":"DARIO","gender":"M","culture":"EN"},{"name":"REYES","gender":"M","culture":"EN"},{"name":"DEE","gender":"M","culture":"EN"},{"name":"MAC","gender":"M","culture":"EN"},{"name":"JONAH","gender":"M","culture":"EN"},{"name":"JERROLD","gender":"M","culture":"EN"},{"name":"ROBT","gender":"M","culture":"EN"},{"name":"HANK","gender":"M","culture":"EN"},{"name":"SUNG","gender":"M","culture":"EN"},{"name":"RUPERT","gender":"M","culture":"EN"},{"name":"ROLLAND","gender":"M","culture":"EN"},{"name":"KENTON","gender":"M","culture":"EN"},{"name":"DAMION","gender":"M","culture":"EN"},{"name":"CHI","gender":"M","culture":"EN"},{"name":"ANTONE","gender":"M","culture":"EN"},{"name":"WALDO","gender":"M","culture":"EN"},{"name":"FREDRIC","gender":"M","culture":"EN"},{"name":"BRADLY","gender":"M","culture":"EN"},{"name":"QUINN","gender":"M","culture":"EN"},{"name":"KIP","gender":"M","culture":"EN"},{"name":"BURL","gender":"M","culture":"EN"},{"name":"WALKER","gender":"M","culture":"EN"},{"name":"TYREE","gender":"M","culture":"EN"},{"name":"JEFFEREY","gender":"M","culture":"EN"},{"name":"AHMED","gender":"M","culture":"EN"},{"name":"WILLY","gender":"M","culture":"EN"},{"name":"STANFORD","gender":"M","culture":"EN"},{"name":"OREN","gender":"M","culture":"EN"},{"name":"NOBLE","gender":"M","culture":"EN"},{"name":"MOSHE","gender":"M","culture":"EN"},{"name":"MIKEL","gender":"M","culture":"EN"},{"name":"ENOCH","gender":"M","culture":"EN"},{"name":"BRENDON","gender":"M","culture":"EN"},{"name":"QUINTIN","gender":"M","culture":"EN"},{"name":"JAMISON","gender":"M","culture":"EN"},{"name":"FLORENCIO","gender":"M","culture":"EN"},{"name":"DARRICK","gender":"M","culture":"EN"},{"name":"TOBIAS","gender":"M","culture":"EN"},{"name":"MINH","gender":"M","culture":"EN"},{"name":"HASSAN","gender":"M","culture":"EN"},{"name":"GIUSEPPE","gender":"M","culture":"EN"},{"name":"DEMARCUS","gender":"M","culture":"EN"},{"name":"CLETUS","gender":"M","culture":"EN"},{"name":"TYRELL","gender":"M","culture":"EN"},{"name":"LYNDON","gender":"M","culture":"EN"},{"name":"KEENAN","gender":"M","culture":"EN"},{"name":"WERNER","gender":"M","culture":"EN"},{"name":"THEO","gender":"M","culture":"EN"},{"name":"GERALDO","gender":"M","culture":"EN"},{"name":"LOU","gender":"M","culture":"EN"},{"name":"COLUMBUS","gender":"M","culture":"EN"},{"name":"CHET","gender":"M","culture":"EN"},{"name":"BERTRAM","gender":"M","culture":"EN"},{"name":"MARKUS","gender":"M","culture":"EN"},{"name":"HUEY","gender":"M","culture":"EN"},{"name":"HILTON","gender":"M","culture":"EN"},{"name":"DWAIN","gender":"M","culture":"EN"},{"name":"DONTE","gender":"M","culture":"EN"},{"name":"TYRON","gender":"M","culture":"EN"},{"name":"OMER","gender":"M","culture":"EN"},{"name":"ISAIAS","gender":"M","culture":"EN"},{"name":"HIPOLITO","gender":"M","culture":"EN"},{"name":"FERMIN","gender":"M","culture":"EN"},{"name":"CHUNG","gender":"M","culture":"EN"},{"name":"ADALBERTO","gender":"M","culture":"EN"},{"name":"VALENTINE","gender":"M","culture":"EN"},{"name":"JAMEY","gender":"M","culture":"EN"},{"name":"BO","gender":"M","culture":"EN"},{"name":"BARRETT","gender":"M","culture":"EN"},{"name":"WHITNEY","gender":"M","culture":"EN"},{"name":"TEODORO","gender":"M","culture":"EN"},{"name":"MCKINLEY","gender":"M","culture":"EN"},{"name":"MAXIMO","gender":"M","culture":"EN"},{"name":"GARFIELD","gender":"M","culture":"EN"},{"name":"SOL","gender":"M","culture":"EN"},{"name":"RALEIGH","gender":"M","culture":"EN"},{"name":"LAWERENCE","gender":"M","culture":"EN"},{"name":"ABRAM","gender":"M","culture":"EN"},{"name":"RASHAD","gender":"M","culture":"EN"},{"name":"KING","gender":"M","culture":"EN"},{"name":"EMMITT","gender":"M","culture":"EN"},{"name":"DARON","gender":"M","culture":"EN"},{"name":"CHONG","gender":"M","culture":"EN"},{"name":"SAMUAL","gender":"M","culture":"EN"},{"name":"PARIS","gender":"M","culture":"EN"},{"name":"OTHA","gender":"M","culture":"EN"},{"name":"MIQUEL","gender":"M","culture":"EN"},{"name":"LACY","gender":"M","culture":"EN"},{"name":"EUSEBIO","gender":"M","culture":"EN"},{"name":"DONG","gender":"M","culture":"EN"},{"name":"DOMENIC","gender":"M","culture":"EN"},{"name":"DARRON","gender":"M","culture":"EN"},{"name":"BUSTER","gender":"M","culture":"EN"},{"name":"ANTONIA","gender":"M","culture":"EN"},{"name":"WILBER","gender":"M","culture":"EN"},{"name":"RENATO","gender":"M","culture":"EN"},{"name":"JC","gender":"M","culture":"EN"},{"name":"HOYT","gender":"M","culture":"EN"},{"name":"HAYWOOD","gender":"M","culture":"EN"},{"name":"EZEKIEL","gender":"M","culture":"EN"},{"name":"CHAS","gender":"M","culture":"EN"},{"name":"FLORENTINO","gender":"M","culture":"EN"},{"name":"ELROY","gender":"M","culture":"EN"},{"name":"CLEMENTE","gender":"M","culture":"EN"},{"name":"ARDEN","gender":"M","culture":"EN"},{"name":"NEVILLE","gender":"M","culture":"EN"},{"name":"KELLEY","gender":"M","culture":"EN"},{"name":"EDISON","gender":"M","culture":"EN"},{"name":"DESHAWN","gender":"M","culture":"EN"},{"name":"CARROL","gender":"M","culture":"EN"},{"name":"SHAYNE","gender":"M","culture":"EN"},{"name":"NATHANIAL","gender":"M","culture":"EN"},{"name":"JORDON","gender":"M","culture":"EN"},{"name":"DANILO","gender":"M","culture":"EN"},{"name":"CLAUD","gender":"M","culture":"EN"},{"name":"VAL","gender":"M","culture":"EN"},{"name":"SHERWOOD","gender":"M","culture":"EN"},{"name":"RAYMON","gender":"M","culture":"EN"},{"name":"RAYFORD","gender":"M","culture":"EN"},{"name":"CRISTOBAL","gender":"M","culture":"EN"},{"name":"AMBROSE","gender":"M","culture":"EN"},{"name":"TITUS","gender":"M","culture":"EN"},{"name":"HYMAN","gender":"M","culture":"EN"},{"name":"FELTON","gender":"M","culture":"EN"},{"name":"EZEQUIEL","gender":"M","culture":"EN"},{"name":"ERASMO","gender":"M","culture":"EN"},{"name":"STANTON","gender":"M","culture":"EN"},{"name":"LONNY","gender":"M","culture":"EN"},{"name":"LEN","gender":"M","culture":"EN"},{"name":"IKE","gender":"M","culture":"EN"},{"name":"MILAN","gender":"M","culture":"EN"},{"name":"LINO","gender":"M","culture":"EN"},{"name":"JAROD","gender":"M","culture":"EN"},{"name":"HERB","gender":"M","culture":"EN"},{"name":"ANDREAS","gender":"M","culture":"EN"},{"name":"WALTON","gender":"M","culture":"EN"},{"name":"RHETT","gender":"M","culture":"EN"},{"name":"PALMER","gender":"M","culture":"EN"},{"name":"JUDE","gender":"M","culture":"EN"},{"name":"DOUGLASS","gender":"M","culture":"EN"},{"name":"CORDELL","gender":"M","culture":"EN"},{"name":"OSWALDO","gender":"M","culture":"EN"},{"name":"ELLSWORTH","gender":"M","culture":"EN"},{"name":"VIRGILIO","gender":"M","culture":"EN"},{"name":"TONEY","gender":"M","culture":"EN"},{"name":"NATHANAEL","gender":"M","culture":"EN"},{"name":"DEL","gender":"M","culture":"EN"},{"name":"BRITT","gender":"M","culture":"EN"},{"name":"BENEDICT","gender":"M","culture":"EN"},{"name":"MOSE","gender":"M","culture":"EN"},{"name":"HONG","gender":"M","culture":"EN"},{"name":"LEIGH","gender":"M","culture":"EN"},{"name":"JOHNSON","gender":"M","culture":"EN"},{"name":"ISREAL","gender":"M","culture":"EN"},{"name":"GAYLE","gender":"M","culture":"EN"},{"name":"GARRET","gender":"M","culture":"EN"},{"name":"FAUSTO","gender":"M","culture":"EN"},{"name":"ASA","gender":"M","culture":"EN"},{"name":"ARLEN","gender":"M","culture":"EN"},{"name":"ZACK","gender":"M","culture":"EN"},{"name":"WARNER","gender":"M","culture":"EN"},{"name":"MODESTO","gender":"M","culture":"EN"},{"name":"FRANCESCO","gender":"M","culture":"EN"},{"name":"MANUAL","gender":"M","culture":"EN"},{"name":"JAE","gender":"M","culture":"EN"},{"name":"GAYLORD","gender":"M","culture":"EN"},{"name":"GASTON","gender":"M","culture":"EN"},{"name":"FILIBERTO","gender":"M","culture":"EN"},{"name":"DEANGELO","gender":"M","culture":"EN"},{"name":"MICHALE","gender":"M","culture":"EN"},{"name":"GRANVILLE","gender":"M","culture":"EN"},{"name":"WES","gender":"M","culture":"EN"},{"name":"MALIK","gender":"M","culture":"EN"},{"name":"ZACKARY","gender":"M","culture":"EN"},{"name":"TUAN","gender":"M","culture":"EN"},{"name":"NICKY","gender":"M","culture":"EN"},{"name":"ELDRIDGE","gender":"M","culture":"EN"},{"name":"CRISTOPHER","gender":"M","culture":"EN"},{"name":"CORTEZ","gender":"M","culture":"EN"},{"name":"ANTIONE","gender":"M","culture":"EN"},{"name":"MALCOM","gender":"M","culture":"EN"},{"name":"LONG","gender":"M","culture":"EN"},{"name":"KOREY","gender":"M","culture":"EN"},{"name":"JOSPEH","gender":"M","culture":"EN"},{"name":"COLTON","gender":"M","culture":"EN"},{"name":"WAYLON","gender":"M","culture":"EN"},{"name":"VON","gender":"M","culture":"EN"},{"name":"HOSEA","gender":"M","culture":"EN"},{"name":"SHAD","gender":"M","culture":"EN"},{"name":"SANTO","gender":"M","culture":"EN"},{"name":"RUDOLF","gender":"M","culture":"EN"},{"name":"ROLF","gender":"M","culture":"EN"},{"name":"REY","gender":"M","culture":"EN"},{"name":"RENALDO","gender":"M","culture":"EN"},{"name":"MARCELLUS","gender":"M","culture":"EN"},{"name":"LUCIUS","gender":"M","culture":"EN"},{"name":"LESLEY","gender":"M","culture":"EN"},{"name":"KRISTOFER","gender":"M","culture":"EN"},{"name":"BOYCE","gender":"M","culture":"EN"},{"name":"BENTON","gender":"M","culture":"EN"},{"name":"MAN","gender":"M","culture":"EN"},{"name":"KASEY","gender":"M","culture":"EN"},{"name":"JEWELL","gender":"M","culture":"EN"},{"name":"HAYDEN","gender":"M","culture":"EN"},{"name":"HARLAND","gender":"M","culture":"EN"},{"name":"ARNOLDO","gender":"M","culture":"EN"},{"name":"RUEBEN","gender":"M","culture":"EN"},{"name":"LEANDRO","gender":"M","culture":"EN"},{"name":"KRAIG","gender":"M","culture":"EN"},{"name":"JERRELL","gender":"M","culture":"EN"},{"name":"JEROMY","gender":"M","culture":"EN"},{"name":"HOBERT","gender":"M","culture":"EN"},{"name":"CEDRICK","gender":"M","culture":"EN"},{"name":"ARLIE","gender":"M","culture":"EN"},{"name":"WINFORD","gender":"M","culture":"EN"},{"name":"WALLY","gender":"M","culture":"EN"},{"name":"PATRICIA","gender":"M","culture":"EN"},{"name":"LUIGI","gender":"M","culture":"EN"},{"name":"KENETH","gender":"M","culture":"EN"},{"name":"JACINTO","gender":"M","culture":"EN"},{"name":"GRAIG","gender":"M","culture":"EN"},{"name":"FRANKLYN","gender":"M","culture":"EN"},{"name":"EDMUNDO","gender":"M","culture":"EN"},{"name":"SID","gender":"M","culture":"EN"},{"name":"PORTER","gender":"M","culture":"EN"},{"name":"LEIF","gender":"M","culture":"EN"},{"name":"LAUREN","gender":"M","culture":"EN"},{"name":"JERAMY","gender":"M","culture":"EN"},{"name":"ELISHA","gender":"M","culture":"EN"},{"name":"BUCK","gender":"M","culture":"EN"},{"name":"WILLIAN","gender":"M","culture":"EN"},{"name":"VINCENZO","gender":"M","culture":"EN"},{"name":"SHON","gender":"M","culture":"EN"},{"name":"MICHAL","gender":"M","culture":"EN"},{"name":"LYNWOOD","gender":"M","culture":"EN"},{"name":"LINDSAY","gender":"M","culture":"EN"},{"name":"JEWEL","gender":"M","culture":"EN"},{"name":"JERE","gender":"M","culture":"EN"},{"name":"HAI","gender":"M","culture":"EN"},{"name":"ELDEN","gender":"M","culture":"EN"},{"name":"DORSEY","gender":"M","culture":"EN"},{"name":"DARELL","gender":"M","culture":"EN"},{"name":"BRODERICK","gender":"M","culture":"EN"},{"name":"ALONSO","gender":"M","culture":"EN"}] -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Lobster Challenge 2 | 3 | ![Charles and his lobster](lobster.jpg "Charles and his lobster") 4 | 5 | Charles has a lobster, but the poor creature does not yet have a name. 6 | Let's use a simple Plutus Smart Contract on Cardano to help Charles find a name for his lobster! 7 | 8 | We start with a [list of names](names.md) and a "secret random" number, which we will only reveal in the end. 9 | Then we need the Community's help! We need 500 Community members who are willing to help name the lobster by 10 | creating transactions which will add their own "random" number (from 1 to 100) to the current total. 11 | 12 | In the end, we will reveal our own "secret random" number, add it to the total provided by the Community, 13 | and use the result (after taking the remainder after division by the number of available names) as an index 14 | into the list of names to pick the lobster name. 15 | 16 | ## Native Tokens 17 | 18 | We use three distinct native tokens to help us name the lobster: 19 | 20 | | Policy | Policy Id | Token Name | Purpose | 21 | | ------------------------------------------ | ---------------------------------------------------------- | ---------------- | ----------------------------------- | 22 | | [script](scripts/nft-mint-policy.plutus) | `cc7888851f0f5aa64c136e0c8fb251e9702f3f6c9efcf3a60a54f419` | `LobsterNFT` | Identifies the relevant UTxO. | 23 | | [script](scripts/other-mint-policy.plutus) | `fda1b6b487bee2e7f64ecf24d24b1224342484c0195ee1b7b943db50` | `LobsterCounter` | Stores the current "random" number. | 24 | | [script](scripts/other-mint-policy.plutus) | `fda1b6b487bee2e7f64ecf24d24b1224342484c0195ee1b7b943db50` | `LobsterVotes` | Counts the number of votes. | 25 | 26 | The first one, `LobsterNFT`, is an NFT and used to identified the "correct" UTxO "sitting" at the contract address. 27 | (Recall that _anybody_ can send _anything_ _anywhere_ at _anytime_, so we can't prevent people from creating other UTxO's at the script address. 28 | The UTxO we care about is the one holding the NFT.) 29 | 30 | The second one, `LobsterCounter`, stores the current "random" number. It starts at zero when the contract is deployed, 31 | and each "vote" can add a number of tokens between 1 and 100. 32 | Once 500 people have "voted", we add our own secret number, which we picked before deploying the contract and which is a parameter to the contract and hence encoded in the script address. Finally we take the rest of dividing the sum by the number of names in the list of possible names. 33 | This will be the final amount of `LobsterCounter` tokens "sitting" at the script address, and it will indicate the index of the chosen lobster name. 34 | 35 | The third token, `LobsterVotes`, is used to count the number of "votes". 36 | Each time a user interacts with the contract and increases the amount of `LobsterCounter` tokens by a "random" number, 37 | The amount of `LobsterVotes` tokens at the script UTxO will go up by one. 38 | Once 500 people have "voted", voting stops, and we will set the final result with a last transaction, 39 | which will bring the amount of `LobsterVotes` tokens to its ultimate value of 501. 40 | 41 | ## Script 42 | 43 | The validator for the naming contract is paramterized by six parameters: 44 | 45 | | Parameter | Value | Explanation ] 46 | | --------- | ---------------------------------- | ------------------------------- | 47 | | Seed | TO BE REVEALED | Our own "random" number. | 48 | | NFT | `LobsterNFT`token (see above) | Token identifying the UTxO. | 49 | | Counter | `LobsterCounter` token (see above) | Token tracking "random" number. | 50 | | Votes | `LobsterVotes` token (see above) | Token counting votes. | 51 | | Name Count | 1219 | Number of available names. | 52 | | Vote Count | 500 | Number of votes. | 53 | 54 | We will reveal the "seed", our own "random" contribution, in the end, 55 | when we finalize the contract. 56 | 57 | Using these parameter values, we get a [script](scripts/lobster.plutus) with script address `addr1w8433zk2shufk42hn4x7zznjjuqwwyfmxffcjszw5l2ulesdt3jff`. 58 | 59 | ## Example 60 | 61 | Let's look at an example and assume our own "secret random" number is 42. 62 | 63 | Voting might progress as follows: 64 | 65 | | `LobsterCounter` | `Lobster Votes` | Comment | 66 | | ----------------:| ---------------:| ------- | 67 | | 0 | 0 | In the beginning, there have been no votes, and the counter starts at zero. | 68 | | 13 | 1 | The first Community member votes and adds 13 to the counter. | 69 | | 113 | 2 | The second Community member adds 100. | 70 | | 114 | 3 | The third Community member adds 1. | 71 | | ... | ... | More Community members add their own numbers. | 72 | | 24782 | 500 | The last vote has been cast, which brought the counter to 24782. | 73 | | 444 | 501 | We add our own secret, 42, and get 24824. Dividing this by 1219, the number of names, gives a remainder of 444. | 74 | 75 | In this example, the lobster will get the name with index 444, which happens to be __Stewart__. 76 | 77 | ## Voting 78 | 79 | We will kick off the process by minting the `LobsterNFT` NFT and creating a UTxO at the script address, 80 | which contains the NFT, but neither `LobsterCounter` nor `LobsterVotes` tokens yet, 81 | because the counter starts at zero, and there have been no votes. 82 | 83 | To vote, you have to create a transaction that spends the UTxO at the script address holding the NFT 84 | and creates a new UTxO at the same address, which holds the same NFT, 85 | one more `LobsterVotes` tokens than before and 86 | a number between 1 and 100 more `LobsterCounter` tokens than before. 87 | 88 | This means that this transaction will have to mint `LobsterVotes` and `LobsterCounter` tokens, 89 | but that's fine: The minting policy of those tokens allows arbitrary minting. 90 | 91 | The Plutus script defining the script address will make sure that all constraints are satisfied: 92 | 93 | - The NFT has to be present in both the spent UTxO and the newly created one. 94 | - The amount of `LobsterVotes` tokens must be smaller than 500 in the beginning, and it must increase by one. 95 | - The amount of `LobsterCounter` tokens must go up by a number between 1 and 100. 96 | 97 | You can use this [Bash script](scripts/lobster-contribute.sh) to create, sign and submit a suitable transaction. 98 | This assumes that you have a node running, the command line interface `cardano-cli` available and that your node socket is called `node.socket`. 99 | The script expects seven arguments: 100 | 101 | - A UTxO with some funds to provide collateral and pay for transaction fees. 102 | - The current script UTxO. 103 | - The filename of a file containing your address - this is where the change will go. 104 | - The filename of the file containing your signing key. 105 | - The current amount of `LobsterCounter` tokens. 106 | - The new amount of `LobsterCounter` tokens (which must be 1-100 higher than the current amount). 107 | - The current amount of `LobsterVotes` tokens (which should be less than 500). 108 | 109 | I also recorded an [Explainer Video](https://youtu.be/6xEAnMaov3E). 110 | 111 | ## Finalization 112 | 113 | Once 500 votes have been cast, we will submit a final transaction to get the ultimate result and record it as the final amount of `LobsterCounter` tokens. 114 | As stated above, we will add our own secret random number to the total and take the remainder after division by the number of names in our list. 115 | We can't "cheat" at this step, because the Plutus contract has been paramterized by our number, and the contract will enforce that we calculate the final value correctly. 116 | 117 | ## Code 118 | 119 | You can look at the Plutus code [here](src/Cardano/PlutusLobster/LobsterScript.hs), 120 | where you will find the minting policies for the used native tokens and the validator enforcing the contract logic. 121 | 122 | You can build the code with `cabal build`. 123 | 124 | ## Result 125 | 126 | The 500 votes are in! The final counter after 500 votes was 22933. Adding our own "random" number, which was 582757474857012117487873, gives 582757474857012117510806. 127 | Taking the remainder after division by 1219, the number of potential names, gives __522__. 128 | Looking into the [list of names](names.md), we see that this index points to the name __Logan__. 129 | 130 | Charles' lobster finally has his name! 131 | -------------------------------------------------------------------------------- /app/plutus-lobster-names.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE OverloadedStrings #-} 2 | 3 | import Control.Monad (forM_) 4 | import Data.Aeson 5 | import Data.Aeson.Types (parse) 6 | import qualified Data.ByteString.Lazy as BSL 7 | import Data.Foldable (toList) 8 | import System.IO 9 | import Text.Printf (printf) 10 | 11 | import Paths_plutus_lobster (getDataFileName) 12 | 13 | main :: IO () 14 | main = do 15 | ns <- map getName <$> readNames 16 | withFile "names.md" WriteMode $ \h -> do 17 | hPutStrLn h "# List of Names" 18 | hPutStrLn h "| Index | Name |" 19 | hPutStrLn h "| -----:| ------------ |" 20 | 21 | forM_ (zip [(0 :: Int) ..] ns) $ 22 | hPutStr h . uncurry (printf "| %4d | %-12s |\n") 23 | 24 | readNames :: IO [Value] 25 | readNames = do 26 | f <- getDataFileName "ENGivenMale.json" 27 | bs <-BSL.readFile f 28 | case decode bs of 29 | Just (Array vs) -> return $ toList vs 30 | _ -> ioError $ userError "invalid JSON" 31 | 32 | getName :: Value -> String 33 | getName (Object obj) = case parse (.: "name") obj of 34 | Error e -> error e 35 | Success s -> s 36 | getName _ = error "object expected" 37 | -------------------------------------------------------------------------------- /app/plutus-lobster-tokens.hs: -------------------------------------------------------------------------------- 1 | import Cardano.Api hiding (TxId) 2 | import Data.String (IsString (..)) 3 | import Ledger 4 | import Ledger.Bytes (getLedgerBytes) 5 | import Prelude 6 | import System.Environment (getArgs) 7 | 8 | import Cardano.PlutusLobster.LobsterScript 9 | 10 | main :: IO () 11 | main = do 12 | [utxo'] <- getArgs 13 | let utxo = parseUTxO utxo' 14 | nftPolicyFile = "scripts/nft-mint-policy.plutus" 15 | otherPolicyFile = "scripts/other-mint-policy.plutus" 16 | 17 | nftPolicyResult <- writeFileTextEnvelope nftPolicyFile Nothing $ apiNFTMintScript utxo 18 | case nftPolicyResult of 19 | Left err -> print $ displayError err 20 | Right () -> putStrLn $ "wrote NFT policy to file " ++ nftPolicyFile 21 | 22 | otherPolicyResult <- writeFileTextEnvelope otherPolicyFile Nothing apiOtherMintScript 23 | case otherPolicyResult of 24 | Left err -> print $ displayError err 25 | Right () -> putStrLn $ "wrote other policy to file " ++ otherPolicyFile 26 | 27 | parseUTxO :: String -> TxOutRef 28 | parseUTxO s = 29 | let 30 | (x, y) = span (/= '#') s 31 | in 32 | TxOutRef (TxId $ getLedgerBytes $ fromString x) $ read $ tail y 33 | 34 | -------------------------------------------------------------------------------- /app/plutus-lobster.hs: -------------------------------------------------------------------------------- 1 | import Cardano.Api hiding (TxId) 2 | import Data.String (IsString (..)) 3 | import Ledger.Value (AssetClass (..)) 4 | import Prelude 5 | import System.Environment (getArgs) 6 | 7 | import Cardano.PlutusLobster.LobsterScript 8 | 9 | main :: IO () 10 | main = do 11 | [nftSymbol, otherSymbol, seed', nameCount', voteCount'] <- getArgs 12 | let seed = read seed' 13 | nft = AssetClass (fromString nftSymbol, nftTokenName) 14 | counter = AssetClass (fromString otherSymbol, counterTokenName) 15 | votes = AssetClass (fromString otherSymbol, votesTokenName) 16 | nameCount = read nameCount' 17 | voteCount = read voteCount' 18 | lp = LobsterParams 19 | { lpSeed = seed 20 | , lpNFT = nft 21 | , lpCounter = counter 22 | , lpVotes = votes 23 | , lpNameCount = nameCount 24 | , lpVoteCount = voteCount 25 | } 26 | lobsterFile = "scripts/lobster.plutus" 27 | print lp 28 | 29 | lobsterResult <- writeFileTextEnvelope lobsterFile Nothing $ apiLobsterScript lp 30 | case lobsterResult of 31 | Left err -> print $ displayError err 32 | Right () -> putStrLn $ "wrote lobster script to file " ++ lobsterFile 33 | -------------------------------------------------------------------------------- /cabal.project: -------------------------------------------------------------------------------- 1 | index-state: 2021-04-30T00:00:00Z 2 | 3 | packages: . 4 | 5 | package cryptonite 6 | -- Using RDRAND instead of /dev/urandom as an entropy source for key 7 | -- generation is dubious. Set the flag so we use /dev/urandom by default. 8 | flags: -support_rdrand 9 | 10 | package cardano-crypto-praos 11 | flags: -external-libsodium-vrf 12 | 13 | -- --------------------------------------------------------- 14 | -- Disable all tests by default 15 | 16 | tests: False 17 | 18 | test-show-details: direct 19 | 20 | source-repository-package 21 | type: git 22 | location: https://github.com/input-output-hk/cardano-node 23 | tag: f6293f3fafd7f494891baa584245c7ebc95d2d62 24 | subdir: 25 | cardano-api 26 | 27 | source-repository-package 28 | type: git 29 | location: https://github.com/input-output-hk/hedgehog-extras 30 | tag: edf6945007177a638fbeb8802397f3a6f4e47c14 31 | 32 | source-repository-package 33 | type: git 34 | location: https://github.com/input-output-hk/cardano-base 35 | tag: cb0f19c85e5bb5299839ad4ed66af6fa61322cc4 36 | subdir: 37 | base-deriving-via 38 | binary 39 | binary/test 40 | cardano-crypto-class 41 | cardano-crypto-praos 42 | cardano-crypto-tests 43 | measures 44 | orphans-deriving-via 45 | slotting 46 | strict-containers 47 | 48 | source-repository-package 49 | type: git 50 | location: https://github.com/input-output-hk/cardano-crypto 51 | tag: 07397f0e50da97eaa0575d93bee7ac4b2b2576ec 52 | 53 | source-repository-package 54 | type: git 55 | location: https://github.com/input-output-hk/cardano-ledger-specs 56 | tag: 12a0ef69d64a55e737fbf4e846bd8ed9fb30a956 57 | subdir: 58 | alonzo/impl 59 | byron/chain/executable-spec 60 | byron/crypto 61 | byron/crypto/test 62 | byron/ledger/executable-spec 63 | byron/ledger/impl 64 | byron/ledger/impl/test 65 | cardano-ledger-core 66 | semantics/executable-spec 67 | semantics/small-steps-test 68 | shelley/chain-and-ledger/dependencies/non-integer 69 | shelley/chain-and-ledger/executable-spec 70 | shelley/chain-and-ledger/shelley-spec-ledger-test 71 | shelley-ma/impl 72 | shelley-ma/shelley-ma-test 73 | 74 | source-repository-package 75 | type: git 76 | location: https://github.com/input-output-hk/cardano-prelude 77 | tag: fd773f7a58412131512b9f694ab95653ac430852 78 | subdir: 79 | cardano-prelude 80 | cardano-prelude-test 81 | 82 | source-repository-package 83 | type: git 84 | location: https://github.com/input-output-hk/goblins 85 | tag: cde90a2b27f79187ca8310b6549331e59595e7ba 86 | 87 | source-repository-package 88 | type: git 89 | location: https://github.com/input-output-hk/iohk-monitoring-framework 90 | tag: 808724ff8a19a33d0ed06f9ef59fbd900b08553c 91 | subdir: 92 | contra-tracer 93 | iohk-monitoring 94 | plugins/backend-aggregation 95 | plugins/backend-ekg 96 | plugins/backend-monitoring 97 | plugins/backend-trace-forwarder 98 | plugins/scribe-systemd 99 | tracer-transformers 100 | 101 | source-repository-package 102 | type: git 103 | location: https://github.com/input-output-hk/Win32-network 104 | tag: 3825d3abf75f83f406c1f7161883c438dac7277d 105 | 106 | source-repository-package 107 | type: git 108 | location: https://github.com/input-output-hk/ouroboros-network 109 | tag: f149c1c1e4e4bb5bab51fa055e9e3a7084ddc30e 110 | subdir: 111 | io-sim 112 | io-classes 113 | monoidal-synchronisation 114 | network-mux 115 | ouroboros-consensus 116 | ouroboros-consensus-byron 117 | ouroboros-consensus-cardano 118 | ouroboros-consensus-shelley 119 | ouroboros-network 120 | ouroboros-network-framework 121 | ouroboros-network-testing 122 | typed-protocols 123 | typed-protocols-examples 124 | 125 | source-repository-package 126 | type: git 127 | location: https://github.com/input-output-hk/plutus 128 | tag: 8c83c4abe211b4bbcaca3cdf1b2c0e38d0eb683f 129 | subdir: 130 | plutus-core 131 | plutus-ledger 132 | plutus-ledger-api 133 | plutus-tx 134 | plutus-tx-plugin 135 | prettyprinter-configurable 136 | word-array 137 | 138 | source-repository-package 139 | type: git 140 | location: https://github.com/michaelpj/flat.git 141 | tag: ee59880f47ab835dbd73bea0847dab7869fc20d8 142 | --sha256: 1lrzknw765pz2j97nvv9ip3l1mcpf2zr4n56hwlz0rk7wq7ls4cm 143 | 144 | constraints: 145 | hedgehog >= 1.0 146 | , bimap >= 0.4.0 147 | , libsystemd-journal >= 1.4.4 148 | , systemd >= 2.3.0 149 | -- systemd-2.3.0 requires at least network 3.1.1.0 but it doesn't declare 150 | -- that dependency 151 | , network >= 3.1.1.0 152 | 153 | package comonad 154 | flags: -test-doctests 155 | 156 | package cardano-ledger-alonzo-test 157 | tests: False 158 | 159 | allow-newer: 160 | size-based:template-haskell 161 | -------------------------------------------------------------------------------- /hie.yaml: -------------------------------------------------------------------------------- 1 | cradle: 2 | cabal: 3 | - path: "./src" 4 | component: "lib:plutus-lobster" 5 | - path: "./app/plutus-lobster.hs" 6 | component: "exe:plutus-lobster" 7 | - path: "./app/plutus-lobster-names.hs" 8 | component: "exe:plutus-lobster-names" 9 | - path: "./app/plutus-lobster-tokens.hs" 10 | component: "exe:plutus-lobster-tokens" 11 | -------------------------------------------------------------------------------- /lobster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/input-output-hk/lobster-challenge/9d349f94400460de99fb4fe4d7dbed3585a264be/lobster.jpg -------------------------------------------------------------------------------- /names.md: -------------------------------------------------------------------------------- 1 | # List of Names 2 | | Index | Name | 3 | | -----:| ------------ | 4 | | 0 | JAMES | 5 | | 1 | JOHN | 6 | | 2 | ROBERT | 7 | | 3 | MICHAEL | 8 | | 4 | WILLIAM | 9 | | 5 | DAVID | 10 | | 6 | RICHARD | 11 | | 7 | CHARLES | 12 | | 8 | JOSEPH | 13 | | 9 | THOMAS | 14 | | 10 | CHRISTOPHER | 15 | | 11 | DANIEL | 16 | | 12 | PAUL | 17 | | 13 | MARK | 18 | | 14 | DONALD | 19 | | 15 | GEORGE | 20 | | 16 | KENNETH | 21 | | 17 | STEVEN | 22 | | 18 | EDWARD | 23 | | 19 | BRIAN | 24 | | 20 | RONALD | 25 | | 21 | ANTHONY | 26 | | 22 | KEVIN | 27 | | 23 | JASON | 28 | | 24 | MATTHEW | 29 | | 25 | GARY | 30 | | 26 | TIMOTHY | 31 | | 27 | JOSE | 32 | | 28 | LARRY | 33 | | 29 | JEFFREY | 34 | | 30 | FRANK | 35 | | 31 | SCOTT | 36 | | 32 | ERIC | 37 | | 33 | STEPHEN | 38 | | 34 | ANDREW | 39 | | 35 | RAYMOND | 40 | | 36 | GREGORY | 41 | | 37 | JOSHUA | 42 | | 38 | JERRY | 43 | | 39 | DENNIS | 44 | | 40 | WALTER | 45 | | 41 | PATRICK | 46 | | 42 | PETER | 47 | | 43 | HAROLD | 48 | | 44 | DOUGLAS | 49 | | 45 | HENRY | 50 | | 46 | CARL | 51 | | 47 | ARTHUR | 52 | | 48 | RYAN | 53 | | 49 | ROGER | 54 | | 50 | JOE | 55 | | 51 | JUAN | 56 | | 52 | JACK | 57 | | 53 | ALBERT | 58 | | 54 | JONATHAN | 59 | | 55 | JUSTIN | 60 | | 56 | TERRY | 61 | | 57 | GERALD | 62 | | 58 | KEITH | 63 | | 59 | SAMUEL | 64 | | 60 | WILLIE | 65 | | 61 | RALPH | 66 | | 62 | LAWRENCE | 67 | | 63 | NICHOLAS | 68 | | 64 | ROY | 69 | | 65 | BENJAMIN | 70 | | 66 | BRUCE | 71 | | 67 | BRANDON | 72 | | 68 | ADAM | 73 | | 69 | HARRY | 74 | | 70 | FRED | 75 | | 71 | WAYNE | 76 | | 72 | BILLY | 77 | | 73 | STEVE | 78 | | 74 | LOUIS | 79 | | 75 | JEREMY | 80 | | 76 | AARON | 81 | | 77 | RANDY | 82 | | 78 | HOWARD | 83 | | 79 | EUGENE | 84 | | 80 | CARLOS | 85 | | 81 | RUSSELL | 86 | | 82 | BOBBY | 87 | | 83 | VICTOR | 88 | | 84 | MARTIN | 89 | | 85 | ERNEST | 90 | | 86 | PHILLIP | 91 | | 87 | TODD | 92 | | 88 | JESSE | 93 | | 89 | CRAIG | 94 | | 90 | ALAN | 95 | | 91 | SHAWN | 96 | | 92 | CLARENCE | 97 | | 93 | SEAN | 98 | | 94 | PHILIP | 99 | | 95 | CHRIS | 100 | | 96 | JOHNNY | 101 | | 97 | EARL | 102 | | 98 | JIMMY | 103 | | 99 | ANTONIO | 104 | | 100 | DANNY | 105 | | 101 | BRYAN | 106 | | 102 | TONY | 107 | | 103 | LUIS | 108 | | 104 | MIKE | 109 | | 105 | STANLEY | 110 | | 106 | LEONARD | 111 | | 107 | NATHAN | 112 | | 108 | DALE | 113 | | 109 | MANUEL | 114 | | 110 | RODNEY | 115 | | 111 | CURTIS | 116 | | 112 | NORMAN | 117 | | 113 | ALLEN | 118 | | 114 | MARVIN | 119 | | 115 | VINCENT | 120 | | 116 | GLENN | 121 | | 117 | JEFFERY | 122 | | 118 | TRAVIS | 123 | | 119 | JEFF | 124 | | 120 | CHAD | 125 | | 121 | JACOB | 126 | | 122 | LEE | 127 | | 123 | MELVIN | 128 | | 124 | ALFRED | 129 | | 125 | KYLE | 130 | | 126 | FRANCIS | 131 | | 127 | BRADLEY | 132 | | 128 | JESUS | 133 | | 129 | HERBERT | 134 | | 130 | FREDERICK | 135 | | 131 | RAY | 136 | | 132 | JOEL | 137 | | 133 | EDWIN | 138 | | 134 | DON | 139 | | 135 | EDDIE | 140 | | 136 | RICKY | 141 | | 137 | TROY | 142 | | 138 | RANDALL | 143 | | 139 | BARRY | 144 | | 140 | ALEXANDER | 145 | | 141 | BERNARD | 146 | | 142 | MARIO | 147 | | 143 | LEROY | 148 | | 144 | FRANCISCO | 149 | | 145 | MARCUS | 150 | | 146 | MICHEAL | 151 | | 147 | THEODORE | 152 | | 148 | CLIFFORD | 153 | | 149 | MIGUEL | 154 | | 150 | OSCAR | 155 | | 151 | JAY | 156 | | 152 | JIM | 157 | | 153 | TOM | 158 | | 154 | CALVIN | 159 | | 155 | ALEX | 160 | | 156 | JON | 161 | | 157 | RONNIE | 162 | | 158 | BILL | 163 | | 159 | LLOYD | 164 | | 160 | TOMMY | 165 | | 161 | LEON | 166 | | 162 | DEREK | 167 | | 163 | WARREN | 168 | | 164 | DARRELL | 169 | | 165 | JEROME | 170 | | 166 | FLOYD | 171 | | 167 | LEO | 172 | | 168 | ALVIN | 173 | | 169 | TIM | 174 | | 170 | WESLEY | 175 | | 171 | GORDON | 176 | | 172 | DEAN | 177 | | 173 | GREG | 178 | | 174 | JORGE | 179 | | 175 | DUSTIN | 180 | | 176 | PEDRO | 181 | | 177 | DERRICK | 182 | | 178 | DAN | 183 | | 179 | LEWIS | 184 | | 180 | ZACHARY | 185 | | 181 | COREY | 186 | | 182 | HERMAN | 187 | | 183 | MAURICE | 188 | | 184 | VERNON | 189 | | 185 | ROBERTO | 190 | | 186 | CLYDE | 191 | | 187 | GLEN | 192 | | 188 | HECTOR | 193 | | 189 | SHANE | 194 | | 190 | RICARDO | 195 | | 191 | SAM | 196 | | 192 | RICK | 197 | | 193 | LESTER | 198 | | 194 | BRENT | 199 | | 195 | RAMON | 200 | | 196 | CHARLIE | 201 | | 197 | TYLER | 202 | | 198 | GILBERT | 203 | | 199 | GENE | 204 | | 200 | MARC | 205 | | 201 | REGINALD | 206 | | 202 | RUBEN | 207 | | 203 | BRETT | 208 | | 204 | ANGEL | 209 | | 205 | NATHANIEL | 210 | | 206 | RAFAEL | 211 | | 207 | LESLIE | 212 | | 208 | EDGAR | 213 | | 209 | MILTON | 214 | | 210 | RAUL | 215 | | 211 | BEN | 216 | | 212 | CHESTER | 217 | | 213 | CECIL | 218 | | 214 | DUANE | 219 | | 215 | FRANKLIN | 220 | | 216 | ANDRE | 221 | | 217 | ELMER | 222 | | 218 | BRAD | 223 | | 219 | GABRIEL | 224 | | 220 | RON | 225 | | 221 | MITCHELL | 226 | | 222 | ROLAND | 227 | | 223 | ARNOLD | 228 | | 224 | HARVEY | 229 | | 225 | JARED | 230 | | 226 | ADRIAN | 231 | | 227 | KARL | 232 | | 228 | CORY | 233 | | 229 | CLAUDE | 234 | | 230 | ERIK | 235 | | 231 | DARRYL | 236 | | 232 | JAMIE | 237 | | 233 | NEIL | 238 | | 234 | JESSIE | 239 | | 235 | CHRISTIAN | 240 | | 236 | JAVIER | 241 | | 237 | FERNANDO | 242 | | 238 | CLINTON | 243 | | 239 | TED | 244 | | 240 | MATHEW | 245 | | 241 | TYRONE | 246 | | 242 | DARREN | 247 | | 243 | LONNIE | 248 | | 244 | LANCE | 249 | | 245 | CODY | 250 | | 246 | JULIO | 251 | | 247 | KELLY | 252 | | 248 | KURT | 253 | | 249 | ALLAN | 254 | | 250 | NELSON | 255 | | 251 | GUY | 256 | | 252 | CLAYTON | 257 | | 253 | HUGH | 258 | | 254 | MAX | 259 | | 255 | DWAYNE | 260 | | 256 | DWIGHT | 261 | | 257 | ARMANDO | 262 | | 258 | FELIX | 263 | | 259 | JIMMIE | 264 | | 260 | EVERETT | 265 | | 261 | JORDAN | 266 | | 262 | IAN | 267 | | 263 | WALLACE | 268 | | 264 | KEN | 269 | | 265 | BOB | 270 | | 266 | JAIME | 271 | | 267 | CASEY | 272 | | 268 | ALFREDO | 273 | | 269 | ALBERTO | 274 | | 270 | DAVE | 275 | | 271 | IVAN | 276 | | 272 | JOHNNIE | 277 | | 273 | SIDNEY | 278 | | 274 | BYRON | 279 | | 275 | JULIAN | 280 | | 276 | ISAAC | 281 | | 277 | MORRIS | 282 | | 278 | CLIFTON | 283 | | 279 | WILLARD | 284 | | 280 | DARYL | 285 | | 281 | ROSS | 286 | | 282 | VIRGIL | 287 | | 283 | ANDY | 288 | | 284 | MARSHALL | 289 | | 285 | SALVADOR | 290 | | 286 | PERRY | 291 | | 287 | KIRK | 292 | | 288 | SERGIO | 293 | | 289 | MARION | 294 | | 290 | TRACY | 295 | | 291 | SETH | 296 | | 292 | KENT | 297 | | 293 | TERRANCE | 298 | | 294 | RENE | 299 | | 295 | EDUARDO | 300 | | 296 | TERRENCE | 301 | | 297 | ENRIQUE | 302 | | 298 | FREDDIE | 303 | | 299 | WADE | 304 | | 300 | AUSTIN | 305 | | 301 | STUART | 306 | | 302 | FREDRICK | 307 | | 303 | ARTURO | 308 | | 304 | ALEJANDRO | 309 | | 305 | JACKIE | 310 | | 306 | JOEY | 311 | | 307 | NICK | 312 | | 308 | LUTHER | 313 | | 309 | WENDELL | 314 | | 310 | JEREMIAH | 315 | | 311 | EVAN | 316 | | 312 | JULIUS | 317 | | 313 | DANA | 318 | | 314 | DONNIE | 319 | | 315 | OTIS | 320 | | 316 | SHANNON | 321 | | 317 | TREVOR | 322 | | 318 | OLIVER | 323 | | 319 | LUKE | 324 | | 320 | HOMER | 325 | | 321 | GERARD | 326 | | 322 | DOUG | 327 | | 323 | KENNY | 328 | | 324 | HUBERT | 329 | | 325 | ANGELO | 330 | | 326 | SHAUN | 331 | | 327 | LYLE | 332 | | 328 | MATT | 333 | | 329 | LYNN | 334 | | 330 | ALFONSO | 335 | | 331 | ORLANDO | 336 | | 332 | REX | 337 | | 333 | CARLTON | 338 | | 334 | ERNESTO | 339 | | 335 | CAMERON | 340 | | 336 | NEAL | 341 | | 337 | PABLO | 342 | | 338 | LORENZO | 343 | | 339 | OMAR | 344 | | 340 | WILBUR | 345 | | 341 | BLAKE | 346 | | 342 | GRANT | 347 | | 343 | HORACE | 348 | | 344 | RODERICK | 349 | | 345 | KERRY | 350 | | 346 | ABRAHAM | 351 | | 347 | WILLIS | 352 | | 348 | RICKEY | 353 | | 349 | JEAN | 354 | | 350 | IRA | 355 | | 351 | ANDRES | 356 | | 352 | CESAR | 357 | | 353 | JOHNATHAN | 358 | | 354 | MALCOLM | 359 | | 355 | RUDOLPH | 360 | | 356 | DAMON | 361 | | 357 | KELVIN | 362 | | 358 | RUDY | 363 | | 359 | PRESTON | 364 | | 360 | ALTON | 365 | | 361 | ARCHIE | 366 | | 362 | MARCO | 367 | | 363 | WM | 368 | | 364 | PETE | 369 | | 365 | RANDOLPH | 370 | | 366 | GARRY | 371 | | 367 | GEOFFREY | 372 | | 368 | JONATHON | 373 | | 369 | FELIPE | 374 | | 370 | BENNIE | 375 | | 371 | GERARDO | 376 | | 372 | ED | 377 | | 373 | DOMINIC | 378 | | 374 | ROBIN | 379 | | 375 | LOREN | 380 | | 376 | DELBERT | 381 | | 377 | COLIN | 382 | | 378 | GUILLERMO | 383 | | 379 | EARNEST | 384 | | 380 | LUCAS | 385 | | 381 | BENNY | 386 | | 382 | NOEL | 387 | | 383 | SPENCER | 388 | | 384 | RODOLFO | 389 | | 385 | MYRON | 390 | | 386 | EDMUND | 391 | | 387 | GARRETT | 392 | | 388 | SALVATORE | 393 | | 389 | CEDRIC | 394 | | 390 | LOWELL | 395 | | 391 | GREGG | 396 | | 392 | SHERMAN | 397 | | 393 | WILSON | 398 | | 394 | DEVIN | 399 | | 395 | SYLVESTER | 400 | | 396 | KIM | 401 | | 397 | ROOSEVELT | 402 | | 398 | ISRAEL | 403 | | 399 | JERMAINE | 404 | | 400 | FORREST | 405 | | 401 | WILBERT | 406 | | 402 | LELAND | 407 | | 403 | SIMON | 408 | | 404 | GUADALUPE | 409 | | 405 | CLARK | 410 | | 406 | IRVING | 411 | | 407 | CARROLL | 412 | | 408 | BRYANT | 413 | | 409 | OWEN | 414 | | 410 | RUFUS | 415 | | 411 | WOODROW | 416 | | 412 | SAMMY | 417 | | 413 | KRISTOPHER | 418 | | 414 | MACK | 419 | | 415 | LEVI | 420 | | 416 | MARCOS | 421 | | 417 | GUSTAVO | 422 | | 418 | JAKE | 423 | | 419 | LIONEL | 424 | | 420 | MARTY | 425 | | 421 | TAYLOR | 426 | | 422 | ELLIS | 427 | | 423 | DALLAS | 428 | | 424 | GILBERTO | 429 | | 425 | CLINT | 430 | | 426 | NICOLAS | 431 | | 427 | LAURENCE | 432 | | 428 | ISMAEL | 433 | | 429 | ORVILLE | 434 | | 430 | DREW | 435 | | 431 | JODY | 436 | | 432 | ERVIN | 437 | | 433 | DEWEY | 438 | | 434 | AL | 439 | | 435 | WILFRED | 440 | | 436 | JOSH | 441 | | 437 | HUGO | 442 | | 438 | IGNACIO | 443 | | 439 | CALEB | 444 | | 440 | TOMAS | 445 | | 441 | SHELDON | 446 | | 442 | ERICK | 447 | | 443 | FRANKIE | 448 | | 444 | STEWART | 449 | | 445 | DOYLE | 450 | | 446 | DARREL | 451 | | 447 | ROGELIO | 452 | | 448 | TERENCE | 453 | | 449 | SANTIAGO | 454 | | 450 | ALONZO | 455 | | 451 | ELIAS | 456 | | 452 | BERT | 457 | | 453 | ELBERT | 458 | | 454 | RAMIRO | 459 | | 455 | CONRAD | 460 | | 456 | PAT | 461 | | 457 | NOAH | 462 | | 458 | GRADY | 463 | | 459 | PHIL | 464 | | 460 | CORNELIUS | 465 | | 461 | LAMAR | 466 | | 462 | ROLANDO | 467 | | 463 | CLAY | 468 | | 464 | PERCY | 469 | | 465 | DEXTER | 470 | | 466 | BRADFORD | 471 | | 467 | MERLE | 472 | | 468 | DARIN | 473 | | 469 | AMOS | 474 | | 470 | TERRELL | 475 | | 471 | MOSES | 476 | | 472 | IRVIN | 477 | | 473 | SAUL | 478 | | 474 | ROMAN | 479 | | 475 | DARNELL | 480 | | 476 | RANDAL | 481 | | 477 | TOMMIE | 482 | | 478 | TIMMY | 483 | | 479 | DARRIN | 484 | | 480 | WINSTON | 485 | | 481 | BRENDAN | 486 | | 482 | TOBY | 487 | | 483 | VAN | 488 | | 484 | ABEL | 489 | | 485 | DOMINICK | 490 | | 486 | BOYD | 491 | | 487 | COURTNEY | 492 | | 488 | JAN | 493 | | 489 | EMILIO | 494 | | 490 | ELIJAH | 495 | | 491 | CARY | 496 | | 492 | DOMINGO | 497 | | 493 | SANTOS | 498 | | 494 | AUBREY | 499 | | 495 | EMMETT | 500 | | 496 | MARLON | 501 | | 497 | EMANUEL | 502 | | 498 | JERALD | 503 | | 499 | EDMOND | 504 | | 500 | EMIL | 505 | | 501 | DEWAYNE | 506 | | 502 | WILL | 507 | | 503 | OTTO | 508 | | 504 | TEDDY | 509 | | 505 | REYNALDO | 510 | | 506 | BRET | 511 | | 507 | MORGAN | 512 | | 508 | JESS | 513 | | 509 | TRENT | 514 | | 510 | HUMBERTO | 515 | | 511 | EMMANUEL | 516 | | 512 | STEPHAN | 517 | | 513 | LOUIE | 518 | | 514 | VICENTE | 519 | | 515 | LAMONT | 520 | | 516 | STACY | 521 | | 517 | GARLAND | 522 | | 518 | MILES | 523 | | 519 | MICAH | 524 | | 520 | EFRAIN | 525 | | 521 | BILLIE | 526 | | 522 | LOGAN | 527 | | 523 | HEATH | 528 | | 524 | RODGER | 529 | | 525 | HARLEY | 530 | | 526 | DEMETRIUS | 531 | | 527 | ETHAN | 532 | | 528 | ELDON | 533 | | 529 | ROCKY | 534 | | 530 | PIERRE | 535 | | 531 | JUNIOR | 536 | | 532 | FREDDY | 537 | | 533 | ELI | 538 | | 534 | BRYCE | 539 | | 535 | ANTOINE | 540 | | 536 | ROBBIE | 541 | | 537 | KENDALL | 542 | | 538 | ROYCE | 543 | | 539 | STERLING | 544 | | 540 | MICKEY | 545 | | 541 | CHASE | 546 | | 542 | GROVER | 547 | | 543 | ELTON | 548 | | 544 | CLEVELAND | 549 | | 545 | DYLAN | 550 | | 546 | CHUCK | 551 | | 547 | DAMIAN | 552 | | 548 | REUBEN | 553 | | 549 | STAN | 554 | | 550 | AUGUST | 555 | | 551 | LEONARDO | 556 | | 552 | JASPER | 557 | | 553 | RUSSEL | 558 | | 554 | ERWIN | 559 | | 555 | BENITO | 560 | | 556 | HANS | 561 | | 557 | MONTE | 562 | | 558 | BLAINE | 563 | | 559 | ERNIE | 564 | | 560 | CURT | 565 | | 561 | QUENTIN | 566 | | 562 | AGUSTIN | 567 | | 563 | MURRAY | 568 | | 564 | JAMAL | 569 | | 565 | DEVON | 570 | | 566 | ADOLFO | 571 | | 567 | HARRISON | 572 | | 568 | TYSON | 573 | | 569 | BURTON | 574 | | 570 | BRADY | 575 | | 571 | ELLIOTT | 576 | | 572 | WILFREDO | 577 | | 573 | BART | 578 | | 574 | JARROD | 579 | | 575 | VANCE | 580 | | 576 | DENIS | 581 | | 577 | DAMIEN | 582 | | 578 | JOAQUIN | 583 | | 579 | HARLAN | 584 | | 580 | DESMOND | 585 | | 581 | ELLIOT | 586 | | 582 | DARWIN | 587 | | 583 | ASHLEY | 588 | | 584 | GREGORIO | 589 | | 585 | BUDDY | 590 | | 586 | XAVIER | 591 | | 587 | KERMIT | 592 | | 588 | ROSCOE | 593 | | 589 | ESTEBAN | 594 | | 590 | ANTON | 595 | | 591 | SOLOMON | 596 | | 592 | SCOTTY | 597 | | 593 | NORBERT | 598 | | 594 | ELVIN | 599 | | 595 | WILLIAMS | 600 | | 596 | NOLAN | 601 | | 597 | CAREY | 602 | | 598 | ROD | 603 | | 599 | QUINTON | 604 | | 600 | HAL | 605 | | 601 | BRAIN | 606 | | 602 | ROB | 607 | | 603 | ELWOOD | 608 | | 604 | KENDRICK | 609 | | 605 | DARIUS | 610 | | 606 | MOISES | 611 | | 607 | SON | 612 | | 608 | MARLIN | 613 | | 609 | FIDEL | 614 | | 610 | THADDEUS | 615 | | 611 | CLIFF | 616 | | 612 | MARCEL | 617 | | 613 | ALI | 618 | | 614 | JACKSON | 619 | | 615 | RAPHAEL | 620 | | 616 | BRYON | 621 | | 617 | ARMAND | 622 | | 618 | ALVARO | 623 | | 619 | JEFFRY | 624 | | 620 | DANE | 625 | | 621 | JOESPH | 626 | | 622 | THURMAN | 627 | | 623 | NED | 628 | | 624 | SAMMIE | 629 | | 625 | RUSTY | 630 | | 626 | MICHEL | 631 | | 627 | MONTY | 632 | | 628 | RORY | 633 | | 629 | FABIAN | 634 | | 630 | REGGIE | 635 | | 631 | MASON | 636 | | 632 | GRAHAM | 637 | | 633 | KRIS | 638 | | 634 | ISAIAH | 639 | | 635 | VAUGHN | 640 | | 636 | GUS | 641 | | 637 | AVERY | 642 | | 638 | LOYD | 643 | | 639 | DIEGO | 644 | | 640 | ALEXIS | 645 | | 641 | ADOLPH | 646 | | 642 | NORRIS | 647 | | 643 | MILLARD | 648 | | 644 | ROCCO | 649 | | 645 | GONZALO | 650 | | 646 | DERICK | 651 | | 647 | RODRIGO | 652 | | 648 | GERRY | 653 | | 649 | STACEY | 654 | | 650 | CARMEN | 655 | | 651 | WILEY | 656 | | 652 | RIGOBERTO | 657 | | 653 | ALPHONSO | 658 | | 654 | TY | 659 | | 655 | SHELBY | 660 | | 656 | RICKIE | 661 | | 657 | NOE | 662 | | 658 | VERN | 663 | | 659 | BOBBIE | 664 | | 660 | REED | 665 | | 661 | JEFFERSON | 666 | | 662 | ELVIS | 667 | | 663 | BERNARDO | 668 | | 664 | MAURICIO | 669 | | 665 | HIRAM | 670 | | 666 | DONOVAN | 671 | | 667 | BASIL | 672 | | 668 | RILEY | 673 | | 669 | OLLIE | 674 | | 670 | NICKOLAS | 675 | | 671 | MAYNARD | 676 | | 672 | SCOT | 677 | | 673 | VINCE | 678 | | 674 | QUINCY | 679 | | 675 | EDDY | 680 | | 676 | SEBASTIAN | 681 | | 677 | FEDERICO | 682 | | 678 | ULYSSES | 683 | | 679 | HERIBERTO | 684 | | 680 | DONNELL | 685 | | 681 | COLE | 686 | | 682 | DENNY | 687 | | 683 | DAVIS | 688 | | 684 | GAVIN | 689 | | 685 | EMERY | 690 | | 686 | WARD | 691 | | 687 | ROMEO | 692 | | 688 | JAYSON | 693 | | 689 | DION | 694 | | 690 | DANTE | 695 | | 691 | CLEMENT | 696 | | 692 | COY | 697 | | 693 | ODELL | 698 | | 694 | MAXWELL | 699 | | 695 | JARVIS | 700 | | 696 | BRUNO | 701 | | 697 | ISSAC | 702 | | 698 | MARY | 703 | | 699 | DUDLEY | 704 | | 700 | BROCK | 705 | | 701 | SANFORD | 706 | | 702 | COLBY | 707 | | 703 | CARMELO | 708 | | 704 | BARNEY | 709 | | 705 | NESTOR | 710 | | 706 | HOLLIS | 711 | | 707 | STEFAN | 712 | | 708 | DONNY | 713 | | 709 | ART | 714 | | 710 | LINWOOD | 715 | | 711 | BEAU | 716 | | 712 | WELDON | 717 | | 713 | GALEN | 718 | | 714 | ISIDRO | 719 | | 715 | TRUMAN | 720 | | 716 | DELMAR | 721 | | 717 | JOHNATHON | 722 | | 718 | SILAS | 723 | | 719 | FREDERIC | 724 | | 720 | DICK | 725 | | 721 | KIRBY | 726 | | 722 | IRWIN | 727 | | 723 | CRUZ | 728 | | 724 | MERLIN | 729 | | 725 | MERRILL | 730 | | 726 | CHARLEY | 731 | | 727 | MARCELINO | 732 | | 728 | LANE | 733 | | 729 | HARRIS | 734 | | 730 | CLEO | 735 | | 731 | CARLO | 736 | | 732 | TRENTON | 737 | | 733 | KURTIS | 738 | | 734 | HUNTER | 739 | | 735 | AURELIO | 740 | | 736 | WINFRED | 741 | | 737 | VITO | 742 | | 738 | COLLIN | 743 | | 739 | DENVER | 744 | | 740 | CARTER | 745 | | 741 | LEONEL | 746 | | 742 | EMORY | 747 | | 743 | PASQUALE | 748 | | 744 | MOHAMMAD | 749 | | 745 | MARIANO | 750 | | 746 | DANIAL | 751 | | 747 | BLAIR | 752 | | 748 | LANDON | 753 | | 749 | DIRK | 754 | | 750 | BRANDEN | 755 | | 751 | ADAN | 756 | | 752 | NUMBERS | 757 | | 753 | CLAIR | 758 | | 754 | BUFORD | 759 | | 755 | GERMAN | 760 | | 756 | BERNIE | 761 | | 757 | WILMER | 762 | | 758 | JOAN | 763 | | 759 | EMERSON | 764 | | 760 | ZACHERY | 765 | | 761 | FLETCHER | 766 | | 762 | JACQUES | 767 | | 763 | ERROL | 768 | | 764 | DALTON | 769 | | 765 | MONROE | 770 | | 766 | JOSUE | 771 | | 767 | DOMINIQUE | 772 | | 768 | EDWARDO | 773 | | 769 | BOOKER | 774 | | 770 | WILFORD | 775 | | 771 | SONNY | 776 | | 772 | SHELTON | 777 | | 773 | CARSON | 778 | | 774 | THERON | 779 | | 775 | RAYMUNDO | 780 | | 776 | DAREN | 781 | | 777 | TRISTAN | 782 | | 778 | HOUSTON | 783 | | 779 | ROBBY | 784 | | 780 | LINCOLN | 785 | | 781 | JAME | 786 | | 782 | GENARO | 787 | | 783 | GALE | 788 | | 784 | BENNETT | 789 | | 785 | OCTAVIO | 790 | | 786 | CORNELL | 791 | | 787 | LAVERNE | 792 | | 788 | HUNG | 793 | | 789 | ARRON | 794 | | 790 | ANTONY | 795 | | 791 | HERSCHEL | 796 | | 792 | ALVA | 797 | | 793 | GIOVANNI | 798 | | 794 | GARTH | 799 | | 795 | CYRUS | 800 | | 796 | CYRIL | 801 | | 797 | RONNY | 802 | | 798 | STEVIE | 803 | | 799 | LON | 804 | | 800 | FREEMAN | 805 | | 801 | ERIN | 806 | | 802 | DUNCAN | 807 | | 803 | KENNITH | 808 | | 804 | CARMINE | 809 | | 805 | AUGUSTINE | 810 | | 806 | YOUNG | 811 | | 807 | ERICH | 812 | | 808 | CHADWICK | 813 | | 809 | WILBURN | 814 | | 810 | RUSS | 815 | | 811 | REID | 816 | | 812 | MYLES | 817 | | 813 | ANDERSON | 818 | | 814 | MORTON | 819 | | 815 | JONAS | 820 | | 816 | FOREST | 821 | | 817 | MITCHEL | 822 | | 818 | MERVIN | 823 | | 819 | ZANE | 824 | | 820 | RICH | 825 | | 821 | JAMEL | 826 | | 822 | LAZARO | 827 | | 823 | ALPHONSE | 828 | | 824 | RANDELL | 829 | | 825 | MAJOR | 830 | | 826 | JOHNIE | 831 | | 827 | JARRETT | 832 | | 828 | BROOKS | 833 | | 829 | ARIEL | 834 | | 830 | ABDUL | 835 | | 831 | DUSTY | 836 | | 832 | LUCIANO | 837 | | 833 | LINDSEY | 838 | | 834 | TRACEY | 839 | | 835 | SEYMOUR | 840 | | 836 | SCOTTIE | 841 | | 837 | EUGENIO | 842 | | 838 | MOHAMMED | 843 | | 839 | SANDY | 844 | | 840 | VALENTIN | 845 | | 841 | CHANCE | 846 | | 842 | ARNULFO | 847 | | 843 | LUCIEN | 848 | | 844 | FERDINAND | 849 | | 845 | THAD | 850 | | 846 | EZRA | 851 | | 847 | SYDNEY | 852 | | 848 | ALDO | 853 | | 849 | RUBIN | 854 | | 850 | ROYAL | 855 | | 851 | MITCH | 856 | | 852 | EARLE | 857 | | 853 | ABE | 858 | | 854 | WYATT | 859 | | 855 | MARQUIS | 860 | | 856 | LANNY | 861 | | 857 | KAREEM | 862 | | 858 | JAMAR | 863 | | 859 | BORIS | 864 | | 860 | ISIAH | 865 | | 861 | EMILE | 866 | | 862 | ELMO | 867 | | 863 | ARON | 868 | | 864 | LEOPOLDO | 869 | | 865 | EVERETTE | 870 | | 866 | JOSEF | 871 | | 867 | GAIL | 872 | | 868 | ELOY | 873 | | 869 | DORIAN | 874 | | 870 | RODRICK | 875 | | 871 | REINALDO | 876 | | 872 | LUCIO | 877 | | 873 | JERROD | 878 | | 874 | WESTON | 879 | | 875 | HERSHEL | 880 | | 876 | BARTON | 881 | | 877 | PARKER | 882 | | 878 | LEMUEL | 883 | | 879 | LAVERN | 884 | | 880 | BURT | 885 | | 881 | JULES | 886 | | 882 | GIL | 887 | | 883 | ELISEO | 888 | | 884 | AHMAD | 889 | | 885 | NIGEL | 890 | | 886 | EFREN | 891 | | 887 | ANTWAN | 892 | | 888 | ALDEN | 893 | | 889 | MARGARITO | 894 | | 890 | COLEMAN | 895 | | 891 | REFUGIO | 896 | | 892 | DINO | 897 | | 893 | OSVALDO | 898 | | 894 | LES | 899 | | 895 | DEANDRE | 900 | | 896 | NORMAND | 901 | | 897 | KIETH | 902 | | 898 | IVORY | 903 | | 899 | ANDREA | 904 | | 900 | TREY | 905 | | 901 | NORBERTO | 906 | | 902 | NAPOLEON | 907 | | 903 | JEROLD | 908 | | 904 | FRITZ | 909 | | 905 | ROSENDO | 910 | | 906 | MILFORD | 911 | | 907 | SANG | 912 | | 908 | DEON | 913 | | 909 | CHRISTOPER | 914 | | 910 | ALFONZO | 915 | | 911 | LYMAN | 916 | | 912 | JOSIAH | 917 | | 913 | BRANT | 918 | | 914 | WILTON | 919 | | 915 | RICO | 920 | | 916 | JAMAAL | 921 | | 917 | DEWITT | 922 | | 918 | CAROL | 923 | | 919 | BRENTON | 924 | | 920 | YONG | 925 | | 921 | OLIN | 926 | | 922 | FOSTER | 927 | | 923 | FAUSTINO | 928 | | 924 | CLAUDIO | 929 | | 925 | JUDSON | 930 | | 926 | GINO | 931 | | 927 | EDGARDO | 932 | | 928 | BERRY | 933 | | 929 | ALEC | 934 | | 930 | TANNER | 935 | | 931 | JARRED | 936 | | 932 | DONN | 937 | | 933 | TRINIDAD | 938 | | 934 | TAD | 939 | | 935 | SHIRLEY | 940 | | 936 | PRINCE | 941 | | 937 | PORFIRIO | 942 | | 938 | ODIS | 943 | | 939 | MARIA | 944 | | 940 | LENARD | 945 | | 941 | CHAUNCEY | 946 | | 942 | CHANG | 947 | | 943 | TOD | 948 | | 944 | MEL | 949 | | 945 | MARCELO | 950 | | 946 | KORY | 951 | | 947 | AUGUSTUS | 952 | | 948 | KEVEN | 953 | | 949 | HILARIO | 954 | | 950 | BUD | 955 | | 951 | SAL | 956 | | 952 | ROSARIO | 957 | | 953 | ORVAL | 958 | | 954 | MAURO | 959 | | 955 | DANNIE | 960 | | 956 | ZACHARIAH | 961 | | 957 | OLEN | 962 | | 958 | ANIBAL | 963 | | 959 | MILO | 964 | | 960 | JED | 965 | | 961 | FRANCES | 966 | | 962 | THANH | 967 | | 963 | DILLON | 968 | | 964 | AMADO | 969 | | 965 | NEWTON | 970 | | 966 | CONNIE | 971 | | 967 | LENNY | 972 | | 968 | TORY | 973 | | 969 | RICHIE | 974 | | 970 | LUPE | 975 | | 971 | HORACIO | 976 | | 972 | BRICE | 977 | | 973 | MOHAMED | 978 | | 974 | DELMER | 979 | | 975 | DARIO | 980 | | 976 | REYES | 981 | | 977 | DEE | 982 | | 978 | MAC | 983 | | 979 | JONAH | 984 | | 980 | JERROLD | 985 | | 981 | ROBT | 986 | | 982 | HANK | 987 | | 983 | SUNG | 988 | | 984 | RUPERT | 989 | | 985 | ROLLAND | 990 | | 986 | KENTON | 991 | | 987 | DAMION | 992 | | 988 | CHI | 993 | | 989 | ANTONE | 994 | | 990 | WALDO | 995 | | 991 | FREDRIC | 996 | | 992 | BRADLY | 997 | | 993 | QUINN | 998 | | 994 | KIP | 999 | | 995 | BURL | 1000 | | 996 | WALKER | 1001 | | 997 | TYREE | 1002 | | 998 | JEFFEREY | 1003 | | 999 | AHMED | 1004 | | 1000 | WILLY | 1005 | | 1001 | STANFORD | 1006 | | 1002 | OREN | 1007 | | 1003 | NOBLE | 1008 | | 1004 | MOSHE | 1009 | | 1005 | MIKEL | 1010 | | 1006 | ENOCH | 1011 | | 1007 | BRENDON | 1012 | | 1008 | QUINTIN | 1013 | | 1009 | JAMISON | 1014 | | 1010 | FLORENCIO | 1015 | | 1011 | DARRICK | 1016 | | 1012 | TOBIAS | 1017 | | 1013 | MINH | 1018 | | 1014 | HASSAN | 1019 | | 1015 | GIUSEPPE | 1020 | | 1016 | DEMARCUS | 1021 | | 1017 | CLETUS | 1022 | | 1018 | TYRELL | 1023 | | 1019 | LYNDON | 1024 | | 1020 | KEENAN | 1025 | | 1021 | WERNER | 1026 | | 1022 | THEO | 1027 | | 1023 | GERALDO | 1028 | | 1024 | LOU | 1029 | | 1025 | COLUMBUS | 1030 | | 1026 | CHET | 1031 | | 1027 | BERTRAM | 1032 | | 1028 | MARKUS | 1033 | | 1029 | HUEY | 1034 | | 1030 | HILTON | 1035 | | 1031 | DWAIN | 1036 | | 1032 | DONTE | 1037 | | 1033 | TYRON | 1038 | | 1034 | OMER | 1039 | | 1035 | ISAIAS | 1040 | | 1036 | HIPOLITO | 1041 | | 1037 | FERMIN | 1042 | | 1038 | CHUNG | 1043 | | 1039 | ADALBERTO | 1044 | | 1040 | VALENTINE | 1045 | | 1041 | JAMEY | 1046 | | 1042 | BO | 1047 | | 1043 | BARRETT | 1048 | | 1044 | WHITNEY | 1049 | | 1045 | TEODORO | 1050 | | 1046 | MCKINLEY | 1051 | | 1047 | MAXIMO | 1052 | | 1048 | GARFIELD | 1053 | | 1049 | SOL | 1054 | | 1050 | RALEIGH | 1055 | | 1051 | LAWERENCE | 1056 | | 1052 | ABRAM | 1057 | | 1053 | RASHAD | 1058 | | 1054 | KING | 1059 | | 1055 | EMMITT | 1060 | | 1056 | DARON | 1061 | | 1057 | CHONG | 1062 | | 1058 | SAMUAL | 1063 | | 1059 | PARIS | 1064 | | 1060 | OTHA | 1065 | | 1061 | MIQUEL | 1066 | | 1062 | LACY | 1067 | | 1063 | EUSEBIO | 1068 | | 1064 | DONG | 1069 | | 1065 | DOMENIC | 1070 | | 1066 | DARRON | 1071 | | 1067 | BUSTER | 1072 | | 1068 | ANTONIA | 1073 | | 1069 | WILBER | 1074 | | 1070 | RENATO | 1075 | | 1071 | JC | 1076 | | 1072 | HOYT | 1077 | | 1073 | HAYWOOD | 1078 | | 1074 | EZEKIEL | 1079 | | 1075 | CHAS | 1080 | | 1076 | FLORENTINO | 1081 | | 1077 | ELROY | 1082 | | 1078 | CLEMENTE | 1083 | | 1079 | ARDEN | 1084 | | 1080 | NEVILLE | 1085 | | 1081 | KELLEY | 1086 | | 1082 | EDISON | 1087 | | 1083 | DESHAWN | 1088 | | 1084 | CARROL | 1089 | | 1085 | SHAYNE | 1090 | | 1086 | NATHANIAL | 1091 | | 1087 | JORDON | 1092 | | 1088 | DANILO | 1093 | | 1089 | CLAUD | 1094 | | 1090 | VAL | 1095 | | 1091 | SHERWOOD | 1096 | | 1092 | RAYMON | 1097 | | 1093 | RAYFORD | 1098 | | 1094 | CRISTOBAL | 1099 | | 1095 | AMBROSE | 1100 | | 1096 | TITUS | 1101 | | 1097 | HYMAN | 1102 | | 1098 | FELTON | 1103 | | 1099 | EZEQUIEL | 1104 | | 1100 | ERASMO | 1105 | | 1101 | STANTON | 1106 | | 1102 | LONNY | 1107 | | 1103 | LEN | 1108 | | 1104 | IKE | 1109 | | 1105 | MILAN | 1110 | | 1106 | LINO | 1111 | | 1107 | JAROD | 1112 | | 1108 | HERB | 1113 | | 1109 | ANDREAS | 1114 | | 1110 | WALTON | 1115 | | 1111 | RHETT | 1116 | | 1112 | PALMER | 1117 | | 1113 | JUDE | 1118 | | 1114 | DOUGLASS | 1119 | | 1115 | CORDELL | 1120 | | 1116 | OSWALDO | 1121 | | 1117 | ELLSWORTH | 1122 | | 1118 | VIRGILIO | 1123 | | 1119 | TONEY | 1124 | | 1120 | NATHANAEL | 1125 | | 1121 | DEL | 1126 | | 1122 | BRITT | 1127 | | 1123 | BENEDICT | 1128 | | 1124 | MOSE | 1129 | | 1125 | HONG | 1130 | | 1126 | LEIGH | 1131 | | 1127 | JOHNSON | 1132 | | 1128 | ISREAL | 1133 | | 1129 | GAYLE | 1134 | | 1130 | GARRET | 1135 | | 1131 | FAUSTO | 1136 | | 1132 | ASA | 1137 | | 1133 | ARLEN | 1138 | | 1134 | ZACK | 1139 | | 1135 | WARNER | 1140 | | 1136 | MODESTO | 1141 | | 1137 | FRANCESCO | 1142 | | 1138 | MANUAL | 1143 | | 1139 | JAE | 1144 | | 1140 | GAYLORD | 1145 | | 1141 | GASTON | 1146 | | 1142 | FILIBERTO | 1147 | | 1143 | DEANGELO | 1148 | | 1144 | MICHALE | 1149 | | 1145 | GRANVILLE | 1150 | | 1146 | WES | 1151 | | 1147 | MALIK | 1152 | | 1148 | ZACKARY | 1153 | | 1149 | TUAN | 1154 | | 1150 | NICKY | 1155 | | 1151 | ELDRIDGE | 1156 | | 1152 | CRISTOPHER | 1157 | | 1153 | CORTEZ | 1158 | | 1154 | ANTIONE | 1159 | | 1155 | MALCOM | 1160 | | 1156 | LONG | 1161 | | 1157 | KOREY | 1162 | | 1158 | JOSPEH | 1163 | | 1159 | COLTON | 1164 | | 1160 | WAYLON | 1165 | | 1161 | VON | 1166 | | 1162 | HOSEA | 1167 | | 1163 | SHAD | 1168 | | 1164 | SANTO | 1169 | | 1165 | RUDOLF | 1170 | | 1166 | ROLF | 1171 | | 1167 | REY | 1172 | | 1168 | RENALDO | 1173 | | 1169 | MARCELLUS | 1174 | | 1170 | LUCIUS | 1175 | | 1171 | LESLEY | 1176 | | 1172 | KRISTOFER | 1177 | | 1173 | BOYCE | 1178 | | 1174 | BENTON | 1179 | | 1175 | MAN | 1180 | | 1176 | KASEY | 1181 | | 1177 | JEWELL | 1182 | | 1178 | HAYDEN | 1183 | | 1179 | HARLAND | 1184 | | 1180 | ARNOLDO | 1185 | | 1181 | RUEBEN | 1186 | | 1182 | LEANDRO | 1187 | | 1183 | KRAIG | 1188 | | 1184 | JERRELL | 1189 | | 1185 | JEROMY | 1190 | | 1186 | HOBERT | 1191 | | 1187 | CEDRICK | 1192 | | 1188 | ARLIE | 1193 | | 1189 | WINFORD | 1194 | | 1190 | WALLY | 1195 | | 1191 | PATRICIA | 1196 | | 1192 | LUIGI | 1197 | | 1193 | KENETH | 1198 | | 1194 | JACINTO | 1199 | | 1195 | GRAIG | 1200 | | 1196 | FRANKLYN | 1201 | | 1197 | EDMUNDO | 1202 | | 1198 | SID | 1203 | | 1199 | PORTER | 1204 | | 1200 | LEIF | 1205 | | 1201 | LAUREN | 1206 | | 1202 | JERAMY | 1207 | | 1203 | ELISHA | 1208 | | 1204 | BUCK | 1209 | | 1205 | WILLIAN | 1210 | | 1206 | VINCENZO | 1211 | | 1207 | SHON | 1212 | | 1208 | MICHAL | 1213 | | 1209 | LYNWOOD | 1214 | | 1210 | LINDSAY | 1215 | | 1211 | JEWEL | 1216 | | 1212 | JERE | 1217 | | 1213 | HAI | 1218 | | 1214 | ELDEN | 1219 | | 1215 | DORSEY | 1220 | | 1216 | DARELL | 1221 | | 1217 | BRODERICK | 1222 | | 1218 | ALONSO | 1223 | -------------------------------------------------------------------------------- /plutus-lobster.cabal: -------------------------------------------------------------------------------- 1 | cabal-version: 2.4 2 | 3 | name: plutus-lobster 4 | version: 1.0.0 5 | description: Lobster naming. 6 | author: Lars Brünjes 7 | maintainer: lars.bruenjes@iohk.io 8 | license: Apache-2.0 9 | license-file: LICENSE 10 | build-type: Simple 11 | data-files: ENGivenMale.json 12 | extra-source-files: README.md 13 | 14 | Flag unexpected_thunks 15 | Description: Turn on unexpected thunks checks 16 | Default: False 17 | 18 | common base 19 | build-depends: base >= 4.14 && < 4.15 20 | 21 | common project-config 22 | default-language: Haskell2010 23 | 24 | default-extensions: NoImplicitPrelude 25 | OverloadedStrings 26 | 27 | ghc-options: -Wall 28 | -Wcompat 29 | -Wincomplete-record-updates 30 | -Wincomplete-uni-patterns 31 | -Wpartial-fields 32 | -Wredundant-constraints 33 | -Wunused-packages 34 | 35 | common maybe-Win32 36 | if os(windows) 37 | build-depends: Win32 38 | 39 | library 40 | import: base, project-config 41 | , maybe-Win32 42 | 43 | if flag(unexpected_thunks) 44 | cpp-options: -DUNEXPECTED_THUNKS 45 | 46 | hs-source-dirs: src 47 | 48 | exposed-modules: Cardano.PlutusLobster.LobsterScript 49 | 50 | build-depends: bytestring 51 | , cardano-api 52 | , plutus-core 53 | , plutus-ledger 54 | , plutus-ledger-api 55 | , plutus-tx 56 | , plutus-tx-plugin 57 | , serialise 58 | 59 | ghc-options: -fobject-code -fno-ignore-interface-pragmas -fno-omit-interface-pragmas 60 | 61 | executable plutus-lobster-tokens 62 | import: base, project-config 63 | hs-source-dirs: app 64 | main-is: plutus-lobster-tokens.hs 65 | ghc-options: -threaded -rtsopts "-with-rtsopts=-T" 66 | build-depends: cardano-api 67 | , plutus-ledger 68 | , plutus-lobster 69 | 70 | executable plutus-lobster 71 | import: base, project-config 72 | hs-source-dirs: app 73 | main-is: plutus-lobster.hs 74 | ghc-options: -threaded -rtsopts "-with-rtsopts=-T" 75 | 76 | build-depends: cardano-api 77 | , plutus-ledger 78 | , plutus-lobster 79 | 80 | executable plutus-lobster-names 81 | hs-source-dirs: app 82 | main-is: plutus-lobster-names.hs 83 | other-modules: Paths_plutus_lobster 84 | autogen-modules: Paths_plutus_lobster 85 | ghc-options: -Wall 86 | 87 | build-depends: aeson 88 | , base 89 | , bytestring 90 | -------------------------------------------------------------------------------- /scripts/lobster-contribute.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # arguments: 4 | # utxo (wallet) 5 | # utxo (lobster) 6 | # wallet address file 7 | # signinig key file 8 | # old counter 9 | # new counter 10 | # old votes 11 | 12 | export CARDANO_NODE_SOCKET_PATH=node.socket 13 | 14 | bodyFile=lobster-tx-body.03 15 | outFile=lobster-tx.03 16 | nftPolicyFile="nft-mint-policy.plutus" 17 | nftPolicyId=$(./policyid.sh $nftPolicyFile) 18 | otherPolicyFile="other-mint-policy.plutus" 19 | otherPolicyId=$(./policyid.sh $otherPolicyFile) 20 | nftValue="1 $nftPolicyId.LobsterNFT" 21 | counterValue="$6 $otherPolicyId.LobsterCounter" 22 | newVotes=$(($7+1)) 23 | votesValue="$newVotes $otherPolicyId.LobsterVotes" 24 | increaseValue="$(($6-$5)) $otherPolicyId.LobsterCounter + 1 $otherPolicyId.LobsterVotes" 25 | walletAddr=$(cat $3) 26 | scriptFile=lobster.plutus 27 | scriptAddr=$(./mainnet-script-address.sh $scriptFile) 28 | 29 | echo "wallet utxo: $1" 30 | echo "script utxo: $2" 31 | echo "bodyfile: $bodyFile" 32 | echo "outfile: $outFile" 33 | echo "nftPolicyfile: $nftPolicyFile" 34 | echo "nftPolicyid: $nftPolicyId" 35 | echo "otherPolicyfile: $otherPolicyFile" 36 | echo "otherPolicyid: $otherPolicyId" 37 | echo "nftValue: $nftValue" 38 | echo "counterValue: $counterValue" 39 | echo "votesValue: $votesValue" 40 | echo "walletAddress: $walletAddr" 41 | echo "scriptFile: $scriptFile" 42 | echo "scriptAddress: $scriptAddr" 43 | echo "signing key file: $4" 44 | echo "old counter: $5" 45 | echo "new counter: $6" 46 | echo "increaseValue: $increaseValue" 47 | echo "old votes: $7" 48 | echo "new votes: $newVotes" 49 | echo 50 | 51 | echo "querying protocol parameters" 52 | ./mainnet-query-protocol-parameters.sh 53 | 54 | echo 55 | 56 | ./cardano-cli transaction build \ 57 | --alonzo-era \ 58 | --mainnet \ 59 | --tx-in $1 \ 60 | --tx-in $2 \ 61 | --tx-in-script-file $scriptFile \ 62 | --tx-in-datum-value [] \ 63 | --tx-in-redeemer-value [] \ 64 | --tx-in-collateral $1 \ 65 | --tx-out "$scriptAddr + 2034438 lovelace + $nftValue + $counterValue + $votesValue" \ 66 | --tx-out-datum-hash 45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0 \ 67 | --mint "$increaseValue" \ 68 | --mint-script-file $otherPolicyFile \ 69 | --mint-redeemer-value [] \ 70 | --change-address $walletAddr \ 71 | --protocol-params-file mainnet-protocol-parameters.json \ 72 | --out-file $bodyFile 73 | 74 | echo "saved transaction to $bodyFile" 75 | 76 | ./cardano-cli transaction sign \ 77 | --tx-body-file $bodyFile \ 78 | --signing-key-file $4 \ 79 | --mainnet \ 80 | --out-file $outFile 81 | 82 | echo "signed transaction and saved as $outFile" 83 | 84 | ./cardano-cli transaction submit \ 85 | --mainnet \ 86 | --tx-file $outFile 87 | 88 | echo "submitted transaction" 89 | 90 | echo 91 | -------------------------------------------------------------------------------- /scripts/lobster-deploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # arguments: 4 | # utxo (NFT) 5 | # utxo (collateral) 6 | # wallet address file 7 | # signing key file 8 | export CARDANO_NODE_SOCKET_PATH=node.socket 9 | 10 | bodyFile=lobster-tx-body.02 11 | outFile=lobster-tx.02 12 | nftPolicyFile="nft-mint-policy.plutus" 13 | nftPolicyId=$(./policyid.sh $nftPolicyFile) 14 | value="1724100 lovelace + 1 $nftPolicyId.LobsterNFT" 15 | walletAddr=$(cat $3) 16 | scriptAddr=$(./mainnet-script-address.sh lobster.plutus) 17 | 18 | echo "utxoNFT: $1" 19 | echo "utxoCollateral: $2" 20 | echo "bodyFile: $bodyFile" 21 | echo "outFile: $outFile" 22 | echo "nftPolicyFile: $nftPolicyFile" 23 | echo "nftPolicyId: $nftPolicyId" 24 | echo "value: $value" 25 | echo "walletAddress: $walletAddr" 26 | echo "scriptAddress: $scriptAddr" 27 | echo "signing key file: $4" 28 | echo 29 | 30 | echo "querying protocol parameters" 31 | ./mainnet-query-protocol-parameters.sh 32 | 33 | echo 34 | 35 | ./cardano-cli transaction build \ 36 | --alonzo-era \ 37 | --mainnet \ 38 | --tx-in $1 \ 39 | --tx-in $2 \ 40 | --tx-in-collateral $2 \ 41 | --tx-out "$scriptAddr + $value" \ 42 | --tx-out-datum-hash 45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0 \ 43 | --change-address $walletAddr \ 44 | --protocol-params-file mainnet-protocol-parameters.json \ 45 | --out-file $bodyFile 46 | 47 | echo "saved transaction to $bodyFile" 48 | 49 | ./cardano-cli transaction sign \ 50 | --tx-body-file $bodyFile \ 51 | --signing-key-file $4 \ 52 | --mainnet \ 53 | --out-file $outFile 54 | 55 | echo "signed transaction and saved as $outFile" 56 | 57 | ./cardano-cli transaction submit \ 58 | --mainnet \ 59 | --tx-file $outFile 60 | 61 | echo "submitted transaction" 62 | 63 | echo 64 | -------------------------------------------------------------------------------- /scripts/lobster-mint-nft.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # arguments: 4 | # utxo 5 | # wallet address file 6 | # signing key file 7 | 8 | export CARDANO_NODE_SOCKET_PATH=node.socket 9 | 10 | bodyFile=lobster-tx-body.01 11 | outFile=lobster-tx.01 12 | nftPolicyFile="nft-mint-policy.plutus" 13 | nftPolicyId=$(./policyid.sh $nftPolicyFile) 14 | value="1 $nftPolicyId.LobsterNFT" 15 | walletAddr=$(cat $2) 16 | 17 | echo "utxo: $1" 18 | echo "bodyFile: $bodyFile" 19 | echo "outFile: $outFile" 20 | echo "nftPolicyFile: $nftPolicyFile" 21 | echo "nftPolicyId: $nftPolicyId" 22 | echo "value: $value" 23 | echo "walletAddress: $walletAddr" 24 | echo "signing key file: $3" 25 | echo 26 | 27 | echo "querying protocol parameters" 28 | ./mainnet-query-protocol-parameters.sh 29 | 30 | echo 31 | 32 | ./cardano-cli transaction build \ 33 | --alonzo-era \ 34 | --mainnet \ 35 | --tx-in $1 \ 36 | --tx-in-collateral $1 \ 37 | --tx-out "$walletAddr + 1724100 lovelace + $value" \ 38 | --tx-out-datum-hash 45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0 \ 39 | --mint "$value" \ 40 | --mint-script-file $nftPolicyFile \ 41 | --mint-redeemer-value [] \ 42 | --change-address $walletAddr \ 43 | --protocol-params-file mainnet-protocol-parameters.json \ 44 | --out-file $bodyFile 45 | 46 | echo "saved transaction to $bodyFile" 47 | 48 | ./cardano-cli transaction sign \ 49 | --tx-body-file $bodyFile \ 50 | --signing-key-file $3 \ 51 | --mainnet \ 52 | --out-file $outFile 53 | 54 | echo "signed transaction and saved as $outFile" 55 | 56 | ./cardano-cli transaction submit \ 57 | --mainnet \ 58 | --tx-file $outFile 59 | 60 | echo "submitted transaction" 61 | 62 | echo 63 | -------------------------------------------------------------------------------- /scripts/lobster.plutus: -------------------------------------------------------------------------------- 1 | { 2 | "type": "PlutusScriptV1", 3 | "description": "", 4 | "cborHex": "59102459102101000033232323322332233322232333222333222333333332222222233223333322222333322223332223322332233223332223322332233223322332232323232323232323232323232323232323232323232323232335500101101111222222300733300430060033005002300800125335302c001104d13501835304c3357389210250640004d4988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26603ca002a0042600c6ae8540084c050d5d09aba25001135573ca00226ea80084d405d262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e9309999999999817a800a8012801a8022802a8032803a8042804a805099a81080b1aba15012133502001635742a0202666aa032eb94060d5d0a8070999aa80c3ae501735742a018266a03a0426ae8540284cd4070cd54078085d69aba15008133501675a6ae8540184cd4069d71aba150041335019335501b75c0346ae8540084c080d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d40592623232323232323333573466e1cd55cea802a40004a0044a00e930998102800a8010980b9aba1500213005357426ae8940044d55cf280089baa0021350154988c8c8c8c8c8c8c8c8cccd5cd19b8735573aa00e90001280112804a4c2666046a002a004a006260106ae8540104ccd54029d728049aba15002133500775c6ae84d5d1280089aba25001135573ca00226ea80084d40512623232323232323333573466e1cd55cea802a40004a0044a00e930998112800a8010980a1aba150021335005012357426ae8940044d55cf280089baa002135013498488c8c8c8c8c8c8cccd5cd19b87500448000940089401126135025500113006357426aae79400c4cccd5cd19b875001480089408c9401126135573aa00226ea80084d404d261335500175ceb444888c8c8c004dd58019a80090008918009aa82591191919191919191999aab9f0085504c25300212001051350022200135001220023555505212223300321300a357440124266a09ea00aa600624002266aa09ea002a004260106aae7540084c018d55cf280089aba10011223232323232323333573466e1cd55cea802a40004a0044a00e93099a8122800a801099a8038031aba150021335007005357426ae8940044d55cf280089baa002135010498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04ea002a004266a01000c6ae8540084c020d5d09aba25001135573ca00226ea80084d403d261223232323232323333573466e1cd55cea802a40004a0044a00e93099a8122800a801099a8038031aba1500213007357426ae8940044d55cf280089baa00213500e498488c8c8c8c8c8c8c8cccd5cd19b87500548010940b4940092613333573466e1d4011200225002250044984d40b140044c018d5d09aab9e500313333573466e1d400520002502a250044984d55cea80089baa00213500d4988c8c8c8cccd5cd19b875002480088094940092613333573466e1d400520002023250034984d55ce9baa00213500b498488c8c8c004dd60019a80090008918009aa822111999aab9f00125042233504130063574200460066ae8800810c800444888c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266aa08ca002a0042600e6ae8540084c014d5d09aba25001135573ca00226ea80084d402926232323232323232323232323232323333573466e1d4029200625002250044984c0cd40044c038d5d09aab9e500b13333573466e1d401d200425002250044984c0b940044c030d5d09aab9e500813333573466e1d4011200225002250044984c0a940044c02cd5d09aab9e500513333573466e1d4005200025003250064984d55cea80189814280089bae357426aae7940044dd500109a803a4c4646464646464646464646464646464646464646464646464646666ae68cdc3a80aa4018408a4a0049309999ab9a3370ea028900510229280124c26666ae68cdc3a809a40104a0044a00c9309981fa800a80109bae35742a00426eb4d5d09aba25001135573ca02426666ae68cdc3a8072400c4a0044a00c9309981da800a80109bae35742a00426eb8d5d09aba25001135573ca01a26666ae68cdc3a804a40084a0044a00c9309981d2800a801098069aba150021375c6ae84d5d1280089aab9e500813333573466e1d4011200225002250044984c0d940044c020d5d09aab9e500513333573466e1d4005200025003250064984d55cea801898182800898021aba135573ca00226ea80084d40192623232323232323232323232323333573466e1d4021200225002250084984ccc0ed40054009400c4dd69aba150041375a6ae8540084dd69aba135744a00226ae8940044d55cf280289999ab9a3370ea0029000128019280324c26aae75400c4c0d140044c010d5d09aab9e50011375400426a00a93119191919191919191999ab9a3370ea0089001128011280224c26072a00226eb8d5d09aab9e500513333573466e1d4005200025003250064984d55cea8018981b280089bae357426aae7940044dd500109a80224c46464646464646666ae68cdc39aab9d500548000940089401d26133029500150021300635742a00426eb4d5d09aba25001135573ca00226ea80084d400d2623232323333573466e1cd55cea801240004a0044a0089309bae357426aae7940044dd500109a80124c24c4424660020060044002444444444424666666666600201601401201000e00c00a00800600440024424660020060044002444246660020080060044002442466002006004400224244600400622440022400224424660020060042400224424660020060042400224424660020060042400224400424400240022424446006008224440042244400224002424444600800a424444600600a424444600400a424444600200a40024424660020060044002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024244600400644424466600200a008006400242446004006424460020064002224a0082244004244244660020080062400224002400222442466002006004224002224646002002446600660040040022222466a0044246600246a00644600400646a00644600200600224646460020024466006600400400244246a6008246a60080066a00600200266464666444646644646466644464646664446464646464646464646464646464664464646464646464646464646464646464646464646464646464646464646464640024444646464646464646464660326601c9201164e4654206d697373696e672066726f6d20696e707574003335017021335502930275008301300d48008cc064cc039241174e4654206d697373696e672066726f6d206f7574707574003335017021335502930275003301300d48008cc064cc03924110616c72656164792066696e697368656400330155007301000d330193300e49010f77726f6e67206e657720766f746573003335017021335502930275003302500d333501801a5007480094cd4c128cc051401cc0400344cc064cc03924011a636f756e74657220696e63726561736520746f6f20736d616c6c0033016500148008cc0392411a636f756e74657220696e63726561736520746f6f206c617267650033015500148320044cc03924011377726f6e6720636f756e7465722076616c756500333501702150023300f333501801a301100d5006301200d13301a500150051335502730255001302200b130275001153353503e3018006130011622153353504000110022213005162350284912365787065637465642065786163746c79206f6e65206c6f6273746572206f7574707574001335502330215002301e0071335502230205001301e00613022500115335350343027001213023001135023491156c6f627374657220696e707574206d697373696e6700225335303e0011040133573800407e4466e180080048d4c05c0048888880048d4c0580048888880188d4c0540048888880088d4c05000488888801488ccd5cd19b8800200103a03922333573466e240080040e40e088ccd5cd19b88002001037038120011200122533530330021001103422337000040024466e0400800494cd4d4088c05400484d4c06400488d4c070004888d4c07001c88d4c07c0088888888888ccd54c0504800488d4c0b40088894cd4c118cc06c05000c4cd40fc014010401140ec0244d4050d4c048cd5ce2481024c6600013498d4004800448c004d540c488448894cd4d40a80044008884cc014008ccd54c01c4800401401000488d4c06400888d4c06c00c88c8cd4c0880148cd4c08c01094cd4c0d0ccd5cd19b8f0020010360351500310352035233530230042035253353034333573466e3c0080040d80d45400c40d454cd4d409000c854cd4d409400884cc02400800440cc54cd4d4090004840cc40cc88cd4c06c0088cd4c0700088cc0180080048880c4888cd4c07801080c48894cd4c0c8ccd5cd19b87006003034033153353032333573466e1c0140080d00cc4cc02401000440cc40cc88ccd5cd19b8700200102d02c22335301a0022335301b002233005002001202d2335301b002202d23300500200122333573466e3c0080040ac0a88d4c00c0048888880108d4c00800488888800c800488d4d5404000488ccc014010008004888c8c8c8c004018d4004800448c004d540ac88cd4d408400520002235355016002225335302d333573466e3c0080280bc0b84c0200044c01800c8c8c8c00400cd4004800448c004d540ac88cd4d408400520002235355016002225335302d333573466e3c0080240bc0b840044c01800c4488c0080048d4c02c0048880088d4c0240048800448d4010d4c008cd5ce000801a4c24002400224c46a6004002446a600a0044444444444a6666a602801642a03842a03842a03842666aa603c24002a03246a602400244a66a60566605400400826a0400062a03e016400240024002400222400240024002400240024002266a01aa002a006244a66a6a0060044200620022424460040062244002240026a00240022460026aa01c442246444a66a6a01000226a01600844266a00a6008004666aa60102400200c00800226a01200222440042442446600200800624002246a6a00600244002246a6a0040024400424424660020060042400244a66a6006666ae68cdc79a9803001110011a9803000910010028020999ab9a3370e6a600c004440026a600c0024400200a00820082440042440024002400222464600200244660066004004002664466446666660049041424746de60d64a58ceed8399aa8022451ccc7888851f0f5aa64c136e0c8fb251e9702f3f6c9efcf3a60a54f4190048810a4c6f62737465724e46540033550044891cfda1b6b487bee2e7f64ecf24d24b1224342484c0195ee1b7b943db500048810e4c6f6273746572436f756e7465720033550044891cfda1b6b487bee2e7f64ecf24d24b1224342484c0195ee1b7b943db500048810c4c6f6273746572566f74657300482184d20e807222222123333330010070060050040030022001112212330010030021120011" 5 | } 6 | -------------------------------------------------------------------------------- /scripts/mainnet-query-protocol-parameters.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export CARDANO_NODE_SOCKET_PATH=node.socket 3 | ./cardano-cli query protocol-parameters \ 4 | --mainnet \ 5 | --out-file "mainnet-protocol-parameters.json" 6 | -------------------------------------------------------------------------------- /scripts/mainnet-script-address.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ./cardano-cli address build \ 4 | --payment-script-file $1 \ 5 | --mainnet 6 | -------------------------------------------------------------------------------- /scripts/mainnet-utxo-at.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export CARDANO_NODE_SOCKET_PATH=node.socket 4 | ./cardano-cli query utxo \ 5 | --mainnet \ 6 | --address $(cat $1) 7 | -------------------------------------------------------------------------------- /scripts/nft-mint-policy.plutus: -------------------------------------------------------------------------------- 1 | { 2 | "type": "PlutusScriptV1", 3 | "description": "", 4 | "cborHex": "590be6590be3010000333232323322333222332232333222333222333222333333332222222233223333322222333322223322332233223332223322332233223322332232323233223232323232323322323232323232323233223232323232323232323232323232323232323232323232323232323232323232223355038350030132232323303433023491115554784f206e6f7420636f6e73756d656400335503c335502b3035120012333503403c302300100630215001330234911377726f6e6720616d6f756e74206d696e746564005335350703024302050011300216221353555029002222533535075004133039333503802f00200b333503802e00148008884c024584c0f000881a848888c014cc00cc010008c01800494cd4c18c00441a04d4060d4c19ccd5ce2481025064000684988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266078a002a0042600c6ae8540084c050d5d09aba25001135573ca00226ea80084d405d262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e9309999999999826a800a8012801a8022802a8032803a8042804a805099a81080b1aba15012133502001635742a0202666aa032eb94060d5d0a8070999aa80c3ae501735742a018266a03a0426ae8540284cd4070cd54078085d69aba15008133501675a6ae8540184cd4069d71aba150041335019335501b75c0346ae8540084c080d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d40592623232323232323333573466e1cd55cea802a40004a0044a00e9309981f2800a8010980b9aba1500213005357426ae8940044d55cf280089baa0021350154988c8c8c8c8c8c8c8c8cccd5cd19b8735573aa00e90001280112804a4c2666082a002a004a006260106ae8540104ccd54029d728049aba15002133500775c6ae84d5d1280089aba25001135573ca00226ea80084d40512623232323232323333573466e1cd55cea802a40004a0044a00e930998202800a8010980a1aba150021335005012357426ae8940044d55cf280089baa002135013498488c8c8c8c8c8c8cccd5cd19b87500448000940089401126135043500113006357426aae79400c4cccd5cd19b87500148008941049401126135573aa00226ea80084d404d261335500175ceb444888c8c8c004dd58019a80090008918009aa83491191919191919191999aab9f0085506a2530021200106c350022200135001220023555507012223300321300a357440124266a0dea00aa600624002266aa0daa002a004260106aae7540084c018d55cf280089aba10011223232323232323333573466e1cd55cea802a40004a0044a00e93099a8212800a801099a8038031aba150021335007005357426ae8940044d55cf280089baa002135010498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a08aa002a004266a01000c6ae8540084c020d5d09aba25001135573ca00226ea80084d403d261223232323232323333573466e1cd55cea802a40004a0044a00e93099a8212800a801099a8038031aba1500213007357426ae8940044d55cf280089baa00213500e498488c8c8c8c8c8c8c8cccd5cd19b8750054801094120940092613333573466e1d4011200225002250044984d411d40044c018d5d09aab9e500313333573466e1d4005200025045250044984d55cea80089baa00213500d4988c8c8c8cccd5cd19b875002480088170940092613333573466e1d40052000205a250034984d55ce9baa00213500b498488c8c8c004dd60019a80090008918009aa831111999aab9f00125062233506130063574200460066ae88008178800444888c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266aa0c8a002a0042600e6ae8540084c014d5d09aba25001135573ca00226ea80084d402926232323232323232323232323232323333573466e1d4029200625002250044984c13940044c038d5d09aab9e500b13333573466e1d401d200425002250044984c12540044c030d5d09aab9e500813333573466e1d4011200225002250044984c11540044c02cd5d09aab9e500513333573466e1d4005200025003250064984d55cea80189821a80089bae357426aae7940044dd500109a803a4c4646464646464646464646464646464646464646464646464646666ae68cdc3a80aa401840c04a0049309999ab9a3370ea028900510301280124c26666ae68cdc3a809a40104a0044a00c9309982d2800a80109bae35742a00426eb4d5d09aba25001135573ca02426666ae68cdc3a8072400c4a0044a00c9309982b2800a80109bae35742a00426eb8d5d09aba25001135573ca01a26666ae68cdc3a804a40084a0044a00c9309982aa800a801098069aba150021375c6ae84d5d1280089aab9e500813333573466e1d4011200225002250044984c14540044c020d5d09aab9e500513333573466e1d4005200025003250064984d55cea80189825a800898021aba135573ca00226ea80084d40192623232323232323232323232323333573466e1d4021200225002250084984ccc15940054009400c4dd69aba150041375a6ae8540084dd69aba135744a00226ae8940044d55cf280289999ab9a3370ea0029000128019280324c26aae75400c4c13d40044c010d5d09aab9e50011375400426a00a93119191919191919191999ab9a3370ea0089001128011280224c260a8a00226eb8d5d09aab9e500513333573466e1d4005200025003250064984d55cea80189828a80089bae357426aae7940044dd500109a80224c46464646464646666ae68cdc39aab9d500548000940089401d26133044500150021300635742a00426eb4d5d09aba25001135573ca00226ea80084d400d2623232323333573466e1cd55cea801240004a0044a0089309bae357426aae7940044dd500109a80124c24c46a6042002444444444400e46a6040002444444444401446a60420024400444a66a60920022096266ae700081288d4008488ccd5401488d4d5415000888ccd5402488d4d54160008894cd4c144ccd5cd19b870014800014c148400c4cc028ccd55403c01800800400c00c00400400c48cd4005413541384488c8c8004d4004800448c004d54148894cd4d413c0044010884cc01c008c01000444488848ccc00401000c008444800488ccd5cd19b8700200104504422333573466e3c00800411010c448c88cd5400d40080044d4009401448cd403c88ccd401400c008004d400800448d4d40140048800448d4d4010004880084cd400c0040f0894cd4c0f000840f8400448848cc00400c0084800448004894cd4c0e0008400440e4d4004800448c004d5410088448c8894cd4d41040044d4020010884cd4014c010008ccd54c020480040180100044d401800448d4d400c0048800448d4d40080048800848848cc00400c00848004894cd4c0c4ccd5cd19b8f35302100222002353021001220020330321333573466e1cd4c08400888004d4c084004880040cc0c840c84488c0080048d4c008004880088848cc00400c0088004888888888848cccccccccc00402c02802402001c01801401000c00880048848cc00400c008800488848ccc00401000c00880048848cc00400c008800448488c00800c44880044800448848cc00400c0084800448848cc00400c0084800448848cc00400c00848004484888c00c010448880084488800448004848888c010014848888c00c014848888c008014848888c00401480048848cc00400c0088004848888888c01c0208848888888cc018024020848888888c014020488888880104888888800c8848888888cc0080240208848888888cc00402402080048488c00800c888488ccc00401401000c80048488c00800c8488c00400c8004488008488004800444940184800480044488008488488cc00401000c48004448848cc00400c008448004448c8c00400488cc00cc00800800444448cd4008848cc0048d400c88c00800c8d400c88c00400c00448c8c8c00400488cc00cc0080080048848d4c01048d4c01000cd400c00400522010a4c6f62737465724e46540033223300248920080c6398c1bf3bcb71199e8bfa4f5ff3549af9bb9787e66f41fbc4ab1613c0d700480008848cc00400c0088005" 5 | } 6 | -------------------------------------------------------------------------------- /scripts/other-mint-policy.plutus: -------------------------------------------------------------------------------- 1 | { 2 | "type": "PlutusScriptV1", 3 | "description": "", 4 | "cborHex": "59094f59094c010000323232332233223332223233322233322233333333222222223322333332222233332222333222332233223322333222332233223322332233223232323232323232323232323232323232323232323232323233500101122031122223005330033004002300600125335302c001104d13501835304c33573892010250640004d4988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26603ca002a0042600c6ae8540084c050d5d09aba25001135573ca00226ea80084d405d262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e9309999999999817a800a8012801a8022802a8032803a8042804a805099a81080b1aba15012133502001635742a0202666aa032eb94060d5d0a8070999aa80c3ae501735742a018266a03a0426ae8540284cd4070cd54078085d69aba15008133501675a6ae8540184cd4069d71aba150041335019335501b75c0346ae8540084c080d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d40592623232323232323333573466e1cd55cea802a40004a0044a00e930998102800a8010980b9aba1500213005357426ae8940044d55cf280089baa0021350154988c8c8c8c8c8c8c8c8cccd5cd19b8735573aa00e90001280112804a4c2666046a002a004a006260106ae8540104ccd54029d728049aba15002133500775c6ae84d5d1280089aba25001135573ca00226ea80084d40512623232323232323333573466e1cd55cea802a40004a0044a00e930998112800a8010980a1aba150021335005012357426ae8940044d55cf280089baa002135013498488c8c8c8c8c8c8cccd5cd19b87500448000940089401126135025500113006357426aae79400c4cccd5cd19b875001480089408c9401126135573aa00226ea80084d404d261335500175ceb444888c8c8c004dd58019a80090008918009aa82591191919191919191999aab9f0085504c25300212001051350022200135001220023555505212223300321300a357440124266a09ea00aa600624002266aa09ea002a004260106aae7540084c018d55cf280089aba10011223232323232323333573466e1cd55cea802a40004a0044a00e93099a8122800a801099a8038031aba150021335007005357426ae8940044d55cf280089baa002135010498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04ea002a004266a01000c6ae8540084c020d5d09aba25001135573ca00226ea80084d403d261223232323232323333573466e1cd55cea802a40004a0044a00e93099a8122800a801099a8038031aba1500213007357426ae8940044d55cf280089baa00213500e498488c8c8c8c8c8c8c8cccd5cd19b87500548010940b4940092613333573466e1d4011200225002250044984d40b140044c018d5d09aab9e500313333573466e1d400520002502a250044984d55cea80089baa00213500d4988c8c8c8cccd5cd19b875002480088094940092613333573466e1d400520002023250034984d55ce9baa00213500b498488c8c8c004dd60019a80090008918009aa822111999aab9f00125042233504130063574200460066ae8800810c800444888c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266aa08ca002a0042600e6ae8540084c014d5d09aba25001135573ca00226ea80084d402926232323232323232323232323232323333573466e1d4029200625002250044984c0cd40044c038d5d09aab9e500b13333573466e1d401d200425002250044984c0b940044c030d5d09aab9e500813333573466e1d4011200225002250044984c0a940044c02cd5d09aab9e500513333573466e1d4005200025003250064984d55cea80189814280089bae357426aae7940044dd500109a803a4c4646464646464646464646464646464646464646464646464646666ae68cdc3a80aa4018408a4a0049309999ab9a3370ea028900510229280124c26666ae68cdc3a809a40104a0044a00c9309981fa800a80109bae35742a00426eb4d5d09aba25001135573ca02426666ae68cdc3a8072400c4a0044a00c9309981da800a80109bae35742a00426eb8d5d09aba25001135573ca01a26666ae68cdc3a804a40084a0044a00c9309981d2800a801098069aba150021375c6ae84d5d1280089aab9e500813333573466e1d4011200225002250044984c0d940044c020d5d09aab9e500513333573466e1d4005200025003250064984d55cea801898182800898021aba135573ca00226ea80084d40192623232323232323232323232323333573466e1d4021200225002250084984ccc0ed40054009400c4dd69aba150041375a6ae8540084dd69aba135744a00226ae8940044d55cf280289999ab9a3370ea0029000128019280324c26aae75400c4c0d140044c010d5d09aab9e50011375400426a00a93119191919191919191999ab9a3370ea0089001128011280224c26072a00226eb8d5d09aab9e500513333573466e1d4005200025003250064984d55cea8018981b280089bae357426aae7940044dd500109a80224c46464646464646666ae68cdc39aab9d500548000940089401d26133029500150021300635742a00426eb4d5d09aba25001135573ca00226ea80084d400d2623232323333573466e1cd55cea801240004a0044a0089309bae357426aae7940044dd500109a80124c24c4424660020060044002444444444424666666666600201601401201000e00c00a00800600440024424660020060044002444246660020080060044002442466002006004400224244600400622440022400224424660020060042400224424660020060042400224424660020060042400224400424400240022424446006008224440042244400224002424444600800a424444600600a424444600400a424444600200a40024424660020060044002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024244600400644424466600200a008006400242446004006424460020064002224a0082244004244244660020080062400224002400222442466002006004224002224646002002446600660040040022222466a0044246600246a00644600400646a00644600200600224646460020024466006600400400244246a6008246a60080066a006002003" 5 | } 6 | -------------------------------------------------------------------------------- /scripts/policyid.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ./cardano-cli transaction policyid \ 3 | --script-file $1 4 | -------------------------------------------------------------------------------- /src/Cardano/PlutusLobster/LobsterScript.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE DataKinds #-} 2 | {-# LANGUAGE DeriveAnyClass #-} 3 | {-# LANGUAGE DeriveGeneric #-} 4 | {-# LANGUAGE FlexibleInstances #-} 5 | {-# LANGUAGE FlexibleContexts #-} 6 | {-# LANGUAGE MultiParamTypeClasses #-} 7 | {-# LANGUAGE NoImplicitPrelude #-} 8 | {-# LANGUAGE NamedFieldPuns #-} 9 | {-# LANGUAGE OverloadedStrings #-} 10 | {-# LANGUAGE ScopedTypeVariables #-} 11 | {-# LANGUAGE TemplateHaskell #-} 12 | {-# LANGUAGE TypeApplications #-} 13 | {-# LANGUAGE TypeFamilies #-} 14 | {-# LANGUAGE TypeOperators #-} 15 | 16 | module Cardano.PlutusLobster.LobsterScript 17 | ( apiNFTMintScript 18 | , apiOtherMintScript 19 | , apiLobsterScript 20 | , LobsterParams (..) 21 | , nftTokenName 22 | , counterTokenName 23 | , votesTokenName 24 | ) where 25 | 26 | import Cardano.Api.Shelley (PlutusScript (..), PlutusScriptV1) 27 | import Codec.Serialise 28 | import qualified Data.ByteString.Lazy as LB 29 | import qualified Data.ByteString.Short as SBS 30 | import Ledger hiding (singleton) 31 | import qualified Ledger.Typed.Scripts as Scripts 32 | import Ledger.Value as Value 33 | import qualified PlutusTx 34 | import PlutusTx.Builtins (modInteger) 35 | import PlutusTx.Prelude hiding (Semigroup (..), unless) 36 | import qualified Plutus.V1.Ledger.Scripts as Plutus 37 | import Prelude (Show) 38 | 39 | data LobsterParams = LobsterParams 40 | { lpSeed :: Integer 41 | , lpNFT :: AssetClass 42 | , lpCounter :: AssetClass 43 | , lpVotes :: AssetClass 44 | , lpNameCount :: Integer 45 | , lpVoteCount :: Integer 46 | } deriving Show 47 | 48 | PlutusTx.makeLift ''LobsterParams 49 | 50 | {- HLINT ignore "Avoid lambda" -} 51 | 52 | {-# INLINABLE mkNFTPolicy #-} 53 | mkNFTPolicy :: TokenName -> TxOutRef -> BuiltinData -> ScriptContext -> Bool 54 | mkNFTPolicy tn utxo _ ctx = traceIfFalse "UTxO not consumed" hasUTxO && 55 | traceIfFalse "wrong amount minted" checkMintedAmount 56 | where 57 | info :: TxInfo 58 | info = scriptContextTxInfo ctx 59 | 60 | hasUTxO :: Bool 61 | hasUTxO = any (\i -> txInInfoOutRef i == utxo) $ txInfoInputs info 62 | 63 | checkMintedAmount :: Bool 64 | checkMintedAmount = case flattenValue (txInfoMint info) of 65 | [(_, tn', amt)] -> tn' == tn && amt == 1 66 | _ -> False 67 | 68 | nftTokenName, counterTokenName, votesTokenName :: TokenName 69 | nftTokenName = "LobsterNFT" 70 | counterTokenName = "LobsterCounter" 71 | votesTokenName = "LobsterVotes" 72 | 73 | nftPolicy :: TxOutRef -> Scripts.MintingPolicy 74 | nftPolicy utxo = mkMintingPolicyScript $ 75 | $$(PlutusTx.compile [|| \tn utxo' -> Scripts.wrapMintingPolicy $ mkNFTPolicy tn utxo' ||]) 76 | `PlutusTx.applyCode` 77 | PlutusTx.liftCode nftTokenName 78 | `PlutusTx.applyCode` 79 | PlutusTx.liftCode utxo 80 | 81 | nftPlutusScript :: TxOutRef -> Script 82 | nftPlutusScript = unMintingPolicyScript . nftPolicy 83 | 84 | nftValidator :: TxOutRef -> Validator 85 | nftValidator = Validator . nftPlutusScript 86 | 87 | nftScriptAsCbor :: TxOutRef -> LB.ByteString 88 | nftScriptAsCbor = serialise . nftValidator 89 | 90 | apiNFTMintScript :: TxOutRef -> PlutusScript PlutusScriptV1 91 | apiNFTMintScript = PlutusScriptSerialised . SBS.toShort . LB.toStrict . nftScriptAsCbor 92 | 93 | {-# INLINABLE mkOtherPolicy #-} 94 | mkOtherPolicy :: BuiltinData -> ScriptContext -> Bool 95 | mkOtherPolicy _ _ = True 96 | 97 | otherPolicy :: Scripts.MintingPolicy 98 | otherPolicy = mkMintingPolicyScript $$(PlutusTx.compile [|| Scripts.wrapMintingPolicy mkOtherPolicy ||]) 99 | 100 | otherPlutusScript :: Script 101 | otherPlutusScript = unMintingPolicyScript otherPolicy 102 | 103 | otherValidator :: Validator 104 | otherValidator = Validator otherPlutusScript 105 | 106 | otherScriptAsCbor :: LB.ByteString 107 | otherScriptAsCbor = serialise otherValidator 108 | 109 | apiOtherMintScript :: PlutusScript PlutusScriptV1 110 | apiOtherMintScript = PlutusScriptSerialised $ SBS.toShort $ LB.toStrict otherScriptAsCbor 111 | 112 | mkLobsterValidator :: LobsterParams -> BuiltinData -> BuiltinData -> ScriptContext -> Bool 113 | mkLobsterValidator lp _ _ ctx = 114 | traceIfFalse "NFT missing from input" (oldNFT == 1) && 115 | traceIfFalse "NFT missing from output" (newNFT == 1) && 116 | traceIfFalse "already finished" (oldVotes <= lpVoteCount lp) && 117 | traceIfFalse "wrong new votes" (newVotes == oldVotes + 1) && 118 | if oldVotes < lpVoteCount lp then 119 | traceIfFalse "counter increase too small" (increase >= 1) && 120 | traceIfFalse "counter increase too large" (increase <= 100) 121 | else 122 | traceIfFalse "wrong counter value" (newCounter == ((lpSeed lp + oldCounter) `modInteger` lpNameCount lp)) 123 | where 124 | ownInput :: TxOut 125 | ownInput = case findOwnInput ctx of 126 | Nothing -> traceError "lobster input missing" 127 | Just i -> txInInfoResolved i 128 | 129 | ownOutput :: TxOut 130 | ownOutput = case getContinuingOutputs ctx of 131 | [o] -> o 132 | _ -> traceError "expected exactly one lobster output" 133 | 134 | inVal, outVal :: Value 135 | inVal = txOutValue ownInput 136 | outVal = txOutValue ownOutput 137 | 138 | oldNFT, newNFT, oldCounter, newCounter, increase, oldVotes, newVotes :: Integer 139 | oldNFT = assetClassValueOf inVal $ lpNFT lp 140 | newNFT = assetClassValueOf outVal $ lpNFT lp 141 | oldCounter = assetClassValueOf inVal $ lpCounter lp 142 | newCounter = assetClassValueOf outVal $ lpCounter lp 143 | oldVotes = assetClassValueOf inVal $ lpVotes lp 144 | newVotes = assetClassValueOf outVal $ lpVotes lp 145 | increase = newCounter - oldCounter 146 | 147 | data LobsterNaming 148 | instance Scripts.ValidatorTypes LobsterNaming where 149 | type instance DatumType LobsterNaming = BuiltinData 150 | type instance RedeemerType LobsterNaming = BuiltinData 151 | 152 | typedLobsterValidator :: LobsterParams -> Scripts.TypedValidator LobsterNaming 153 | typedLobsterValidator lp = Scripts.mkTypedValidator @LobsterNaming 154 | ($$(PlutusTx.compile [|| mkLobsterValidator ||]) 155 | `PlutusTx.applyCode` PlutusTx.liftCode lp) 156 | $$(PlutusTx.compile [|| wrap ||]) 157 | where 158 | wrap = Scripts.wrapValidator @BuiltinData @BuiltinData 159 | 160 | lobsterValidator :: LobsterParams -> Validator 161 | lobsterValidator = Scripts.validatorScript . typedLobsterValidator 162 | 163 | lobsterScript :: LobsterParams -> Plutus.Script 164 | lobsterScript = Ledger.unValidatorScript . lobsterValidator 165 | 166 | lobsterScriptAsShortBs :: LobsterParams -> SBS.ShortByteString 167 | lobsterScriptAsShortBs = SBS.toShort . LB.toStrict . serialise . lobsterScript 168 | 169 | apiLobsterScript :: LobsterParams -> PlutusScript PlutusScriptV1 170 | apiLobsterScript = PlutusScriptSerialised . lobsterScriptAsShortBs 171 | --------------------------------------------------------------------------------