
    e`                     d    d dl Z d dlZd dlZej        dk    ZdZddZd Zd Zerd Z	nd	 Z	d
 Z
dS )    Nwin32s(   ^(#!(?:[ ]*)(/(?:\\ |[^ \n\r\t])*)(.*))$textc                 r   t           r|dk    r|                    dd          }t          | d          5 }|                                }|                    d           t          ||||          }||k    r)|                    |           |                                 d d d            d S # 1 swxY w Y   d S )Nr   \/zrb+r   )on_winreplaceopenreadseekreplace_prefixwritetruncate)path
new_prefixplaceholdermodefhoriginal_datadatas          3lib/python3.11/site-packages/conda_pack/prefixes.pyupdate_prefixr   ;   s     3$&..  ''c22
	dE		 	b		



mT;
KK =  HHTNNNKKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A+B,,B03B0c                    |dk    rt          | ||          }n|dk    rt          | |                    d          |                    d                    }t          s`t	          |          t	          |           k    r@d                    t	          |           t	          |                    }t          |          nt          d|z            |S )Nr   binaryutf-8znFound mismatched data length in binary file:
original data length: {len_orig!d})
new data length: {len_new!d}
)len_origlen_newzInvalid mode: %r)text_replacebinary_replaceencoder   lenformat
ValueError)r   r   r   r   data2messages         r   r   r   M   s    v~~T;
;;			t*11'::)0099; ;  	&#e**D		118  T(+E

   4 4 
 W%%%+d2333L    c                 z    |                      |                    d          |                    d                    S )Nr   )r	   r    r   r   r   s      r   r   r   `   s2    <<**733Z5F5Fw5O5OPPPr&   c                     |                                 }|                                 }|| vr| S t          | ||          S )N)lower"replace_pyzzer_entry_point_shebangr(   s      r   r   r   e   sF    !''))%%''
d""K1$ZPPPr&   c                     fd}t          j        t          j                  dz             }|                    ||           S )zPerform a binary replacement of `data`, where ``placeholder`` is
        replaced with ``new_prefix`` and the remaining string is padded with null
        characters.  All input arguments are expected to be bytes objects.c                    |                                                                }t                    t                    z
  |z  }|dk     rt          d          |                                                                d|z  z   S )Nr   znegative padding    )groupcountr!   r#   r	   )match
occurancespaddingr   r   s      r   r	   zbinary_replace.<locals>.replacer   sz    ,,[99J;''#j//9ZGG{{ !3444;;==((jAAEGOSSr&   s	   ([^ ]*?) )recompileescapesub)r   r   r   r	   pats    ``  r   r   r   m   s\    
	T 	T 	T 	T 	T 	T j;//.@AAwww%%%r&   c                 .   dx}}|                      d          }|dk    r| |dz   |dz            }t          j        d|          \  }}||z
  |z
  }	| |	d         }
|	dk    r7|                      dd|	          }|dk    r| ||	         }|dk    r
| d|         }|
r||rz|rxt          |d          r|                    d	          }t          |d          r|                    d	          }|                    ||          }d
                    |||
g          } | S )zCode adapted from pyzzer. This is meant to deal with entry point exe's
    created by distlib, which consist of a launcher, then a shebang, then a zip
    archive of the entry point code to run.  We need to change the shebang.
    Ns   PKr         z<LLs   #!r    r   r&   )rfindstructunpackhasattrr    r	   join)all_datar   r   launchershebangposend_cdrcdr_size
cdr_offsetarc_posr   s              r   r+   r+   }   sL   0 Hw
..
'
'C
axx38C"H,-%}UG<<*.:-!Q;;..733Caxx"3w;/77'~H 	;G 	; 	;{H-- :)0099z8,, 8'..w77
ook:>>Gxx7D 9::HOr&   )r   )r4   r=   sysplatformr   SHEBANG_REGEXr   r   r   r   r+    r&   r   <module>rM      s   L 
			  



		 
		    $  &Q Q Q 
 &Q Q Q Q& & & - - - - -r&   