def all_ESM10(TC, TA, CO2, HCO3, CO3, pH, OH, BAlk, KB):
    """Buffer factors from ESM10 with corrections for typographical errors described by
    RAH18 and OEDG18.
    """
    H = 10.0 ** -pH
    S = HCO3 + 4 * CO3 + H * BAlk / (KB + H) + H + OH
    P = 2 * CO2 + HCO3
    Q = HCO3 - H * BAlk / (KB + H) - H - OH
    AC = HCO3 + 2 * CO3
    gammaTC = TC - AC ** 2 / S
    betaTC = (TC * S - AC ** 2) / AC
    omegaTC = TC - AC * P / Q
    gammaTA = (AC ** 2 - TC * S) / AC
    betaTA = AC ** 2 / TC - S
    omegaTA = AC - TC * Q / P
    return {'gammaTC': gammaTC, 'betaTC': betaTC, 'omegaTC': omegaTC,
        'gammaTA': gammaTA, 'betaTA': betaTA, 'omegaTA': omegaTA}
