ContributorTools.haveOutputted = False

def checkDifferentDescriptions (clientinfo, serverinfo):
    try:
        maxDistance = sys.argv[1]
    except:
        maxDistance = 5

    if clientinfo['name'] != serverinfo['name'] and Levenshtein.distance(clientinfo['name'], serverinfo['name']) <= maxDistance:
        output(clientinfo, serverinfo)
    elif clientinfo['name'] != serverinfo['name'] and clientinfo['name'].lower() == serverinfo['name'].lower():
        output(clientinfo, serverinfo)
    elif clientinfo['desc'] != serverinfo['desc'] and Levenshtein.distance(clientinfo['desc'], serverinfo['desc']) <= maxDistance:
        output(clientinfo, serverinfo)
    elif clientinfo['desc'] != serverinfo['desc'] and clientinfo['desc'].lower() == serverinfo['desc'].lower():
        output(clientinfo, serverinfo)

def output(clientinfo, serverinfo):
    if ContributorTools.haveOutputted:
        print '----'

    ContributorTools.haveOutputted = True

    print 'Client name:', clientinfo['name'], '(' + clientinfo['searge'] + ')'
    print 'Client description:', clientinfo['desc']
    print 'Server name:', serverinfo['name'], '(' + serverinfo['searge'] + ')'
    print 'Server description:', serverinfo['desc']

ContributorTools.forEachMember(checkDifferentDescriptions)
            serverinfo["name"],
            "pc"
            + serverinfo["searge"][1].replace("u", "m").replace("i", "f")
            + " "
            + clientinfo["searge"]
            + " "
            + serverinfo["searge"],
        )
    elif ContributorTools.isSeargeName(clientinfo["name"]) and not ContributorTools.isSeargeName(serverinfo["name"]):
        safeOutput(
            "1",
            clientinfo["name"],
            "ps"
            + clientinfo["searge"][1].replace("u", "m").replace("i", "f")
            + " "
            + serverinfo["searge"]
            + " "
            + clientinfo["searge"],
        )


def safeOutput(side, name, out):
    for member in ContributorTools.members[side].values():
        if member["name"] == name:
            print "POSSIBLY BROKEN:", out

    print out


ContributorTools.forEachMember(checkNames)