
     hO                     F    d Z ddlZddlmZ dgZdxaad Z G d de      Z	y)zGpasslib.crypto._blowfish.base - unoptimized pure-python blowfish engine    N)repeat_stringBlowfishEnginec                  (    g da g dg dg dg dgay )N)ij?$l   F i.iDspl   "8H i1)i.l   lX i!(Eiw8l   f| il4l   )X l   P iՄ?l   	j l   U-$ l   { (   l   b" l   51 ir/l   _5  l   /q i~&jl   Et l   Xb iG$l   l"g il   | i iciiNWql   ~H l   ~=&i itiXriX͋ql   J* iT{l   Y l   9Ua8 i`*l   #0 i`(l   y l   8q l   \ i:`ill   >
=` l   w*. l   'Kbz i/xi`\`Ul   %L l   +T ibHWi@cij9Ui*l   4\i iAl   B ir|l   g i*oci]ũ+i1tl   > l   7 l   3:_ i\$liS2ziw(iH;iKkl   h	 i!(fi	al   )Cv i`|Hi2]l   ]]_ l   u
S l   #L8 l   V i>#l   ,-' ioml   9B iD.l    I iJil   ^?< iBh!l   lm iagl   W iҠQjl   h/0 l   (', l   3V ilni;zl   Ppwt i*~l   eC iv9i>Yfl    l    ioEiå}i^;l   u@ l   s  iD@ijVibNiw?6iri=Bi$7l   H  l   j6 iIirSl   {2 iy%l   ^m l   PG l   ;Ll l   `. il   OR i`@i\^ic$jiohiSl>i9ioR;iQml   ,a6 l   DE l   	=^ l   P} l   Jf< i(fiK.l   W( itEl   9_$ l   {s iyUi
2`l    B- iyr,@i%gl   #?v l   iK l   "d6 iu<l   kz iP/l   R
Z i=2l   `Gz iH{1Si >l   W< l    i.Vl   i.> l   (* i~(l   2X l   sU i'[il   Xw l   ]#C l   q i=l   Cz ilJi[-l   yd4 l   eEm l   I% iKl   rC l   3~I iAbl   F l   JA^ iLw6l     i+l   MZ+ l   !] l   q[U iՓkl   Q! l   %_ l   /[x l    l   b l   d+$d l   8 l   p  i^OiÏhl   q# l   AQg i"//l   w| l   -T l    l   LAK l   tj il   b l   OPi l   `'z i;|l   ([% if_l   w* l   s' iw!l   e ZM iwl   B l   5:w l   /W i>{l   , l   I~<\ i-% i^q i h"iWi6d$l   9` icUiYiCxl   S2 i[} iŹl   vL iϕbihiAJsNl   -f iJ{iR Ql   )4 l   ?W, l   F7y iv`+l    t ioiWl   kl-e i*l   !el l   ysO l   .h~ l   dV
 i]-Sl   ?S iGijn(   ipzKl   D)fk l   .	6 l   #&2 l   &Z i}ߧIl   `9 l   f2 l   qUY iiilRdVl   c i6i)L	ul   @@ l   >:0H iT?ieB[ikl   ?3 l   C l   0_ i8-Ml   ]J` i Ll   &k ici^i?kh	i>i<ipjki5hiRl   S8o l   7T i>i\l   D iWl   7Zu` l   ` l   8` i l   u\ it<iXz%l   !8 l   "# i/|l   sGd( iG"i:i7l   4vj l   ]5 l   FaR il   >GY l   AH l   MqD i/;i2i1>i8TNimOiBol   l i,iy|$iryVl   	_y l   w4= l   &3 l   .g l   .?9 irUi$qk.iPl   M	? iGXzitl   ?y l   }R l   :lX l   
7 ifC	cl   C l   G8^ i2l   7;: i$iCMiQe*i Pi:iqiUN1l   wX i_iV5l   kGG/ i;<i	$Yl   fe l   {/ l   ,?u= in<l   pE l   oU l   
^ i*>Ziwi=Nie)l   3 l   	}  i%fRixL.l   j3!8 l   * l   xj) l   S<K i-
l   Ne i=+6i&9i`yi#Rl   &n l   n~[W l   fU l   ExG l   HL l   7b i(l   ]e l   Z| i!Xeihl   %] l   ;_6 i}*i/n[i(!ipa)l   uGY iai0l   =V i4l   cT l   \j i9pLl   =+ l   ^U l   ] i,b`l   \V9 l   ne idil   iF@ iPZei2Zh@i*<i1l   8C  l   6 l     l   ~+ i}=bl   op l   w-/ i_ihi)5l    l   _- iXxiWicr"l   C7 iFl   
f iT0.Sl   H i(1miXi4l   amQ| l   s<\ iJ]l   7P i]Bi> iEl   +UG l   O6 l   Ou l   Bt l   ;^ i;Oei!Al   y<0 l   M
 l   jGH iPb=l   ! iF&[l   y l   6 i$itiiGiVi [	l   H2Z itbi #i*BXiUi>iap?#ir3l   A~& l   l, i;"liY7|l   `t i@l   n2 l    L iPl   UXQ i5al   'R l   
 iZl   J  l   .z< l   4 l   g{ iɞl   [6 i͈Uiy_gl   @CF l   e4 i8>qi(=l    b i!>l   J=` l   +M l   -7 (   l   hZzR l   @) l   &l l   4)( i Aivl   .ky l   h D) l   q$( ij 3iԷCia Pi.9l   FEH. itO!l   @ iMl   k- ipiE/fl   	x iimi1l   '- iA9Ul   GJ4 l   
W i%xP(i)Siچ,
l   mlS ibhl    i. ihi'i?Ol   -Q l   `k izl   |U l   _n& l   # iB*k@i5 l   3 l   Ws\ iN;iiVmKi1f&l   U itn:l   2C: iAhl     l   Nuv l   31 iV@El   't i::SUi l   )| l   K-! igUl   X+B l   c)R l   3[3 l   VJTL i%1?i~^l   |1R  l   h{ ip/'l   \v i,(l   H+ l   "mI i?Hl    iiAiyG@in]iQ_2l   @7+ l   Aye id5Ai4x{%i`*`l   h? ilci´i2l   O^ l    i#ki>3ib$;l   "9}] l   "e l   tM l   < i(-l   Ex$  l   o+ ib}dl   uO ioITl   H l   '}; l   }f iAcG
l   t]2 ino:l   7}i l   `\%P l   ]C l   La72 l   k6 l   U i7,gmi;e'l   h9 l   Rb l    l   rj iii{fl   } l   O#A l   ^*2 l   /&v i$[Qiy{i;vi.97l   yY" l   bM  l   -1\h iBhl   ;+ iLui.xi7Bjl   Q$o i满iPcKikiiؽ%=l   CE iYBDi
l   nl2 l   *jW+ iNgdl   _(5 l   i} idl   W y; l   @a i{x`iM``l   F# l   pl iEwl   |m. l   3k l   q+=` l   A a i_^ <iWwl   $.{ iBFUl   a.~ iXNl   }e l   8oh l   = ifSl   tg l   Urh iFia&zl   _; l   y l   " iYnFipW l   U l   L^ l   ,r l   w iHbitul   n l   	\SA i	-fl   3Fd l   P i	i%Jini=iߤl   rC iih(l   Zo9 i9Wl   NC iROi^Pl   N l   5@ i'l   '5 iA?wl   L ial   (z.` l    iX` ib}0iמic8#iSl   4 l   Vnw l   6y! l   }W l   v i	oi|Ki=
r9i$||l   _r iMri[l   8=' l   xUZ il   |z0 iMi^Pl   fb l   
E i<QlioiNViο*6l   7H; l   424/ l   $ igi `@(   i79:l   u' l   7wW i-Zig\iB7Ol   @'' l   y3 l   #* l   s~ l   ~Z, l   {D l   ko iE!l   1d in6ji/HWl   yn(y l   vF iIeiSi}ލFl   
* iMLiۻ9)l   PFtS l   &*Y l   c| l   UC iQ-jicl   "n5 l   B i.$Cl   <J l   P9 l   a l   Mj7 l   P l   [t i&(l   :tN iKl   b^ l   o_ l   wn iio?iY
wl   ) l   a l   f6 i>;l   Z}!S l   Wi< iٷ,iQ+l   :,- i}}l   ># i(-}|i%l   8[ irZiLZl   q,S@ l   %3@ iGl   z'[ l   DQ iW;(l   )fq i(.yi_xl   U`Z l   D,o l   ^G iml   m i%aidl    iW<l   N. l   *tR im?i!cl   f8k i&i(3ul   }b i4Vl   <t iwQ(l   Y l   gQW l   _[ iQMi08ibX7l   yA& l   T l   {|v id!Qi2Owl   ~cmQ l   F=R iiSHidl   \E l   $2: i-iif!	l   
F4g iEdilXi i[i@Xl    ikl   ~jD; iEY:iD
5>l   Miy irl   t l    l   Gox~ l   cd7% i]/Tl   w] l   pcl itl   WN l   qp l   ]}^ i@@iNijF4il   (`C l   :0+ il   H  i;?oi 5iKi'r'i`al   ?&O l   +ytv i%E4l   9A iKyQi2/l   :?@ l   ~H9@ l   Qy l    l   *C iIl   =( l   ^! l   8Z* i*9l   g6" l   |1 l   O+bA l   Y<o i:Cl   e iE'l   ,". i*iql   %(7 l   au l   m l   YdP iѨl   ^m l   j
F iePl   B$ l   nA i;ۘiLidx2l   2?> l   A l   +4@' l   r iAt
i4Kl    q| l   2 l   k> l   ./27 l   GoL il   TZJ il   y l   o~| ifl   Xz l   R	 l   "m l   WsGj l   #vdL l   15P' iVl   bY iuZi6nl   s l   b,= l   Ir iPLiVql   GM i
z2iEl   { l   ST i bl   ?Kv iҽ5iiql   "d l   |Om l   + i>Si@i`8iG%l    pt l   vNn išwi``u l   N~ l    izi~Li\Hiijl   a- l   ix! l   ^L i-%	?l   f l   2an l   [b iߏWir:)
BLOWFISH_P
BLOWFISH_S     _/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/passlib/crypto/_blowfish/base.py_init_constantsr      s-    JA	
FA	
FA	
FA	
WMJr	   c                   B    e Zd Zd Zed	d       Zd Zd Zd Zd Z	d Z
y)
r   c                     t         
t                t        t               | _        t        D cg c]  }t        |       c}| _        y c c}w )N)r   r   listPr   S)selfboxs     r
   __init__zBlowfishEngine.__init__7  s3    j!(244944s   Ac                     t        | t              sJ t        |       }|sdg|z  S t        | |dz        } t	        j
                  d|fz  |       S )zwconvert data to tuple of <size> 4-byte integers, repeating or
        truncating data as needed to reach specified sizer      z>%dI)
isinstancebyteslenr   structunpack)datasizedlens      r
   key_to_wordszBlowfishEngine.key_to_words@  sV     $&&4y 3t8O T47+ }}Vtg-t44r	   c                    | j                   | j                  }}||d   z  }d}|dk  rP|d   |dz	     |d   |dz	  dz     z   |d   |dz	  dz     z  |d	   |dz     z   d
z  ||   z  |z  }||}}|dz  }|dk  rP||d   z  |fS )z)loop version of blowfish encipher routiner                  r         l    )r   r   )r   lrr   r   is         r
   encipherzBlowfishEngine.encipherT  s    vvtvv1	QqT	"faDbMAaD!r'T)9$::adAFd?>SSA$q4x.!$./23A$79:;A aqAFA "f 1R5y!|r	   c                    t        |      dk\  sJ d       | j                  | j                  | j                  }}}d}|dk  r||xx   ||   z  cc<   |dz  }|dk  rdx}x}}|dk  r% |||      x\  ||<   ||dz   <   \  }}|dz  }|dk  r%|D ]/  }d}|dk  s |||      x\  ||<   ||dz   <   \  }}|dz  }|dk  r%1 y)z(perform stock Blowfish keyschedule setup   (key_words must be at least as large as Pr   r    r      Nr   r   r   r*   )	r   	key_wordsr   r   r*   r)   r'   r(   r   s	            r
   expandzBlowfishEngine.expandd  s    9~#O%OOh1"faDIaL DFA "f A"f!)!A.LAaD!AaC&31QFA "f  	CAc')1!A6 AAaC31QQ c'	r	   c                 B   t        |      dk\  sJ d       t        |      }|sJ d       |dz  rJ d       | j                  | j                  | j                  }}}d}|dk  r||xx   ||   z  cc<   |dz  }|dk  rdx}x}x}	}
|dk  rD|	||   z  }	|
||dz      z  }
|dz  }||k(  rd} ||	|
      x\  ||<   ||dz   <   \  }	}
|dz  }|dk  rD|D ]N  }d}|dk  s|	||   z  }	|
||dz      z  }
|dz  }||k(  rd} ||	|
      x\  ||<   ||dz   <   \  }	}
|dz  }|dk  rDP y	)
z9perform EKS' salted version of Blowfish keyschedule setupr,   r-   zsalt_words must not be emptyr    z salt_words must have even lengthr   r   r.   Nr/   )r   r0   
salt_words	salt_sizer   r   r*   r)   sr'   r(   r   s               r
   eks_salted_expandz BlowfishEngine.eks_salted_expand|  s   
 9~#O%OO
O	888q=D"DDh1"faDIaL DFA "f AA"fAAAaC AFAI~!)!A.LAaD!AaC&31QFA "f  		CAc'Z]"Z!_$Q	>A)1!A6 AAaC31QQ c'		r	   c                 b    | j                   }d}||k  r ||        ||       |dz  }||k  ryy)z-perform rounds stage of EKS keyschedule setupr   r    N)r1   )r   r0   r3   roundsr1   ns         r
   eks_repeated_expandz"BlowfishEngine.eks_repeated_expand  s9    &j9:FA &jr	   c                 ^    | j                   }d}||k  r |||      \  }}|dz  }||k  r||fS )z.repeatedly apply encipher operation to a blockr   r    )r*   )r   r'   r(   countr*   r9   s         r
   repeat_encipherzBlowfishEngine.repeat_encipher  sC    ==%iAq>DAqFA %i !tr	   N)r,   )__name__
__module____qualname__r   staticmethodr   r*   r1   r6   r:   r=   r   r	   r
   r   r   5  s5    5 5 5& 0#Jr	   )
__doc__r   passlib.utilsr   __all__r   r   r   objectr   r   r	   r
   <module>rF      s=    M
  '   
Z]D	|V |r	   