package com.l7tech.server.policy;

import com.l7tech.gateway.common.LicenseManager;
import com.l7tech.gateway.common.cluster.ClusterProperty;
import com.l7tech.gateway.common.module.ModuleLoadingException;
import com.l7tech.gateway.common.module.ServerModuleFile;
import com.l7tech.gateway.common.module.ServerModuleFileLoader;
import com.l7tech.policy.AllAssertions;
import com.l7tech.policy.AssertionRegistry;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.ExtensionInterfaceBinding;
import com.l7tech.server.GatewayURLStreamHandlerFactory;
import com.l7tech.server.ServerConfig;
import com.l7tech.server.admin.ExtensionInterfaceManager;
import com.l7tech.server.event.system.LicenseChangeEvent;
import com.l7tech.server.event.system.Starting;
import com.l7tech.server.module.AssertionModuleFinder;
import com.l7tech.server.policy.module.ModularAssertionModule;
import com.l7tech.server.policy.module.ModularAssertionModulesConfig;
import com.l7tech.server.policy.module.ModularAssertionsScanner;
import com.l7tech.server.util.ApplicationEventProxy;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Functions.Unary;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.event.ApplicationEventMulticaster;

public class ServerAssertionRegistry extends AssertionRegistry implements DisposableBean, ServerModuleFileLoader, AssertionModuleFinder<ModularAssertionModule> {
   protected static final Logger logger;
   private static final AtomicBoolean a;
   private final ServerConfig b;
   private final LicenseManager c;
   private final ExtensionInterfaceManager d;
   private final Map<String, String[]> e = new ConcurrentHashMap<>();
   private ModularAssertionsScanner f;
   private static final String[] h;

   public ServerAssertionRegistry(ServerConfig var1, LicenseManager var2, ExtensionInterfaceManager var3) {
      if (var1 == null) {
         String[] var4 = h;
         throw new IllegalArgumentException(var4[16]);
      }

      try {
         if (var2 == null) {
            throw new IllegalArgumentException(h[29]);
         }
      } catch (IllegalArgumentException var5) {
         throw b(var5);
      }

      this.b = var1;
      this.c = var2;
      this.d = var3;
      c();
      GatewayURLStreamHandlerFactory.registerHandlerFactory(h[23], new ah(this));
   }

   protected void onApplicationContextSet() {
      for (Assertion var4 : AllAssertions.GATEWAY_EVERYTHING) {
         try {
            if (!this.isAssertionRegistered(var4.getClass().getName())) {
               this.registerAssertion((Class<? extends Assertion>)var4.getClass());
            }
         } catch (IllegalArgumentException var5) {
            throw b(var5);
         }
      }

      ApplicationEventMulticaster var6 = (ApplicationEventMulticaster)this.getApplicationContext().getBean(h[7], ApplicationEventMulticaster.class);
      var6.addApplicationListener(new ai(this));
   }

   public synchronized Assertion registerAssertion(Class<? extends Assertion> var1) {
      Assertion var2 = super.registerAssertion(var1);
      AssertionMetadata var3 = var2.meta();
      this.a(var3);
      this.b(var3);
      return var2;
   }

   private synchronized void a(AssertionMetadata param1) {
      // $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 1
      // 01: getstatic com/l7tech/server/policy/ServerAssertionRegistry.h [Ljava/lang/String;
      // 04: bipush 14
      // 06: aaload
      // 07: invokeinterface com/l7tech/policy/assertion/AssertionMetadata.get (Ljava/lang/String;)Ljava/lang/Object; 2
      // 0c: checkcast java/util/Map
      // 0f: astore 2
      // 10: aload 2
      // 11: ifnull d0
      // 14: aload 2
      // 15: invokeinterface java/util/Map.entrySet ()Ljava/util/Set; 1
      // 1a: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 1f: astore 3
      // 20: aload 3
      // 21: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 26: ifeq d0
      // 29: aload 3
      // 2a: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 2f: checkcast java/util/Map$Entry
      // 32: astore 4
      // 34: aload 4
      // 36: invokeinterface java/util/Map$Entry.getKey ()Ljava/lang/Object; 1
      // 3b: checkcast java/lang/String
      // 3e: astore 5
      // 40: aload 4
      // 42: invokeinterface java/util/Map$Entry.getValue ()Ljava/lang/Object; 1
      // 47: checkcast [Ljava/lang/String;
      // 4a: astore 6
      // 4c: aload 6
      // 4e: ifnull 69
      // 51: aload 6
      // 53: arraylength
      // 54: ifle 69
      // 57: goto 5e
      // 5a: invokestatic com/l7tech/server/policy/ServerAssertionRegistry.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5d: athrow
      // 5e: aload 6
      // 60: bipush 0
      // 61: aaload
      // 62: goto 6a
      // 65: invokestatic com/l7tech/server/policy/ServerAssertionRegistry.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 68: athrow
      // 69: aconst_null
      // 6a: astore 7
      // 6c: aload 6
      // 6e: ifnull 8a
      // 71: aload 6
      // 73: arraylength
      // 74: bipush 1
      // 75: if_icmple 8a
      // 78: goto 7f
      // 7b: invokestatic com/l7tech/server/policy/ServerAssertionRegistry.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 7e: athrow
      // 7f: aload 6
      // 81: bipush 1
      // 82: aaload
      // 83: goto 8b
      // 86: invokestatic com/l7tech/server/policy/ServerAssertionRegistry.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 89: athrow
      // 8a: aconst_null
      // 8b: astore 8
      // 8d: aload 6
      // 8f: ifnull ab
      // 92: aload 6
      // 94: arraylength
      // 95: bipush 2
      // 96: if_icmple ab
      // 99: goto a0
      // 9c: invokestatic com/l7tech/server/policy/ServerAssertionRegistry.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 9f: athrow
      // a0: aload 6
      // a2: bipush 2
      // a3: aaload
      // a4: goto ac
      // a7: invokestatic com/l7tech/server/policy/ServerAssertionRegistry.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // aa: athrow
      // ab: aconst_null
      // ac: astore 9
      // ae: aload 0
      // af: getfield com/l7tech/server/policy/ServerAssertionRegistry.e Ljava/util/Map;
      // b2: aload 5
      // b4: bipush 3
      // b5: anewarray 430
      // b8: dup
      // b9: bipush 0
      // ba: aload 7
      // bc: aastore
      // bd: dup
      // be: bipush 1
      // bf: aload 8
      // c1: aastore
      // c2: dup
      // c3: bipush 2
      // c4: aload 9
      // c6: aastore
      // c7: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // cc: pop
      // cd: goto 20
      // d0: return
      // try (28 -> 33): 34 java/lang/IllegalArgumentException
      // try (30 -> 40): 40 java/lang/IllegalArgumentException
      // try (44 -> 50): 51 java/lang/IllegalArgumentException
      // try (46 -> 57): 57 java/lang/IllegalArgumentException
      // try (61 -> 67): 68 java/lang/IllegalArgumentException
      // try (63 -> 74): 74 java/lang/IllegalArgumentException
   }

   private void b(AssertionMetadata var1) {
      String[] var10 = h;
      Unary var2 = (Unary)var1.get(var10[13]);
      if (var2 != null) {
         Collection var3 = (Collection)var2.call(this.getApplicationContext());
         if (var3 != null) {
            for (ExtensionInterfaceBinding var5 : var3) {
               try {
                  Logger var14 = logger;
                  Level var15 = Level.INFO;
                  String var16 = String.valueOf(var5.getInterfaceClass());
                  var10 = h;
                  var14.log(var15, var10[2] + var16);
                  this.d.registerInterface(var5);
               } catch (Exception var11) {
                  Logger var10000 = logger;
                  Level var10001 = Level.SEVERE;
                  String var10002 = String.valueOf(var5.getInterfaceClass());
                  String var10003 = String.valueOf(var1.getAssertionClass());
                  String var7 = ExceptionUtils.getMessage(var11);
                  String var8 = var10003;
                  String var9 = var10002;
                  var10 = h;
                  var10000.log(var10001, var10[24] + var9 + var10[17] + var8 + var10[10] + var7, ExceptionUtils.getDebugException(var11));
               }
            }
         }
      }
   }

   private synchronized void a() {
      Map var1 = this.b.getClusterPropertyNames();
      Set var2 = var1.keySet();
      ArrayList var3 = new ArrayList();

      try {
         if (this.e == null) {
            return;
         }
      } catch (IllegalArgumentException var14) {
         throw b(var14);
      }

      for (Entry var5 : this.e.entrySet()) {
         String var6 = (String)var5.getKey();
         String[] var7 = (String[])var5.getValue();
         if (!var2.contains(var6)) {
            String var8 = var7[0];
            String var9 = var7[1];

            String var10000;
            label37: {
               try {
                  if (var7.length > 2) {
                     var10000 = var7[2];
                     break label37;
                  }
               } catch (IllegalArgumentException var13) {
                  throw b(var13);
               }

               var10000 = null;
            }

            String var10 = var10000;
            String var11 = ClusterProperty.asServerConfigPropertyName(var6);
            var3.add(new String[]{var11, var6, var8, var9, var10});
            logger.log(Level.INFO, h[26], var6);
         }
      }

      try {
         if (!var3.isEmpty()) {
            this.b.registerServerConfigProperties(var3.toArray(new String[var3.size()][]));
         }
      } catch (IllegalArgumentException var12) {
         throw b(var12);
      }
   }

   private synchronized boolean b() {
      return this.f.scanModules();
   }

   public void runNeededScan() {
      synchronized (this) {
         if (this.f.isScanNeeded()) {
            try {
               if (this.b()) {
                  this.a();
               }
            } catch (IllegalArgumentException var3) {
               throw b(var3);
            }
         }
      }
   }

   @Nullable
   public ModularAssertionModule getModuleForAssertion(@NotNull String var1) {
      try {
         if (var1 == null) {
            a(0);
         }
      } catch (IllegalArgumentException var5) {
         throw b(var5);
      }

      for (ModularAssertionModule var3 : this.f.getModules()) {
         try {
            if (var3.offersClass(var1)) {
               return var3;
            }
         } catch (IllegalArgumentException var4) {
            throw b(var4);
         }
      }

      return null;
   }

   @Nullable
   public ModularAssertionModule getModuleByName(@NotNull String var1) {
      try {
         if (var1 == null) {
            a(1);
         }
      } catch (IllegalArgumentException var5) {
         throw b(var5);
      }

      for (ModularAssertionModule var3 : this.f.getModules()) {
         try {
            if (var3.getName().equals(var1)) {
               return var3;
            }
         } catch (IllegalArgumentException var4) {
            throw b(var4);
         }
      }

      return null;
   }

   @Nullable
   public ModularAssertionModule getModuleForClassLoader(ClassLoader var1) {
      for (ModularAssertionModule var3 : this.f.getModules()) {
         try {
            if (var1 == var3.getModuleClassLoader()) {
               return var3;
            }
         } catch (IllegalArgumentException var4) {
            throw b(var4);
         }
      }

      return null;
   }

   @Nullable
   public ModularAssertionModule getModuleForPackage(@NotNull String var1) {
      try {
         if (var1 == null) {
            a(2);
         }
      } catch (IllegalArgumentException var2) {
         throw b(var2);
      }

      return this.f.getModuleForPackage(var1);
   }

   @Override
   public boolean isFirstPartyAssertionPackage(@NotNull String var1) {
      try {
         if (var1 == null) {
            a(3);
         }
      } catch (IllegalArgumentException var2) {
         throw b(var2);
      }

      return this.f.isFirstPartyAssertionPackage(var1);
   }

   @NotNull
   @Override
   public Set<ModularAssertionModule> getLoadedModules() {
      return new HashSet<>(this.f.getModules());
   }

   public void afterPropertiesSet() throws Exception {
      super.afterPropertiesSet();
      this.a(this.getApplicationContext());
      this.b(this.getApplicationContext());
      ModularAssertionModulesConfig var1 = new ModularAssertionModulesConfig(this.b, this.c);
      aj var2 = new aj(this);
      this.f = new aq(this, var1, var2);
      this.b();
      this.a();
      this.f.startTimer(var1.getRescanPeriodMillis(), new ak(this));
   }

   private static void c() {
      try {
         if (a.get()) {
            return;
         }
      } catch (IllegalArgumentException var0) {
         throw b(var0);
      }

      DefaultAssertionMetadata.putDefaultGetter(h[0], new al());
      a.set(true);
   }

   public void onApplicationEvent(ApplicationEvent var1) {
      try {
         if (this.isShuttingDown()) {
            return;
         }
      } catch (IllegalArgumentException var3) {
         throw b(var3);
      }

      try {
         if (var1 instanceof LicenseChangeEvent) {
            this.f.onLicenseChange();
         }
      } catch (IllegalArgumentException var4) {
         throw b(var4);
      }

      try {
         if (var1 instanceof Starting) {
            this.runNeededScan();
         }
      } catch (IllegalArgumentException var2) {
         throw b(var2);
      }
   }

   public synchronized void destroy() throws Exception {
      super.destroy();
      this.f.destroy();
   }

   public void loadModule(@NotNull File var1, @NotNull ServerModuleFile var2) throws ModuleLoadingException {
      try {
         if (var1 == null) {
            a(4);
         }
      } catch (ModuleLoadingException var3) {
         throw b(var3);
      }

      try {
         if (var2 == null) {
            a(5);
         }
      } catch (ModuleLoadingException var4) {
         throw b(var4);
      }

      this.f.loadServerModuleFile(var1, var2.getModuleSha256(), var2.getName());
   }

   public void updateModule(@NotNull File var1, @NotNull ServerModuleFile var2) {
      try {
         if (var1 == null) {
            a(6);
         }
      } catch (IllegalArgumentException var3) {
         throw b(var3);
      }

      try {
         if (var2 == null) {
            a(7);
         }
      } catch (IllegalArgumentException var4) {
         throw b(var4);
      }

      this.f.updateServerModuleFile(var1, var2.getModuleSha256(), var2.getName());
   }

   public void unloadModule(@NotNull File var1, @NotNull ServerModuleFile var2) throws ModuleLoadingException {
      try {
         if (var1 == null) {
            a(8);
         }
      } catch (ModuleLoadingException var3) {
         throw b(var3);
      }

      try {
         if (var2 == null) {
            a(9);
         }
      } catch (ModuleLoadingException var4) {
         throw b(var4);
      }

      this.f.unloadServerModuleFile(var1, var2.getModuleSha256(), var2.getName());
   }

   public boolean isModuleLoaded(@NotNull File var1, @NotNull ServerModuleFile var2) {
      try {
         if (var1 == null) {
            a(10);
         }
      } catch (IllegalArgumentException var3) {
         throw b(var3);
      }

      try {
         if (var2 == null) {
            a(11);
         }
      } catch (IllegalArgumentException var4) {
         throw b(var4);
      }

      return this.f.isServerModuleFileLoaded(var1, var2.getModuleSha256(), var2.getName());
   }

   private void a(ApplicationContext var1) {
      if (var1 != null) {
         String[] var4 = h;
         PolicyManager var2 = (PolicyManager)var1.getBean(var4[5], PolicyManager.class);
         ApplicationEventProxy var3 = (ApplicationEventProxy)var1.getBean(var4[19], ApplicationEventProxy.class);
         this.addAssertionMappingProperty(POLICY_GUID_RESOLVER_MAPPING_PROPERTY, new a(this, var2, var3, this.b));
      }
   }

   private void b(ApplicationContext var1) {
      if (var1 != null) {
         String[] var4 = h;
         EncapsulatedAssertionConfigManager var2 = (EncapsulatedAssertionConfigManager)var1.getBean(var4[1], EncapsulatedAssertionConfigManager.class);
         ApplicationEventProxy var3 = (ApplicationEventProxy)var1.getBean(var4[8], ApplicationEventProxy.class);
         this.addAssertionMappingProperty(ENCASS_GUID_RESOLVER_MAPPING_PROPERTY, new b(this, var2, var3, this.b));
      }
   }

   static {
      String[] var5 = new String[31];
      int var3 = 0;
      String var2 = "_'{\u001b\u0001j<l9a\u0018\u0010}:U.}\"Y%m\t\u0005|;P*z\r\u0011N=O.|\u001c\u001c` \u007f$`\u000e\u001ch\u0003]%o\u000f\u0010}'n.i\u0001\u0006{+N\"`\u000fUn*Q\"`H\u0010w:Y%}\u0001\u001aanU%z\r\u0007i/_.4H\t_'o\u001b\u0006A/Q.\nO?o\u000f\u0010k\bU'k\rL$b\u0001\u0016v\u0003]%o\u000f\u0010}\u0015[.z%\u001ak;P.H\u0007\u0007N=O.|\u001c\u001c` \u001b];~\u0004\u001cl/H\"a\u00060y+R?C\u001d\u0019{'_*}\u001c\u0010}\u0015];~\u0004\u001cl/H\"a\u00060y+R?^\u001a\u001aw7\u000eU8C\u0007\u0011z\"Y\u0007a\t\u0011j*\u0002\u0006k\fI;j\t\u0001j\u0003S/{\u0004\u0010\u000f[.z%\u001ak;P.L\u0011;n#Y\u001aY3z\r\u001b|'S%G\u0006\u0001j<Z*m\r\u0006I/_?a\u001a\f\u0011_'{\u001b\u0001j<l9a\u0018\u0010}:U.}\fI%b\u0007\u0014k\u0003S/{\u0004\u0010#}k`\u0007\u001b\" I'bH\u0006j<J.|+\u001aa(U,.\u0001\u0006/<Y:{\u0001\u0007j*\u0017\u001c-a\u001aUb!X>b\t\u0007//O8k\u001a\u0001f!Rk\nQ$j\u001d\u0019j\u0000]&k\u0015];~\u0004\u001cl/H\"a\u00060y+R?^\u001a\u001aw7\u001cU8H\u0001\u0007|:l*|\u001c\fN=O.|\u001c\u001c` l*m\u0003\u0014h+>}9i\u001d\u0018j Hkh\u0007\u0007/\u000er$z&\u0000c\"\u001c;o\u001a\u0014b+H.|HR*=\u001bka\u000eU*=\u0012n}H\u0018z=Hk`\u0007\u0001/,Yk`\u001d\u0019c\fQ$j\u001d\u0019j\u000bR?g\u001c\f\u0007]8}\u0006\u0018`*-i%o\n\u0019jnH$.\u001a\u0010h'O?k\u001aUn*Q\"`H\u0010w:Y%}\u0001\u001aanU%z\r\u0007i/_..\u0013[.z%\u001ak;P.H\u0007\u0007_/_ o\u000f\u0010,x2`\t\u0018f-]'b\u0011U}+[\"}\u001c\u0010}'R,.\u000b\u0019z=H.|H\u0005}!L.|\u001c\f/5\f6\u000bL*m\u0003\u0014h+r*c\r0_$cG\u00198:Y(fG\u0006j<J.|G\u0005`\"U(wG&j<J.|)\u0006|+N?g\u0007\u001b]+[\"}\u001c\u0007v";
      int var4 = "_'{\u001b\u0001j<l9a\u0018\u0010}:U.}\"Y%m\t\u0005|;P*z\r\u0011N=O.|\u001c\u001c` \u007f$`\u000e\u001ch\u0003]%o\u000f\u0010}'n.i\u0001\u0006{+N\"`\u000fUn*Q\"`H\u0010w:Y%}\u0001\u001aanU%z\r\u0007i/_.4H\t_'o\u001b\u0006A/Q.\nO?o\u000f\u0010k\bU'k\rL$b\u0001\u0016v\u0003]%o\u000f\u0010}\u0015[.z%\u001ak;P.H\u0007\u0007N=O.|\u001c\u001c` \u001b];~\u0004\u001cl/H\"a\u00060y+R?C\u001d\u0019{'_*}\u001c\u0010}\u0015];~\u0004\u001cl/H\"a\u00060y+R?^\u001a\u001aw7\u000eU8C\u0007\u0011z\"Y\u0007a\t\u0011j*\u0002\u0006k\fI;j\t\u0001j\u0003S/{\u0004\u0010\u000f[.z%\u001ak;P.L\u0011;n#Y\u001aY3z\r\u001b|'S%G\u0006\u0001j<Z*m\r\u0006I/_?a\u001a\f\u0011_'{\u001b\u0001j<l9a\u0018\u0010}:U.}\fI%b\u0007\u0014k\u0003S/{\u0004\u0010#}k`\u0007\u001b\" I'bH\u0006j<J.|+\u001aa(U,.\u0001\u0006/<Y:{\u0001\u0007j*\u0017\u001c-a\u001aUb!X>b\t\u0007//O8k\u001a\u0001f!Rk\nQ$j\u001d\u0019j\u0000]&k\u0015];~\u0004\u001cl/H\"a\u00060y+R?^\u001a\u001aw7\u001cU8H\u0001\u0007|:l*|\u001c\fN=O.|\u001c\u001c` l*m\u0003\u0014h+>}9i\u001d\u0018j Hkh\u0007\u0007/\u000er$z&\u0000c\"\u001c;o\u001a\u0014b+H.|HR*=\u001bka\u000eU*=\u0012n}H\u0018z=Hk`\u0007\u0001/,Yk`\u001d\u0019c\fQ$j\u001d\u0019j\u000bR?g\u001c\f\u0007]8}\u0006\u0018`*-i%o\n\u0019jnH$.\u001a\u0010h'O?k\u001aUn*Q\"`H\u0010w:Y%}\u0001\u001aanU%z\r\u0007i/_..\u0013[.z%\u001ak;P.H\u0007\u0007_/_ o\u000f\u0010,x2`\t\u0018f-]'b\u0011U}+[\"}\u001c\u0010}'R,.\u000b\u0019z=H.|H\u0005}!L.|\u001c\f/5\f6\u000bL*m\u0003\u0014h+r*c\r0_$cG\u00198:Y(fG\u0006j<J.|G\u0005`\"U(wG&j<J.|)\u0006|+N?g\u0007\u001b]+[\"}\u001c\u0007v"
         .length();
      char var1 = 17;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 54;
         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) {
                     h = var5;
                     logger = Logger.getLogger(ServerAssertionRegistry.class.getName());
                     a = new AtomicBoolean(false);
                     c();
                     return;
                  }

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

                  var2 = "~hc\u0004\u0018!#J$aK\u001ae.Z&~\u000e;m#^/h\u0019Ve>\u001f:h\u001a\u0003e?Z,\nS'l\u000f;c)J$h";
                  var4 = "~hc\u0004\u0018!#J$aK\u001ae.Z&~\u000e;m#^/h\u0019Ve>\u001f:h\u001a\u0003e?Z,\nS'l\u000f;c)J$h".length();
                  var1 = '%';
                  var7 = -1;
            }

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

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

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

      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 -> 10;
            case 1 -> 125;
            case 2 -> 56;
            case 3 -> 94;
            case 4 -> 67;
            case 5 -> 57;
            default -> 120;
         });
      }

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