public class org.apache.catalina.valves.rewrite.ResolverImpl extends org.apache.catalina.valves.rewrite.Resolver
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.catalina.valves.rewrite.ResolverImpl
  super_class: org.apache.catalina.valves.rewrite.Resolver
{
  protected org.apache.catalina.connector.Request request;
    descriptor: Lorg/apache/catalina/connector/Request;
    flags: (0x0004) ACC_PROTECTED

  public void <init>(org.apache.catalina.connector.Request);
    descriptor: (Lorg/apache/catalina/connector/Request;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
        start local 1 // org.apache.catalina.connector.Request request
         0: .line 47
            aload 0 /* this */
            invokespecial org.apache.catalina.valves.rewrite.Resolver.<init>:()V
         1: .line 45
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
         2: .line 48
            aload 0 /* this */
            aload 1 /* request */
            putfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
         3: .line 49
            return
        end local 1 // org.apache.catalina.connector.Request request
        end local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/apache/catalina/valves/rewrite/ResolverImpl;
            0    4     1  request  Lorg/apache/catalina/connector/Request;
    MethodParameters:
         Name  Flags
      request  

  public java.lang.String resolve(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
        start local 1 // java.lang.String key
         0: .line 59
            aload 1 /* key */
            ldc "HTTP_USER_AGENT"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 60
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            ldc "user-agent"
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            areturn
         2: .line 61
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "HTTP_REFERER"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 62
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            ldc "referer"
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            areturn
         4: .line 63
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "HTTP_COOKIE"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 64
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            ldc "cookie"
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            areturn
         6: .line 65
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "HTTP_FORWARDED"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 66
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            ldc "forwarded"
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            areturn
         8: .line 67
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "HTTP_HOST"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         9: .line 72
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getServerName:()Ljava/lang/String;
            areturn
        10: .line 73
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "HTTP_PROXY_CONNECTION"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 12
        11: .line 74
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            ldc "proxy-connection"
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        12: .line 75
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "HTTP_ACCEPT"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 14
        13: .line 76
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            ldc "accept"
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        14: .line 77
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "REMOTE_ADDR"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 16
        15: .line 78
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getRemoteAddr:()Ljava/lang/String;
            areturn
        16: .line 79
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "REMOTE_HOST"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 18
        17: .line 80
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getRemoteHost:()Ljava/lang/String;
            areturn
        18: .line 81
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "REMOTE_PORT"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 20
        19: .line 82
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getRemotePort:()I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            areturn
        20: .line 83
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "REMOTE_USER"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 22
        21: .line 84
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getRemoteUser:()Ljava/lang/String;
            areturn
        22: .line 85
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "REMOTE_IDENT"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 24
        23: .line 86
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getRemoteUser:()Ljava/lang/String;
            areturn
        24: .line 87
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "REQUEST_METHOD"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 26
        25: .line 88
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getMethod:()Ljava/lang/String;
            areturn
        26: .line 89
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SCRIPT_FILENAME"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 28
        27: .line 90
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getServletContext:()Ljakarta/servlet/ServletContext;
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getServletPath:()Ljava/lang/String;
            invokeinterface jakarta.servlet.ServletContext.getRealPath:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        28: .line 91
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "REQUEST_PATH"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 30
        29: .line 92
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getRequestPathMB:()Lorg/apache/tomcat/util/buf/MessageBytes;
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.toString:()Ljava/lang/String;
            areturn
        30: .line 93
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "CONTEXT_PATH"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 32
        31: .line 94
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getContextPath:()Ljava/lang/String;
            areturn
        32: .line 95
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SERVLET_PATH"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 34
        33: .line 96
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getServletPath:()Ljava/lang/String;
            invokestatic org.apache.catalina.valves.rewrite.ResolverImpl.emptyStringIfNull:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        34: .line 97
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "PATH_INFO"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 36
        35: .line 98
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getPathInfo:()Ljava/lang/String;
            invokestatic org.apache.catalina.valves.rewrite.ResolverImpl.emptyStringIfNull:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        36: .line 99
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "QUERY_STRING"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 38
        37: .line 100
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getQueryString:()Ljava/lang/String;
            invokestatic org.apache.catalina.valves.rewrite.ResolverImpl.emptyStringIfNull:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        38: .line 101
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "AUTH_TYPE"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 40
        39: .line 102
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getAuthType:()Ljava/lang/String;
            areturn
        40: .line 103
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "DOCUMENT_ROOT"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 42
        41: .line 104
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getServletContext:()Ljakarta/servlet/ServletContext;
            ldc "/"
            invokeinterface jakarta.servlet.ServletContext.getRealPath:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        42: .line 105
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SERVER_NAME"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 44
        43: .line 106
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getLocalName:()Ljava/lang/String;
            areturn
        44: .line 107
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SERVER_ADDR"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 46
        45: .line 108
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getLocalAddr:()Ljava/lang/String;
            areturn
        46: .line 109
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SERVER_PORT"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 48
        47: .line 110
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getLocalPort:()I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            areturn
        48: .line 111
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SERVER_PROTOCOL"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 50
        49: .line 112
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getProtocol:()Ljava/lang/String;
            areturn
        50: .line 113
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SERVER_SOFTWARE"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 52
        51: .line 114
            ldc "tomcat"
            areturn
        52: .line 115
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "THE_REQUEST"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 56
        53: .line 116
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getMethod:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getRequestURI:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        54: .line 117
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getProtocol:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        55: .line 116
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        56: .line 118
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "REQUEST_URI"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 58
        57: .line 119
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getRequestURI:()Ljava/lang/String;
            areturn
        58: .line 120
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "REQUEST_FILENAME"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 60
        59: .line 121
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getPathTranslated:()Ljava/lang/String;
            areturn
        60: .line 122
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "HTTPS"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 64
        61: .line 123
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.isSecure:()Z
            ifeq 62
            ldc "on"
            goto 63
      StackMap locals:
      StackMap stack:
        62: ldc "off"
      StackMap locals:
      StackMap stack: java.lang.String
        63: areturn
        64: .line 124
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "TIME_YEAR"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 66
        65: .line 125
            invokestatic java.util.Calendar.getInstance:()Ljava/util/Calendar;
            iconst_1
            invokevirtual java.util.Calendar.get:(I)I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            areturn
        66: .line 126
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "TIME_MON"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 68
        67: .line 127
            invokestatic java.util.Calendar.getInstance:()Ljava/util/Calendar;
            iconst_2
            invokevirtual java.util.Calendar.get:(I)I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            areturn
        68: .line 128
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "TIME_DAY"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 70
        69: .line 129
            invokestatic java.util.Calendar.getInstance:()Ljava/util/Calendar;
            iconst_5
            invokevirtual java.util.Calendar.get:(I)I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            areturn
        70: .line 130
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "TIME_HOUR"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 72
        71: .line 131
            invokestatic java.util.Calendar.getInstance:()Ljava/util/Calendar;
            bipush 11
            invokevirtual java.util.Calendar.get:(I)I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            areturn
        72: .line 132
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "TIME_MIN"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 74
        73: .line 133
            invokestatic java.util.Calendar.getInstance:()Ljava/util/Calendar;
            bipush 12
            invokevirtual java.util.Calendar.get:(I)I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            areturn
        74: .line 134
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "TIME_SEC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 76
        75: .line 135
            invokestatic java.util.Calendar.getInstance:()Ljava/util/Calendar;
            bipush 13
            invokevirtual java.util.Calendar.get:(I)I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            areturn
        76: .line 136
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "TIME_WDAY"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 78
        77: .line 137
            invokestatic java.util.Calendar.getInstance:()Ljava/util/Calendar;
            bipush 7
            invokevirtual java.util.Calendar.get:(I)I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            areturn
        78: .line 138
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "TIME"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 80
        79: .line 139
            invokestatic org.apache.tomcat.util.http.FastHttpDateFormat.getCurrentDate:()Ljava/lang/String;
            areturn
        80: .line 141
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.String key
        end local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   81     0  this  Lorg/apache/catalina/valves/rewrite/ResolverImpl;
            0   81     1   key  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      key   

  public java.lang.String resolveEnv(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
        start local 1 // java.lang.String key
         0: .line 146
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            aload 1 /* key */
            invokevirtual org.apache.catalina.connector.Request.getAttribute:(Ljava/lang/String;)Ljava/lang/Object;
            astore 2 /* result */
        start local 2 // java.lang.Object result
         1: .line 147
            aload 2 /* result */
            ifnull 2
            aload 2 /* result */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            goto 3
      StackMap locals: java.lang.Object
      StackMap stack:
         2: aload 1 /* key */
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
         3: areturn
        end local 2 // java.lang.Object result
        end local 1 // java.lang.String key
        end local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/apache/catalina/valves/rewrite/ResolverImpl;
            0    4     1     key  Ljava/lang/String;
            1    4     2  result  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      key   

  public java.lang.String resolveSsl(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
        start local 1 // java.lang.String key
         0: .line 152
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            ldc "jakarta.servlet.request.ssl_session_mgr"
            invokevirtual org.apache.catalina.connector.Request.getAttribute:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.SSLSupport
            astore 2 /* sslSupport */
        start local 2 // org.apache.tomcat.util.net.SSLSupport sslSupport
         1: .line 156
            aload 1 /* key */
            ldc "HTTPS"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         2: .line 157
            aload 2 /* sslSupport */
            ifnull 3
            iconst_1
            goto 4
      StackMap locals: org.apache.tomcat.util.net.SSLSupport
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: invokestatic java.lang.String.valueOf:(Z)Ljava/lang/String;
         5: areturn
         6: .line 158
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SSL_PROTOCOL"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         7: .line 159
            aload 2 /* sslSupport */
            invokeinterface org.apache.tomcat.util.net.SSLSupport.getProtocol:()Ljava/lang/String;
         8: areturn
         9: .line 160
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SSL_SESSION_ID"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 12
        10: .line 161
            aload 2 /* sslSupport */
            invokeinterface org.apache.tomcat.util.net.SSLSupport.getSessionId:()Ljava/lang/String;
        11: areturn
        12: .line 162
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SSL_SESSION_RESUMED"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 64
        13: .line 164
            aload 1 /* key */
            ldc "SSL_SECURE_RENEG"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 64
        14: .line 166
            aload 1 /* key */
            ldc "SSL_COMPRESS_METHOD"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 64
        15: .line 168
            aload 1 /* key */
            ldc "SSL_TLS_SNI"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 64
        16: .line 170
            aload 1 /* key */
            ldc "SSL_CIPHER"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 19
        17: .line 171
            aload 2 /* sslSupport */
            invokeinterface org.apache.tomcat.util.net.SSLSupport.getCipherSuite:()Ljava/lang/String;
        18: areturn
        19: .line 172
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SSL_CIPHER_EXPORT"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 28
        20: .line 173
            aload 2 /* sslSupport */
            invokeinterface org.apache.tomcat.util.net.SSLSupport.getCipherSuite:()Ljava/lang/String;
            astore 3 /* cipherSuite */
        start local 3 // java.lang.String cipherSuite
        21: .line 174
            aload 3 /* cipherSuite */
            invokestatic org.apache.tomcat.util.net.openssl.ciphers.OpenSSLCipherConfigurationParser.parse:(Ljava/lang/String;)Ljava/util/LinkedHashSet;
            astore 4 /* cipherList */
        start local 4 // java.util.Set cipherList
        22: .line 175
            aload 4 /* cipherList */
            invokeinterface java.util.Set.size:()I
            iconst_1
            if_icmpne 64
        23: .line 176
            aload 4 /* cipherList */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.openssl.ciphers.Cipher
            astore 5 /* cipher */
        start local 5 // org.apache.tomcat.util.net.openssl.ciphers.Cipher cipher
        24: .line 177
            aload 5 /* cipher */
            invokevirtual org.apache.tomcat.util.net.openssl.ciphers.Cipher.getLevel:()Lorg/apache/tomcat/util/net/openssl/ciphers/EncryptionLevel;
            getstatic org.apache.tomcat.util.net.openssl.ciphers.EncryptionLevel.EXP40:Lorg/apache/tomcat/util/net/openssl/ciphers/EncryptionLevel;
            invokevirtual org.apache.tomcat.util.net.openssl.ciphers.EncryptionLevel.equals:(Ljava/lang/Object;)Z
            ifne 26
        25: .line 178
            aload 5 /* cipher */
            invokevirtual org.apache.tomcat.util.net.openssl.ciphers.Cipher.getLevel:()Lorg/apache/tomcat/util/net/openssl/ciphers/EncryptionLevel;
            getstatic org.apache.tomcat.util.net.openssl.ciphers.EncryptionLevel.EXP56:Lorg/apache/tomcat/util/net/openssl/ciphers/EncryptionLevel;
            invokevirtual org.apache.tomcat.util.net.openssl.ciphers.EncryptionLevel.equals:(Ljava/lang/Object;)Z
            ifeq 27
        26: .line 179
      StackMap locals: java.lang.String java.util.Set org.apache.tomcat.util.net.openssl.ciphers.Cipher
      StackMap stack:
            ldc "true"
            areturn
        27: .line 181
      StackMap locals:
      StackMap stack:
            ldc "false"
            areturn
        end local 5 // org.apache.tomcat.util.net.openssl.ciphers.Cipher cipher
        end local 4 // java.util.Set cipherList
        end local 3 // java.lang.String cipherSuite
        28: .line 184
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SSL_CIPHER_ALGKEYSIZE"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 35
        29: .line 185
            aload 2 /* sslSupport */
            invokeinterface org.apache.tomcat.util.net.SSLSupport.getCipherSuite:()Ljava/lang/String;
            astore 3 /* cipherSuite */
        start local 3 // java.lang.String cipherSuite
        30: .line 186
            aload 3 /* cipherSuite */
            invokestatic org.apache.tomcat.util.net.openssl.ciphers.OpenSSLCipherConfigurationParser.parse:(Ljava/lang/String;)Ljava/util/LinkedHashSet;
            astore 4 /* cipherList */
        start local 4 // java.util.Set cipherList
        31: .line 187
            aload 4 /* cipherList */
            invokeinterface java.util.Set.size:()I
            iconst_1
            if_icmpne 64
        32: .line 188
            aload 4 /* cipherList */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.tomcat.util.net.openssl.ciphers.Cipher
            astore 5 /* cipher */
        start local 5 // org.apache.tomcat.util.net.openssl.ciphers.Cipher cipher
        33: .line 189
            aload 5 /* cipher */
            invokevirtual org.apache.tomcat.util.net.openssl.ciphers.Cipher.getAlg_bits:()I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
        34: areturn
        end local 5 // org.apache.tomcat.util.net.openssl.ciphers.Cipher cipher
        end local 4 // java.util.Set cipherList
        end local 3 // java.lang.String cipherSuite
        35: .line 191
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SSL_CIPHER_USEKEYSIZE"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 38
        36: .line 192
            aload 2 /* sslSupport */
            invokeinterface org.apache.tomcat.util.net.SSLSupport.getKeySize:()Ljava/lang/Integer;
            invokevirtual java.lang.Integer.toString:()Ljava/lang/String;
        37: areturn
        38: .line 193
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SSL_CLIENT_"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 52
        39: .line 194
            aload 2 /* sslSupport */
            invokeinterface org.apache.tomcat.util.net.SSLSupport.getPeerCertificateChain:()[Ljava/security/cert/X509Certificate;
            astore 3 /* certificates */
        start local 3 // java.security.cert.X509Certificate[] certificates
        40: .line 195
            aload 3 /* certificates */
            ifnull 64
            aload 3 /* certificates */
            arraylength
            ifle 64
        41: .line 196
            aload 1 /* key */
            ldc "SSL_CLIENT_"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* key */
        42: .line 197
            aload 0 /* this */
            aload 1 /* key */
            aload 3 /* certificates */
            invokevirtual org.apache.catalina.valves.rewrite.ResolverImpl.resolveSslCertificates:(Ljava/lang/String;[Ljava/security/cert/X509Certificate;)Ljava/lang/String;
            astore 4 /* result */
        start local 4 // java.lang.String result
        43: .line 198
            aload 4 /* result */
            ifnull 46
        44: .line 199
            aload 4 /* result */
        45: areturn
        46: .line 200
      StackMap locals: java.security.cert.X509Certificate[] java.lang.String
      StackMap stack:
            aload 1 /* key */
            ldc "SAN_OTHER_msUPN_"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 49
        47: .line 202
            aload 1 /* key */
            ldc "SAN_OTHER_msUPN_"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* key */
        48: .line 204
            goto 64
      StackMap locals:
      StackMap stack:
        49: aload 1 /* key */
            ldc "CERT_RFC4523_CEA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 64
        50: .line 206
            aload 1 /* key */
            ldc "VERIFY"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            pop
        end local 4 // java.lang.String result
        end local 3 // java.security.cert.X509Certificate[] certificates
        51: .line 210
            goto 64
      StackMap locals:
      StackMap stack:
        52: aload 1 /* key */
            ldc "SSL_SERVER_"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 64
        53: .line 211
            aload 2 /* sslSupport */
            invokeinterface org.apache.tomcat.util.net.SSLSupport.getLocalCertificateChain:()[Ljava/security/cert/X509Certificate;
            astore 3 /* certificates */
        start local 3 // java.security.cert.X509Certificate[] certificates
        54: .line 212
            aload 3 /* certificates */
            ifnull 64
            aload 3 /* certificates */
            arraylength
            ifle 64
        55: .line 213
            aload 1 /* key */
            ldc "SSL_SERVER_"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* key */
        56: .line 214
            aload 0 /* this */
            aload 1 /* key */
            aload 3 /* certificates */
            invokevirtual org.apache.catalina.valves.rewrite.ResolverImpl.resolveSslCertificates:(Ljava/lang/String;[Ljava/security/cert/X509Certificate;)Ljava/lang/String;
            astore 4 /* result */
        start local 4 // java.lang.String result
        57: .line 215
            aload 4 /* result */
            ifnull 60
        58: .line 216
            aload 4 /* result */
        59: areturn
        60: .line 217
      StackMap locals: java.security.cert.X509Certificate[] java.lang.String
      StackMap stack:
            aload 1 /* key */
            ldc "SAN_OTHER_dnsSRV_"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 64
        61: .line 219
            aload 1 /* key */
            ldc "SAN_OTHER_dnsSRV_"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* key */
        end local 4 // java.lang.String result
        end local 3 // java.security.cert.X509Certificate[] certificates
        62: .line 224
            goto 64
      StackMap locals: org.apache.catalina.valves.rewrite.ResolverImpl java.lang.String org.apache.tomcat.util.net.SSLSupport
      StackMap stack: java.io.IOException
        63: pop
        64: .line 227
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // org.apache.tomcat.util.net.SSLSupport sslSupport
        end local 1 // java.lang.String key
        end local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   65     0          this  Lorg/apache/catalina/valves/rewrite/ResolverImpl;
            0   65     1           key  Ljava/lang/String;
            1   65     2    sslSupport  Lorg/apache/tomcat/util/net/SSLSupport;
           21   28     3   cipherSuite  Ljava/lang/String;
           22   28     4    cipherList  Ljava/util/Set<Lorg/apache/tomcat/util/net/openssl/ciphers/Cipher;>;
           24   28     5        cipher  Lorg/apache/tomcat/util/net/openssl/ciphers/Cipher;
           30   35     3   cipherSuite  Ljava/lang/String;
           31   35     4    cipherList  Ljava/util/Set<Lorg/apache/tomcat/util/net/openssl/ciphers/Cipher;>;
           33   35     5        cipher  Lorg/apache/tomcat/util/net/openssl/ciphers/Cipher;
           40   51     3  certificates  [Ljava/security/cert/X509Certificate;
           43   51     4        result  Ljava/lang/String;
           54   62     3  certificates  [Ljava/security/cert/X509Certificate;
           57   62     4        result  Ljava/lang/String;
      Exception table:
        from    to  target  type
           1     5      63  Class java.io.IOException
           6     8      63  Class java.io.IOException
           9    11      63  Class java.io.IOException
          12    18      63  Class java.io.IOException
          19    26      63  Class java.io.IOException
          28    34      63  Class java.io.IOException
          35    37      63  Class java.io.IOException
          38    45      63  Class java.io.IOException
          46    59      63  Class java.io.IOException
          60    62      63  Class java.io.IOException
    MethodParameters:
      Name  Flags
      key   

  private java.lang.String resolveSslCertificates(java.lang.String, java.security.cert.X509Certificate[]);
    descriptor: (Ljava/lang/String;[Ljava/security/cert/X509Certificate;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
        start local 1 // java.lang.String key
        start local 2 // java.security.cert.X509Certificate[] certificates
         0: .line 231
            aload 1 /* key */
            ldc "M_VERSION"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 232
            aload 2 /* certificates */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getVersion:()I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            areturn
         2: .line 233
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "M_SERIAL"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 234
            aload 2 /* certificates */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getSerialNumber:()Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.toString:()Ljava/lang/String;
            areturn
         4: .line 235
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "S_DN"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 236
            aload 2 /* certificates */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getSubjectDN:()Ljava/security/Principal;
            invokeinterface java.security.Principal.getName:()Ljava/lang/String;
            areturn
         6: .line 237
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "S_DN_"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 9
         7: .line 238
            aload 1 /* key */
            ldc "S_DN_"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* key */
         8: .line 239
            aload 0 /* this */
            aload 2 /* certificates */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
            invokevirtual javax.security.auth.x500.X500Principal.getName:()Ljava/lang/String;
            aload 1 /* key */
            invokevirtual org.apache.catalina.valves.rewrite.ResolverImpl.resolveComponent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
         9: .line 240
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SAN_Email_"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 12
        10: .line 242
            aload 1 /* key */
            ldc "SAN_Email_"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* key */
        11: .line 243
            aload 0 /* this */
            aload 2 /* certificates */
            iconst_0
            aaload
            iconst_1
            aload 1 /* key */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            invokevirtual org.apache.catalina.valves.rewrite.ResolverImpl.resolveAlternateName:(Ljava/security/cert/X509Certificate;II)Ljava/lang/String;
            areturn
        12: .line 244
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "SAN_DNS_"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 15
        13: .line 246
            aload 1 /* key */
            ldc "SAN_DNS_"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* key */
        14: .line 247
            aload 0 /* this */
            aload 2 /* certificates */
            iconst_0
            aaload
            iconst_2
            aload 1 /* key */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            invokevirtual org.apache.catalina.valves.rewrite.ResolverImpl.resolveAlternateName:(Ljava/security/cert/X509Certificate;II)Ljava/lang/String;
            areturn
        15: .line 248
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "I_DN"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
        16: .line 249
            aload 2 /* certificates */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getIssuerDN:()Ljava/security/Principal;
            invokeinterface java.security.Principal.getName:()Ljava/lang/String;
            areturn
        17: .line 250
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "I_DN_"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 20
        18: .line 251
            aload 1 /* key */
            ldc "I_DN_"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* key */
        19: .line 252
            aload 0 /* this */
            aload 2 /* certificates */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getIssuerX500Principal:()Ljavax/security/auth/x500/X500Principal;
            invokevirtual javax.security.auth.x500.X500Principal.getName:()Ljava/lang/String;
            aload 1 /* key */
            invokevirtual org.apache.catalina.valves.rewrite.ResolverImpl.resolveComponent:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        20: .line 253
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "V_START"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 22
        21: .line 254
            aload 2 /* certificates */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getNotBefore:()Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
            areturn
        22: .line 255
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "V_END"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 24
        23: .line 256
            aload 2 /* certificates */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getNotAfter:()Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
            areturn
        24: .line 257
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "V_REMAIN"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 29
        25: .line 258
            aload 2 /* certificates */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getNotAfter:()Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokestatic java.lang.System.currentTimeMillis:()J
            lsub
            lstore 3 /* remain */
        start local 3 // long remain
        26: .line 259
            lload 3 /* remain */
            lconst_0
            lcmp
            ifge 28
        27: .line 260
            lconst_0
            lstore 3 /* remain */
        28: .line 263
      StackMap locals: long
      StackMap stack:
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            lload 3 /* remain */
            invokevirtual java.util.concurrent.TimeUnit.toDays:(J)J
            invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
            areturn
        end local 3 // long remain
        29: .line 264
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "A_SIG"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 31
        30: .line 265
            aload 2 /* certificates */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getSigAlgName:()Ljava/lang/String;
            areturn
        31: .line 266
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "A_KEY"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 33
        32: .line 267
            aload 2 /* certificates */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
            areturn
        33: .line 268
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            ldc "CERT"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 38
        34: .line 270
            aload 2 /* certificates */
            iconst_0
            aaload
            invokestatic org.apache.tomcat.util.net.jsse.PEMFile.toPEM:(Ljava/security/cert/X509Certificate;)Ljava/lang/String;
        35: areturn
        36: .line 271
      StackMap locals:
      StackMap stack: java.security.cert.CertificateEncodingException
            pop
        37: .line 273
            goto 43
      StackMap locals:
      StackMap stack:
        38: aload 1 /* key */
            ldc "CERT_CHAIN_"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 43
        39: .line 274
            aload 1 /* key */
            ldc "CERT_CHAIN_"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* key */
        40: .line 276
            aload 2 /* certificates */
            aload 1 /* key */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            aaload
            invokestatic org.apache.tomcat.util.net.jsse.PEMFile.toPEM:(Ljava/security/cert/X509Certificate;)Ljava/lang/String;
        41: areturn
        42: .line 278
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
        43: .line 282
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.security.cert.X509Certificate[] certificates
        end local 1 // java.lang.String key
        end local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   44     0          this  Lorg/apache/catalina/valves/rewrite/ResolverImpl;
            0   44     1           key  Ljava/lang/String;
            0   44     2  certificates  [Ljava/security/cert/X509Certificate;
           26   29     3        remain  J
      Exception table:
        from    to  target  type
          34    35      36  Class java.security.cert.CertificateEncodingException
          40    41      42  Class java.lang.NumberFormatException
          40    41      42  Class java.lang.ArrayIndexOutOfBoundsException
          40    41      42  Class java.security.cert.CertificateEncodingException
    MethodParameters:
              Name  Flags
      key           
      certificates  

  private java.lang.String resolveComponent(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
        start local 1 // java.lang.String fullDN
        start local 2 // java.lang.String component
         0: .line 286
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 3 /* components */
        start local 3 // java.util.HashMap components
         1: .line 287
            new java.util.StringTokenizer
            dup
            aload 1 /* fullDN */
            ldc ","
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 4 /* tokenizer */
        start local 4 // java.util.StringTokenizer tokenizer
         2: .line 288
            goto 7
         3: .line 289
      StackMap locals: java.util.HashMap java.util.StringTokenizer
      StackMap stack:
            aload 4 /* tokenizer */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 5 /* token */
        start local 5 // java.lang.String token
         4: .line 290
            aload 5 /* token */
            ldc "="
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 6 /* pos */
        start local 6 // int pos
         5: .line 291
            iload 6 /* pos */
            ifle 7
            iload 6 /* pos */
            iconst_1
            iadd
            aload 5 /* token */
            invokevirtual java.lang.String.length:()I
            if_icmpge 7
         6: .line 292
            aload 3 /* components */
            aload 5 /* token */
            iconst_0
            iload 6 /* pos */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aload 5 /* token */
            iload 6 /* pos */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // int pos
        end local 5 // java.lang.String token
         7: .line 288
      StackMap locals:
      StackMap stack:
            aload 4 /* tokenizer */
            invokevirtual java.util.StringTokenizer.hasMoreElements:()Z
            ifne 3
         8: .line 295
            aload 3 /* components */
            aload 2 /* component */
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            areturn
        end local 4 // java.util.StringTokenizer tokenizer
        end local 3 // java.util.HashMap components
        end local 2 // java.lang.String component
        end local 1 // java.lang.String fullDN
        end local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/apache/catalina/valves/rewrite/ResolverImpl;
            0    9     1      fullDN  Ljava/lang/String;
            0    9     2   component  Ljava/lang/String;
            1    9     3  components  Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/String;>;
            2    9     4   tokenizer  Ljava/util/StringTokenizer;
            4    7     5       token  Ljava/lang/String;
            5    7     6         pos  I
    MethodParameters:
           Name  Flags
      fullDN     
      component  

  private java.lang.String resolveAlternateName(java.security.cert.X509Certificate, int, int);
    descriptor: (Ljava/security/cert/X509Certificate;II)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=9, args_size=4
        start local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
        start local 1 // java.security.cert.X509Certificate certificate
        start local 2 // int type
        start local 3 // int n
         0: .line 300
            aload 1 /* certificate */
            invokevirtual java.security.cert.X509Certificate.getSubjectAlternativeNames:()Ljava/util/Collection;
            astore 4 /* alternateNames */
        start local 4 // java.util.Collection alternateNames
         1: .line 301
            aload 4 /* alternateNames */
            ifnull 13
         2: .line 302
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* elements */
        start local 5 // java.util.List elements
         3: .line 303
            aload 4 /* alternateNames */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 7
            goto 8
      StackMap locals: org.apache.catalina.valves.rewrite.ResolverImpl java.security.cert.X509Certificate int int java.util.Collection java.util.List top java.util.Iterator
      StackMap stack:
         4: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.List
            astore 6 /* alternateName */
        start local 6 // java.util.List alternateName
         5: .line 304
            aload 6 /* alternateName */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 8 /* alternateNameType */
        start local 8 // java.lang.Integer alternateNameType
         6: .line 305
            aload 8 /* alternateNameType */
            invokevirtual java.lang.Integer.intValue:()I
            iload 2 /* type */
            if_icmpne 8
         7: .line 306
            aload 5 /* elements */
            aload 6 /* alternateName */
            iconst_1
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // java.lang.Integer alternateNameType
        end local 6 // java.util.List alternateName
         8: .line 303
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         9: .line 309
            aload 5 /* elements */
            invokeinterface java.util.List.size:()I
            iload 3 /* n */
            if_icmple 13
        10: .line 310
            aload 5 /* elements */
            iload 3 /* n */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
        11: areturn
        end local 5 // java.util.List elements
        end local 4 // java.util.Collection alternateNames
        12: .line 314
      StackMap locals: org.apache.catalina.valves.rewrite.ResolverImpl java.security.cert.X509Certificate int int
      StackMap stack: java.lang.Exception
            pop
        13: .line 317
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 3 // int n
        end local 2 // int type
        end local 1 // java.security.cert.X509Certificate certificate
        end local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   14     0               this  Lorg/apache/catalina/valves/rewrite/ResolverImpl;
            0   14     1        certificate  Ljava/security/cert/X509Certificate;
            0   14     2               type  I
            0   14     3                  n  I
            1   12     4     alternateNames  Ljava/util/Collection<Ljava/util/List<*>;>;
            3   12     5           elements  Ljava/util/List<Ljava/lang/String;>;
            5    8     6      alternateName  Ljava/util/List<*>;
            6    8     8  alternateNameType  Ljava/lang/Integer;
      Exception table:
        from    to  target  type
           0    11      12  Class java.lang.NumberFormatException
           0    11      12  Class java.lang.ArrayIndexOutOfBoundsException
           0    11      12  Class java.security.cert.CertificateParsingException
    MethodParameters:
             Name  Flags
      certificate  
      type         
      n            

  public java.lang.String resolveHttp(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
        start local 1 // java.lang.String key
         0: .line 322
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            aload 1 /* key */
            invokevirtual org.apache.catalina.connector.Request.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* header */
        start local 2 // java.lang.String header
         1: .line 323
            aload 2 /* header */
            ifnonnull 3
         2: .line 324
            ldc ""
            areturn
         3: .line 326
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* header */
            areturn
        end local 2 // java.lang.String header
        end local 1 // java.lang.String key
        end local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/apache/catalina/valves/rewrite/ResolverImpl;
            0    4     1     key  Ljava/lang/String;
            1    4     2  header  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      key   

  public boolean resolveResource(int, java.lang.String);
    descriptor: (ILjava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
        start local 1 // int type
        start local 2 // java.lang.String name
         0: .line 332
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getContext:()Lorg/apache/catalina/Context;
            invokeinterface org.apache.catalina.Context.getResources:()Lorg/apache/catalina/WebResourceRoot;
            astore 3 /* resources */
        start local 3 // org.apache.catalina.WebResourceRoot resources
         1: .line 333
            aload 3 /* resources */
            aload 2 /* name */
            invokeinterface org.apache.catalina.WebResourceRoot.getResource:(Ljava/lang/String;)Lorg/apache/catalina/WebResource;
            astore 4 /* resource */
        start local 4 // org.apache.catalina.WebResource resource
         2: .line 334
            aload 4 /* resource */
            invokeinterface org.apache.catalina.WebResource.exists:()Z
            ifne 4
         3: .line 335
            iconst_0
            ireturn
         4: .line 337
      StackMap locals: org.apache.catalina.WebResourceRoot org.apache.catalina.WebResource
      StackMap stack:
            iload 1 /* type */
            tableswitch { // 0 - 2
                    0: 5
                    1: 6
                    2: 7
              default: 9
          }
         5: .line 339
      StackMap locals:
      StackMap stack:
            aload 4 /* resource */
            invokeinterface org.apache.catalina.WebResource.isDirectory:()Z
            ireturn
         6: .line 341
      StackMap locals:
      StackMap stack:
            aload 4 /* resource */
            invokeinterface org.apache.catalina.WebResource.isFile:()Z
            ireturn
         7: .line 343
      StackMap locals:
      StackMap stack:
            aload 4 /* resource */
            invokeinterface org.apache.catalina.WebResource.isFile:()Z
            ifeq 8
            aload 4 /* resource */
            invokeinterface org.apache.catalina.WebResource.getContentLength:()J
            lconst_0
            lcmp
            ifle 8
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         8: iconst_0
            ireturn
         9: .line 345
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // org.apache.catalina.WebResource resource
        end local 3 // org.apache.catalina.WebResourceRoot resources
        end local 2 // java.lang.String name
        end local 1 // int type
        end local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lorg/apache/catalina/valves/rewrite/ResolverImpl;
            0   10     1       type  I
            0   10     2       name  Ljava/lang/String;
            1   10     3  resources  Lorg/apache/catalina/WebResourceRoot;
            2   10     4   resource  Lorg/apache/catalina/WebResource;
    MethodParameters:
      Name  Flags
      type  
      name  

  private static final java.lang.String emptyStringIfNull(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String value
         0: .line 351
            aload 0 /* value */
            ifnonnull 2
         1: .line 352
            ldc ""
            areturn
         2: .line 354
      StackMap locals:
      StackMap stack:
            aload 0 /* value */
            areturn
        end local 0 // java.lang.String value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      value  

  public java.nio.charset.Charset getUriCharset();
    descriptor: ()Ljava/nio/charset/Charset;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
         0: .line 360
            aload 0 /* this */
            getfield org.apache.catalina.valves.rewrite.ResolverImpl.request:Lorg/apache/catalina/connector/Request;
            invokevirtual org.apache.catalina.connector.Request.getConnector:()Lorg/apache/catalina/connector/Connector;
            invokevirtual org.apache.catalina.connector.Connector.getURICharset:()Ljava/nio/charset/Charset;
            areturn
        end local 0 // org.apache.catalina.valves.rewrite.ResolverImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/valves/rewrite/ResolverImpl;
}
SourceFile: "ResolverImpl.java"