package com.l7tech.policy.assertion.xmlsec;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import org.jetbrains.annotations.NotNull;

public class SamlAttributeStatement implements Cloneable, Serializable {
   public static final String SUFFIX_UNKNOWN_ATTRIBUTE_NAMES;
   public static final String SUFFIX_MISSING_ATTRIBUTE_NAMES;
   public static final String SUFFIX_NO_ATTRIBUTES_ADDED;
   public static final String SUFFIX_EXCLUDED_ATTRIBUTES;
   public static final String SUFFIX_FILTERED_ATTRIBUTES;
   public static final String DEFAULT_VARIABLE_PREFIX;
   public static final Collection<String> VARIABLE_SUFFIXES;
   private static final long serialVersionUID = 1L;
   private SamlAttributeStatement.Attribute[] attributes = new SamlAttributeStatement.Attribute[0];
   private String filterExpression = "";
   private boolean failIfAnyAttributeIsMissing;
   private boolean failIfUnknownAttributeInFilter;
   private boolean failIfNoAttributesAdded = true;
   private boolean failIfAttributeValueExcludesAttribute;
   private String variablePrefix;
   private static final String[] a;

   public SamlAttributeStatement.Attribute[] getAttributes() {
      return this.attributes;
   }

   public SamlAttributeStatement() {
      this.variablePrefix = a[2];
   }

   public SamlAttributeStatement(SamlAttributeStatement.Attribute... var1) {
      this.variablePrefix = a[15];
      this.attributes = var1;
   }

   public void setAttributes(SamlAttributeStatement.Attribute[] var1) {
      try {
         if (var1 == null) {
            this.attributes = new SamlAttributeStatement.Attribute[0];
            return;
         }
      } catch (RuntimeException var2) {
         throw a(var2);
      }

      this.attributes = var1;
   }

   @NotNull
   public String getFilterExpression() {
      try {
         return this.filterExpression;
      } catch (RuntimeException var1) {
         throw a(var1);
      }
   }

   public void setFilterExpression(@NotNull String var1) {
      try {
         if (var1 == null) {
            $$$reportNull$$$0(1);
         }
      } catch (RuntimeException var2) {
         throw a(var2);
      }

      this.filterExpression = var1;
   }

   public boolean isFailIfAnyAttributeIsMissing() {
      return this.failIfAnyAttributeIsMissing;
   }

   public void setFailIfAnyAttributeIsMissing(boolean var1) {
      this.failIfAnyAttributeIsMissing = var1;
   }

   public String getVariablePrefix() {
      return this.variablePrefix;
   }

   public void setVariablePrefix(String var1) {
      this.variablePrefix = var1;
   }

   public boolean isFailIfUnknownAttributeInFilter() {
      return this.failIfUnknownAttributeInFilter;
   }

   public void setFailIfUnknownAttributeInFilter(boolean var1) {
      this.failIfUnknownAttributeInFilter = var1;
   }

   public boolean isFailIfNoAttributesAdded() {
      return this.failIfNoAttributesAdded;
   }

   public void setFailIfNoAttributesAdded(boolean var1) {
      this.failIfNoAttributesAdded = var1;
   }

   public boolean isFailIfAttributeValueExcludesAttribute() {
      return this.failIfAttributeValueExcludesAttribute;
   }

   public void setFailIfAttributeValueExcludesAttribute(boolean var1) {
      this.failIfAttributeValueExcludesAttribute = var1;
   }

   @Override
   public Object clone() {
      try {
         SamlAttributeStatement var1 = (SamlAttributeStatement)super.clone();
         SamlAttributeStatement.Attribute[] var2 = (SamlAttributeStatement.Attribute[])this.attributes.clone();
         if (var2 != null) {
            int var3 = 0;

            try {
               while (var3 < var2.length) {
                  var2[var3] = (SamlAttributeStatement.Attribute)var2[var3].clone();
                  var3++;
               }
            } catch (CloneNotSupportedException var4) {
               throw a(var4);
            }
         }

         var1.setAttributes(var2);
         return var1;
      } catch (CloneNotSupportedException var5) {
         throw new RuntimeException(a[11]);
      }
   }

   static {
      String[] var5 = new String[20];
      int var3 = 0;
      String var2 = "\u0012&bxE\u001a5\u0014*gxYB-\u0018*vxH^2\u0014;{>FCn\t$c$LNn\"(b;hY5\u0003 m\"]H\u0012\u0005({2DH/\u0005\u0010\u0004'd9FZ/0={%gL,\u0014:\r\u0010={%zY \u0005,b2GY\u0012\u0017 c#L_$\u0015\b{#[D#\u0004=j$\u0010\u001c |$@C&0={%gL,\u0014:\u0010\u0017 c#L_\u0004\t9}2Z^(\u001e'\u0012\u0017 c#L_$\u0015\b{#[D#\u0004=j$\f\u001f&N#]_(\u0013<{2Z9\u0012&bxE\u001a5\u0014*gxYB-\u0018*vxH^2\u0014;{>FCn\t$c$LNn\"(b;hY5\u0003 m\"]H\u0012\u0005({2DH/\u0005*1\u0007`#gX-\u001dib2]E.\u0015i*$\u0007\b2Q$z$]\r/\u001e=/%LY4\u0003'/9\\A-\u0010\u001c |$@C&0={%gL,\u0014:\u000b2%`9L\r$\u0003;`%\u0013\u0016,{\u0011@A5\u0014;J/Y_$\u0002:f8G\u0013\u0002,{\u0011@A5\u0014;J/Y_$\u0002:f8G>0;h\"DH/\u0005ii8[\r\u0001?&{\u0019\\A-Q9n%H@$\u0005,}w\u000e\b2Vi`1\t\b2_l|wDX2\u0005ia8]\r#\u0014ia\"EA\r\u0010={%zY \u0005,b2GY\u0012\u00141l;\\I$\u0015\b{#[D#\u0004=j$\u0010\u0004'd9FZ/0={%gL,\u0014:";
      int var4 = "\u0012&bxE\u001a5\u0014*gxYB-\u0018*vxH^2\u0014;{>FCn\t$c$LNn\"(b;hY5\u0003 m\"]H\u0012\u0005({2DH/\u0005\u0010\u0004'd9FZ/0={%gL,\u0014:\r\u0010={%zY \u0005,b2GY\u0012\u0017 c#L_$\u0015\b{#[D#\u0004=j$\u0010\u001c |$@C&0={%gL,\u0014:\u0010\u0017 c#L_\u0004\t9}2Z^(\u001e'\u0012\u0017 c#L_$\u0015\b{#[D#\u0004=j$\f\u001f&N#]_(\u0013<{2Z9\u0012&bxE\u001a5\u0014*gxYB-\u0018*vxH^2\u0014;{>FCn\t$c$LNn\"(b;hY5\u0003 m\"]H\u0012\u0005({2DH/\u0005*1\u0007`#gX-\u001dib2]E.\u0015i*$\u0007\b2Q$z$]\r/\u001e=/%LY4\u0003'/9\\A-\u0010\u001c |$@C&0={%gL,\u0014:\u000b2%`9L\r$\u0003;`%\u0013\u0016,{\u0011@A5\u0014;J/Y_$\u0002:f8G\u0013\u0002,{\u0011@A5\u0014;J/Y_$\u0002:f8G>0;h\"DH/\u0005ii8[\r\u0001?&{\u0019\\A-Q9n%H@$\u0005,}w\u000e\b2Vi`1\t\b2_l|wDX2\u0005ia8]\r#\u0014ia\"EA\r\u0010={%zY \u0005,b2GY\u0012\u00141l;\\I$\u0015\b{#[D#\u0004=j$\u0010\u0004'd9FZ/0={%gL,\u0014:"
         .length();
      char var1 = '9';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 5;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var9 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     a = var5;
                     String[] var10 = a;
                     SUFFIX_FILTERED_ATTRIBUTES = a[3];
                     SUFFIX_EXCLUDED_ATTRIBUTES = var10[16];
                     DEFAULT_VARIABLE_PREFIX = var10[15];
                     SUFFIX_MISSING_ATTRIBUTE_NAMES = var10[4];
                     SUFFIX_UNKNOWN_ATTRIBUTE_NAMES = var10[1];
                     SUFFIX_NO_ATTRIBUTES_ADDED = var10[7];
                     String[] var11 = new String[5];
                     String[] var8 = a;
                     var11[0] = var8[17];
                     var11[1] = var8[10];
                     var11[2] = var8[18];
                     var11[3] = var8[19];
                     var11[4] = var8[6];
                     VARIABLE_SUFFIXES = Collections.unmodifiableCollection(Arrays.asList(var11));
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var9;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "]d\fa\u001f\u001djQ~9p\u0018\u0012Vs.y\u001e\u000bfWJ9a\u0019\u0006aF\u007f(f";
                  var4 = "]d\fa\u001f\u001djQ~9p\u0018\u0012Vs.y\u001e\u000bfWJ9a\u0019\u0006aF\u007f(f".length();
                  var1 = '\f';
                  var7 = -1;
            }

            var10000 = 71;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

   private static Exception a(Exception var0) {
      return var0;
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 68);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 116;
            case 1 -> 76;
            case 2 -> 10;
            case 3 -> 82;
            case 4 -> 44;
            case 5 -> 40;
            default -> 68;
         });
      }

      return new String(var10001).intern();
   }

   public static class Attribute implements Cloneable, Serializable {
      private static final long serialVersionUID = 1L;
      private String name;
      private String namespace;
      private String nameFormat;
      private String value;
      private boolean anyValue;
      private boolean repeatIfMulti;
      private boolean missingWhenEmpty = false;
      private SamlAttributeStatement.Attribute.AttributeValueAddBehavior addBehavior = SamlAttributeStatement.Attribute.AttributeValueAddBehavior.STRING_CONVERT;
      private SamlAttributeStatement.Attribute.AttributeValueComparison valueComparison = SamlAttributeStatement.Attribute.AttributeValueComparison.STRING_COMPARE;
      private SamlAttributeStatement.Attribute.EmptyBehavior emptyBehavior = SamlAttributeStatement.Attribute.EmptyBehavior.EMPTY_STRING;
      private SamlAttributeStatement.Attribute.VariableNotFoundBehavior variableNotFoundBehavior = SamlAttributeStatement.Attribute.VariableNotFoundBehavior.REPLACE_EMPTY_STRING;
      private String friendlyName;
      private static final String[] a;

      public Attribute() {
      }

      public Attribute(String param1, String param2, String param3, String param4, boolean param5, boolean param6) {
         // $VF: Couldn't be decompiled
         // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
         // java.lang.RuntimeException: parsing failure!
         //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
         //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
         //
         // Bytecode:
         // 00: aload 0
         // 01: invokespecial java/lang/Object.<init> ()V
         // 04: aload 0
         // 05: bipush 0
         // 06: putfield com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.missingWhenEmpty Z
         // 09: aload 0
         // 0a: getstatic com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$AttributeValueAddBehavior.STRING_CONVERT Lcom/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$AttributeValueAddBehavior;
         // 0d: putfield com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.addBehavior Lcom/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$AttributeValueAddBehavior;
         // 10: aload 0
         // 11: getstatic com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$AttributeValueComparison.STRING_COMPARE Lcom/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$AttributeValueComparison;
         // 14: putfield com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.valueComparison Lcom/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$AttributeValueComparison;
         // 17: aload 0
         // 18: getstatic com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$EmptyBehavior.EMPTY_STRING Lcom/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$EmptyBehavior;
         // 1b: putfield com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.emptyBehavior Lcom/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$EmptyBehavior;
         // 1e: aload 0
         // 1f: getstatic com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$VariableNotFoundBehavior.REPLACE_EMPTY_STRING Lcom/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$VariableNotFoundBehavior;
         // 22: putfield com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.variableNotFoundBehavior Lcom/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute$VariableNotFoundBehavior;
         // 25: aload 1
         // 26: ifnull 3a
         // 29: aload 4
         // 2b: ifnonnull 46
         // 2e: iload 5
         // 30: ifne 46
         // 33: goto 3a
         // 36: invokestatic com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
         // 39: athrow
         // 3a: new java/lang/IllegalArgumentException
         // 3d: dup
         // 3e: invokespecial java/lang/IllegalArgumentException.<init> ()V
         // 41: athrow
         // 42: invokestatic com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
         // 45: athrow
         // 46: aload 0
         // 47: aload 1
         // 48: putfield com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.name Ljava/lang/String;
         // 4b: aload 0
         // 4c: aload 2
         // 4d: putfield com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.namespace Ljava/lang/String;
         // 50: aload 0
         // 51: aload 3
         // 52: putfield com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.nameFormat Ljava/lang/String;
         // 55: aload 0
         // 56: aload 4
         // 58: putfield com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.value Ljava/lang/String;
         // 5b: aload 0
         // 5c: iload 5
         // 5e: putfield com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.anyValue Z
         // 61: aload 0
         // 62: iload 6
         // 64: putfield com/l7tech/policy/assertion/xmlsec/SamlAttributeStatement$Attribute.repeatIfMulti Z
         // 67: return
         // try (19 -> 23): 24 java/lang/IllegalArgumentException
         // try (21 -> 30): 30 java/lang/IllegalArgumentException
      }

      public String getName() {
         return this.name;
      }

      public void setName(String var1) {
         this.name = var1;
      }

      public String getNamespace() {
         return this.namespace;
      }

      public void setNamespace(String var1) {
         this.namespace = var1;
      }

      public String getNameFormat() {
         return this.nameFormat;
      }

      public void setNameFormat(String var1) {
         this.nameFormat = var1;
      }

      public String getValue() {
         return this.value;
      }

      public void setValue(String var1) {
         this.value = var1;
      }

      public boolean isAnyValue() {
         return this.anyValue;
      }

      public void setAnyValue(boolean var1) {
         this.anyValue = var1;
      }

      public boolean isRepeatIfMulti() {
         return this.repeatIfMulti;
      }

      public void setRepeatIfMulti(boolean var1) {
         this.repeatIfMulti = var1;
      }

      public String getFriendlyName() {
         return this.friendlyName;
      }

      public void setFriendlyName(String var1) {
         this.friendlyName = var1;
      }

      public SamlAttributeStatement.Attribute.AttributeValueAddBehavior getAddBehavior() {
         return this.addBehavior;
      }

      public void setAddBehavior(SamlAttributeStatement.Attribute.AttributeValueAddBehavior var1) {
         this.addBehavior = var1;
      }

      public SamlAttributeStatement.Attribute.AttributeValueComparison getValueComparison() {
         return this.valueComparison;
      }

      public void setValueComparison(SamlAttributeStatement.Attribute.AttributeValueComparison var1) {
         this.valueComparison = var1;
      }

      public boolean isMissingWhenEmpty() {
         return this.missingWhenEmpty;
      }

      public void setMissingWhenEmpty(boolean var1) {
         this.missingWhenEmpty = var1;
      }

      public SamlAttributeStatement.Attribute.EmptyBehavior getEmptyBehavior() {
         return this.emptyBehavior;
      }

      public void setEmptyBehavior(SamlAttributeStatement.Attribute.EmptyBehavior var1) {
         this.emptyBehavior = var1;
      }

      public SamlAttributeStatement.Attribute.VariableNotFoundBehavior getVariableNotFoundBehavior() {
         return this.variableNotFoundBehavior;
      }

      public void setVariableNotFoundBehavior(SamlAttributeStatement.Attribute.VariableNotFoundBehavior var1) {
         this.variableNotFoundBehavior = var1;
      }

      @Override
      public String toString() {
         StringBuilder var1 = new StringBuilder();

         StringBuilder var10000;
         String var10001;
         label65: {
            try {
               var10000 = var1.append(a[3]);
               if (this.namespace == null) {
                  var10001 = a[8];
                  break label65;
               }
            } catch (IllegalArgumentException var6) {
               throw a(var6);
            }

            var10001 = this.namespace;
         }

         label58: {
            try {
               var10000 = var10000.append(a[7] + var10001);
               if (this.nameFormat == null) {
                  var10001 = a[1];
                  break label58;
               }
            } catch (IllegalArgumentException var5) {
               throw a(var5);
            }

            var10001 = this.nameFormat;
         }

         label51: {
            try {
               var10000 = var10000.append(a[6] + var10001);
               if (this.name == null) {
                  var10001 = a[1];
                  break label51;
               }
            } catch (IllegalArgumentException var4) {
               throw a(var4);
            }

            var10001 = this.name;
         }

         label44: {
            try {
               var10000 = var10000.append(a[4] + var10001);
               if (this.value == null) {
                  var10001 = a[1];
                  break label44;
               }
            } catch (IllegalArgumentException var3) {
               throw a(var3);
            }

            var10001 = this.value;
         }

         try {
            var10000.append(a[9] + var10001).append(a[11] + this.anyValue).append(a[0] + this.repeatIfMulti);
            if (this.friendlyName != null) {
               var1.append(a[2]).append(this.friendlyName).append("]");
               return var1.toString();
            }
         } catch (IllegalArgumentException var2) {
            throw a(var2);
         }

         var1.append(a[5]);
         return var1.toString();
      }

      @Override
      public Object clone() {
         try {
            return super.clone();
         } catch (CloneNotSupportedException var2) {
            throw new RuntimeException(a[10]);
         }
      }

      private static IllegalArgumentException a(IllegalArgumentException var0) {
         return var0;
      }

      static {
         String[] var5 = new String[12];
         int var3 = 0;
         String var2 = "*Rq\u00131#\u0003r;e;4*\u0016oO\u0004h\u0007o\u001a\r`\u0000j\u0013/\"\u000e\u007f<b\u001b${\u0002]R\u0007*Rm\u0017,#_\u0002&/\r*Rm\u0017,#$i\u0000n\u00175{\nh\u0013n\u001326\u0003e\u0017>\u0004h\u0007o\u001a\b*Ru\u0017-3\u0007;";
         int var4 = "*Rq\u00131#\u0003r;e;4*\u0016oO\u0004h\u0007o\u001a\r`\u0000j\u0013/\"\u000e\u007f<b\u001b${\u0002]R\u0007*Rm\u0017,#_\u0002&/\r*Rm\u0017,#$i\u0000n\u00175{\nh\u0013n\u001326\u0003e\u0017>\u0004h\u0007o\u001a\b*Ru\u0017-3\u0007;"
            .length();
         char var1 = 16;
         int var7 = -1;

         label24:
         while (true) {
            byte var10000 = 127;
            String var10001 = var2.substring(++var7, var7 + var1);
            byte var10002 = -1;

            while (true) {
               String var8 = a(var10000, a(var10001));
               switch (var10002) {
                  case 0:
                     var5[var3++] = var8;
                     if ((var7 += var1) >= var4) {
                        a = var5;
                        return;
                     }

                     var1 = var2.charAt(var7);
                     break;
                  default:
                     var5[var3++] = var8;
                     if ((var7 += var1) < var4) {
                        var1 = var2.charAt(var7);
                        continue label24;
                     }

                     var2 = "y\"P$\u0018Z;H<P8\u000b\u0016n^$\u0004,?V;Zw";
                     var4 = "y\"P$\u0018Z;H<P8\u000b\u0016n^$\u0004,?V;Zw".length();
                     var1 = 11;
                     var7 = -1;
               }

               var10000 = 67;
               var10001 = var2.substring(++var7, var7 + var1);
               var10002 = 0;
            }
         }
      }

      private static char[] a(String var0) {
         char[] var10000 = var0.toCharArray();
         if (var10000.length < 2) {
            var10000[0] = (char)(var10000[0] ^ 29);
         }

         return var10000;
      }

      private static String a(int var0, char[] var1) {
         int var10003 = var1.length;
         int var10002 = var0;
         char[] var10001 = var1;
         int var10000 = var10003;

         for (int var2 = 0; var10000 > var2; var2++) {
            var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
               case 0 -> 121;
               case 1 -> 13;
               case 2 -> 124;
               case 3 -> 9;
               case 4 -> 62;
               case 5 -> 57;
               default -> 29;
            });
         }

         return new String(var10001).intern();
      }

      public enum AttributeValueAddBehavior {
         STRING_CONVERT,
         ADD_AS_XML;

         private final String value;

         AttributeValueAddBehavior(String var3) {
            this.value = var3;
         }

         public String getValue() {
            return this.value;
         }

         // $VF: Failed to inline enum fields
         // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
         static {
            String[] var0 = new String[4];
            int var4 = 0;
            String var3 = "8C\u000e\u00173\u0018\u0005!j&\u00174\u0019D\u001eJ\u000fY&\n8c.h\u00138z!j&";
            int var5 = "8C\u000e\u00173\u0018\u0005!j&\u00174\u0019D\u001eJ\u000fY&\n8c.h\u00138z!j&".length();
            char var2 = 19;
            int var7 = -1;

            label25:
            while (true) {
               byte var10000 = 75;
               String var10001 = var3.substring(++var7, var7 + var2);
               byte var10002 = -1;

               while (true) {
                  String var8 = a(var10000, a(var10001));
                  switch (var10002) {
                     case 0:
                        var0[var4++] = var8;
                        if ((var7 += var2) >= var5) {
                           STRING_CONVERT = new SamlAttributeStatement.Attribute.AttributeValueAddBehavior(var0[3]);
                           ADD_AS_XML = new SamlAttributeStatement.Attribute.AttributeValueAddBehavior(var0[0]);
                           return;
                        }

                        var2 = var3.charAt(var7);
                        break;
                     default:
                        var0[var4++] = var8;
                        if ((var7 += var2) < var5) {
                           var2 = var3.charAt(var7);
                           continue label25;
                        }

                        var3 = "\tP\u001b]?\u000fY\u0019K\u0007B4\u001aR\u0011\u0019k'b\u0014:rzp&4\u0002<t3j.";
                        var5 = "\tP\u001b]?\u000fY\u0019K\u0007B4\u001aR\u0011\u0019k'b\u0014:rzp&4\u0002<t3j.".length();
                        var2 = 14;
                        var7 = -1;
                  }

                  var10000 = 104;
                  var10001 = var3.substring(++var7, var7 + var2);
                  var10002 = 0;
               }
            }
         }

         private static char[] a(String var0) {
            char[] var10000 = var0.toCharArray();
            if (var10000.length < 2) {
               var10000[0] = (char)(var10000[0] ^ 110);
            }

            return var10000;
         }

         private static String a(int var0, char[] var1) {
            int var10003 = var1.length;
            int var10002 = var0;
            char[] var10001 = var1;
            int var10000 = var10003;

            for (int var2 = 0; var10000 > var2; var2++) {
               var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
                  case 0 -> 50;
                  case 1 -> 108;
                  case 2 -> 33;
                  case 3 -> 124;
                  case 4 -> 25;
                  case 5 -> 32;
                  default -> 110;
               });
            }

            return new String(var10001).intern();
         }
      }

      public enum AttributeValueComparison {
         STRING_COMPARE,
         CANONICALIZE;

         private final String value;

         AttributeValueComparison(String var3) {
            this.value = var3;
         }

         public String getValue() {
            return this.value;
         }

         // $VF: Failed to inline enum fields
         // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
         static {
            String[] var0 = new String[4];
            int var4 = 0;
            String var3 = "\u001543ko|~\u0005/,r`id\f\u0005!/morb\u0007,(xd";
            int var5 = "\u001543ko|~\u0005/,r`id\f\u0005!/morb\u0007,(xd".length();
            char var2 = 14;
            int var7 = -1;

            label25:
            while (true) {
               byte var10000 = 71;
               String var10001 = var3.substring(++var7, var7 + var2);
               byte var10002 = -1;

               while (true) {
                  String var8 = a(var10000, a(var10001));
                  switch (var10002) {
                     case 0:
                        var0[var4++] = var8;
                        if ((var7 += var2) >= var5) {
                           STRING_COMPARE = new SamlAttributeStatement.Attribute.AttributeValueComparison(var0[3]);
                           CANONICALIZE = new SamlAttributeStatement.Attribute.AttributeValueComparison(var0[2]);
                           return;
                        }

                        var2 = var3.charAt(var7);
                        break;
                     default:
                        var0[var4++] = var8;
                        if ((var7 += var2) < var5) {
                           var2 = var3.charAt(var7);
                           continue label25;
                        }

                        var3 = "gcm/-0 Enj:&\u0011wvq)->cGmn0\"+*Wmm";
                        var5 = "gcm/-0 Enj:&\u0011wvq)->cGmn0\"+*Wmm".length();
                        var2 = '\f';
                        var7 = -1;
                  }

                  var10000 = 37;
                  var10001 = var3.substring(++var7, var7 + var2);
                  var10002 = 0;
               }
            }
         }

         private static char[] a(String var0) {
            char[] var10000 = var0.toCharArray();
            if (var10000.length < 2) {
               var10000[0] = (char)(var10000[0] ^ 102);
            }

            return var10000;
         }

         private static String a(int var0, char[] var1) {
            int var10003 = var1.length;
            int var10002 = var0;
            char[] var10001 = var1;
            int var10000 = var10003;

            for (int var2 = 0; var10000 > var2; var2++) {
               var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
                  case 0 -> 1;
                  case 1 -> 39;
                  case 2 -> 38;
                  case 3 -> 101;
                  case 4 -> 102;
                  case 5 -> 124;
                  default -> 102;
               });
            }

            return new String(var10001).intern();
         }
      }

      public enum EmptyBehavior {
         EMPTY_STRING,
         EXISTS_NO_VALUE,
         NULL_VALUE;

         private final String value;

         EmptyBehavior(String var3) {
            this.value = var3;
         }

         public String getValue() {
            return this.value;
         }

         // $VF: Failed to inline enum fields
         // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
         static {
            String[] var0 = new String[6];
            int var4 = 0;
            String var3 = "\u0012-\f-#=i7&Hc\r==$+N68,\u001f7.Y&\f\u0013\u000f|\u0017\u0015\u0016\u001a\u0002\u0010e\r\u000b\n\u0018\u0017`\u000f\u0013\u001f\b\u001a\u0017i\u001d\u0017&Hc\"<%:bZ\" <,v\u0003X7> +#6I\u0015-%<3";
            int var5 = "\u0012-\f-#=i7&Hc\r==$+N68,\u001f7.Y&\f\u0013\u000f|\u0017\u0015\u0016\u001a\u0002\u0010e\r\u000b\n\u0018\u0017`\u000f\u0013\u001f\b\u001a\u0017i\u001d\u0017&Hc\"<%:bZ\" <,v\u0003X7> +#6I\u0015-%<3"
               .length();
            char var2 = 25;
            int var7 = -1;

            label25:
            while (true) {
               byte var10000 = 46;
               String var10001 = var3.substring(++var7, var7 + var2);
               byte var10002 = -1;

               while (true) {
                  String var8 = a(var10000, a(var10001));
                  switch (var10002) {
                     case 0:
                        var0[var4++] = var8;
                        if ((var7 += var2) >= var5) {
                           EMPTY_STRING = new SamlAttributeStatement.Attribute.EmptyBehavior(var0[4]);
                           EXISTS_NO_VALUE = new SamlAttributeStatement.Attribute.EmptyBehavior(var0[0]);
                           NULL_VALUE = new SamlAttributeStatement.Attribute.EmptyBehavior(var0[3]);
                           return;
                        }

                        var2 = var3.charAt(var7);
                        break;
                     default:
                        var0[var4++] = var8;
                        if ((var7 += var2) < var5) {
                           var2 = var3.charAt(var7);
                           continue label25;
                        }

                        var3 = "3\u0002lG\r\u0000\u001d\u0006\u001f(&\u001c\u0019\u001f\u001b\u0004}\u0013\r;\f\u001e\u0013m\u000f7>A4<>2<)W1)!87";
                        var5 = "3\u0002lG\r\u0000\u001d\u0006\u001f(&\u001c\u0019\u001f\u001b\u0004}\u0013\r;\f\u001e\u0013m\u000f7>A4<>2<)W1)!87".length();
                        var2 = 24;
                        var7 = -1;
                  }

                  var10000 = 10;
                  var10001 = var3.substring(++var7, var7 + var2);
                  var10002 = 0;
               }
            }
         }

         private static char[] a(String var0) {
            char[] var10000 = var0.toCharArray();
            if (var10000.length < 2) {
               var10000[0] = (char)(var10000[0] ^ 103);
            }

            return var10000;
         }

         private static String a(int var0, char[] var1) {
            int var10003 = var1.length;
            int var10002 = var0;
            char[] var10001 = var1;
            int var10000 = var10003;

            for (int var2 = 0; var10000 > var2; var2++) {
               var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
                  case 0 -> 120;
                  case 1 -> 108;
                  case 2 -> 2;
                  case 3 -> 109;
                  case 4 -> 98;
                  case 5 -> 103;
                  default -> 103;
               });
            }

            return new String(var10001).intern();
         }
      }

      public enum VariableNotFoundBehavior {
         REPLACE_EMPTY_STRING,
         REPLACE_EXPRESSION_EMPTY_STRING;

         private final String value;

         VariableNotFoundBehavior(String var3) {
            this.value = var3;
         }

         public String getValue() {
            return this.value;
         }

         // $VF: Failed to inline enum fields
         // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
         static {
            String[] var0 = new String[4];
            int var4 = 0;
            String var3 = "j\u0017aIT\u0018\u0016g\u0017|UA\u0002\fk\u0006cL[\u001c\"j7Ait86\u0018$Pw|:1T7\u0011r|/;\u00187\\ua\"sK&Cl{<";
            int var5 = "j\u0017aIT\u0018\u0016g\u0017|UA\u0002\fk\u0006cL[\u001c\"j7Ait86\u0018$Pw|:1T7\u0011r|/;\u00187\\ua\"sK&Cl{<".length();
            char var2 = 20;
            int var7 = -1;

            label25:
            while (true) {
               byte var10000 = 122;
               String var10001 = var3.substring(++var7, var7 + var2);
               byte var10002 = -1;

               while (true) {
                  String var8 = a(var10000, a(var10001));
                  switch (var10002) {
                     case 0:
                        var0[var4++] = var8;
                        if ((var7 += var2) >= var5) {
                           REPLACE_EMPTY_STRING = new SamlAttributeStatement.Attribute.VariableNotFoundBehavior(var0[1]);
                           REPLACE_EXPRESSION_EMPTY_STRING = new SamlAttributeStatement.Attribute.VariableNotFoundBehavior(var0[3]);
                           return;
                        }

                        var2 = var3.charAt(var7);
                        break;
                     default:
                        var0[var4++] = var8;
                        if ((var7 += var2) < var5) {
                           var2 = var3.charAt(var7);
                           continue label25;
                        }

                        var3 = "T)_wj&(Y)Wky >U%@ut  V8Vdx1?O\"H$T\t\u007fWJ\u0006\b&\twKY\u0000\u001eu\u0005`U\u000b\u0012\u0004r\u0004/^F\u0015\u0019\u007fL|OY\f\u0003a";
                        var5 = "T)_wj&(Y)Wky >U%@ut  V8Vdx1?O\"H$T\t\u007fWJ\u0006\b&\twKY\u0000\u001eu\u0005`U\u000b\u0012\u0004r\u0004/^F\u0015\u0019\u007fL|OY\f\u0003a"
                           .length();
                        var2 = 31;
                        var7 = -1;
                  }

                  var10000 = 68;
                  var10001 = var3.substring(++var7, var7 + var2);
                  var10002 = 0;
               }
            }
         }

         private static char[] a(String var0) {
            char[] var10000 = var0.toCharArray();
            if (var10000.length < 2) {
               var10000[0] = (char)(var10000[0] ^ 41);
            }

            return var10000;
         }

         private static String a(int var0, char[] var1) {
            int var10003 = var1.length;
            int var10002 = var0;
            char[] var10001 = var1;
            int var10000 = var10003;

            for (int var2 = 0; var10000 > var2; var2++) {
               var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
                  case 0 -> 66;
                  case 1 -> 40;
                  case 2 -> 75;
                  case 3 -> 127;
                  case 4 -> 111;
                  case 5 -> 33;
                  default -> 41;
               });
            }

            return new String(var10001).intern();
         }
      }
   }
}
