
    9hy                     n    S r SSKrSSKJr  SrSrSrS\S\\   S\4S	 jrS\S\4S
 jr	S\\   S\4S jr
g)aR  Implementation of CRC-32C checksumming as in rfc3720 section B.4.
See http://en.wikipedia.org/wiki/Cyclic_redundancy_check for details on CRC-32C
This code is a manual python translation of c code generated by
pycrc 0.7.1 (http://www.tty1.net/pycrc/). Command line used:
'./pycrc.py --model=crc-32c --generate c --algorithm=table-driven'
    N)Iterable(   r   l   d l   pvB iPl   5 i5i&l   d) l   X i۲xi8(kl   ;+3 iCMl   LP~ l   '?X i$<^io^l   lDjD l   7b i4l   pP/ isӯ%i 6l   #)	 l   5 ihiW{l   Tl i]l   ^ l   HxLx iKMNiގ l   % l   )~ i*}3l   NN iLi6il   5jh l   VT iUXi_Kl   %hr iAml   B+? l   1 i~iI0l   J l   F9# iE#l   ^n i]iYBl   Z-RH l   ~tt i}QHia[l   bR ia}l   b l   v79 iuni{Al   !f l   Km@ iH+Rl   
 i	tiTgl   Wyb+ l   sED ip9i5*l   61 il8l   oQ| l   "Z i!hi%Ql   YF l   $*=` i')uBl   M~- idi;=wl   8> l   7 i)i:l   qX ifl    \ l   ez i6ibal   aZ' l   c i`rl   }L i~7TitgGl   wj l   K?V iHtiZ$
l   Y8p i\,l   _= l   E,| iF?iTql   W l   $F! ibl   Cl i@iDi9Wl   0J l   v i*	i5|zl   6#P iݛ<l   ` l   *k; i)h/l   x; i{piKcl   HM# iglEl   d/n l   \H i_<Vic/l   `t l   @(R iCl   tk iw=i_.l   \9 l   |Q% i`isl    ik2Ul   hN l   h ibFiؤql   '4T l   /Tr i,W!l   3? iİ-i0C>l   3@w l   5D i6 PiQpCl   RF6b i"el   !u/ l   NR	 iMсvii(l   jn5 l   S i;l   vz^ iuci
3l   	x l   r*d i~@i>.Sl   =B iul   f l   !i) i"fi*8l   )O l   Z3 iٜ+l   =~ i>=iml   NX l   & iǥ1i3V"l   0U! i۱l   2l l   ,AYJ i/BGi~TIl   }v l   P iZl   i ij|iol   <; l   a' ib!i\2l   _ ivIl   uEL l   Cj i@id
Yl   g:V l   Icp iJZJl   {. = ixli^l   ] l   (aF i+[il   [` i?$l   <- l   O" i7iil   s7 l   "  i!zl   g\ i\i=HOl   >Gz l   uof iviUl   }@ ij4l   i{> l   + i'i7yl   4 l   MG1 iNjl    [| i#FLiR_l   QSZ l    crcdatareturnc                    [        U[        R                  5      (       a  UR                  S:w  a  [        R                  " SU5      nOUnU [        -  n U H   nX-  S-  n[        U   U S-	  -  [        -  n M"     U [        -  $ )zUpdate CRC-32C checksum with data.
Args:
    crc: 32-bit checksum to update as long.
    data: byte array, string or iterable over bytes.
Returns:
    32-bit updated CRC-32C as long.
   B      )
isinstancearrayitemsize_MASK	CRC_TABLE)r   r   bufbtable_indexs        \C:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\aiokafka/record/_crc32c.py
crc_updater   e   sx     dEKK((DMMQ,>kk#t$
+Cw$&%2e;  ;    c                     U [         -  $ )zFinalize CRC-32C checksum.
This function should be called as last step of crc calculation.
Args:
    crc: 32-bit checksum as long.
Returns:
    finalized 32-bit checksum as long
)r   )r   s    r   crc_finalizer   x   s     ;r   c                 4    [        [        [        U 5      5      $ )zCompute CRC-32C checksum of the data.
Args:
    data: byte array, string or iterable over bytes.
Returns:
    32-bit CRC-32C checksum of data as long.
)r   r   CRC_INIT)r   s    r   r   r      s     
8T233r   )__doc__r   collections.abcr   r   r   r   intr   r   r    r   r   <module>r      so   $  $A	H C x}  &c c 4hsm 4 4r   