package com.l7tech.server.communityschemas;

import com.l7tech.common.io.XmlUtil;
import com.l7tech.common.io.XmlUtil.BadSchemaException;
import com.l7tech.message.Message;
import com.l7tech.message.ValidationTarget;
import com.l7tech.server.util.AbstractReferenceCounted;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.HexUtils;
import com.l7tech.util.InvalidDocumentFormatException;
import java.io.IOException;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.Lock;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.transform.dom.DOMSource;
import javax.xml.validation.Schema;
import javax.xml.validation.Validator;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

final class p extends AbstractReferenceCounted<SchemaHandle> {
   private static final Logger c;
   private static Map<String, Long> d;
   private static final AtomicBoolean e;
   private static final ConcurrentMap<WeakReference<p>, Object> f;
   private final WeakReference<p> g;
   private final String h;
   private final String[] i;
   private final String j;
   private final String k;
   private final String l;
   private final SchemaManagerImpl m;
   private final String n;
   private final boolean o;
   private final Map<String, SchemaHandle> p;
   private final Map<String, SchemaHandle> q;
   private final Map<String, SchemaHandle> r;
   private final Map<String, Reference<p>> s;
   private final Schema t;
   private final long u;
   private boolean v;
   private final AtomicLong w;
   private static final String[] x;

   p(
      String param1,
      String param2,
      String param3,
      String param4,
      Element param5,
      Schema param6,
      SchemaManagerImpl param7,
      Map<String, SchemaHandle> param8,
      Map<String, SchemaHandle> param9,
      boolean param10
   ) throws IOException {
      // $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: invokespecial com/l7tech/server/util/AbstractReferenceCounted.<init> ()V
      // 004: aload 0
      // 005: new java/lang/ref/WeakReference
      // 008: dup
      // 009: aload 0
      // 00a: invokespecial java/lang/ref/WeakReference.<init> (Ljava/lang/Object;)V
      // 00d: putfield com/l7tech/server/communityschemas/p.g Ljava/lang/ref/WeakReference;
      // 010: aload 0
      // 011: new java/util/WeakHashMap
      // 014: dup
      // 015: invokespecial java/util/WeakHashMap.<init> ()V
      // 018: putfield com/l7tech/server/communityschemas/p.s Ljava/util/Map;
      // 01b: aload 0
      // 01c: invokestatic java/lang/System.currentTimeMillis ()J
      // 01f: putfield com/l7tech/server/communityschemas/p.u J
      // 022: aload 0
      // 023: bipush 1
      // 024: putfield com/l7tech/server/communityschemas/p.v Z
      // 027: aload 0
      // 028: new java/util/concurrent/atomic/AtomicLong
      // 02b: dup
      // 02c: aload 0
      // 02d: getfield com/l7tech/server/communityschemas/p.u J
      // 030: invokespecial java/util/concurrent/atomic/AtomicLong.<init> (J)V
      // 033: putfield com/l7tech/server/communityschemas/p.w Ljava/util/concurrent/atomic/AtomicLong;
      // 036: aload 6
      // 038: ifnull 086
      // 03b: aload 3
      // 03c: ifnull 086
      // 03f: aload 4
      // 041: ifnull 086
      // 044: goto 04b
      // 047: invokestatic com/l7tech/server/communityschemas/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 04a: athrow
      // 04b: aload 5
      // 04d: ifnull 086
      // 050: goto 057
      // 053: invokestatic com/l7tech/server/communityschemas/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 056: athrow
      // 057: aload 8
      // 059: ifnull 086
      // 05c: goto 063
      // 05f: invokestatic com/l7tech/server/communityschemas/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 062: athrow
      // 063: aload 9
      // 065: ifnull 086
      // 068: goto 06f
      // 06b: invokestatic com/l7tech/server/communityschemas/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 06e: athrow
      // 06f: aload 7
      // 071: ifnull 086
      // 074: goto 07b
      // 077: invokestatic com/l7tech/server/communityschemas/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 07a: athrow
      // 07b: aload 2
      // 07c: ifnonnull 092
      // 07f: goto 086
      // 082: invokestatic com/l7tech/server/communityschemas/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 085: athrow
      // 086: new java/lang/NullPointerException
      // 089: dup
      // 08a: invokespecial java/lang/NullPointerException.<init> ()V
      // 08d: athrow
      // 08e: invokestatic com/l7tech/server/communityschemas/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 091: athrow
      // 092: aload 0
      // 093: iload 10
      // 095: putfield com/l7tech/server/communityschemas/p.o Z
      // 098: aload 0
      // 099: aload 1
      // 09a: putfield com/l7tech/server/communityschemas/p.h Ljava/lang/String;
      // 09d: aload 0
      // 09e: aload 2
      // 09f: putfield com/l7tech/server/communityschemas/p.j Ljava/lang/String;
      // 0a2: aload 0
      // 0a3: aload 6
      // 0a5: putfield com/l7tech/server/communityschemas/p.t Ljavax/xml/validation/Schema;
      // 0a8: aload 0
      // 0a9: aload 3
      // 0aa: invokevirtual java/lang/String.intern ()Ljava/lang/String;
      // 0ad: putfield com/l7tech/server/communityschemas/p.k Ljava/lang/String;
      // 0b0: aload 0
      // 0b1: aload 4
      // 0b3: putfield com/l7tech/server/communityschemas/p.l Ljava/lang/String;
      // 0b6: aload 0
      // 0b7: aload 7
      // 0b9: putfield com/l7tech/server/communityschemas/p.m Lcom/l7tech/server/communityschemas/SchemaManagerImpl;
      // 0bc: aload 0
      // 0bd: aload 8
      // 0bf: putfield com/l7tech/server/communityschemas/p.p Ljava/util/Map;
      // 0c2: aload 0
      // 0c3: aload 9
      // 0c5: putfield com/l7tech/server/communityschemas/p.q Ljava/util/Map;
      // 0c8: aload 0
      // 0c9: new java/util/HashMap
      // 0cc: dup
      // 0cd: invokespecial java/util/HashMap.<init> ()V
      // 0d0: putfield com/l7tech/server/communityschemas/p.r Ljava/util/Map;
      // 0d3: aload 0
      // 0d4: getfield com/l7tech/server/communityschemas/p.r Ljava/util/Map;
      // 0d7: aload 8
      // 0d9: invokeinterface java/util/Map.putAll (Ljava/util/Map;)V 2
      // 0de: aload 0
      // 0df: getfield com/l7tech/server/communityschemas/p.r Ljava/util/Map;
      // 0e2: aload 9
      // 0e4: invokeinterface java/util/Map.putAll (Ljava/util/Map;)V 2
      // 0e9: aload 0
      // 0ea: aload 2
      // 0eb: invokestatic com/l7tech/server/communityschemas/p.a (Ljava/lang/String;)J
      // 0ee: aload 2
      // 0ef: astore 11
      // 0f1: lstore 12
      // 0f3: ldc "{"
      // 0f5: lload 12
      // 0f7: getstatic com/l7tech/server/communityschemas/p.x [Ljava/lang/String;
      // 0fa: bipush 7
      // 0fc: aaload
      // 0fd: aload 11
      // 0ff: invokedynamic makeConcatWithConstants (Ljava/lang/String;JLjava/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" ]
      // 104: putfield com/l7tech/server/communityschemas/p.n Ljava/lang/String;
      // 107: aload 0
      // 108: aload 0
      // 109: aload 5
      // 10b: aload 9
      // 10d: invokeinterface java/util/Map.values ()Ljava/util/Collection; 1
      // 112: invokevirtual com/l7tech/server/communityschemas/p.a (Lorg/w3c/dom/Element;Ljava/util/Collection;)[Ljava/lang/String;
      // 115: putfield com/l7tech/server/communityschemas/p.i [Ljava/lang/String;
      // 118: return
      // try (28 -> 32): 33 java/io/IOException
      // try (30 -> 37): 38 java/io/IOException
      // try (35 -> 42): 43 java/io/IOException
      // try (40 -> 47): 48 java/io/IOException
      // try (45 -> 52): 53 java/io/IOException
      // try (50 -> 57): 58 java/io/IOException
      // try (55 -> 64): 64 java/io/IOException
   }

   private static synchronized long a(String var0) {
      Long var1 = d.get(var0);
      if (var1 == null) {
         var1 = 0L;
      } else {
         var1 = var1 + 1L;
      }

      d.put(var0, var1);
      return var1;
   }

   public SchemaHandle ref() {
      return (SchemaHandle)super.ref();
   }

   public boolean isTransientSchema() {
      return this.o;
   }

   boolean b() {
      boolean var1 = this.o;
      if (var1) {
         for (p var3 : this.f()) {
            var1 = var3.b();

            try {
               if (!var1) {
                  break;
               }
            } catch (NullPointerException var4) {
               throw a(var4);
            }
         }
      }

      return var1;
   }

   public String getTargetNamespace() {
      return this.h;
   }

   public String getSystemId() {
      return this.j;
   }

   String c() {
      return this.k;
   }

   public boolean isInclude() {
      // $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: bipush 0
      // 01: istore 1
      // 02: bipush 0
      // 03: istore 2
      // 04: aload 0
      // 05: invokevirtual com/l7tech/server/communityschemas/p.f ()Ljava/util/Set;
      // 08: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 0d: astore 3
      // 0e: aload 3
      // 0f: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 14: ifeq 3d
      // 17: aload 3
      // 18: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 1d: checkcast com/l7tech/server/communityschemas/p
      // 20: astore 4
      // 22: aload 4
      // 24: getfield com/l7tech/server/communityschemas/p.q Ljava/util/Map;
      // 27: aload 0
      // 28: getfield com/l7tech/server/communityschemas/p.j Ljava/lang/String;
      // 2b: invokeinterface java/util/Map.containsKey (Ljava/lang/Object;)Z 2
      // 30: ifeq 38
      // 33: bipush 1
      // 34: istore 1
      // 35: goto 3a
      // 38: bipush 1
      // 39: istore 2
      // 3a: goto 0e
      // 3d: iload 1
      // 3e: ifeq 54
      // 41: iload 2
      // 42: ifne 54
      // 45: goto 4c
      // 48: invokestatic com/l7tech/server/communityschemas/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 4b: athrow
      // 4c: bipush 1
      // 4d: goto 55
      // 50: invokestatic com/l7tech/server/communityschemas/p.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 53: athrow
      // 54: bipush 0
      // 55: ireturn
      // try (27 -> 31): 32 java/lang/NullPointerException
      // try (29 -> 36): 36 java/lang/NullPointerException
   }

   boolean d() {
      return this.v;
   }

   void a(boolean var1) {
      this.v = var1;
   }

   void a(Message var1, ValidationTarget var2, SchemaValidationErrorHandler var3) throws IOException, SAXException {
      try {
         if (this.isClosed()) {
            throw new IllegalStateException(x[1]);
         }
      } catch (InvalidDocumentFormatException var12) {
         throw a(var12);
      }

      f.put(this.g, Boolean.TRUE);
      e.set(true);
      Lock var4 = this.m.e();
      var4.lock();

      try {
         this.a(var2.elementsToValidate(var1.getXmlKnob().getDocumentReadOnly()), var3);
      } catch (InvalidDocumentFormatException var10) {
         throw new SAXException(x[3] + var2, var10);
      } finally {
         var4.unlock();
      }
   }

   Map<String, SchemaHandle> e() {
      return this.r;
   }

   void a(p var1) {
      this.s.put(var1.getSystemId(), new WeakReference<>(var1));
   }

   Set<p> f() {
      HashSet var1 = new HashSet(this.s.size());

      for (Reference var3 : this.s.values()) {
         try {
            if (var3 == null) {
               continue;
            }
         } catch (NullPointerException var6) {
            throw a(var6);
         }

         p var4 = (p)var3.get();
         if (var4 != null) {
            try {
               if (var4.isClosed()) {
                  continue;
               }
            } catch (NullPointerException var5) {
               throw a(var5);
            }

            var1.add(var4);
         }
      }

      return var1;
   }

   private String[] a(Element var1, Collection<SchemaHandle> var2) {
      TreeSet var3 = new TreeSet();

      try {
         String[] var4 = XmlUtil.getSchemaGlobalElements(var1);
         var3.addAll(Arrays.asList(var4));
      } catch (BadSchemaException var7) {
         Logger var10000 = c;
         Level var10001 = Level.WARNING;
         String var10002 = this.j;
         String var10003 = ExceptionUtils.getMessage(var7);
         String[] var6 = x;
         var10000.log(var10001, var6[5] + var10002 + var6[2] + var10003 + "'", ExceptionUtils.getDebugException(var7));
      }

      for (SchemaHandle var5 : var2) {
         var3.addAll(Arrays.asList(var5.b().i));
      }

      return var3.toArray(new String[var3.size()]);
   }

   private void a(Element[] var1, SchemaValidationErrorHandler var2) throws IOException, SAXException {
      try {
         if (this.isClosed()) {
            throw new IllegalStateException();
         }
      } catch (SAXException var13) {
         throw a(var13);
      }

      Validator var3 = this.t.newValidator();
      var3.setErrorHandler(var2);
      var3.setResourceResolver(XmlUtil.getSafeLSResourceResolver());
      SAXException var4 = null;

      for (Element var8 : var1) {
         try {
            var3.validate(new DOMSource(var8));
         } catch (SAXException var12) {
            if (var4 == null) {
               var4 = var12;
            }
         }
      }

      try {
         if (var4 != null) {
            throw var4;
         }
      } catch (SAXException var11) {
         throw a(var11);
      }

      Collection var14 = var2.recordedErrors();

      try {
         if (!var14.isEmpty()) {
            throw (SAXParseException)var14.iterator().next();
         }
      } catch (SAXException var10) {
         throw a(var10);
      }
   }

   @Override
   public String toString() {
      StringBuilder var1 = new StringBuilder(x[4]);
      var1.append(HexUtils.to8NybbleHexString(System.identityHashCode(this)));
      return var1.toString();
   }

   String g() {
      return this.n;
   }

   @Override
   protected void doClose() {
      for (SchemaHandle var2 : this.r.values()) {
         var2.close();
      }

      this.r.clear();
      this.p.clear();
      this.q.clear();
      this.s.clear();
      this.m.c(this);
   }

   protected SchemaHandle createHandle() {
      return new SchemaHandle(this);
   }

   private void a(long var1) {
      this.w.set(var1);

      for (SchemaHandle var4 : this.r.values()) {
         p var5 = var4.getTarget();
         if (var5 != null) {
            try {
               if (var5.isClosed()) {
                  continue;
               }
            } catch (NullPointerException var6) {
               throw a(var6);
            }

            var5.a(var1);
         }
      }
   }

   long h() {
      return this.w.get();
   }

   long i() {
      return this.u;
   }

   String j() {
      return this.l;
   }

   static {
      String[] var5 = new String[8];
      int var3 = 0;
      String var2 = "\\\"\u00008k2\u007fZ2\t:cs\u000bf,\r}K2-d$\u001a}R;-j \f&L.\u0005-o?:k\u0012\u000b5c>>/)\t.&23}$\t9\u007fs=j$\u0006}e?0|$\f\u0004(mHz'J3\u001a2ts8j5\u001c4h4\u007fj-\r0c=+|a\u001c2&%>c(\f<r6\u007fi.\u001a}\u000eL.\u0005-o?:k\u0012\u000b5c>>-J3\u001a2ts/}.\u000b8u 6a&H:j<=n-H8j62j/\u001c.&50}a\u001b>n62naO";
      int var4 = "\\\"\u00008k2\u007fZ2\t:cs\u000bf,\r}K2-d$\u001a}R;-j \f&L.\u0005-o?:k\u0012\u000b5c>>/)\t.&23}$\t9\u007fs=j$\u0006}e?0|$\f\u0004(mHz'J3\u001a2ts8j5\u001c4h4\u007fj-\r0c=+|a\u001c2&%>c(\f<r6\u007fi.\u001a}\u000eL.\u0005-o?:k\u0012\u000b5c>>-J3\u001a2ts/}.\u000b8u 6a&H:j<=n-H8j62j/\u001c.&50}a\u001b>n62naO"
         .length();
      char var1 = 31;
      int var9 = -1;

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

         while (true) {
            String var11 = a(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var11;
                  if ((var9 += var1) >= var4) {
                     x = var5;
                     c = Logger.getLogger(p.class.getName());
                     d = new HashMap<>();
                     e = new AtomicBoolean(true);
                     f = new ConcurrentHashMap<>();
                     String[] var10 = x;
                     String var6 = var10[6];
                     q var7 = new q(var10[0]);
                     var7.setDaemon(true);
                     var7.start();
                     return;
                  }

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

                  var2 = "#]\u007fG\u0014M\u0000%MvE\u001c\ft\u0019Sr\u00024MR\u001b[e\u0002-DR\u0015_s\u0002\r\u001e";
                  var4 = "#]\u007fG\u0014M\u0000%MvE\u001c\ft\u0019Sr\u00024MR\u001b[e\u0002-DR\u0015_s\u0002\r\u001e".length();
                  var1 = 31;
                  var9 = -1;
            }

            var10000 = 41;
            var10001 = var2.substring(++var9, var9 + 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] ^ 9);
      }

      return var10000;
   }

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

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 89;
            case 1 -> 23;
            case 2 -> 62;
            case 3 -> 11;
            case 4 -> 80;
            case 5 -> 5;
            default -> 9;
         });
      }

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