/*
 * English resources for WLDAP32
 *
 * Copyright 2005 Hans Leidekker
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "windef.h"

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT

STRINGTABLE
{
    0 "Success"
    1 "Operations Error"
    2 "Protocol Error"
    3 "Time Limit Exceeded"
    4 "Size Limit Exceeded"
    5 "Compare False"
    6 "Compare True"
    7 "Authentication Method Not Supported"
    8 "Strong Authentication Required"
    9 "Referral (v2)"
    10 "Referral"
    11 "Administration Limit Exceeded"
    12 "Unavailable Critical Extension"
    13 "Confidentiality Required"
    14 ""
    15 ""
    16 "No Such Attribute"
    17 "Undefined Type"
    18 "Inappropriate Matching"
    19 "Constraint Violation"
    20 "Attribute Or Value Exists"
    21 "Invalid Syntax"
    22 ""
    23 ""
    24 ""
    25 ""
    26 ""
    27 ""
    28 ""
    29 ""
    30 ""
    31 ""
    32 "No Such Object"
    33 "Alias Problem"
    34 "Invalid DN Syntax"
    35 "Is Leaf"
    36 "Alias Dereference Problem"
    37 ""
    38 ""
    39 ""
    40 ""
    41 ""
    42 ""
    43 ""
    44 ""
    45 ""
    46 ""
    47 ""
    48 "Inappropriate Authentication"
    49 "Invalid Credentials"
    50 "Insufficient Rights"
    51 "Busy"
    52 "Unavailable"
    53 "Unwilling To Perform"
    54 "Loop Detected"
    55 ""
    56 ""
    57 ""
    58 ""
    59 ""
    60 "Sort Control Missing"
    61 "Index range error"
    62 ""
    63 ""
    64 "Naming Violation"
    65 "Object Class Violation"
    66 "Not allowed on Non-leaf"
    67 "Not allowed on RDN"
    68 "Already Exists"
    69 "No Object Class Mods"
    70 "Results Too Large"
    71 "Affects Multiple DSAs"
    72 ""
    73 ""
    74 ""
    75 ""
    76 ""
    77 ""
    78 ""
    79 ""
    80 "Other"
    81 "Server Down"
    82 "Local Error"
    83 "Encoding Error"
    84 "Decoding Error"
    85 "Timeout"
    86 "Auth Unknown"
    87 "Filter Error"
    88 "User Cancelled"
    89 "Parameter Error"
    90 "No Memory"
    91 "Can't connect to the LDAP server"
    92 "Operation not supported by this version of the LDAP protocol"
    93 "Specified control was not found in message"
    94 "No result present in message"
    95 "More results returned"
    96 "Loop while handling referrals"
    97 "Referral hop limit exceeded"
}
