
    J/Ph_                       d dl Z d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZmZ d dlmZm Z m!Z! d dl"m#Z# d d	l$m%Z%m&Z&m'Z' d d
l(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQ d dlRmSZS e#dv rd dl$mTZT dZUe!jV        rejW        jX        ZYnejZ        jX        ZY eej[                   G d de
j                              Z\ eej[        dd            eej[        dd            eej[        dd            eej[        dd            eej[        dd            eej]                   G d d e                      Z^d! Z_d" Z` eeja        ejb                  d#             Zc eejb                  d$             Zd eej[                  d%             Ze eej[                  d&             Zfd' Zged(             Zhed)             Zied*             Zjed+             Zkedd,            Zl ed-.          d/             Zmd0 Zned1             Zoed2             Zped3             Zq ed-.          d4             Zre#d5v red6             Zsne#dv red7             Zsn ete#          ed8             Zue#d5v red9             Zvne#dv red:             Zvn ete#           ed-.          d;             Zwed<             Zxed=             Zy eez          d>             Z{ eej|                  d?             Z} eej~                  d@             Z eej                  dA             Z eej                  dB             Z eej                  dC             Z eej                  dD             Z eej                  dE             ZdF ZdG ZedH             ZedI             ZedJ             ZedK             ZdL Z e ee                    Z e ee                    Z eej[        dM          ddN            Z eej[        dO          ddP            Z eej[        dQ          ddR            Z eej[        dS          ddT            Z eej[        dU          dV             Z eej[        dW          ddX            Z eej[        dY          dZ             Zed[             Z eej[        d\          dd]            Z eej[        d^          dd_            Z eej[        d`          ddb            Z eej[        dc          dde            Zdf Z e ee:                    Z e ee;                    Z eej[        dg          ddh            Z eej[        di          ddk            Zdl Z  eej[        dm           ed-                       eej[        dn           edo                     dp Z e eeC                    Z e eeB                    Z eej[        dq          ddr            Zeds             Z eej[        dt          du             Z eej[        dv          dw             Zedx             Zedy             Zdz Zd{ Z eej[        d|          dd}            Z eej[        d~          dd            Z eej[        d          dd            Zedd            Zed             Zed             Zed             Z ed-.          d             Zed             Z eej                  d             Z eej                   eej                  d                         Zed             Z eej                  d             Z eej                  d             Z eej[        d          dd            Zd Z  eej[        d           eeOeM                      ed           Z  eej[        d           ee4eŦ                     d Z ed           Z e eeGeHeǦ                    Z e eeAe@eF                    Z eej[        d          d             Z eej[        d          d             Z eej[        d          d             Z eej[        d          d             Z eej[        d          d             ZddZ  eej[        d           ee:                       eej[        d           eeN                       eej[        d           eeP                       eej[        d           eeQ                       eej[        d           ee9d-                     d Zed             Zed             Zd Z e ed-                    Z e edo                    Zd Z e ee1                    Z e ee2                    Z eej[        d          d             Z eej[        d          d             Zed             Zed             Z eej[        d          d             Zed             Zed             Z eej[        d          d             Zed             Zed             Z eej[        d          d             Zed             Zed             Z eej[        d          d             Z ee          d             Zed             ZdeUz  Zed             Z ee          d             Z eej[        dæ          dĄ             Z eej[        dŦ          dƄ             Z eej        dæ          dǄ             Z eej        dŦ          dȄ             Z eej        dŦ           eej        dæ          dɄ                         Z edej[                  d˄             Z edej]                   eej                  d̈́                         ZdS )    N)IntTypeConstant)is_nonelike)
modelsregister_modelmake_attribute_wrapperunboxboxNativeValueoverloadoverload_method	intrinsicregister_jitable)lower_constant
lower_castlower_builtiniternext_implimpl_ret_new_refRefType)register_defaultStructModel)typescgutilsconfig)	PYVERSION)PY_UNICODE_1BYTE_KINDPY_UNICODE_2BYTE_KINDPY_UNICODE_4BYTE_KIND)	c_helpers)
_Py_hash_t)memcpy_region)TypingError)!_Py_TOUPPER_Py_TOLOWER_Py_UCS4_Py_ISALNUM_PyUnicode_ToUpperFull_PyUnicode_ToLowerFull_PyUnicode_ToFoldedFull_PyUnicode_ToTitleFull_PyUnicode_IsPrintable_PyUnicode_IsSpace_Py_ISSPACE_PyUnicode_IsXidStart_PyUnicode_IsXidContinue_PyUnicode_IsCased_PyUnicode_IsCaseIgnorable_PyUnicode_IsUppercase_PyUnicode_IsLowercase_PyUnicode_IsLineBreak_Py_ISLINEBREAK_Py_ISLINEFEED_Py_ISCARRIAGERETURN_PyUnicode_IsTitlecase_Py_ISLOWER_Py_ISUPPER_Py_TAB_Py_LINEFEED_Py_CARRIAGE_RETURN	_Py_SPACE_PyUnicode_IsAlpha_PyUnicode_IsNumeric_Py_ISALPHA_PyUnicode_IsDigit_PyUnicode_IsDecimalDigit)slicing))   
   )rE      )PY_UNICODE_WCHAR_KIND c                       e Zd Zd ZdS )UnicodeModelc           	         dt           j        fdt           j        fdt           j        fdt           j        fdt
          fdt          j        t           j                  fdt           j        fg}t          j	        
                    | |||           d S )Ndatalengthkindis_asciihashmeminfoparent)r   voidptrintpint32uint32r    MemInfoPointerpyobjectr   r   __init__)selfdmmfe_typememberss       U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cpython/unicode.pyrZ   zUnicodeModel.__init__T   s}    U]#uz"U[!&Z ,U];;<u~&	
 	##D#w@@@@@    N)__name__
__module____qualname__rZ    r`   r_   rK   rK   R   s(        A A A A Ar`   rK   rM   _datarN   _lengthrO   _kindrP   	_is_asciirQ   _hashc                        e Zd Z fdZ xZS )UnicodeIteratorModelc                     dt          j        t           j                  fd|j        fg}t	          t
          |                               |||           d S )NindexrM   )r   EphemeralPointeruintprM   superrk   rZ   )r[   r\   r]   r^   	__class__s       r_   rZ   zUnicodeIteratorModel.__init__k   sR    U3EK@@AGL)+"D))223IIIIIr`   )ra   rb   rc   rZ   __classcell__)rq   s   @r_   rk   rk   i   sA        J J J J J J J J Jr`   rk   c           
      T   ddl m}m}m}m}m}m}m}m}m	}	 t          d         }
 ||| ||           ||           ||           ||                    } ||
          } |            } |            } |            } |            } ||  |	|           |	|           |	|           |	|                    }|t          d          |j        }|j        }|j        }|dz   t          |          z  }||z                      |          }t          |          ||||j        fS )ztGet string data from a python string for use at compile-time to embed
    the string data into the LLVM module.
    r   )		CFUNCTYPEc_void_pc_intc_uint	c_ssize_tc_ubyte	py_objectPOINTERbyrefextract_unicodeNz1cannot extract unicode data from the given string   )ctypesrt   ru   rv   rw   rx   ry   rz   r{   r|   r   
ValueErrorvalue_kind_to_byte_widthfrom_addressbytes)objrt   ru   rv   rw   rx   ry   rz   r{   r|   extract_unicode_fnprotofnrN   rO   rP   hashvrM   nbytesouts                       r_   compile_time_get_string_datar   s   s                        
 ##45Ih	779+=+=wwu~~gfoowwy'9'9; ;E	!	"	"BY[[F577DvxxHIKKE2c55==%%++uuXeMMD|LMMM\F:D~Hqj/555FV
)
)$
/
/C::vtXu{::r`   c                    t          |          \  }}}}}|j        }	|                     |	|          }
 t          j        |          | |          }|
|_        |j                            |          |_        |j                            |          |_        |j	                            |          |_	        |j
                            d          |_
        |                                S )zf
    Get string data by `compile_time_get_string_data()` and return a
    unicode_type LLVM value
    )r   moduleinsert_const_bytesr   create_struct_proxyrM   rN   typerO   rP   rQ   	_getvalue)contextbuildertypliteral_string	databytesrN   rO   rP   r   modgvuni_strs               r_   make_string_from_constantr      s     	%^44 -IvtXu
.C		#	#C	3	3B.g)#..w@@GGL^((00GN<$$T**GL',,X66G <$$R((GLr`   c                 0    t          | |||j                  S N)r   literal_value)r   r   fromtytotyvals        r_   cast_from_literalr      s     $$ 4  r`   c                 &    t          | |||          S r   )r   )r   r   r   pyvals       r_   constant_unicoder      s    $WgsEBBBr`   c                    |j                             |          \  }}}}}} t          j        |           |j        |j                  }	||	_        ||	_        ||	_        ||	_	        ||	_
        |j                             ||          |	_        ||	_        t          j        |j        |j                                                   }
t!          |	                                |
          S )zE
    Convert a unicode str object to a native unicode structure.
    )is_error)pyapistring_as_string_size_and_kindr   r   r   r   rM   rN   rO   rP   rQ   nrt_meminfo_new_from_pyobjectrR   rS   is_not_nullerr_occurredr   r   )r   r   cokrM   rN   rO   rP   r   r   r   s              r_   unbox_unicode_strr      s     	
..s33 ,BfdHe.g)#..qy!)DDGGLGNGLGGLg;; GO GN"19ag.B.B.D.DEEHw((**X>>>>r`   c                 0    t          j        |           |j        |j        |          }|j                            |j        |j        |j                  }|j        	                    |           |j        j
                            |j        | |           |S )z@
    Convert a native unicode structure to a unicode string
    r   )r   r   r   r   r   string_from_kind_and_datarO   rM   rN   object_hashnrtdecref)r   r   r   r   ress        r_   box_unicode_strr      s    
 /g)#..qy!)3OOOG
'
+
+glGN4 4C
 GIMC---Jr`   c                       fd}|S )Nc                    |\  }}|                     |t                                                              }|                    |                    ||g                    }|                    |t          d                    S N    )bitcastr   
as_pointerloadgepzext)	r   r   	signatureargsrM   idxptrchbitsizes	           r_   codegenz#make_deref_codegen.<locals>.codegen   sn    	coodGG$4$4$?$?$A$ABB\\'++cC51122||B,,,r`   rd   r   r   s   ` r_   make_deref_codegenr      s#    - - - - - Nr`   c                 v    t          j        t           j        t           j                  }|t	          d          fS N   r   rW   rT   rU   r   	typingctxrM   offsetsigs       r_   deref_uint8r      s+    
,u}ej
1
1C"1%%%%r`   c                 v    t          j        t           j        t           j                  }|t	          d          fS N   r   r   s       r_   deref_uint16r      +    
,u}ej
1
1C"2&&&&r`   c                 v    t          j        t           j        t           j                  }|t	          d          fS r   r   r   s       r_   deref_uint32r      r   r`   c                     d }t          j        t           j        t           j        t           j        t           j                  }||fS )zmake empty string with data buffer of size alloc_bytes.

    Must set length and kind values for string after it is returned
    c           
      @   |\  }}}}t          j        t          j                  } || |          }	|                    ||                    |t          |j        d                              }
| j        	                    ||
          |	_
        ||	_        ||	_        ||	_        |                     t          d          |	_        | j                            ||	j
                  |	_        t          j        |	j        j                  |	_        |	                                S )Nr~   r   )r   r   r   unicode_typemuladdr   r   r   meminfo_allocrR   rO   rP   rN   get_constantr    rQ   meminfo_datarM   get_null_valuerS   r   )r   r   r   r   kind_valchar_bytes_val
length_valis_ascii_valuni_str_ctorr   
nbytes_vals              r_   detailsz_malloc_string.<locals>.details   s    ?C<>:| 253EFF,w00[[!(Z-5joq-I-I"K "KL L
 "+33GZHH'#++J;;{//II /0CDD  """r`   )r   r   rV   rU   rW   )r   rO   
char_bytesrN   rP   r   r   s          r_   _malloc_stringr      s;    # # #* 
U[%*ej%,
O
OC<r`   c                     t          |           }t          | |||          }t          ||t          j        d                     |S Nr   )r   r   _set_code_pointnprW   )rO   rN   rP   
char_widthss        r_   _empty_stringr     sA    $T**JtZ::AAvry||,,,Hr`   F)_nrtc                     | j         t          k    rt          | j        |          S | j         t          k    rt          | j        |          S | j         t          k    rt          | j        |          S dS r   )rg   r   r   re   r   r   r   r   )ais     r_   _get_code_pointr   "  si    w'''17A&&&	
)	)	)AGQ'''	
)	)	)AGQ''' qr`   c                       fd}|S )Nc                 J   |\  }}}dk     r#|                     |t                              }|                    |t                                                              }|                    ||                    ||g                     |                                 S r   )truncr   r   r   storer   get_dummy_value)	r   r   r   r   rM   r   r   r   r   s	           r_   r   z!make_set_codegen.<locals>.codegen3  s    c2R<<r77#3#344BoodGG$4$4$?$?$A$ABBb'++cC511222&&(((r`   rd   r   s   ` r_   make_set_codegenr   2  s#    ) ) ) ) ) Nr`   c                     t          j        t           j        t           j        t           j                  }|t          d          fS r   r   voidrT   int64rW   r   r   rM   r   r   r   s        r_   	set_uint8r  >  s/    
*U]EK
>
>C ####r`   c                     t          j        t           j        t           j        t           j                  }|t          d          fS r   r   r  s        r_   
set_uint16r  D  /    
*U]EK
>
>C $$$$r`   c                     t          j        t           j        t           j        t           j                  }|t          d          fS r   r   r  s        r_   
set_uint32r	  J  r  r`   c                    | j         t          k    rt          | j        ||           d S | j         t          k    rt          | j        ||           d S | j         t          k    rt          | j        ||           d S t          d          )Nz4Unexpected unicode representation in _set_code_point)	rg   r   r  re   r   r  r   r	  AssertionError)r   r   r   s      r_   r   r   P  s     	w'''!'1b!!!!!	
)	)	)17Ar"""""	
)	)	)17Ar"""""BD D 	Dr`   ))rE      )rE      c                     | t           k    r|S | t          k    r|t          k    r|S | S | t          k    r| S t          d          )N/Unexpected unicode representation in _pick_kindr   r   r   r  kind1kind2s     r_   
_pick_kindr  d  s^    )))L+++---+++L AC C Cr`   c                     | t           k    s|t           k    rt          d          | t          k    r|S | t          k    r|t          k    r|S | S | t          k    r| S t          d          )N!PY_UNICODE_WCHAR_KIND unsupportedr  )rH   r  r   r   r   r  s     r_   r  r  s  s    ***e7L.L.L !DEEE)))L+++---+++L AC C Cr`   c                 j    | dk    r|dk    rt          j        d          S t          j        d          S Nr~   r   )r   rW   )	is_ascii1	is_ascii2s     r_   _pick_asciir    s/    A~~)q..|A<??r`   c                 n    | t           k    rdS | t          k    rdS | t          k    rdS t          d          )Nr~         'Unexpected unicode encoding encounteredr  rO   s    r_   r   r     sD    (((1***1***1 !JKKKr`   c                     | t           k    rdS | t          k    rdS | t          k    rdS | t          k    rt	          d          t	          d          )Nr~   r  r  r  r  )r   r   r   rH   r  r   s    r_   r   r     s_    (((1***1***1*** !DEEE !JKKKr`   c                     |dk    rdS ||z   | j         k    rdS ||z   |j         k    rdS t          |          D ]:}t          | ||z             }t          |||z             }||k     r dS ||k    r dS ;dS )Nr   r   r~   )rf   ranger   )r   a_offsetbb_offsetnr   a_chrb_chrs           r_   _cmp_regionr*    s    Avvq	A		!	!r	A		!	!q1XX  8a<008a<005==22U]]11  1r`   c                 v    | dk     rt           S | dk     rt          S d}| |k    rd}t          |          t          S )zK
    Compute the minimum unicode kind needed to hold a given codepoint
       i   rI   z;Invalid codepoint. Found value greater than Unicode maximum)r   r   r   r   )cpMAX_UNICODEmsgs      r_   _codepoint_to_kindr0    sK    
 
Cxx$$	e$$ OCS//!$$r`   c                     | dk     S )z;
    Returns true if a codepoint is in the ASCII range
       rd   )r   s    r_   _codepoint_is_asciir3    s    
 8Or`   c                 D    t          | t          j                  rd }|S d S )Nc                     | j         S r   )rf   r   s    r_   len_implzunicode_len.<locals>.len_impl  s
    9r`   
isinstancer   UnicodeType)r   r7  s     r_   unicode_lenr;    s5    !U&'' 	 	 	 r`   c                 b   | j         r|j         sd S t          | t          j                  r| j        }n| }t          |t          j                  r|j        }n|}t          j        t          j        t          j        f}t          ||          }t          ||          }|r|rd }|S ||z  rd }|S d S )Nc           	          | d u }|d u }|s|r|r|rdS dS t          |           } t          |          }t          |           t          |          k    rdS t          | d|dt          |                     dk    S )NTFr   )strlenr*  )r   r%  a_noneb_nones       r_   eq_implzunicode_eq.<locals>.eq_impl  s    $YF$YF ! ! !f !4 5AAAA1vvQuq!Q3q6622a77r`   c                     dS NFrd   r   r%  s     r_   rB  zunicode_eq.<locals>.eq_impl  s    5r`   )is_internalr9  r   Optionalr   r:  StringLiteralUnicodeCharSeq)r   r%  check_acheck_baccept	a_unicode	b_unicoderB  s           r_   
unicode_eqrO    s    M am !U^$$ &!U^$$ &!4e6JKF7F++I7F++I Y 	8 	8 	8 	Y	 	 	 		 r`   c                     | j         r|j         sd S t          j        t          j        t          j        f}t          | |          }t          ||          }|r|rd }|S ||z  rd }|S d S )Nc                     | |k     S r   rd   rE  s     r_   ne_implzunicode_ne.<locals>.ne_impl  s    Q<r`   c                     dS )NTrd   rE  s     r_   rB  zunicode_ne.<locals>.eq_impl  s    4r`   )rF  r   r:  rH  rI  r9  )r   r%  rL  rM  rN  rR  rB  s          r_   
unicode_nerT    s    M am !4e6JKF1f%%I1f%%I Y 	  	  	 	Y	 	 	 		 r`   c                     t          | t          j        t          j        f          }t          |t          j        t          j        f          }|r|rd }|S d S d S )Nc                     t          t          |           t          |                    }t          | d|d|          }|dk    rdS |dk    r t          |           t          |          k     S dS )Nr   r   TFminr?  r*  r   r%  minleneqcodes       r_   lt_implzunicode_lt.<locals>.lt_impl"  sd    QQ((F Aq!V44F||t11vvA&5r`   r9  r   r:  rH  )r   r%  rM  rN  r\  s        r_   
unicode_ltr^    o    1u0%2EFGGI1u0%2EFGGI 	Y 		 	 	 	 	 	 	r`   c                     t          | t          j        t          j        f          }t          |t          j        t          j        f          }|r|rd }|S d S d S )Nc                     t          t          |           t          |                    }t          | d|d|          }|dk    rdS |dk    r t          |           t          |          k    S dS )Nr   r~   TFrW  rY  s       r_   gt_implzunicode_gt.<locals>.gt_impl2  sd    QQ((F Aq!V44F{{t11vvA&5r`   r]  )r   r%  rM  rN  rb  s        r_   
unicode_gtrc  -  r_  r`   c                     t          | t          j        t          j        f          }t          |t          j        t          j        f          }|r|rd }|S d S d S )Nc                     | |k     S r   rd   rE  s     r_   le_implzunicode_le.<locals>.le_implB      A;r`   r]  )r   r%  rM  rN  rf  s        r_   
unicode_lerh  =  m    1u0%2EFGGI1u0%2EFGGI Y 	 	 	   r`   c                     t          | t          j        t          j        f          }t          |t          j        t          j        f          }|r|rd }|S d S d S )Nc                     | |k      S r   rd   rE  s     r_   ge_implzunicode_ge.<locals>.ge_implL  rg  r`   r]  )r   r%  rM  rN  rl  s        r_   
unicode_germ  G  ri  r`   c                 |    t          | t          j                  rt          |t          j                  rd }|S d S d S )Nc                 *    t          | |          dk    S Nr   )_findrE  s     r_   contains_implz'unicode_contains.<locals>.contains_implT  s    A;;##r`   r8  )r   r%  rr  s      r_   unicode_containsrs  Q  sV    !U&'' Jq%:K,L,L 	$ 	$ 	$ 	   r`   c                 0   | }t          | t          j                  r| j        }n!t          | t          j                  r| j        }t          j        t          j        f}|4t          ||          s&t          d	                    |||                     dS dS )zCheck object belongs to one of specific types
    ty: type
        Type of the object
    name: str
        Name of the object
    N"{}" must be {}, not {})
r9  r   Omittedr   rG  r   IntegerNoneTyper"   format)tynamethetyaccepteds       r_   unicode_idx_check_typer~  Z  s     E"em$$ 	B	'	' u~.HE8!<!<3::42NNOOO r`   c                     t          | t          j                  s0d                    |t          j        |           }t	          |          dS )z$Check object belongs to unicode typeru  N)r9  r   r:  ry  r"   )rz  r{  r/  s      r_   unicode_sub_check_typer  n  sI    b%+,, '..tU5FKK# r`   c                 ,    | d|t           dz
  z  z  z  } | S Nr~   _BLOOM_WIDTHmaskr   s     r_   
_bloom_addr  w  s     Q2)*+,DKr`   c                 (    | d|t           dz
  z  z  z  S r  r  r  s     r_   _bloom_checkr  }  s    1|a/0122r`   c                    t          |          }|dk    r|S |dz
  x}}t          ||          }t          j        d          }t	          ||          }	t          |          D ]0}
t          ||
          }t	          |	|          }	||k    r||
z
  dz
  }1|}
|
||z
  k    rt          | ||
z             }||k    r{d}||k     r5t          | |
|z             }t          ||          }||k    rn|dz  }||k     5||k    r|
S t          | ||
z   dz             }t          |	|          dk    r|
|z  }
n5|
|z  }
n/t          | ||
z   dz             }t          |	|          dk    r|
|z  }
|
dz  }
|
||z
  k    dS )zLeft finder.r   r~   r   )r?  r   r   rU   r  r#  r  )rM   substrstartendmgapmlastlastzeror  r   r   jhaystack_ch	needle_chs                  r_   _default_findr    s    	FAAvva%C%65))D:a==DdD!!D5\\    VQ''$##::!)a-CA
sQw,,T519--::Ae))-dAE::+FA66	)++Q e)) Ezz uqy1}55BD"%%**QS uqy1}55BD"%%**Q	Q/ sQw,,2 2r`   c                    t          |          }|dk    r|S |dz
  x}}t          |d          }t          d|          }|}	|	dk    r6t          ||	          }
t          ||
          }|
|k    r|	dz
  }|	dz  }	|	dk    6||z
  }	|	|k    rt          | |	          }
|
|k    r~|}|dk    r5t          | |	|z             }t          ||          }||k    rn|dz  }|dk    5|dk    r|	S t          | |	dz
            }
|	|k    rt          ||
          dk    r|	|z  }	n8|	|z  }	n2t          | |	dz
            }
|	|k    rt          ||
          dk    r|	|z  }	|	dz  }	|	|k    dS )zRight finder.r   r~   r   )r?  r   r  r  )rM   r  r  r  r  skipr  mfirstr  r   r   r  r  r  s                 r_   _default_rfindr    s    	FAAvv
q5D5VQ''Fa  DA
a%%VQ''$##<<q5D	Q a%% 	aA
u**T1%%<<Aa%%-dAE::+FA66	)++Q a%% Avv q1u--B5yy\$33q88QT	 !q1u--B5yy\$33q88Q	Q3 u**6 2r`   c                      d fd	}|S )z%Generate finder either left or right.Nc                     t          |           }t          |          }|d}||}t          |||          \  }}||z
  |k     rdS  | |||          S )Nr   r   )r?  _adjust_indices)rM   r  r  r  rN   
sub_length	find_funcs         r_   implzgenerate_finder.<locals>.impl  sl    T[[
=E;C$VUC88
s;##2yvuc222r`   NNrd   )r  r  s   ` r_   generate_finderr    s(    3 3 3 3 3 3 Kr`   findc                     t          |t          j                  rdd}|S t          |d           t          |d           t	          |d           t
          S )zImplements str.find()Nc                 F    |                      t          |                    S r   )r  r>  rM   r  r  r  s       r_   	find_implzunicode_find.<locals>.find_impl  s    99S[[)))r`   r  r  r  r  )r9  r   rI  r~  r  rq  )rM   r  r  r  r  s        r_   unicode_findr    sh     &%.// 	* 	* 	* 	*5'***3&&&68,,,Lr`   rfindc                     t          |t          j                  rdd}|S t          |d           t          |d           t	          |d           t
          S )zImplements str.rfind()Nc                 F    |                      t          |                    S r   )r  r>  r  s       r_   
rfind_implz!unicode_rfind.<locals>.rfind_impl  s    ::c&kk***r`   r  r  r  r  )r9  r   rI  r~  r  _rfind)rM   r  r  r  r  s        r_   unicode_rfindr  	  sh     &%.// 	+ 	+ 	+ 	+5'***3&&&68,,,Mr`   rindexc                 n    t          |d           t          |d           t          |d           dd}|S )zImplements str.rindex()r  r  subNc                 ^    |                      |||          }|dk     rt          d          |S Nr   zsubstring not found)r  r   r   r  r  r  results        r_   rindex_implz#unicode_rindex.<locals>.rindex_impl   s4    eS))A::2333r`   r  r~  r  )r   r  r  r  r  s        r_   unicode_rindexr    sP     5'***3&&&3&&&    r`   rm   c                 n    t          |d           t          |d           t          |d           dd}|S )zImplements str.index()r  r  r  Nc                 ^    |                      |||          }|dk     rt          d          |S r  )r  r   r  s        r_   
index_implz!unicode_index.<locals>.index_impl2  s4    UC((A::2333r`   r  r  )r   r  r  r  r  s        r_   unicode_indexr  +  sP     5'***3&&&3&&&    r`   	partitionc                 6   |}t          |t          j                  r|j        }n!t          |t          j                  r|j        }t          j        t          j        f}|6t          ||          s&d                    d||          }t          |          d }|S )zImplements str.partition()Nru  sepc                 x   t          |          }t          | j        d| j                  }t	          |          }| j        |j        k     st	          |           |k     r| ||fS |dk    rt          d          |                     |          }|dk     r| ||fS | d|         || ||z   t	          |                    fS Nr   empty separator)r>  r   rg   rh   r?  r   r  rM   r  	empty_str
sep_lengthposs        r_   r  zunicode_partition.<locals>.implM  s    #hh!$*a@@	XX
:	!!SYY%;%;I--??.///iinn77I--AcE{CcJ&6s4yy&@!AAAr`   
r9  r   rv  r   rG  r   r:  rI  ry  r"   rM   r  r|  r}  r/  r  s         r_   unicode_partitionr  =       E#u}%% 		C	(	( !5#78HE8!<!<'..uhDD#B B B" Kr`   countc                     t          |           t          |           t          |t          j                  rdd}|S d}t	          |                    t          |                              )Nc                 b   d}t          |           }t          |          }t          ||d          }t          |||          }||z
  dk     s||k    rdS | ||         } t          |           }d|}}|dk    r|dz   S ||z   |k    r*| |||z            |k    r|dz  }||z  }n|dz  }||z   |k    *|S Nr   r~   )r?  _normalize_slice_idx_count)srcr  r  r  r  src_lensub_lens          r_   
count_implz!unicode_count.<locals>.count_implh  s    E#hhG#hhG.ugqAAE,S'7CCCU{Q%'//qeck"C#hhGG3E!||{"7?g--uuw./366QJEW$EEQJE 7?g-- Lr`   z+The substring must be a UnicodeType, not {}r  )_count_args_types_checkr9  r   r:  r"   ry  r   )r  r  r  r  r  	error_msgs         r_   unicode_countr  a  sx     E"""C   #u()) 	 	 	 	0 =I
i&&tCyy11
2
22r`   
rpartitionc                 6   |}t          |t          j                  r|j        }n!t          |t          j                  r|j        }t          j        t          j        f}|6t          ||          s&d                    d||          }t          |          d }|S )zImplements str.rpartition()Nru  r  c                 x   t          |          }t          | j        d| j                  }t	          |          }| j        |j        k     st	          |           |k     r||| fS |dk    rt          d          |                     |          }|dk     r||| fS | d|         || ||z   t	          |                    fS r  )r>  r   rg   rh   r?  r   r  r  s        r_   r  z unicode_rpartition.<locals>.impl  s    #hh!$*a@@	XX
:	!!SYY%;%;i--??.///jjoo77i--AcE{CcJ&6s4yy&@!AAAr`   r  r  s         r_   unicode_rpartitionr    r  r`   c                 f    || k    r| }|dk     r|| z  }|dk     rd}|dk     r|| z  }|dk     rd}||fS r   rd   )rN   r  r  s      r_   r  r    sZ    
V||
Qwwv77Cqyy199E#:r`   
startswithc                    t          |          s)t          |t          j                  st	          d          t          |          s)t          |t          j                  st	          d          t          |t          j                  r%t          |j        t          j                  rdd}|S t          |t          j                  rdd}|S t          |t          j                  rdd}|S t	          d          )Nz:When specified, the arg 'start' must be an Integer or Nonez8When specified, the arg 'end' must be an Integer or Nonec                 D    |D ]}|                      |||          r dS dS NTF)r  )r   prefixr  r  items        r_   startswith_tuple_implz1unicode_startswith.<locals>.startswith_tuple_impl  s:        <<eS11  44 5r`   c                 J    |                      t          |          ||          S r   )r  r>  )r   r  r  r  s       r_   startswith_char_seq_implz4unicode_startswith.<locals>.startswith_char_seq_impl  s    <<FUC888r`   c                     t          |           t          |          }}|d}||}t          |||          \  }}||z
  |k     rdS |dk    rdS | ||         }t          |d|d|          dk    S Nr   FTr?  r  r*  )r   r  r  r  rN   prefix_lengths_slices          r_   startswith_unicode_implz3unicode_startswith.<locals>.startswith_unicode_impl  s    $'FFCKKMF}{(<<JE3U{]**u!!tc	lGw61mDDIIr`   z9The arg 'prefix' should be a string or a tuple of stringsr  )	r   r9  r   rw  r"   UniTupledtyper:  rI  )r   r  r  r  r  r  r  s          r_   unicode_startswithr    sK   u Jj&F&F JHJ J 	J s HJsEM$B$B HFH H 	H &%.)) (Iv|U%677(I	 	 	 	 %$	FE0	1	1 I	9 	9 	9 	9 ('	FE-	.	. I	J 	J 	J 	J$ '& GI I 	Ir`   endswithc                    |@t          |t          j        t          j        t          j        f          st          d          |@t          |t          j        t          j        t          j        f          st          d          t          |t          j        t          j        f          rdd}|S t          |t          j                  rdd}|S t          |t          j	                  rdd}|S d S )Nz!The arg must be a Integer or Nonec                 H    |D ]}|                      |||          du r dS dS r  )r  )r   r  r  r  r  s        r_   endswith_implz'unicode_endswith.<locals>.endswith_impl  s?        ::dE3//47744 8 5r`   c                    t          |           }t          |          }|d}||}t          |||          \  }}||z
  |k     rdS |dk    rdS | ||         } t          |           |z
  }t          | ||d|          dk    S r  r  )r   r  r  r  rN   r  r   s          r_   r  z'unicode_endswith.<locals>.endswith_impl  s    VVFVJ}{(<<JE3U{Z''uQt%)AVVj(Fq&&!Z@@AEEr`   c                 J    |                      t          |          ||          S r   )r  r>  )r   r  r  r  s       r_   r  z'unicode_endswith.<locals>.endswith_impl  s    ::c&kk5#666r`   r  )
r9  r   rv  rw  rx  r"   Tupler  r:  rI  )r   r  r  r  r  s        r_   unicode_endswithr    s   MZ05050@ A AM =>>>K:cEM,1M,1N,< = =K =>>>&5;788 	 	 	 	 &%+,, 	F 	F 	F 	F& &%.// 	7 	7 	7 	7 r`   
expandtabsr   c                 (   |}t          |t          j                  r|j        }n!t          |t          j                  r|j        }t          j        t          f}|3t          ||          s#t          d	                    ||                    dd}|S )zImplements str.expandtabs()Nz"tabsize" must be {}, not {}r   c                    t          |           }dx}}d}t          |          D ]}t          | |          }|t          k    r=d}|dk    r4|||z  z
  }|t          j        |z
  k    rt          d          ||z  }||z  }Z|t          j        dz
  k    rt          d          |dz  }|dz  }|t          t          fv rd}|s| S t          | j
        || j                  }	dx}}t          |          D ]}t          | |          }|t          k    rE|dk    r>|||z  z
  }||z  }t          |||z             D ]}
t          |	|
t                     ||z  }b|dz  }t          |	||           |dz  }|t          t          fv rd}|	S )Nr   FTznew string is too longr~   )r?  r#  r   r;   sysmaxsizeOverflowErrorr<   r=   r   rg   rh   r   r>   )rM   tabsizerN   r  line_posfoundr   
code_pointincrr   r   s              r_   expandtabs_implz+unicode_expandtabs.<locals>.expandtabs_impl2  s   THv 	! 	!A(q11JW$$Q;;"h&89D3;---+,DEEE$HIAs{Q&&'(@AAAAQ,0C!DDD H 	KDJ4>::Hv 	! 	!A(q11JW$$Q;;"h&89D$H$QD11 = ='S)<<<<IAAQ
333Q,0C!DDD H
r`   r   )
r9  r   rv  r   rG  r   rw  intr"   ry  )rM   r  r|  r}  r  s        r_   unicode_expandtabsr  "  s     E'5=)) 	GU^	,	, s#HE8!<!<*11(GDDF F 	F, , , ,\ r`   splitr   c                 ^   |dk    s3t          |t          j        t          j        t          j        f          sd S t          |t          j                  rdd}|S t          |t          j                  rdd}|S |+t          |t          j                  st          |dd          dd}|S d S )Nr   c                 J    |                      t          |          |          S )N)maxsplit)r  r>  )r   r  r  s      r_   
split_implz!unicode_split.<locals>.split_implk  s    773s88h7777r`   c                 `   t          |           }t          |          }|dk    rt          d          g }d}d}|dk    r_|dk    rYt          |d          }t          |          D ]8}t          | |          |k    r"|                    | ||                    |dz   }9nld}	||k     rd|dk    s|	|k     rXt          | ||d|          dk    r*|                    | ||                    ||z  }|}|	dz  }	n|dz  }||k     r|dk    R|	|k     X||k    r|                    | |d                     |S )Nr   r  r~   r   )r?  r   r   r#  appendr*  )
r   r  r  a_lensep_lenpartsr  r   sep_code_pointsplit_counts
             r_   r	  z!unicode_split.<locals>.split_implp  su   FFE#hhG!|| !2333EDC!||B!0a!8!8 << ' 'C&q#...@@QtCx[111"Qw'
  Ekkx2~~'2X'='="1c37;;q@@QtCx[111w"#q(q Ekkx2~~'2X'='= u}}QtuuX&&&Lr`   r   Fc                 b   t          |           }g }d}d}d}d}t          |          D ]`}t          | |          }	t          |	          }
|r|
r&|}d}+|
s.|                    | ||                    d}|dz  }|dk    r||k    r na||k    r|s|                    | |d                     |S )Nr   TFr~   r   )r?  r#  r   r,   r  )r   r  r  r  r  r  r   r  in_whitespace_blockr  is_whitespaces              r_   split_whitespace_implz,unicode_split.<locals>.split_whitespace_impl  s    FFEEDCK"&U|| " ",Q44
 2: > >& "$ 4".3++( "QtCx[111.2+#q(#r>>kX.E.E!Eu}}%8}QtuuX&&&Lr`   rp  )	r9  r   rv  rw  IntegerLiteralrI  r:  rx  getattr)r   r  r  r	  r  s        r_   unicode_splitr  c  s    NNx%-"'"6"8 9 9  t#u+,, 	8 	8 	8 	8#u()) F%!	 !	 !	 !	D 	
377C%((0	 	 	 	@ %$C 10r`   c                      d fd	}|S )z@Generate whitespace rsplit func based on either ascii or unicodeNr   c                 P   |dk     rt           j        }g }t          |           dz
  }|dk    r|dk    r't          | |          } |          sn|dz  }|dk    '|dk     rnb|}|dz  }|dk    r't          | |          } |          rn|dz  }|dk    '|                    | |dz   |dz                       |dz  }|dk    |dk    rS|dk    r't          | |          } |          sn|dz  }|dk    '|dk    r |                    | d|dz                       |d d d         S Nr   r~   r   )r  r  r?  r   r  )rM   r  r  r  r   r  r  isspace_funcs          r_   rsplit_whitespace_implz?generate_rsplit_whitespace_impl.<locals>.rsplit_whitespace_impl  s   a<<{HIIMllq&&,T155
#|J// Q	 q&&
 1uuAFAq&&,T155
<
++ Q	 q&&
 MM$q1uQU{+,,,MH! ll$ 66 q&&,T155
#|J// Q	 q&&
 Avvd1QU7m,,,ddd|r`   rp  rd   )r  r  s   ` r_   generate_rsplit_whitespace_implr    s*    $ $ $ $ $ $L "!r`   rsplitc                    d } ||dt           j        t           j        t           j        f            ||dt           j        t
          f           |&t          |t           j        t           j        f          rdd}|S dd}|S )	zImplements str.unicode_rsplit()c                     | }t          | t          j                  r| j        }n!t          | t          j                  r| j        }|4t          ||          s&t          d                    |||                     dS dS )z.Check object belongs to one of specified typesNru  )r9  r   rv  r   rG  r   r"   ry  )rz  r{  r}  r|  s       r_   _unicode_rsplit_check_typez2unicode_rsplit.<locals>._unicode_rsplit_check_type  s    b%-(( 	HEEEN++ 	GEZx%@%@)00xDDF F F r`   r  r  Nr   c                 T    | j         rt          | ||          S t          | ||          S r   )rh   ascii_rsplit_whitespace_implunicode_rsplit_whitespace_impl)rM   r  r  s      r_   r  z.unicode_rsplit.<locals>.rsplit_whitespace_impl  s1    ~ I3D#xHHH1$XFFFr`   c                 4   t          |          }| j        |j        k     s t          |           t          |          k     r| gS d }|dk     rt          j        }t          |          }|dk    rt          d          |dk    r || ||          S g }t          |           }|dk    rL|                     |d|          }|dk     rn-|                    | ||z   |                    |}|dz  }|dk    L|                    | d|                    |d d d         S )Nc                 t   g }t          |d          }t          |           dz
  x}}|dk    r\|dk    rVt          | |          }||k    r/|                    | |dz   |dz                       |dz
  x}}|dz  }|dz  }|dk    r|dk    V|dk    r |                    | d|dz                       |d d d         S r  )r   r?  r  )rM   r   r  r  ch_code_pointr   r  data_code_points           r_   _rsplit_charz9unicode_rsplit.<locals>.rsplit_impl.<locals>._rsplit_char  s    F+B22MIIM!Aq&&X\\"1$":":"m33MM$q1uq1u}"5666EMAMHQ q&&X\\ Bwwd1q1u9o...$$B$<r`   r   r  r~   )r  r  r   )r>  rg   r?  r  r  r   r  r  )rM   r  r  r)  r  r  r  r  s           r_   rsplit_implz#unicode_rsplit.<locals>.rsplit_impl  s<   #hh:	!!SYYS%9%96M	  	  	 " a<<{HXX
??.///??<c8444IIll**Sq*11CQwwMM$sZ/12333AMH ll 	d1Q3i   ddd|r`   rp  )r   r:  rI  rx  rw  r  r9  rv  )rM   r  r  r!  r  r*  s         r_   unicode_rsplitr+    s    F F F sEE,=,1,@,1N,< = = = xemS5IJJJ
{ju~u}&EFF{	G 	G 	G 	G
 &%- - - -^ r`   center c                    t          |t          j                  st          d          t          |t          j                  rdd}|S |dk    s5t          |t          j        t          j        f          st          d          dd}|S )NThe width must be an Integerr-  c                 H    |                      |t          |                    S r   )r,  r>  stringwidthfillchars      r_   center_implz#unicode_center.<locals>.center_implC  s    ==H666r`   "The fillchar must be a UnicodeTypec                     t          |           }t          |          }|dk    rt          d          ||k    r| S ||z
  }|dz  ||z  dz  z   }||z
  }||z  }||k    r|| z   |z   S || z   ||z  z   S )Nr~   5The fill character must be exactly one character longr  r?  r   )	r2  r3  r4  str_lenfillchar_len	allmarginlmarginrmarginl_strings	            r_   r5  z#unicode_center.<locals>.center_implK  s    f++8}}1 . / / / GMGO	>i%&7!&;<g%g%gf$x//f$7(:;;r`   r-  r9  r   rw  r"   rI  rv  r:  )r2  r3  r4  r5  s       r_   unicode_centerrB  =  s    eU]++ :8999(E011 	7 	7 	7 	7OOx%-1B!CDD >???< < < <* r`   c                      d fd	}|S )Nr-  c                 ,   t          |t          j                  st          d          t          |t          j                  rrdd}|S dd}|S |dk    s5t          |t          j        t          j        f          st          d          dfd	}|S )Nr/  r-  c                 H    |                      |t          |                    S r   )ljustr>  r1  s      r_   
ljust_implz<gen_unicode_Xjust.<locals>.unicode_Xjust.<locals>.ljust_implj      !<<s8}}===r`   c                 H    |                      |t          |                    S r   )rjustr>  r1  s      r_   
rjust_implz<gen_unicode_Xjust.<locals>.unicode_Xjust.<locals>.rjust_impln  rH  r`   r6  c                     t          |           }t          |          }|dk    rt          d          ||k    r| S |||z
  z  }r| |z   S || z   S )Nr~   r8  r9  )r2  r3  r4  r:  r;  newstrSTRING_FIRSTs         r_   r  z6gen_unicode_Xjust.<locals>.unicode_Xjust.<locals>.implv  sw    &kkGx==Lq    "2 3 3 3 %'/2F '&&r`   r@  rA  )r2  r3  r4  rG  rK  r  rN  s         r_   unicode_Xjustz(gen_unicode_Xjust.<locals>.unicode_Xjustd  s    %// 	><===h 455 	" "> > > >!!> > > >!!C8emU5F%GHH  BCCC	' 	' 	' 	' 	' 	'" r`   r@  rd   )rN  rO  s   ` r_   gen_unicode_XjustrP  c  s*    # # # # # #J r`   rJ  rF  Tc                       fd}|S )zDGenerate splitlines performer based on ascii or unicode line breaks.c                    t          |           }g }dx}}||k     r||k     r't          | |          } 
|          rn|dz  }||k     '|}||k     rX|dz   |k     rFt          | |          }t          | |dz             }	t          |          rt          |	          r|dz  }|dz  }|r|}|                    | ||                    |}||k     |S r  )r?  r   r7   r6   r  )rM   keependsrN   r  r   r  r  eolcur_cpnext_cpis_line_break_funcs             r_   r  z&generate_splitlines_func.<locals>.impl  s   T	A&jjf**,T155
%%j11 Q	 f** C6zzq56>>,T155F-dAE::G+F33 w8O8O QQ CMM$qu+&&&A+ &jj. r`   rd   )rW  r  s   ` r_   generate_splitlines_funcrX    s#        < Kr`   
splitlinesc                 L   |}t          |t          j                  r|j        }n!t          |t          j                  r|j        }t          j        t          t          j        t          f}|4t          ||          s$t          d                    d||                    dd}|S )zImplements str.splitlines()Nru  rS  Fc                 P    | j         rt          | |          S t          | |          S r   )rh   _ascii_splitlines_unicode_splitlines)rM   rS  s     r_   splitlines_implz+unicode_splitlines.<locals>.splitlines_impl  s,    > 	5$T8444"4222r`   F)r9  r   rv  r   rG  r   rw  r  Booleanboolr"   ry  )rM   rS  r|  r}  r^  s        r_   unicode_splitlinesrb    s     E(EM** 	Hen	-	- sEM48HE8!<!<%,,Z8LLN N 	N3 3 3 3 r`   c           
      Z   t          |          }|dk    rdS t          |           }|dz
  |z  }| j        }| j        }|D ]>}|t          |          z  }t          ||j                  }t	          ||j                  }?t          |||          }|d         }	t          |d|	dt          |	                     t          |	          }
t          d|          D ]T}t          ||
| d|           |
|z  }
||         }	t          ||
|	dt          |	                     |
t          |	          z  }
U|S )Nr    r~   )r?  rg   rh   r  r  r   _strncpyr#  )r  r  	parts_lenr  rN   rO   rP   pr  part
dst_offsetr   s               r_   	join_listrj    s?   E

IA~~r #hhG!mw&F9D}H 6 6#a&&$((x55422F 8DVQaT+++TJQ	""    S!W555g
SzT1c$ii888c$ii

Mr`   joinc                 J   t          |t          j                  rJt          |j        t          j                  rd }|S t          |j        t          j                  rd }|S d S t          |t          j                  rd }|S t          |t          j                  rd }|S d S )Nc                 "    t          | |          S r   rj  )r  r  s     r_   join_list_implz$unicode_join.<locals>.join_list_impl  s     e,,,r`   c                 :    d |D             }t          | |          S )Nc                 ,    g | ]}t          |          S rd   r>  .0rg  s     r_   
<listcomp>z8unicode_join.<locals>.join_list_impl.<locals>.<listcomp>  s    000Q#a&&000r`   rn  )r  r  _partss      r_   ro  z$unicode_join.<locals>.join_list_impl  s%    00%000 f---r`   c                 D    d |D             }|                      |          S )Nc                     g | ]}|S rd   rd   rs  s     r_   ru  z8unicode_join.<locals>.join_iter_impl.<locals>.<listcomp>  s    +++!+++r`   )rk  r  r  
parts_lists      r_   join_iter_implz$unicode_join.<locals>.join_iter_impl  s'    ++U+++J88J'''r`   c                 t    fdt          t                              D             }t          | |          S )Nc                      g | ]
}|         S rd   rd   )rt  r   r  s     r_   ru  z7unicode_join.<locals>.join_str_impl.<locals>.<listcomp>	  s    >>>q%(>>>r`   )r#  r?  rj  ry  s    ` r_   join_str_implz#unicode_join.<locals>.join_str_impl  s:    >>>>E#e**,=,=>>>JS*---r`   )r9  r   Listr  r:  rI  IterableType)r  r  ro  r{  r~  s        r_   unicode_joinr    s     %$$ ek5#455 
	- - -!!U%9:: 	. . . "!D	E5-	.	. 
	( 	( 	( 	E5,	-	- 	. 	. 	.  r`   zfillc                 ^    t          |t          j                  st          d          d }|S )Nz<width> must be an Integerc                     t          |           }||k    r| S |r| d         nd}d||z
  z  }|dv r||z   | dd          z   }n|| z   }|S )Nr   rd  0)+-r~   r?  )r2  r3  r:  
first_charpaddingrM  s         r_   
zfill_implz!unicode_zfill.<locals>.zfill_impl  sp    f++GM")1VAYYr
)##')F122J6FFv%Fr`   )r9  r   rw  r"   )r2  r3  r  s      r_   unicode_zfillr    s<    eU]++ 86777  " r`   c                     t          |           }d}|!t          |          D ]}| |         |vr|c S n+t          |          D ]}t          | |                   s|c S |S r   r?  r#  r,   r2  charsr:  r   s       r_   unicode_strip_left_boundr  *  s    &kkG	Aw 	 	Aay%% &	 w 	 	A%fQi00  Nr`   c                     t          |           }d}|)t          |dz
  dd          D ]}| |         |vr|dz  } nn3t          |dz
  dd          D ]}t          | |                   s|dz  } n|S r  r  r  s       r_   unicode_strip_right_boundr  ;  s    &kkG	Aw{B++ 	 	Aay%%Q & w{B++ 	 	A%fQi00 Q Hr`   c                     t          | t          j                  r| j        } | @t          | t          j        t          j        t          j        f          st          d          d S d S )Nz%The arg must be a UnicodeType or None)r9  r   rG  r   rv  r:  rx  r"   )r  s    r_   unicode_strip_types_checkr  M  se    %(( 
MZ050A050@ A AM ABBB MMMr`   c                     t          | t          j                  r| j        } | @t          | t          j        t          j        t          j        f          st          d          d S d S )Nz,The slice indices must be an Integer or None)r9  r   rG  r   rv  rw  rx  r"   )args    r_   r  r  V  sa    #u~&& hK:cEM,1M,1N,< = =K HIII KKKr`   lstripc                 l    t          |t          j                  rdd}|S t          |           dd}|S )Nc                 F    |                      t          |                    S r   )r  r>  r2  r  s     r_   lstrip_implz#unicode_lstrip.<locals>.lstrip_implc      ==U,,,r`   c                 2    | t          | |          d          S r   )r  r  s     r_   r  z#unicode_lstrip.<locals>.lstrip_impli  s    .vu==>>??r`   r   r9  r   rI  r  )r2  r  r  s      r_   unicode_lstripr  _  s_     %-.. 	- 	- 	- 	-e$$$@ @ @ @r`   rstripc                 l    t          |t          j                  rdd}|S t          |           dd}|S )Nc                 F    |                      t          |                    S r   )r  r>  r  s     r_   rstrip_implz#unicode_rstrip.<locals>.rstrip_implr  r  r`   c                 2    | d t          | |                   S r   )r  r  s     r_   r  z#unicode_rstrip.<locals>.rstrip_implx  s    ?0???@@r`   r   r  )r2  r  r  s      r_   unicode_rstripr  n  s_     %-.. 	- 	- 	- 	-e$$$A A A Ar`   stripc                 l    t          |t          j                  rdd}|S t          |           dd}|S )Nc                 F    |                      t          |                    S r   )r  r>  r  s     r_   
strip_implz!unicode_strip.<locals>.strip_impl  s    <<E

+++r`   c                 V    t          | |          }t          | |          }| ||         S r   )r  r  )r2  r  lbrbs       r_   r  z!unicode_strip.<locals>.strip_impl  s.    %fe44&vu55be}r`   r   r  )r2  r  r  s      r_   unicode_stripr  }  s]     %-.. 	, 	, 	, 	,e$$$    r`   c                 b    | |rdS |S | dk     r| |z  } | dk     s| |k    rt          d          | S )a%  
    Parameters
    ----------
    idx : int or None
        the index
    length : int
        the string length
    is_start : bool; optional with defaults to True
        Is it the *start* or the *stop* of the slice?

    Returns
    -------
    norm_idx : int
        normalized index
    Nr   zstring index out of range)
IndexError)r   rN   is_starts      r_   normalize_str_idxr    sR    " { 	1M	qv
Qww#--4555Jr`   c                 J    | |S | | cxk    r|k     rn n| |z  S | dk     rdn| S )a%  
    Used for unicode_count

    If arg < -slice_len, returns 0 (prevents circle)

    If arg is within slice, e.g -slice_len <= arg < slice_len
    returns its real index via arg % slice_len

    If arg > slice_len, returns arg (in this case count must
    return 0 if it is start index)
    Nr   rd   )r  	slice_lendefaults      r_   r  r    sN     {zS$$$$9$$$$$Ya11S r`   c                 (     |||          }d }||fS )zFix slice object.
    c                     |j         \  }}|\  }}|                     |||          }t          j        | |||           t          j        |||           |                                S r   )r   make_helperrD   guard_invalid_slice	fix_slicer   )	r   r   r   r   	slicetype
lengthtypesliceobjrN   slices	            r_   r   z!_normalize_slice.<locals>.codegen  sk    "%(J!6##GYAA#GWiGGG'5&111   r`   rd   )r   r  rN   r   r   s        r_   _normalize_slicer    s0     (8V
$
$C! ! ! <r`   c                 8    t          j        |          }d }||fS )z2Compute the span from the given slice object.
    c                 x    |j         \  }|\  }|                     |||          }t          j        ||          }|S r   )r   r  rD   get_slice_length)r   r   r   r   r  r  r  result_sizes           r_   r   z_slice_span.<locals>.codegen  sA    h
##GYAA.w>>r`   )r   rU   )r   r  r   r   s       r_   _slice_spanr    s.     *X

C   <r`   c           
         |j         | j         k    rDt          |j                   }||z  }||z  }||z  }t          | j        ||j        ||d           d S t	          |          D ]'}	t          | ||	z   t          |||	z                        (d S )Nr~   )align)rg   r   r!   re   r#  r   r   )
dstri  r  
src_offsetr'  
byte_widthsrc_byte_offsetdst_byte_offsetr   r   s
             r_   re  re    s    
yCI(33
$z1$z1Zci#)%vQ	8 	8 	8 	8 	8 	8 q 	B 	BACa+Ca@@B B B B	B 	Br`   c                     |t           j        k    sJ d }t          j        t           j        t           j        t           j                  }||fS )z_Create a slice of a unicode string using a view of its data to avoid
    extra allocation.
    c                 \   |\  }}} t          j        t          j                  | ||          } t          j        t          j                  | |          }|j        |_        |j        |_        |j        |_        ||_        |                     t          d          |_
        | j                            t                    }	|	                    | j        t          j        fi           }
|                     |	|
          } |||j        f          }|                    ||          }|                    |j        |g          |_        t          j        |j        j                  |_        | j        r'| j                            ||j        d         |           |                                S )Nr   r   r   )r   r   r   r   rR   rO   rP   rN   r   r    rQ   typing_contextresolve_value_typer   get_call_typerV   get_functionr   r   rM   r   rS   r   
enable_nrtr   increfr   r   )r   r   r   r   r  r  rN   in_strview_strbw_typbw_sigbw_implr  r   s                 r_   r   z$_get_str_slice_view.<locals>.codegen  s   !UF ,    '= = = 7.    '2 2!>"O ,,Z<<'::;NOO%%"U[NB8 8&&vv66WWv{n55
UJ//FK&::!01EFF 	:KwS999!!###r`   )r   r   rU   )r   src_tstart_tlength_tr   r   s         r_   _get_str_slice_viewr    sN    
 E&&&&&$ $ $6 
U/UZ
H
HC<r`   c                     t          | t          j                  r>t          |t          j                  rd }|S t          |t          j                  rd }|S d S d S )Nc                    t          |t          |                     }t          | |          }t          |          }|| j        k    rt          | |d          S t          |          }t          |d|          }t          |d|           |S r  )	r  r?  r   r0  rg   r  r3  r   r   )r   r   r-  rO   rP   rets         r_   getitem_charz%unicode_getitem.<locals>.getitem_char   s    'SVV44$Q,,)"--17??.q#q9992266H'a::C#CB///Jr`   c           	         t          |t          |                     }t          |          }t          | |j                  }t          |          }t          |          }t          |j        |j        z   |j	        |j                  D ]I}t          | |          }|t          |          z  }t          |          }||k    rt          ||          }J|j        dk    r!|| j        k    rt          | |j        |          S t          |||          }	|j        }
t          |          D ]+}t          |	|t          | |
                     |
|j        z  }
,|	S r  )r  r?  r  r   r  r0  r3  r#  stepstopr  rg   r  r   r   )r   r   	slice_idxspanr-  rO   rP   r   new_kindr  curs              r_   getitem_slicez&unicode_getitem.<locals>.getitem_slice-  sU   ,S#a&&99	"9--$Q	88)"--.r22 y?(~y~? ? : :A(A..B 3B 7 77H1"55Hx'')$99 >Q&&417?? /q)/4HHH (dH==C#/C"4[[ . .'Q30G0GHHHy~-Jr`   )r9  r   r:  rw  	SliceType)r   r   r  r  s       r_   unicode_getitemr    s    !U&'' 3!c5=)) 2	!
 
 
  U_-- %	!" " "H ! g3! 3!%	! %	!r`   c                     t          | t          j                  rt          |t          j                  rd }|S t          | t          j                  rt          |t          j                  rd }|S d S d S )Nc           	         | j         |j         z   }t          | j        |j                  }t          | j        |j                  }t          |||          }t          t          |                     D ]!}t          ||t          | |                     "t          t          |                    D ]1}t          |t          |           |z   t          ||                     2|S r   )
rf   r  rg   r  rh   r   r#  r?  r   r   )r   r%  
new_lengthr  	new_asciir  r   r  s           r_   concat_implz#unicode_concat.<locals>.concat_impl]  s    QY.J!!'1733H#AK==I"8ZCCF3q66]] B B?1a+@+@AAAA3q66]] K KA
OAq4I4IJJJJMr`   c                 &    | t          |          z   S r   rr  rE  s     r_   r  z#unicode_concat.<locals>.concat_implj  s    s1vv:r`   )r9  r   r:  rI  )r   r%  r  s      r_   unicode_concatr  Y  s     !U&'' Jq%:K,L,L 		 		 		 !U&'' Jq%:N,O,O 	 	 	   r`   c                 h   | dk    s|dk     rdS |dk    r| S | j         |z  }| j        }t          ||| j                  }t	          |           }t          |d| d|           |}d|z  |k    r!t          |||d|           |dz  }d|z  |k    !d|z  |k    s||z
  }t          |||||z
  |           |S d S )Nrd  r~   r   r  )rf   rg   r   rh   r?  re  )str_argmult_argr  r  r  len_a	copy_sizerests           r_   _repeat_implr  o  s    "}}1r	Q_x/
=xW5FGGGGQ...	)mz))VY9===NI )mz)) 9}
** 	)DVY	D0@$GGGM +*r`   c                     t          | t          j                  rt          |t          j                  rd }|S t          | t          j                  rt          |t          j                  rd }|S d S d S )Nc                 "    t          | |          S r   r  rE  s     r_   wrapzunicode_repeat.<locals>.wrap      1%%%r`   c                 "    t          ||           S r   r  rE  s     r_   r  zunicode_repeat.<locals>.wrap  r  r`   )r9  r   r:  rw  )r   r%  r  s      r_   unicode_repeatr    s    !U&'' Jq%-,H,H 	& 	& 	&	Au}	%	% *Q8I*J*J 	& 	& 	&   r`   c                 D    t          | t          j                  rd }|S d S )Nc                 (    t          |           dk    S r   r  r   s    r_   r  zunicode_not.<locals>.impl  s    q66Q;r`   r8  r   r  s     r_   unicode_notr    s5    !U&'' 	 	 	 r`   replacec                 &   |}t          |t          j                  r|j        }n!t          |t          j                  r|j        }t          |t          t          j        f          s"t          d	                    |                    t          |t          j
        t          j        f          s"t          d	                    |                    t          |t          j
                  s"t          d	                    |                    dd}|S )NzGUnsupported parameters. The parameters must be Integer. Given count: {}z+The object must be a UnicodeType. Given: {}r   c                    |dk    r| S |dk    rt          |           }|dk    r||                    |          z   |z   S |g}t          t          |          |          }t	          |          D ]o}|                    ||                    |dz   |k    r|                    |           <|                    d                    ||dz   d                               p|t          |          k    r|                    |           d                    |          S |                     ||          }|                    |          }|S )Nr   rd  r   r~   )listrk  rX  r?  r#  r  r  )	r   old_strnew_strr  scharssplit_result	min_countr   r  s	            r_   r  zunicode_replace.<locals>.impl  sL   A::Hb==!WWF{{f!5!55??#9LCKK//I9%% C C##F1I...q5I%% ''0000 ''Axx0@(A(ABBBBs6{{""##G,,,77<(((%((f%%r`   r   )r9  r   rv  r   rG  r   r  rw  r"   ry  r:  rx  )r   r	  r
  r  r|  r  s         r_   unicode_replacer    s   E%'' 	E5>	*	* 
ec5=122 L ==CVE]]L L 	L g 15>BCC 8 ''-vg8 8 	8 gu011 8 ''-vg8 8 	8   , Kr`   c                       fd}|S )Nc                     fd}|S )Nc                 j   t          |           }|dk    rdS |dk    r-t          | d          }| j        r |          S  |          S | j        r0t          |          D ] }t          | |          } |          s dS !t          |          D ] }t          | |          } |          s dS !dS )Nr   Fr~   T)r?  r   rh   r#  )rM   rN   r  r   
ascii_funcunicode_funcs       r_   r  z.gen_isAlX.<locals>.unicode_isAlX.<locals>.impl  s    YYF{{u{{,T155
> 4%:j111'<
333~ %v % %A!0q!9!9J%:j11 %$uu% 6]] ! !,T155
#|J// ! 55! 4r`   rd   )rM   r  r  r  s     r_   unicode_isAlXz gen_isAlX.<locals>.unicode_isAlX  s(    	 	 	 	 	 	2 r`   rd   )r  r  r  s   `` r_   	gen_isAlXr    s*         8 r`   isalphac                 >    t          |           pt          |           S r   )r@   r?   xs    r_   <lambda>r    s"    &:1&=&= '<&8&;&; r`   isalnumc                       fd}|S )Nc                    t          |           }|dk    r t          | d                    dk    S |dk    rdS d}t          |          D ]:}t          | |          } |          s |          r dS |s |          rd};|S Nr~   r   FTr?  r   r#  )r   lcasedr   r  is_loweris_titleis_uppers        r_   r  z_is_upper.<locals>.impl  s    FF668OAq1122a7766588 	 	C(C00Jx
## xx
';'; uu  4 4 r`   rd   )r#  r%  r$  r  s   ``` r_   	_is_upperr&    s/    
       Kr`   c                     dS rD  rd   r  s    r_   r  r    s    5 r`   isupperc                     d }|S )z
    Implements .isupper()
    c                 L    | j         rt          |           S t          |           S r   )rh   _ascii_is_upper_unicode_is_upperr  s    r_   r  zunicode_isupper.<locals>.impl   s(    ; 	("1%%%$Q'''r`   rd   r  s     r_   unicode_isupperr-    s    
( ( (
 Kr`   isasciic                     d }|S )z Implements UnicodeType.isascii()c                     | j         S r   )rh   rM   s    r_   r  zunicode_isascii.<locals>.impl,  s
    ~r`   rd   rM   r  s     r_   unicode_isasciir3  (  s      Kr`   istitlec                     d }|S )z
    Implements UnicodeType.istitle()
    The algorithm is an approximate translation from CPython:
    https://github.com/python/cpython/blob/1d4b6ba19466aba0eb91c4ba01ba509acf18c723/Objects/unicodeobject.c#L11829-L11885 # noqa: E501
    c                 n   t          |           }|dk    r.t          | d          }t          |          pt          |          S |dk    rdS d}d}t	          |          D ]U}t          | |          }t          |          st          |          r
|r dS d}d}:t          |          r
|s dS d}d}Sd}V|S r  )r?  r   r2   r8   r#  r3   )rM   rN   charr"  previous_is_casedr   s         r_   r  zunicode_istitle.<locals>.impl9  s    TQ;;"4++D)$//O3I$3O3OOQ;;5!== 	* 	*C"4--D%d++ */Ed/K/K *$ ! 55$(!'-- *( ! 55$(!$)!!r`   rd   r2  s     r_   unicode_istitler9  1  s      6 Kr`   islowerc                     d }|S )aP  
    impl is an approximate translation of:
    https://github.com/python/cpython/blob/201c8f79450628241574fba940e08107178dc3a5/Objects/unicodeobject.c#L11900-L11933    # noqa: E501
    mixed with:
    https://github.com/python/cpython/blob/201c8f79450628241574fba940e08107178dc3a5/Objects/bytes_methods.c#L131-L156    # noqa: E501
    c                 *   t          |           }|dk    rt          t          | d                    S |dk    rdS d}t          |          D ]F}t          | |          }t	          |          st          |          r dS |st          |          rd}G|S r  )r?  r3   r   r#  r2   r8   )rM   rN   r"  r   r-  s        r_   r  zunicode_islower.<locals>.impl`  s    TQ;;)/$*B*BCCCQ;;5== 	 	C s++B%b)) -CB-G-G uu 5b99 r`   rd   r2  s     r_   unicode_islowerr=  W  s       Kr`   isidentifierc                     d }|S )z%Implements UnicodeType.isidentifier()c                     t          |           }|dk    rdS t          | d          }t          |          s|dk    rdS t          d|          D ]$}t          | |          }t	          |          s dS %dS )Nr   F_   r~   T)r?  r   r.   r#  r/   )rM   rN   first_cpr   r  s        r_   r  z"unicode_isidentifier.<locals>.implw  s    TQ;;5"4++$X.. 	8t3C3C5q&!! 	 	A(q11J+J77 uu tr`   rd   r2  s     r_   unicode_isidentifierrC  s  s        Kr`   c                       fd}|S )Nc                     fd}|S )Nc                     t          |           }|dk    r t          | d                    S r|dk    rdS t          |          D ] }t          | |          } |          s dS !dS r  r   )rM   rN   r   r  _PyUnicode_IS_funcempty_is_falses       r_   r  z*gen_isX.<locals>.unicode_isX.<locals>.impl  s    YYF{{))/$*B*BCCC &A++u6]] ! !,T155
))*55 ! 55! 4r`   rd   )rM   r  rG  rH  s     r_   unicode_isXzgen_isX.<locals>.unicode_isX  s(    	 	 	 	 	 	 r`   rd   )rG  rH  rI  s   `` r_   gen_isXrJ    s*         " r`   isspace	isnumericisdigit	isdecimalisprintablec                       fd}|S )z)Generate common case operation performer.c           	         t          |           }|dk    rt          | j        || j                  S | j        r$t          | j        |d          } 	| |           |S t          t          d|z  | j                  }dg} 
| |||          }|d         }t          |          }t          ||t          |                    }t          |          D ]!}t          ||t          ||                     "|S )Nr   r~   rE   )
r?  r   rg   rh   r   r0  r3  r#  r   r   )rM   rN   r   tmpmaxchars	newlengthmaxcharnewkindr   r  r  s            r_   r  zcase_operation.<locals>.impl  s   TQ;; VT^DDD> 	
FA66CJtS!!!J 11v:t~NN3 LvsH==	1+$W--GY0CG0L0LMMy!! 	= 	=ACOC$;$;<<<<
r`   rd   )r  r  r  s   `` r_   case_operationrW    s)         . Kr`   c                 D   d}|dz
  }|dk    r+t          | |          }t          |          sn|dz  }|dk    +|dk    ot          |          }|rL|dz   }||k     r+t          | |          }t          |          sn|dz  }||k     +||k    pt          |           }|rdndS )zEThis is a translation of the function that handles the capital sigma.r   r~   i  i  )r   r1   r0   )rM   rN   r   r   r  final_sigmas         r_   _handle_capital_sigmarZ    s     	
AaA
q&&D!$$)!,, 		Q	 q&&
 63033K C!G&jja((A-a00 FA	 &jj
 F{A+=a+@+@'@*55U*r`   c                 Z    | dk    rt          |||          |d<   dS t          | |          S )z>This is a translation of the function that lowers a character.i  r   r~   )rZ  r(   )r  rM   rN   r   mappeds        r_   _lower_ucs4r]    s9     U)$<<q	q!*f555r`   c                       fd}|S )Nc                 J   d}t          |          D ]}t          j        dt                    }t	          | |          }
rt          || |||          }nt          ||          }|d |         D ]1}	t          |d         |	          |d<   t          |||	           |dz  }2|S Nr   rE   r  r~   )	r#  r   zerosr%   r   r]  r'   maxr   )rM   rN   r   rS  kr   r\  r  n_resr  lowers             r_   _do_upper_or_lowerz7_gen_unicode_upper_or_lower.<locals>._do_upper_or_lower  s    == 	 	CXax000F(s33J C#Jfc6JJ /z6BBFUF^  !(1+q11Q***Q r`   rd   )rf  rg  s   ` r_   _gen_unicode_upper_or_lowerrh    s$         r`   c                       fd}|S )Nc                     t          t          |                     D ],}t          | |          }t          || |                     -d S r   )r#  r?  r   r   )rM   r   r   r  funcs       r_   _ascii_upper_or_lowerz8_gen_ascii_upper_or_lower.<locals>._ascii_upper_or_lower	  sX    T## 	8 	8C(s33JCdd:&6&67777	8 	8r`   rd   )rk  rl  s   ` r_   _gen_ascii_upper_or_lowerrm  	  s$    8 8 8 8 8 ! r`   rf  c                 6    t          t          t                    S )zImplements .lower())rW  _ascii_lower_unicode_lowerr1  s    r_   unicode_lowerrq  	       ,777r`   upperc                 6    t          t          t                    S )zImplements .upper())rW  _ascii_upper_unicode_upperr1  s    r_   unicode_upperrw  	  rr  r`   c                 J   d}t          j        dt                    }t          |          D ]u}|                    d           t          | |          }t          ||          }|d |         D ]3}	|d         }
t          |
|	          |d<   t          |||	           |dz  }4v|S r`  )	r   rb  r%   r#  fillr   r)   rc  r   )rM   rN   r   rS  rd  r\  r   r  re  r  rU  s              r_   _unicode_casefoldrz  &	  s    	AXax(((FV}}  A$T3//
'
F;; 	 	AqkGgq//HQKCA&&&FAA		 Hr`   c                     t          t          |                     D ]0}t          | |          }t          ||t	          |                     1d S r   )r#  r?  r   r   r$   rM   r   r   r  s       r_   _ascii_casefoldr}  7	  sU    SYY ; ;$T3//
S+j"9"9::::; ;r`   casefoldc                 6    t          t          t                    S )zImplements str.casefold())rW  r}  rz  r1  s    r_   unicode_casefoldr  >	  s     /+<===r`   c                    d}d}t          j        dt                    }t          | d          }t	          ||          }|d |         D ](}	t          ||	          }t          |||	           |dz  })t          d|          D ]m}
|                    d           t          | |
          }t          || ||
|          }|d |         D ](}	t          ||	          }t          |||	           |dz  })n||d<   |S r`  )
r   rb  r%   r   r*   rc  r   r#  ry  r]  )rM   rN   r   rS  rd  rU  r\  r  re  r  r   s              r_   _unicode_capitalizer  E	  s!   	AGXax(((F q))J":v66EFUF^  gq//Q"""	QQ  A$T3//
Jfc6BB 	 	A'1ooGCA&&&FAA	 HQKHr`   c                     t          | d          }t          |dt          |                     t          dt	          |                     D ]0}t          | |          }t          ||t          |                     1d S r  )r   r   r#   r#  r?  r$   )rM   r   r  r   s       r_   _ascii_capitalizer  _	  s     q))JCK
33444QD		"" ; ;$T3//
S+j"9"9::::; ;r`   
capitalizec                 6    t          t          t                    S r   )rW  r  r  r1  s    r_   unicode_capitalizer  i	  s    +-@AAAr`   c                    d}d}t          j        dt                    }t          |          D ]}|                    d           t          | |          }|rt          || |||          }	nt          t          |          |          }	|d|	         D ]/}
|\  }t          ||
          |d<   t          |||
           |dz  }0t          t          |                    }|S )zCThis is a translation of the function that titles a unicode string.r   FrE   ra  Nr~   )r   emptyr%   r#  ry  r   r]  r*   rc  r   r0   )rM   rN   r   rS  rd  previous_casedr\  r   r  re  r  rU  s               r_   _unicode_titler  o	  s     	
ANXax(((FV}} B BA$T3//
 	I
D&#vFFEE*8J+?+?HHE 	 	AHGgq//HQKCA&&&FAA+HZ,@,@AAHr`   c                    d}t          t          |                     D ]k}t          | |          }t          |          r|st	          |          }d}n%t          |          r|rt          |          }d}nd}t          |||           ldS )z" Does .title() on an ASCII string FTN)r#  r?  r   r9   r#   r:   r$   r   )rM   r   r8  r   r  s        r_   _ascii_titler  	  s     SYY . .$T3//
z"" 		&$ 5(44
 $$$ 	&  5(44
 $ %S*----. .r`   titlec                 6    t          t          t                    S )zImplements str.title())rW  r  r  r1  s    r_   unicode_titler  	  s     ,777r`   c                     t          t          |                     D ]`}t          | |          }t          |          rt	          |          }nt          |          rt          |          }t          |||           ad S r   )r#  r?  r   r:   r$   r9   r#   r   r|  s       r_   _ascii_swapcaser  	  s    SYY . .$T3//
z"" 	1$Z00JJ$$ 	1$Z00JS*----. .r`   c                    d}d}t          j        dt                    }t          |          D ]}|                    d           t          | |          }t          |          rt          || |||          }	n't          |          rt          ||          }	nd}	||d<   |d |	         D ](}
t          ||
          }t          |||
           |dz  })||d<   |S r`  )r   r  r%   r#  ry  r   r2   r]  r3   r'   rc  r   )rM   rN   r   rS  rd  rU  r\  r   r  re  r  s              r_   _unicode_swapcaser  	  s    	AGXax(((FV}}  A$T3//
!*-- 	#
D&#vFFEE#J// 	#*:v>>EEE"F1I 	 	A'1ooGCA&&&FAA	 HQKHr`   swapcasec                 6    t          t          t                    S r   )rW  r  r  r1  s    r_   unicode_swapcaser  	  s    /+<===r`   c                 D    t          | t          j                  rd }|S d S )Nc                 j    t          |           }|dk    rt          d          t          | d          S )Nr~   zord() expected a characterr   )r?  	TypeErrorr   )r   lcs     r_   r  zol_ord.<locals>.impl	  s5    QBQww <==="1a(((r`   r8  )r   r  s     r_   ol_ordr  	  s7    !U&'' 	) 	) 	)  r`   c                     | t           k    sJ t          |           }t          |d|t          k              }t	          |d|            |S r  )_MAX_UNICODEr0  r   r   r   )r   rO   r  s      r_   _unicode_charr  	  sN    b!!D
a)>!>
?
?CCBJr`   zchr() arg not in range(0x%hx)c                     | dk     s| t           k    rt          t                    t          t	          |                     S r   )r  r   _out_of_range_msgr  r%   )ordinals    r_   _PyUnicode_FromOrdinalr  	  s:    !w--*+++'**+++r`   c                 D    t          | t          j                  rd }|S d S )Nc                      t          |           S r   )r  )r   s    r_   r  zol_chr.<locals>.impl	  s    )!,,,r`   )r9  r   rw  )r   r  s     r_   ol_chrr  	  s4    !U]## 	- 	- 	- r`   __str__c                     d S )Nc                     | S r   rd   r6  s    r_   r  zunicode_str.<locals>.<lambda>	  s    Q r`   rd   r6  s    r_   unicode_strr  	  s
    ;r`   __repr__c                     d S )Nc                     d| z   dz   S )N'rd   r6  s    r_   r  zunicode_repr.<locals>.<lambda>
  s    S1Ws] r`   rd   r6  s    r_   unicode_reprr   
  s     #""r`   c                 (     | d          fd}|S )NrF   c                    d}| dk     r|  } d}| dk    rdS |dz   t          t          j        t          j        |                               z   }t          }t          |          }t          |||d          }|rt          |dt          d                     |dz
  }| dk    rAt          | 	          \  } }t          d          |z   }t          |||           |dz  }| dk    A|S )NFr   Tr  r~   r  )
r  r   floorlog10r   r   r   r   orddivmod)
r'  flagrN   rO   r   r   r   digitr   tens
            r_   r  zinteger_str.<locals>.impl
  s    q55AD663C! 5 5666$(..
4VT:: 	,Aq#c((+++qj!eea~~HAuC5 AAsA&&&1HC	 !ee
 r`   rd   )r'  r  r  s     @r_   integer_strr  
  s2     !B%%C    ( Kr`   c                     d S )Nc                 *    |                                  S r   )r  r'  s    r_   r  zinteger_repr.<locals>.<lambda>%
  s    QYY[[ r`   rd   r  s    r_   integer_reprr  #
  s       r`   c                     d S )Nc                     | rdndS )NTrueFalserd   r%  s    r_   r  zboolean_str.<locals>.<lambda>+
  s    q-VVg r`   rd   r  s    r_   boolean_strr  (
  s     .--r`   getiterc                 t   |j         \  }|\  }|                     ||j                  }|                     t          j        d          }t          j        ||          }||_        ||_	        | j
        r| j                            |||           |                                }	t          | ||j        |	          S r   )r   r  return_typer   r   ro   r   alloca_once_valuerm   rM   r  r   r  r   r   )
r   r   r   r   rz  rM   iterobjr  indexptrr   s
             r_   getiter_unicoder  3
  s    8DRFT!!'3?;;G Q//D($77HGM GL  .7B---




CGWcosCCCr`   iternextc                    |j         \  }|\  }| j        }|                    t          j                  }|                    |t          j        t          j        fi           }	| 	                    ||	          }
|                    t                    }|                    |t          j        fi           }| 	                    ||          }|                     |||          } |||j        f          }|                    |j                  }|                    d||          }|                    |           |                    |          5   |
||j        |f          }|                    |           t'          j        ||          }|                    ||j                   d d d            d S # 1 swxY w Y   d S )Nr   <)r   r  r  operatorgetitemr  r   r   ro   r  r?  r  rM   r   rm   icmp_unsigned	set_validif_thenyield_r   increment_indexr   )r   r   r   r   r  itertyitertyctxfntygetitem_siggetitem_impllen_sigr7  r  strlenrm   is_validgotitemnindexs                      r_   iternext_unicoder  K
  s    xHVFT"E ##H$455D$$UU-?,M%') )K''k::L ##C((D  );(=rBBG##D'22H !!'6!>>G Xg//F LL''E $$S%88H
X		"	" - -,wu(>??g (%88fgm,,,- - - - - - - - - - - - - - - - - -s   AF44F8;F8)r   r  r  rp  r@  r_  r   )Tr  )r  r  numpyr   llvmlite.irr   r   numba.core.cgutilsr   numba.core.extendingr   r   r   r	   r
   r   r   r   r   r   numba.core.imputilsr   r   r   r   r   r   numba.core.datamodelr   r   
numba.corer   r   r   numba.core.utilsr   numba.core.pythonapir   r   r   numba._helperlibr   numba.cpython.hashingr    numba.core.unsafe.bytesr!   numba.core.errorsr"   numba.cpython.unicode_supportr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   numba.cpythonrD   rH   r  USE_LEGACY_TYPE_SYSTEMrU   bitwidthr  py_intr:  rK   UnicodeIteratorTyperk   r   r   rH  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r   r  NotImplementedErrorr  r   r*  r0  r3  r?  r;  eqrO  nerT  ltr^  gtrc  lerh  germ  containsrs  r~  r  r  r  r  r  r  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r#  r+  rB  rP  rX  r\  r]  rb  rj  r  r  r  r  r  r  r  r  r  r  r  r  r  re  r  r  r  r   iaddr  r  r   r  not_r  r  r  _unicode_is_alnumr&  _always_falser+  r,  r-  r3  r9  r=  rC  rJ  rW  rZ  r]  rh  rv  rp  rm  ru  ro  rq  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  chrr  r  r  rw  r  r  r`  r  r  NEWr  rd   r`   r_   <module>r     s;   



      ) ) ) ) ) ) ) ) * * * * * *                       K K K K K K K K K K K K K K K K > > > > > > > > - - - - - - - - - - & & & & & &         
 ' & & & & & , , , , , , 1 1 1 1 1 1 ) ) ) ) ) )F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F> " ! ! ! ! !"""::::::  
  ):&LL<(L
 !""A A A A A6% A A #"A  u(&' : : :  u((I > > >  u(&' : : :  u(*k B B B  u(&' : : : %+,,J J J J J; J J -,J; ; ;8  ( E!344  54 "##C C $#C u? ? ?, U  $   & & &
 ' ' '
 ' ' '
   <     u
 
 
	 	 	 $ $ $
 % % %
 % % %
 uD D D$ """C C C C $$$C C C C" 
i
(
((    """L L L L $$$
L 
L 
L 
L 
i
(
(( u  & % % %"    
#   
(+# # #L 
(+  " 
(+   
(+   
(+   
(+   
(
  P P P(     
 3 3 3
 + + +\ - - -`  & 	7788		//.99	:	: "F++   ,+ "G,,   -, "H--   .-" "G,,   -," "K00    10 F "G,, 3  3  3 -, 3H "L11    21 H    "L111I 1I 1I 211Ih "J//- - - 0/-b "L11= = = 21=@ "G,,Q% Q% Q% -,Q%h)" )" )"X "2!1##$677"9 "9 //##K00 2  2 
 "H--N N N .-Nb "H--" " " .-"J& & &R ,!7 + +,=,=e,D,D E E E +!7 + +,=,=d,C,C D D D     F %$%=%=o%N%NOO &&'?'?( (   
 "L11   210   > "F++  ,+6 "G,,  -,6       "C C CJ J J "H--   .- "H--   .- "G,,   -,(    < ! ! !(        uB B B " " "J 
(
4! 4! 4!x 
(,	(-   (   4 
(,   
(-   "I..) ) ) /.)b  B .!9 - -ii8J/L /L M M M %$ &= &= > > 
 .!9 - -ii8I/K /K L L L  , ! 11""99[+-:$< $< = =$$YY/E/E/E&G &G H H 
 "I..	 	 /.	 "I..  /. "I.." " /."J "I..  /.6 "N33  43.   , .!9 - -gg6H.I.I J J J 0!; / /8L0M0M N N N .!9 - -gg6H.I.I J J J 0!; / /G%&&( ( ( 2!= 1 1G"E**, , ,  : + + +. 6 6 6  & "!"="=e"D"DEE!!"="=d"C"CDD! ! !   9 9+ F FGG 9 9+ F FGG "G,,8 8 -,8
 "G,,8 8 -,8     ; ; ; "J//> > 0/>   2 ; ; ; "L11B B 21B
   , . . .& "G,,8 8 -,8 . . .   , "J//> > 0/>
 
#  "    4lB  , , , 
#   "I..  /. "J//# # 0/# 	**  +*6 
++! ! ,+! 
++	**. . +* ,+. y%+,,D D -,D. z5455w{%- %-  65%- %- %-r`   