�&ǐk�@'bJ�h�ۊL'}T� :��'2�Z#$��n�a��� �>a��`��_3d�Qpt�/�P -��#5�,�M��� �pA:©�q�����NW��ډ�A���� �9nʺج���� �TSM��{J6?7��r�@�\����D��� �׶���s�f�TJj?"��D��`?��̒� b�#�%�C*v�$�{�$����5Ծ�F�s��y�e/8��h-�f�̰&(����Gj�L:U� 2�� ����v�_k����Y��gp,�k�WF�R������_C�R��N@���R�@�ߔ?A�w9���F("iNa-S���Q�o�3tDMLh*�#4k�T/iQ��Y*�G��m����)��8�hBm/�I�,g�ﯖ���Z��}�Cz�q@´��d.����L�ŕ�,��1�Z�܌�: ̪���F+J-'��c�tvJ8��]Q-��b��y �6;*J`r_�d ��'�G ~p��)'�C,�%F��E(��2�k�����lР�z�!�=t ��_�0��f7��� ;�p�|�U �%hz>ii)r7rbytesencoderrrCrDstructpackrrFrG_write _writecrc) rr!r"nldtpZcrZd2Zd3Zd4inforrr rHs     zBinHex._writeinfocCs t||j|_|j|dSr))r8crc_hqxrEr1r.rr$rrr rRsz BinHex._writecCs4|jdkrd}nd}|jt||jd|_dS)NrrMz>H)rEr1r.rPrQ)rZfmtrrr rSs  zBinHex._writecrccCs0|jtkrtd|jt||_||dS)NzWriting data at the wrong time)rJrIrrFr7rRrYrrr r.s z BinHex.writecCs,|jdkrtd|jf|t|_dS)NrzIncorrect data size, diff=%r)rFrrGrS _DID_DATArJrrrr close_datas zBinHex.close_datacCsB|jtkr||jtkr$td|jt||_||dS)Nz'Writing resource data at the wrong time)rJrZr[rrGr7rRrYrrr write_rsrcs   zBinHex.write_rsrccCsx|jdkrdSzJ|jtkr"||jtkr4td|jdkrNtd|jf|W5d|_|j}|`|XdS)NzClose at the wrong timerz$Incorrect resource-datasize, diff=%r)rJr1r/rZr[rrGrSr5rrr r/s     z BinHex.closeN) rrrrrHrRrSr.r[r\r/rrrr rAs rAc Cst|}t||}t|d*}|d}|s0q<||q |W5QRXt|d}|d}|shqt||qX| | dS)Nr) r'rArrrr.r[r(r\r/)inpoutr"r1ifprUrrr rs      c@s$eZdZddZddZddZdS)_HqxdecoderenginecCs||_d|_dS)Nr)r`eofrr`rrr rsz_Hqxdecoderengine.__init__cCsd}|}|dkr|jr|S|ddd}|j|}zt|\}|_WqWntjk rdYnX|jd}|s~td||}q6||}|t|}|s|jstdq|S)Nr-rrr6r zPremature EOF on binhex file)rbr`rr8Za2b_hqxZ Incompleterr7)rZtotalwtdZdecdatawtdr$Z decdatacurnewdatarrr rs*      z_Hqxdecoderengine.readcCs|jdSr)r`r/rrrr r/%sz_Hqxdecoderengine.closeN)rrrrrr/rrrr ras rac@s,eZdZddZddZddZddZd S) _RledecoderenginecCs||_d|_d|_d|_dS)Nr-r)r` pre_buffer post_bufferrbrcrrr r+sz_Rledecoderengine.__init__cCsD|t|jkr"||t|j|jd|}|j|d|_|Sr))r7rj_fill)rrervrrr r1s z_Rledecoderengine.readcCs|j|j|d|_|jjr>|jt|j|_d|_dSt|j}|jddtdtkrl|d}nX|jddtkr|d}n<|jddtdkr|d}n|jddtkrn|d }|jt|jd||_|j|d|_dS) Nrdr-rLr6rr ) rir`rrbrjr8Z rledecode_hqxr7RUNCHAR)rreZmarkrrr rk8s*     z_Rledecoderengine._fillcCs|jdSr)rgrrrr r/[sz_Rledecoderengine.closeN)rrrrrrkr/rrrr rh(s#rhc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)HexBincCsft|trt|d}|d}|s,td|dkr6q|dkrqBqt|}t||_d|_ | dS)Nrr zNo binhex data foundr;:r) rCrDrrrrrarhr`rE _readheader)rr`ZchZhqxifprrr r_s    zHexBin.__init__cCs |j|}t||j|_|Sr))r`rr8rXrE)rr7r$rrr _readus z HexBin._readcCsNtd|jddd@}|jd@|_||jkrDtd|j|fd|_dS)NrMrrizCRC error, computed %x, read %x)rPunpackr`rrEr)rZfilecrcrrr _checkcrczs  zHexBin._checkcrccCs|d}|t|}|d}||dd}|dd}td|ddd}td|dd d|_td|d dd|_||_t|_||j_ ||j_ ||j_ t |_ dS) Nr  rM rz>l)rtordrvrPrurFrGFNamer rrrrIrJ)rr7ZfnameresttypeZcreatorflagsrrr rss    zHexBin._readheadercGsj|jtkrtd|r,|d}t||j}n|j}d}t||krZ|||t|}q6|j||_|S)NzRead data at wrong timerr-)rJrIrminrFr7rt)rnrlrrr rs   z HexBin.readcCs6|jtkrtd|jr$||j}|t|_dS)Nzclose_data at wrong time)rJrIrrFrtrvrZrZdummyrrr r[s   zHexBin.close_datacGsZ|jtkr||jtkr$td|r>|d}t||j}n|j}|j||_||S)Nz Read resource data at wrong timer)rJrIr[rZrrrGrt)rrrrr read_rsrcs   zHexBin.read_rsrccCsD|jdkrdSz|jr"||j}|W5d|_|jXdSr))rJr`r/rGrrvrrrr r/s   z HexBin.closeN) rrrrrtrvrsrr[rr/rrrr rq^s  rqc Cst|}|j}|s|j}t|d"}|d}|s6qB||q&W5QRX||d}|rt |d}|||d}|sq||qv| | dS)NrBr]) rqr r}rrrr.r[rr(r/)r^r_r`r"r1rUrrr rs(      )rrrPr8__all__ ExceptionrrIrZr>r3rpr r'r(r0r=rArrarhrqrrrrr s*   &^*6h