o
    ‡ÎÖaù�  ã                   @   sÄ  d Z ddlZddl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mZmZmZmZmZmZ ddlmZ ddlmZ g d¢ZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZdd„ ZG dd„ deƒZ G dd„ deƒZ!G dd„ deƒZ"G dd„ deƒZ#G dd„ deƒZ$G dd„ deƒZ%G dd„ deƒZ&G dd„ deƒZ'G d d!„ d!eƒZ(G d"d#„ d#eƒZ)G d$d%„ d%eƒZ*G d&d'„ d'eƒZ+G d(d)„ d)eƒZ,G d*d+„ d+eƒZ-G d,d-„ d-eƒZ.G d.d/„ d/eƒZ/dS )0zÙ
    pygments.lexers.configs
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for configuration file formats.

    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)ÚExtendedRegexLexerÚ
RegexLexerÚdefaultÚwordsÚbygroupsÚincludeÚusing)ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuationÚ
WhitespaceÚLiteralÚErrorÚGeneric)Ú	BashLexer)Ú	JsonLexer)ÚIniLexerÚRegeditLexerÚPropertiesLexerÚKconfigLexerÚCfengine3LexerÚApacheConfLexerÚSquidConfLexerÚNginxConfLexerÚLighttpdConfLexerÚDockerLexerÚTerraformLexerÚTermcapLexerÚTerminfoLexerÚPkgConfigLexerÚPacmanConfLexerÚAugeasLexerÚ	TOMLLexerÚNestedTextLexerÚSingularityLexerc                   @   sl   e Zd ZdZdZg d¢Zg d¢ZddgZddefd	e	j
fd
efdeejeeeeƒfdejfgiZdd„ ZdS )r   z5
    Lexer for configuration files in INI style.
    ÚINI)ÚiniÚcfgÚdosini)z*.iniz*.cfgz*.infz.editorconfigz	*.servicez*.socketz*.devicez*.mountz*.automountz*.swapz*.targetz*.pathz*.timerz*.slicez*.scopez
text/x-iniztext/infÚrootú\s+ú[;#].*z\[.*?\]$z"(.*?)([ \t]*)(=)([ \t]*)([^\t\n]*)z(.+?)$c                 C   s2   |   d¡}|dk rdS | d dko| |d  dkS )NÚ
é   Fr   ú[é   ú])Úfind)ÚtextÚnpos© r9   ú9/usr/lib/python3/dist-packages/pygments/lexers/configs.pyÚanalyse_text8   s   
zIniLexer.analyse_textN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesr   r
   ÚSingler   r   r   Ú	Attributer   r   Útokensr;   r9   r9   r9   r:   r      s"    ÿùÿr   c                   @   s®   e Zd ZdZdZdgZdgZdgZdefde	fde
jfd	eeeejeƒfd
eeje	ee	ƒdfdeeje	ee	ƒdfgdedfdeejeeƒdfdedfedƒgdœZdd„ ZdS )r   z 
    Lexer for `Windows Registry
    <http://en.wikipedia.org/wiki/Windows_Registry#.REG_files>`_ files produced
    by regedit.

    .. versionadded:: 1.6
    ÚregÚregistryz*.regztext/x-windows-registryzWindows Registry Editor.*r/   r0   z(\[)(-?)(HKEY_[A-Z_]+)(.*?\])$z)("(?:\\"|\\\\|[^"])+")([ \t]*)(=)([ \t]*)Úvaluez(.*?)([ \t]*)(=)([ \t]*)ú-ú#popz1(dword|hex(?:\([0-9a-fA-F]\))?)(:)([0-9a-fA-F,]+)ú.+©r.   rI   c                 C   s
   |   d¡S )NzWindows Registry Editor)Ú
startswith)r7   r9   r9   r:   r;   g   s   
zRegeditLexer.analyse_textN)r<   r=   r>   r?   r@   rA   rB   rC   r	   r   r
   rD   r   r   r   r   ÚBuiltinrE   ÚVariabler   r   r   r   rF   r;   r9   r9   r9   r:   r   ?   s<    ÿþþõÿúðr   c                   @   sz   e Zd ZdZdZddgZdgZdgZddee	j
eeƒfd	e	j
fd
eeeƒfdeeeƒfdee	j
eeeeƒfdefgiZdS )r   z¦
    Lexer for configuration files in Java's properties format.

    Note: trailing whitespace counts as part of the value as per spec

    .. versionadded:: 1.4
    Ú
PropertiesÚ
propertiesÚjpropertiesz*.propertiesztext/x-java-propertiesr.   z^(\w+)([ \t])(\w+\s*)$z^\w+(\\[ \t]\w*)*$z(^ *)([#!].*)z(^ *)((?:;|//).*)z/(.*?)([ \t]*)([=:])([ \t]*)(.*(?:(?<=\\)\n.*)*)z\sN)r<   r=   r>   r?   r@   rA   rB   rC   r   r   rE   r   r   r
   r   rF   r9   r9   r9   r:   r   k   s"    ÿøÿr   c                 C   sB   d}|dkr	d}nd|d  }| dkrd}nd|  }d|||f S )	Né   é   ú+z{1,%d}r4   Ú z{%s}z(?:\t| %s\t| {%s})%s.*\nr9   )ÚlevelÚ	tab_widthÚspace_repeatÚlevel_repeatr9   r9   r:   Ú
_rx_indent‡   s   r\   c                   @   sþ   e Zd ZdZdZg d¢Zg d¢ZdgZdZdd„ Z	d	d
„ Z
defdejfeddd�efdedfdejfdefdefdejfdejfdejfdefgdefe	dƒe	dƒe	dƒe	dƒe	dƒe	dƒe	d ƒed!ƒg	e
dƒe
dƒe
dƒe
dƒe
dƒe
dƒe
d ƒd"œ	Zd#S )$r   zC
    For Linux-style Kconfig files.

    .. versionadded:: 1.6
    ÚKconfig)ÚkconfigÚ
menuconfigzlinux-configzkernel-config)zKconfig*z*Config.in*zexternal.in*zstandard-modules.inztext/x-kconfigr   c                 C   s   t | ƒtjd|  fS )Nzindent%s)r\   r   ÚDoc©rX   r9   r9   r:   Úcall_indent«   s   zKconfigLexer.call_indentc                 C   s   t | ƒtjfdtftdƒgS )Nú\s*\nú#pop:2)r\   r   r`   r	   r   ra   r9   r9   r:   Ú	do_indent¯   s   ýzKconfigLexer.do_indentr/   ú#.*?\n)ÚmainmenuÚconfigr_   ÚchoiceÚ	endchoiceÚcommentÚmenuÚendmenuz
visible ifÚifÚendifÚsourceÚpromptÚselectz
depends onr   ÚrangeÚoptionú\b©Úsuffixz(---help---|help)[\t ]*\nÚhelpz;(bool|tristate|string|hex|int|defconfig_list|modules|env)\bz[!=&|]z[()]ú[0-9]+z'(''|[^'])*'z"(""|[^"])*"ú\S+rc   é   é   é   é   r2   rU   r4   rK   )	r.   rx   Úindent7Úindent6Úindent5Úindent4Úindent3Úindent2Úindent1N)r<   r=   r>   r?   r@   rA   rB   rC   Úflagsrb   re   r   r
   rD   r   r   r   rO   r   r   r   ÚIntegerr   ÚDoubler	   r   rF   r9   r9   r9   r:   r   ›   sZ    üûÿïó
Ôr   c                   @   sn  e Zd ZdZdZddgZdgZg Zdefde	e
ee
ee
ƒfde	e
ee
eejeƒd	fd
e	e
ee
eejƒfde	eejeee
jeeeƒfde	e
jeeeƒfdedfde	ejeƒfde	ejeƒfde	e
jeƒfdejfdefdefdefdejfdejfdejfdefgdejdfdejfdedfdefdefgdejd fd!ejdfd"ejfgd#edfd$efdejfdefgd%œZd&S )'r   z_
    Lexer for `CFEngine3 <http://cfengine.org>`_ policy files.

    .. versionadded:: 1.5
    Ú	CFEngine3Ú	cfengine3Úcf3z*.cfrf   z(body)(\s+)(\S+)(\s+)(control)z%(body|bundle)(\s+)(\S+)(\s+)(\w+)(\()Úarglistz!(body|bundle)(\s+)(\S+)(\s+)(\w+)z7(")([^"]+)(")(\s+)(string|slist|int|real)(\s*)(=>)(\s*)z(\S+)(\s*)(=>)(\s*)ú"Ústringz	(\w+)(\()z([\w.!&|()]+)(::)z(\w+)(:)z@[{(][^)}]+[})]z[(){},;]z=>z->z\d+\.\d+ú\d+ú\w+r/   z\$[{(]Úinterpolú\\.rK   ú\nÚ.ú#pushz[})]z	[^${()}]+z\)ú,)r.   rŽ   r‘   rŒ   N)r<   r=   r>   r?   r@   rA   rB   rC   r
   r   r   r   r   ÚFunctionr   rP   ÚTyper   ÚReservedr	   r   ÚClassÚDeclarationr   ÚFloatr‡   ÚInterpolÚEscaperF   r9   r9   r9   r:   r   è   sl    ÿþÿ
ÿÿÿç
û

ýü
Ør   c                   @   sÂ   e Zd ZdZdZg d¢Zg d¢ZdgZej	ej
B Zdefdefdeejeeejƒfd	eejejƒfd
ejdfdefgdefdedfdefdefdefdefdejfdefdejfdefg
dœZdS )r   zo
    Lexer for configuration files following the Apache config file
    format.

    .. versionadded:: 0.6
    Ú
ApacheConf)Ú
apacheconfÚaconfÚapache)z	.htaccesszapache.confzapache2.confztext/x-apacheconfr/   z#(.*\\\n)+.*$|(#.*?)$z"(<[^\s>/][^\s>]*)(?:(\s+)(.*))?(>)z(</[^\s>]+)(>)z[a-z]\w*rI   z\.+z\\\nz\n+rK   z\\z[^\S\n]+ú\d+\.\d+\.\d+\.\d+(?:/\d+)?r�   z/([*a-z0-9][*\w./-]+)z¢(on|off|none|any|all|double|email|dns|min|minimal|os|productonly|full|emerg|alert|crit|error|warn|notice|info|debug|registry|script|inetd|standalone|user|group)\bz"([^"\\]*(?:\\(.|\n)[^"\\]*)*)"z	[^\s"\\]+rM   N)r<   r=   r>   r?   r@   rA   rB   rC   ÚreÚ	MULTILINEÚ
IGNORECASEr†   r   r
   r   r   ÚTagr   rO   r	   r   ÚOtherr   rˆ   rF   r9   r9   r9   r:   r   %  s@    ÿÿ
øýó
õr   c                   @   sü   e Zd ZdZdZg d¢ZdgZdgZej	Z
dZdZdZd	Zd
ZdZdZdefdedfeeddd�efeeddd�ejfeeddd�efeeddd�efeeddd�efeeddd�efed e d ejfdefdefgdejdfdedfedƒgdœZdS )r   zj
    Lexer for `squid <http://www.squid-cache.org/>`_ configuration files.

    .. versionadded:: 0.9
    Ú	SquidConf)Ú	squidconfú
squid.confÚsquidr«   ztext/x-squidconf)ºÚ
access_logÚaclÚalways_directÚannounce_hostÚannounce_periodÚannounce_portÚannounce_toÚanonymize_headersÚappend_domainÚas_whois_serverÚauth_param_basicÚauthenticate_childrenÚauthenticate_programÚauthenticate_ttlÚbroken_postsÚbuffered_logsÚcache_access_logÚcache_announceÚ	cache_dirÚcache_dns_programÚcache_effective_groupÚcache_effective_userÚ
cache_hostÚcache_host_aclÚcache_host_domainÚ	cache_logÚ	cache_memÚcache_mem_highÚcache_mem_lowÚ	cache_mgrÚcachemgr_passwdÚ
cache_peerÚcache_peer_accessÚcache_replacement_policyÚcache_stoplistÚcache_stoplist_patternÚcache_store_logÚ
cache_swapÚcache_swap_highÚcache_swap_logÚcache_swap_lowÚ	client_dbÚclient_lifetimeÚclient_netmaskÚconnect_timeoutÚcoredump_dirÚdead_peer_timeoutÚdebug_optionsÚdelay_accessÚdelay_classÚdelay_initial_bucket_levelÚdelay_parametersÚdelay_poolsÚ	deny_infoÚdns_childrenÚdns_defnamesÚdns_nameserversÚdns_testnamesÚemulate_httpd_logÚerr_html_textÚfake_user_agentÚfirewall_ipÚforwarded_forÚforward_snmpd_portÚfqdncache_sizeÚftpget_optionsÚftpget_programÚftp_list_widthÚftp_passiveÚftp_userÚhalf_closed_clientsÚheader_accessÚheader_replaceÚhierarchy_stoplistÚhigh_response_time_warningÚhigh_page_fault_warningÚ
hosts_fileÚ	htcp_portÚhttp_accessÚhttp_anonymizerÚhttpd_accelÚhttpd_accel_hostÚhttpd_accel_portÚhttpd_accel_uses_host_headerÚhttpd_accel_with_proxyÚ	http_portÚhttp_reply_accessÚ
icp_accessÚicp_hit_staleÚicp_portÚicp_query_timeoutÚident_lookupÚident_lookup_accessÚident_timeoutÚincoming_http_averageÚincoming_icp_averageÚinside_firewallÚipcache_highÚipcache_lowÚipcache_sizeÚlocal_domainÚlocal_ipÚlogfile_rotateÚlog_fqdnÚlog_icp_queriesÚlog_mime_hdrsÚmaximum_object_sizeÚmaximum_single_addr_triesÚmcast_groupsÚmcast_icp_query_timeoutÚmcast_miss_addrÚmcast_miss_encode_keyÚmcast_miss_portÚmemory_poolsÚmemory_pools_limitÚmemory_replacement_policyÚ
mime_tableÚmin_http_poll_cntÚmin_icp_poll_cntÚminimum_direct_hopsÚminimum_object_sizeÚminimum_retry_timeoutÚmiss_accessÚnegative_dns_ttlÚnegative_ttlÚneighbor_timeoutÚneighbor_type_domainÚ
netdb_highÚ	netdb_lowÚnetdb_ping_periodÚnetdb_ping_rateÚnever_directÚno_cacheÚpassthrough_proxyÚpconn_timeoutÚpid_filenameÚpinger_programÚpositive_dns_ttlÚprefer_directÚ
proxy_authÚproxy_auth_realmÚ
query_icmpÚquick_abortÚquick_abort_maxÚquick_abort_minÚquick_abort_pctÚrange_offset_limitÚread_timeoutÚredirect_childrenÚredirect_programÚredirect_rewrites_host_headerÚreference_ageÚrefresh_patternÚreload_into_imsÚrequest_body_max_sizeÚrequest_sizeÚrequest_timeoutÚshutdown_lifetimeÚsingle_parent_bypassÚsiteselect_timeoutÚsnmp_accessÚsnmp_incoming_addressÚ	snmp_portÚsource_pingÚ	ssl_proxyÚstore_avg_object_sizeÚstore_objects_per_bucketÚstrip_query_termsÚswap_level1_dirsÚswap_level2_dirsÚtcp_incoming_addressÚtcp_outgoing_addressÚtcp_recv_bufsizeÚtest_reachabilityÚudp_hit_objÚudp_hit_obj_sizeÚudp_incoming_addressÚudp_outgoing_addressÚunique_hostnameÚunlinkd_programÚuri_whitespaceÚuseragent_logÚvisible_hostnameÚ
wais_relayÚwais_relay_hostÚwais_relay_port)z
proxy-onlyÚweightÚttlzno-queryr   zround-robinzmulticast-responderÚonÚoffÚallÚdenyÚallowÚviaÚparentz	no-digestÚheapÚlruÚrealmÚchildrenÚq1Úq2ÚcredentialsttlÚnoneÚdisableÚoffline_toggleÚdiskd)ÚshutdownÚinfoÚ	parameterÚserver_listÚclient_listr«   )ÚobjectsÚ
vm_objectsÚutilizationÚipcacheÚ	fqdncacheÚdnsÚ
redirectorÚioÚreply_headersÚfiledescriptorsÚnetdb)ÚstatusÚenablerx  Úclear)Ú	url_regexÚurlpath_regexÚreferer_regexÚportÚprotoÚreq_mime_typeÚrep_mime_typeÚmethodÚbrowserÚuserÚsrcÚdstÚtimeÚ	dstdomainÚidentÚsnmp_communitya™  (?:(?:(?:[3-9]\d?|2(?:5[0-5]|[0-4]?\d)?|1\d{0,2}|0x0*[0-9a-f]{1,2}|0+[1-3]?[0-7]{0,2})(?:\.(?:[3-9]\d?|2(?:5[0-5]|[0-4]?\d)?|1\d{0,2}|0x0*[0-9a-f]{1,2}|0+[1-3]?[0-7]{0,2})){3})|(?!.*::.*::)(?:(?!:)|:(?=:))(?:[0-9a-f]{0,4}(?:(?<=::)|(?<!::):)){6}(?:[0-9a-f]{0,4}(?:(?<=::)|(?<!::):)[0-9a-f]{0,4}(?:(?<=::)|(?<!:)|(?<=:)(?<!::):)|(?:25[0-4]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-4]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))r/   ú#rk   ru   ©Úprefixrw   zstats/zlog/ú=z(?:/(?:z|\b\d+\b))?z(?:\b\d+\b(?:-\b\d+|%)?)rz   z	\s*TAG:.*rK   rL   )r.   rk   N)r<   r=   r>   r?   r@   rA   rB   rC   r¤   r¦   r†   ÚkeywordsÚoptsÚactionsÚactions_statsÚactions_logÚaclsÚip_rer   r
   r   r   r   ÚConstantr   r   rœ   r	   rž   r   rF   r9   r9   r9   r:   r   P  s@    ;ÿô
ý
ñr   c                   @   sâ   e Zd ZdZdZdgZdgZdgZdee	e
eƒfde	dfed	ƒgd
edfde	jdfed	ƒgdedfdedfed	ƒgdejfdejfdejfdeeeejƒfdefdejfdeee
ejƒfdefdefdefde
fdefgdœZdS )r   za
    Lexer for `Nginx <http://nginx.net/>`_ configuration files.

    .. versionadded:: 0.11
    zNginx configuration fileÚnginxz
nginx.confztext/x-nginx-confz(include)(\s+)([^\s;]+)z[^\s;#]+ÚstmtÚbaseú\}rd   z\{Úblockú;rK   ú#.*\nzon|offz\$[^\s;#()]+z([a-z0-9.-]+)(:)([0-9]+)z[a-z-]+/[a-z-+]+z[0-9]+[km]?\bz(~)(\s*)([^\s{]+)z[:=~]z[^\s;#{}$]+z	/[^\s;#]*r/   z[$;])r.   r®  r«  r¬  N)r<   r=   r>   r?   r@   rA   rB   rC   r   r   r   r   r   r   Ú	Namespacer
   rD   r©  rP   r   r‡   r   ÚRegexr	   rF   r9   r9   r9   r:   r   Ò  sD    ý
ýýÿò
ðr   c                   @   sr   e Zd ZdZdZddgZdgZdgZddej	fd	e
fd
efdefdefdefde
jfdefdejfdefg
iZdS )r   zg
    Lexer for `Lighttpd <http://lighttpd.net/>`_ configuration files.

    .. versionadded:: 0.11
    zLighttpd configuration fileÚlighttpdÚlightyzlighttpd.confztext/x-lighttpd-confr.   r°  z/\S*z[a-zA-Z._-]+r£   ry   z=>|=~|\+=|==|=|\+z\$[A-Z]+z[(){}\[\],]z"([^"\\]*(?:\\.[^"\\]*)*)"r/   N)r<   r=   r>   r?   r@   rA   rB   rC   r
   rD   r   r   r   r   rO   r   r   rˆ   r   rF   r9   r9   r9   r:   r      s&    öÿr   c                   @   sþ   e Zd ZdZdZddgZddgZdgZdZd	Z	d
Z
ejejB Zddefdeeeeeeeeƒfde
f eeeeeƒƒfde
e
f eeeeeƒƒfde
f eeeeeƒeeƒƒfde
e
f eeeeeƒƒfde eeeeƒfde	f eeeƒfdeeƒfg	iZdS )r    z`
    Lexer for `Docker <http://docker.io>`_ configuration files.

    .. versionadded:: 2.0
    ÚDockerÚdockerÚ
dockerfileÚ
Dockerfilez*.dockerztext/x-dockerfile-configz-(?:MAINTAINER|EXPOSE|WORKDIR|USER|STOPSIGNAL)z-(?:RUN|CMD|ENTRYPOINT|ENV|ARG|LABEL|ADD|COPY)z(?:\s*\\?\s*)r.   z#.*z1(FROM)([ \t]*)(\S*)([ \t]*)(?:(AS)([ \t]*)(\S*))?z(ONBUILD)(\s+)(%s)z$(HEALTHCHECK)(\s+)((%s--\w+=\w+%s)*)z/(VOLUME|ENTRYPOINT|CMD|SHELL)(\s+)(%s)(\[.*?\])z$(LABEL|ENV|ARG)(\s+)((%s\w+=\w+%s)*)z(%s|VOLUME)\b(\s+)(.*)z	(%s)(\s+)z(.*\\\n)*.+N)r<   r=   r>   r?   r@   rA   rB   rC   Ú	_keywordsÚ_bash_keywordsÚ_lbr¤   r¦   r¥   r†   r
   r   r   r   r   r   r   r   rF   r9   r9   r9   r:   r      s<    ÿ
ÿÿ
ÿ
óÿr    c                   @   s
  e Zd ZdZdZddgZdgZddgZdZd	 	d
 
e¡¡ZdZdZdZdZdZdZdZdZdZdZee e e e e e e e Zd	 	d
 
e¡¡Zdd„ Zedƒedƒdeejƒfedddd�ejfeeddd�e j!fedƒedƒde"fgd e#j$d!fd"e#j%fedƒd#ee&ej'e&e(e&e)ƒfd$ee&ej*e&e(e&ƒfd%ee&e+jje&e(e&ƒfed& eej,e)ƒfd'ee)ej'e)ƒfed( ee j-e&ƒd)fd*efg
d+ee&ej.e&ej/e&e)ƒfgd,eej/ƒfd-eej/ƒfgd.e)fgd/e#j$fd0e#j$d1fd2e#j$d3fd4e#j$fgd5e&fd6e&fd7ee0e&ƒfgd8œZ1d9S ):r!   zc
    Lexer for `terraformi .tf files <https://www.terraform.io/>`_.

    .. versionadded:: 2.1
    Ú	TerraformÚ	terraformÚtfz*.tfzapplication/x-tfzapplication/x-terraform)ÚbackendÚdataÚmoduleÚoutputÚproviderÚprovisionerÚresourceÚvariablez({})ú|)	rŽ   ÚnumberÚboolÚlistÚtupleÚmapÚsetÚobjectÚnull)	ÚabsÚceilÚfloorÚlogÚmaxÚmixÚparseintÚpowÚsignum)ÚchompÚformatÚ
formatlistÚindentÚjoinÚlowerÚregexÚregexallÚreplaceÚsplitÚstrrevÚsubstrÚtitleÚtrimÚ
trimprefixÚ
trimsuffixÚ	trimspaceÚupper)ÚalltrueÚanytrueÚ	chunklistÚcoalesceÚcoalescelistÚcompactÚconcatÚcontainsÚdistinctÚelementÚflattenÚindexÚkeysÚlengthrÊ  ÚlookuprÌ  Ú	matchkeysÚmergers   ÚreverseÚsetintersectionÚ
setproductÚsetsubtractÚsetunionÚsliceÚsortÚsumÚ	transposeÚvaluesÚzipmap)Úbase64decodeÚbase64encodeÚ
base64gzipÚ	csvdecodeÚ
jsondecodeÚ
jsonencodeÚtextdecodebase64Útextencodebase64Ú	urlencodeÚ
yamldecodeÚ
yamlencode)	ÚabspathÚdirnameÚ
pathexpandÚbasenameÚfileÚ
fileexistsÚfilesetÚ
filebase64Útemplatefile)Ú
formatdateÚtimeaddÚ	timestamp)Úbase64sha256Úbase64sha512ÚbcryptÚfilebase64sha256Úfilebase64sha512Úfilemd5Úfilesha1Ú
filesha256Ú
filesha512Úmd5Ú
rsadecryptÚsha1Úsha256Úsha512ÚuuidÚuuidv5)ÚcidrhostÚcidrnetmaskÚ
cidrsubnetÚcidrsubnets)	ÚcanÚdefaultsÚtoboolÚtolistÚtomapÚtonumberÚtosetÚtostringÚtryc           
      c   sR  � |  d¡}|t| d¡fV  |  d¡tj| d¡fV  |  d¡|_| d¡|_|jtj| d¡fV  | ¡ |_| d¡}| d¡d dk}g }t 	d¡}| 
|j|j¡D ]<}|r`| ¡  ¡ }n| ¡  ¡ }||krŒ|D ]}	|	  ¡ tj|	 ¡ fV  ql|  ¡ tj| ¡ fV  | ¡ |_ n| |¡ qU|D ]}	|	  ¡ t|	 ¡ fV  q”t|jƒ|_d S )Nr4   rU   r2   éÿÿÿÿrJ   z.*?
)Ústartr   Úgroupr   Ú	DelimiterÚposÚendÚHeredocr¤   ÚcompileÚfinditerr7   ÚstripÚrstripÚappendr   Úlen)
ÚselfÚmatchÚctxr<  ÚhdnameÚtolerantÚlinesÚline_reÚcheckÚamatchr9   r9   r:   Úheredoc_callback{  s4   €




zTerraformLexer.heredoc_callbackÚbasicÚ
whitespacez(".*"))ÚtrueÚfalseru   rŸ  Ú
identifierÚpunctuationry   z\s*/\*rk   z\s*#.*\nz'(\s*)([0-9a-zA-Z-_]+)(\s*)(=?)(\s*)(\{)z"(\s*)([0-9a-zA-Z-_]+)(\s*)(=)(\s*)z(\s*)("\S+")(\s*)([=:])(\s*)z(\()z(\[)([a-z_,\s]+)(\])z(\s+)Ú	blocknamez(<<-?)\s*([a-zA-Z_]\w*)(.*?\n)z8(\s*)("[0-9a-zA-Z-_]+")?(\s*)("[0-9a-zA-Z-_]+")(\s+)(\{)z\b(var\.[0-9a-zA-Z-_\.\[\]]+)\bz.\b([0-9a-zA-Z-_\[\]]+\.[0-9a-zA-Z-_\.\[\]]+)\bz[\[\]()\{\},.?:!=]z[^*/]z/\*r•   z\*/rK   z[*/]r“   r/   z(\\)(\n))r.   rR  rX  rV  rW  rk   rS  N)2r<   r=   r>   r?   r@   rA   rB   rC   ÚclassesrÚ  rÝ  Ú
classes_reÚtypesÚnumeric_functionsÚstring_functionsÚcollection_functionsÚencoding_functionsÚfilesystem_functionsÚdate_time_functionsÚhash_crypto_functionsÚip_network_functionsÚtype_conversion_functionsÚbuiltinsÚbuiltins_rerQ  r   r   r   rˆ   r   r   r©  r   r˜   r   r
   Ú	MultilinerD   r   rO   r   r   rE   r   r—   r™   rš   rP   r	   rF   r9   r9   r9   r:   r!   ?  sœ    	ÿÿÿÿþ(ñ
ÿÿÿþâ&ÿýþÿ

üý
¸r!   c                	   @   s¸   e Zd ZdZdZdgZddgZg Zdefde	j
dfdefgd	ed
fdedfdefde	jfgdeeeƒfdedfdeeeƒfdedfdefde	jfgdefded
fdefdefgdœZdS )r"   zm
    Lexer for termcap database source.

    This is very simple and minimal.

    .. versionadded:: 2.1
    ÚTermcapÚtermcapztermcap.srcz^#.*z
^[^\s#:|]+Únamesr/   r“   rK   ú:Údefsú\|z[^:|]+z(\\)(\n[ \t]*)z\n[ \t]*rd   ú(#)([0-9]+)r¡  rÀ  z	[^\s:=#]+z\\072z[^:\\]+r”   ©r.   rj  rl  rÀ  N)r<   r=   r>   r?   r@   rA   rB   rC   r
   r   r§   r   r   rE   r   r	   r   r   rš   r   rF   r9   r9   r9   r:   r"   ñ  s8    	
ýüú	ü
ìr"   c                
   @   sÄ   e Zd ZdZdZdgZddgZg Zdefde	j
dfdefgd	ed
fdeeeƒdfdefde	jfgdefd	edfdeeeƒfdedfdeeeƒfde	jfgdefdeeeƒd
fdefdefgdœZdS )r#   zn
    Lexer for terminfo database source.

    This is very simple and minimal.

    .. versionadded:: 2.1
    ÚTerminfoÚterminfozterminfo.srcz^#.*$z
^[^\s#,|]+rj  r/   r“   rK   z(,)([ \t]*)rl  rm  z[^,|]+z\n[ \t]+rd   rn  r¡  rÀ  z	[^\s,=#]+z\\[,\\]z[^\\,]+r”   ro  N)r<   r=   r>   r?   r@   rA   rB   rC   r
   r   r§   r   r   r   rE   r   r   rš   r   rF   r9   r9   r9   r:   r#      s8    	
ýüú	ü
ìr#   c                
   @   s¼   e Zd ZdZdZdgZdgZg Zdej	fde
ejeƒfde
ejeƒdfed	ƒd
efdefdefgdefdejdfgdejdfdejfged	ƒdej	dfdedfd
efdefdefgdœZdS )r$   z¾
    Lexer for `pkg-config
    <http://www.freedesktop.org/wiki/Software/pkg-config/>`_
    (see also `manual page <http://linux.die.net/man/1/pkg-config>`_).

    .. versionadded:: 2.1
    Ú	PkgConfigÚ	pkgconfigz*.pcú#.*$z	^(\w+)(=)z^([\w.]+)(:)ÚspvalueÚinterpr/   z[^${}#=:\n.]+r”   z\$\$z\$\{Úcurlyr­  rK   r�   r“   z[^${}#\n\s]+)r.   rv  rw  ru  N)r<   r=   r>   r?   r@   rA   rB   rC   r
   rD   r   r   rE   r   r§   r   r   r   r	   r   r�   rF   r9   r9   r9   r:   r$   O  s<    ÿð
û
þ
÷
âr$   c                	   @   s~   e Zd ZdZdZdgZdgZg Zddej	fde
eeeƒfde
ejeeƒfd	e
eejeƒfed
dd�ejfdefdefgiZdS )r%   a˜  
    Lexer for `pacman.conf
    <https://www.archlinux.org/pacman/pacman.conf.5.html>`_.

    Actually, IniLexer works almost fine for this format,
    but it yield error token. It is because pacman.conf has
    a form without assignment like:

        UseSyslog
        Color
        TotalDownload
        CheckSpace
        VerbosePkgLists

    These are flags to switch on.

    .. versionadded:: 2.1
    Ú
PacmanConfÚ
pacmanconfzpacman.confr.   rt  z^(\s*)(\[.*?\])(\s*)$z(\w+)(\s*)(=)z^(\s*)(\w+)(\s*)$)z$repoz$archz%oz%uru   rv   r/   r”   N)r<   r=   r>   r?   r@   rA   rB   rC   r
   rD   r   r   r   r   rE   r   r   rP   r	   rF   r9   r9   r9   r:   r%   ‰  s0    ÿÿûú	åÿr%   c                   @   s  e Zd ZdZdZdgZdgZdeej	e
ej	ƒfdeeje
ejƒfdeeje
ƒfdeeejeejeƒfd	ejd
fdefdefdejdfdejdfdeej	eejƒfdejfde
fgdejfdejfdejdfgdejfdejfdejdfgdejfd	ejdfdejdfdejfgdœZdS )r&   zM
    Lexer for `Augeas <http://augeas.net>`_.

    .. versionadded:: 2.4
    ÚAugeasÚaugeasz*.augz(module)(\s*)([^\s=]+)z(let)(\s*)([^\s=]+)zV(del|store|value|counter|seq|key|label|autoload|incl|excl|transform|test|get|put)(\s+)z8(\()([^:]+)(\:)(unit|string|regexp|lens|tree|filter)(\))z\(\*rk   z[*+\-.;=?|]z
[()\[\]{}]r�   rŽ   z\/rß  z([A-Z]\w*)(\.)(\w+)r”   r/   r’   z[^"]rK   z[^/]z[^*)]r•   z\*\)z[)*])r.   rŽ   rß  rk   N)r<   r=   r>   r?   r@   rA   rB   r   r   r±  r   r   r›   rP   rO   r   r˜   r
   rg  r   r   rˆ   r²  rž   rF   r9   r9   r9   r:   r&   Ã  s@    


ô
ý
ý

ü
çr&   c                   @   s¤   e Zd ZdZdZdgZg d¢Zddeee	ƒfdefdefd	e
jfd
efdefdefde	jfdefdejfdejfdejfdejfdejfdefdefdefgiZdS )r'   zƒ
    Lexer for `TOML <https://github.com/toml-lang/toml>`_, a simple language
    for config files.

    .. versionadded:: 2.4
    ÚTOMLÚtoml)z*.tomlÚPipfilezpoetry.lockr.   z^(\s*)(\[.*?\])$ú[ \t]+r“   z#.*?$z"(\\\\|\\[^\\]|[^"\\])*"z\'\'\'(.*)\'\'\'z
\'[^\']*\'z(true|false)$z[a-zA-Z_][\w\-]*z>\d{4}-\d{2}-\d{2}(?:T| )\d{2}:\d{2}:\d{2}(?:Z|[-+]\d{2}:\d{2})z'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?z\d+[eE][+-]?[0-9]+j?z[+-]?(?:(inf(?:inity)?)|nan)z[+-]?\d+z[]{}:(),;[]z\.r¡  N)r<   r=   r>   r?   r@   rA   rB   r   r   r   r
   rD   r   r©  r   r   r‡   rœ   r   r   rF   r9   r9   r9   r:   r'   ï  s2    ßÿr'   c                   @   s¦   e Zd ZdZdZddgZdgZdZddee	e
ƒfd	ee	ee	ee	ƒfd
ee	ee	ee	ƒfe d¡ee	eeeee	ƒfe d¡ee	eeeee	ƒfdee	eee	ee	ƒfgiZdS )r(   z}
    Lexer for `NextedText <https://nestedtext.org>`_, a human-friendly data 
    format.
    
    .. versionadded:: 2.9
    Ú
NestedTextÚ
nestedtextÚntz*.ntz#^(\s*)({0})(.*?)({0}: ?)(.*?)(\s*)$r.   z^(\s*)(#.*?)$z^(\s*)(>)( ?)(.*?)(\s*)$z^(\s*)(-)( ?)(.*?)(\s*)$ú'r�   z^(\s*)(.*?)(:)( ?)(.*?)(\s*)$N)r<   r=   r>   r?   r@   rA   rB   Ú_quoted_dict_itemr   r   r
   r   r   rÚ  r   rF   r9   r9   r9   r:   r(   "  s    úÿr(   c                   @   s¤   e Zd ZdZdZdgZddgZejej	B ej
B ZdZdZdZeeejeƒdfeeejeƒdfeeeeeƒfd	efd
efdefdefgdeeƒdfgdœZdd„ ZdS )r)   z—
    Lexer for `Singularity definition files
    <https://www.sylabs.io/guides/3.0/user-guide/definition_files.html>`_.

    .. versionadded:: 2.6
    ÚSingularityÚsingularityz*.defzS^(\s*)(bootstrap|from|osversion|mirrorurl|include|registry|namespace|includecmd)(:)zT^(%(?:pre|post|setup|environment|help|labels|test|runscript|files|startscript))(\s*)z6^(%app(?:install|help|run|labels|env|test|files))(\s*)Úscriptz	\s*#.*?\nz"\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))\br  z
(?!^\s*%).z(.+?(?=^\s*%))|(.*)rK   )r.   r‡  c                 C   s>   d}t  d| t j¡r|d7 }t  tjdd… | ¡r|d7 }|S )zlThis is a quite simple script file, but there are a few keywords
        which seem unique to this language.r   z&\b(?:osversion|includecmd|mirrorurl)\bg      à?r4   Ng\�Âõ(\ß?)r¤   Úsearchr¦   r)   Ú_section)r7   Úresultr9   r9   r:   r;   \  s   zSingularityLexer.analyse_textN)r<   r=   r>   r?   r@   rA   rB   r¤   r¦   r¥   ÚDOTALLr†   Ú_headersr‰  Ú_appsectr   r   ÚHeadingr   r   r	   r
   r   r   r   rF   r;   r9   r9   r9   r:   r)   <  s*    ù
ÿör)   )0r?   r¤   Úpygments.lexerr   r   r   r   r   r   r   Úpygments.tokenr	   r
   r   r   r   r   r   r   r   r   r   r   Úpygments.lexers.shellr   Úpygments.lexers.datar   Ú__all__r   r   r   r\   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r9   r9   r9   r:   Ú<module>   s:    
$8#,M=+ .# 3//::,3