public class com.sun.security.auth.module.LdapLoginModule implements javax.security.auth.spi.LoginModule
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.security.auth.module.LdapLoginModule
  super_class: java.lang.Object
{
  private static final java.lang.String USERNAME_KEY;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.auth.login.name"

  private static final java.lang.String PASSWORD_KEY;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "javax.security.auth.login.password"

  private static final java.lang.String USER_PROVIDER;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "userProvider"

  private static final java.lang.String USER_FILTER;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "userFilter"

  private static final java.lang.String AUTHC_IDENTITY;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "authIdentity"

  private static final java.lang.String AUTHZ_IDENTITY;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "authzIdentity"

  private static final java.lang.String USERNAME_TOKEN;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "{USERNAME}"

  private static final java.util.regex.Pattern USERNAME_PATTERN;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.lang.String userProvider;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String userFilter;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String authcIdentity;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String authzIdentity;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String authzIdentityAttr;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private boolean useSSL;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean authFirst;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean authOnly;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean useFirstPass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean tryFirstPass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean storePass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean clearPass;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean debug;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean succeeded;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean commitSucceeded;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String username;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private char[] password;
    descriptor: [C
    flags: (0x0002) ACC_PRIVATE

  private com.sun.security.auth.LdapPrincipal ldapPrincipal;
    descriptor: Lcom/sun/security/auth/LdapPrincipal;
    flags: (0x0002) ACC_PRIVATE

  private com.sun.security.auth.UserPrincipal userPrincipal;
    descriptor: Lcom/sun/security/auth/UserPrincipal;
    flags: (0x0002) ACC_PRIVATE

  private com.sun.security.auth.UserPrincipal authzPrincipal;
    descriptor: Lcom/sun/security/auth/UserPrincipal;
    flags: (0x0002) ACC_PRIVATE

  private javax.security.auth.Subject subject;
    descriptor: Ljavax/security/auth/Subject;
    flags: (0x0002) ACC_PRIVATE

  private javax.security.auth.callback.CallbackHandler callbackHandler;
    descriptor: Ljavax/security/auth/callback/CallbackHandler;
    flags: (0x0002) ACC_PRIVATE

  private java.util.Map<java.lang.String, java.lang.Object> sharedState;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;

  private java.util.Map<java.lang.String, ?> options;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;*>;

  private javax.naming.ldap.LdapContext ctx;
    descriptor: Ljavax/naming/ldap/LdapContext;
    flags: (0x0002) ACC_PRIVATE

  private java.util.regex.Matcher identityMatcher;
    descriptor: Ljava/util/regex/Matcher;
    flags: (0x0002) ACC_PRIVATE

  private java.util.regex.Matcher filterMatcher;
    descriptor: Ljava/util/regex/Matcher;
    flags: (0x0002) ACC_PRIVATE

  private java.util.Hashtable<java.lang.String, java.lang.Object> ldapEnvironment;
    descriptor: Ljava/util/Hashtable;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Hashtable<Ljava/lang/String;Ljava/lang/Object;>;

  private javax.naming.directory.SearchControls constraints;
    descriptor: Ljavax/naming/directory/SearchControls;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 317
            ldc "\\{USERNAME\\}"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
         1: .line 316
            putstatic com.sun.security.auth.module.LdapLoginModule.USERNAME_PATTERN:Ljava/util/regex/Pattern;
         2: .line 317
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
         0: .line 301
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 324
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.authzIdentityAttr:Ljava/lang/String;
         2: .line 325
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.LdapLoginModule.useSSL:Z
         3: .line 326
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.authFirst:Z
         4: .line 327
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.authOnly:Z
         5: .line 328
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.useFirstPass:Z
         6: .line 329
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.tryFirstPass:Z
         7: .line 330
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.storePass:Z
         8: .line 331
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.clearPass:Z
         9: .line 332
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.debug:Z
        10: .line 335
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.succeeded:Z
        11: .line 336
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.commitSucceeded:Z
        12: .line 353
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.identityMatcher:Ljava/util/regex/Matcher;
        13: .line 354
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.filterMatcher:Ljava/util/regex/Matcher;
        14: .line 356
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.constraints:Ljavax/naming/directory/SearchControls;
        15: .line 301
            return
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lcom/sun/security/auth/module/LdapLoginModule;

  public void initialize(javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler, java.util.Map<java.lang.String, ?>, java.util.Map<java.lang.String, ?>);
    descriptor: (Ljavax/security/auth/Subject;Ljavax/security/auth/callback/CallbackHandler;Ljava/util/Map;Ljava/util/Map;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
        start local 1 // javax.security.auth.Subject subject
        start local 2 // javax.security.auth.callback.CallbackHandler callbackHandler
        start local 3 // java.util.Map sharedState
        start local 4 // java.util.Map options
         0: .line 375
            aload 0 /* this */
            aload 1 /* subject */
            putfield com.sun.security.auth.module.LdapLoginModule.subject:Ljavax/security/auth/Subject;
         1: .line 376
            aload 0 /* this */
            aload 2 /* callbackHandler */
            putfield com.sun.security.auth.module.LdapLoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
         2: .line 377
            aload 0 /* this */
            aload 3 /* sharedState */
            putfield com.sun.security.auth.module.LdapLoginModule.sharedState:Ljava/util/Map;
         3: .line 378
            aload 0 /* this */
            aload 4 /* options */
            putfield com.sun.security.auth.module.LdapLoginModule.options:Ljava/util/Map;
         4: .line 380
            aload 0 /* this */
            new java.util.Hashtable
            dup
            bipush 9
            invokespecial java.util.Hashtable.<init>:(I)V
            putfield com.sun.security.auth.module.LdapLoginModule.ldapEnvironment:Ljava/util/Hashtable;
         5: .line 381
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapEnvironment:Ljava/util/Hashtable;
            ldc "java.naming.factory.initial"
         6: .line 382
            ldc "com.sun.jndi.ldap.LdapCtxFactory"
         7: .line 381
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 385
            aload 4 /* options */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 12
      StackMap locals: com.sun.security.auth.module.LdapLoginModule javax.security.auth.Subject javax.security.auth.callback.CallbackHandler java.util.Map java.util.Map top java.util.Iterator
      StackMap stack:
         9: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* key */
        start local 5 // java.lang.String key
        10: .line 386
            aload 5 /* key */
            bipush 46
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmple 12
        11: .line 387
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapEnvironment:Ljava/util/Hashtable;
            aload 5 /* key */
            aload 4 /* options */
            aload 5 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 5 // java.lang.String key
        12: .line 385
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        13: .line 393
            aload 0 /* this */
            aload 4 /* options */
            ldc "userProvider"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.LdapLoginModule.userProvider:Ljava/lang/String;
        14: .line 394
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userProvider:Ljava/lang/String;
            ifnull 16
        15: .line 395
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapEnvironment:Ljava/util/Hashtable;
            ldc "java.naming.provider.url"
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userProvider:Ljava/lang/String;
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 398
      StackMap locals: com.sun.security.auth.module.LdapLoginModule javax.security.auth.Subject javax.security.auth.callback.CallbackHandler java.util.Map java.util.Map
      StackMap stack:
            aload 0 /* this */
            aload 4 /* options */
            ldc "authIdentity"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.LdapLoginModule.authcIdentity:Ljava/lang/String;
        17: .line 399
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authcIdentity:Ljava/lang/String;
            ifnull 20
        18: .line 400
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authcIdentity:Ljava/lang/String;
            ldc "{USERNAME}"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            iconst_m1
            if_icmpeq 20
        19: .line 401
            aload 0 /* this */
            getstatic com.sun.security.auth.module.LdapLoginModule.USERNAME_PATTERN:Ljava/util/regex/Pattern;
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authcIdentity:Ljava/lang/String;
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            putfield com.sun.security.auth.module.LdapLoginModule.identityMatcher:Ljava/util/regex/Matcher;
        20: .line 404
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* options */
            ldc "userFilter"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.LdapLoginModule.userFilter:Ljava/lang/String;
        21: .line 405
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userFilter:Ljava/lang/String;
            ifnull 27
        22: .line 406
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userFilter:Ljava/lang/String;
            ldc "{USERNAME}"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            iconst_m1
            if_icmpeq 24
        23: .line 407
            aload 0 /* this */
            getstatic com.sun.security.auth.module.LdapLoginModule.USERNAME_PATTERN:Ljava/util/regex/Pattern;
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userFilter:Ljava/lang/String;
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            putfield com.sun.security.auth.module.LdapLoginModule.filterMatcher:Ljava/util/regex/Matcher;
        24: .line 409
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new javax.naming.directory.SearchControls
            dup
            invokespecial javax.naming.directory.SearchControls.<init>:()V
            putfield com.sun.security.auth.module.LdapLoginModule.constraints:Ljavax/naming/directory/SearchControls;
        25: .line 410
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.constraints:Ljavax/naming/directory/SearchControls;
            iconst_2
            invokevirtual javax.naming.directory.SearchControls.setSearchScope:(I)V
        26: .line 411
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.constraints:Ljavax/naming/directory/SearchControls;
            iconst_0
            anewarray java.lang.String
            invokevirtual javax.naming.directory.SearchControls.setReturningAttributes:([Ljava/lang/String;)V
        27: .line 414
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* options */
            ldc "authzIdentity"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.LdapLoginModule.authzIdentity:Ljava/lang/String;
        28: .line 415
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzIdentity:Ljava/lang/String;
            ifnull 38
        29: .line 416
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzIdentity:Ljava/lang/String;
            ldc "{"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 38
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzIdentity:Ljava/lang/String;
            ldc "}"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 38
        30: .line 417
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.constraints:Ljavax/naming/directory/SearchControls;
            ifnull 37
        31: .line 418
            aload 0 /* this */
        32: .line 419
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzIdentity:Ljava/lang/String;
            iconst_1
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzIdentity:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
        33: .line 418
            putfield com.sun.security.auth.module.LdapLoginModule.authzIdentityAttr:Ljava/lang/String;
        34: .line 420
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.constraints:Ljavax/naming/directory/SearchControls;
        35: .line 421
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzIdentityAttr:Ljava/lang/String;
            aastore
        36: .line 420
            invokevirtual javax.naming.directory.SearchControls.setReturningAttributes:([Ljava/lang/String;)V
        37: .line 423
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.authzIdentity:Ljava/lang/String;
        38: .line 427
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authcIdentity:Ljava/lang/String;
            ifnull 43
        39: .line 428
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userFilter:Ljava/lang/String;
            ifnull 42
        40: .line 429
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.LdapLoginModule.authFirst:Z
        41: .line 430
            goto 43
        42: .line 431
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.LdapLoginModule.authOnly:Z
        43: .line 435
      StackMap locals:
      StackMap stack:
            ldc "false"
            aload 4 /* options */
            ldc "useSSL"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 47
        44: .line 436
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.useSSL:Z
        45: .line 437
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapEnvironment:Ljava/util/Hashtable;
            ldc "java.naming.security.protocol"
            invokevirtual java.util.Hashtable.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        46: .line 438
            goto 48
        47: .line 439
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapEnvironment:Ljava/util/Hashtable;
            ldc "java.naming.security.protocol"
            ldc "ssl"
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        48: .line 442
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
        49: .line 443
            ldc "true"
            aload 4 /* options */
            ldc "tryFirstPass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        50: .line 442
            putfield com.sun.security.auth.module.LdapLoginModule.tryFirstPass:Z
        51: .line 445
            aload 0 /* this */
        52: .line 446
            ldc "true"
            aload 4 /* options */
            ldc "useFirstPass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        53: .line 445
            putfield com.sun.security.auth.module.LdapLoginModule.useFirstPass:Z
        54: .line 448
            aload 0 /* this */
            ldc "true"
            aload 4 /* options */
            ldc "storePass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            putfield com.sun.security.auth.module.LdapLoginModule.storePass:Z
        55: .line 450
            aload 0 /* this */
            ldc "true"
            aload 4 /* options */
            ldc "clearPass"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            putfield com.sun.security.auth.module.LdapLoginModule.clearPass:Z
        56: .line 452
            aload 0 /* this */
            ldc "true"
            aload 4 /* options */
            ldc "debug"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            putfield com.sun.security.auth.module.LdapLoginModule.debug:Z
        57: .line 454
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 77
        58: .line 455
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authFirst:Z
            ifeq 65
        59: .line 456
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] authentication-first mode; "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        60: .line 458
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.useSSL:Z
            ifeq 61
            ldc "SSL enabled"
            goto 62
      StackMap locals: com.sun.security.auth.module.LdapLoginModule javax.security.auth.Subject javax.security.auth.callback.CallbackHandler java.util.Map java.util.Map
      StackMap stack: java.io.PrintStream java.lang.StringBuilder
        61: ldc "SSL disabled"
      StackMap locals: com.sun.security.auth.module.LdapLoginModule javax.security.auth.Subject javax.security.auth.callback.CallbackHandler java.util.Map java.util.Map
      StackMap stack: java.io.PrintStream java.lang.StringBuilder java.lang.String
        62: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        63: .line 456
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        64: .line 459
            goto 77
      StackMap locals:
      StackMap stack:
        65: aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authOnly:Z
            ifeq 72
        66: .line 460
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] authentication-only mode; "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        67: .line 462
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.useSSL:Z
            ifeq 68
            ldc "SSL enabled"
            goto 69
      StackMap locals: com.sun.security.auth.module.LdapLoginModule javax.security.auth.Subject javax.security.auth.callback.CallbackHandler java.util.Map java.util.Map
      StackMap stack: java.io.PrintStream java.lang.StringBuilder
        68: ldc "SSL disabled"
      StackMap locals: com.sun.security.auth.module.LdapLoginModule javax.security.auth.Subject javax.security.auth.callback.CallbackHandler java.util.Map java.util.Map
      StackMap stack: java.io.PrintStream java.lang.StringBuilder java.lang.String
        69: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        70: .line 460
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        71: .line 463
            goto 77
        72: .line 464
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] search-first mode; "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        73: .line 466
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.useSSL:Z
            ifeq 74
            ldc "SSL enabled"
            goto 75
      StackMap locals: com.sun.security.auth.module.LdapLoginModule javax.security.auth.Subject javax.security.auth.callback.CallbackHandler java.util.Map java.util.Map
      StackMap stack: java.io.PrintStream java.lang.StringBuilder
        74: ldc "SSL disabled"
      StackMap locals: com.sun.security.auth.module.LdapLoginModule javax.security.auth.Subject javax.security.auth.callback.CallbackHandler java.util.Map java.util.Map
      StackMap stack: java.io.PrintStream java.lang.StringBuilder java.lang.String
        75: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        76: .line 464
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        77: .line 469
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.util.Map options
        end local 3 // java.util.Map sharedState
        end local 2 // javax.security.auth.callback.CallbackHandler callbackHandler
        end local 1 // javax.security.auth.Subject subject
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   78     0             this  Lcom/sun/security/auth/module/LdapLoginModule;
            0   78     1          subject  Ljavax/security/auth/Subject;
            0   78     2  callbackHandler  Ljavax/security/auth/callback/CallbackHandler;
            0   78     3      sharedState  Ljava/util/Map<Ljava/lang/String;*>;
            0   78     4          options  Ljava/util/Map<Ljava/lang/String;*>;
           10   12     5              key  Ljava/lang/String;
    Signature: (Ljavax/security/auth/Subject;Ljavax/security/auth/callback/CallbackHandler;Ljava/util/Map<Ljava/lang/String;*>;Ljava/util/Map<Ljava/lang/String;*>;)V
    MethodParameters:
                 Name  Flags
      subject          
      callbackHandler  
      sharedState      
      options          

  public boolean login();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
         0: .line 485
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userProvider:Ljava/lang/String;
            ifnonnull 4
         1: .line 486
            new javax.security.auth.login.LoginException
            dup
         2: .line 487
            ldc "Unable to locate the LDAP directory service"
         3: .line 486
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 490
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 8
         5: .line 491
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] user provider: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 492
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userProvider:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         7: .line 491
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         8: .line 496
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.tryFirstPass:Z
            ifeq 21
         9: .line 501
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.security.auth.module.LdapLoginModule.attemptAuthentication:(Z)V
        10: .line 504
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.LdapLoginModule.succeeded:Z
        11: .line 505
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 13
        12: .line 506
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[LdapLoginModule] tryFirstPass succeeded"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        13: .line 509
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        14: .line 511
      StackMap locals:
      StackMap stack: javax.security.auth.login.LoginException
            astore 1 /* le */
        start local 1 // javax.security.auth.login.LoginException le
        15: .line 513
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.LdapLoginModule.cleanState:()V
        16: .line 514
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 32
        17: .line 515
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] tryFirstPass failed: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        18: .line 516
            aload 1 /* le */
            invokevirtual javax.security.auth.login.LoginException.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 515
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 1 // javax.security.auth.login.LoginException le
        20: .line 520
            goto 32
      StackMap locals:
      StackMap stack:
        21: aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.useFirstPass:Z
            ifeq 32
        22: .line 525
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.security.auth.module.LdapLoginModule.attemptAuthentication:(Z)V
        23: .line 528
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.LdapLoginModule.succeeded:Z
        24: .line 529
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 26
        25: .line 530
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[LdapLoginModule] useFirstPass succeeded"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        26: .line 533
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        27: .line 535
      StackMap locals:
      StackMap stack: javax.security.auth.login.LoginException
            astore 1 /* le */
        start local 1 // javax.security.auth.login.LoginException le
        28: .line 537
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.LdapLoginModule.cleanState:()V
        29: .line 538
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 31
        30: .line 539
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[LdapLoginModule] useFirstPass failed"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        31: .line 542
      StackMap locals: javax.security.auth.login.LoginException
      StackMap stack:
            aload 1 /* le */
            athrow
        end local 1 // javax.security.auth.login.LoginException le
        32: .line 548
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            invokevirtual com.sun.security.auth.module.LdapLoginModule.attemptAuthentication:(Z)V
        33: .line 551
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.LdapLoginModule.succeeded:Z
        34: .line 552
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 36
        35: .line 553
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[LdapLoginModule] authentication succeeded"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        36: .line 556
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        37: .line 558
      StackMap locals:
      StackMap stack: javax.security.auth.login.LoginException
            astore 1 /* le */
        start local 1 // javax.security.auth.login.LoginException le
        38: .line 559
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.LdapLoginModule.cleanState:()V
        39: .line 560
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 41
        40: .line 561
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[LdapLoginModule] authentication failed"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        41: .line 564
      StackMap locals: javax.security.auth.login.LoginException
      StackMap stack:
            aload 1 /* le */
            athrow
        end local 1 // javax.security.auth.login.LoginException le
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   42     0  this  Lcom/sun/security/auth/module/LdapLoginModule;
           15   20     1    le  Ljavax/security/auth/login/LoginException;
           28   32     1    le  Ljavax/security/auth/login/LoginException;
           38   42     1    le  Ljavax/security/auth/login/LoginException;
      Exception table:
        from    to  target  type
           9    13      14  Class javax.security.auth.login.LoginException
          22    26      27  Class javax.security.auth.login.LoginException
          32    36      37  Class javax.security.auth.login.LoginException
    Exceptions:
      throws javax.security.auth.login.LoginException

  public boolean commit();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
         0: .line 591
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.succeeded:Z
            ifne 2
         1: .line 592
            iconst_0
            ireturn
         2: .line 594
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifeq 5
         3: .line 595
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.LdapLoginModule.cleanState:()V
         4: .line 596
            new javax.security.auth.login.LoginException
            dup
            ldc "Subject is read-only"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 599
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            astore 1 /* principals */
        start local 1 // java.util.Set principals
         6: .line 600
            aload 1 /* principals */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapPrincipal:Lcom/sun/security/auth/LdapPrincipal;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 8
         7: .line 601
            aload 1 /* principals */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapPrincipal:Lcom/sun/security/auth/LdapPrincipal;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         8: .line 603
      StackMap locals: java.util.Set
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 13
         9: .line 604
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] added LdapPrincipal \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 606
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapPrincipal:Lcom/sun/security/auth/LdapPrincipal;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        11: .line 607
            ldc "\" to Subject"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 604
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        13: .line 610
      StackMap locals:
      StackMap stack:
            aload 1 /* principals */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userPrincipal:Lcom/sun/security/auth/UserPrincipal;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 15
        14: .line 611
            aload 1 /* principals */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userPrincipal:Lcom/sun/security/auth/UserPrincipal;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        15: .line 613
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 20
        16: .line 614
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] added UserPrincipal \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        17: .line 616
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userPrincipal:Lcom/sun/security/auth/UserPrincipal;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        18: .line 617
            ldc "\" to Subject"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 614
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        20: .line 620
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzPrincipal:Lcom/sun/security/auth/UserPrincipal;
            ifnull 28
        21: .line 621
            aload 1 /* principals */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzPrincipal:Lcom/sun/security/auth/UserPrincipal;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 28
        22: .line 622
            aload 1 /* principals */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzPrincipal:Lcom/sun/security/auth/UserPrincipal;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        23: .line 624
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 28
        24: .line 625
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] added UserPrincipal \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        25: .line 627
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzPrincipal:Lcom/sun/security/auth/UserPrincipal;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        26: .line 628
            ldc "\" to Subject"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        27: .line 625
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 1 // java.util.Set principals
        28: .line 633
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.LdapLoginModule.cleanState:()V
        29: .line 634
            aload 0 /* this */
            iconst_1
            putfield com.sun.security.auth.module.LdapLoginModule.commitSucceeded:Z
        30: .line 635
            iconst_1
            ireturn
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   31     0        this  Lcom/sun/security/auth/module/LdapLoginModule;
            6   28     1  principals  Ljava/util/Set<Ljava/security/Principal;>;
    Exceptions:
      throws javax.security.auth.login.LoginException

  public boolean abort();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
         0: .line 655
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 2
         1: .line 656
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[LdapLoginModule] aborted authentication"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 659
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.succeeded:Z
            ifne 4
         3: .line 660
            iconst_0
            ireturn
         4: .line 661
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.succeeded:Z
            ifeq 11
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.commitSucceeded:Z
            ifne 11
         5: .line 664
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.succeeded:Z
         6: .line 665
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.LdapLoginModule.cleanState:()V
         7: .line 667
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.ldapPrincipal:Lcom/sun/security/auth/LdapPrincipal;
         8: .line 668
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.userPrincipal:Lcom/sun/security/auth/UserPrincipal;
         9: .line 669
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.authzPrincipal:Lcom/sun/security/auth/UserPrincipal;
        10: .line 670
            goto 12
        11: .line 673
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.LdapLoginModule.logout:()Z
            pop
        12: .line 675
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lcom/sun/security/auth/module/LdapLoginModule;
    Exceptions:
      throws javax.security.auth.login.LoginException

  public boolean logout();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
         0: .line 689
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.isReadOnly:()Z
            ifeq 3
         1: .line 690
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.LdapLoginModule.cleanState:()V
         2: .line 691
            new javax.security.auth.login.LoginException
            dup
            ldc "Subject is read-only"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 693
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.subject:Ljavax/security/auth/Subject;
            invokevirtual javax.security.auth.Subject.getPrincipals:()Ljava/util/Set;
            astore 1 /* principals */
        start local 1 // java.util.Set principals
         4: .line 694
            aload 1 /* principals */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapPrincipal:Lcom/sun/security/auth/LdapPrincipal;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         5: .line 695
            aload 1 /* principals */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userPrincipal:Lcom/sun/security/auth/UserPrincipal;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         6: .line 696
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzIdentity:Ljava/lang/String;
            ifnull 8
         7: .line 697
            aload 1 /* principals */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzPrincipal:Lcom/sun/security/auth/UserPrincipal;
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         8: .line 701
      StackMap locals: java.util.Set
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.LdapLoginModule.cleanState:()V
         9: .line 702
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.succeeded:Z
        10: .line 703
            aload 0 /* this */
            iconst_0
            putfield com.sun.security.auth.module.LdapLoginModule.commitSucceeded:Z
        11: .line 705
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.ldapPrincipal:Lcom/sun/security/auth/LdapPrincipal;
        12: .line 706
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.userPrincipal:Lcom/sun/security/auth/UserPrincipal;
        13: .line 707
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.authzPrincipal:Lcom/sun/security/auth/UserPrincipal;
        14: .line 709
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 16
        15: .line 710
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[LdapLoginModule] logged out Subject"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        16: .line 712
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // java.util.Set principals
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   17     0        this  Lcom/sun/security/auth/module/LdapLoginModule;
            4   17     1  principals  Ljava/util/Set<Ljava/security/Principal;>;
    Exceptions:
      throws javax.security.auth.login.LoginException

  private void attemptAuthentication(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
        start local 1 // boolean getPasswdFromSharedState
         0: .line 726
            aload 0 /* this */
            iload 1 /* getPasswdFromSharedState */
            invokevirtual com.sun.security.auth.module.LdapLoginModule.getUsernamePassword:(Z)V
         1: .line 728
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.password:[C
            ifnull 2
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.password:[C
            arraylength
            ifne 4
         2: .line 730
      StackMap locals:
      StackMap stack:
            new javax.security.auth.login.FailedLoginException
            dup
            ldc "No password was supplied"
            invokespecial javax.security.auth.login.FailedLoginException.<init>:(Ljava/lang/String;)V
         3: .line 729
            athrow
         4: .line 733
      StackMap locals:
      StackMap stack:
            ldc ""
            astore 2 /* dn */
        start local 2 // java.lang.String dn
         5: .line 735
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authFirst:Z
            ifne 6
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authOnly:Z
            ifeq 25
         6: .line 738
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.identityMatcher:Ljava/util/regex/Matcher;
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authcIdentity:Ljava/lang/String;
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
            invokevirtual com.sun.security.auth.module.LdapLoginModule.replaceUsernameToken:(Ljava/util/regex/Matcher;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
         7: .line 737
            astore 3 /* id */
        start local 3 // java.lang.String id
         8: .line 741
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapEnvironment:Ljava/util/Hashtable;
            ldc "java.naming.security.credentials"
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.password:[C
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         9: .line 742
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapEnvironment:Ljava/util/Hashtable;
            ldc "java.naming.security.principal"
            aload 3 /* id */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 744
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 14
        11: .line 745
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] attempting to authenticate user: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        12: .line 746
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 745
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        14: .line 751
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            new javax.naming.ldap.InitialLdapContext
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapEnvironment:Ljava/util/Hashtable;
            aconst_null
            invokespecial javax.naming.ldap.InitialLdapContext.<init>:(Ljava/util/Hashtable;[Ljavax/naming/ldap/Control;)V
            putfield com.sun.security.auth.module.LdapLoginModule.ctx:Ljavax/naming/ldap/LdapContext;
        15: .line 753
            goto 20
      StackMap locals:
      StackMap stack: javax.naming.NamingException
        16: astore 4 /* e */
        start local 4 // javax.naming.NamingException e
        17: .line 755
            new javax.security.auth.login.FailedLoginException
            dup
            ldc "Cannot bind to LDAP server"
            invokespecial javax.security.auth.login.FailedLoginException.<init>:(Ljava/lang/String;)V
        18: .line 756
            aload 4 /* e */
            invokevirtual javax.security.auth.login.FailedLoginException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        19: .line 754
            checkcast javax.security.auth.login.LoginException
            athrow
        end local 4 // javax.naming.NamingException e
        20: .line 762
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userFilter:Ljava/lang/String;
            ifnull 23
        21: .line 763
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ctx:Ljavax/naming/ldap/LdapContext;
            invokevirtual com.sun.security.auth.module.LdapLoginModule.findUserDN:(Ljavax/naming/ldap/LdapContext;)Ljava/lang/String;
            astore 2 /* dn */
        22: .line 764
            goto 45
        23: .line 765
      StackMap locals:
      StackMap stack:
            aload 3 /* id */
            astore 2 /* dn */
        end local 3 // java.lang.String id
        24: .line 768
            goto 45
        25: .line 772
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new javax.naming.ldap.InitialLdapContext
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ldapEnvironment:Ljava/util/Hashtable;
            aconst_null
            invokespecial javax.naming.ldap.InitialLdapContext.<init>:(Ljava/util/Hashtable;[Ljavax/naming/ldap/Control;)V
            putfield com.sun.security.auth.module.LdapLoginModule.ctx:Ljavax/naming/ldap/LdapContext;
        26: .line 774
            goto 31
      StackMap locals:
      StackMap stack: javax.naming.NamingException
        27: astore 3 /* e */
        start local 3 // javax.naming.NamingException e
        28: .line 776
            new javax.security.auth.login.FailedLoginException
            dup
            ldc "Cannot connect to LDAP server"
            invokespecial javax.security.auth.login.FailedLoginException.<init>:(Ljava/lang/String;)V
        29: .line 777
            aload 3 /* e */
            invokevirtual javax.security.auth.login.FailedLoginException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        30: .line 775
            checkcast javax.security.auth.login.LoginException
            athrow
        end local 3 // javax.naming.NamingException e
        31: .line 781
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ctx:Ljavax/naming/ldap/LdapContext;
            invokevirtual com.sun.security.auth.module.LdapLoginModule.findUserDN:(Ljavax/naming/ldap/LdapContext;)Ljava/lang/String;
            astore 2 /* dn */
        32: .line 786
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ctx:Ljavax/naming/ldap/LdapContext;
            ldc "java.naming.security.authentication"
            ldc "simple"
            invokeinterface javax.naming.ldap.LdapContext.addToEnvironment:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        33: .line 787
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ctx:Ljavax/naming/ldap/LdapContext;
            ldc "java.naming.security.principal"
            aload 2 /* dn */
            invokeinterface javax.naming.ldap.LdapContext.addToEnvironment:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        34: .line 788
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ctx:Ljavax/naming/ldap/LdapContext;
            ldc "java.naming.security.credentials"
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.password:[C
            invokeinterface javax.naming.ldap.LdapContext.addToEnvironment:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        35: .line 790
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 39
        36: .line 791
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] attempting to authenticate user: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        37: .line 792
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        38: .line 791
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        39: .line 795
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ctx:Ljavax/naming/ldap/LdapContext;
            aconst_null
            invokeinterface javax.naming.ldap.LdapContext.reconnect:([Ljavax/naming/ldap/Control;)V
        40: .line 799
            goto 45
      StackMap locals:
      StackMap stack: javax.naming.NamingException
        41: astore 3 /* e */
        start local 3 // javax.naming.NamingException e
        42: .line 801
            new javax.security.auth.login.FailedLoginException
            dup
            ldc "Cannot bind to LDAP server"
            invokespecial javax.security.auth.login.FailedLoginException.<init>:(Ljava/lang/String;)V
        43: .line 802
            aload 3 /* e */
            invokevirtual javax.security.auth.login.FailedLoginException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        44: .line 800
            checkcast javax.security.auth.login.LoginException
            athrow
        end local 3 // javax.naming.NamingException e
        45: .line 807
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.storePass:Z
            ifeq 50
        46: .line 808
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 50
        47: .line 809
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 50
        48: .line 810
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        49: .line 811
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.password:[C
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        50: .line 815
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.sun.security.auth.UserPrincipal
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
            invokespecial com.sun.security.auth.UserPrincipal.<init>:(Ljava/lang/String;)V
            putfield com.sun.security.auth.module.LdapLoginModule.userPrincipal:Lcom/sun/security/auth/UserPrincipal;
        51: .line 816
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzIdentity:Ljava/lang/String;
            ifnull 53
        52: .line 817
            aload 0 /* this */
            new com.sun.security.auth.UserPrincipal
            dup
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzIdentity:Ljava/lang/String;
            invokespecial com.sun.security.auth.UserPrincipal.<init>:(Ljava/lang/String;)V
            putfield com.sun.security.auth.module.LdapLoginModule.authzPrincipal:Lcom/sun/security/auth/UserPrincipal;
        53: .line 822
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.sun.security.auth.LdapPrincipal
            dup
            aload 2 /* dn */
            invokespecial com.sun.security.auth.LdapPrincipal.<init>:(Ljava/lang/String;)V
            putfield com.sun.security.auth.module.LdapLoginModule.ldapPrincipal:Lcom/sun/security/auth/LdapPrincipal;
        54: .line 824
            goto 61
      StackMap locals:
      StackMap stack: javax.naming.InvalidNameException
        55: astore 3 /* e */
        start local 3 // javax.naming.InvalidNameException e
        56: .line 825
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 58
        57: .line 826
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[LdapLoginModule] cannot create LdapPrincipal: bad DN"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        58: .line 830
      StackMap locals: javax.naming.InvalidNameException
      StackMap stack:
            new javax.security.auth.login.FailedLoginException
            dup
            ldc "Cannot create LdapPrincipal"
            invokespecial javax.security.auth.login.FailedLoginException.<init>:(Ljava/lang/String;)V
        59: .line 831
            aload 3 /* e */
            invokevirtual javax.security.auth.login.FailedLoginException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
        60: .line 829
            checkcast javax.security.auth.login.LoginException
            athrow
        end local 3 // javax.naming.InvalidNameException e
        61: .line 833
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String dn
        end local 1 // boolean getPasswdFromSharedState
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   62     0                      this  Lcom/sun/security/auth/module/LdapLoginModule;
            0   62     1  getPasswdFromSharedState  Z
            5   62     2                        dn  Ljava/lang/String;
            8   24     3                        id  Ljava/lang/String;
           17   20     4                         e  Ljavax/naming/NamingException;
           28   31     3                         e  Ljavax/naming/NamingException;
           42   45     3                         e  Ljavax/naming/NamingException;
           56   61     3                         e  Ljavax/naming/InvalidNameException;
      Exception table:
        from    to  target  type
          14    15      16  Class javax.naming.NamingException
          25    26      27  Class javax.naming.NamingException
          32    40      41  Class javax.naming.NamingException
          53    54      55  Class javax.naming.InvalidNameException
    Exceptions:
      throws javax.security.auth.login.LoginException
    MethodParameters:
                          Name  Flags
      getPasswdFromSharedState  

  private java.lang.String findUserDN(javax.naming.ldap.LdapContext);
    descriptor: (Ljavax/naming/ldap/LdapContext;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
        start local 1 // javax.naming.ldap.LdapContext ctx
         0: .line 847
            ldc ""
            astore 2 /* userDN */
        start local 2 // java.lang.String userDN
         1: .line 850
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userFilter:Ljava/lang/String;
            ifnull 7
         2: .line 851
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 13
         3: .line 852
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] searching for entry belonging to user: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         4: .line 853
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 852
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         6: .line 855
            goto 13
         7: .line 856
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 11
         8: .line 857
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] cannot search for entry belonging to user: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         9: .line 858
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 857
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        11: .line 861
      StackMap locals:
      StackMap stack:
            new javax.security.auth.login.FailedLoginException
            dup
            ldc "Cannot find user's LDAP entry"
            invokespecial javax.security.auth.login.FailedLoginException.<init>:(Ljava/lang/String;)V
        12: .line 860
            athrow
        13: .line 867
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.filterMatcher:Ljava/util/regex/Matcher;
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.userFilter:Ljava/lang/String;
        14: .line 868
            aload 0 /* this */
            invokevirtual com.sun.security.auth.module.LdapLoginModule.escapeUsernameChars:()Ljava/lang/String;
        15: .line 867
            invokevirtual com.sun.security.auth.module.LdapLoginModule.replaceUsernameToken:(Ljava/util/regex/Matcher;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
        16: .line 866
            astore 3 /* canonicalUserFilter */
        start local 3 // java.lang.String canonicalUserFilter
        17: .line 871
            aload 1 /* ctx */
            ldc ""
            aload 3 /* canonicalUserFilter */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.constraints:Ljavax/naming/directory/SearchControls;
            invokeinterface javax.naming.ldap.LdapContext.search:(Ljava/lang/String;Ljava/lang/String;Ljavax/naming/directory/SearchControls;)Ljavax/naming/NamingEnumeration;
        18: .line 870
            astore 4 /* results */
        start local 4 // javax.naming.NamingEnumeration results
        19: .line 875
            aload 4 /* results */
            invokeinterface javax.naming.NamingEnumeration.hasMore:()Z
            ifeq 35
        20: .line 876
            aload 4 /* results */
            invokeinterface javax.naming.NamingEnumeration.next:()Ljava/lang/Object;
            checkcast javax.naming.directory.SearchResult
            astore 5 /* entry */
        start local 5 // javax.naming.directory.SearchResult entry
        21: .line 877
            aload 5 /* entry */
            invokevirtual javax.naming.directory.SearchResult.getNameInNamespace:()Ljava/lang/String;
            astore 2 /* userDN */
        22: .line 879
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 26
        23: .line 880
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\t\t[LdapLoginModule] found entry: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        24: .line 881
            aload 2 /* userDN */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        25: .line 880
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        26: .line 885
      StackMap locals: java.lang.String javax.naming.NamingEnumeration javax.naming.directory.SearchResult
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzIdentityAttr:Ljava/lang/String;
            ifnull 33
        27: .line 887
            aload 5 /* entry */
            invokevirtual javax.naming.directory.SearchResult.getAttributes:()Ljavax/naming/directory/Attributes;
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.authzIdentityAttr:Ljava/lang/String;
            invokeinterface javax.naming.directory.Attributes.get:(Ljava/lang/String;)Ljavax/naming/directory/Attribute;
        28: .line 886
            astore 6 /* attr */
        start local 6 // javax.naming.directory.Attribute attr
        29: .line 888
            aload 6 /* attr */
            ifnull 33
        30: .line 889
            aload 6 /* attr */
            invokeinterface javax.naming.directory.Attribute.get:()Ljava/lang/Object;
            astore 7 /* val */
        start local 7 // java.lang.Object val
        31: .line 890
            aload 7 /* val */
            instanceof java.lang.String
            ifeq 33
        32: .line 891
            aload 0 /* this */
            aload 7 /* val */
            checkcast java.lang.String
            putfield com.sun.security.auth.module.LdapLoginModule.authzIdentity:Ljava/lang/String;
        end local 7 // java.lang.Object val
        end local 6 // javax.naming.directory.Attribute attr
        33: .line 896
      StackMap locals:
      StackMap stack:
            aload 4 /* results */
            invokeinterface javax.naming.NamingEnumeration.close:()V
        end local 5 // javax.naming.directory.SearchResult entry
        34: .line 898
            goto 39
        35: .line 900
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.debug:Z
            ifeq 39
        36: .line 901
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "\t\t[LdapLoginModule] user's entry not found"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 4 // javax.naming.NamingEnumeration results
        end local 3 // java.lang.String canonicalUserFilter
        37: .line 906
            goto 39
      StackMap locals: com.sun.security.auth.module.LdapLoginModule javax.naming.ldap.LdapContext java.lang.String
      StackMap stack: javax.naming.NamingException
        38: pop
        39: .line 910
      StackMap locals:
      StackMap stack:
            aload 2 /* userDN */
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 42
        40: .line 912
            new javax.security.auth.login.FailedLoginException
            dup
            ldc "Cannot find user's LDAP entry"
            invokespecial javax.security.auth.login.FailedLoginException.<init>:(Ljava/lang/String;)V
        41: .line 911
            athrow
        42: .line 914
      StackMap locals:
      StackMap stack:
            aload 2 /* userDN */
            areturn
        end local 2 // java.lang.String userDN
        end local 1 // javax.naming.ldap.LdapContext ctx
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   43     0                 this  Lcom/sun/security/auth/module/LdapLoginModule;
            0   43     1                  ctx  Ljavax/naming/ldap/LdapContext;
            1   43     2               userDN  Ljava/lang/String;
           17   37     3  canonicalUserFilter  Ljava/lang/String;
           19   37     4              results  Ljavax/naming/NamingEnumeration<Ljavax/naming/directory/SearchResult;>;
           21   34     5                entry  Ljavax/naming/directory/SearchResult;
           29   33     6                 attr  Ljavax/naming/directory/Attribute;
           31   33     7                  val  Ljava/lang/Object;
      Exception table:
        from    to  target  type
          13    37      38  Class javax.naming.NamingException
    Exceptions:
      throws javax.security.auth.login.LoginException
    MethodParameters:
      Name  Flags
      ctx   

  private java.lang.String escapeUsernameChars();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
         0: .line 934
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            istore 1 /* len */
        start local 1 // int len
         1: .line 935
            new java.lang.StringBuilder
            dup
            iload 1 /* len */
            bipush 16
            iadd
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 2 /* escapedUsername */
        start local 2 // java.lang.StringBuilder escapedUsername
         2: .line 937
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 18
         4: .line 938
      StackMap locals: int java.lang.StringBuilder int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
            iload 3 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 4 /* c */
        start local 4 // char c
         5: .line 939
            iload 4 /* c */
            lookupswitch { // 5
                    0: 14
                   40: 8
                   41: 10
                   42: 6
                   92: 12
              default: 16
          }
         6: .line 941
      StackMap locals: int
      StackMap stack:
            aload 2 /* escapedUsername */
            ldc "\\\\2A"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         7: .line 942
            goto 17
         8: .line 944
      StackMap locals:
      StackMap stack:
            aload 2 /* escapedUsername */
            ldc "\\\\28"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 945
            goto 17
        10: .line 947
      StackMap locals:
      StackMap stack:
            aload 2 /* escapedUsername */
            ldc "\\\\29"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        11: .line 948
            goto 17
        12: .line 950
      StackMap locals:
      StackMap stack:
            aload 2 /* escapedUsername */
            ldc "\\\\5C"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        13: .line 951
            goto 17
        14: .line 953
      StackMap locals:
      StackMap stack:
            aload 2 /* escapedUsername */
            ldc "\\\\00"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        15: .line 954
            goto 17
        16: .line 956
      StackMap locals:
      StackMap stack:
            aload 2 /* escapedUsername */
            iload 4 /* c */
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        end local 4 // char c
        17: .line 937
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 3 /* i */
            iload 1 /* len */
            if_icmplt 4
        end local 3 // int i
        19: .line 960
            aload 2 /* escapedUsername */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder escapedUsername
        end local 1 // int len
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   20     0             this  Lcom/sun/security/auth/module/LdapLoginModule;
            1   20     1              len  I
            2   20     2  escapedUsername  Ljava/lang/StringBuilder;
            3   19     3                i  I
            5   17     4                c  C

  private java.lang.String replaceUsernameToken(java.util.regex.Matcher, java.lang.String, java.lang.String);
    descriptor: (Ljava/util/regex/Matcher;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
        start local 1 // java.util.regex.Matcher matcher
        start local 2 // java.lang.String string
        start local 3 // java.lang.String username
         0: .line 974
            aload 1 /* matcher */
            ifnull 1
            aload 1 /* matcher */
            aload 3 /* username */
            invokevirtual java.util.regex.Matcher.replaceAll:(Ljava/lang/String;)Ljava/lang/String;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 2 /* string */
      StackMap locals:
      StackMap stack: java.lang.String
         2: areturn
        end local 3 // java.lang.String username
        end local 2 // java.lang.String string
        end local 1 // java.util.regex.Matcher matcher
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/sun/security/auth/module/LdapLoginModule;
            0    3     1   matcher  Ljava/util/regex/Matcher;
            0    3     2    string  Ljava/lang/String;
            0    3     3  username  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      matcher   
      string    
      username  

  private void getUsernamePassword(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
        start local 1 // boolean getPasswdFromSharedState
         0: .line 993
            iload 1 /* getPasswdFromSharedState */
            ifeq 4
         1: .line 995
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            putfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
         2: .line 996
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast char[]
            putfield com.sun.security.auth.module.LdapLoginModule.password:[C
         3: .line 997
            return
         4: .line 1001
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
            ifnonnull 6
         5: .line 1002
            new javax.security.auth.login.LoginException
            dup
            ldc "No CallbackHandler available to acquire authentication information from the user"
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 1005
      StackMap locals:
      StackMap stack:
            iconst_2
            anewarray javax.security.auth.callback.Callback
            astore 2 /* callbacks */
        start local 2 // javax.security.auth.callback.Callback[] callbacks
         7: .line 1006
            aload 2 /* callbacks */
            iconst_0
            new javax.security.auth.callback.NameCallback
            dup
            ldc "username."
            invokestatic sun.security.util.ResourcesMgr.getAuthResourceString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial javax.security.auth.callback.NameCallback.<init>:(Ljava/lang/String;)V
            aastore
         8: .line 1007
            aload 2 /* callbacks */
            iconst_1
            new javax.security.auth.callback.PasswordCallback
            dup
            ldc "password."
            invokestatic sun.security.util.ResourcesMgr.getAuthResourceString:(Ljava/lang/String;)Ljava/lang/String;
            iconst_0
            invokespecial javax.security.auth.callback.PasswordCallback.<init>:(Ljava/lang/String;Z)V
            aastore
         9: .line 1010
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.callbackHandler:Ljavax/security/auth/callback/CallbackHandler;
            aload 2 /* callbacks */
            invokeinterface javax.security.auth.callback.CallbackHandler.handle:([Ljavax/security/auth/callback/Callback;)V
        10: .line 1011
            aload 0 /* this */
            aload 2 /* callbacks */
            iconst_0
            aaload
            checkcast javax.security.auth.callback.NameCallback
            invokevirtual javax.security.auth.callback.NameCallback.getName:()Ljava/lang/String;
            putfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
        11: .line 1012
            aload 2 /* callbacks */
            iconst_1
            aaload
            checkcast javax.security.auth.callback.PasswordCallback
            invokevirtual javax.security.auth.callback.PasswordCallback.getPassword:()[C
            astore 3 /* tmpPassword */
        start local 3 // char[] tmpPassword
        12: .line 1013
            aload 0 /* this */
            aload 3 /* tmpPassword */
            arraylength
            newarray 5
            putfield com.sun.security.auth.module.LdapLoginModule.password:[C
        13: .line 1014
            aload 3 /* tmpPassword */
            iconst_0
        14: .line 1015
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.password:[C
            iconst_0
            aload 3 /* tmpPassword */
            arraylength
        15: .line 1014
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        16: .line 1016
            aload 2 /* callbacks */
            iconst_1
            aaload
            checkcast javax.security.auth.callback.PasswordCallback
            invokevirtual javax.security.auth.callback.PasswordCallback.clearPassword:()V
        end local 3 // char[] tmpPassword
        17: .line 1018
            goto 25
      StackMap locals: com.sun.security.auth.module.LdapLoginModule int javax.security.auth.callback.Callback[]
      StackMap stack: java.io.IOException
        18: astore 3 /* ioe */
        start local 3 // java.io.IOException ioe
        19: .line 1019
            new javax.security.auth.login.LoginException
            dup
            aload 3 /* ioe */
            invokevirtual java.io.IOException.toString:()Ljava/lang/String;
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.io.IOException ioe
        20: .line 1021
      StackMap locals:
      StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
            astore 3 /* uce */
        start local 3 // javax.security.auth.callback.UnsupportedCallbackException uce
        21: .line 1022
            new javax.security.auth.login.LoginException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Error: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* uce */
            invokevirtual javax.security.auth.callback.UnsupportedCallbackException.getCallback:()Ljavax/security/auth/callback/Callback;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        22: .line 1023
            ldc " not available to acquire authentication information"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        23: .line 1024
            ldc " from the user"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        24: .line 1022
            invokespecial javax.security.auth.login.LoginException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // javax.security.auth.callback.UnsupportedCallbackException uce
        25: .line 1026
      StackMap locals:
      StackMap stack:
            return
        end local 2 // javax.security.auth.callback.Callback[] callbacks
        end local 1 // boolean getPasswdFromSharedState
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   26     0                      this  Lcom/sun/security/auth/module/LdapLoginModule;
            0   26     1  getPasswdFromSharedState  Z
            7   26     2                 callbacks  [Ljavax/security/auth/callback/Callback;
           12   17     3               tmpPassword  [C
           19   20     3                       ioe  Ljava/io/IOException;
           21   25     3                       uce  Ljavax/security/auth/callback/UnsupportedCallbackException;
      Exception table:
        from    to  target  type
           9    17      18  Class java.io.IOException
           9    17      20  Class javax.security.auth.callback.UnsupportedCallbackException
    Exceptions:
      throws javax.security.auth.login.LoginException
    MethodParameters:
                          Name  Flags
      getPasswdFromSharedState  

  private void cleanState();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.security.auth.module.LdapLoginModule this
         0: .line 1032
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.username:Ljava/lang/String;
         1: .line 1033
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.password:[C
            ifnull 4
         2: .line 1034
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.password:[C
            bipush 32
            invokestatic java.util.Arrays.fill:([CC)V
         3: .line 1035
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.password:[C
         4: .line 1038
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ctx:Ljavax/naming/ldap/LdapContext;
            ifnull 8
         5: .line 1039
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.ctx:Ljavax/naming/ldap/LdapContext;
            invokeinterface javax.naming.ldap.LdapContext.close:()V
         6: .line 1041
            goto 8
      StackMap locals:
      StackMap stack: javax.naming.NamingException
         7: pop
         8: .line 1044
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.security.auth.module.LdapLoginModule.ctx:Ljavax/naming/ldap/LdapContext;
         9: .line 1046
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.clearPass:Z
            ifeq 12
        10: .line 1047
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.name"
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 1048
            aload 0 /* this */
            getfield com.sun.security.auth.module.LdapLoginModule.sharedState:Ljava/util/Map;
            ldc "javax.security.auth.login.password"
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 1050
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.security.auth.module.LdapLoginModule this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lcom/sun/security/auth/module/LdapLoginModule;
      Exception table:
        from    to  target  type
           4     6       7  Class javax.naming.NamingException
}
SourceFile: "LdapLoginModule.java"