
    kfA=                         d dl mZ dZdZd dlmZ d dlmZ d Z G d de          Z	d	 Z
d
 Zd Zd Zedk    r e             dS dS )    )print_functionz3.3.0)USPS_4State)Barcode)asNativec                     t          |           }|dd         |dd                                         z   }|                    d          r
|dd         }|S )znormalized hexN   l)hexlowerendswith)irs     a/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/reportlab/graphics/barcode/usps4s.pynhexr   
   sP    AA	"1"aekkmmAzz#"AcrcFH    c                      e Zd ZdZdZdZdZdZ	  edddd          Z	 ed	d
d	d
          Z
 edddd          ZdHdZd Zd Z ee          Zd Z ed e          Zd Z ed e          Zd  Z ed! e          Zd" Z ed# e          Zd$ Z ed% e          Zd& Z ed' e          Zd( Z ee          Zd) Z ee          Zd* Z ee          Zd+ Z ee          Zd, Z ee          Zd- Z ee          Zd.Zd/Z ed0           Z ed1           Z ed2             Z!e!j"        d3             Z!ed4             Z#e#j"        d5             Z#ed6             Z$e$j"        d7             Z$ ed8           Z% ed9           Z&ed:             Z'ed;             Z(e'j"        d<             Z'e(j"        d=             Z(d> Z)d? Z*dId@Z+dA Z,dB Z- ee-dC           Z-dD Z.dJdFZ/dGS )Kr   zC USPS 4-State OneView (TM) barcode. All info from USPS-B-3200A
          r   T)g      ?gQ?)g+?gv/?)FTAD)g      gQ)g+gv/)r   r   r   r   )gQ?g?)g_L?g?)      ?r   )y&1?r   )widthpitchhczvcz)gx&?gq=
ףp?)g/$?{Gz?)gx&gq=
ףp)g/$g{Gz)r   r   r   r   )r    r    01234567094987654321 c                    |                                   t          |t                    rt          |          nt	          |          }|sEt          |          dv r|d d         |dd          }}nOt          dt          |          z            t          |          dvrt          dt          |          z            || _        || _         | j	        di | d S )N)            r$   z;value+routing length must be 20, 25, 29 or 31 digits not %d)   	   r   z/routing length must be 5, 9 or 11 digits not %d )
_init
isinstanceintstrr   len
ValueError	_tracking_routing_setKeywords)selfvalueroutingkwds       r   __init__zUSPS_4State.__init__?   s    

(s33HE


% 	_5zz]**!&ssU233Zw !^adejakak!klll\\))NQTU\Q]Q]]^^^  C     r   c                 >    d | _         d | _        d | _        d | _        d S N)_bvalue
_codewords_characters	_barcodesr4   s    r   r+   zUSPS_4State._initN   s#    r   c                 L    ||          }d|d         d|z
  z  ||d         z  z   z  S )NH   r   r   r*   )kindr   sVs       r   scalezUSPS_4State.scaleT   s/    dG1Q41:a!f$%%r   c                 <    |                                   || _        d S r:   )r+   r1   )r4   trackings     r   rG   zUSPS_4State.trackingY   s    

!r   c                     | j         S r:   )r1   r?   s    r   <lambda>zUSPS_4State.<lambda>\       T^ r   c                 <    |                                   || _        d S r:   )r+   r2   )r4   r6   s     r   r6   zUSPS_4State.routing^   s    

r   c                     | j         S r:   )r2   r?   s    r   rI   zUSPS_4State.<lambda>a   s    DM r   c                 Z    d | _         t          t          d|          d          | _        d S )Nr   r   )_sizedminmax
_widthSizer4   r5   s     r   	widthSizezUSPS_4State.widthSizec   s&    c!Ell1--r   c                     | j         S r:   )rQ   r?   s    r   rI   zUSPS_4State.<lambda>f   s    do r   c                 "    d | _         || _        d S r:   )rN   _heightSizerR   s     r   
heightSizezUSPS_4State.heightSizeh   s     r   c                     | j         S r:   )rV   r?   s    r   rI   zUSPS_4State.<lambda>k   s	    t'7 r   c                 "    d | _         || _        d S r:   )rN   	_fontSizerR   s     r   fontSizezUSPS_4State.fontSizem   s    r   c                     | j         S r:   )rZ   r?   s    r   rI   zUSPS_4State.<lambda>p   rJ   r   c                 "    d | _         || _        d S r:   )rN   _humanReadablerR   s     r   humanReadablezUSPS_4State.humanReadabler   s    #r   c                     | j         S r:   )r^   r?   s    r   rI   zUSPS_4State.<lambda>u   s	    $*= r   c                    | j         }|st| j        }t          |          }	 |dk    rd}nR|dk    rt          |          dz   }n9|dk    rt          |          dz   }n |dk    rt          |          dz   }nt          n#  t	          d|z            xY w| j        }|dd	         }	 |d
z  }|t          |d                   z  }|dz  }|t          |d                   z  }n#  t	          d|z            xY wd	}dD ]z\  }}|}	||z  }||	|         }	 t          |          |k    rt          t          |          D ]}	|d
z  }|t          ||	                   z  } a#  t	          d|||fz            xY w|| _         |S )a  convert the 4 state string values to binary
        >>> print(nhex(USPS_4State('01234567094987654321','').binary))
        0x1122103b5c2004b1
        >>> print(nhex(USPS_4State('01234567094987654321','01234').binary))
        0xd138a87bab5cf3804b1
        >>> print(nhex(USPS_4State('01234567094987654321','012345678').binary))
        0x202bdc097711204d21804b1
        >>> print(nhex(USPS_4State('01234567094987654321','01234567891').binary))
        0x16907b2a24abc16a2e5c004b1
        r   r(   r   r)   i r   iP;z@Problem converting %s, routing code must be 0, 5, 9 or 11 digitsr   
   z:Problem converting %s, barcode identifier must be 2 digits))zspecial services   )zcustomer identifier   )zsequence numberr)   z+Problem converting %s, %s must be %d digits)r;   r6   r/   r-   r0   rG   range)
r4   r5   r6   nrG   svaluer   namendjs
             r   binaryzUSPS_4State.binaryw   s     '	!lGGAoa44EETTLLNEETTLL/EEUULL3EE$$o !cfm!mnnn}Hac]FhVAY'
VAY'h !]`f!fgggAe 
g 
gRR!!A#g6{{Bj(8"2YY 0 0VAY/0g$%RV\]abdUe%efff DLs%   AA> >B':C" "C6A	EE5c                    | j         sD| j        }t          |d          \  }}t          |d          \  }}t          |d          \  }}t          |d          \  }}t          |d          \  }}t          |d          \  }}t          |d          \  }}	t          |d          \  }}
t          |d          \  }}d|cxk    rdk    s,n J dt          t	          |                    d|            t          |          | _        | j        dz  r|dz  }|d	z  }t          t          t          |||
|	||||||f
                    | _         | j         S )
zconvert binary value into codewords
        >>> print(USPS_4State('01234567094987654321','01234567891').codewords)
        (673, 787, 607, 1022, 861, 19, 816, 1294, 35, 602)
        i|  iU  r   i  zimproper value z passed to _2codewords A-->   i  r   )	r<   rk   divmodr   r-   _crc11_fcstuplemap)r4   r5   r   JIHGr   Er   CBs               r   	codewordszUSPS_4State.codewords   sV   
  	DKE%$$DAq!D>>DAq!D>>DAq!D>>DAq!D>>DAq!D>>DAq!D>>DAq!D>>DAq!D>>DAqa9999999999RUVYZ_V`V`RaRaRaRabcbcd999uDIy~'qCxqFA#CQq1Qq1Qq,A$B$BCCDOr   c                 N    t          dd          | j        _        | j        j        S )Nr(     )_initNof13Table	__class__table1r?   s    r   r   zUSPS_4State.table1   s!     /$ 7 7~$$r   c                 N    t          dd          | j        _        | j        j        S )Nr   N   )r}   r~   table2r?   s    r   r   zUSPS_4State.table2   s!     /" 5 5~$$r   c                 *   | j         s| j        }| j        }g }|j        }| j        }| j        }t          d          D ]=}||         }|dk    r	||         }	n||dz
           }	||z	  dz  r|	 dz  }	 ||	           >t          |          | _         | j         S )z convert own codewords to characters
        >>> print(' '.join(hex(c)[2:] for c in USPS_4State('01234567094987654321','01234567891').characters))
        dcb 85c 8e4 b06 6dd 1740 17c6 1200 123f 1b2b
        rb   i  r|   r   i  )r=   rz   rp   appendr   r   re   rq   )
r4   rz   fcsrx   aCr   r   r   cwcs
             r   
characterszUSPS_4State.characters   s    
  	(I)CAB[F[F2YY  q\t88r
AAr$wAFA: $VA1$QxxDr   c                     | j         so| j        }g }|j        }| j        }| j        D ]6\  }}}} ||||         |z	  dz  d||         |z	  dz  z  z                       7d                    |          | _         | j         S )zGet 4 state bar codes for current routing and tracking
        >>> print(USPS_4State('01234567094987654321','01234567891').barcodes)
        AADTFFDFTDADTAADAATFDTDDAAADDTDTTDAFADADDDTFFFDDTTTADFAAADFTDAADA
        r   r   r"   )r>   r   r   
_bits2barstable4join)	r4   rx   ry   aB	bits2barsdcdbacabs	            r   barcodeszUSPS_4State.barcodes   s    
 ~ 	(AABI#{ A A2b9quby!mQ2A->>?@@@@WWQZZDN~r   )A)   r      rc   )r   rb   r   r   )r)      r      )r(   r(   rd   r   )r   r)   rc   r   )r   r   r(   r   )r   r(   r   r   )r   r   r)   r   )rd   rc   r   rb   )rc   r)   r   rd   )r(   r   r   r   )r   r(   r   r   )r)   rb   r   r   )r   r   rd   r   )rc   rd   r   r)   )r   rc   r   rd   )rd   r   r   r   )r   r   r)   r)   )r   rb   r(   r   )r   r   rc   r   )rd   r   r   r   )r   r   r   r   )r)   r   rc   r   )r   rd   r   r   )r(   r   r   rb   )r   r   rd   r)   )r   rc   r   r   )r(   r   r)   r   )r   rd   r   rb   )rc   r   r   r(   )r   r   r(   r   )r   r   r   r)   )rd   r   r)   rd   )r   rd   r   r   )r   r   rc   r   )r(   r)   r   r   )r   r   rd   r   )r)   r(   r   r   )rc   rc   r   r   )r   r   r   r   )r   rc   r   r   )rd   rb   rc   r(   )r   r   r)   r   )r   r   r(   rd   )r   r   r   r   )r   r   r   r   )r(   rb   rc   r   )r)   rc   r   r)   )rd   r(   r   r   )r   r   r   r   )r(   r   r   r(   )r   rc   r   rb   )rd   r   r)   r   )rc   r   r   rd   )r   r   r   r)   )r(   r   r   r   )r   r(   r   r   )r)   r   r   r   )r   rc   rd   rd   )r   r   rc   r   )r   r   r   r(   )r   r   r   r   )r   r)   r)   r   )rd   r   r(   rc   )rc   rb   r   r   r   r   r   r   c                 D    |                      d| j        | j                  S )Nr   )rE   
dimensions
widthScaler?   s    r   rI   zUSPS_4State.<lambda>  s    

5QUQ`0a0a r   c                 D    |                      d| j        | j                  S )Nr   )rE   r   heightScaler?   s    r   rI   zUSPS_4State.<lambda>  s    djjttO_.`.` r   c                 p    d| j         v r| j         d         S |                     d| j        | j                  S )N	_barWidthr   __dict__rE   r   r   r?   s    r   barWidthzUSPS_4State.barWidth  s6    $-''=--zz'$/$/BBBr   c                 ~    | j         d         \  }}dt          t          |dz  |          |          z  | j        d<   d S )Nr   rA         R@r   r   rO   rP   r   r4   r5   rf   xs       r   r   zUSPS_4State.barWidth  sA    w'1%'Cd
1,=,=a(@(@%@k"""r   c                 p    d| j         v r| j         d         S |                     d| j        | j                  S )N_pitchr   r   r?   s    r   r   zUSPS_4State.pitch  s6    t}$$=**zz'$/$/BBBr   c                 ~    | j         d         \  }}dt          t          |dz  |          |          z  | j        d<   d S )Nr   rA   r   r   r   r   s       r   r   zUSPS_4State.pitch!  sA    w'1"$SU4Z):):1%=%="=hr   c                     d| j         v r| j         d         S |                     d| j        | j                  |                     d| j        | j                  z
  S )N
_barHeightr   )r   rE   topsr   bottomsr?   s    r   	barHeightzUSPS_4State.barHeight&  sR    4=((=..zz#di(899DJJs4<X\Xh<i<iiir   c                    | j         d         d         | j        d         d         z
  }| j         d         d         | j        d         d         z
  }dt          t          |dz  |          |          z  x}| j        d<   ||z
  ||z
  z  | _        d S )Nr   r   r   rA   r   r   )r   r   rO   rP   r   rW   r   s       r   r   zUSPS_4State.barHeight,  s    IcN1S 1! 44IcN1S 1! 44.0StA5F5Fq1I1I.IIl+ 19qs+r   c                 H    t          dt          d| j                            S Nr   r   )rO   rP   rS   r?   s    r   rI   zUSPS_4State.<lambda>3  s    s1S4>-B-B'C'C r   c                 H    t          dt          d| j                            S r   )rO   rP   rW   r?   s    r   rI   zUSPS_4State.<lambda>4  s    Ac!DO.D.D(E(E r   c                 8    |                                   | j        S r:   )computeSize_widthr?   s    r   r   zUSPS_4State.width6  s    {r   c                 8    |                                   | j        S r:   )r   _heightr?   s    r   heightzUSPS_4State.height;  s    |r   c                     d S r:   r*   r4   vs     r   r   zUSPS_4State.widthA      r   c                     d S r:   r*   r   s     r   r   zUSPS_4State.heightD  r   r   c                     t          | dd           s|| j        }| j        }| j        }| j        }| j        }| j        }| j        }d|z  |z   d|z  z   | _        d|z  |z   | _	        | j
        r| xj	        | j        dz  |z   z  c_	        d| _        d S d S )NrN   r   @   g333333?T)getattrr   r   r   r   r   horizontalClearZoneverticalClearZoner   r   r_   r[   rN   )r4   wshsr   r   r   r   r   s           r   r   zUSPS_4State.computeSizeH  s    tHT** 	B!BI}HJE*C(CC%(*RX5DKS5?DL! 6c 1# 55DKKK	 	r   c                 F    |                                   | j        | j        fS r:   )r   r   r   )r4   aWaHs      r   wrapzUSPS_4State.wrapW  s#    z4;&&r   c                     i }| j         }dD ]H}|                     || j        |          |z   }||                     || j        |          |z   |z
  f||<   I|S )Nr   )r   rE   r   r   )r4   y0vInfor   bys         r   _getBarVInfozUSPS_4State._getBarVInfo[  sk    " 	; 	;A

1T\"--b0AAdi33B6::E!HHr   c                 :   |                                   | j        }| j        }| j        }|}|| j        dz  z   }| j        }|                     |          }| j        D ]*}||         \  }	}
|                     ||	||
           ||z  }+| 	                                 d S )Ng      ?)
r   r   r   r   r   r   r   r   rectdrawHumanReadable)r4   r   r   bwr   r   dwr   r   ybhbs              r   drawzUSPS_4State.drawc  s    &$]##Z!!"%% 	 	A1XFBIIa2b!!!GAA     r   c                     | j         }| j        }|r|fpd}d                    |dd         |dd         |dd         |dd          f|z             S )Nr*    r   r   r(   r   )rG   r6   r   )r4   rG   r6   s      r   r5   zUSPS_4State.valuer  sb    =,(wj.Bxx!A#x!}Xad^HRSSMRSZZ[[[r   c                 8    | j                             d|          S )NrG   )r   __setitem__rR   s     r   rI   zUSPS_4State.<lambda>w  s    dm.G.G
SX.Y.Y r   c                     | j         rO| j        }| j        }| j        }| j        }| j        d|z  z   d|z  z   }|                     ||| j        ||           d S d S )Nr   g?)r_   r   r   fontNamer[   r   annotater5   )r4   r   r   r   r[   r   s         r   r   zUSPS_4State.drawHumanReadabley  sp     	>*C(C}H}Hqu$S\1AMM#a
8H=====	> 	>r   middlec           	      <    t          j        | |||||d           d S )Nstart)anchor)r   r   )r4   r   r   textr   r[   r   s          r   r   zUSPS_4State.annotate  s(    a$xHHHHHHr   N)r!   r"   )r   )r   )0__name__
__module____qualname____doc__rQ   rV   rZ   r^   dictr   r   r   r8   r+   rE   staticmethodrG   propertyr6   rS   rW   r[   r_   rk   rz   r   r   r   r   r   r   r   r   r   setterr   r   r   r   r   r   r   r   r   r   r5   r   r   r*   r   r   r   r      s        JKIN%t	   $!!!!	   T"#	  
4! ! ! !  & & & LE" " " x33H==H      h11'::G. . . 55i@@I! ! ! 77
CCJ   x33H==H$ $ $ H==mLLM4 4 4j XfF  , ##I% % % XfF% % % XfF     . *%%J   x!!HF$ !J"(#a#abb !`!`aaC C XC
 _A A _A C C XC
 \> > \> j j Xj
 , , , CCDDJ(EEFFK  X   X
 \  \]  ]  ' ' '   ! ! !\ \ \
 HUYYZZE> > >I I I I I Ir   r   c                    t          t          |                     dd         }ddt          |          z
  z  |z   }d}d}t          |dd         d          dz  }t          dd	          D ]"}||z  d
z  r	|dz  |z  }n|dz  }|dz  }|dz  }#t          ddd          D ]R}t          |||dz            d          dz  }t          d	          D ]"}||z  d
z  r	|dz  |z  }n|dz  }|dz  }|dz  }#S|S )aV  
    >>> usps = [USPS_4State('01234567094987654321',x).binary for x in ('','01234','012345678','01234567891')]
    >>> print(' '.join(nhex(x) for x in usps))
    0x1122103b5c2004b1 0xd138a87bab5cf3804b1 0x202bdc097711204d21804b1 0x16907b2a24abc16a2e5c004b1
    >>> print(' '.join(nhex(_crc11(x)) for x in usps))
    0x51 0x65 0x606 0x751
    r   N0   i5  i     r(   r   rm   r   rc   )r   r-   r/   re   )r5   hexbytesgpr   datar   r   s          r   ro   ro     sK    CJJ#HBs8}}$%h.H	B
Cx|B"D1QZZ  $J 	62+CCq&Cu
1T!__  8AacE?2&&)q 	 	Ad
E! Avrk1f5LCQJDD	 Jr   c                 R    d}t          d          D ]}|dz  }|| dz  z  }| dz  } |S )zureverse unsigned 13 bit number
    >>> print(_ru13(7936), _ru13(31), _ru13(47), _ru13(7808))
    31 7936 7808 47
    r      r   )re   )r   r   r   s      r   _ru13r     sD    
 	
A2YY  	a	QU
	aHr   c                 F   |dgz  }d}|dz
  }t          d          D ]g}d}t          d          D ]}||d|z  z  dk    z  }|| k    r,t          |          }||k     rB||k    r|||<   |dz  }S|||<   |dz  }|||<   |dz  }h||dz   k    sJ d|dz   || fz              |S )a,  create and return table of 13 bit values with N bits on
    >>> T = _initNof13Table(5,1287)
    >>> print(' '.join('T[%d]=%d' % (i, T[i]) for i in (0,1,2,3,4,1271,1272,1284,1285,1286)))
    T[0]=31 T[1]=7936 T[2]=47 T[3]=7808 T[4]=55 T[1271]=6275 T[1272]=6211 T[1284]=856 T[1285]=744 T[1286]=496
    Nr   r   i    r   z!u+1(%d)!=l(%d) for %d of 13 table)re   r   )	NlenTr   r	   ur   bcr   r   s	            r   r}   r}     s     	dVA	AQA4[[  r 	  	 A1ad8a-BBq55(!HHQ33a44AaDFAAAaDFAAaDFAAqs8888AaC!9D888Hr   c                  2    dd l } |                                 S )Nr   )doctesttestmod)r   s    r   _testr     s    NNN??r   __main__N)
__future__r   __version____all__!reportlab.graphics.barcode.commonr   reportlab.lib.utilsr   r   r   ro   r   r}   r   r   r*   r   r   <module>r     s    & % % % % %
 5 5 5 5 5 5 ( ( ( ( ( (  rI rI rI rI rI' rI rI rIh  @
 
 
  6   z	EGGGGG r   