package com.l7tech.server.wsdm.faults;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class WsAddressingFault extends FaultMappableException {
   private List<WsAddressingFault.WsaFaultDetail> wsaFaultDetails = new ArrayList<>();
   static final long serialVersionUID = 4322143907483122652L;
   private static final String[] b;

   public WsAddressingFault(String var1) {
      super(var1);
   }

   public WsAddressingFault(WsAddressingFault.WsaFaultDetail var1) {
      super(var1.c);
      this.wsaFaultDetails.add(var1);
   }

   @Override
   protected String getWSAAction() {
      return b[8];
   }

   @Override
   protected String getHeadersXML() {
      List var1 = this.getWsaFaultDetails();
      if (var1 != null && !var1.isEmpty()) {
         StringBuilder var2 = new StringBuilder(super.getHeadersXML());
         String[] var6 = b;
         String var3 = this.getNamespacePrefix(var6[2]);
         var2.append(var6[4]).append(var3).append(var6[5]);

         for (WsAddressingFault.WsaFaultDetail var5 : var1) {
            var6 = b;
            var2.append(var6[6])
               .append(var3)
               .append(":")
               .append(var5.a.toString())
               .append(var5.getAttributes())
               .append(">")
               .append(var5.c)
               .append(var6[0])
               .append(var3)
               .append(":")
               .append(var5.a.toString())
               .append(var6[1]);
         }

         var6 = b;
         var2.append(var6[3]).append(var3).append(var6[7]);
         return var2.toString();
      } else {
         return super.getHeadersXML();
      }
   }

   protected List<WsAddressingFault.WsaFaultDetail> getWsaFaultDetails() {
      return this.wsaFaultDetails;
   }

   public void addWsaFaultDetail(WsAddressingFault.WsaFaultDetailType var1, Map<String, String> var2, String var3) {
      this.wsaFaultDetails.add(new WsAddressingFault.WsaFaultDetail(var1, var2, var3));
   }

   @Override
   protected final String getSoapFaultDetailXML() {
      return "";
   }

   static {
      String[] var5 = new String[9];
      int var3 = 0;
      String var2 = "$]\u0002&x$p\u0006\u0015\u001f\r_^o\u0005\u0016A@C_w\u0000\u0006@\u0005@A-]QW\u0018\u0011\u0015|\u0000\u0004\u001cD\u0019\u001f\u007f\u00068RAO\u000b_\u00058RAO\u000b\u0012\"4\u0000\u001a[\u00045}\u0006\u0000\u0006[N{8RAO\t8RAO\u0017PQ8N";
      int var4 = "$]\u0002&x$p\u0006\u0015\u001f\r_^o\u0005\u0016A@C_w\u0000\u0006@\u0005@A-]QW\u0018\u0011\u0015|\u0000\u0004\u001cD\u0019\u001f\u007f\u00068RAO\u000b_\u00058RAO\u000b\u0012\"4\u0000\u001a[\u00045}\u0006\u0000\u0006[N{8RAO\t8RAO\u0017PQ8N"
         .length();
      char var1 = 2;
      int var7 = -1;

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

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

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

                  var2 = "$2\u0006\u001c]\u00023{\u0000\u0006\u0000]H}*v\u0000\u0013\u0019\u000bYXi\u0003\u0010GFEYq\u0006\u0000F\u0003FG+[WQ\u001e\u0017\u0013z\u0006\u0002\u001aB\u001f\u0019y[\u0001\bD\u001a\u0003";
                  var4 = "$2\u0006\u001c]\u00023{\u0000\u0006\u0000]H}*v\u0000\u0013\u0019\u000bYXi\u0003\u0010GFEYq\u0006\u0000F\u0003FG+[WQ\u001e\u0017\u0013z\u0006\u0002\u001aB\u001f\u0019y[\u0001\bD\u001a\u0003"
                     .length();
                  var1 = 14;
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String b(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 -> 108;
            case 1 -> 6;
            case 2 -> 21;
            case 3 -> 27;
            case 4 -> 67;
            case 5 -> 4;
            default -> 5;
         });
      }

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

   public static class WsaFaultDetail {
      private WsAddressingFault.WsaFaultDetailType a;
      private Map<String, String> b = new HashMap<>();
      private String c;
      private static final String d;

      public WsaFaultDetail(WsAddressingFault.WsaFaultDetailType var1, Map<String, String> var2, String var3) {
         this.a = var1;
         this.b.putAll(var2);
         this.c = var3;
      }

      public String getAttributes() {
         if (this.b != null && !this.b.isEmpty()) {
            StringBuilder var1 = new StringBuilder();

            for (String var3 : this.b.keySet()) {
               var1.append(" ").append(var3).append(d).append(this.b.get(var3)).append("\"");
            }

            return var1.toString();
         } else {
            return "";
         }
      }

      static {
         String var10002 = a(26, a("\u0018u"));
         byte var10001 = -1;
         d = var10002;
      }

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

         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 -> 63;
               case 1 -> 77;
               case 2 -> 110;
               case 3 -> 10;
               case 4 -> 100;
               case 5 -> 75;
               default -> 96;
            });
         }

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

   public enum WsaFaultDetailType {
      PROBLEM_HEADER,
      PROBLEM_HEADER_QNAME,
      PROBLEM_IRI,
      PROBLEM_ACTION,
      RETRY_AFTER;

      private final String detailElementName;

      WsaFaultDetailType(String var3) {
         this.detailElementName = var3;
      }

      @Override
      public String toString() {
         return this.detailElementName;
      }

      // $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[10];
         int var4 = 0;
         String var3 = "yjb\u0019Gn6_jd\u000byJB9gp\u0011m[S9\u000b{]Y)rj\u001dtFD\"\u0014{]Y)rj\u001dtGS*zj\u0002t^X*sj\r{}y\tRJ=cjw\u000f[]\r{}y\tRJ=jlb\u0002QA\u0012{}y\tRJ=cjw\u000f[]\u0001en{\u000e\n{}y\tRJ=b]_";
         int var5 = "yjb\u0019Gn6_jd\u000byJB9gp\u0011m[S9\u000b{]Y)rj\u001dtFD\"\u0014{]Y)rj\u001dtGS*zj\u0002t^X*sj\r{}y\tRJ=cjw\u000f[]\r{}y\tRJ=jlb\u0002QA\u0012{}y\tRJ=cjw\u000f[]\u0001en{\u000e\n{}y\tRJ=b]_"
            .length();
         char var2 = '\n';
         int var7 = -1;

         label25:
         while (true) {
            byte var10000 = 89;
            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) {
                        PROBLEM_HEADER = new WsAddressingFault.WsaFaultDetailType(var0[4]);
                        PROBLEM_HEADER_QNAME = new WsAddressingFault.WsaFaultDetailType(var0[6]);
                        PROBLEM_IRI = new WsAddressingFault.WsaFaultDetailType(var0[7]);
                        PROBLEM_ACTION = new WsAddressingFault.WsaFaultDetailType(var0[5]);
                        RETRY_AFTER = new WsAddressingFault.WsaFaultDetailType(var0[0]);
                        return;
                     }

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

                     var3 = "\u0000&\"R\t\u0011f\u000f<(Q\u0001\u0011y\u000e\u0000&\"R\t\u0011f\u000f5.D\f\u001be";
                     var5 = "\u0000&\"R\t\u0011f\u000f<(Q\u0001\u0011y\u000e\u0000&\"R\t\u0011f\u000f5.D\f\u001be".length();
                     var2 = 14;
                     var7 = -1;
               }

               var10000 = 34;
               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] ^ 9);
         }

         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 -> 114;
               case 1 -> 86;
               case 2 -> 79;
               case 3 -> 50;
               case 4 -> 103;
               case 5 -> 118;
               default -> 9;
            });
         }

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