coloredlogs-7.3/0000775000175000017500000000000013142151044014154 5ustar peterpeter00000000000000coloredlogs-7.3/requirements-tests.txt0000664000175000017500000000014513142146416020607 0ustar peterpeter00000000000000capturer >= 2.2 coverage >= 4.2 mock >= 1.0.1 pytest >= 3.0.3 pytest-cov >= 2.3.1 verboselogs >= 1.7 coloredlogs-7.3/MANIFEST.in0000664000175000017500000000007713142146416015725 0ustar peterpeter00000000000000include *.rst include *.txt include coloredlogs.pth graft docs coloredlogs-7.3/coloredlogs.pth0000664000175000017500000000022113132411543017202 0ustar peterpeter00000000000000import os; exec('try: __import__("coloredlogs").auto_install() if "COLOREDLOGS_AUTO_INSTALL" in os.environ else None\nexcept ImportError: pass') coloredlogs-7.3/setup.cfg0000664000175000017500000000007513142151044015777 0ustar peterpeter00000000000000[wheel] universal = 1 [egg_info] tag_build = tag_date = 0 coloredlogs-7.3/README.rst0000664000175000017500000001730013142146416015653 0ustar peterpeter00000000000000coloredlogs: Colored terminal output for Python's logging module ================================================================ .. image:: https://travis-ci.org/xolox/python-coloredlogs.svg?branch=master :target: https://travis-ci.org/xolox/python-coloredlogs .. image:: https://coveralls.io/repos/xolox/python-coloredlogs/badge.png?branch=master :target: https://coveralls.io/r/xolox/python-coloredlogs?branch=master The `coloredlogs` package enables colored terminal output for Python's logging_ module. The ColoredFormatter_ class inherits from `logging.Formatter`_ and uses `ANSI escape sequences`_ to render your logging messages in color. It uses only standard colors so it should work on any UNIX terminal. It's currently tested on Python 2.6, 2.7, 3.4, 3.5, 3.6 and PyPy. On Windows `coloredlogs` automatically pulls in Colorama_ as a dependency and enables ANSI escape sequence translation using Colorama. Here is a screen shot of the demo that is printed when the command ``coloredlogs --demo`` is executed: .. image:: https://peterodding.com/code/python/coloredlogs/screenshots/terminal.png Note that the screenshot above includes the custom logging level `VERBOSE` defined by my verboselogs_ package: if you install both `coloredlogs` and `verboselogs` it will Just Work (`verboselogs` is of course not required to use `coloredlogs`). .. contents:: :local: Format of log messages ---------------------- The ColoredFormatter_ class supports user defined log formats so you can use any log format you like. The default log format is as follows:: %(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s This log format results in the following output:: 2015-10-23 03:32:22 peter-macbook coloredlogs.demo[30462] DEBUG message with level 'debug' 2015-10-23 03:32:23 peter-macbook coloredlogs.demo[30462] VERBOSE message with level 'verbose' 2015-10-23 03:32:24 peter-macbook coloredlogs.demo[30462] INFO message with level 'info' ... You can customize the log format and styling using environment variables as well as programmatically, please refer to the `online documentation`_ for details. Enabling millisecond precision ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you're switching from `logging.basicConfig()`_ to `coloredlogs.install()`_ you may notice that timestamps no longer include milliseconds. This is because coloredlogs doesn't output milliseconds in timestamps unless you explicitly tell it to. There are two ways to do that: 1. The easy way is to pass the `milliseconds` argument to `coloredlogs.install()`_:: coloredlogs.install(milliseconds=True) 2. Alternatively you can change the log format `to include 'msecs'`_:: %(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s Here's what the call to `coloredlogs.install()`_ would then look like:: coloredlogs.install(fmt='%(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s') Customizing the log format also enables you to change the delimiter that separates seconds from milliseconds (the comma above). Usage ----- Here's an example of how easy it is to get started: .. code-block:: python import coloredlogs, logging # Create a logger object. logger = logging.getLogger(__name__) # By default the install() function installs a handler on the root logger, # this means that log messages from your code and log messages from the # libraries that you use will all show up on the terminal. coloredlogs.install(level='DEBUG') # If you don't want to see log messages from libraries, you can pass a # specific logger object to the install() function. In this case only log # messages originating from that logger will show up on the terminal. coloredlogs.install(level='DEBUG', logger=logger) # Some examples. logger.debug("this is a debugging message") logger.info("this is an informational message") logger.warning("this is a warning message") logger.error("this is an error message") logger.critical("this is a critical message") Colored output from cron ------------------------ When `coloredlogs` is used in a cron_ job, the output that's e-mailed to you by cron won't contain any ANSI escape sequences because `coloredlogs` realizes that it's not attached to an interactive terminal. If you'd like to have colors e-mailed to you by cron there are two ways to make it happen: .. contents:: :local: You can use this feature without using `coloredlogs` in your Python modules, but please note that only normal text, bold text and text with one of the foreground colors black, red, green, yellow, blue, magenta, cyan and white (these are the portable ANSI color codes) are supported. Modifying your crontab ~~~~~~~~~~~~~~~~~~~~~~ Here's an example of a minimal crontab:: MAILTO="your-email-address@here" CONTENT_TYPE="text/html" * * * * * root coloredlogs --to-html your-command The ``coloredlogs`` program is installed when you install the `coloredlogs` Python package. When you execute ``coloredlogs --to-html your-command`` it runs ``your-command`` under the external program ``script`` (you need to have this installed). This makes ``your-command`` think that it's attached to an interactive terminal which means it will output ANSI escape sequences which will then be converted to HTML by the ``coloredlogs`` program. Yes, this is a bit convoluted, but it works great :-) Modifying your Python code ~~~~~~~~~~~~~~~~~~~~~~~~~~ The ColoredCronMailer_ class provides a context manager that automatically enables HTML output when the ``$CONTENT_TYPE`` variable has been correctly set in the crontab. This requires my capturer_ package which you can install using ``pip install 'coloredlogs[cron]'``. The ``[cron]`` extra will pull in capturer_ 2.4 or newer which is required to capture the output while silencing it - otherwise you'd get duplicate output in the emails sent by ``cron``. The context manager can also be used to retroactively silence output that has already been produced, this can be useful to avoid spammy cron jobs that have nothing useful to do but still email their output to the system administrator every few minutes :-). Contact ------- The latest version of `coloredlogs` is available on PyPI_ and GitHub_. The `online documentation`_ is available on Read The Docs. For bug reports please create an issue on GitHub_. If you have questions, suggestions, etc. feel free to send me an e-mail at `peter@peterodding.com`_. License ------- This software is licensed under the `MIT license`_. © 2017 Peter Odding. .. External references: .. _ANSI escape sequences: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors .. _capturer: https://pypi.python.org/pypi/capturer .. _Colorama: https://pypi.python.org/pypi/colorama .. _ColoredCronMailer: https://coloredlogs.readthedocs.io/en/latest/#coloredlogs.converter.ColoredCronMailer .. _ColoredFormatter: https://coloredlogs.readthedocs.io/en/latest/#coloredlogs.ColoredFormatter .. _coloredlogs.install(): https://coloredlogs.readthedocs.io/en/latest/#coloredlogs.install .. _cron: https://en.wikipedia.org/wiki/Cron .. _GitHub: https://github.com/xolox/python-coloredlogs .. _logging.basicConfig(): https://docs.python.org/2/library/logging.html#logging.basicConfig .. _logging.Formatter: https://docs.python.org/2/library/logging.html#logging.Formatter .. _logging: https://docs.python.org/2/library/logging.html .. _MIT license: https://en.wikipedia.org/wiki/MIT_License .. _online documentation: https://coloredlogs.readthedocs.io/ .. _peter@peterodding.com: peter@peterodding.com .. _PyPI: https://pypi.python.org/pypi/coloredlogs .. _to include 'msecs': https://stackoverflow.com/questions/6290739/python-logging-use-milliseconds-in-time-format .. _verboselogs: https://pypi.python.org/pypi/verboselogs coloredlogs-7.3/PKG-INFO0000664000175000017500000002510013142151044015247 0ustar peterpeter00000000000000Metadata-Version: 1.1 Name: coloredlogs Version: 7.3 Summary: Colored terminal output for Python's logging module Home-page: https://coloredlogs.readthedocs.io Author: Peter Odding Author-email: peter@peterodding.com License: UNKNOWN Description: coloredlogs: Colored terminal output for Python's logging module ================================================================ .. image:: https://travis-ci.org/xolox/python-coloredlogs.svg?branch=master :target: https://travis-ci.org/xolox/python-coloredlogs .. image:: https://coveralls.io/repos/xolox/python-coloredlogs/badge.png?branch=master :target: https://coveralls.io/r/xolox/python-coloredlogs?branch=master The `coloredlogs` package enables colored terminal output for Python's logging_ module. The ColoredFormatter_ class inherits from `logging.Formatter`_ and uses `ANSI escape sequences`_ to render your logging messages in color. It uses only standard colors so it should work on any UNIX terminal. It's currently tested on Python 2.6, 2.7, 3.4, 3.5, 3.6 and PyPy. On Windows `coloredlogs` automatically pulls in Colorama_ as a dependency and enables ANSI escape sequence translation using Colorama. Here is a screen shot of the demo that is printed when the command ``coloredlogs --demo`` is executed: .. image:: https://peterodding.com/code/python/coloredlogs/screenshots/terminal.png Note that the screenshot above includes the custom logging level `VERBOSE` defined by my verboselogs_ package: if you install both `coloredlogs` and `verboselogs` it will Just Work (`verboselogs` is of course not required to use `coloredlogs`). .. contents:: :local: Format of log messages ---------------------- The ColoredFormatter_ class supports user defined log formats so you can use any log format you like. The default log format is as follows:: %(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s This log format results in the following output:: 2015-10-23 03:32:22 peter-macbook coloredlogs.demo[30462] DEBUG message with level 'debug' 2015-10-23 03:32:23 peter-macbook coloredlogs.demo[30462] VERBOSE message with level 'verbose' 2015-10-23 03:32:24 peter-macbook coloredlogs.demo[30462] INFO message with level 'info' ... You can customize the log format and styling using environment variables as well as programmatically, please refer to the `online documentation`_ for details. Enabling millisecond precision ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you're switching from `logging.basicConfig()`_ to `coloredlogs.install()`_ you may notice that timestamps no longer include milliseconds. This is because coloredlogs doesn't output milliseconds in timestamps unless you explicitly tell it to. There are two ways to do that: 1. The easy way is to pass the `milliseconds` argument to `coloredlogs.install()`_:: coloredlogs.install(milliseconds=True) 2. Alternatively you can change the log format `to include 'msecs'`_:: %(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s Here's what the call to `coloredlogs.install()`_ would then look like:: coloredlogs.install(fmt='%(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s') Customizing the log format also enables you to change the delimiter that separates seconds from milliseconds (the comma above). Usage ----- Here's an example of how easy it is to get started: .. code-block:: python import coloredlogs, logging # Create a logger object. logger = logging.getLogger(__name__) # By default the install() function installs a handler on the root logger, # this means that log messages from your code and log messages from the # libraries that you use will all show up on the terminal. coloredlogs.install(level='DEBUG') # If you don't want to see log messages from libraries, you can pass a # specific logger object to the install() function. In this case only log # messages originating from that logger will show up on the terminal. coloredlogs.install(level='DEBUG', logger=logger) # Some examples. logger.debug("this is a debugging message") logger.info("this is an informational message") logger.warning("this is a warning message") logger.error("this is an error message") logger.critical("this is a critical message") Colored output from cron ------------------------ When `coloredlogs` is used in a cron_ job, the output that's e-mailed to you by cron won't contain any ANSI escape sequences because `coloredlogs` realizes that it's not attached to an interactive terminal. If you'd like to have colors e-mailed to you by cron there are two ways to make it happen: .. contents:: :local: You can use this feature without using `coloredlogs` in your Python modules, but please note that only normal text, bold text and text with one of the foreground colors black, red, green, yellow, blue, magenta, cyan and white (these are the portable ANSI color codes) are supported. Modifying your crontab ~~~~~~~~~~~~~~~~~~~~~~ Here's an example of a minimal crontab:: MAILTO="your-email-address@here" CONTENT_TYPE="text/html" * * * * * root coloredlogs --to-html your-command The ``coloredlogs`` program is installed when you install the `coloredlogs` Python package. When you execute ``coloredlogs --to-html your-command`` it runs ``your-command`` under the external program ``script`` (you need to have this installed). This makes ``your-command`` think that it's attached to an interactive terminal which means it will output ANSI escape sequences which will then be converted to HTML by the ``coloredlogs`` program. Yes, this is a bit convoluted, but it works great :-) Modifying your Python code ~~~~~~~~~~~~~~~~~~~~~~~~~~ The ColoredCronMailer_ class provides a context manager that automatically enables HTML output when the ``$CONTENT_TYPE`` variable has been correctly set in the crontab. This requires my capturer_ package which you can install using ``pip install 'coloredlogs[cron]'``. The ``[cron]`` extra will pull in capturer_ 2.4 or newer which is required to capture the output while silencing it - otherwise you'd get duplicate output in the emails sent by ``cron``. The context manager can also be used to retroactively silence output that has already been produced, this can be useful to avoid spammy cron jobs that have nothing useful to do but still email their output to the system administrator every few minutes :-). Contact ------- The latest version of `coloredlogs` is available on PyPI_ and GitHub_. The `online documentation`_ is available on Read The Docs. For bug reports please create an issue on GitHub_. If you have questions, suggestions, etc. feel free to send me an e-mail at `peter@peterodding.com`_. License ------- This software is licensed under the `MIT license`_. © 2017 Peter Odding. .. External references: .. _ANSI escape sequences: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors .. _capturer: https://pypi.python.org/pypi/capturer .. _Colorama: https://pypi.python.org/pypi/colorama .. _ColoredCronMailer: https://coloredlogs.readthedocs.io/en/latest/#coloredlogs.converter.ColoredCronMailer .. _ColoredFormatter: https://coloredlogs.readthedocs.io/en/latest/#coloredlogs.ColoredFormatter .. _coloredlogs.install(): https://coloredlogs.readthedocs.io/en/latest/#coloredlogs.install .. _cron: https://en.wikipedia.org/wiki/Cron .. _GitHub: https://github.com/xolox/python-coloredlogs .. _logging.basicConfig(): https://docs.python.org/2/library/logging.html#logging.basicConfig .. _logging.Formatter: https://docs.python.org/2/library/logging.html#logging.Formatter .. _logging: https://docs.python.org/2/library/logging.html .. _MIT license: https://en.wikipedia.org/wiki/MIT_License .. _online documentation: https://coloredlogs.readthedocs.io/ .. _peter@peterodding.com: peter@peterodding.com .. _PyPI: https://pypi.python.org/pypi/coloredlogs .. _to include 'msecs': https://stackoverflow.com/questions/6290739/python-logging-use-milliseconds-in-time-format .. _verboselogs: https://pypi.python.org/pypi/verboselogs Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: POSIX Classifier: Operating System :: Unix Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces Classifier: Topic :: Software Development Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Software Development :: User Interfaces Classifier: Topic :: System Classifier: Topic :: System :: Console Fonts Classifier: Topic :: System :: Logging Classifier: Topic :: System :: Systems Administration Classifier: Topic :: Terminals coloredlogs-7.3/requirements.txt0000664000175000017500000000002513132200424017431 0ustar peterpeter00000000000000humanfriendly >= 3.2 coloredlogs-7.3/requirements-checks.txt0000664000175000017500000000015513055423327020710 0ustar peterpeter00000000000000# Python packages required to run `make check'. flake8 >= 2.6.0 flake8-docstrings >= 0.2.8 pyflakes >= 1.2.3 coloredlogs-7.3/docs/0000775000175000017500000000000013142151044015104 5ustar peterpeter00000000000000coloredlogs-7.3/docs/images/0000775000175000017500000000000013142151044016351 5ustar peterpeter00000000000000coloredlogs-7.3/docs/images/custom-log-format.png0000664000175000017500000026002013055423327022447 0ustar peterpeter00000000000000PNG  IHDRM_4ۥAsRGBbKGDC pHYs  tIME  F IDATxw\^^)'b$vŎX1F3%MDŮ * ;\ݝGb|?| 3潙ffg0 `0 `0 `0 `0 `0 `0 `0 `>D-!w,&6_7|ÒK`ԇ,t lIy>AG]l4Մe0} B䰳kZ*.;Qe?;PNU.Ǫ8tjRVڔgD^5تh~s~Z]߲jDOhm˃w !Ĕ:]Jl̉|W(n6KBL봝h>BE{jWn[PNU[1j;#t4?[}X8Gˮ蟞cy?#ThmC)fL~G'sL~Oc398iqO ڗ X\ ~ICX K :h_]B4‡\Se2' H&Ήoj0&!(de -QmPl?B9IV#0@5mT q5>vCyNCY=\̵I#xYgdPhTw %hZ_li4X4jy;^Y|]4Pz?T fXKSm)@a(蟟cI-skCjq}#ElolK;e6hK>}' /kꭍMis|{`[L\BLI#æ`8fQ/&er@nj,:/lN|hTi6vȉ̖Z$W OiT9AkLfTsu +X /I ORR$j=KF R 2a[q?.ǩ[_N.o/=q;"pۭR^!Ʈ+Eo[-f}1b\|Q72666bFƕ* 3zqmKy:vՅտ^Nݕk79/[WSA7%R)4;&O?cҪg Z&{WJbnj='Ì^[EZUXکK-`[z[2+ގzQXǐfD踘pڜ ˥ߡiy&B)abРʟd=>PX{dNw9İYqonuӸ6HA.33GO}tPlo{7cuAUg?=KԪɋn䯳mR/En />}i/_gyS2PM{VNyiw1"+_{BpIA~di~M ԧ: O) =GMK<۬,iFt&eKqri>`6Rp[kkT^6*:P1=yqok Ğ+@lК$ТYsDUNO5vWluO˫1 _Ԉ˫Qȼr ?e/e>D]%76/;gung;pue|vvȶu{d׌kU"ĵGײS} 3es845ru#BlV煬ݑf[55ڢr)Ն*){#ο/\cU6X;aSHidQ󵡼*|}> 7_Z:VQg3~N!6FCs>A~vkBp/tʹtm: O3ҵҵұa"oHQ妆<l ac'ƻ ${썉8[hhp6':9A>'jsv |#F wN~2ŷCBd(swaC(y! erAwHw'HiOo {ϩU9Qg5)BMz.Q;Vx?7~U+F~[4B&-ʨ6( }#cccc#m1h"BIVۣxR))mD"$ `\!MF@ vCDW>1"Fz<_Q~f=%ov#P.!yzF cFZP}7<,B۾ޟ KYf,77>PD'AvE/rdwTTF덜cCl#wqj7U TjK7{r*+KSoU z̕r6ÏIRҢFʴV)3iR26H jαٔ +|T۫4Uy *D4J4 |T/y 驅IZZ@Л鈤"l`;A]]'HKӣӢӢK2ST䭡Tx|1 IVy~D$ǡ\Xe> ПE(XɌ6UsNçXj?\. a2 HL <yDjx5&c3gJĵ"TX`lJ0iEUCLnAd rt1Ŭ)y஁N |9ĺ<Ҹ:^JY,"]퀁NjQ|*s;-"s6Yzaʀf@-L=j9\xbB<کV0*<8jg@^ɳ2)=$Rw(v'@'rsss5.= /#O3VNs,qm<,')hvA=mpݖX[2.n5q=݈uגcyZRC*QրrkH9Cl'wӴS'^*\G4Pth{-[rꭼ܆{s M\E_/9tm 5uJT&ݺYg#H*"^?fDe,rkO{/Oi^7N=pij֟_MW2ik2+QDʕ\Y/czd%t ! (]'fT:#ATl|8@/2nj,=%Yn-䚛V i?j6d)Nnp2a>l|j[OZ&QmaiVr\HJŭ;;gמM l;pWg-# UB;t+r8` ->$XCk!꼘ɱ||"^,3Godʓ޺?i4^,{zg?X݊R5~3ZIHӯc mˉb0aY7RTXn0ǥ(Y~\TD7h YY˽ۼ+<_“A@\7ֆRI Y%m t(%qI=Z m<)C+]YTmN) m:|G[1bx8<7OXZ1|F §m^Ot(?6(sFyFAejAZH^vg+wꇳ$7L\hQYcbVC8Ra>4OS(-3֭ wW-Ő֩r$)h0 RqÌi8mɯ49K%ii֝kaL> =2Mِͦ} +d _lγm 񓋱&EW=[  rj޷!X@_-=xOs>U+ԫгoE,UkիwvKqic7u﫜̧?ǏZ+7{<qu{^Y@Ar .NˑjS^a6&/SmC -/ k3~i@X:v z6hE JԹJinFd|ÖSΥ#+V=X6eμUkMG&$U:D{dmwAYi`7gȪH_'v@ɹ嗷T5soeΐ|h2hTt+v&͢{w4Ѫ-}G$[4Z$W-1yW9 n0xPfh7|Ҝ~-;ƶ}; >ҵ1e$JE/=^Mҏ2joZ3J2Cl ) sԬ+}S5do_*7'Z8՝zjs1Nv҆r ۮg' Y֝ M90|!$l )q>{4^lsznei;(pVǑ#Wo-&Tfz\҅(;Mno#ڠLg4sh;^G"-kN\^N0Ns nR(E!ZG*܂JGTiߐ=wzn~p;fېAsL]wdj#̿[)>L9uGyucP `)?{2wtd׹X[kǤ`-nFT_6$o77}vx{1bbspա+s;ir$~<25?]:urOQcP˴ӃA~hgUim~g }|cf_;+]ZA޽,}H/4 lT !$+Lq8?`΍q08*85\Sq4#U|4y] li{N !n PC%ˇa~ȑ!PI+LY{o)`BtqJu,+,;)BήfS8+>AE^jS$Ƞ&!>=7V!*/U|}^|!BG86#V4HMȋ[ftT\6$zJ. iki->ҷ ;]XuZP|Oq56Wh^ir¥й4=>uBҔ+tjv߽BHKzgnYsP? U|Ű2Zgco!z8a\c\>'KƧ&6#P]ฯ|TKo g)jS{>ۤ08Ӂ\ˌP|?'z _8) 0OmFNoB)FYspȽ W?k7VmwH{&BO[Za1`0m}r[766A 'EPɃg?80tlKn XJG5hkxk0軰2Q'yzvQsaو2'q-JE!n!s0x?{qݭu^_2SrB?d~v2]6jtGܡQI}1kzЂ E%oHmi [ȃc0H;>D1xhD9V+~uʚ4R숗&k l|OcҚOhtWݓGgml+)ϧۈ:cά=m 8 ʈv|?/f#6`0 `0 `0 `0 `0 `0 `0 `0 `2dSwF>{XrG}޲MZ :bنګ3貤ըvҤi#2k%b0 )76f$7! t ڪ̘MSO>a0 `03_-R@_'VzxGK12vo0 `0 l^f>_z|ݩ,Av_4YL=YxY{TomlJ `0 $Ωy: hj}rw@O;$KtX<- y,NPXζaXkC`ASpJz|bHڙ~Y,D˼{9:995q_+LǪV]=[ltJ5mLz3F,^66z w]c H?*2YfjGմVyjv!:maoaLt ~U !T?qBs!}uխMi^.r c6裴rPwN+AH}~fuL v݌+dBN;vcUNɨT_IBI #ί /)ooúgG a.3O&J錳Sl="y!dK`0 Sϭڂo:XJ ˝9/~qO1@Z]βk.X#F(ϏU:Zc=&,MD,/SS~uNy ۢ0搵}5r<ͮ p@3„dV Sr)wgjDS(%쌼{h1Z6-Xh{β;Sޝ\a߭o,pŜ޼^BЯ P*RZ2e>D%S$&6M9QFuBbef'1yij3>˯^|b0 mZY XomOih4 h1`~gWJ9".M_`i6^^^:6,T䅪)M y@|Ʈ/OwųIq6mNfus}FOpxKSwa<.  6htt,˫M* Ï f1cWbb< hKEjH}? y+$$.Y̳3?n!HOϗ"yp1U,e7!谯ܹUgw\^gn l2b?I[_ !!ʝhb^`rKJ' *4;RkT*J;WГre=;!TjK7{r*+KSoU zUC-b0 4lKϮxoelknZ5_%Sc"HSTJQWRPDI}tҘo1N.ղvSJeɨv'2o|iIP١܋%tI\TR)Օ=#UbY`0 F8wH)*-,/fT'[>f Zy,r?S[3#bwBvJf(6'sezU%iPln#$lkU(DM d)QY,O8Ra>],:+\~ =2Mgߒ IyGb)$t%"9. QVd4 hGuJfJڎ->ֱvqUghN*tEY?a0 4ض-YtrPIqLMrNLWL"VVF+;oN[%#b.ˌO,U['0Ag=h_a2YrHg@hp6PE0# kn04gAf~R4Չ=qKX}ewOma竑],WZ!~a5ofV#+Vβ(=vCM- LK}~ELc';DxMiʰʋge_R(e޴B AT}^L\*z6`0 isM8;Rew>#@c)I^+= n楥ѤF_PiL/A7oiѺ\꼍ᛖqdN~9quʻ߄AߞNQ[,)76q҂v˷O(Ye٩˩&I>$E q;fPPk׬e+>-ygbO6,f!OL-ٺnEiOol wRn﫾?NleS6XLS$R yފ #n ;jUq]U}=E6`0 Q W>%LA{&BO[.`0 3a0mˈεRL.`qW `0 06}^^`0  惤μ3+p肍p@ym?^ws0 `0 `0 `0 `0 `0 `0 `0 `0 `h eܐ~YͻyʧjH}fuoVn<[-g%L9 jg\ﳟRaޅ#.@OgqU!P> 4&j$g=ܠcT]Fvt* p\(VG6R:R5\7} i@xrT.SAM{*J&誅%+z$"`v!;`i>;b G`F^ mb}<i%FohgkKZSWRRUݕ0~$)-Ef瑧 i*f JʯYvI˟{G}d}Z SsT#GO7kbaI °3eՃEC~ #E@h^Y([ ƽ(y^YdB@V+27Z~3HĈjhJJV!U kG꠬Li>"MH~F&] J^uhTjX%W7OzN YR<)x&ݠEa;hQky2pDB7~B5e P$T$Ç!ʌ`08GZej 멍!-YIe4%ʯ_F*6>#mMr<1 l s<"!,IT+yx:vM[ҜYS"Қ0cB@ǓL*B6~Bx:AaJJ&MTHE7u$_.R5\/pYvFo^ŷZX2pBidawP4уo< c#hpRwʞ0E! [tUFR5mHO(KWCAɤIT+(¨7އ7Vڠ׍142IyCT~\~}=#F`2/G~VV@2#!l??_׍t"e @蒾_LeܠߞԬhEX` i"wӄngֶE6ܛ3\ Z^gMĢDFaPi63cS , %H}G"(,|&6HYS=WPU걩*ԕ1,NH0)Iy=*ZMpkcJQ+CҩT\ US({@?OCAN -h03xdΔp{=:0Q^r1 9:]kF>y7!tw|QG[i:[ɱ]rfp6,χIlR@Wyʍ4BIꗄ Isb)lzNu''gc͝hי~۝: ?$z K}P2xU9׵[WˉUIFV;>VdۿI1]fwvqZO=e5?/ۙl'sM@i]ǓB %X$Hz%tF91"HkKҺ?zEԲ8eR)ioeډJ?)d"ѥVza'P:_5ټI{8!/wCN4;"5p:lP;J/+PLӟ2%ϩʒ4@Qy账S5(o!K~S8MȣwTqEdiL*%RHM.]Ei B_@#ˆ1"0؍#51k6byvjA^]^PYt8IݺtI^LB& M2iEUR|DzbZ+lʴ|LQ٫hĐ"+ioEǨDye`0?6;٥PibJYhE+I2r ^XX[@P5BSiȊsR`d¬bDq`q'#*.q1KXɱOhFC&ɖnR9#$m'JT'@ amp*3/3YI`kJ j KWi* ICr.~,j 1,?H/qr`)[1,r$HޔHʣپn%]>e=K_ݹ"P)ioU? cCv+YSXyFIRYo5Z+ˆtt $!8|D#+mh8 `_ s!Y2Iw]e8 -lxT.$Rא@Љ(9Cք4)0 lyDK+ӋIޤHv6d^g$|][0~+] (n`0L[si1iQ@WH&@}9^ѝtN]w-K^plbc6ILxqM%!`0Sbp{dYSnKwgݹt<ٝ癙Z1@x]w-fH[aaDV <5|G7m/5-_yPߖs&FmNry`TȸUC ҙr/'rH@̤MN4XJݳ*9W!:E=Lx^?gYw &'pi|w(=TxSƫ:BU._2 S%=?GgP8Q-aUKHf1"MpA#:Jk1XUn$7 DFE$ ')A7uIJ +PBu|MZ8ڂ<dCwg BܸqΠDh2:@06w\e2{$D eРconn0iJp"InΙtzI gV&~ZJĤ%XcgaeixogwVyҹǩ鳐P\Դeint!g1_\fbŢ uw6@|ѴV t6 q8i25ThQ7ϱM2ቫ@"Hn!m-kQh p+ `m bqX͌J.ul,VM& k ½8i6llD7ʼnX=G]} t8&\6-ܑK vn( '/qd$N}3ma8K ?66CDyU.BPn8Ɍv*)h꛲&3g$NĂiМ)8[lsÿI;='8CSkQqLp_n/!km+/RF8!*R& l6>=&_w::+46O8J t|~ԬiY "pt՞-p]ӋK1}N2QAY׈w@ @!K>2I4vPκIĈ(TWN#ddg03fXO8l Q;mμ[F^_#f8A |vɫ-&s͠45i<=h[{%=hC7(ir-f2fLL\G?ZL{2'i@!.ܧwplMXHr' DVԃ(* r\mEsrػo!Z+uvفl:3.WQw,߉NtB֟K'1=y/8%4|dZ Q\ނlX%E <—}Ya9 gf5}% r B\gDoY(%i731Qnh5x#7mB\UB׈n}O4**A=BPnx}2RD7H]#o 3bp(?#BѩQ3Rउx}UB{Bjê[nWBUueE\ C鈒bBb& J9}(P(O8B6<6錄]o[k8hR(~.O G r1Mx` 9 BP( BP( BP( BP( BP( BP( BP( BP( bϮRW߼2G79!Pz>ʞmJRsvo/5U)4Ts 7r_ 0œ}iA}έ%[b67W2 eTsRb.V_ Bq$ w @ Hq|Eq:4,NJ"B?"BF1vɪ@p @@5OV/jiEtKW3GKP(9}o(f7Jvusf_wDƁgMg={*5DR3"Y<%] z{h}xܛF WY4۶k2~5xʤۧ(Osgt4gFOtؽ鴥.$ 7-cbfDеuV^8P7+eN3mld {Wmiվ#^O}`3]h)dkEx8ǫU 2'+5X'd ALqVݭ&g*~h$0zJ\ J}JG.UZ|z/gO뺸e3;K5u󟎉jwCƬT$%Å-.zn2ĄTM\e1`uʴGn"eQ(5 &iTSTC7pzjGh7GȂ-%:,geܱSNV%*c5Yb # F1RГKn?'8Xuj:?xJpb_]?)P6yI/^hvT] [RrXǴ4_(2!:5e|^< Eg$j-bEFKUrxus _)CoA/{**℄МQ#eZ'JXáٿOJZv4[y1㟓 $t˃P+˅¤%";xJrRR0vBS)ԬhAwTJG؝U"mF;D'C. $FvԘ jB[]P[飪tn?ᐱyҸ+{jxs+͵5}/ ).T߿)^(nRɯ+! g~,D1wb\窭pqv_$i Ə z9n85 ܹj|`ǧ<|G.kt+]yKRsk\PGՖ73aQ W aM6H!"ԟB"1QǩpRR[UnN-ן f_\ڄ#8EM4"+9R zqE+fzƼʷ{'%(')l)/}ɛ+J2:Ăk5s78Ĥ`gK$3zĨNʊ+}!9=ѱ[ա8 P&%05QPctrD'PYKո yo(Ws{U~W:5>s. ^OOWm3踭Xk˪ĄCdŝV'pM_"چaZy ; UQwƇV4l{Ό 5 ]޶z—02lW}gp،5q+@Q˒?ŏ{8jCs'jR( Oq ?j&@5u-Q && :x1M@FklTsA!kpkmF'.mQ0u󈕈O^D'(L/8@239+v9:ѓYX|P3h<&;{h5#9G֣PV^v,Ux77 IDAT˵}'^6J:esƒƍ\I頗QH3a;_@!UJ7)͟c/:.Ɋ8rc79__g w-@UqEQpE':ڳV× Ə]WW#٧r4D$T}Yz75g9V+tfX PgHEky#ݷxb"cS:a<mˎ6aRqTXv& O?RBMC*7O]+:֤=!-”UtQ.gxֈ䫵١tX|s<`,.NNDG9~EP(9]'7}6a0AP-(D %vյG;lE:w'Yp%;>,εu`.̓"QtRmI#iVrjbzY`m*f;VھZRkc b? zB 6+D ܕl1!v5W'Kq*^W(O#<pCD*9SttP#zMi+L>Y+7?mWZ.o_;~e^"46 0EmioPZ❛b DCӦ-gUm/=e鹱ܥJCZw 9П4Y G@,ΎցF0U9`4Lw'B8*gX"8]4\ .Qȫkǐ/cg宣)leg!|o0E2 C 3 Bᑨ;h|阨iʋ:4W4i6jUtz pBmvdϷ@:3)~ k{cwdje8:<9^h}W?q˷|rC7Uj&<72e=ٻ>(H9K9a{AcT4"bv@x*7})0Hz~M?XC^[ԗtDόF]߷Y}W| =de {3vcV B㜡8u@k*aw]`w^]2tσ!x$`g7HTtt&bO•V3(C"M*hrܥ3|1iy0׹.?cUu;{첕vi 1-ɽ=Xvl k|Fymn;4 j뽒~}WPԞ&k-FBfMj*T(znսa{ jKg-p:# p e0:ҬX5LR+mVb+ .q`l^`1fcr,+sqQ`=ƁZ\#"ht<@Ag'P넙hPPcQ+ B$Gϙ8V ‰%FIh0o KxuU@p:+%9S$ [Nix$'H)~`*5-+ SSӥ-iһܦ(\Sߞ,4I .HAHŎA8&i XJ9KH<`o8ɚ`$ >zY宾ĊAMBsV+#՝ϲrZ- d<_,Uv;H%#U XsZ5Z Rb5#(-~ V @9=$$M]tK zkA ]V ¦u.6y9s[Xδ;?&ϓm{W'|wïU(~Mk[b-Ҷ,,waqYhԴ=jEP(z,}| pa237.Vb-V|FZwj_^EAq[EEIls3*( <&,L[:j˜5g̵UHpj{:hz. =ӱI(P@@9Ua|].,tX r6-捼 Dрp@ V!\Vբ j-'NDaU6by9j5!ӢT"4'&-J; +Hû|)ʓ=O4N2梦-+ft!g_Zy\'u(t4484 &Og;q@Q: ̏JC1MK4eyZׁ b3ɓ"|Y쌌[lIrl{5'+}GbBb.G}+olT&t2%/b&fsafv¢$yqL`|&(r|Lw1]^՗LǹQ3Ccn \?Dh[54AGNLtx#C{Kq6rHe#cEs9}W( kda u;43g$NĂiМ)8[fEsRNZT}"k\{ŗ$$fm˺No7[릤OWa] M(ظ8J t|~ԬiY "pt՞-p]ӋKgk}-wu򜕹 ʺF^V+\ @,B8*&q>#GP6_ugÿ8ɿZs'ƃ| 6KX(_>gޭU#ha3p pp;N+O: ZISӃW҃V>K ^En^wjl!N{Džz^\>.NkJRJLVUpaT@]ΊW=!W. wVjBu =e8mr\~-![\YJ=.~2R|WB2&;;3ct強-\|j"':5JQM;{ƒ_4Uhx'}BP(^VP( '#,Id}HDpy*1R)\-F,ngX05$CQ!`g) B9ʇUݼvʊW BgZLSSb8Q`2sfc.P( 'p~!|tFRծ7BWӎf5fIf oJwoH&R6n~iP( BP( BP( BP( BP( BP( BP( BP( BP( aϮRW߼2G79!Pz>gVR_w]_9?BC;Ip5HV/ UҋVa( އEfz_WEigc絉0]?'HƎsQ.Ti9r=W%哞}n"[ɳ_t* B\8NGG B8i vgDCY'AGZB]! Z.gOV`DlrB'~=YܫoeYR1 rnKK K'^8ld8%T}VQ( r38b L ∸w,X~>6c^JpK,X~_.yhYZu$e2I`qD&'c^xX|] ]|O u/sD=_.{j٨`Fe/87] (dX5DA7M~[7_97>Z2ݝ vW`rDVkPO88계 Ѫr$Xy1J\ J]/-Qf)gEP/h8`5x 1qn-Q~Y䛾'^A-7c(f3ҘB\_f~4;{J;Bڂo~;9y ˏYH?~,:dC sNx,!'x[!'R3UW8&=|_aMoMt<4<""B)gDAa=>,u埾0k;LC7 :B6Iv{~4G1RX4sB;%QتÄ75_ޓ3(Q89<﹏wv'!וy( r8#X8%¨S&-dqE%jk8.ȟqg(iyϼw֤ f[4??|U˹>0iiPdLmM#Rol7CtjycJI8ZjŊv].7-;Hy& v4f$$r5ؠIϚ&-%U{Z؉y? R{ uKղOV49f p+I@DRC=P*6N} $ E,"Q dl-P'}f`QdކI9E+jr@qQE%OJ$g)R*Q*xZvT"J(oϢL n{-[TT}{߳svFӳ~3#<+Rq^:g`bKs"GeN8:R`O u秧z [}"{Rm緾ԥ>Ϊaᴥfln%(7m퐪ԜP_wHBnzEȔJg=wA훅Q+vuu!|iz/7>}\TV?񽾷{/־cju8*?|E^QKzdwc{8};!CNƆbg^8 ]'?8}sri0CZEP( jB[]P[飪tn?ᐱyҸ+-onp܅1:%k#2MߦCv b18.s-B)$8q - o*59Y妾=q$т{z绵B'^ں)6NQ;AJ gH 3y,)#N9JXΌOu^G3مo<՚c<Ǜ>OeWE7wg]5oȲVΒn߿pʎZUQ -$Y9(t_g:w_G?h#[/~x\Kվ*ogo&/g޻`VC,/GwJQ/~٢j;=?|ߗ9ZEP(<b[1dĤT]05 Bu:jQV=5$s{mm->m1 ;g]&NPlmٙ^pq`efr{yϺ{?\ Bt㜮i#-^>BxeqWu>-gE,*;`h:Ex$N -izhbÔ:JP Q@LY64 KMel|NJW۷[Kjm~ rDb'B\QAC[Ć[x9`XHӊ|ʼnq S,;\QxsԷ7$?:%^`aʸ&OVy,wJKr{Nh'Yh1V`{'wկ C3r[y`ܱ@`OOIcO<{R`sqC[߾v}ώtBpCZsY(ٺq'^_sóoͲ2_]1":i,/'<'` :;Ƨ-?GU G.Z:\՟oFUgDRqq 4X-ܝ: IDATs( ' To:D`/qP?%]ȫkǐ/cg宣)leH:paNe/f@d#Qw}1Qum9'hhl ;@ 6O\u88 #Y 179`)v޿G<<\}H0I\cCVޗ{EJ9& $˫#KQzJӻGӽHWuٓW⠼8]J6<~ܳ6ą \ `kLE I[\T%Nlܯ7>\Ӹ's,v~ ߦFCD3#Q=tzI ÀcUu;{첕vi 1-ɽ=Xvl k./I*90UW\JT(Pޛ,AJ:؛N 8WOLUqOk`w;I8g(~(6 XBqY8|hުa;,q3یцM%pRc_9Np@0i XJ9KH<@eq5H|~}]}3؅f_rWnF;E3eGE[LHnZ{FbDrHnwI4￞< Fd͇7G=D=rg :rH eoq`[' ᄎ/KܻMgd9׸jn錗N iNnh]VyU7|<ѹϪ]kuC5t,poZ`Ŏ?oWB'_]( a9)ÅܸXh[Ebkݽ9~i{mv%)> ֺZ 7zɔuMQ:ZmeګRr5ez04eXyb/y6eyshhr0mܫa<_/s֜3׆W]hv#UsEڪfS@ms䭘dv_u TPbE@wo7a;_Ưa Dˡy#08z4 D@,Ճrhhˉ0QXB7qz/79j5!ӢT"4'&-J; +Hû|jYI8Br@sQӖ3J׊?_Ʊ3立AS&! z%hwgm_^{-("&Ҹ4Z;CS[rw3oWf',Wxoވdyq^|oGMcJyضwݐuVUX4E0Se:c“1 bwMww3.c?lJ1$m-Ӛ~=bmw:xpfOݫ _c+nnokArJ0Щ}O#GP6_u{2L&)Yv;ϵ3p.b%||kWvϙwkk$| 'D/757ʓνXͤIA+A+r4ofobA0m\nq}wqݕgaL"ۗO]#F8.Ev;QZ̝1PVP( ӎs$m=y_ Uz=qɯ* G$?'%}s Vi䕏?]Y5/'jQ( sG ޝA8TմcY:x Gtg87\^WWTuÖsFCP( BP( BP( BP( BP( BP( BP( BP( BP(O?"J]}ʸK~ݼ@=l1mS?eagMKo:WbC\ֳo}Zg @1Su> F hOLG IER8ob2ّ ~T]GNBfuYrsZ?>\X5JҙE82 I1Ww\] xٞnQҍV#9Q񔼡.p(~6"@';`J?^?-/C O-xcZEP(FRɂ^Mgߐ#ZM;:8rƼ&vnIp$3E]^*zðJz #^!4B t~ZϢH!F :+q%<t,@ 6 8o1P(@]K]T dM8v۵8zc#Q8,:r wBBΐ)`Uw3\ EsC| _|=iΕ6\q*_kε뫾$N ]xt [\/VI/Za9s$2s@w|\ŹsVwɲdIdr7ƽbjc:!@!$B!$7$$ ;@l;Ƹ˲l*Vu%j9g?wmJ+w#k43L;GJ\y=~Zz/2/g3R,(FM_V1 sHo}Ń~˘O. rH(ҩE+t;VȪP'Z=Mܹ̈́*z/VH2nm#9g䠆v *`9:XL^,w`:JwƊ dFqڹDԉ"Ep NTr݊z^|UwMmӁWOIҋh3,*)9~q-+s'^>WGNǭv:PoƲEeбwG" s$Ww[WEeC>Ħ hʛ?eԸ8Gݟշ>z3^o){esykN.KKJpRpn-RO9])W x?*%sqދN"F4pjz$bN*=GOi8hbVȝ@Bq]a(n)ށ|QqہlGW4ܿsZej0TUO+qJG7mm\֡0v-?X5<<|σ.y npxp'( Νګpd7s# AW07=0flyz{i~c*x(j/6? k5DJ< S_=(zl_G->:_l`08C%ޱ6+‘=/|z[)kŶC+¹F_-kC⻗(Xz皥??|VR+-YXʷ4.͚lKco"!;kĩ365R;g-g}]rF EҘy3] *v911->;ð猨`%+Rh˙ʝ-nM\Ҝ_zɍ>yrS m@OrM;B": B7 r% !&ʁ&i28Z"zw Ā{op֦'}∷_X06J s8b{j ֬](| np1VFCU*]9@{#(ޭ 3/y#B %s օY=ժԅ]~tEǯZl*{፲Vڳ^yՄ-5m׈\ԙk&KET .VQ[=tH(jjs= LK `:7o6p{Yeʹ8h'5#yr˞iy1,O~US X~flajVgu]3Hڽbf"T@Q h3for[7IrZ"ppο-J"j!)\j2SU*犫Nw*_qjz(mJg\V d%{ycCz9.pk>}u)rۏ#;U4LixtjŃ `/°i f~QA aNA/}/y= d{|J?E(8'\*j9HԢ҈aǔ90ntc Mӊ'~ R7zP64;b£7ࣿE^YQjہ7˰i&㣞O_pU8[~tV}oG:Z8g8K*`\qsEoiRZ]ׂD(3'khÑp8ں&T[ۻťH5bP;4Ef/9xlUvA+jxrᔽ]š&IrY{$.*/3+v9FHa 2X/  {x58W("85(=g^}U~~r4ԣeCgNxs*ϋ}y|0}*m|V:S귧 .NN8+:NH Hw\\-DG Wo.@4₢ "R*Gnti"`H咯 _uiu`F$qJC(%D_O?{(EDDSb(݆L[PF0g5~p@.` <y7b_bTkAtw[\k TuT4ET$vF<<8@;Ѯ8Qr0 8p}k^K/a ZoX}hE9e>v~ s;;B*LqJOx(Cϑat6]̵`0/uc;yh{2LIa$u"~sA;1xvgcq >{ʟ{@tFs'f0a<4?'GG5;>X-ݾk>G<3vctgjn oRO)AԯjFsguҖ-Rq83KMA"+YvϞD \cGGꏸDŽRS_HVwJ#Og,%s SzrO(?xޘP@~@)! <-;>܇q2]%0/JNن3Ii@t*Jm: @v 2 g'`!&6`2xv/E *F$P{In\IPFT0aP@3vBA]gzQKWO|t`0 ƗgFg!] gE?NqN *acPw'ztN*K0Éf=va}"+BEQ, /,:i׸-瘖sF5ه;cUr+ŮQMfA mC*ꂶjd<=hE|P,91p_kׅ-qMؐaZhV`9fBA]gEϗ2oә`0_8o\7.(6ZeRl-## 8'T^vkKuog5JȀvsʢt31-u[vګF Z1=*2JDЗhL6>C-U^8v| _b{}6g%Dp|&veGJ2[ûS S9vr,4 SK*ՒU;<<(JVW.(P*},tdg't+nʂ܊ґMR8w"&?߉'_-s7A$لhܿlDd@#^8U#8਴`f>fr49- \7ކ8s#lZ:ν*wZfβz3 z ƄeKcyWӁ '*wsWeh}Fmd7&l'@Py/ .jZ毛#H)릛@B|w+1ggyQM(<}G;\+dZ*];RD͠.JA g0_\6n^Uj%ИIJssV{&ɷ(LHo%Z2Å8F|w8 yܷn`;)`B"RỈYODj}(D (|?0{@xPpXg*ȭb:Rpq$S(2AEg!_d/IH!x(Z! gYYÙ R%u9m}w;)6&krdz%iu󯉪kr) )ӯ{)[jNκn-g-\BbwKnj Pg'[R IDATbMvI$FGwj*ޝdwTnvkĈێ[@~.'#>ƹ=8ʢ!aE^+r{zuB-¬pqK#;r @.P HJ[=6ShgvQ>KFxJ,AW/Yݪ<,fS\2цA\fU }.g 1.'M_1SWR]+By1hI~/ 4˦'zL\?P\^7"&PQ@5U;qucUæ->_:oL9 1OmAY39Buy6&cxT| }/6߀i3:8~g"&a2UcG虁'vzAzCtv>`0syOo}g=^(8Nu;~:)ֆn֬Y5!4 8%k/kes5[ڢb݈3?u'I,L {z:kyN =} 笞J՞(~k]; 1K-ƻ7f.gmcvB گ\oW"\J3rhv EUO{ɍ)\NUʭf^jK;ыUDpQihU ? Jc?96dB(yP1ʕ4PWq_>d;jksW3T}X{@x{ Lxx Vpx~.:&dƂԡu?~B:6k6Q"UiՌvBEsQ.8|hZwĩblOcs(\{UWo Za u{`0o b9leʉV×}MwX0?pM$S`0+CVO&Π5 0R㔙h_<{y"c(GO3c|V`0_8G|>3L/.>.hctϿNb0 s=4F^*0վh[V赳 ƸoƍK`%n4nTƓĎ+`0 `0 `0 `0 `0 `0 `0 `0 `0 UF~튘S/?v` .\~y47~kaNӡ߾꺠ֈ{/WӯY3|J!H Z-झ[>0sjPjߓ+Ko􀘗ˋѡJŕ]P:=#Uck6]eּ/U6tB0JhRIX,&~ھO.٦8Mʗ ؂εpP2,\\^xH,п_F KMb9k+GsqV7{ǂboߜ!oINFK+y\>H݄DS 71r~,E֏^.'?ą=):N)t~|i'n)R KV-9U!WśinE8.m%7-OSɪV #*D/d$-Ι=rI+giԳ=7., RZƯW]|4z=@/I~mf08m;wtp[+8Bx9'۩{}xgpZÉk(4U:^D)Pw|;__*u8'.:I7ኧmۤ҆Q7JduBi}' ( 򇸉WsӀV#*D/dN?3?b\.lǖt.c pmiR,0ƗF_F *a["uS?Ճ~˘O. rH(ҩE+t;VȪPR=Mܹ̈́*z/VADy_L}A8S!8lf0 Ƙ✡){rgL0;tx}!.lBrS ~jΊ~ Q' iZ4Qv+y)W5ͶOc2_=)'I/}첨L5S=Lsl#[V&N5|ܯΏr:[tތecEt3ɋH{ˆAM^ є7©qq:m?ouy=]Tsg޽>ER&mx+}np$J!. )N _Lݕr@oR2*y$bzK9ZWK+sVV!t+=|z!Xl%"|~| 7pp/7ʚ `K[B c0TUO0 xcW?}3 U#!OO8g@ۡa=gx@9a|{i| 0.cư^eBUgZlnV">#>'`0_DrXYYHɎ{>=حĔSxb[áݕNCl[#󯖵!|Kz,sS+|–oN[OfH7 wZ5kfԙ^IϚik3޳>.9Xlԅ"WiLXwۼᮆS;ۜ֘asFTC0)L&.î{R/^FT<)qr'9&rM!FS!Y9DBU4 -JgR[F~ #ϻeɃ]Fgpb,$u) 4 I1l#e=*w9d2kFxV?.pSBc@ʐ? 'ug 4i>*VP:ʁhoqpG2q,PrJ+7!h~)1eϸTSGko5g#{DZ{ x#!lLgFnDR][#D@C"Rd.u-&8'4T;W坬T"[=jPڔϸZ/ ]1.lDX\Ŝ!E> ``P ]fPnzj8X|3 h~|UTh$,xǀX<t(Pg??\vy`vqz{_۽? ~ C*x?Gi\^QJzݯ1x1蒇`0_t\{ZV׵ &%Ѭ'=pC&n& Ֆnpq)ooTZ#[(Ζ^o`/WNUj( jG!2xbW@sa0/S%j" С,ë2GE9[v#է-?s';ϽVis$-LJΔi!<˽JS*B*]!{''$\+$9;]hEQ<]6fU0%^D0%_>%ƿ j#V# m|8Z%a%-D:dLYJtQ&ѯTXAg`"0pλ͌#2n4ypV`l:4y X9n ] $@(Юfpi)-^O~vc[7qhZ]Rxx /N倛ϟ}<^<`0+2α<q;d9™H?ZsENRxPy-t8tx}ϐ6}5|?فdIN<<%% 6pқ]% Żb6!U* dN`]jxmN!>f 8 D]1kuIm9Jrq; 'Q/`0Wd}CΒG,~>'AU\ƠO8+m=3TywazDVX4O_XuӮq[1-.%m/y9r7uaɤwHb p7Si+"Zi$_J=Ъ%a~v?MKHD8'wTJ'%o-}Aq@;qz.$ʚ(AE >w Zǀ jk\`# X|ݜ( t x}&fĄ*QC&VL9qG4&koۡ*{wY(β—3ƞo ʹDp|&veGJ2[ûS S9vnC2}oPٱDjR-Yjը ^q|"}> jGS |_ΦK1N6xwA  X| SM zqPI :p(r N{ 8F2~[lop X 9V+rO\/Re0 8x`LX4w5pRr7~UVoF x:z]abF~Z[ࢦi ^l@8Z[HnI ?8*K!/7y%:4Y<{zU VkA|_^WU9HU<FqW+A M!5|l6fZ{ 4f$&n"UjI [1,1v/p:|WD  Dx(U<0[>#c`7mU8GL9`p6hM: +>S9.cCr |bz!gVp樼$xk9@;>iN[y%mNbɚ-^ F9ik\btJBk{=^ 䖢[|Y fҬ(Y;fX`nSy]1ѝAw-Yt1ݚ91bgV9P/擑wMyܞWleQd"j UA~=!aVя|ʝvcI KDY\ (fQ)Z(%O#[ۃKdYժvqI"࢖r6)*iHCXONG+@JvKϽKX'J/mP*@闾#<| 5]9>@H@B=oj ؁l-M $p'qa:WK{O%Z攀/9m+tbNǼ |` {Pp6`3g 7ް;..\es"芉V×}MwX0)1:&`0WL8AkmLSf}^׈,a0Ɲa860=`0s7ߟ>T/?߲ r+$4 `ph `|yqρ7 7P L/ִ}U翆8zi` ,nǡ`0 `0 `0 `0 `0 `0 `0 ʅ]G`0W,^wS[^-OyLG۾t:NECwP-=rW~.!, "{a<%T`0T|yS/?v` ։]93$0oiu]PkD+zWXI>D$p-J-"f.s^@t"\ J{re vb r`y!:T~򶋂gRgp>H%cګspqD$j5Ku?U (U(%ĉS`++ޖ }:szU@ߚxJKp3->q0s:+|ba^ Fnڏ(ދإ䇸g=E)@`O5Xm=_PR0Z |.L[v+.qi+iy LVJ`Q zal% ʹ7eK[|OHswq{EJ2N:= y"bq F-qaᗭQGrV(x$ ռPK`[9n۹3ӕY+8Bx9'۩{}xgpZÉk(4U:^D)Pw|;__*u8'.:I7rmۤ҆Q7JduBi}' My* 򇸉WsӀ;Me IDATR7f$%腱LL[9Z4dEl%qrD/njjŇ/k3RqBRza{0H. o0=n귾A ЁR@e'hKu\\dtCTJS:WJd (I!BTdLXsZP~>,zS:^wmD:&R9Ky%Sĭ&CsTj޷9i0xkxS Q8Ȉ $o, hpDh|N3".:p8qscG{n(|?lmz5ꇆqydƬ[tҸ<$ôWX8\Z}LH O|:B$R-tZ&8Vq4 sM E:t|jrJ.} )zjbz@#עM~R?^fwx&CS`0X3=XL^,w`:Jw@&/Y8)7ŠQvuzF5HtpPv݊z^|UwMmӁWOIҋh3,*Ĕ~[?8햕I/mk ?\V;7c٢2ػv]䌅sbct޲YyM^ є7©qq:m?oSOW>>uᴈU6oFT65&gg{LsdE m9SŭK3TK6 <)qr'9&rM!FS!Y9DBpHcLHޭj#?V AzQ2.jzp1\j:W^J.2s\J  w^ҩa.z^Ui*~AйuJ)$]}w aGc[QOMmn+3t%20hTSE1ͱyϾq|o& 9]ݖJ1Ga*V|\qJ ^5o\!y] yu6G\p !&|74ޟ%~k洦%d{6)l%]_1+zvħ""ϵ n]|VsڿO^oO(< #г}o=^3;̴^9RpY6пޱZހV?!`0, uaCm*%۷M,/ƞc9dqzd͗OV)>F3m(!ɫfwܲg{78tp==)\/Psulx-L-SK5uTvYx9IWL5-BF)Ϙֿm$ h!(G&Dp\*Z[OEMhqNhVwÞ+;wکƭjz(mJg\V J..cj+%qYVN$F& |Pv4=kNy~JdZPl7+=gn#Li]-KןlМ@ jظ%jj"2 8drTF繺 {jU刟S)Bț5a qQ  |"/|Hۓnp4ʒ7v;:m<"\O1AO!}c=;>yU85y@XmݛȉV .aҎ΁|l F|bZK68+a{7Ug2$5 9A"+zcOĤ$G9YCud GS[7bÄjKwc{7 tԷUݷF y{ɑ{OgK7ZQ/+){CMtBcH \T^f/W*r.vK)ƒ}5~UWseN"RSCAsW'GOSI=Z9TO0w{:896>+)TAx{''NT$$7-+ o!:pP||LvE]7fU0%^D0%_>%ƿ j"V# m|8Z%a,%I}¤Ic`Əy>."$5J=0T^w$W6Io&8S&~y iwVԬW{z^Vvr[xݽm_<@4ך5<> D\jv@!hÌCO6E NA G۱{b x S swwO}xPX}1He[ǪUh0Sj{_S-t8;nmSdq&o !XԞI`\8vh2LIa$u"J\xPy-t8tx}ϐ6}5,?فdSo= B4M*>~ޡ)"Hu|PZ-ࢣ:i8Uå& ܂.#g{"V.yzL1#JG\cB]|Y/$;f%NjKVڕgc)vj%hGw`O?ɩS?Th沝1j[* %3*qsI@wDχ-tS.^@?g?[~e7]* ~M6ۗǙtxx᭎~.}Jho^YgS:<ڜjDDDM .SV!s$ggdOomM5.1jV$`0.G}CΒG,~#"AU\ƠO8+m=3Tywz}DVX4O_XuӮq[1-.%m/y9r7uaɤwHb p7Si+"Zi$_J=Ъ%a~v?MKHD8'wTJ'Õ賈hi |`In5Q~WQQ[V Nix*W)`qt~Βq_daĵi.{uV~iC8ʐ1d7RK FB]Lng_!| ]9"gt?duw"DeݖS @ƮUFekbBY˺VDd0 scjJC`a\ejyl rn͚E8 jZFaF):BiA=5TA 7P CU!$(8,i*P*$ę/Y n]BJ1*rp%7A)ju7<^gAZc7 M©ܼ$?rݼ6 isM\k{?yD鑠Qz.p~ٱTT' f 'ŬtW/mKsI{H?OLK 9/H鮩 O_SX@OގsC"rKo 2 ܿ5Vhuum"4{ `/zO x w+bU/mC 9NRwj!4HQvq{r@ oD,%Ӵ"#ZDmú?镜y_Pu6͛3.& s+kMj(\hٹ'fHM/}s'F[߯OOt/kYNΨb5¢̽[.yNhn??eKs ^}% ;*@N]ri8igw!~$H_)/r2Mt!ʺPu*%?ܖ\ͷ ŭE\kf$_+eY0;^*s:Wf|D_\'ߘ+)PǺ"å5߰5=wwA2wJ>_GW'TV~5':E:EȎv畤BD KfpVBL9p@"0 _\C8CC2bW9D4.r@wT2K (Rd4]TzBw<7?+T4:9M5dA}xOߦݜ[VUhuumˑ?Ljם X}Zje:W*R;U+`yv-Cyڂ=^JzdME1֫ ݰC/?^$]\ )oߴMv-H˸]"smVQ'ܾzL~N2h8ueݛwC)΍M,Uѡe(-:PQ=[G nAUtɷ#Oھy&P1*uDž c%^eJ菴ec$ JeP t*?QtO3ioI<9p R{ޭxn˰luVY_B9 eԥY4_L+s:Wv!y1-P\I3ZP6TlE{H%\̹KDU).0J٩n];*d~<K~^YDfqk#Rˋ Q>W9*+5gDک[3!h2u3.|Sr%Vn\`IH'#S(%]&)o2FҰ *EHڡ&CsN\iߠ9v.G6?w5*p mҲidKI!_#Rq%MNʬ"+iKfZg y.kǛ$ Z/@E -ѪNQ/L4cg} w <"-V8x1H@bn/h2ly<ٳ"<5eVW/;I;@Np]GQ{;AM a^GU~x5QD88,W\O*6"ZlCkߍnsm[kbS-0Y*Z)%m)Yf[tiTF@{գfm,|2آF=q ?)#v )\c0,Qܸz떆t.jJݽMS~TwG1Aa{]!d+1BڨD@94ɭkr8<&KНk oxܩRJ,n--Swk!%^,>q/d᮸U׵JRͶl >$g*`mr L0 $xUAi pu琥|~Ђ| ׾]cb%5MR73JuA[lMg[\Вʴ%9 N `{2ʨ⺍,֟-sl߳Eז>ܸW_zv}C!smٽU6~~N<)K͝9Nk̝9t̡sg; IDAT@j\ôiǶn_a)owWõY; aҸŏt[/qʌɾIWpm&H8?F.|+ ȃ8)gI\#W#0wwx}+-B9q=^IFjg}ЦڕXdmJYm?k x=n `)p W,?<0FA#V @ ~׹f hH@@ xG;;}h?h| bP?@/}rU!)z~+QKg@d;@D8 dDjdV6 G" #<\ϟZu8X1ħKu;^n 36Ē;O$x64מ':E8C97#!':th˹B"`\? Bvz;uםt[9O;y84t`_tH|mzOU4ԹҶCƩ+Q2Sj8D~gux9ǴA͆wLYEh0k~Pj$GʅM5 [ q8@WB[IwA:]fJp 'Cy| \h[cU" ,MG9Bԏb]2q]B{oBk-TZ,nN:4+)?:|  L^`0 _,wI`!_%p.#@]x  (0*4 @pdp0]V%X88~QK.'i`*0WV0|c║>%Zخ*E@ 97(&T|>!n\ޤR$g8<7t&f [7k9[,B5AsP(I2#gA[ƸSiZKI1uF ղIDwZEsgX)FIa@U/W%-BA{nyVѳsߤQ rnZҎI (m׆Rh^ 'ķxh/G8βg88}!\i\tIۺ<A;"4=WʒMW}U{+NP>i;-l^+-I6lfUVI[_fQz}"`O*`fÁ@!iM<8?Ȋ{ǁ(Ko<S܁O*pVF \}E,SÊ{G`@r8GE8|UZ%S@_ HfȬVviWjg0 EɩU[F]$]\8pCohM&13Ǜw#dz+.ˡXC? bnH.e$ @sRjRNs5/u˨j]h4 @ 82 vTuyՅ@'@X%h og 6Gv X`0Xc94Ȉ/TA(L/^BImߑ@/p1ƢsEF3T  S8l٪wC7 "Z.Gh`#SŅBmqh%CN=UŎsN}'ÿ]*|NsL{]o6( !ʣNmx' 5m9sUĞʏ&S3oh"5Vj}]dq6z_vfƦp FtL I_<*z=y+T}HS->7t~t~`.Pkf(u`zkURV@+X裺vu X`9s@~U8%JoƪN(<ݫVkBg0,:Tj^mc݇sD[ k*3?PC(΃ԿgkWzW[fȹ=jSj8}PhPA vc \PUH 0̭?5}R^sid"-6L+s ΉZw/lٷ>>Wr|d9;uBe{\ЮS ~:~2˖: J EwTUҰqBv)IFS_>18d! B-xu TK>-'!^o ŭE\kf$_+eYUt 3Opi?W3SҶŕ^g PDOvP`. 47M5y>>>~~&+ߜ@hd[6_ g`nS@ hb<Hr cw#A;b /@0p^76e耜{㨁uk+Qieazf`yΝ煶k&jTZՃe*9^l`z( \ԅ⪈L(N}|HmzkmAZ̟[hb7ްi=x?lX)gm.Uuj򣶔\xW&\ܽfflg%`0$w^꤭|Y䜧rvp@y=VD3oǻ| y0WT]sia.F嗖Mg7vGm)*>1xaԥNǬ!D% `0q_GtjB}j~ù>$Z }V'{' 3=F64E-%סVg &c`0G 6p=l^Fypf+ ؎lUҶW=s"} `<N=f#;oɔR""Jcx"Þ+T=Rxuk"ʲmps7H dGo{k`&rŁb"uڑC Tr]Ca~I'RZyd&}j݉꓄N"&oNPҶMSxyHioҗ9OR.ޯ'u4"qʽײDDOcczV*Aq/XA{Q=\='WOpC[%6 1}]ƎS*/ysC'`0 ƣykQצJ}z˚o]%ߜAD'g\A& >2n`ތ.@L~. 94^>gɖXQ;v>Ґ2жGӉHZQpdc~H!D}Ӣ)hv%nvg:-G}q1'.*QGϧ鎌j޿Dg7?w.-$pܮR |<ƴW/lî#Gpc)F׉(}y)xV9?Hǣ9D~5LeޚU7~^ӪnosbC`0 TGɤ ܟܭ &TZ3WRP~FU=G1QwZHt$xoU9TS]^1N$Z׳F>#o3?OkF:`0,1 {8v~编 [,!*cO\M2Ȅ #?tG'ȥ84w2s :8UĂ\*1jmp'|,1o#hEBc BUe0mȵߏyD[y˷c֖yE<([ ?ND[Fk508V?u%GKDTՔM{$.373KtDDꜘgtIkL Qc?/`-(ϱFVoH'#rSG-s+f/o:먚(潶wff./a2 `0¹%ox6T`'BFID>r`0 (=Jή޿+[QGBi\I`0 oQ\ܟcms]:Ε3GWS{.M[=6h)jZ~iI[ }v{m&Fz4y+L|9x/4_:U6h$Y]V%k-^ C]u˲V<* IDATI?V11~VA;{}w竆J*d'okI>m^~{IiԪ{Qww>xߏ^OxSc-7)|x9$lO>KkITY=:.Ze!0c#,5zRGw$tZio6ysZmB«GrH{s|mjtUVEi$wm@B1:ѡ2ZI=}|}}ǷoWgN=f#;oɔR"2̠6)ٔu Hjyˑxuk"ʲmpZ'{-[MDD??AI ;JGTR-5-]K'WOp,)&4AsعfۤyS/RLjL506%#>ep}-slénUb'>{b뽾f{&lUx"~e~y1F`6dA}|uIΤc7gFk,#~=$ Wpjj+./kڤ9EzxC|T59rO|3~{ݹ?4Dgf6Vwo3V+t7:,V_PёUڌfƍ411rߗM9ͣxhEPC?5nO7%ğnК+~ڤ92DFyE1D%~ZɈkEi*FZԷξ*xU:aݛK>EOQXZYb˴:@t6l2T^4%WM3fB{Vg傠ӿ߬yd[=/,dyQik<^H[e%WLI[[wWk`w)r |gqGතJ[RU-|Ot։,V_IhA[Ǎ Gѡztt}|oo6 _QjĺD&**&M2kVT 8zG- \HcpՕU*`;!k|A6 w|շnӦZ-\Q7B̏[omQ\|%SuiMYs6l.uNJ=WZIaJ+H}۶~J?~|8;vP |e,fnC5kb&3%HLI[[/?rhrsKfJ0%0NZ,U/0= [;cOoDzzuWm9@y}wSx*}b&(:j}FIPpʺ iO䡣ؽfṚ5\gVaɖ ~@ p/GFFΣF*'FFFF!QUo͞6sMX&:.%Ցi 2|"-);9plfN3˟tw\Wzpwo +:;pW\FVU|Z徭2}?. u#64tr o͘7<1'wjYEJą.+-4tDD~]'˾?s1s(_k1cKiDsmV;߫$":=u֍[e}5kdNIKGa}}ESmҌ"̂xC|TQ4,QQO4w\\D}y#8>nu1;jKOdƃ̝[0 p~|c=2veADZD'L }=n(}Hr915>$ 4ou7>,Yʚ60﷙hm8--ujԬ}\~yC9k-ǫ॔2Ǟ>W·Vƨ:Lvཇ9Œ/GNߙgLUڙiu?FG(Gn++܃yk>}>™͖x$V#y>)WEDTvl78V#FC;25 G`0 `0 `0 `0 `0 `0 `0 `0 57Ou{H$d{.EmY<,NgA:\n/{Oy]~E>)'iu۳ʄnCw{Wz$ď)TdL(N{͂ʅ "% zʃ)8uY_842}oW{.{]7[&>0XvI̥»JcJ}7:+ʯܰxɟs+KdSo&/1oV^^;:}[=ϑ/{}ƃ4^_Z6qVB]ްGf%(UE;62;f/Lϩs5$#`0TxPozpW>Gk~7ll}$XvIхa{_%Q:y|# y(ii{%,iлD,}Gqo{Jn9ƽ`NS6|[GDfI`i+ob¿&`0G%+xj$NU;!W k]9מK6/l<8ؕQ5 M@(NP!f7"<>CÔd0/)T>9"=T*i۫9m LL`yN=cm1>26L ,߼' .2 p_WSW]zwrl5Xg~ob@Ɏn2FR/`g.N͞[wl@ڌ'D8U[{t|Hcs&"]_ON"&oNPҶMSxyHioW҉hPC7Nk䟗W)_﹖!",+OQ)ܵM D#G@,d>x8X_Sje&}j݉ƫDvKq:@uB|aeθ$ W3#SJѪʗ<~RˊDu;{Q.p >3ʸwZ+njj%ڮ̎WbGͶ 1$A/S+5_kq>OUJ?pGfg[JP+XEPl(c)[ ͙ Q_yΉצJ}z˚o]}59rO|3~{ݹr}# |dd䋯K27H*%*gL{u6:qO]V[0sڬ.ߝ[cy;G+WC]ŜDQ̧g\?J;2֏ƹ][Յ;(@}$/ >2n`ތ.@L~.fs.'QRڶh: Q "p2>CG+ZI̽!'y@K=ym=$]dR\[dyY AE4_{sߖzW$}ֆBws!ZTsZFH!5/a|ZS$GoQ12ڈ⪑NhCg]a1z^A;B5yY-{h7l e~'!k3ʨmcgͥ6a/8"`BU,ffZNnJs3%Ԫ̅GW틮|(0j@ Pr/Z,b)jNZ~"ȃ3BAw &6Ҁ釒j<5em-Vaժbn^^e8YE$c 8^.[u鈚g,*f]ܼ?z}Ҵϫ4Or'֥Od IDATΞҪpS'˼uVOW^K94vOas.}' Z. 3 ͛&TZ6"\5iԶ_riD]%02<!3 @`h K.^D rIJ-^8k'ZtFi_) wT:$GhEe>z,XeȕY.2-ˬ*1PP 4w0LWXװ'ufO*KUIq ߼t1ߦp_HF~}Gl45GRYІvV"Pf$WpD#@TeJX@dO;D=oWKuj#dj'EUNGvFxh(>څz$EΜ5lAqNJ_{R5zO)K'm_}S.尺5j>mRe=u0S,ڟAd !??f^iVY04zՄyҦy ۈ,K4Lӄ]2@ s{uZB 9 OJkQ+ߴEukU4RR;nvqH KQm۬ {食R=ħvvyx!lH Iڪ$'DȪHZݢAJ^d^F~`hשTZE1 g@$ \glH:56O_oa|x{YC~Sm-j4Ne=)ѵ]W}]r*M"| yy,B~߳@8r~T\`ttnc]}~P~g @ڀ6E~_|͸AZhEҰYg-&ux,K謹\3&H ޢrpwc Љ'A}7\2vs  I=2e\sţێؼئScYU^|[__ӪS1eAa~v 7k`Pf<#<u*6lTt'5% iOw3ԠNzvj7IZH- v/kH7cOѐjG -}@qL``xmbm[b~ƟTN=-B~|;zG\qc1{feiuӏP)J0|PD! jƭNOȕڎZ<ٔ}tFA?;mv zZ ok!}> 7 :-C.L̜/lnowZ9tp=NigC6o yF>.{y֎(q/4rӴ+o0>MR0.Ƕ^{)eG&夣lW? :xaǁR=wO[wR匆1a]g',z惘5ay5yn7j?(եX}X7o):I Q.IOExyBƚEQ1m1hsԯtm=e'0ʸsjbuUDxeՑ"xPvF*VZ+IWγw,17>\ٍ*>m !_=tu50!(- (Օ1/Rf x&}ѫbBQW,j^#9 ]w2<[EQ$G^9zRg=Qԝ$WޝW=)m7!)n ,n܎sQz&ث;gw0a l&MqͷFHV"ʨ˖B OM1}-9!UComgYrBQ?:M!Ho[|gcoY*B)zuHgC~}9Q@z݋ڳAiG42`_PHba;KRnձtƍo#dҢF}R0'Y6Sp!5ՈMWrBŞR=|*X׾E$e[k}UZSi6JllFzF]( -C-B!ަ[dqmQrԤ: WF4ƢiƜFد@0*!ŗ )!9 j>T!}݌p7=FrTzoyĬk%4)c7of2ȋ,B*Q&^:"[g-hq杒&]G<|nq^j^Fe>XСFJO jV1A! EboN@b/[{G#ggDv|1Po%|#9Ҳp9Ŋ_Ue2DJ-5^TԷ8 yܗ?!4hu.+h,278k>e2~EMmB/sjDYge@!ŧGYTݝf~̳rhsBȫM"m>"BתaL ?Gո3P>!1k4Jd["=6ĔþIItyczwr>|H4:Ɛ 5aLs+=?U OMZ|<Ӯ"d"Mm2pY<![`Kغ1)@ŖT>N lo꿡}ѕF [SM Q\q  `LiPƼI3 4`+bwMYt[EKxE歹UXإ[ss7%rڂt) UoZ9U>ZMuٲ|@ g4G#o[e~nIⵜ}j=HHr4eu'ɓCS{DgPie^DBP'VZ+xfGK}ܣݰ/RS؜K_IL)vf/m;֭WtW\Bwc^W/^˻ 2k?vXQ 0q4gU)@^Dz@Q@ 21_Uc]wԙ=Q,UU,&Һ+|~+ɨUSݯ<=?Oѕsl+Jʌ·05G483{z[RHHrZW>Y.v=0bӔGC.#) p欯ɻmAXq+Ps/ Y4p׏x,)!"G~K\a璱c(7vPLo/A-{z՜QlqeB.7+̷y[?aMR+DzU4mv!p擻?l!:R|f5kƳ9 ^\RiFJ'}RSҐ$:Ⱥz7C ԫ_Qmv(s0~4^u)ιjG -}@qL``xmbm[b~G B-6%^0Anra!펞zG?w~᧷YYj JȶzzEC3=ğ|69d^_~g3nB?ggRҪ>N#Wl*:Mθ+vtQ\1m+ oZ~l﹗X&{|d_N:ǃ2V{xa]틂/@܅5l b o5Ѯ40y TTwN_M!VoUGюCڕVSXiٯ$}w_?Z_=8Ϯ߱|B!=Qԝ$~Rwq{Gsyof>"$e[{=MW є_{"ʰArՄR{u&5A9-İvC?[JDuCH 5S/%'$ظw-,KN!GgUO/rdx*Hr`6ªYXee-fF3,!{$`!WJSuhxGa}qY:WHþ{BN#$$5YkLg6$woݑlp: !|an͔07+;6;\@HnU[_}lAΞS7[_A@1K9ZbOTϞR>ZSk_F_R 㭵CSi6JllFzb< B))Eע7Jϴ1M m5挌d4~B!y 9ȽSY<ѿ>2ѴATw_!BHxӇ=tzDJع˸3{CPƝ./o3zќކ1A !Bfz?-i5bR)m֢&@SBA[&xPدB!B!B!B!B!B!B!B!B!O^$8tk,wVޜn̕}7m=n;LIg|O;$ӦshOP"3NEn!Rb(R3L\$>l ~T}HTot*{:W]gڔqyZ(@Md$:)lORi3He]{G?yqlZr_!h6/#:.%%ݺ!ق2t?V=x3ύf8ԯ~v 7@eޕЛMO}$@ޫf$-K?^Ea*,-{ ϲw˞2VO8T:Wܚ,VsK ڨIբȜ^mI]{3{o Q虻t1{Wyi;T&ݓyFNB;W+'"MQ\:LR7p]Bis/''0NMRolޥ!yN <%eU \}hc#{id&{ڋKi[T"%Vȟjʘn3f-P1;\qlYc]7Q/4TuX) m U `=7e9᫳JB}w2|Bv3|L!KԙLԯK}Pʉ< --^%0VIN|WR)z57043-,+ (а6ѠM:u5 IB1])S۷7*+54;[0 qW>m;sRK{!h^Z$-|sϊ9|<&Mz}qUQbd`mЎk_QG_N2R]ߊAhD(nhD<|5a{Ĕc7S#"ِ-Hcʴt"V.|9[׿e6q^:m9!`~ձ-d'g%Y PԩS-ޟf{<2';;GV Ȯ!p9y&E?l|<"WjYMI!aw̔M,:?VYh}L$Ft[8yW'O&m j[R>,cd PW=$d@ICJ$o+ L9v >yz.2"&b;lo KWxBooUE-t1G_a<|Fh}ρNy2 ify!sODe&M~D LhG{qަM-ѭTS; L2粡ꭖ6K;뵮 inEcR&b-=WM`/qaM`g]/2bK;s4X 8ņv=?)c/\ﻱ tٗh-[3v{O6:FCiy'2Uͣhzw6"v En39dgH)հnzbs3}Z:j@g<":*U͐E7P|@ȫ}BUəqc45k&WBrVO̫3U|cs3Rhld5 JRDĹŦ͛Omn:syb[Lr(o RCL !@M(?Βh!jAP55JoMC\G6!"Vo"-}mgO06ʁ ="bN(?C g\FU|"wUu~t 2ߦp_HF~}G/]/Bsc'W(!0ϩpo` 'U+M/&fFlqzFϑ|kj]A,#GVg#jvUOW @N(m, ʤlCP2hkfj&ܪQ^ )˸2$/}q~.y,-hֶc!BߟC) W1JڵQdj\5)*]jOh;*23@y;(y:) G ضH) ,.2[UwEI<<<Ő<@ŹSULp6׷1IHL[ǻ7l7"Uy((ac:P [ZwG%2@ΦZ*ߔ'|'D[-ʨǁCӂ?$zCa;fuKE~_|͸F3 -H(IOD8HQÖEЗ%c7P>o.vV5ݞq/{(W!{9{bI7"p擻?l!nRB/9Iy:ډJOE,#@2\Nw|tIhdV2poa-xK I v͆tj;8ȞҼd%i>YRx m 4K/.=q{ ZŤz湡sGC4W~X=KW ;Zr΅MKk"YGNkntdr❢ k;Lv!c|Γٜ@z [ m@[Rpu: fHn45mMy_]:[.U[D9,x6))%mׇ63"){l-nk*8Wd6gQiGpER-ҾUڵ6vƗaeӜ&l||-]lQcs>ϑw"@hߦC$:x}./a֍hmv}ssMƽe߿颸8cھW*ߴ+s/պ#i5)<QX͹A/8PjҢiK.{Xy(_vs>[]rs6Y{?AFyڴw3i<,mRB蟐z9.LMtyhZՉeR_ѿo+U&>UXYDžѶ- 2#gdҼΎ9zN8kKaA«S,`m/B5+K=s4ki`T9y1 eLU4|hQԭu֞P(N|~NRRecNLؼ8ŸC=䤀(akk! ϘB %l<<[(R٘L\Dd^TU_W]K&[LjOڼm!RJ1.0Z{ g__)ɽ.)xƄcҴsJS+l+^ mc\m˺;tfԲQʋ/`_^ӯK]eՌ?4ڮ9)"KPA;|_]re۔_ȫ>Rφo-w+PiQߖF]6VYUf⒁Oݗ[M:Q#} I[|DWJrhbv _mgzK.7nt_u짌q%JmP gxCG!jG|IiVdBaLjw)F&58^tBgBF܋)Z/ү:IX(X̯W'`. .3#Z=F!W.U͑ϳbsY![y~.wsߍ6v:k- Ԩ|P`p#7E-?:}C'G?YI?D) 2oma_^O/w;seߍG7zqcˤəx wEiIaϙ2k+g3!]:/DHjB!B!BM>ց9qEaGE!B s B!0A!B!sB!BPC:v3ӨټxncAv|gᤏaF!B7~ Kk'9fֺ53*})+ O nO7K0A!BM01juiYjr-luhe~99Gw&) [@T|vWFϿJ_xʣ,zO7U_K&),UŵziLʩmYyr ,Ųr.װ<g` \AqwtٲSvYi>XjbQ-rLXE1|'14jе *xZs"=bu(;L(L̀[8޸ `E1hyĖX862eлŤ鯽kFٳtMPd+>$t56xP,@hm U-# lAUɬy[bs3ROfysK6ewl0_>E/tyOO|cl%n!Bosk֗PVJHJ$\ZBLBԸ.Sƾ6xWgLx۵Q_>zj[szƹ3oZӋФ|s*>Kj5UScȜNJBQT܂_]*U^ }@M֭s{!g>'ɀgUD촆̤txMԵ@ӌތb<ա :4H-#jlkQK҂[leÃm(BenS̵uJCF Zc{V C%WuB!_JΓLHi(Cy% +Ŋ2I+}Q Z$$+33 Ye,0qeZfyb(FzP2*o2 XU"5tei*Y.JS4Hixn6GT>_DtCz^B˹=/rM!v2X\ёh~l,=+Fu26&9!B/Vl'bތW|p5N9{M+9)) mgQ/ORTD&~v4[:{lJVj^q7+8ȁ~|OeWOR52DnۮOsh/aW!ͻH!4vY|HL3p0)*!3$'QGE+V][ "eju{^6u<[3XbTN-B!Z#؂U,׊Oao0[;2O,܂A?!V<ɻ}^.N[hn}Xot7g֘ ܚneօx'f⬢gDž>RZ3g$\|셝3~< i.A -hA:h?͂Fn,IENDB`coloredlogs-7.3/docs/images/custom-colors.png0000664000175000017500000027264113055423327021715 0ustar peterpeter00000000000000PNG  IHDRMKLsRGBbKGDC pHYs  tIME  ,a7 IDATxwXOLFa#RƁZu@TV8hފƅ =C3S! ~ӧ/sǹ`0 `0 `0 `0 `0 `0 `0 `0 Gf=tفsbE|&tאMsF-7adVjV eko2J$ _]0̘Rʰ32BƦU#Ch K6Rꨙ.ox4J H<hR5 ڠ-=(>_BЭtU*Y=/[Mx?[6R'!IP>OFeRH"(Gh*cI!G{ԔsBe$>B,hTWdW *-lGՠ׶K/ Dfz{7UŚ 咒+[V臶wl`Y`0fL<֒'J̃>:k0YV'ETkRks^ІԐ$U!ܧu[O>YAGRB׷.'1BeZ0sAOsB(a3GN?'g2e™,X\P 6a\'z[.嗅+ɦd9HP?u49cG'MB I9HpoBݎ ϡ[B(qcgz&,F1@K6W=X;݆X}_Bsj@$8.2Q.gUsyhEJPy}g 4g%1c[J$: {A:Be^^`uZPy5T0 ;HL aςZ5_V3=Њ9 9j[ >_g^D@eOBKOBDB$y̰R]d##;KМP>. !dNuV2OBY{RR5 2Uz< jݤRSquFKڨjrsQ~+jê hMs=1B/6`8lNF֨ ɇTzQ6'zCOq1;2/{w"ZQ %Ԍtiߡ+B7} NPmj5moVJ۲`~(~Z0t?,CwDE ?;cSbZ]5}Ij#_ tY4) m@wwa%G 0d6}@R}/=N\Ѝ JI՘6B1PY69QQ–5RR}*`#j}*huig.@{+Ø~ƔT?-"Q *_ֆCڦZ4~G'n]eNuFIYVZ| Fv'/&wC}[0ϩ `Xy Ǟ$K^}!Ec—VK2lPl & Ē~b B;FՌݑl\ BwtҬT.Ba}H^5m=F2uXU2rIzhWv{h7zBe3aIAdYRu-Y$HhNK-L;4]YҕJ6o%`4~-:D9wڨ8.\gJ}ErB#8ՒCVKd}Uw2S_ @4քliۧoI̝ >PV- zRwwػ_6N+n +H~}υYuz!Os^2ޜ&J'ӵbDHtw쳉qim:Kj}6R#}5p|oj妨QFkCvziCV 8^HjfYY]mmY`0?|?!UUnۧ/mAv Ƚ@wFU@[mc{iςڜUlcyax<8xp8IΧ]w ܧETよCW}e12ʤ#Q k}ZY1^an;0(@ml߭',<ɔx#g9,8+3Yi\ކFө/.TZӆӶj̷No?˶_Ի~,՚tQL&cZN>[Gyog /g/d-8Ժ>Ź̙V7?$E5rSqoKW|lh*vKoGҍ;`.8"٭^F6us)~P|H^ԙk f#-uڮ9^;H%$C!mszv>qkF&Q!xTbBPɡUz9\k (YUH5ͪ/+zہV;K$͡!BY`Z8xrJ>8m`)uN;h 6w0GΕTc6D^XH-Y,yUEHg=9bT=V&9=ORB*AVcX,=9=i!B+)~WdՔyQC[jeRIJH gPIl+sT:PfCRk`c5Mf!Zq0uhC  {JR>#=-j^'g7'G_)A(V]  Pps*Or*-xְ|aU{Λ%;E߫nՆ|+;oC 0|Q=<ڜZ@_1 @[MG Hѧ 2TZ vTfeW %EiEiř"rR»''?,//$*F2^F<)LEBG>J]'1ɔʢo rIqdhH"D@ޖ$z+B u ӢJJ".W]bcAjgIvWX=;$G!m݅|Z=ZT 'PRk~ 8>obPCԐ<^@P( )ŭxPwNVM((xN;c@jɦ?$=#}('onnw 2Pr+mmVrwNUΧ0l;GI>2 jI[K W06sg>T6`9rC%TBatY>i܆}JŹVvצMz6۩ťܷu"TzY$<7s"ߐ܆ ?#:ynmտnGN*[_ 2 ġk-VA&H4N,[iJfVGU/TFiCvze7!&BEh50BブE2 []$"B"kk@jo1EB]^ELS(lҪ,K 3ZFlwku\ʜ?x-|0ke2K\Or|~Ԫw3 ^@SP];,4^V6/Si9D 4Anv=8=:do @dFe Yꆉ ]u#i+z}{a_se =''뽨lCp75 6KbK*x|Mլ@ګ~~0єX~TlIO'˖(?%@> >}^R_$BÀIZUSXj\4F17Jg܁3̍(⯳I T[Y\)d5=5Aa!)!??%@R $MoW=N:{;;_&BRFĚ~Վ#gDĹ -\Pjkv~|Ȉ6Pz»2(8.6g['2U%^7 YJ_\1UHX }Oƺ[3|F}ݱV3@Svvw=Ư3P[҆u-.*`n"&X\'~] ./MP匐H4ق6D'-+h500Nn`pPȍ:cHuNc,%$KE"@vДq? w>,/HZ=_zR~uc}: E _Rٲ[ŗGsoA?LɄmGk0㘓 × )Vq/vIxːY,;Yn_ѝdEҌ2ߤ.*r*O|'ڳ'!/h`u*y{l!׹/)Eu{GK43H @Sm(͞v!S琧a]4*ï<]pl?ծy{- 2'wT*#c!tBPSo@L[z[XB6>@3+kF5} Dr\.#5LZ@k7؟B/-4Ӂ|!(-GnM)KiCUHe5vM ??+Io&}CLy`5eK5R!CjP޹\Hnxu/>iZDC̯hhV۞ӿo# 琩m&PĉW $޾M zME%)Whةk (f,PMII9f&|,VU&UɠS$.fR@"L),6cx\DЭ=i@WyI9oQϡT6C+3T-or Dֳ(-8ᙁmrn";;<#1GB⊛twsɼ}N/ tͷ4Nqc2pX6~ȌiG; ٹܑz?/[!-4Y3%c-@|bΪ)?20gʻͳv)DȽO>H}=2|.})o=U+K:=ݵ^=g#x v~MsY;7v:]~sDu)Y 3׮(5x2IUR;\4E[13=,}?O<{Er]wTa7t@\{B%k ^ޝTze=iNjΕRڐmA5Yo28g.mw94ݷ?0L+TS]SNپuFi} IDATb[ WpixmKw)A`6n#4jFfԭ.;xqOn_aY5zent&MzO& ( mIj`0 :=9LnݭB"L:zY[,"S 8 xw:LJ6 hDhw70;87E{B[{tߪ1]rxlڻz \ B‚cOfH#1]|BxZfscTJKkJ[oMn֛x"*ߋ=2ɺ=u!<=;PdR {/<|S!$.J?ܤ*,Űߪ3옋kkg%Mɹ~Ll:'!MwZT! IOSvs>?RW͗ƒV|P F!aA,Tߣ7# :G]1X$!'~WztAͱe'3Q.i«~yE-1vMJ+(L^Xm8U_X oݫ \j(zI_r'l^l1%Yi^})K]ܽCW).!dISJϕ&yfa@擤JnҫJ;LP:Unel6dW6d >BiOUf:'VU~tˌޟĒu7{4L IcWC5y BFguGyo&B3M0LˁC ӚQ4?2-8['W*,Y~JI*EF- zDz'Zd> p8Ȍ`ZVEA =B鐱 #Qq,3kѺca\Зu0 3~s0VY'u3lrո073&;BhyGח7{v$wl`0 `0 `0 `0 `0 `0 `0 `0 `!Y]vܣqQ/y _ 9+Țլ mdH&aqpμ(GUdG_c>_dPO3>AyTzB{GM-@hGeJl4JAųϕ ~"1|侇ʌ9[\䘟-lGU$O6 lAWB`v]rܠ^|):B#ӼNWV)3??"oSDM뙫y_zgى]+}Gg#SD:*,ƶ_3u]zc;O%>~PUϲSǬֵYw7CWGUtͻzxM 3~t穗FOZ¶wQ#o2qb,Ow+Gf٠mhkz> Btk%y!$X_]ݮ;b+j)΋)azL7?TTNӆ~Vʆ(s2FTPsxiS,~0%ʁlk|6̲';柎ox*pP<ِ60 ߆6yHL aςZ>eX!AQ{E F3ӫ չ@yOJk*(e~͜ϑhF o`0VÏ?esȸq\tS}tulJL˴F#Y7p9B$.BuW3޽ށ879M +>;a3g_ xtcRR5 P T1@NTTPi7 3sco%t߾PVy R{WU};NW?}J0 UE "!/MhN4}J%`̲̘˓j`0S;Pl?!yd-:^e3!sS[ǎTiLР0`P?InXX F!4s;L: xcs<,O_/v̎[fO%PTֲ̢<UZ*zvvd!욁\M\8CD}ì`)'m6'04iDh$ 8n96~=8^';8Ym-F}}=I* $̍C#2/eTvyޞnmBK,iN' $xcY8,If|X!$xwL+U"6NgYЋ4鎌̽*@QcX:j*SWU.*wAIu >ev{h7zB(L{= <:Ȟ,krX%1ĄoK?K2R mFO.ZfD D' wGY ǥ#,W]׮+Ee_"3(C^"NqQfb꫓(ƚPM?>t-1MYI8"Ii1+'`Zu?TUnۧ/mAv Ƚ@wFU@[mc{iςڜUlcyax<8xp8IΧ]w ܧETよCW}e12ʤc‚ k}ZY1^an;0(@ml߭',<ɔx#g9,8+3Yi\ކFө/.TZӆӶj ̷No?˶_Ի~,՚VQL&cZN>[Gyog /g/d-8Ժ>Ź̙V$E5rSqoKW|lh*vKoGҍ;`.8"ٍYB6unKfEJ6n}.+ZN"PU1miN$_3PYِm'fkz[Xg̒gi]fcx1͵,Z<Y_B{*, CzCvΩr8r>n_UGu/lyskrͭe /{]~#CHa Mx~罋 ҋܩ6x08C/ vvz.lȝ%CfU[<l١ ?SVtNxn=IIqNIagaan:K +JnXMKŢf]quXeUD҂FTK AebkN!旉?[:DpNq5w)P]jDZ ȝWL1ƥ; G(Bc赂旈 @{x3{^c=C?-L\)53CKyJ$,-(I4*xǺꅘPlw@k_/k^d*z=O'>i7,G͏Y<60 Z1n,*x9=$c44:u!OA&d,-45 .M-ʈKcbb3SE䄭woON^% ~VY^2_ HT er y:S 'h}2#\Nc)5jE, D"-I:5"V@gED\({<BHIY$I^a쐄J &̷uikkS6SDTBIICzx/v1Cd5g BPHy/nŃvҵj1-ͻ;Opuڠe72 Jq,['mɐ9?6XϬ?_SǶwl]%@T1<:*T")Ixz7$ӄwH06_ՒM IzGoQZO ۍճS_fI_inU. paf^՛m?yc;IGƵ5b#3z-Jߜ+M5]}m?_pUo Jx nz9x0H;wC%Qmfl2~.ar_.hqݵi**4EӦ 4vjq)eݴ껌W3dc$yMY6E$`i|>VFRAu$R@PHd uMH-&@H[YOS(lҪ]j UB]?dbhJUrEY{?_o*{eK^,/a$CQZ,5RY(F17Jg܁3̍(⯳I T[Y\)ѽd5=5Aa!)!??%@R $MoW=N:{;;_x|+3|Ȉ6Pz»2(8.6g[' FKĚ~5U> |,pAA?Tꓪo@NMcD#a%t=o9wL?{7v:(NHBU<+b6I6/Pi By`0#_U %e4Ò߫7qbLWH1YZ6KvI寶.~קgu~kYڊVNť_̭[$ORuIRT&[P醂D'-+h500Nn` unf6,Y*uKHLOD)~.|YO15ܑ #WOz;Zetd%W"~IeT|yA|)yBaBnW Ȳ㜵of IVd4 M"Gq9={Q*Kz~=fQL?r;1`&o}#3Ÿ yJgXqq+#)Vշ")nq J0 X1vy_ U3O0/>u 5f.w×ۢltIHf9Ԇ22/}Pڂy`0(_l 0ļ" 0QQbK_ReoQ(lCH "%Y1g>G^6dǘABeT-+-QORɴnOr 5HM *M dh^XG:S*61z?1rsY_]/Oy/]ѧzNZ ::\鴞;Ϯph\2BDoJiQifݬhJ¥ @z@$"1M֤[(͞vR琧aͨyFendPM .XjGmVA2RTޣca/N 6E) } Dr\.#5،oU-aA Q#?f̣Ujݜc L⢴rn4fJu̍hZTf$`Zi?Lm3̄"NZP&T\hbo]fk@I)@N^ؐ@8ٷjm"NJʩ43Kfʬ2H*$ u1sŔarHԜg: 6cx\Dժn ]g d%HdE?S Ԭ:5ۯ=?ey_GN#pRLaEw:iڙkH/pYtz__ңE_'(~m JrM>&G*^1 3piy֨3tzbVeAjhdM%?P9jE?=>=CkbnPJĜȕ\`0̿CR̮ oՖ\$J;~νܴ41bc{yEz||'q7EYL3Roc-|ۘ_mGOkkϙi&W~v|+Y)IܸL=G#Vj4ޥ/\4T@_&9vpsa١YZ" V<^#S(vVg*J U w}cjśl"J Nxf`ۣoܸ[N>O~zwbIS,\2bb;8zmͤShخ!Vͅ2c/B_vn{/wVc (f?MtL Xt'$jJlc:Ynq_GU|vEZ{wKykW^X9c;nWgug/uQ,޹+wߟ KavfE |~>xז!\IGNBVjGq?fl9R@5?< w9slXtQk`yO+" FΛ㦚v|O٨5\'v߮]x>zJYGOg+I֕Xl >]g,$]DVA Nxu/ {ʡm]_.HveL̽4lmfwm 3tɎyUjCƐ\)'1  ub;Ψ?CtZl 2m/munvJ+3} U5wn6,h IDATn=tsFxrsrKUR+1 դᴍ3S fߣq#@:ۭucPHBG kePdA_.Swv8YIFmfsƶwOho coG kv1e++ءǦG(!$,H =n4e' /7uiVޏ+?7HnmBH" *I||Իn7uI[oB0~/7ʘ!9B*@CEI5O(%p~DdV *c.ήţo(9׏ r’MD"ĿQ+8P$KeƜ֎@V础lT1B _fIG\(F!TumǬ:dj=-,{!Т1ZfXҐ+9R:HAs,x|LUdCEy&dmkzr)~E0+A ڵ` $=4kQ=+DQ[]ʉ٨۞Ƶqzc"dI у#@[PKlX}㣯 K`0 c`Z3ʟw#`0`0?_ `0L x`0 `0 `0 `0 `0 `0 `0 `0 `0 HjC8(&m\mjB'a|50v fb5+2s۵7%Dɯ.nf\u;Ű32BƮ^fPn`Ƣm,,tNd[+2^bZ5so|4J H<hR5 ڠ-=(>_BЭtdnneɹ~Lyڐ^yK#UwH.!Ttqj(stSN2VpHB!=CoU:n  Z,4Ǘ?`0L}gMn4^ HZfv]rܠ^|):B#ӼNWV)3??"oSDMsT/=3HĮ v#F3)"txercۯ}\{w'_- ~PUϲSǬֵYw7CWGUtͻzxM 3~t穗FOZ¶wQ#o2qb,O*Mxk؊"3D'LAӪ}֩'+kT6dl]5ޒ R4 QƼߔ"ʏO/,y[|: iANں\h5^OH9R#RM|+Ua]HoK:JD[7*l>fc6k_ i}&9?|!YT zݧ ^^hEo2{9-$"MSԜ~A}ۿΈ8B'˞4 /7&K~"!^PMș9V:ÿQm2gP=8qœ1:Yp?yeJIը6T2Mg@H|9ew^BWi+fXT҆B9JNU( LЩ&dhJo"9W)+TByA՚Vv)[ xؒp؜$^hAН6|9 i>`isY>?~~%M7OwPǦĴLk4%pgϫ#D"h)$\w5S:.۸qӑ3|İch2MN8_{05BrjLb,clk&JֿB~sQBo_NDS6 oe Y?3>ui,d0 ~NlCʳ@WPaxḮ@WpMm;R1t2CP#AahT$ab33`08+㵏mL>}3;Fnm=eSB!"S[[V'3Kag*-C~;ZD`2gsvP&~Di_FM ˍaV0딓6uur1Iq*v{srmje*z:}qNvpRgZ09S{T,AH{G܏e"$ _n˨Np*=MbXҘUSf۱r$|~h:gPzrg.GؠU~u4*鬺<7JQޙI%Ra0 rꚂ,y])dl c뾱۷d杔 rG> @ꎴ>8P@gL 8zp7POkоK'~\0u4)}>Ǿ/: *6T1x)NҲ1`:UJŠөaO_\1a`O뾱}Ґ_ͭ=J2L6݀',|u.i@FG­4 RgFҢϯTXV`]܈2n\me)ugcѬtlc5oCְ_ #*WM@eŅ-Ӧ\0ܮF6t\~W) 5w"X.ik/ |K:?xy/TM/9)75<#ܕN!Y qp^ @rXrTļ󿁷'b ӢL;*PKA y?7W{YQZ\^$|aC eۭ+mUA_`W(9;ʚ9+S޽{?ߠ{tayCݻ9ēzDžw.,~Xs۬SחR343sѹD/;gޒ dX YuȮ kIL,۞ERa0 F)L|No2@3zN>.tJ0e>EH́k 7w;pLt䅪ӂ+ yl[8>GD^oLzkp~edVe>'iM&Kq\SQC$~OCNtS䲽f>Gs) >\v̂uFUt%::v |ػ)$$96|yi̞|&!z^zI,B˞:;B%kkgD`[P٭1UymF!SwٟORH`0P8CiͩEt4t5BCSI#HAd-W̒袴 (U]]],E$o {*2JER l& Js@3J'4$2"D.~xr70B7D-ٌⳳ[O]9@6W2g,ix`Gh$@ v˜7*͒~gyOÄr-nJ<24s5$&hCI5nZX޲]C vצ X(ۈT4)9 ba;mxYO2@7atEN!Kx1<g= RD$Texp'UwW-/4.)/?Ԏ%D['3+t՚|ETtAw[|LF^_$RːCU35JrJ:Q*yG[eIsVYYV PZ (?)@ϊOOwzz)~}n868QF>"T> P-T՗)/ȄYraPT9!bn门`!+z htihGqO:C0ۢt:ɤ2]x~ I 6`Acܖ84M%sJxAγ[Ut%E%e~%Ra0R?GV;&Hu-a)- L$\Vyez^Ym`G𰭇o/{uJ[1%i MfEZt;N˘\Yu6I  ++PPQO-CQ5Ladjf$;ŽRmu`4o X ?vޗVWWC5lŤvvնDT,RĀBJ% +l,PlwZ_*ҡ_|j佋RUWz?0yGyU;~.|0(0QLWԯ>=ս9YPi³'C Bǧ5M3ag *nT)oKPHRh=©a{eS )}(T7;o+N]ޓOū`W6>;'B,5rO2Pi >oJ*82 5; oxM(;kM4т$Q 40=Ep2Ĺy2Ԛ%>W"35߀Br si꾥9qN(y xА:`XM?}t ?Levy~c璑ߍsP`ޥf-MYHHQKeLufn܇JقPU| |Rlc 1qns/A|6N;(%Rs$9U9E|7:CT5RukM8>w3oɢV u#} rᇠ}L{]9ˣhw*!M|ˊŃMm":*IeRa0 QcgnJ}VP*T\:\F~c`S'fݹDTeΪ${ܩ#Le YrOJ[-U$Va؃Fb>p:Ga2b)hNa* TH󡼚xtHKȒS:};mXvҩuʍ/ϸ=g7c _9s USb{ȿa}5%<…4_5knqvxboH%K"nt]k: {x|z?KVZ^ Jo7aO=֭sb6w> U;1EHHHH蛌3:ָ^Qc @ذZ~>ڴ;L~vêAO /!\Lc<,JIS$%Y9׽"#uԌur\XXo,<|XeLc66R6 C-ѳs|cˏXܲԄt='gsH +aNmݴ @^$>vswܡ)D(ii?ZE Cբ L寎fHSDanώ}wD;vK7[ys.wvz]4shOˢHelsN|4^ d(~Q]~aV"~RYt۱ޮܤc^n'g.y{[^qGuW{yj<8rǩ;l(n}H4 _(LJ_]p=|h.ߩp7, ]7𠙿y_`}֒F-{Pkߑ۬տxkނ$)>8?v][.w{[[3o0CiV߹ٰd͠E/BHRV [a2BwL8[Ɗs˯ j@n3Q2SiR&3UykAutUj :٨mDY^gQ?]b) @gȍ\VZ•4.j=e37D`p?`0r?GU٨ ֱ^`0 `0 `0 `0 `0 `0 `0 `0 `0 ͠E.<|oe"^5oM%M||NձU6mWiB9Bė6X7X^̰:R_\iVhN+_^p6T_(7eMTh#R6F ?˗"4+~B'zhT7ZW-Q!elTM&tPŽI4͒HJnV|h|DP&5y?u*kTr>*oVmoiryzW" na4a1cBe-1S5)10 Ϋ#DR 6o$\{-]1.ϽqsU@51g˩=И6RlN[jJKZz |N9w䴬0wb9B+?2x:BҐ%U%$DJLkFn޻? =1̼zTаzt!$w4gn]d#xE(/uUW0z3]ϊ?kqm=q!ލ5$wo$dY2xVF5J$׭%RQj@:Q#f1OHNc{TVV[A&jPWpO'9ۧ;:[tq龷Y^Xi|Xż˫ZRCDc cFtˊ #E%=fq[7T1}ͨͷc Hd[ujB= +[>kR:L3xɞΪ;N}˥u-_h+_ݖVb#JQ u/K9VngA$!yYvܓK[X0IEYcGyJEleAnU&ӊ9u@]Sw% 2 mdWv tt7w̼4 3#Xn'Hݑj0ဣGpJim^wOr&oWŖUDŦ*/iQYZ6V'jq<3^tt:3k+& @t7ҝ]TKc/fݰ"nu?qm:m52EM~~Ҡ/FuOj+kNYƸxͮ+>so+fvc^x~[r'5ynߨ4-Vj.+.lq^6*'Bp{l~OrMz]gP_x'e;Νrx߿tЌk'"ʱNDdg5JR~sW:fnOzN&aɢ:@Ix{MKh8x{" Y8-:~TTg^]#M}sO9@iK몘c=[A\ ˋ6|(!luc ڸ*(WKUi~3숪$}+sg3Z{O7 l3g3iBTQMjvq?_},7:Nԅo xNwuoXP~I&;xH^wgH9]+m_;;UЀ,ںSYdWεFhC TOm"*_Bu2PGi4!3TϪ٨fgUi,/u>{ߨfu8_Ǽka^zZ2IEUcGJk;T-Y߲Y>Vb>`&s$Oo)^>`bQP:ASsY04qSy|A˄O'@Iӂ+ yl[8>GD^oLzkp~edVe>'iM&Kq\SQC$~OCNtS䲽f>Gs) >\v̂uFUt%::v |ػ)$$96|yi̞!'.!vzU\09X=uQw\J>עx2O S]1d׻2ΟrHn1 ^.V@m hˋ:q@ JFru1 9%7ʑ,jhv?P~P4rTэUi*|e`[P٭1Uc]PS_м9TNCE:/3탍M6NmVZ'.k!5+ F\"~SAIPkQõ]TkݿniaT@@*LiͩEt4t5BCSI#HAd-W̒袴 (U]]],E$o {*2JER l& Js@3J'4$2"D.~xr70B7tƿ:\|vvvV_vw?ư윐%4 M ]2';;;;&ʶA~gyOÄr-nJ<2 K>\ vRX'(}ǫf)eև@M/FN n Q .z_NMx-}Xs:%EvKYPV 3Q!Kx1<#|۞dS)Su*2}G|8ғQ|aGmWҫĖXLussjea UjMp)}s-i~R>A{&!//eȡAQ%9%T-y#~;ѩtYjtxܫUV&5 .,H%Oг1$ӓ7c_[~䴃7M9'3euTtݥ?L7N.4Ê&ӒʄYraPѨT17KmT 9x}S;losGW e.mAyݵPB I 6Cycy9Ż/e+ӆ<'haT<{UEOWRj*fuJQR/PFgV:Io\*j+PY_,x7$WQlHJ߅ _"*hKi-Y յJ'߯3rYjKڕ敕k⴨ mo;m=|k|˭V:l2؍)7O{T@7hm2+t^TժʪIeOxtYYq$tʀ lgG ׄZ3y^ ?dG\رYm#,-A d8GqjcjEj@X(UD"aŗ)N6}-Y߈>ҡ_|Բ0E`A@޻x:jT!83~aH,:!XvUaP`*~i`*UQ"U٧G1򙽺4g<*MxdZHTwCfi/¨?.8t=lY>R5khLqQ w Ok]Ny~>*Mkӳk݂F4uP j2yf\|I-4+z%yJQjg~ǭY ʑZRuVP&3HmV KY"J+$z8-m; Z[Ki-:XH*̯Yni uPѧFo#@~vJy|^AOF,e&eiBfRP 4V'sFiZA>GYF $r[3;@·%X; 5łЋm`D@esd%TKeaI5YyܙST Cr =L%qRՉv5Ɔd73>:DN;u?qfۥ&SYHHQ+M>]+(*.z.#1u=.@ YկDTeΪ~ P)o#/vSG2 +I.V[6$WXZaK:]_l,6PYTn6"͇jN:!=/!KN=|,b8> ԰ [[Z<%NV(ywҮڛZh)wv_ok9p\wq]7K7ڼ/†+2iڭc/UStȟFB̙KUZ^+`I}!HƗg\ LZ糛1/N9kUݪ=_0_Wum ۯ{ǚ5`vxboH H*YwvӀO-Z9fO_ Xdq6Gs lS*9[XGd!iDI]RD<; L;%-?<0i%h_]騤 ThX0ᏣرW (uEB1KEdžܖd7[T'KDe}P+^T[Pr h_$dhf{D%U Vk&!\Lc<,JIS$%Y9׽"#uԌur\'@B7^>؏2f )by Eۖymw9}>̱V^Y[dn/KȎIsr,?԰̽M dEc';w7JbQ Y@9k>_-in9Qhv:M)vֻm۷i~Ocg>9H`Lq乷̹E;8zuӴc!= :,"M8ux EmXta=YAEKetozryͻ+'|b!;l xq7]cTE(yp~ISwQݾni~P :>5{· w}3m˲u3 fg-{aԲZ-49`w=vm3FT[Hqs*nz'I{vԂ]S7FZŪ n (8 IDATs;wDMg]Ԏfc.v~۔"y؜)'Uug#RUyvd=< |[K)*F ڠJ$y?=҄teZDoXk\[ Ұ=O]9#֌82}MZJݖe?hXV}֫BeI쎇?nnm uh˩f JSIG[q ^>'Vw~ba $O*uV]Q:vU[< s;:*ZY- dzv̾ǝyb}6otWIKkjy)j;XֵZ+|[&VI*LT3.)lߣ&n:}Z2y5ƚs;L<- La>TKi Zt£בcBUD땹љ4=\&5>*=M uu ݦK6 Mt9mcY}u n؛qZ'eNt9*mT}At58#@4'e{BO9Wn^]1A oXA?_ʖ $ňIpܶ"TxeIMl 'HŊʫ3i?~7R*G=ti{'B?7{w*oaHc!y[[jV!l`]a+`0 `0 `0 `0 `0 `0 `0 `0 `00͠E.<|oeB}<}4u9mWoExKTs cԏ޹kdͽȭH `0*L:q6tl~/xEzru&KǽmԈ*3ն)ӦM6ۅX* `0 f.1hDDsk^&vrc~ac"Ihl' `0 _ _xvÅ ~o<|r-_oi⨉M`0 `(95;jۏ=&9im Z|ڜ>c |\vxɢl  tVՇM( vmCI-l'>}|CUŽ~9cq{Ftcn=8[[:%v3k2c3|H0c_[\lqg*> E8Nqfw.]c Hm7*2:^ooA)-ujr'9eNž3Mޠwy,;ɥ-c,$4ll-F;͙QUz$ǣ-:<!Tg øIr/gT[Ǥ9BRN\Xe%dTW*[#5+-:3 Jlۿ͵rRG}íRI_cr6"&"tGXk0aLӤq;%Ty5?kC҄'94}>Ѥ }_\uAzR90@5ԀdV ʛ1:t''7-Kh[ i|X~ᝰm=amZqxhOW窔fZ#6-,n;c</{_i3xJD*'ӌǜ{|~߾IH݀ߡ @;9mTWo%vX~ϩ _>ǡ&ќ.ͷ/`0Ѧɘ M|HS|}&Ao3'Ţr :%2"ai;pZ&|:JB܈i<6K]|-zyvnmo"/7&c58}N?ou224j&ajtu)!ll'G':Q)r^3ֹ.7A,H{Xgͨ@Ifcm筑::v |ػ)$$96|yi̞&A*D(>$b3\lǪ!Zv5zfu\fJ*sX^ЉCpJ*gNH=KE]Tytr /{΀r*1ղRkTJwi&TG]KCYtP|G-o}1 `[6$-x95<}ZZ]h(6}*"iI#ҔL`j1@Y]W! SRRӓA{OV^ QFi^H $ͤAinh]$Fg+>,S|84zڥJ2YY8^T.K fs@HÓCnR 0RqE  yBI/e`ʳ2$)Sk/FraݼW_,܆)n&l{;4%C5e*(\*oO:oBܺaҨԁys+RC"#K@%[1NDqі q<]1L R){(-2un֚Mlm=ӔRKE+qƭϋ%E{.VI5߾ `0 i U13JA4-M. D{,d0Y4eJys.TYg_`;dk3Ӣ3``o-;y'V&3ڏRQ7!7 8*']%%W yIEvLCC4 RӒ ɬә( nl.24@cw\H_r0.mn͟}ns`^__ڻl%=E׶>O3w1Hyo?KNf,xGlUZ2>]|۞dS)SuZFvTiS_<%RR?Ycܖ84M /I1߈SˢG3e@'4Q`0 ~v|MZH%RZeיHP敕k⴨ mo;m=|k|˭V:l2؍)7O{T@7hm2+Id9E2Yu6I  ++P9BD?MR8TU|&Ԛ324L, ;6Kշq䂅Ҽ[3$:&i$Ix*yE†z'>N-_ L :1_RnM~hL*OFoys~]ɾNkO=T -˾>_nW_VW9CCD*J]YeW]$`0 QS'XH*̯Yni uPѧƆ]RWvK1BIYr.ͬ\4^YF $Ch~kfHU#DΒkQbAb60Azp=NV`gO oR"R`mvDL~Փ,FPG- q]M!ٟK\:IH~?vPj%RɬUy\!h}KMz9pe~u-_+^OkNT=a0 4'1ڌ37>]+(*.z.#1u=N Y̪Wy@^U=KJyd;,3!!\BikE {p 4\N(LF\X, :' TH󡼚xtHKȒS:};mY\x,//G7Q>lY(d?_9藊^|eߦ{=AU|;Xokq÷y~צW% lΖ|1k4,}9A{KkSg;^E,I^@ rRQE16_ 0uffjVw-'F=w5YeO7hv'9W7wM_\̈́'>nj~vWi5JRcKD xRQbq;{fՇM $uT!BZo_fb&iGbw# !BFc&B>=#9)>IJ^^ˑQB!ԉM]@'GKF!By!9Μ9lLPVz,O9B!B!B!B!B!B!B!B!B! mY@xj)"e<9j=kqܲݗgIvy1`Q+nFTtߴ1{w=eY]w=:P(|~}.f_bt1{Zқ-3 _eP7 wvӭ _V]ks?& q\v%""b־*δN5jZ 1z~ jL!!&¯NKq/iUՍvQ;dQqneTp,\ Գ860mW|YUljvwL0|1l- ^j$Һ5ysgkdˈD)bfxQz݂nXqx3?'E^V5zĒ'[j]?V{{9N'(Ss"&nB[lCi;s[{job >sn""psTWūB!*0Di#`,,ݚXA-;;6y-@L^+>wNdR| [|ǧ|u_0jsj6U㄃ԼD~̖z]D,Ώ+BY֜4q| M! ΖT&5,e{ 3RdDɍ7S|jqZ e!cτ@#`%VLAmLYyPL=d F/hnPK,`1'T>r\gP`Tt۰F`O :%B  ƔiwO*g9ίp܏!cy#|)Lowt`;L%QLY=~}G IDATߏ"b \q2r&,aDkp[{/|\-=%(eev^2\oN-TFJ-|bύ2gT>[܌L bٕ+G:Rpߥk[]wJ^m,3vn!4dle,J0UC ]*w#M5sh/t)>b⊑a(>ފ jU9<{eƴsfyB!|RYMOdey| m5[[: R8X?Ӭ0SoulYы3?zSz،ٱ3tЌ̍,sW9 aà+:]|8N37,ɷ~Z ޫRD=XC,`8"+-N;kkEiaOѨj; /blx~[eO 7o 6#Z?>m};^nTb.WJ%2&Sth/l9m~Fx9SQ_iD3lO>'Oejr\B!O [h52 ܚOjdbжؘ 1db s/Ni?&Ǘ< N~M ۞mSDž$eo~};fjW U{r0m,@T +|7_9%jB!s⯆,pn!aHG\>[ m֞~%4 @ /)0rAUV[NddgIvDǍ  J4G6| ᅯH0,֝dEΥ6_uv]ێw($*L/8_?9TX&0jdXLsU+U-$zٟ@ySyAć˟(`Y A=f/ 1b 8|CnDzmK^Պ8DL~j{>Gi -WxC'V2֮3nq:@N/|\L60Rkh`ڸZVWHv:J:X|~%v#wƊ$3.cB'.zW,+êUE:4"CDL?5V7B!|$#b_X 5K> Cݰ? a+*xt<}p/<+FDi>JFе+fvOʲ{ァ[n"FC񞞞SV]/DL;w焑MYsضs1f^y z`^䅽̚:{Ə\ME-pB]:",z@WB_5r#7k 1+dh>^ v%Vj:ED?K!9E7WOXQXqY.x. ]{NJ^^~Y|`6Z48<\DL7Rwi Sl}]Z]%B- xV3ۗOl?Rc+){) M J)BDLJX65J(avʖr(9ԯ7S]ݛ}<쇮:%FDq~?lI{χ,""rbL>U] c,)b᫫mXߘ1e9pd!bYJ;pm?BT֨Hz,>)FD,|zgJl|7iLڱƛrdYmQV(9}&c*< Cjϩ!B!!w nDov$tB!ϑANh,sVҢ!tB!ϑ`)F񻛅w 0{B!yb`IBDҷmlkDCUBW!B!B!B!B!B!B!B!B!B;V"bYƓӫWkqܲݗgIvy1`Q+nFTtߴ1{w=eY]w=:P(|~}.Uy f8Mg\Hgng8Z8lj-u1kZ 1z~sm|B!q:S]W%^ظ4e/l1Rr@t6yL۞^ ' 6px99_ɖV[Vp?ET=ް;jm{|qvG@LR ghqu f`XM6-tVQs;&KxeQ> o7AnC"(9B #>@*6àS,oX^_TP5C2dC+C6|IJSrEjOpByvAݍ ڕ;Dv-jOvWD(|No_!?ͳeG:ju kqeʊXv3"Pr}4isPzP^ys.X(CgGͪV:ӨԝcE(O8KCEK8V}K.Qxf_w+e4mG';ZŸ`)/èo179r?r]黺3Sho8n;֭R3SȜgȩ%G_H0h~+% -2"Q/Ev`f!D^OIWGͲIϚ1wʍ.aP8{кf[QYU4G"Fܸt9?n[5UU(,O_t:HCDэ1<ngߴk#M86yzzN/FT֎~v)J/׵R|Ժ~rG!O1QH؍sn""ptZ-SXYV CF,Oe&պB!A0'!JF0ga, h9MG9a {Ïh8aZq +w";> #!߄PKSK'TG~1<^?3#~nk<c50G#>_EyjuSEgX% g *K޷o ?zm|c <ȿ0q&zLKyNQՎBƚ38K 3aѩF)K,׃yǀA:k }ژ*4ߣ{@^T|Ce{Y6^bO|K 7W \Q7~a0zU`Tt۰F`O .{R/nQ\r|,@|ӂ[5!BHC9)ӸT,ms_=عKCL97ʼr0&g7x+9:Rpߥk[]wJ^m,3vn!4dle,J0UC ]*w#M5sh/t)>bb ưl\o5YTyN>7S}[㋋ZjU9g+S(1ۆ01b A#yq+[rU_\WB! Cn6HF?s噍׷׭1GL=n/ !b枮6婄ydž9x*~mLfD7-VaA@?C(O_wT@C^Gb`;~rF {^ʰ( STs >[%yN]QՎrK]a?d^>&q8只9V'KfyNꛆKx&福C~Ǥu5Q %7õZys+=hT0#nU9VB$(1Bl.HSRvyQ_W~0jI~kFïޑ4^^QU(?W91MD,~oT^ \|]99zeZe;|_kM@\Tz}QUf: !,{"\ْ"Bi AćGf,Q9݌ze!FrP9l8 yz"eۖ!,k"CF =fYr*g!~CMՎ#9\|Wz) fL6e~#y۱(@b1Lڍ+"b̏,E 2^ !PJ !2DDS3Zk{cV#aZ{C,2j4`2>dN{/ <{7'Z3~yzb~ps&q}Jêbw1fEKn]W!BH)z>\;ukwg;xΒf9'xiԼ 0۬U֊O9{}mr~Vk{OzPZ%n<=6͇1:nZɞnX~X݈jy^?}1$2H˾˘YSzR;Z1tKg}lh].=6r9|}Zj(O_#`[5o,Xp@OU/&<<G{m@lKȪ7sKP~ͶjD%P ,IL^ î0s b]pfjHZ}RTA2)YA]oܼ . kNuzbAw% j,ƦüG_̐w*Q)|]W9w9G K:8}G6xAA1 fya:IM"BiȪ߲ie(ȈRQ}s)n-oҳ "b i+&"B!}7 nD+!B!#m瑃'X"ƭjEC!B ba߾~=mYz3!B!|F,yqRm_<QC!B!B!B!B!B!B!B!B!B;V"bYƓӫWkqܲݗgIvy1`Q+nFTtߴ1{w=eY]w=:P(|~}.obW]J>*N/w2bػY{x/ ȹΆ8v1k_wILvY/քQB!|]W%^ظ4e/l1Rr@t6yL۞^ ' 6px99_ɖV[Vp?ET=ް;jm{|qvG@LR ghquRQ pm[h1޹`ڬZΟ7Y@+im}a͐Ά80aYa^=Y'ީ3٘/i!B>Yz] J>)Do`;Yj)@-b7v3"6V- ]ps]mb6,01ݷNݥ#cYۙqAhYd; &9uc4qmHB\z:{EXm!B> ̛d \Ȑ{t]ǔ72 w9R$$AX<ް2BqjdgVKG&+IO!uDS'&\{$ۢm;Sx$QGE!I9u7kWD,ov$~U ڝGy?]cZ[_=Y^{;y‡}e\ͺgԝ/Ԫ:d]PXv3"Pr}4isPzP^ys.X(CgGͪ*bzLIVv|Ju)Ǫ"{% B=[ܬ qi^˪JvtRUm#g9O|ggæٲhJVAʃnXm2gbL3s^93if:p9@̰- rWMɈ;:Wc/a_z%?6&WqMү꫌zojγ3uLln[1s,"J^\o IDATވNTB!6ňa6L`Z# E7}ӊ49is/2 0~R&=r7_kuX8-BbNy mJr =`RNUOWk]@q~NX/IV!=_`ּBQ;WgDiTB!40Di#`,,ݚXA-;;6y-`L^+>wNdR|U|ǧ|u_0jsj6 㶃0-`y"?fKCf"GFx!,ka8G|ȇngK*To +Kzm|c <ȿ0qLKyNQՎBƚ38K 3aѩF)K,׃sS u21iAr1eUQ$f: '1zASuӇZ exQ<ɦ.& >ߔf_}炔d}x= eҺAgDLT7ggܓ4|q`s\#!B9)ӸT,mϮ p܏!cy#|)Lowt`;L%QLY=~ߏ"b \JUm\WcOy0h5 -WUL =>.ږi;/zZ9p\oN-TF6'(ѶBô,F ݸr୐0JAb¯mu&)y|MW݆Ґ(rk[׵`e7#B>m" ByH0ZM=#KF{4RRPDi8¤BU''(stꊪvܖ+_'i5!&k)T??ַjO?]ʖ/5sl^W4M_@ţ9yG݌_s՛U}<ᗍ܍$B\(z D[i\,7^ v3!7u [;{a)'x#ҜGЯacۓm _!ͯGŲ;f*d>6oU4Pd)WuWkdymt{@Ӿ$ SKg'}Fl%:8}B{HB!syD|8| rT@ba7c^}YT.8 yz"eۖR,^qg5|ҚZf_ KGjʨC)Wz׭nUָL60Rkh`ڸZV{$B6D(jFu|oxŐȤ"-.cfMK9kylYΥ3>n}s>v-dX|{ۋ/݉L-ڎ7D~,8S Thx쎣=^XY ?%dޛ%e`?f[5j$FAFaW_ @J9q.2l5E$-|)b2D}koCW;=71{ꂾ yX-qsAI+˾D0=3dA6=~$I/h氐>5h7f>:6L#VD$BȪ߲ie(ȈGF#X{On"5fs!B!'a v^|+DD,}϶FB!B!B!B!B!B!B!B!B!UeᩥXaoxZvlGEDD~]m jʲ5g7m_(B]OxY}]N-"" 2_=K7Y3iK‰P7 Bw+Ӂ!PigCkA!8?3iFE!Rm̩S]W%^ظ4e/l1Rr@t6yL۞^ ' 6px99_ɖV[Vp?ET=ް;6c;{勳;bN_8׭ELSe2v dHx"8B82Y?b;'iC;w&n33=jϺ08,LmX`>bogMk& O!t-X3|NU* '?|N37C!t>ͨ!B({9Ayl!~ [l]fc1eͫLč #>@*b0zVW(.(LB ٚL5HE@LEE!YlPw#Hv%AfA'QŠyD ݚwWD(|No_3n2u /U3u3"ŕ_sC! !a}ԟ ,k[,r nX?Ln;%pBA~8&7zUImB&UUU-]߬`2BS ލҪcZn`Ɔ`>Q킵~Jj9U;MġB _o_#$2H*G?qt.#|1lQ8fU|~ 5"B 6)SuH {$M am_Z-Yz=Oa>G_0 :xwyKthG{3Lڭ9iԍʧT22Y6r< DaEcU ܾ`'`1TmOW18 Bj~QJ If`Bצ}k RxUqa^(d@UN\k߁Ċ뷬M⎝QUcI칃 u -[o˵?kx!pf[&m"4Qq-5jTJ<uj@GkXdc>%+r.nL% :}on_p!ޭPee7X B0pRְ J"ờ.0-qF*R!3 Xk+=h%Ъ=9Ar^5|=,V7M>"X䭒G `('l !U LuFHU{ iݍjA! Ҡ'Hgg"%`*L0B~ncsUEE!9s64IASNj0Y!ıs?p{ϐ#c{/P[pdj#V+˻v1 \F?_ήv{O.E'G/bEy ˽:mU/݉'>$bWsII~~Z;^ge`_ $ &tzU('82Zs(R6 !l=S>̭]cI;R!-d v` {͡19 O9V^ǖ8hvGr]cKf`b`阘x(Eu(´Aip| ~ߘbа;}5e;V/zk^p)+@V >d N:OBm8{ \E)CX<-VtsHp߿4~D8S>(x3W)ˢZB!s@&2 ܚOjdbжؘ 1db s/Ni?&Ǘ< N~M ۞mSDž$eo~};f>?/L+mm{p?n_BAtwT@ )vT@WM Ȋ8mAjA*h܂_X' \|Umw_iBu?TZj~f, !9WC xvӉ]7d{0d#.-Xp|k^4~K@^RnaS=>hz?`qXTӚA x_;4b kOaA` BI*' pf0oe  RxU-px[C8B~ s:A53 F{S磡`W C x-Ҹ4YE?KU}B!e)z?xVjQ ;-$AmuT ]9|CnJPeۖpB(XHQ"XPA+"RJ/ФJzo-c!f!Txpg3\s޹?S-*7y]R/W7(5ꆢ[y6ǚe՗Fƚ& n^^hvh>??ޑ w>Um|㍭ָ=fMΦ#=3_O[Oێ9XtԠU]cy*cJ}F<FLclٓ,twݷX~1;AFf?Kor!"Q% ?0[r3\>5< HDp糮Oy6l_̺ݛϘTLo'~_.V,xګص4ALu]$8\B!`KZb6g&~8tOyb/{W\45{~3F:Jc:|֡;N/?߿cǞk5Ԗo^+O^m ߳5~<̨NQ+nSa^Vm! ?(ǟU--q `-xCXg!B+ǜ?6mϬd{Bym܊fse+/.X0ܼnIsN%i+43 6TkrC?3zm)ۢsW S;B Wh˾XplcG ڶiX\q h!BPX` O;r.jΌϸ={{3<Q4\K2cgo|Nw(D;'Y!2B>k4*pr;+bhd[`8"4qs2f**i/lGo.9+L ԃ[΁YS IDAT俟lH(B!7xVm$˫; +Ԕ/ڙaZ_ǀz/SdK#몑yS [{օ>ܾ:}e߾C4'a;| QSװ v_ xqxf;="Jk4T:کE ]'\͜oA@9\FdkSDU ,vɥ%.p:ۍ( Z 0:T-B!/ω{M6g;[AUo h4a3D8J8]w]+"! ڂ,%;BlNڷsPÇ149F[; Cp;zNu{՝NnsA> z|aGBK*0Y!oMO^7|[.L͟+vITؑj>9J _4J6Oi[eޭM/׹&7#^eDZz8( #` ,]j 7Vdl{kB.B 9B3 RTT͑5 T#PTX:_1lW`'K bwV\ʠ{{B!9w5L_P8i<+6KKS6e+^ Y7քgh]rN}7$/Xq?_]ߧ~} ;^Qq-L|?AGAFa_x ixB7x501/TAds +! fAm(yQr-`$xN߱v兡C >|(zk (vw=ro>m]$\׾*Z@.a=D&xV!B{ :I B!ĿVBpj~II !BqxH@=`<'m>,-)!B!4;4n5Dj5]L*TN57 NÃ>Rɧ-:9ؿ}@ؤ GDo"'&ӧw Ow#on[J6E=x)m7yB!ĿOFmcvP̊OFw)ƭhVz=^b.4TB>#z0kc@L^&50qWRE@hOv+xe_,8|6X#Mm4~q]yʸGG9gj'+uyjC/{SF4ܪw=45ƷJUkW1DKZɵj]{5C֪\h-=Jt\aݵkJXh!_FC'ygE\ uxJ8"91'l-H4~M磷-{[)s܏-stVc[0p%ķ`%;TPS :1^d'o AXfH<ښ~=k{g΍X)C%(!\'攡S)!(1Qjfz1*VgʕgW݁&賳ggh.Pe`6>ye|j-duwFoTf%9qQR* ice#5٦A1qNUPnr^cIy)XOY0j1gG2ϻdNs,&qPD`l>gdnmr,Y4B!\9U5 wЕ{j{gWaZ?mɼ5{ G9?ur>_54'¾֞umcـgT`KϘOlMOxzޞ ߏ+tցO%]zDe:bwȐ[ os>/h]#*埯 8yK*CG4沸9>m,MG?Z9UF^xzRMc={<V: ,2Uh"U+n Pef]~)d3ͭ"Ѿ;3*)vMkz]{Jf+Kj_`瑺g^*|bZc@Hhxj 5gw-GwZ+?3r3֋O{-Yg9k4G`V!h&ƌÏW p}@L?'ƽ;%[4Ҟ'ō0꤈ef;c :}pio`1g8ҥbS l1y)jU jC5A~-.-qf @W)& :贸1#LUxrԑı11o'mf O'dg\_/{ն9Yh!BPp>GU&[zB mc|#VF:281VWkXYg=l:;ZVSg9 S2“ak_u:2VߙPmԍm*g@[ڋߙoh eG?}oUtty|SCgEŞ!D}R?NwOPX{-2Hݯ2Pwo_:} emr ˕=7pU}84yI&ZA/yޚe»yμeA-5?ɠV':]̱G^ouo {&+(h=X1ƹgh">#.i{X-3OD'jjb0xUФF&%f}4@W!LKlǣ~}.5Co,V!לM /w}mr7]8XlFOS*&+m J-zj}sDB!p'<:m`gߺ~C^z^3m:bk/枞׿Cnvïfs|e65R>l]  3`K\b~e׺klD}U:DtD[Vzݑ3ue,Y:Ėajnf~a'$~zqD/+iOT~m4U1;yimy e(zI3 >>1>qa{~_ [^}.[j`  0+(w703]ڵ?.Uo;|垳O֖ Y,\Ӈ‹{!Z-4ep$DYG$yzA/{T~1x+F!>aUNg8a,ld@p:3'R].kB9"Ғ^:2[2;z{X\{MrM`M2uKʴ,*AJt3.ڟz\deǶ;}ԪsR!29mk NŽq xVlpçmgV/:_ QкJ`o:iIN_l`ӓ-N$*_{q|N:q<b9gfΣiq=S&_iϸ}dU)qJ̘9.+)@rvb|5xoY^nh-C0uuGkRm oGRժ(餍{<|{1-;q1`k[^/*q>zϠ^zhRhnUIȤTci{JXØn5Q&3{rFq6eL6g/73ùVÊl9-9^9qo[~=[48/qI+m>]"":PYSrsKUtfNNoCVsR~BQ H>yN45ul]x#kMI #c\\i}k8T^vk6&?@̏'ܴz{ ܶVZ;rcp|K,kC[X Kea_;TBڹ}^I˾ܑvۂo۞tέP^o|ؿGRKV&pJCZztZ>T\\s .7&0`hʛ}֦hʴ* eGn-Tmjzk9蘴9,;h朋2hu:]=*z8Wa!zc*mR/xiu:]Nkpʚ5-: ##W HRf·f@Ӫ\z{?BX5XE*$71VB!3lJ֮wzuM^TK:',y ) m@ƃǖsͱ&l1utX߄ͫ|3 Xͧ;aRہO{5g]޿,]itcdgk=azK?y֟2:~{ֽFoHw$Y]!W ,yj<{zηpmUR%E6/x )gLڎdZ^:t,'_Wx}*נ`*V.9f| `ݞi6AlfqZ 81J['Vd9r{U{X6\۫GμX lVꜼ>RB!H_%ya&7O6L[Nz/l4Zhjf>c_XeYәsGV^w[?K#=3;h4jc2gk)ǫ̃̄_m ?Yp$^ u{5ٗ_me1z{oۗp&@%f-Kr.vͶ7 Uٹqy[fN>|قRb.vM;`lSF=.6=4iY/%(Pq9iE꒔ us.-Yefs*3lɽgŵN%ж)IꅼoR϶sl׵MԨ IDATג3v1'sQB҈U`+Q\[,B!JFc#]5kJ.B!|Z GuWk=^OVWNJ!BWBp~kTxYYm$@B!O'!( SFj@ř2%\شB!B!B!B!B!B!B!B!B!3xmڂR1{ip<_NƤ[R*i}Dݪ%fDJlV}uaFZ4RJZ3}p`rr~mfBxM~eQ^-j QPjOe{gCp'V7)B/b'[,U|%B!x6i;W xf'#߻vkV4LK/[1VquKMs*I[Y=_1 z_Z|ǹ[-e[tn vtjG_q! >~t M6V{lAS6 `0_8-(_v m3robZx:_=ؠ2ު } |C5P0[Dv^a?gYdB!hrRIK*kޤTœ6FV 7:>.Bk4*pr;+bhd[`8"4 s2fkLh/lGo.9+ ԃ[΁Y {LV'p,#R埈?}&'C!BBϪpyost垚E;x6T˻kPU9/sߓli>|$Ps]5YC#QS_pkϺЇWǶov>G'D{\L_!`v<Q 1`D[N]>`r&닄ɰ @'dz1&W7֮6L]N]\B kZ Q7u/\Q;VV]`DC%#uR95!Bs"E@h ΖE}z~e#v[h[޽F^4ciӽf;*ޛ,v\Gz/!{BBWk9koY?r&R4M]w3C&"Eи`[`2l5x;b@g0`"́0`Euy0y!?ކaXvTq=s|u0:0@s^׵r3b{Ю%|ZZN/ԃP6@(|kHS+up\}[PϟBSS>DA_|fu! 6B5xfXWuQPÇ141<GPGEia=l˸7 Q<` ,`+Tw^׵*6o삞_Q`>R`e'tJu(s"Gu>r"ױ*> v !;wz63o]!K/[=kjIUy][ _`fo<ڒ6q ]Ι?MXs֜J}Q.olHv1R[v ,[]=d'z; xdr? ,|eLNr |hhX Zg/#HN:fr4|`.ٿh >H]ĜAmB!)j&å<aDT wC(+.jes/7^=8̎  u 3{A(`p'@o%#-*6Vr^:W!\-d'Z Bwuhy-` ^fƅ=ԂM}|CǶ.^kݵO7VbbKaP`WPHhMML-vhӥ]㠅3'~4k/jb~>ȳ6xY o87_瞷I/t8Q\ʎu۽ 8VĦ:Җ`[5xLۯdȅX 6PhA*dޢjUrNy VЯ]0)1A.?R;-/AlEUW!EC}h[cu*}fb$>n $q iP a~q@QIZT*6@ !<-)ziud|ɇMJ:W&GPkϚzϷK|ԫRt61m߄x^5uz}z0Q:,yS ڐV[r~::ιsҊVW+Aפ@W}AEfh[>Nu INK< a Xa 8 6[LZp݃[/60zC7V pn^<λ$B!ݩ}h jcG"I> F Ǟ7$+=;u-p~%>^Ы#M]hq yғnZ= }nUVoqg18rJچnQIu MW.匯 1BUNjF1]?C 8N@]8v{]+hKQtp==uaaI οԇB!XC38eݢr%UhҨN KyuCBPn(*' [fL]})/17ap*4E;ielXmuvoluN+CcԚ+7;nl~MC>=lck_\Nȴ>&8P pCW8 {~t m'.ȅq Pݻ_ hf8 o0C U {u n׵G =X^pBWݲ \꣛+7ϫס%4NO !BlIk^l)OSetV@Ёfo_g\sLg:z[|_~8=kʩ-߼WrPRLo6gFu w.:veI3fX qf:*1K0:AgȀad  `30~rB, W_ss.m`?$>/9cNb_hr6݃^x=0ű5Ba, *e[;!zb躏nRi2>  הJAMp?׻3z,Ŧ,1۾SӻZT|\ZF[c~>Tc 7_sߓli>|$PB!ĝ/wA5}嫣d}d1Jĭߎ1o}4zӕ4R*G~aȱ9-}ۗp|RG>~eYL=n랑g+kλ}-IJYOhЕKR{|AC^yٿl)D^L.ts;)]BIz0/ooRֳ̘GRu%nZsnmoeJu;TڒjIR5:!BHsurmG私WF}7(uս2zӆ=SRfupڐNKS:4|&C M^:68A xsJYآ{s]Q*;@TM}2VoI~WA[ʺZFnQИZLv(X_k%Jvv[FvSx셒=Q6e=;GU/ +a\֪s69Ԫ{X3J}$_>c̭vTK~B!y(mr&Y9C1Gɐ+8toWʲOD!1mxeOG#e2yyNʲnWՆSǂ%9<ɚgVv!nWR; Ӻ^tj}L%4Z=JeT!:vmjuD)uV->7Ծt %<Dz}DM RԄƒe97nSS\JդԮt&B;E !ָIg36ih_[? ]ֳrpr͎k!JСmmɜ'28ƣ7f%Ƕ$} 7G+pW֪ޏ^bZ،·PfRW[ثYYU0BOH[}2ҎoZXRփB{0e_u<Ƥ=%lZwN֪4{ߒ~a!QEL9Fh~).jc@G-ӫiIG3 |Bf$Mw&l:w7^nl2gӳHryuRq;(2C3{߻ݶ}^bnoƸϷyQa=X\/x̙9ւ[4}sQbۢZbk=aPEGyιZf I L\rl׎|vH-lF֢{}`ҲAT{T3byp 3V=Pa5_A]*=WƲx͆IfXm(YbzT{3ZVŝ*'ZO!K݉x<\0-`U_ѐw녟'桏gLӀ-ng?ۼ7qS!je(飉m )K&,`-qd?O~y/~>ԭ|ؑM-#snrەW1pHOt[z2кu¯zmI*㈆9t<꾠+hK ؃UqQ\Jue[<}/d:M{[S~Bqq] TyD)e;f 'L*gã:)=(ԥ-~mSsV%ciRo+\/ry>!}a{sw(~Dͷ4/Pzn$ vR:~kƋyjuva҃^o˅蘚jR*u7_kS6*e;ٜoŌ W?_uQ)ծ=*>6[ݳu/csRʔtz{#þ8Rʜ|ް+OoR9n<A?=]ص4{οyh|/,J)r|:^ڣ ӗ<aUJ܄#ppY&]pW5+Tک-)*c'=B!P&TJtECM+<)\F!Bc~bR|~^ew~۽YJu!Bt蜨$Rk{JHiE)TҮo7,#9B!(9oz-:vny)$n }DN[֯(B!B!B!B!B!B!B!B!B!7.=o׾M}AkLǿh&_LW77Gi˿^S//zI4]d?f4;Q+ q|񎌆֞Ңoh{o3 kg{foרŮ'+c{ /jY51Bl+(XT)ҥHYa),, }]f9wEZ*YE:WUlT)e?Xq߯,:8a'6])GDK|ra딶Ie3ϋVm+TXq[_y8Yqc\\PF`᧹׌{TNW-SI_ƾAiګTl=Wn~ͪRTf^agLsm9Zج8_dQI8ŤrS`bg` URA~պTW}v|Qoŵ{N{>+㕷QqU|jr>'TOfR>w7e|V5^#kx[+8]ժri"Lu|:6kxѡO)'*Ƀߊ} [E:W ?g+ y g*9@;6J('7ިgVU+>U IDATobR+3qχT)(b$2E/a9'UTMҷYrRJD:sϣƸlW-,9JsTx|3Di >9*Trc//ZV~!:kW Dir豅n$q=H'O.lĀs -DXkvb؂""OvsUI-=s^g{qfL+~o*;=rHJҙ,pi6nej7*a~>GS/= vt3g9bz|)9g[T.{7(iQ3`@>[POOK?>܁_$[lkJ{xFͰQŹ 6ޙU",1}HVWVqݹC:Wwf+k߰viZ3yFs49 6<yZu>ǵ2²'&le,* ߝXڜe|!n.=-LE|}s+I=8cͼmt?;}}qcRZ2.Ե*y@qҿӈjc+*MQW;WC7ϝ,[2 $9t|eiϲucf/WkivQpaEF"?GZ5KʐDV忓B3rCtꠕv:KLJjl:Dz<>'(ێdWw5mq>1]GR7,^Wg]qھ3\U-^R"n%AU9Y:FWLFlT繚⼳C:Wwf-ou_gU\改ׯۿ;^c3QpuYS%Φ^>uE &He$\u +>)Uk(*q RŌ6"Z`ݭu>$w"SU H*FgfM>Nc뵩mĄƁ~.1KT*x6G4xpavZ)dr[smh:EߍZhD9c*:M3o- ۲PG5d/;ͭ94n[U$ٔw+\i5SxVݗ,nFW%5s"t6TuPv㓢Qn׀^[Gއuiy 5c]/$*WՎI"?;\Tx|e |Yml򊲪Tw}2"nkg"Z&:1|`ď}[8(p` sEN%*U{k452FfE1ݘ |YmlfUYX.lPFE̺t[a|*nûG)}~Sv:$MN4 G5j'Ԝ.ܤ%ƻ>7w[qg©'r"ʯM D+b׷.}D%bJ6j4yo#b[9Z F_E ڵp=tw[k wdJ$,wfY=TW] D7r͖}g_ňK+ÎS0-v3 jtV:ٻ_CD >*{rE;{ƃ>ǵ}˄+DLyx[GT~|)bC:W\6k,!g˯@D7[gqc3;O+Vn~*~}5f>M>uIcO_F"=APNjljIYkxUo" \yw u:d,ز_Z`*SM)VFSH{aԺ;*o.9$EDסw.N%ڳe+ Ok[%ƨ~Sd'4S9'-X". vQ+Gʊ;eɮS+e/o[У)k5Cmfu{E"^ uI'!"J"Oyqi7o>|Ӂ/SMڒ_j{vwcZUevSq+AuZa>߶h bnMI+UY8>⫕MtҹtY}yih͌Z.dƔoރ(ɼ:⇭k3/~<1n2Ȕ\GGQ#$,L{"n1C2FDA*^ OZ=VfϮծs}KMħGĐ*vܝ}jlo)?u[oG [GZU7J/ f(H4!=VH \q; ( Ƥv!'_MUݚNyB΀x>fCO@!pakƩWS"'=BW쵔[N-pŵϥ39gޤ53=y.r4zpSD>0'MFmi;]>n+9 3Nyrzϱcr\#'5>O$qqTފoM+} iZ[7yYF7d>]5xsQozZS 4?k?QDĜؠ<Ғ5ҹjqC:厤AzX                aM iL+g*%\ʎ :caxE]ж5F*@ZTxCj,.t;ۓ VQTnMy>G;iJ跗_|D|0Յ"\m S f" K >)Ĥ'vBL]^7ʻ<ᛂK>.χT)(b$2EJh] 188AJJ 9B$Q~2h_Im<$&A9vۓo tN- ]9oG]xn-!裸`ʃg| OQ6**YwL49ve 5 Eϒ Yoxe wgPlϬ-oڪ [y:4)i.lܔ|' ]p3Pd<(ERPrG_kvzG@#?1E ?M""')\EJ=7X)2 1?@'!P 4.XȀդhu?:oCM$q=H' ̋XPV^vT!Tk\qWlrƳ*u5 ȋy(5clLT7qϺA-J!PfIP %5Hׯm ' >Vs{Ƅ=G|yS % bV̞2y"yС0~R7nۏF~S<]~v*eՆJB{ٌ3C4^5Ƥh Yl.NZ|-QWos##7R.Yv97sRo8z.bֽgMfWcF9`]HJD+9bҟ"ʯ a׭1&׾@ħ^#=:Ծp$Ϸ"&صbΔRX.FJ*GKF b+ǎވGDEмz"o98Y Y俑:`.Z|Ģ$V˻KIbR3F]f~q5`fsY#*aVq^}֚RWj׭-Ԙ2YJ_GW:M\1o"i\F{RgKA|<f73fLv籗_.qZ0)|&h7ꮺqrd0ցv 'K F]`ֱ>\yN5m\;r1!+Z)/dYQk3`'1x31w bƙ1 7*\=oQ8hNbҕ<' ;y!bS&_oKD|6hac~g%5¾ٷ~A!zK7N^"&תP8͠Y;XNa<.%7̑KWMqW$Jwkwѫ۔ɈQ[Gg*޿ljtQ_U&jF{tDD|ur~'6VqMI47tVM$HzCay%0HOS`_}kZe9b+[/<<@f[Xef \vH:e\]aߝt7bo{m vPv҆ gN1/C|wrUQQ2GMror Ы3rՇ~iS;}zC/g+Rņ|)9g[$b]!/nT3Q?Ҟ31g |H>+3Q!Cٌ).kԌ!ٕ,^t-v-T?&W_V5u01P}:#+  - ^2ۄ?c] 9|g/\ 0߷f\=N1UHyy; s rD ?o}k}]H{U^ݕDlv]3g\t-R=v^\HyXk/V&t Dn5Xtdie@h.5ͯ?مMu1<䀹)&{ \*twc:lAѠVq-e5E|mP. asq5{#d+NuP۸ReIl+]*dY6FA|Tɍg$YyB3'K O{b_Z}ԴS ktK 0 $9t]bڳl{fsqsv\0WKyg  ,MBҤ*\y6{bE~k|n;'Wϟ0}L&P  4vϭd;I0g`#7Qp ,:JszzzsLm<4[9K'j LY:&5UHzNڈ}sPtZʏ#zPgصb+ 핶߲IV暒po}}ufۥ> IDATGZluP۸&<~,G,?3]% WZ`hm^tԄeSn}[V8T-{Y0 !j{%zQ^^0X4XmB-6%2joU%4bc6RnWo#Ymaq}~3VaݡyM EߍݧJl:h ì""R뢛4 &0b~}c3'sNVidY ֘ /AkGA!wK"SQuըZVvچeҘ6~Ӹ7@]}TqZiW8CWu !+is,A9A z6<9 XwΧ \uF%7v?m yH:doڙt"Z&GxjKyo^4a`u-;.:}tYq~;~΃la{| ^ԕ:}W3MYބǞZ>Z>ʞ({-JS#jtmf^ j+}v& jPEMGCՒm_ VdNVid ֘JDՠ:7@%v&qc$P+@e 355#yOrC88L9S/'$GwUVƕqs'ww* ]_4l  >>Ӳo1 9=A]vڈPbяIþ=LWϹr-~C^ l >\JRfN>yߜ=z+֨>&-W+eN]tmyfV_d{絷.Ϭ׷wmk#,ωjm콛jtȬ]!,ߴV:mcZٛ[|' |pM[ɹ1|_J Y=kO:0߽}6=y1Љ;QN tdtcS2 \3OViMwoJuv0}ܬU 1g 1KnN;">u?IL϶ ]|IMZbCW!ЩZfy y7٧媃yƠU2)t{M)ĺ#ӓ }sTqJ.8_w1n\>(+[@;ա,7S;'Ӳ5 )ok#  /&qqݽm0mg?D΀^U~w 1|IC1S JoN.㊧otܿ #\AA|ay;L}?MQt9fڼdı/y# _naIJU ֞Lj"b늿2/CDĴ{NicAO/ 2%|#& R]ַgҰMGJsbNhbJINq\DT=[=!ǕСc~]:,AAAAAAAAAAAAAAAAA|ljQ츠#8V<[;#dz~gV&ɴl$2{Ո4"";1?jS4ZUvs2x!cie}X%<FAQYyN~=f}CMi|*]ۇ3JI /daSzUbwd\5ŝ)-;m}%%%J4ʁ?@ܨ_V#ʣ<  *")A0*h&&5L@9$'HIIPr>'7 (y-kX3')Į˜ݷU߈y<#:CV@Ymz♵?QW[_b [y:4)i.lܔ|' ]p3Pd<(ERPrG_kbzG@#?1E3Z|V6*EDENRͣ$:kW Dir豅u 2nRdb~5NB@hlie]S7y|qk+Jt )2LUg `?hҷ6Z|II|Y\Āc(|gU11wGw6.0/bIC[y٭R ʭV+ָvۓo tNLv 5ؾgUj |P~kKg3٘n>b/u39, AQ (!6)P_xaQP"k)/[2;iG]ٿ}ύDXH-ϲۆpD =Ǽ~>Z7s=1峦L_{3 QЫ1CX.$%"1l ςc׆0hx1i">jmXѡ#y]1ƮsL>ߗww1T~( 1;e3&:.G ]D(yd )=rxDTͫ'1=@y?FjVuVfaV@D7[jR:c9"bŽ=Z(ɡh,RRԌQ׃?zc<"_bsa+rǮk\e2gLpg79ekMQ^~Xٖz]kVjuƬkX˫S&7sN4  *-ɿ8k_.f yk gV3M -\;{W_gN{tDD|ur~'6VqMI47tVM$HzCay%0HOS`_}kZe9bLf73fLh 5#a9sVYa!a6G%ҩjWnew'Cx Շ~icV8_@9 N#j,HV/|)9g[1' 1|qA|5Xq9F]dDjX@Yq% b+"ʮrP3ٺ_(G:s FoLJ]˳y :H&n`MԎ Yh b׹\4r({}*.*ɮFi]SdWȤשo׳q<3kUաV|jAaskWřLow e_39 -wZS49x" iᜲo/QqדS1l%ҩjW=gc6AD9bKA&j/,g[nj^P~hwyP.S LO\U#S 'TnvS3G1~>7F׻DK/1gFIvԔӲeIv^łc3ʹs6;7N}*[Ey+΃*ޢҔgߚ١yO%,(-^Ŝ0l9Fy12|l%ҩjW, mFA˾ ϝ kja. +>)gĆ"kyg  ,MBҤ*\y6{bE~k|n;'WϟӴfB08ڗ7DOx|O{vE粴g{l翓SxF6b^[sYv"p|f+g#-dGMy,.1ćDJ[wFp;`[2W~ ׬b=Ȯ{\$+xo$+sM}鿷gX:3ҏ{OV#-JT:m\In?~_#  tA*` hpۄZBPgZ ;z/O'~M.ɕV3-LxVݗ,n^0҈ pjSHe_ @lpD k㟱kZVs^H}:ګI$w"`YM~/A3ԍMx6G4xpaVG @d *(͈ك̜:YeJ'Xcqc@7y |.ыLEi#G F+55 1mqo6#|q<:  ><@xjKyoY҃T|=[;ӍIvr_{E1f8wQςu :-@ M߷+su3 g.?  =|.^}R}>H:doڙ|'jaWyw:[8F&̼V壆en[WOk5 UKƷ=[y:YeJ'Xc+i{V$|#YɗLڙݏ2rfFֲRpדM>ܘQ/ˆ,5ڋ'OUN޾aqĝ\Cm:y2Wޥ͜|97Bm{VTQG}L|[69 \3OViMwoJuv0}ܬ4Q/_tZ'w㼦t fl?8VB0#HSgdlG 6%Cش (EL.11~e{}h}zX[9%.rJC\ 56ߏLO͍Q b%|_7Z.UVZƕI׭v|g p2CA7];0 n1C2FDALy']"x-A̍3DQC?#7Ohire?S_]R|iC1cvu8ba*jOvxH:v6=NCDEvQ^wɱ$)"J߾s6v]ʃ"NkgAǷ0@P1} zؽr!QͽhRCBM:,-JwtP~ҕg>fJe;MIv+z%K"ljó(^߱qoάQ^M҃;k+(> Rmİ⅂Ro;%gc١Zo#P+aM7~Jz  [ʸQ(0Zlo)  (!XЫ3WmշHE _Ґ^Zm7'WP\A ω/~Ц6|'4s{BU>5lz"oJdޠ;;6~3?|{E\\oԈCes)̯d/} m!` [y:4)i.lۼt\PvFu7<];F3(.о묝_e*ɡv̳3QS9?1S7yHqkzO@hlie]kQgr77֧JNAA E ̀iz`@aWwǦٕv+"\*T\h DD|Jj,#&-Uz_-xj];cbuu4'6V>c̆ţ\eQdcZI[D_s"f۽|֔}o!z1fF{'-+﹑) ?gz #.iRz;3&׾@ħ^#=:Ԟ t<}>U[xǠ:rN0渖[ e መzyS=}.  xn?&Qg{wfn7/Z錸D zX?1$} T՞yG ;3 wr|IDATsjꗜksPMM* uy$Gm9/|IHXcҕ<' Uy&5sE8AA(׭=q (25e/ wc|DF3+S:"bmmmeZx6E#n`^Q|ޏkkt<9V/ŽU<8߾v&#//rN0V^v_ V׶.=D'kwg˄kqs4ae:j   Ԟ:$םu#B zN ,՟~45sTߗܿ jiR'#vX ~rͺ(ō7O]ѦɆVXB#$_wbp߮mslN{veQB*yfīma rh0`14;OwL_$9tvҞeY`[3! C"$Y:F"#6Q& ]@TrʕZ1-xVf >_T%aYr5)~1i5ThxQ?zsH1BƸg|M:[ُ{vM ẖ] Qa<~-#Vo  OEhD|q鞳WDCe"l%X:Cq!n\f]ǗqgCDy.6и; j||jYƎtǍ$D|{&̀}~b?N_| "\ZB79oNk?B3u6WWѼČ;;N?MV~mp@~4o^8sN"W5-w?'b6;+7[{wvq=-y*Ypwkb^苹9ANVk9L"AĤuR9"Vo  Oݷy !ǖ9d|ljվ^rLirt|G'ݸD5{({_jkQ{gƸ8w#Sr1+:Lmعς}wQkX[K9<}Z;K=N!"GosB59 vXHo_^ܹpD;̍ooˣ\D'jwfۮGL?>̡ Ӯ!b/z-;=(ED|ys߂*盪S mOܘ>Z'G|/#Vo  TM~KCr۸xAA_GX}:zV~w 1|IC1AAA|V,{KB5pE6/1qvHBė[zXlAAA|f0 xasMLT "bNlЉUML)!     >h(JvX+PAAAAAyAAA9AAAh1wΖWC< {US:Uӛwt^ p/aZ 8AA =ϸլ}{sZN[Xz.ѝuj3AAAMS0ƭ=nں3s_߿t_UkѩAAA|ryϮY=k< ́njD$  W:>:qWssNB Wg 3C5lcdy1~X"17xz=ByA2hmQ 3<Se3GǫvrNjΜ'ֶWLKJ@} 9:9TSN]Juwqw7okH;9GswvglO_rgKPc{rYeYHD|gT`,&'j$\DĄ_Y/05j.4\gjqz}f&bΣ۳ⶓ"#:> \~RDs`ӿ޽Ʈ4xJ y/SX{";'>PO]QɷEyVw BW#6 sؚ/]t=uǓ[pn!G<'O=jUY dҞZ= .ߴa㇇1ܟ۾{&a%jcQ mM1,0.wcsr U Tno,7;ZxizGD^e+;獕2%.[0YgsJǏu ;>UC$:N|E1$%Π+e u0ޝ ;+'$q[ ظcH4w<.P.m`;6!pZٿ_(ڷvy˷,~жUǧ*oz_ϱk]3K%12éYb羟ݣ WeGK+46}XHY`3T4.?:l咡"Qʨ,ugVW)#LDDL9y׌Zd(pbr)CRd'u$"W D&)dDK[DG :-fSknrظkb`;7j§t=:c[8W9B5ƨNDj""ϡ_XH Q>5@քy:^w76ekW{w oY>$]eAmLNF$xeDeaBnvz%] JzS.TS O~u>fz}Ap+\jr.A#kܽ}!JWn۳)Q=71Yj7yEn VK>mfzXe,Kuߤ5uLy) 6t#GPMR&%su U+\H:fMпk#°;ˢG'/sFNn&j"I2V0%_~Du0Dԯ^BH۾c}iB[m+j#Ͽs1LPE3DĎ(Z}EQf,YC֝NY"AXwh3g֜p9\lzlr !Y>| cFqt_]*yl·8&|#!N5WǍZeCm?TBNLWIENDB`coloredlogs-7.3/docs/images/custom-datetime-format.png0000664000175000017500000022721413055423327023472 0ustar peterpeter00000000000000PNG  IHDRMvxsRGBbKGDC pHYs  tIME  0l- IDATxwTS{@B !vQQ^ZkYQU^ֵ`C {P]|N3νSt `0 `0 `0 `0 `0 `0 `0 `0BfgFExqMLPLFg>n;Іլ"TԭW^$n Qe_!ʳ">K E[PN@m(,lF8Mis<̪fX0m Fz(> \HՀ6Bhf< BJcl飧JR)*gY_jŮ7Fjw#$?ΰN=s*8ՃUv'PNjUXy0DKtܘBKu9']^K"T"fUK1})V1 xo"!_Rt)Ay=nZ߬rLV|h` 6|[0 cx?ʓdw\x)~mM4VB(ɱ]ط;\w8!tuˢپ"{1E]QJ9SY1I6Bmdd&1s̝:mƜ%O;z/]v߅ƛQiT*s]KS&z"`#y?a:ZE!ַgTiob:B(MVOekߓ Pjktޟ!K:4ʹø Eb8lnEدZZ19!Tsui}-~ e:CHoV%RM;t? !2:FFCtW0 ;뺐[24_S>g5sp?s4\#>]k^2(;M'?x6BZ2]aX->@dC!$8M5ׂZ_>*!xnUV2w.BIR5 MO{٬wJ~N~F$3+gu?s(ޡ4GkZJz1k$Pn`*N_jC`[ %ouf?$_-v=-C(d3*;tE*:_ 6,`0#[|lWD =׆ѓYؔfiϳ~t{H"]M4\ΐLpwַ7]W;aeE!4b4ʪhNlhT iC*ck%FhT*؈}j 4i~̥u3o$˄-&L KLV>pu /%_ $6]#cr6Lڃfys@֌ 435W}¤ s݇t/&w)6,`0S3Tj=&~xmZ^nm;&kS[<&AajR$ @2LͪP-x;QIM6x{n R*OĎVNf]m/V3ﵣ=V6頃-üZlcq4ER9O:{m=V]oHjo<Өe*~Y:u{yhlڵd7L3{qb !qN} 8$t]հ$nqܜ¥~uB ,v^;%#$J}ya;zh!$p{TgjI;#2JfcQT=.j@p8T[OSthwNOv>+¿bE wUT?ܾNmO}uX%ƴ{7S@˵%)R)(M iTJmTnsNT"]ƺR!??8q|!+T1s%UŒB6`QZ&ZPEv?6dQic.Wj4#Eϒk{kRysDaI.re*dݎ{n#de'7++IJwwb>lh3LH~aR ۚG$Xj.z+dS͠}kdkCqziCQ yjf^Y]meY`0?|?!UgVI/yUL3Ъfe@G}}kןȬO2i:e6\aqh;zw;MS֧u[wj'9)4SGwVyQK#QlMzY5^q^tt1c.T t׷ԕYDAnbj ^Ny tЪ4 Rg>Fƒ¨S)/W4֖gUFۺGO*K+vYxV˧F.阠;wCеoW }Gnl>҅EhtX~vKSLj~kF9|Iwߋ|mj oF]xs9  {Sb}7m9WRO .@P[w`QX:zO&b@3b9hq{[yN:h;h;hp( [=7țP {w?;=ֶבv;U@OW`H}Y Yt~QaCըZOFfzUjs:Ŭ4̂$y7}vhgq&cm::nx']%$6z&ݹ_w>yw*G) Qy<ꎫB){[G(e=T&9ȔT\gR$}kfkCA"YὅNl@k`eqQ#]?xL_N?w]Z "$Y,vŕ 9Qi6#!ѝDz;Hc\wu0ɓ-{R7 gڠs8FUǜf2`B5W'R))"ԠǦMZ(m)wDFCY(ekʪt0 ML`E\RgԏM!\r$^eֿ T;~B)p*?#?-r^'C' _*F($K(i4E9US㧃Zᠮ=_֚FZr)NjojCqzU7~ *:eeJz=l`|HnJKG +f1C")I!,Ҥ8$-0=B L+N.L.L.H PbٹIB 4&2PyPI*^K]Q@dFRNcSjF^/Iee;L$!y-AuZ ҦɊU^bRbAB=ǐ^Ty/`giH*|[{!vUV6o6~ K(+ǣתs<]CNOv5a!9}}jʞlx'RT*}~#X[תEm5?Dd>{ ,SYpCPgu~@vh8Iv:4S?7P5.N8\>M٪VgTptȝ@R!42"D&+{r;8bo˹ :O lZ|>?;.Qu{XIևgT}sBn[NR($@ >v>yѹg\֝0~#[G_- ^V5$wc}Ӻ;z 1L={}Yef !Ε (y}. +'M1|/_?9/Z+T4:t55Il8fJQ ͹EIunq?3MZ(dwAhxвFzb~Ud@PEEѺ-*bJasgdT6e'?\`:dkӣ3a@\A5-G+f&||\íɟ-F,{*i(DQ9٥U36@ze _҂$%@Ue(B.E[nQ+#,@lϺa]չeK`ڀ?\/++iȦ@ai E.a#~;j)T$Д9,-@ 0/9@R %Nwg9>s3+ê_7J7V\^8"azD(M4A#QosJ SO€-<ߖ@QؙP?۩=S*)>IV)ʏ@ hw7߲go;wg튶@/:؂_OsC#m훰ֈ/>zpO9iѹۡ7oYR!PxГ|,zTeHHYc6~~׶_VQ8 *m:QݹiFF HkID\\@,$: _iXi쳚Fe`[]Wr˼6O:9گSS U >,`N":HZ+~G&AT:#ATlx::oAZwXsadZV=b~$[W l7bBI3QYF$]Pjm 4.h}WlmJ5"Y& e&HTJ۶oKgڻ%# "%*eIVӜgA@b Vv7fqhǝi/:[v_$UML2^).*J*Kx#ֵ9G1g .gu*~st;A6xPg2*6dn? *s&;) @m ZF $.Qſc_iĹ x}Bik-Ӝ}斋(Lf=m M\8_jptm]W3kL7gژ,_}fJI'$ L\U# _[#՞[`U S)>uҢD5FMՆ6)t=3-_I'@հMܤukV3m<{M.%"4=ΫJEDk1VwkmL^pG_H~`ݘmKhk:Cmm4csHܓnp]a7O[ M*HM}W%rL&:?H@q<#0^FWgP?}RnrʑY:\EkHK?\ -A_#GO{@7#Po*jqhgXS 3Bv烚 MV9l>zbGvڴnkcD[x5Mӫ譒Qġ-@)?0k;vGCYB7p5<,JIRO&'tXi{7'5UJ;뚫$-W ?9Xf|$Z؈E6m]ω#ڹyt3>8W$ĉ }'g!KrH ;b|S+WMI!Nm]#&(fFF取'f+6|Z!SZ#| ul"I {jhץg7(ξGMhzroN&`օD|iGyh-"UcلMBm zv;]ibT[ "˹n'n}Qݺ.=P! =9n˱gLn^\Nr],lnŕ{3Y<#8;rZt\YDy1I0箮$%hqsU)wȯW[Hyg9I2igvsZ#X2Ӎ> Ib9ȗYG\z7]j!iDal`e3pсD {|}bO+s3i{B@e:oҠo& @1 m6:1i:;Цe2( հ'FǩA<w;^MFկmNg񼃜FƵmYІ֜+]l-< Ǟ,ۄF /D!q~J+v2l*8ڤA[<@(Hcu2GG|:ՙ~cُr@Bwy󴿸'TO0E#PQS~}TM&ͨC>B䰋M+Rz-;QȊz0zxQ~V%a)f3^Y#Pھ4ω[mϨ>W ýõUxj,oɉGqR'ɒ@;r=<@~ciZĕ:ʏERzwJwJ_ِ[t"}~ޛ;Tpy9Bs[~LMI_R䦞s(ZP2Ǫze/(CH|ΕI^,r]j܁|)BEqG X!zPt,?pe|vTbS"Lte!$Kxyy8K%T~tI7cze:gU>ɯjF,mtkB18TRT%E߼n U EybN'~C7PFGVY4~ ˌߟu7{O e'P_C3z(!~ 6@(t)v`4g~Tty-L9⥛%WjF}',XfZq~Y1L!=Н[qeUg B0`~,||r ϓ@3?Y)k{ޕ  ;>.軠5E_Sq4W>`p?iu2˼}AC['W L{rw4gS#kIB*K{&Za0 `0 `0 `0 `0 `0 `0 `0 `06?0*MLċnf~}<}4qc5:u2$I//dRy0ը/BYĭn*. EPXٌ:wZ:ì*jv_^|p6zBj= b.k j@kA3r_xal!d1wQXe2WhB(co'G,  =PWJK!wVD=Ʈ7jw#$?ΰf=s*8Ճդqc"B!.յZO4*eKO:?[л%ִ9B{J0?oUWtn+*y^m`0 `暎\o, tG$V NgbSw>o7@]ׅ< ؒQ)z'̵f4K=oI@(rNpw1`ʠT .6_@8 JfNЬ23y uωkQOj*FЭJFE(@4IAQb69BgZҾjP"wheR^L{a"])QfE T~淴|>!ѝ1բA F#ӫLMIU@ewRݚO(y3H'm^QhD*/`0fÏԓFf->6hc"ĄtkuɎ,lJL˴CY?`߽ܚ9B$Jخ&A?.ge뷾QJ&12(F.Ouew`4vN'64I!KƱ5Ȏ7YLw  mF2/miݧЯYNz3) HyY=A@^J@,H 3mNGlmEb̊ȘU˓_j`0ͺS3Tj=&~xmZ^nm;&kS[<&AajR$ @2LͪP-x;QIM6x{n R*OĎVNf]m/V3ﵣ=V6頃-Zlcq4ER9O:{m=V]ۧiHjo<Өe*~Y:u{yhlڵd7L3{qb !qN} 8$t*evC%.^`Igy/!QCͫa DE!iއ{:\0Q4wddqQ>ՠzJ4 }itt`糢/U2[;Wj@qFdWYrHJo'&Nw3\{Y2"Bm$x/ LhuB]~pwxj4Dw''s8X?姚u74>< cV-f"@2т,I%&o*5Ɋ6v&TY6jyKm`0 Ys*Juo]7Y4`Vv tt׷v̺4(+[f%H^j茶k~DZ4%ak}Z[ͿuR@3u4{>pnoW1T>&,Jִ17;U镊@G}>a`ORO}}N]/N$??/X$i-:@锧AN~N ucd,):b~EKkmyVKh}tbEgu^q?|zYj4ʭ z}o}7?d ]{_{5 wx+]XFg7_:ϔ*ağ3ɷ/<txזffK݅77.3 Ѱk;kU(ÎE?|s 2t Qݞ!Dx&)):CïY)-~eXBeXPLFEMsKHKw})WmBdf91Xv# H?Ǘ4ՂQgn ljK>D+=;c]Je継<ƞve9zxd:ǩA_` aSlޤjǬLY<60 lhx=ΠZ[ R¸1|b K^% &cGKaw %|C! &H%>}%AHZP&BQXa0:S/nέp\jp+zZ2Z9 Fiv2fܥöMoco{fSI iKKK-ч- 0WP½Q܅2C @׆m,LH6@ iǦ3 2t-5fIt[eiSz}X)տΛ?{iv9Cù28|.v‰_Wq#=]9^,?A3Ϯ4Km Z|-]LNc{EN:=lsr?@PSv}";"5>bXN=ods.gK0CVtn ]X~==EYQvqagqAN)â@^ÊRks8 B~^sS[K)4'7p΀Ltm&) JJ=]!:Lrn6v)Pmzۑ!𭔢ON2[*Gzp5K`A&Ly]ܦvӻpfAjV"jdzInH\_PhT=^2nQ!鮍3){~^\۬|>he{.S=f%h|̪/`0悂qcIMi)dyt4t5lׁ>f}HC$ )QRVZ4gEViiххE)JP,;;047I(ƤSTP&q?/*I@k+Qjl Z" @V~\"@@1s#$R¢%tHzA4Yq!XPo1$dUC2~^K)Y ^ȧenbʊcol\>w]M$C5eO6QT*J> ,kʢ6"2u),!s2~@vh8Iv:4S?7P塈N9vGPptȝ@R!42"D&+{r;8bo˹ :OՒM}:g'>%=~+#)~N /$)iae\9.θ;aG!#jAolVKff !Ε (y}. Ůϯ!XP&xHtka+* 52rbDKs.CWS-4YƏoߜ[IK?>}*/_ +-HZD9u  SO- lGz 6g0i{_ p`3ߜ߳W|B=3ZԚdu^TХc{ ;ܝVtvGu?qŌ*e]չeK`ڀ?,++iȦ@ai E(F>/Bw#S-ϳI)s.UYYZ1 } QA5A*a^r @ J 4(7pϢ)zszS\ }fVlU_KCZ@oK(Lt{ߟ꺪G/a+GC2QlAi΃Gs}Q76RY}tmR'+8˞}jYO+$@Ƿ*! 9T%7󊛄bm4^fw57ʓ iNim 5 Kh$޻[g"dV( +-}Qң2ll7tˡ^naW'g^u|AsYފJ̩[$VIkO0Ҳ$hTJ7 ڂO::oAZwXsadZV=K7IԷnĂ_7g*':ITz)>ը`'h]>kEL  LZi$Eo;StF[2B~*R2O\Ƒj1y侏/VxJaEYawoVzܙ6cկkf NRe4 u⢢DG1n]Ӟ}*M|vbz=7GS>t9ig_T[ގ[- {ZW]W_" |[P>ѧϒQ 0h|zŹQ\&Tt0l}4g\g>x!5rΖiXy42hs/y`0{T/NhZ$UTPZ(*L(%Vܯ)C*և,?Jwtoƭ%}XE6g4nPz%FaQ}9 nAVFU K~&V|ES }$6~qViŘ8ouM4p@v9>հ <@*<&[qtm nu!/)O -LucV܀6ܤ<`0fϡZ57J.y%%ۚ:qj7PV",дWgT76G3ƾ;ZSJe -Ɉ(4WH*°il$2Sy T%#|vUCN:P!#71[-=!͡Vv@jʳYuhQ=V4֎KEt֪:wy$Ǿ#6}$ל[ER=7mM/81M*IyMn]5u@m.Ĝpuh-!5/R9ZF>965S˪cWM9//vy`0 K;:EgQHz29J{ݻ9RRGY\-%ibT\7')ݘF?/R!8lN9uݧ}ȣ97<`ŹL&!Nd;9[ YCjXÝZjh$H qj]7!XD002*<1[6P 1CԢ-_KcIjPSC.=[ܸAq=zhBf֓~ɾ&2.8($#Mu Ib9%YG\z7]j!iDS{ޚJ8yp՛Qz5\\5;.]~{$$ `0M>~6tL>o={"۸>n..V?Fh2c':yԩSF `0 J]n^}ϟB{|z˰?o|̞8!6[:vVKRa0 `~ hŧf =p~xL䛘Ѓm=ّM`0 `sjvw0լZ y4^[R+6wP VNmiHIej$ɤ25~LBiXZ D%53ی;y<-N]-r[{zPƺ6DHTc?;[Y6;9tŚYǛL[H׎X6ojVaXyF#DT;wfiA<^[m{eמkHjo<Өe*~Y:u{yhlڵd7L\1BHVƏ}r~h & DE!iއ{:k5a;#2JfcQRP='4㞾G'D_XǨIm2pU9RT'fTW*RysD!I.re/6)No|$L? _ԂIrȦ`0 s^Fx+,ڛ2Ku[ oi,]J5m[$Da*|vGW&yH(:n-ZQKP:p4SGwVb9]Je@QzTzY%hj JE`Ӿaa`\B麯Ԓdd!}bmקʤvKMn-?yeJ,H 6%K̍:U*d[7辖CXv_ei.􏍌]$1<4  k[z r͙$›[Iܸ0TvhXw]W#%b/c ZO*JaѧCx@_?Ip:X0s'GazuO矗͙;d<ÔtӔ%خ`0 Q43>ƛќC?{C -;ywl%tM f2s ⍝u2w2w4R PFy1]{/עg:68cn޼ ` ov224r<`u>4lU] LBowCTSa[|ZVx㽵 PfA<ɛHV%gq&cm[#utvOڻKHm<>M-3s|`b2Js$IH@ @R4(QwE}-k]-~kwDٵ4BdI2s?I2HD쳙{](THĸ[v*\{(uGp+GuY='zl6wsY6y\ݾrBC2?p؄ ÊMN @kk[cժ삇VysK6r:ioqژPo9&x5!B0HnTey#ftc^P_ɩ@@H: ܵ9BYRcȱT4WnƗ5ֆR 4*&!rt18^3ξ6s" ]7µ bgeuVlyv1!<8u4ȼ4)@}s>qU|ejr"3UN=v/p#GGY/X4c#6N_5S4^f;BT+׍@0,iw7.pէ0Fx{]ӚK/{` mnP~x#6*ѧ?!B}5˷U%sfΜ"tHR{|R MBngխܺФu18J0ӘU0ȉq΅~ 1gYNZzIqj(2UZ8\_Rjuy׎ k6SO?Ѡ*W}md 34zc)* h;""U^'4Li<7~Kyˑ^f4qG߰Ǥ.I[ڭ.ۉpUh5plo6RFOwϜ>Ӓ3߮p㨎X. B*SUត{G~U~u{?^ƫ}Sӛ;k76'QRU{]Yk8[?"Bbt_# [t%6XH4yUPMdo>sC=}[Q ;ܖ^س˾5/ַ.Wίn'`@5wH"@2 !Ny۪+\ M1+kmm<矒}}䂱gᾧ׸=Ƙ ZрuQ\=ڲ9 R۸Cܚ1Xqǝ_Ń>vފO xB+Ƶd{+ͅ+4JhX0q-!_B!oS vx,@Yja-V{+7nkܿx΄E_ ڲ賮_oV59N@5~-!ӢGTN"kMTFC fk",O#T.S꩔:m˾W_,b/_9i7f'ֿxn/8tpuڢs"-;iYqKOG Py~0gٮB`cv  B @C2}d"@̀2@}]߿@Ԭ[__{񣵙_ jƪ)UV^8ҿ]>;|jI:"NG^qԫ/W|k?6ЫUY M5o|"~΍ NtL9ܻ=gko;Ҩ2=gE7'ˡ<Ѭ9y [5+~.NUգo>[P!Ϋ)?-\[!Vc_ !BR# D]ߒNվM0yJ|!e!ZG-M~UJfŰZU8-{_\~YxX6jRi;\ac/euU r,j|}ypgvsKJ }E~a"b5nDl̑rWs{?5pZ]q_w-x ^Gݐm헮\]&?V@oO!By+\f>/Ws:!B9Bgȋ&vJI_xϲH(vaxB!$b:Gݽr׾6Mnnc!B ԲK|M/*W{\A!B!B!B!B!B!B!B!B!:D@48+XJQoHt!:FM{f̖2U_69@,ZHF B^V.+S}%&]we;?˕S,E?7J}}4~դpougޱ`7s~9aÂ/kU=UZpH#$1)ɭl|\<{yfBOJ?+F 9+N<L٬xwshc7$]JY9H8":yiFhpg;~elz8Y#H FٻYpK>| qlԽ-gۤyG@B I`୼vsv#  ID%`f^@B ΥA܇'@ p8z *zcIIJi,o'spU5u?wY#@:In_wlvoR|HDAiKyȶn?O\,- Pˤs2z=BHԟIldb=RxKk#8@.])HYԚD2)+V)֎^$ͽ>.6yqxn3B!/zh*/#w KxL ""J5|ußx8ИD 1餠ԈxX5bV&CNF| E=OL O)WTK6DPL 4^,yGR$Vu2qG@'> AihA x8RHIU 71B ]S˥iRN|έ.Kte,Z/[jF Q P 4jniu@|i5:!FRiBu]tRJ&q9]hzLiPm5g1i~2cbvnNEO nq r҄VjHd~l2pb^mF!?BVT)PRg&Q5)8;J"AK^zNzXK6)5|/T !4@c݅S+:&4LI;b^Ox.Q2"E_*:GR~sjHa$h{Gt;k&B6u6 4D~zg0~oVK;i697Wv9[U*&Q_GCxMR6#!DnpJ+G+GsیB! 9mėyl%rS21\#+W˹z%wݽgMBPaGXL ɷ +zC 3iR<BUҁsM^+>6.7}P Ѷy$, J5r;@b!Q)rϖ{*IJWINϡ% ۧ'znJ 1#VŔa wp1" vع)o#ɇ r/$:˩u?qH"B*Q/B!Y(V΁$8S#2;Apr;CiP|(k>HiA1&^tb .Ojt($!% ̟(M*-/P"*-W8=ֶg%D_ =?<ؔG:$/=Ң dSj}Ih4WPJ2sǪR_}5IE‡T3c{5 *;8lNc펧wlyd*T*-4nmQܠC P99t`vP3 zp"By;g @/Wu\i\R>>'oL|t;FD<K/i(鿔K{:b\{KFG>\\qr R=вC޺Ns"ѰW-əR%*G&\PC^`ZUx͟2 1`pW(~9= IDATx诓lq #$jfh_`GP[$@B 靍ڙB!t9lm BgS{; Җ n-ʻwvYCRn| 1nk%M6 (ڻjc/Cc^ܸE1nQ4BꭂJ\kTZ'@I\4&c>DvWIvzת BF-/-̫ euf3 %g/V3Ũ4JB ՠ b{NxM]'A4BI_;9X.M[sDGB A`GIEXMTB׏Q˜^Q@@q8XuGvW1cn4\fJ];97nd@P-۬QZ=@)oaMV 4D @4.1id!ďCm< 47 8DSI[+@ >%G?t0rWf;TcHGP3NHJM#@U@r.yW/B!٤}Q&KI as?^l8w00oWO<u.nWH)4p!RF'%wI#9>›Mi7cL;+G9@'fHs ,EMPXh3x]6k.7bhT% Ke^NXU OoM_j5+`Ii_";h9 B. V/:sنOs?DfdYcˉm-Dq&!mZAjX[B!}| 6ЌA"MH]I '&DmpaLbY4؞85 ^P "cB!z #zpf6бK)+| GC'/H lF15yÏ>VtS'~c=kpdI\!({1 R5jU-NKlشeQwEFL+-oڔ )Sh:A[2ېH%RfsL?^mtxQ @cRUMdem@|R:_5Pnh/ S/'U}z+9.*۴WGړVw#Gvw~Pѱ2ptDDIC̤y~[C1V}W;ѩn'7+!tO'oN+V45BHG0VK mzк<1ˢǤGu'aiZ]lMֶ8%jE!1"%U cջ!BCzh*/#w KxL ""J >$&Af?p 1@bIAIj{ 3`śڭLɇP ]=<Y{΋R,֩<|luA\иؙa& IM,% '4u9V1IՐ3;5a PfM}5a>**!!@^s%^ F`={F3{jUX 8 ajpf6zՒ"TɆsNZKS.9=!|مn} &-I]_1'.gAN==uiU)]#9N7V@v_f2ٺ7\C*4dG:\5A珘o974,g% >:5 y\{, esқX/B!P9~(RMLj"R*E礷젉ѼdsTDa{U 13?.,ii9e:2 g9s!I}X+9 Y\\䂰 /mrɺ7i=^ƪ"B M1KG]M6oײ:KlR2]n N76M ZQ Q#tl.䗶7 <^!B QX9"L!VǏ< @'%bZ:T)wwC1dcP7qx=B˓=J3IHI'JJ JO!eMǦo*3DǍ k Cpkwe~uG8 5@]rw y>>D@vsc5DgZUYuukսE[4mUIcgQ*W}m59a&XOJpN TB!yNgcYD|.3 KUۮjϕ%uペ2ޔ!5<" qT_.ͿۧbF:wɵSޒQ*īK\Q:s,w;X%6:z|Δi/u#3GяI?,)l[T"bk~T"nRMrg5$zݪj-s1A:*0Lpw[ƀaù7 AÜ}GC_Sol` U1:c>վbB!sF`hj=߱0WhwwO^} Z)@Xw,)8cyvڻjcARl,9܏sc3ϸ\|S }ZPh_~=*ˌ fLԄ8ShU?=YAmܞhɊl6TE_YӮӧrƄmf ՠ3*(k2;8`&,Bgv eyƺ~X!BдsEt4i>++.t `W~B ˤ"z|&nwF c&XxEygpbn @i`̘]cl91ԑo!p>Fvk]@IK ᳴>_Zkۆȵ-Z&9j]!j/[9ghr:Yc?jSK xlkn,R|՝u_tumD1fyjvx`b5V Rhevd4@"T7qg/+BA7J1v8)[!lի A}]1vlD#hdԹꃮWH)4p!RF'%wI#9>›Mi7c ;g⽲Q 7WT(4'r>Ƨ*OʤafKɡ>-|l3RVb̫0qE1S*'O1U'IX]ÑYb2kb7싏Un=r: 2Hq*v'fHjG](mΌeSި.8"cGw=QaKa]-wW9a"A9M{7nA6VM;9<]*ljXpudM?_rEE+}r~juj|46mB!ne9Oʶ%B|) @H􂓞%Gfb'h^G*bQEShRN|Զb97mQgѨ4NpƣʁoOwd< bf󖕊*C\C] [6v*yZ`$%-yoؿe;\ac/euUUJָ1Aq֢ڞ*. VV64i_+#fk4qQ`∭k^)Ԭ:0p[~4+#Wƍne-#fӑ|A|QR$w}K;U6v,^C4daTYפwq %&]\Zx5z~JwK _Sef.|Qy 8i-—gx?$xv΍Y}O>뜼ӡ?ŝԇ^p979wH" x[[8\i5~}c4B!:="~4A1VkW+$AWds7WxY."$x=[#o^\޽g 3t!hpZ8 4u^.< MKSQuR5YLMN:aԩO~rGW!~kLR̥O}љPW@ʜG߻a-;}<(ndEV!B2T&$NM ꉺ{~&cVe"z3[̒F]JU=VoTYN^@KFsH0~1 ԩOs~ؓt{?N!W3Ry;Z$w g;R5B!: f}Mbh4F ]#֌A"MH¯ 8lkUiw:2".Ӏ7Xsι4GjWR{YfzFoDz tk YWi>0p9qDR8V-5\QhJJgeU/MuP iCBki.yS41.y~dHƪ=[yS|O Y򭝛ޙ;Xy[OKޱN ERf4f85-Z`9QGk`0s|ᐩ0DIsP;/ \|fiٹO//k;ȏ6n0&yj뿿R}9wQP^c%OMx/GpIA=2 O?VƪG>\D[$}Rfe;Ga\9-U!Bg7 )3K5}j0K>5/Uc_B$RefIcGM$WKs"{|)A|8֤'Iګ} P-J< sTog'!n-LA9[=?S7:[J ;'?$d~f< a&'omZLz,]yCK=f<-xĹƷ?A×sh9m]Bu5O b;ߢ+vSm .₅mM swθRβ>g<ަ+D-WGuqOs~ᒗ 3!8v IDATh̜ Q%^3S1 W7#}n@M^p%ML#wUhHe҅Y̧}Ǵ142x ,i/OI콪-s"yY,wQc yYKj;o uysUF?Rб0?# _ _E*fG:'q?wp^!T2֯.mwshĕ[ܜ=s-ϡ¯mqWmp^5W3%m{vLpy՝i?eNxyo _S Kl_VO=wlXAXByNXxk|h|L}V;=3D!B"}ds1g :3j'|!DLK7Cvf^|( tBƚxQV\\b&+H@$!% STZP *=FP-wUf5fЌꁲ(!ƞuW7L]Yk,Vh;c% @g]t<;@7~o4t6衔 lG?5 &ʾU8ʳ+!zBlHjۮk? X<2hІ%;Ƀow<P:t/7o}Hͩ>@EHg|[]4ĤT-j6X;Kb&D!bYD|.3 KUe=W2Խ>37sH&}VV_D#"aQ@4n>v͖G Nq-%R Kڨl9#o5ZzFԾsՒ׏8lη?c>Y;o}Ń}ropz,1-F{lTUpt@Nݭ_m>Tg_4Eu#>Ɇ5/H*`g.աt@fzm{Wo 5Ͻ]"X~B!+s7 @eϦ4w,;)-!|5nkX`UcV޽rdoVLuƎQ =(G{>8n;v*O7mk)偨Y Gk36s\V_hR'nPv  BvY4$G&xߪ~Uv ̿o~Sc*T!k9JvqhʚDGB A`IEXMTݞPL**] DK"`]Ōss1d^sPM[ %~0/|,t*tDcûpVo7@l<k #@ `/8@ǫ@>ᵟ]eV^q8ҿ]>;^"BףGQ&KI as?^l8w00oWMSMC:T}hn- \T"p~- @I]HΪfz5굼 &+W9rN/κM9R"MB_0̴[?sƾ#*s/Y{sFݻŕ|nۡC wWlSj9!B!p7|wtݍw}v#kq5!B!Du)́'*|jLrB!B!B!B!B!B!B!B!B!o@GG,' VRP.DV8irs>Rƕ*u&Q iXhdRKeOWtq p.W մ}jL8s0xQ7|t`U$z/qb}>0MlpFP@?^0`D4gB!1{VGSc{hйB@6~sʼn).B ѳ>5ݴ 3t!hpZ8 4u^.}Ayj?}Z}ZֶT7Ԋ"K%!d_or9? B|߯|ɜ;3|$3֪Zîz/\W7Ym}bPZsg{긾ՕoZt,7ΞmR_zٗIè- 󜓩_Cr3 ;mDfB>yΑ8 }( %_Z !BD Ɋ*{:>Mid <;𵀃 F=*mJS*m9LոȮ9-3ް\Ksh$ qRFj%Bqc䨬D;J7\i82OR暃oƀBBGXG mvQи)1Qî5+:rQ n4^D>}_p0-L&{3̒B N s>t,9#]3a&c_*P8/`B^tV]3ƽ8?Vsu<,;>^>@InM0IK~@ÊH̋&r785xr2n; =WVc~6[`Ua*~0Cc;Ŝ .|3q½_u c:\?â8wB!W?1T4ʝʳ:绲)v2QL 9k_cdEU4ImvPj uhpjV;%ƈђrNTF"/3{Ҩ[.1:5,W8cc;_'X#6=>bDӹkUhp馎f[wj=ǬU ;a^%sr >FM"ylRf eWHiڅ1$L rsԵbq , TNbGU(V{yi w,j|DؽοG寻H>ّyNWqΎXB!9픉J2F~pm֯ڭ%cN˞6n쐥˞ u^&-Xl)"AvMFd̳G+"Lcg5˴Ȇ*;_sb+s90Kn(#!#+|m[J6Ɇ67x e0\5'! ka$水P=p̭獍E+V.W:aï_Hr*](eZ, *]Ϻ $?ņWwN 詽oWNDMh#W*VC5o>vje.*""IP+0Busl(W3is m9þs]&Qf>5_Wb)r<(*J]ݠ;%\5+7[Mp9j8u I<ʓmfs4^hCYŻq}cFݳv4 x}pNbt(5wG&Wc*q*y9}Rw!XK5v nylOKZy#slCXiom A20#ߢ^cMw۸ވ|8{Lk)B{S2urj|5 TI^miS?֬нZX [4#TRWBsv~]l;I9pAYGl9 pjkCLCaW-qfiVTҸniAF~eۛv[1^3̘͌| ?_B(f)IAkٟ7|4Gԝwj&0S%8 ;ꥄz2=7+2[~>Z#/3 Sq\}G$`C"&6.>0V Vɣ9%Wwb7aL%hvG>i蹽{>e㥜s>Op Ď`cջ:LjB!]KwJj#)Ҍ> c޺0jN*}yQ*HsDh{AIXC(޽=9TTm٢`:ͺi#HQ%,{lw*EDD)oCR--C GVbMqV6wn傤xk;s+=&6ը"$.,З#Qe`ZܣU[:׽U2qB!]okkSҝj9̼d>i״R)ɚj&D>P]^3FLUɨU V6˺=Pl͵5 *SX0TwnFo׽Jǜ ~ mh{| ga6uB!%ǜ]%9ػ\wFN3b<ZJkH:y5:Tfٮ:2/WR6o$6rtbV9ƀޟJjpA0r4uHh5Y>zCbǘ/x*ȝy\cޟ7t=},B%ɘmb֪Zîz/\W7Ym}bPwBv-qB3ҽNu\_7M{}yg6[g/xWd_j$uڜMiX=T#e$t \hqW;D%C91Qî5+54ST5rkP@I7J4e8B JX #T.N?K(=wFƨUwJtX /8+\o7z4ȄD!3s=waNfv3a%LEfIunw7 שc&=X NH=Y!53K%@n@ܹO^s zGݵwl h ^XۋXo7q9n7'T IDAT:R/<a!l05#wWg!B/5IV 37}Oەue؟[ԀCuoݵQq*KatqT*bW8+O(4 Yz˯Cťa֩Y׆qV=o7:cK%ES.S(O?7sn߃!Tpn(Rp | 06¼9.̓{GD9iJ @VDV1TPp hH7AT[`7!7zI0f|@æ  Lu/| ß'¯!؋Xů ^;:Gaxx-<޲ +q: !B|yN;e6\vgɘ;':-lBI k_75aqY3Ϯ 7ZKQ$3 s, Utw愺&2uelTǚGZ_A22RQז56:2͇ ?ؾh)`oP89HZP 8VC?x ~b6U?߁'jx+!.VG 6lݝK F-p<,BUsl(W3is m9s]&Qfa>kMFQ]W4 )YdtY*ouSQéTHQTmk, k N_ !*=y9f>|tW,]޸1ϳICG*hcwg2wƒp`mx '`Ug}MiZJÏ,Xv$"*xSM|fȂsÎQ~OtΥ ѝ <'B!yNCЮ*#S%){RO*ZwS\ݰE3B%tAysRN2\u{['fN%fzӳvCekmA{84+*TvSqiXb΃N+`̂wa~x]th{ ݔX8ΆbpP1DQM޿7Jf^$ah9p!BqJ׶RX {iL# *j|s\Zb}ǟT@tSl8=-"FLlzW;n NM݁c}/?_sOt RX }0 ށc.$F n4HM :pV~Jc;c{wzoAqČh_9@HK eB!FWOҥhi 4c,))Și.Z`S~ r}^foD,MizO9(<6a:[!ku޴ww uJS#g'VP*4YS̈́ș-uU i1bJF_80ZfnfQ0VZxƪ ouuS6~ST *b+:o6FXTג2t"V{/3 ^נ xA|_@dJҗ`<Dȅ;W p=@=#vR|=P9p`{+ ?8_g`C ,C=Lf$}ޣw8~ a=saEX !_ >g/ֹ栙f@1{Z2@sze.p qjB]"*i.bed{ѭS{37膀`~./z#Xcw f8z֦%w"h&^T"vi17΅pTC+ *vfZ6c*g%`) \tS 7M^½zlo+߅@s=yҕ9p1qK!B3 V B!`HCgCBE-OB!(qICW}f8xY4B!B|) qh0L Vr Ĥ!B!B!B!B!B!B!B!_o8{vߜ+]G+k?U鹅T5~!H guGG^oRry2{HۋXh!_NJ4c\sx&mn_HSTFzk^q~&NUƏw9<#gJHK7֮u40uu$sz0,qy#2Z6%HJH ҆Ϭ W_f[}M!+ 7!$ZmЗB7%'vs}xuhNHJ`k q{4cu!B%Qػ\wFN3b<ZJkH:y5:Tfٮ:_8u0MZmfcOt{ZvMRƨ D'aqd'Sj`u~a-kCCOs3X2[ە:oJ1k8o;0jB}b^4Bq9Y}ZZkصROjs&Ow@k]K}AtSEMkӞw_5gk-uO(/5 |\eK~e7g2Gұenkg>_k듦uzL#q^Zb@U#߃qEC!G` $42]2z Vz%lj~&T 9MQq 1ǝyf/o'9ng^sԉf^h7;%>^F}S̔>wg$V7~3e&ȸ ѓz5Ff\t4U ,hi2/L?/ѓk(`G4ax/̘.,ݨ{UoYQ]vOtw[kZ{ rNmL~{_#ChrO̚Is k_j#E{]ͫu7k€G2jmcu( ԶqujHcmP]j+vGg>=BfR߿ϞxdPk Iެ;<(Ѵ2hbժ1zOK$=u_>3#}J"x3Fնv%]tBrځ[mnS`ެ 2* 0Og|+9'󹡩S;r^zڸ]wڽL+ioqjfJ2kydC{]ܔV9XJ-D18:5O>ЅS7tpoBt$v/߷Z9=\B!Dya7T\W,<ߕOT&7!gQslh&JymNjd(sNTF"/3{ҨE1:5,W=ȈC _ }~bwΨ@D~Ϲ-Hq֦f/Vd!BW13QIoUZ:iS|u]qS 4.{.y`8|75aqY3Ϯ 7ZKQ$3 s, Utwt񆒀e\r{g2.ӌgnj|Mv_cЗƇZ== `xo/$MwU[hTP 7JP(5J1g:OPi U},V1 @ .SO =PDyOw)ض%6B2?kMFQ]W4 )YdtY*ouSQéTHQTmk,N*5PniB[]#dw=>>zƌgC vZdڼp*9#1vWsĴn]]q[J*5'[[F%>}W !򗓞J##k `5M#p]qe$+2p=ժ;0ʕr Ƥ  E+-~W|%2I p[;?Vt퀁ͽcX+Sż&B!ATV Ya/#Ic$AZmoNBK/>;3 ֖nM4e}YĿԨIUj oU) S^G/?ۜFbB+X2![i7*lkn;oK`lzJ`~MV#\f;]ADOB}/- WdnV[Zb ZD0I؁i. wF~vցE~oYAZNDƪU쁮!|ӦVM3/4c~ 75}M;흖ygG0*03L34 m܊ЮUYk]g)UlКQSh;rlVd.6\aև;>Kfl@[_wUEuٍڂUm)nc"v)/lZoNY[;wW\(Zye]oӱkCSY/ 8@([(kE=5 ;Nikznz@c+;Q^cO}[}/o:^*5)B!D(U iQ̋FԏY?0=W#B! x7hӠ~4u'^ҷw) XZ+B!c^ ۦ.^8ʙ{69 !BgJ;:^KE}\]TSʦ2[!B!B!B!B!B!B!B!B!BKv]if k8;߰ki*tpS^/u2{+N%N' 8a0Gg V `b]UB<ˀ>rU.;p `]jrzt 7 p1wo5`u\GOBqsu$cr ޱ;~dh*!yԬrJR}&gNO?[ ?uFib\cLcnB[mOwGݢǀa}U ߃PqX5}r&_p?gB!s2fjְk WMVumX.û8܃^Iu֦=]e) Bᄐgk-u|_Hw{-:zI `} \hߒ[/J#BŶcdEu]ǽF I@_ 8ΈzD-TT/SL|ݒvmH/|g8-!Bt9*+Ftc̕[[y2;>PHhU'a IDAT_9 oEGP-80@"ރra%xFX "m"< +`<} HA#ޅ9Zge&^=DxVDΞ5VB6J4|>7ص3u=nX 0S4bßG+g8?V¤^Qƈ~B!b9fJ8Rs]yųvOF`M/GM1a&uN$y9Oxf?HO.sIU 9*\7{ҨEqCkёs^>9GZ 0Q ΁ ِ,=$¯O0/x%x^!_`&C 1|.Igx^/Ppfx95f{c*h]zvI0ei2\z-.p- C< PA0Np$.\Mu / ۠ ݴ`;+a/YpUjI)P!ܐ}{?Y[wуaxᒮ޹4^߂<&oOm3\7Ëxx-'V/]B!D'wJ2F~pm֯ڭ%cN˞6n˞ u^&-Xl)"AvMFd̳G+"Lcg5">#٢ YkW_WzdmΆ)p7\x#Ë`# I (8 9Aj_t0Un@NMwPx0Z c ~PS{cʉ/=<߀6t N>ù'%# ٠^Q#r]#+B\ϭ>1/8mz!-cwk$ʞ֬:̷hxZ2NT,wvb}Vi*OՑjQ.V#R xN/B%D #8t䐯@>9,*qW鱈hCP acY_{Uu=Tx6>9Kcx<" @1^Qg(Haim-3V$B!~]ϱRN.PvU*Iܫ- :}4UК{զhF=b#/?r<-ZpҬPMť:p|~.}\Ejvq=m^>X/~ A9P *#nnowy&j{%h1sq}8^\gEj`14u!Bt8UeV>HcIPV`z@nn-Xqzu[SQ# ;>#ƈ q|'憟 6Co,mԔԈX*G[a އC l'hбMGq)x8V ^⼮vDZB!]=wJj#)Ҍ> c޺0jN*}yQJg9z"4=E}R!S~g=iZuo1[ >)zc7g{r6>V .u==?L12!7ثߴˣ,s-:68 ^g³Jp \sbh#A 7 Jn`mjWHy<_S0·}ޝy[#V^G̏ﱽ=,FA7 /@wp/;πJMػb슚h,<b=&Q76l1N,!+bAP.Eʲe :O {w3s9} @Ry4dQie\t"  jLB-`oIDS ߦ/k'eާ.WbWf:'(T_?n1=:_r@r**#&w3mSS朘s[xQ%  1x] x4Q0ƝIlkV}b]cph{}-)ZS\ ;@:=IHAAnU%w>EI{5Io݆H5cg BA9tٙxuЦ}7s1@h6ߍ\{.hPrKo~oӥKvlHgZ=<[(M ?[ ϸ 19/|:ܩwU9;Q)Bz6~[G~cOU;z쬻mIc /u[t_yakN"<&QEiI[>N-DDD:3 040-42Av/Tȃ别);4z %1A%*xOYUޗ';h 2lJ"  >54V%ߘ=ybjQ_f:1M6k;*n爘|uӧZ ܌GNA sisF×{kY*łЅMRY~{kB#JCWw4q˟c4y;v EE>#F[$,Q4ʆf#޷jYv]@hkE̽/ {}`ٯ{ bī]'">Z9<]\E"f`΀QσYdqNPymmb2ei"8:O}#T}{A9yM%M*֭EVq{sLOx{4  >tX2Ͻ>[AKjױsِ4ͩsc>/92\/Qy"?-C 6ubM{brݼ> /iJ7;Y^#@zmo=U]7/F,ck1@aE_,'1nŕ):ryAgf^3&B=b+&VUe96FTAɠ"Lw24%@NbJ~!Fl(((. <@}0ö ˤiOrIi=3CLF-hvjlJ zzTIm7)Yw/Q G=^{Y3&ZwԢGtlb΃\^fgZXn*<=c=Z  OJ^WZQ[`hm.R&B^q1 |^KMY %ڲ!e}1 ϦVw$~^}\,bZqSqhY[\N$a$u;9$ŗ䲊[fljY'ܶ_n @d ħ<^T *x?hiUx_`Ӽ!D>NшGA9Br74}a㐍(򄓛úS] T3(R7iaSc"&)5xO/QoNBÍ_ kwǹz'|?;d/w+K$A?Ǟڵmגī7ZJ51z6/чXpx= *x?pYUY4rNhG AA\a&o:1g>| n.2m)ǡ$DkfgB,^X"n]2kƂ;NːŬmWA:mOd"b.w[[f]i7v –Z YC?z+_,?g).T$ljFn&"o1%3&MadDŃ5M0|_f;O~sKDy܆qܹ|ļнKOvц7}Y%̓^Ń%ȳp 1ާ-b36k8OOOQx(;e/n b?:[b+MA99ۃSO֍hl}q8熕su& "J2bnLu.?~/E/Y2HN 91AfvWsx7e[v[p04Y}>vZXA/A꜊*(FJi{VtT:G͹lVUE g^-DXvefnL|kw'  P cu3D;QDr5PhD|s#e  n0/1g=cZxZ Y%+ORV:שk.k#fPM8BkWlL^4y:Eb.j˾k6ź<~ҁTbbWf:'@l2Yu7s2)Ҵ=X--ھXE:clM\`%{P_=~a #ʡO~qkqþSymͦU *zqTlU#?l?R<'d_aǰH}&nStה|wc׶^Ic]5gl,j;ΒZU)C Nfo;W1U5y#[5}|ѻ޻Us#w^y mޯJޝTtZy#4㫖F|cydՒ|4clMj{ =9@*>: 7yBHI"'!IiRRٵ|?DiU Y:!1GNjPHgtR/i`ߟ}3h"3(K=PY{2MF9R'gƔ|GPum4pLNbP{5<-z*qOt!&ePG!VCs+kkk CʺKc!]v ^a%1\DT{Ϡ6s\Y*7uT SO}-O-qy)Q׎,B+iI[>N-DDD:3:yo?\ʯO-{t.e+*ςJMclF۞AINr%+lr$yf&o;Z()G\ZU!SgvշW>e0-qϬ:?MD֝7Ž^cfͽsU2?\@k&'5VrTU{kB#===vW:G3AQSsC\9{r-+MZ#Nfcܦ.FLY,(屗޹j"F.zܯl|ĜV͝>kٮkҢB#-K|(ehݢw*,&TO/?v5 8o:'O@L 9+5UYYpo1ó Ns8t ]=Yy!"rVZss˂^.X^}=hَ$;{wE[[Ue9wU 1WX k8=&ٽϳ9p}ҵ|+&ٮ\!Mgv5{GluNƍjxIY}1Gy_7v1f,_)Oljem[aǡD4tk/G>bf^Ɲo*:1M6k;Eu W.Q:Gu):W:G0u)oh\:g5Xp~$s|yeǘޛi 佥5*Pϣ>F|4UQzS/ >ZT+t31#%fHZHUE%6 -A$JQٮ3nحO~ӏ"n;_}\-Z\Pua^kct`تͬWfY@ ;g[<~!y+5 Ei1"WX+*S*9oX/c%ʯu k4A^Sauј]e(wr1n}=0ļӃ-T: e-{"JΏ˲HĬ#0y0 ,n]ZUΕUV\W|?1e3w/cY-eT5]篥u k:YUs_B?:)vܘnKGo`d!!n/u(ݏP3/Uv/e =Ƕ񷞾Q*/F,ck1͝IrD,kd[AKt:WEz]<;Vo #|O+vg9!w-f+j(RM-v3g xMWҙX JjjxPs$ l-GG&{ERCբ39I#NYU McN2׿%-LE|}sf$ϟ/ݩQ/+[{k/;7&5۬E/Bݨ˜w^O/:e[#Vi\n}> 02/0ö U.xN[W^nGT5Y#F{AQ'->oRkUo$mP*6S:hΒm2o *b/>cgΚ1qԢ8:!{qd_,Z00ӗ;7_B|%9˦.[7Lk ]|YW*)͕+9s,g|*탺yOtt4ȏu7fYj\ 2UcRc/l(-06):rxTŗ̌5V,*ue3)R7iaSY7p6ѱ競 gviPf8K?`G:n=+ԩEJPkZ^#~ rǤڼD=訳67 '7Cu;KGV vma[zAxuנ_֐W j`fК͑`?Юzʤb2%9ZĦ.[ uE|c*s\Y!Eg+0NjiwX2 Aܤ“!{6{:_?…4·ŖeY1wJȾxQ^ UǤ de:V)wCAy6<9ۋQ>nLcp2r@saDOOOfe®[9r8xKCĸKfyXzǩ{tؠw$J}fwEZ}~7$Y7w/1i[.&#*lRA j4R>C bmUE_f_ٺ۩gH&"r/Ǜ[+sy{L ot2>W%SN%9mf2~j=%!"&^;58VKÌ{wz7} ^ox(PݩDĐi﮳ުG,WKIm}m_sqkSۛ 4Vn޾akZ9sij3k1[v=߄݌q}A>"⣅ʹܭi&ﯔy:1n9/8&-Hɸ?{xV.jTy1a3K/"`U=ؐ1p6J SdxzfV2tcv.=E+2ooC6` 7#Pg3d&~fLADĐ y\ q_ /MH=%U2W y1i;9Dxo3`zקCk4 |ooG- ISrFgM\FNB<=N_O"f-Rtϲo7o6o'_'οVlZe3Nﭕt^=|z~󘦆̇|DTd<_7!-!&H&oXl1/!-M5ҹfq3:~ՎAT|fX                a}ߺV"U|)w칔2U> +qow'_mc^+w2o"c8YMp !CDT&G\C.5LӪ}eB^{[Oes.ɈC͆S ]ވV.$ئHq"6bvzyRz3|+-WzuegS&Ůetn5NVwOݻL^4y:Ebno,msfb팛5̡I6L ЪFƇ4^_?n1=:_r'4Y) r$P]F&,=4#&w3mSS朘s[ PrU׍9&ʟz81mgߴ}S]cpTN Ĥf5+44.bVz=6bX77}FQ=GZ9꽠NS?ERsD͖G!N|жݱS\>xΘO1}xQ3>%4byBHI"'!IiҢCB&aaIRR /T)X<'?9,=T$n ڱ׳$:=`eg VB݌/D mq_<\@`~^^G<6}Zױ'u2V̢VϹ{jOUVi@V+ָ؎rsUz |1 P~}jZWs1}/S|1>+$@#A{j5trY?v4 x_u΍ٓ' ~Ul'q8 ozis=Fzzz~Xuyh\ܻ`׷ ?h`YVP{?WΞ6h1|yK~o1)⬟˂P{!bԪE/],{mDļ#.5{5Ϳs{ߪg-u-Q~߻1SC_]^ZTs9bĺ~IOAl!cF aU_QK~W?}ڬE͈Cɢ:1kBXcWQģ:c լp,ns b&XƤSDĤ3y]|Ģ$VۻU̥n1LoXxkk7CY#*aVq9^ekO)Wj[3lG⋍ TGWd>bmN}PbG]C;׸h#}Mi% S Z3ų΄/|[g櫞)=A>d=O3Dzh]k ̹n9F׳qù,[ިDV~TbmZilo%uIV~GX1F Jf`ѾX|M+=aJas4iWQ/: Ei!F\qH>e\aƟux#nsĔ]] h% SE$muӵ终AtqCJjr9">ުuxd(:A$(F,]Dcw6yMqhoW1wIxkF]Aʹ4= 1` BmbB%eY$b֑ |fI+}|{Li/*Iv ^&Ck'+n:wpMoFuZY+Ң=3*4WQ*S?툃3m&+#dkN}P۸RH,+].d96FTA|ȅg$9B3GKĔCPP51nW;s֌h=-}cFlVXfJx]t|NMsv+ki4튁a)@xlT\o@Q'->oR-r`@B`{k! ]MË  4|vϭdIi3CJE |==]<3MdGwG:ǤSsIM]$^TXC!EҢEƕ4;nhgOXt- f]iEan!yVB^H-6ܓiuFnςI(9X֖E)CӬ̨dzeɎ ,Lk*oUga[u;9$KtV[Xo]=Amᅭ4y-5eAy ?sJ\$ ʵnj`n`ZWB̡fJɊh1AAݗgH/gdʒ>iY`Qս<= ً#+f0-!/|= uQim\F4|Knl72fA_R/lx r1f7k%Wwo x l yH x"[맅]LU&iugH>9oޅ~_~A\ZW|ϗ:6LK?`\Pg- b7+ɬ[z2gy:{Hժ0򄓛úS]Tք@9֧(_2Ǥڼ3o[F!P},;o&1c tJ%+N$Wnk|+ΟfZ~xI%*Pj{YyLMO(3lvՋN+mJ`z;V߮  gô;%o|y[~c؊a;OXʼclgByf3/'{ʽiCg1W:p)Yisq`v?x-sLvs^AykbmZ7̘6R;{l~&H1nq?68bØ;k7\vtV_ϝpkek! Vڼ.M+{unTA$ ?vW!d׋{d9ש yɓ>0rˣgs36бYnkͥ7lJFW_ ;4nYH|8ў,ܻs^pY __v*}w.*90!xmNfwod!(t;&5iRStIsKCٿg^-Y+3"5W="Nq{_LcKWdתsíGUqes{/ d{IˀbIuaޜAQ(T{#V\c{p1i /gܰ^~ص⛷h[o䈈iwLlRl \~^_۳dtG;O?@ժDL fsyK'Bii IDAT}.Nwj{sA5f?L!"fF:L@ti"aS;}0rc[o fbƸӺHL*멉 *@8ru& "J2bn'Px)EaF91Afv|[v[p04Y}>voYP٣P] J;u,'6h܄S>۫,g\qijҢ,wLA,Zu DeznF?j"Q5x~ =ERZ 7=m>b, ,3#l~*#+a}RYWoWEpBĈz4AQeo*ymA9j"r(26Yl$ό)@07  ⓩs@`_2"cZzƴ5үWY|/#F.o&&uj|ABiux\Z YRIs.ADKggKS*rjjy^GDEcu#2|\ ?<ȭ#=%                 ނ02U"&bouqo\|_xfH~nZcGڹs9*CM8kv? %kV{: >gtMF翴 aI'o^{ _ʰ}:rJjbWf:'SWWשk.k#fkȳΙ3n֐W 3&:T*\ZqT5L{OR/_?n1=:_r'4+ r$P]و  ) ܿL6>|ψۮp5F'Ƒ?~}P>(v.X[qsz۟KII MtwUHr ! *Aw)C0֪(}^XC@$%IIIP`,s 9 g@½عw#N K 02h"3(Kclҷxf&o;Z(/1MF9R'gƔ|GPum4pLNbP{5{3xV$"Bs+w!2|sf|'Z| |.EDE^JԵcF:+I9wϕ Dij%+@dsӅ—A>CCs+kkk CʺKc!%|I Jg0lJ"̴~0Aj V7iRC_79d-Y,wL͘y]qx` bd>jOUViGVk\A)WGX mzw3>lG9*u= s(>թgӹn>bo}3(s$TAD5PĿIqBauS%.Y$DLyӧZN~:篩˂P{!bԪE,{mDļ#.5{_+9;}ֲ]2;3E9E>#F[$,Q4ʆ)^@̌I w#vw?G{Wϟ>m֢^f =p bn+gO}4R~I`5R,xz]Dm}Qy1}|+V]^Y ֹ k""I>O,WϣuZiljW1Ťfz.1%"bṯ[1gV"ZUI%sc !G}~v(X{Jn/6lG⋍ TGWd>bmN}PbG]C;ט& :z6=~8{A:. o]\%zVAcy4gobش:|ƼiY-NnT[8{ݐւZXoG;z"bcn&w$#yl >ycZ{VO$ Z-/r11鏁V{e\aƟ i! jsTo"L`.@|sbU9yMqhoW1wIxkFݒ4t;MC;=BcZ ES"eYG3``>YDv]e.ͺ"Ag(}0)Q4^Mɳ$Cձ"A1z?(ϊLQ%l\GĐ Œ]cpҰڼU ΕϤTDD#D\VqHUIv47n}=꜊$B&Na- \}q_&bj#ƃ\Z׊#J+]-ذkawQ:hsg=gbןQũ +>~>M<AQɰ||Xɿ;ȋ_go;k~<]O\ 0h:=fE4=Ƕ񷞾Qp^Xb;Y^;_IqTDmyE3gZYrsΆ5KԹ1xHɏ\BiA~siH g`ѹRPd?{[=IM'>n>FIvԴӲIv ^&Ck'+n:wpMoFuZY+ҢUA ZiWp{ E^ӭ͠ %Q*S?툃3m&+#dkN}P۸RHh5  X֕N}>LNHA&9of9)s?#6+-xb``@d` !U9ר'j'PI㛔,uˁe>i]ig`2t7 /nR'<>'=IƌPﲌ'5 HJ _fV,j\y`΃=Ovtz\|i/%&5u{1Ra݇t_ P>̙p ^N5ZkW )`0(d)|cK.h4.'0UhQq%Mw<[,AA׍T|}qYdBPZiV&Lk*+Uga[u;9$Ktn}oy{ [)j. h8Zj>I(9X֖E)C,u ϦVwB&ʓVɘ_9\UZ)Yt5&9( eԝLYrW=2 d OD3-bN¬|5u=KfК͑`?ЮztQim\ l?`ZoG1AQن6ыf,zߦuΌ9}?̀/o us [1l k# |g /v:d`;-nYS~sg톐.n39sSgȂ6Kn^{%UnC;IƏ-EYpuj`BxhA܌7tlֱ[GZ~sMi{5Ŷ]^j}]\/8v5ӳiK+1Bzqqfw=Yfw}92yIM Tuq7{z{CӃ  N>(>gf)n{FB)ؔWUH9bm%uI;D^;;$iH{ҙ2#"_hvSB^`)J;~5&3UWWO-}!VdתsíGUqes{/ d{I=t y{V"1a& {lN#f? X7!clfɔW~-x|۾$|7]1j4"bfۙA9DMF*6#7h&f;D̠Č#_+Xwar"$#Izu.?~/E/Y2d)EaF91Afv|[v[p04Y}>vo$vmg/P٣P5Ke3Mدݵ'TXg]wb3|M;3rZi^J;&ES :rcc^#ޟSĽګY#G=WWPڈa?➢DCO)Zoe|1_bZ/#+a}RYWoG3AA5-\%%>xv PGZ,x6N`gWAAT,5үWY|/#F.oFL,6~k ( sT?ѩ/ޏs ,b!!uji3>rFgM\FqEAQ =4ienmfV[ѓZϓ=Zf嚖+(00۽æl.}/^ssg^s. g,e?fpf7ZNy2lyP$Pt`I>Łs% sKME!Bø D3!S1Z{0x0>^`N.:8i7"6j6  Qz,Ҥ}m'qHu3kf>K(9w\Ai㜛 23ܔU#G?wW Yg]gPNz8BKi|qsB!j4"ezY0R&l}3XI0^ ɒGbլ~8^G81u|T[Śo?02m;9B9qqJOzt{RQ&MQ ԥ=ykY˙WπJ3bBM;f^WVQ-kIHp`+hU𜘱rr%x`=wz:Zi=WY` ^a]rϥ4Y5= K_/k߼5XZE$>FUmꇽT>*mGj6m>W3dv{쩵ް1/IγW!BAʨn0OM*5#%`*.W<,8o7'͐SkhE b>T'fwȯ5Asf]%Te޳>yPOyzaɬ37#WmךRH͜}%|~f'zwH*37]j!BsNzRP8{clC[T`<ذljwrjVi0 Bg?w8.uo(O(⧌܋0;hI.O;6|.٧ӄP[RϟՈwс%~soos.楤ffщw{=yIJ B!y@q @LH:zV 45Nl',QOD.ݛda ߃53 `j,"-oCֿ7}vڌX=I*Hrϵv&DO뾭 wMwUxMrS{FdnҠ;?FϟbIRIWF(;[̥Kulh'a0Ԧ<N}`,[D3eK=;PvGB!P'b쾜TXס Z=!vj !jN  !r =&;zB2jShu)eu(a)Rn`I *-eTF &bN B$x8%OFl2cCѬ.@{ ֜=gJ}&/|qUs>Nn8Q?ĐM[㮔ꐇ?>V  |cYT-lp߁?w<ۮ͚5L#b^ݵ棜+ IDAT*m6 7mzIH<wXr4??mg*p+gmεǗYAƍ )tftk:~AsbFvȘ_=!BQ2HFnbQK1'oGtg) \Gm4vɈ |T,?#I ݵ-A ;M]?zoڱ6jnt?# ؉u3iS{;i]Z("g;Pƈ9k=loL)5$mԁMnlRK)Ini{k&AS)7ųxy' 6dgO;kUs Ӄ7L)UvFl|Ӗ˶ۨ_G fߧ/vVAk.~@n(B!B螒W&5ۄo(l5B!3D:3~&mX-4uY?!BW[ ďFO8&Ъ6.[gvRC)4 gsB!EG-ع_28j'?\*5RJ>/~1 B!B!OQSM *B!xkB!BsB!BaA!B!9!qnu<ҕg~jnZ+7nzyN?2>=!Br~bGfb^ J6oldxٳmz mF!B79O@>Vvμu?]-.IO?{B!\aY3fW?z!ҕ䳟*c!B!dŵ7sWgMT($Ÿ}]s"x:xBF Ww\j)K +gFɔXW$ L]R!!.٦4^r9P9n(U]~eg9/ܾc69_C\mSɍ24Ϲr9b^*^k:8Ύ/MtQUI1Kg1*OOX_9L.2{0=Np1TL*u~Z`=۶pΪ!crjW!BX֮զ„rǘ#+~A`UCcdD9ܣ2VPM 8:$Okmmm.T  Q,?d;ghmNL |ksHlwsҙcn>jMshp^i R|j'8;7& 접C_Uz+[sN8 8N,Mة3lF>B<|mrT-_I2eǷ[cuvB!P'9kz%/2NctsN򴏟⒔,Ʈ HZ_YyWX9rHo @ H[en|Ss-.5]dէ ^úµ.cvM5FmN ^?a>eM ga}M)q겅F:1؄ "՟H߻` g !z7bkQj4xs=o;Ef?~Ӎ]9*ǶVXGKk/&P-S=qh _̩C!B^s,WS*S2*92$E)ya R-Iw{E5yi31:/2727 B uYF 0DƳE`=FMesUf @$L5Q\C[tt&AĪ ZDdړXs'ZZ D>tR$]܈.)xNƍTWO=\B:yc#/]q'9S#B{ʃcf*k(8* >mVKvލuPْ=51v)dŵ.|~b!`WNWK'k3ydԙ7Th/B!sNR VW)#kuH)s#7;T/pcF^qEŵ";F7(.l-^/o@{;z F @]!v .G5p(,[L)suga QtLR"5/dN>zqfQz V3}`P!BSy~+E ׿+׉@* L/uh@[M_1(m 3:TRtp/S Eŵ"5Ֆ;B Y: DeE%# UY@>őo.^oP}VC.1N>fmͲ~9bn/~ykkihoCB!ZQ p kM,:տ  ԒevfзUKrsƣMEyfZ]rU :Yi5 0՘/ڸ|m?ZՉ2ޫψicj?[;I|G̙MX\VȻ2.>H)0՟:ٷAޓ֪_6r/{퉷2 Z=j]&D$Vcq^ު)}5Hͭgİ#5nTYѩmѯJ­B!Pg9%)iX"ʞRU{Tj(Zt쨶a/?IPG<fMM mб+}4}r g|*R~[֔X:sIiu\^*Yq LnjmRКӵIxn5.T6LpI]BK!ť+6ÙP9u~jЁ71Ct'Җ9^?$YB!:sʎ2ft6a B[!B!9!B!0 B!нD Pg"6B!B!B!B!B!B!B!B!B!PkIAu IENDB`coloredlogs-7.3/docs/conf.py0000664000175000017500000000503013132200424016375 0ustar peterpeter00000000000000# Colored terminal output for Python's logging module. # # Author: Peter Odding # Last Change: May 18, 2017 # URL: https://coloredlogs.readthedocs.io """Sphinx documentation configuration for the `coloredlogs` package.""" import os import sys # Add the 'coloredlogs' source distribution's root directory to the module path. sys.path.insert(0, os.path.abspath(os.pardir)) # -- General configuration ----------------------------------------------------- # Sphinx extension module names. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.viewcode', 'humanfriendly.sphinx', ] # Sort members by the source order instead of alphabetically. autodoc_member_order = 'bysource' # Paths that contain templates, relative to this directory. templates_path = ['templates'] # The suffix of source filenames. source_suffix = '.rst' # The master toctree document. master_doc = 'index' # General information about the project. project = u'coloredlogs' copyright = u'2017, Peter Odding' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # Find the package version and make it the release. from coloredlogs import __version__ as coloredlogs_version # noqa # The short X.Y version. version = '.'.join(coloredlogs_version.split('.')[:2]) # The full version, including alpha/beta/rc tags. release = coloredlogs_version # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. language = 'en' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['build'] # If true, '()' will be appended to :func: etc. cross-reference text. add_function_parentheses = True # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # Refer to the Python standard library. # From: http://twistedmatrix.com/trac/ticket/4582. intersphinx_mapping = dict( python=('https://docs.python.org/2', None), capturer=('https://capturer.readthedocs.io/en/latest', None), humanfriendly=('https://humanfriendly.readthedocs.io/en/latest', None), ) # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'nature' # Output file base name for HTML help builder. htmlhelp_basename = 'coloredlogsdoc' coloredlogs-7.3/docs/index.rst0000664000175000017500000000131513055423327016756 0ustar peterpeter00000000000000.. include:: ../README.rst API documentation ================= The following documentation is based on the source code of version |release| of the `coloredlogs` package. The most useful entry points into the documentation are :func:`~coloredlogs.install()`, :class:`~coloredlogs.ColoredFormatter` and :func:`~coloredlogs.syslog.enable_system_logging()`. The :mod:`coloredlogs` module ----------------------------- .. automodule:: coloredlogs :members: The :mod:`coloredlogs.converter` module --------------------------------------- .. automodule:: coloredlogs.converter :members: The :mod:`coloredlogs.syslog` module ------------------------------------ .. automodule:: coloredlogs.syslog :members: coloredlogs-7.3/coloredlogs.egg-info/0000775000175000017500000000000013142151044020162 5ustar peterpeter00000000000000coloredlogs-7.3/coloredlogs.egg-info/PKG-INFO0000664000175000017500000002510013142151044021255 0ustar peterpeter00000000000000Metadata-Version: 1.1 Name: coloredlogs Version: 7.3 Summary: Colored terminal output for Python's logging module Home-page: https://coloredlogs.readthedocs.io Author: Peter Odding Author-email: peter@peterodding.com License: UNKNOWN Description: coloredlogs: Colored terminal output for Python's logging module ================================================================ .. image:: https://travis-ci.org/xolox/python-coloredlogs.svg?branch=master :target: https://travis-ci.org/xolox/python-coloredlogs .. image:: https://coveralls.io/repos/xolox/python-coloredlogs/badge.png?branch=master :target: https://coveralls.io/r/xolox/python-coloredlogs?branch=master The `coloredlogs` package enables colored terminal output for Python's logging_ module. The ColoredFormatter_ class inherits from `logging.Formatter`_ and uses `ANSI escape sequences`_ to render your logging messages in color. It uses only standard colors so it should work on any UNIX terminal. It's currently tested on Python 2.6, 2.7, 3.4, 3.5, 3.6 and PyPy. On Windows `coloredlogs` automatically pulls in Colorama_ as a dependency and enables ANSI escape sequence translation using Colorama. Here is a screen shot of the demo that is printed when the command ``coloredlogs --demo`` is executed: .. image:: https://peterodding.com/code/python/coloredlogs/screenshots/terminal.png Note that the screenshot above includes the custom logging level `VERBOSE` defined by my verboselogs_ package: if you install both `coloredlogs` and `verboselogs` it will Just Work (`verboselogs` is of course not required to use `coloredlogs`). .. contents:: :local: Format of log messages ---------------------- The ColoredFormatter_ class supports user defined log formats so you can use any log format you like. The default log format is as follows:: %(asctime)s %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s This log format results in the following output:: 2015-10-23 03:32:22 peter-macbook coloredlogs.demo[30462] DEBUG message with level 'debug' 2015-10-23 03:32:23 peter-macbook coloredlogs.demo[30462] VERBOSE message with level 'verbose' 2015-10-23 03:32:24 peter-macbook coloredlogs.demo[30462] INFO message with level 'info' ... You can customize the log format and styling using environment variables as well as programmatically, please refer to the `online documentation`_ for details. Enabling millisecond precision ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you're switching from `logging.basicConfig()`_ to `coloredlogs.install()`_ you may notice that timestamps no longer include milliseconds. This is because coloredlogs doesn't output milliseconds in timestamps unless you explicitly tell it to. There are two ways to do that: 1. The easy way is to pass the `milliseconds` argument to `coloredlogs.install()`_:: coloredlogs.install(milliseconds=True) 2. Alternatively you can change the log format `to include 'msecs'`_:: %(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s Here's what the call to `coloredlogs.install()`_ would then look like:: coloredlogs.install(fmt='%(asctime)s,%(msecs)03d %(hostname)s %(name)s[%(process)d] %(levelname)s %(message)s') Customizing the log format also enables you to change the delimiter that separates seconds from milliseconds (the comma above). Usage ----- Here's an example of how easy it is to get started: .. code-block:: python import coloredlogs, logging # Create a logger object. logger = logging.getLogger(__name__) # By default the install() function installs a handler on the root logger, # this means that log messages from your code and log messages from the # libraries that you use will all show up on the terminal. coloredlogs.install(level='DEBUG') # If you don't want to see log messages from libraries, you can pass a # specific logger object to the install() function. In this case only log # messages originating from that logger will show up on the terminal. coloredlogs.install(level='DEBUG', logger=logger) # Some examples. logger.debug("this is a debugging message") logger.info("this is an informational message") logger.warning("this is a warning message") logger.error("this is an error message") logger.critical("this is a critical message") Colored output from cron ------------------------ When `coloredlogs` is used in a cron_ job, the output that's e-mailed to you by cron won't contain any ANSI escape sequences because `coloredlogs` realizes that it's not attached to an interactive terminal. If you'd like to have colors e-mailed to you by cron there are two ways to make it happen: .. contents:: :local: You can use this feature without using `coloredlogs` in your Python modules, but please note that only normal text, bold text and text with one of the foreground colors black, red, green, yellow, blue, magenta, cyan and white (these are the portable ANSI color codes) are supported. Modifying your crontab ~~~~~~~~~~~~~~~~~~~~~~ Here's an example of a minimal crontab:: MAILTO="your-email-address@here" CONTENT_TYPE="text/html" * * * * * root coloredlogs --to-html your-command The ``coloredlogs`` program is installed when you install the `coloredlogs` Python package. When you execute ``coloredlogs --to-html your-command`` it runs ``your-command`` under the external program ``script`` (you need to have this installed). This makes ``your-command`` think that it's attached to an interactive terminal which means it will output ANSI escape sequences which will then be converted to HTML by the ``coloredlogs`` program. Yes, this is a bit convoluted, but it works great :-) Modifying your Python code ~~~~~~~~~~~~~~~~~~~~~~~~~~ The ColoredCronMailer_ class provides a context manager that automatically enables HTML output when the ``$CONTENT_TYPE`` variable has been correctly set in the crontab. This requires my capturer_ package which you can install using ``pip install 'coloredlogs[cron]'``. The ``[cron]`` extra will pull in capturer_ 2.4 or newer which is required to capture the output while silencing it - otherwise you'd get duplicate output in the emails sent by ``cron``. The context manager can also be used to retroactively silence output that has already been produced, this can be useful to avoid spammy cron jobs that have nothing useful to do but still email their output to the system administrator every few minutes :-). Contact ------- The latest version of `coloredlogs` is available on PyPI_ and GitHub_. The `online documentation`_ is available on Read The Docs. For bug reports please create an issue on GitHub_. If you have questions, suggestions, etc. feel free to send me an e-mail at `peter@peterodding.com`_. License ------- This software is licensed under the `MIT license`_. © 2017 Peter Odding. .. External references: .. _ANSI escape sequences: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors .. _capturer: https://pypi.python.org/pypi/capturer .. _Colorama: https://pypi.python.org/pypi/colorama .. _ColoredCronMailer: https://coloredlogs.readthedocs.io/en/latest/#coloredlogs.converter.ColoredCronMailer .. _ColoredFormatter: https://coloredlogs.readthedocs.io/en/latest/#coloredlogs.ColoredFormatter .. _coloredlogs.install(): https://coloredlogs.readthedocs.io/en/latest/#coloredlogs.install .. _cron: https://en.wikipedia.org/wiki/Cron .. _GitHub: https://github.com/xolox/python-coloredlogs .. _logging.basicConfig(): https://docs.python.org/2/library/logging.html#logging.basicConfig .. _logging.Formatter: https://docs.python.org/2/library/logging.html#logging.Formatter .. _logging: https://docs.python.org/2/library/logging.html .. _MIT license: https://en.wikipedia.org/wiki/MIT_License .. _online documentation: https://coloredlogs.readthedocs.io/ .. _peter@peterodding.com: peter@peterodding.com .. _PyPI: https://pypi.python.org/pypi/coloredlogs .. _to include 'msecs': https://stackoverflow.com/questions/6290739/python-logging-use-milliseconds-in-time-format .. _verboselogs: https://pypi.python.org/pypi/verboselogs Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: POSIX Classifier: Operating System :: Unix Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces Classifier: Topic :: Software Development Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Software Development :: User Interfaces Classifier: Topic :: System Classifier: Topic :: System :: Console Fonts Classifier: Topic :: System :: Logging Classifier: Topic :: System :: Systems Administration Classifier: Topic :: Terminals coloredlogs-7.3/coloredlogs.egg-info/entry_points.txt0000664000175000017500000000006613142151044023462 0ustar peterpeter00000000000000[console_scripts] coloredlogs = coloredlogs.cli:main coloredlogs-7.3/coloredlogs.egg-info/SOURCES.txt0000664000175000017500000000113713142151044022050 0ustar peterpeter00000000000000LICENSE.txt MANIFEST.in README.rst coloredlogs.pth requirements-checks.txt requirements-tests.txt requirements.txt setup.cfg setup.py coloredlogs/__init__.py coloredlogs/cli.py coloredlogs/converter.py coloredlogs/demo.py coloredlogs/syslog.py coloredlogs/tests.py coloredlogs.egg-info/PKG-INFO coloredlogs.egg-info/SOURCES.txt coloredlogs.egg-info/dependency_links.txt coloredlogs.egg-info/entry_points.txt coloredlogs.egg-info/requires.txt coloredlogs.egg-info/top_level.txt docs/conf.py docs/index.rst docs/images/custom-colors.png docs/images/custom-datetime-format.png docs/images/custom-log-format.pngcoloredlogs-7.3/coloredlogs.egg-info/dependency_links.txt0000664000175000017500000000000113142151044024230 0ustar peterpeter00000000000000 coloredlogs-7.3/coloredlogs.egg-info/requires.txt0000664000175000017500000000011613142151044022560 0ustar peterpeter00000000000000humanfriendly>=3.2 [:sys_platform == "win32"] colorama [cron] capturer>=2.4 coloredlogs-7.3/coloredlogs.egg-info/top_level.txt0000664000175000017500000000001413142151044022707 0ustar peterpeter00000000000000coloredlogs coloredlogs-7.3/coloredlogs/0000775000175000017500000000000013142151044016470 5ustar peterpeter00000000000000coloredlogs-7.3/coloredlogs/converter.py0000664000175000017500000002555513132200424021061 0ustar peterpeter00000000000000# Program to convert text with ANSI escape sequences to HTML. # # Author: Peter Odding # Last Change: May 18, 2017 # URL: https://coloredlogs.readthedocs.io """Convert text with ANSI escape sequences to HTML.""" # Standard library modules. import codecs import os import pipes import re import subprocess import tempfile # External dependencies. from humanfriendly.terminal import ANSI_CSI, clean_terminal_output, output # Portable color codes from http://en.wikipedia.org/wiki/ANSI_escape_code#Colors. EIGHT_COLOR_PALETTE = ( 'black', 'red', 'rgb(78,154,6)', # green 'rgb(196,160,0)', # yellow 'blue', 'rgb(117,80,123)', # magenta 'cyan', 'white', ) # Compiled regular expression that matches leading spaces (indentation). INDENT_PATTERN = re.compile('^ +', re.MULTILINE) # Compiled regular expression that matches strings we want to convert. Used to # separate all special strings and literal output in a single pass (this allows # us to properly encode the output without resorting to nasty hacks). TOKEN_PATTERN = re.compile('(https?://\\S+|www\\.\\S+|\x1b\\[.*?m)', re.UNICODE) def capture(command, encoding='UTF-8'): """ Capture the output of an external command as if it runs in an interactive terminal. :param command: The command name and its arguments (a list of strings). :param encoding: The encoding to use to decode the output (a string). :returns: The output of the command. This function runs an external command under ``script`` (emulating an interactive terminal) to capture the output of the command as if it was running in an interactive terminal (including ANSI escape sequences). """ with open(os.devnull, 'wb') as dev_null: # We start by invoking the `script' program in a form that is supported # by the Linux implementation [1] but fails command line validation on # the Mac OS X (BSD) implementation [2]: The command is specified # using the -c option and the typescript file is /dev/null. # # [1] http://man7.org/linux/man-pages/man1/script.1.html # [2] https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/script.1.html command_line = ['script', '-qc', ' '.join(map(pipes.quote, command)), '/dev/null'] script = subprocess.Popen(command_line, stdout=subprocess.PIPE, stderr=dev_null) stdout, stderr = script.communicate() if script.returncode == 0: # If `script' succeeded we assume that it understood our command line # invocation which means it's the Linux implementation (in this case # we can use standard output instead of a temporary file). output = stdout.decode(encoding) else: # If `script' failed we assume that it didn't understand our command # line invocation which means it's the Mac OS X (BSD) implementation # (in this case we need a temporary file because the command line # interface requires it). fd, temporary_file = tempfile.mkstemp(prefix='coloredlogs-', suffix='-capture.txt') try: command_line = ['script', '-q', temporary_file] + list(command) subprocess.Popen(command_line, stdout=dev_null, stderr=dev_null).wait() with codecs.open(temporary_file, 'r', encoding) as handle: output = handle.read() finally: os.unlink(temporary_file) # Clean up backspace and carriage return characters and the 'erase line' # ANSI escape sequence and return the output as a Unicode string. return u'\n'.join(clean_terminal_output(output)) def convert(text, code=True, tabsize=4): """ Convert text with ANSI escape sequences to HTML. :param text: The text with ANSI escape sequences (a string). :param code: Whether to wrap the returned HTML fragment in a ``...`` element (a boolean, defaults to :data:`True`). :param tabsize: Refer to :func:`str.expandtabs()` for details. :returns: The text converted to HTML (a string). """ output = [] for token in TOKEN_PATTERN.split(text): if token.startswith(('http://', 'https://', 'www.')): url = token if '://' not in token: url = 'http://' + url text = url.partition('://')[2] token = u'%s' % (html_encode(url), html_encode(text)) elif token.startswith(ANSI_CSI): ansi_codes = token[len(ANSI_CSI):-1].split(';') if ansi_codes == ['0']: token = '' else: styles = [] for code in ansi_codes: if code == '1': styles.append('font-weight:bold') elif code.startswith('3') and len(code) == 2: try: color_index = int(code[1]) css_color = EIGHT_COLOR_PALETTE[color_index] styles.append('color:%s' % css_color) except IndexError: pass if styles: token = '' % ';'.join(styles) else: token = '' else: token = html_encode(token) output.append(token) html = ''.join(output) html = encode_whitespace(html, tabsize) if code: html = '%s' % html return html def encode_whitespace(text, tabsize=4): """ Encode whitespace so that web browsers properly render it. :param text: The plain text (a string). :param tabsize: Refer to :func:`str.expandtabs()` for details. :returns: The text converted to HTML (a string). The purpose of this function is to encode whitespace in such a way that web browsers render the same whitespace regardless of whether 'preformatted' styling is used (by wrapping the text in a ``
...
`` element). .. note:: While the string manipulation performed by this function is specifically intended not to corrupt the HTML generated by :func:`convert()` it definitely does have the potential to corrupt HTML from other sources. You have been warned :-). """ # Convert Windows line endings (CR+LF) to UNIX line endings (LF). text = text.replace('\r\n', '\n') # Convert UNIX line endings (LF) to HTML line endings (
). text = text.replace('\n', '
\n') # Convert tabs to spaces. text = text.expandtabs(tabsize) # Convert leading spaces (that is to say spaces at the start of the string # and/or directly after a line ending) into non-breaking spaces, otherwise # HTML rendering engines will simply ignore these spaces. text = re.sub(INDENT_PATTERN, encode_whitespace_cb, text) # Convert runs of multiple spaces into non-breaking spaces to avoid HTML # rendering engines from visually collapsing runs of spaces into a single # space. We specifically don't replace single spaces for several reasons: # 1. We'd break the HTML emitted by convert() by replacing spaces # inside HTML elements (for example the spaces that separate # element names from attribute names). # 2. If every single space is replaced by a non-breaking space, # web browsers perform awkwardly unintuitive word wrapping. # 3. The HTML output would be bloated for no good reason. text = re.sub(' {2,}', encode_whitespace_cb, text) return text def encode_whitespace_cb(match): """ Replace runs of multiple spaces with non-breaking spaces. :param match: A regular expression match object. :returns: The replacement string. This function is used by func:`encode_whitespace()` as a callback for replacement using a regular expression pattern. """ return ' ' * len(match.group(0)) def html_encode(text): """ Encode characters with a special meaning as HTML. :param text: The plain text (a string). :returns: The text converted to HTML (a string). """ text = text.replace('&', '&') text = text.replace('<', '<') text = text.replace('>', '>') text = text.replace('"', '"') return text class ColoredCronMailer(object): """ Easy to use integration between :mod:`coloredlogs` and the UNIX ``cron`` daemon. By using :class:`ColoredCronMailer` as a context manager in the command line interface of your Python program you make it trivially easy for users of your program to opt in to HTML output under ``cron``: The only thing the user needs to do is set ``CONTENT_TYPE="text/html"`` in their crontab! Under the hood this requires quite a bit of magic and I must admit that I developed this code simply because I was curious whether it could even be done :-). It requires my :mod:`capturer` package which you can install using ``pip install 'coloredlogs[cron]'``. The ``[cron]`` extra will pull in the :mod:`capturer` 2.4 or newer which is required to capture the output while silencing it - otherwise you'd get duplicate output in the emails sent by ``cron``. """ def __init__(self): """Initialize output capturing when running under ``cron`` with the correct configuration.""" self.is_enabled = 'text/html' in os.environ.get('CONTENT_TYPE', 'text/plain') self.is_silent = False if self.is_enabled: # We import capturer here so that the coloredlogs[cron] extra # isn't required to use the other functions in this module. from capturer import CaptureOutput self.capturer = CaptureOutput(merged=True, relay=False) def __enter__(self): """Start capturing output (when applicable).""" if self.is_enabled: self.capturer.__enter__() return self def __exit__(self, exc_type=None, exc_value=None, traceback=None): """Stop capturing output and convert the output to HTML (when applicable).""" if self.is_enabled: if not self.is_silent: # Only call output() when we captured something useful. text = self.capturer.get_text() if text and not text.isspace(): output(convert(text)) self.capturer.__exit__(exc_type, exc_value, traceback) def silence(self): """ Tell :func:`__exit__()` to swallow all output (things will be silent). This can be useful when a Python program is written in such a way that it has already produced output by the time it becomes apparent that nothing useful can be done (say in a cron job that runs every few minutes :-p). By calling :func:`silence()` the output can be swallowed retroactively, avoiding useless emails from ``cron``. """ self.is_silent = True coloredlogs-7.3/coloredlogs/tests.py0000664000175000017500000004705313142151023020212 0ustar peterpeter00000000000000# Automated tests for the `coloredlogs' package. # # Author: Peter Odding # Last Change: August 7, 2017 # URL: https://coloredlogs.readthedocs.io """Automated tests for the `coloredlogs` package.""" # Standard library modules. import contextlib import imp import logging import logging.handlers import os import random import re import string import subprocess import sys import tempfile import unittest # External dependencies. from humanfriendly.terminal import ansi_wrap from mock import MagicMock # The module we're testing. import coloredlogs import coloredlogs.cli from coloredlogs import ( CHROOT_FILES, ColoredFormatter, NameNormalizer, decrease_verbosity, find_defined_levels, find_handler, find_hostname, find_program_name, get_level, increase_verbosity, install, is_verbose, level_to_number, match_stream_handler, parse_encoded_styles, set_level, walk_propagation_tree, ) from coloredlogs.syslog import SystemLogging, match_syslog_handler from coloredlogs.converter import capture, convert # External test dependencies. from capturer import CaptureOutput from verboselogs import VerboseLogger from humanfriendly.compat import StringIO # Compiled regular expression that matches a single line of output produced by # the default log format (does not include matching of ANSI escape sequences). PLAIN_TEXT_PATTERN = re.compile(r''' (?P \d{4}-\d{2}-\d{2} ) \s (?P