package com.l7tech.gateway.api.impl;

import com.l7tech.gateway.api.AccessibleObject;
import com.l7tech.gateway.api.Accessor;
import com.l7tech.gateway.api.ManagementRuntimeException;
import com.sun.ws.management.client.ResourceFactory;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class AccessorFactory {
   private static final String[] a;

   public static <MO extends AccessibleObject> Accessor<MO> createAccessor(Class<MO> var0, String var1, ResourceFactory var2, ResourceTracker var3) {
      Accessor var4;
      if (a(var0)) {
         Class var5 = b(var0);

         try {
            Constructor var6 = var5.getDeclaredConstructor(String.class, String.class, Class.class, ResourceFactory.class, ResourceTracker.class);
            var4 = (Accessor)var6.newInstance(var1, AccessorSupport.getResourceUri(var0), var0, var2, var3);
         } catch (InstantiationException var8) {
            String var15 = var0.getName();
            String[] var13 = a;
            throw new ManagementRuntimeException(var13[0] + var15 + "'", var8);
         } catch (IllegalAccessException var9) {
            String var14 = var0.getName();
            String[] var12 = a;
            throw new ManagementRuntimeException(var12[2] + var14 + "'", var9);
         } catch (InvocationTargetException var10) {
            String var10002 = var0.getName();
            String[] var7 = a;
            throw new ManagementRuntimeException(var7[2] + var10002 + "'", var10);
         } catch (NoSuchMethodException var11) {
            throw new ManagementRuntimeException(a[2] + var0.getName() + "'", var11);
         }
      } else {
         var4 = new c(var1, AccessorSupport.getResourceUri(var0), var0, var2, var3);
      }

      return var4;
   }

   private static boolean a(Class<?> var0) {
      try {
         if (!Accessor.class.equals(b(var0))) {
            return true;
         }
      } catch (ManagementRuntimeException var1) {
         throw var1;
      }

      return false;
   }

   private static Class<? extends Accessor> b(Class<?> var0) {
      AccessorSupport.AccessibleResource var1 = var0.getAnnotation(AccessorSupport.AccessibleResource.class);

      try {
         try {
            if (var1 != null) {
               return (Class<? extends Accessor>)Class.forName(var1.accessorClassname());
            }
         } catch (ClassNotFoundException var4) {
            throw var4;
         }

         return Accessor.class;
      } catch (ClassNotFoundException var5) {
         String var10002 = var1.accessorClassname();
         String[] var3 = a;
         throw new ManagementRuntimeException(var3[3] + var10002 + var3[1], var5);
      }
   }

   static {
      String[] var5 = new String[4];
      int var3 = 0;
      String var2 = "N\u00076*;gzy\u0010%1 )~+\u0014'&,4jd\u0007d#&59,\u0002,[";
      int var4 = "N\u00076*;gzy\u0010%1 )~+\u0014'&,4jd\u0007d#&59,\u0002,[".length();
      char var1 = 29;
      int var7 = -1;

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

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

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

                  var2 = "N\u00076*;gzy\u0010%1 )~+\u0014'&,4jd\u0007d#&59, N\u00076*;gxh\u0016!6:.wlU%&*\"jx\u001a6e*+xx\u0006db";
                  var4 = "N\u00076*;gzy\u0010%1 )~+\u0014'&,4jd\u0007d#&59, N\u00076*;gxh\u0016!6:.wlU%&*\"jx\u001a6e*+xx\u0006db".length();
                  var1 = 29;
                  var7 = -1;
            }

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

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

      return var10000;
   }

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

      for (int var1 = 0; var10000 > var1; var1++) {
         var10001[var1] = (char)(var10001[var1] ^ switch (var1 % 7) {
            case 0 -> 11;
            case 1 -> 117;
            case 2 -> 68;
            case 3 -> 69;
            case 4 -> 73;
            case 5 -> 71;
            default -> 25;
         });
      }

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