Ë
    ¡ëih  ã                   ó*  — d Z dj                  «       ZdZddlmZ  G d„ d«      Zdddd	œdd
dd	œd
d
dd	œdddd	œdddd	œgZd„ Zd„ Z	e
dk(  rIdZeD ]A  Z eed   «      j                  ed   «      Z eed   «      j                  ed   «      Zedz  ZŒC yy)z
Arciv Stream  ciphering
zArcIV encode decodez1.0é    )Ú	isUnicodec                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚArcIVzâ
	performs 'ArcIV' Stream Encryption of S using key
	Based on what is widely thought to be RSA's ArcIV algorithm.
	It produces output streams that are identical.

	NB there is no separate decoder arciv(arciv(s,key),key) == s
	c                 ó2   — || _         | j                  «        y )N)Ú_keyÚreset)ÚselfÚkeys     úS/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/lib/arciv.pyÚ__init__zArcIV.__init__   s   € Ø€$„)Ø‡*�*…,ó    c                 óx  — | j                   }t        |«      r|j                  d«      }t        t	        d«      «      }t        t	        d«      «      }t        |«      }|D ]  }|||z     dz  ||<   Œ d}t	        d«      D ]$  }|||   z   ||   z   dz  }||   ||   c||<   ||<   Œ& |ddc| _        | _        | _        y)z&restore the cipher to it's start stateÚutf8é   r   N)	r   r   ÚencodeÚlistÚrangeÚlenÚ_sboxÚ_iÚ_j)r	   r
   ÚsboxÚkÚlkÚiÚjs          r   r   zArcIV.reset   sÓ   € ð 	�	‰	€#Üˆs„^˜3Ÿ:™: fÓ-�SÜ	Œe�C‹jÓ	€$Ü
Œ5�‹:Ó€!Ü
ˆ3ƒx€"Øò €aØ
ˆa�"‰f‰+˜Ñ
€1€Q‚4ðð €!Ü�‹:ò '€aØ	ˆ$ˆq‰'‰	�!�A‘$‰˜#Ñ€1Ø˜1‘g˜t A™wÐ€4ˆ�7ˆD�ŠGð'ð "& q¨!Ð€$„*ˆdŒg�t•wr   c                 ó´  — | j                   | j                  | j                  }}}t        |t        «      rt        |j                  d«      «      nt        |t        «      rt        |«      n|dd }t        |«      }d}||k  rW|dz   dz  x| _        }|||   z   dz  x| _        }||   ||   c||<   ||<   ||   |||   ||   z   dz     z  ||<   |dz  }||k  rŒW|S )zn
		return the list of encoded bytes of B, B might be a string or a
		list of integers between 0 <= i <= 255
		r   Nr   é   r   )	r   r   r   Ú
isinstanceÚstrr   r   Úbytesr   )r	   ÚBr   r   r   ÚCÚnÚps           r   Ú_encodezArcIV._encode*   sò   € ð
 �z‰z˜4Ÿ7™7 D§G¡Gˆ1ˆ€$ä *¨1¬SÔ 1„dˆ1�8‰8�FÓÔÄ:ÈaÔPUÔCV¼¸Q¼Ð\]Ñ^_Ð\`€!Ü	ˆ!ƒf€!Ø€!Ø	ˆ!Šà�a‘%˜3‘Ð€4„7ˆQØ�d˜1‘g‘+ Ñ$Ð$€4„7ˆQà˜1‘g˜t A™wÐ€4ˆ�7ˆD�‰Gà
ˆA‰$��t˜A‘w  a¡Ñ(¨CÑ/Ñ0Ñ
0€1€Q�4Øˆ�6€1ð 	
ˆ!‹ð 
€(r   c                 ó6   — t        | j                  |«      «      S )zArcIV encode string S)r!   r&   )r	   ÚSs     r   r   zArcIV.encode?   s   € ä	ˆt�|‰|˜A‹Ó	Ðr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r&   r   © r   r   r   r   	   s   „ ñòò,ò*ó* r   r   s   #Eg‰«Íïs   u·‡€™àÅ–)r
   ÚinputÚoutputs           s   t”ÂçKys   Þ‰A£7]:s   ï#Es
             s
   Ö¡A§ì<8ß½as   s   u•ÃæJ	xJÔR3ŽýšéI��=vS4I¶w�ÊØÇŠ�+©¬f]SÕœ&ÂÑÄ�Áë¾æmk¶¹¸GÂZ‘Dz•ç^NñgyÍè¿
•…2¯–‰DOÓw�˜ýËÔç&Vu ™Ì~£Äª££‡Ò;�»ÍB¡½1zCÝ¥«ˆ–®€Á‹
ömÿ1–ëxNIZÒÎ�×÷r¨G¶_b	;¹åºS/¯ìGPƒ#æq2}ùDD2ËsgÎÈ/]DÀÐgÖP uÍKpÞÝwë›#k[tG9mb‰t!Ô=ù´.Dn5Žœ©²NËïØç¨wï–��ì›=5¥X\°	)/ÍçµìfÙKä@U¦ÙÝÃo”‡÷Ë')BdE™…Á]S¡Œ†Lã¢·UW“˜�&R¬òãn#‘¾äÝSõý³[Ùœs]=›Ã5îžö›8g¿-{Ñê¥•Ø¿ÀoøÓ	ëlª l€zb>øL=3Á•Ò>ã ÄàU�WÈ"Ô¸ÅiØI®Õ�N×óyXkKö„íjŸt†Ô›œK­›¢K–«ù$7,Š�ÿ±U5I §z=µòá¹ŸÍ†`†:šÔ«ä¤‰4=ÝåB¦XU@ýh<¿ØÀš(MêÌLÞþX¾q7Tq&ÈÔž'U«·é@°Àc                 ó6   — t        |«      j                  | «      S )z.One-line shortcut for making an encoder object©r   r   ©Útextr
   s     r   r   r   È   s   € äˆc‹
×Ñ˜$ÓÐr   c                 ó6   — t        |«      j                  | «      S )zOne-line shortcut for decodingr1   r2   s     r   Údecoder5   Ì   s   € ô 	ˆc‹
×Ñ˜$ÓÐr   Ú__main__r
   r.   r/   r   N)r,   ÚsplitÚ__all__Ú__version__Úreportlab.lib.utilsr   r   Ú_TESTSr   r5   r)   r   ÚtÚor-   r   r   ú<module>r>      sû   ðñð 	"×'Ñ'Ó)€Ø€Ý )÷8 ñ 8 ðv 
-Ø.Ø/ñ	ð 
-Ø.Ø/ñð 
-Ø.Ø/ñð 
Ø6Ø7ñð 
-ð3ðh3ñmjð1C€òJ ò ð
 ˆZÒØ€Ø
ò 	€QÙˆAˆe‰Hƒo×Ñ˜Q˜w™ZÓ(€!ÙˆAˆe‰Hƒo×Ñ˜Q˜x™[Ó)€!Ø€q�&�!ñ	ð r   