o
    i%                     @   s  d Z ddlZddgZdZdZg ddd	eddd
gdddedddgdddedddgddd	edddgdddedddgddd	edddgdd d!eddd"gd#d$d%eddd&gd'd(d%eddd)gd*d+d%ed,dd-gd.d/d0ed1d1dgd2d3d4ed5d5d6gd7d8d4ed5d5d9gd:d;d<edd5d=gd>d?d%ed5d5d@gdAdBd<ed5ddCgdDdEd<edFddGgdHdIdJedddKgdLdMdNedddOgdPdQd%edd5dRgdSdTd<edd5dUgdVdWd<edddXgdYdZd%ed5dd[gd\d]d<eddd^gd_d`d<ed5ddagdbdcd<eddddegdfdgdhediddjgdkdldmednddogdpdqdmedrddsgdtdudveddwdxgdydzdveddwd{gd|d}d~eddwdgdddeddwdgdddvedwddgdddvedwdwdgdddedddgdddvedwddgdddedddgdddedddgdddedddgdddedddgZdd Zi Zi Zg Z	g dZ
eD ]+Zeee
eZe	e eed Zeev redeeee< eeed1 < qdd ZG dd dejZeZdd ZeZdS )a}  
crcmod.predefined defines some well-known CRC algorithms.

To use it, e.g.:
    import crcmod.predefined
    
    crc32func = crcmod.predefined.mkPredefinedCrcFun("crc-32")
    crc32class = crcmod.predefined.PredefinedCrc("crc-32")

crcmod.predefined.Crc is an alias for crcmod.predefined.PredefinedCrc
But if doing 'from crc.predefined import *', only PredefinedCrc is imported.
    NPredefinedCrcmkPredefinedCrcFunTFzcrc-8Crc8i     z
crc-8-darcCrc8Darci9     zcrc-8-i-code	Crc8ICodei     ~   z	crc-8-ituCrc8ItuU      zcrc-8-maxim	Crc8Maximi1  z
crc-8-rohcCrc8Rohc      zcrc-8-wcdma	Crc8Wcdmai  %   zcrc-16Crc16i i=  zcrc-16-buypassCrc16Buypassi  zcrc-16-dds-110Crc16Dds110i  iϞ  zcrc-16-dect	Crc16Decti    z
crc-16-dnpCrc16Dnpie= i  i  zcrc-16-en-13757Crc16En13757i  zcrc-16-genibusCrc16Genibusi! iN  zcrc-16-maxim
Crc16MaximiD  zcrc-16-mcrf4xxCrc16Mcrf4xxio  zcrc-16-rielloCrc16RielloiMU  ic  zcrc-16-t10-difCrc16T10Difi i  zcrc-16-telediskCrc16Telediski i  z
crc-16-usbCrc16Usbiȴ  zx-25CrcX25in  xmodem	CrcXmodemi1  modbus	CrcModbusi7K  kermit	CrcKermiti!  zcrc-ccitt-falseCrcCcittFalsei)  zcrc-aug-ccittCrcAugCcitti  i  zcrc-24Crc24iLi i! zcrc-24-flexray-aCrc24FlexrayAim]i iyy zcrc-24-flexray-bCrc24FlexrayBiͫ i# zcrc-32Crc32l   	 l    l   &9 zcrc-32-bzip2
Crc32Bzip2l   y zcrc-32cCrc32Cl   Ao= l   F zcrc-32dCrc32Dl   +gP l   vUb zcrc-32-mpeg	Crc32MpegivposixCrcPosixiv^vzcrc-32qCrc32Ql   A i0jamcrc	CrcJamCrci4xferCrcXferl       l   8cz zcrc-64Crc64l           l   o$-5 z	crc-64-weCrc64Wel   6S l    l   
pIcgb zcrc-64-jones
Crc64Jonesl   5)Hl l   rZ\8U c                 C   s>   |   } | dd} | dd} | dr| tdd } | S )z
    Reduce CRC definition name to a simplified form:
        * lowercase
        * dashes removed
        * spaces removed
        * any initial "CRC" string removed
    -  crcN)lowerreplace
startswithlen)name rF   E/home/ubuntu/.local/lib/python3.10/site-packages/crcmod/predefined.py_simplify_namei   s   
rH   )rE   
identifierpolyreverseinitxor_outcheckz&Duplicate entry for '{0}' in CRC tablec                 C   s6   t t| d }|st| d }|std| |S )NzUnkown CRC name '{0}')_crc_definitions_by_namegetrH   _crc_definitions_by_identifierKeyErrorformatcrc_name
definitionrF   rF   rG   _get_definition_by_name   s   rW   c                       s   e Zd Z fddZ  ZS )r   c                    s0   t |}t j|d |d |d |d d d S NrJ   rL   rK   rM   )rJ   initCrcrevxorOut)rW   super__init__)selfrU   rV   	__class__rF   rG   r]      s   (zPredefinedCrc.__init__)__name__
__module____qualname__r]   __classcell__rF   rF   r_   rG   r      s    c                 C   s*   t | }tj|d |d |d |d dS rX   )rW   crcmodmkCrcFunrT   rF   rF   rG   r      s   ")__doc__re   __all__REVERSENON_REVERSE_crc_definitions_tablerH   rO   rQ   _crc_definitions_crc_table_headingstable_entrydictzipcrc_definitionappendrE   	ExceptionrS   rW   Crcr   r   rf   rF   rF   rF   rG   <module>   s   
 "#$&'()*+,-.2348

	