[schooltool-checkins] rev 877 - in trunk/demo: . cgi-bin lib scripts tests

Marius Gedminas marius at pov.lt
Fri May 7 20:13:22 BST 2004


Author: mg
Date: 2004-05-07 19:13:22 +0300 (Fri, 07 May 2004)
New Revision: 877

Added:
   trunk/demo/lib/
   trunk/demo/lib/beale.wordlist.asc
   trunk/demo/lib/demo.py
   trunk/demo/lib/democonfig.py
   trunk/demo/scripts/democtl.py
   trunk/demo/tests/
   trunk/demo/tests/test_demo.py
Removed:
   trunk/demo/beale.wordlist.asc
   trunk/demo/cgi-bin/demo.py
   trunk/demo/cgi-bin/tests.py
   trunk/demo/democonfig.py
   trunk/demo/scripts/demo-ctl.py
   trunk/demo/testsetup.sh
Modified:
   trunk/demo/README.txt
   trunk/demo/cgi-bin/confirm.py
   trunk/demo/cgi-bin/register.py
   trunk/demo/scripts/cleanup.py
   trunk/demo/scripts/democonfig.h
Log:
Reorganized file locations.

Added INSTALL.txt with installation instructions.



Modified: trunk/demo/README.txt
===================================================================
--- trunk/demo/README.txt	2004-05-07 15:39:03 UTC (rev 876)
+++ trunk/demo/README.txt	2004-05-07 16:13:22 UTC (rev 877)
@@ -50,7 +50,7 @@
     separate port.  The uid, gid and port number can be calculated from the
     instance number.
 
-  - A script to manage demo instances (/opt/schooltool/bin/demo-ctl.py).
+  - A script to manage demo instances (/opt/schooltool-demo/bin/democtl).
     It accepts the following arguments
 
       . start n -- start instance n.  Barfs if instance n does not exist.
@@ -68,15 +68,11 @@
 
       . destroy n -- destroy instance n.  Stops the instance if it is running.
         Barfs if instance n does not exist.  By 'destroy' I mean that the
-        instance subdirectory is recursively removed.
+        instance subdirectory is removed.
 
    - An init.d script (/etc/init.d/schooltool-demo) that starts all existing
      instances on system startup and stops them on shutdown.
 
-   - An init.d script (schooltool-uml) for the *host* system that starts
-     the schooltool-demo UML instance on startup and gracefully stops it
-     on shutdown.
-
    - A cron script (/opt/schooltool-demo/bin/cleanup) that periodically
      looks for and removes expired demo instances.
 
@@ -86,7 +82,13 @@
 
    - A web application for registering new users.
 
+On the host system:
+
+   - An init.d script (/etc/init.d/schooltool-demo) that starts the
+     schooltool-demo UML instance on startup and gracefully stops it
+     on shutdown.
+
 Installation
 ------------
 
-Read uml/notes.txt for thorough instructions.
+Read INSTALL.txt.

Deleted: trunk/demo/beale.wordlist.asc
===================================================================
--- trunk/demo/beale.wordlist.asc	2004-05-07 15:39:03 UTC (rev 876)
+++ trunk/demo/beale.wordlist.asc	2004-05-07 16:13:22 UTC (rev 877)
@@ -1,7788 +0,0 @@
------BEGIN PGP SIGNED MESSAGE-----
-
-11111	a
-11112	a's
-11113	a-1
-11114	a-z
-11115	aa
-11116	aaa
-11121	aaaa
-11122	aaron
-11123	ab
-11124	aback
-11125	abacus
-11126	abase
-11131	abash
-11132	abate
-11133	abbey
-11134	abbot
-11135	abbr
-11136	abby
-11141	abc
-11142	abc's
-11143	abcd
-11144	abduct
-11145	abdul
-11146	abe
-11151	abed
-11152	abel
-11153	abet
-11154	abhor
-11155	abide
-11156	ablaze
-11161	able
-11162	abm
-11163	abner
-11164	aboard
-11165	abode
-11166	abort
-11211	about
-11212	above
-11213	abram
-11214	absent
-11215	absorb
-11216	abuse
-11221	abut
-11222	abyss
-11223	ac
-11224	ac/dc
-11225	accept
-11226	accuse
-11231	ace
-11232	aces
-11233	ache
-11234	ached
-11235	aches
-11236	achoo
-11241	achy
-11242	acid
-11243	acidic
-11244	acids
-11245	acme
-11246	acne
-11251	acorn
-11252	acquit
-11253	acre
-11254	acres
-11255	acrid
-11256	act
-11261	acted
-11262	actor
-11263	acts
-11264	acute
-11265	ad
-11266	ada
-11311	adage
-11312	adagio
-11313	adair
-11314	adam
-11315	adams
-11316	adapt
-11321	add
-11322	added
-11323	adder
-11324	addict
-11325	addle
-11326	adds
-11331	adele
-11332	adept
-11333	adieu
-11334	adios
-11335	adjust
-11336	adler
-11341	admit
-11342	ado
-11343	adobe
-11344	adolf
-11345	adonis
-11346	adopt
-11351	adore
-11352	adorn
-11353	ads
-11354	adult
-11355	advent
-11356	adverb
-11361	advise
-11362	ae
-11363	aeiou
-11364	aerial
-11365	aesop
-11366	af
-11411	afar
-11412	affair
-11413	afghan
-11414	afire
-11415	afoot
-11416	afraid
-11421	africa
-11422	afro
-11423	aft
-11424	after
-11425	ag
-11426	again
-11431	agate
-11432	age
-11433	aged
-11434	agenda
-11435	agent
-11436	ages
-11441	agile
-11442	aging
-11443	aglow
-11444	agnes
-11445	agnew
-11446	ago
-11451	agony
-11452	agree
-11453	ah
-11454	aha
-11455	ahab
-11456	ahead
-11461	ahem
-11462	ahmed
-11463	ahoy
-11464	ai
-11465	aid
-11466	aide
-11511	aided
-11512	ail
-11513	aim
-11514	aimed
-11515	aims
-11516	ain't
-11521	air
-11522	airman
-11523	airway
-11524	airy
-11525	aisle
-11526	aj
-11531	ajar
-11532	ajax
-11533	ak
-11534	aka
-11535	akers
-11536	akin
-11541	akqj
-11542	akron
-11543	al
-11544	alan
-11545	alarm
-11546	alas
-11551	alaska
-11552	album
-11553	alden
-11554	ale
-11555	alec
-11556	aleck
-11561	alert
-11562	alex
-11563	alexa
-11564	alexei
-11565	algae
-11566	alger
-11611	ali
-11612	alias
-11613	alibi
-11614	alice
-11615	alien
-11616	alight
-11621	align
-11622	alike
-11623	alive
-11624	alkali
-11625	all
-11626	allah
-11631	allan
-11632	allen
-11633	alley
-11634	allied
-11635	allot
-11636	allow
-11641	alloy
-11642	allure
-11643	ally
-11644	alma
-11645	almost
-11646	alms
-11651	aloft
-11652	aloha
-11653	alone
-11654	along
-11655	aloof
-11656	aloud
-11661	alp
-11662	alpha
-11663	alps
-11664	also
-11665	alsop
-11666	altar
-12111	alter
-12112	altho
-12113	alto
-12114	alum
-12115	alumni
-12116	alvin
-12121	alyx
-12122	am
-12123	am/fm
-12124	amass
-12125	amaze
-12126	amber
-12131	amble
-12132	ambush
-12133	amen
-12134	amend
-12135	ames
-12136	amid
-12141	amigo
-12142	amino
-12143	amish
-12144	amiss
-12145	amity
-12146	ammo
-12151	amok
-12152	among
-12153	amos
-12154	amour
-12155	amp
-12156	ampere
-12161	ample
-12162	amply
-12163	amps
-12164	amulet
-12165	amuse
-12166	amy
-12211	an
-12212	anal
-12213	anchor
-12214	and
-12215	andes
-12216	andre
-12221	andrew
-12222	andy
-12223	anew
-12224	angel
-12225	angelo
-12226	anger
-12231	angie
-12232	angle
-12233	angles
-12234	anglo
-12235	angry
-12236	angst
-12241	angus
-12242	anita
-12243	ankle
-12244	ann
-12245	anna
-12246	anne
-12251	annex
-12252	annie
-12253	annoy
-12254	annul
-12255	anon
-12256	answer
-12261	ant
-12262	ante
-12263	anti
-12264	antic
-12265	anton
-12266	ants
-12311	anus
-12312	anvil
-12313	any
-12314	anyhow
-12315	anyway
-12316	ao
-12321	aok
-12322	aorta
-12323	ap
-12324	apart
-12325	apathy
-12326	ape
-12331	apes
-12332	apex
-12333	aphid
-12334	aplomb
-12335	appeal
-12336	appear
-12341	append
-12342	apple
-12343	apply
-12344	apr
-12345	april
-12346	apron
-12351	apt
-12352	aq
-12353	aqua
-12354	ar
-12355	arab
-12356	arabs
-12361	araby
-12362	arbor
-12363	arc
-12364	arcade
-12365	arch
-12366	archer
-12411	arcs
-12412	ardent
-12413	are
-12414	area
-12415	areas
-12416	arena
-12421	argon
-12422	argue
-12423	aria
-12424	arid
-12425	arise
-12426	ark
-12431	arlene
-12432	arm
-12433	armed
-12434	armor
-12435	arms
-12436	army
-12441	arnold
-12442	aroma
-12443	arose
-12444	array
-12445	arrive
-12446	arrow
-12451	arson
-12452	art
-12453	artery
-12454	arthur
-12455	artie
-12456	arts
-12461	arty
-12462	aryan
-12463	as
-12464	asap
-12465	ascend
-12466	ascii
-12511	ash
-12512	ashen
-12513	ashes
-12514	ashley
-12515	ashy
-12516	asia
-12521	asian
-12522	aside
-12523	ask
-12524	asked
-12525	askew
-12526	asks
-12531	asleep
-12532	asp
-12533	aspen
-12534	aspire
-12535	ass
-12536	asses
-12541	asset
-12542	assn
-12543	assure
-12544	asthma
-12545	astor
-12546	astral
-12551	at
-12552	at&t
-12553	atari
-12554	ate
-12555	athens
-12556	atlas
-12561	atm
-12562	atoll
-12563	atom
-12564	atomic
-12565	atoms
-12566	atone
-12611	atop
-12612	attic
-12613	attire
-12614	attn
-12615	au
-12616	audio
-12621	audit
-12622	audrey
-12623	aug
-12624	augur
-12625	august
-12626	auk
-12631	aunt
-12632	aunts
-12633	aura
-12634	aural
-12635	austin
-12636	auto
-12641	autumn
-12642	av
-12643	avail
-12644	avert
-12645	avery
-12646	avian
-12651	aviate
-12652	avid
-12653	avis
-12654	avoid
-12655	avon
-12656	avow
-12661	aw
-12662	await
-12663	awake
-12664	award
-12665	aware
-12666	awash
-13111	away
-13112	awe
-13113	awed
-13114	awful
-13115	awl
-13116	awn
-13121	awoke
-13122	awol
-13123	awry
-13124	ax
-13125	axe
-13126	axes
-13131	axiom
-13132	axis
-13133	axle
-13134	ay
-13135	aye
-13136	az
-13141	aztec
-13142	azure
-13143	b
-13144	b&w
-13145	b's
-13146	b-52
-13151	ba
-13152	baal
-13153	babe
-13154	babel
-13155	babes
-13156	baboon
-13161	baby
-13162	bach
-13163	back
-13164	backup
-13165	bacon
-13166	bad
-13211	badge
-13212	badly
-13213	baffle
-13214	bag
-13215	bagel
-13216	baggy
-13221	bags
-13222	bah
-13223	bahama
-13224	bail
-13225	bait
-13226	bake
-13231	baker
-13232	bakes
-13233	bald
-13234	bale
-13235	bali
-13236	balk
-13241	balkan
-13242	ball
-13243	balled
-13244	ballot
-13245	balls
-13246	balm
-13251	balmy
-13252	balsa
-13253	bambi
-13254	ban
-13255	banal
-13256	banana
-13261	band
-13262	bandit
-13263	bands
-13264	bandy
-13265	bane
-13266	bang
-13311	bangs
-13312	banish
-13313	banjo
-13314	bank
-13315	banks
-13316	bar
-13321	barb
-13322	barbs
-13323	bard
-13324	bare
-13325	barf
-13326	barge
-13331	bark
-13332	barks
-13333	barley
-13334	barn
-13335	barnes
-13336	baron
-13341	barony
-13342	barry
-13343	bars
-13344	bart
-13345	barter
-13346	barton
-13351	base
-13352	bash
-13353	basic
-13354	basil
-13355	basin
-13356	basis
-13361	bask
-13362	basket
-13363	bass
-13364	baste
-13365	bat
-13366	batch
-13411	bates
-13412	bath
-13413	bathe
-13414	baths
-13415	baton
-13416	bats
-13421	bauble
-13422	baud
-13423	bawd
-13424	bawdy
-13425	bawl
-13426	bay
-13431	bayer
-13432	bayou
-13433	bays
-13434	bazaar
-13435	bb
-13436	bbb
-13441	bbbb
-13442	bbc
-13443	bbs
-13444	bc
-13445	bcd
-13446	bd
-13451	be
-13452	beach
-13453	beacon
-13454	bead
-13455	beads
-13456	beady
-13461	beak
-13462	beam
-13463	beams
-13464	bean
-13465	beans
-13466	bear
-13511	beard
-13512	bears
-13513	beast
-13514	beat
-13515	beats
-13516	beau
-13521	beauty
-13522	beaver
-13523	bebop
-13524	beck
-13525	becky
-13526	bed
-13531	beds
-13532	bee
-13533	beech
-13534	beef
-13535	beefy
-13536	been
-13541	beep
-13542	beeps
-13543	beer
-13544	beers
-13545	bees
-13546	beet
-13551	beets
-13552	befall
-13553	befit
-13554	befog
-13555	beg
-13556	began
-13561	beget
-13562	beggar
-13563	begin
-13564	begs
-13565	begun
-13566	behind
-13611	beige
-13612	being
-13613	beirut
-13614	belch
-13615	belfry
-13616	belief
-13621	bell
-13622	bella
-13623	belle
-13624	bellow
-13625	bells
-13626	belly
-13631	below
-13632	belt
-13633	belts
-13634	bemoan
-13635	ben
-13636	bench
-13641	bend
-13642	bender
-13643	bends
-13644	benign
-13645	benny
-13646	bent
-13651	benz
-13652	beret
-13653	berg
-13654	berlin
-13655	berra
-13656	berry
-13661	bert
-13662	berth
-13663	beryl
-13664	beset
-13665	bess
-13666	best
-14111	bet
-14112	beta
-14113	beth
-14114	betray
-14115	bets
-14116	betsy
-14121	bette
-14122	betty
-14123	bevy
-14124	beware
-14125	beyond
-14126	bf
-14131	bflat
-14132	bg
-14133	bh
-14134	bi
-14135	bias
-14136	bib
-14141	bible
-14142	biceps
-14143	bid
-14144	bide
-14145	bids
-14146	bier
-14151	big
-14152	bigamy
-14153	bigot
-14154	bike
-14155	biker
-14156	bikini
-14161	bile
-14162	bilge
-14163	bilk
-14164	bill
-14165	bills
-14166	billy
-14211	bimbo
-14212	bin
-14213	binary
-14214	bind
-14215	binge
-14216	bingo
-14221	biped
-14222	birch
-14223	bird
-14224	birdie
-14225	birds
-14226	birth
-14231	bison
-14232	bisque
-14233	bit
-14234	bite
-14235	bites
-14236	bits
-14241	bitten
-14242	biz
-14243	bj
-14244	bk
-14245	bl
-14246	blab
-14251	black
-14252	blade
-14253	blah
-14254	blair
-14255	blake
-14256	blame
-14261	bland
-14262	blank
-14263	blare
-14264	blast
-14265	blat
-14266	blaze
-14311	bldg
-14312	bleak
-14313	bleat
-14314	bled
-14315	bleed
-14316	blend
-14321	bless
-14322	blew
-14323	blimp
-14324	blind
-14325	blink
-14326	blip
-14331	blips
-14332	bliss
-14333	blithe
-14334	blitz
-14335	bloat
-14336	blob
-14341	blobs
-14342	bloc
-14343	block
-14344	bloke
-14345	blond
-14346	blonde
-14351	blood
-14352	bloom
-14353	bloop
-14354	blot
-14355	blotch
-14356	blots
-14361	blow
-14362	blown
-14363	blows
-14364	blt
-14365	blue
-14366	blues
-14411	bluff
-14412	blunt
-14413	blur
-14414	blurs
-14415	blurt
-14416	blush
-14421	blvd
-14422	blythe
-14423	bm
-14424	bmw
-14425	bn
-14426	bo
-14431	boa
-14432	boar
-14433	board
-14434	boast
-14435	boat
-14436	boats
-14441	bob
-14442	bobby
-14443	bobcat
-14444	bobs
-14445	bode
-14446	body
-14451	bog
-14452	bogey
-14453	boggy
-14454	bogs
-14455	bogus
-14456	boil
-14461	boils
-14462	boise
-14463	bold
-14464	bolt
-14465	bolts
-14466	bomb
-14511	bombay
-14512	bombs
-14513	bond
-14514	bone
-14515	bones
-14516	bong
-14521	bongo
-14522	bonn
-14523	bonus
-14524	bony
-14525	boo
-14526	boob
-14531	booby
-14532	boogie
-14533	book
-14534	books
-14535	boom
-14536	boon
-14541	boone
-14542	boor
-14543	boost
-14544	boot
-14545	booth
-14546	boots
-14551	booty
-14552	booze
-14553	bop
-14554	borax
-14555	border
-14556	bore
-14561	bored
-14562	bores
-14563	borg
-14564	boris
-14565	born
-14566	borneo
-14611	boron
-14612	bosom
-14613	boss
-14614	bossy
-14615	boston
-14616	botch
-14621	both
-14622	bottle
-14623	bough
-14624	bouncy
-14625	bound
-14626	bout
-14631	bovine
-14632	bow
-14633	bowed
-14634	bowel
-14635	bowie
-14636	bowl
-14641	bowls
-14642	bows
-14643	box
-14644	boxed
-14645	boxer
-14646	boxes
-14651	boxy
-14652	boy
-14653	boyd
-14654	boyle
-14655	boys
-14656	bozo
-14661	bp
-14662	bq
-14663	br
-14664	bra
-14665	brace
-14666	brad
-15111	brady
-15112	brag
-15113	brags
-15114	braid
-15115	brain
-15116	brainy
-15121	brake
-15122	bran
-15123	brand
-15124	brandy
-15125	brash
-15126	brass
-15131	brassy
-15132	brat
-15133	brats
-15134	brave
-15135	bravo
-15136	brawl
-15141	brawn
-15142	bray
-15143	brazil
-15144	bread
-15145	break
-15146	breath
-15151	bred
-15152	breed
-15153	breeze
-15154	brew
-15155	brian
-15156	briar
-15161	bribe
-15162	brick
-15163	bride
-15164	bridge
-15165	brief
-15166	brig
-15211	brim
-15212	brine
-15213	bring
-15214	brink
-15215	briny
-15216	brisk
-15221	broad
-15222	broil
-15223	broke
-15224	broken
-15225	bronco
-15226	bronx
-15231	brood
-15232	brook
-15233	broom
-15234	broth
-15235	brow
-15236	brown
-15241	brows
-15242	browse
-15243	bruce
-15244	bruin
-15245	brunch
-15246	bruno
-15251	brunt
-15252	brush
-15253	brutal
-15254	brute
-15255	bryan
-15256	bs
-15261	bt
-15262	btu
-15263	bu
-15264	bub
-15265	buck
-15266	bucks
-15311	bud
-15312	buddha
-15313	buddy
-15314	budge
-15315	buds
-15316	buff
-15321	bug
-15322	buggy
-15323	bugle
-15324	bugs
-15325	buick
-15326	build
-15331	built
-15332	bulb
-15333	bulbs
-15334	bulge
-15335	bulk
-15336	bulky
-15341	bull
-15342	bulls
-15343	bully
-15344	bum
-15345	bump
-15346	bumps
-15351	bumpy
-15352	bums
-15353	bun
-15354	bunch
-15355	bunco
-15356	bundy
-15361	bunk
-15362	bunny
-15363	buns
-15364	bunt
-15365	bunts
-15366	buoy
-15411	bureau
-15412	burg
-15413	burger
-15414	buried
-15415	burke
-15416	burly
-15421	burma
-15422	burn
-15423	burns
-15424	burnt
-15425	burp
-15426	burps
-15431	burro
-15432	burst
-15433	burt
-15434	burton
-15435	bury
-15436	bus
-15441	bush
-15442	bushel
-15443	bushy
-15444	buss
-15445	bust
-15446	busy
-15451	but
-15452	butane
-15453	butch
-15454	butt
-15455	butte
-15456	buxom
-15461	buy
-15462	buyer
-15463	buys
-15464	buzz
-15465	bv
-15466	bvm
-15511	bw
-15512	bwana
-15513	bx
-15514	by
-15515	bye
-15516	bylaw
-15521	byline
-15522	byob
-15523	bypass
-15524	byrd
-15525	byron
-15526	byte
-15531	bytes
-15532	byway
-15533	bz
-15534	c
-15535	c#
-15536	c&w
-15541	c's
-15542	c/o
-15543	ca
-15544	cab
-15545	cabal
-15546	cabana
-15551	cabin
-15552	cable
-15553	cabot
-15554	cache
-15555	cackle
-15556	cacti
-15561	caddy
-15562	cadet
-15563	caesar
-15564	cafe
-15565	cage
-15566	caged
-15611	cages
-15612	cagey
-15613	cain
-15614	cairn
-15615	cairo
-15616	cajun
-15621	cake
-15622	cakes
-15623	calf
-15624	calico
-15625	call
-15626	calls
-15631	callus
-15632	calm
-15633	calms
-15634	calvin
-15635	cam
-15636	came
-15641	camel
-15642	cameo
-15643	camera
-15644	camp
-15645	camps
-15646	camry
-15651	can
-15652	can't
-15653	canal
-15654	canary
-15655	cancer
-15656	candle
-15661	candy
-15662	cane
-15663	caned
-15664	canes
-15665	cannot
-15666	canny
-16111	canoe
-16112	canon
-16113	canopy
-16114	cans
-16115	canto
-16116	canvas
-16121	canyon
-16122	cap
-16123	cape
-16124	caped
-16125	caper
-16126	capri
-16131	car
-16132	carat
-16133	carbon
-16134	card
-16135	care
-16136	cares
-16141	caress
-16142	caret
-16143	cargo
-16144	carl
-16145	carla
-16146	carlo
-16151	carol
-16152	carp
-16153	carpet
-16154	carrie
-16155	carry
-16156	cars
-16161	carson
-16162	cart
-16163	caruso
-16164	carve
-16165	case
-16166	cases
-16211	casey
-16212	cash
-16213	cashew
-16214	cask
-16215	casket
-16216	cast
-16221	caste
-16222	cat
-16223	catch
-16224	cater
-16225	cathy
-16226	cats
-16231	catsup
-16232	catty
-16233	caulk
-16234	cause
-16235	cave
-16236	cavern
-16241	caves
-16242	cavort
-16243	cb
-16244	cc
-16245	ccc
-16246	cccc
-16251	cccp
-16252	cd
-16253	cde
-16254	ce
-16255	cease
-16256	cecil
-16261	cedar
-16262	cede
-16263	celery
-16264	celia
-16265	cell
-16266	cello
-16311	census
-16312	cent
-16313	cents
-16314	ceo
-16315	cesar
-16316	cf
-16321	cg
-16322	ch
-16323	chad
-16324	chafe
-16325	chaff
-16326	chain
-16331	chair
-16332	chalk
-16333	champ
-16334	chance
-16335	chant
-16336	chaos
-16341	chap
-16342	chapel
-16343	char
-16344	charm
-16345	chart
-16346	chase
-16351	chasm
-16352	chaste
-16353	chat
-16354	chats
-16355	cheap
-16356	cheat
-16361	check
-16362	cheek
-16363	cheeky
-16364	cheer
-16365	chef
-16366	cherub
-16411	chess
-16412	chest
-16413	chevy
-16414	chew
-16415	chews
-16416	chewy
-16421	chi
-16422	chic
-16423	chick
-16424	chide
-16425	chief
-16426	child
-16431	chile
-16432	chili
-16433	chill
-16434	chilly
-16435	chime
-16436	chimp
-16441	chin
-16442	china
-16443	chip
-16444	chips
-16445	chirp
-16446	chisel
-16451	chit
-16452	chive
-16453	chloe
-16454	chock
-16455	choir
-16456	choke
-16461	chomp
-16462	chop
-16463	chopin
-16464	chops
-16465	choral
-16466	chord
-16511	chore
-16512	chose
-16513	chosen
-16514	chow
-16515	chris
-16516	chub
-16521	chuck
-16522	chug
-16523	chum
-16524	chump
-16525	chunk
-16526	churn
-16531	chute
-16532	ci
-16533	cia
-16534	ciao
-16535	cicada
-16536	cider
-16541	cigar
-16542	cilia
-16543	cinch
-16544	cindy
-16545	cipher
-16546	circa
-16551	circe
-16552	cite
-16553	citrus
-16554	city
-16555	civet
-16556	civic
-16561	civil
-16562	cj
-16563	ck
-16564	cl
-16565	clad
-16566	claim
-16611	clam
-16612	clammy
-16613	clamp
-16614	clan
-16615	clang
-16616	clank
-16621	clap
-16622	claps
-16623	clara
-16624	clark
-16625	clash
-16626	clasp
-16631	class
-16632	claus
-16633	clause
-16634	claw
-16635	claws
-16636	clay
-16641	clean
-16642	clear
-16643	cleat
-16644	clef
-16645	cleft
-16646	clem
-16651	cleo
-16652	clerk
-16653	clever
-16654	cliche
-16655	click
-16656	cliff
-16661	climb
-16662	cling
-16663	clink
-16664	clip
-16665	cloak
-16666	clock
-21111	clod
-21112	clog
-21113	clone
-21114	close
-21115	closet
-21116	clot
-21121	cloth
-21122	cloud
-21123	clout
-21124	clove
-21125	clown
-21126	cloy
-21131	club
-21132	clubs
-21133	cluck
-21134	clue
-21135	clues
-21136	clump
-21141	clumsy
-21142	clung
-21143	clyde
-21144	cm
-21145	cn
-21146	co
-21151	co2
-21152	coach
-21153	coal
-21154	coast
-21155	coat
-21156	coats
-21161	coax
-21162	cob
-21163	cobble
-21164	cobol
-21165	cobra
-21166	coca
-21211	cock
-21212	cockle
-21213	cocky
-21214	cocoa
-21215	cod
-21216	coda
-21221	coddle
-21222	code
-21223	coded
-21224	codes
-21225	cody
-21226	coed
-21231	cog
-21232	cogent
-21233	cogs
-21234	cohen
-21235	coif
-21236	coil
-21241	coils
-21242	coin
-21243	coins
-21244	coke
-21245	cola
-21246	colby
-21251	cold
-21252	cole
-21253	colon
-21254	colony
-21255	color
-21256	colt
-21261	coma
-21262	comb
-21263	combat
-21264	combo
-21265	come
-21266	comet
-21311	comfy
-21312	comic
-21313	comma
-21314	con
-21315	conch
-21316	condo
-21321	cone
-21322	coney
-21323	congo
-21324	conic
-21325	convex
-21326	convoy
-21331	conway
-21332	coo
-21333	cook
-21334	cooky
-21335	cool
-21336	coon
-21341	coop
-21342	cooper
-21343	coors
-21344	coos
-21345	coot
-21346	cop
-21351	cope
-21352	copes
-21353	copper
-21354	copra
-21355	cops
-21356	copy
-21361	coral
-21362	cord
-21363	cords
-21364	core
-21365	cork
-21366	corn
-21411	corny
-21412	corp
-21413	corps
-21414	cortex
-21415	cost
-21416	costs
-21421	cot
-21422	couch
-21423	cough
-21424	could
-21425	count
-21426	coup
-21431	coupe
-21432	court
-21433	cousin
-21434	cove
-21435	coven
-21436	cover
-21441	covet
-21442	cow
-21443	cowboy
-21444	cowl
-21445	cows
-21446	cox
-21451	coy
-21452	coyote
-21453	cozy
-21454	cp
-21455	cpa
-21456	cpr
-21461	cpu
-21462	cq
-21463	cr
-21464	crab
-21465	crack
-21466	craft
-21511	crag
-21512	craig
-21513	cram
-21514	cramp
-21515	crane
-21516	crank
-21521	crap
-21522	craps
-21523	crash
-21524	crass
-21525	crate
-21526	crater
-21531	crave
-21532	crawl
-21533	craze
-21534	crazy
-21535	creak
-21536	cream
-21541	credit
-21542	credo
-21543	creed
-21544	creek
-21545	creep
-21546	creole
-21551	crepe
-21552	crept
-21553	cress
-21554	crest
-21555	crete
-21556	crew
-21561	crib
-21562	cried
-21563	crime
-21564	crimp
-21565	crisp
-21566	croak
-21611	crock
-21612	crocus
-21613	crone
-21614	crony
-21615	crook
-21616	croon
-21621	crop
-21622	crops
-21623	cross
-21624	crow
-21625	crowd
-21626	crown
-21631	crows
-21632	crt
-21633	crud
-21634	crude
-21635	cruel
-21636	crumb
-21641	crunch
-21642	crush
-21643	crust
-21644	crux
-21645	cry
-21646	crypt
-21651	cs
-21652	ct
-21653	cu
-21654	cub
-21655	cuba
-21656	cuban
-21661	cube
-21662	cubic
-21663	cubs
-21664	cud
-21665	cuddle
-21666	cue
-22111	cues
-22112	cuff
-22113	cull
-22114	cult
-22115	cults
-22116	cup
-22121	cupful
-22122	cupid
-22123	cups
-22124	cur
-22125	curb
-22126	curd
-22131	cure
-22132	cured
-22133	curfew
-22134	curie
-22135	curio
-22136	curl
-22141	curls
-22142	curry
-22143	curse
-22144	curt
-22145	curve
-22146	cusp
-22151	cuss
-22152	cut
-22153	cute
-22154	cutlet
-22155	cuts
-22156	cv
-22161	cw
-22162	cx
-22163	cy
-22164	cycle
-22165	cynic
-22166	cyrus
-22211	cyst
-22212	cz
-22213	czar
-22214	czech
-22215	d
-22216	d&d
-22221	d's
-22222	d-day
-22223	da
-22224	dab
-22225	dad
-22226	daddy
-22231	daffy
-22232	daft
-22233	dagger
-22234	dahlia
-22235	daily
-22236	dairy
-22241	dais
-22242	daisy
-22243	dale
-22244	dally
-22245	dam
-22246	dame
-22251	damn
-22252	damon
-22253	damp
-22254	damsel
-22255	dan
-22256	dana
-22261	dance
-22262	dandy
-22263	dane
-22264	dang
-22265	dank
-22266	danny
-22311	dante
-22312	dare
-22313	dared
-22314	dares
-22315	dark
-22316	darken
-22321	darn
-22322	dart
-22323	darts
-22324	darwin
-22325	daryl
-22326	dash
-22331	data
-22332	date
-22333	dates
-22334	datum
-22335	daub
-22336	daunt
-22341	dave
-22342	david
-22343	davis
-22344	davy
-22345	dawn
-22346	day
-22351	days
-22352	daze
-22353	dazed
-22354	db
-22355	dbms
-22356	dc
-22361	dd
-22362	ddd
-22363	dddd
-22364	dds
-22365	ddt
-22366	de
-22411	deacon
-22412	dead
-22413	deaf
-22414	deal
-22415	deals
-22416	dealt
-22421	dean
-22422	dear
-22423	death
-22424	debby
-22425	debit
-22426	debra
-22431	debris
-22432	debt
-22433	debts
-22434	debug
-22435	debut
-22436	dec
-22441	decal
-22442	decay
-22443	deck
-22444	decor
-22445	decoy
-22446	decree
-22451	decry
-22452	dee
-22453	deed
-22454	deeds
-22455	deejay
-22456	deem
-22461	deep
-22462	deer
-22463	def
-22464	defect
-22465	defer
-22466	deform
-22511	deft
-22512	defy
-22513	deify
-22514	deity
-22515	del
-22516	delay
-22521	delhi
-22522	deli
-22523	delia
-22524	della
-22525	delta
-22526	deluxe
-22531	delve
-22532	demo
-22533	demon
-22534	demur
-22535	den
-22536	denial
-22541	denim
-22542	denny
-22543	dense
-22544	dent
-22545	dents
-22546	deny
-22551	depot
-22552	dept
-22553	depth
-22554	deputy
-22555	derby
-22556	derek
-22561	desist
-22562	desk
-22563	desks
-22564	detach
-22565	deter
-22566	detox
-22611	deuce
-22612	devil
-22613	devoid
-22614	dew
-22615	dewey
-22616	dewy
-22621	df
-22622	dg
-22623	dh
-22624	di
-22625	dial
-22626	dials
-22631	diana
-22632	diane
-22633	diaper
-22634	diary
-22635	dibs
-22636	dice
-22641	dick
-22642	did
-22643	die
-22644	died
-22645	diego
-22646	dies
-22651	diesel
-22652	diet
-22653	diets
-22654	dig
-22655	digit
-22656	digs
-22661	dike
-22662	dilate
-22663	dill
-22664	dim
-22665	dime
-22666	dimes
-23111	dimly
-23112	dims
-23113	din
-23114	dinah
-23115	dine
-23116	diner
-23121	ding
-23122	dingo
-23123	dingy
-23124	dint
-23125	diode
-23126	dip
-23131	dips
-23132	dire
-23133	dirge
-23134	dirk
-23135	dirt
-23136	dirty
-23141	disc
-23142	disco
-23143	dish
-23144	disk
-23145	disney
-23146	ditch
-23151	ditto
-23152	ditty
-23153	diva
-23154	divan
-23155	dive
-23156	dives
-23161	divot
-23162	dixie
-23163	dizzy
-23164	dj
-23165	dk
-23166	dl
-23211	dm
-23212	dn
-23213	dna
-23214	do
-23215	dobro
-23216	doc
-23221	dock
-23222	docket
-23223	doctor
-23224	dodge
-23225	dodo
-23226	doe
-23231	does
-23232	doff
-23233	dog
-23234	dogma
-23235	dogs
-23236	doily
-23241	doing
-23242	dolby
-23243	dole
-23244	doll
-23245	dolly
-23246	dolt
-23251	dome
-23252	domed
-23253	domino
-23254	don
-23255	don't
-23256	done
-23261	donna
-23262	donor
-23263	donut
-23264	doom
-23265	door
-23266	dope
-23311	dopey
-23312	dora
-23313	doris
-23314	dorm
-23315	dose
-23316	dot
-23321	dote
-23322	dots
-23323	double
-23324	doubt
-23325	doug
-23326	dough
-23331	douse
-23332	dove
-23333	doves
-23334	dowel
-23335	down
-23336	dowry
-23341	doze
-23342	dozen
-23343	dp
-23344	dq
-23345	dr
-23346	drab
-23351	draft
-23352	drag
-23353	drain
-23354	drake
-23355	drama
-23356	drank
-23361	drape
-23362	draw
-23363	drawl
-23364	drawn
-23365	dread
-23366	dream
-23411	dreamy
-23412	dregs
-23413	dress
-23414	dressy
-23415	drew
-23416	dried
-23421	drier
-23422	dries
-23423	drift
-23424	drill
-23425	drink
-23426	drip
-23431	drips
-23432	drive
-23433	droid
-23434	droll
-23435	drone
-23436	drool
-23441	droop
-23442	drop
-23443	drops
-23444	drove
-23445	drown
-23446	dru
-23451	drub
-23452	drug
-23453	drugs
-23454	druid
-23455	drum
-23456	drums
-23461	drunk
-23462	dry
-23463	dryad
-23464	ds
-23465	dt
-23466	du
-23511	dual
-23512	duane
-23513	dub
-23514	dublin
-23515	duck
-23516	ducks
-23521	duct
-23522	dud
-23523	dude
-23524	due
-23525	duel
-23526	dues
-23531	duet
-23532	duff
-23533	dug
-23534	duke
-23535	dull
-23536	dully
-23541	duly
-23542	dumb
-23543	dumbo
-23544	dummy
-23545	dump
-23546	dumps
-23551	dumpy
-23552	dun
-23553	dunce
-23554	dune
-23555	dung
-23556	dunk
-23561	duo
-23562	dupe
-23563	during
-23564	dusk
-23565	dusky
-23566	dust
-23611	dusty
-23612	dutch
-23613	duty
-23614	dv
-23615	dw
-23616	dwarf
-23621	dwell
-23622	dwelt
-23623	dwight
-23624	dx
-23625	dy
-23626	dyad
-23631	dye
-23632	dyed
-23633	dying
-23634	dylan
-23635	dynamo
-23636	dz
-23641	e
-23642	e's
-23643	ea
-23644	each
-23645	eager
-23646	eagle
-23651	ear
-23652	earl
-23653	early
-23654	earn
-23655	earns
-23656	ears
-23661	earth
-23662	ease
-23663	easel
-23664	east
-23665	easy
-23666	eat
-24111	eaten
-24112	eater
-24113	eats
-24114	eave
-24115	eaves
-24116	eb
-24121	ebb
-24122	ebony
-24123	ec
-24124	echo
-24125	ed
-24126	eddie
-24131	eddy
-24132	eden
-24133	edgar
-24134	edge
-24135	edges
-24136	edgy
-24141	edible
-24142	edict
-24143	edify
-24144	edit
-24145	edith
-24146	editor
-24151	edits
-24152	edna
-24153	edsel
-24154	edwin
-24155	ee
-24156	eee
-24161	eeee
-24162	eeg
-24163	eel
-24164	eerie
-24165	ef
-24166	efface
-24211	efg
-24212	eflat
-24213	eft
-24214	eg
-24215	egg
-24216	eggs
-24221	ego
-24222	egress
-24223	egret
-24224	egypt
-24225	eh
-24226	ei
-24231	eight
-24232	ej
-24233	eject
-24234	ek
-24235	ekg
-24236	el
-24241	elate
-24242	elbow
-24243	elder
-24244	elect
-24245	elegy
-24246	elena
-24251	eleven
-24252	elf
-24253	elfin
-24254	eli
-24255	elide
-24256	eliot
-24261	elite
-24262	eliza
-24263	elk
-24264	elks
-24265	ella
-24266	ellen
-24311	elm
-24312	elmer
-24313	elms
-24314	elope
-24315	elroy
-24316	else
-24321	elsie
-24322	elton
-24323	elude
-24324	elves
-24325	elvis
-24326	ely
-24331	em
-24332	email
-24333	embalm
-24334	embed
-24335	ember
-24336	emcee
-24341	emery
-24342	emil
-24343	emile
-24344	emily
-24345	emit
-24346	emits
-24351	emma
-24352	emmy
-24353	emote
-24354	employ
-24355	empty
-24356	emu
-24361	en
-24362	enact
-24363	enamel
-24364	end
-24365	ended
-24366	endow
-24411	ends
-24412	enema
-24413	enemy
-24414	enigma
-24415	enjoy
-24416	enmity
-24421	ennui
-24422	enoch
-24423	ensue
-24424	enter
-24425	entrap
-24426	entry
-24431	envoy
-24432	envy
-24433	eo
-24434	eon
-24435	eons
-24436	ep
-24441	epic
-24442	epics
-24443	epoch
-24444	epoxy
-24445	epsom
-24446	eq
-24451	equal
-24452	equip
-24453	er
-24454	era
-24455	erase
-24456	erect
-24461	ergo
-24462	eric
-24463	erica
-24464	erie
-24465	erik
-24466	erin
-24511	ernest
-24512	ernie
-24513	erode
-24514	eros
-24515	err
-24516	errand
-24521	errol
-24522	error
-24523	erupt
-24524	es
-24525	esp
-24526	espy
-24531	esq
-24532	essay
-24533	ester
-24534	et
-24535	eta
-24536	etc
-24541	etch
-24542	ethel
-24543	ether
-24544	ethic
-24545	ethos
-24546	ethyl
-24551	etude
-24552	eu
-24553	eureka
-24554	ev
-24555	eva
-24556	evade
-24561	evans
-24562	eve
-24563	even
-24564	event
-24565	ever
-24566	every
-24611	evict
-24612	evil
-24613	evita
-24614	evoke
-24615	evolve
-24616	ew
-24621	ewe
-24622	ex
-24623	exact
-24624	exalt
-24625	exam
-24626	exams
-24631	excel
-24632	excess
-24633	exec
-24634	exert
-24635	exile
-24636	exist
-24641	exit
-24642	exits
-24643	exodus
-24644	expel
-24645	expo
-24646	extant
-24651	extent
-24652	extol
-24653	extra
-24654	exult
-24655	exxon
-24656	ey
-24661	eye
-24662	eyed
-24663	eyes
-24664	ez
-24665	ezra
-24666	f
-25111	f#
-25112	f's
-25113	fa
-25114	fable
-25115	fabric
-25116	face
-25121	faces
-25122	facet
-25123	facile
-25124	fact
-25125	facts
-25126	fad
-25131	fade
-25132	fads
-25133	fail
-25134	faint
-25135	fair
-25136	fairy
-25141	faith
-25142	fake
-25143	faker
-25144	fall
-25145	false
-25146	fame
-25151	fan
-25152	fancy
-25153	fang
-25154	fangs
-25155	fanny
-25156	fans
-25161	far
-25162	farce
-25163	fare
-25164	farm
-25165	farms
-25166	fast
-25211	fat
-25212	fatal
-25213	fate
-25214	father
-25215	fats
-25216	fatty
-25221	fault
-25222	fauna
-25223	faust
-25224	faux
-25225	fawn
-25226	fax
-25231	faze
-25232	fb
-25233	fbi
-25234	fc
-25235	fd
-25236	fe
-25241	fear
-25242	fears
-25243	feast
-25244	feat
-25245	feb
-25246	fed
-25251	fee
-25252	feeble
-25253	feed
-25254	feeds
-25255	feel
-25256	feels
-25261	fees
-25262	feet
-25263	feign
-25264	feint
-25265	felice
-25266	felix
-25311	fell
-25312	felon
-25313	felt
-25314	femur
-25315	fence
-25316	fend
-25321	fern
-25322	ferry
-25323	fetal
-25324	fetch
-25325	fete
-25326	fetid
-25331	fetus
-25332	feud
-25333	fever
-25334	few
-25335	fez
-25336	ff
-25341	fff
-25342	ffff
-25343	fg
-25344	fgh
-25345	fh
-25346	fi
-25351	fiat
-25352	fib
-25353	fiber
-25354	fickle
-25355	fido
-25356	field
-25361	fiend
-25362	fiery
-25363	fife
-25364	fifth
-25365	fifty
-25366	fig
-25411	fight
-25412	figs
-25413	fiji
-25414	filch
-25415	file
-25416	filed
-25421	files
-25422	filet
-25423	fill
-25424	filler
-25425	filly
-25426	film
-25431	films
-25432	filmy
-25433	filth
-25434	fin
-25435	final
-25436	finale
-25441	finch
-25442	find
-25443	fine
-25444	fined
-25445	finer
-25446	finite
-25451	fink
-25452	finn
-25453	finny
-25454	fir
-25455	fire
-25456	firm
-25461	first
-25462	fish
-25463	fishy
-25464	fist
-25465	fit
-25466	fits
-25511	five
-25512	fix
-25513	fixed
-25514	fizz
-25515	fj
-25516	fjord
-25521	fk
-25522	fl
-25523	flab
-25524	flag
-25525	flail
-25526	flair
-25531	flak
-25532	flake
-25533	flaky
-25534	flame
-25535	flank
-25536	flap
-25541	flare
-25542	flash
-25543	flask
-25544	flat
-25545	flavor
-25546	flaw
-25551	flax
-25552	flay
-25553	flea
-25554	fled
-25555	flee
-25556	fleet
-25561	flesh
-25562	flew
-25563	flex
-25564	flick
-25565	flier
-25566	flies
-25611	flinch
-25612	fling
-25613	flint
-25614	flip
-25615	flirt
-25616	flit
-25621	flo
-25622	float
-25623	flock
-25624	flog
-25625	flood
-25626	floor
-25631	flop
-25632	floppy
-25633	flora
-25634	flour
-25635	flow
-25636	flown
-25641	floyd
-25642	flu
-25643	flub
-25644	flue
-25645	fluff
-25646	fluid
-25651	fluke
-25652	flung
-25653	flush
-25654	flute
-25655	flux
-25656	fly
-25661	flyer
-25662	fm
-25663	fn
-25664	fo
-25665	foal
-25666	foam
-26111	foamy
-26112	fob
-26113	focal
-26114	focus
-26115	fodder
-26116	foe
-26121	foes
-26122	fog
-26123	foggy
-26124	fogy
-26125	foil
-26126	foist
-26131	fold
-26132	folio
-26133	folk
-26134	folly
-26135	fond
-26136	font
-26141	food
-26142	fool
-26143	foot
-26144	fop
-26145	for
-26146	foray
-26151	force
-26152	ford
-26153	fore
-26154	forge
-26155	forgot
-26156	fork
-26161	form
-26162	forms
-26163	fort
-26164	forte
-26165	forth
-26166	forty
-26211	forum
-26212	fossil
-26213	foul
-26214	found
-26215	fount
-26216	four
-26221	fowl
-26222	fox
-26223	foxes
-26224	foxy
-26225	foyer
-26226	fp
-26231	fq
-26232	fr
-26233	frail
-26234	frame
-26235	france
-26236	frank
-26241	franz
-26242	frau
-26243	fraud
-26244	fray
-26245	freak
-26246	fred
-26251	free
-26252	freed
-26253	freer
-26254	frenzy
-26255	freon
-26256	fresh
-26261	fret
-26262	freud
-26263	fri
-26264	friar
-26265	fried
-26266	fries
-26311	frill
-26312	frilly
-26313	frisky
-26314	fritz
-26315	frock
-26316	frog
-26321	frogs
-26322	from
-26323	frond
-26324	front
-26325	frost
-26326	froth
-26331	frown
-26332	froze
-26333	fruit
-26334	fry
-26335	fs
-26336	ft
-26341	fu
-26342	fudge
-26343	fuel
-26344	fugue
-26345	fuji
-26346	full
-26351	fully
-26352	fumble
-26353	fume
-26354	fumes
-26355	fun
-26356	fund
-26361	funds
-26362	fungi
-26363	funk
-26364	funky
-26365	funny
-26366	fur
-26411	furl
-26412	furry
-26413	furs
-26414	fury
-26415	fuse
-26416	fuss
-26421	fussy
-26422	fuzz
-26423	fuzzy
-26424	fv
-26425	fw
-26426	fx
-26431	fy
-26432	fyi
-26433	fz
-26434	g
-26435	g's
-26436	ga
-26441	gab
-26442	gable
-26443	gadget
-26444	gaea
-26445	gaffe
-26446	gag
-26451	gags
-26452	gail
-26453	gaily
-26454	gain
-26455	gait
-26456	gal
-26461	gala
-26462	galaxy
-26463	gale
-26464	gall
-26465	gallop
-26466	gam
-26511	game
-26512	games
-26513	gamma
-26514	gamut
-26515	gamy
-26516	gander
-26521	gang
-26522	gangs
-26523	gap
-26524	gape
-26525	gapes
-26526	gaps
-26531	garb
-26532	gargle
-26533	garish
-26534	gary
-26535	gas
-26536	gash
-26541	gasp
-26542	gasps
-26543	gassy
-26544	gate
-26545	gates
-26546	gator
-26551	gauche
-26552	gaudy
-26553	gauge
-26554	gaunt
-26555	gauze
-26556	gave
-26561	gavel
-26562	gawk
-26563	gawky
-26564	gay
-26565	gaze
-26566	gazed
-26611	gazes
-26612	gb
-26613	gc
-26614	gd
-26615	ge
-26616	gear
-26621	gears
-26622	gee
-26623	geese
-26624	gel
-26625	geld
-26626	gem
-26631	gems
-26632	gene
-26633	genes
-26634	genie
-26635	genre
-26636	gent
-26641	gentry
-26642	geo
-26643	gerbil
-26644	germ
-26645	germs
-26646	get
-26651	gets
-26652	gf
-26653	gg
-26654	ggg
-26655	gggg
-26656	gh
-26661	ghetto
-26662	ghi
-26663	ghost
-26664	ghoul
-26665	ghq
-26666	gi
-31111	giant
-31112	giddy
-31113	gift
-31114	gifts
-31115	gig
-31116	gil
-31121	gila
-31122	gild
-31123	gill
-31124	gills
-31125	gilt
-31126	gimme
-31131	gimpy
-31132	gin
-31133	gina
-31134	ginger
-31135	gino
-31136	gird
-31141	girl
-31142	girls
-31143	girth
-31144	gist
-31145	give
-31146	given
-31151	gives
-31152	gizmo
-31153	gj
-31154	gk
-31155	gl
-31156	glad
-31161	glade
-31162	glamor
-31163	glance
-31164	gland
-31165	glare
-31166	glass
-31211	glaze
-31212	gleam
-31213	glean
-31214	glee
-31215	glen
-31216	glenn
-31221	glib
-31222	glide
-31223	glint
-31224	gloat
-31225	glob
-31226	globe
-31231	gloom
-31232	glory
-31233	gloss
-31234	glove
-31235	glow
-31236	glows
-31241	glue
-31242	glued
-31243	gluey
-31244	gluing
-31245	glum
-31246	glut
-31251	gm
-31252	gmt
-31253	gn
-31254	gnash
-31255	gnat
-31256	gnaw
-31261	gnaws
-31262	gnome
-31263	gnp
-31264	gnu
-31265	go
-31266	goad
-31311	goal
-31312	goals
-31313	goat
-31314	goats
-31315	gob
-31316	god
-31321	godly
-31322	gods
-31323	goes
-31324	goggle
-31325	gogh
-31326	gogo
-31331	going
-31332	gold
-31333	golf
-31334	golly
-31335	gomez
-31336	gone
-31341	gong
-31342	goo
-31343	good
-31344	goods
-31345	goody
-31346	gooey
-31351	goof
-31352	goofy
-31353	goon
-31354	goose
-31355	gordon
-31356	gore
-31361	gorge
-31362	gory
-31363	gosh
-31364	gospel
-31365	got
-31366	gouge
-31411	gould
-31412	gourd
-31413	gout
-31414	govt
-31415	gown
-31416	gowns
-31421	gp
-31422	gpa
-31423	gq
-31424	gr
-31425	grab
-31426	grabs
-31431	grace
-31432	grad
-31433	grade
-31434	grady
-31435	graft
-31436	grail
-31441	grain
-31442	gram
-31443	grams
-31444	grand
-31445	grant
-31446	grape
-31451	graph
-31452	grasp
-31453	grass
-31454	grate
-31455	grave
-31456	gravel
-31461	gravy
-31462	gray
-31463	graze
-31464	great
-31465	greed
-31466	greedy
-31511	greek
-31512	green
-31513	greet
-31514	greg
-31515	greta
-31516	grew
-31521	grey
-31522	grid
-31523	grief
-31524	grieve
-31525	grill
-31526	grim
-31531	grime
-31532	grimy
-31533	grin
-31534	grind
-31535	grins
-31536	grip
-31541	gripe
-31542	grips
-31543	grist
-31544	grit
-31545	groan
-31546	grog
-31551	groin
-31552	groom
-31553	groove
-31554	grope
-31555	gross
-31556	group
-31561	grout
-31562	grove
-31563	grow
-31564	growl
-31565	grown
-31566	grows
-31611	grub
-31612	grubs
-31613	gruff
-31614	grunt
-31615	gs
-31616	gt
-31621	gu
-31622	guam
-31623	guano
-31624	guard
-31625	guess
-31626	guest
-31631	gui
-31632	guide
-31633	guild
-31634	guile
-31635	guilt
-31636	guise
-31641	guitar
-31642	gulag
-31643	gulf
-31644	gull
-31645	gulls
-31646	gully
-31651	gulp
-31652	gum
-31653	gumbo
-31654	gummy
-31655	gun
-31656	gunk
-31661	guns
-31662	guppy
-31663	gurgle
-31664	guru
-31665	gus
-31666	gush
-32111	gust
-32112	gusto
-32113	gusts
-32114	gusty
-32115	gut
-32116	guts
-32121	gutsy
-32122	guy
-32123	guys
-32124	gv
-32125	gw
-32126	gwen
-32131	gx
-32132	gy
-32133	gym
-32134	gyp
-32135	gypsum
-32136	gypsy
-32141	gyro
-32142	gz
-32143	h
-32144	h's
-32145	h2o
-32146	ha
-32151	habit
-32152	hack
-32153	had
-32154	hag
-32155	haha
-32156	haiku
-32161	hail
-32162	hair
-32163	hairdo
-32164	hairs
-32165	hairy
-32166	haiti
-32211	hal
-32212	half
-32213	hall
-32214	halls
-32215	halo
-32216	halt
-32221	halts
-32222	halve
-32223	ham
-32224	hamlet
-32225	hammer
-32226	hams
-32231	hand
-32232	handle
-32233	hands
-32234	handy
-32235	hang
-32236	hank
-32241	hanna
-32242	hans
-32243	happy
-32244	hard
-32245	hardy
-32246	hare
-32251	harem
-32252	hark
-32253	harley
-32254	harm
-32255	harms
-32256	harp
-32261	harps
-32262	harry
-32263	harsh
-32264	hart
-32265	harv
-32266	harvey
-32311	has
-32312	hash
-32313	hasp
-32314	haste
-32315	hasty
-32316	hat
-32321	hatch
-32322	hate
-32323	hates
-32324	hatred
-32325	hats
-32326	haul
-32331	hauls
-32332	haunt
-32333	have
-32334	haven
-32335	havoc
-32336	hawk
-32341	hawks
-32342	hay
-32343	haydn
-32344	hayes
-32345	hazard
-32346	haze
-32351	hazel
-32352	hazy
-32353	hb
-32354	hc
-32355	hd
-32356	hdtv
-32361	he
-32362	he'd
-32363	he'll
-32364	head
-32365	heads
-32366	heady
-32411	heal
-32412	heals
-32413	heap
-32414	heaps
-32415	hear
-32416	heard
-32421	hears
-32422	heart
-32423	heat
-32424	heath
-32425	heats
-32426	heave
-32431	heaven
-32432	heavy
-32433	hebrew
-32434	heck
-32435	heckle
-32436	hectic
-32441	hedge
-32442	heed
-32443	heel
-32444	heels
-32445	heft
-32446	hefty
-32451	height
-32452	heinz
-32453	heir
-32454	heirs
-32455	held
-32456	helen
-32461	helga
-32462	helix
-32463	hell
-32464	hello
-32465	helm
-32466	help
-32511	hem
-32512	hemp
-32513	hems
-32514	hen
-32515	hence
-32516	henry
-32521	hens
-32522	hep
-32523	her
-32524	herb
-32525	herbs
-32526	herd
-32531	here
-32532	hero
-32533	herod
-32534	heroic
-32535	heron
-32536	herr
-32541	hers
-32542	hertz
-32543	hew
-32544	hex
-32545	hexed
-32546	hey
-32551	hf
-32552	hg
-32553	hh
-32554	hhh
-32555	hhhh
-32556	hi
-32561	hick
-32562	hid
-32563	hide
-32564	hides
-32565	high
-32566	hij
-32611	hijack
-32612	hike
-32613	hikes
-32614	hill
-32615	hills
-32616	hilly
-32621	hilt
-32622	him
-32623	hind
-32624	hindu
-32625	hinge
-32626	hint
-32631	hints
-32632	hip
-32633	hippo
-32634	hips
-32635	hiram
-32636	hire
-32641	hired
-32642	hires
-32643	his
-32644	hiss
-32645	hit
-32646	hitch
-32651	hits
-32652	hiv
-32653	hive
-32654	hives
-32655	hj
-32656	hk
-32661	hl
-32662	hm
-32663	hn
-32664	ho
-32665	hoagy
-32666	hoard
-33111	hoax
-33112	hobby
-33113	hobo
-33114	hock
-33115	hockey
-33116	hoe
-33121	hog
-33122	hogan
-33123	hogs
-33124	hoist
-33125	hold
-33126	holds
-33131	holdup
-33132	hole
-33133	holes
-33134	holly
-33135	holmes
-33136	holy
-33141	home
-33142	honda
-33143	hone
-33144	honey
-33145	honk
-33146	honor
-33151	hooch
-33152	hood
-33153	hoof
-33154	hook
-33155	hooks
-33156	hookup
-33161	hoop
-33162	hoot
-33163	hop
-33164	hope
-33165	hopes
-33166	hops
-33211	horde
-33212	horn
-33213	horny
-33214	horse
-33215	hose
-33216	host
-33221	hot
-33222	hotel
-33223	hotrod
-33224	hound
-33225	hour
-33226	house
-33231	hovel
-33232	hover
-33233	how
-33234	howdy
-33235	howl
-33236	howls
-33241	hoyle
-33242	hp
-33243	hq
-33244	hr
-33245	hrh
-33246	hs
-33251	ht
-33252	hu
-33253	hub
-33254	hubbub
-33255	hubby
-33256	hubs
-33261	hue
-33262	hues
-33263	huey
-33264	huff
-33265	hug
-33266	huge
-33311	hugh
-33312	hugo
-33313	hugs
-33314	huh
-33315	hula
-33316	hulk
-33321	hull
-33322	hum
-33323	human
-33324	humid
-33325	humor
-33326	hump
-33331	humps
-33332	hums
-33333	humus
-33334	hun
-33335	hunch
-33336	hung
-33341	hunk
-33342	hunt
-33343	hunts
-33344	hurl
-33345	huron
-33346	hurrah
-33351	hurry
-33352	hurt
-33353	hush
-33354	husk
-33355	husky
-33356	hut
-33361	hutch
-33362	hv
-33363	hw
-33364	hwy
-33365	hx
-33366	hy
-33411	hyde
-33412	hydra
-33413	hyena
-33414	hymn
-33415	hymnal
-33416	hype
-33421	hyper
-33422	hypo
-33423	hz
-33424	i
-33425	i'd
-33426	i'll
-33431	i'm
-33432	i's
-33433	i've
-33434	ia
-33435	ian
-33436	ib
-33441	ibid
-33442	ibm
-33443	ibsen
-33444	ic
-33445	icbm
-33446	ice
-33451	iced
-33452	icicle
-33453	icing
-33454	icky
-33455	icon
-33456	icons
-33461	icy
-33462	id
-33463	ida
-33464	idaho
-33465	idea
-33466	ideal
-33511	ideas
-33512	idiom
-33513	idiot
-33514	idle
-33515	idly
-33516	idol
-33521	idols
-33522	ie
-33523	if
-33524	iffy
-33525	ig
-33526	igloo
-33531	ignite
-33532	igor
-33533	ih
-33534	ii
-33535	iii
-33536	iiii
-33541	ij
-33542	ijk
-33543	ik
-33544	ike
-33545	il
-33546	iliad
-33551	ill
-33552	im
-33553	image
-33554	imbibe
-33555	imf
-33556	imp
-33561	impel
-33562	imply
-33563	import
-33564	imps
-33565	in
-33566	inane
-33611	inc
-33612	inca
-33613	incest
-33614	inch
-33615	incur
-33616	index
-33621	india
-33622	indies
-33623	indy
-33624	inept
-33625	inert
-33626	infamy
-33631	infect
-33632	infer
-33633	info
-33634	ingot
-33635	inhale
-33636	ink
-33641	inky
-33642	inlay
-33643	inlet
-33644	inn
-33645	inner
-33646	inns
-33651	input
-33652	insect
-33653	inset
-33654	insult
-33655	intel
-33656	intend
-33661	inter
-33662	into
-33663	intro
-33664	invoke
-33665	io
-33666	ion
-34111	ions
-34112	iota
-34113	iou
-34114	iowa
-34115	ip
-34116	iq
-34121	ir
-34122	ira
-34123	iran
-34124	iraq
-34125	iraqi
-34126	irate
-34131	ire
-34132	irene
-34133	iris
-34134	irish
-34135	irk
-34136	irked
-34141	irma
-34142	iron
-34143	irons
-34144	irony
-34145	irvin
-34146	is
-34151	isaac
-34152	isabel
-34153	islam
-34154	island
-34155	isle
-34156	ism
-34161	isn't
-34162	israel
-34163	issue
-34164	isuzu
-34165	it
-34166	it'd
-34211	it'll
-34212	it's
-34213	italy
-34214	itch
-34215	itchy
-34216	item
-34221	items
-34222	iu
-34223	iud
-34224	iv
-34225	ivan
-34226	ivory
-34231	ivy
-34232	iw
-34233	ix
-34234	iy
-34235	iz
-34236	j
-34241	j's
-34242	ja
-34243	jab
-34244	jack
-34245	jackal
-34246	jacob
-34251	jade
-34252	jaded
-34253	jag
-34254	jaguar
-34255	jail
-34256	jam
-34261	jamb
-34262	james
-34263	jan
-34264	jane
-34265	janet
-34266	janis
-34311	japan
-34312	jar
-34313	jars
-34314	jason
-34315	jaunt
-34316	java
-34321	jaw
-34322	jaws
-34323	jay
-34324	jazz
-34325	jazzy
-34326	jb
-34331	jc
-34332	jd
-34333	je
-34334	jean
-34335	jeans
-34336	jed
-34341	jedi
-34342	jeep
-34343	jeer
-34344	jeers
-34345	jeff
-34346	jello
-34351	jelly
-34352	jenny
-34353	jerk
-34354	jerks
-34355	jerky
-34356	jerry
-34361	jersey
-34362	jesse
-34363	jest
-34364	jesus
-34365	jet
-34366	jets
-34411	jew
-34412	jewel
-34413	jewish
-34414	jf
-34415	jfk
-34416	jg
-34421	jh
-34422	ji
-34423	jiffy
-34424	jig
-34425	jiggle
-34426	jigs
-34431	jill
-34432	jilt
-34433	jim
-34434	jimmy
-34435	jinx
-34436	jive
-34441	jj
-34442	jjj
-34443	jjjj
-34444	jk
-34445	jkl
-34446	jl
-34451	jm
-34452	jn
-34453	jo
-34454	joan
-34455	job
-34456	jobs
-34461	jock
-34462	jockey
-34463	jody
-34464	joe
-34465	joel
-34466	joey
-34511	jog
-34512	jogs
-34513	john
-34514	join
-34515	joins
-34516	joint
-34521	joke
-34522	joker
-34523	jokes
-34524	jolly
-34525	jolt
-34526	jonas
-34531	jones
-34532	jose
-34533	josef
-34534	josh
-34535	joshua
-34536	jostle
-34541	jot
-34542	jots
-34543	joust
-34544	jove
-34545	jowl
-34546	jowls
-34551	joy
-34552	joyce
-34553	jp
-34554	jq
-34555	jr
-34556	js
-34561	jt
-34562	ju
-34563	juan
-34564	judas
-34565	jude
-34566	judge
-34611	judo
-34612	judy
-34613	jug
-34614	juggle
-34615	jugs
-34616	juice
-34621	juicy
-34622	jul
-34623	julep
-34624	jules
-34625	julia
-34626	julie
-34631	julio
-34632	july
-34633	jumbo
-34634	jump
-34635	jumps
-34636	jumpy
-34641	jun
-34642	june
-34643	jung
-34644	junk
-34645	junky
-34646	juno
-34651	junta
-34652	juror
-34653	jury
-34654	just
-34655	jut
-34656	jute
-34661	jv
-34662	jw
-34663	jx
-34664	jy
-34665	jz
-34666	k
-35111	k's
-35112	ka
-35113	kafka
-35114	kale
-35115	kane
-35116	kansas
-35121	kant
-35122	kappa
-35123	kaput
-35124	karate
-35125	karen
-35126	karl
-35131	karma
-35132	karol
-35133	kate
-35134	kathy
-35135	katie
-35136	kay
-35141	kayak
-35142	kayo
-35143	kazoo
-35144	kb
-35145	kc
-35146	kd
-35151	ke
-35152	keats
-35153	kebob
-35154	keel
-35155	keen
-35156	keep
-35161	keeps
-35162	keg
-35163	kegs
-35164	keith
-35165	kelly
-35166	kelp
-35211	ken
-35212	kennel
-35213	kent
-35214	kept
-35215	kerry
-35216	kettle
-35221	kevin
-35222	key
-35223	keyed
-35224	keys
-35225	kf
-35226	kg
-35231	kgb
-35232	kh
-35233	khaki
-35234	khan
-35235	khz
-35236	ki
-35241	kibitz
-35242	kick
-35243	kicks
-35244	kid
-35245	kidney
-35246	kids
-35251	kill
-35252	kills
-35253	kiln
-35254	kilo
-35255	kilt
-35256	kilts
-35261	kim
-35262	kin
-35263	kind
-35264	kinds
-35265	king
-35266	kings
-35311	kink
-35312	kinky
-35313	kiosk
-35314	kirby
-35315	kirk
-35316	kiss
-35321	kit
-35322	kite
-35323	kites
-35324	kitty
-35325	kiwi
-35326	kj
-35331	kk
-35332	kkk
-35333	kkkk
-35334	kl
-35335	klan
-35336	klaus
-35341	klaxon
-35342	klein
-35343	klm
-35344	klutz
-35345	km
-35346	kn
-35351	knack
-35352	knave
-35353	knead
-35354	knee
-35355	kneel
-35356	knees
-35361	knelt
-35362	knew
-35363	knife
-35364	knight
-35365	knit
-35366	knits
-35411	knob
-35412	knobs
-35413	knock
-35414	knot
-35415	knots
-35416	know
-35421	known
-35422	knows
-35423	knox
-35424	ko
-35425	koala
-35426	koan
-35431	kodak
-35432	kong
-35433	kook
-35434	kooks
-35435	kooky
-35436	koran
-35441	korea
-35442	kp
-35443	kq
-35444	kr
-35445	kraft
-35446	kraut
-35451	kris
-35452	ks
-35453	kt
-35454	ku
-35455	kudo
-35456	kudos
-35461	kudzu
-35462	kurt
-35463	kv
-35464	kw
-35465	kx
-35466	ky
-35511	kz
-35512	l
-35513	l's
-35514	la
-35515	lab
-35516	label
-35521	labor
-35522	labs
-35523	lace
-35524	laces
-35525	lack
-35526	lacks
-35531	lacy
-35532	lad
-35533	ladder
-35534	ladle
-35535	lads
-35536	lady
-35541	lag
-35542	lager
-35543	lagoon
-35544	lags
-35545	laid
-35546	lair
-35551	lake
-35552	lakes
-35553	lam
-35554	lamar
-35555	lamb
-35556	lambs
-35561	lame
-35562	lamp
-35563	lamps
-35564	lana
-35565	lance
-35566	land
-35611	lands
-35612	lane
-35613	lanky
-35614	laos
-35615	lap
-35616	lapel
-35621	laps
-35622	lapse
-35623	lara
-35624	lard
-35625	large
-35626	lark
-35631	larks
-35632	larry
-35633	larva
-35634	larynx
-35635	laser
-35636	lash
-35641	lass
-35642	lasso
-35643	last
-35644	latch
-35645	late
-35646	later
-35651	latest
-35652	latex
-35653	lathe
-35654	latin
-35655	laud
-35656	laugh
-35661	launch
-35662	laura
-35663	lava
-35664	law
-35665	lawn
-35666	lawns
-36111	laws
-36112	lawson
-36113	lax
-36114	lay
-36115	layer
-36116	layla
-36121	lays
-36122	lazy
-36123	lb
-36124	lbj
-36125	lbs
-36126	lc
-36131	lcd
-36132	ld
-36133	le
-36134	lead
-36135	leads
-36136	leaf
-36141	leafy
-36142	leah
-36143	leak
-36144	leaks
-36145	leaky
-36146	lean
-36151	leap
-36152	leaps
-36153	lear
-36154	learn
-36155	leary
-36156	lease
-36161	leash
-36162	least
-36163	leave
-36164	led
-36165	leda
-36166	ledge
-36211	lee
-36212	leech
-36213	leer
-36214	leers
-36215	leery
-36216	leeway
-36221	left
-36222	lefty
-36223	leg
-36224	legacy
-36225	legal
-36226	legion
-36231	legs
-36232	lei
-36233	lemon
-36234	len
-36235	lend
-36236	lends
-36241	length
-36242	lenin
-36243	lenny
-36244	lens
-36245	lent
-36246	leo
-36251	leon
-36252	leona
-36253	leper
-36254	leroy
-36255	less
-36256	lest
-36261	let
-36262	let's
-36263	lets
-36264	letter
-36265	levee
-36266	level
-36311	lever
-36312	levis
-36313	levy
-36314	lewd
-36315	lewis
-36316	lf
-36321	lg
-36322	lh
-36323	li
-36324	liar
-36325	liars
-36326	lib
-36331	libel
-36332	libido
-36333	libya
-36334	lice
-36335	lick
-36336	licks
-36341	lid
-36342	lids
-36343	lie
-36344	lied
-36345	lien
-36346	lies
-36351	lieu
-36352	lieut
-36353	life
-36354	lift
-36355	light
-36356	like
-36361	liked
-36362	likes
-36363	lil
-36364	lilac
-36365	lilt
-36366	lily
-36411	lima
-36412	limb
-36413	limbo
-36414	limbs
-36415	lime
-36416	limit
-36421	limp
-36422	limps
-36423	linda
-36424	line
-36425	linen
-36426	lines
-36431	lingo
-36432	link
-36433	lint
-36434	linus
-36435	lion
-36436	lip
-36441	lips
-36442	liquid
-36443	lira
-36444	lisa
-36445	lisp
-36446	list
-36451	listen
-36452	lists
-36453	liszt
-36454	lit
-36455	litton
-36456	live
-36461	liver
-36462	livid
-36463	liz
-36464	liza
-36465	lizzie
-36466	lj
-36511	lk
-36512	ll
-36513	lll
-36514	llll
-36515	lloyd
-36516	lm
-36521	lmn
-36522	ln
-36523	lo
-36524	load
-36525	loaf
-36526	loam
-36531	loamy
-36532	loan
-36533	lob
-36534	lobby
-36535	lobe
-36536	lobs
-36541	local
-36542	loch
-36543	lock
-36544	locks
-36545	lode
-36546	lodge
-36551	loft
-36552	lofty
-36553	log
-36554	logan
-36555	logic
-36556	logo
-36561	logs
-36562	loin
-36563	loins
-36564	lois
-36565	loiter
-36566	loki
-36611	lola
-36612	loll
-36613	lone
-36614	loner
-36615	long
-36616	longs
-36621	look
-36622	looks
-36623	loom
-36624	loon
-36625	loony
-36626	loop
-36631	loose
-36632	loot
-36633	lop
-36634	lopez
-36635	lops
-36636	lord
-36641	lore
-36642	loren
-36643	lose
-36644	loser
-36645	loses
-36646	loss
-36651	lost
-36652	lot
-36653	lots
-36654	lotto
-36655	lotus
-36656	lou
-36661	loud
-36662	louis
-36663	louise
-36664	louse
-36665	lousy
-36666	lout
-41111	love
-41112	loved
-41113	lover
-41114	low
-41115	lower
-41116	lowry
-41121	lox
-41122	loyal
-41123	lp
-41124	lq
-41125	lr
-41126	ls
-41131	lsd
-41132	lt
-41133	ltd
-41134	lu
-41135	luau
-41136	lucas
-41141	luce
-41142	lucia
-41143	lucid
-41144	luck
-41145	lucky
-41146	lucy
-41151	ludwig
-41152	lug
-41153	luger
-41154	lugs
-41155	luis
-41156	luke
-41161	lull
-41162	lulu
-41163	lump
-41164	lumps
-41165	lumpy
-41166	luna
-41211	lunar
-41212	lunch
-41213	lung
-41214	lunge
-41215	lungs
-41216	lurch
-41221	lure
-41222	lurid
-41223	lurk
-41224	lurks
-41225	lush
-41226	lust
-41231	lusty
-41232	lute
-41233	luxury
-41234	lv
-41235	lw
-41236	lx
-41241	ly
-41242	lye
-41243	lying
-41244	lyle
-41245	lymph
-41246	lynch
-41251	lynn
-41252	lynx
-41253	lyre
-41254	lyric
-41255	lz
-41256	m
-41261	m&m
-41262	m's
-41263	m-16
-41264	ma
-41265	ma'am
-41266	mabel
-41311	mac
-41312	macaw
-41313	mace
-41314	macho
-41315	macro
-41316	mad
-41321	madam
-41322	made
-41323	madly
-41324	madman
-41325	mafia
-41326	magic
-41331	magma
-41332	magnet
-41333	magoo
-41334	magpie
-41335	maid
-41336	maids
-41341	mail
-41342	maim
-41343	maims
-41344	main
-41345	maine
-41346	maize
-41351	maj
-41352	major
-41353	make
-41354	malady
-41355	male
-41356	malice
-41361	mall
-41362	malls
-41363	malt
-41364	mama
-41365	mambo
-41366	mammal
-41411	man
-41412	mane
-41413	mango
-41414	mania
-41415	manic
-41416	manly
-41421	manna
-41422	manor
-41423	mantle
-41424	many
-41425	mao
-41426	map
-41431	maple
-41432	maps
-41433	mar
-41434	marble
-41435	march
-41436	marco
-41441	mare
-41442	mares
-41443	marge
-41444	margo
-41445	maria
-41446	marie
-41451	marine
-41452	mario
-41453	mark
-41454	marks
-41455	marlin
-41456	marrow
-41461	marry
-41462	mars
-41463	marsh
-41464	mart
-41465	marty
-41466	martyr
-41511	marx
-41512	mary
-41513	mash
-41514	mask
-41515	masks
-41516	mason
-41521	mass
-41522	mast
-41523	masts
-41524	mat
-41525	match
-41526	mate
-41531	mated
-41532	mates
-41533	math
-41534	mats
-41535	matt
-41536	matzo
-41541	maud
-41542	maude
-41543	maul
-41544	mauls
-41545	maw
-41546	max
-41551	maxim
-41552	may
-41553	maybe
-41554	mayhem
-41555	mayo
-41556	mayor
-41561	mazda
-41562	maze
-41563	mazes
-41564	mb
-41565	mba
-41566	mc
-41611	mccoy
-41612	mcgee
-41613	md
-41614	me
-41615	meadow
-41616	meal
-41621	meals
-41622	mean
-41623	means
-41624	meant
-41625	meat
-41626	meaty
-41631	mecca
-41632	medal
-41633	media
-41634	medic
-41635	medley
-41636	meek
-41641	meet
-41642	meets
-41643	meg
-41644	meld
-41645	melee
-41646	mellow
-41651	melody
-41652	melon
-41653	melt
-41654	melts
-41655	memo
-41656	memoir
-41661	men
-41662	mend
-41663	mends
-41664	menu
-41665	meow
-41666	mercy
-42111	mere
-42112	merge
-42113	merit
-42114	merry
-42115	mesa
-42116	mesh
-42121	mess
-42122	messy
-42123	met
-42124	metal
-42125	meteor
-42126	meter
-42131	metro
-42132	meyer
-42133	mf
-42134	mg
-42135	mgm
-42136	mgmt
-42141	mh
-42142	mi
-42143	mia
-42144	miami
-42145	mice
-42146	mickey
-42151	micro
-42152	mid
-42153	midas
-42154	midst
-42155	mig
-42156	might
-42161	migs
-42162	mike
-42163	mild
-42164	mildew
-42165	mile
-42166	miles
-42211	milk
-42212	milky
-42213	mill
-42214	mills
-42215	milo
-42216	mime
-42221	mimes
-42222	mimi
-42223	mimic
-42224	mince
-42225	mind
-42226	minds
-42231	mine
-42232	mined
-42233	miner
-42234	mines
-42235	mini
-42236	mink
-42241	minnow
-42242	minor
-42243	mint
-42244	mints
-42245	minty
-42246	minus
-42251	mirage
-42252	mire
-42253	mired
-42254	mirth
-42255	mirv
-42256	misc
-42261	miser
-42262	misery
-42263	miss
-42264	mist
-42265	mists
-42266	misty
-42311	mit
-42312	mite
-42313	mites
-42314	mitt
-42315	mitts
-42316	mix
-42321	mixed
-42322	mixer
-42323	mixes
-42324	mixup
-42325	mj
-42326	mk
-42331	ml
-42332	mm
-42333	mmm
-42334	mmmm
-42335	mn
-42336	mno
-42341	mo
-42342	moan
-42343	moans
-42344	moat
-42345	mob
-42346	mobil
-42351	mobs
-42352	moby
-42353	mock
-42354	mocks
-42355	mod
-42356	mode
-42361	model
-42362	modem
-42363	moe
-42364	mogul
-42365	moist
-42366	mojo
-42411	molar
-42412	mold
-42413	molds
-42414	mole
-42415	moles
-42416	molly
-42421	molt
-42422	molten
-42423	mom
-42424	momma
-42425	mommy
-42426	mon
-42431	mona
-42432	money
-42433	monk
-42434	monkey
-42435	mono
-42436	month
-42441	monty
-42442	moo
-42443	mooch
-42444	mood
-42445	moods
-42446	moody
-42451	moon
-42452	moons
-42453	moor
-42454	moore
-42455	moose
-42456	mop
-42461	mope
-42462	mopes
-42463	mops
-42464	moral
-42465	morale
-42466	morbid
-42511	more
-42512	morn
-42513	moron
-42514	morph
-42515	morse
-42516	morsel
-42521	mort
-42522	mosaic
-42523	moses
-42524	moss
-42525	mossy
-42526	most
-42531	mote
-42532	motel
-42533	moth
-42534	mother
-42535	moths
-42536	motif
-42541	motor
-42542	motto
-42543	mound
-42544	mount
-42545	mourn
-42546	mouse
-42551	mousy
-42552	mouth
-42553	move
-42554	moved
-42555	moves
-42556	movie
-42561	mow
-42562	mowed
-42563	mower
-42564	mows
-42565	moxie
-42566	mp
-42611	mpg
-42612	mph
-42613	mq
-42614	mr
-42615	mrs
-42616	ms
-42621	msdos
-42622	msg
-42623	mt
-42624	mu
-42625	much
-42626	muck
-42631	mucus
-42632	mud
-42633	muddy
-42634	muff
-42635	muffin
-42636	mug
-42641	muggy
-42642	mugs
-42643	mulch
-42644	mule
-42645	mules
-42646	mull
-42651	mum
-42652	mumble
-42653	mummy
-42654	mumps
-42655	munch
-42656	mural
-42661	muriel
-42662	murk
-42663	murky
-42664	muse
-42665	muses
-42666	mush
-43111	mushy
-43112	music
-43113	musk
-43114	musky
-43115	muslim
-43116	muss
-43121	must
-43122	musty
-43123	mute
-43124	muted
-43125	mutt
-43126	muzak
-43131	mv
-43132	mw
-43133	mx
-43134	my
-43135	mylar
-43136	mynah
-43141	myob
-43142	myopia
-43143	myra
-43144	myron
-43145	myself
-43146	myth
-43151	myths
-43152	mz
-43153	n
-43154	n's
-43155	na
-43156	nab
-43161	nabs
-43162	nacl
-43163	nag
-43164	nags
-43165	nail
-43166	nails
-43211	naive
-43212	naked
-43213	name
-43214	named
-43215	names
-43216	nan
-43221	nancy
-43222	naomi
-43223	nap
-43224	nape
-43225	napkin
-43226	naps
-43231	nasa
-43232	nasal
-43233	nash
-43234	nasty
-43235	nat
-43236	natal
-43241	nate
-43242	nato
-43243	nature
-43244	nausea
-43245	naval
-43246	navel
-43251	navy
-43252	nay
-43253	nazi
-43254	nb
-43255	nc
-43256	nd
-43261	ne
-43262	near
-43263	nearby
-43264	neat
-43265	neck
-43266	necks
-43311	ned
-43312	need
-43313	needs
-43314	needy
-43315	negate
-43316	negro
-43321	neigh
-43322	neil
-43323	nell
-43324	neon
-43325	nerd
-43326	nerve
-43331	nest
-43332	nests
-43333	net
-43334	nets
-43335	never
-43336	new
-43341	newly
-43342	news
-43343	newt
-43344	next
-43345	nf
-43346	ng
-43351	nguyen
-43352	nh
-43353	ni
-43354	nice
-43355	nicer
-43356	nick
-43361	nickel
-43362	nico
-43363	niece
-43364	nifty
-43365	night
-43366	nil
-43411	nile
-43412	nina
-43413	nine
-43414	ninja
-43415	ninth
-43416	niobe
-43421	nip
-43422	nips
-43423	nitwit
-43424	nix
-43425	nixon
-43426	nj
-43431	nk
-43432	nl
-43433	nm
-43434	nn
-43435	nne
-43436	nnn
-43441	nnnn
-43442	nnw
-43443	no
-43444	noah
-43445	noble
-43446	nod
-43451	node
-43452	nods
-43453	noel
-43454	noise
-43455	noisy
-43456	nomad
-43461	none
-43462	nono
-43463	nook
-43464	noon
-43465	noose
-43466	nop
-43511	nope
-43512	nor
-43513	nora
-43514	norm
-43515	norma
-43516	north
-43521	norway
-43522	nose
-43523	nosy
-43524	not
-43525	notch
-43526	note
-43531	noted
-43532	notes
-43533	noun
-43534	nouns
-43535	nov
-43536	nova
-43541	novak
-43542	novel
-43543	now
-43544	np
-43545	nq
-43546	nr
-43551	ns
-43552	nt
-43553	nu
-43554	nuance
-43555	nude
-43556	nudge
-43561	nuke
-43562	null
-43563	numb
-43564	nun
-43565	nuns
-43566	nurse
-43611	nut
-43612	nutmeg
-43613	nuts
-43614	nutty
-43615	nv
-43616	nw
-43621	nx
-43622	ny
-43623	nyc
-43624	nylon
-43625	nymph
-43626	nz
-43631	o
-43632	o's
-43633	oa
-43634	oaf
-43635	oak
-43636	oaken
-43641	oar
-43642	oars
-43643	oasis
-43644	oat
-43645	oath
-43646	oats
-43651	ob
-43652	obese
-43653	obey
-43654	obeys
-43655	obit
-43656	object
-43661	oboe
-43662	oc
-43663	occur
-43664	ocean
-43665	ocr
-43666	oct
-44111	octal
-44112	octave
-44113	od
-44114	odd
-44115	odds
-44116	ode
-44121	odor
-44122	odors
-44123	oe
-44124	of
-44125	off
-44126	offend
-44131	offer
-44132	often
-44133	og
-44134	ogle
-44135	ogled
-44136	ogles
-44141	ogre
-44142	oh
-44143	ohio
-44144	oho
-44145	oi
-44146	oil
-44151	oiled
-44152	oils
-44153	oily
-44154	oink
-44155	oj
-44156	ok
-44161	okay
-44162	okays
-44163	okra
-44164	ol
-44165	olaf
-44166	old
-44211	older
-44212	ole
-44213	olga
-44214	olive
-44215	olson
-44216	om
-44221	omaha
-44222	omega
-44223	omen
-44224	omens
-44225	omit
-44226	omits
-44231	on
-44232	once
-44233	one
-44234	onion
-44235	only
-44236	onset
-44241	onto
-44242	onward
-44243	oo
-44244	ooo
-44245	oooo
-44246	oops
-44251	ooze
-44252	oozed
-44253	op
-44254	opal
-44255	opals
-44256	opec
-44261	open
-44262	opens
-44263	opera
-44264	opium
-44265	opq
-44266	opt
-44311	optic
-44312	opus
-44313	oq
-44314	or
-44315	oral
-44316	orb
-44321	orbit
-44322	orbs
-44323	orchid
-44324	order
-44325	ore
-44326	organ
-44331	orgy
-44332	ornery
-44333	orphan
-44334	os
-44335	oscar
-44336	ot
-44341	other
-44342	otis
-44343	otter
-44344	otto
-44345	ou
-44346	ouch
-44351	ought
-44352	ouija
-44353	ounce
-44354	our
-44355	ours
-44356	oust
-44361	out
-44362	outdo
-44363	outer
-44364	outlaw
-44365	ov
-44366	oval
-44411	ovals
-44412	ovary
-44413	oven
-44414	ovens
-44415	over
-44416	overt
-44421	ow
-44422	owe
-44423	owed
-44424	owens
-44425	owes
-44426	owing
-44431	owl
-44432	owls
-44433	own
-44434	owned
-44435	owner
-44436	owns
-44441	ox
-44442	oxen
-44443	oxide
-44444	oy
-44445	oz
-44446	ozone
-44451	p
-44452	p's
-44453	pa
-44454	pablo
-44455	pace
-44456	paces
-44461	pack
-44462	packet
-44463	packs
-44464	pact
-44465	pad
-44466	paddy
-44511	pads
-44512	pagan
-44513	page
-44514	pages
-44515	paid
-44516	pail
-44521	pain
-44522	pains
-44523	paint
-44524	pair
-44525	pajama
-44526	pal
-44531	pale
-44532	palm
-44533	palms
-44534	pals
-44535	pam
-44536	pan
-44541	panama
-44542	panda
-44543	pane
-44544	panel
-44545	pang
-44546	panic
-44551	pans
-44552	pansy
-44553	pant
-44554	pants
-44555	papa
-44556	paper
-44561	pappy
-44562	par
-44563	pardon
-44564	pare
-44565	paris
-44566	park
-44611	parks
-44612	parse
-44613	part
-44614	parts
-44615	party
-44616	pascal
-44621	pass
-44622	past
-44623	paste
-44624	pasty
-44625	pat
-44626	patch
-44631	path
-44632	paths
-44633	patio
-44634	pats
-44635	patsy
-44636	patton
-44641	patty
-44642	paul
-44643	paula
-44644	pause
-44645	pave
-44646	paved
-44651	paves
-44652	paw
-44653	pawed
-44654	pawn
-44655	pawns
-44656	paws
-44661	pay
-44662	payday
-44663	pb
-44664	pc
-44665	pd
-44666	pdq
-45111	pe
-45112	pea
-45113	peace
-45114	peach
-45115	peak
-45116	peaks
-45121	pear
-45122	pearl
-45123	pears
-45124	peas
-45125	pebble
-45126	pecan
-45131	peck
-45132	pecks
-45133	pedal
-45134	pedro
-45135	pee
-45136	peed
-45141	peek
-45142	peel
-45143	peep
-45144	peer
-45145	peeve
-45146	peg
-45151	peggy
-45152	pegs
-45153	pelt
-45154	pen
-45155	penal
-45156	pencil
-45161	penn
-45162	penny
-45163	pens
-45164	peony
-45165	people
-45166	pep
-45211	peppy
-45212	pepsi
-45213	per
-45214	perch
-45215	percy
-45216	perez
-45221	peril
-45222	period
-45223	perk
-45224	perks
-45225	perky
-45226	perm
-45231	perry
-45232	pert
-45233	peru
-45234	peso
-45235	pest
-45236	pests
-45241	pet
-45242	petal
-45243	pete
-45244	peter
-45245	pets
-45246	petty
-45251	pf
-45252	pfc
-45253	pg
-45254	ph
-45255	phase
-45256	phd
-45261	phi
-45262	phil
-45263	phlox
-45264	phone
-45265	phony
-45266	photo
-45311	phrase
-45312	pi
-45313	piano
-45314	pick
-45315	picks
-45316	pickup
-45321	picky
-45322	picnic
-45323	pie
-45324	piece
-45325	pier
-45326	pierce
-45331	piers
-45332	pies
-45333	piety
-45334	pig
-45335	piggy
-45336	pigs
-45341	pike
-45342	pile
-45343	piles
-45344	pill
-45345	pills
-45346	pilot
-45351	pimp
-45352	pimple
-45353	pin
-45354	pinch
-45355	pine
-45356	pines
-45361	ping
-45362	pink
-45363	pinko
-45364	pins
-45365	pint
-45366	pinto
-45411	pinup
-45412	pious
-45413	pip
-45414	pipe
-45415	piper
-45416	pirate
-45421	pit
-45422	pita
-45423	pitch
-45424	pith
-45425	pithy
-45426	pits
-45431	pity
-45432	pivot
-45433	pixel
-45434	pixie
-45435	pizza
-45436	pj
-45441	pk
-45442	pl
-45443	place
-45444	plague
-45445	plaid
-45446	plain
-45451	plan
-45452	plane
-45453	planet
-45454	plank
-45455	plant
-45456	plate
-45461	plato
-45462	play
-45463	plays
-45464	plaza
-45465	plea
-45466	plead
-45511	pleas
-45512	pleat
-45513	pledge
-45514	plod
-45515	plods
-45516	plop
-45521	plot
-45522	plots
-45523	plow
-45524	plows
-45525	ploy
-45526	ploys
-45531	pluck
-45532	plug
-45533	plugs
-45534	plum
-45535	plume
-45536	plump
-45541	plums
-45542	plus
-45543	plush
-45544	pluto
-45545	ply
-45546	pm
-45551	pms
-45552	pn
-45553	po
-45554	poach
-45555	pobox
-45556	pod
-45561	pods
-45562	poe
-45563	poem
-45564	poems
-45565	poet
-45566	poetry
-45611	pogo
-45612	poi
-45613	point
-45614	poise
-45615	poison
-45616	poke
-45621	poked
-45622	pokes
-45623	pol
-45624	polar
-45625	pole
-45626	poles
-45631	police
-45632	polio
-45633	polk
-45634	polka
-45635	poll
-45636	polls
-45641	polo
-45642	pomp
-45643	pond
-45644	ponds
-45645	pony
-45646	pooch
-45651	pooh
-45652	pool
-45653	pools
-45654	poop
-45655	poor
-45656	pop
-45661	pope
-45662	poppy
-45663	pops
-45664	porch
-45665	pore
-45666	pores
-46111	pork
-46112	porn
-46113	porous
-46114	port
-46115	pose
-46116	posed
-46121	poses
-46122	posh
-46123	posse
-46124	post
-46125	posts
-46126	posy
-46131	pot
-46132	potato
-46133	pots
-46134	potts
-46135	pouch
-46136	pound
-46141	pour
-46142	pours
-46143	pout
-46144	pouts
-46145	pow
-46146	powder
-46151	power
-46152	pox
-46153	pp
-46154	ppm
-46155	ppp
-46156	pppp
-46161	pq
-46162	pqr
-46163	pr
-46164	prank
-46165	prawn
-46166	pray
-46211	prays
-46212	preen
-46213	prefix
-46214	prep
-46215	press
-46216	prexy
-46221	prey
-46222	price
-46223	prick
-46224	pride
-46225	prig
-46226	prim
-46231	prime
-46232	prince
-46233	print
-46234	prior
-46235	prism
-46236	prissy
-46241	privy
-46242	prize
-46243	pro
-46244	probe
-46245	prod
-46246	prods
-46251	prof
-46252	prom
-46253	promo
-46254	prone
-46255	prong
-46256	proof
-46261	prop
-46262	propel
-46263	props
-46264	prose
-46265	proud
-46266	prove
-46311	prow
-46312	prowl
-46313	proxy
-46314	prude
-46315	prune
-46316	pry
-46321	ps
-46322	psalm
-46323	psi
-46324	psych
-46325	pt
-46326	pu
-46331	pub
-46332	pubic
-46333	pubs
-46334	puck
-46335	pucker
-46336	puddle
-46341	pudgy
-46342	puff
-46343	puffs
-46344	puffy
-46345	pug
-46346	puke
-46351	pull
-46352	pulls
-46353	pulp
-46354	pulse
-46355	puma
-46356	pump
-46361	pumps
-46362	pun
-46363	punch
-46364	punish
-46365	punk
-46366	punks
-46411	punky
-46412	puns
-46413	punt
-46414	punts
-46415	puny
-46416	pup
-46421	pupil
-46422	puppy
-46423	pure
-46424	purge
-46425	purr
-46426	purse
-46431	pus
-46432	push
-46433	pushy
-46434	pussy
-46435	put
-46436	puts
-46441	putt
-46442	putty
-46443	puzzle
-46444	pv
-46445	pvc
-46446	pw
-46451	px
-46452	py
-46453	pygmy
-46454	pyre
-46455	pyrex
-46456	pz
-46461	q
-46462	q&a
-46463	q's
-46464	qa
-46465	qb
-46466	qc
-46511	qd
-46512	qe
-46513	qed
-46514	qf
-46515	qg
-46516	qh
-46521	qi
-46522	qj
-46523	qk
-46524	ql
-46525	qm
-46526	qn
-46531	qo
-46532	qp
-46533	qq
-46534	qqq
-46535	qqqq
-46536	qr
-46541	qrs
-46542	qs
-46543	qt
-46544	qu
-46545	quack
-46546	quad
-46551	quail
-46552	quake
-46553	quarry
-46554	quart
-46555	queasy
-46556	queen
-46561	query
-46562	quest
-46563	queue
-46564	quick
-46565	quiet
-46566	quill
-46611	quilt
-46612	quinn
-46613	quip
-46614	quips
-46615	quirk
-46616	quit
-46621	quite
-46622	quits
-46623	quiver
-46624	quiz
-46625	quota
-46626	quote
-46631	qv
-46632	qw
-46633	qx
-46634	qy
-46635	qz
-46636	r
-46641	r&b
-46642	r&d
-46643	r&r
-46644	r's
-46645	ra
-46646	rabbi
-46651	rabbit
-46652	rabid
-46653	race
-46654	raced
-46655	races
-46656	rack
-46661	racy
-46662	radar
-46663	radio
-46664	radish
-46665	raft
-46666	rafts
-51111	rag
-51112	rage
-51113	raged
-51114	rags
-51115	raid
-51116	raids
-51121	rail
-51122	rails
-51123	rain
-51124	rains
-51125	rainy
-51126	raise
-51131	rake
-51132	raked
-51133	rakes
-51134	rally
-51135	ralph
-51136	ram
-51141	rambo
-51142	ramp
-51143	rams
-51144	ramsey
-51145	ran
-51146	ranch
-51151	rand
-51152	randy
-51153	rang
-51154	range
-51155	rank
-51156	ranks
-51161	rant
-51162	rants
-51163	raoul
-51164	rap
-51165	rape
-51166	raped
-51211	rapid
-51212	raps
-51213	rare
-51214	rascal
-51215	rash
-51216	rat
-51221	rate
-51222	rated
-51223	rates
-51224	ratio
-51225	rats
-51226	rattle
-51231	rave
-51232	raved
-51233	raven
-51234	raw
-51235	ray
-51236	rayon
-51241	rays
-51242	raze
-51243	razor
-51244	rb
-51245	rc
-51246	rd
-51251	re
-51252	reach
-51253	read
-51254	reads
-51255	ready
-51256	reagan
-51261	real
-51262	realm
-51263	reap
-51264	rear
-51265	rebel
-51266	rebut
-51311	recap
-51312	recipe
-51313	recur
-51314	red
-51315	redeem
-51316	redo
-51321	reduce
-51322	reed
-51323	reeds
-51324	reef
-51325	reek
-51326	reeks
-51331	reel
-51332	reels
-51333	ref
-51334	refer
-51335	refs
-51336	regal
-51341	regs
-51342	rehab
-51343	reich
-51344	reid
-51345	reign
-51346	rein
-51351	reins
-51352	reject
-51353	relax
-51354	relay
-51355	relic
-51356	rely
-51361	rem
-51362	remedy
-51363	remit
-51364	remix
-51365	rena
-51366	rend
-51411	renee
-51412	renew
-51413	reno
-51414	renown
-51415	rent
-51416	rents
-51421	rep
-51422	repay
-51423	repel
-51424	repent
-51425	reply
-51426	reps
-51431	rerun
-51432	reset
-51433	resin
-51434	resort
-51435	rest
-51436	rests
-51441	retch
-51442	return
-51443	reuse
-51444	rev
-51445	reveal
-51446	revel
-51451	review
-51452	rex
-51453	rf
-51454	rg
-51455	rh
-51456	rhino
-51461	rho
-51462	rhoda
-51463	rhyme
-51464	ri
-51465	rib
-51466	ribs
-51511	rice
-51512	rich
-51513	rick
-51514	ricky
-51515	rico
-51516	rid
-51521	ride
-51522	rider
-51523	ridge
-51524	rif
-51525	rifle
-51526	rift
-51531	rig
-51532	riggs
-51533	right
-51534	rigid
-51535	rigs
-51536	riley
-51541	rim
-51542	rims
-51543	rind
-51544	ring
-51545	ringo
-51546	rings
-51551	rink
-51552	rinse
-51553	rio
-51554	riot
-51555	riots
-51556	rip
-51561	ripe
-51562	ripen
-51563	ripley
-51564	rips
-51565	rise
-51566	risen
-51611	risk
-51612	risky
-51613	rite
-51614	ritual
-51615	rival
-51616	river
-51621	rivet
-51622	rj
-51623	rk
-51624	rl
-51625	rm
-51626	rn
-51631	rna
-51632	ro
-51633	roach
-51634	road
-51635	roads
-51636	roam
-51641	roar
-51642	roast
-51643	rob
-51644	robe
-51645	robin
-51646	robot
-51651	robs
-51652	rock
-51653	rocket
-51654	rocks
-51655	rocky
-51656	rod
-51661	rode
-51662	rodeo
-51663	rods
-51664	roger
-51665	rogue
-51666	role
-52111	roll
-52112	rolls
-52113	roman
-52114	rome
-52115	romeo
-52116	romp
-52121	ron
-52122	roof
-52123	rook
-52124	rookie
-52125	room
-52126	rooms
-52131	roomy
-52132	roost
-52133	root
-52134	roots
-52135	rope
-52136	rosa
-52141	rose
-52142	ross
-52143	rosy
-52144	rot
-52145	rote
-52146	roth
-52151	rots
-52152	rouge
-52153	rough
-52154	round
-52155	rouse
-52156	rout
-52161	route
-52162	rover
-52163	row
-52164	rowdy
-52165	rows
-52166	roy
-52211	royal
-52212	rp
-52213	rpg
-52214	rq
-52215	rr
-52216	rrr
-52221	rrrr
-52222	rs
-52223	rst
-52224	rsvp
-52225	rt
-52226	ru
-52231	rub
-52232	rube
-52233	rubs
-52234	ruby
-52235	rude
-52236	rudy
-52241	rufus
-52242	rug
-52243	rugged
-52244	rugs
-52245	ruin
-52246	ruins
-52251	rule
-52252	ruler
-52253	rules
-52254	rum
-52255	rummy
-52256	rumor
-52261	rump
-52262	rumpus
-52263	run
-52264	rune
-52265	runes
-52266	rung
-52311	runs
-52312	runt
-52313	runway
-52314	rural
-52315	ruse
-52316	rush
-52321	russ
-52322	rust
-52323	rusts
-52324	rusty
-52325	rut
-52326	ruth
-52331	ruts
-52332	rv
-52333	rw
-52334	rx
-52335	ry
-52336	ryan
-52341	rye
-52342	rz
-52343	s
-52344	s's
-52345	sa
-52346	saber
-52351	sable
-52352	sac
-52353	sack
-52354	sacks
-52355	sacred
-52356	sad
-52361	saddle
-52362	sadly
-52363	safari
-52364	safe
-52365	safer
-52366	safes
-52411	sag
-52412	saga
-52413	sagas
-52414	sage
-52415	sags
-52416	said
-52421	sail
-52422	sails
-52423	saint
-52424	sake
-52425	sal
-52426	salad
-52431	salami
-52432	sale
-52433	sales
-52434	salk
-52435	sally
-52436	salon
-52441	salt
-52442	salts
-52443	salty
-52444	salvo
-52445	sam
-52446	same
-52451	sammy
-52452	samuel
-52453	sand
-52454	sandal
-52455	sands
-52456	sandy
-52461	sane
-52462	sang
-52463	sank
-52464	santa
-52465	sap
-52466	sappy
-52511	saps
-52512	sara
-52513	sarah
-52514	saran
-52515	sase
-52516	sash
-52521	sat
-52522	satan
-52523	satin
-52524	sauce
-52525	saucy
-52526	saudi
-52531	saul
-52532	sauna
-52533	saute
-52534	save
-52535	saved
-52536	saves
-52541	savvy
-52542	saw
-52543	saws
-52544	sawyer
-52545	sax
-52546	say
-52551	says
-52552	sb
-52553	sc
-52554	scab
-52555	scald
-52556	scale
-52561	scalp
-52562	scam
-52563	scamp
-52564	scan
-52565	scans
-52566	scar
-52611	scare
-52612	scarf
-52613	scars
-52614	scary
-52615	scat
-52616	scene
-52621	scent
-52622	school
-52623	scoff
-52624	scold
-52625	scoop
-52626	scoot
-52631	scope
-52632	scorch
-52633	score
-52634	scorn
-52635	scot
-52636	scott
-52641	scour
-52642	scout
-52643	scow
-52644	scowl
-52645	scram
-52646	scrap
-52651	scrape
-52652	screw
-52653	scrip
-52654	scrod
-52655	scrub
-52656	scuba
-52661	scuff
-52662	scum
-52663	scurry
-52664	sd
-52665	sdi
-52666	se
-53111	sea
-53112	seal
-53113	seals
-53114	seam
-53115	seams
-53116	seamy
-53121	sean
-53122	sear
-53123	sears
-53124	seas
-53125	season
-53126	seat
-53131	seats
-53132	sect
-53133	sects
-53134	sedan
-53135	seduce
-53136	see
-53141	seed
-53142	seeds
-53143	seedy
-53144	seek
-53145	seeks
-53146	seem
-53151	seems
-53152	seen
-53153	seep
-53154	seer
-53155	seers
-53156	sees
-53161	seethe
-53162	seize
-53163	self
-53164	sell
-53165	sells
-53166	semen
-53211	semi
-53212	send
-53213	sends
-53214	sense
-53215	sent
-53216	sentry
-53221	sep
-53222	sepia
-53223	sequel
-53224	sequin
-53225	serb
-53226	serf
-53231	serum
-53232	serve
-53233	servo
-53234	set
-53235	seth
-53236	sets
-53241	setup
-53242	seven
-53243	sever
-53244	severe
-53245	sew
-53246	sewed
-53251	sewer
-53252	sewn
-53253	sews
-53254	sex
-53255	sexy
-53256	sf
-53261	sg
-53262	sgt
-53263	sh
-53264	shack
-53265	shade
-53266	shady
-53311	shaft
-53312	shaggy
-53313	shake
-53314	shaken
-53315	shaky
-53316	shall
-53321	sham
-53322	shame
-53323	shank
-53324	shape
-53325	share
-53326	shari
-53331	shark
-53332	sharp
-53333	shave
-53334	shaw
-53335	shawl
-53336	she
-53341	she'd
-53342	she's
-53343	shea
-53344	sheaf
-53345	shear
-53346	sheath
-53351	shed
-53352	sheds
-53353	sheep
-53354	sheer
-53355	sheet
-53356	sheik
-53361	shelf
-53362	shell
-53363	shh
-53364	shift
-53365	shifty
-53366	shin
-53411	shine
-53412	shins
-53413	shiny
-53414	ship
-53415	ships
-53416	shirk
-53421	shirt
-53422	shock
-53423	shoe
-53424	shoes
-53425	shone
-53426	shoo
-53431	shook
-53432	shoot
-53433	shop
-53434	shops
-53435	shore
-53436	short
-53441	shot
-53442	shots
-53443	shout
-53444	shove
-53445	show
-53446	shown
-53451	shows
-53452	shrank
-53453	shred
-53454	shrew
-53455	shriek
-53456	shrub
-53461	shrug
-53462	shuck
-53463	shun
-53464	shut
-53465	shuts
-53466	shy
-53511	shyly
-53512	si
-53513	sic
-53514	sick
-53515	sicko
-53516	sid
-53521	side
-53522	siege
-53523	siesta
-53524	sieve
-53525	sift
-53526	sifts
-53531	sigh
-53532	sighs
-53533	sight
-53534	sigma
-53535	sign
-53536	signal
-53541	signs
-53542	silk
-53543	silks
-53544	silky
-53545	sill
-53546	silly
-53551	silo
-53552	silt
-53553	silver
-53554	simms
-53555	simon
-53556	simons
-53561	sims
-53562	sin
-53563	since
-53564	sinew
-53565	sing
-53566	sings
-53611	sink
-53612	sinks
-53613	sins
-53614	sinus
-53615	sip
-53616	sips
-53621	sir
-53622	sire
-53623	siren
-53624	sis
-53625	sit
-53626	site
-53631	sites
-53632	sits
-53633	six
-53634	sixgun
-53635	sixth
-53636	sixty
-53641	size
-53642	sizes
-53643	sj
-53644	sk
-53645	skate
-53646	skew
-53651	ski
-53652	skid
-53653	skids
-53654	skies
-53655	skill
-53656	skim
-53661	skimpy
-53662	skims
-53663	skin
-53664	skip
-53665	skips
-53666	skirt
-54111	skis
-54112	skit
-54113	skits
-54114	skulk
-54115	skull
-54116	skunk
-54121	sky
-54122	sl
-54123	slab
-54124	slabs
-54125	slack
-54126	slain
-54131	slam
-54132	slams
-54133	slang
-54134	slant
-54135	slap
-54136	slaps
-54141	slash
-54142	slate
-54143	slater
-54144	slave
-54145	slaw
-54146	slay
-54151	sled
-54152	sleds
-54153	sleek
-54154	sleep
-54155	sleet
-54156	slept
-54161	slew
-54162	slice
-54163	slick
-54164	slid
-54165	slide
-54166	slim
-54211	slime
-54212	slimy
-54213	sling
-54214	slip
-54215	slips
-54216	slit
-54221	sliver
-54222	slob
-54223	slog
-54224	sloop
-54225	slop
-54226	slope
-54231	sloppy
-54232	slops
-54233	slosh
-54234	slot
-54235	sloth
-54236	slots
-54241	slow
-54242	slows
-54243	slug
-54244	slugs
-54245	slum
-54246	slump
-54251	slums
-54252	slung
-54253	slur
-54254	slurp
-54255	slurs
-54256	sly
-54261	slyly
-54262	sm
-54263	smack
-54264	small
-54265	smart
-54266	smash
-54311	smear
-54312	smell
-54313	smile
-54314	smirk
-54315	smith
-54316	smock
-54321	smog
-54322	smoke
-54323	smoky
-54324	smooth
-54325	smug
-54326	smut
-54331	sn
-54332	snack
-54333	snafu
-54334	snag
-54335	snail
-54336	snake
-54341	snap
-54342	snaps
-54343	snare
-54344	snarl
-54345	snatch
-54346	sneak
-54351	sneer
-54352	sniff
-54353	snip
-54354	snipe
-54355	snob
-54356	snobs
-54361	snoop
-54362	snore
-54363	snort
-54364	snot
-54365	snout
-54366	snow
-54411	snows
-54412	snowy
-54413	snub
-54414	snubs
-54415	snuff
-54416	snug
-54421	so
-54422	soak
-54423	soaks
-54424	soap
-54425	soapy
-54426	soar
-54431	soars
-54432	sob
-54433	sober
-54434	sobs
-54435	social
-54436	sock
-54441	socks
-54442	sod
-54443	soda
-54444	sofa
-54445	soft
-54446	soften
-54451	soggy
-54452	soil
-54453	soils
-54454	sol
-54455	solar
-54456	sold
-54461	sole
-54462	solemn
-54463	solid
-54464	solo
-54465	solve
-54466	somber
-54511	some
-54512	son
-54513	sonar
-54514	song
-54515	songs
-54516	sonny
-54521	sons
-54522	sony
-54523	soon
-54524	soot
-54525	sop
-54526	sore
-54531	sorry
-54532	sort
-54533	sorts
-54534	sos
-54535	sot
-54536	soul
-54541	sound
-54542	soup
-54543	soupy
-54544	sour
-54545	source
-54546	south
-54551	sow
-54552	sown
-54553	sows
-54554	sox
-54555	soy
-54556	soyuz
-54561	sp
-54562	spa
-54563	space
-54564	spade
-54565	spain
-54566	spam
-54611	span
-54612	spank
-54613	spans
-54614	spar
-54615	spare
-54616	spark
-54621	sparks
-54622	spas
-54623	spasm
-54624	spat
-54625	spawn
-54626	spay
-54631	speak
-54632	spear
-54633	spec
-54634	speck
-54635	sped
-54636	speed
-54641	spell
-54642	spend
-54643	spent
-54644	sperm
-54645	spew
-54646	sphinx
-54651	spice
-54652	spicy
-54653	spies
-54654	spike
-54655	spiky
-54656	spill
-54661	spin
-54662	spine
-54663	spins
-54664	spiny
-54665	spire
-54666	spit
-55111	spite
-55112	spits
-55113	spitz
-55114	splat
-55115	split
-55116	spock
-55121	spoil
-55122	spoke
-55123	sponge
-55124	spoof
-55125	spook
-55126	spooky
-55131	spool
-55132	spoon
-55133	spore
-55134	sport
-55135	spot
-55136	spots
-55141	spout
-55142	sprain
-55143	spray
-55144	spree
-55145	sprig
-55146	spruce
-55151	spry
-55152	spud
-55153	spun
-55154	spunk
-55155	spur
-55156	spurn
-55161	spurs
-55162	spurt
-55163	spy
-55164	sq
-55165	squad
-55166	squat
-55211	squid
-55212	squint
-55213	squirm
-55214	sr
-55215	ss
-55216	sse
-55221	sss
-55222	ssss
-55223	sst
-55224	ssw
-55225	st
-55226	stab
-55231	stabs
-55232	stack
-55233	stacy
-55234	staff
-55235	stag
-55236	stage
-55241	stain
-55242	stair
-55243	stake
-55244	stale
-55245	stalk
-55246	stall
-55251	stamp
-55252	stan
-55253	stance
-55254	stand
-55255	stank
-55256	star
-55261	stare
-55262	stark
-55263	starr
-55264	stars
-55265	start
-55266	stash
-55311	stat
-55312	state
-55313	stats
-55314	statue
-55315	stay
-55316	stays
-55321	steady
-55322	steak
-55323	steal
-55324	steam
-55325	steed
-55326	steel
-55331	steep
-55332	steer
-55333	stein
-55334	stella
-55335	stem
-55336	stems
-55341	step
-55342	steps
-55343	stern
-55344	steve
-55345	stew
-55346	stick
-55351	stiff
-55352	still
-55353	sting
-55354	stingy
-55355	stink
-55356	stint
-55361	stir
-55362	stirs
-55363	stock
-55364	stoke
-55365	stole
-55366	stomp
-55411	stone
-55412	stony
-55413	stood
-55414	stool
-55415	stoop
-55416	stop
-55421	stops
-55422	store
-55423	stork
-55424	storm
-55425	stormy
-55426	story
-55431	stout
-55432	stove
-55433	stow
-55434	strafe
-55435	strap
-55436	straw
-55441	stray
-55442	strep
-55443	strike
-55444	strip
-55445	stroll
-55446	strum
-55451	strut
-55452	stu
-55453	stuart
-55454	stub
-55455	stuck
-55456	stud
-55461	study
-55462	stuff
-55463	stuffy
-55464	stump
-55465	stun
-55466	stung
-55511	stunk
-55512	stuns
-55513	stunt
-55514	sty
-55515	style
-55516	styx
-55521	su
-55522	suave
-55523	sub
-55524	subs
-55525	subtle
-55526	such
-55531	suck
-55532	sucks
-55533	suds
-55534	sue
-55535	sued
-55536	suede
-55541	sues
-55542	suey
-55543	sugar
-55544	suit
-55545	suite
-55546	suits
-55551	sulk
-55552	sulks
-55553	sulky
-55554	sultry
-55555	sum
-55556	sumac
-55561	summon
-55562	sumo
-55563	sums
-55564	sun
-55565	sung
-55566	sunk
-55611	sunny
-55612	suns
-55613	sunset
-55614	sunup
-55615	sup
-55616	super
-55621	supt
-55622	sure
-55623	surf
-55624	surge
-55625	susan
-55626	sushi
-55631	susie
-55632	sutton
-55633	suzy
-55634	sv
-55635	sven
-55636	sw
-55641	swab
-55642	swag
-55643	swam
-55644	swami
-55645	swamp
-55646	swampy
-55651	swan
-55652	swank
-55653	swans
-55654	swap
-55655	swarm
-55656	swat
-55661	sway
-55662	sways
-55663	swear
-55664	sweat
-55665	sweaty
-55666	swede
-56111	sweep
-56112	sweet
-56113	swell
-56114	swept
-56115	swift
-56116	swig
-56121	swim
-56122	swims
-56123	swine
-56124	swing
-56125	swipe
-56126	swirl
-56131	swish
-56132	swiss
-56133	swoop
-56134	sword
-56135	swore
-56136	sworn
-56141	swum
-56142	swung
-56143	sx
-56144	sy
-56145	sybil
-56146	symbol
-56151	syrup
-56152	sz
-56153	t
-56154	t&a
-56155	t's
-56156	ta
-56161	tab
-56162	table
-56163	tablet
-56164	taboo
-56165	tabs
-56166	tabu
-56211	tack
-56212	tacky
-56213	taco
-56214	tact
-56215	tactic
-56216	tad
-56221	taffy
-56222	taft
-56223	tag
-56224	tags
-56225	tail
-56226	tails
-56231	taint
-56232	take
-56233	taken
-56234	takes
-56235	tale
-56236	tales
-56241	talk
-56242	talks
-56243	tall
-56244	tally
-56245	talon
-56246	tame
-56251	tamer
-56252	tamper
-56253	tan
-56254	tang
-56255	tango
-56256	tangy
-56261	tank
-56262	tanks
-56263	tans
-56264	tanya
-56265	tao
-56266	tap
-56311	tape
-56312	taped
-56313	taper
-56314	tapes
-56315	taps
-56316	tar
-56321	tardy
-56322	target
-56323	tarp
-56324	tarry
-56325	tart
-56326	tarts
-56331	task
-56332	taste
-56333	tasty
-56334	tate
-56335	tater
-56336	tattle
-56341	tau
-56342	taunt
-56343	taut
-56344	tavern
-56345	tax
-56346	taxi
-56351	tb
-56352	tba
-56353	tbsp
-56354	tc
-56355	td
-56356	te
-56361	tea
-56362	teach
-56363	teacup
-56364	teak
-56365	team
-56366	teams
-56411	tear
-56412	tease
-56413	tech
-56414	ted
-56415	teddy
-56416	tee
-56421	teen
-56422	teens
-56423	tees
-56424	teeth
-56425	tell
-56426	tells
-56431	temp
-56432	temper
-56433	temple
-56434	tempo
-56435	temps
-56436	tempt
-56441	ten
-56442	tend
-56443	tends
-56444	tenor
-56445	tens
-56446	tense
-56451	tent
-56452	tenth
-56453	tents
-56454	term
-56455	terms
-56456	terra
-56461	terry
-56462	terse
-56463	test
-56464	tests
-56465	testy
-56466	tex
-56511	texan
-56512	texas
-56513	text
-56514	tf
-56515	tg
-56516	tgif
-56521	th
-56522	thai
-56523	than
-56524	thank
-56525	that
-56526	thaw
-56531	thaws
-56532	the
-56533	theft
-56534	their
-56535	them
-56536	theme
-56541	then
-56542	there
-56543	these
-56544	theta
-56545	they
-56546	thick
-56551	thief
-56552	thigh
-56553	thin
-56554	thing
-56555	think
-56556	thins
-56561	third
-56562	this
-56563	tho
-56564	thong
-56565	thor
-56566	thorn
-56611	thorny
-56612	those
-56613	thread
-56614	three
-56615	threw
-56616	throb
-56621	throw
-56622	throws
-56623	thru
-56624	thu
-56625	thud
-56626	thug
-56631	thumb
-56632	thump
-56633	thur
-56634	thus
-56635	thyme
-56636	ti
-56641	tiara
-56642	tibet
-56643	tic
-56644	tick
-56645	ticket
-56646	ticks
-56651	tics
-56652	tidal
-56653	tidbit
-56654	tide
-56655	tidy
-56656	tie
-56661	tied
-56662	tier
-56663	ties
-56664	tiger
-56665	tight
-56666	tile
-61111	tiled
-61112	tiles
-61113	till
-61114	tilt
-61115	tim
-61116	time
-61121	times
-61122	timex
-61123	timid
-61124	tin
-61125	tina
-61126	tinge
-61131	tinny
-61132	tint
-61133	tiny
-61134	tip
-61135	tipoff
-61136	tips
-61141	tipsy
-61142	tire
-61143	tired
-61144	tires
-61145	title
-61146	tj
-61151	tk
-61152	tl
-61153	tlc
-61154	tm
-61155	tn
-61156	tnt
-61161	to
-61162	toad
-61163	toads
-61164	toast
-61165	toby
-61166	today
-61211	todd
-61212	toe
-61213	toes
-61214	tofu
-61215	toga
-61216	toil
-61221	toilet
-61222	toils
-61223	token
-61224	tokyo
-61225	told
-61226	toll
-61231	tolls
-61232	tom
-61233	tomb
-61234	tombs
-61235	tommy
-61236	ton
-61241	tonal
-61242	tone
-61243	toni
-61244	tonic
-61245	tons
-61246	tonsil
-61251	tony
-61252	too
-61253	took
-61254	tool
-61255	tools
-61256	toot
-61261	tooth
-61262	top
-61263	topaz
-61264	topic
-61265	topple
-61266	tops
-61311	topsy
-61312	torah
-61313	torch
-61314	tore
-61315	torn
-61316	torso
-61321	tort
-61322	tory
-61323	toss
-61324	tot
-61325	total
-61326	tote
-61331	totem
-61332	tots
-61333	touch
-61334	tough
-61335	tour
-61336	tours
-61341	tout
-61342	tow
-61343	towel
-61344	tower
-61345	town
-61346	tows
-61351	toxic
-61352	toy
-61353	toys
-61354	tp
-61355	tq
-61356	tr
-61361	trace
-61362	track
-61363	tract
-61364	tracy
-61365	trade
-61366	trail
-61411	train
-61412	trait
-61413	tramp
-61414	trap
-61415	traps
-61416	trash
-61421	tray
-61422	trays
-61423	tread
-61424	treat
-61425	treble
-61426	tree
-61431	trees
-61432	trek
-61433	trench
-61434	trend
-61435	trial
-61436	tribe
-61441	trick
-61442	tricky
-61443	tried
-61444	tries
-61445	trig
-61446	trill
-61451	trim
-61452	trims
-61453	trio
-61454	trip
-61455	tripe
-61456	trips
-61461	trite
-61462	troll
-61463	troop
-61464	trot
-61465	trots
-61466	trout
-61511	troy
-61512	truce
-61513	truck
-61514	trudge
-61515	trudy
-61516	true
-61521	truly
-61522	trunk
-61523	truss
-61524	trust
-61525	truth
-61526	try
-61531	ts
-61532	tsar
-61533	tsp
-61534	tt
-61535	ttt
-61536	tttt
-61541	tu
-61542	tub
-61543	tuba
-61544	tube
-61545	tubes
-61546	tubs
-61551	tuck
-61552	tue
-61553	tues
-61554	tuft
-61555	tufts
-61556	tug
-61561	tugs
-61562	tulip
-61563	tumble
-61564	tuna
-61565	tune
-61566	tuned
-61611	tunic
-61612	tunnel
-61613	turf
-61614	turk
-61615	turkey
-61616	turn
-61621	tush
-61622	tusk
-61623	tusks
-61624	tut
-61625	tutor
-61626	tutu
-61631	tuv
-61632	tux
-61633	tv
-61634	tw
-61635	twa
-61636	twain
-61641	tweak
-61642	tweed
-61643	twice
-61644	twig
-61645	twigs
-61646	twin
-61651	twine
-61652	twins
-61653	twirl
-61654	twist
-61655	twisty
-61656	twit
-61661	two
-61662	twos
-61663	tx
-61664	ty
-61665	tycoon
-61666	tying
-62111	tyke
-62112	tyler
-62113	type
-62114	typed
-62115	types
-62116	typo
-62121	tz
-62122	u
-62123	u's
-62124	u-2
-62125	ua
-62126	ub
-62131	uc
-62132	ud
-62133	ue
-62134	uf
-62135	ufo
-62136	ug
-62141	ugh
-62142	ugly
-62143	uh
-62144	ui
-62145	uj
-62146	uk
-62151	ul
-62152	ulcer
-62153	um
-62154	umpire
-62155	un
-62156	uncle
-62161	uncut
-62162	under
-62163	undo
-62164	undue
-62165	unfit
-62166	unify
-62211	union
-62212	unit
-62213	unite
-62214	units
-62215	unity
-62216	unix
-62221	untie
-62222	until
-62223	unto
-62224	unwed
-62225	uo
-62226	up
-62231	uphill
-62232	uphold
-62233	upi
-62234	upon
-62235	upper
-62236	uproar
-62241	ups
-62242	upset
-62243	uptake
-62244	uq
-62245	ur
-62246	urban
-62251	urge
-62252	urged
-62253	urges
-62254	urine
-62255	urn
-62256	us
-62261	usa
-62262	usaf
-62263	usage
-62264	use
-62265	used
-62266	useful
-62311	uses
-62312	usher
-62313	usia
-62314	ussr
-62315	usual
-62316	usurp
-62321	ut
-62322	utah
-62323	utmost
-62324	utter
-62325	uu
-62326	uuu
-62331	uuuu
-62332	uv
-62333	uvula
-62334	uvw
-62335	uw
-62336	ux
-62341	uy
-62342	uz
-62343	v
-62344	v's
-62345	v-8
-62346	va
-62351	vacuum
-62352	vague
-62353	vain
-62354	val
-62355	vale
-62356	valet
-62361	valid
-62362	valor
-62363	value
-62364	valve
-62365	vamp
-62366	van
-62411	vance
-62412	vane
-62413	vans
-62414	vapor
-62415	vary
-62416	vase
-62421	vases
-62422	vast
-62423	vat
-62424	vats
-62425	vault
-62426	vb
-62431	vc
-62432	vcr
-62433	vd
-62434	ve
-62435	veal
-62436	veep
-62441	veer
-62442	veers
-62443	veggie
-62444	veil
-62445	vein
-62446	veins
-62451	venal
-62452	vend
-62453	vendor
-62454	vends
-62455	venom
-62456	vent
-62461	vents
-62462	venus
-62463	vera
-62464	verb
-62465	verbs
-62466	verdi
-62511	verge
-62512	verify
-62513	vern
-62514	verna
-62515	verne
-62516	verse
-62521	verve
-62522	very
-62523	vessel
-62524	vest
-62525	vests
-62526	vet
-62531	veto
-62532	vets
-62533	vex
-62534	vexed
-62535	vexes
-62536	vf
-62541	vg
-62542	vh
-62543	vi
-62544	via
-62545	vial
-62546	vibes
-62551	vic
-62552	vice
-62553	vices
-62554	vicky
-62555	video
-62556	vie
-62561	viet
-62562	view
-62563	vigil
-62564	vigor
-62565	vii
-62566	viii
-62611	vile
-62612	vinci
-62613	vine
-62614	vines
-62615	vinyl
-62616	viola
-62621	violet
-62622	vip
-62623	virgil
-62624	virgo
-62625	virus
-62626	visa
-62631	vise
-62632	visit
-62633	visor
-62634	vista
-62635	vital
-62636	vito
-62641	viva
-62642	vivian
-62643	vivid
-62644	vixen
-62645	vj
-62646	vk
-62651	vl
-62652	vlad
-62653	vm
-62654	vn
-62655	vo
-62656	vocal
-62661	vodka
-62662	vogue
-62663	voice
-62664	void
-62665	volt
-62666	volts
-63111	volvo
-63112	vomit
-63113	vote
-63114	vouch
-63115	vow
-63116	vowel
-63121	vows
-63122	vp
-63123	vq
-63124	vr
-63125	vs
-63126	vt
-63131	vtol
-63132	vu
-63133	vulcan
-63134	vv
-63135	vvv
-63136	vvvv
-63141	vw
-63142	vwx
-63143	vx
-63144	vy
-63145	vz
-63146	w
-63151	w's
-63152	w/o
-63153	wa
-63154	wacko
-63155	wacky
-63156	wad
-63161	wade
-63162	wades
-63163	wafer
-63164	waffle
-63165	wag
-63166	wage
-63211	wager
-63212	wages
-63213	wagon
-63214	wags
-63215	wahoo
-63216	waif
-63221	wail
-63222	wails
-63223	waist
-63224	wait
-63225	wake
-63226	waken
-63231	waldo
-63232	walk
-63233	wall
-63234	walls
-63235	wally
-63236	walrus
-63241	walsh
-63242	walt
-63243	walton
-63244	waltz
-63245	wand
-63246	wang
-63251	want
-63252	wants
-63253	war
-63254	ward
-63255	warm
-63256	warmth
-63261	warn
-63262	warns
-63263	warp
-63264	warren
-63265	wars
-63266	wart
-63311	warts
-63312	wary
-63313	was
-63314	wash
-63315	wasp
-63316	wasps
-63321	waste
-63322	watch
-63323	water
-63324	watt
-63325	watts
-63326	wave
-63331	waved
-63332	waver
-63333	waves
-63334	wavy
-63335	wax
-63336	waxy
-63341	way
-63342	wayne
-63343	ways
-63344	wb
-63345	wc
-63346	wd
-63351	we
-63352	we'd
-63353	we'll
-63354	we're
-63355	we've
-63356	weak
-63361	wealth
-63362	wear
-63363	wears
-63364	weary
-63365	weave
-63366	web
-63411	webb
-63412	webs
-63413	wed
-63414	wedge
-63415	weds
-63416	wee
-63421	weed
-63422	weedy
-63423	week
-63424	weeks
-63425	weep
-63426	weeps
-63431	weigh
-63432	weird
-63433	welch
-63434	weld
-63435	well
-63436	wells
-63441	welsh
-63442	wendy
-63443	went
-63444	wept
-63445	were
-63446	wes
-63451	west
-63452	wet
-63453	wets
-63454	wf
-63455	wg
-63456	wh
-63461	whale
-63462	wham
-63463	wharf
-63464	what
-63465	wheat
-63466	whee
-63511	wheel
-63512	when
-63513	where
-63514	whew
-63515	which
-63516	whiff
-63521	while
-63522	whim
-63523	whine
-63524	whinny
-63525	whip
-63526	whips
-63531	whir
-63532	whirl
-63533	white
-63534	whiz
-63535	who
-63536	who'd
-63541	whoa
-63542	whole
-63543	whom
-63544	whoop
-63545	whoosh
-63546	whose
-63551	why
-63552	wi
-63553	wick
-63554	wide
-63555	widen
-63556	wider
-63561	widow
-63562	width
-63563	wield
-63564	wife
-63565	wig
-63566	wigs
-63611	wild
-63612	wiley
-63613	wilkes
-63614	will
-63615	wills
-63616	willy
-63621	wilma
-63622	wilt
-63623	wily
-63624	wimp
-63625	wimpy
-63626	win
-63631	wince
-63632	winch
-63633	wind
-63634	windy
-63635	wine
-63636	wines
-63641	wing
-63642	wings
-63643	wink
-63644	winks
-63645	winnie
-63646	wino
-63651	wins
-63652	winter
-63653	wipe
-63654	wire
-63655	wires
-63656	wiry
-63661	wise
-63662	wiser
-63663	wish
-63664	wisp
-63665	wispy
-63666	wit
-64111	witch
-64112	with
-64113	wits
-64114	witty
-64115	wj
-64116	wk
-64121	wl
-64122	wm
-64123	wn
-64124	wnw
-64125	wo
-64126	woe
-64131	woes
-64132	wok
-64133	woke
-64134	wolf
-64135	wolff
-64136	woman
-64141	womb
-64142	women
-64143	won
-64144	won't
-64145	wonder
-64146	wong
-64151	woo
-64152	wood
-64153	woods
-64154	woody
-64155	woof
-64156	wool
-64161	woos
-64162	word
-64163	words
-64164	wordy
-64165	wore
-64166	work
-64211	world
-64212	worm
-64213	worms
-64214	wormy
-64215	worn
-64216	worry
-64221	worse
-64222	worst
-64223	worth
-64224	would
-64225	wound
-64226	wove
-64231	woven
-64232	wow
-64233	wp
-64234	wq
-64235	wr
-64236	wrap
-64241	wrath
-64242	wreak
-64243	wreck
-64244	wren
-64245	wring
-64246	wrist
-64251	write
-64252	writhe
-64253	wrong
-64254	wrote
-64255	wry
-64256	ws
-64261	wsw
-64262	wt
-64263	wu
-64264	wv
-64265	ww
-64266	wwi
-64311	wwii
-64312	www
-64313	wwww
-64314	wx
-64315	wxy
-64316	wy
-64321	wyatt
-64322	wylie
-64323	wyman
-64324	wynn
-64325	wz
-64326	x
-64331	x's
-64332	xa
-64333	xb
-64334	xc
-64335	xd
-64336	xe
-64341	xerox
-64342	xf
-64343	xg
-64344	xh
-64345	xi
-64346	xii
-64351	xiii
-64352	xiv
-64353	xj
-64354	xk
-64355	xl
-64356	xm
-64361	xmas
-64362	xn
-64363	xo
-64364	xp
-64365	xq
-64366	xr
-64411	xray
-64412	xrays
-64413	xs
-64414	xt
-64415	xu
-64416	xv
-64421	xvi
-64422	xvii
-64423	xw
-64424	xx
-64425	xxx
-64426	xxxx
-64431	xy
-64432	xyz
-64433	xz
-64434	y
-64435	y'all
-64436	y's
-64441	ya
-64442	yacht
-64443	yahoo
-64444	yak
-64445	yale
-64446	yam
-64451	yamaha
-64452	yams
-64453	yang
-64454	yank
-64455	yanks
-64456	yap
-64461	yard
-64462	yards
-64463	yarn
-64464	yawn
-64465	yawns
-64466	yb
-64511	yc
-64512	yd
-64513	ye
-64514	yea
-64515	yeah
-64516	year
-64521	yearn
-64522	yeast
-64523	yeats
-64524	yell
-64525	yellow
-64526	yelp
-64531	yen
-64532	yep
-64533	yes
-64534	yet
-64535	yew
-64536	yews
-64541	yf
-64542	yg
-64543	yh
-64544	yi
-64545	yield
-64546	yin
-64551	yip
-64552	yips
-64553	yj
-64554	yk
-64555	yl
-64556	ym
-64561	yn
-64562	yo
-64563	yodel
-64564	yoga
-64565	yogi
-64566	yoke
-64611	yokel
-64612	yolk
-64613	yore
-64614	york
-64615	you
-64616	you'd
-64621	young
-64622	your
-64623	yours
-64624	youth
-64625	yoyo
-64626	yp
-64631	yq
-64632	yr
-64633	yrs
-64634	ys
-64635	yt
-64636	ytd
-64641	yu
-64642	yucca
-64643	yuck
-64644	yukon
-64645	yule
-64646	yv
-64651	yw
-64652	yx
-64653	yy
-64654	yyy
-64655	yyyy
-64656	yz
-64661	z
-64662	z's
-64663	za
-64664	zag
-64665	zap
-64666	zaps
-65111	zb
-65112	zc
-65113	zd
-65114	ze
-65115	zeal
-65116	zealot
-65121	zebra
-65122	zeke
-65123	zen
-65124	zero
-65125	zest
-65126	zesty
-65131	zeta
-65132	zf
-65133	zg
-65134	zh
-65135	zi
-65136	zig
-65141	ziggy
-65142	zigzag
-65143	zilch
-65144	zinc
-65145	zing
-65146	zion
-65151	zip
-65152	zips
-65153	ziti
-65154	zj
-65155	zk
-65156	zl
-65161	zm
-65162	zn
-65163	zo
-65164	zoe
-65165	zone
-65166	zoned
-65211	zoo
-65212	zoom
-65213	zooms
-65214	zoos
-65215	zowie
-65216	zp
-65221	zq
-65222	zr
-65223	zs
-65224	zt
-65225	zu
-65226	zulu
-65231	zv
-65232	zw
-65233	zx
-65234	zy
-65235	zz
-65236	zzz
-65241	zzzz
-65242	!
-65243	!!
-65244	""""
-65245	#
-65246	##
-65251	$
-65252	$$
-65253	%
-65254	%%
-65255	&
-65256	(
-65261	()
-65262	(c)
-65263	(r)
-65264	(tm)
-65265	)
-65266	*
-65311	**
-65312	+
-65313	-
-65314	0
-65315	007
-65316	1
-65321	1%
-65322	1/2
-65323	1/3
-65324	1/4
-65325	1/8
-65326	10
-65331	10%
-65332	100
-65333	100%
-65334	1000
-65335	100th
-65336	101
-65341	101st
-65342	10:00
-65343	10:30
-65344	10th
-65345	11
-65346	111
-65351	1111
-65352	11:00
-65353	11:30
-65354	11th
-65355	12
-65356	123
-65361	1234
-65362	12:00
-65363	12:30
-65364	12th
-65365	13
-65366	13th
-65411	14
-65412	1492
-65413	14th
-65414	15
-65415	15%
-65416	1500
-65421	15th
-65422	16
-65423	1600
-65424	16th
-65425	17
-65426	1700
-65431	1776
-65432	17th
-65433	18
-65434	1800
-65435	18th
-65436	19
-65441	1900
-65442	1910
-65443	1920
-65444	1925
-65445	1930
-65446	1935
-65451	1940
-65452	1945
-65453	1950
-65454	1955
-65455	1960
-65456	1965
-65461	1970
-65462	1975
-65463	1980
-65464	1985
-65465	1990
-65466	1991
-65511	1992
-65512	1993
-65513	1994
-65514	1995
-65515	1996
-65516	1997
-65521	19th
-65522	1:00
-65523	1:30
-65524	1st
-65525	2
-65526	2%
-65531	2/3
-65532	20
-65533	20%
-65534	200
-65535	2000
-65536	2001
-65541	2020
-65542	20th
-65543	21
-65544	21st
-65545	22
-65546	222
-65551	2222
-65552	22nd
-65553	23
-65554	234
-65555	2345
-65556	23rd
-65561	24
-65562	2468
-65563	24th
-65564	25
-65565	25%
-65566	25th
-65611	26
-65612	26th
-65613	27
-65614	27th
-65615	28
-65616	28th
-65621	29
-65622	29th
-65623	2:00
-65624	2:30
-65625	2nd
-65626	3
-65631	3%
-65632	3/4
-65633	3/8
-65634	30
-65635	30%
-65636	300
-65641	3000
-65642	30th
-65643	31
-65644	31st
-65645	32
-65646	32nd
-65651	33
-65652	333
-65653	3333
-65654	33rd
-65655	34
-65656	345
-65661	3456
-65662	34th
-65663	35
-65664	35%
-65665	35th
-65666	36
-66111	36th
-66112	37
-66113	37th
-66114	38
-66115	38th
-66116	39
-66121	39th
-66122	3:00
-66123	3:30
-66124	3rd
-66125	4
-66126	4%
-66131	40
-66132	40%
-66133	400
-66134	4000
-66135	40th
-66136	41
-66141	41st
-66142	42
-66143	42nd
-66144	43
-66145	4321
-66146	43rd
-66151	44
-66152	444
-66153	4444
-66154	44th
-66155	45
-66156	45%
-66161	456
-66162	4567
-66163	45th
-66164	46
-66165	46th
-66166	47
-66211	47th
-66212	48
-66213	48th
-66214	49
-66215	49th
-66216	4:00
-66221	4:30
-66222	4th
-66223	5
-66224	5%
-66225	5/8
-66226	50
-66231	50%
-66232	500
-66233	5000
-66234	50th
-66235	51
-66236	51st
-66241	52
-66242	52nd
-66243	53
-66244	53rd
-66245	54
-66246	54th
-66251	55
-66252	55%
-66253	555
-66254	5555
-66255	55th
-66256	56
-66261	567
-66262	5678
-66263	56th
-66264	57
-66265	57th
-66266	58
-66311	58th
-66312	59
-66313	59th
-66314	5:00
-66315	5:30
-66316	5th
-66321	6
-66322	6%
-66323	60
-66324	60%
-66325	600
-66326	6000
-66331	60th
-66332	61
-66333	61st
-66334	62
-66335	62nd
-66336	63
-66341	63rd
-66342	64
-66343	65
-66344	65%
-66345	65th
-66346	66
-66351	666
-66352	6666
-66353	66th
-66354	67
-66355	678
-66356	6789
-66361	67th
-66362	68
-66363	68th
-66364	69
-66365	69th
-66366	6:00
-66411	6:30
-66412	6th
-66413	7
-66414	7%
-66415	7/8
-66416	70
-66421	70%
-66422	700
-66423	7000
-66424	70th
-66425	71
-66426	71st
-66431	72
-66432	72nd
-66433	73
-66434	73rd
-66435	74
-66436	74th
-66441	75
-66442	75%
-66443	75th
-66444	76
-66445	76th
-66446	77
-66451	777
-66452	7777
-66453	77th
-66454	78
-66455	789
-66456	78th
-66461	79
-66462	79th
-66463	7:00
-66464	7:30
-66465	7th
-66466	8
-66511	8%
-66512	80
-66513	80%
-66514	800
-66515	8000
-66516	80th
-66521	81
-66522	81st
-66523	82
-66524	82nd
-66525	83
-66526	83rd
-66531	84
-66532	84th
-66533	85
-66534	85%
-66535	85th
-66536	86
-66541	86th
-66542	87
-66543	87th
-66544	88
-66545	888
-66546	8888
-66551	88th
-66552	89
-66553	89th
-66554	8:00
-66555	8:30
-66556	8th
-66561	9
-66562	9%
-66563	9-5
-66564	90
-66565	90%
-66566	900
-66611	9000
-66612	90th
-66613	91
-66614	91st
-66615	92
-66616	92nd
-66621	93
-66622	93rd
-66623	94
-66624	94th
-66625	95
-66626	95%
-66631	95th
-66632	96
-66633	96th
-66634	97
-66635	97th
-66636	98
-66641	98%
-66642	98.6
-66643	9876
-66644	98th
-66645	99
-66646	99%
-66651	999
-66652	9999
-66653	99th
-66654	9:00
-66655	9:30
-66656	9th
-66661	:
-66662	;
-66663	=
-66664	?
-66665	??
-66666	@
------BEGIN PGP SIGNATURE-----
-Version: PGP for Personal Privacy 5.0
-Charset: noconv
-
-iQCVAwUBNX6aTGtruC2sMYShAQGSwAP9F8usVblyi+QEHjxuiltBxT0u6GTHM/Cn
-WgT+GYMRBbOMyDqe9KKyO4oryqWLnS83O8L9uLaEBqNXxEDm8KPGBB/l9CSUMCsC
-cD1hx8NQ/LpfjgRnngLSVvdjNmECg8OgKom2dht6oVHN8q+FQhmiqmndS72lTSOO
-jOuFf/otw7o=
-=7B7m
------END PGP SIGNATURE-----

Modified: trunk/demo/cgi-bin/confirm.py
===================================================================
--- trunk/demo/cgi-bin/confirm.py	2004-05-07 15:39:03 UTC (rev 876)
+++ trunk/demo/cgi-bin/confirm.py	2004-05-07 16:13:22 UTC (rev 877)
@@ -3,8 +3,13 @@
 import smtplib
 import httplib
 import base64
+import sys
+import os
 from popen2 import Popen3
 
+# You might want to change this:
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'lib'))
+
 from demo import Demo
 from register import html_template
 import democonfig

Deleted: trunk/demo/cgi-bin/demo.py
===================================================================
--- trunk/demo/cgi-bin/demo.py	2004-05-07 15:39:03 UTC (rev 876)
+++ trunk/demo/cgi-bin/demo.py	2004-05-07 16:13:22 UTC (rev 877)
@@ -1,135 +0,0 @@
-"""
-The 'database' for the demo registration app.
-
-$Id$
-"""
-import os
-import fcntl
-import csv
-import time
-import datetime
-import random
-import md5
-
-
-def genpasswd():
-    """Generate a random password in the form of 'foo123bar'."""
-    path = os.path.join(os.path.dirname(__file__), '..', "beale.wordlist.asc")
-    lines = file(path).readlines()
-    lines = lines[2:6**5+2] # remove the PGP sig
-    words = [word for nr, word in [line.split() for line in lines]]
-    return "%s%d%s" % (random.choice(words), random.randint(100,1000),
-                       random.choice(words))
-
-
-class DemoDB:
-    """The data storage backend for the demo registration app.
-
-    Stores data as CSV on disk, does FS level locking.
-    """
-
-    def __init__(self, filename):
-        """Open the data file and lock it."""
-        self.filename = filename
-        self.file = file(self.filename, "a+")
-        fcntl.flock(self.file, fcntl.LOCK_EX)
-
-    def __iter__(self):
-        """Return an iterator over rows of a file."""
-        return csv.reader(self.file)
-
-    def writerows(self, rows):
-        """Write the rows into the CSV file."""
-        self.file.seek(0)
-        self.file.truncate()
-        # XXX it is possible to lose data if write fails now
-        writer = csv.writer(self.file)
-        return writer.writerows(rows)
-
-    def close(self):
-        """Unlock and close the data file."""
-        self.file.close()
-
-
-class Demo:
-    """The object containing the application logic."""
-
-    def __init__(self, dbfile):
-        """Open and lock the database file.
-
-        Does not load the database until you explicitly call load.
-        """
-        self.db = DemoDB(dbfile)
-        self.users = []
-
-    def load(self):
-        """Load the user list from the database."""
-        for record in self.db:
-            (datestr, name, email, company, position, comments,
-             hash, status, password, instancestr) = record
-            struct_time = time.strptime(datestr, "%Y-%m-%d %H:%M:%S")
-            date = datetime.datetime(*struct_time[:6])
-            try:
-                instance = int(instancestr)
-            except ValueError:
-                instance = None
-            self.users.append(
-                User(date, name, email, company, position, comments,
-                     hash, status, password, instance))
-
-    def save(self):
-        """Save the user list to the database."""
-        data = []
-        for user in self.users:
-            data.append([user.date.strftime("%Y-%m-%d %H:%M:%S"),
-                         user.name, user.email, user.company,
-                         user.position, user.comments, user.hash,
-                         user.status, user.password,
-                         str(user.instance)])
-        self.db.writerows(data)
-
-    def new(self, name, email, company, position, comments=''):
-        """Add a new user and return the User object."""
-        password = genpasswd()
-        hash = md5.md5("%s %d" % (email, random.randint(0,10000))).hexdigest()
-        hash = hash[:8] # long hashes are unnecessary and might cause wrapping
-        user = User(datetime.datetime.now(), name, email, company,
-                    position, comments, hash, 'new', password, '')
-        self.users.append(user)
-        return user
-
-    def getByHash(self, hash):
-        """Locate a user by hash."""
-        for user in self.users:
-            if user.hash == hash:
-                return user
-        raise KeyError(hash)
-
-    def getByInstance(self, instance):
-        """Locate a user by instance number."""
-        for user in self.users:
-            if user.instance == instance:
-                return user
-        raise KeyError(hash)
-
-    def close(self):
-        """Unlock and close the database."""
-        self.db.close()
-
-
-class User:
-    """User record."""
-
-    def __init__(self, date, name, email, company, position, comments,
-             hash, status, password, instance):
-        self.date = date
-        self.name = name
-        self.email = email
-        self.company = company
-        self.position = position
-        self.comments = comments
-        self.hash = hash
-        self.status = status
-        self.password = password
-        self.instance = instance
-

Modified: trunk/demo/cgi-bin/register.py
===================================================================
--- trunk/demo/cgi-bin/register.py	2004-05-07 15:39:03 UTC (rev 876)
+++ trunk/demo/cgi-bin/register.py	2004-05-07 16:13:22 UTC (rev 877)
@@ -1,7 +1,12 @@
 #!/usr/bin/python2.3
 import cgi
 import smtplib
+import sys
+import os
 
+# You might want to change this:
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'lib'))
+
 from demo import Demo
 import democonfig
 

Deleted: trunk/demo/cgi-bin/tests.py
===================================================================
--- trunk/demo/cgi-bin/tests.py	2004-05-07 15:39:03 UTC (rev 876)
+++ trunk/demo/cgi-bin/tests.py	2004-05-07 16:13:22 UTC (rev 877)
@@ -1,194 +0,0 @@
-#!/usr/bin/env python2.3
-"""
-Unit tests for the demo app.
-
-$Id$
-"""
-
-import unittest
-import fcntl
-import os
-import tempfile
-import shutil
-import datetime
-import csv
-
-class FileSetupMixin:
-
-    def setUp(self):
-        self.dir = tempfile.mkdtemp()
-        self.file = os.path.join(self.dir, 'test.storage')
-
-    def tearDown(self):
-        shutil.rmtree(self.dir, True)
-
-
-class TestDemoDB(FileSetupMixin, unittest.TestCase):
-
-    def test_locking(self):
-        from demo import DemoDB
-        db = DemoDB(self.file)
-        self.assert_(os.path.exists(self.file))
-        f = file(self.file)
-        self.assertRaises(IOError,
-                          fcntl.flock, f, fcntl.LOCK_EX | fcntl.LOCK_NB)
-        db.close()
-        fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
-
-    def test_open(self):
-        from demo import DemoDB
-        f = file(self.file, "w")
-        print >> f, ('"2004-04-01 12:00:00","User","email","school",'
-                     '"position","comment",123,"active",password,3')
-        f.close()
-        db = DemoDB(self.file)
-        result = list(db)
-        self.assertEqual(result, [['2004-04-01 12:00:00', 'User',
-                         'email', 'school', 'position', 'comment',
-                         '123', 'active', 'password', '3']])
-        db.close()
-
-    def test_writerows(self):
-        from demo import DemoDB
-        db = DemoDB(self.file)
-        data = [['2004-04-01 12:00:00', 'User', 'email', 'school',
-                 'position', 'comment', '123', 'active', 'password', '3']]
-        db.writerows(data)
-        db.close()
-        self.assertEqual(list(csv.reader(file(self.file))),
-                         data)
-
-class DBStub:
-    def writerows(self, rows):
-        self.data = list(rows)
-
-class TestDemo(FileSetupMixin, unittest.TestCase):
-
-    def test_load(self):
-        from demo import Demo, User
-        d = Demo(self.file)
-        d.db = iter([['2004-04-01 12:00:00', 'User', 'email', 'school',
-                      'position', 'comment', '123', 'active', 'passwd', '3'],
-                     ['2004-04-01 12:01:00', 'User2', 'email2', 'school2',
-                      'position', 'comment', '123', 'active', 'passwd2', '4'],
-                     ])
-        d.load()
-        self.assertEqual(len(d.users), 2)
-        self.assert_(isinstance(d.users[0], User))
-        self.assertEqual(d.users[0].instance, 3)
-        self.assertEqual(d.users[0].date,
-                         datetime.datetime(2004, 4, 1, 12, 0))
-
-        self.assert_(isinstance(d.users[1], User))
-        self.assertEqual(d.users[1].instance, 4)
-        self.assertEqual(d.users[1].date,
-                         datetime.datetime(2004, 4, 1, 12, 1))
-
-    def test_save(self):
-        from demo import Demo, User
-        demo = Demo(self.file)
-        demo.db = DBStub()
-        datetime.datetime(2004, 1, 1, 12,0,0)
-        demo.users = [
-            User(datetime.datetime(2004, 1, 1, 12,0),
-                 "Albertas", "alga at example.com", "PoV",
-                 "programmer", "I want to migrate to Schooltool",
-                 '1234', 'active', 'xyzzy', 42),
-            User(datetime.datetime(2004, 1, 1, 12,1),
-                 "Gintas", "gintas at example.com", "PoV",
-                 "programmer", "I want to migrate to Schooltool too",
-                 '1234', 'active', 'furrfu', 43),
-            ]
-        demo.save()
-        self.assertEqual(demo.db.data,
-                         [['2004-01-01 12:00:00', "Albertas",
-                           "alga at example.com", "PoV", "programmer",
-                           "I want to migrate to Schooltool", '1234',
-                           'active', 'xyzzy', '42'],
-                          ['2004-01-01 12:01:00', "Gintas",
-                           "gintas at example.com", "PoV", "programmer",
-                           "I want to migrate to Schooltool too", '1234',
-                           'active', 'furrfu', '43']])
-
-    def test_getByHash(self):
-        from demo import Demo, User
-        demo = Demo(self.file)
-        demo.db = DBStub()
-        datetime.datetime(2004, 1, 1, 12,0,0)
-        demo.users = [
-            User(datetime.datetime(2004, 1, 1, 12,0),
-                 "Albertas", "alga at example.com", "PoV",
-                 "programmer", "I want to migrate to Schooltool",
-                 '1234', 'active', 'xyzzy', 42),
-            User(datetime.datetime(2004, 1, 1, 12,1),
-                 "Gintas", "gintas at example.com", "PoV",
-                 "programmer", "I want to migrate to Schooltool too",
-                 '4321', 'active', 'furrfu', 43),
-            ]
-        self.assertEqual(demo.getByHash('1234'), demo.users[0])
-        self.assertEqual(demo.getByHash('4321'), demo.users[1])
-        self.assertRaises(KeyError, demo.getByHash, '1111')
-
-    def test_getByInstance(self):
-        from demo import Demo, User
-        demo = Demo(self.file)
-        demo.db = DBStub()
-        datetime.datetime(2004, 1, 1, 12,0,0)
-        demo.users = [
-            User(datetime.datetime(2004, 1, 1, 12,0),
-                 "Albertas", "alga at example.com", "PoV",
-                 "programmer", "I want to migrate to Schooltool",
-                 '1234', 'active', 'xyzzy', 42),
-            User(datetime.datetime(2004, 1, 1, 12,1),
-                 "Gintas", "gintas at example.com", "PoV",
-                 "programmer", "I want to migrate to Schooltool too",
-                 '4321', 'active', 'furrfu', 43),
-            ]
-        self.assertEqual(demo.getByInstance(42), demo.users[0])
-        self.assertEqual(demo.getByInstance(43), demo.users[1])
-        self.assertRaises(KeyError, demo.getByInstance, 41)
-
-    def test_new(self):
-        from demo import Demo, User
-        demo = Demo(self.file)
-        demo.db = DBStub()
-        datetime.datetime(2004, 1, 1, 12,0,0)
-        demo.users = [
-            User(datetime.datetime(2004, 1, 1, 12,0),
-                 "Albertas", "alga at example.com", "PoV",
-                 "programmer", "I want to migrate to Schooltool",
-                 '1234', 'active', 'xyzzy', 42),
-            User(datetime.datetime(2004, 1, 1, 12,1),
-                 "Gintas", "gintas at example.com", "PoV",
-                 "programmer", "I want to migrate to Schooltool too",
-                 '4321', 'active', 'furrfu', 43),
-            ]
-        result = demo.new('Marius', 'mg at localhost', 'Pov', 'hacker', '')
-        self.assertEqual(len(demo.users), 3)
-        self.assertEqual(demo.users[2], result)
-        self.assert_(result.password)
-        self.assertEqual(len(result.hash), 8)
-
-
-class TestUser(unittest.TestCase):
-
-    def test(self):
-        from demo import User
-        date = datetime.datetime(2004, 1, 1, 12,0,0)
-        user = User(date, "Albertas", "alga at example.com", "PoV",
-                    "programmer", "I want to migrate to Schooltool",
-                    '1234', 'active', 'xyzzy', 42)
-        self.assertEqual(user.date, date)
-        self.assertEqual(user.name, "Albertas")
-        self.assertEqual(user.email, "alga at example.com")
-        self.assertEqual(user.company, "PoV")
-        self.assertEqual(user.position, "programmer")
-        self.assertEqual(user.comments, "I want to migrate to Schooltool")
-        self.assertEqual(user.hash, '1234')
-        self.assertEqual(user.status, 'active')
-        self.assertEqual(user.password, 'xyzzy')
-        self.assertEqual(user.instance, 42)
-
-
-if __name__ == '__main__':
-    unittest.main()

Deleted: trunk/demo/democonfig.py
===================================================================
--- trunk/demo/democonfig.py	2004-05-07 15:39:03 UTC (rev 876)
+++ trunk/demo/democonfig.py	2004-05-07 16:13:22 UTC (rev 877)
@@ -1,31 +0,0 @@
-#!/usr/bin/env python
-
-import os
-
-# -- paths --
-
-# XXX this will need to be customized by anyone trying to use the scripts
-ROOT_PATH = '/home/gintas/devel/schooltool/demo/tmp'
-
-BIN_PATH = os.path.join(ROOT_PATH, 'bin')
-INSTANCE_PATH = os.path.join(ROOT_PATH, 'var')
-
-SCHOOLTOOL_NEW = os.path.join(BIN_PATH, 'schooltool-new')
-DEMO_CTL = os.path.join(BIN_PATH, 'demo-ctl.py')
-USER_DB = os.path.join(INSTANCE_PATH, 'users.csv')
-
-# -- misc --
-
-HOST = 'demo'
-SMTP_SERVER = 'localhost'
-REG_CONFIRM_URL = 'http://%s/cgi-bin/confirm.py' % HOST
-
-# The number of seconds an instance needs to be inactive (determined from
-# the hitlog) before it is deleted.
-EXPIRY_TIME = 7*24*60*60 # = 1 week
-
-BASE_PORT = 10000
-BASE_USER = 10000
-BASE_GROUP = 10000
-
-MAX_INSTANCES = 1000

Copied: trunk/demo/lib/beale.wordlist.asc (from rev 873, trunk/demo/beale.wordlist.asc)

Copied: trunk/demo/lib/demo.py (from rev 873, trunk/demo/cgi-bin/demo.py)
===================================================================
--- trunk/demo/cgi-bin/demo.py	2004-05-07 08:05:24 UTC (rev 873)
+++ trunk/demo/lib/demo.py	2004-05-07 16:13:22 UTC (rev 877)
@@ -0,0 +1,135 @@
+"""
+The 'database' for the demo registration app.
+
+$Id$
+"""
+import os
+import fcntl
+import csv
+import time
+import datetime
+import random
+import md5
+
+
+def genpasswd():
+    """Generate a random password in the form of 'foo123bar'."""
+    path = os.path.join(os.path.dirname(__file__), "beale.wordlist.asc")
+    lines = file(path).readlines()
+    lines = lines[2:6**5+2] # remove the PGP sig
+    words = [word for nr, word in [line.split() for line in lines]]
+    return "%s%d%s" % (random.choice(words), random.randint(100,1000),
+                       random.choice(words))
+
+
+class DemoDB:
+    """The data storage backend for the demo registration app.
+
+    Stores data as CSV on disk, does FS level locking.
+    """
+
+    def __init__(self, filename):
+        """Open the data file and lock it."""
+        self.filename = filename
+        self.file = file(self.filename, "a+")
+        fcntl.flock(self.file, fcntl.LOCK_EX)
+
+    def __iter__(self):
+        """Return an iterator over rows of a file."""
+        return csv.reader(self.file)
+
+    def writerows(self, rows):
+        """Write the rows into the CSV file."""
+        self.file.seek(0)
+        self.file.truncate()
+        # XXX it is possible to lose data if write fails now
+        writer = csv.writer(self.file)
+        return writer.writerows(rows)
+
+    def close(self):
+        """Unlock and close the data file."""
+        self.file.close()
+
+
+class Demo:
+    """The object containing the application logic."""
+
+    def __init__(self, dbfile):
+        """Open and lock the database file.
+
+        Does not load the database until you explicitly call load.
+        """
+        self.db = DemoDB(dbfile)
+        self.users = []
+
+    def load(self):
+        """Load the user list from the database."""
+        for record in self.db:
+            (datestr, name, email, company, position, comments,
+             hash, status, password, instancestr) = record
+            struct_time = time.strptime(datestr, "%Y-%m-%d %H:%M:%S")
+            date = datetime.datetime(*struct_time[:6])
+            try:
+                instance = int(instancestr)
+            except ValueError:
+                instance = None
+            self.users.append(
+                User(date, name, email, company, position, comments,
+                     hash, status, password, instance))
+
+    def save(self):
+        """Save the user list to the database."""
+        data = []
+        for user in self.users:
+            data.append([user.date.strftime("%Y-%m-%d %H:%M:%S"),
+                         user.name, user.email, user.company,
+                         user.position, user.comments, user.hash,
+                         user.status, user.password,
+                         str(user.instance)])
+        self.db.writerows(data)
+
+    def new(self, name, email, company, position, comments=''):
+        """Add a new user and return the User object."""
+        password = genpasswd()
+        hash = md5.md5("%s %d" % (email, random.randint(0,10000))).hexdigest()
+        hash = hash[:8] # long hashes are unnecessary and might cause wrapping
+        user = User(datetime.datetime.now(), name, email, company,
+                    position, comments, hash, 'new', password, '')
+        self.users.append(user)
+        return user
+
+    def getByHash(self, hash):
+        """Locate a user by hash."""
+        for user in self.users:
+            if user.hash == hash:
+                return user
+        raise KeyError(hash)
+
+    def getByInstance(self, instance):
+        """Locate a user by instance number."""
+        for user in self.users:
+            if user.instance == instance:
+                return user
+        raise KeyError(hash)
+
+    def close(self):
+        """Unlock and close the database."""
+        self.db.close()
+
+
+class User:
+    """User record."""
+
+    def __init__(self, date, name, email, company, position, comments,
+             hash, status, password, instance):
+        self.date = date
+        self.name = name
+        self.email = email
+        self.company = company
+        self.position = position
+        self.comments = comments
+        self.hash = hash
+        self.status = status
+        self.password = password
+        self.instance = instance
+

Copied: trunk/demo/lib/democonfig.py (from rev 873, trunk/demo/democonfig.py)
===================================================================
--- trunk/demo/democonfig.py	2004-05-07 08:05:24 UTC (rev 873)
+++ trunk/demo/lib/democonfig.py	2004-05-07 16:13:22 UTC (rev 877)
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+import os
+
+# -- paths --
+
+# XXX this will need to be customized by anyone trying to use the scripts
+BIN_PATH = '/opt/schooltool-demo/bin'
+INSTANCE_PATH = '/srv/schooltool-demo'
+
+SCHOOLTOOL_NEW = os.path.join(BIN_PATH, 'schooltool-new')
+DEMO_CTL = os.path.join(BIN_PATH, 'democtl')
+USER_DB = os.path.join(INSTANCE_PATH, 'users.csv')
+
+# -- misc --
+
+HOST = 'demo'
+SMTP_SERVER = 'localhost'
+REG_CONFIRM_URL = 'http://%s/cgi-bin/confirm.py' % HOST
+
+# The number of seconds an instance needs to be inactive (determined from
+# the hitlog) before it is deleted.
+EXPIRY_TIME = 7*24*60*60 # = 1 week
+
+BASE_PORT = 10000
+BASE_USER = 10000
+BASE_GROUP = 10000
+
+MAX_INSTANCES = 10

Modified: trunk/demo/scripts/cleanup.py
===================================================================
--- trunk/demo/scripts/cleanup.py	2004-05-07 15:39:03 UTC (rev 876)
+++ trunk/demo/scripts/cleanup.py	2004-05-07 16:13:22 UTC (rev 877)
@@ -10,6 +10,10 @@
 import re
 import sys
 import time
+
+# You might want to change this:
+sys.path.insert(0, os.path.join(os.path.basename(__file__), 'lib'))
+
 import democonfig
 
 DATE_FORMAT = '%d/%b/%Y:%H:%M:%S'

Deleted: trunk/demo/scripts/demo-ctl.py
===================================================================
--- trunk/demo/scripts/demo-ctl.py	2004-05-07 15:39:03 UTC (rev 876)
+++ trunk/demo/scripts/demo-ctl.py	2004-05-07 16:13:22 UTC (rev 877)
@@ -1,190 +0,0 @@
-#!/usr/bin/python
-"""A simple script to manage schooltool instances.
-
-Usage: %s [start|stop|status|create|destroy] instance-id
-
-Returns:
-0 on success,
-1 if there were problems (or status is "not running"),
-2 if the parameters are invalid.
-
-Functions useful externally (might raise ValueErrors):
-
-start(id), stop(id), running(id), create(id), destroy(id)
-
-"""
-
-import sys
-import os
-import democonfig
-
-# Full path to Debian's start-stop-daemon
-START_STOP_DAEMON = '/sbin/start-stop-daemon'
-
-# Full path to the SchoolTool server executable
-SCHOOLTOOL_SERVER = '/usr/bin/schooltool-server'
-
-# Process name as seen in /proc/$PID/status.
-# Essentially it is os.path.basename(SCHOOLTOOL_SERVER)[:15]
-SCHOOLTOOL_SERVER_PNAME = 'schooltool-serv'
-
-# Template for an instance configuration file
-CONF_TEMPLATE = """# SchoolTool server configuration file
-listen %(port)d
-
-<zodb>
-  <filestorage>
-    path %(db_path)s
-  </filestorage>
-</zodb>
-
-pid-file %(pid_path)s
-error-log-file %(errorlog_path)s
-access-log-file %(accesslog_path)s
-"""
-
-# Command used to start an instance
-START_CMD = (START_STOP_DAEMON + " --start --quiet --oknodo"
-        " --pidfile %(pid_path)s --chuid %(uid)d:%(gid)d --startas "
-        + SCHOOLTOOL_SERVER + " -- -d -c %(conf_path)s > /dev/null")
-
-# Command used to stop an instance
-STOP_CMD = (START_STOP_DAEMON + " --stop --quiet --oknodo"
-        " --pidfile %(pid_path)s --name " + SCHOOLTOOL_SERVER_PNAME +
-        " > /dev/null")
-
-def die(msg):
-    """Print a message to stderr and die with error code 2."""
-    print >>sys.stderr, msg
-    sys.exit(2)
-
-def path(id, file=''):
-    """Return path of file (optional) in instance id."""
-    return os.path.join(democonfig.INSTANCE_PATH, str(id), file)
-
-def exists(id):
-    """Check if an instance exists."""
-    return os.path.exists(path(id))
-
-def running(id):
-    """Check if an instance is running."""
-    if not exists(id):
-        raise ValueError("Instance with id %d does not exist!" % id)
-    return os.path.exists(path(id, 'pid'))
-
-def start(id):
-    """Start an instance (it should be created first)."""
-    if not exists(id):
-        raise ValueError("Instance with id %d does not exist!" % id)
-    vars = {
-        'pid_path': path(id, 'pid'),
-        'uid': democonfig.BASE_USER + id,
-        'gid': democonfig.BASE_GROUP + id,
-        'conf_path': path(id, 'conf'),
-    }
-    cmd = START_CMD % vars
-    retval = os.system(cmd)
-    if retval != 0:
-        raise ValueError("Failed to start instance %d, "
-                         "start-stop-daemon returned %d" % (id, retval))
-
-def stop(id):
-    """Stop an instance."""
-    pid_path = path(id, 'pid')
-    vars = {
-        'pid_path': pid_path,
-    }
-    cmd = STOP_CMD % vars
-    retval = os.system(cmd)
-    if retval != 0:
-        raise ValueError("Failed to stop instance %d, "
-                         "start-stop-daemon returned %d" % (id, retval))
-    try:
-        os.unlink(pid_path)
-    except OSError:
-        pass
-    else:
-        print >>sys.stderr, "Removed stale pidfile for instance %d." % id
-
-def create(id):
-    """Set up an instance."""
-    if exists(id):
-        raise ValueError("Instance with id %d already exists!" % id)
-
-    # Harmless race: if an instance happens to appear after we checked but
-    # before we call os.mkdir, the mkdir call will simply fail.
-
-    uid = democonfig.BASE_USER + id
-    gid = democonfig.BASE_GROUP + id
-    try:
-        os.mkdir(path(id))
-        os.chown(path(id), uid, gid)
-    except OSError, e:
-        raise ValueError(str(e)) # XXX
-
-    vars = {
-        'port': democonfig.BASE_PORT + id,
-        'db_path': path(id, 'Data.fs'),
-        'pid_path': path(id, 'pid'),
-        'errorlog_path': path(id, 'error.log'),
-        'accesslog_path': path(id, 'access.log'),
-    }
-    f = file(path(id, 'conf'), 'w')
-    f.write(CONF_TEMPLATE % vars)
-    f.close()
-
-def destroy(id):
-    """Remove an instance completely."""
-    # Try to stop the instance in case it is currently running.
-    stop(id)
-
-    for filename in ['Data.fs', 'Data.fs.index', 'Data.fs.lock',
-                     'Data.fs.tmp', 'error.log', 'access.log', 'conf']:
-        try:
-            os.remove(path(id, filename))
-        except OSError:
-            pass # some of these files may not exist
-
-    try:
-        os.rmdir(path(id))
-    except OSError, e:
-        raise ValueError(str(e)) # XXX
-
-
-def main():
-    if len(sys.argv) != 3:
-        die("Usage: %s [start|stop|status|create|destroy]"
-            " instance-id" % sys.argv[0])
-
-    cmd, id = sys.argv[1:3]
-    try:
-        id = int(id)
-    except ValueError:
-        die("Instance id must be an integer.")
-    if id < 1 or id > democonfig.MAX_INSTANCES:
-        die("Instance limit reached!")
-
-    try:
-        if cmd == 'start':
-            start(id)
-        elif cmd == 'stop':
-            stop(id)
-        elif cmd == 'status':
-            if running(id):
-                print "Instance %d is running." % id
-            else:
-                print "Instance %d is NOT running." % id
-                sys.exit(1)
-        elif cmd == 'create':
-            create(id)
-        elif cmd == 'destroy':
-            destroy(id)
-        else:
-            print >>sys.stderr, "Unrecognized command: %s" % cmd
-            sys.exit(2)
-    except ValueError, e:
-        print >>sys.stderr, e
-        sys.exit(1)
-
-if __name__ == '__main__':
-    main()

Modified: trunk/demo/scripts/democonfig.h
===================================================================
--- trunk/demo/scripts/democonfig.h	2004-05-07 15:39:03 UTC (rev 876)
+++ trunk/demo/scripts/democonfig.h	2004-05-07 16:13:22 UTC (rev 877)
@@ -1,7 +1,7 @@
 /* Use fully qualified pathnames here. */
 
-#define DEMO_CTL "/home/gintas/devel/schooltool/demo/tmp/bin/demo-ctl.py"
-#define INSTANCE_PATH "/home/gintas/devel/schooltool/demo/tmp/var"
+#define DEMO_CTL "/opt/schooltool-demo/bin/democtl"
+#define INSTANCE_PATH "/srv/schooltool-demo"
 
 #define PYTHON "/usr/bin/python2.3"
-#define MAX_INSTANCES 1000
+#define MAX_INSTANCES 10

Copied: trunk/demo/scripts/democtl.py (from rev 873, trunk/demo/scripts/demo-ctl.py)
===================================================================
--- trunk/demo/scripts/demo-ctl.py	2004-05-07 08:05:24 UTC (rev 873)
+++ trunk/demo/scripts/democtl.py	2004-05-07 16:13:22 UTC (rev 877)
@@ -0,0 +1,194 @@
+#!/usr/bin/python
+"""A simple script to manage schooltool instances.
+
+Usage: %s [start|stop|status|create|destroy] instance-id
+
+Returns:
+0 on success,
+1 if there were problems (or status is "not running"),
+2 if the parameters are invalid.
+
+Functions useful externally (might raise ValueErrors):
+
+start(id), stop(id), running(id), create(id), destroy(id)
+
+"""
+
+import sys
+import os
+
+# You might want to change this:
+sys.path.insert(0, os.path.join(os.path.basename(__file__), 'lib'))
+
+import democonfig
+
+# Full path to Debian's start-stop-daemon
+START_STOP_DAEMON = '/sbin/start-stop-daemon'
+
+# Full path to the SchoolTool server executable
+SCHOOLTOOL_SERVER = '/usr/bin/schooltool-server'
+
+# Process name as seen in /proc/$PID/status.
+# Essentially it is os.path.basename(SCHOOLTOOL_SERVER)[:15]
+SCHOOLTOOL_SERVER_PNAME = 'schooltool-serv'
+
+# Template for an instance configuration file
+CONF_TEMPLATE = """# SchoolTool server configuration file
+listen %(port)d
+
+<zodb>
+  <filestorage>
+    path %(db_path)s
+  </filestorage>
+</zodb>
+
+pid-file %(pid_path)s
+error-log-file %(errorlog_path)s
+access-log-file %(accesslog_path)s
+"""
+
+# Command used to start an instance
+START_CMD = (START_STOP_DAEMON + " --start --quiet --oknodo"
+        " --pidfile %(pid_path)s --chuid %(uid)d:%(gid)d --startas "
+        + SCHOOLTOOL_SERVER + " -- -d -c %(conf_path)s > /dev/null")
+
+# Command used to stop an instance
+STOP_CMD = (START_STOP_DAEMON + " --stop --quiet --oknodo"
+        " --pidfile %(pid_path)s --name " + SCHOOLTOOL_SERVER_PNAME +
+        " > /dev/null")
+
+def die(msg):
+    """Print a message to stderr and die with error code 2."""
+    print >>sys.stderr, msg
+    sys.exit(2)
+
+def path(id, file=''):
+    """Return path of file (optional) in instance id."""
+    return os.path.join(democonfig.INSTANCE_PATH, str(id), file)
+
+def exists(id):
+    """Check if an instance exists."""
+    return os.path.exists(path(id))
+
+def running(id):
+    """Check if an instance is running."""
+    if not exists(id):
+        raise ValueError("Instance with id %d does not exist!" % id)
+    return os.path.exists(path(id, 'pid'))
+
+def start(id):
+    """Start an instance (it should be created first)."""
+    if not exists(id):
+        raise ValueError("Instance with id %d does not exist!" % id)
+    vars = {
+        'pid_path': path(id, 'pid'),
+        'uid': democonfig.BASE_USER + id,
+        'gid': democonfig.BASE_GROUP + id,
+        'conf_path': path(id, 'conf'),
+    }
+    cmd = START_CMD % vars
+    retval = os.system(cmd)
+    if retval != 0:
+        raise ValueError("Failed to start instance %d, "
+                         "start-stop-daemon returned %d" % (id, retval))
+
+def stop(id):
+    """Stop an instance."""
+    pid_path = path(id, 'pid')
+    vars = {
+        'pid_path': pid_path,
+    }
+    cmd = STOP_CMD % vars
+    retval = os.system(cmd)
+    if retval != 0:
+        raise ValueError("Failed to stop instance %d, "
+                         "start-stop-daemon returned %d" % (id, retval))
+    try:
+        os.unlink(pid_path)
+    except OSError:
+        pass
+    else:
+        print >>sys.stderr, "Removed stale pidfile for instance %d." % id
+
+def create(id):
+    """Set up an instance."""
+    if exists(id):
+        raise ValueError("Instance with id %d already exists!" % id)
+
+    # Harmless race: if an instance happens to appear after we checked but
+    # before we call os.mkdir, the mkdir call will simply fail.
+
+    uid = democonfig.BASE_USER + id
+    gid = democonfig.BASE_GROUP + id
+    try:
+        os.mkdir(path(id))
+        os.chown(path(id), uid, gid)
+    except OSError, e:
+        raise ValueError(str(e)) # XXX
+
+    vars = {
+        'port': democonfig.BASE_PORT + id,
+        'db_path': path(id, 'Data.fs'),
+        'pid_path': path(id, 'pid'),
+        'errorlog_path': path(id, 'error.log'),
+        'accesslog_path': path(id, 'access.log'),
+    }
+    f = file(path(id, 'conf'), 'w')
+    f.write(CONF_TEMPLATE % vars)
+    f.close()
+
+def destroy(id):
+    """Remove an instance completely."""
+    # Try to stop the instance in case it is currently running.
+    stop(id)
+
+    for filename in ['Data.fs', 'Data.fs.index', 'Data.fs.lock',
+                     'Data.fs.tmp', 'error.log', 'access.log', 'conf']:
+        try:
+            os.remove(path(id, filename))
+        except OSError:
+            pass # some of these files may not exist
+
+    try:
+        os.rmdir(path(id))
+    except OSError, e:
+        raise ValueError(str(e)) # XXX
+
+
+def main():
+    if len(sys.argv) != 3:
+        die("Usage: %s [start|stop|status|create|destroy]"
+            " instance-id" % sys.argv[0])
+
+    cmd, id = sys.argv[1:3]
+    try:
+        id = int(id)
+    except ValueError:
+        die("Instance id must be an integer.")
+    if id < 1 or id > democonfig.MAX_INSTANCES:
+        die("Instance limit reached!")
+
+    try:
+        if cmd == 'start':
+            start(id)
+        elif cmd == 'stop':
+            stop(id)
+        elif cmd == 'status':
+            if running(id):
+                print "Instance %d is running." % id
+            else:
+                print "Instance %d is NOT running." % id
+                sys.exit(1)
+        elif cmd == 'create':
+            create(id)
+        elif cmd == 'destroy':
+            destroy(id)
+        else:
+            print >>sys.stderr, "Unrecognized command: %s" % cmd
+            sys.exit(2)
+    except ValueError, e:
+        print >>sys.stderr, e
+        sys.exit(1)
+
+if __name__ == '__main__':
+    main()

Copied: trunk/demo/tests/test_demo.py (from rev 873, trunk/demo/cgi-bin/tests.py)
===================================================================
--- trunk/demo/cgi-bin/tests.py	2004-05-07 08:05:24 UTC (rev 873)
+++ trunk/demo/tests/test_demo.py	2004-05-07 16:13:22 UTC (rev 877)
@@ -0,0 +1,200 @@
+#!/usr/bin/env python2.3
+"""
+Unit tests for the demo app.
+
+$Id$
+"""
+
+import unittest
+import fcntl
+import os
+import tempfile
+import shutil
+import datetime
+import csv
+import sys
+
+
+# You might want to change this:
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'lib'))
+
+
+class FileSetupMixin:
+
+    def setUp(self):
+        self.dir = tempfile.mkdtemp()
+        self.file = os.path.join(self.dir, 'test.storage')
+
+    def tearDown(self):
+        shutil.rmtree(self.dir, True)
+
+
+class TestDemoDB(FileSetupMixin, unittest.TestCase):
+
+    def test_locking(self):
+        from demo import DemoDB
+        db = DemoDB(self.file)
+        self.assert_(os.path.exists(self.file))
+        f = file(self.file)
+        self.assertRaises(IOError,
+                          fcntl.flock, f, fcntl.LOCK_EX | fcntl.LOCK_NB)
+        db.close()
+        fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
+
+    def test_open(self):
+        from demo import DemoDB
+        f = file(self.file, "w")
+        print >> f, ('"2004-04-01 12:00:00","User","email","school",'
+                     '"position","comment",123,"active",password,3')
+        f.close()
+        db = DemoDB(self.file)
+        result = list(db)
+        self.assertEqual(result, [['2004-04-01 12:00:00', 'User',
+                         'email', 'school', 'position', 'comment',
+                         '123', 'active', 'password', '3']])
+        db.close()
+
+    def test_writerows(self):
+        from demo import DemoDB
+        db = DemoDB(self.file)
+        data = [['2004-04-01 12:00:00', 'User', 'email', 'school',
+                 'position', 'comment', '123', 'active', 'password', '3']]
+        db.writerows(data)
+        db.close()
+        self.assertEqual(list(csv.reader(file(self.file))),
+                         data)
+
+class DBStub:
+    def writerows(self, rows):
+        self.data = list(rows)
+
+class TestDemo(FileSetupMixin, unittest.TestCase):
+
+    def test_load(self):
+        from demo import Demo, User
+        d = Demo(self.file)
+        d.db = iter([['2004-04-01 12:00:00', 'User', 'email', 'school',
+                      'position', 'comment', '123', 'active', 'passwd', '3'],
+                     ['2004-04-01 12:01:00', 'User2', 'email2', 'school2',
+                      'position', 'comment', '123', 'active', 'passwd2', '4'],
+                     ])
+        d.load()
+        self.assertEqual(len(d.users), 2)
+        self.assert_(isinstance(d.users[0], User))
+        self.assertEqual(d.users[0].instance, 3)
+        self.assertEqual(d.users[0].date,
+                         datetime.datetime(2004, 4, 1, 12, 0))
+
+        self.assert_(isinstance(d.users[1], User))
+        self.assertEqual(d.users[1].instance, 4)
+        self.assertEqual(d.users[1].date,
+                         datetime.datetime(2004, 4, 1, 12, 1))
+
+    def test_save(self):
+        from demo import Demo, User
+        demo = Demo(self.file)
+        demo.db = DBStub()
+        datetime.datetime(2004, 1, 1, 12,0,0)
+        demo.users = [
+            User(datetime.datetime(2004, 1, 1, 12,0),
+                 "Albertas", "alga at example.com", "PoV",
+                 "programmer", "I want to migrate to Schooltool",
+                 '1234', 'active', 'xyzzy', 42),
+            User(datetime.datetime(2004, 1, 1, 12,1),
+                 "Gintas", "gintas at example.com", "PoV",
+                 "programmer", "I want to migrate to Schooltool too",
+                 '1234', 'active', 'furrfu', 43),
+            ]
+        demo.save()
+        self.assertEqual(demo.db.data,
+                         [['2004-01-01 12:00:00', "Albertas",
+                           "alga at example.com", "PoV", "programmer",
+                           "I want to migrate to Schooltool", '1234',
+                           'active', 'xyzzy', '42'],
+                          ['2004-01-01 12:01:00', "Gintas",
+                           "gintas at example.com", "PoV", "programmer",
+                           "I want to migrate to Schooltool too", '1234',
+                           'active', 'furrfu', '43']])
+
+    def test_getByHash(self):
+        from demo import Demo, User
+        demo = Demo(self.file)
+        demo.db = DBStub()
+        datetime.datetime(2004, 1, 1, 12,0,0)
+        demo.users = [
+            User(datetime.datetime(2004, 1, 1, 12,0),
+                 "Albertas", "alga at example.com", "PoV",
+                 "programmer", "I want to migrate to Schooltool",
+                 '1234', 'active', 'xyzzy', 42),
+            User(datetime.datetime(2004, 1, 1, 12,1),
+                 "Gintas", "gintas at example.com", "PoV",
+                 "programmer", "I want to migrate to Schooltool too",
+                 '4321', 'active', 'furrfu', 43),
+            ]
+        self.assertEqual(demo.getByHash('1234'), demo.users[0])
+        self.assertEqual(demo.getByHash('4321'), demo.users[1])
+        self.assertRaises(KeyError, demo.getByHash, '1111')
+
+    def test_getByInstance(self):
+        from demo import Demo, User
+        demo = Demo(self.file)
+        demo.db = DBStub()
+        datetime.datetime(2004, 1, 1, 12,0,0)
+        demo.users = [
+            User(datetime.datetime(2004, 1, 1, 12,0),
+                 "Albertas", "alga at example.com", "PoV",
+                 "programmer", "I want to migrate to Schooltool",
+                 '1234', 'active', 'xyzzy', 42),
+            User(datetime.datetime(2004, 1, 1, 12,1),
+                 "Gintas", "gintas at example.com", "PoV",
+                 "programmer", "I want to migrate to Schooltool too",
+                 '4321', 'active', 'furrfu', 43),
+            ]
+        self.assertEqual(demo.getByInstance(42), demo.users[0])
+        self.assertEqual(demo.getByInstance(43), demo.users[1])
+        self.assertRaises(KeyError, demo.getByInstance, 41)
+
+    def test_new(self):
+        from demo import Demo, User
+        demo = Demo(self.file)
+        demo.db = DBStub()
+        datetime.datetime(2004, 1, 1, 12,0,0)
+        demo.users = [
+            User(datetime.datetime(2004, 1, 1, 12,0),
+                 "Albertas", "alga at example.com", "PoV",
+                 "programmer", "I want to migrate to Schooltool",
+                 '1234', 'active', 'xyzzy', 42),
+            User(datetime.datetime(2004, 1, 1, 12,1),
+                 "Gintas", "gintas at example.com", "PoV",
+                 "programmer", "I want to migrate to Schooltool too",
+                 '4321', 'active', 'furrfu', 43),
+            ]
+        result = demo.new('Marius', 'mg at localhost', 'Pov', 'hacker', '')
+        self.assertEqual(len(demo.users), 3)
+        self.assertEqual(demo.users[2], result)
+        self.assert_(result.password)
+        self.assertEqual(len(result.hash), 8)
+
+
+class TestUser(unittest.TestCase):
+
+    def test(self):
+        from demo import User
+        date = datetime.datetime(2004, 1, 1, 12,0,0)
+        user = User(date, "Albertas", "alga at example.com", "PoV",
+                    "programmer", "I want to migrate to Schooltool",
+                    '1234', 'active', 'xyzzy', 42)
+        self.assertEqual(user.date, date)
+        self.assertEqual(user.name, "Albertas")
+        self.assertEqual(user.email, "alga at example.com")
+        self.assertEqual(user.company, "PoV")
+        self.assertEqual(user.position, "programmer")
+        self.assertEqual(user.comments, "I want to migrate to Schooltool")
+        self.assertEqual(user.hash, '1234')
+        self.assertEqual(user.status, 'active')
+        self.assertEqual(user.password, 'xyzzy')
+        self.assertEqual(user.instance, 42)
+
+
+if __name__ == '__main__':
+    unittest.main()

Deleted: trunk/demo/testsetup.sh
===================================================================
--- trunk/demo/testsetup.sh	2004-05-07 15:39:03 UTC (rev 876)
+++ trunk/demo/testsetup.sh	2004-05-07 16:13:22 UTC (rev 877)
@@ -1,29 +0,0 @@
-#!/bin/bash
-
-echo 'This will create a "tmp" subdirectory, a typical demo server tree'
-echo 'inside, and set up symlinks.'
-echo
-echo 'You need to adjust democonfig.py and schooltool-new.c to point to'
-echo 'the paths that are correct in your system.'
-echo
-echo 'If you want to test the cgi-bin scripts, you will need to set them up'
-echo 'manually (you will also need to copy testconfig.py into the cgi-bin'
-echo 'directory). Plus, you will need to run this as root:'
-echo '# chown root bin/schooltool-new && chmod a+s bin/schooltool-new'
-echo 'for the SUID wrapper to work. The wrapper will not cause any'
-echo 'damage to your system.'
-echo
-
-ln -sf ../democonfig.py scripts/
-
-# compile schooltool-new
-gcc -W -Wall -o scripts/schooltool-new scripts/schooltool-new.c
-
-mkdir -p tmp tmp/bin tmp/var
-ln -sf ../../scripts/demo-ctl.py \
-       ../../scripts/schooltool-new \
-       ../../scripts/cleanup.py \
-       ../../democonfig.py \
-            tmp/bin
-
-echo 'Done'.



More information about the Checkins mailing list