#!/usr/bin/env python
# -*- coding: utf-8 -*-

##########################################
## NOTE: This module was autogenerated. ##
## Contains no user-servicable parts!!! ##
##########################################

import re

VERSION = 20210419.190718

plural_of = {
    "abides": "abide",
    "aches": "ache",
    "am": "are",
    "arcs": "arc",
    "are": "are",
    "arises": "arise",
    "asks": "ask",
    "avalanches": "avalanche",
    "awakes": "awake",
    "beats": "beat",
    "becomes": "become",
    "begets": "beget",
    "begins": "begin",
    "beholds": "behold",
    "bellyaches": "bellyache",
    "bends": "bend",
    "bets": "bet",
    "biases": "bias",
    "bites": "bite",
    "bleeds": "bleed",
    "blitzes": "blitz",
    "blows": "blow",
    "breaks": "break",
    "brings": "bring",
    "builds": "build",
    "burns": "burn",
    "bursts": "burst",
    "buses": "bus",
    "busts": "bust",
    "caches": "cache",
    "caddies": "caddie",
    "can": "can",
    "canvases": "canvas",
    "catches": "catch",
    "caucuses": "caucus",
    "changes": "change",
    "chooses": "choose",
    "choruses": "chorus",
    "claps": "clap",
    "clings": "cling",
    "comes": "come",
    "continues": "continue",
    "costs": "cost",
    "could": "could",
    "creches": "creche",
    "creeps": "creep",
    "dares": "dare",
    "deals": "deal",
    "dies": "die",
    "digs": "dig",
    "disses": "dis",
    "dives": "dive",
    "does": "do",
    "douches": "douche",
    "drags": "drag",
    "dreams": "dream",
    "drinks": "drink",
    "drives": "drive",
    "dwells": "dwell",
    "eats": "eat",
    "expects": "expect",
    "falls": "fall",
    "feels": "feel",
    "fights": "fight",
    "finds": "find",
    "flees": "flee",
    "flies": "fly",
    "flings": "fling",
    "focuses": "focus",
    "follows": "follow",
    "forbids": "forbid",
    "foresees": "foresee",
    "foretells": "foretell",
    "forgets": "forget",
    "forgives": "forgive",
    "forsakes": "forsake",
    "gases": "gas",
    "gets": "get",
    "gilds": "gild",
    "gives": "give",
    "goes": "go",
    "grinds": "grind",
    "happens": "happen",
    "has": "have",
    "helps": "help",
    "hews": "hew",
    "hies": "hie",
    "hits": "hit",
    "hocuses": "hocus",
    "holds": "hold",
    "hurts": "hurt",
    "inlays": "inlay",
    "insists": "insist",
    "interlays": "interlay",
    "irises": "iris",
    "is": "are",
    "keeps": "keep",
    "kills": "kill",
    "kneels": "kneel",
    "knits": "knit",
    "knows": "know",
    "lays": "lay",
    "leads": "lead",
    "leans": "lean",
    "leaps": "leap",
    "learns": "learn",
    "leaves": "leave",
    "lets": "let",
    "lies": "lie",
    "likes": "like",
    "lives": "live",
    "looks": "look",
    "loses": "lose",
    "loves": "love",
    "may": "may",
    "means": "mean",
    "meets": "meet",
    "menus": "menu",
    "might": "might",
    "misleads": "mislead",
    "mistakes": "mistake",
    "misunderstands": "misunderstand",
    "moves": "move",
    "must": "must",
    "needs": "need",
    "niches": "niche",
    "ought": "ought",
    "outvies": "outvie",
    "overdraws": "overdraw",
    "overhears": "overhear",
    "overtakes": "overtake",
    "presets": "preset",
    "proves": "prove",
    "provides": "provide",
    "psyches": "psyche",
    "puts": "put",
    "quits": "quit",
    "quizzes": "quiz",
    "reaches": "reach",
    "remains": "remain",
    "remembers": "remember",
    "rends": "rend",
    "rents": "rent",
    "rids": "rid",
    "rings": "ring",
    "rises": "rise",
    "rives": "rive",
    "s": "",
    "saws": "saw",
    "seeks": "seek",
    "seems": "seem",
    "shakes": "shake",
    "shall": "shall",
    "shaves": "shave",
    "sheds": "shed",
    "shits": "shit",
    "shoes": "shoe",
    "should": "should",
    "shows": "show",
    "shrinks": "shrink",
    "sings": "sing",
    "sinks": "sink",
    "sits": "sit",
    "skis": "ski",
    "slays": "slay",
    "slides": "slide",
    "slinks": "slink",
    "slits": "slit",
    "smells": "smell",
    "smites": "smite",
    "sneaks": "sneak",
    "sows": "sow",
    "speaks": "speak",
    "speeds": "speed",
    "spends": "spend",
    "spits": "spit",
    "spoils": "spoil",
    "springs": "spring",
    "stands": "stand",
    "staves": "stave",
    "stays": "stay",
    "steals": "steal",
    "stings": "sting",
    "stinks": "stink",
    "stops": "stop",
    "strews": "strew",
    "strides": "stride",
    "strips": "strip",
    "strives": "strive",
    "sublets": "sublet",
    "sunburns": "sunburn",
    "swears": "swear",
    "sweats": "sweat",
    "sweeps": "sweep",
    "swells": "swell",
    "swims": "swim",
    "swings": "swing",
    "talks": "talk",
    "tears": "tear",
    "thrives": "thrive",
    "thrusts": "thrust",
    "treads": "tread",
    "undergoes": "undergo",
    "underlies": "underlie",
    "understands": "understand",
    "undertakes": "undertake",
    "upsets": "upset",
    "vexes": "vex",
    "vies": "vie",
    "waits": "wait",
    "wakes": "wake",
    "walks": "walk",
    "wants": "want",
    "was": "were",
    "watches": "watch",
    "wears": "wear",
    "weeps": "weep",
    "wends": "wend",
    "will": "will",
    "wins": "win",
    "wises": "wis",
    "withdraws": "withdraw",
    "withholds": "withhold",
    "withstands": "withstand",
    "would": "would",
    "wrings": "wring"
}

singular_of = {
    "": "s",
    "abide": "abides",
    "ache": "aches",
    "arc": "arcs",
    "are": "is",
    "arise": "arises",
    "ask": "asks",
    "avalanche": "avalanches",
    "awake": "awakes",
    "be": "is",
    "beat": "beats",
    "become": "becomes",
    "beget": "begets",
    "begin": "begins",
    "behold": "beholds",
    "bellyache": "bellyaches",
    "bend": "bends",
    "bet": "bets",
    "bias": "biases",
    "bite": "bites",
    "bleed": "bleeds",
    "blitz": "blitzes",
    "blow": "blows",
    "break": "breaks",
    "bring": "brings",
    "build": "builds",
    "burn": "burns",
    "burst": "bursts",
    "bus": "buses",
    "bust": "busts",
    "cache": "caches",
    "caddie": "caddies",
    "can": "can",
    "canvas": "canvases",
    "catch": "catches",
    "caucus": "caucuses",
    "change": "changes",
    "choose": "chooses",
    "chorus": "choruses",
    "clap": "claps",
    "cling": "clings",
    "come": "comes",
    "continue": "continues",
    "cost": "costs",
    "could": "could",
    "creche": "creches",
    "creep": "creeps",
    "dare": "dares",
    "deal": "deals",
    "die": "dies",
    "dig": "digs",
    "dis": "disses",
    "dive": "dives",
    "do": "does",
    "douche": "douches",
    "drag": "drags",
    "dream": "dreams",
    "drink": "drinks",
    "drive": "drives",
    "dwell": "dwells",
    "eat": "eats",
    "expect": "expects",
    "fall": "falls",
    "feel": "feels",
    "fight": "fights",
    "find": "finds",
    "flee": "flees",
    "fling": "flings",
    "fly": "flies",
    "focus": "focuses",
    "follow": "follows",
    "forbid": "forbids",
    "foresee": "foresees",
    "foretell": "foretells",
    "forget": "forgets",
    "forgive": "forgives",
    "forsake": "forsakes",
    "gas": "gases",
    "get": "gets",
    "gild": "gilds",
    "give": "gives",
    "go": "goes",
    "grind": "grinds",
    "happen": "happens",
    "have": "has",
    "help": "helps",
    "hew": "hews",
    "hie": "hies",
    "hit": "hits",
    "hocus": "hocuses",
    "hold": "holds",
    "hurt": "hurts",
    "inlay": "inlays",
    "insist": "insists",
    "interlay": "interlays",
    "iris": "irises",
    "keep": "keeps",
    "kill": "kills",
    "kneel": "kneels",
    "knit": "knits",
    "know": "knows",
    "lay": "lays",
    "lead": "leads",
    "lean": "leans",
    "leap": "leaps",
    "learn": "learns",
    "leave": "leaves",
    "let": "lets",
    "lie": "lies",
    "like": "likes",
    "live": "lives",
    "look": "looks",
    "lose": "loses",
    "love": "loves",
    "may": "may",
    "mean": "means",
    "meet": "meets",
    "menu": "menus",
    "might": "might",
    "mislead": "misleads",
    "mistake": "mistakes",
    "misunderstand": "misunderstands",
    "move": "moves",
    "must": "must",
    "need": "needs",
    "niche": "niches",
    "ought": "ought",
    "outvie": "outvies",
    "overdraw": "overdraws",
    "overhear": "overhears",
    "overtake": "overtakes",
    "preset": "presets",
    "prove": "proves",
    "provide": "provides",
    "psyche": "psyches",
    "put": "puts",
    "quit": "quits",
    "quiz": "quizzes",
    "reach": "reaches",
    "remain": "remains",
    "remember": "remembers",
    "rend": "rends",
    "rent": "rents",
    "rid": "rids",
    "ring": "rings",
    "rise": "rises",
    "rive": "rives",
    "saw": "saws",
    "seek": "seeks",
    "seem": "seems",
    "shake": "shakes",
    "shall": "shall",
    "shave": "shaves",
    "shed": "sheds",
    "shit": "shits",
    "shoe": "shoes",
    "should": "should",
    "show": "shows",
    "shrink": "shrinks",
    "sing": "sings",
    "sink": "sinks",
    "sit": "sits",
    "ski": "skis",
    "slay": "slays",
    "slide": "slides",
    "slink": "slinks",
    "slit": "slits",
    "smell": "smells",
    "smite": "smites",
    "sneak": "sneaks",
    "sow": "sows",
    "speak": "speaks",
    "speed": "speeds",
    "spend": "spends",
    "spit": "spits",
    "spoil": "spoils",
    "spring": "springs",
    "stand": "stands",
    "stave": "staves",
    "stay": "stays",
    "steal": "steals",
    "sting": "stings",
    "stink": "stinks",
    "stop": "stops",
    "strew": "strews",
    "stride": "strides",
    "strip": "strips",
    "strive": "strives",
    "sublet": "sublets",
    "sunburn": "sunburns",
    "swear": "swears",
    "sweat": "sweats",
    "sweep": "sweeps",
    "swell": "swells",
    "swim": "swims",
    "swing": "swings",
    "talk": "talks",
    "tear": "tears",
    "thrive": "thrives",
    "thrust": "thrusts",
    "tread": "treads",
    "undergo": "undergoes",
    "underlie": "underlies",
    "understand": "understands",
    "undertake": "undertakes",
    "upset": "upsets",
    "vex": "vexes",
    "vie": "vies",
    "wait": "waits",
    "wake": "wakes",
    "walk": "walks",
    "want": "wants",
    "watch": "watches",
    "wear": "wears",
    "weep": "weeps",
    "wend": "wends",
    "were": "was",
    "will": "will",
    "win": "wins",
    "wis": "wises",
    "withdraw": "withdraws",
    "withhold": "withholds",
    "withstand": "withstands",
    "would": "would",
    "wring": "wrings"
}

past_of = {
    "abide": "abided",
    "abided": "abided",
    "abides": "abided",
    "abiding": "abided",
    "ache": "ached",
    "ached": "ached",
    "aches": "ached",
    "aching": "ached",
    "am": "was",
    "arc": "arced",
    "arced": "arced",
    "arcing": "arced",
    "arcs": "arced",
    "are": "were",
    "arise": "arose",
    "arisen": "arose",
    "arises": "arose",
    "arising": "arose",
    "ask": "asked",
    "asked": "asked",
    "asking": "asked",
    "asks": "asked",
    "avalanche": "avalanched",
    "avalanched": "avalanched",
    "avalanches": "avalanched",
    "avalanching": "avalanched",
    "awake": "awoke",
    "awakening": "awoke",
    "awakes": "awoke",
    "awoken": "awoke",
    "be": "were",
    "beat": "beat",
    "beaten": "beat",
    "beating": "beat",
    "beats": "beat",
    "become": "became",
    "becomes": "became",
    "becoming": "became",
    "been": "was",
    "beget": "begot",
    "begets": "begot",
    "begetting": "begot",
    "begin": "began",
    "beginning": "began",
    "begins": "began",
    "begotten": "begot",
    "begun": "began",
    "beheld": "beheld",
    "behold": "beheld",
    "beholding": "beheld",
    "beholds": "beheld",
    "being": "was",
    "bellyache": "bellyached",
    "bellyached": "bellyached",
    "bellyaches": "bellyached",
    "bellyaching": "bellyached",
    "bend": "bent",
    "bending": "bent",
    "bends": "bent",
    "bent": "bent",
    "bet": "bet",
    "bets": "bet",
    "betting": "bet",
    "bias": "biased",
    "biased": "biased",
    "biases": "biased",
    "biasing": "biased",
    "bite": "bit",
    "bites": "bit",
    "biting": "bit",
    "bitten": "bit",
    "bled": "bled",
    "bleed": "bled",
    "bleeding": "bled",
    "bleeds": "bled",
    "blitz": "blitzed",
    "blitzed": "blitzed",
    "blitzes": "blitzed",
    "blitzing": "blitzed",
    "blow": "blew",
    "blowing": "blew",
    "blown": "blew",
    "blows": "blew",
    "break": "broke",
    "breaking": "broke",
    "breaks": "broke",
    "bring": "brought",
    "bringing": "brought",
    "brings": "brought",
    "broken": "broke",
    "brought": "brought",
    "build": "built",
    "building": "built",
    "builds": "built",
    "built": "built",
    "burn": "burnt",
    "burning": "burnt",
    "burns": "burnt",
    "burnt": "burnt",
    "burst": "burst",
    "bursting": "burst",
    "bursts": "burst",
    "bus": "bused",
    "bused": "bused",
    "buses": "bused",
    "busing": "bused",
    "bust": "bust",
    "busting": "bust",
    "busts": "bust",
    "cache": "cached",
    "cached": "cached",
    "caches": "cached",
    "caching": "cached",
    "caddie": "caddied",
    "caddied": "caddied",
    "caddies": "caddied",
    "caddying": "caddied",
    "can": "could",
    "canvas": "canvased",
    "canvased": "canvased",
    "canvases": "canvased",
    "canvasing": "canvased",
    "catch": "caught",
    "catches": "caught",
    "catching": "caught",
    "caucus": "caucused",
    "caucused": "caucused",
    "caucuses": "caucused",
    "caucusing": "caucused",
    "caught": "caught",
    "change": "changed",
    "changed": "changed",
    "changes": "changed",
    "changing": "changed",
    "choose": "chose",
    "chooses": "chose",
    "choosing": "chose",
    "chorus": "chorused",
    "chorused": "chorused",
    "choruses": "chorused",
    "chorusing": "chorused",
    "chosen": "chose",
    "clap": "clapped",
    "clapped": "clapped",
    "clapping": "clapped",
    "claps": "clapped",
    "cling": "clung",
    "clinging": "clung",
    "clings": "clung",
    "clung": "clung",
    "come": "came",
    "comes": "came",
    "coming": "came",
    "continue": "continued",
    "continued": "continued",
    "continues": "continued",
    "continuing": "continued",
    "cost": "cost",
    "costing": "cost",
    "costs": "cost",
    "creche": "creched",
    "creched": "creched",
    "creches": "creched",
    "creching": "creched",
    "creep": "crept",
    "creeping": "crept",
    "creeps": "crept",
    "crept": "crept",
    "dare": "dared",
    "dared": "dared",
    "dares": "dared",
    "daring": "dared",
    "deal": "dealt",
    "dealing": "dealt",
    "deals": "dealt",
    "dealt": "dealt",
    "die": "died",
    "died": "died",
    "dies": "died",
    "dig": "dug",
    "digging": "dug",
    "digs": "dug",
    "dis": "dissed",
    "dissed": "dissed",
    "disses": "dissed",
    "dissing": "dissed",
    "dive": "dived",
    "dived": "dived",
    "dives": "dived",
    "diving": "dived",
    "do": "did",
    "does": "did",
    "doing": "did",
    "done": "did",
    "douche": "douched",
    "douched": "douched",
    "douches": "douched",
    "douching": "douched",
    "drag": "dragged",
    "dragged": "dragged",
    "dragging": "dragged",
    "drags": "dragged",
    "dream": "dreamed",
    "dreamed": "dreamed",
    "dreaming": "dreamed",
    "dreams": "dreamed",
    "drink": "drank",
    "drinking": "drank",
    "drinks": "drank",
    "drive": "drove",
    "driven": "drove",
    "drives": "drove",
    "driving": "drove",
    "drunk": "drank",
    "dug": "dug",
    "dwell": "dwelt",
    "dwelling": "dwelt",
    "dwells": "dwelt",
    "dwelt": "dwelt",
    "dying": "died",
    "eat": "ate",
    "eaten": "ate",
    "eating": "ate",
    "eats": "ate",
    "expect": "expected",
    "expected": "expected",
    "expecting": "expected",
    "expects": "expected",
    "fall": "fell",
    "fallen": "fell",
    "falling": "fell",
    "falls": "fell",
    "feel": "felt",
    "feeling": "felt",
    "feels": "felt",
    "felt": "felt",
    "fight": "fought",
    "fighting": "fought",
    "fights": "fought",
    "find": "found",
    "finding": "found",
    "finds": "found",
    "fled": "fled",
    "flee": "fled",
    "fleeing": "fled",
    "flees": "fled",
    "flies": "flew",
    "fling": "flung",
    "flinging": "flung",
    "flings": "flung",
    "flown": "flew",
    "flung": "flung",
    "fly": "flew",
    "flying": "flew",
    "focus": "focused",
    "focused": "focused",
    "focuses": "focused",
    "focusing": "focused",
    "follow": "followed",
    "followed": "followed",
    "following": "followed",
    "follows": "followed",
    "forbid": "forbade",
    "forbidden": "forbade",
    "forbidding": "forbade",
    "forbids": "forbade",
    "foresee": "foresaw",
    "foreseeing": "foresaw",
    "foreseen": "foresaw",
    "foresees": "foresaw",
    "foretell": "foretold",
    "foretelling": "foretold",
    "foretells": "foretold",
    "foretold": "foretold",
    "forget": "forgot",
    "forgets": "forgot",
    "forgetting": "forgot",
    "forgive": "forgave",
    "forgiven": "forgave",
    "forgives": "forgave",
    "forgiving": "forgave",
    "forgotten": "forgot",
    "forsake": "forsook",
    "forsaken": "forsook",
    "forsakes": "forsook",
    "forsaking": "forsook",
    "fought": "fought",
    "found": "found",
    "gas": "gassed",
    "gases": "gassed",
    "gassed": "gassed",
    "gassing": "gassed",
    "get": "got",
    "gets": "got",
    "getting": "got",
    "gild": "gilded",
    "gilded": "gilded",
    "gilding": "gilded",
    "gilds": "gilded",
    "give": "gave",
    "given": "gave",
    "gives": "gave",
    "giving": "gave",
    "go": "went",
    "goes": "went",
    "going": "went",
    "gone": "went",
    "gotten": "got",
    "grind": "ground",
    "grinding": "ground",
    "grinds": "ground",
    "ground": "ground",
    "had": "had",
    "happen": "happened",
    "happened": "happened",
    "happening": "happened",
    "happens": "happened",
    "has": "had",
    "have": "had",
    "having": "had",
    "held": "held",
    "help": "helped",
    "helped": "helped",
    "helping": "helped",
    "helps": "helped",
    "hew": "hewed",
    "hewing": "hewed",
    "hewn": "hewed",
    "hews": "hewed",
    "hie": "hied",
    "hied": "hied",
    "hies": "hied",
    "hit": "hit",
    "hits": "hit",
    "hitting": "hit",
    "hocus": "hocused",
    "hocused": "hocused",
    "hocuses": "hocused",
    "hocusing": "hocused",
    "hold": "held",
    "holding": "held",
    "holds": "held",
    "hurt": "hurt",
    "hurting": "hurt",
    "hurts": "hurt",
    "hying": "hied",
    "inlaid": "inlaid",
    "inlay": "inlaid",
    "inlaying": "inlaid",
    "inlays": "inlaid",
    "insist": "insisted",
    "insisted": "insisted",
    "insisting": "insisted",
    "insists": "insisted",
    "interlaid": "interlaid",
    "interlay": "interlaid",
    "interlaying": "interlaid",
    "interlays": "interlaid",
    "iris": "irised",
    "irised": "irised",
    "irises": "irised",
    "irising": "irised",
    "is": "was",
    "keep": "kept",
    "keeping": "kept",
    "keeps": "kept",
    "kept": "kept",
    "kill": "killed",
    "killed": "killed",
    "killing": "killed",
    "kills": "killed",
    "kneel": "knelt",
    "kneeling": "knelt",
    "kneels": "knelt",
    "knelt": "knelt",
    "knit": "knitted",
    "knits": "knitted",
    "knitted": "knitted",
    "knitting": "knitted",
    "know": "knew",
    "knowing": "knew",
    "known": "knew",
    "knows": "knew",
    "laid": "laid",
    "lain": "lay",
    "lay": "laid",
    "laying": "laid",
    "lays": "laid",
    "lead": "led",
    "leading": "led",
    "leads": "led",
    "lean": "leaned",
    "leaned": "leaned",
    "leaning": "leaned",
    "leans": "leaned",
    "leap": "leapt",
    "leaping": "leapt",
    "leaps": "leapt",
    "leapt": "leapt",
    "learn": "learned",
    "learned": "learned",
    "learning": "learned",
    "learns": "learned",
    "leave": "left",
    "leaves": "left",
    "leaving": "left",
    "led": "led",
    "left": "left",
    "let": "let",
    "lets": "let",
    "letting": "let",
    "lie": "lay",
    "lies": "lay",
    "like": "liked",
    "liked": "liked",
    "likes": "liked",
    "liking": "liked",
    "live": "lived",
    "lived": "lived",
    "lives": "lived",
    "living": "lived",
    "look": "looked",
    "looked": "looked",
    "looking": "looked",
    "looks": "looked",
    "lose": "lost",
    "loses": "lost",
    "losing": "lost",
    "lost": "lost",
    "love": "loved",
    "loved": "loved",
    "loves": "loved",
    "loving": "loved",
    "lying": "lay",
    "may": "might",
    "mean": "meant",
    "meaning": "meant",
    "means": "meant",
    "meant": "meant",
    "meet": "met",
    "meeting": "met",
    "meets": "met",
    "menu": "menued",
    "menued": "menued",
    "menuing": "menued",
    "menus": "menued",
    "met": "met",
    "mislead": "misled",
    "misleading": "misled",
    "misleads": "misled",
    "misled": "misled",
    "mistake": "mistook",
    "mistaken": "mistook",
    "mistakes": "mistook",
    "mistaking": "mistook",
    "misunderstand": "misunderstood",
    "misunderstanding": "misunderstood",
    "misunderstands": "misunderstood",
    "misunderstood": "misunderstood",
    "move": "moved",
    "moved": "moved",
    "moves": "moved",
    "moving": "moved",
    "need": "needed",
    "needed": "needed",
    "needing": "needed",
    "needs": "needed",
    "niche": "niched",
    "niched": "niched",
    "nicheing": "niched",
    "niches": "niched",
    "outvie": "outvied",
    "outvied": "outvied",
    "outvies": "outvied",
    "outvying": "outvied",
    "overdraw": "overdrew",
    "overdrawing": "overdrew",
    "overdrawn": "overdrew",
    "overdraws": "overdrew",
    "overhear": "overheard",
    "overheard": "overheard",
    "overhearing": "overheard",
    "overhears": "overheard",
    "overtake": "overtook",
    "overtaken": "overtook",
    "overtakes": "overtook",
    "overtaking": "overtook",
    "preset": "preset",
    "presets": "preset",
    "presetting": "preset",
    "prove": "proved",
    "proved": "proved",
    "proven": "proved",
    "proves": "proved",
    "provide": "provided",
    "provided": "provided",
    "provides": "provided",
    "providing": "provided",
    "proving": "proved",
    "psyche": "psyched",
    "psyched": "psyched",
    "psyches": "psyched",
    "psyching": "psyched",
    "put": "put",
    "puts": "put",
    "putting": "put",
    "quit": "quit",
    "quits": "quit",
    "quitting": "quit",
    "quiz": "quizzed",
    "quizzed": "quizzed",
    "quizzes": "quizzed",
    "quizzing": "quizzed",
    "reach": "reached",
    "reached": "reached",
    "reaches": "reached",
    "reaching": "reached",
    "remain": "remained",
    "remained": "remained",
    "remaining": "remained",
    "remains": "remained",
    "remember": "remembered",
    "remembered": "remembered",
    "remembering": "remembered",
    "remembers": "remembered",
    "rend": "rent",
    "rending": "rent",
    "rends": "rent",
    "rent": "rent",
    "rented": "rented",
    "renting": "rented",
    "rents": "rented",
    "rid": "rid",
    "ridding": "rid",
    "rids": "rid",
    "ring": "rang",
    "ringing": "rang",
    "rings": "rang",
    "rise": "rose",
    "risen": "rose",
    "rises": "rose",
    "rising": "rose",
    "rive": "rived",
    "riven": "rived",
    "rives": "rived",
    "riving": "rived",
    "rung": "rang",
    "sat": "sat",
    "saw": "sawed",
    "sawing": "sawed",
    "sawn": "sawed",
    "saws": "sawed",
    "seek": "sought",
    "seeking": "sought",
    "seeks": "sought",
    "seem": "seemed",
    "seemed": "seemed",
    "seeming": "seemed",
    "seems": "seemed",
    "shake": "shook",
    "shaken": "shook",
    "shakes": "shook",
    "shaking": "shook",
    "shall": "should",
    "shave": "shaved",
    "shaved": "shaved",
    "shaves": "shaved",
    "shaving": "shaved",
    "shed": "shed",
    "shedding": "shed",
    "sheds": "shed",
    "shit": "shat",
    "shits": "shat",
    "shitted": "shat",
    "shitting": "shat",
    "shod": "shod",
    "shoe": "shod",
    "shoeing": "shod",
    "shoes": "shod",
    "show": "showed",
    "showing": "showed",
    "shown": "showed",
    "shows": "showed",
    "shrink": "shrank",
    "shrinking": "shrank",
    "shrinks": "shrank",
    "shrunk": "shrank",
    "sing": "sang",
    "singing": "sang",
    "sings": "sang",
    "sink": "sank",
    "sinking": "sank",
    "sinks": "sank",
    "sit": "sat",
    "sits": "sat",
    "sitting": "sat",
    "ski": "skied",
    "skied": "skied",
    "skiing": "skied",
    "skis": "skied",
    "slain": "slew",
    "slay": "slew",
    "slaying": "slew",
    "slays": "slew",
    "slid": "slid",
    "slide": "slid",
    "slides": "slid",
    "sliding": "slid",
    "slink": "slunk",
    "slinking": "slunk",
    "slinks": "slunk",
    "slit": "slit",
    "slits": "slit",
    "slitting": "slit",
    "slunk": "slunk",
    "smell": "smelled",
    "smelled": "smelled",
    "smelling": "smelled",
    "smells": "smelled",
    "smite": "smote",
    "smites": "smote",
    "smiting": "smote",
    "smitten": "smote",
    "sneak": "sneaked",
    "sneaked": "sneaked",
    "sneaking": "sneaked",
    "sneaks": "sneaked",
    "sought": "sought",
    "sow": "sowed",
    "sowing": "sowed",
    "sown": "sowed",
    "sows": "sowed",
    "spat": "spat",
    "speak": "spoke",
    "speaking": "spoke",
    "speaks": "spoke",
    "sped": "sped",
    "speed": "sped",
    "speeding": "sped",
    "speeds": "sped",
    "spend": "spent",
    "spending": "spent",
    "spends": "spent",
    "spent": "spent",
    "spit": "spat",
    "spits": "spat",
    "spitting": "spat",
    "spoil": "spoilt",
    "spoiled": "spoilt",
    "spoiling": "spoilt",
    "spoils": "spoilt",
    "spoken": "spoke",
    "spring": "sprang",
    "springing": "sprang",
    "springs": "sprang",
    "sprung": "sprang",
    "stand": "stood",
    "standing": "stood",
    "stands": "stood",
    "stave": "staved",
    "staved": "staved",
    "staves": "staved",
    "staving": "staved",
    "stay": "stayed",
    "stayed": "stayed",
    "staying": "stayed",
    "stays": "stayed",
    "steal": "stole",
    "stealing": "stole",
    "steals": "stole",
    "sting": "stung",
    "stinging": "stung",
    "stings": "stung",
    "stink": "stank",
    "stinking": "stank",
    "stinks": "stank",
    "stolen": "stole",
    "stood": "stood",
    "stop": "stopped",
    "stopped": "stopped",
    "stopping": "stopped",
    "stops": "stopped",
    "strew": "strewed",
    "strewing": "strewed",
    "strewn": "strewed",
    "strews": "strewed",
    "stride": "strode",
    "strides": "strode",
    "striding": "strode",
    "strip": "stripped",
    "stripped": "stripped",
    "stripping": "stripped",
    "strips": "stripped",
    "strive": "strove",
    "strived": "strove",
    "strives": "strove",
    "striving": "strove",
    "strode": "strode",
    "stung": "stung",
    "stunk": "stank",
    "sublet": "sublet",
    "sublets": "sublet",
    "subletting": "sublet",
    "sunburn": "sunburned",
    "sunburned": "sunburned",
    "sunburning": "sunburned",
    "sunburns": "sunburned",
    "sung": "sang",
    "sunk": "sank",
    "swear": "swore",
    "swearing": "swore",
    "swears": "swore",
    "sweat": "sweat",
    "sweated": "sweat",
    "sweating": "sweat",
    "sweats": "sweat",
    "sweep": "swept",
    "sweeping": "swept",
    "sweeps": "swept",
    "swell": "swelled",
    "swelling": "swelled",
    "swells": "swelled",
    "swept": "swept",
    "swim": "swam",
    "swimming": "swam",
    "swims": "swam",
    "swing": "swung",
    "swinging": "swung",
    "swings": "swung",
    "swollen": "swelled",
    "sworn": "swore",
    "swum": "swam",
    "swung": "swung",
    "talk": "talked",
    "talked": "talked",
    "talking": "talked",
    "talks": "talked",
    "tear": "tore",
    "tearing": "tore",
    "tears": "tore",
    "thrive": "thrived",
    "thrived": "thrived",
    "thrives": "thrived",
    "thriving": "thrived",
    "thrust": "thrust",
    "thrusting": "thrust",
    "thrusts": "thrust",
    "torn": "tore",
    "tread": "trod",
    "treading": "trod",
    "treads": "trod",
    "trodden": "trod",
    "undergo": "underwent",
    "undergoes": "underwent",
    "undergoing": "underwent",
    "undergone": "underwent",
    "underlain": "underlay",
    "underlie": "underlay",
    "underlies": "underlay",
    "underlying": "underlay",
    "understand": "understood",
    "understanding": "understood",
    "understands": "understood",
    "understood": "understood",
    "undertake": "undertook",
    "undertaken": "undertook",
    "undertakes": "undertook",
    "undertaking": "undertook",
    "upset": "upset",
    "upsets": "upset",
    "upsetting": "upset",
    "vex": "vexed",
    "vexed": "vexed",
    "vexes": "vexed",
    "vexing": "vexed",
    "vie": "vied",
    "vied": "vied",
    "vies": "vied",
    "vying": "vied",
    "wait": "waited",
    "waited": "waited",
    "waiting": "waited",
    "waits": "waited",
    "wake": "woke",
    "wakes": "woke",
    "waking": "woke",
    "walk": "walked",
    "walked": "walked",
    "walking": "walked",
    "walks": "walked",
    "want": "wanted",
    "wanted": "wanted",
    "wanting": "wanted",
    "wants": "wanted",
    "was": "was",
    "watch": "watched",
    "watched": "watched",
    "watches": "watched",
    "watching": "watched",
    "wear": "wore",
    "wearing": "wore",
    "wears": "wore",
    "weep": "wept",
    "weeping": "wept",
    "weeps": "wept",
    "wend": "wended",
    "wended": "wended",
    "wending": "wended",
    "wends": "wended",
    "wept": "wept",
    "were": "were",
    "will": "would",
    "win": "won",
    "winning": "won",
    "wins": "won",
    "wis": "wised",
    "wised": "wised",
    "wises": "wised",
    "wising": "wised",
    "withdraw": "withdrew",
    "withdrawing": "withdrew",
    "withdrawn": "withdrew",
    "withdraws": "withdrew",
    "withheld": "withheld",
    "withhold": "withheld",
    "withholding": "withheld",
    "withholds": "withheld",
    "withstand": "withstood",
    "withstanding": "withstood",
    "withstands": "withstood",
    "withstood": "withstood",
    "woken": "woke",
    "won": "won",
    "worn": "wore",
    "wring": "wrung",
    "wringing": "wrung",
    "wrings": "wrung",
    "wrung": "wrung"
}

pres_part_of = {
    "abide": "abiding",
    "abided": "abiding",
    "abides": "abiding",
    "abiding": "abiding",
    "ache": "aching",
    "ached": "aching",
    "aches": "aching",
    "aching": "aching",
    "am": "being",
    "arc": "arcing",
    "arced": "arcing",
    "arcing": "arcing",
    "arcs": "arcing",
    "are": "being",
    "arise": "arising",
    "arisen": "arising",
    "arises": "arising",
    "arising": "arising",
    "arose": "arising",
    "ask": "asking",
    "asked": "asking",
    "asking": "asking",
    "asks": "asking",
    "ate": "eating",
    "avalanche": "avalanching",
    "avalanched": "avalanching",
    "avalanches": "avalanching",
    "avalanching": "avalanching",
    "awake": "awakening",
    "awakening": "awakening",
    "awakes": "awakening",
    "awoke": "awakening",
    "awoken": "awakening",
    "be": "being",
    "beat": "beating",
    "beaten": "beating",
    "beating": "beating",
    "beats": "beating",
    "became": "becoming",
    "become": "becoming",
    "becomes": "becoming",
    "becoming": "becoming",
    "been": "being",
    "began": "beginning",
    "beget": "begetting",
    "begets": "begetting",
    "begetting": "begetting",
    "begin": "beginning",
    "beginning": "beginning",
    "begins": "beginning",
    "begot": "begetting",
    "begotten": "begetting",
    "begun": "beginning",
    "beheld": "beholding",
    "behold": "beholding",
    "beholding": "beholding",
    "beholds": "beholding",
    "being": "being",
    "bellyache": "bellyaching",
    "bellyached": "bellyaching",
    "bellyaches": "bellyaching",
    "bellyaching": "bellyaching",
    "bend": "bending",
    "bending": "bending",
    "bends": "bending",
    "bent": "bending",
    "bet": "betting",
    "bets": "betting",
    "betting": "betting",
    "bias": "biasing",
    "biased": "biasing",
    "biases": "biasing",
    "biasing": "biasing",
    "bit": "biting",
    "bite": "biting",
    "bites": "biting",
    "biting": "biting",
    "bitten": "biting",
    "bled": "bleeding",
    "bleed": "bleeding",
    "bleeding": "bleeding",
    "bleeds": "bleeding",
    "blew": "blowing",
    "blitz": "blitzing",
    "blitzed": "blitzing",
    "blitzes": "blitzing",
    "blitzing": "blitzing",
    "blow": "blowing",
    "blowing": "blowing",
    "blown": "blowing",
    "blows": "blowing",
    "break": "breaking",
    "breaking": "breaking",
    "breaks": "breaking",
    "bring": "bringing",
    "bringing": "bringing",
    "brings": "bringing",
    "broke": "breaking",
    "broken": "breaking",
    "brought": "bringing",
    "build": "building",
    "building": "building",
    "builds": "building",
    "built": "building",
    "burn": "burning",
    "burning": "burning",
    "burns": "burning",
    "burnt": "burning",
    "burst": "bursting",
    "bursting": "bursting",
    "bursts": "bursting",
    "bus": "busing",
    "bused": "busing",
    "buses": "busing",
    "busing": "busing",
    "bust": "busting",
    "busting": "busting",
    "busts": "busting",
    "cache": "caching",
    "cached": "caching",
    "caches": "caching",
    "caching": "caching",
    "caddie": "caddying",
    "caddied": "caddying",
    "caddies": "caddying",
    "caddying": "caddying",
    "came": "coming",
    "canvas": "canvasing",
    "canvased": "canvasing",
    "canvases": "canvasing",
    "canvasing": "canvasing",
    "catch": "catching",
    "catches": "catching",
    "catching": "catching",
    "caucus": "caucusing",
    "caucused": "caucusing",
    "caucuses": "caucusing",
    "caucusing": "caucusing",
    "caught": "catching",
    "change": "changing",
    "changed": "changing",
    "changes": "changing",
    "changing": "changing",
    "choose": "choosing",
    "chooses": "choosing",
    "choosing": "choosing",
    "chorus": "chorusing",
    "chorused": "chorusing",
    "choruses": "chorusing",
    "chorusing": "chorusing",
    "chose": "choosing",
    "chosen": "choosing",
    "clap": "clapping",
    "clapped": "clapping",
    "clapping": "clapping",
    "claps": "clapping",
    "cling": "clinging",
    "clinging": "clinging",
    "clings": "clinging",
    "clung": "clinging",
    "come": "coming",
    "comes": "coming",
    "coming": "coming",
    "continue": "continuing",
    "continued": "continuing",
    "continues": "continuing",
    "continuing": "continuing",
    "cost": "costing",
    "costing": "costing",
    "costs": "costing",
    "creche": "creching",
    "creched": "creching",
    "creches": "creching",
    "creching": "creching",
    "creep": "creeping",
    "creeping": "creeping",
    "creeps": "creeping",
    "crept": "creeping",
    "dare": "daring",
    "dared": "daring",
    "dares": "daring",
    "daring": "daring",
    "deal": "dealing",
    "dealing": "dealing",
    "deals": "dealing",
    "dealt": "dealing",
    "did": "doing",
    "die": "dying",
    "died": "dying",
    "dies": "dying",
    "dig": "digging",
    "digging": "digging",
    "digs": "digging",
    "dis": "dissing",
    "dissed": "dissing",
    "disses": "dissing",
    "dissing": "dissing",
    "dive": "diving",
    "dived": "diving",
    "dives": "diving",
    "diving": "diving",
    "do": "doing",
    "does": "doing",
    "doing": "doing",
    "done": "doing",
    "douche": "douching",
    "douched": "douching",
    "douches": "douching",
    "douching": "douching",
    "drag": "dragging",
    "dragged": "dragging",
    "dragging": "dragging",
    "drags": "dragging",
    "drank": "drinking",
    "dream": "dreaming",
    "dreamed": "dreaming",
    "dreaming": "dreaming",
    "dreams": "dreaming",
    "drink": "drinking",
    "drinking": "drinking",
    "drinks": "drinking",
    "drive": "driving",
    "driven": "driving",
    "drives": "driving",
    "driving": "driving",
    "drove": "driving",
    "drunk": "drinking",
    "dug": "digging",
    "dwell": "dwelling",
    "dwelling": "dwelling",
    "dwells": "dwelling",
    "dwelt": "dwelling",
    "dying": "dying",
    "eat": "eating",
    "eaten": "eating",
    "eating": "eating",
    "eats": "eating",
    "expect": "expecting",
    "expected": "expecting",
    "expecting": "expecting",
    "expects": "expecting",
    "fall": "falling",
    "fallen": "falling",
    "falling": "falling",
    "falls": "falling",
    "feel": "feeling",
    "feeling": "feeling",
    "feels": "feeling",
    "fell": "falling",
    "felt": "feeling",
    "fight": "fighting",
    "fighting": "fighting",
    "fights": "fighting",
    "find": "finding",
    "finding": "finding",
    "finds": "finding",
    "fled": "fleeing",
    "flee": "fleeing",
    "fleeing": "fleeing",
    "flees": "fleeing",
    "flew": "flying",
    "flies": "flying",
    "fling": "flinging",
    "flinging": "flinging",
    "flings": "flinging",
    "flown": "flying",
    "flung": "flinging",
    "fly": "flying",
    "flying": "flying",
    "focus": "focusing",
    "focused": "focusing",
    "focuses": "focusing",
    "focusing": "focusing",
    "follow": "following",
    "followed": "following",
    "following": "following",
    "follows": "following",
    "forbade": "forbidding",
    "forbid": "forbidding",
    "forbidden": "forbidding",
    "forbidding": "forbidding",
    "forbids": "forbidding",
    "foresaw": "foreseeing",
    "foresee": "foreseeing",
    "foreseeing": "foreseeing",
    "foreseen": "foreseeing",
    "foresees": "foreseeing",
    "foretell": "foretelling",
    "foretelling": "foretelling",
    "foretells": "foretelling",
    "foretold": "foretelling",
    "forgave": "forgiving",
    "forget": "forgetting",
    "forgets": "forgetting",
    "forgetting": "forgetting",
    "forgive": "forgiving",
    "forgiven": "forgiving",
    "forgives": "forgiving",
    "forgiving": "forgiving",
    "forgot": "forgetting",
    "forgotten": "forgetting",
    "forsake": "forsaking",
    "forsaken": "forsaking",
    "forsakes": "forsaking",
    "forsaking": "forsaking",
    "forsook": "forsaking",
    "fought": "fighting",
    "found": "finding",
    "gas": "gassing",
    "gases": "gassing",
    "gassed": "gassing",
    "gassing": "gassing",
    "gave": "giving",
    "get": "getting",
    "gets": "getting",
    "getting": "getting",
    "gild": "gilding",
    "gilded": "gilding",
    "gilding": "gilding",
    "gilds": "gilding",
    "give": "giving",
    "given": "giving",
    "gives": "giving",
    "giving": "giving",
    "go": "going",
    "goes": "going",
    "going": "going",
    "gone": "going",
    "got": "getting",
    "gotten": "getting",
    "grind": "grinding",
    "grinding": "grinding",
    "grinds": "grinding",
    "ground": "grinding",
    "had": "having",
    "happen": "happening",
    "happened": "happening",
    "happening": "happening",
    "happens": "happening",
    "has": "having",
    "have": "having",
    "having": "having",
    "held": "holding",
    "help": "helping",
    "helped": "helping",
    "helping": "helping",
    "helps": "helping",
    "hew": "hewing",
    "hewed": "hewing",
    "hewing": "hewing",
    "hewn": "hewing",
    "hews": "hewing",
    "hie": "hying",
    "hied": "hying",
    "hies": "hying",
    "hit": "hitting",
    "hits": "hitting",
    "hitting": "hitting",
    "hocus": "hocusing",
    "hocused": "hocusing",
    "hocuses": "hocusing",
    "hocusing": "hocusing",
    "hold": "holding",
    "holding": "holding",
    "holds": "holding",
    "hurt": "hurting",
    "hurting": "hurting",
    "hurts": "hurting",
    "hying": "hying",
    "inlaid": "inlaying",
    "inlay": "inlaying",
    "inlaying": "inlaying",
    "inlays": "inlaying",
    "insist": "insisting",
    "insisted": "insisting",
    "insisting": "insisting",
    "insists": "insisting",
    "interlaid": "interlaying",
    "interlay": "interlaying",
    "interlaying": "interlaying",
    "interlays": "interlaying",
    "iris": "irising",
    "irised": "irising",
    "irises": "irising",
    "irising": "irising",
    "is": "being",
    "keep": "keeping",
    "keeping": "keeping",
    "keeps": "keeping",
    "kept": "keeping",
    "kill": "killing",
    "killed": "killing",
    "killing": "killing",
    "kills": "killing",
    "kneel": "kneeling",
    "kneeling": "kneeling",
    "kneels": "kneeling",
    "knelt": "kneeling",
    "knew": "knowing",
    "knit": "knitting",
    "knits": "knitting",
    "knitted": "knitting",
    "knitting": "knitting",
    "know": "knowing",
    "knowing": "knowing",
    "known": "knowing",
    "knows": "knowing",
    "laid": "laying",
    "lain": "lying",
    "lay": "laying",
    "laying": "laying",
    "lays": "laying",
    "lead": "leading",
    "leading": "leading",
    "leads": "leading",
    "lean": "leaning",
    "leaned": "leaning",
    "leaning": "leaning",
    "leans": "leaning",
    "leap": "leaping",
    "leaping": "leaping",
    "leaps": "leaping",
    "leapt": "leaping",
    "learn": "learning",
    "learned": "learning",
    "learning": "learning",
    "learns": "learning",
    "leave": "leaving",
    "leaves": "leaving",
    "leaving": "leaving",
    "led": "leading",
    "left": "leaving",
    "let": "letting",
    "lets": "letting",
    "letting": "letting",
    "lie": "lying",
    "lies": "lying",
    "like": "liking",
    "liked": "liking",
    "likes": "liking",
    "liking": "liking",
    "live": "living",
    "lived": "living",
    "lives": "living",
    "living": "living",
    "look": "looking",
    "looked": "looking",
    "looking": "looking",
    "looks": "looking",
    "lose": "losing",
    "loses": "losing",
    "losing": "losing",
    "lost": "losing",
    "love": "loving",
    "loved": "loving",
    "loves": "loving",
    "loving": "loving",
    "lying": "lying",
    "mean": "meaning",
    "meaning": "meaning",
    "means": "meaning",
    "meant": "meaning",
    "meet": "meeting",
    "meeting": "meeting",
    "meets": "meeting",
    "menu": "menuing",
    "menued": "menuing",
    "menuing": "menuing",
    "menus": "menuing",
    "met": "meeting",
    "mislead": "misleading",
    "misleading": "misleading",
    "misleads": "misleading",
    "misled": "misleading",
    "mistake": "mistaking",
    "mistaken": "mistaking",
    "mistakes": "mistaking",
    "mistaking": "mistaking",
    "mistook": "mistaking",
    "misunderstand": "misunderstanding",
    "misunderstanding": "misunderstanding",
    "misunderstands": "misunderstanding",
    "misunderstood": "misunderstanding",
    "move": "moving",
    "moved": "moving",
    "moves": "moving",
    "moving": "moving",
    "need": "needing",
    "needed": "needing",
    "needing": "needing",
    "needs": "needing",
    "niche": "nicheing",
    "niched": "nicheing",
    "nicheing": "nicheing",
    "niches": "nicheing",
    "outvie": "outvying",
    "outvied": "outvying",
    "outvies": "outvying",
    "outvying": "outvying",
    "overdraw": "overdrawing",
    "overdrawing": "overdrawing",
    "overdrawn": "overdrawing",
    "overdraws": "overdrawing",
    "overdrew": "overdrawing",
    "overhear": "overhearing",
    "overheard": "overhearing",
    "overhearing": "overhearing",
    "overhears": "overhearing",
    "overtake": "overtaking",
    "overtaken": "overtaking",
    "overtakes": "overtaking",
    "overtaking": "overtaking",
    "overtook": "overtaking",
    "preset": "presetting",
    "presets": "presetting",
    "presetting": "presetting",
    "prove": "proving",
    "proved": "proving",
    "proven": "proving",
    "proves": "proving",
    "provide": "providing",
    "provided": "providing",
    "provides": "providing",
    "providing": "providing",
    "proving": "proving",
    "psyche": "psyching",
    "psyched": "psyching",
    "psyches": "psyching",
    "psyching": "psyching",
    "put": "putting",
    "puts": "putting",
    "putting": "putting",
    "quit": "quitting",
    "quits": "quitting",
    "quitting": "quitting",
    "quiz": "quizzing",
    "quizzed": "quizzing",
    "quizzes": "quizzing",
    "quizzing": "quizzing",
    "rang": "ringing",
    "reach": "reaching",
    "reached": "reaching",
    "reaches": "reaching",
    "reaching": "reaching",
    "remain": "remaining",
    "remained": "remaining",
    "remaining": "remaining",
    "remains": "remaining",
    "remember": "remembering",
    "remembered": "remembering",
    "remembering": "remembering",
    "remembers": "remembering",
    "rend": "rending",
    "rending": "rending",
    "rends": "rending",
    "rent": "rending",
    "rented": "renting",
    "renting": "renting",
    "rents": "renting",
    "rid": "ridding",
    "ridding": "ridding",
    "rids": "ridding",
    "ring": "ringing",
    "ringing": "ringing",
    "rings": "ringing",
    "rise": "rising",
    "risen": "rising",
    "rises": "rising",
    "rising": "rising",
    "rive": "riving",
    "rived": "riving",
    "riven": "riving",
    "rives": "riving",
    "riving": "riving",
    "rose": "rising",
    "rung": "ringing",
    "sang": "singing",
    "sank": "sinking",
    "sat": "sitting",
    "saw": "sawing",
    "sawed": "sawing",
    "sawing": "sawing",
    "sawn": "sawing",
    "saws": "sawing",
    "seek": "seeking",
    "seeking": "seeking",
    "seeks": "seeking",
    "seem": "seeming",
    "seemed": "seeming",
    "seeming": "seeming",
    "seems": "seeming",
    "shake": "shaking",
    "shaken": "shaking",
    "shakes": "shaking",
    "shaking": "shaking",
    "shat": "shitting",
    "shave": "shaving",
    "shaved": "shaving",
    "shaves": "shaving",
    "shaving": "shaving",
    "shed": "shedding",
    "shedding": "shedding",
    "sheds": "shedding",
    "shit": "shitting",
    "shits": "shitting",
    "shitted": "shitting",
    "shitting": "shitting",
    "shod": "shoeing",
    "shoe": "shoeing",
    "shoeing": "shoeing",
    "shoes": "shoeing",
    "shook": "shaking",
    "show": "showing",
    "showed": "showing",
    "showing": "showing",
    "shown": "showing",
    "shows": "showing",
    "shrank": "shrinking",
    "shrink": "shrinking",
    "shrinking": "shrinking",
    "shrinks": "shrinking",
    "shrunk": "shrinking",
    "sing": "singing",
    "singing": "singing",
    "sings": "singing",
    "sink": "sinking",
    "sinking": "sinking",
    "sinks": "sinking",
    "sit": "sitting",
    "sits": "sitting",
    "sitting": "sitting",
    "ski": "skiing",
    "skied": "skiing",
    "skiing": "skiing",
    "skis": "skiing",
    "slain": "slaying",
    "slay": "slaying",
    "slaying": "slaying",
    "slays": "slaying",
    "slew": "slaying",
    "slid": "sliding",
    "slide": "sliding",
    "slides": "sliding",
    "sliding": "sliding",
    "slink": "slinking",
    "slinking": "slinking",
    "slinks": "slinking",
    "slit": "slitting",
    "slits": "slitting",
    "slitting": "slitting",
    "slunk": "slinking",
    "smell": "smelling",
    "smelled": "smelling",
    "smelling": "smelling",
    "smells": "smelling",
    "smite": "smiting",
    "smites": "smiting",
    "smiting": "smiting",
    "smitten": "smiting",
    "smote": "smiting",
    "sneak": "sneaking",
    "sneaked": "sneaking",
    "sneaking": "sneaking",
    "sneaks": "sneaking",
    "sought": "seeking",
    "sow": "sowing",
    "sowed": "sowing",
    "sowing": "sowing",
    "sown": "sowing",
    "sows": "sowing",
    "spat": "spitting",
    "speak": "speaking",
    "speaking": "speaking",
    "speaks": "speaking",
    "sped": "speeding",
    "speed": "speeding",
    "speeding": "speeding",
    "speeds": "speeding",
    "spend": "spending",
    "spending": "spending",
    "spends": "spending",
    "spent": "spending",
    "spit": "spitting",
    "spits": "spitting",
    "spitting": "spitting",
    "spoil": "spoiling",
    "spoiled": "spoiling",
    "spoiling": "spoiling",
    "spoils": "spoiling",
    "spoilt": "spoiling",
    "spoke": "speaking",
    "spoken": "speaking",
    "sprang": "springing",
    "spring": "springing",
    "springing": "springing",
    "springs": "springing",
    "sprung": "springing",
    "stand": "standing",
    "standing": "standing",
    "stands": "standing",
    "stank": "stinking",
    "stave": "staving",
    "staved": "staving",
    "staves": "staving",
    "staving": "staving",
    "stay": "staying",
    "stayed": "staying",
    "staying": "staying",
    "stays": "staying",
    "steal": "stealing",
    "stealing": "stealing",
    "steals": "stealing",
    "sting": "stinging",
    "stinging": "stinging",
    "stings": "stinging",
    "stink": "stinking",
    "stinking": "stinking",
    "stinks": "stinking",
    "stole": "stealing",
    "stolen": "stealing",
    "stood": "standing",
    "stop": "stopping",
    "stopped": "stopping",
    "stopping": "stopping",
    "stops": "stopping",
    "strew": "strewing",
    "strewed": "strewing",
    "strewing": "strewing",
    "strewn": "strewing",
    "strews": "strewing",
    "stride": "striding",
    "strides": "striding",
    "striding": "striding",
    "strip": "stripping",
    "stripped": "stripping",
    "stripping": "stripping",
    "strips": "stripping",
    "strive": "striving",
    "strived": "striving",
    "strives": "striving",
    "striving": "striving",
    "strode": "striding",
    "strove": "striving",
    "stung": "stinging",
    "stunk": "stinking",
    "sublet": "subletting",
    "sublets": "subletting",
    "subletting": "subletting",
    "sunburn": "sunburning",
    "sunburned": "sunburning",
    "sunburning": "sunburning",
    "sunburns": "sunburning",
    "sung": "singing",
    "sunk": "sinking",
    "swam": "swimming",
    "swear": "swearing",
    "swearing": "swearing",
    "swears": "swearing",
    "sweat": "sweating",
    "sweated": "sweating",
    "sweating": "sweating",
    "sweats": "sweating",
    "sweep": "sweeping",
    "sweeping": "sweeping",
    "sweeps": "sweeping",
    "swell": "swelling",
    "swelled": "swelling",
    "swelling": "swelling",
    "swells": "swelling",
    "swept": "sweeping",
    "swim": "swimming",
    "swimming": "swimming",
    "swims": "swimming",
    "swing": "swinging",
    "swinging": "swinging",
    "swings": "swinging",
    "swollen": "swelling",
    "swore": "swearing",
    "sworn": "swearing",
    "swum": "swimming",
    "swung": "swinging",
    "talk": "talking",
    "talked": "talking",
    "talking": "talking",
    "talks": "talking",
    "tear": "tearing",
    "tearing": "tearing",
    "tears": "tearing",
    "thrive": "thriving",
    "thrived": "thriving",
    "thrives": "thriving",
    "thriving": "thriving",
    "thrust": "thrusting",
    "thrusting": "thrusting",
    "thrusts": "thrusting",
    "tore": "tearing",
    "torn": "tearing",
    "tread": "treading",
    "treading": "treading",
    "treads": "treading",
    "trod": "treading",
    "trodden": "treading",
    "undergo": "undergoing",
    "undergoes": "undergoing",
    "undergoing": "undergoing",
    "undergone": "undergoing",
    "underlain": "underlying",
    "underlay": "underlying",
    "underlie": "underlying",
    "underlies": "underlying",
    "underlying": "underlying",
    "understand": "understanding",
    "understanding": "understanding",
    "understands": "understanding",
    "understood": "understanding",
    "undertake": "undertaking",
    "undertaken": "undertaking",
    "undertakes": "undertaking",
    "undertaking": "undertaking",
    "undertook": "undertaking",
    "underwent": "undergoing",
    "upset": "upsetting",
    "upsets": "upsetting",
    "upsetting": "upsetting",
    "vex": "vexing",
    "vexed": "vexing",
    "vexes": "vexing",
    "vexing": "vexing",
    "vie": "vying",
    "vied": "vying",
    "vies": "vying",
    "vying": "vying",
    "wait": "waiting",
    "waited": "waiting",
    "waiting": "waiting",
    "waits": "waiting",
    "wake": "waking",
    "wakes": "waking",
    "waking": "waking",
    "walk": "walking",
    "walked": "walking",
    "walking": "walking",
    "walks": "walking",
    "want": "wanting",
    "wanted": "wanting",
    "wanting": "wanting",
    "wants": "wanting",
    "was": "being",
    "watch": "watching",
    "watched": "watching",
    "watches": "watching",
    "watching": "watching",
    "wear": "wearing",
    "wearing": "wearing",
    "wears": "wearing",
    "weep": "weeping",
    "weeping": "weeping",
    "weeps": "weeping",
    "wend": "wending",
    "wended": "wending",
    "wending": "wending",
    "wends": "wending",
    "went": "going",
    "wept": "weeping",
    "were": "being",
    "win": "winning",
    "winning": "winning",
    "wins": "winning",
    "wis": "wising",
    "wised": "wising",
    "wises": "wising",
    "wising": "wising",
    "withdraw": "withdrawing",
    "withdrawing": "withdrawing",
    "withdrawn": "withdrawing",
    "withdraws": "withdrawing",
    "withdrew": "withdrawing",
    "withheld": "withholding",
    "withhold": "withholding",
    "withholding": "withholding",
    "withholds": "withholding",
    "withstand": "withstanding",
    "withstanding": "withstanding",
    "withstands": "withstanding",
    "withstood": "withstanding",
    "woke": "waking",
    "woken": "waking",
    "won": "winning",
    "wore": "wearing",
    "worn": "wearing",
    "wring": "wringing",
    "wringing": "wringing",
    "wrings": "wringing",
    "wrung": "wringing"
}

past_part_of = {
    "abide": "abided",
    "abided": "abided",
    "abides": "abided",
    "abiding": "abided",
    "ache": "ached",
    "ached": "ached",
    "aches": "ached",
    "aching": "ached",
    "am": "been",
    "arc": "arced",
    "arced": "arced",
    "arcing": "arced",
    "arcs": "arced",
    "are": "been",
    "arise": "arisen",
    "arisen": "arisen",
    "arises": "arisen",
    "arising": "arisen",
    "arose": "arisen",
    "ask": "asked",
    "asked": "asked",
    "asking": "asked",
    "asks": "asked",
    "ate": "eaten",
    "avalanche": "avalanched",
    "avalanched": "avalanched",
    "avalanches": "avalanched",
    "avalanching": "avalanched",
    "awake": "awoken",
    "awakening": "awoken",
    "awakes": "awoken",
    "awoke": "awoken",
    "awoken": "awoken",
    "be": "been",
    "beat": "beaten",
    "beaten": "beaten",
    "beating": "beaten",
    "beats": "beaten",
    "became": "become",
    "become": "become",
    "becomes": "become",
    "becoming": "become",
    "been": "been",
    "began": "begun",
    "beget": "begotten",
    "begets": "begotten",
    "begetting": "begotten",
    "begin": "begun",
    "beginning": "begun",
    "begins": "begun",
    "begot": "begotten",
    "begotten": "begotten",
    "begun": "begun",
    "beheld": "beheld",
    "behold": "beheld",
    "beholding": "beheld",
    "beholds": "beheld",
    "being": "been",
    "bellyache": "bellyached",
    "bellyached": "bellyached",
    "bellyaches": "bellyached",
    "bellyaching": "bellyached",
    "bend": "bent",
    "bending": "bent",
    "bends": "bent",
    "bent": "bent",
    "bet": "bet",
    "bets": "bet",
    "betting": "bet",
    "bias": "biased",
    "biased": "biased",
    "biases": "biased",
    "biasing": "biased",
    "bit": "bitten",
    "bite": "bitten",
    "bites": "bitten",
    "biting": "bitten",
    "bitten": "bitten",
    "bled": "bled",
    "bleed": "bled",
    "bleeding": "bled",
    "bleeds": "bled",
    "blew": "blown",
    "blitz": "blitzed",
    "blitzed": "blitzed",
    "blitzes": "blitzed",
    "blitzing": "blitzed",
    "blow": "blown",
    "blowing": "blown",
    "blown": "blown",
    "blows": "blown",
    "break": "broken",
    "breaking": "broken",
    "breaks": "broken",
    "bring": "brought",
    "bringing": "brought",
    "brings": "brought",
    "broke": "broken",
    "broken": "broken",
    "brought": "brought",
    "build": "built",
    "building": "built",
    "builds": "built",
    "built": "built",
    "burn": "burnt",
    "burning": "burnt",
    "burns": "burnt",
    "burnt": "burnt",
    "burst": "burst",
    "bursting": "burst",
    "bursts": "burst",
    "bus": "bused",
    "bused": "bused",
    "buses": "bused",
    "busing": "bused",
    "bust": "bust",
    "busting": "bust",
    "busts": "bust",
    "cache": "cached",
    "cached": "cached",
    "caches": "cached",
    "caching": "cached",
    "caddie": "caddied",
    "caddied": "caddied",
    "caddies": "caddied",
    "caddying": "caddied",
    "came": "come",
    "canvas": "canvased",
    "canvased": "canvased",
    "canvases": "canvased",
    "canvasing": "canvased",
    "catch": "caught",
    "catches": "caught",
    "catching": "caught",
    "caucus": "caucused",
    "caucused": "caucused",
    "caucuses": "caucused",
    "caucusing": "caucused",
    "caught": "caught",
    "change": "changed",
    "changed": "changed",
    "changes": "changed",
    "changing": "changed",
    "choose": "chosen",
    "chooses": "chosen",
    "choosing": "chosen",
    "chorus": "chorused",
    "chorused": "chorused",
    "choruses": "chorused",
    "chorusing": "chorused",
    "chose": "chosen",
    "chosen": "chosen",
    "clap": "clapped",
    "clapped": "clapped",
    "clapping": "clapped",
    "claps": "clapped",
    "cling": "clung",
    "clinging": "clung",
    "clings": "clung",
    "clung": "clung",
    "come": "come",
    "comes": "come",
    "coming": "come",
    "continue": "continued",
    "continued": "continued",
    "continues": "continued",
    "continuing": "continued",
    "cost": "cost",
    "costing": "cost",
    "costs": "cost",
    "creche": "creched",
    "creched": "creched",
    "creches": "creched",
    "creching": "creched",
    "creep": "crept",
    "creeping": "crept",
    "creeps": "crept",
    "crept": "crept",
    "dare": "dared",
    "dared": "dared",
    "dares": "dared",
    "daring": "dared",
    "deal": "dealt",
    "dealing": "dealt",
    "deals": "dealt",
    "dealt": "dealt",
    "did": "done",
    "die": "died",
    "died": "died",
    "dies": "died",
    "dig": "dug",
    "digging": "dug",
    "digs": "dug",
    "dis": "dissed",
    "dissed": "dissed",
    "disses": "dissed",
    "dissing": "dissed",
    "dive": "dived",
    "dived": "dived",
    "dives": "dived",
    "diving": "dived",
    "do": "done",
    "does": "done",
    "doing": "done",
    "done": "done",
    "douche": "douched",
    "douched": "douched",
    "douches": "douched",
    "douching": "douched",
    "drag": "dragged",
    "dragged": "dragged",
    "dragging": "dragged",
    "drags": "dragged",
    "drank": "drunk",
    "dream": "dreamed",
    "dreamed": "dreamed",
    "dreaming": "dreamed",
    "dreams": "dreamed",
    "drink": "drunk",
    "drinking": "drunk",
    "drinks": "drunk",
    "drive": "driven",
    "driven": "driven",
    "drives": "driven",
    "driving": "driven",
    "drove": "driven",
    "drunk": "drunk",
    "dug": "dug",
    "dwell": "dwelt",
    "dwelling": "dwelt",
    "dwells": "dwelt",
    "dwelt": "dwelt",
    "dying": "died",
    "eat": "eaten",
    "eaten": "eaten",
    "eating": "eaten",
    "eats": "eaten",
    "expect": "expected",
    "expected": "expected",
    "expecting": "expected",
    "expects": "expected",
    "fall": "fallen",
    "fallen": "fallen",
    "falling": "fallen",
    "falls": "fallen",
    "feel": "felt",
    "feeling": "felt",
    "feels": "felt",
    "fell": "fallen",
    "felt": "felt",
    "fight": "fought",
    "fighting": "fought",
    "fights": "fought",
    "find": "found",
    "finding": "found",
    "finds": "found",
    "fled": "fled",
    "flee": "fled",
    "fleeing": "fled",
    "flees": "fled",
    "flew": "flown",
    "flies": "flown",
    "fling": "flung",
    "flinging": "flung",
    "flings": "flung",
    "flown": "flown",
    "flung": "flung",
    "fly": "flown",
    "flying": "flown",
    "focus": "focused",
    "focused": "focused",
    "focuses": "focused",
    "focusing": "focused",
    "follow": "followed",
    "followed": "followed",
    "following": "followed",
    "follows": "followed",
    "forbade": "forbidden",
    "forbid": "forbidden",
    "forbidden": "forbidden",
    "forbidding": "forbidden",
    "forbids": "forbidden",
    "foresaw": "foreseen",
    "foresee": "foreseen",
    "foreseeing": "foreseen",
    "foreseen": "foreseen",
    "foresees": "foreseen",
    "foretell": "foretold",
    "foretelling": "foretold",
    "foretells": "foretold",
    "foretold": "foretold",
    "forgave": "forgiven",
    "forget": "forgotten",
    "forgets": "forgotten",
    "forgetting": "forgotten",
    "forgive": "forgiven",
    "forgiven": "forgiven",
    "forgives": "forgiven",
    "forgiving": "forgiven",
    "forgot": "forgotten",
    "forgotten": "forgotten",
    "forsake": "forsaken",
    "forsaken": "forsaken",
    "forsakes": "forsaken",
    "forsaking": "forsaken",
    "forsook": "forsaken",
    "fought": "fought",
    "found": "found",
    "gas": "gassed",
    "gases": "gassed",
    "gassed": "gassed",
    "gassing": "gassed",
    "gave": "given",
    "get": "gotten",
    "gets": "gotten",
    "getting": "gotten",
    "gild": "gilded",
    "gilded": "gilded",
    "gilding": "gilded",
    "gilds": "gilded",
    "give": "given",
    "given": "given",
    "gives": "given",
    "giving": "given",
    "go": "gone",
    "goes": "gone",
    "going": "gone",
    "gone": "gone",
    "got": "gotten",
    "gotten": "gotten",
    "grind": "ground",
    "grinding": "ground",
    "grinds": "ground",
    "ground": "ground",
    "had": "had",
    "happen": "happened",
    "happened": "happened",
    "happening": "happened",
    "happens": "happened",
    "has": "had",
    "have": "had",
    "having": "had",
    "held": "held",
    "help": "helped",
    "helped": "helped",
    "helping": "helped",
    "helps": "helped",
    "hew": "hewn",
    "hewed": "hewn",
    "hewing": "hewn",
    "hewn": "hewn",
    "hews": "hewn",
    "hie": "hied",
    "hied": "hied",
    "hies": "hied",
    "hit": "hit",
    "hits": "hit",
    "hitting": "hit",
    "hocus": "hocused",
    "hocused": "hocused",
    "hocuses": "hocused",
    "hocusing": "hocused",
    "hold": "held",
    "holding": "held",
    "holds": "held",
    "hurt": "hurt",
    "hurting": "hurt",
    "hurts": "hurt",
    "hying": "hied",
    "inlaid": "inlaid",
    "inlay": "inlaid",
    "inlaying": "inlaid",
    "inlays": "inlaid",
    "insist": "insisted",
    "insisted": "insisted",
    "insisting": "insisted",
    "insists": "insisted",
    "interlaid": "interlaid",
    "interlay": "interlaid",
    "interlaying": "interlaid",
    "interlays": "interlaid",
    "iris": "irised",
    "irised": "irised",
    "irises": "irised",
    "irising": "irised",
    "is": "been",
    "keep": "kept",
    "keeping": "kept",
    "keeps": "kept",
    "kept": "kept",
    "kill": "killed",
    "killed": "killed",
    "killing": "killed",
    "kills": "killed",
    "kneel": "knelt",
    "kneeling": "knelt",
    "kneels": "knelt",
    "knelt": "knelt",
    "knew": "known",
    "knit": "knitted",
    "knits": "knitted",
    "knitted": "knitted",
    "knitting": "knitted",
    "know": "known",
    "knowing": "known",
    "known": "known",
    "knows": "known",
    "laid": "laid",
    "lain": "lain",
    "lay": "laid",
    "laying": "laid",
    "lays": "laid",
    "lead": "led",
    "leading": "led",
    "leads": "led",
    "lean": "leaned",
    "leaned": "leaned",
    "leaning": "leaned",
    "leans": "leaned",
    "leap": "leapt",
    "leaping": "leapt",
    "leaps": "leapt",
    "leapt": "leapt",
    "learn": "learned",
    "learned": "learned",
    "learning": "learned",
    "learns": "learned",
    "leave": "left",
    "leaves": "left",
    "leaving": "left",
    "led": "led",
    "left": "left",
    "let": "let",
    "lets": "let",
    "letting": "let",
    "lie": "lain",
    "lies": "lain",
    "like": "liked",
    "liked": "liked",
    "likes": "liked",
    "liking": "liked",
    "live": "lived",
    "lived": "lived",
    "lives": "lived",
    "living": "lived",
    "look": "looked",
    "looked": "looked",
    "looking": "looked",
    "looks": "looked",
    "lose": "lost",
    "loses": "lost",
    "losing": "lost",
    "lost": "lost",
    "love": "loved",
    "loved": "loved",
    "loves": "loved",
    "loving": "loved",
    "lying": "lain",
    "mean": "meant",
    "meaning": "meant",
    "means": "meant",
    "meant": "meant",
    "meet": "met",
    "meeting": "met",
    "meets": "met",
    "menu": "menued",
    "menued": "menued",
    "menuing": "menued",
    "menus": "menued",
    "met": "met",
    "mislead": "misled",
    "misleading": "misled",
    "misleads": "misled",
    "misled": "misled",
    "mistake": "mistaken",
    "mistaken": "mistaken",
    "mistakes": "mistaken",
    "mistaking": "mistaken",
    "mistook": "mistaken",
    "misunderstand": "misunderstood",
    "misunderstanding": "misunderstood",
    "misunderstands": "misunderstood",
    "misunderstood": "misunderstood",
    "move": "moved",
    "moved": "moved",
    "moves": "moved",
    "moving": "moved",
    "need": "needed",
    "needed": "needed",
    "needing": "needed",
    "needs": "needed",
    "niche": "niched",
    "niched": "niched",
    "nicheing": "niched",
    "niches": "niched",
    "outvie": "outvied",
    "outvied": "outvied",
    "outvies": "outvied",
    "outvying": "outvied",
    "overdraw": "overdrawn",
    "overdrawing": "overdrawn",
    "overdrawn": "overdrawn",
    "overdraws": "overdrawn",
    "overdrew": "overdrawn",
    "overhear": "overheard",
    "overheard": "overheard",
    "overhearing": "overheard",
    "overhears": "overheard",
    "overtake": "overtaken",
    "overtaken": "overtaken",
    "overtakes": "overtaken",
    "overtaking": "overtaken",
    "overtook": "overtaken",
    "preset": "preset",
    "presets": "preset",
    "presetting": "preset",
    "prove": "proven",
    "proved": "proven",
    "proven": "proven",
    "proves": "proven",
    "provide": "provided",
    "provided": "provided",
    "provides": "provided",
    "providing": "provided",
    "proving": "proven",
    "psyche": "psyched",
    "psyched": "psyched",
    "psyches": "psyched",
    "psyching": "psyched",
    "put": "put",
    "puts": "put",
    "putting": "put",
    "quit": "quit",
    "quits": "quit",
    "quitting": "quit",
    "quiz": "quizzed",
    "quizzed": "quizzed",
    "quizzes": "quizzed",
    "quizzing": "quizzed",
    "rang": "rung",
    "reach": "reached",
    "reached": "reached",
    "reaches": "reached",
    "reaching": "reached",
    "remain": "remained",
    "remained": "remained",
    "remaining": "remained",
    "remains": "remained",
    "remember": "remembered",
    "remembered": "remembered",
    "remembering": "remembered",
    "remembers": "remembered",
    "rend": "rent",
    "rending": "rent",
    "rends": "rent",
    "rent": "rent",
    "rented": "rented",
    "renting": "rented",
    "rents": "rented",
    "rid": "rid",
    "ridding": "rid",
    "rids": "rid",
    "ring": "rung",
    "ringing": "rung",
    "rings": "rung",
    "rise": "risen",
    "risen": "risen",
    "rises": "risen",
    "rising": "risen",
    "rive": "riven",
    "rived": "riven",
    "riven": "riven",
    "rives": "riven",
    "riving": "riven",
    "rose": "risen",
    "rung": "rung",
    "sang": "sung",
    "sank": "sunk",
    "sat": "sat",
    "saw": "sawn",
    "sawed": "sawn",
    "sawing": "sawn",
    "sawn": "sawn",
    "saws": "sawn",
    "seek": "sought",
    "seeking": "sought",
    "seeks": "sought",
    "seem": "seemed",
    "seemed": "seemed",
    "seeming": "seemed",
    "seems": "seemed",
    "shake": "shaken",
    "shaken": "shaken",
    "shakes": "shaken",
    "shaking": "shaken",
    "shat": "shitted",
    "shave": "shaved",
    "shaved": "shaved",
    "shaves": "shaved",
    "shaving": "shaved",
    "shed": "shed",
    "shedding": "shed",
    "sheds": "shed",
    "shit": "shitted",
    "shits": "shitted",
    "shitted": "shitted",
    "shitting": "shitted",
    "shod": "shod",
    "shoe": "shod",
    "shoeing": "shod",
    "shoes": "shod",
    "shook": "shaken",
    "show": "shown",
    "showed": "shown",
    "showing": "shown",
    "shown": "shown",
    "shows": "shown",
    "shrank": "shrunk",
    "shrink": "shrunk",
    "shrinking": "shrunk",
    "shrinks": "shrunk",
    "shrunk": "shrunk",
    "sing": "sung",
    "singing": "sung",
    "sings": "sung",
    "sink": "sunk",
    "sinking": "sunk",
    "sinks": "sunk",
    "sit": "sat",
    "sits": "sat",
    "sitting": "sat",
    "ski": "skied",
    "skied": "skied",
    "skiing": "skied",
    "skis": "skied",
    "slain": "slain",
    "slay": "slain",
    "slaying": "slain",
    "slays": "slain",
    "slew": "slain",
    "slid": "slid",
    "slide": "slid",
    "slides": "slid",
    "sliding": "slid",
    "slink": "slunk",
    "slinking": "slunk",
    "slinks": "slunk",
    "slit": "slit",
    "slits": "slit",
    "slitting": "slit",
    "slunk": "slunk",
    "smell": "smelled",
    "smelled": "smelled",
    "smelling": "smelled",
    "smells": "smelled",
    "smite": "smitten",
    "smites": "smitten",
    "smiting": "smitten",
    "smitten": "smitten",
    "smote": "smitten",
    "sneak": "sneaked",
    "sneaked": "sneaked",
    "sneaking": "sneaked",
    "sneaks": "sneaked",
    "sought": "sought",
    "sow": "sown",
    "sowed": "sown",
    "sowing": "sown",
    "sown": "sown",
    "sows": "sown",
    "spat": "spat",
    "speak": "spoken",
    "speaking": "spoken",
    "speaks": "spoken",
    "sped": "sped",
    "speed": "sped",
    "speeding": "sped",
    "speeds": "sped",
    "spend": "spent",
    "spending": "spent",
    "spends": "spent",
    "spent": "spent",
    "spit": "spat",
    "spits": "spat",
    "spitting": "spat",
    "spoil": "spoiled",
    "spoiled": "spoiled",
    "spoiling": "spoiled",
    "spoils": "spoiled",
    "spoilt": "spoiled",
    "spoke": "spoken",
    "spoken": "spoken",
    "sprang": "sprung",
    "spring": "sprung",
    "springing": "sprung",
    "springs": "sprung",
    "sprung": "sprung",
    "stand": "stood",
    "standing": "stood",
    "stands": "stood",
    "stank": "stunk",
    "stave": "staved",
    "staved": "staved",
    "staves": "staved",
    "staving": "staved",
    "stay": "stayed",
    "stayed": "stayed",
    "staying": "stayed",
    "stays": "stayed",
    "steal": "stolen",
    "stealing": "stolen",
    "steals": "stolen",
    "sting": "stung",
    "stinging": "stung",
    "stings": "stung",
    "stink": "stunk",
    "stinking": "stunk",
    "stinks": "stunk",
    "stole": "stolen",
    "stolen": "stolen",
    "stood": "stood",
    "stop": "stopped",
    "stopped": "stopped",
    "stopping": "stopped",
    "stops": "stopped",
    "strew": "strewn",
    "strewed": "strewn",
    "strewing": "strewn",
    "strewn": "strewn",
    "strews": "strewn",
    "stride": "strode",
    "strides": "strode",
    "striding": "strode",
    "strip": "stripped",
    "stripped": "stripped",
    "stripping": "stripped",
    "strips": "stripped",
    "strive": "strived",
    "strived": "strived",
    "strives": "strived",
    "striving": "strived",
    "strode": "strode",
    "strove": "strived",
    "stung": "stung",
    "stunk": "stunk",
    "sublet": "sublet",
    "sublets": "sublet",
    "subletting": "sublet",
    "sunburn": "sunburned",
    "sunburned": "sunburned",
    "sunburning": "sunburned",
    "sunburns": "sunburned",
    "sung": "sung",
    "sunk": "sunk",
    "swam": "swum",
    "swear": "sworn",
    "swearing": "sworn",
    "swears": "sworn",
    "sweat": "sweated",
    "sweated": "sweated",
    "sweating": "sweated",
    "sweats": "sweated",
    "sweep": "swept",
    "sweeping": "swept",
    "sweeps": "swept",
    "swell": "swollen",
    "swelled": "swollen",
    "swelling": "swollen",
    "swells": "swollen",
    "swept": "swept",
    "swim": "swum",
    "swimming": "swum",
    "swims": "swum",
    "swing": "swung",
    "swinging": "swung",
    "swings": "swung",
    "swollen": "swollen",
    "swore": "sworn",
    "sworn": "sworn",
    "swum": "swum",
    "swung": "swung",
    "talk": "talked",
    "talked": "talked",
    "talking": "talked",
    "talks": "talked",
    "tear": "torn",
    "tearing": "torn",
    "tears": "torn",
    "thrive": "thrived",
    "thrived": "thrived",
    "thrives": "thrived",
    "thriving": "thrived",
    "thrust": "thrust",
    "thrusting": "thrust",
    "thrusts": "thrust",
    "tore": "torn",
    "torn": "torn",
    "tread": "trodden",
    "treading": "trodden",
    "treads": "trodden",
    "trod": "trodden",
    "trodden": "trodden",
    "undergo": "undergone",
    "undergoes": "undergone",
    "undergoing": "undergone",
    "undergone": "undergone",
    "underlain": "underlain",
    "underlay": "underlain",
    "underlie": "underlain",
    "underlies": "underlain",
    "underlying": "underlain",
    "understand": "understood",
    "understanding": "understood",
    "understands": "understood",
    "understood": "understood",
    "undertake": "undertaken",
    "undertaken": "undertaken",
    "undertakes": "undertaken",
    "undertaking": "undertaken",
    "undertook": "undertaken",
    "underwent": "undergone",
    "upset": "upset",
    "upsets": "upset",
    "upsetting": "upset",
    "vex": "vexed",
    "vexed": "vexed",
    "vexes": "vexed",
    "vexing": "vexed",
    "vie": "vied",
    "vied": "vied",
    "vies": "vied",
    "vying": "vied",
    "wait": "waited",
    "waited": "waited",
    "waiting": "waited",
    "waits": "waited",
    "wake": "woken",
    "wakes": "woken",
    "waking": "woken",
    "walk": "walked",
    "walked": "walked",
    "walking": "walked",
    "walks": "walked",
    "want": "wanted",
    "wanted": "wanted",
    "wanting": "wanted",
    "wants": "wanted",
    "was": "been",
    "watch": "watched",
    "watched": "watched",
    "watches": "watched",
    "watching": "watched",
    "wear": "worn",
    "wearing": "worn",
    "wears": "worn",
    "weep": "wept",
    "weeping": "wept",
    "weeps": "wept",
    "wend": "wended",
    "wended": "wended",
    "wending": "wended",
    "wends": "wended",
    "went": "gone",
    "wept": "wept",
    "were": "been",
    "win": "won",
    "winning": "won",
    "wins": "won",
    "wis": "wised",
    "wised": "wised",
    "wises": "wised",
    "wising": "wised",
    "withdraw": "withdrawn",
    "withdrawing": "withdrawn",
    "withdrawn": "withdrawn",
    "withdraws": "withdrawn",
    "withdrew": "withdrawn",
    "withheld": "withheld",
    "withhold": "withheld",
    "withholding": "withheld",
    "withholds": "withheld",
    "withstand": "withstood",
    "withstanding": "withstood",
    "withstands": "withstood",
    "withstood": "withstood",
    "woke": "woken",
    "woken": "woken",
    "won": "won",
    "wore": "worn",
    "worn": "worn",
    "wring": "wrung",
    "wringing": "wrung",
    "wrings": "wrung",
    "wrung": "wrung"
}

plural_convert_rule_regex = re.compile(r"^(?:((?:.{2,})?)considers|((?:.{2,})?)believes|((?:.{2,})?)includes|((?:.{2,})?)freezes|((?:.{2,})?)spreads|((?:.{2,})?)strikes|((?:.{2,})?)strings|((?:.{2,})?)teaches|((?:.{2,})?)alights|((?:.{2,})?)appears|((?:.{2,})?)clothes|((?:.{2,})?)creates|((?:.{2,})?)breeds|((?:.{2,})?)inputs|((?:.{2,})?)lights|((?:.{2,})?)shears|((?:.{2,})?)shines|((?:.{2,})?)shoots|((?:.{2,})?)sleeps|((?:.{2,})?)slings|((?:.{2,})?)splits|((?:.{2,})?)sticks|((?:.{2,})?)thinks|((?:.{2,})?)throws|((?:.{2,})?)weaves|((?:.{2,})?)writes|((?:.{2,})?)allows|((?:.{2,})?)offers|((?:.{2,})?)serves|((?:.{2,})?)smells|((?:.{2,})?)spells|((?:.{2,})?)spills|((?:.{2,})?)starts|(.+)trixes|((?:.{2,})?)bears|((?:.{2,})?)binds|((?:.{2,})?)casts|((?:.{2,})?)clads|((?:.{2,})?)draws|((?:.{2,})?)feeds|((?:.{2,})?)grows|((?:.{2,})?)hangs|((?:.{2,})?)hears|((?:.{2,})?)hides|((?:.{2,})?)knits|((?:.{2,})?)lends|((?:.{2,})?)makes|((?:.{2,})?)reads|((?:.{2,})?)rides|((?:.{2,})?)sells|((?:.{2,})?)sends|((?:.{2,})?)shuts|((?:.{2,})?)spins|((?:.{2,})?)takes|((?:.{2,})?)tells|((?:.{2,})?)tries|((?:.{2,})?)winds|((?:.{2,})?)calls|((?:.{2,})?)melts|((?:.{2,})?)opens|((?:.{2,})?)plays|((?:.{2,})?)turns|((?:.{2,})?)works|((?:.{2,})?)bids|((?:.{2,})?)buys|((?:.{2,})?)cuts|((?:.{2,})?)mows|((?:.{2,})?)pays|((?:.{2,})?)runs|((?:.{2,})?)says|((?:.{2,})?)sees|((?:.{2,})?)sets|((?:.{2,})?)sews|((?:.{2,})?)weds|((?:.{2,})?)wets|((?:.{2,})?)adds|((?:.{2,})?)fits|((?:.{2,})?)uses|(.+[aiy])nxes|(.+)ceps|(.+)ieus|(.+)eaus|(.+)sses|(.+)zzes|(.+[aeiou])zzes|(.+)n't|(.+)ics|(.+[cs])hes|(.+)oes|(.+)xes|(.+)zes|(.+)ues|(.+)ees|(.+)yes|(.+)ies|(.+)ers|(.+[aeiou])ys|(.+)is|(.+[au])es|(.+[^b])is|(.+)ys|(.+[^e])es|(.+[^s])s)$")

plural_convert_outputs = [
    "consider",
    "believe",
    "include",
    "freeze",
    "spread",
    "strike",
    "string",
    "teach",
    "alight",
    "appear",
    "clothe",
    "create",
    "breed",
    "input",
    "light",
    "shear",
    "shine",
    "shoot",
    "sleep",
    "sling",
    "split",
    "stick",
    "think",
    "throw",
    "weave",
    "write",
    "allow",
    "offer",
    "serve",
    "smell",
    "spell",
    "spill",
    "start",
    "trix",
    "bear",
    "bind",
    "cast",
    "clad",
    "draw",
    "feed",
    "grow",
    "hang",
    "hear",
    "hide",
    "knit",
    "lend",
    "make",
    "read",
    "ride",
    "sell",
    "send",
    "shut",
    "spin",
    "take",
    "tell",
    "try",
    "wind",
    "call",
    "melt",
    "open",
    "play",
    "turn",
    "work",
    "bid",
    "buy",
    "cut",
    "mow",
    "pay",
    "run",
    "say",
    "see",
    "set",
    "sew",
    "wed",
    "wet",
    "add",
    "fit",
    "use",
    "nx",
    "ceps",
    "ieu",
    "eau",
    "ss",
    "zz",
    "z",
    "n't",
    "ic",
    "h",
    "oe",
    "x",
    "ze",
    "ue",
    "ee",
    "ye",
    "y",
    "er",
    "y",
    "i",
    "e",
    "i",
    "y",
    "e",
    "",
]

singular_convert_rule_regex = re.compile(r"^(?:((?:.{2,})?)consider|((?:.{2,})?)believe|((?:.{2,})?)include|((?:.{2,})?)freeze|((?:.{2,})?)spread|((?:.{2,})?)strike|((?:.{2,})?)string|((?:.{2,})?)alight|((?:.{2,})?)appear|((?:.{2,})?)clothe|((?:.{2,})?)create|((?:.{2,})?)breed|((?:.{2,})?)input|((?:.{2,})?)light|((?:.{2,})?)shear|((?:.{2,})?)shine|((?:.{2,})?)shoot|((?:.{2,})?)sleep|((?:.{2,})?)sling|((?:.{2,})?)split|((?:.{2,})?)stick|((?:.{2,})?)teach|((?:.{2,})?)think|((?:.{2,})?)throw|((?:.{2,})?)weave|((?:.{2,})?)write|((?:.{2,})?)allow|((?:.{2,})?)offer|((?:.{2,})?)serve|((?:.{2,})?)smell|((?:.{2,})?)spell|((?:.{2,})?)spill|((?:.{2,})?)start|((?:.{2,})?)bear|((?:.{2,})?)bind|((?:.{2,})?)cast|((?:.{2,})?)clad|((?:.{2,})?)draw|((?:.{2,})?)feed|((?:.{2,})?)grow|((?:.{2,})?)hang|((?:.{2,})?)hear|((?:.{2,})?)hide|((?:.{2,})?)knit|((?:.{2,})?)lend|((?:.{2,})?)make|((?:.{2,})?)read|((?:.{2,})?)ride|((?:.{2,})?)sell|((?:.{2,})?)send|((?:.{2,})?)shut|((?:.{2,})?)spin|((?:.{2,})?)take|((?:.{2,})?)tell|((?:.{2,})?)wind|((?:.{2,})?)call|((?:.{2,})?)melt|((?:.{2,})?)open|((?:.{2,})?)play|((?:.{2,})?)turn|((?:.{2,})?)work|(.+)ceps|(.+)trix|((?:.{2,})?)bid|((?:.{2,})?)buy|((?:.{2,})?)cut|((?:.{2,})?)mow|((?:.{2,})?)pay|((?:.{2,})?)run|((?:.{2,})?)say|((?:.{2,})?)see|((?:.{2,})?)set|((?:.{2,})?)sew|((?:.{2,})?)try|((?:.{2,})?)wed|((?:.{2,})?)wet|((?:.{2,})?)add|((?:.{2,})?)fit|((?:.{2,})?)use|(.+)n't|(.+)ieu|(.+)eau|(.+)ic|(.+[aiy])nx|(.+)oe|(.+)ss|(.+)zz|(.+)ze|(.+)ue|(.+)ee|(.+)ye|(.+)ie|(.+)er|(.+[aeiou])y|(.+[cs])h|(.+)x|(.+[aeiou])z|(.+)z|(.+)i|(.+[au])e|(.+[^b])i|(.+)y|(.+[^e])e|(.+[^s]))$")

singular_convert_outputs = [
    "considers",
    "believes",
    "includes",
    "freezes",
    "spreads",
    "strikes",
    "strings",
    "alights",
    "appears",
    "clothes",
    "creates",
    "breeds",
    "inputs",
    "lights",
    "shears",
    "shines",
    "shoots",
    "sleeps",
    "slings",
    "splits",
    "sticks",
    "teaches",
    "thinks",
    "throws",
    "weaves",
    "writes",
    "allows",
    "offers",
    "serves",
    "smells",
    "spells",
    "spills",
    "starts",
    "bears",
    "binds",
    "casts",
    "clads",
    "draws",
    "feeds",
    "grows",
    "hangs",
    "hears",
    "hides",
    "knits",
    "lends",
    "makes",
    "reads",
    "rides",
    "sells",
    "sends",
    "shuts",
    "spins",
    "takes",
    "tells",
    "winds",
    "calls",
    "melts",
    "opens",
    "plays",
    "turns",
    "works",
    "ceps",
    "trixes",
    "bids",
    "buys",
    "cuts",
    "mows",
    "pays",
    "runs",
    "says",
    "sees",
    "sets",
    "sews",
    "tries",
    "weds",
    "wets",
    "adds",
    "fits",
    "uses",
    "n't",
    "ieus",
    "eaus",
    "ics",
    "nxes",
    "oes",
    "sses",
    "zzes",
    "zes",
    "ues",
    "ees",
    "yes",
    "ies",
    "ers",
    "ys",
    "hes",
    "xes",
    "zzes",
    "zes",
    "is",
    "es",
    "is",
    "ies",
    "es",
    "s",
]

past_convert_rule_regex = re.compile(r"^(?:((?:.{2,})?)considers|((?:.{2,})?)believes|((?:.{2,})?)consider|((?:.{2,})?)includes|((?:.{2,})?)freezes|((?:.{2,})?)spreads|((?:.{2,})?)strikes|((?:.{2,})?)strings|((?:.{2,})?)teaches|((?:.{2,})?)alights|((?:.{2,})?)appears|((?:.{2,})?)believe|((?:.{2,})?)clothes|((?:.{2,})?)creates|((?:.{2,})?)include|((?:.{2,})?)breeds|((?:.{2,})?)freeze|((?:.{2,})?)inputs|((?:.{2,})?)lights|((?:.{2,})?)shears|((?:.{2,})?)shines|((?:.{2,})?)shoots|((?:.{2,})?)sleeps|((?:.{2,})?)slings|((?:.{2,})?)splits|((?:.{2,})?)spread|((?:.{2,})?)sticks|((?:.{2,})?)strike|((?:.{2,})?)string|((?:.{2,})?)thinks|((?:.{2,})?)throws|((?:.{2,})?)weaves|((?:.{2,})?)writes|((?:.{2,})?)alight|((?:.{2,})?)allows|((?:.{2,})?)appear|((?:.{2,})?)clothe|((?:.{2,})?)create|((?:.{2,})?)offers|((?:.{2,})?)serves|((?:.{2,})?)smells|((?:.{2,})?)spells|((?:.{2,})?)spills|((?:.{2,})?)starts|(.+)trixes|((?:.{2,})?)bears|((?:.{2,})?)binds|((?:.{2,})?)breed|((?:.{2,})?)casts|((?:.{2,})?)clads|((?:.{2,})?)draws|((?:.{2,})?)feeds|((?:.{2,})?)grows|((?:.{2,})?)hangs|((?:.{2,})?)hears|((?:.{2,})?)hides|((?:.{2,})?)input|((?:.{2,})?)knits|((?:.{2,})?)lends|((?:.{2,})?)light|((?:.{2,})?)makes|((?:.{2,})?)reads|((?:.{2,})?)rides|((?:.{2,})?)sells|((?:.{2,})?)sends|((?:.{2,})?)shear|((?:.{2,})?)shine|((?:.{2,})?)shoot|((?:.{2,})?)shuts|((?:.{2,})?)sleep|((?:.{2,})?)sling|((?:.{2,})?)spins|((?:.{2,})?)split|((?:.{2,})?)stick|((?:.{2,})?)takes|((?:.{2,})?)teach|((?:.{2,})?)tells|((?:.{2,})?)think|((?:.{2,})?)throw|((?:.{2,})?)tries|((?:.{2,})?)weave|((?:.{2,})?)winds|((?:.{2,})?)write|((?:.{2,})?)allow|((?:.{2,})?)calls|((?:.{2,})?)melts|((?:.{2,})?)offer|((?:.{2,})?)opens|((?:.{2,})?)plays|((?:.{2,})?)serve|((?:.{2,})?)smell|((?:.{2,})?)spell|((?:.{2,})?)spill|((?:.{2,})?)start|((?:.{2,})?)turns|((?:.{2,})?)works|((?:.{2,})?)bear|((?:.{2,})?)bids|((?:.{2,})?)bind|((?:.{2,})?)buys|((?:.{2,})?)cast|((?:.{2,})?)clad|((?:.{2,})?)cuts|((?:.{2,})?)draw|((?:.{2,})?)feed|((?:.{2,})?)grow|((?:.{2,})?)hang|((?:.{2,})?)hear|((?:.{2,})?)hide|((?:.{2,})?)knit|((?:.{2,})?)lend|((?:.{2,})?)make|((?:.{2,})?)mows|((?:.{2,})?)pays|((?:.{2,})?)read|((?:.{2,})?)ride|((?:.{2,})?)runs|((?:.{2,})?)says|((?:.{2,})?)sees|((?:.{2,})?)sell|((?:.{2,})?)send|((?:.{2,})?)sets|((?:.{2,})?)sews|((?:.{2,})?)shut|((?:.{2,})?)spin|((?:.{2,})?)take|((?:.{2,})?)tell|((?:.{2,})?)weds|((?:.{2,})?)wets|((?:.{2,})?)wind|((?:.{2,})?)adds|((?:.{2,})?)call|((?:.{2,})?)fits|((?:.{2,})?)melt|((?:.{2,})?)open|((?:.{2,})?)play|((?:.{2,})?)turn|((?:.{2,})?)uses|((?:.{2,})?)work|(.+[aiy])nxes|(.+)ceps|(.+)ieus|(.+)eaus|(.+)sses|(.+)trix|(.+)zzes|(.+[aeiou])zzes|((?:.{2,})?)bid|((?:.{2,})?)buy|((?:.{2,})?)cut|((?:.{2,})?)mow|((?:.{2,})?)pay|((?:.{2,})?)run|((?:.{2,})?)say|((?:.{2,})?)see|((?:.{2,})?)set|((?:.{2,})?)sew|((?:.{2,})?)try|((?:.{2,})?)wed|((?:.{2,})?)wet|((?:.{2,})?)add|((?:.{2,})?)fit|((?:.{2,})?)use|(.+)n't|(.+)ics|(.+[cs])hes|(.+)oes|(.+)ieu|(.+)eau|(.+)xes|(.+)zes|(.+)ues|(.+)ees|(.+)yes|(.+)ies|(.+)ers|(.+)ic|(.+[aeiou])ys|(.+[aiy])nx|(.+)oe|(.+)ss|(.+)zz|(.+)ze|(.+)ue|(.+)is|(.+)ee|(.+)ye|(.+[au])es|(.+[^b])is|(.+)ie|(.+)ys|(.+[^e])es|(.+)er|(.+[aeiou])y|(.+[cs])h|(.+)x|(.+[aeiou])z|(.+)z|(.+)i|(.+[au])e|(.+[^b])i|(.+)y|(.+[^e])e)$")

past_convert_outputs = [
    "considered",
    "believed",
    "considered",
    "included",
    "froze",
    "spread",
    "struck",
    "strung",
    "taught",
    "alighted",
    "appeared",
    "believed",
    "clothed",
    "created",
    "included",
    "bred",
    "froze",
    "input",
    "lit",
    "sheared",
    "shone",
    "shot",
    "slept",
    "slung",
    "split",
    "spread",
    "stuck",
    "struck",
    "strung",
    "thought",
    "threw",
    "wove",
    "wrote",
    "alighted",
    "allowed",
    "appeared",
    "clothed",
    "created",
    "offered",
    "served",
    "smelled",
    "spelled",
    "spilled",
    "started",
    "trixed",
    "bore",
    "bound",
    "bred",
    "cast",
    "clad",
    "drew",
    "fed",
    "grew",
    "hung",
    "heard",
    "hid",
    "input",
    "knitted",
    "lent",
    "lit",
    "made",
    "read",
    "rode",
    "sold",
    "sent",
    "sheared",
    "shone",
    "shot",
    "shut",
    "slept",
    "slung",
    "spun",
    "split",
    "stuck",
    "took",
    "taught",
    "told",
    "thought",
    "threw",
    "tried",
    "wove",
    "wound",
    "wrote",
    "allowed",
    "called",
    "melted",
    "offered",
    "opened",
    "played",
    "served",
    "smelled",
    "spelled",
    "spilled",
    "started",
    "turned",
    "worked",
    "bore",
    "bid",
    "bound",
    "bought",
    "cast",
    "clad",
    "cut",
    "drew",
    "fed",
    "grew",
    "hung",
    "heard",
    "hid",
    "knitted",
    "lent",
    "made",
    "mowed",
    "paid",
    "read",
    "rode",
    "ran",
    "said",
    "saw",
    "sold",
    "sent",
    "set",
    "sewed",
    "shut",
    "spun",
    "took",
    "told",
    "wed",
    "wet",
    "wound",
    "added",
    "called",
    "fitted",
    "melted",
    "opened",
    "played",
    "turned",
    "used",
    "worked",
    "nxed",
    "cepsed",
    "ieued",
    "eaued",
    "ssed",
    "trixed",
    "zzed",
    "zzed",
    "bid",
    "bought",
    "cut",
    "mowed",
    "paid",
    "ran",
    "said",
    "saw",
    "set",
    "sewed",
    "tried",
    "wed",
    "wet",
    "added",
    "fitted",
    "used",
    "n't",
    "icked",
    "hed",
    "oed",
    "ieued",
    "eaued",
    "xed",
    "zed",
    "ued",
    "eed",
    "yed",
    "ied",
    "ered",
    "icked",
    "yed",
    "nxed",
    "oed",
    "ssed",
    "zzed",
    "zed",
    "ued",
    "ied",
    "eed",
    "yed",
    "ed",
    "ied",
    "ied",
    "yed",
    "ed",
    "ered",
    "yed",
    "hed",
    "xed",
    "zzed",
    "zed",
    "ied",
    "ed",
    "ied",
    "ied",
    "ed",
]

pres_part_convert_rule_regex = re.compile(r"^(?:((?:.{2,})?)considers|((?:.{2,})?)believes|((?:.{2,})?)consider|((?:.{2,})?)includes|((?:.{2,})?)freezes|((?:.{2,})?)spreads|((?:.{2,})?)strikes|((?:.{2,})?)strings|((?:.{2,})?)teaches|((?:.{2,})?)alights|((?:.{2,})?)appears|((?:.{2,})?)believe|((?:.{2,})?)clothes|((?:.{2,})?)creates|((?:.{2,})?)include|((?:.{2,})?)breeds|((?:.{2,})?)freeze|((?:.{2,})?)inputs|((?:.{2,})?)lights|((?:.{2,})?)shears|((?:.{2,})?)shines|((?:.{2,})?)shoots|((?:.{2,})?)sleeps|((?:.{2,})?)slings|((?:.{2,})?)splits|((?:.{2,})?)spread|((?:.{2,})?)sticks|((?:.{2,})?)strike|((?:.{2,})?)string|((?:.{2,})?)thinks|((?:.{2,})?)throws|((?:.{2,})?)weaves|((?:.{2,})?)writes|((?:.{2,})?)alight|((?:.{2,})?)allows|((?:.{2,})?)appear|((?:.{2,})?)clothe|((?:.{2,})?)create|((?:.{2,})?)offers|((?:.{2,})?)serves|((?:.{2,})?)smells|((?:.{2,})?)spells|((?:.{2,})?)spills|((?:.{2,})?)starts|(.+)trixes|((?:.{2,})?)bears|((?:.{2,})?)binds|((?:.{2,})?)breed|((?:.{2,})?)casts|((?:.{2,})?)clads|((?:.{2,})?)draws|((?:.{2,})?)feeds|((?:.{2,})?)grows|((?:.{2,})?)hangs|((?:.{2,})?)hears|((?:.{2,})?)hides|((?:.{2,})?)input|((?:.{2,})?)knits|((?:.{2,})?)lends|((?:.{2,})?)light|((?:.{2,})?)makes|((?:.{2,})?)reads|((?:.{2,})?)rides|((?:.{2,})?)sells|((?:.{2,})?)sends|((?:.{2,})?)shear|((?:.{2,})?)shine|((?:.{2,})?)shoot|((?:.{2,})?)shuts|((?:.{2,})?)sleep|((?:.{2,})?)sling|((?:.{2,})?)spins|((?:.{2,})?)split|((?:.{2,})?)stick|((?:.{2,})?)takes|((?:.{2,})?)teach|((?:.{2,})?)tells|((?:.{2,})?)think|((?:.{2,})?)throw|((?:.{2,})?)tries|((?:.{2,})?)weave|((?:.{2,})?)winds|((?:.{2,})?)write|((?:.{2,})?)allow|((?:.{2,})?)calls|((?:.{2,})?)melts|((?:.{2,})?)offer|((?:.{2,})?)opens|((?:.{2,})?)plays|((?:.{2,})?)serve|((?:.{2,})?)smell|((?:.{2,})?)spell|((?:.{2,})?)spill|((?:.{2,})?)start|((?:.{2,})?)turns|((?:.{2,})?)works|((?:.{2,})?)bear|((?:.{2,})?)bids|((?:.{2,})?)bind|((?:.{2,})?)buys|((?:.{2,})?)cast|((?:.{2,})?)clad|((?:.{2,})?)cuts|((?:.{2,})?)draw|((?:.{2,})?)feed|((?:.{2,})?)grow|((?:.{2,})?)hang|((?:.{2,})?)hear|((?:.{2,})?)hide|((?:.{2,})?)knit|((?:.{2,})?)lend|((?:.{2,})?)make|((?:.{2,})?)mows|((?:.{2,})?)pays|((?:.{2,})?)read|((?:.{2,})?)ride|((?:.{2,})?)runs|((?:.{2,})?)says|((?:.{2,})?)sees|((?:.{2,})?)sell|((?:.{2,})?)send|((?:.{2,})?)sets|((?:.{2,})?)sews|((?:.{2,})?)shut|((?:.{2,})?)spin|((?:.{2,})?)take|((?:.{2,})?)tell|((?:.{2,})?)weds|((?:.{2,})?)wets|((?:.{2,})?)wind|((?:.{2,})?)adds|((?:.{2,})?)call|((?:.{2,})?)fits|((?:.{2,})?)melt|((?:.{2,})?)open|((?:.{2,})?)play|((?:.{2,})?)turn|((?:.{2,})?)uses|((?:.{2,})?)work|(.+[aiy])nxes|(.+)ceps|(.+)ieus|(.+)eaus|(.+)sses|(.+)trix|(.+)zzes|(.+[aeiou])zzes|((?:.{2,})?)bid|((?:.{2,})?)buy|((?:.{2,})?)cut|((?:.{2,})?)mow|((?:.{2,})?)pay|((?:.{2,})?)run|((?:.{2,})?)say|((?:.{2,})?)see|((?:.{2,})?)set|((?:.{2,})?)sew|((?:.{2,})?)try|((?:.{2,})?)wed|((?:.{2,})?)wet|((?:.{2,})?)add|((?:.{2,})?)fit|((?:.{2,})?)use|(.+)ics|(.+[cs])hes|(.+)oes|(.+)ieu|(.+)eau|(.+)xes|(.+)zes|(.+)ues|(.+)ees|(.+)yes|(.+)ies|(.+)ers|(.+)ic|(.+[aeiou])ys|(.+[aiy])nx|(.+)oe|(.+)ss|(.+)zz|(.+)ze|(.+)ue|(.+)is|(.+)ee|(.+)ye|(.+[au])es|(.+[^b])is|(.+)ie|(.+)ys|(.+[^e])es|(.+)er|(.+[aeiou])y|(.+[cs])h|(.+)x|(.+[aeiou])z|(.+)z|(.+)i|(.+[au])e|(.+[^b])i|(.+)y|(.+[^e])e)$")

pres_part_convert_outputs = [
    "considering",
    "believing",
    "considering",
    "including",
    "freezing",
    "spreading",
    "striking",
    "stringing",
    "teaching",
    "alighting",
    "appearing",
    "believing",
    "clothing",
    "creating",
    "including",
    "breeding",
    "freezing",
    "inputting",
    "lighting",
    "shearing",
    "shining",
    "shooting",
    "sleeping",
    "slinging",
    "splitting",
    "spreading",
    "sticking",
    "striking",
    "stringing",
    "thinking",
    "throwing",
    "weaving",
    "writing",
    "alighting",
    "allowing",
    "appearing",
    "clothing",
    "creating",
    "offering",
    "serving",
    "smelling",
    "spelling",
    "spilling",
    "starting",
    "trixing",
    "bearing",
    "binding",
    "breeding",
    "casting",
    "cladding",
    "drawing",
    "feeding",
    "growing",
    "hanging",
    "hearing",
    "hiding",
    "inputting",
    "knitting",
    "lending",
    "lighting",
    "making",
    "reading",
    "riding",
    "selling",
    "sending",
    "shearing",
    "shining",
    "shooting",
    "shutting",
    "sleeping",
    "slinging",
    "spinning",
    "splitting",
    "sticking",
    "taking",
    "teaching",
    "telling",
    "thinking",
    "throwing",
    "trying",
    "weaving",
    "winding",
    "writing",
    "allowing",
    "calling",
    "melting",
    "offering",
    "opening",
    "playing",
    "serving",
    "smelling",
    "spelling",
    "spilling",
    "starting",
    "turning",
    "working",
    "bearing",
    "bidding",
    "binding",
    "buying",
    "casting",
    "cladding",
    "cutting",
    "drawing",
    "feeding",
    "growing",
    "hanging",
    "hearing",
    "hiding",
    "knitting",
    "lending",
    "making",
    "mowing",
    "paying",
    "reading",
    "riding",
    "running",
    "saying",
    "seeing",
    "selling",
    "sending",
    "setting",
    "sewing",
    "shutting",
    "spinning",
    "taking",
    "telling",
    "wedding",
    "wetting",
    "winding",
    "adding",
    "calling",
    "fitting",
    "melting",
    "opening",
    "playing",
    "turning",
    "using",
    "working",
    "nxing",
    "cepsing",
    "ieuing",
    "eauing",
    "ssing",
    "trixing",
    "zzing",
    "zzing",
    "bidding",
    "buying",
    "cutting",
    "mowing",
    "paying",
    "running",
    "saying",
    "seeing",
    "setting",
    "sewing",
    "trying",
    "wedding",
    "wetting",
    "adding",
    "fitting",
    "using",
    "icking",
    "hing",
    "oeing",
    "ieuing",
    "eauing",
    "xing",
    "zing",
    "uing",
    "eeing",
    "yeing",
    "ying",
    "ering",
    "icking",
    "ying",
    "nxing",
    "oeing",
    "ssing",
    "zzing",
    "zing",
    "uing",
    "iing",
    "eeing",
    "yeing",
    "ing",
    "ing",
    "ying",
    "ying",
    "ing",
    "ering",
    "ying",
    "hing",
    "xing",
    "zzing",
    "zing",
    "iing",
    "ing",
    "ing",
    "ying",
    "ing",
]

past_part_convert_rule_regex = re.compile(r"^(?:((?:.{2,})?)considers|((?:.{2,})?)believes|((?:.{2,})?)consider|((?:.{2,})?)includes|((?:.{2,})?)freezes|((?:.{2,})?)spreads|((?:.{2,})?)strikes|((?:.{2,})?)strings|((?:.{2,})?)teaches|((?:.{2,})?)alights|((?:.{2,})?)appears|((?:.{2,})?)believe|((?:.{2,})?)clothes|((?:.{2,})?)creates|((?:.{2,})?)include|((?:.{2,})?)breeds|((?:.{2,})?)freeze|((?:.{2,})?)inputs|((?:.{2,})?)lights|((?:.{2,})?)shears|((?:.{2,})?)shines|((?:.{2,})?)shoots|((?:.{2,})?)sleeps|((?:.{2,})?)slings|((?:.{2,})?)splits|((?:.{2,})?)spread|((?:.{2,})?)sticks|((?:.{2,})?)strike|((?:.{2,})?)string|((?:.{2,})?)thinks|((?:.{2,})?)throws|((?:.{2,})?)weaves|((?:.{2,})?)writes|((?:.{2,})?)alight|((?:.{2,})?)allows|((?:.{2,})?)appear|((?:.{2,})?)clothe|((?:.{2,})?)create|((?:.{2,})?)offers|((?:.{2,})?)serves|((?:.{2,})?)smells|((?:.{2,})?)spells|((?:.{2,})?)spills|((?:.{2,})?)starts|(.+)trixes|((?:.{2,})?)bears|((?:.{2,})?)binds|((?:.{2,})?)breed|((?:.{2,})?)casts|((?:.{2,})?)clads|((?:.{2,})?)draws|((?:.{2,})?)feeds|((?:.{2,})?)grows|((?:.{2,})?)hangs|((?:.{2,})?)hears|((?:.{2,})?)hides|((?:.{2,})?)input|((?:.{2,})?)knits|((?:.{2,})?)lends|((?:.{2,})?)light|((?:.{2,})?)makes|((?:.{2,})?)reads|((?:.{2,})?)rides|((?:.{2,})?)sells|((?:.{2,})?)sends|((?:.{2,})?)shear|((?:.{2,})?)shine|((?:.{2,})?)shoot|((?:.{2,})?)shuts|((?:.{2,})?)sleep|((?:.{2,})?)sling|((?:.{2,})?)spins|((?:.{2,})?)split|((?:.{2,})?)stick|((?:.{2,})?)takes|((?:.{2,})?)teach|((?:.{2,})?)tells|((?:.{2,})?)think|((?:.{2,})?)throw|((?:.{2,})?)tries|((?:.{2,})?)weave|((?:.{2,})?)winds|((?:.{2,})?)write|((?:.{2,})?)allow|((?:.{2,})?)calls|((?:.{2,})?)melts|((?:.{2,})?)offer|((?:.{2,})?)opens|((?:.{2,})?)plays|((?:.{2,})?)serve|((?:.{2,})?)smell|((?:.{2,})?)spell|((?:.{2,})?)spill|((?:.{2,})?)start|((?:.{2,})?)turns|((?:.{2,})?)works|((?:.{2,})?)bear|((?:.{2,})?)bids|((?:.{2,})?)bind|((?:.{2,})?)buys|((?:.{2,})?)cast|((?:.{2,})?)clad|((?:.{2,})?)cuts|((?:.{2,})?)draw|((?:.{2,})?)feed|((?:.{2,})?)grow|((?:.{2,})?)hang|((?:.{2,})?)hear|((?:.{2,})?)hide|((?:.{2,})?)knit|((?:.{2,})?)lend|((?:.{2,})?)make|((?:.{2,})?)mows|((?:.{2,})?)pays|((?:.{2,})?)read|((?:.{2,})?)ride|((?:.{2,})?)runs|((?:.{2,})?)says|((?:.{2,})?)sees|((?:.{2,})?)sell|((?:.{2,})?)send|((?:.{2,})?)sets|((?:.{2,})?)sews|((?:.{2,})?)shut|((?:.{2,})?)spin|((?:.{2,})?)take|((?:.{2,})?)tell|((?:.{2,})?)weds|((?:.{2,})?)wets|((?:.{2,})?)wind|((?:.{2,})?)adds|((?:.{2,})?)call|((?:.{2,})?)fits|((?:.{2,})?)melt|((?:.{2,})?)open|((?:.{2,})?)play|((?:.{2,})?)turn|((?:.{2,})?)uses|((?:.{2,})?)work|(.+[aiy])nxes|(.+)ceps|(.+)ieus|(.+)eaus|(.+)sses|(.+)trix|(.+)zzes|(.+[aeiou])zzes|((?:.{2,})?)bid|((?:.{2,})?)buy|((?:.{2,})?)cut|((?:.{2,})?)mow|((?:.{2,})?)pay|((?:.{2,})?)run|((?:.{2,})?)say|((?:.{2,})?)see|((?:.{2,})?)set|((?:.{2,})?)sew|((?:.{2,})?)try|((?:.{2,})?)wed|((?:.{2,})?)wet|((?:.{2,})?)add|((?:.{2,})?)fit|((?:.{2,})?)use|(.+)ics|(.+[cs])hes|(.+)oes|(.+)ieu|(.+)eau|(.+)xes|(.+)zes|(.+)ues|(.+)ees|(.+)yes|(.+)ies|(.+)ers|(.+)ic|(.+[aeiou])ys|(.+[aiy])nx|(.+)oe|(.+)ss|(.+)zz|(.+)ze|(.+)ue|(.+)is|(.+)ee|(.+)ye|(.+[au])es|(.+[^b])is|(.+)ie|(.+)ys|(.+[^e])es|(.+)er|(.+[aeiou])y|(.+[cs])h|(.+)x|(.+[aeiou])z|(.+)z|(.+)i|(.+[au])e|(.+[^b])i|(.+)y|(.+[^e])e)$")

past_part_convert_outputs = [
    "considered",
    "believed",
    "considered",
    "included",
    "frozen",
    "spread",
    "struck",
    "strung",
    "taught",
    "alighted",
    "appeared",
    "believed",
    "clothed",
    "created",
    "included",
    "bred",
    "frozen",
    "input",
    "lit",
    "shorn",
    "shone",
    "shot",
    "slept",
    "slung",
    "split",
    "spread",
    "stuck",
    "struck",
    "strung",
    "thought",
    "thrown",
    "woven",
    "written",
    "alighted",
    "allowed",
    "appeared",
    "clothed",
    "created",
    "offered",
    "served",
    "smelled",
    "spelled",
    "spilled",
    "started",
    "trixed",
    "borne",
    "bound",
    "bred",
    "cast",
    "clad",
    "drawn",
    "fed",
    "grown",
    "hung",
    "heard",
    "hidden",
    "input",
    "knitted",
    "lent",
    "lit",
    "made",
    "read",
    "ridden",
    "sold",
    "sent",
    "shorn",
    "shone",
    "shot",
    "shut",
    "slept",
    "slung",
    "spun",
    "split",
    "stuck",
    "taken",
    "taught",
    "told",
    "thought",
    "thrown",
    "tried",
    "woven",
    "wound",
    "written",
    "allowed",
    "called",
    "melted",
    "offered",
    "opened",
    "played",
    "served",
    "smelled",
    "spelled",
    "spilled",
    "started",
    "turned",
    "worked",
    "borne",
    "bid",
    "bound",
    "bought",
    "cast",
    "clad",
    "cut",
    "drawn",
    "fed",
    "grown",
    "hung",
    "heard",
    "hidden",
    "knitted",
    "lent",
    "made",
    "mown",
    "paid",
    "read",
    "ridden",
    "run",
    "said",
    "seen",
    "sold",
    "sent",
    "set",
    "sewn",
    "shut",
    "spun",
    "taken",
    "told",
    "wed",
    "wetted",
    "wound",
    "added",
    "called",
    "fitted",
    "melted",
    "opened",
    "played",
    "turned",
    "used",
    "worked",
    "nxed",
    "cepsed",
    "ieued",
    "eaued",
    "ssed",
    "trixed",
    "zzed",
    "zzed",
    "bid",
    "bought",
    "cut",
    "mown",
    "paid",
    "run",
    "said",
    "seen",
    "set",
    "sewn",
    "tried",
    "wed",
    "wetted",
    "added",
    "fitted",
    "used",
    "icked",
    "hed",
    "oed",
    "ieued",
    "eaued",
    "xed",
    "zed",
    "ued",
    "eed",
    "yed",
    "ied",
    "ered",
    "icked",
    "yed",
    "nxed",
    "oed",
    "ssed",
    "zzed",
    "zed",
    "ued",
    "ied",
    "eed",
    "yed",
    "ed",
    "ied",
    "ied",
    "yed",
    "ed",
    "ered",
    "yed",
    "hed",
    "xed",
    "zzed",
    "zed",
    "ied",
    "ed",
    "ied",
    "ied",
    "ed",
]

plural_recognize_rule = re.compile(r"^(?:(.+[^s])|(.+)i|(.+)x|(.+)y|(.+)y|(.+[^b])i|(.+[^e])e|(.+[aeiou])y|(.+[aeiou])z|(.+[au])e|(.+[cs])h|(.+)ee|(.+)er|(.+)ic|(.+)oe|(.+)ss|(.+)ue|(.+)ye|(.+)ze|(.+)zz|(.+[aiy])nx|((?:.{2,})?)add|((?:.{2,})?)bid|((?:.{2,})?)buy|((?:.{2,})?)cut|((?:.{2,})?)fit|((?:.{2,})?)mow|((?:.{2,})?)pay|((?:.{2,})?)run|((?:.{2,})?)say|((?:.{2,})?)see|((?:.{2,})?)set|((?:.{2,})?)sew|((?:.{2,})?)try|((?:.{2,})?)use|((?:.{2,})?)wed|((?:.{2,})?)wet|(.+)eau|(.+)ieu|(.+)n't|((?:.{2,})?)bear|((?:.{2,})?)bind|((?:.{2,})?)call|((?:.{2,})?)cast|((?:.{2,})?)clad|((?:.{2,})?)draw|((?:.{2,})?)feed|((?:.{2,})?)grow|((?:.{2,})?)hang|((?:.{2,})?)hear|((?:.{2,})?)hide|((?:.{2,})?)knit|((?:.{2,})?)lend|((?:.{2,})?)make|((?:.{2,})?)melt|((?:.{2,})?)open|((?:.{2,})?)play|((?:.{2,})?)read|((?:.{2,})?)ride|((?:.{2,})?)sell|((?:.{2,})?)send|((?:.{2,})?)shut|((?:.{2,})?)spin|((?:.{2,})?)take|((?:.{2,})?)tell|((?:.{2,})?)turn|((?:.{2,})?)wind|((?:.{2,})?)work|(.+)ceps|(.+)trix|((?:.{2,})?)allow|((?:.{2,})?)breed|((?:.{2,})?)input|((?:.{2,})?)light|((?:.{2,})?)offer|((?:.{2,})?)serve|((?:.{2,})?)shear|((?:.{2,})?)shine|((?:.{2,})?)shoot|((?:.{2,})?)sleep|((?:.{2,})?)sling|((?:.{2,})?)smell|((?:.{2,})?)spell|((?:.{2,})?)spill|((?:.{2,})?)split|((?:.{2,})?)start|((?:.{2,})?)stick|((?:.{2,})?)teach|((?:.{2,})?)think|((?:.{2,})?)throw|((?:.{2,})?)weave|((?:.{2,})?)write|((?:.{2,})?)alight|((?:.{2,})?)appear|((?:.{2,})?)clothe|((?:.{2,})?)create|((?:.{2,})?)freeze|((?:.{2,})?)spread|((?:.{2,})?)strike|((?:.{2,})?)string|((?:.{2,})?)believe|((?:.{2,})?)include|((?:.{2,})?)consider)$")

singular_recognize_rule = re.compile(r"^(?:(.+[^s])s|(.+)is|(.+[^b])is|(.+[^e])es|(.+[aeiou])ys|(.+[au])es|(.+)ees|(.+)ers|(.+)ics|(.+)ies|(.+)ies|(.+)n't|(.+)oes|(.+)ues|(.+)xes|(.+)yes|(.+)zes|(.+)zes|(.+[cs])hes|((?:.{2,})?)adds|((?:.{2,})?)bids|((?:.{2,})?)buys|((?:.{2,})?)cuts|((?:.{2,})?)fits|((?:.{2,})?)mows|((?:.{2,})?)pays|((?:.{2,})?)runs|((?:.{2,})?)says|((?:.{2,})?)sees|((?:.{2,})?)sets|((?:.{2,})?)sews|((?:.{2,})?)uses|((?:.{2,})?)weds|((?:.{2,})?)wets|(.+)ceps|(.+)eaus|(.+)ieus|(.+)sses|(.+)zzes|(.+[aeiou])zzes|(.+[aiy])nxes|((?:.{2,})?)bears|((?:.{2,})?)binds|((?:.{2,})?)calls|((?:.{2,})?)casts|((?:.{2,})?)clads|((?:.{2,})?)draws|((?:.{2,})?)feeds|((?:.{2,})?)grows|((?:.{2,})?)hangs|((?:.{2,})?)hears|((?:.{2,})?)hides|((?:.{2,})?)knits|((?:.{2,})?)lends|((?:.{2,})?)makes|((?:.{2,})?)melts|((?:.{2,})?)opens|((?:.{2,})?)plays|((?:.{2,})?)reads|((?:.{2,})?)rides|((?:.{2,})?)sells|((?:.{2,})?)sends|((?:.{2,})?)shuts|((?:.{2,})?)spins|((?:.{2,})?)takes|((?:.{2,})?)tells|((?:.{2,})?)tries|((?:.{2,})?)turns|((?:.{2,})?)winds|((?:.{2,})?)works|((?:.{2,})?)allows|((?:.{2,})?)breeds|((?:.{2,})?)inputs|((?:.{2,})?)lights|((?:.{2,})?)offers|((?:.{2,})?)serves|((?:.{2,})?)shears|((?:.{2,})?)shines|((?:.{2,})?)shoots|((?:.{2,})?)sleeps|((?:.{2,})?)slings|((?:.{2,})?)smells|((?:.{2,})?)spells|((?:.{2,})?)spills|((?:.{2,})?)splits|((?:.{2,})?)starts|((?:.{2,})?)sticks|((?:.{2,})?)thinks|((?:.{2,})?)throws|((?:.{2,})?)weaves|((?:.{2,})?)writes|(.+)trixes|((?:.{2,})?)alights|((?:.{2,})?)appears|((?:.{2,})?)clothes|((?:.{2,})?)creates|((?:.{2,})?)freezes|((?:.{2,})?)spreads|((?:.{2,})?)strikes|((?:.{2,})?)strings|((?:.{2,})?)teaches|((?:.{2,})?)believes|((?:.{2,})?)includes|((?:.{2,})?)considers)$")

past_recognize_rule = re.compile(r"^(?:(.+[^e])ed|(.+[au])ed|((?:.{2,})?)bid|((?:.{2,})?)cut|((?:.{2,})?)fed|((?:.{2,})?)hid|((?:.{2,})?)lit|((?:.{2,})?)ran|((?:.{2,})?)saw|((?:.{2,})?)set|((?:.{2,})?)wed|((?:.{2,})?)wet|(.+)eed|(.+)ied|(.+)ied|(.+)n't|(.+)oed|(.+)ued|(.+)xed|(.+)yed|(.+)yed|(.+)zed|(.+[^b])ied|(.+[aeiou])yed|(.+[cs])hed|((?:.{2,})?)bore|((?:.{2,})?)bred|((?:.{2,})?)cast|((?:.{2,})?)clad|((?:.{2,})?)drew|((?:.{2,})?)grew|((?:.{2,})?)hung|((?:.{2,})?)lent|((?:.{2,})?)made|((?:.{2,})?)paid|((?:.{2,})?)read|((?:.{2,})?)rode|((?:.{2,})?)said|((?:.{2,})?)sent|((?:.{2,})?)shot|((?:.{2,})?)shut|((?:.{2,})?)sold|((?:.{2,})?)spun|((?:.{2,})?)told|((?:.{2,})?)took|((?:.{2,})?)used|((?:.{2,})?)wove|(.+)ered|(.+)ssed|(.+)zzed|(.+[aeiou])zzed|(.+[aiy])nxed|((?:.{2,})?)added|((?:.{2,})?)bound|((?:.{2,})?)froze|((?:.{2,})?)heard|((?:.{2,})?)input|((?:.{2,})?)mowed|((?:.{2,})?)sewed|((?:.{2,})?)shone|((?:.{2,})?)slept|((?:.{2,})?)slung|((?:.{2,})?)split|((?:.{2,})?)stuck|((?:.{2,})?)threw|((?:.{2,})?)tried|((?:.{2,})?)wound|((?:.{2,})?)wrote|(.+)eaued|(.+)icked|(.+)ieued|((?:.{2,})?)bought|((?:.{2,})?)called|((?:.{2,})?)fitted|((?:.{2,})?)melted|((?:.{2,})?)opened|((?:.{2,})?)played|((?:.{2,})?)served|((?:.{2,})?)spread|((?:.{2,})?)struck|((?:.{2,})?)strung|((?:.{2,})?)taught|((?:.{2,})?)turned|((?:.{2,})?)worked|(.+)cepsed|(.+)trixed|((?:.{2,})?)allowed|((?:.{2,})?)clothed|((?:.{2,})?)created|((?:.{2,})?)knitted|((?:.{2,})?)offered|((?:.{2,})?)sheared|((?:.{2,})?)smelled|((?:.{2,})?)spelled|((?:.{2,})?)spilled|((?:.{2,})?)started|((?:.{2,})?)thought|((?:.{2,})?)alighted|((?:.{2,})?)appeared|((?:.{2,})?)believed|((?:.{2,})?)included|((?:.{2,})?)considered)$")

pres_part_recognize_rule = re.compile(r"^(?:(.+[^b])ing|(.+[^e])ing|(.+[au])ing|(.+)iing|(.+)uing|(.+)xing|(.+)ying|(.+)ying|(.+)zing|(.+[aeiou])ying|(.+[cs])hing|((?:.{2,})?)using|(.+)eeing|(.+)ering|(.+)oeing|(.+)ssing|(.+)yeing|(.+)zzing|(.+[aeiou])zzing|(.+[aiy])nxing|((?:.{2,})?)adding|((?:.{2,})?)buying|((?:.{2,})?)hiding|((?:.{2,})?)making|((?:.{2,})?)mowing|((?:.{2,})?)paying|((?:.{2,})?)riding|((?:.{2,})?)saying|((?:.{2,})?)seeing|((?:.{2,})?)sewing|((?:.{2,})?)taking|((?:.{2,})?)trying|(.+)eauing|(.+)icking|(.+)ieuing|((?:.{2,})?)bearing|((?:.{2,})?)bidding|((?:.{2,})?)binding|((?:.{2,})?)calling|((?:.{2,})?)casting|((?:.{2,})?)cutting|((?:.{2,})?)drawing|((?:.{2,})?)feeding|((?:.{2,})?)fitting|((?:.{2,})?)growing|((?:.{2,})?)hanging|((?:.{2,})?)hearing|((?:.{2,})?)lending|((?:.{2,})?)melting|((?:.{2,})?)opening|((?:.{2,})?)playing|((?:.{2,})?)reading|((?:.{2,})?)running|((?:.{2,})?)selling|((?:.{2,})?)sending|((?:.{2,})?)serving|((?:.{2,})?)setting|((?:.{2,})?)shining|((?:.{2,})?)telling|((?:.{2,})?)turning|((?:.{2,})?)weaving|((?:.{2,})?)wedding|((?:.{2,})?)wetting|((?:.{2,})?)winding|((?:.{2,})?)working|((?:.{2,})?)writing|(.+)cepsing|(.+)trixing|((?:.{2,})?)allowing|((?:.{2,})?)breeding|((?:.{2,})?)cladding|((?:.{2,})?)clothing|((?:.{2,})?)creating|((?:.{2,})?)freezing|((?:.{2,})?)knitting|((?:.{2,})?)lighting|((?:.{2,})?)offering|((?:.{2,})?)shearing|((?:.{2,})?)shooting|((?:.{2,})?)shutting|((?:.{2,})?)sleeping|((?:.{2,})?)slinging|((?:.{2,})?)smelling|((?:.{2,})?)spelling|((?:.{2,})?)spilling|((?:.{2,})?)spinning|((?:.{2,})?)starting|((?:.{2,})?)sticking|((?:.{2,})?)striking|((?:.{2,})?)teaching|((?:.{2,})?)thinking|((?:.{2,})?)throwing|((?:.{2,})?)alighting|((?:.{2,})?)appearing|((?:.{2,})?)believing|((?:.{2,})?)including|((?:.{2,})?)inputting|((?:.{2,})?)splitting|((?:.{2,})?)spreading|((?:.{2,})?)stringing|((?:.{2,})?)considering)$")

past_part_recognize_rule = re.compile(r"^(?:(.+[^e])ed|(.+[au])ed|((?:.{2,})?)bid|((?:.{2,})?)cut|((?:.{2,})?)fed|((?:.{2,})?)lit|((?:.{2,})?)run|((?:.{2,})?)set|((?:.{2,})?)wed|(.+)eed|(.+)ied|(.+)ied|(.+)oed|(.+)ued|(.+)xed|(.+)yed|(.+)yed|(.+)zed|(.+[^b])ied|(.+[aeiou])yed|(.+[cs])hed|((?:.{2,})?)bred|((?:.{2,})?)cast|((?:.{2,})?)clad|((?:.{2,})?)hung|((?:.{2,})?)lent|((?:.{2,})?)made|((?:.{2,})?)mown|((?:.{2,})?)paid|((?:.{2,})?)read|((?:.{2,})?)said|((?:.{2,})?)seen|((?:.{2,})?)sent|((?:.{2,})?)sewn|((?:.{2,})?)shot|((?:.{2,})?)shut|((?:.{2,})?)sold|((?:.{2,})?)spun|((?:.{2,})?)told|((?:.{2,})?)used|(.+)ered|(.+)ssed|(.+)zzed|(.+[aeiou])zzed|(.+[aiy])nxed|((?:.{2,})?)added|((?:.{2,})?)borne|((?:.{2,})?)bound|((?:.{2,})?)drawn|((?:.{2,})?)grown|((?:.{2,})?)heard|((?:.{2,})?)input|((?:.{2,})?)shone|((?:.{2,})?)shorn|((?:.{2,})?)slept|((?:.{2,})?)slung|((?:.{2,})?)split|((?:.{2,})?)stuck|((?:.{2,})?)taken|((?:.{2,})?)tried|((?:.{2,})?)wound|((?:.{2,})?)woven|(.+)eaued|(.+)icked|(.+)ieued|((?:.{2,})?)bought|((?:.{2,})?)called|((?:.{2,})?)fitted|((?:.{2,})?)frozen|((?:.{2,})?)hidden|((?:.{2,})?)melted|((?:.{2,})?)opened|((?:.{2,})?)played|((?:.{2,})?)ridden|((?:.{2,})?)served|((?:.{2,})?)spread|((?:.{2,})?)struck|((?:.{2,})?)strung|((?:.{2,})?)taught|((?:.{2,})?)thrown|((?:.{2,})?)turned|((?:.{2,})?)wetted|((?:.{2,})?)worked|(.+)cepsed|(.+)trixed|((?:.{2,})?)allowed|((?:.{2,})?)clothed|((?:.{2,})?)created|((?:.{2,})?)knitted|((?:.{2,})?)offered|((?:.{2,})?)smelled|((?:.{2,})?)spelled|((?:.{2,})?)spilled|((?:.{2,})?)started|((?:.{2,})?)thought|((?:.{2,})?)written|((?:.{2,})?)alighted|((?:.{2,})?)appeared|((?:.{2,})?)believed|((?:.{2,})?)included|((?:.{2,})?)considered)$")

past_of_values = set(past_of.values())
pres_part_of_values = set(pres_part_of.values())
past_part_of_values = set(past_part_of.values())

plural_and_singular = {
    *past_of_values,
    *pres_part_of_values,
    *past_part_of_values,
}

def known_plural(word):
    """True if `word` is known to be plural.

    Args:
        word (str): Input word.

    Returns:
        bool: True if `word` is known to be plural.
    """
    lword = word.lower()
    return lword in singular_of or lword in plural_and_singular

def known_singular(word):
    """True if `word` is known to be singular.

    Args:
        word (str): Input word.

    Returns:
        bool: True if `word` is known to be singular.
    """
    lword = word.lower()
    return lword in plural_of or lword in plural_and_singular

def known_past(word):
    """True if `word` is known to be past.

    Args:
        word (str): Input word.

    Returns:
        bool: True if `word` is known to be past.
    """
    return word.lower() in past_of_values

def known_past_part(word):
    """True if `word` is known to be past participle.

    Args:
        word (str): Input word.

    Returns:
        bool: True if `word` is known to be past participle.
    """
    return word.lower() in past_part_of_values

def known_pres_part(word):
    """True if `word` is known to be present participle.

    Args:
        word (str): Input word.

    Returns:
        bool: True if `word` is known to be present participle.
    """
    return word.lower() in pres_part_of_values

def convert_to_plural(word):
    """Convert `word` to plural form.

    Args:
        word (str): Input word or collocation.

    Returns:
        bool: The plural form of `word`.
    """
    if word in plural_of:
        return plural_of[word]
    if not word.islower() and word.lower() in plural_of:
        return plural_of[word.lower()]
    if known_plural(word):
        return word
    match = plural_convert_rule_regex.match(word.lower())
    if match:
        for i, group in enumerate(match.groups()):
            if group is not None:
                return group + plural_convert_outputs[i]
    return None

def convert_to_singular(word):
    """Convert `word` to singular form.

    Args:
        word (str): Input word or collocation.

    Returns:
        bool: The singular form of `word`.
    """
    if word in singular_of:
        return singular_of[word]
    if not word.islower() and word.lower() in singular_of:
        return singular_of[word.lower()]
    match = singular_convert_rule_regex.match(word.lower())
    if match:
        for i, group in enumerate(match.groups()):
            if group is not None:
                return group + singular_convert_outputs[i]
    return None

def convert_to_past(word):
    """Convert `word` to past form.

    Args:
        word (str): Input word or collocation.

    Returns:
        bool: The past form of `word`.
    """
    if word in past_of:
        return past_of[word]
    if not word.islower() and word.lower() in past_of:
        return past_of[word.lower()]
    if is_past(word):
        return word
    match = past_convert_rule_regex.match(word.lower())
    if match:
        for i, group in enumerate(match.groups()):
            if group is not None:
                return group + past_convert_outputs[i]
    return None

def convert_to_pres_part(word):
    """Convert `word` to present participle form.

    Args:
        word (str): Input word or collocation.

    Returns:
        bool: The present participle form of `word`.
    """
    if word in pres_part_of:
        return pres_part_of[word]
    if not word.islower() and word.lower() in pres_part_of:
        return pres_part_of[word.lower()]
    if is_pres_part(word):
        return word
    match = pres_part_convert_rule_regex.match(word.lower())
    if match:
        for i, group in enumerate(match.groups()):
            if group is not None:
                return group + pres_part_convert_outputs[i]
    return None

def convert_to_past_part(word):
    """Convert `word` to past participle form.

    Args:
        word (str): Input word or collocation.

    Returns:
        bool: The past participle form of `word`.
    """
    if word in past_part_of:
        return past_part_of[word]
    if not word.islower() and word.lower() in past_part_of:
        return past_part_of[word.lower()]
    if is_past_part(word):
        return word
    match = past_part_convert_rule_regex.match(word.lower())
    if match:
        for i, group in enumerate(match.groups()):
            if group is not None:
                return group + past_part_convert_outputs[i]
    return None

def is_plural(word: str):
    """Detect whether `word` is in plural form.

    Args:
        word (str): Input word or collocation.

    Returns:
        bool: True if `word` is deemed plural.
    """
    if known_plural(word):
        return True
    if known_singular(word):
        return False
    if plural_recognize_rule.match(word):
        return True
    return False

def is_singular(word: str):
    """Detect whether `word` is in singular form.

    Args:
        word (str): Input word or collocation.

    Returns:
        bool: True if `word` is deemed singular.
    """
    if known_singular(word):
        return True
    if known_plural(word):
        return False
    if singular_recognize_rule.match(word):
        return True
    return not is_plural(word)

def is_past(word: str):
    """Detect whether `word` is in past form.

    Args:
        word (str): Input word or collocation.

    Returns:
        bool: True if `word` is deemed past.
    """
    if known_past(word):
        return True
    if past_recognize_rule.match(word):
        return True
    return False

def is_pres_part(word: str):
    """Detect whether `word` is in present participle form.

    Args:
        word (str): Input word or collocation.

    Returns:
        bool: True if `word` is deemed present participle.
    """
    if known_pres_part(word):
        return True
    if pres_part_recognize_rule.match(word):
        return True
    return False

def is_past_part(word: str):
    """Detect whether `word` is in past participle form.

    Args:
        word (str): Input word or collocation.

    Returns:
        bool: True if `word` is deemed past participle.
    """
    if known_past_part(word):
        return True
    if past_part_recognize_rule.match(word):
        return True
    return False
