package com.l7tech.server;

import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityHeaderSet;
import com.l7tech.objectmodel.EntityManager;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.NamedEntity;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.SecurityZone;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.objectmodel.ZoneableEntity;
import com.l7tech.objectmodel.ZoneableEntityHeader;
import com.l7tech.objectmodel.EntityManager.UniqueType;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Functions;
import com.l7tech.util.Functions.BinaryThrows;
import com.l7tech.util.Functions.Ternary;
import com.l7tech.util.Functions.UnaryThrows;
import jakarta.persistence.NoResultException;
import jakarta.persistence.Table;
import jakarta.persistence.TypedQuery;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Path;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.lang.ref.WeakReference;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.logging.Logger;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEvent;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionTemplate;

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public abstract class HibernateEntityManager<ET extends PersistentEntity, HT extends EntityHeader>
   extends HibernateDaoSupport
   implements EntityManager<ET, HT>,
   ApplicationContextAware {
   public static final String EMPTY_STRING = "";
   public static final String F_GOID;
   public static final String F_NAME;
   public static final String F_VERSION;
   public static final Object NULL;
   public static final Object NOTNULL;
   private final String a;
   private final String b;
   private final String c;
   private final String d;
   protected PlatformTransactionManager transactionManager;
   protected ApplicationContext applicationContext;
   private final Logger e;
   private static final boolean f;
   private ReadWriteLock g;
   private Map<Goid, WeakReference<ao<ET>>> h;
   private Map<String, WeakReference<ao<ET>>> i;
   private String j;
   private EntityType k;
   private static final String[] S;

   public HibernateEntityManager() {
      String var10001 = this.getTableName();
      String var10002 = this.getTableName();
      String var1 = this.getImpClass().getName();
      String var2 = this.getTableName();
      String var3 = var10002;
      String var4 = var10001;
      String[] var15 = S;
      this.a = var15[34] + var4 + var15[37] + var3 + var15[61] + var2 + var15[22] + var1;
      var10001 = this.getTableName();
      var10002 = this.getTableName();
      String var10003 = this.getImpClass().getName();
      String var5 = this.getTableName();
      String var6 = var10003;
      String var7 = var10002;
      String var8 = var10001;
      this.b = var15[49] + var8 + var15[50] + var7 + var15[58] + var6 + var15[59] + var5 + var15[25];
      var10001 = this.getTableName();
      var10002 = this.getImpClass().getName();
      String var9 = this.getTableName();
      String var10 = var10002;
      String var11 = var10001;
      this.c = var15[14] + var11 + var15[58] + var10 + var15[0] + var9 + var15[2];
      var10001 = this.getTableName();
      var10002 = this.getImpClass().getName();
      String var12 = this.getTableName();
      String var13 = var10002;
      String var14 = var10001;
      this.d = var15[43] + var14 + var15[58] + var13 + var15[0] + var12 + var15[2];
      this.e = Logger.getLogger(this.getClass().getName());
      this.g = new ReentrantReadWriteLock();
      this.h = new HashMap<>();
      this.i = new HashMap<>();
   }

   public void setApplicationContext(ApplicationContext var1) throws BeansException {
      this.applicationContext = var1;
   }

   @Transactional(readOnly = true)
   public ET findByPrimaryKey(Goid var1) throws FindException {
      try {
         return (ET)this.getHibernateTemplate().execute(new bk(this, var1));
      } catch (Exception var3) {
         throw new FindException(var3.toString(), var3);
      }
   }

   @Transactional(readOnly = true)
   protected ET findByUniqueKey(String var1, long var2) throws FindException {
      try {
         if (var1 == null) {
            throw new NullPointerException();
         }
      } catch (FindException var4) {
         throw c(var4);
      }

      try {
         if (var1.trim().isEmpty()) {
            throw new IllegalArgumentException(S[78]);
         }
      } catch (FindException var5) {
         throw c(var5);
      }

      return this.findUnique(Collections.singletonMap(var1, var2));
   }

   @Transactional(readOnly = true)
   protected ET findByUniqueKey(String var1, Goid var2) throws FindException {
      try {
         if (var1 == null) {
            throw new NullPointerException();
         }
      } catch (FindException var3) {
         throw c(var3);
      }

      try {
         if (var1.trim().isEmpty()) {
            throw new IllegalArgumentException(S[28]);
         }
      } catch (FindException var4) {
         throw c(var4);
      }

      return this.findUnique(Collections.singletonMap(var1, var2));
   }

   protected final ET findUnique(Map<String, Object> var1) throws FindException {
      try {
         return (ET)this.getHibernateTemplate().execute(new br(this, var1));
      } catch (HibernateException var3) {
         throw new FindException(S[4], var3);
      }
   }

   @NotNull
   private TypedQuery<ET> a(
      @NotNull Session var1, @NotNull Collection<Map<String, Object>> var2, @Nullable Ternary<Predicate, CriteriaBuilder, Root<ET>, Predicate> var3
   ) {
      try {
         if (var1 == null) {
            a(0);
         }
      } catch (NullPointerException var9) {
         throw c(var9);
      }

      try {
         if (var2 == null) {
            a(1);
         }
      } catch (NullPointerException var10) {
         throw c(var10);
      }

      CriteriaBuilder var4 = var1.getCriteriaBuilder();
      CriteriaQuery var5 = var4.createQuery(this.getImpClass());
      Root var6 = var5.from(this.getImpClass());
      Predicate var7 = this.asPredicate(var4, var6, var2);
      if (var3 != null) {
         var7 = (Predicate)var3.call(var4, var6, var7);
      }

      try {
         var5.select(var6).where(var7);
         Query var10000 = var1.createQuery(var5);
         if (var10000 == null) {
            a(2);
         }

         return var10000;
      } catch (NullPointerException var8) {
         throw c(var8);
      }
   }

   @Transactional(readOnly = true)
   public ET findByHeader(EntityHeader var1) throws FindException {
      return this.findByPrimaryKey(var1.getGoid());
   }

   protected int findCount(Class param1, BinaryThrows<Predicate, CriteriaBuilder, Root<ET>, FindException> param2) throws FindException {
      // $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: ifnonnull 0f
      // 04: aload 0
      // 05: invokevirtual com/l7tech/server/HibernateEntityManager.getImpClass ()Ljava/lang/Class;
      // 08: goto 10
      // 0b: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0e: athrow
      // 0f: aload 1
      // 10: astore 3
      // 11: getstatic com/l7tech/server/HibernateEntityManager.f Z
      // 14: ifeq 47
      // 17: aload 2
      // 18: ifnonnull 47
      // 1b: goto 22
      // 1e: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 21: athrow
      // 22: aload 3
      // 23: aload 0
      // 24: invokevirtual com/l7tech/server/HibernateEntityManager.getImpClass ()Ljava/lang/Class;
      // 27: invokevirtual java/lang/Object.equals (Ljava/lang/Object;)Z
      // 2a: ifeq 47
      // 2d: goto 34
      // 30: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 33: athrow
      // 34: aload 0
      // 35: new com/l7tech/server/aj
      // 38: dup
      // 39: aload 0
      // 3a: invokespecial com/l7tech/server/aj.<init> (Lcom/l7tech/server/HibernateEntityManager;)V
      // 3d: invokevirtual com/l7tech/server/HibernateEntityManager.doReadOnlyWork (Lcom/l7tech/util/Functions$UnaryThrows;)Ljava/lang/Object;
      // 40: checkcast java/lang/Integer
      // 43: invokevirtual java/lang/Integer.intValue ()I
      // 46: ireturn
      // 47: aload 0
      // 48: invokevirtual com/l7tech/server/HibernateEntityManager.getHibernateTemplate ()Lorg/springframework/orm/hibernate5/HibernateTemplate;
      // 4b: new com/l7tech/server/bv
      // 4e: dup
      // 4f: aload 0
      // 50: aload 2
      // 51: invokespecial com/l7tech/server/bv.<init> (Lcom/l7tech/server/HibernateEntityManager;Lcom/l7tech/util/Functions$BinaryThrows;)V
      // 54: invokevirtual org/springframework/orm/hibernate5/HibernateTemplate.execute (Lorg/springframework/orm/hibernate5/HibernateCallback;)Ljava/lang/Object;
      // 57: checkcast java/lang/Integer
      // 5a: invokevirtual java/lang/Integer.intValue ()I
      // 5d: ireturn
      // 5e: astore 4
      // 60: new com/l7tech/objectmodel/FindException
      // 63: dup
      // 64: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 67: bipush 16
      // 69: aaload
      // 6a: aload 4
      // 6c: invokespecial com/l7tech/objectmodel/FindException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
      // 6f: athrow
      // try (11 -> 21): 22 java/lang/Exception
      // try (9 -> 13): 14 java/lang/Exception
      // try (0 -> 5): 5 java/lang/Exception
      // try (9 -> 32): 44 java/lang/Exception
      // try (33 -> 43): 44 java/lang/Exception
   }

   protected List<ET> findPage(
      Class var1, String var2, boolean var3, int var4, int var5, BinaryThrows<Predicate, CriteriaBuilder, Root<ET>, FindException> var6
   ) throws FindException {
      try {
         return (List<ET>)this.getHibernateTemplate().execute(new bw(this, var1, var6, var2, var3, var4, var5));
      } catch (Exception var8) {
         throw new FindException(S[84], var8);
      }
   }

   public List<ET> findPagedMatching(int var1, int var2, String var3, Boolean var4, Map<String, List<Object>> var5) throws FindException {
      try {
         return (List<ET>)this.getHibernateTemplate().execute(new bx(this, var5, var3, var4, var1, var2));
      } catch (Exception var7) {
         throw new FindException(S[3], var7);
      }
   }

   protected final List<ET> findMatching(@NotNull Collection<Map<String, Object>> var1) throws FindException {
      try {
         if (var1 == null) {
            a(3);
         }
      } catch (FindException var2) {
         throw c(var2);
      }

      return this.findMatching(var1, null);
   }

   protected final List<ET> findMatching(@NotNull Collection<Map<String, Object>> var1, @Nullable Ternary<Predicate, CriteriaBuilder, Root<ET>, Predicate> var2) throws FindException {
      try {
         if (var1 == null) {
            a(4);
         }
      } catch (Exception var5) {
         throw c(var5);
      }

      try {
         return (List<ET>)this.getHibernateTemplate().execute(new by(this, var1, var2));
      } catch (Exception var4) {
         throw new FindException(S[79], var4);
      }
   }

   protected final <V> Predicate asPredicate(CriteriaBuilder var1, Root<ET> var2, Collection<Map<String, V>> var3) {
      return (Predicate)Functions.reduce(var3, var1.disjunction(), new am(this, var1, var2));
   }

   protected final <V> Predicate asPredicate(CriteriaBuilder var1, Root<ET> var2, Map<String, V> var3) {
      return (Predicate)Functions.reduce(var3.entrySet(), var1.conjunction(), new an(this, var1, var2));
   }

   protected static Path expandNestedAttribute(@NotNull Root var0, @Nullable String var1, boolean var2) {
      try {
         if (var0 == null) {
            a(5);
         }
      } catch (NullPointerException var9) {
         throw c(var9);
      }

      Object var3 = var0;
      if (StringUtils.isNotEmpty(var1)) {
         String[] var8 = S;

         for (String var7 : var1.split(var8[31])) {
            label33: {
               try {
                  if (var2 && S[32].equals(var7)) {
                     break label33;
                  }
               } catch (NullPointerException var10) {
                  throw c(var10);
               }

               var3 = var3.get(var7);
               continue;
            }

            var3 = var3.get(S[55]);
         }
      }

      return (Path)var3;
   }

   static Path a(@NotNull Root var0, @Nullable String var1) {
      try {
         if (var0 == null) {
            a(6);
         }
      } catch (NullPointerException var2) {
         throw c(var2);
      }

      return expandNestedAttribute(var0, var1, false);
   }

   protected List<HT> findMatchingHeaders(Collection<Map<String, Object>> var1) throws FindException {
      return Functions.map(this.findMatching(var1), new ac(this));
   }

   protected Collection<Map<String, Object>> getUniqueConstraints(ET var1) {
      label29: {
         label23: {
            try {
               switch (ai.a[this.getUniqueType().ordinal()]) {
                  case 1:
                     if (var1 instanceof NamedEntity) {
                        break label29;
                     }
                     break label23;
                  case 2:
                     return Collections.emptySet();
                  case 3:
               }
            } catch (NullPointerException var5) {
               throw c(var5);
            }

            throw new IllegalArgumentException(S[72]);
         }

         String[] var4 = S;
         throw new IllegalArgumentException(var4[81]);
      }

      NamedEntity var2 = (NamedEntity)var1;
      HashMap var3 = new HashMap();
      String[] var6 = S;
      var3.put(var6[80], var2.getName());
      return Collections.singletonList(var3);
   }

   public Goid save(ET param1) throws SaveException {
      // $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: getfield com/l7tech/server/HibernateEntityManager.e Ljava/util/logging/Logger;
      // 04: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 07: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 0a: ifeq 47
      // 0d: aload 0
      // 0e: getfield com/l7tech/server/HibernateEntityManager.e Ljava/util/logging/Logger;
      // 11: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 14: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 17: bipush 65
      // 19: aaload
      // 1a: bipush 2
      // 1b: anewarray 676
      // 1e: dup
      // 1f: bipush 0
      // 20: aload 0
      // 21: invokevirtual com/l7tech/server/HibernateEntityManager.getImpClass ()Ljava/lang/Class;
      // 24: invokevirtual java/lang/Class.getSimpleName ()Ljava/lang/String;
      // 27: aastore
      // 28: dup
      // 29: bipush 1
      // 2a: aload 1
      // 2b: ifnonnull 3d
      // 2e: goto 35
      // 31: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 34: athrow
      // 35: aconst_null
      // 36: goto 43
      // 39: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3c: athrow
      // 3d: aload 1
      // 3e: invokeinterface com/l7tech/objectmodel/PersistentEntity.toString ()Ljava/lang/String; 1
      // 43: aastore
      // 44: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
      // 47: aload 0
      // 48: invokevirtual com/l7tech/server/HibernateEntityManager.getUniqueType ()Lcom/l7tech/objectmodel/EntityManager$UniqueType;
      // 4b: getstatic com/l7tech/objectmodel/EntityManager$UniqueType.NONE Lcom/l7tech/objectmodel/EntityManager$UniqueType;
      // 4e: if_acmpeq 90
      // 51: aload 0
      // 52: aload 1
      // 53: invokevirtual com/l7tech/server/HibernateEntityManager.getUniqueConstraints (Lcom/l7tech/objectmodel/PersistentEntity;)Ljava/util/Collection;
      // 56: astore 2
      // 57: aload 0
      // 58: aload 2
      // 59: invokevirtual com/l7tech/server/HibernateEntityManager.findMatching (Ljava/util/Collection;)Ljava/util/List;
      // 5c: astore 3
      // 5d: goto 76
      // 60: astore 4
      // 62: new com/l7tech/objectmodel/SaveException
      // 65: dup
      // 66: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 69: astore 5
      // 6b: aload 5
      // 6d: bipush 63
      // 6f: aaload
      // 70: aload 4
      // 72: invokespecial com/l7tech/objectmodel/SaveException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
      // 75: athrow
      // 76: aload 3
      // 77: invokeinterface java/util/List.isEmpty ()Z 1
      // 7c: ifne 90
      // 7f: new com/l7tech/objectmodel/DuplicateObjectException
      // 82: dup
      // 83: aload 0
      // 84: aload 2
      // 85: invokevirtual com/l7tech/server/HibernateEntityManager.describeAttributes (Ljava/util/Collection;)Ljava/lang/String;
      // 88: invokespecial com/l7tech/objectmodel/DuplicateObjectException.<init> (Ljava/lang/String;)V
      // 8b: athrow
      // 8c: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 8f: athrow
      // 90: aload 0
      // 91: invokevirtual com/l7tech/server/HibernateEntityManager.getHibernateTemplate ()Lorg/springframework/orm/hibernate5/HibernateTemplate;
      // 94: aload 1
      // 95: invokevirtual org/springframework/orm/hibernate5/HibernateTemplate.save (Ljava/lang/Object;)Ljava/io/Serializable;
      // 98: astore 2
      // 99: aload 2
      // 9a: instanceof com/l7tech/objectmodel/Goid
      // 9d: ifne c5
      // a0: new com/l7tech/objectmodel/SaveException
      // a3: dup
      // a4: aload 2
      // a5: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // a8: invokevirtual java/lang/Class.getName ()Ljava/lang/String;
      // ab: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // ae: bipush 76
      // b0: aaload
      // b1: swap
      // b2: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // b5: bipush 26
      // b7: aaload
      // b8: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // bd: invokespecial com/l7tech/objectmodel/SaveException.<init> (Ljava/lang/String;)V
      // c0: athrow
      // c1: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // c4: athrow
      // c5: aload 2
      // c6: checkcast com/l7tech/objectmodel/Goid
      // c9: areturn
      // ca: astore 2
      // cb: new com/l7tech/objectmodel/SaveException
      // ce: dup
      // cf: aload 1
      // d0: invokeinterface com/l7tech/objectmodel/PersistentEntity.getClass ()Ljava/lang/Class; 1
      // d5: invokevirtual java/lang/Class.getSimpleName ()Ljava/lang/String;
      // d8: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // db: bipush 69
      // dd: aaload
      // de: swap
      // df: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // e4: aload 2
      // e5: invokespecial com/l7tech/objectmodel/SaveException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
      // e8: athrow
      // try (5 -> 28): 28 com/l7tech/objectmodel/FindException
      // try (0 -> 23): 24 com/l7tech/objectmodel/FindException
      // try (42 -> 46): 47 com/l7tech/objectmodel/FindException
      // try (75 -> 93): 93 com/l7tech/objectmodel/FindException
      // try (58 -> 68): 68 com/l7tech/objectmodel/FindException
      // try (34 -> 97): 98 java/lang/RuntimeException
   }

   public void save(@NotNull Goid param1, @NotNull ET param2) throws SaveException {
      // $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:
      // 000: aload 1
      // 001: ifnonnull 010
      // 004: bipush 7
      // 006: invokestatic com/l7tech/server/HibernateEntityManager.a (I)V
      // 009: goto 010
      // 00c: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 00f: athrow
      // 010: aload 2
      // 011: ifnonnull 020
      // 014: bipush 8
      // 016: invokestatic com/l7tech/server/HibernateEntityManager.a (I)V
      // 019: goto 020
      // 01c: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 01f: athrow
      // 020: aload 0
      // 021: getfield com/l7tech/server/HibernateEntityManager.e Ljava/util/logging/Logger;
      // 024: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 027: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 02a: ifeq 06e
      // 02d: aload 0
      // 02e: getfield com/l7tech/server/HibernateEntityManager.e Ljava/util/logging/Logger;
      // 031: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 034: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 037: bipush 54
      // 039: aaload
      // 03a: bipush 3
      // 03b: anewarray 676
      // 03e: dup
      // 03f: bipush 0
      // 040: aload 0
      // 041: invokevirtual com/l7tech/server/HibernateEntityManager.getImpClass ()Ljava/lang/Class;
      // 044: invokevirtual java/lang/Class.getSimpleName ()Ljava/lang/String;
      // 047: aastore
      // 048: dup
      // 049: bipush 1
      // 04a: aload 2
      // 04b: ifnonnull 05d
      // 04e: goto 055
      // 051: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 054: athrow
      // 055: aconst_null
      // 056: goto 063
      // 059: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 05c: athrow
      // 05d: aload 2
      // 05e: invokeinterface com/l7tech/objectmodel/PersistentEntity.toString ()Ljava/lang/String; 1
      // 063: aastore
      // 064: dup
      // 065: bipush 2
      // 066: aload 1
      // 067: invokevirtual com/l7tech/objectmodel/Goid.toString ()Ljava/lang/String;
      // 06a: aastore
      // 06b: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
      // 06e: getstatic com/l7tech/objectmodel/GoidRange.RESERVED_RANGE Lcom/l7tech/objectmodel/GoidRange;
      // 071: aload 1
      // 072: invokevirtual com/l7tech/objectmodel/GoidRange.isInRange (Lcom/l7tech/objectmodel/Goid;)Z
      // 075: ifeq 094
      // 078: new com/l7tech/objectmodel/SaveException
      // 07b: dup
      // 07c: aload 1
      // 07d: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 080: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 083: bipush 19
      // 085: aaload
      // 086: swap
      // 087: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 08c: invokespecial com/l7tech/objectmodel/SaveException.<init> (Ljava/lang/String;)V
      // 08f: athrow
      // 090: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 093: athrow
      // 094: aload 0
      // 095: aload 1
      // 096: invokevirtual com/l7tech/server/HibernateEntityManager.findByPrimaryKey (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/objectmodel/PersistentEntity;
      // 099: astore 3
      // 09a: aload 3
      // 09b: ifnull 0ba
      // 09e: new com/l7tech/objectmodel/DuplicateObjectException
      // 0a1: dup
      // 0a2: aload 1
      // 0a3: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 0a6: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 0a9: bipush 42
      // 0ab: aaload
      // 0ac: swap
      // 0ad: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 0b2: invokespecial com/l7tech/objectmodel/DuplicateObjectException.<init> (Ljava/lang/String;)V
      // 0b5: athrow
      // 0b6: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0b9: athrow
      // 0ba: goto 0be
      // 0bd: astore 3
      // 0be: aload 2
      // 0bf: invokestatic com/l7tech/objectmodel/imp/PersistentEntityUtil.preserveId (Lcom/l7tech/objectmodel/PersistentEntity;)Z
      // 0c2: istore 3
      // 0c3: iload 3
      // 0c4: ifne 0e8
      // 0c7: new com/l7tech/objectmodel/SaveException
      // 0ca: dup
      // 0cb: aload 2
      // 0cc: invokeinterface com/l7tech/objectmodel/PersistentEntity.getClass ()Ljava/lang/Class; 1
      // 0d1: invokevirtual java/lang/Class.getSimpleName ()Ljava/lang/String;
      // 0d4: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 0d7: bipush 36
      // 0d9: aaload
      // 0da: swap
      // 0db: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 0e0: invokespecial com/l7tech/objectmodel/SaveException.<init> (Ljava/lang/String;)V
      // 0e3: athrow
      // 0e4: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0e7: athrow
      // 0e8: aload 2
      // 0e9: aload 1
      // 0ea: invokeinterface com/l7tech/objectmodel/PersistentEntity.setGoid (Lcom/l7tech/objectmodel/Goid;)V 2
      // 0ef: aload 0
      // 0f0: aload 2
      // 0f1: invokevirtual com/l7tech/server/HibernateEntityManager.save (Lcom/l7tech/objectmodel/PersistentEntity;)Lcom/l7tech/objectmodel/Goid;
      // 0f4: astore 4
      // 0f6: aload 1
      // 0f7: aload 4
      // 0f9: invokevirtual com/l7tech/objectmodel/Goid.equals (Ljava/lang/Object;)Z
      // 0fc: ifne 13e
      // 0ff: new com/l7tech/objectmodel/SaveException
      // 102: dup
      // 103: aload 1
      // 104: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 107: aload 4
      // 109: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 10c: aload 2
      // 10d: invokeinterface com/l7tech/objectmodel/PersistentEntity.getClass ()Ljava/lang/Class; 1
      // 112: invokevirtual java/lang/Class.getSimpleName ()Ljava/lang/String;
      // 115: astore 5
      // 117: astore 6
      // 119: astore 7
      // 11b: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 11e: astore 8
      // 120: aload 8
      // 122: bipush 66
      // 124: aaload
      // 125: aload 7
      // 127: aload 8
      // 129: bipush 7
      // 12b: aaload
      // 12c: aload 6
      // 12e: aload 8
      // 130: bipush 77
      // 132: aaload
      // 133: aload 5
      // 135: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001\u0001\u0001" ]
      // 13a: invokespecial com/l7tech/objectmodel/SaveException.<init> (Ljava/lang/String;)V
      // 13d: athrow
      // 13e: goto 160
      // 141: astore 3
      // 142: new com/l7tech/objectmodel/SaveException
      // 145: dup
      // 146: aload 2
      // 147: invokeinterface com/l7tech/objectmodel/PersistentEntity.getClass ()Ljava/lang/Class; 1
      // 14c: invokevirtual java/lang/Class.getSimpleName ()Ljava/lang/String;
      // 14f: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 152: bipush 48
      // 154: aaload
      // 155: swap
      // 156: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 15b: aload 3
      // 15c: invokespecial com/l7tech/objectmodel/SaveException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
      // 15f: athrow
      // 160: return
      // try (74 -> 87): 87 com/l7tech/objectmodel/FindException
      // try (53 -> 68): 68 com/l7tech/objectmodel/FindException
      // try (19 -> 42): 42 com/l7tech/objectmodel/FindException
      // try (14 -> 37): 38 com/l7tech/objectmodel/FindException
      // try (7 -> 11): 12 com/l7tech/objectmodel/FindException
      // try (0 -> 4): 5 com/l7tech/objectmodel/FindException
      // try (70 -> 89): 90 com/l7tech/objectmodel/FindException
      // try (94 -> 108): 108 com/l7tech/objectmodel/FindException
      // try (70 -> 150): 151 java/lang/RuntimeException
   }

   protected String describeAttributes(Collection<Map<String, Object>> var1) {
      StringBuilder var2 = new StringBuilder();

      for (Map var4 : var1) {
         try {
            if (var4.size() == 0) {
               continue;
            }
         } catch (NullPointerException var9) {
            throw c(var9);
         }

         var2.append("(");

         for (String var6 : var4.keySet()) {
            StringBuilder var10000 = var2.append(var6);
            String[] var7 = S;
            var10000.append(var7[51]);
         }

         var2.delete(var2.length() - 2, var2.length());
         String[] var10 = S;
         var2.append(var10[35]);
      }

      try {
         if (var2.length() == 0) {
            throw new IllegalStateException(S[27]);
         }
      } catch (NullPointerException var8) {
         throw c(var8);
      }

      var2.append(S[53]);
      return var2.toString();
   }

   public void update(ET param1) throws UpdateException {
      // $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:
      // 000: aload 0
      // 001: invokevirtual com/l7tech/server/HibernateEntityManager.getUniqueType ()Lcom/l7tech/objectmodel/EntityManager$UniqueType;
      // 004: getstatic com/l7tech/objectmodel/EntityManager$UniqueType.NONE Lcom/l7tech/objectmodel/EntityManager$UniqueType;
      // 007: if_acmpeq 09e
      // 00a: aload 0
      // 00b: aload 1
      // 00c: invokevirtual com/l7tech/server/HibernateEntityManager.getUniqueConstraints (Lcom/l7tech/objectmodel/PersistentEntity;)Ljava/util/Collection;
      // 00f: astore 2
      // 010: aload 0
      // 011: aload 2
      // 012: invokevirtual com/l7tech/server/HibernateEntityManager.findMatching (Ljava/util/Collection;)Ljava/util/List;
      // 015: astore 3
      // 016: goto 02d
      // 019: astore 4
      // 01b: new com/l7tech/objectmodel/UpdateException
      // 01e: dup
      // 01f: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 022: astore 7
      // 024: aload 7
      // 026: bipush 75
      // 028: aaload
      // 029: invokespecial com/l7tech/objectmodel/UpdateException.<init> (Ljava/lang/String;)V
      // 02c: athrow
      // 02d: aload 3
      // 02e: invokeinterface java/util/List.isEmpty ()Z 1
      // 033: ifne 09e
      // 036: aload 3
      // 037: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 03c: astore 4
      // 03e: aload 4
      // 040: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 045: ifeq 09e
      // 048: aload 4
      // 04a: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 04f: checkcast com/l7tech/objectmodel/PersistentEntity
      // 052: astore 5
      // 054: aload 1
      // 055: invokeinterface com/l7tech/objectmodel/PersistentEntity.getId ()Ljava/lang/String; 1
      // 05a: aload 5
      // 05c: invokeinterface com/l7tech/objectmodel/PersistentEntity.getId ()Ljava/lang/String; 1
      // 061: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 064: ifeq 081
      // 067: aload 1
      // 068: invokeinterface com/l7tech/objectmodel/PersistentEntity.getClass ()Ljava/lang/Class; 1
      // 06d: aload 5
      // 06f: invokeinterface com/l7tech/objectmodel/PersistentEntity.getClass ()Ljava/lang/Class; 1
      // 074: invokevirtual java/lang/Object.equals (Ljava/lang/Object;)Z
      // 077: ifne 09b
      // 07a: goto 081
      // 07d: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 080: athrow
      // 081: aload 0
      // 082: aload 2
      // 083: invokevirtual com/l7tech/server/HibernateEntityManager.describeAttributes (Ljava/util/Collection;)Ljava/lang/String;
      // 086: astore 6
      // 088: new com/l7tech/objectmodel/UpdateException
      // 08b: dup
      // 08c: aload 6
      // 08e: new com/l7tech/objectmodel/DuplicateObjectException
      // 091: dup
      // 092: aload 6
      // 094: invokespecial com/l7tech/objectmodel/DuplicateObjectException.<init> (Ljava/lang/String;)V
      // 097: invokespecial com/l7tech/objectmodel/UpdateException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
      // 09a: athrow
      // 09b: goto 03e
      // 09e: aload 0
      // 09f: aload 1
      // 0a0: invokeinterface com/l7tech/objectmodel/PersistentEntity.getGoid ()Lcom/l7tech/objectmodel/Goid; 1
      // 0a5: invokevirtual com/l7tech/server/HibernateEntityManager.findByPrimaryKey (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/objectmodel/PersistentEntity;
      // 0a8: astore 2
      // 0a9: aload 2
      // 0aa: ifnull 0ea
      // 0ad: aload 2
      // 0ae: invokeinterface com/l7tech/objectmodel/PersistentEntity.getVersion ()I 1
      // 0b3: aload 1
      // 0b4: invokeinterface com/l7tech/objectmodel/PersistentEntity.getVersion ()I 1
      // 0b9: if_icmpeq 0ea
      // 0bc: goto 0c3
      // 0bf: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0c2: athrow
      // 0c3: new com/l7tech/objectmodel/StaleUpdateException
      // 0c6: dup
      // 0c7: aload 1
      // 0c8: invokeinterface com/l7tech/objectmodel/PersistentEntity.getGoid ()Lcom/l7tech/objectmodel/Goid; 1
      // 0cd: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 0d0: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 0d3: bipush 74
      // 0d5: aaload
      // 0d6: swap
      // 0d7: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 0da: bipush 9
      // 0dc: aaload
      // 0dd: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // 0e2: invokespecial com/l7tech/objectmodel/StaleUpdateException.<init> (Ljava/lang/String;)V
      // 0e5: athrow
      // 0e6: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0e9: athrow
      // 0ea: goto 100
      // 0ed: astore 2
      // 0ee: new com/l7tech/objectmodel/UpdateException
      // 0f1: dup
      // 0f2: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 0f5: astore 7
      // 0f7: aload 7
      // 0f9: bipush 62
      // 0fb: aaload
      // 0fc: invokespecial com/l7tech/objectmodel/UpdateException.<init> (Ljava/lang/String;)V
      // 0ff: athrow
      // 100: aload 0
      // 101: invokevirtual com/l7tech/server/HibernateEntityManager.getHibernateTemplate ()Lorg/springframework/orm/hibernate5/HibernateTemplate;
      // 104: aload 1
      // 105: invokevirtual org/springframework/orm/hibernate5/HibernateTemplate.merge (Ljava/lang/Object;)Ljava/lang/Object;
      // 108: pop
      // 109: goto 12b
      // 10c: astore 2
      // 10d: new com/l7tech/objectmodel/UpdateException
      // 110: dup
      // 111: aload 1
      // 112: invokeinterface com/l7tech/objectmodel/PersistentEntity.getClass ()Ljava/lang/Class; 1
      // 117: invokevirtual java/lang/Class.getSimpleName ()Ljava/lang/String;
      // 11a: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 11d: bipush 24
      // 11f: aaload
      // 120: swap
      // 121: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 126: aload 2
      // 127: invokespecial com/l7tech/objectmodel/UpdateException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
      // 12a: athrow
      // 12b: return
      // try (8 -> 12): 13 com/l7tech/objectmodel/FindException
      // try (72 -> 95): 95 com/l7tech/objectmodel/FindException
      // try (70 -> 77): 78 com/l7tech/objectmodel/FindException
      // try (36 -> 48): 49 com/l7tech/objectmodel/FindException
      // try (65 -> 97): 98 com/l7tech/objectmodel/FindException
      // try (0 -> 113): 114 java/lang/RuntimeException
   }

   @Transactional(readOnly = true)
   public Integer getVersion(Goid var1) throws FindException {
      try {
         return (Integer)this.getHibernateTemplate().execute(new bl(this, var1));
      } catch (Exception var3) {
         throw new FindException(var3.toString(), var3);
      }
   }

   @Transactional(readOnly = true)
   public Map<Goid, Integer> findVersionMap() throws FindException {
      // $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:
      // 000: new java/util/HashMap
      // 003: dup
      // 004: invokespecial java/util/HashMap.<init> ()V
      // 007: astore 1
      // 008: ldc com/l7tech/objectmodel/PersistentEntity
      // 00a: aload 0
      // 00b: invokevirtual com/l7tech/server/HibernateEntityManager.getImpClass ()Ljava/lang/Class;
      // 00e: invokevirtual java/lang/Class.isAssignableFrom (Ljava/lang/Class;)Z
      // 011: ifne 025
      // 014: new com/l7tech/objectmodel/FindException
      // 017: dup
      // 018: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 01b: bipush 1
      // 01c: aaload
      // 01d: invokespecial com/l7tech/objectmodel/FindException.<init> (Ljava/lang/String;)V
      // 020: athrow
      // 021: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 024: athrow
      // 025: aconst_null
      // 026: astore 2
      // 027: aconst_null
      // 028: astore 3
      // 029: aload 0
      // 02a: invokevirtual com/l7tech/server/HibernateEntityManager.getSessionFactory ()Lorg/hibernate/SessionFactory;
      // 02d: invokestatic com/l7tech/server/HibernateEntityManager.useCurrentOrOpenNewSession (Lorg/hibernate/SessionFactory;)Lorg/hibernate/Session;
      // 030: astore 2
      // 031: aload 2
      // 032: invokeinterface org/hibernate/Session.getHibernateFlushMode ()Lorg/hibernate/FlushMode; 1
      // 037: astore 3
      // 038: aload 2
      // 039: getstatic org/hibernate/FlushMode.MANUAL Lorg/hibernate/FlushMode;
      // 03c: invokeinterface org/hibernate/Session.setHibernateFlushMode (Lorg/hibernate/FlushMode;)V 2
      // 041: aload 2
      // 042: aload 0
      // 043: getfield com/l7tech/server/HibernateEntityManager.a Ljava/lang/String;
      // 046: invokeinterface org/hibernate/Session.createQuery (Ljava/lang/String;)Lorg/hibernate/query/Query; 2
      // 04b: astore 4
      // 04d: aload 4
      // 04f: invokeinterface org/hibernate/query/Query.list ()Ljava/util/List; 1
      // 054: astore 5
      // 056: aload 5
      // 058: invokeinterface java/util/List.size ()I 1
      // 05d: ifle 0ef
      // 060: aload 5
      // 062: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 067: astore 6
      // 069: aload 6
      // 06b: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 070: ifeq 0ef
      // 073: aload 6
      // 075: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 07a: astore 7
      // 07c: aload 7
      // 07e: checkcast [Ljava/lang/Object;
      // 081: astore 8
      // 083: aload 8
      // 085: bipush 0
      // 086: aaload
      // 087: instanceof com/l7tech/objectmodel/Goid
      // 08a: ifeq 0ba
      // 08d: aload 8
      // 08f: bipush 1
      // 090: aaload
      // 091: instanceof java/lang/Integer
      // 094: ifeq 0ba
      // 097: goto 09e
      // 09a: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 09d: athrow
      // 09e: aload 1
      // 09f: aload 8
      // 0a1: bipush 0
      // 0a2: aaload
      // 0a3: checkcast com/l7tech/objectmodel/Goid
      // 0a6: aload 8
      // 0a8: bipush 1
      // 0a9: aaload
      // 0aa: checkcast java/lang/Integer
      // 0ad: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 0b2: pop
      // 0b3: goto 0ec
      // 0b6: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0b9: athrow
      // 0ba: new com/l7tech/objectmodel/FindException
      // 0bd: dup
      // 0be: aload 8
      // 0c0: bipush 0
      // 0c1: aaload
      // 0c2: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 0c5: aload 8
      // 0c7: bipush 1
      // 0c8: aaload
      // 0c9: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 0cc: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 0cf: astore 10
      // 0d1: aload 10
      // 0d3: bipush 46
      // 0d5: aaload
      // 0d6: dup_x2
      // 0d7: pop
      // 0d8: aload 10
      // 0da: bipush 40
      // 0dc: aaload
      // 0dd: swap
      // 0de: aload 10
      // 0e0: bipush 21
      // 0e2: aaload
      // 0e3: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001\u0001" ]
      // 0e8: invokespecial com/l7tech/objectmodel/FindException.<init> (Ljava/lang/String;)V
      // 0eb: athrow
      // 0ec: goto 069
      // 0ef: aload 2
      // 0f0: ifnull 10c
      // 0f3: aload 3
      // 0f4: ifnull 10c
      // 0f7: goto 0fe
      // 0fa: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0fd: athrow
      // 0fe: aload 2
      // 0ff: aload 3
      // 100: invokeinterface org/hibernate/Session.setHibernateFlushMode (Lorg/hibernate/FlushMode;)V 2
      // 105: goto 10c
      // 108: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 10b: athrow
      // 10c: aload 2
      // 10d: invokestatic com/l7tech/server/HibernateEntityManager.closeNewSession (Lorg/hibernate/Session;)V
      // 110: goto 14a
      // 113: astore 4
      // 115: new com/l7tech/objectmodel/FindException
      // 118: dup
      // 119: aload 4
      // 11b: invokevirtual java/lang/Exception.toString ()Ljava/lang/String;
      // 11e: aload 4
      // 120: invokespecial com/l7tech/objectmodel/FindException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
      // 123: athrow
      // 124: astore 9
      // 126: aload 2
      // 127: ifnull 143
      // 12a: aload 3
      // 12b: ifnull 143
      // 12e: goto 135
      // 131: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 134: athrow
      // 135: aload 2
      // 136: aload 3
      // 137: invokeinterface org/hibernate/Session.setHibernateFlushMode (Lorg/hibernate/FlushMode;)V 2
      // 13c: goto 143
      // 13f: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 142: athrow
      // 143: aload 2
      // 144: invokestatic com/l7tech/server/HibernateEntityManager.closeNewSession (Lorg/hibernate/Session;)V
      // 147: aload 9
      // 149: athrow
      // 14a: aload 1
      // 14b: areturn
      // try (60 -> 80): 80 java/lang/Exception
      // try (55 -> 65): 66 java/lang/Exception
      // try (4 -> 16): 16 java/lang/Exception
      // try (22 -> 110): 126 java/lang/Exception
      // try (22 -> 110): 134 null
      // try (112 -> 120): 121 java/lang/Exception
      // try (110 -> 114): 115 java/lang/Exception
      // try (126 -> 135): 134 null
      // try (135 -> 139): 140 java/lang/Exception
      // try (137 -> 145): 146 java/lang/Exception
   }

   @NotNull
   public static Session useCurrentOrOpenNewSession(@Nullable SessionFactory param0) throws HibernateException {
      // $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: getstatic com/l7tech/server/HibernateEntityManager.l Z
      // 03: ifne 23
      // 06: aload 0
      // 07: ifnonnull 23
      // 0a: goto 11
      // 0d: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 10: athrow
      // 11: new java/lang/AssertionError
      // 14: dup
      // 15: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 18: bipush 64
      // 1a: aaload
      // 1b: invokespecial java/lang/AssertionError.<init> (Ljava/lang/Object;)V
      // 1e: athrow
      // 1f: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 22: athrow
      // 23: aconst_null
      // 24: astore 1
      // 25: aload 0
      // 26: invokeinterface org/hibernate/SessionFactory.getCurrentSession ()Lorg/hibernate/Session; 1
      // 2b: astore 1
      // 2c: goto 37
      // 2f: astore 2
      // 30: aload 0
      // 31: invokeinterface org/hibernate/SessionFactory.openSession ()Lorg/hibernate/Session; 1
      // 36: astore 1
      // 37: aload 1
      // 38: dup
      // 39: ifnonnull 48
      // 3c: bipush 9
      // 3e: invokestatic com/l7tech/server/HibernateEntityManager.a (I)V
      // 41: goto 48
      // 44: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 47: athrow
      // 48: areturn
      // try (2 -> 14): 14 org/hibernate/HibernateException
      // try (0 -> 4): 5 org/hibernate/HibernateException
      // try (18 -> 21): 22 org/hibernate/HibernateException
      // try (26 -> 31): 32 org/hibernate/HibernateException
   }

   public static void closeNewSession(@Nullable Session param0) {
      // $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: ifnull 1f
      // 04: aload 0
      // 05: invokeinterface org/hibernate/Session.isJoinedToTransaction ()Z 1
      // 0a: ifne 1f
      // 0d: goto 14
      // 10: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 13: athrow
      // 14: aload 0
      // 15: invokestatic org/springframework/orm/hibernate5/SessionFactoryUtils.closeSession (Lorg/hibernate/Session;)V
      // 18: goto 1f
      // 1b: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1e: athrow
      // 1f: return
      // try (0 -> 5): 6 java/lang/NullPointerException
      // try (2 -> 10): 11 java/lang/NullPointerException
   }

   @Transactional(propagation = Propagation.SUPPORTS)
   public EntityType getEntityType() {
      EntityType var1 = this.k;
      if (var1 == null) {
         this.k = var1 = EntityType.findTypeByEntity(this.getInterfaceClass());
      }

      if (var1 == null) {
         var1 = EntityType.ANY;
         this.k = EntityType.ANY;
      }

      return var1;
   }

   @Transactional(readOnly = true)
   public EntityHeaderSet<HT> findAllHeaders() throws FindException {
      Collection var1 = this.findAll();
      EntityHeaderSet var2 = new EntityHeaderSet();

      for (PersistentEntity var4 : var1) {
         var2.add(this.newHeader((ET)var4));
      }

      return var2;
   }

   @Transactional(readOnly = true)
   public EntityHeaderSet<HT> findAllHeaders(int var1, int var2) {
      List var3 = (List)this.getHibernateTemplate().execute(new bm(this, var1, var2));
      EntityHeaderSet var4 = new EntityHeaderSet();

      for (PersistentEntity var6 : var3) {
         var4.add(this.newHeader((ET)var6));
      }

      return var4;
   }

   protected EntityHeaderSet<HT> doFindHeaders(int var1, int var2, Map<String, ?> var3, boolean var4) {
      List var5 = (List)this.getHibernateTemplate().execute(new bn(this, var4, var3, var1, var2));
      EntityHeaderSet var6 = new EntityHeaderSet();

      for (PersistentEntity var8 : var5) {
         var6.add(this.newHeader((ET)var8));
      }

      return var6;
   }

   protected Predicate doFindHeaderPredicate(Predicate var1, CriteriaBuilder var2, Root<ET> var3) {
      return var1;
   }

   protected HT newHeader(ET var1) {
      String var2 = null;
      if (var1 instanceof NamedEntity) {
         var2 = ((NamedEntity)var1).getName();
      }

      if (var2 == null) {
         var2 = "";
      }

      Object var3 = new EntityHeader(var1.getGoid(), this.getEntityType(), var2, "", var1.getVersion());
      if (var1 instanceof ZoneableEntity var4) {
         SecurityZone var5 = var4.getSecurityZone();
         ZoneableEntityHeader var6 = new ZoneableEntityHeader((EntityHeader)var3);

         ZoneableEntityHeader var10000;
         Goid var10001;
         label24: {
            try {
               var10000 = var6;
               if (var5 == null) {
                  var10001 = null;
                  break label24;
               }
            } catch (NullPointerException var7) {
               throw c(var7);
            }

            var10001 = var5.getGoid();
         }

         var10000.setSecurityZoneId(var10001);
         var3 = var6;
      }

      return (HT)var3;
   }

   protected void addFindAllCriteria(Criteria var1) {
   }

   protected Predicate addFindAllPredicate(Predicate var1, CriteriaBuilder var2, Root<ET> var3) {
      return var1;
   }

   @Transactional(readOnly = true)
   public Collection<ET> findAll() throws FindException {
      try {
         return (Collection<ET>)this.getHibernateTemplate().execute(new bo(this));
      } catch (HibernateException var2) {
         throw new FindException(var2.toString(), var2);
      }
   }

   @NotNull
   private TypedQuery<ET> a(@NotNull Session var1) {
      try {
         if (var1 == null) {
            a(10);
         }
      } catch (NullPointerException var6) {
         throw c(var6);
      }

      CriteriaBuilder var2 = var1.getCriteriaBuilder();
      CriteriaQuery var3 = var2.createQuery(this.getImpClass());
      Root var4 = var3.from(this.getImpClass());

      try {
         var3.select(var4).where(this.addFindAllPredicate(var2.conjunction(), var2, var4));
         Query var10000 = var1.createQuery(var3);
         if (var10000 == null) {
            a(11);
         }

         return var10000;
      } catch (NullPointerException var5) {
         throw c(var5);
      }
   }

   public Collection<ET> findAll(int var1, int var2) throws FindException {
      try {
         return (Collection<ET>)this.getHibernateTemplate().execute(new bp(this, var1, var2));
      } catch (HibernateException var4) {
         throw new FindException(var4.toString(), var4);
      }
   }

   @Transactional(propagation = Propagation.SUPPORTS)
   public String getAllQuery() {
      String var1 = this.getTableName();
      String var10001 = this.getImpClass().getName();
      String[] var2 = S;
      return var2[68] + var1 + var2[70] + var10001;
   }

   public void delete(Goid var1) throws DeleteException, FindException {
      try {
         this.getHibernateTemplate().execute(new ad(this, var1));
      } catch (Exception var3) {
         throw new DeleteException(var3.toString(), var3);
      }
   }

   public void delete(ET var1) throws DeleteException {
      try {
         this.getHibernateTemplate().execute(new ae(this, var1));
      } catch (DataAccessException var3) {
         throw new DeleteException(S[38], var3);
      }
   }

   @Transactional(propagation = Propagation.SUPPORTS)
   public boolean isCacheCurrent(Goid param1, int param2) {
      // $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: getfield com/l7tech/server/HibernateEntityManager.g Ljava/util/concurrent/locks/ReadWriteLock;
      // 04: invokeinterface java/util/concurrent/locks/ReadWriteLock.readLock ()Ljava/util/concurrent/locks/Lock; 1
      // 09: astore 3
      // 0a: aload 3
      // 0b: invokeinterface java/util/concurrent/locks/Lock.lock ()V 1
      // 10: aload 0
      // 11: getfield com/l7tech/server/HibernateEntityManager.h Ljava/util/Map;
      // 14: aload 1
      // 15: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 1a: checkcast java/lang/ref/WeakReference
      // 1d: astore 5
      // 1f: aload 3
      // 20: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 25: aconst_null
      // 26: astore 3
      // 27: aload 5
      // 29: ifnonnull 34
      // 2c: aconst_null
      // 2d: goto 3c
      // 30: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 33: athrow
      // 34: aload 5
      // 36: invokevirtual java/lang/ref/WeakReference.get ()Ljava/lang/Object;
      // 39: checkcast com/l7tech/server/ao
      // 3c: astore 4
      // 3e: aload 4
      // 40: ifnull 61
      // 43: aload 4
      // 45: getfield com/l7tech/server/ao.b J
      // 48: iload 2
      // 49: i2l
      // 4a: ladd
      // 4b: invokestatic java/lang/System.currentTimeMillis ()J
      // 4e: lcmp
      // 4f: iflt 61
      // 52: goto 59
      // 55: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 58: athrow
      // 59: bipush 1
      // 5a: goto 62
      // 5d: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 60: athrow
      // 61: bipush 0
      // 62: istore 6
      // 64: aload 3
      // 65: ifnull 75
      // 68: aload 3
      // 69: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 6e: goto 75
      // 71: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 74: athrow
      // 75: iload 6
      // 77: ireturn
      // 78: astore 7
      // 7a: aload 3
      // 7b: ifnull 8b
      // 7e: aload 3
      // 7f: invokeinterface java/util/concurrent/locks/Lock.unlock ()V 1
      // 84: goto 8b
      // 87: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 8a: athrow
      // 8b: aload 7
      // 8d: athrow
      // try (28 -> 41): 41 java/lang/NullPointerException
      // try (26 -> 36): 37 java/lang/NullPointerException
      // try (16 -> 20): 20 java/lang/NullPointerException
      // try (4 -> 45): 54 null
      // try (45 -> 49): 50 java/lang/NullPointerException
      // try (54 -> 55): 54 null
      // try (55 -> 59): 60 java/lang/NullPointerException
   }

   @Transactional(propagation = Propagation.SUPPORTS)
   public ET getCachedEntityByName(String var1, int var2) throws FindException {
      try {
         if (var1 == null) {
            throw new NullPointerException();
         }
      } catch (RuntimeException var16) {
         throw c(var16);
      }

      try {
         if (!NamedEntity.class.isAssignableFrom(this.getImpClass())) {
            throw new IllegalArgumentException(S[71]);
         }
      } catch (RuntimeException var21) {
         throw c(var21);
      }

      Lock var3 = this.g.readLock();

      try {
         var3.lock();
         WeakReference var4 = this.i.get(var1);
         var3.unlock();
         var3 = null;

         ao var10000;
         label110: {
            try {
               if (var4 == null) {
                  var10000 = null;
                  break label110;
               }
            } catch (RuntimeException var18) {
               throw c(var18);
            }

            var10000 = (ao)var4.get();
         }

         ao var5 = var10000;
         return (ET)(var5 != null ? this.a(var5, var2) : new TransactionTemplate(this.transactionManager).execute(new af(this, var1)));
      } catch (RuntimeException var19) {
         throw new FindException(ExceptionUtils.getMessage(var19), var19);
      } finally {
         try {
            if (var3 != null) {
               var3.unlock();
            }
         } catch (RuntimeException var17) {
            throw c(var17);
         }
      }
   }

   @Transactional(readOnly = true)
   public ET findByUniqueName(String var1) throws FindException {
      try {
         if (var1 == null) {
            throw new NullPointerException();
         }
      } catch (HibernateException var4) {
         throw c(var4);
      }

      try {
         if (!NamedEntity.class.isAssignableFrom(this.getImpClass())) {
            throw new IllegalArgumentException(S[82]);
         }
      } catch (HibernateException var5) {
         throw c(var5);
      }

      try {
         return (ET)this.getHibernateTemplate().execute(new bq(this, var1));
      } catch (HibernateException var3) {
         throw new FindException(S[17], var3);
      }
   }

   @Nullable
   protected ET initializeLazilyLoadedUniqueResult(TypedQuery<ET> var1) {
      PersistentEntity var2 = null;

      try {
         var2 = (PersistentEntity)var1.getSingleResult();
      } catch (NoResultException var4) {
      }

      PersistentEntity var3 = var2;
      this.initializeLazilyLoaded((ET)var3);
      return (ET)var3;
   }

   @Nullable
   protected ET getSingleResult(TypedQuery<ET> var1) {
      try {
         return (ET)var1.getSingleResult();
      } catch (NoResultException var3) {
         return null;
      }
   }

   protected void addFindByNameCriteria(Criteria var1) {
   }

   protected Predicate addFindByNamePredicate(Predicate var1, CriteriaBuilder var2, Root<ET> var3) {
      return var1;
   }

   @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
   public ET getCachedEntity(Goid var1, int var2) throws FindException {
      Lock var4 = this.g.readLock();

      try {
         var4.lock();
         WeakReference var6 = this.h.get(var1);
         var4.unlock();
         var4 = null;

         ao var10000;
         label106: {
            try {
               if (var6 == null) {
                  var10000 = null;
                  break label106;
               }
            } catch (FindException var16) {
               throw c(var16);
            }

            var10000 = (ao)var6.get();
         }

         ao var5 = var10000;
         if (var5 == null) {
            PersistentEntity var3 = (PersistentEntity)new TransactionTemplate(this.transactionManager).execute(new ag(this, var1));
            return var3 == null ? null : this.checkAndCache((ET)var3);
         } else {
            return this.a(var5, var2);
         }
      } finally {
         try {
            if (var4 != null) {
               var4.unlock();
            }
         } catch (FindException var15) {
            throw c(var15);
         }
      }
   }

   private ET a(ao<ET> var1, int var2) throws FindException {
      if (var1.b + var2 < System.currentTimeMillis()) {
         Integer var3 = this.getVersion(var1.a.getGoid());

         try {
            if (var3 == null) {
               this.cacheRemove(var1.a);
               return null;
            }
         } catch (FindException var5) {
            throw c(var5);
         }

         if (var3 != var1.c) {
            PersistentEntity var4 = this.findByPrimaryKey(var1.a.getGoid());

            try {
               if (var4 == null) {
                  return null;
               }
            } catch (FindException var6) {
               throw c(var6);
            }

            return this.checkAndCache((ET)var4);
         }
      }

      return var1.a;
   }

   protected void cacheRemove(PersistentEntity var1) {
      Lock var2 = this.g.writeLock();
      var2.lock();

      try {
         this.h.remove(var1.getGoid());
         if (var1 instanceof NamedEntity) {
            this.i.remove(((NamedEntity)var1).getName());
         }

         this.removedFromCache(var1);
      } finally {
         var2.unlock();
      }
   }

   protected void removedFromCache(PersistentEntity var1) {
   }

   protected void addedToCache(PersistentEntity var1) {
   }

   protected void initializeLazilyLoaded(ET var1) {
   }

   protected final <RT> RT doWithCacheWriteLock(Callable<RT> var1) throws Exception {
      return this.a(this.g.writeLock(), var1);
   }

   protected final <RT> RT doWithCacheReadLock(Callable<RT> var1) throws Exception {
      return this.a(this.g.readLock(), var1);
   }

   private void a(Object 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 0
      // 01: getfield com/l7tech/server/HibernateEntityManager.applicationContext Lorg/springframework/context/ApplicationContext;
      // 04: ifnull 4e
      // 07: aload 1
      // 08: instanceof com/l7tech/objectmodel/Entity
      // 0b: ifeq 4e
      // 0e: goto 15
      // 11: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 14: athrow
      // 15: aload 1
      // 16: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 19: invokestatic com/l7tech/objectmodel/EntityType.findTypeByEntity (Ljava/lang/Class;)Lcom/l7tech/objectmodel/EntityType;
      // 1c: astore 2
      // 1d: aload 2
      // 1e: ifnull 4b
      // 21: aload 2
      // 22: invokevirtual com/l7tech/objectmodel/EntityType.isAllowSpecificScope ()Z
      // 25: ifeq 4b
      // 28: goto 2f
      // 2b: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2e: athrow
      // 2f: aload 0
      // 30: getfield com/l7tech/server/HibernateEntityManager.applicationContext Lorg/springframework/context/ApplicationContext;
      // 33: new com/l7tech/server/event/RoleAwareEntityDeletionEvent
      // 36: dup
      // 37: aload 0
      // 38: aload 1
      // 39: checkcast com/l7tech/objectmodel/Entity
      // 3c: invokespecial com/l7tech/server/event/RoleAwareEntityDeletionEvent.<init> (Ljava/lang/Object;Lcom/l7tech/objectmodel/Entity;)V
      // 3f: invokeinterface org/springframework/context/ApplicationContext.publishEvent (Lorg/springframework/context/ApplicationEvent;)V 2
      // 44: goto 4b
      // 47: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 4a: athrow
      // 4b: goto 5e
      // 4e: aload 0
      // 4f: getfield com/l7tech/server/HibernateEntityManager.e Ljava/util/logging/Logger;
      // 52: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 55: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 58: bipush 6
      // 5a: aaload
      // 5b: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;)V
      // 5e: return
      // try (0 -> 6): 7 java/lang/NullPointerException
      // try (13 -> 18): 19 java/lang/NullPointerException
      // try (15 -> 30): 31 java/lang/NullPointerException
   }

   private <RT> RT a(Lock var1, Callable<RT> var2) throws Exception {
      try {
         var1.lock();
         return (RT)var2.call();
      } finally {
         var1.unlock();
      }
   }

   // $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!)
   protected ET checkAndCache(ET var1) throws FindException {
      Goid var2 = var1.getGoid();
      ao var3 = null;
      Lock var4 = this.g.readLock();

      try {
         var4.lock();
         WeakReference var5 = this.h.get(var2);

         ao var10000;
         label170: {
            try {
               if (var5 == null) {
                  var10000 = null;
                  break label170;
               }
            } catch (FindException var27) {
               throw c(var27);
            }

            var10000 = (ao)var5.get();
         }

         var3 = var10000;
      } finally {
         try {
            if (var4 != null) {
               var4.unlock();
            }
         } catch (FindException var25) {
            throw c(var25);
         }
      }

      Lock var30 = this.g.writeLock();
      boolean var15 = false /* VF: Semaphore variable */;

      try {
         var15 = true;
         var30.lock();
         if (var3 == null) {
            var3 = new ao();
            WeakReference var6 = new WeakReference<>(var3);

            try {
               this.h.put(var2, var6);
               if (var1 instanceof NamedEntity) {
                  this.i.put(((NamedEntity)var1).getName(), var6);
               }
            } catch (FindException var23) {
               throw c(var23);
            }
         }

         var3.a = (ET)var1;
         var3.c = var1.getVersion();
         var3.b = System.currentTimeMillis();
         this.addedToCache(var1);
         var15 = false;
      } finally {
         if (var15) {
            try {
               if (var30 != null) {
                  var30.unlock();
               }
            } catch (FindException var24) {
               throw c(var24);
            }
         }
      }

      if (var30 != null) {
         var30.unlock();
      }

      return (ET)var1;
   }

   protected ET findByPrimaryKey(Class param1, Goid param2) throws FindException {
      // $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: invokevirtual com/l7tech/server/HibernateEntityManager.getHibernateTemplate ()Lorg/springframework/orm/hibernate5/HibernateTemplate;
      // 04: new com/l7tech/server/bs
      // 07: dup
      // 08: aload 0
      // 09: aload 1
      // 0a: aload 2
      // 0b: invokespecial com/l7tech/server/bs.<init> (Lcom/l7tech/server/HibernateEntityManager;Ljava/lang/Class;Lcom/l7tech/objectmodel/Goid;)V
      // 0e: invokevirtual org/springframework/orm/hibernate5/HibernateTemplate.execute (Lorg/springframework/orm/hibernate5/HibernateCallback;)Ljava/lang/Object;
      // 11: checkcast com/l7tech/objectmodel/PersistentEntity
      // 14: areturn
      // 15: astore 3
      // 16: aload 3
      // 17: ldc org/hibernate/ObjectNotFoundException
      // 19: invokestatic com/l7tech/util/ExceptionUtils.causedBy (Ljava/lang/Throwable;Ljava/lang/Class;)Z
      // 1c: ifne 2f
      // 1f: aload 3
      // 20: ldc org/hibernate/ObjectDeletedException
      // 22: invokestatic com/l7tech/util/ExceptionUtils.causedBy (Ljava/lang/Throwable;Ljava/lang/Class;)Z
      // 25: ifeq 35
      // 28: goto 2f
      // 2b: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2e: athrow
      // 2f: aconst_null
      // 30: areturn
      // 31: invokestatic com/l7tech/server/HibernateEntityManager.c (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 34: athrow
      // 35: new com/l7tech/objectmodel/FindException
      // 38: dup
      // 39: getstatic com/l7tech/server/HibernateEntityManager.S [Ljava/lang/String;
      // 3c: bipush 60
      // 3e: aaload
      // 3f: aload 3
      // 40: invokespecial com/l7tech/objectmodel/FindException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
      // 43: athrow
      // try (0 -> 10): 11 java/lang/Exception
      // try (12 -> 20): 21 java/lang/Exception
      // try (16 -> 25): 25 java/lang/Exception
   }

   protected boolean findAndDelete(Goid var1) throws FindException, DeleteException {
      boolean var2 = false;
      PersistentEntity var3 = this.findByPrimaryKey(var1);
      if (var3 != null) {
         this.delete((ET)var3);
         var2 = true;
      }

      return var2;
   }

   protected List<ET> findByPropertyMaybeNull(String var1, Object var2) throws FindException {
      try {
         return (List<ET>)this.getHibernateTemplate().execute(new bt(this, var2, var1));
      } catch (DataAccessException var4) {
         throw new FindException(S[33], var4);
      }
   }

   protected final <R> R doReadOnlyWork(UnaryThrows<? extends R, Connection, SQLException> var1) throws SQLException {
      return (R)this.getHibernateTemplate().execute(new bu(this, var1));
   }

   protected UniqueType getUniqueType() {
      return UniqueType.NAME;
   }

   @Transactional(propagation = Propagation.SUPPORTS)
   public String getTableName() {
      String var1 = this.j;
      if (var1 == null) {
         Class var2 = this.getImpClass();
         Table var3 = var2.getAnnotation(Table.class);

         try {
            if (var3 == null) {
               throw new IllegalStateException(S[29]);
            }
         } catch (NullPointerException var4) {
            throw c(var4);
         }

         this.j = var1 = var3.name();
      }

      return var1;
   }

   @Transactional(propagation = Propagation.SUPPORTS)
   public Class<? extends Entity> getInterfaceClass() {
      return this.getImpClass();
   }

   public void setTransactionManager(PlatformTransactionManager var1) {
      this.transactionManager = var1;
   }

   @Contract("_ -> fail")
   public final <E extends ApplicationEvent> void onApplicationEvent(E var1) {
      throw new UnsupportedOperationException(S[56]);
   }

   static {
      String[] var5 = new String[85];
      int var3 = 0;
      String var2 = " tT/!\u0017,\u0018CBrM\u0007rjiMxJ\u001d=b-fr\u001e\u001a&eeP=\r.Ds\u0003\u0017r1 \u0019{\u0005\u001a6\u0016CLi\u0006\u0017<+t\u0003z\u0003\u001d6,eMh\u0003\u0007;is\u001bCLi\u0006\u0017<+t\u0003z\u0003\u001d6,uMu\u001b\u00067,eMh\u0003\u0007+\u0007sFo\u0019\u001a=bmUM}\b\u001f7,tL<\u001a\u00060`iPtJ!=`ebk\u000b\u00017InWu\u001e\n\u0016ilFh\u0003\u001c<IvFr\u001eS0icBi\u0019\u0016rcbIy\t\u0007res\u0003r\u0005\u0007rmn\u0003Y\u0004\u0007;xy\u0003s\u0018S3|pOu\t\u0012&eoM_\u0005\u001d&ixW<\u0003\u0000rbuOpD\u0006 Vo\u000f\u0017r\u001auPy)\u0006 ~eMh%\u0001\u001d|eMR\u000f\u0004\u0001isPu\u0005\u001d\u0012:\u0003j\u000f\u0001!eoM<\u0007\u001a!aaW\u007f\u0002\u0007vFn\u0019\u001a=b\u001cgFh9\u0016>icWM\u001f\u0016 uWKy\u0018\u0016\u0002~eGu\t\u0012&i\u0012cQy\u000b\u00077JiMx+\u001f>]uFn\u0013\u0004rLs\u001e\u0005FqS'S\u0004sBj\u000f\u0013EQn\u0005\u0001rjiMx\u0003\u001d5,cLi\u0004\u0007\u001bCLi\u0006\u0017<+t\u0003z\u0003\u001d6,uMu\u001b\u00067,eMh\u0003\u0007+>AQ{\u001f\u001e7bt\u0003z\u0005\u0001rLNLh$\u0006>` S}\u0018\u0012?itFnJTw\u007f'\u0003s\fSw\u007f.\u0006oJ\u001e'\u007ft\u0003r\u0005\u0007rne\u0003r\u001f\u001f><CBr\u0004\u001c&,sBj\u000fS3b Fr\u001e\u001a&u Tu\u001e\u001brmn\u0003u\u000eS;b Wt\u000fS isFn\u001c\u00166,rBr\r\u0016|,Ig&J(cLqE\u001fexe@tE\u00007~vFnE;;neQr\u000b\u00077InWu\u001e\n\u001fmnB{\u000f\u0001\f En\u0005\u001er}uFn\u0013R\n jRJ0\u001eMSp<\u0012cQy\u000b\u00077JiMx+\u001f>]uFn\u0013\u0010CLi\u0006\u0017<+t\u0003i\u001a\u00173xe\u0003\r.Ds\u0003\u0017r1 \u0019{\u0005\u001a6\f,\u0003r\u0005\u0007rm ds\u0003\u0017\u001eUMu\u001b\u00067,aWh\u0018\u001a0ytF<\u0007\u0012\",wBoJ\u0016?|tZ\"uMu\u001b\u00067\\rLl\u000f\u0001&uNBq\u000fS1mnMs\u001eS0i Fq\u001a\u0007+%INl\u0006\u0016?inW}\u001e\u001a=b @p\u000b\u0000!,iP<\u0004\u001c&,aMr\u0005\u00073xeG(cLqE\u001fexe@tE\u00007~vFnE;;neQr\u000b\u00077InWu\u001e\n\u001fmnB{\u000f\u0001\u0002\\\r\u0002iG\u0015CLi\u0006\u0017<+t\u0003z\u0003\u001d6,cFn\u001e[!%\u0007SfP/0\u0006,\u0002)\u0003[CBr\u0004\u001c&,sBj\u000fS3b Fr\u001e\u001a&u Tu\u001e\u001brm Pl\u000f\u0010;ji@<#7|,WBoJ\u0006<mbOyJ\u0007=,pQy\u0019\u0016 ze\u0003h\u0002\u0016rinWu\u001e\nrED\u0003z\u0005\u0001rinWu\u001e\nh,\u0007.Ds\u0003\u0017~,\u0016CLi\u0006\u0017<+t\u0003x\u000f\u001f7xe\u0003y\u0004\u0007;xy-cLqD\u001fexe@tD\u00007~vFnD\u001b;neQr\u000b\u00077\"uPy%\u0003&emJf\u000f\u0017\u0011cuMh\u0005 Br\u000eS\u0002iG'OWt\u000f\u0001rinWu\u001e\nrixJo\u001e\u0000r{iWtJ\u0007:i Du\u001c\u0016<,iG&J\u0005FqS'S\u001cgFh9\u0016>icWM\u001f\u0016 uWKy\u0018\u0016\u0002~eGu\t\u0012&i\u0015e[l\u000b\u001d6BePh\u000f\u0017\u0013xtQu\b\u0006&i\u0016GLhJ\u0006<ixSy\t\u00077h Eu\u000f\u001f6\u007f \ffJr\u000e>3xcKu\u0004\u0014\u000eCLi\u0006\u0017<+t\u0003o\u000b\u00057,\u0007SfP/0\u0006,\u000e.Uy\u0018\u0000;cn\u0003Z8<\u001f,\u0002,\u0003\u0004nBq\u000f\u000f Ni\u0019\u0007rne\u0003i\u0004\u001a#ye\u001cSBj\u0003\u001d5,{\u0013aJ[)=}\n<\u001d\u001a&d JxJ\b`q\u0004gLu\u000e\u0095TQ}\u0004\u00003otJs\u0004\u0012>,HJ~\u000f\u0001<mtFY\u0004\u0007;xyn}\u0004\u00125ir\u0003o\u0002\u001c'`d\u0003r\u0005\u0007r`iPh\u000f\u001drxo\u0003}\u001a\u0003>ecBh\u0003\u001c<,eUy\u0004\u0007!,sJr\t\u0016r_pQu\u0004\u0014rxrBr\u0019\u00121xiLrJ\u0012 i Fd\u001a\u0016<\u007fiUyJ\u0012<h @}\u0004S>iaG<\u001e\u001cr|oLnJ\u00037~fLn\u0007\u0012<oe\r\u0004gLu\u000e\n jRJ0\u001eMSp<\u0007 tT/!\u0017,\u0012DBh\u000bS3ocFo\u0019S7~rLnJ\u000e.Uy\u0018\u0000;cn\u0003Z8<\u001f,6CLi\u0006\u0017<+t\u0003z\u0003\u001d6,pQy\u001c\u001a=ys\u0003j\u000f\u0001!eoM<\u001e\u001crohF\u007f\u0001S4cr\u0003j\u000f\u0001!eoMu\u0004\u00145CLi\u0006\u0017<+t\u0003z\u0003\u001d6,pQy\u001c\u001a=ys\u0003j\u000f\u0001!eoM4\u0019Zrxo\u0003\u007f\u0002\u00161g Vr\u0003\u0002'inFo\u0019\u0015NL<9\u0016!\u007fiLr,\u00121xoQeJ\u00007x\u0010SBj\u0003\u001d5,{\u0013aJ[)=}\n]EQn\u0005\u0001r\u007faUu\u0004\u0014rinWu\u001e\nr{iWtJ\u0012r\u007fpF\u007f\u0003\u0015;o jXDS\u0006de\u0003o\u000b\u00057,mFh\u0002\u001c6,sBj\u000f\u0017r{iWtJ\u0012rhiEz\u000f\u00017bt\u0003u\u000e]rIxSy\t\u00077h:\u0003\u0004mBl\u0019\u0005fQs\u0007S\u000eCLi\u0006\u0017<+t\u0003o\u000b\u00057,\n JrJ\u0010>msP<.TKu\u0019S\u001fmnB{\u000f\u0001u\u007f Fr\u001e\u001a&eeP<\u000b\u00017,nLhJ=3aeGY\u0004\u0007;xiFoK>UMu\u001b\u00067XySyJ\u001a!,OwT/!~,bVhJ\u00147xUMu\u001b\u00067OoMo\u001e\u00013enWoBZrboW<\u0005\u00057~rJx\u000e\u0016<\u0006eMh\u0003\u0007+\u0007EMh\u0003\u0007+,5CLi\u0006\u0017<+t\u0003z\u0003\u001d6,pQy\u001c\u001a=ys\u0003j\u000f\u0001!eoM4\u0019Zrxo\u0003\u007f\u0002\u00161g Vr\u0003\u0002'inFo\u0019\u0012PQu\u0007\u0012 u Hy\u0013S%ms\u0003}J\n.\u0003Y\u0004\u0007;xy\u0019<\"uMu\u001b\u00067\\rLl\u000f\u0001&uNBq\u000fS1mnMs\u001eS0i Fq\u001a\u0007+\u0016EQn\u0005\u0001rjiMx\u0003\u001d5,eMh\u0003\u0007;is\u0004nBq\u000f3UMu\u001b\u00067XySyJ\u001a!,NbQ/_rnuW<\u000f\u001d&etZ<\u0003\u0000rboW<\u000bS\u001cmmFx/\u001d&etZ.TKu\u0019S\u001fmnB{\u000f\u0001u\u007f Fr\u001e\u001a&eeP<\u000b\u00017,nLhJ=3aeGY\u0004\u0007;xiFoK";
      int var4 = " tT/!\u0017,\u0018CBrM\u0007rjiMxJ\u001d=b-fr\u001e\u001a&eeP=\r.Ds\u0003\u0017r1 \u0019{\u0005\u001a6\u0016CLi\u0006\u0017<+t\u0003z\u0003\u001d6,eMh\u0003\u0007;is\u001bCLi\u0006\u0017<+t\u0003z\u0003\u001d6,uMu\u001b\u00067,eMh\u0003\u0007+\u0007sFo\u0019\u001a=bmUM}\b\u001f7,tL<\u001a\u00060`iPtJ!=`ebk\u000b\u00017InWu\u001e\n\u0016ilFh\u0003\u001c<IvFr\u001eS0icBi\u0019\u0016rcbIy\t\u0007res\u0003r\u0005\u0007rmn\u0003Y\u0004\u0007;xy\u0003s\u0018S3|pOu\t\u0012&eoM_\u0005\u001d&ixW<\u0003\u0000rbuOpD\u0006 Vo\u000f\u0017r\u001auPy)\u0006 ~eMh%\u0001\u001d|eMR\u000f\u0004\u0001isPu\u0005\u001d\u0012:\u0003j\u000f\u0001!eoM<\u0007\u001a!aaW\u007f\u0002\u0007vFn\u0019\u001a=b\u001cgFh9\u0016>icWM\u001f\u0016 uWKy\u0018\u0016\u0002~eGu\t\u0012&i\u0012cQy\u000b\u00077JiMx+\u001f>]uFn\u0013\u0004rLs\u001e\u0005FqS'S\u0004sBj\u000f\u0013EQn\u0005\u0001rjiMx\u0003\u001d5,cLi\u0004\u0007\u001bCLi\u0006\u0017<+t\u0003z\u0003\u001d6,uMu\u001b\u00067,eMh\u0003\u0007+>AQ{\u001f\u001e7bt\u0003z\u0005\u0001rLNLh$\u0006>` S}\u0018\u0012?itFnJTw\u007f'\u0003s\fSw\u007f.\u0006oJ\u001e'\u007ft\u0003r\u0005\u0007rne\u0003r\u001f\u001f><CBr\u0004\u001c&,sBj\u000fS3b Fr\u001e\u001a&u Tu\u001e\u001brmn\u0003u\u000eS;b Wt\u000fS isFn\u001c\u00166,rBr\r\u0016|,Ig&J(cLqE\u001fexe@tE\u00007~vFnE;;neQr\u000b\u00077InWu\u001e\n\u001fmnB{\u000f\u0001\f En\u0005\u001er}uFn\u0013R\n jRJ0\u001eMSp<\u0012cQy\u000b\u00077JiMx+\u001f>]uFn\u0013\u0010CLi\u0006\u0017<+t\u0003i\u001a\u00173xe\u0003\r.Ds\u0003\u0017r1 \u0019{\u0005\u001a6\f,\u0003r\u0005\u0007rm ds\u0003\u0017\u001eUMu\u001b\u00067,aWh\u0018\u001a0ytF<\u0007\u0012\",wBoJ\u0016?|tZ\"uMu\u001b\u00067\\rLl\u000f\u0001&uNBq\u000fS1mnMs\u001eS0i Fq\u001a\u0007+%INl\u0006\u0016?inW}\u001e\u001a=b @p\u000b\u0000!,iP<\u0004\u001c&,aMr\u0005\u00073xeG(cLqE\u001fexe@tE\u00007~vFnE;;neQr\u000b\u00077InWu\u001e\n\u001fmnB{\u000f\u0001\u0002\\\r\u0002iG\u0015CLi\u0006\u0017<+t\u0003z\u0003\u001d6,cFn\u001e[!%\u0007SfP/0\u0006,\u0002)\u0003[CBr\u0004\u001c&,sBj\u000fS3b Fr\u001e\u001a&u Tu\u001e\u001brm Pl\u000f\u0010;ji@<#7|,WBoJ\u0006<mbOyJ\u0007=,pQy\u0019\u0016 ze\u0003h\u0002\u0016rinWu\u001e\nrED\u0003z\u0005\u0001rinWu\u001e\nh,\u0007.Ds\u0003\u0017~,\u0016CLi\u0006\u0017<+t\u0003x\u000f\u001f7xe\u0003y\u0004\u0007;xy-cLqD\u001fexe@tD\u00007~vFnD\u001b;neQr\u000b\u00077\"uPy%\u0003&emJf\u000f\u0017\u0011cuMh\u0005 Br\u000eS\u0002iG'OWt\u000f\u0001rinWu\u001e\nrixJo\u001e\u0000r{iWtJ\u0007:i Du\u001c\u0016<,iG&J\u0005FqS'S\u001cgFh9\u0016>icWM\u001f\u0016 uWKy\u0018\u0016\u0002~eGu\t\u0012&i\u0015e[l\u000b\u001d6BePh\u000f\u0017\u0013xtQu\b\u0006&i\u0016GLhJ\u0006<ixSy\t\u00077h Eu\u000f\u001f6\u007f \ffJr\u000e>3xcKu\u0004\u0014\u000eCLi\u0006\u0017<+t\u0003o\u000b\u00057,\u0007SfP/0\u0006,\u000e.Uy\u0018\u0000;cn\u0003Z8<\u001f,\u0002,\u0003\u0004nBq\u000f\u000f Ni\u0019\u0007rne\u0003i\u0004\u001a#ye\u001cSBj\u0003\u001d5,{\u0013aJ[)=}\n<\u001d\u001a&d JxJ\b`q\u0004gLu\u000e\u0095TQ}\u0004\u00003otJs\u0004\u0012>,HJ~\u000f\u0001<mtFY\u0004\u0007;xyn}\u0004\u00125ir\u0003o\u0002\u001c'`d\u0003r\u0005\u0007r`iPh\u000f\u001drxo\u0003}\u001a\u0003>ecBh\u0003\u001c<,eUy\u0004\u0007!,sJr\t\u0016r_pQu\u0004\u0014rxrBr\u0019\u00121xiLrJ\u0012 i Fd\u001a\u0016<\u007fiUyJ\u0012<h @}\u0004S>iaG<\u001e\u001cr|oLnJ\u00037~fLn\u0007\u0012<oe\r\u0004gLu\u000e\n jRJ0\u001eMSp<\u0007 tT/!\u0017,\u0012DBh\u000bS3ocFo\u0019S7~rLnJ\u000e.Uy\u0018\u0000;cn\u0003Z8<\u001f,6CLi\u0006\u0017<+t\u0003z\u0003\u001d6,pQy\u001c\u001a=ys\u0003j\u000f\u0001!eoM<\u001e\u001crohF\u007f\u0001S4cr\u0003j\u000f\u0001!eoMu\u0004\u00145CLi\u0006\u0017<+t\u0003z\u0003\u001d6,pQy\u001c\u001a=ys\u0003j\u000f\u0001!eoM4\u0019Zrxo\u0003\u007f\u0002\u00161g Vr\u0003\u0002'inFo\u0019\u0015NL<9\u0016!\u007fiLr,\u00121xoQeJ\u00007x\u0010SBj\u0003\u001d5,{\u0013aJ[)=}\n]EQn\u0005\u0001r\u007faUu\u0004\u0014rinWu\u001e\nr{iWtJ\u0012r\u007fpF\u007f\u0003\u0015;o jXDS\u0006de\u0003o\u000b\u00057,mFh\u0002\u001c6,sBj\u000f\u0017r{iWtJ\u0012rhiEz\u000f\u00017bt\u0003u\u000e]rIxSy\t\u00077h:\u0003\u0004mBl\u0019\u0005fQs\u0007S\u000eCLi\u0006\u0017<+t\u0003o\u000b\u00057,\n JrJ\u0010>msP<.TKu\u0019S\u001fmnB{\u000f\u0001u\u007f Fr\u001e\u001a&eeP<\u000b\u00017,nLhJ=3aeGY\u0004\u0007;xiFoK>UMu\u001b\u00067XySyJ\u001a!,OwT/!~,bVhJ\u00147xUMu\u001b\u00067OoMo\u001e\u00013enWoBZrboW<\u0005\u00057~rJx\u000e\u0016<\u0006eMh\u0003\u0007+\u0007EMh\u0003\u0007+,5CLi\u0006\u0017<+t\u0003z\u0003\u001d6,pQy\u001c\u001a=ys\u0003j\u000f\u0001!eoM4\u0019Zrxo\u0003\u007f\u0002\u00161g Vr\u0003\u0002'inFo\u0019\u0012PQu\u0007\u0012 u Hy\u0013S%ms\u0003}J\n.\u0003Y\u0004\u0007;xy\u0019<\"uMu\u001b\u00067\\rLl\u000f\u0001&uNBq\u000fS1mnMs\u001eS0i Fq\u001a\u0007+\u0016EQn\u0005\u0001rjiMx\u0003\u001d5,eMh\u0003\u0007;is\u0004nBq\u000f3UMu\u001b\u00067XySyJ\u001a!,NbQ/_rnuW<\u000f\u001d&etZ<\u0003\u0000rboW<\u000bS\u001cmmFx/\u001d&etZ.TKu\u0019S\u001fmnB{\u000f\u0001u\u007f Fr\u001e\u001a&eeP<\u000b\u00017,nLhJ=3aeGY\u0004\u0007;xiFoK"
         .length();
      char var1 = 7;
      int var8 = -1;

      label39:
      while (true) {
         byte var10000 = 33;
         String var10001 = var2.substring(++var8, var8 + var1);
         byte var10002 = -1;

         while (true) {
            String var9 = a(var10000, c(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var8 += var1) >= var4) {
                     S = var5;
                     String[] var10 = S;
                     F_GOID = S[57];
                     F_NAME = var10[52];
                     F_VERSION = var10[10];

                     label26: {
                        try {
                           if (!HibernateEntityManager.class.desiredAssertionStatus()) {
                              var11 = true;
                              break label26;
                           }
                        } catch (NullPointerException var6) {
                           throw c(var6);
                        }

                        var11 = false;
                     }

                     l = var11;
                     NULL = new Object();
                     NOTNULL = new Object();
                     f = ConfigFactory.getBooleanProperty(S[39], true);
                     return;
                  }

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

                  var2 = "~SM \u0003\u0019^R=O19\u0004]Z=\u0007'cIA\u001epW'9L\\Qi\u0002&(\u0018GLs\u0002:8\u0000^\u0019}rW8)\u0002\u0015J=A<(\u000fY\u001ehL=<\u0019WPxQ'";
                  var4 = "~SM \u0003\u0019^R=O19\u0004]Z=\u0007'cIA\u001epW'9L\\Qi\u0002&(\u0018GLs\u0002:8\u0000^\u0019}rW8)\u0002\u0015J=A<(\u000fY\u001ehL=<\u0019WPxQ'"
                     .length();
                  var1 = '*';
                  var8 = -1;
            }

            var10000 = 31;
            var10001 = var2.substring(++var8, var8 + var1);
            var10002 = 0;
         }
      }
   }

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

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

      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 -> 33;
            case 1 -> 2;
            case 2 -> 61;
            case 3 -> 75;
            case 4 -> 82;
            case 5 -> 115;
            default -> 45;
         });
      }

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