package com.l7tech.server.boot;

import com.l7tech.gateway.common.Component;
import com.l7tech.security.prov.JceProvider;
import com.l7tech.server.BootProcess;
import com.l7tech.server.GatewayURLStreamHandlerFactory;
import com.l7tech.server.LifecycleException;
import com.l7tech.server.NodePropertiesLoaderImpl;
import com.l7tech.server.ServerConfig;
import com.l7tech.server.event.system.ReadyForMessages;
import com.l7tech.server.log.JdkLogConfig;
import com.l7tech.server.util.FirewallUtils;
import com.l7tech.util.BuildInfo;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.FileUtils;
import com.l7tech.util.JceUtil;
import com.l7tech.util.Pair;
import com.l7tech.util.StrongCryptoNotAvailableException;
import com.l7tech.util.SyspropUtil;
import com.l7tech.util.JdkLoggerConfigurator.ResettableLogManager;
import com.mchange.v2.c3p0.C3P0Registry;
import com.mchange.v2.c3p0.PooledDataSource;
import com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.security.GeneralSecurityException;
import java.security.Provider;
import java.security.Security;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class GatewayBoot {
   protected static final Logger LOGGER;
   private static final long a = 30L;
   private static final String b;
   private static final String c;
   private static final String d;
   private static final String e;
   private final AtomicBoolean f = new AtomicBoolean(false);
   private final AtomicBoolean g = new AtomicBoolean(false);
   private ClassPathXmlApplicationContext h;
   private ShutdownWatcher i;
   public static final String SYSPROP_ENABLE_HSM;
   public static final String SYSPROP_ALLOW_CIRCULARITY;
   public static final String PKCS11_CFG_FILE;
   public static final String[] HSM_SECURITY_PROVIDERS;
   private static final String[] j;

   private static void a() {
      String[] var5 = j;
      boolean var0 = ConfigFactory.getBooleanProperty(var5[1], false);
      if (var0) {
         for (Provider var4 : Security.getProviders()) {
            Security.removeProvider(var4.getName());
         }

         try {
            a(HSM_SECURITY_PROVIDERS);
            SyspropUtil.setProperty(JceProvider.ENGINE_PROPERTY, JceProvider.PKCS11_ENGINE);
         } catch (LifecycleException var6) {
            throw new RuntimeException(j[23], var6);
         }
      }
   }

   private static void a(String[] var0) throws LifecycleException {
      for (String var4 : var0) {
         try {
            Provider var5;
            if (var4.contains(" ")) {
               String[] var6 = var4.split(" ");
               String[] var11 = j;
               LOGGER.log(Level.INFO, var11[12], var6[0]);
               Class var7 = Class.forName(var6[0]);
               Constructor var8 = var7.getConstructor(String.class);
               var5 = (Provider)var8.newInstance(var6[1]);
            } else {
               var5 = (Provider)Class.forName(var4).newInstance();
            }

            Security.addProvider(var5);
         } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException | InstantiationException var10) {
            String var10003 = ExceptionUtils.getMessage(var10);
            String[] var9 = j;
            throw new LifecycleException(var9[55] + var4 + var9[50] + var10003, var10);
         }
      }
   }

   GatewayBoot() {
   }

   // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow.
   // 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!)
   public void start() throws LifecycleException {
      try {
         if (!this.f.compareAndSet(false, true)) {
            return;
         }
      } catch (LifecycleException var13) {
         throw a(var13);
      }

      Logger var10000 = LOGGER;
      String var10001 = BuildInfo.getLongBuildString();
      String[] var6 = j;
      var10000.info(var6[26] + var10001);
      this.g.set(false);
      boolean var1 = false;
      boolean var10 = false /* VF: Semaphore variable */;

      try {
         var10 = true;
         long var2 = System.currentTimeMillis();
         GatewayURLStreamHandlerFactory.install();
         ServerConfig.getInstance().getLocalDirectoryProperty(var6[44], true);
         FirewallUtils.initializeFirewall();
         this.b();
         this.e();
         c();
         String var4 = this.f();
         this.a(var4);
         var1 = true;
         LOGGER.log(Level.FINE, var6[2], System.currentTimeMillis() - var2);
         var10 = false;
      } finally {
         if (var10) {
            try {
               if (!var1) {
                  this.f.set(false);
               }
            } catch (LifecycleException var11) {
               throw a(var11);
            }
         }
      }

      if (!var1) {
         this.f.set(false);
      }
   }

   public void destroy() {
      try {
         this.g.set(true);
         if (!this.f.get()) {
            return;
         }
      } catch (InterruptedException var6) {
         throw a(var6);
      }

      String[] var3 = j;
      int var1 = ConfigFactory.getIntProperty(var3[61], 3);
      LOGGER.info(var3[42]);
      this.g();

      try {
         int var2 = 0;

         try {
            while (var2 < var1) {
               LOGGER.log(Level.INFO, j[17], var1 - var2);
               Thread.sleep(1000L);
               var2++;
            }
         } catch (InterruptedException var4) {
            throw a(var4);
         }
      } catch (InterruptedException var5) {
         LOGGER.info(j[3]);
      }

      this.h();
      this.h.close();
      this.f.set(false);
   }

   public void runUntilShutdown() throws LifecycleException {
      CountDownLatch var1 = new CountDownLatch(1);
      CountDownLatch var2 = new CountDownLatch(1);
      this.j();
      this.start();
      this.a(var1, var2);
      b(var1);

      try {
         this.destroy();
      } finally {
         a(var2);
      }
   }

   private void b() {
      String[] var3 = j;
      if (SyspropUtil.getProperty(var3[46]) == null) {
         File var1 = ServerConfig.getInstance().getLocalDirectoryProperty(var3[13], true);
         File var2 = new File(var1, var3[47]);
         System.setProperty(var3[62], var2.getAbsolutePath());
      }

      var3 = j;
      if (ConfigFactory.getBooleanProperty(var3[58], true)) {
         a var4 = new a(this, var3[54]);
         var4.setDaemon(true);
         var4.start();
      }
   }

   private static void c() {
      // $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: invokestatic com/l7tech/server/ServerConfig.getInstance ()Lcom/l7tech/server/ServerConfig;
      // 03: getstatic com/l7tech/server/boot/GatewayBoot.j [Ljava/lang/String;
      // 06: astore 2
      // 07: aload 2
      // 08: bipush 53
      // 0a: aaload
      // 0b: bipush 1
      // 0c: invokevirtual com/l7tech/server/ServerConfig.getLocalDirectoryProperty (Ljava/lang/String;Z)Ljava/io/File;
      // 0f: astore 0
      // 10: new java/io/File
      // 13: dup
      // 14: aload 0
      // 15: aload 2
      // 16: bipush 37
      // 18: aaload
      // 19: invokespecial java/io/File.<init> (Ljava/io/File;Ljava/lang/String;)V
      // 1c: astore 1
      // 1d: aload 1
      // 1e: invokevirtual java/io/File.exists ()Z
      // 21: ifeq 44
      // 24: aload 1
      // 25: invokevirtual java/io/File.delete ()Z
      // 28: ifne 44
      // 2b: goto 32
      // 2e: invokestatic com/l7tech/server/boot/GatewayBoot.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 31: athrow
      // 32: getstatic com/l7tech/server/boot/GatewayBoot.LOGGER Ljava/util/logging/Logger;
      // 35: getstatic com/l7tech/server/boot/GatewayBoot.j [Ljava/lang/String;
      // 38: bipush 0
      // 39: aaload
      // 3a: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 3d: goto 44
      // 40: invokestatic com/l7tech/server/boot/GatewayBoot.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 43: athrow
      // 44: return
      // try (17 -> 23): 24 java/lang/RuntimeException
      // try (20 -> 31): 32 java/lang/RuntimeException
   }

   private static Pair<Integer, Integer> d() throws SQLException {
      int var0 = 0;
      Set var1 = C3P0Registry.getPooledDataSources();

      for (PooledDataSource var3 : var1) {
         label27: {
            try {
               if (var3 instanceof PoolBackedDataSourceBase) {
                  if (((PoolBackedDataSourceBase)var3).getConnectionPoolDataSource() == null) {
                     continue;
                  }
                  break label27;
               }
            } catch (SQLException var4) {
               throw a(var4);
            }

            var0 += var3.getNumConnectionsAllUsers();
            continue;
         }

         var0 += var3.getNumConnectionsAllUsers();
      }

      return Pair.pair(var1.size(), var0);
   }

   private void e() {
      String[] var9 = j;
      boolean var1 = ConfigFactory.getBooleanProperty(var9[64], false);
      long var2 = System.currentTimeMillis();
      String var4 = NodePropertiesLoaderImpl.getInstance().getProperty(var9[10], var9[30]);
      LOGGER.log(Level.INFO, var9[57], var4);
      boolean var5 = var9[41].equals(var4);
      Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
      ArrayList var6 = new ArrayList();

      ArrayList var10000;
      String[] var10001;
      String[] var10002;
      byte var10003;
      String var10004;
      label29: {
         try {
            var10000 = var6;
            var10001 = new String[]{var9[24], var9[56], null, null};
            var10002 = var10001;
            var10003 = 2;
            if (var5) {
               var10004 = var9[27];
               break label29;
            }
         } catch (RuntimeException var11) {
            throw a(var11);
         }

         var9 = j;
         var10004 = var9[16];
      }

      var10002[var10003] = var10004;
      var9 = j;
      var10001[3] = var9[32];
      var10000.addAll(Arrays.asList(var10001));
      GatewayBoot.Mode var7 = GatewayBootUtil.getMode();

      try {
         LOGGER.log(Level.INFO, var9[48], var7);
         if (GatewayBoot.Mode.TRADITIONAL.equals(var7)) {
            var6.addAll(Arrays.asList(var9[19], var9[5]));
         }
      } catch (RuntimeException var10) {
         throw a(var10);
      }

      List var8 = GatewayBootUtil.a(var7);
      var9 = j;
      LOGGER.log(Level.INFO, var9[8], var8);
      var6.addAll(var8);
      this.h = new ClassPathXmlApplicationContext(var6.toArray(new String[var6.size()]), false);
      this.h.setAllowCircularReferences(var1);
      this.h.refresh();
      this.i = (ShutdownWatcher)this.h.getBean(var9[60], ShutdownWatcher.class);
      LOGGER.log(Level.FINE, var9[11], System.currentTimeMillis() - var2);
   }

   private String f() throws LifecycleException {
      long var1 = System.currentTimeMillis();
      this.h.start();
      String[] var6 = j;
      LOGGER.log(Level.FINE, var6[25], System.currentTimeMillis() - var1);
      long var3 = System.currentTimeMillis();
      BootProcess var5 = (BootProcess)this.h.getBean(var6[63], BootProcess.class);
      var5.start();
      LOGGER.log(Level.FINE, var6[31], System.currentTimeMillis() - var3);
      return var5.getIpAddress();
   }

   private void g() {
      try {
         String[] var4 = j;
         BootProcess var1 = (BootProcess)this.h.getBean(var4[63], BootProcess.class);
         var1.stop();
         this.h.stop();
      } catch (Exception var3) {
         Logger var10000 = LOGGER;
         Level var10001 = Level.WARNING;
         String var10002 = ExceptionUtils.getMessage(var3);
         String[] var2 = j;
         var10000.log(var10001, var2[52] + var10002 + var2[39], var3);
      }
   }

   private void h() {
      try {
         String[] var4 = j;
         BootProcess var1 = (BootProcess)this.h.getBean(var4[38], BootProcess.class);
         var1.destroy();
      } catch (Exception var3) {
         Logger var10000 = LOGGER;
         Level var10001 = Level.WARNING;
         String var10002 = ExceptionUtils.getMessage(var3);
         String[] var2 = j;
         var10000.log(var10001, var2[29] + var10002 + var2[39], var3);
      }
   }

   private void a(String var1) {
      long var2 = System.currentTimeMillis();
      String[] var4 = j;
      LOGGER.log(Level.INFO, var4[28]);
      this.h.publishEvent(new ReadyForMessages(this, Component.GW_SERVER, var1));
      this.i();
      LOGGER.log(Level.FINE, var4[34], System.currentTimeMillis() - var2);
   }

   private void i() {
      String[] var5 = j;
      ServerConfig var1 = (ServerConfig)this.h.getBean(var5[51], ServerConfig.class);
      File var2 = var1.getLocalDirectoryProperty(var5[53], true);
      File var3 = new File(var2, d);

      try {
         FileUtils.touch(var3);
      } catch (IOException var6) {
         Logger var10000 = LOGGER;
         Level var10001 = Level.WARNING;
         String var10002 = String.valueOf(var3);
         String var10003 = ExceptionUtils.getMessage(var6);
         var5 = j;
         var10000.log(var10001, var5[35] + var10002 + var5[43] + var10003);
      }
   }

   private void a(CountDownLatch var1, CountDownLatch var2) {
      this.i.a(var1);
      Runtime.getRuntime().addShutdownHook(new Thread(() -> {
         var1.countDown();

         try {
            var2.await(5L, TimeUnit.MINUTES);
         } catch (InterruptedException var4) {
         }

         LogManager var2x = LogManager.getLogManager();

         try {
            if (var2x instanceof GatewayBoot.GatewayLogManager) {
               ((GatewayBoot.GatewayLogManager)var2x).resetLogs();
            }
         } catch (InterruptedException var3) {
            throw a(var3);
         }
      }));
   }

   private void j() throws LifecycleException {
      String[] var2 = j;
      if (ConfigFactory.getBooleanProperty(var2[40], true)) {
         try {
            try {
               JceUtil.requireStrongCryptoEnabledInJvm();
               if (LOGGER.isLoggable(Level.CONFIG)) {
                  LOGGER.config(var2[15] + Arrays.toString(Security.getProviders()));
               }
            } catch (LifecycleException var3) {
               throw a(var3);
            }
         } catch (StrongCryptoNotAvailableException var4) {
            var2 = j;
            throw new LifecycleException(var2[18]);
         } catch (GeneralSecurityException var5) {
            Logger var10000 = LOGGER;
            Level var10001 = Level.WARNING;
            String var10002 = ExceptionUtils.getMessage(var5);
            var2 = j;
            var10000.log(var10001, var2[33] + var10002 + var2[22], ExceptionUtils.getDebugException(var5));
         }
      }
   }

   private static void a(CountDownLatch var0) {
      var0.countDown();
   }

   private static void b(CountDownLatch var0) {
      try {
         var0.await();
      } catch (InterruptedException var2) {
         LOGGER.info(j[45]);
      }
   }

   static {
      String[] var5 = new String[65];
      int var3 = 0;
      String var2 = "g'Cm\u000e\u001afr.\u0011l\u0018Aygb_`\u0003\u0014wfbUj\u001bQaf&\u001c`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0004Wt-'_n\u0015Xp\u0017A-^{WWzn2]j\u0003Qq#+_/\f\u0004hn1\"@-_{\u001eZ`j,V/\u0004\\`w&^x\u0019\u0014=j,Ej\u0005F`s6Tk^\u001a\u0007P7_E$gP1`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:`:W\\\u0002Del0EL\u0018Zaf:E!\u000fYy\u0006P7_E4q\"`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0004@tq6TkYR|o'_n\u001aQ\u0016F,Pm\u001bQq#!^b\u0007[{f,E5WO%~\"`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0004@tq6TkYR|o'_n\u001aQ\fm-UjYPw-6H\u007f\u0012$@0Tn\u0003Qq##A\u007f\u001b]vb6X`\u0019\u0014vl,Ej\u000f@5j,\u0011tGIxp\nB&Uf\u0019S5xrL\fu#CK\u001eFp`6^}\u000eLp7_!\u0004Qvv0X{\u000e\u001aeh!B>F\u001aFv,aD4g$2b\u001e`\u0007@:P'Rz\u0005QFs#_ 6Deo+Pa\u0014Q:f6R \u0007_vps\u0000P\u001b]{v:\u001fl\u0011S\u001eB4Pf\u001bUwo'\u0011\\\u0012W`q+EvWdgl4Xk\u0012Ff9b1`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:f/Sj\u0013Ppg\u0006SL\u0018Zaf:E!\u000fYy\u001c@-_{\u001eZ`j,V/\u0004\\`w&^x\u0019\u0014|mbJ?\nG;SP6C`\u0019S5`0H\u007f\u0003[rq#Ag\u000e\u0014{l6\u0011n\u0001U|o#Sc\u0012\u001a5S.Tn\u0004Q5v2Un\u0003Q5I\u0006z/\u0003[5f,Pm\u001bQ5p6C`\u0019S5`0H\u007f\u0003[rq#Ag\u000e\u001a,`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:b&\\f\u0019wzm6Tw\u0003\u001amn.\u001c`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0004Wt-'_n\u0015Xp.,-A{Xgp`7Cj$Dtmmp\u007f\u0007X|b,RjXQa`mAd\u0014G$2\u001d]f\u0019Am-!Wh\u0002$li@-Dc\u0013\u0014{l6\u0011|\u0003UgwbEg\u0012\u0014ff0Gj\u0005\u001a5W*T/?gX#+B/\u0012Zta.Tk[\u0014wv6\u0011{\u001fQgfbFn\u0004\u0014tmbT}\u0005[g#2Cj\u0007Ugj,V/\u0003\\p#1Tl\u0002F|w;\u0011\u007f\u0005[cj&T}\u0004\u001a51`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:g#En6Wvf1BL\u0018Zaf:E!\u000fYy$P6P}\u0003Qq##A\u007f\u001b]vb6X`\u0019\u0014vl,Ej\u000f@5j,\u0011tGIxp\tP6P}\u0003]{db1`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:p6Pa\u0013Ugg\u0006SL\u0018Zaf:E!\u000fYy\u0012Q'Pk\u000e\u0014sl0\u0011b\u0012Gfb%T|\u001fF0C`\u0005\u0014qf1E}\u0018M|m%\u0011m\u0018[a#2C`\u0014Qfpb\u0016\u0005n;B~\u001b\u001dP6P}\u0003Qq# ^`\u0003\u0014eq-Rj\u0004G5j,\u0011tGIxp5`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:p1VN\u0007Dyj!P{\u001e[{@-_{\u0012La-:\\c?V,Tw\u0007Qvw'U/\u0012Fgl0\u0011x\u001fQ{#!Yj\u0014_|m%\u0011i\u0018F5p6C`\u0019S5`0H\u007f\u0003[rq#Ag\u000e\u0014|mb{K<\u00142\u001aP6P}\u0003Qq#.X|\u0003Q{f0B/\u001eZ5xrLb\u0004\u0010V,Pm\u001bQ5w-\u0011{\u0018Avkb\u0007p6P}\u0003Qq\tg'Cm\u000e\u001afr.\u0007p1VM\u0018[a\u0002$l&`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0007Qge-Cb$@tq6D\u007f4\\p`)B\u0005n;B~\u001b\u0012P6P}\u0003]{dbBg\u0002@ql5_!\u00029b\fo-VK\u001eFp`6^}\u000e P*D{\u0003]{dbU`\u0000Z5g7T/\u0003[5j,Ej\u0005F`s'U!\u0011g'Cm\u000e\u001afz1Ej\u001a\u001a}l/T\u0002g \u001cP6P}\u0003]{dbVn\u0003Qbb;\u0011f\u0019\u0014n3?\u0011b\u0018Pp\u0019p7_!\u0004Qvv0X{\u000e\u001aeq-Gf\u0013Qg-\u0011Da\u00029b\fp'Cy\u0012FVl,Wf\u0010\"F0C`\u0005\u0014fk7E{\u001eZr#&^x\u0019\u0014wl-E/\u0007Fz`'B|W\u0013\fu#CK\u001eFp`6^}\u000e\u000eG#En\u0015Uffbrg\u0012W~:F0C`\u0005\u0014bk+]jW]{p6Pa\u0003]tw+_hW@}fbCj\u0006A|q'U/\u0004Qvv0X{\u000e\u0014eq-Gf\u0013Qg9b+`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:q Pl4[{w'I{YLxo\u0012G#En\u0015UffbEv\u0007Q/#9\u0001r&`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0007Qge-Cb$@tq6D\u007f4\\p`)B.`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0015[zwlPc\u001b[b@+Cl\u0002Xtq\u0010Ti\u0012Fpm!T|\u000bp1V\\\u001fAag-Fa\u0011p1V!\u0004\\`w&^x\u0019ppo#H\u0011g'Cm\u000e\u001afz1Ej\u001a\u001a}l/T";
      int var4 = "g'Cm\u000e\u001afr.\u0011l\u0018Aygb_`\u0003\u0014wfbUj\u001bQaf&\u001c`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0004Wt-'_n\u0015Xp\u0017A-^{WWzn2]j\u0003Qq#+_/\f\u0004hn1\"@-_{\u001eZ`j,V/\u0004\\`w&^x\u0019\u0014=j,Ej\u0005F`s6Tk^\u001a\u0007P7_E$gP1`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:`:W\\\u0002Del0EL\u0018Zaf:E!\u000fYy\u0006P7_E4q\"`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0004@tq6TkYR|o'_n\u001aQ\u0016F,Pm\u001bQq#!^b\u0007[{f,E5WO%~\"`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0004@tq6TkYR|o'_n\u001aQ\fm-UjYPw-6H\u007f\u0012$@0Tn\u0003Qq##A\u007f\u001b]vb6X`\u0019\u0014vl,Ej\u000f@5j,\u0011tGIxp\nB&Uf\u0019S5xrL\fu#CK\u001eFp`6^}\u000eLp7_!\u0004Qvv0X{\u000e\u001aeh!B>F\u001aFv,aD4g$2b\u001e`\u0007@:P'Rz\u0005QFs#_ 6Deo+Pa\u0014Q:f6R \u0007_vps\u0000P\u001b]{v:\u001fl\u0011S\u001eB4Pf\u001bUwo'\u0011\\\u0012W`q+EvWdgl4Xk\u0012Ff9b1`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:f/Sj\u0013Ppg\u0006SL\u0018Zaf:E!\u000fYy\u001c@-_{\u001eZ`j,V/\u0004\\`w&^x\u0019\u0014|mbJ?\nG;SP6C`\u0019S5`0H\u007f\u0003[rq#Ag\u000e\u0014{l6\u0011n\u0001U|o#Sc\u0012\u001a5S.Tn\u0004Q5v2Un\u0003Q5I\u0006z/\u0003[5f,Pm\u001bQ5p6C`\u0019S5`0H\u007f\u0003[rq#Ag\u000e\u001a,`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:b&\\f\u0019wzm6Tw\u0003\u001amn.\u001c`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0004Wt-'_n\u0015Xp.,-A{Xgp`7Cj$Dtmmp\u007f\u0007X|b,RjXQa`mAd\u0014G$2\u001d]f\u0019Am-!Wh\u0002$li@-Dc\u0013\u0014{l6\u0011|\u0003UgwbEg\u0012\u0014ff0Gj\u0005\u001a5W*T/?gX#+B/\u0012Zta.Tk[\u0014wv6\u0011{\u001fQgfbFn\u0004\u0014tmbT}\u0005[g#2Cj\u0007Ugj,V/\u0003\\p#1Tl\u0002F|w;\u0011\u007f\u0005[cj&T}\u0004\u001a51`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:g#En6Wvf1BL\u0018Zaf:E!\u000fYy$P6P}\u0003Qq##A\u007f\u001b]vb6X`\u0019\u0014vl,Ej\u000f@5j,\u0011tGIxp\tP6P}\u0003]{db1`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:p6Pa\u0013Ugg\u0006SL\u0018Zaf:E!\u000fYy\u0012Q'Pk\u000e\u0014sl0\u0011b\u0012Gfb%T|\u001fF0C`\u0005\u0014qf1E}\u0018M|m%\u0011m\u0018[a#2C`\u0014Qfpb\u0016\u0005n;B~\u001b\u001dP6P}\u0003Qq# ^`\u0003\u0014eq-Rj\u0004G5j,\u0011tGIxp5`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:p1VN\u0007Dyj!P{\u001e[{@-_{\u0012La-:\\c?V,Tw\u0007Qvw'U/\u0012Fgl0\u0011x\u001fQ{#!Yj\u0014_|m%\u0011i\u0018F5p6C`\u0019S5`0H\u007f\u0003[rq#Ag\u000e\u0014|mb{K<\u00142\u001aP6P}\u0003Qq#.X|\u0003Q{f0B/\u001eZ5xrLb\u0004\u0010V,Pm\u001bQ5w-\u0011{\u0018Avkb\u0007p6P}\u0003Qq\tg'Cm\u000e\u001afr.\u0007p1VM\u0018[a\u0002$l&`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0007Qge-Cb$@tq6D\u007f4\\p`)B\u0005n;B~\u001b\u0012P6P}\u0003]{dbBg\u0002@ql5_!\u00029b\fo-VK\u001eFp`6^}\u000e P*D{\u0003]{dbU`\u0000Z5g7T/\u0003[5j,Ej\u0005F`s'U!\u0011g'Cm\u000e\u001afz1Ej\u001a\u001a}l/T\u0002g \u001cP6P}\u0003]{dbVn\u0003Qbb;\u0011f\u0019\u0014n3?\u0011b\u0018Pp\u0019p7_!\u0004Qvv0X{\u000e\u001aeq-Gf\u0013Qg-\u0011Da\u00029b\fp'Cy\u0012FVl,Wf\u0010\"F0C`\u0005\u0014fk7E{\u001eZr#&^x\u0019\u0014wl-E/\u0007Fz`'B|W\u0013\fu#CK\u001eFp`6^}\u000e\u000eG#En\u0015Uffbrg\u0012W~:F0C`\u0005\u0014bk+]jW]{p6Pa\u0003]tw+_hW@}fbCj\u0006A|q'U/\u0004Qvv0X{\u000e\u0014eq-Gf\u0013Qg9b+`-\\ \u001b\u0003af!Y \u0004Qgu'C \u0005Qfl7Cl\u0012G:q Pl4[{w'I{YLxo\u0012G#En\u0015UffbEv\u0007Q/#9\u0001r&`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0007Qge-Cb$@tq6D\u007f4\\p`)B.`-\\!\u001b\u0003af!Y!\u0004Qgu'C!\u0015[zwlPc\u001b[b@+Cl\u0002Xtq\u0010Ti\u0012Fpm!T|\u000bp1V\\\u001fAag-Fa\u0011p1V!\u0004\\`w&^x\u0019ppo#H\u0011g'Cm\u000e\u001afz1Ej\u001a\u001a}l/T"
         .length();
      char var1 = 30;
      int var7 = -1;

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

         while (true) {
            String var9 = a(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     j = var5;
                     String[] var10 = j;
                     SYSPROP_ALLOW_CIRCULARITY = j[59];
                     SYSPROP_ENABLE_HSM = var10[20];
                     e = var10[63];
                     PKCS11_CFG_FILE = var10[21];
                     c = var10[7];
                     b = var10[58];
                     LOGGER = Logger.getLogger(GatewayBoot.class.getName());
                     String[] var8 = j;
                     d = SyspropUtil.getString(var8[9], var8[36]);
                     HSM_SECURITY_PROVIDERS = new String[]{var8[14], var8[49], var8[4], var8[6]};
                     JdkLogConfig.configureLogging();
                     a();
                     return;
                  }

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

                  var2 = "Q\u0010wl9z@.A\f}\u0000:\"@G\u0000x\u0000%pFT\u0006b\u00004z[VMqB:zCa\nbM#yUP1uH3gQL\u0000u]";
                  var4 = "Q\u0010wl9z@.A\f}\u0000:\"@G\u0000x\u0000%pFT\u0006b\u00004z[VMqB:zCa\nbM#yUP1uH3gQL\u0000u]".length();
                  var1 = 7;
                  var7 = -1;
            }

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

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

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

      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 -> 95;
            case 1 -> 30;
            case 2 -> 109;
            case 3 -> 83;
            case 4 -> 43;
            case 5 -> 104;
            default -> 73;
         });
      }

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

   public static final class GatewayLogManager extends LogManager implements ResettableLogManager {
      @Override
      public void reset() throws SecurityException {
      }

      public void resetLogs() throws SecurityException {
         super.reset();
      }
   }

   public enum Mode {
      TRADITIONAL,
      RUNTIME;

      // $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[2];
         int var4 = 0;
         String var3 = "0\u0001s\u0017ls7\u000b6\u0006|\u0007lj;-\u001a|\u000f";
         int var5 = "0\u0001s\u0017ls7\u000b6\u0006|\u0007lj;-\u001a|\u000f".length();
         char var2 = 7;
         int var1 = -1;

         while (true) {
            String var10002 = a(19, a(var3.substring(++var1, var1 + var2)));
            byte var10001 = -1;
            var0[var4++] = var10002;
            if ((var1 += var2) >= var5) {
               TRADITIONAL = new GatewayBoot.Mode();
               RUNTIME = new GatewayBoot.Mode();
               return;
            }

            var2 = var3.charAt(var1);
         }
      }

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

         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 -> 113;
               case 1 -> 71;
               case 2 -> 46;
               case 3 -> 80;
               case 4 -> 54;
               case 5 -> 45;
               default -> 97;
            });
         }

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