U
    •uÄcŠ  ã                   @   s¢   z d dl mZ d dl mZ eZW n| ek
rœ   ze W n ek
rP   eZY nX d dlmZ G dd„ de	ƒZG dd„ de	ƒZ
G dd	„ d	e	ƒZddd„ZY nX d
S )é    )ÚXorMaskerNull)ÚcreateXorMasker)Úarrayc                   @   s2   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ ZdS )r   ©Ú_ptrNc                 C   s
   d| _ d S ©Nr   r   ©ÚselfÚmask© r   úgc:\users\psant\downloads\hotstarbackend\school\venv38\Lib\site-packages\autobahn\websocket\xormasker.pyÚ__init__8   s    zXorMaskerNull.__init__c                 C   s   | j S ©Nr   ©r	   r   r   r   Úpointer;   s    zXorMaskerNull.pointerc                 C   s
   d| _ d S r   r   r   r   r   r   Úreset>   s    zXorMaskerNull.resetc                 C   s   |  j t|ƒ7  _ |S r   )r   Úlen)r	   Údatar   r   r   ÚprocessA   s    zXorMaskerNull.process)N©Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   r   r   r   r   r   r   r   r   3   s
   
r   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚXorMaskerSimple)r   Ú_mskc                 C   s&   t |ƒdkst‚d| _td|ƒ| _d S )Né   r   ÚB)r   ÚAssertionErrorr   r   r   r   r   r   r   r   I   s    zXorMaskerSimple.__init__c                 C   s   | j S r   r   r   r   r   r   r   N   s    zXorMaskerSimple.pointerc                 C   s
   d| _ d S r   r   r   r   r   r   r   Q   s    zXorMaskerSimple.resetc                 C   sR   t |ƒ}td|ƒ}t|ƒD ].}||  | j| jd@  N  < |  jd7  _q| ¡ S )Nr   é   é   )r   r   Úxranger   r   Útobytes)r	   r   ÚdlenÚpayloadÚkr   r   r   r   T   s    
zXorMaskerSimple.processNr   r   r   r   r   r   E   s
   r   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚXorMaskerShifted1)r   Ú	_mskarrayc                 C   s²   t |ƒdkst‚d| _tdƒtdƒtdƒtdƒg| _tdƒD ]p}| jd  ||d@  ¡ | jd  ||d d@  ¡ | jd  ||d d@  ¡ | jd  ||d d@  ¡ q<d S )Nr   r   r   r   r    é   )r   r   r   r   r'   r!   Úappend)r	   r
   Újr   r   r   r   `   s    zXorMaskerShifted1.__init__c                 C   s   | j S r   r   r   r   r   r   r   j   s    zXorMaskerShifted1.pointerc                 C   s
   d| _ d S r   r   r   r   r   r   r   m   s    zXorMaskerShifted1.resetc                 C   s^   t |ƒ}td|ƒ}| j| jd@  }t|ƒD ]}||  ||d@  N  < q*|  j|7  _| ¡ S )Nr   r   )r   r   r'   r   r!   r"   )r	   r   r#   r$   Zmskr%   r   r   r   r   p   s    
zXorMaskerShifted1.processNr   r   r   r   r   r&   \   s
   
r&   Nc                 C   s$   |d ks|dk rt | ƒS t| ƒS d S )Né€   )r   r&   )r
   Úlengthr   r   r   Úcreate_xor_maskery   s    r-   )N)Zwsaccel.xormaskr   r   r-   ÚImportErrorr!   Ú	NameErrorÚranger   Úobjectr   r&   r   r   r   r   Ú<module>   s   
