§
    £”jŒ  ã                   óœ   — d dl mZ d dlmZ d dlmZmZ d dl	m
Z
 ddddd	œZd
dddddddddddœZ G d„ de¦  «        Z G d„ de¦  «        ZdS )é    )Úinch)ÚBarcode)ÚdigitsÚ
whitespace)ÚasNativez	||  |  ||z	| || || |z	|| | | ||z	||| | |||)ÚAÚBÚCÚDz...||z..|.|z..||.z.|..|z.|.|.z.||..z|...|z|..|.z|.|..z||...ú|)Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9Ú0ÚSc                   ón   — e Zd ZdZedz  Zedz  Zedz  Zedz  Zedz  Z	dZ
dd	„Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚFIMa‘  
    FIM (Facing ID Marks) encode only one letter.
    There are currently four defined:

    A   Courtesy reply mail with pre-printed POSTNET
    B   Business reply mail without pre-printed POSTNET
    C   Business reply mail with pre-printed POSTNET
    D   OCR Readable mail without pre-printed POSTNET

    Options that may be passed to constructor:

        value (single character string from the set A - D. required.):
            The value to encode.

        quiet (bool, default 0):
            Whether to include quiet zones in the symbol.

    The following may also be passed, but doing so will generate nonstandard
    symbols which should not be used. This is mainly documented here to
    show the defaults:

        barHeight (float, default 5/8 inch):
            Height of the code. This might legitimately be overriden to make
            a taller symbol that will 'bleed' off the edge of the paper,
            leaving 5/8 inch remaining.

        lquiet (float, default 1/4 inch):
            Quiet zone size to left of code, if quiet is true.
            Default is the greater of .25 inch, or .15 times the symbol's
            length.

        rquiet (float, default 15/32 inch):
            Quiet zone size to right left of code, if quiet is true.

    Sources of information on FIM:

    USPS Publication 25, A Guide to Business Mail Preparation
    http://new.usps.com/cpim/ftp/pubs/pub25.pdf
    g       ?g      °?g      ä?g      Ð?g      Þ?r   Ú c                 óì   — t          |t          ¦  «        rt          |¦  «        nt          |¦  «        }|                     ¦   «         D ]\  }}t          | ||¦  «         Œt          j        | |¦  «         d S ©N©Ú
isinstanceÚintÚstrr   ÚitemsÚsetattrr   Ú__init__©ÚselfÚvalueÚargsÚkÚvs        ún/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/reportlab/graphics/barcode/usps.pyr#   zFIM.__init__d   óo   € Ý(¨­sÑ3Ô3ÐH•�E‘
”
�
½À%¹¼ˆØ—J’J‘L”Lð 	 ð 	 ‰DˆAˆqÝ�D˜!˜QÑÔÐÐåÔ˜˜uÑ%Ô%Ð%Ð%Ð%ó    c                 óü   — d| _         d| _        | j        D ]9}|t          v rŒ|dv r"| j        |                     ¦   «         z   | _        Œ2d| _         Œ:t          | j        ¦  «        dk    rt          d¦  «        ‚| j        S )Né   r   ÚabcdABCDr   z#Input must be exactly one character)ÚvalidÚ	validatedr&   Ústring_whitespaceÚupperÚlenÚ
ValueError©r%   Úcs     r*   ÚvalidatezFIM.validatek   s†   € ØˆŒ
ØˆŒØ”ð 	ð 	ˆAØÕ%Ð%Ð%ØØ�j��Ø!%¤°!·'²'±)´)Ñ!;�”�à�”
�
åˆtŒ~ÑÔ !Ò#Ð#ÝÐBÑCÔCÐCàŒ~Ðr,   c                 óf   — d| _         | j        D ]}| j         t          |         z   | _         Œ| j         S ©Nr   )Ú
decomposedÚencodedÚ_fim_patternsr6   s     r*   Ú	decomposezFIM.decompose{   s9   € ØˆŒØ”ð 	Að 	AˆAØ"œoµ¸aÔ0@Ñ@ˆDŒOˆOàŒÐr,   c                 ó¾   — t          | j        ¦  «        dz
  | j        z  | j        z   | _        | j        r| xj        | j        | j        z   z  c_        | j        | _	        d S ©Nr.   )
r4   r;   Ú
spaceWidthÚbarWidthÚ_widthÚquietÚlquietÚrquietÚ	barHeightÚ_height©r%   s    r*   ÚcomputeSizezFIM.computeSize‚   sV   € Ý˜4œ?Ñ+Ô+¨aÑ/°4´?ÑBÀTÄ]ÑRˆŒØŒ:ð 	5ØˆKŒK˜4œ;¨¬Ñ4Ñ4ˆKŒKØ”~ˆŒˆˆr,   c                 óî   — |                       ¦   «          | j        r| j        pd}| j        D ]4}|dk    r"|                      |d| j        | j        ¦  «         || j        z  }Œ5|                      ¦   «          d S )Nr   r   ç        )	Ú
_calculaterD   rE   r;   ÚrectrB   rG   rA   ÚdrawHumanReadable)r%   Úleftr7   s      r*   ÚdrawzFIM.drawˆ   s�   € Ø�ŠÑÔÐØŒzÐ)˜dœkÐ.¨QˆØ”ð 	$ð 	$ˆAØ�CŠxˆxØ—	’	˜$  T¤]°D´NÑCÔCÐCØ�D”OÑ#ˆDˆDØ×ÒÑ Ô Ð Ð Ð r,   c                 ó   — | j         S r   )r&   rI   s    r*   Ú
_humanTextzFIM._humanText‘   s
   € ØŒzÐr,   N©r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rB   rA   rG   rF   rE   rD   r#   r8   r>   rJ   rQ   rS   © r,   r*   r   r   6   s¶   € € € € € ð&ð &ðN �xÑ €HØ˜Ñ"€JØ˜Ñ €IØ�T‰]€FØ�YÑ€FØ€Eð&ð &ð &ð &ðð ð ð ð ð ð&ð &ð &ð!ð !ð !ðð ð ð ð r,   r   c                   ój   — e Zd ZdZdZedz  Zedz  Zedz  Zedz  Z	dd„Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚPOSTNETa‰  
    POSTNET is used in the US to encode "zip codes" (postal codes) on
    mail. It can encode 5, 9, or 11 digit codes. I've read that it's
    pointless to do 5 digits, since USPS will just have to re-print
    them with 9 or 11 digits.

    Sources of information on POSTNET:

    USPS Publication 25, A Guide to Business Mail Preparation
    http://new.usps.com/cpim/ftp/pubs/pub25.pdf
    r   gš™™™™™©?g      À?g;ßO�—n’?g)\�Âõ(œ?r   c                 óì   — t          |t          ¦  «        rt          |¦  «        nt          |¦  «        }|                     ¦   «         D ]\  }}t          | ||¦  «         Œt          j        | |¦  «         d S r   r   r$   s        r*   r#   zPOSTNET.__init__¥   r+   r,   c                 ó  — d| _         d| _        d}| j        D ]I}|t          dz   v rŒ|t          v r*|dz   }|dk    r| j         dz   | _         | j         |z   | _         ŒBd| _        ŒJt          | j         ¦  «        dvrd| _        | j         S )Nr   r.   r   ú-é   )é   é
   é   )r1   r0   r&   r2   Ústring_digitsr4   )r%   Úcountr7   s      r*   r8   zPOSTNET.validate¬   s¢   € ØˆŒØˆŒ
ØˆØ”ð 		ð 		ˆAØÕ&¨Ñ,Ð-Ð-ØØ•mÐ#Ð#Ø ™	�Ø˜A’:�:Ø%)¤^°cÑ%9�D”NØ!%¤°!Ñ!3�”�à�”
�
åˆtŒ~ÑÔ kÐ1Ð1ØˆDŒJàŒ~Ðr,   c                 ó  — d| _         d}| j        D ]B}|t          v r"| j         |z   | _         |t          |¦  «        z   }Œ-|dk    rŒ4t	          d¦  «        ‚d|z
  dz  }| j         t          |¦  «        z   dz   | _         | j         S )Nr   r   r^   zInvalid character in inputra   )r<   r1   rc   r   r5   Úrepr)r%   Úcheckr7   s      r*   ÚencodezPOSTNET.encodeÀ   s“   € ØˆŒØˆØ”ð 	?ð 	?ˆAØ•MÐ!Ð!Ø#œ|¨aÑ/�”Ø¥ A¡¤™��Ø�c’�Øå Ð!=Ñ>Ô>Ð>Ø�e‘˜rÑ!ˆØ”|¥d¨5¡k¤kÑ1°CÑ7ˆŒØŒ|Ðr,   c                 óf   — d| _         | j        D ]}| j         t          |         z   | _         Œ| j         S r:   )r;   r<   Ú_postnet_patternsr6   s     r*   r>   zPOSTNET.decomposeÏ   s:   € ØˆŒØ”ð 	Eð 	EˆAØ"œoÕ0AÀ!Ô0DÑDˆDŒOˆOØŒÐr,   c                 ó    — t          | j        ¦  «        | j        z  t          | j        ¦  «        dz
  | j        z  z   | _        | j        | _        d S r@   )r4   r;   rB   rA   rC   rG   rH   rI   s    r*   rJ   zPOSTNET.computeSizeÕ   sE   € Ý˜$œ/Ñ*Ô*¨T¬]Ñ:½cÀ$Ä/Ñ>RÔ>RÐUVÑ>VÐZ^ÔZiÑ=iÑiˆŒØ”~ˆŒˆˆr,   c                 ó  — |                       ¦   «          | j        | j        z
  }d}| j        D ]F}|dk    r| j        }n| j        }|                      |d| j        |¦  «         || j        z   | j        z   }ŒG|                      ¦   «          d S )Nr   ú.rL   )rM   rG   ÚshortHeightr;   rN   rB   rA   rO   )r%   ÚsdownrP   r7   Úhs        r*   rQ   zPOSTNET.drawÙ   s˜   € Ø�ŠÑÔÐØ” Ô!1Ñ1ˆØˆà”ð 	:ð 	:ˆAØ�CŠxˆxØÔ$��à”N�Ø�IŠI�d˜C ¤°Ñ2Ô2Ð2Ø˜$œ-Ñ'¨$¬/Ñ9ˆDˆDØ×ÒÑ Ô Ð Ð Ð r,   c                 ó    — | j         dd…         S )Nr.   éÿÿÿÿ)r<   rI   s    r*   rS   zPOSTNET._humanTextç   s   € ØŒ|˜A˜b˜DÔ!Ð!r,   NrT   )rU   rV   rW   rX   rD   r   rn   rG   rB   rA   r#   r8   rh   r>   rJ   rQ   rS   rY   r,   r*   r[   r[   ”   s·   € € € € € ð
ð 
ð €EØ˜‘,€KØ�u‘€IØ�e‰|€HØ˜‘€Jð&ð &ð &ð &ðð ð ð(ð ð ðð ð ð&ð &ð &ð!ð !ð !ð"ð "ð "ð "ð "r,   r[   N)Úreportlab.lib.unitsr   Ú!reportlab.graphics.barcode.commonr   Ústringr   rc   r   r2   Úreportlab.lib.utilsr   r=   rj   r   r[   rY   r,   r*   ú<module>rw      s	  ððB %Ð $Ð $Ð $Ð $Ð $Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ (Ð (Ð (Ð (Ð (Ð (ð Ø
Ø
Ø
ð	ð €ð ˜G¨gÀØ
˜G¨gÀØ
˜G¨cðð Ð ð\ð \ð \ð \ð \ˆ'ñ \ô \ð \ð|T"ð T"ð T"ð T"ð T"ˆgñ T"ô T"ð T"ð T"ð T"r,   