package com.l7tech.policy.assertion;

import com.l7tech.policy.assertion.composite.CompositeAssertion;
import com.l7tech.policy.wsp.WspReader;
import com.l7tech.policy.wsp.WspWriter;
import com.l7tech.util.EmptyIterator;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class NewPreorderIterator implements Iterator<Assertion> {
   private final AssertionTranslator a;
   private final Iterator b;
   private Assertion c = null;
   private static final String d;

   public NewPreorderIterator(Assertion var1, AssertionTranslator var2) throws PolicyAssertionException {
      this.a = var2;

      Assertion var3;
      try {
         var3 = WspReader.getDefault().parsePermissively(WspWriter.getPolicyXml(var1), WspReader.INCLUDE_DISABLED);
         this.a(var3, var1);
      } catch (IOException var7) {
         throw new RuntimeException(var7);
      }

      Assertion var10000;
      label40: {
         try {
            if (var2 == null) {
               var10000 = var3;
               break label40;
            }
         } catch (IOException var9) {
            throw a(var9);
         }

         var10000 = var2.translate(var3);
      }

      Assertion var4 = var10000;
      if (var4 instanceof CompositeAssertion) {
         CompositeAssertion var5 = (CompositeAssertion)var3;
         ArrayList var6 = new ArrayList();
         var6.add(var3);
         this.a(var5, var6);
         this.b = var6.iterator();
      } else {
         Object var10001;
         label32: {
            try {
               var10 = this;
               if (var4 == null) {
                  var10001 = new EmptyIterator();
                  break label32;
               }
            } catch (IOException var8) {
               throw a(var8);
            }

            var10001 = Arrays.asList(var4).iterator();
         }

         var10.b = (Iterator)var10001;
      }
   }

   private void a(Assertion var1, Assertion var2) {
      try {
         if (!var1.getClass().equals(var2.getClass())) {
            return;
         }
      } catch (RuntimeException var9) {
         throw a(var9);
      }

      if (var1 instanceof CompositeAssertion var3) {
         CompositeAssertion var4 = (CompositeAssertion)var2;
         Iterator var5 = var4.children();
         Iterator var6 = var3.children();

         while (true) {
            try {
               if (!var6.hasNext() || !var5.hasNext()) {
                  break;
               }
            } catch (RuntimeException var10) {
               throw a(var10);
            }

            Assertion var7 = (Assertion)var6.next();
            Assertion var8 = (Assertion)var5.next();
            this.a(var7, var8);
         }
      } else {
         var1.updateTemporaryData(var2);
      }
   }

   private void a(CompositeAssertion param1, List<Assertion> param2) throws PolicyAssertionException {
      // $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: invokevirtual com/l7tech/policy/assertion/composite/CompositeAssertion.getChildren ()Ljava/util/List;
      // 04: astore 3
      // 05: bipush 0
      // 06: istore 4
      // 08: iload 4
      // 0a: aload 3
      // 0b: invokeinterface java/util/List.size ()I 1
      // 10: if_icmpge 9b
      // 13: aload 3
      // 14: iload 4
      // 16: invokeinterface java/util/List.get (I)Ljava/lang/Object; 2
      // 1b: checkcast com/l7tech/policy/assertion/Assertion
      // 1e: astore 5
      // 20: aload 0
      // 21: getfield com/l7tech/policy/assertion/NewPreorderIterator.a Lcom/l7tech/policy/assertion/AssertionTranslator;
      // 24: ifnonnull 30
      // 27: aload 5
      // 29: goto 3b
      // 2c: invokestatic com/l7tech/policy/assertion/NewPreorderIterator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2f: athrow
      // 30: aload 0
      // 31: getfield com/l7tech/policy/assertion/NewPreorderIterator.a Lcom/l7tech/policy/assertion/AssertionTranslator;
      // 34: aload 5
      // 36: invokeinterface com/l7tech/policy/assertion/AssertionTranslator.translate (Lcom/l7tech/policy/assertion/Assertion;)Lcom/l7tech/policy/assertion/Assertion; 2
      // 3b: astore 6
      // 3d: aload 6
      // 3f: ifnull 7c
      // 42: aload 6
      // 44: aload 1
      // 45: invokevirtual com/l7tech/policy/assertion/Assertion.setParent (Lcom/l7tech/policy/assertion/composite/CompositeAssertion;)V
      // 48: aload 3
      // 49: iload 4
      // 4b: aload 6
      // 4d: invokeinterface java/util/List.set (ILjava/lang/Object;)Ljava/lang/Object; 3
      // 52: pop
      // 53: aload 2
      // 54: aload 6
      // 56: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 5b: pop
      // 5c: aload 6
      // 5e: instanceof com/l7tech/policy/assertion/composite/CompositeAssertion
      // 61: ifeq 7c
      // 64: goto 6b
      // 67: invokestatic com/l7tech/policy/assertion/NewPreorderIterator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6a: athrow
      // 6b: aload 0
      // 6c: aload 6
      // 6e: checkcast com/l7tech/policy/assertion/composite/CompositeAssertion
      // 71: aload 2
      // 72: invokevirtual com/l7tech/policy/assertion/NewPreorderIterator.a (Lcom/l7tech/policy/assertion/composite/CompositeAssertion;Ljava/util/List;)V
      // 75: goto 7c
      // 78: invokestatic com/l7tech/policy/assertion/NewPreorderIterator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 7b: athrow
      // 7c: aload 0
      // 7d: getfield com/l7tech/policy/assertion/NewPreorderIterator.a Lcom/l7tech/policy/assertion/AssertionTranslator;
      // 80: ifnull 95
      // 83: aload 0
      // 84: getfield com/l7tech/policy/assertion/NewPreorderIterator.a Lcom/l7tech/policy/assertion/AssertionTranslator;
      // 87: aload 5
      // 89: invokeinterface com/l7tech/policy/assertion/AssertionTranslator.translationFinished (Lcom/l7tech/policy/assertion/Assertion;)V 2
      // 8e: goto 95
      // 91: invokestatic com/l7tech/policy/assertion/NewPreorderIterator.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 94: athrow
      // 95: iinc 4 1
      // 98: goto 08
      // 9b: return
      // try (14 -> 19): 19 com/l7tech/policy/assertion/PolicyAssertionException
      // try (26 -> 43): 44 com/l7tech/policy/assertion/PolicyAssertionException
      // try (28 -> 51): 52 com/l7tech/policy/assertion/PolicyAssertionException
      // try (54 -> 61): 62 com/l7tech/policy/assertion/PolicyAssertionException
   }

   @Override
   public boolean hasNext() {
      return this.b.hasNext();
   }

   public Assertion next() {
      return this.c = (Assertion)this.b.next();
   }

   @Override
   public void remove() {
      CompositeAssertion var1 = this.c.getParent();

      try {
         if (var1 == null) {
            throw new UnsupportedOperationException(d);
         }
      } catch (RuntimeException var2) {
         throw a(var2);
      }

      var1.removeChild(this.c);
      this.b.remove();
   }

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

   static {
      String var10002 = a(15, a("{?>#zZ/]3?rkZ/W1$"));
      byte var10001 = -1;
      d = var10002;
   }

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

      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 -> 55;
            case 1 -> 81;
            case 2 -> 95;
            case 3 -> 11;
            case 4 -> 1;
            case 5 -> 117;
            default -> 82;
         });
      }

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