package com.l7tech.policy.assertion.credential;

import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.AssertionNodeNameFactory;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.MessageTargetable;
import com.l7tech.policy.assertion.MessageTargetableSupport;
import com.l7tech.policy.assertion.TargetMessageType;
import com.l7tech.policy.assertion.XpathBasedAssertion;
import com.l7tech.policy.variable.VariableMetadata;
import com.l7tech.xml.soap.SoapVersion;
import com.l7tech.xml.xpath.XpathExpression;
import com.l7tech.xml.xpath.XpathUtil;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class XpathCredentialSource extends XpathBasedAssertion implements MessageTargetable {
   private boolean removeLoginElement;
   private boolean removePasswordElement;
   private XpathExpression passwordExpression;
   private final MessageTargetableSupport messageTargetableSupport;
   static final String baseName;
   static final AssertionNodeNameFactory policyNameFactory;
   static final long serialVersionUID = -2985168518244728677L;
   private static final String[] c;

   public XpathCredentialSource() {
      this(TargetMessageType.REQUEST);
   }

   protected XpathCredentialSource(TargetMessageType var1) {
      this.messageTargetableSupport = new MessageTargetableSupport(var1, false);
   }

   @Override
   public boolean isCredentialSource() {
      return true;
   }

   public XpathExpression getPasswordExpression() {
      return this.passwordExpression;
   }

   public void setPasswordExpression(XpathExpression var1) {
      this.passwordExpression = var1;
   }

   public boolean isRemoveLoginElement() {
      return this.removeLoginElement;
   }

   public void setRemoveLoginElement(boolean var1) {
      this.removeLoginElement = var1;
   }

   public boolean isRemovePasswordElement() {
      return this.removePasswordElement;
   }

   public void setRemovePasswordElement(boolean var1) {
      this.removePasswordElement = var1;
   }

   @Override
   public boolean isTargetModifiedByGateway() {
      return this.removeLoginElement || this.removePasswordElement;
   }

   @Override
   public final VariableMetadata[] getVariablesSet() {
      return new VariableMetadata[0];
   }

   @Override
   public TargetMessageType getTarget() {
      return this.messageTargetableSupport.getTarget();
   }

   @Override
   public void setTarget(TargetMessageType var1) {
      this.messageTargetableSupport.setTarget(var1);
   }

   @Override
   public String getOtherTargetMessageVariable() {
      return this.messageTargetableSupport.getOtherTargetMessageVariable();
   }

   @Override
   public void setOtherTargetMessageVariable(String var1) {
      this.messageTargetableSupport.setOtherTargetMessageVariable(var1);
   }

   @Override
   public String getTargetName() {
      return this.messageTargetableSupport.getTargetName();
   }

   @Override
   public XpathExpression createDefaultXpathExpression(boolean var1, SoapVersion var2) {
      return this.createDefaultLoginOrPasswordExpression(var1, var2, false);
   }

   public XpathExpression createDefaultLoginOrPasswordExpression(boolean var1, SoapVersion var2, boolean var3) {
      XpathExpression var4 = super.createDefaultXpathExpression(var1, var2);
      String var5 = var1 ? var4.getExpression() : "";
      String var10000;
      if (var3) {
         String[] var7 = c;
         var10000 = var7[13];
      } else {
         var10000 = c[7];
      }

      String var6 = var10000;
      var4.setExpression(var5 + var6);
      return var4;
   }

   @Override
   public void migrateNamespaces(Map<String, String> var1) {
      super.migrateNamespaces(var1);
      if (this.passwordExpression != null) {
         this.passwordExpression.migrateNamespaces(var1);
      }
   }

   @Override
   public Set<String> findNamespaceUrisUsed() {
      HashSet var1 = new HashSet<>(super.findNamespaceUrisUsed());
      if (this.passwordExpression != null) {
         var1.addAll(this.passwordExpression.findNamespaceUrisUsed());
      }

      return var1;
   }

   @Override
   protected XpathBasedAssertion.VariablesUsed doGetVariablesUsed() {
      XpathBasedAssertion.VariablesUsed var1 = super.doGetVariablesUsed();
      if (this.passwordExpression != null) {
         String var2 = this.passwordExpression.getExpression();
         if (var2 != null) {
            var1.addVariables(XpathUtil.getUnprefixedVariablesUsedInXpath(var2, this.passwordExpression.getXpathVersion()));
         }
      }

      var1.add(this.messageTargetableSupport.getMessageTargetVariablesUsed());
      return var1;
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = super.defaultMeta();
      String[] var2 = c;
      var1.put(var2[4], new String[]{var2[5]});
      var1.put(var2[2], var2[9]);
      var1.put(var2[11], var2[12]);
      var1.put(var2[20], var2[21]);
      var1.put(var2[15], policyNameFactory);
      var1.put(var2[10], var2[8]);
      var1.put(var2[0], var2[3]);
      var1.put(var2[17], var2[16]);
      var1.put(var2[18], var2[19]);
      var1.put(var2[14], var2[6]);
      return var1;
   }

   static {
      String[] var5 = new String[22];
      int var3 = 0;
      String var2 = "\u0018cn<:Qj\t`k18\\S\u001aOn4*[R\tag\u0019:is 0ZYHTR4-@\u001c+~g1<FH\u0001mn&\t\u001bdm'-f]\u0005iA\u000bco{5\u001fH\roj{)GP\u0001o{{/IP\u0001hc!6Z\u0012&mo0*X]\u000biO<>Z]\u001cm`9<iO\u001bip!0GR>mn<=IH\u0007~\u000e\u0018mn0-\\Y.cn1<ZO\r\toa0*[\u007f\u0007bv'6D'\u000bcoz5\u001fH\rojz:GR\u001bcn0vZY\u001bcw':MOGIf<-\u0019\nFkk3\nG#W&<ZR\tagD\u000bco{5\u001fH\roj{:GR\u001bcn0w\\N\ri,%6DU\u000bu,4=^U\u000bi,\u0014=Ld\u0018mv=\u001aZY\fil!0IP;cw':M}\fzk6<\u0019:is 0ZYHTR4-@\u001c+~g1<FH\u0001mn&\u0015\u0018cn<:Q}\fzk6<kP\t\u007fq;8EY\u000b\fiq6+AL\u001cem;Q/mv0.IEH~g!+AY\u001eiqu5G[\u0001b\"47L\u001c\u0018mq&.GN\f,d'6E\u001c\u000byp'<FHH~g$,MO\u001c,w&0F[HTR4-@\u001c\rtr'<[O\u0001cl&\nG#R4*[K\u0007~f\u0014\u0018~m%<ZH\u0001iq\u0014:\\U\u0007bK66F\u0015\u0018cn<:Qr\u0007hg\u001b8EY.ma!6ZE\u001c0\\c!1\b\u007f\u001aif07\\U\t`qu\tZS\u0018ip!0MO\u0014\u0018~m%<ZH\u0001iq\u0014:\\U\u0007bL44M\u0019\u0018~m%<ZH\u0001iq\u0014:\\U\u0007bA98[O\u0006mo09\u000bco{5\u001fH\roj{:GR\u001bcn0wI_\u001cem;wmX\u0001xZ%8\\T+~g1<FH\u0001mn\u00066]N\u000biC6-AS\u0006";
      int var4 = "\u0018cn<:Qj\t`k18\\S\u001aOn4*[R\tag\u0019:is 0ZYHTR4-@\u001c+~g1<FH\u0001mn&\t\u001bdm'-f]\u0005iA\u000bco{5\u001fH\roj{)GP\u0001o{{/IP\u0001hc!6Z\u0012&mo0*X]\u000biO<>Z]\u001cm`9<iO\u001bip!0GR>mn<=IH\u0007~\u000e\u0018mn0-\\Y.cn1<ZO\r\toa0*[\u007f\u0007bv'6D'\u000bcoz5\u001fH\rojz:GR\u001bcn0vZY\u001bcw':MOGIf<-\u0019\nFkk3\nG#W&<ZR\tagD\u000bco{5\u001fH\roj{:GR\u001bcn0w\\N\ri,%6DU\u000bu,4=^U\u000bi,\u0014=Ld\u0018mv=\u001aZY\fil!0IP;cw':M}\fzk6<\u0019:is 0ZYHTR4-@\u001c+~g1<FH\u0001mn&\u0015\u0018cn<:Q}\fzk6<kP\t\u007fq;8EY\u000b\fiq6+AL\u001cem;Q/mv0.IEH~g!+AY\u001eiqu5G[\u0001b\"47L\u001c\u0018mq&.GN\f,d'6E\u001c\u000byp'<FHH~g$,MO\u001c,w&0F[HTR4-@\u001c\rtr'<[O\u0001cl&\nG#R4*[K\u0007~f\u0014\u0018~m%<ZH\u0001iq\u0014:\\U\u0007bK66F\u0015\u0018cn<:Qr\u0007hg\u001b8EY.ma!6ZE\u001c0\\c!1\b\u007f\u001aif07\\U\t`qu\tZS\u0018ip!0MO\u0014\u0018~m%<ZH\u0001iq\u0014:\\U\u0007bL44M\u0019\u0018~m%<ZH\u0001iq\u0014:\\U\u0007bA98[O\u0006mo09\u000bco{5\u001fH\roj{:GR\u001bcn0wI_\u001cem;wmX\u0001xZ%8\\T+~g1<FH\u0001mn\u00066]N\u000biC6-AS\u0006"
         .length();
      char var1 = 24;
      int var7 = -1;

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

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

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

                  var2 = "C65kv\u0007\u0002}8=kK\u0010\b].P84!nD\u0013V41!a\u001c\t@85k-\u0001\u0002@8,|a\u0016\u0014\u001c/4bU\u001a\u0013[\u0014<|vBQ\u001d00h";
                  var4 = "C65kv\u0007\u0002}8=kK\u0010\b].P84!nD\u0013V41!a\u001c\t@85k-\u0001\u0002@8,|a\u0016\u0014\u001c/4bU\u001a\u0013[\u0014<|vBQ\u001d00h"
                     .length();
                  var1 = 15;
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String c(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 -> 44;
            case 1 -> 72;
            case 2 -> 70;
            case 3 -> 17;
            case 4 -> 29;
            case 5 -> 108;
            default -> 120;
         });
      }

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