�&ǐk�@'bJ�h�ۊL'}T� :��'2�Z#$��n�a��� �>a��`��_3d�Qpt�/�P -��#5�,�M��� �pA:©�q�����NW��ډ�A���� �9nʺج���� �TSM��{J6?7��r�@�\����D��� �׶���s�f�TJj?"��D��`?��̒� b�#�%�C*v�$�{�$����5Ծ�F�s��y�e/8��h-�f�̰&(����Gj�L:U� 2�� ����v�_k����Y��gp,�k�WF�R������_C�R��N@���R�@�ߔ?A�w9���F("iNa-S���Q�o�3tDMLh*�#4k�T/iQ��Y*�G��m����)��8�hBm/�I�,g�ﯖ���Z��}�Cz�q@´��d.����L�ŕ�,��1�Z�܌�: ̪���F+J-'��c�tvJ8��]Q-��b��y �6;*J`r_�d ��'�G ~p��)'�C,�%F��E(��2�k�����lР�z�!�=t ��_�0��f7��� ;�p�|�U �%?@[\]^_`{|}~cCs|pddd||DS)acapwords(s [,sep]) -> string Split the argument into words using split, capitalize each word using capitalize, and join the capitalized words using join. If the optional second argument sep is absent or None, runs of whitespace characters are replaced by a single space and leading and trailing whitespace are removed, otherwise sep is used to split and join the words.  css|]}|VqdSN) capitalize).0xr/usr/lib64/python3.8/string.py 0szcapwords..)joinsplit)sseprrrr%s )ChainMapcs eZdZdZfddZZS)_TemplateMetaclassa/ %(delim)s(?: (?P%(delim)s) | # Escape sequence of two delimiters (?P%(id)s) | # delimiter and a Python identifier {(?P%(bid)s)} | # delimiter and a braced identifier (?P) # Other ill-formed delimiter exprs ) csbtt||||d|kr$|j}n$tjt|j|j|jp@|jd}t ||j tj B|_dS)Npattern)ZdelimidZbid) superr__init__r_reescape delimiter idpatternbraceidpatterncompileflagsVERBOSE)clsnamebasesZdctr __class__rrr Cs  z_TemplateMetaclass.__init__)__name__ __module__ __qualname__rr __classcell__rrr,rr9s rc@sJeZdZdZdZdZdZejZ ddZ ddZ e fd d Z e fd d ZdS) r z.A string class for supporting $-substitutions.$z(?a:[_a-z][_a-z0-9]*)NcCs ||_dSr)template)selfr3rrrr \szTemplate.__init__cCsd|d}|jd|jdd}|s.d}d}n"|td|dd}t|}td||fdS)NinvalidT)keependsz.Invalid placeholder in string: line %d, col %d)startr3 splitlineslenr ValueError)r4moilinescolnolinenorrr_invalidas zTemplate._invalidc s:tkr|n|rt|fdd}j|jS)Ncsd|dp|d}|dk r(t|S|ddk r<jS|ddk rT|tdjdSNnamedZbracedZescapedr5z#Unrecognized named group in pattern)groupstrr#rCr=rr>rEmappingr4rrconvertss  z$Template.substitute..convert_sentinel_dict _ChainMaprsubr3r4rJZkwsrKrrIr substitutems   zTemplate.substitutec s:tkr|n|rt|fdd}j|jS)Ncs|dp|d}|dk rHzt|WStk rF|YSX|ddk r\jS|ddk rr|StdjdSrD)rFrGKeyErrorr#r=rrHrIrrrKsz)Template.safe_substitute..convertrLrPrrIrsafe_substitutes   zTemplate.safe_substitute)r.r/r0__doc__r#r$r%r! IGNORECASEr'r rCrMrQrSrrrrr Ps ) metaclassc@sVeZdZddZddZdddZdd Zd d Zd d ZddZ ddZ ddZ dS)r cOs||||Sr)vformat)r4 format_stringargskwargsrrrformatszFormatter.formatcCs.t}|||||d\}}|||||S)N)set_vformatcheck_unused_args)r4rXrYrZ used_argsresult_rrrrWszFormatter.vformatr c Cs|dkrtdg}||D]\}} } } |r8||| dk r| dkrj|dkrXtdt|} |d7}n| r|r~tdd}|| ||\} } || || | } |j| ||||d|d\} }|| | | qd ||fS)Nr zMax string recursion exceededr8FzJcannot switch from manual field specification to automatic field numberingr7)auto_arg_index) r=parseappendrGisdigit get_fieldadd convert_fieldr^ format_fieldr)r4rXrYrZr`Zrecursion_depthrcraZ literal_text field_name format_spec conversionobjZarg_usedrrrr^s<     zFormatter._vformatcCst|tr||S||SdSr) isinstanceint)r4keyrYrZrrr get_values zFormatter.get_valuecCsdSrr)r4r`rYrZrrrr_szFormatter.check_unused_argscCs t||Sr)r[)r4valuerlrrrrjszFormatter.format_fieldcCsN|dkr |S|dkrt|S|dkr,t|S|dkrs6   Q