Files
thefoldwithin-earth/.old2/target/release/deps/liblog-5aea234a9df24890.rlib
T

573 lines
242 KiB
Plaintext
Raw Normal View History

2025-10-19 16:48:12 -05:00
!<arch>
/ 0 0 0 0 5090 `
=&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h6783f8cb2356d317E_ZN108_$LT$core..iter..adapters..filter..Filter$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h87c60f4482467802E_ZN4core4iter6traits8iterator8Iterator4find17h5317aab6f847df69E_ZN185_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..FromResidual$LT$core..ops..control_flow..ControlFlow$LT$B$C$core..convert..Infallible$GT$$GT$$GT$13from_residual17hbc3792affc1e8514E_ZN4core3fmt2rt38_$LT$impl$u20$core..fmt..Arguments$GT$6new_v117h9b07180383a0c496E_ZN4core3fmt2rt38_$LT$impl$u20$core..fmt..Arguments$GT$9new_const17h7a000ff5b3141b24E_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h6e3e3b71bf688375E_ZN4core3ptr8non_null16NonNull$LT$T$GT$20offset_from_unsigned17h188cacfa6697c659E_ZN4core4iter6traits8iterator8Iterator3map17h1a7793c7da1f0b6bE_ZN4core4iter6traits8iterator8Iterator3map17h3783006e10b35633E_ZN4core4iter6traits8iterator8Iterator3map17h712f2dcc3f2eeed3E_ZN4core4iter6traits8iterator8Iterator8try_fold17h775fd3255b0e0860E_ZN4core4iter6traits8iterator8Iterator4find5check28_$u7b$$u7b$closure$u7d$$u7d$17hc023a128004709a9E_ZN4core4iter6traits8iterator8Iterator6filter17h26655b933e048361E_ZN90_$LT$core..option..IntoIter$LT$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf35e062214b5f2dcE_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$11from_output17hbf658667af0a5f2aE_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h42c95230fd79b1faE_ZN4core4sync6atomic23atomic_compare_exchange17hf76ec5f8ababc92dE_ZN4core4sync6atomic11atomic_load17h14627e29ef8c8066E_ZN4core4sync6atomic12atomic_store17h0e586298b2079ed1E_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$4iter17hfb7e51c69a95ec19E_ZN4core5slice4iter13Iter$LT$T$GT$3new17hcd691132050e7357E_ZN4core6option15Option$LT$T$GT$3map17h30a3f3f9440a6b84E_ZN4core6option15Option$LT$T$GT$5ok_or17h5608f72aacc9a1f4E_ZN4core6option15Option$LT$T$GT$5ok_or17h58f64b7d67c2faf3E_ZN4core6option15Option$LT$T$GT$9unwrap_or17h3b4e1d21ebac578fE_ZN4core6option15Option$LT$T$GT$9unwrap_or17h80a83c3eed0eb703E_ZN91_$LT$core..option..Option$LT$T$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h6a353c2c9789d45cE_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9136237b3a749bb2E_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17ha9d9189b5a42a7a6E_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17hd06c3b7a574d5811E_ZN57_$LT$log..Level$u20$as$u20$core..str..traits..FromStr$GT$8from_str17h4316e67affaac4b1E_ZN3log5Level10from_usize17h99d3509c40f3097eE_ZN49_$LT$log..Level$u20$as$u20$core..fmt..Display$GT$3fmt17hcfd3a17fa21e4942E_ZN3log5Level6as_str17h1f17461509f11febE_ZN3log5Level4iter17he42f84852190bd5cE_ZN3log5Level18increment_severity17h5b16560ae7636afeE_ZN3log5Level18decrement_severity17h75ff1b18a2fbb31cE_ZN63_$LT$log..LevelFilter$u20$as$u20$core..str..traits..FromStr$GT$8from_str17h13ae3c48a81867f1E_ZN3log11LevelFilter10from_usize17hae96de677b38a5e4E_ZN55_$LT$log..LevelFilter$u20$as$u20$core..fmt..Display$GT$3fmt17h99153ae6c987cb3dE_ZN3log11LevelFilter6as_str17hc3fe0c1c469518c7E_ZN3log11LevelFilter4iter17h9aad373652cf8fc6E_ZN3log11LevelFilter18increment_severity17h3c7880aa43c21fb3E_ZN3log11LevelFilter18decrement_severity17h5a39135e2ee7ac68E_ZN61_$LT$log..RecordBuilder$u20$as$u20$core..default..Default$GT$7default17h90f228a7799c8486E_ZN63_$LT$log..MetadataBuild
log-5aea234a9df24890.log.bc0bf65e3dd238cf-cgu.0.rcgu.o/
lib.rmeta/ 0 0 0 644 193104 `
ELF>Ðð@@GNUÀrust
#rustc 1.90.0 (1159e78c4 2025-09-14)Á˜[9íùBëÔØî'Ì-049beac0cc29bd50ÁÒŸãPñqµöu}ð(ÚòÑË-8e6617d0a0e102d3ÁerrorÁ,ýzŽ<âz®,ìz|âz
__log_keyÁLƒyŽ<åxkvÁ$ïxtåx
__log_valueÁ\È|Ž<ª|Æ$´|tª|
__log_value_svalÁ„燎<ćkv_svalÁL·œÄ‡
__log_value_serdeÁŒüŠŽ<ØŠkv_serdeÁT⊤؊
__log_value_errorÁŒ¯ŽŽ<Žkv_stdÁD—ŽŽserdeÁ,Ó{Ž<¬<ŒÆú{Ž<á{Æ$ë{tá{p$ˆ}ëŒÜ|§ ,ð|ÌÜ|ÜÛ|ÒDÌ}댘}§ ,¬}̘}Ü—}b\…~ëŒá}§ ,õ}Ìá}Üà} KeyValuesÁLÀçŽ<—çÆ$¡çt—çset_boxed_loggerÁ„¢æŽ<íå®,÷å|íå
kv_supportÁT©Ž<”Æt”testsÁ,Œú$˜®macrosÁ
__logÁ
 log_enabledÁ

__log_enabledÁ
 __log_loggerÁ
­
Ö
ÿ
¸
ó LOGGERÁSTATEÁ
UNINITIALIZEDÁ INITIALIZINGÁ INITIALIZEDÁMAX_LOG_LEVEL_FILTERÁLOG_LEVEL_NAMESÁ SET_LOGGER_ERRORÁLEVEL_PARSE_ERRORÁ!³#Ú %%from_strÁ' ' ' +¥-Ò-maxÁ-to_level_filterÁ-û-ô2 2 -increment_severityÁ-decrement_severityÁ7³9Ú ;;ú= = @¥ BÒB« Bto_levelÁBûBôG G Bá Bú 
L'aÁLgetÁ O ObuilderÁOôOmetadataÁOlevelÁOãO©
V Omodule_path_staticÁO˜Y O file_staticÁO ] ]Ô
]ô]Ê ]Ù ]ã]©
]÷ ]˜] ]]buildÁ
j>l lµ lÙ lãq qÔ
qÙ qãq
w>LogÁyenabledÁylogÁyflushÁ NopLoggerÁ}
ö
Žƒƒö
ƒƒŽ
set_max_levelÁset_max_level_racyÁ max_levelÁ
set_loggerÁ set_logger_innerÁset_logger_racyÁ¥¥loggerÁNOPÁ
__private_apiÁ 
  ValueÁ¤ sealedÁ¦KVsÁ§ §into_kvsÁª ª°­ ­°°ö
°°Žlog_implÁ´ ö
ºlocÁSTATIC_MAX_LEVELÁ

Š
Ê
infoÁ
Æ
traceÁLevelÁÄÅ
Å ÄWarnÁÈ
ÄInfoÁÊ
ÄÌ
ÄTraceÁÎ
бԳ֌ØÚ ڹܥÞù߯ LevelFilterÁáOffÁâ
áä
áÄæ
áÕè
áê
áóì
î± !ò³"ôŒ#öÚ $ø¹%ú¥&üùý¯MaybeStaticStrÁÿ ÿStaticÁ
òÿBorrowedÁ
ò' ( ±)Œ ŒŒ* + ³, ¹- Ú .š šùœ¯/ž ž¥RecordÁ¡ ¡Ê ¡ô¡©
¡˜¡0¨ ¨±1« «¥
RecordBuilderÁ® ®recordÁ2± ±¥MetadataÁ´ ´Ù ´ã3¸ ¸±4» »Œ5¾ 6À À³7à ù8Æ ÆÚ 9É Éù˯:Í Í¥MetadataBuilderÁÐ ÐÊ ;Ó ÓŒ<Ö =Ø Ø³>Û Û¹?Þ ÞÚ @á áùã¯Aå å¥SetLoggerErrorÁè
èòBë¥ParseLevelErrorÁí
íòCð¥DEó³FõŒ GlobalLoggerÁ÷
ù¥"8"8$8$8'8,8,8,8081858688888:8:8=8A8A8A8E8F8J8K8N8R8S8T8U8V8X8Y8[8\8`8a8b8c8d8e8f8g8h8i8j8o8p8t8u8v8w8z8z8z8{8{8{8|88888888ƒ88888888888888±8±8±8²8²8²8³8´8´8´8´8´8´8´88888º8Ñ8Õ8Õ8×8Ù8Ù8Û8Û8Ý8Ý8Ý8ß8ß8ï8ó8ó8õ8÷8÷8ù8ù8û8û8û8ý8ý88Ž8888888œ8œ8 8 8 8ª8­8­8­8³8³8³8º8½8Â8Â8Å8Å8È8È8Ë8Ë8Ï8Ï8Ï8Õ8Ú8Ú8Ý8Ý8à8à8ã8ã8ç8ç8ç8ì8ì8ì8ñ8ñ8ñ8ô8ô8ö8ú8ú8ú8¥ÄÅÆÇÈÉÄÊËÕÌÍÎÏóÈÍjàJÛ÷Ä˨(Ø©¨(Ú¨(¨(ߨ(¨(¨(ÿ¨(“]¨(ð^¨(Ú¨(áâãûäåæçÄèéÕêëìíó×TLÞ¥˜Ø¨(ò)…s¨(˜]¨(¥ò)Ëò)Ø©ò)Úò)ò)ßò)ò)ò)ÿò)“]ò)ð^ò)Úò)¨(ò)¨(…sò)˜]ò)Ëÿ̓òèòÖà>88 ¥ ,ß ,Ø© ,Ú , ,ÿ , , ,ð^ ,“] ,¥¡¡°£Ê ¤ô¥©
¦˜§˜þ’Ay­ “]Ï-“]®®°²öµŒ\
B5k ®®°²öµŒ\
B5k8¥´´ÓÙ ·ã73JªDŒ  ߯/Ø©¯/Ú¯/¯/ÿ¯/¯/¯/ð^¯/“]¯/ßÐКÒÊ 2…Â#?—É Ø©À0ÚÀ0À0ÿÀ0À0À0ð^À0“]À0ÐКÒÊ 2…Â#?—É8y}}~š âª9^‹ô=>y 8“]èèéÌêò ZCÿ÷¨˜]®2“]ííîúïò DQRŠ÷2O9Ø©ï2Úï2ï2ßï2˜]ï2§ 
  Û3 § “]÷÷øÆ EA-˜nÊy„4ÐÄîáÿ¨¡¸´ÒÄðáÿÓÄñáÿ¾´ÖÐòíÔÄ!Äòá7áÿÀ´ØÐóíÖÄôáŒÿ»´ÓÐõíØÄ#Äöá9áÿÆ´ÞÐÚÄøáÿôÛÐÜÄúážÿ«¡±®Í´åÐëèðíù÷ÞÄüášÿÉ´áÐ%Ä;á+Ä@áèíj®wÐ
°÷ª
­
¥ÊË#Ø©Ú*ß6*ÿ/“]
#ð^F…s#˜] y § ‹† üî…á8,ƒ†& ª† á8ôކá8,¢†% Ȇ á8ì­†á8,À†% ¬‡ á8*á85< ƒ á8Ç+á86=(̌ьÑ"¨(- ¨(7@JHÙŒ

âŒÕ9>DOœ<Vœ<]á8dá8kt¥  __self_discrÁš __arg1_discrÁ±¹æŒ×äŒô3œ<)PèŒ

#/4
á8á8HMUòŒÙlqwæ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷ÈÉÊLessÁËÌÍÎÏÐGreaterÁÑ·Òé÷Uâ ³'œ</œ<7á8?á8G á8R£AZd¥ rÐ<ç<Œ?ŸôŒ

#/4
á8EJR÷ŒÛint@œ<œ<Žá8á8œ£A££Aª³¥ ÀÐ<Íç<Øà»Bé (ùŒ
&,4 ýŒKS±Ddl±D6}±DOž±Dh°µ
À]ÆËÓþŒÝê½…À…Á…ÏÂ…òÃ…Ä…Å…òý3lËêMô3ÑÑÒ
=ClJÑÁkœ<s ü\ü\šþ\Ÿ ÚYÿ\bufÁÚY„ÑÚây59¹±DÁá8ÉÓÚáì±Eö 

ñ^á8¯6;CßZ_ô3kœ<r ¥H|á8ƒ£AŠ© Ð<­µœH¾,ö“tö“
4ˆ”|ˆ”
üö“!"ü“[$瓜<,È“ ò),Ï“¨(á8ò)zá85¥ 5d,°•„¯•
 4Æ•
ŒÅ•
  ”Ä• ü¯•(À•»Bk+¼À•üª•. æ‚›@Þ•$üÜ” ×?¬Š•œ<,ë”·J,ò”›@£Aàá8ç¨(üá8£A¸á8Õò)êá8ñV¥ Y»Bçd Ä¡/üïœ2¨(,ÿœ,žtž
üªž'¼ªž
C&!üªž04Òž
©Oò)CDÒžàž0üómò)\”žœ<,Šžæ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷ò)ʨ(ìá8óeˆ×NôýNÓœ™¤„™¤
. ª¤#䙤4­¤
©O¨(DD­¤µ¤4ü•¤ ¨(˜¤ 4á8¨(ô31á8 –¤æ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷¨(êXšÛPƒQå(ò²÷²ï"ò)-·J4=GHÿ²

ˆ³ó9>DO·JV·J]á8dá8kt¥ Ð<Žç<¡Œ³õгô3·J)P޳

#/4??DL˜³÷chn×?z·J·Jˆá8á8£A£A¤­¥ ºÐ<Çç<ÒÚ?ãš³

#/4»B?DL³ùchn@z·J·Jˆá8á8£A£A¤­¥ ºÐ<Çç<ÒÚ»Bã
(Ÿ³
(.6±D£³KS±Ddl±D6}±DOž±Dh¯·±DÉαEÚß ç¤³ûþèE ·JîF±D!á8)3ÚAL±EV ¦³
œH*/7ª³ýNSô3_·JfîHmá8t£A{©Ð<ž¦œH¯tü¶‚·
ܨ(ò),ü¶$…·D‚··8üζB$í¶·J,Ô¶œ<,Û¶¥ E½]˜,¸„œ¸
 4³¸
Œ²¸
  ”±¸ üœ¸(­¸»Bk+¼­¸ü—¸. æ‚›@˸:üÏ·| ×?¬÷··J,Þ·œ<,å·›@£Aßá8æò)ûá8£A·á8Ô¨(éá8ðV¥ Y»B攞À á¶ÀDüø¿>ò)\ˆÀ,ÂtÂ
üïÁ!ŒïÁÛP$–ÂEü½ÁYîQl×Á·J,ÍÁò)rá8y=ÛPzœäÇ„äÇ×N õÇ!ääÇ4øÇýN<DøÇ€ÈIüàÇ ò)ãÇ IÌQÒQò)ô3/á8 áÇÉOœT×N¹ýN˜( éÕ îÕ"'-ÿ̓òèòÖà>88ƒ e !òÕŽ!ðÕ ô3àe"+5 H"ôÕ

'5 D
àeQ
\ lt~Œ
àe
¤²
àe¿
Ê8"ßÖ
àeè±D'
àe4è±DJUaf
Ü ±D¨i}Š`"ÃÖ
àe
ͱD'
àe4 ͱDJ 
U
 af¢i q
v~"ýÕû"àe*àe2:kBIàeàeUk]kekm¨i¨i ¨i"ák*¨iÀ¨iÈákÐákØàe¸àeÀàeÈàeÐàeØàeààeèò¥ Ð<ç<__self_0ÁÈ
__arg1_0ÁÜ ƒlv—lc¢i¢i

#ÿÕ

#/4
kEJRV
`n#Ö  
àe 
« ¼Â
àeÏ
Ú
è
àeõ
 8#ßÖ
àeè±D'
àe4è±DKP
±Daf n`#ÃÖ
àe
ͱD'
àe4ͱDKPÂp
[` h#‚Ö
"@/àe7àe?kGkO@W kbºrjr­kzk–kŠ–k¨i¨i!¨i¨i£àeºàeÂàeÊàeÒàeÚàeâàeê ô¥ Ð<ç<ƒl§
—l³ƒl1—l=¹Xa—nkÂpbÂpöP$„Ö

 '
àe4
?O
Zfk
kk
Œ
àe
¨¸
àeÅ
Ð8$ßÖ
àe è±D'
àe4 è±DKP
±D±D d iq`$ÃÖ
àe ͱD'
àe4
ͱDKPw [
`h$ŽÖÍÜâéð÷×?àe àekk$­k,k4k<kD¨i÷¨iþ¨iz¨iºrjºrràezàeàeŠàeàešàe¢àeª´¥ ÂÐ<Ðç<܃l —lŸ
ƒl  —l, Ñu–wE–wÖ %Ö

ñ^k¯6;CG
Rc8%ßÖè±D 
ñ^±DÅ{4¢A`%ÃÖͱD ¦|+Þ8%”Öœý  ô3àe% Å{0k8ô3@ºrHkP¨iª¨iöh©vÐ<ƒlâƒl2¤¼{®¦|K¦| (&–Ö
 8&ßÖè±D@ H±D+ 6
 “]v{
Ý]Œ 
pž`&ÃÖͱD¼Ä±D+6Çèíßùþa &›Ö #)0 èE=àeEîFMkU¨i»±DdÇÊákѨiT±DÇdáklœÚªƒlƒlžÍákdzßßákÇEßí,Å×
\¿×" žØè±D ¤Ø ð×ͱD ö×ü¿×q¶ØNüœ×šôÙ×ü…Ø ±D×àe,£×±DV–kÌÙ×±D±DÈ+±éx°'ä´´ÓÙ ·ã73JªDŒ KP
¦‘…bjÀ'«ä’Ž’Ž ArgumentsÁ”ŽpiecesÁÚY•Ž¥ÚY–ŽôÚY±¾)Þ Ü¶mr
¦ÿ…Œø'Éä'æ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷eZ_
¦qyø'öä ᇠ(0ˆ'œå æ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷Y^
¦Àˆ p
x('äã ¡
'éãª8 ¡¡°£Ê ¤ô¥©
¦˜§˜þ’Ay­š ꉥ‘…Ø ‘…äÿ… ÿ… œ†‹¥Àˆz ÀˆÔ…Uä†îá‡eá‡ï‘‰Â((ëã ±D°(ä  ±D‘…&ÇÀ(«ä 
±D ÿ…& Çø(Éä'

 ±D '  Çø(öä

 ±D'Lj(œå 
±DÀˆ&1Ç,2
×] DJ;A
é î
½Â(ðã­¡èE­ÈŠîF¾±DƱD¹ÇÁ܊ʱDÇ¥ñŠ®±Ddž‹±DdÇl†‹u±DGÇO ­[­dYÚgrÜŠÇjñŠÇ>†‹Ç†‹Çå»Ç¸µŽª¤Ýê”Ýê
_÷êQü­êJ®®°²öµŒ\
B5kŒÁêDÄ‘TÙëÿ…éëRü¥ëDñŠœ»ëÈŠ,±ë 1tÙì‘…íìSü§ìFÜŠlÁìÈŠ,·ì 1lÔí‘…¬Ôí,âí
o/<âíïíTü­íB¨(,ÄíÈŠ,ºíÜŠt8®”|lÞî‘…´Þî4ìî
p/DìîúîUü´îF±D<ÌîÈŠ,ÂîÜŠt8Ê•|„íïüíï!þï
¯Oe±DWe±Dô3Nò–\‚ð„þï”ðVü¶ï^æ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷±D|ÓïÈŠ,Éïä|æ–í †ð<†ðˆð
N),ˆððWý±D…ðò–e ƒðàeq9옄¶ñ
´°ñ$’ò 悱DE
ŠeL ññŠeͱD<øñ 悱D þñ§òüíðºXüÕñ*È—¤‘ñÈŠ,‡ñ–kÌÚñ–küÕñ±D©(¿pL›óÔ›ó¥ó
¯Oe±DZü–ô3DâÝœ\©ó„¥ó»óYüëòPÈ—|óÈŠ,÷ò9Ñœ¢ ­ó<­ó¯óì˜&,¯ó´óZ·±D¬óÝœÍe ªóàemòì˜|LÞô
|Øô$³õ 悱DE
ŠeL ’õŠeͱD<™õ 悱D ŸõÈõüœô¬[üöô*È—¤¹ôÈŠ,¯ô–kÌûô–küöô±D©(¿pL±öÀˆÀö\ü…ö;Àˆ\›öÈŠ,‘ö 1()‡‡ 
±D)²‡ ±Dê‰&1ÇV[
Ï]lqafƒ)Œ‡³šèE¥ ò‘°îF·±D¾±D°Ç· ÈŠÂÈŠÊèÚõÿý£ÇöŽ£¨Œ _ ±Dá8€*›Œ€Y›Œ
­\á8V4œÇŒŒÇŒ
n"ÜÇŒ,ÛŒ
vH<ÛŒ$ æ‚e$ æ‚e æ‚üü‹½ ¡ üØ‹ì ®ÊŽ_ü¬‹ž
ò‘Œ¼‹ê‰mÿ…Jà¤}‘…õ ÐКÒÊ 2…Â#?—ÉXÖ§aÀˆ÷‡¥Æ¾¥ë¥m
 ±D#_âà¤>â¤GO¼éê‰ÿ…`ü” ò‘´Èé©ÿ…ôMü’’ꉑ…$»’Å’aü»‘Šé©´ñ‘é©LË‘‘…DÖ‘Ê Jüç“"ꉑ…¨($“”büé©´Æ“é©Lª“¨(,µ“Ù IüÄ•$ꉑ…±D$ò•ü•cüö”é©´£•é©L„•±D4ãIüÆ—"Ë—
¯O±De
$Æ—ÄÏ—Œ® ìË—ü¬—<ê‰$ò—ü—düÓ–©é©´‹—é©Læ–È—$ñ–±à !R€®Ûüè™ í™
¯O±De
$è™´ñ™ó¯ Üí™üΙ:ê‰$’šœšeü阳驴­™é©Lƒ™È—$Ž™±à !Rç¯ÛüÊ›"Ï›€®$Ê›ÄÓ›Œ® ìÏ›ü·›5ê‰$ö›€œfüåšé©´–›é©LñšÈ—$üš¡˜!R€®ËüÑ Ö篴Úó¯ ÜÖü¾3ꉅžgüàœ¥é©´é©LóœÈ—$þœ¡˜!Rç¯Ë¼œŸê‰Àˆ$½ŸÇŸhüΞyé©´ûžé©LÚžÀˆ$åžI\½¢ê‰œ½¢,É¢
¦ê‰2<É¢Ö¢iü‘¢Eê‰T¨¢Ö£,ž¢ÈŠx9`+±«¨(
¦¨(+3x+ë±D(+Þª ´+㪺/‘…;ÜŠC¨( œ<§±Dw¨i~hr··Ò
¦±D¦,窽,åª ô3ÜŠ#,6`-±«¨(¨(%*
ܨ(¨(>CKPx-ë±D±D%*
ܱD±D>CKOWa-òªÂH-éªÜŠÜŠýœ<œ< ¨i¨i½K¥ Xb‡ºEåºî`.±«¨(¨(%*
¨(;@HL
Vd.¼«x.ë±D±D%*Âp5:B.÷ªÅ.ôªÜ ›@ÜŠÜŠ%›@ÿœ<œ<Ír¨i¤¨i«[¥ h¹H~Þ¼[Âpç`/±«¨(¨(%*
¨(¨(>CKO
Yi/¼«
Š›@x/ë±D ±D%*w5 :B/ƒ«P/ùªÈ

×?$ÜŠ,ÜŠ4×?.œ<6œ<>ÍrFkN¨iµ¨i¼s¥ ¹Ê¿–wø`0±«¨(
ñ^¨(Å{. 0…«?x0ë±D¦|%:20‰«ËYô3dÜŠlÂ}sô3­œ<´¨ix©ž¨ÞÂå¦|§(1‹« ±D`1±« ±D¨(%Çx1ë ±D
±D% 
0 ÇŽ
Ñ]Ÿ¤joÀ1«Ï× èEâÜŠêîFñ±Dø±DêÇñœ<ø±DËÇÒákÙ¨ià2Ú@Kœ<ÇBákÇÈÅf´Ò¬¤Ò¬
sî¬nü ¬NÖ§œ´¬¸ÇWTÕ­¨(å­oü®­7¨(,Å­ÜŠ,»­ 0\Ô®±Då®püª®;±D<®ÜŠ,¸® 02Ÿ³Õ2³ ô3Ô§&0°3𳑅‘…',
Ü‘…‘…BGO3ª³ÚH3¡³Ô§Ô§ÜŠŒÜŠ7¥ DNÐʾ°4𳑅‘…',
‘…>CK4¯³Ý4¬³›@Ô§Ô§ÜŠÜŠ8¥ EO™Ì»°5𳑅‘…',
‘…‘…BGO5»³àP5±³×?Ô§Ô§ÜŠÜŠ8¥ EOßÍ¿°6𳑅
ñ^‘…Å{0 6½³A6Á³ã#ô3.Ô§6Â}=ÜŠzN©[e˜Ï¤(7ó ±D°7ð³  ±D‘…&1ÇV[Ž£hm]b7ȳçèE¡Ô§©îF°±D·±D©Ç° ÜŠ»ÜŠÃáÚîøðÑÇ
\ʶ Äï¶ ±Dü¨¶X ´ü€¶ Б·süÒµ¿Ö§œâµ‘…c¨(±D1̰¸‘…¨($Ó¸ݸtüæ·w Ö§ĸ¬ÔLó·¨(þ·argÁN섺‘…±D$«ºµºuü´¹¬ÔÄṬÔL¹±D4͹ãIlœ»‘…¬œ»,ª»Ô…,<ª»·»vüîºI‘…d…»Ô§,ûºÜŠr9Ô…zD®È
Ô®È<·È
z 2)D¿ÈŒ·ÈÎÈüõÇY$ŸÈ   2,€ÈÜŠD‡ÈØÊ !TÂ×¢DýÈ
¤ýȆÉ
{ 2)4ŠÉ\†É˜ÉüÔÈDô3òÈ‹Ø,ÛÈÈŠ4âÈô3sØ&²(WýØ¥D·É
„·É,ÀÉ
| 2)<ÀÉÎÉüÉ1ô3¬É‹Ø,¦Éô3`Ø?»Ú¤­Ñ  ¶‰¶‰b·‰šW¸Ï;ÈYƒ‘tÈÑ
ŒØÑ «†ü­Ñ=,ÂÑ
ˉA:üÂÑ(íшüþÐoô3¦Ñò),“Ñô3jÑÛÜá8,ÈÑ«†¬†­†ö®†¯†÷°†±†G²†³†F´†µ†½¿AN©-ÕÙ ¼¶Ü
¤øÙ ÑÛt“Ú
Œ£Ú «†üøÙ=,Ú¶ÜR>7üÚ(¸ÚüË×íô3ÿ×ò),ì×ô3hÑÛªá8,“Ú¥ÝÙ .R¶Ü ¤«â ÑÛŒÅâ «†ü«â,$Àâ
ʉI5¼Àâüœâ< ò)ÜâŠüËÞò)\áÞá8lÑÛ¢¥Ý1âà(A¡… ±DAÃ…ô3ÇDIßUZJgA¦…ì~èE ®2îFš±D¡Ç  ô3 —ã¨ÆÚÓÝ•ãÇÔßî(B¶‰ ±DBè‰ô3ÇDIßUZJgB»‰ñ~èE ï2îFš±D¡Ç•ã—ã£ÁÚÎØ•ãÇÏßéCè‰ô3ô3%*
Üô3ô3>CKCƉôHC½‰ïäïä—㈗ã7¥ DN…æºDʉöDȉ ô3ïä&0T æ‚ 
±D±D¬üËRæ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷þçüà"þç s$ æ‚þç¯üÍLªèüâ"ô3 `)ô34(EÛ  ±D±E&+3úIèET „4^îFe±DluÚŒ±E4ÿ ±D\‡
±D
 žƒžƒLocationÁ ƒfilenameÁQ¡ƒQ¢ƒcolÁQ£ƒ _filenameÁQ×åZ 
l < 
Oþç
) L + ü± N
 ´ ±Dá8ùIÉ"ù^É"
­\á8
] 7ùH¬@áH¬
©R X $Œž  
Q ܶ  
`'  ü¶ 1 
bH  ü¶ I 
cI  Œœ
 悱Dü¶ x”‰

eb8 ü‰
%


œQÉ


„Ä
 悱Dü¶ Ÿ

g9 ì¸



žQé
 
„ä
 æ‚ü¶ ¿

h9
´ß

i&„Áä¶½
{¯íj-¬½ ÔÕü® §´üé
ìüŒ É ô3è
¯íÿ…¨( ±D±DÝëÜý ªèÈ
±DбDÝëyì ªè[ÿ… ¶íØò‘\ é©é©é©é©ãé©é©Té©lÈ—ØÈ—n±D Àˆ >ô3 ¯íàÈŠ§ê‰×Ö£îŒ$ô(Ù -kvsÁ!ã°©
«Ñ¦µ Çðì2ßíљîzíîQï)Íï–ð¾ÄðŠñY·ñ1ýñôÄò²ùò¯í\¯ícn ±D{L±D´d¶í¯¸í¸À
$t†
©°ü£x 
´ÔâzS š
üׯ(70 ô3úîùÿ…$€¨(,•–ôÔ§«ùñîùIªè#£ŒKôNÙ Rtarget_module_path_and_locÁoÉõsé¥ùèùnîù œûŒû¾¥ 
 üû ,
t
D,• düû/
u I/üû7ë¥Rüú8üëH
z¯íô/üòA ´µüŸº ¯í¨(±DôõtÜŠ³‘…àÔ§$¬Ô-¬Ôf¬ÔšÖ§£ŒdÙ hãl®¾¥Üý¸Àýë¥Z°þ-¯í¯í
°J³– øQ¡š 
 øKÙ–'
Kÿ–„„— á$øL£—)
LË—”З á$øMñ—(
M˜˜Œ˜ á$øN½˜(

Nä˜Œé˜ á$øO‰™)
 O±™”¶™ á$øP×™)

Pÿ™”„š á$,ΙQ¿š „Äš á$ øRßš!


Rÿš
”„› á$
øS¡›  
 SÀ› ŒÅ› á$ øTá›  
 T€œ Œ…œ á$ øU¡œ!


UÁœ
”Æœ á$
”㜠á ÷œüƒ–ö½ò)\Ÿ– Î6êžR"ÙAõ4¼Ö ÿ&e1±D8?M ÿcpe{±DDÖÖ ÿ&e1±D8?M ÿcpe{±DÌ©… èé$®2/ô36=K è_él®2wô3~Ô͉ íî$ï2/ô36=K í_îlï2wô3~
 y}~ˆŠ½Ä´¡áÿ®ÐèéíÈzŠ×z$FromStrÁ<{…s¹¥{Ï¥ª{ÚYmemÁ¯{² ¯ »\³k Ílãr
ádµv­Lˆ{Ö\ †ÿ„œ‰¸Œ´ŒóŒäb\¹|¶‰ÒDÆ|«†«¾Š,ÿ(¿Ê$»4À$ÖAÁÆ,ÂMÂ,‹[ÃüÓÛùüÓ! A lightweight logging facade.Áõ©üùIF The `log` crate provides a single logging API that abstracts over theÁüÃMJ actual logging implementation. Libraries can use the logging API providedÁü‘MJ by this crate, and the consumer of those libraries can choose the loggingÁüß:7 implementation that is most suitable for its use case.Áš©üžOL If no logging implementation is selected, the facade falls back to a "noop"ÁüîKH implementation that ignores all log messages. The overhead in this caseÁüº>; is very small - just an integer load, comparison and jump.Áù©üýPM A log request consists of a _target_, a _level_, and a _body_. A target is aÁüÎPM string which defaults to the module path of the location of the log request,ÁüŸ OL though that default may be overridden. Logger implementations typically useÁüï C@ the target to filter requests based on some user configuration.Á³
©
 # UsageÁÃ
©üÇ
RO The basic use of the log crate is through the five logging macros: [`error!`],Áüš 30 [`warn!`], [`info!`], [`debug!`] and [`trace!`]ÁüÎ ?< where `error!` represents the highest-priority log messagesÁüŽ IF and `trace!` the lowest. The log messages are filtered by configuringÁüØ <9 the log level to exclude messages with a lower priority.Áü•
IF Each of these macros accept format strings similarly to [`println!`].Áß
©ã
©üç
" [`error!`]: ./macro.error.htmlÁüŠ  [`warn!`]: ./macro.warn.htmlÁü«  [`info!`]: ./macro.info.htmlÁüÌ" [`debug!`]: ./macro.debug.htmlÁüï" [`trace!`]: ./macro.trace.htmlÁü’IF [`println!`]: https://doc.rust-lang.org/stable/std/macro.println.htmlÁÜ©üà]Z Avoid writing expressions with side-effects in log statements. They may not be evaluated.Á¾©œÂ ## In librariesÁÖ©üÚGD Libraries should link only to the `log` crate, and use the providedÁü¢NK macros to log whatever information will be useful to downstream consumers.Áñ©„õ
### ExamplesÁ© ```Áü’.+ # #[derive(Debug)] pub struct Yak(String);ÁüÁ1. # impl Yak { fn shave(&mut self, _: u32) {} }Áüó52 # fn find_a_razor() -> Result<u32, u32> { Ok(1) }ÁÔ© use log::{info, warn};ÁÄ©üÈ)& pub fn shave_the_yak(yak: &mut Yak) {ÁüòJG info!(target: "yak_events", "Commencing yak shaving for {yak:?}");Á½© loop {ÁüÐ" match find_a_razor() {Áôó Ok(razor) => {Áü’41 info!("Razor located: {razor}");ÁüÇ%" yak.shave(razor);ÁÔí break;ÁŒˆìš Err(err) => {Áü¸GD warn!("Unable to locate a razor: {err}, retrying");ÁŒ€…§l’
L ”° # fn main() {}Á–¢Ë©¬Ï ## In executablesÁå©üéUR Executables should choose a logging implementation and initialize it early in theÁü¿LI runtime of the program. Logging implementations will typically include aÁüŒ:7 function to do this. Any log messages generated beforeÁüÇ63 the implementation is initialized will be ignored.Áþ©ü‚A> The executable itself may use the `log` crate to log as well.ÁÄ© ### WarningÁØ©üÜ41 The logging system may only be initialized once.Á©Ì• ## Structured loggingÁ¯©ü³FC If you enable the `kv` feature you can associate structured valuesÁüúMJ with your log records. If we take the example from before, we can includeÁüÈDA some additional context besides what's in the formatted message:Á©<‘–¢Ü™ # use serde::Serialize;Áüµ96 # #[derive(Debug, Serialize)] pub struct Yak(String);Áüï1Ý¢ü¡@= # fn find_a_razor() -> Result<u32, std::io::Error> { Ok(1) }Áüâ" # #[cfg(feature = "kv_serde")]ÁŒ… # fn main() {ÁÔ—Ô£²©ü¶)‚¤üàIF info!(target: "yak_events", yak:serde; "Commencing yak shaving");Áª ©‘¥ü½ "¨¥ôà Ò¥üÿ 2/ info!(razor; "Razor located");Áü²!%¶¦ÔØ!㦌ó!…§Ü…" Err(e) => {Áü¡"GD warn!(e:err; "Unable to locate a razor, retrying");ÁŒé"…§lû"Ÿ¨L‰#´¨,“#Ũ<™# # }Áü¡#'$ # #[cfg(not(feature = "kv_serde"))]Á”É#Ò¨<Ü#–¢ä#©üè#96 See the [`kv`] module documentation for more details.Á¢$©ü¦$'$ # Available logging implementationsÁÎ$©üÒ$:7 In order to produce log output executables have to useÁü%74 a logger implementation compatible with the facade.ÁüÅ%<9 There are many available implementations to choose from,Áü‚&+( here are some of the most popular ones:Á®&©ì²& * Simple minimal loggers:Á´Ð& * [env_logger]ÁŒç& * [colog]ÁÌù& * [simple_logger]Á¬“' * [simplelog]Áì©' * [pretty_env_logger]Á¬Ç' * [stderrlog]ÁÄÝ' * [flexi_logger]Á¼ö' * [call_logger]ÁìŽ( * [structured-logger]Á¬¬( * [clang_log]ÁŒÂ( * [ftail]ÁüÔ(&# * Complex configurable frameworks:Á”û( * [log4rs]Á¤Ž) * [logforth]Á„£)
* [fern]Á¬´) * [spdlog-rs]ÁüÊ)$! * Adaptors for other facilities:Á”ï) * [syslog]Á¼‚* * [slog-stdlog]Áüš*" * [systemd-journal-logger]Á¼½* * [android_log]ÁÔÕ* * [win_dbg_logger]Á¬ð* * [db_logger]ÁĆ+ * [log-to-defmt]ÁÔŸ+ * [logcontrol-log]Áüº+ * For WebAssembly binaries:Á¼Ú+ * [console_log]Áäò+ * For dynamic libraries:Áü,b_ * You may need to construct an FFI-safe wrapper over `log` to initialize in your librariesÁ„ò,
* Utilities:Áœƒ- * [log_err]Á´—- * [log-reload]Á®-©ܲ- # Implementing a LoggerÁÎ-©üÒ-PM Loggers implement the [`Log`] trait. Here's a very basic example that simplyÁü£.KH logs all messages at the [`Error`][level_link], [`Warn`][level_link] orÁüï.*' [`Info`][level_link] levels to stdout:Áš/©<ž/–¢ü¦/'$ use log::{Record, Level, Metadata};ÁÎ/©ÄÒ/ struct SimpleLogger;Áë/©üï/$! impl log::Log for SimpleLogger {Áü”085 fn enabled(&self, metadata: &Metadata) -> bool {ÁüÍ0+( metadata.level() <= Level::InfoÁLù0´¨ƒ1©ü‡1(% fn log(&self, record: &Record) {Áü°10- if self.enabled(record.metadata()) {Áüá1C@ println!("{} - {}", record.level(), record.args());Ál¥2Ÿ¨L³2´¨½2©ÔÁ2 fn flush(&self) {
 y}~ˆŠ½Ä´¡áÿ®Ðèéíî˜p:®q:Šp:$§Ži:…s¹h:Ï¥g:ÚYçŽd:² ¯c: »b: Ía:
á`:­_:Ö^:ÿ\:¸Z:óX:bV:¶‰ÒU:«†T:¾ŠS:¿ÊR:ÀQ:ÁÆP:ÂO:Ãè;ë;î;ijzå;DÒzÚ;Œˆ{Ç;¤Ÿ{»;¾;®;±;ž;¡;TÃ{4Ç{ÿð ó ú8¿ dÿØ;   µ%  8Œ4˜& ž,  8Œ& §8Ì$ ¬8ã& ´, 8ã& ½8Ì$ Â, Ä8lvlÁÅ& È8Ì$ Í, Ï Ð û
, Ñ8keyÁÒ& Õ8¦Ö, Ù Ú ç& Û, Ü8captureÁ& ä8¦å- è, ê ë ù ì, î8valueÁ& ô8Ì- ú$ ü ý% þ,   , 8ßÓƒ& 8¦ Š*  ý   ü 88ö‡Ÿ £, ¥8ö‡¦% ©8³8ö‡º, ½8'Ã8Û„ÅÖ8ö‡ÙÝ, à8'æ8˜ ñ ò ô ö , 8'ˆ8¤'8 œ ë , ®8Œ$ µ, Ç8'Í8¤'Ü8¹ é ê ó, ë ì ñ, í8ßÓî ò$ ô8ö‡$   œ é, 8ã$ ¤, ¦8'¬8¤'»8©
 È É Ê$ Ë, Í8'Ó8¤'â8Ñä ç è$ ê ü ý Ô , þ ÿ Ñ   Ð 
, 8, '8­L‰    ˜ , 8¸ˆ$ , 8'¡ 8Ö ®  ¯  Ï  , ° 8¸ˆ± , µ   À & · , ¸ 8úˆ
Á  à , Å  Æ  Í , Ç 8lj
Î $ Ò  Ó 8Ö  Ù  Ú  Ü 8 Û $ Ý % ì % þ  Ü! Ÿ"8Œ4Ý!& ã!, å!8Œ4æ!& ì!8Ì$í!$ ñ!8ã4ó!& ù!, û!8ã4ü!& "8Ì$ƒ"$ ‡", ‰"8ö‡Š"& "8Ì$Ž"$ ", ”" •" ", "8ßÓ—"& š"8¦" ž"*¡" ¤" ²% ¥" ±%8¯"8ö‡³" ·", ¹"8ö‡º"% ½"8Ç"8ö‡Ê"Î", Ñ"8,Ò"'×"8Û„Ù"ê"8ö‡í"ñ", ô"8,õ"'ú"8˜Lü" …# †# ˆ# «%, #8,—#'œ#8¤lž#'«#8­# °#  %, Â#8Œ4Ã#$ É#, Û#8,Ü#'á#8¤lã#'ð#8¹\ò# ý# þ# ‡$, ÿ# €$ …$, $8ßÓ$ †$$ ˆ$8ö‡š$$ $ ¯$ °$ ý$, ±$8ã4²$$ ¸$, º$8,»$'À$8¤lÂ$'Ï$8©
\Ñ$ Ü$ Ý$ Þ$$ ß$, á$8,â$'ç$8¤lé$'ö$8Ñø$ û$ ü$$ þ$ % %$ %% ¡%% ³%ĦküƒcMJ Determines if a message logged at the specified level in that module willÁtÑc be logged.Áàc©üäcOL This can be used to avoid expensive computation of log message arguments ifÁü´d(% the message would be ignored anyway.ÁÝd©tád # ExamplesÁðd©<ôd–¢üüd)& use log::{debug, log_enabled, Level};Á¦e©üªe$! # struct Data { x: u32, y: u32 }ÁüÏe96 # fn expensive_call() -> Data { Data { x: 0, y: 0 } }Áü‰f74 # let my_logger = log::__private_api::GlobalLogger;ÁüÁf# if log_enabled!(Level::Debug) {Áüåf$! let data = expensive_call();ÁüŠg>; debug!("expensive debug data: {} {}", data.x, data.y);Á,ÉgŨÏg©üÓg52 if log_enabled!(target: "Global", Level::Debug) {Áü‰h# let data = expensive_call();Áü­hOL debug!(target: "Global", "expensive debug data: {} {}", data.x, data.y);Á,ýhŨƒi©ü‡i63 if log_enabled!(logger: my_logger, Level::Debug) {Áü¾i#Å üâiOñ ,²jŨ<¸j–¢Àj©üÄjQN This macro accepts the same `target` and `logger` arguments as [`macro@log`].Á¿ d˜k|k/J ¿k ´r Žl Äl8Œ4l& •l, —l8Œ4˜l& žl8Ì$Ÿl$ £l8ã4¥l& «l, ­l8ã4®l& ´l8Ì$µl$ ¹l, »l8ö‡¼l& ¿l8Ì$Àl*Æl Él ¯m Êl ®m, Ôl8,Õl'Úl8ÍlÜl él êl ¨m8Œ4ël& ñl, ól8,ôl'ùl8ádûl ‡m ˆm m, ‰m8Œ4Šm$ m8ã4“m& ™m, m8ã4œm$ ¢m, ¤m8ö‡¥m% °m ëm n 8Œ4ìm& òm, ôm8Œ4õm& ûm8Ì$üm$ €n, n8ö‡ƒn& †n8Ì$‡n*n n ”o n “o, n8,œn'¡n8Íl£n °n ±n o8Œ4²n& ¸n, ºn8,»n'Àn8ádÂn În Ïn ×n, Ðn8Œ4Ñn$ Øn8ã4Ún& àn, ân8,ãn'èn8¤lên'÷n8©
\ùn „o …o †o$ ‡o, ‰o8ö‡Šo% •o Òo òo 8ã4Óo& Ùo, Ûo8ã4Üo& âo8Ì$ão$ ço, éo8ö‡êo& ío8Ì$îo*ôo ÷o ép øo èp, p8,ƒp'ˆp8ÍlŠp —p ˜p âp8Œ4™p& Ÿp, ¡p8,¢p'§p8ád©p µp ¶p Êp8__log_global_loggerÁœ·p$ Ëp8ã4Íp& Óp, Õp8ã4Öp$ Üp, Þp8ö‡ßp% êp q œq, “q8ö‡”q& —q8Ì$˜q*žq ¡q ±r ¢q °r, ¬q8,­q'²q8Íl´q Áq Âq ªr8Œ4Ãq& Éq, Ëq8,Ìq'Ñq8ádÓq ßq àq ôq8®¬œáq$ õq8ã4÷q& ýq, ÿq8,€r'…r8¤l‡r'”r8©
\r ¡r ¢r £r$ ¤r, ¦r8ö‡§r% ²rÔÖrÿ¹r ¼r Ãr84½rt·r¿ dÈr|Ær•P ñr µu Às ös8Œ4Ás& Çs, És8Œ4Ês& Ðs8Ì$Ñs$ Õs8ã4×s& Ýs, ßs8ã4às& æs8Ì$çs$ ës, ís8ö‡îs& ñs8Ì$òs*øs ûs ²u üs ±u8†t8ö‡Št Žt, t8ö‡‘t% ”t8ö‡žt¢t, ¥t8,¦t'«t8Û„­tÊt8ö‡ÍtÑt, Ôt8,Õt'Út8˜LÜt åt ætôt, ÷t8,øt'ýt8¤lÿt'Œu8ö
<Žu •u «u, u8Œ4—u$ u8ö‡Ÿu$ ¢u, ¤u8ã4¥u% ³ųvÿ‹v Žv •v84vt‰v¿ dšv|˜váR Âv Íw Èv Üv8®¬œÉv*Þv áv •w âv ”w, ìv8,ív'òv8¤lôv'w8Ædƒw% w w ªw, žw8Œ4Ÿw& ¥w8Ì$¦w*¬w ¯w Êw °w Éw ºw »w Ãw, ¼w8Œ4½w% Ëw´ûzÿÂz Åz Ìz84ÆztÀz¿ dÑz|ÏzT { | ˜{ ¥{, ™{ š{ £{, {8ô$œ{&  {8¦¡{
¤{*§{ ª{ ÿ{8Ðl´{ Á{ Â{ ù{74key value support requires the `kv` feature of `log`ÁüÃ{6% €|Ä“†ÿÚ… Ý… ä…84Þ…tØ…¿ dé…|ç…U ¬† œ‡ ²† ¿†, ³† ´† ½†, µ†8ô$¶†& º†8¦»†
¾†*Á† Ć ™‡8ÐlΆ Û† ܆ “‡7ܸü݆6% š‡ìÿш Ôˆ Ûˆ84Õˆtψ¿ dàˆ|ÞˆV ­‰ °Š ³‰ ¾‰, ´‰8ô$µ‰& ¹‰8Ì$º‰*À‰ É ­Š8Ðl͉ Ú‰ Û‰ §Š7Icapturing values as `sval::Value` requites the `kv_sval` feature of `log`Áü܉K% ®Šô§Œÿè‹ ë‹ ò‹84ì‹tæ‹¿ d÷‹|õ‹W ÆŒ å ÌŒ ׌, ÍŒ8ô$ÎŒ& ÒŒ8Ì$ÓŒ*ÙŒ ÜŒ â8ÐlæŒ óŒ ôŒ Ü7Ocapturing values as `serde::Serialize` requites the `kv_serde` feature of `log`Áü‚Q% ãô×ÿš  ¤8¿ d©/X ö ”‘ ü , ý8ô& 8Ì* Œ ‘‘8Ðl– £ ¤ ‹‘7Ncapturing values as `std::error::Error` requites the `kv_std` feature of `log`Áü²P% ’‘ü¥|*
Y
YüXÿXÜÁƒ4̃ yÃÿÿÌìƒ,óƒÓÛÃÔî…lô…á8ÌŽ†d”†á8Ä­†\³†á8ü̆(¤Ó†ÓÛÃü!|”‡ á8` 0@ P!`Êá8ìæ‡„퇫ÅJ"ÿÿô÷ˆŒþˆ«ÅF#ÿÿüˆ“%¨(""ü“)Å“ûü û¨( üò)! È“!
"$É“¥ ½$ü¡”&¨($$üÜ”C\ß”ýþ ý¨( þò)×?# ë”#
$$씥 è%´â•¨(&''Dÿ•„–%%ï2üŸ–4D¢–ÿ ÿ½…À…Á…ÏÂ…òÃ…Ä…Å…òý3lËêM¨(¨(†s% ²–%
'Ù ,«–<˜—'<closure_kind>Á(<closure_signature>Á(<upvars>Á(('(ÌQ¨i±D4ï—'ÎÊ)æÊ)ƒË))')ÌQ á8ô3,‘˜'ÎÊ*æÊ*ƒË**'*ÌQÏQô3Üý˜¨(,,üŸ™6¢™ ¨( ü\ü\šþ\Ÿ ÚYÿ\FÚY„ÑÚây59èE+ ¦™+
,$§™¥­™T€š¨(./01256ü‘š(T”šá8îQ--ÛP Ÿš¬ïœü±œ+( Returns the most verbose logging level.Áöœ¨(--
/üó,ü§96 Converts the `Level` to the equivalent `LevelFilter`.Á|úƒ ƒ¨(ò)- Šž-
0$‹žüóŸ$üæž52 Returns the string representation of the `Level`.Á Ÿ©ü¨ŸFC This returns the same string as the `fmt::Display` implementation.Á4úŸ ¨(«Å-  -
1$‚ üÔ£+üÍ 1. Iterate through all supported logging levels.Áƒ¡©ü‹¡KH The order of iteration is from more severe to less severe log messages.ÁÛ¡©tã¡¶œö¡©<þ¡–¢œŠ¢ use log::Level;Á¢¢©üª¢# let mut levels = Level::iter();ÁÒ¢©üÚ¢2/ assert_eq!(Some(Level::Error), levels.next());Áü‘£2/ assert_eq!(Some(Level::Trace), levels.last());Á<È£–¢$Û£3--
2ÐVå£22ÈíÈíMapÁËíôÌíÚ‚<£`„œHá_/œãœãâžã¨Ÿã­(Võôä-Já8ÇQÕ©Äך†IÄ׬ê£ÄׇI¨(\ó£êØÄùØ"ŠÙ2•¤2ÎÊ4æÊ4ƒË442ÇQü‚©(ü¤/, Get the next-highest `Level` from this one.Áö¤©üþ¤`] If the current `Level` is at the highest level, the returned `Level` will be the same as theÁ„ã¥
current one.Áø¥©t€¦¶œ“¦©<›¦–¢œ§¦ÏÔ¿¦©äǦ let level = Level::Info;Á覩üð¦96 assert_eq!(Level::Debug, level.increment_severity());Áü®§NK assert_eq!(Level::Trace, level.increment_severity().increment_severity());Áü¨pm assert_eq!(Level::Trace, level.increment_severity().increment_severity().increment_severity()); // max levelÁ<ö¨–¢”‰© ¨(¨(- œ©-
5$©üÒ®(ü•ª.+ Get the next-lowest `Level` from this one.ÁȪ©üЪ_\ If the current `Level` is at the lowest level, the returned `Level` will be the same as theÁ„´«¹ÚÉ«©tÑ«¶œä«©<ì«–¢œø«ÏÔ¬©䘬Û¹¬©üÁ¬85 assert_eq!(Level::Warn, level.decrement_severity());Áüþ¬NK assert_eq!(Level::Error, level.decrement_severity().decrement_severity());ÁüÑ­pm assert_eq!(Level::Error,
¦˜§˜þ’Ay­³ô3y ÊÃy
{Ô­$Ëò4ÑÄÚÅüèÃ! Flushes any buffered records.ÁŽÄ©´–ư±Ä©ü¹Ä@²°üþÄWT It can be called manually on shut-down to ensure any in-flight records are flushed.Á,ÝÅ´ ´Ô­ô3y ãÅy
|Ô­$äÅ„”ÆL›Æó1âª9^‹ô=>~-(}}ó1´§Æó1€üÄÆ'<ÇÆµ· µó1 ´´ÓÙ ·ã73JªDŒ · ÏÆ
$ÐÆ ÖÆ̇NJǸ¹º ¸ó1 ¹¡¡°£Ê ¤ô¥©
¦˜§˜þ’Ay­ºô3 ŽÇ
$Ç •Ç|¨Ç,«Ç» »ó1ô3 ±Ç
$²Çü¾Ç08¼¼Ö© 2 ÃÇy 2êÇ›2…)+üõÇ.<øÇ½¾¿ ½›2 ¾´´ÓÙ ·ã73JªDŒ ¿ƒ €Èƒ
8 2$ÈÊ ŸkôÔÈ×ÈÀÁ À›2 Á¡¡°£Ê ¤ô¥©
¦˜§˜þ’Ay­Âô3ƒ Ûȃ
8 2$ÜȲVl|É, Éà Û2ô3ƒ ¦Éƒ
8 2$§ÉüþÐ(üáÎ&# Sets the global maximum log level.ÁˆÏ©üŒÏOL Generally, this should only be called by the active logging implementation.ÁÜÏ©üàÏqn Note that `Trace` is the maximum level, because it provides the maximum amount of detail in the emitted logs.Ál…Ñò)ô3
ˆÙ nüË×4üïÑ1. A thread-unsafe version of [`set_max_level`].Á¡Ò©ü¥ÒLI This function is available on all platforms, even those that do not haveÁüòÒ<9 support for atomics that is needed by [`set_max_level`].Á¯Ó©ü³Ó?< In almost all cases, [`set_max_level`] should be preferred.ÁóÓ©d÷Ó # SafetyÁ„Ô©üˆÔIF This function is only safe to call when it cannot race with any otherÁüÒÔ52 calls to `set_max_level` or `set_max_level_racy`.ÁˆÕ©üŒÕMJ This can be upheld by (for example) making sure that **there are no otherÁüÚÕB? threads**, and (on embedded) that **interrupts are disabled**.ÁÖ©ü¡ÖJG It is safe to use all other logging functions while this function runsÁüìÖ# (including all logging macros).Áשü”×,ÿð”Ù×ò)ô3
Ù VoüËÞ!üºÚ*' Returns the current maximum log level.ÁåÚ©üéÚ[X The [`log!`], [`error!`], [`warn!`], [`info!`], [`debug!`], and [`trace!`] macros checkÁüÅÛLI this value and discard any message logged at a higher level. The maximumÁü’Ü74 log level is set by the [`set_max_level`] function.ÁÊÜ©äÎÜ [`log!`]: macro.log.htmlÁüëÜ  [`error!`]: macro.error.htmlÁôŒÝ [`warn!`]: macro.warn.htmlÁô«Ý [`info!`]: macro.info.htmlÁüÊÝ  [`debug!`]: macro.debug.htmlÁüëÝ  [`trace!`]: macro.trace.htmlÁüŒÞ,ÿðLÒÞò)
Šü×óIü—ç/, Sets the global logger to a `&'static Log`.ÁÇç©üËçOL This function may only be called once in the lifetime of a program. Any logÁü›èPM events that occur before the call to `set_logger` completes will be ignored.Áìè©üðèGD This function does not typically need to be called manually. LoggerÁü¸éMJ implementations should provide an initialization method that installs theÁ´†ê logger internally.Áê©”¡ê # AvailabilityÁ´ê©ü¸êNK This method is available even when the `std` feature is disabled. However,Áü‡ëLI it is currently unavailable on `thumbv6` targets, which lack support forÁüÔëIF some atomic operations which are used by this function. Even on thoseÁüžì30 targets, [`set_logger_racy`] will be available.ÁÒì©dÖì # ErrorsÁãì©üçì:7 An error is returned if a logger has already been set.Á¢í©t¦í¶œµí©<¹í–¢üÁíGD use log::{error, info, warn, Record, Level, Metadata, LevelFilter};Á‰î©üî*' static MY_LOGGER: MyLogger = MyLogger;Á¸î©¤¼î struct MyLogger;ÁÑî©üÕî  impl log::Log for MyLogger {Áüöî8¤Åü¯ï+åÅLÛï´¨åï©üéï(°Æü’ð0áÆüÃðCšÇl‡ñŸ¨L•ñ´¨ÔŸñˆÈ,ºñŨÀñ©„Äñ
# fn main(){ÁüÕñ)& log::set_logger(&MY_LOGGER).unwrap();Áüÿñ*' log::set_max_level(LevelFilter::Info);Áªò©¼®ò info!("hello log");Á¬Æò warn!("warning");ÁœÜò error!("oops");Á<ðò‡µ<øò–¢€ó©ü„ó0- [`set_logger_racy`]: fn.set_logger_racy.htmlÁTÞóÄý…À…Á…ÏÂ…òÃ…Ä…Å…òý3lËêMô3®2
Œ4éó¸ôÎÊŒæÊŒƒËŒŒŒô3 y©áüèôo„ëôÖãßÖŽ
#¢Ð £Œbàüy-ÒÔÁð² ¢‘œ¬¤Åpüã*acSUEG”¬ ¥¥Û3»§Œ§ ¨¨§Ì­üa§©©©ü?Ô­æ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷ 
  àñ§§
©Ô­ ü‡/ ««Ò3¬¬ŒüË7Ò3æ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷Ò3ªª
¬ ýs¼¡ ®®ô3¯¯¦üÍ7ô3Þò­­
¯ btÌý„4±²³²³±ü.< ÊËÌ Ê„4 Ë´´ÓÙ ·ã73JªDŒ Ì° ¨°
±Ê ôüÿÍÎÏ Í„4 Ρ¡°£Ê ¤ô¥©
¦˜§˜þ’Ay­Ïô3° ƒ°
²$„²Ð Є4ô3° ΰ
³ü® ºÑÒÓÔÕÖׯ풎’Ž‹…”Žž…ÚY•Ž¥ÚY–ŽôÚY±¾)Þ Ü¶Ñ¨( Ò Ó«Å žƒžƒëê ƒýê‚Q¡ƒ‚Q¢ƒŸë‚Q£ƒ¯ë‚Q×åZÔæ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷ Õ
 Ö ×ô3µµÕ©¯í º y¯í½ 
´¯íŒ}yô‡yÙ yÉõ­y:<ü×ÅÞØÙÚÛîù’Ž’Ž‹…”Žž…ÚY•Ž¥ÚY–ŽôÚY±¾)Þ Ü¶Ø¨( Ù Ú«Å žƒžƒëê ƒýê‚Q¡ƒ‚Q¢ƒŸë‚Q£ƒ¯ë‚Q×åZÛ«ùô3 ·°¸¹¹·¸L†Õ©«ù æÕ©îù é§«ù yîù˜
 «ùîùŒ}ô
}Ù }ðú}Éõ'}âxztvüŸEܯí¨( Ü»» ×¶û ®Çû±
º¯íŒ Ù )ã2*,üÇ*>|·Î žƒžƒëê ƒýê‚Q¡ƒ‚Q¢ƒŸë‚Q£ƒ¯ë‚Q×åZ
¼üƒ–'ü‰“.+ The statically resolved maximum log level.Á¸“©ü¼“OL See the crate level documentation for information on how to configure this.ÁŒ”©üPM This value is checked by the log macros, but not by the `Log`ger returned byÁüá”MJ the [`logger`] function. Code that manually calls functions on that valueÁü¯•0- should compare the level against this value.Áà•©ôä• [`logger`]: fn.logger.htmlÁ„ò)„žüØ The standard logging macro.Áø©üüLI This macro will generically log with the specified `Level` and `format!`ÁÄÉ based argument list.Áâ©–¢Ôî use log::{log, Level};Á©ü! let data = (42, "Forty-two");Áü¯! let private_data = "private";ÁÑ©üÕB? log!(Level::Error, "Received errors: {}, {}", data.0, data.1);Á<˜–¢ ©ü¤OL Optionally, you can specify a `target` argument to attach a specific targetÁüôOL to the log record. By default, the target is the module path of the caller.ÁÄ©–¢Ôй†ë©üï!ç†ü‘!‘‡³© log!(ÁìÁ target: "app_events",Á¬ß Level::Error,Áüõ" "Received errors: {}, {}",Á´˜  data.0, data.1Á );Á–¢¾ ©ü PM And optionally, you can specify a `logger` argument to use a specific loggerÁü“
)& instead of the default global logger.Á½
©
–¢ÄÉ
 # struct MyLogger {}Áìâ
 # impl Log for MyLogger {Áü€ @= # fn enabled(&self, _metadata: &log::Metadata) -> bool {ÁœÁ  # falseÁ  # }Áüá 1. # fn log(&self, _record: &log::Record) {}Áä“  # fn flush(&self) {}Á ‡µü¸  use log::{log, Level, Log};ÁØ ©üÜ !ç†üþ !‘‡ 
©ü¤
 let my_logger = MyLogger {};Á
ªŠÔÏ
 logger: my_logger,Á¬ê
àŠü€"þŠ´£¨‹Æ‹–¢É©üÍTQ The `logger` argument accepts a value that implements the `Log` trait. The valueÁü¢&# will be borrowed within the macro.ÁÉ©üÍVS Note that the global level set via Cargo features, or through `set_max_level` willÁü¤RO still apply, even when a custom logger is supplied with the `logger` argument.Á¿ dù¯4‰¹\‘œ‰´‡ ¯ ë Œ Ï8Œ4& , 8Œ4& œ8Ì$$ ¡8ã& ©, «8ã& ²8Ì$ ·, ¹8ö‡º& ½8Ì$ Â, Ä Å Í, Æ8ßÓÇ& Ê8¦Ë Î*Ñ Ô ö Õ õ, ß8'å8¯ ì í ï8Œ& , ƒ8,„'8ád  ˜  , 8Œ$ ¡8ã& µ, ·8ã4¸$ ¾, Ì8ö‡Í$ Ð, Þ ß ä, à8ßÓá å% ÷ ¹ æ8Œ& À, Â8Œ& É8Ì$ Î, Ð8ö‡Ñ& Ô8Ì$ Ù, Û Ü ä, Ý8ßÓÞ& á8¦â å*è ë « ì ª, ö8'ü8¯ ƒ  ¤8Œ4& ˜, š8,' 8á ® ¯ ·, °8Œ$ ¸8ã& Ì, Î8'Ô8¤'ã8©
 ð ñ ò$ ó, 8ö‡$ ,   , 8ßÓ š% ¬ ð 8ã& ÷, ù8ã& 8Ì$$ , 8ö‡ˆ& 8Ì$ ,   , 8ßÓ& ˜8¦ œ*Ÿ ¢ Ð £ Ï, ­8'³8¯ º » É8Œ& Ï, Ñ8'×8á å æ ú8®¬œç$ û8ã4‰& , 8ã4$ ˜, ¦8ö‡§$ ª, ¸ ¹ ¾, º8ßÓ» ¿% Ñ  , 8ö‡& 8Ì$†$ Š, Œ  , Ž8ßÓ& 8¦ * œ è  ç, §8'­8¯ ´ µ á8Œ& É, Ë8'Ñ8á ß à ô8®¬œá$ õ8ã& , 8'8¤l“' 8©
 ­ ® ¯$ °, ¾8ö‡¿$ Â, Ð Ñ Ö, Ò8ßÓÓ ×% é”ò(ü¸%&# Logs a message at the error level.Áß%©tã%¶œò%©<ö%–¢œþ% use log::error;Á&©ü–&7žüÎ&1. let (err_info, port) = ("No connection", 22);Á€'©ü„'/, error!("Error: {err_info} on port {port}");Áü´'HE error!(target: "app_events", "App Error: {err_info}, Port: {port}");Áüý'EB error!(logger: my_logger, "App Error: {err_info}, Port: {port}");Á<Ã(–¢¿ dÍ(|Ë(¯4Ý(¹\å(œÝ(´Û( …) ô0 ¹* ñ*8Œ4º*& À*, Â*8Œ4Ã*& É*8Ì$Ê*$ Î*8ã4Ð*& Ö*, Ø*8ã4Ù*& ß*8Ì$à*$ ä*, æ* ç* ï*, è*8ßÓé*& ì*8¦í* ð**ó* ö* ì+ ÷* ë+, +8,+'‡+8‰+ Œ+ + å+8Œ4Ž+& ”+, +8,—+'œ+8ádž+ ª+ «+ ³+, ¬+8Œ4­+$ ´+8ã4¶+& ¼+, ¾+8ã4¿+$ Å+, Ç+8,È+'Í+8¥,Ï+'Ô+8,Ö+$ Û+, Ý+ Þ+ ã+, ß+8ßÓà+ ä+% í+ ø, š-
8Œ4ù,& ÿ,, -8Œ4-& ˆ-8Ì$‰-$ -, - - ˜-, -8ßÓ-& •-8¦- ™-*œ- Ÿ- „.  - ƒ., ª-8,«-'°-8²- µ- ¶- ý-8Œ4·-& ½-, ¿-8,À-'Å-8ádÇ- Ó- Ô- Ü-, Õ-8Œ4Ö-$ Ý-, ß-8,à-'å-8¥,ç-'ì-8,î-$ ó-, õ- ö- û-, ÷-8ßÓø- ü-% …. ”/ ¶/
8ã4•/& /, /8ã4ž/& ¤/8Ì$¥/$ ©/, «/ ¬/ ´/, ­/8ßÓ®/& ±/8¦²/ µ/*¸/ »/ ‰0 ¼/ ˆ0, Æ/8,Ç/'Ì/8Î/ Ñ/ Ò/ 08ã4Ó/& Ù/, Û/8ã4Ü/$ â/, ä/8,å/'ê/8¥,ì/'ñ/8,ó/$ ø/, ú/ û/ €0, ü/8ßÓý/ 0% Š0 ´0 À0, µ0 ¶0 ¾0, ·08ßÓ¸0& »08¦¼0 ¿0*Â0 Å0 ò0, Æ08,Ç0'Ì08Î0 Ñ0 Ò0 ñ0
, Ó08,Ô0'Ù08¥,Û0'à08,â0$ ç0, é0 ê0 ï0, ë08ßÓì0 ð0Œ®4ü÷0%" Logs a message at the warn level.Á1©t¡1¶œ°1©<´1–¢”¼1 use log::warn;ÁÏ1©üÓ17žü‹2+( let warn_description = "Invalid Input";Á·2©ü»2*' warn!("Warning! {warn_description}!");Áüæ2NK warn!(target: "input_events", "App received warning: {warn_description}");Áüµ3IF warn!(logger: my_logger, "App received warning: {warn_description}");Á<ÿ3–¢¿ d‰4|‡4¯4™4¹\¡4œ™4´—4Qˆ À4 ¤< ò5 ª68Œ4ó5& ù5, û58Œ4ü5& 68Ì$ƒ6$ ‡68ã4‰6& 6, 68ã46& ˜68Ì$™6$ 6, Ÿ6  6 ¨6, ¡68ßÓ¢6& ¥68¦¦6 ©6*¬6 ¯6 ¤7 °6 £7, º68,»6'À68Â6 Å6 Æ6 78Œ4Ç6& Í6, Ï68,Ð6'Õ68ád×6 ã6 ä6 ì6, å68Œ4æ6$ í68ã4ï6& õ6, ÷68ã4ø6$ þ6, €78,7'†78¥,ˆ7'78Ä$7$ “7, •7 7 7, —78ßÓ˜7 œ7% ¥7 ®8 Ð8
8Œ4¯8& µ8, ·88Œ4¸8& ¾88Ì$¿8$ Ã8, Å8 Æ8 Î8, Ç88ßÓÈ8& Ë88¦Ì8 Ï8*Ò8 Õ8 ¹9 Ö8 ¸9, à88,á8'æ88è8 ë8 ì8 ²98Œ4í8& ó8, õ88,ö8'û88ádý8 ‰9 Š9 9, 98Œ4Œ9$ “9, •98,9'98¥,9'¢98Ä$¤9$ ¨9, ª9 «9 °9, ¬98ßÓ­9 ±9% º9 Ç: é:
8ã4È:& Î:, Ð:8ã4Ñ:& ×:8Ì$Ø:$ Ü:, Þ: ß: ç:, à:8ßÓá:& ä:8¦å: è:*ë: î: »; ï: º;, ù:8,ú:'ÿ:8; „; …; ´;8ã4†;& Œ;, Ž;8ã4;$ •;, —;8,˜;';8¥,Ÿ;'¤;8Ä$¦;$ ª;, ¬; ­; ²;, ®;8ßÓ¯; ³;% ¼; å; ñ;, æ; ç; ï;, è;8ßÓé;& ì;8¦í; ð;*ó; ö; ¢<, ÷;8,ø;'ý;8ÿ; < ƒ< ¡<
, „<8,…<'Š<8¥,Œ<'<8Ä$“<$ —<, ™< š< Ÿ<, <8ßÓœ<  <ŒÉAü§<%" Logs a message at the info level.ÁÍ<©tÑ<¶œà<©<ä<–¢”ì< use log::info;Áÿ<©üƒ=7žü»=1. # struct Connection { port: u32, speed: f32 }Áüí=96 let conn_info = Connection { port: 40, speed: 3.20 };Á§>©ü«>NK info!("Connected to port {} at {} Mb/s", conn_info.port, conn_info.speed);ÁTú> info!(Áü…?$! target: "connection_events",Áüª?52 "Successful connection, port: {}, speed: {}",Áüà?'$ conn_info.port, conn_info.speedÁ4ˆ@Æ‹T@¹ÈÔš@Àüµ@5ùÈüë@'·É4“AÆ‹<šA–¢¿ d¤A|¢A¯4´A¹\¼Aœ´A´²A ÛA ¿I C ÅC8Œ4ŽC& ”C, C8Œ4—C& C8Ì$žC$ ¢C8ã4¤C& ªC, ¬C8ã4­C& ³C8Ì$´C$ ¸C, ºC »C ÃC, ¼C8ßÓ½C& ÀC8¦ÁC ÄC*ÇC ÊC ¿D ËC ¾D, ÕC8,ÖC'ÛC8ÝC àC áC ¸D8Œ4âC& èC, êC8,ëC'ðC8ádòC þC ÿC ‡D, €D8Œ4D$ ˆD8ã4ŠD& D, D8ã4“D$ ™D, D8,œD'¡D8¥,£D'¨D8Õ$ªD$ ®D, °D ±D ¶D, ²D8ßÓ³D ·D% ÀD ÉE ëE
8Œ4ÊE& ÐE, ÒE8Œ4ÓE& ÙE8Ì$ÚE$ ÞE, àE áE éE, âE8ßÓãE& æE8¦çE êE*íE ðE ÔF ñE ÓF, ûE8,üE'F8ƒF †F ‡F ÍF8Œ4ˆF& ŽF, F8,F'F8ád˜F ¤F ¥F ­F, ¦F8Œ4§F$ ®F, °F8,±F'¶F8¥,¸F'½F8Õ$¿F$ ÃF, ÅF ÆF ËF, ÇF8ßÓÈF ÌF% ÕF âG „H
8ã4ãG& éG, ëG8ã4ìG& òG8Ì$óG$ ÷G, ùG úG H, ûG8ßÓüG& ÿG8¦€H ƒH*†H ‰H ÖH ŠH ÕH, ”H8,•H'šH8œH ŸH  H ÏH8ã4¡H& §H, ©H8ã4ªH$ °H, ²H8,³H'¸H8¥,ºH'¿H8Õ$ÁH$ ÅH, ÇH ÈH ÍH, ÉH8ßÓÊH ÎH% ×H €I ŒI, I I ŠI, ƒI8ßÓ„I& ‡I8¦ˆI I*ŽI I ½I, I8,“I'˜I8šI I žI ¼I
, ŸI8, I'¥I8¥,§I'¬I8Õ$®I$ ²I, ´I µI ºI, ¶I8ßÓ·I »I”µMüÂI&# Logs a message at the debug level.ÁéI©tíI¶œüI©<€J–¢œˆJ use log::debug;ÁœJ©ü J7žüØJ(% # struct Position { x: f32, y: f32 }ÁüK/, let pos = Position { x: 3.234, y: -1.223 };Á±K©üµK74 debug!("New position: x: {}, y: {}", pos.x, pos.y);ÁüíKMJ debug!(target: "app_events", "New position: x: {}, y: {}", pos.x, pos.y);Áü»LJG debug!(logger: my_logger, "New position: x: {}, y: {}", pos.x, pos.y);Á<†M–¢¿ dM|ŽM¯4 M¹\¨Mœ M´žM ÈM ·U üN ´O8Œ4ýN& ƒO, …O8Œ4†O& ŒO8Ì$O$ O8ã4“O& ™O, O8ã4œO& ¢O8Ì$£O$ §O, ©O ªO ²O, «O8ßÓ¬O& ¯O8¦°O ³O*¶O ¹O ¯P ºO ®P, ÄO8,ÅO'ÊO8ÌO ÏO ÐO ¨P8Œ4ÑO& ×O, ÙO8,ÚO'ßO8ádáO íO îO öO, ïO8Œ4ðO$ ÷O8ã4ùO& ÿO, P8ã4P$ ˆP, ŠP8,P'P8¥,P'—P8,™P$ žP,  P ¡P ¦P, ¢P8ßÓ£P §P% °P »Q ÝQ
8Œ4¼Q& ÂQ, ÄQ8Œ4ÅQ& ËQ8Ì$ÌQ$ ÐQ, ÒQ ÓQ ÛQ, ÔQ8ßÓÕQ& ØQ8¦ÙQ ÜQ*ßQ âQ ÇR ãQ ÆR, íQ8,îQ'óQ8õQ øQ ùQ ÀR8Œ4úQ& €R, R8,ƒR'ˆR8ádŠR R —R ŸR, ˜R8Œ4™R$  R, ¢R8,£R'¨R8¥,ªR'¯R8,±R$ ¶R, ¸R ¹R ¾R, ºR8ßÓ»R ¿R% ÈR ×S ùS
8ã4ØS& ÞS, àS8ã4áS& çS8Ì$èS$ ìS, îS ïS ÷S, ðS8ßÓñS& ôS8¦õS øS*ûS þS ÌT ÿS ËT, ‰T8,ŠT'T8T ”T •T ÅT8ã4T& œT, žT8ã4ŸT$ ¥T, §T8,¨T'­T8¥,¯T'´T8,¶T$ »T, ½T ¾T ÃT, ¿T8ßÓÀT ÄT% ÍT ÷T ƒU, øT ùT U, úT8ßÓûT& þT8¦ÿT U*…U ˆU µU, ‰U8,ŠU'U8U ”U •U ´U
, U8,—U'œU8¥,žU'£U8,¥U$ ªU, ¬U ­U ²U, ®U8ßÓ¯U ³U”þZüºU&# Logs a message at the trace level.ÁáU©tåU¶œôU©<øU–¢œ€V use log::trace;Á”V©ü˜V7žüÐV(ÜØüùV/Ù©W©ü­W63 trace!("Position is: x: {}, y: {}", pos.x, pos.y);ÁüäW74 trace!(target: "app_events", "x is {} and y is {}",ÁüœX>; if pos.x >= 0.0 { "positive" } else { "negative" },ÁüÛX?< if pos.y >= 0.0 { "positive" } else { "negative" });Áü›Y41 trace!(logger: my_logger, "x is {} and y is {}",ÁüÐY>ˆëüZ?Ïë<ÏZ–¢¿ dÙZ|×Z¯4éZ¹\ñZœéZ´çZˆ ‘[ €c Å\ ý\8Œ4Æ\& Ì\, Î\8Œ4Ï\& Õ\8Ì$Ö\$ Ú\8ã4Ü\& â\, ä\8ã4å\& ë\8Ì$ì\$ ð\, ò\ ó\ û\, ô\8ßÓõ\& ø\8¦ù\ ü\*ÿ\ ] ø] ƒ] ÷], ]8,Ž]'“]8•] ˜] ™] ñ]8Œ4š]&  ], ¢]8,£]'¨]8ádª] ¶] ·] ¿], ¸]8Œ4¹]$ À]8ã4Â]& È], Ê]8ã4Ë]$ Ñ], Ó]8,Ô]'Ù]8¥,Û]'à]8ó,â]$ ç], é] ê] ï], ë]8ßÓì] ð]% ù] „_ ¦_
8Œ4…_& _, _8Œ4Ž_& ”_8Ì$•_$ ™_, _ œ_ ¤_, _8ßÓž_& ¡_8¦¢_ ¥_*¨_ «_ ` ¬_ `, ¶_8,·_'¼_8¾_ Á_ Â_ ‰`8Œ4Ã_& É_, Ë_8,Ì_'Ñ_8ádÓ_ ß_ à_ è_, á_8Œ4â_$ é_, ë_8,ì_'ñ_8¥,ó_'ø_8ó,ú_$ ÿ_, ` ` ‡`, ƒ`8ßÓ„` ˆ`% `  a Âa
8ã4¡a& §a, ©a8ã4ªa& °a8Ì$±a$ µa, ·a ¸a Àa, ¹a8ßÓºa& ½a8¦¾a Áa*Äa Ça •b Èa ”b, Òa8,Óa'Øa8Úa Ýa Þa Žb8ã4ßa& åa, ça8ã4èa$ îa, ða8,ña'öa8¥,øa'ýa8ó,ÿa$ „b, †b ‡b Œb, ˆb8ßÓ‰b b% b Àb Ìb, Áb Âb Êb, Ãb8ßÓÄb& Çb8¦Èb Ëb*Îb Ñb þb, Òb8,Ób'Øb8Úb Ýb Þb ýb
, ßb8,àb'åb8¥,çb'ìb8ó,îb$ ób, õb öb ûb, ÷b8ßÓøb übt‡üç‰FC An enum representing the available verbosity levels of the logger.Á®Š©ü²ŠIF Typical usage includes: checking if a certain `Level` is enabled withÁüüŠGD [`log_enabled!`](macro.log_enabled.html), specifying the `Level` ofÁüÄ‹C@ [`log!`](macro.log.html), and comparing a `Level` directly to aÁüˆŒ+( [`LevelFilter`](enum.LevelFilter.html).Á,¨(ÈÍjàJÛ÷ÄÅÆÈÉÊËÌÍÎÏÇÆÉËÍÏ´œ The "error" level.Á·©ü¿# Designates very serious errors.Á_ÄĨ(rtÄĨ(á8¬Š The "warn" level.Á¤©ü¬$! Designates hazardous situations.Á_ÄĨ(rtÄĨ($¨‘¬ß The "info" level.Áù©ü" Designates useful information.Á]ÄĨ(prÄĨ(,„’´²‘ The "debug" level.ÁÍ‘©üÕ‘*' Designates lower priority information.ÁfÄĨ(y{ÄĨ(,þ’´ The "trace" level.Áª’©ü²’GD Designates very low priority, often extremely verbose, information.ÁƒÄĨ(˜ÄĨ(kk!¨(ÑÑkkÝ Ý¨(¨(ÐÌŒÐ
Ñ,ÌŒ ÓŒ"¨(ÄÄ#¨(ÄÄ#¨(ÕÕÄÄÞß Þ¨( ߨ(ÔÙŒÔ
ÕLÙŒ¥ ÄŸŸ$¨(×ןÿŸŸŸŸ8ŸŸŸà à¨(ô3ÖäŒÖ
×äŒ××%¨(ÙÙ××áâ á¨( â¨(×?ØèŒØ
ÙT茥 ×&¨(ÛÛãä ã¨( ä¨(›@ÚôŒÚ
ÛôŒ¥  v!v!'¨(ÝÝv!v!åæç å¨( æü\ü\šþ\Ÿ ÚYÿ\FÚY„ÑÚây59çèEÜùŒÜ
Ý,ùŒÚv!x#x#(¨(ßßx#x#èé è¨( é¥Hô3Þ¯ààÞÕ©¥Hx#ø^¥Hx#
ߥH$€©x#x#x#¤­³üñ¯MJ An enum representing the available verbosity level filters of the logger.Á¿°©üðJG A `LevelFilter` may be compared directly to a [`Level`]. Use this typeÁüޱTQ to get and set the maximum log level with [`max_level()`] and [`set_max_level`].Á㱩ôç± [`Level`]: enum.Level.htmlÁü†²&# [`max_level()`]: fn.max_level.htmlÁü­²,ÿð \¶³ò)×TLÞ¥˜Øâãäåæçèéêëìíãåçéëíó³üȳ&# A level lower than all log levels.Á 7ááò)JLááò),ª´üü³)& Corresponds to the `Error` log level.Á :ááò)MOááò)$â´üµ´(% Corresponds to the `Warn` log level.Á 9ááò)LNááò)$™µüì´(% Corresponds to the `Info` log level.Á 9ááò)LNááò),ѵü£µ)& Corresponds to the `Debug` log level.Á :ááò)MOááò),жüܵ)& Corresponds to the `Trace` log level.Á :ááò)MOááò)ã(ã()ò)ïïã(ã(ê êò)ò)îò²î
ï,ò² ù²*ò)9)9)+ò)9)9)+ò)óó9)9)ëì ëò) ìò)òÿ²ò
óLÿ²¥ 9)ü)ü),ò)õõü)ÿü)ü)ü)ü)8ü)ü)ü)í íò)ô3ôгô
õг4*4*
t£Ö  ,Öà>88ƒ«Å ,Û3 ,²Öj„
j„ÿÿ
 j„j„«Å ,ÿÿ… dÃÖÿÿ«Å
ÿÿ
 Û3 ,ÿÿù <ßÖÿÿÛ3 ãÕ1 ˆˆ ,Ù1Ù12 ŠŠ ,‹?BÙ1Ù1÷ ÷ , , éÕ
 ,éÕ›2›23  ,ŽŽÄÇ›2ÿ›2›2›2›282›2›2ø ø ,ô3Œ!ðÕŒ
Ž ðÕß2ß24  ,ehß2ß24  ,“ß2ß2ùú ù , ú ,"ôÕ
 LôÕ¥ ß2^6^65  ,.1^6^6ûü û , ü ,›@#ÿÕ
 ÿÕ¥ ^6á9á96 ˜˜ ,™ÊÍá9á9ýþ ý , þ ,×?$„Ö
 T„Ö¥ á9==7  ,œœfi==ÿ ÿ , Å{ô3š¯%ÖšÕ©Å{=ø^Å{=
œ Å{$Ö©===Þ>Þ>8 ŸŸ ,  ADÞ>Þ>ƒ  , ü\ü\šþ\Ÿ ÚYÿ\FÚY„ÑÚây59ƒèEž&–Öž
  ,–ÖÚÞ>¬óãüºØ# The "payload" of a log message.ÁÞØ©LâØ # UseÁìØ©üðØKH `Record` structures are passed as parameters to the [`log`][method.log]Áü¼ÙEB method of the [`Log`] trait. Logger implementors manipulate theseÁü‚ÚLI structures in order to display log messages. `Record`s are automaticallyÁüÏÚC@ created by the [`log!`] macro and so are not seen by log users.Á“Û©ü—ÛJG Note that the [`level()`] and [`target()`] accessors are equivalent toÁüâÛJG `self.metadata().level()` and `self.metadata().target()` respectively.Áü­ÜLI These methods are provided as a convenience for users of this structure.ÁúÜ©lþÜ
# ExampleÁŒÝ©üÝHE The following example shows a simple logger that displays the level,ÁüÙÝB? module path, and message of any `Record` that is passed to it.ÁœÞ©< Þ–¢ĨÞËÄÁÞ©üÅÞ$÷ÄüêÞ=: fn enabled(&self, _metadata: &log::Metadata) -> bool {Á|¨ß trueÁD¸ßÁß©üÅß,) fn log(&self, record: &log::Record) {Áüòß0- if !self.enabled(record.metadata()) {Á´£à return;ÁdºàÇà©üËà" println!("{}:{} -- {}",Áüîà# record.level(),Áü’á$! record.target(),Áü·á# record.args());ÁDÛဳÌäá fn flush(&self) {}Á,þáŨ<„â–¢Œâ©üâ-* [method.log]: trait.Log.html#tymethod.logÁܾâÑïäÚâíÎü÷â0- [`level()`]: struct.Record.html#method.levelÁü¨ã2/ [`target()`]: struct.Record.html#method.targetÁ 4þã ¢¢  å¨Å Ï-˜þ’Ay­£¤¥¦§…ä´äDä¡¡¯/Ä«ä$«ä¡¡Õ„üÉä'\Éä¡¡æ‚è‚é‚Íê‚낊ì‚òìŠ!H ÷ ,üöä $öä¡¡¿ºŒœå$œå¡¡Àˆ*D*D9 ©©Ï-ªª*D*D Ï-Ï-¨'äã¨
ª ,äã|E|E: ¬¬Ï-­­Œ|E|E Ï- ü\ü\šþ\Ÿ ÚYÿ\FÚY„ÑÚây59èE«(ëã«
­ ,ëãÚ|Eäüëü/, Builder for [`Record`](struct.Record.html).Á›ý©üŸý\Y Typically should only be used by log library creators or for testing and "shim loggers".ÁüüýXU The `RecordBuilder` can set the different parameters of `Record` object, and returnsÁüÕþ.+ the created object when `build` is called.Á„ÿ©tˆÿ¶œ—ÿ©<›ÿ–¢ì£ÿ use log::{Level, Record};ÁÁÿ©üÅÿ" let record = Record::builder()Áüèÿ1. .args(format_args!("Error!"))Áüš€(% .level(Level::Error)ÁüÀ$! .target("myApp")Áüè€,) .file(Some("server.rs"))Áü•$! .line(Some(144))Áüº0- .module_path(Some("server"))Áìë .build();Á<‰‚–¢‘‚©ü•‚HE Alternatively, use [`MetadataBuilder`](struct.MetadataBuilder.html):ÁÞ‚©<â‚–¢üê‚.+ use log::{Record, Level, MetadataBuilder};Á™ƒ©üƒ/, let error_metadata = MetadataBuilder::new()Áü̓,) .target("myApp")Áüúƒ0- .level(Level::Error)Áü«„%" .build();ÁÑ„©üÕ„"ÝÀüø„-* .metadata(error_metadata)Áü¦…1‰ÁüØ…$! .line(Some(433))Áüý…)& .file(Some("app.rs"))Áü§†0ˆÃìØ†ÁÃ<ö†–¢ lš‡ ¯¯²¹I¾.öµŒ\
B5k°¨‡”²‡4²‡®®Ï-­P­P; ²²¾.³³KM­P­PˆŠ ˆ¾. ü\ü\šþ\Ÿ ÚYÿ\FÚY„ÑÚây59ŠèE±)‡‡±
³ ,‡‡Ú­P¼“«ü·£! Metadata about a log message.ÁÙ£©LÝ£¦«ç£©üë£@= `Metadata` structs are created when users of the library useÁœ¬¤ logging macros.ÁÀ¤©üĤB? They are consumed by implementations of the `Log` trait in theÁ¬‡¥ `enabled` method.Á¥©ü¡¥DA `Record`s use `Metadata` to determine the log message's severityÁ|æ¥ and target.Áö¥©üú¥DA Users should use the `log_enabled!` macro in their code to avoidÁü¿¦(% constructing expensive log messages.Á覩t즶œû¦©<ÿ¦–¢ü‡§'‘į§©
K œ
KD¹
K Ô
K ×
K,Ý
Kò~K ÃK ÅKDâK~K{;KÛ:Ká:KS:KÞ9Kä9Kh9Kn9K¯8Kµ8Kv!K/8K58Kø2KX2K^2KÐ1K[1Ka1Kå0Kë0K,0K20K,K¬/K²/K—-Kö,K@,KF,K°+K¶+K +K&+K€*K†*K~)K„)KÞ>K"!KP KV K|EKdKjK­PK
KnK¸K¾K(K.K˜KžKøKþKK K´aKê
K6
K<
K¦ K¬ K K Kv K| Kƒ
K
K§gKÏKÕKipKÅKËKbqKAKGK¹KŒKKŒtK-BLO]lqëtarget()Áwarn!Ámacro.info.htmlÁinfo!Álogcontrol-logÁ°https://docs.rs/colog/*/colog/Ámacro.trace.htmlÁ0https://github.com/borntyping/rust-simple_loggerÁfn.shutdown_logger_raw.htmlÁfn.set_logger_racy.htmlÁstructured-loggerÁ clang_logÁ¥#https://docs.rs/spdlog-rs/*/spdlog/Álevel()Á https://docs.rs/syslog/*/syslog/Áóèÿ log-to-defmtÁòÿ°¡¨€fn.set_max_level.htmlÁµÑ¥ú¢‚error!Áómacro.error.htmlÁèÿÞ‚òÿ(https://docs.rs/env_logger/*/env_logger/Á¨€‹ƒ] call_loggerÁµÑ¥Ähttps://docs.rs/fern/*/fern/Á¨úóȃ db_loggerÁÞ‚؃ÿƒenum.Level.htmlÁ‹ƒÄë鄨 struct.Metadata.htmlÁȃ …؃7https://doc.rust-lang.org/stable/std/macro.println.htmlÁÿƒÀ… flexi_loggerÁÄ$https://docs.rs/logforth/*/logforth/Áë ˆé„¨šwin_dbg_loggerÁ„† …¯†(https://docs.rs/log-reload/*/log_reload/ÁÀ…÷†˜‡ëšÛ‡„†./macro.trace.htmlÁ¯†€ˆ stderrlogÁ˜÷† https://docs.rs/log4rs/*/log4rs/Á˜‡ android_logÁšÐÛ‡ÞÚˆ"https://docs.rs/log_err/*/log_err/Á€ˆýˆ˜ max_level()Á›‰4https://doc.rust-lang.org/std/macro.format_args.htmlÁƉÞ ./macro.debug.htmlÁÚˆñ‰pretty_env_loggerÁýˆ˜"https://docs.rs/ftail/latest/ftailÁ©Š›‰Äãsystemd-journal-loggerÁ¿ŠƉlog!ÁÞˆ‹*https://docs.rs/console_log/*/console_log/Áñ‰«‹Ì‹©ŠÄstruct.MetadataBuilder.htmlÁ㉌¿Š./macro.info.htmlÁ°Œˆ‹ÄŒì
 simplelogÁ«‹*https://docs.rs/clang_log/latest/clang_logÁÌ‹ã slog-stdlogÁĉŒ log_enabled!ÁÁ0https://docs.rs/logcontrol-log/*/logcontrol_log/Áì
ÄŒ°Œîfn.try_set_logger_raw.htmlÁÊ ú4https://doc.rust-lang.org/std/str/trait.FromStr.htmlÁ‚Žstruct.Record.htmlÁ¼Žú./macro.warn.htmlÁÝŽÁôŽì
y
simple_loggerÁÊ îÀmacro.debug.htmlÁ;https://docs.rs/structured-logger/latest/structured_logger/Á邎ŒsyslogÁ¨¼ŽèúÐ,https://docs.rs/log-to-defmt/*/log_to_defmt/ÁôŽÝŽÊ enum.LevelFilter.htmlÁ¤‘À¾¹‘éŒ Š’¨./macro.error.htmlÁèб’macro.warn.htmlÁcologÁ¤‘ù’Œ*https://docs.rs/call_logger/*/call_logger/Á¹‘ spdlog-rsÁŠ’Ì“&https://docs.rs/db_logger/*/db_logger/Áèá±’ô“ˆ”fn.set_logger.htmlÁù’©”ã”Metadata::targetÁÆÌ“ý”
env_loggerÁô“ˆ”Ä•,https://docs.rs/flexi_logger/*/flexi_logger/Á©”©
#fernÁã”0https://docs.rs/win_dbg_logger/*/win_dbg_logger/Áò•Æý”˜–trait.Log.htmlÁÄ•¹–©
ú–Metadata::levelÁ‰—ò•println!ÁƘ–Õ—&https://docs.rs/stderrlog/*/stderrlog/Á¹–©
logforthÁú–Õ*https://docs.rs/android_log/*/android_log/Áÿ—‰—Ÿ˜
log-reloadÁÕ—½˜fn.max_level.htmlÁó˜ÕMetadata::builder().build()Á‹™ÿ—trace!ÁŸ˜Ì™6https://docs.rs/pretty_env_logger/*/pretty_env_logger/Á½˜log4rsÁç™ó˜Õ@https://docs.rs/systemd-journal-logger/*/systemd_journal_logger/Áˆš‹™macro.log.htmlÁ´šlog_errÁ̙˚Œ›ç™ûformat_args!("")Á¨›ˆšdebug!Áù›´š’œ(https://github.com/drakulix/simplelog.rsÁËšftailÁŒ›*https://docs.rs/slog-stdlog/*/slog_stdlog/Áû¨›macro.log_enabled.htmlÁ»œÜœ console_logÁ’œù›ÓùœôÙ fn.logger.htmlÁ¬ûÁÛÿ†€ûÜœ¢ž»œà€ÓôùœÙ Ë€çÓž¬®‚ÁÛÿÙ †€¢žû°à€Ó´ôË€çÓž¢‚®‚ macro@logÁÆ ¾Æ …syýG½¹ËÑ¥ßÿÚ°­³ØÜß⪭²›HÒHŠHH†IÔ©Õ©‘ªTraceDebugInfoWarnErrorOffBorrowedStaticRecordmetadataargs module_path fileline
RecordBuilder
recordMetadataleveltargetMetadataBuilderSetLoggerErrorParseLevelError GlobalLogger Lkey-value support is experimental and must be enabled using the `kv` featureLó1yOFFERRORWARNINFODEBUGTRACEJattempted to set a logger after the logging system was already initializedJFattempted to convert a string that doesn't match an existing log levelFÖ¡â¡î¡ù¡„¢¢š¢©¢¶¢âҢݢï¢ú¢…£™£¦£µ£Á£Σä£ë£î£ƒ¤™¤¬¤ÿ¤†¥¥™¥¥¥°¥»¥Ç¥Ó¥¤¦Ï8Ò=^ö ¼_’œd~´÷&ÒQ
ÒÿªnØþsÌR˜j$–B5EhdjƒI„2¶­eÒö£éá˜&ë~ĴȺ<¯y]´#´I÷Öò?=u«º”öJ°C®Jr¼\,tXúï
ŸÉ–)Ónoåä‚:ý)åR¼ÝÛ¬“Í®ÿmÒ=ÀmAe³ ä@Ìfcà;½í$LbŸp¥Ì¯ÅÈþ‰£âã •„ˆ¸Å˜C&PÚz¥¨ÞfpCÁ*!<KÅë›d¯?ÙçÁðݯ1¹x©àCâá¢.nY#ç†\‰Bš PI/ñ‘*È›°“y\!æP|6Ó¢£…˸{ßžx
²Iƒl.+KÁà·u4G€4O/šBq¹OÈÍÓvCÝ…Þ¦ˆû ëáÚWñweÔ*Y÷¢ûWLþ²)—#þé»yD¢˜ÇŸòP¸}¯R±z|½£+[\¯`!Á…ýû#Ù¼
|$ê¯4rÌ +’ü#èÙùi¨Š^Á)¡•m$ê"0òT'Uæ†ëµà™Š•œHi«‡Ã˜‚]Ìf?R@Ñâ¾ÉòÛ q
¯[fîF>NœêCènì»ù+¹
/ôWh ŠDaxÌò1båDƒ†ïAmJq'þRâ 0pY³+ÝQy»*!ÔÍ ã%]ìŽÁ,U„g¿`k-4$K¡Qu:~æ*ÇÊ]&»-ç¤æüVx›ÆÙ#òܶžåXU/ģÓI_cEïoìYn–©¨Ù—(¯å$´KX´¦ð‚õ–Ú$
·~³{A¬`YÇ©n£Y7)–ê ïØ›bìõÙ¾«IþÄ‚õ̶×úƧ¼~%y/·ß‡#"”ÝŸ\)9fIZc¢/³W©œÜ–7©ôÏ¢Š"»ÉCG”ˆÏ%ý9
–ѽ¦¸h^ Ë­ç‘­Ãt#·#…´ècÁþ
)ÍLj£^Ïë
ÿs‘¢±wScäPâ÷e~ÕY%hÂÿ½œûß÷u\á3H¸Êº÷?*šyÞ~GÙYÜB:Oñ=ܪ/Ì<‹Õ%ÆÆ¡í*[Á‹¶ž+é…’ýú×ÈßÞ/ð#šxhT¤S;õ­…!©’Ú$çÔýF¦Pñ¿$´©ów>tûï^ñík™-ÍìÖO\aÒ@cK¢’™ç…u.póÏþñGѪ ÉûÍ ÔŠóµªU™K¶ÅÃyóÎy¯šõ}­ÀºÎìÐm¶¡Q´Ä–peÀhü$cw•Å–Q4ÖšÐ8c9ò­¥r“óÈØZRM"ÙêåSÁ­•{]FdCKSþïMxé/i Œ £ ¨ãuäp
9ègâíd†
ZðßBQýfäKj\\r¯§xx[IÃ"2ý‡lU ü$w£õþ-|»—" ¦0S8 ‰HÆŽ{3 "ù½þ@ £nâ„14;4̹LÊg”ÇGÕÜ„À÷}"Ê.véamâ8ZÚÙ–7orgï|÷ºrÑ‚
^¬¼‘ʯ|^Eeoæ:\{°ï¥Ã!úzͺ|5×ÎùRÙC%^‘—ÅUÅ~—²s?~ˆ¨w˜‘òG g bùCžÂïfEk-Þh½št|#(Êa›Ï±ÌÁkvêÄm«è›4°^Ý\€…ñ0ªA¶{ú7Úa÷’»ÂkG2:·€ÑN?æMVrfäNX7Ò!u>š&sy±qeòëOÚÕ þ´•/•q¾•þ¡c‡þÓÀ5mGoxW4ŸÄ™Q¨‡SØœUQNµ¸¤¿oéé^
MjU"Ž~iX&"F·¤?Èp"µ÷*µΊا›ÏŸ|ç¥]›‰¢~芈|ãò<²8µ;µ>Y”À-àÅm…Kuì¼ ø?õó* }–uoÕª;ðYùé…5’¸;²ùIDÜãž.ÿ
s3pøk²jUÌB„˜àH6 ÛuLŽ^0Å’Œ<õw&«›Ëöîwß7ãœ:
Ð O=UÂŽÉhMòÎÝtuÑÆŸ7¨Rþñš§þ¨ Ë»±){²I“Ëß°Œ#Ÿ*7¬#©-­ü[#ô&0øÓ!*W¢Yuñì·Á¼ì6µ8@8($ýÜq´«@ÊšN´³tÝHÈ|Ðä«Göu¤,æ@Æç\Nºß,Ö•b)‘°t†´ƒÆŠ}D~0DgŸÝ¬Qݸ2ìó¦«1QÕ¾PÅ|7U¾¿`ãx
µ¿ÌrŠ áà‘lÔþâÒN‰nQÑe,˜È²O¯8_޵ˆÃ$…w;xî7gâÕö„ÝãøuMº°’ÉJ<‰ªŒVÕ$ÐP…Çdï) ®ñ,>Oâç’¾Úã…xžÞ¶s™Îš]mv:(ìÅkÛá½üÅ4gï¢,Þ’ÃÂt¤æˆÖ™í
Ypß­.óîïs¨Í_L±ØØ`™VeGéâ¥0 оUÉJÝ.KL½aøœÖ
X¤îÙÉûó1sš 7hÍOgËÌÖ•)3MeöÀLóãìøº J޿Е"ÖàöÇP·vIÓ>Þ0Cq.\ŒúRøõRW…?Jø›T5»]gdÐBÓ[ï5²}XÔçÿLÔÄèÎóp§à0+Ô”aþ¯2°¶½±Vö é+7™K\Bn,*²ƒI¢»‰©<3—ä¹Fy+Y§ôB¢]è<1¡Û ( €Ø»igMÅ[ò/kê{¬0üu&ª÷KK ›ñàÉ[–ŸYáqx
 Šƒ¦ ù)
dq» ŸVÉ}« 
¡$øÏÆ×“BÅerÿèö¹=Ò™3†6‰¿ÑKû/¸©®iý‘ ŒlOEá,ÿ:¾M&jlͯõâ‘_\é×­ˆóåy;ÿÆly鬞`ú‡ €)7³©8åivIʆ£&‡ÀŠ—ðS‡•m£¾ÈdõZNÆ4Y8'[Ô$•°Ú-¿ydéšÿîêsDŦ=Q¢´Ýï>.LÍ1÷þNøu\´È‘`¿ÈSó¬mÞ,­:A¹èüµ9 n@Äí´µe3LH]ûÌ\+T§Çw^Uy(q—!Å¢jéïa‡Ú=g¢¼ê*ÇKWëí-Çú†NÙñiÆbó-ðL%pÂHñn:`y¨w݈løæº›’°-?ÍÍ%zY=fþe´i½§æ~¡¢®I‚Ë;‰ £ò^7ÊæIdRGî"Ÿ+ÄÜ5‚îø"âƒÄê"Ë0BÂLÞ®Nƒ$î:™lÊd¼ahl CWz‚ä4@?(lg±ümâ
»xã3mØ+gˬÚi%ï+•¥æ=kC23¡‚Ý• Ð'»TÞ:597}ùì.䌥 ~¼éû ÝàÊäëÅÄ"«íDó>2&åoÅ®q(ÊauÝw<˶¨?©DÁZ'¥\I©jƒ¾çÿÏ’ÃëÐ-<¥%m…>Rßÿ¸°¢Ïâfõ[_¶ï'±H­¢žŸOõà ]ôîÚN-
°XEàâŠÞß<0Aw°±I‚_nÉšqÈDÀÿàê°Öòâ
ÅÚKjø[s•ÔÚÊ›dŠNô땳«Þd Eè²(ÏP ¾L?”ÅnuEù~ú¨¼\nXG{p>ß‹K£âvW00 Öi)¢O¢òÚ>ŒêÞX×#_ïåD
6ñ.@ñ~Ž¤äƒ°k}Þ¿œIÒÊÊvÃq{³­ÚªZPKóŽ|:AçÁ´yÞÁØG‘S¬6®X¢¬ìÂjyr=ïŽ7¤2ð»œAðñD¬çpÞ¢9V¤Ä2dâ*CQ혅àdeàú©›ª›é%˜w{4çHØ ÀA䀩c‰º×¦ÛÐÜO+tˆÊÌ#µœ1y·œÃƒs¬Þѵï å¬ò”¼ÀŒ\>S
–ŒØ¥Atçž·&gÄxp‚˜¨΋9…Ý|!alºà«ÿiÚÎYÕ'Ø–¶ÞôŠõ•'Ê•ÜIÀ»§à¨äL-Qal{µyÓéÆð錅\;G³Ëm6¤ò 2ä]κŽôZ8©E‡W¶ð‘³ø&ijdãª~7Èw.c¡J9ÉÍ‹£Å›½ÈŸxê;Ž•˜q°`ƒÝÚ1ÝF?×iAC=oì‡Q™¡a†iÈ‚ON˜V¶99·¼zmó‡ÔVi|ˆöÄÜ‚
<&™É¨õœZ5Äüv¢|?¥ietøšˆzqûtnI;j.7u„ÖÐ%×,îÚ8].&Ö³³ ŸŸ…<Î~Åñq?L »ÆÓP7
FÔvŹ•ý¾Xu‹^͈ÝñJì™è@K¦,›’8ƒ›×óé{Žðr1UÓ–a9pÁ5Í4ª™Ù†S·ÖÂvcU™ß”%j=õT
b,%¿+ÕU¡öý©øˆ=
ØÀoMSií‹"¬Ù·4Þ~ïÑ¿
kˆkÓ用N*ik„Ìï wÏ´­šrwa)z³Ú Wx­*—ªÎÜÔÔùM{;÷¿ö#.^ËáÛÛí6ÏÉŸKIgÉk2ФE+-6çda(ü¼«ò‡~Q€xÖ2qòû§œÍ/< _kæ¿­ôè±ÑËÚ^Šnó4…K«ª×[û4p«ËS)¸Ú‹²^ B’ÀÊ»òuf¬˜žFb¼ýKTV;Y¶[Jzxà40n xcf;íEöSÁ(žGÚêÔ­-ú³è*Ú»Så?³¢•i¸@éÎæšß8Àžö–tAÆ‘, ÉÁ\oPÊXS5^;sÉz?óxkcÜàRŽe@k©\ÊX½¶NÈÊ8v}½ø´
Ì÷î1„qÛ†®AL¿bˆH9§4ù/ZvÉ™©  ±3ƒ³Áù“"˜&¶îam¸yWnb~ùY×Ü?õ¬¯‘ùyv DaéªhêJÛL}=†òÄìΕ[d‰¥)ÁØxy"w’Á«q¾ùÔí_ÂÑix|nÓ×(f_ï†öIeÖþÀ~¤ÍƒÈzjºX_ÙÑ<Tñ9¶›c¥£gð‹Hq
á~wÖ”ça±ètB]Æò–7rÀ£ÒOw3²IÿÜãk}‡Ì|€zUª^Èøð‹}
ˆÀªÜÃÅÈþŒ1œŒ×ÚØKÜdo!"<Tm¹áŸ¨¨|xƒ?Kªc?Vp
·÷°ý‡Y™Uüñ“ÜsÂ58ÈvÀ$áüœ'+™6ªý¡×û{·¸@iÁA\^õM<Oè£oÈ€ÕK|µn1EöCÈ•µqý¡y0c››Ò”»ù;DÿÕ j‚ÑÑÚeLªâ ë@OëÐ×ó¶¦ýŽ^$˜m8P“%B< 0igö’.p[€fž{À“‹J”¸œ€¡ªY*S•oU‡9*ý¶­€V€Åèj—2@ö1M@ª€Ÿ+€–®ÓwãF%¢Q¬dÇGE¯ • ±$tSä÷1Y’ߺ´(7_‡ÕGÉì±k:•ÊMb|SzBJ
Þç1\°rÍŽ\%X]ròIñ8Ú6°éùшࠕ^¶¯ä}`R
ÊSqÔ†HêíµêƒnÛ÷ÁÕì,@s3š¡LÀà~e´Á1êoòVÅs¦:@‰%G\ïæÎh+ƒ<¯:„Òª.%èþ'^q
^/_R®¿o"´ØžxÕßÚÖ–;†/˜¬Jò{HÏÊZË 3ÂØ
és~쳇Nìß+¿ew¤œ0oGç¹®PzG¬< |¸3NH­g€mâS!lkœC,6¤~m 4M´ñÐo< Ï8ÜtNƒZ±xd¬BE@Âðµ&“³… Ü §@Mº—µ5“ÃâQó2ëåк*RÉð&ÍÑym0 )kßiéÙõ«U‰+à-‚͆F—kÌ/ªÉÖó>éëœùìÏù1œƒ¤ž
âÍâãbãyãàã÷ã^äuää7å»åærææ5çOççöçŠèwé7ìì7ïÇñÞñEò\òÃòÚòôòœóñóEô\ôõ"õ`õÐõ¢öS÷êù3ú1ý{ ø'SâkùÁ òÉtú* N
ì
è  ?
ê
«Hü'IªñW¼å·`
Œ®çÀ ̬þ#ÌéV
à >!"
&“5(Ô/C0í0*3C3ó3 4¼4x5¥5j77Ÿ7ö7˜8Ã8J9u9¹9Ý9:M;ž;=v?@ @q@B9RZÄbÂkJt}ç~%»Z/«Æ,ƒGƒ¹ƒÔƒ;V½ØE:ˆªˆŠtŠåŠSg|ýŒŠŒ¥Œ 'Ž©SŽnŽpÌä?Y®3¬Ôo 9§Õ°c-•pœŒœªœ (CqÈö©'ž®¤È¤ô¤§&¥N©j©©°©ª3ª¬ªÔª«o«« ¬9¬§¬Õ¬s­¡­T®¹°Ó°ÿ°x±ž±̱9²g²Õ²³q³Ÿ³=´k´µ2ܸ3¸N¸ø¸
¹(¹Ž¹©¹ºº«º,!Áê<67â7¤
~í 7nãìãjä~æAçÓñQòÏòQôõ
 ?Ó¤­Ô
063ÿ3ä7±8c9Å9Â~Ê~Ò~Ú~â~%§¼=ƒÊƒLÎ
ˆˆˆ%ˆ-ˆ5ˆöŠcxŒŒŸdŽG[vž#Êò)Å Zœaæ ¤æ¤>©¢©%ªʪòª«)¬Å¬­«°ñ°±¼±W²ó²³[´ºµ(Ö·D¸ ¹¹Ÿ¹gº¡º))))))))) 


&     
))))))((((( (((((( ''   %%&ÃÀÑÚÎÛæÜàÝ߀áá³áÉáñá âãâã
ä¥äŸæØçüîŒñôñßò
ó²õ÷öüA`¹˜)·<k=1¸)
Ÿ
œ G ó 
^û¯Lå_Í{¾JÄ62Ül³é9â­l ö p"÷%x(]/Y03Y3"4]5Ž5;6n77¥7 8Ø8Š9ò9™:b;³;¤=?@bB JTc\aeémžv‰~Ci饀DÚC‚Ú‚èƒj„성…Ò‡”ˆáˆS‰y‰ʼn뉫ŠÑŠ«‹¹Œ;½‚Žu§ÎéAÂi‘±’M“é“Ä”œ‘œ¯œ-
ž³¤¥©Ä©«±«é¬µ­¾°à±³³³´™µÛµµ·÷·¸ß¹¿ºŽˆÜÂâÂåÂìÂóÂúÂþÂÃ
ÃÃÃÍ÷×Û ÜšÝ½Þæßáááá“á©á¿áÕáâºâÈâãÚãñã‰ä¶åæƒæˆçðç„èÁñØñ¾òÕòîò—óìóõõÊõœöåùvó!MÝeó¼ìzÃnõ$H
æ
â  9
ä
¥Bö!D}¤ìQ·Øß±Z©âºÆ§ÔùÇãCP Û 8!Ž"&(Ï/=0Ú0ç0$3=3í34¶4s5 5,7175797=7A7E7I7O7U7Z7^7b7f7†7Œ77ë7ñ7“8¸8¾8F9j9p9µ9Ø9€:I;˜;|=‰=Q?W?d?q?ð?ý?@mB5R|ZÀb¾kFtû|â~Tzˆú¶€/Uë,‚|‚“‚¨‚¶ƒу8„S„º„Õ„š…1†@†ˆ¥ˆòˆd‰ЉÖ‰ü‰¼ŠâŠýŠM‹d‹y‹”‹ú‹Œ‡Œ¢Œ $¦óŽfmÇá:Sw}¥«*‘0‘©‘ˑёù‘ÿ‘l’”’š’0“6“¤“̓ғp”§”­”^•‡œ¤œ#@hnÅí󤞢¤©¤Ťí¤ñ¤¢¥©©©­©ª©ª˪Ѫùªÿª”«š«¬¤¬̬Ò¬˜­ž­­°´°аø°ü°—±›±ñɱÒ²ú²³–³œ³µŵûµÙ¶á·¸õ¸
¹‹¹¦¹ºº¨º€»ˆ»Ž»”»š» »¦»®»´»¼»»È»лػ޻ä»ê»ð»ö»ü»¼¼¼¼¼ ¼‚¼ˆ¼޼–¼œ¼¤¼¬¼²¼º¼¼ȼμÖ¼Þ¼ä¼ì¼ô¼ú¼½½½½½½ˆ½޽”½›½¢½©½°½·½¾½Ľ˽ҽٽ߽å½ë½ñ½÷½ý½¾ ¾¾¾¾¾‡¾¾“¾™¾Ÿ¾¥¾«¾±¾·¾½¾þɾϾÕ¾Û¾á¾ç¾í¾ó¾ù¾ÿ¾¿ ¿¿¿¿#¿)¿/¿5¿;¿A¿G¿M¿S¿Y¿_¿e¿k¿q¿w¿}¿ƒ¿‰¿¿•¿›¿¡¿§¿­¿³¿¹¿¿¿Å¿Ë¿ßÂéÂðÂ÷ÂÃÃ
ÃýÑÚËÛãÜÝÝßáá˜á®áÄáÛá
âÍâã÷ã䉿ÂçæîÞñÚòôòœõ÷ùàü+ J£¡&U'¢"

 1 Ý 
Hå6ÏI¢·ÿeÝ|ý¨4®1ÆV®Ö#ÌEV
à Z"á%b(G/C0Ü0ì2C3 4G5x566/777;7?7C7G7M7S7\7`7d7j7Š77¡7ï7ö7¼8Ã8n9u9Ý9„:M;ž;~==U?Y?f?v?ò?@]BJT`\^eæmv„~AVçü}€’€1Øí/‚ƂԃV„Ø„4†͇ˆ߈ôˆQ‰f‰É؉©Š¾Š—‹¥Œ'©öŽ krÌæ?z¨®-‘U‘Αü‘—’3“9“ϓՓs”ª”°”œŒœªœ (kqðö§¤®¤ï¤ô¤ ©«©°©Ϊüª«—««ϬÕ¬›­¡­²°¹°ú°™±Ʊ̱ý²³™³Ÿ³”µȵ°·ä·¸˹«º…»‹»‘»—»»£»«»±»¹»¿»Å»Í»Õ»Û»á»ç»í»ó»ù»ÿ»¼ ¼¼¼¼¼…¼‹¼“¼™¼¡¼©¼¯¼·¼¿¼ż˼Ó¼Û¼á¼é¼ñ¼÷¼ÿ¼½
½½½…½‹½‘½˜½Ÿ½¦½­½´½»½Á½ȽϽÖ½ܽâ½è½î½ô½ú½¾¾ ¾¾¾¾„¾о¾–¾œ¾¢¾¨¾®¾´¾º¾À¾ƾ̾Ò¾ؾÞ¾ä¾ê¾ð¾ö¾ü¾¿¿¿¿¿ ¿&¿,¿2¿8¿>¿D¿J¿P¿V¿\¿b¿h¿n¿t¿z¿€¿†¿Œ¿’¿˜¿ž¿¤¿ª¿°¿¶¿¼¿¿È¿οˆá¥á»áÑáùáÃâëâÃãèãƒäšåøåçèç±ñÏñ§òËòèò†óÙóêôõÂõŒöýfŽÝ q7ÇOݦþÖd¼Xß
:
É
Å p 
Ç
ˆ%Ùv ;pÞ;¡Ï£<çp ÕI©u»ó®yÒ Mäº !€"&†(¿/0~0ä0323Ò3û34l557Ç7x8­809_9Ÿ9Á9g:0;‡;3=†=Ð>a?n?À?ú?‰@iB~Msƒó‰€¯€(Nä
!‚j‚Ž‚£‚¸‚ƒ¤ƒƃH„¡„Ê„f…ø…=†Ù‡žˆëˆ]‰ƒ‰ωõ‰µŠÛŠòŠ;‹_‹t‹‰‹á‹
Œ—ŒðŒrÉŽÿŽ$½Ùô0Lršê‘‘Æ‘î‘M’‰’é’%“…“Á“1”|”œ”?•€œœœºœ8]­â…ž¤¾¤â¤ƒ¥ž©ì©‘ªƪ«é«…¬Á¬­“°ɰí°’±¸±²³²ï²‹³û³ú´ µïµ
À¶¼· ¸ܸ¹¹›¹º†ºº‚áŸáµáËáóá½âåâ¶ãâãåÌå
çàçï¤ñÉñòšòÅòàò­óôÝô
õºõöûùýY}Ðúi*ºBÐÒÉWKÒü2
¼
¸ c 
º
{Ìiþ)hÖ.¾/ÚcŽÍ7œhµë¡lÅëGÖ¬ !z"&€(¹/å/i0Þ03,3Ä3õ34f55o7¦7o8š8'9L99»9Z:#;z;=€=>[?h?§?ô?ƒ@cBŠ~Dj}ꀀ¦€EÛ[‚ˆ‚²‚ƒ•ƒÀƒB„’„Ä„W…‰…Ú…7†Ó‡•ˆâˆT‰z‰Ɖ쉬ŠÒŠìŠ,‹Y‹n‹ƒ‹Ò‹Œ‘ŒáŒc«ŽùŽw´Ðë'C_Û ‚‘³‘Û‘>’v’Ú’v“®“v”‰”0•œ“œ±œ/JžÏµ¤Ϥ©‹©Ý©ª‚ª³ªÛªÚ«¬®¬­€°À°Ú°±¥±²¤²ܲݳë´šµæµ±¶¶·¸ ¸͸ÿ¸¹•¹÷¹—ºŠá§á½áÓáûáÅâíâÇãêã‡äžåüåçìçµñÑñ«òÍòìòŠóÝóîôõÆõöýjá
u;ËSáªÚhÀ\ã>
Í
É t 
Ë
Œ)Ýz=tâ?¥Ñ§@ët¢Ù­y½÷²}Ö.é¿ #!" &ˆ(Á/0½0343×3ý3 4n5˜5„7}8¯859a9¤9Ã9l:5;Œ;U=?Ò?@kB’~RxøŽ€´€-Sé#‚o‚¥‚º‚ƒ©ƒȃ$„J„¦„Ì„k…‘…Û‡£ˆðˆb‰ˆ‰Ô‰ú‰ºŠàŠôŠ@‹a‹v‹‹‹æ‹ Œ™ŒõŒwÜŽ&ÄÞù7Qtœï!‘–‘È‘ð‘R’‹’î’'“Š“ÓS”ž”D•…œ¡œ¿œ =_²äŠžФä䤈¥© ©ñ©–ªȪ𪋫î«Ьì­•°ΰï°”±º±²¸²ñ²³´ÿ´¢µöµŶ¾·¸á¸¹¹¹ º‹ºŸºãä¦ä ægçÙçPè<éBëbëýîñõñsò ósô:õ³õhö÷-ùMù÷üB¸aº*¸=l>2¹*