package com.l7tech.server.custom.format;

import com.l7tech.common.io.XmlUtil;
import com.l7tech.message.Message;
import com.l7tech.message.XmlKnob;
import com.l7tech.policy.assertion.ext.message.CustomMessage;
import com.l7tech.policy.assertion.ext.message.CustomMessageAccessException;
import com.l7tech.server.StashManagerFactory;
import com.l7tech.server.custom.CustomMessageImpl;
import java.io.IOException;
import java.io.InputStream;
import org.jetbrains.annotations.NotNull;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;

public class CustomMessageXmlFormat extends CustomMessageFormatBase<Document> {
   private static final String[] b;

   public CustomMessageXmlFormat(@NotNull StashManagerFactory var1, @NotNull String var2, @NotNull String var3) {
      if (var1 == null) {
         b(0);
      }

      if (var2 == null) {
         b(1);
      }

      if (var3 == null) {
         b(2);
      }

      super(var1, var2, var3);
   }

   public Class<Document> getRepresentationClass() {
      return Document.class;
   }

   public Document extract(CustomMessage var1) throws CustomMessageAccessException {
      try {
         if (var1 == null) {
            throw new CustomMessageAccessException(b[11]);
         }
      } catch (SAXException var4) {
         throw a(var4);
      }

      try {
         if (!(var1 instanceof CustomMessageImpl)) {
            throw new CustomMessageAccessException(b[7]);
         }
      } catch (SAXException var7) {
         throw a(var7);
      }

      Message var2 = ((CustomMessageImpl)var1).getMessage();

      try {
         try {
            if (!var2.isInitialized() || !var2.isXml()) {
               return null;
            }
         } catch (SAXException var5) {
            throw a(var5);
         }

         return var2.getXmlKnob().getDocumentReadOnly();
      } catch (SAXException | IOException var6) {
         throw new CustomMessageAccessException(b[9], var6);
      }
   }

   public void overwrite(CustomMessage var1, Document var2) throws CustomMessageAccessException {
      try {
         if (var1 == null) {
            throw new CustomMessageAccessException(b[10]);
         }
      } catch (CustomMessageAccessException var5) {
         throw a(var5);
      }

      try {
         if (!(var1 instanceof CustomMessageImpl)) {
            throw new CustomMessageAccessException(b[4]);
         }
      } catch (CustomMessageAccessException var7) {
         throw a(var7);
      }

      Message var3 = ((CustomMessageImpl)var1).getMessage();
      XmlKnob var4 = (XmlKnob)var3.getKnob(XmlKnob.class);

      try {
         if (var4 == null) {
            var3.initialize(var2);
            return;
         }
      } catch (CustomMessageAccessException var6) {
         throw a(var6);
      }

      var4.setDocument(var2);
   }

   public <K> Document createBody(K var1) throws CustomMessageAccessException {
      try {
         if (var1 == null) {
            throw new CustomMessageAccessException(b[13]);
         }
      } catch (SAXException var4) {
         throw a(var4);
      }

      Throwable var9;
      label50: {
         try {
            if (var1 instanceof String) {
               try {
                  return XmlUtil.stringToDocument((String)var1);
               } catch (SAXException var7) {
                  var9 = var7;
                  break label50;
               }
            }
         } catch (IOException var8) {
            throw a(var8);
         }

         label36: {
            try {
               if (var1 instanceof InputStream) {
                  try {
                     return XmlUtil.parse((InputStream)var1);
                  } catch (IOException | SAXException var5) {
                     var9 = var5;
                     break label36;
                  }
               }
            } catch (CustomMessageAccessException var6) {
               throw a(var6);
            }

            throw new CustomMessageAccessException(b[12] + var1.getClass().getSimpleName());
         }

         String[] var3 = b;
         throw new CustomMessageAccessException(var3[3], var9);
      }

      String[] var10 = b;
      throw new CustomMessageAccessException(var10[1], var9);
   }

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

   static {
      String[] var5 = new String[15];
      int var3 = 0;
      String var2 = "I\u0007]kO\u0011GY\u000bAf-h\u0010\\gOX@E\u000bBm\u001d\u001bEH\u0003ZaS\u001f\u0017i-c(y\u0017TX\u000fKfIXQ_\rC(N\fED\fI6N\rC'QOCH\u0001F'N\u001dE[\u0007\\'^\rDY\rC'[\u0017E@\u0003Z'~\rDY\rCEX\u000bDL\u0005KPP\u0014qB\u0010CiI2h\u0010\\gOX@E\u000bBm\u001d\u001bEH\u0003ZaS\u001f\u0017i-c(y\u0017TX\u000fKfIXQ_\rC(t\u0016GX\u0016}|O\u001dV@\u001e@\u0007]{\\\u001fR\r\u000b](R\u001e\u0017X\f]}M\bX_\u0016Kl\u001d\fN]\u0007\u0013^\u0016O{U5VC\u0003ImO>VN\u0016AzD\u0006\u0011\u000b@aIF\u001e@\u0007]{\\\u001fR\r\u000b](R\u001e\u0017X\f]}M\bX_\u0016Kl\u001d\fN]\u0007\u0004C\u0003Cm(h\u0010\\gOX@E\u000bBm\u001d\u001dOY\u0010OkI\u0011YJBCmN\u000bVJ\u0007\u000ePp4\u0017[\u0003B}X\u0016@\u0007]{\\\u001fR\r\u0001OfS\u0017C\r\u0000K(S\r[A\u0016@\u0007]{\\\u001fR\r\u0001OfS\u0017C\r\u0000K(S\r[A\u001ax\f]}M\bX_\u0016Kl\u001d\u001bXC\u0016KfIXCT\u0012K2\u001d";
      int var4 = "I\u0007]kO\u0011GY\u000bAf-h\u0010\\gOX@E\u000bBm\u001d\u001bEH\u0003ZaS\u001f\u0017i-c(y\u0017TX\u000fKfIXQ_\rC(N\fED\fI6N\rC'QOCH\u0001F'N\u001dE[\u0007\\'^\rDY\rC'[\u0017E@\u0003Z'~\rDY\rCEX\u000bDL\u0005KPP\u0014qB\u0010CiI2h\u0010\\gOX@E\u000bBm\u001d\u001bEH\u0003ZaS\u001f\u0017i-c(y\u0017TX\u000fKfIXQ_\rC(t\u0016GX\u0016}|O\u001dV@\u001e@\u0007]{\\\u001fR\r\u000b](R\u001e\u0017X\f]}M\bX_\u0016Kl\u001d\fN]\u0007\u0013^\u0016O{U5VC\u0003ImO>VN\u0016AzD\u0006\u0011\u000b@aIF\u001e@\u0007]{\\\u001fR\r\u000b](R\u001e\u0017X\f]}M\bX_\u0016Kl\u001d\fN]\u0007\u0004C\u0003Cm(h\u0010\\gOX@E\u000bBm\u001d\u001dOY\u0010OkI\u0011YJBCmN\u000bVJ\u0007\u000ePp4\u0017[\u0003B}X\u0016@\u0007]{\\\u001fR\r\u0001OfS\u0017C\r\u0000K(S\r[A\u0016@\u0007]{\\\u001fR\r\u0001OfS\u0017C\r\u0000K(S\r[A\u001ax\f]}M\bX_\u0016Kl\u001d\u001bXC\u0016KfIXCT\u0012K2\u001d"
         .length();
      char var1 = 11;
      int var7 = -1;

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

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     return;
                  }

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

                  var2 = "Y\u001aWkO\u0001T\u001a\u0016XqD\u0000T\u001a\u0017\\?D\u001aLV>{\u0007^jG\nNNU_pXO`t\u001aMQ_\u0003L\u001a\u0005XmK\u0002EN\u0010K?\rJS\u001dUVy\nJS\u0014PJ?G\u001aSNUWp^OB_UWjF\u0003";
                  var4 = "Y\u001aWkO\u0001T\u001a\u0016XqD\u0000T\u001a\u0017\\?D\u001aLV>{\u0007^jG\nNNU_pXO`t\u001aMQ_\u0003L\u001a\u0005XmK\u0002EN\u0010K?\rJS\u001dUVy\nJS\u0014PJ?G\u001aSNUWp^OB_UWjF\u0003"
                     .length();
                  var1 = 22;
                  var7 = -1;
            }

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

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

      return var10000;
   }

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

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 48;
            case 1 -> 127;
            case 2 -> 51;
            case 3 -> 21;
            case 4 -> 32;
            case 5 -> 101;
            default -> 42;
         });
      }

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